- make the variable cmax global in the module 'evolution';
- add a new subroutine update_maximum_speed() which updates the maximum
speed cmax in the system iterating over all data blocks;
- use the subroutine update_maximum_speed() in evolve();
- reconstruct the states for the magnetic field components and scalar
potential just like other fluid variables;
- calculate the numerical fluxes for the magnetic field components and
scalar potential;
- add variable indices for the GLM-MHD equations in the module
'variables'; the index 'iph' points to the scalar potential defining
the divergence of magnetic field;
BLOCK STRUCTURE
- add new field pos in the meta block structure determining the
position of the current block in the parent block; this might be very
useful in determining which boundary region should be updated;
- add new subroutine metablock_set_position() which sets the position
of the child in the parent block;
VARIABLES
- create new module 'variables' which stores references to variable
indices; we gonna store dofferent objects related to variables in
this module;
BLOCK STRUCTURE
- the global variable nblocks tells how many metablocks are allocated,
thus its name is changed to mblocks;
- remove unnecessary checking of the list allocation;
BOUNDARY CONDITIONS
- the subroutine bnd_rest() has been rewritten in order to make if more
clear in understanding and remove necessity of using external
interpolating subroutines and allocatable arrays;
BOUNDARY CONDITIONS
- the main subroutine to update the variable boundaries has been
rewritten in order to update the boundaries in a proper order;
- first we update the specific boundaries of blocks which don't have
neighbors;
- then we update boundaries between blocks at the same levels; this
assures that the boundaries of the same levels are not contaminated
by interpolation from other levels;
- the last step is updating boundaries between blocks at different
levels;
- one step more before the last step might be required; in this step we
update the corners of blocks which have two neighbors at the higher
level;
BLOCK STRUCTURE
- add a new field 'coord' to store block coordinates in the units of
the effective resolution;
- add a subroutine metablock_set_coord() to set the block coordinates;
IO
- the subroutine write_data() is now a wrapper subroutine which call
the subroutine writing in a supported file format; the file format is
chosen at the time of compilation;
- the subroutine write_data_h5() is a new subroutine taking care of
initialization and storage data in the HDF5 format; depending on the
file type it calls subroutines to create specific groups and store
the right data;
- new subroutines write_atrributes_h5(), write_coordinates_h5(),
write_variables_h(), write_variables_full_h5(),
write_metablocks_h5(), write_datablocks_h5(), and number of other
supporting subroutines to store all data in the proper format for job
restart, vizualization, and debugging;
MAKE
- add option to enable/disable HDF5 file compression;
IO
- add a wrapper subroutine write_data() to write data; this subroutines
chooses the right subroutine depending on the requested format; it
also choses the data format, i.e. HDF5 at the present time (other
formats can be added later);
- rename subroutine write_data() to write_data_primitive_h5();
- format long lines so they fit within 80 columns;
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();