- 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 new subroutine redistribute_blocks() calculates the new
distribution of blocks among all processors and move data blocks
which need to be moved to another processor;
- replace autobalancing in update_mesh() using the new subroutine
redistribute_blocks();
- in the binaries problem we have to reinitiate the velocity within
the satellite properly, taking into account not only the speed of
wind at the surface, but also setting the satellite's velocity due to
its orbital motion; this produces properly the bow shock in front of
the satellite, and the new time step is calculated correctly since it
includes the speed of the satellite;
- now it is possible to change the configuration file from the command
line using arguments '-c' or '--config'; both arguments require a
name of configuration file which exists and is valid;
- allow for time varying shapes;
- remove unnecessary configuration parameters for the boundaries
problem and give the remaining parameters more descriptive names;
- place the star always in the origin of the coordinate system, which
is the focus point of the satellite orbit, as well;
- make the satellite orbiting around the main star with a given period
discribed by a parameter 'tsat'; the satellite orbit is an elipse
described by the minimum distance from the focus point 'dsat' and
eccentricity 'esat';
- subroutine update_shapes() has been rewritten so now it works well
with both CONSERVATIVE=Y and CONSERVATIVE=N;
- since we are calling update_shapes() only once per step per block
now, it gives a small performance optimization;
- the diffusion of Psi in MHD-GLM requires spacial step dxmin, so
update the diffusion so it works after the last commit changes;
- call find_new_timestep() after job restart, since some parameters
could change;
- subroutine update_maximum_speed() has been replaced with
find_new_timestep(), which first finds the minimum spacial step
dxmin, then finds the maximum speed in the domain, and finally
estimates new time step;
- dx_min has been removed from MESH module, since it is not required
anymore;
- the new estimator uses the remaining time, time step and the previous
step execution time to estimate the remaining execution time; this
estimate varies much more for the initial steps, and for short
models, but may better estimate the remaining time for already
developed models, where the time step and number of blocks do not
change too much;
- 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;