- this subroutine reads the number of processors and the maximum level
from the first restart file; these two parameters are required
before restoring the data for a job restart if we want to restart it
with a different number of processors or with a different maximum
level;
- 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;
- now, if we want to restart a job and use more processors than we used
while creating restart files, all processors read and recreate meta
block structure, but only N previously used processors will read data
block; as soon as the job is restarted, we call redistribute_blocks()
in order to get equal number of data blocks on each processor;
- 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;
- now the file counters for data and restart files are separated and
moved to the IO module;
- the number of arguments to the IO subroutines is reduced to the
necessary minimum;
- the maximum speed in the system 'cmax' is not only used to calculate
the time step, but also to propagate and diffuse the wave of B
divergence in the MHD case; therefore we need to store it in the
attributes of restart files, and then restore it in order to keep
consistency in the problem evolution;
- the number of seeds and seed values must be stored in the restart
file in order to restart a job properly and guarantee unchanged
generation of random numbers after restart;
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;
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;
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;