This commit implements a better way (less I/O operations) restoring of
the parameters during the job restart. Some parameters, such as the size
of the block, or the equation system, cannot be changed during the
restart. Such parameters need to be restored from the restart snapshots.
The new way restores these parameters on the MPI master process only,
updates their values if they were changed, and distributes them to other
MPI processes. This way the number of I/O operations is kept to the
minimum (only one process access one file).
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This commit restores the previous way of processing the parameter file.
It is read and processed on the MPI master process, and then the list
of parameters is distributed to other MPI processes. This way only one
process accesses the parameter file, reducing the number of I/O
operations, which can be significant in the case of multiprocess MPI
jobs.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
The methods by Ranocha et al. (2021) are error-controlled embedded RK
methods, therefore the CFL value should be set explicitely for these
methods.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This flag indicates whether the energy injection was performed. If not,
there is no need for the variable update.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
It seems that the selective block update, i.e., update of the blocks
which have been (de)refined only, is not perfect. It violates the
numerical conservation somehow, and requires more investigation.
In order to fix this, perform the update of all data blocks, no matter
if they were refined or not. This makes some blocks to be updated twice,
but resolves the problem of variable conservation.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This subroutine now used the new XML module to parge XML files. It also
used new subroutine read_binary_xml() to read binary files.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This subroutine is also responsible for detection if binary data are
compressed and encoded, and respectively decompress and decode them.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This module offers a user-friendly interface for parsing XML data and
retrieving elements and attributes.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This commit does not change any functionality. It just prepares for
easier implementation of the compression of the restart snapshots.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
The default compression levels correspond now to the default levels
defined by each compression format library.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This commit implements two data filters:
1) "shuffle" - reorganizes bytes to group most to less significant parts
together: |a1|a2|a3|b1|b2|b3| -> |a1|b1|c1|a2|b2|c2|a3|b3|c3|
2) "bytedelta" - additionally stores differences between subsequent
values: |a1|a2|a3|b1|b2|b3| -> |a1|b1-a1|c1-b1|a2|b2-a2|c2-b2|a3|b3-a3|c3-b3|
For large datasets, in particular in 3D, the compression ratio can be
significantly better after applying these filters.
Inspired by https://aras-p.info/blog/2023/03/01/Float-Compression-7-More-Filtering-Optimization/
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>