- call subroutine evolve_forcing() before the update of all blocks;
this subroutine evolves the forcing source terms by an interval dt in
the Fourier space; then during the update the forcing Fourier
coefficients will be transformed to real space for each block
separately;
- implement subroutine evolve_forcing() which evolves the driving
components in Fourier space during the one hydrodynamic timestep; the
integrated forcing Fourier components are stored in module array
ftab; this complex array will be used to calculate forcing in real
space for each block;
- add a new module FORCING to handle forcing source terms, e.g. for
turbulence driving;
- implement initial versions of init_forcing() and clear_forcing()
subroutines;
- add compilation flag FORCING and use it during compilation process in
makefile;
- add a new module RANDOM which handles initialization and generation
of different type random number distributions;
- include the module in the compilation process;
- initialize the random generator from driver;
- implement the monotonicity preserving family of reconstruction; the
implementation covers the 5th, 7th and 9th order spacial MP
reconstruction;
- implement two new functions used by the MP reconstructions, minmod()
and median();
- pass the spacial increment to the reconstruction subroutine since
some interpolation methods require it; in addition, move obtaining
the spacial interval and its inversion to the subroutine update();
- remove subroutines magtocen(), expand_mag(), expand_mag_bnd() since
these subroutines are not used anymore; they are required in the case
of use of the magnetic field described on the staggered mesh;
- implement the MPI version of subroutine boundary_variables(); right
now we are sending full variable arrays between blocks, but this is
not optimal; better version should exchange only subdomain needed for
boundary update;
- add a global variable in the configuration module to determine if the
boundaries are periodic along each direction; this flag is useful if
we can skip some work which is only for non-periodic boundaries, such
as applying specific boundary conditions;
- with all variables cell centered we do not need to perform additional
update between blocks at the same level since now everything can be
done at once; the only restriction is that the boundary update has to
be done along each direction separately;