#include "pdp1.h" #include "xgrafix.h" static void display_title(void); extern void adjust(int isp); extern void gather(int isp); extern void history(void); extern void setrho(void); extern void fields(void); extern void start(void); extern void mccdiag_init(void); extern void InitWindows(void); // Function int main(int argc, char **argv) {{{ int main(int argc, char **argv) { display_title(); // Display XPDP1 title XGInit(argc, argv, &t); // Initialize XGrafix stuff start(); // Allocate arrays and initailze if (theRunWithXFlag) { mccdiag_init(); // Initialize MCC rate diagnostic InitWindows(); // Initialize diagnostic windows } setrho(); // Set initial charge density fields(); // Initialize field arrays if (theRunWithXFlag) history(); // Initialize history arrays XGStart(); // Start XGrafix main loop return 0; } // }}} // The main physics loop // Function void XGMainLoop(void) {{{ void XGMainLoop(void) { register int j, isp; float frac; t += dt; for (isp=0; isp < nsp; isp++) { if (!(k_count[isp]%sp_k[isp])) { it[isp]++; // Advance time for the species isp (*moveptr)(isp); // Advance position and velocity adjust(isp); // Remove particles that cross boundaries // Monte Carlo collisions for species isp (*mccptr) (isp); // mcc(isp); gather(isp); // Assign charge densities to the grid k_count[isp]=0; // Reset species counter for subcycling } k_count[isp]++; frac = ((float)k_count[isp])/sp_k[isp]; for (j=0; j