- two new parameters trun and tsav control how long the job can run;
the parameter trun, expressed in hours, determines the maximum
execution time and the parameter tsav, expressed in minutes, tells
when to terminate the job before the execution time exceeds trun;
- 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 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;
- 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;
- 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 program now handles properly some of the termination signals,
which means that if the program receives a signal to terminate its
execution, it will finish the current loop, write restart files,
end then exit properly;
- a new file 'mesh.log' is created with the following colums: step,
time, the number of leafs, the number of meta blocks, the coverage
efficiency, which is the number of leafs divided by the number of top
level blocks covering the whole domain, the AMR efficiency which
shows the advantage of using adaptive mesh (with boundaries taken
into account), block distribution over levels and processors;
- the AMR efficiency is the number of leafs multiplied by the number of
cells in one block (with boundaries included) and divided by the
effective resolution with boundaries included; if this parameter is
smaller than 1.0 we should expect faster calculations due to the
adaptive mesh, if the parameter is larger than 1.0, we only slow down
the calculations by using the adaptive mesh;
- add a new module INTEGRALS which handles initialization and
calculation of the conserved variables and energies;
- add make dependencies to makefile;
- call the initialization, storage and termination subroutines from the
driver;