CONFIGURATION
- add two new variables which determined the half and the double of
the ghost cell size (nh and nd, respectively);
- add a variable to determine the half size of the block (ih, jh, and
kh);
BLOCK STRUCTURE
- add new array to the data block structure to store the electromotive
force components; these components are located at the centers of cell
edges, in this way the CT update of the staggered magnetic field
component will be easier;
EVOLUTION
- add new subroutine advance() which performs several steps in order to
advance the solution in time by one-step update; the substeps are the
updates of the numerical flux, the flux boundary, the advance in time
the solution, the updates of mesh structure, and the boundaries of
conserved variables, and finally the new time step estimation;
- add new subroutine update_flux() to update the numerical fluxes
stored in the data blocks;
SCHEME
- add new subroutine numerical_flux() to calculate fluxes at the proper
locations;
- add new logical argument to HLL and HLLC in order to specify if the
flux should be returned as a numerical flux or its derivative;
EVOLUTION
- add new output argument returning the updated fluxes for each block;
SCHEME
- update the fluxes from the one dimensional fluxes returned by the
Riemann solver;
BLOCK STRUCTURE
- add a multidimensional array to store the numerical fluxes in the
block structure; it seems that this is necessary for the boundary
update, since the fluxes should be synchronized between blocks at
different levels;
INTERPOLATION
- add subroutine expand_tvd() to prolongate a multidimensional array
using the second-order TVD interpolation (subroutine
expand_1d_tvd());
BOUNDARY CONDITIONS
- rewrite the subroutine bnd_prol() in order to minimize the size of
interpolated arrays and use the subroutine expand_tvd();
BOUNDARY CONDITIONS
- if the blocks are on the same level there is no need for iteration
over the faces; remove the argument iface from the subroutine
bnd_copy() since it is not used;
BOUNDARY CONDITIONS
- the boundaries should be updated in the directional manner, i.e.
first the update of all blocks along the X direction, then along the
Y direction, and finally along the Z direction; this assures the
proper boundary zones update;
- in the boundary update there is no reason for the iteration over the
levels if the boundary update is happening in the directional manner;
MESH
- subroutine restrict_block has been rewritten to use one big array for
storage variables from all children and them restricting this array
and putting resulted variables in a new data block;
INTERPOLATION
- add subroutine expand_1d_tvd to 1D TVD prolongation;
- implement magnetic field boundary prolongation with a given boundary;
this is used for boundary update of magnetic components in a block at
higher level, where the boundary is updated from the block at lower
level; the prolongation is divergence free; for now only 2D case is
implemented;
BOUNDARY CONDITIONS
- use the boundary prolongation subroutine expand_mag_bnd in the
updating the magnetic field boundaries in a blocks which neighbors
are at lower level; this should be ready for 3D too;
IO
- obtain indices ipr and ien only when we use adiabatic equation of
state;
PROBLEM
- obtain indices ien and ipr only when EOS=ADI;
- in the case of isothermal EOS define initial star as an increase of
density instead of pressure;
- in checking the refirement criterion use only density gradient when
EOS=ISO;
SCHEME
- obtain indices ipr and ien only when we use adiabatic EOS;
- in function maxspeed() obtain parameter csnd2 in the case of
isothermal equation of state;
INTERPOLATION
- add a new subroutine divergence() calculating the divergence of a
vector field;
IO
- utilize a new subroutine divergence() in calculation of the
divergence of staggered magnetic field;
BOUNDARY CONDITIONS
- remove the third argument from all calls of the subroutine shrink();
INTERPOLATION
- remove ng argument from subroutines shrink() and shrink_1d();
- small fixes to subroutine magtocen() in the divergence free
correction calculation;
MESH
- fix index calculation and remove the third argument from calling the
subroutine shrink();
BOUNDARY CONDITIONS
- update boundary conditions starting from the block with the maximum
refinement level and stepping down; this fixes update of the
boundary conditions in the corners;
INTERPOLATION
- fix divergence free prolongation of the staggered magnetic field;
BOUNDARY CONDITIONS
- rewrite subroutine bnd_prol() and use expand_mag() in it;
- fix some index calculations in bnd_rest();
INTERPOLATION
- implement new subroutine expand_mag() performing divergence-free
prolongation of the staggered magnetic field;
- implement divergence-free correction in interpolation of cell
centered magnetic field in subroutine magtocen();
MESH
- use new subroutine expand_mag() in block prolongation;
BOUNDARY CONDITIONS
- use TVD interpolation for prolongation of the boundary conditions
CONFIGURATION
- put lower limit for the number of ghost and domain cells
HOST FILES
- host files should not be included in the revision control
INTERPOLATION
- define all arrays as REAL, not REAL(KIND=8) since the precision of
calculations is determined at the compilation stage
- replace j0 and j1 indices with new more obvious il and ir
MESH
- update mesh before calculating new time step
BOUNDARY CONDITIONS
- rewrite bnd_copy() so first the indices are prepared and then there
is one call to fill out the destination array; include the lower
index change for staggered magnetic field components;
- in the subroutine bnd_rest() implement correct restriction of the
staggered magnetic field components; take into account the change
of the lower index;
- in the subroutine bnd_prol() implement correct prolongation of the
staggered magnetic field components; take into account the change of
the lowe index;
- by default use 2 ghost cell and the restriction and expansion to
prevent errors resulting from interpolation;
CONFIGURATION
- enforce a lower limit for number of ghost zones to 6 when MHD=Y and
4 otherwise
INTERPOLATION
- remove unnecessary interpolation methods
- limit 'c' interpolation to the second order only
MESH
- implement divergence-free prolongation and restriction for the
staggered magnetic field components in the block refinement and
derefinement
SCHEME
- implement Flux-CT scheme for the staggered magnetic field
integration;
BLOCK STRUCTURE
- use more space efficient storage of the variables, which means
storing only staggered components of magnetic field; cell-centered
components are calculated only when necessary;
EVOLUTION
- remove loops in the field updates; operations are performed on the
arrays;
BOUNDARY CONDITIONS
- remove loops in the bnd_copy; operations are calculated on the whole
array now;
INTERPOLATION
- subroutine magtocen() has been rewritten to avoid problems with the
array allocation; now as an argument we enter the array of all
variables; subroutine uses indices for the face-centered and
cell-centered magnetic field components internally;
MAKE
- add flag defining Flux-CT scheme;
PROBLEM
- use predefined array variables instead of allocated;
Rewritten boundaries allow for a proper handling boundaries between
blocks at different refinement levels. Prolongation and restriction of
the boundaries are improved now.
Rewritten interpolation for prolongation and restriction.
References to the variable indices are assigned more properly.
VARIABLES
- add indices for the magnetic field components, both face and cell
centered
SOLVER, MHD
- add support for the magnetohydrodynamic (MHD) equations to the
subroutines cons2prim(), prim2cons()
- add MHD flux and the fastest speed calculation in the subroutine
fluxspeed()
- include magnetosonic speed in the calculation of the maximum speed in
the system required for estimation of the new time step
- extend the HLL solver in subroutine hll() to support MHD
- calculate the magnetic field update according to a CT scheme in the
subroutine update()
INTERPOLATION
- add subroutine magtocen() to interpolate cell centered magnetic field
EVOLUTION
- add evolution of the magnetic field components in the evolve_euler()
and evolve_rk2() time integration subroutines
- also call the subroutine magtocen() in the right places
BOUNDARY CONDITIONS
- support for magnetic field boundary update only in the case of blocks
with the same level so far; later we need to include proper
restriction and prolongation for the magnetic field to keep its
divergence equal zero
PROBLEMS, BLAST
- extend the blast problem to include the initial magnetic field
IO, HDF5
- write down in a HDF5 file magnetic field components
DATA I/O, HDF5
- arrays of indices, levels, and the block bounds cannot be stored as
attributes since they can easily exceed the allowed space for
attributes; instead, they have to be stored as dataset, which
overcome this limit
- store the lowest level block dimensions as well
IO, HDF5
- rewrite subroutine write_data() using more efficient storage,
especially with compression; we are storing only the domain part of
blocks and their primitive variables, which is selected by setting
ftype='p'; storing restart files with all parameters will be done
later
BLOCKS,
- remove array c(:,:,:) from data_block which stored the values for
refinement/derefinement estimations