The new version uses the minimum amount of memory (1 data block per
process) with a small sacrifice of the problem initialization speed.
This version fully supports 2D and 3D with and without MPI.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
- the new parameter toplev stores the level of refinement larger or
equal to maxlev; this level cannot be set in the config.in, but is
determined during the initiation or restarting the job;
- several subroutines have been updated to use toplev instead of
maxlev;
- 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;
- 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();
- 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;
- 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;