Now, module EQUATIONS provides a complet interface for equation systems,
including the definition of the number of equations/independent
variables, variable indices and names, conversion subroutines between
primitive and conservative variables, flux and characteristic speed
calculation, and maximum speed determination.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
Subroutine advance() is a replacement for the subroutine evolve(). It
performs one step variable update by calling the selected integration
method. So far only 2nd order Runge-Kutta is supported, which is
implemented in subroutine advance_rk2().
Subroutine advance_rk2() advances the conservative variables by one step
using the 2nd order Runge-Kutta method with the boundary update after
each substep. This results in the reduced number of ghost zones, for
example 2 instead of 4, as in the previous version.
- two new parameters trun and tsav control how long the job can run;
the parameter trun, expressed in hours, determines the maximum
execution time and the parameter tsav, expressed in minutes, tells
when to terminate the job before the execution time exceeds trun;
- a new module COORDS handles the mesh variables which needed to be
separated from the MESH module since they are used in PROBLEM module,
which is required by MESH module; this created a circular dependency;
by introducing a new COORDS module we removed that problem;
- now, if we want to restart a job and use more processors than we used
while creating restart files, all processors read and recreate meta
block structure, but only N previously used processors will read data
block; as soon as the job is restarted, we call redistribute_blocks()
in order to get equal number of data blocks on each processor;
- the diffusion of Psi in MHD-GLM requires spacial step dxmin, so
update the diffusion so it works after the last commit changes;
- call find_new_timestep() after job restart, since some parameters
could change;
- subroutine update_maximum_speed() has been replaced with
find_new_timestep(), which first finds the minimum spacial step
dxmin, then finds the maximum speed in the domain, and finally
estimates new time step;
- dx_min has been removed from MESH module, since it is not required
anymore;