- 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;
- implement subroutine flux_rk2() which calculates fluxes at time t and
t + dt and averages them; then the calculated flux is passed to
variable update;
- implement subroutine advance_solution() which advances an array of
conserved variables using fluxes provided as an argument;
- use advance_solution() in update_solution();
- subroutine boundary_correct_fluxes() sweeps over all leafs and if it
finds that a neighbor is at higher level, performs a correction of
the numerical flux of current block in this direction; this
subroutine does not support MPI yet!;
- subroutine correct_flux() performs the atual correction of the
numerical flux; only part belonging to domain is updated, since ghost
zones are updated anyway in the next step during the variable update;
- call boundary_correct_flux() from evolve();
- after calculating an integrals of fluxes with a given order we
performed one step updated of the conserved variables stored in data
blocks using corresponding numerical flux stored in the same data
block; the subroutine which performs update is called
update_solution();
- change order of calculating terms; first perform the main update
of the conserved variables, then add forcing and source terms; in
this way we do not change time step which determines the stability of
scheme before the conserved variables enter Riemann solver; this is
especially important in highly supersonic simulations, when in the
presence of very low density, even small change of velocity can make
the scheme numerically unstable;
- 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;
- 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 subroutine advance(); this subroutine is good for GALERKIN
approach; it's gonna be reintroduced during this method
implementation;
- remove subroutine update_flux(); this subroutine is called from
advance() and is not used in the GLM-MHD approach;
- make GNU Fortran happy bu adding () to the subroutine calls;