The Bartol Research Institute

University of Delaware

Parallel Version of Streamline Generation Code Implemented with MPICH

Source Code For Linux
tar format (230 KB)
tar.gzip format (45 KB)

Source Code for SunOS
tar format ()
tar.gzip format ()

Code testing:
Test 1:
Test 2:
Test 3:

Authors and Contact Information


Brief description of the Project:

This code is a parallel implementation of a versatile algorithm for computation of streamlines, magnetic field lines or charged particle trajectories. Each of these has in common that a set of generalized "trajectories" is generated, beginning from a set of specified initial conditions. The trajectories are generated by integrating a set of ordinary differential equations (ODE's) -- either three (for streamlines and field lines) or six (for charged particle orbits). In each case one or more vector fields must be specified; these appear as coefficients in the ODE's.

Physically what is required is
     Streamlines:  specify a velocity field and an initial position
     Magnetic Field Lines: specify a magnetic field and an initial position
     Charged Particle Orbits: specify a magnetic field, and electric field, and an initial position and velocity

The code works programming the master node to pass out "jobs" to the worker nodes. Each job includes the initial data and some parameters. Load balancing is achieved in a standard way: When a node is done a job, it asks the master if there is another job to do. Results of each job are written to disk. The ODE's are integrated using an  adaptive step fourth order Runge Kutta method with a fifth order error estimate. Several standard cases are built in at present: Choice of ODE's (field line or charged particle orbit equations), and choice of magnetic field input model (slab, slab plus 2D, data read from file). Several test cases are also installed in the code. Provisions are made for user-supplied ODE's (routine DERIVS) and user-supplied electromagnetic fields (EMFIELDS) that are externally linked and communicate with the internal routines through standard data structures.