There is no need to convert conservative variables to primitive ones,
since they are already up to date, so pass primitive variables directly
to Riemann solvers in subroutine update_flux().
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.
- the new parameter tbfor determines the time when the forcing starts
to be introduced gradually; the parameter tefor determines at what
time the forcing operates with the full power; the transition between
tbfor and tefor is described by sinus function;
- the new parameter toplev stores the level of refinement larger or
equal to maxlev; this level cannot be set in the config.in, but is
determined during the initiation or restarting the job;
- several subroutines have been updated to use toplev instead of
maxlev;
- the subroutine flux_rk2() updates one dimensional fluxes using the
2nd order Runge-Kutta method, and then calculates the averaged flux,
which is used to update the block variables;
- instead of calculating all fluxes at once in update_flux(), select
the direction as a subroutine argument and calculate only the flux
along this direction;
- directional fluxes are needed for the directional RK integration of
the numerical fluxes;
- update subroutines flux_euler(), flux_rk2(), and flux_rk3() to use
new update_flux() subroutine;
- 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;
- allow for time varying shapes;
- remove unnecessary configuration parameters for the boundaries
problem and give the remaining parameters more descriptive names;
- place the star always in the origin of the coordinate system, which
is the focus point of the satellite orbit, as well;
- make the satellite orbiting around the main star with a given period
discribed by a parameter 'tsat'; the satellite orbit is an elipse
described by the minimum distance from the focus point 'dsat' and
eccentricity 'esat';
- subroutine update_shapes() has been rewritten so now it works well
with both CONSERVATIVE=Y and CONSERVATIVE=N;
- since we are calling update_shapes() only once per step per block
now, it gives a small performance optimization;
- 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;
- if we use forcing in the case of adiabatic equation of state, the
total energy of each cell must be updated by the kinetic energy
injected to this cell; otherwise the energy conservation will be
violated;