- 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;
- in subroutine prolong_block() prolongate the magnetic field
components and scalar potential during the block refinements if the
GLM-MHD equations are used;
- in the GLM-MHD set of equations variables Bx and Psi are couples,
thus find their values and substitute to the left and right states
before entering the approximate Riemann solver;
- 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);