In these two arrays we store temporary states during the Runge-Kutta
integration. The new pointer %u in the block structure points to the
current array of the conservative variables.
- the problem was demonstrating in the way that after restart the
number of leafs was set to zero; this was because while recreating
the meta blocks structure we set nleafs directly instead of using
metablock_set_leaf(); after using this subroutine we don't need to
to set nleafs anymore, and the restart continues properly;
- reorganize order of subroutines and separate them between groups for
meta and data blocks, refinement, and private functions and
subroutines;
- change the copyright header; update to new email address;
- make all module pointers, variables, and subroutines private and
allow only for subset of them to be public;
- improve the description of block structures;
- add several functions to return module variables such as the number
of meta and data blocks, the number of leafs, the last id, etc.;
- update several subroutines from other modules which required some of
the BLOCK module variables;
- the level resolution array 'res' has been moved to mesh module, where
it should belong; due to this it needs to be provided as an argument
to subroutines in BLOCK and PROBLEM modules which use it;
- the level resolution array stores block resolutions in each
directions, so it is now a two dimensional array, with the dimensions
corresponding to the number of levels and number of dimensions;
- update subroutine write_coordinates_h5() to store the level
resolution array properly;
- add a new subroutine set_datablock_dims() to set dimensions of the
allocatable arrays in data blocks; this subroutine is called from
init_mesh(), which is the right place to initiate BLOCK module;
- remove dependency of blocks.o on variables.o;
- boundaries.o depends on timers.o;
- the purpose of a new allocatable array in the block structure is to
store the numerical fluxes, which need to be synchronized, and then
used to update conserved variables in a conservative way;
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;
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;
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;
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;
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;