The first line shows the location from which the message was called, and
the second one shows the actual message.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
New functions uppercase() and lowercase() change the input string to the
upper case and lower case, respectively.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
The possible failure could take place in the boundary update or
conversion to the conservative variables. In case of a failure, jump
directly to the end part of subroutine in which the %boundary flag is
cleared.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
After the boundary update, all respective blocks modified by the mesh or
boundary update are required to update their primitive variables. If a
data block contains a non-physical cell, it is corrected by
correct_unphysical_states(), if fix_unphysical_cells is switched on.
As the last steps, the shapes are updated if they are switched on.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This field should be set to .true. if all block cells are physical,
otherwise it should be set to .false..
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
If cons2prim() returns status indicating the existence of non-physical
cell, just update the subroutine status and continue with the variable
conversion.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
Do not quit immediately if a negative density or pressure is
encountered. Just mark the status flag non-zero and continue. The
non-physical cell can be corrected later.
Also, if the compilation flag DEBUG is present, print the conservative
variables for the non-physical cell.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
When the block has been (de)refined, its field %update is set in order
to update its primitive variables. However, the block which are
neighbors of the (de)refined blocks, since their boundaries are updated
too, were not selected for the primitive variable update.
Fix this by adding a new meta block field %boundary, which indicates
that a block boundary has been updated, and update the corresponding
data block primitive variables either if the %update or %boundary flags
are set.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
The specific boundaries (open, outflow, reflective, custom, etc.) work
on the primitive variables. Since the boundaries are updated using the
conservative variables, we have to update the primitive variables in the
block to which the specific boundary is applied. Then, the conservative
variables are update at the ghost zone where the specific boundary
condition was applied.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
Since the update of boundaries using prolongation depends on the
neighboring cells, make sure it is applied for blocks at the same level,
from the minimum to maximum level.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
Pointer pdata already has a reference to the increment array dU(), so
remove the redundant argument du.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
Four child blocks at higher levels do not have internal edge neighbors.
Therefore, the face prolongation from the lower level neighbor of these
four blocks has to include the internal edges.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
Two child blocks at higher levels do not have internal corner neighbor.
Therefore, the edge prolongation from the lower level neighbor of these
two blocks has to include the internal corner.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This solver the problem of updating the fluxes in an inconsistent way
for the same run with a different number of MPI processes.
Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>