However, the arrays which are used to store the reconstructed primitive
variables at Riemann states are passed now from update_increment() in
module EAVOLUTION. These arrays use the common workspace.
The array used for 4-vector velocity reconstruction is removed by
utilizing the output array for fluxes.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This reverts commit 4bb02028df6bc4dd9fa21e7689131592c6466d86.
We need to use workspace in update_increment().
Subroutine initialize_time_step() is called only once at the beginning,
so it is fine to use allocated arrays here.
This workspace removes the necessity of allocating the local subroutine
arrays. It is allocated once in initialize_mesh() and can be used in any
place of the code. By default, the size of this workspace is controlled
by the block dimensions, the number of variables, and the simulation
dimension, but it can be controlled by a parameter 'workspace_size'.
Additionally, there is a logical flag 'work_in_use' exported from this
module to permit the verification if the workspace is currently in use.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
Two arrays used in the initial time step estimation, sc and df, are
allocated only if the integration methods support the estimation of
error.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
Each data block has a field %du which is used only during the
integration step (module EVOLUTION). Therefore, it can be used as a
temporary array to store the vorticity and the current density in case
these refinement criterions are used.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This rewrite removes large buffers used by the MPI exchange of data
block arrays between processes.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This removes the use of extra buffer for MPI block exchange. The
exchange is now a zero-copy operation.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
The prolongation is not expected to be done very frequently, comparing
to the number of leafs. Therefore, allocate the prolongation array only
when it is required.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
Instead of using a temporary array for all variables, we now reuse the
same array for the prolongation of each variable.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
We already have self-hosted Drone CI/CD, and free GitLab CI/CD. Besides
bitbucket offers only 52 minutes monthly.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
In case the estimation returns an unphysical state, its time step is
reduced and the estimation is repeated. If it fails for 10 consecutive
times, the estimation is abandoned and the CFL time step is used.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
If any unphysical cell is detected, the integration is immediately
reverted and resumed with a time step reduced by a factor or four.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
The copy of boundaries between blocks at the same level always uses the
same size of buffer, so instead of using two of them, one for sending
and another for receiving, use just one for sending and receiving. This
will use the appropriate subroutine from MPITOOLS
exchange_arrays_same().
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
Implement two subroutines, one for exchange of arrays of different
sizes, and the second for exchange of arrays of the same sizes.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>