layerAdditionRemoval polyTopoChanger not working properly while used with displacementLayeredMotion solver
Summary
I found an issue while trying to use the displacementLayeredMotion solver with the layerAdditionRemoval functionality. Basically, I'm trying to use it for a toy case, which i have two moving walls, with a predetermined displacement in a certain direction, where I want to add and remove the cells to simulate the movement of these walls. Initially everything works fine, until a certain topology change is needed, at this moment the layerAdditionRemoval polyTopoChanger seems to fail to construct the new group of cells at the left side of the domain (the side that is expanding).
Steps to reproduce
The case is attached with an Allrun.
Example case
retangularLayerAdditionRemoval.tar.xz
What is the current bug behaviour?
While constructing a new group of cells due to the layerAdditionRemoval, it fails, constructing wrong oriented cells with negative volume.
What is the expected correct behavior?
The expected result should be something like this: layerADDrm
Relevant logs and/or images
The final part of the log:
Time = 0.62
PIMPLE: iteration 1
solving for zone: top
solving for zone: LAR1
solving for zone: LAR2
solving for zone: botton
Executing mesh motion
Point usage OK.
Upper triangular ordering OK.
Topological cell zip-up check OK.
Face vertices OK.
Face-face connectivity OK.
Mesh topology OK.
Boundary openness (0 -8.5572e-18 -7.54804e-16) OK.
Max cell openness = 0 OK.
Max aspect ratio = 1.62737 OK.
Minimum face area = 1. Maximum face area = 1.62737. Face area magnitudes OK.
Min volume = 1. Max volume = 1.62737. Total volume = 11500. Cell volumes OK.
Mesh non-orthogonality Max: 0 average: 0
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 1.42143e-14 OK.
Mesh geometry OK.
Mesh OK.
ExecutionTime = 15.6 s ClockTime = 16 s
Time = 0.63
PIMPLE: iteration 1
Executing mesh topology update
solving for zone: top
solving for zone: LAR1
solving for zone: LAR2
solving for zone: botton
solving for zone: top
solving for zone: LAR1
solving for zone: LAR2
solving for zone: botton
Point usage OK.
Upper triangular ordering OK.
Topological cell zip-up check OK.
Face vertices OK.
Face-face connectivity OK.
Mesh topology OK.
Boundary openness (0 -9.8212e-18 -7.50515e-17) OK.
***High aspect ratio cells found, Max aspect ratio: 5.50745e+99, number of cells 125
Minimum face area = 0.326117. Maximum face area = 1.95509. Face area magnitudes OK.
***Zero or negative cell volume detected. Minimum negative volume: -0.326117, Number of negative volume cells: 125
Mesh non-orthogonality Max: 180 average: 9.58925
***Number of non-orthogonality errors: 220.
***Error in face pyramids: 750 faces are incorrectly oriented.
Max skewness = 2.63864e-14 OK.
Failed 4 mesh geometry checks.
Failed 1 mesh checks.
ExecutionTime = 16.14 s ClockTime = 17 s
Time = 0.64
PIMPLE: iteration 1
--> FOAM FATAL ERROR:
negative cell volume. Error in mesh motion before topological change.
V:
11500
(
list with cells volume
)
From function virtual bool Foam::layerAdditionRemoval::changeTopology() const
in file layerAdditionRemoval/layerAdditionRemoval.C at line 220.
FOAM aborting
#0 Foam::error::printStack(Foam::Ostream&) at ??:?
#1 Foam::error::abort() at ??:?
#2 Foam::layerAdditionRemoval::changeTopology() const at ??:?
#3 Foam::polyTopoChanger::changeTopology() const at ??:?
#4 Foam::polyTopoChanger::changeMesh(bool, bool, bool, bool) at ??:?
#5 Foam::dynamicMotionSolverTopoFvMesh::update() at ??:?
#6 ? in ~/OpenFOAM/OpenFOAM-v1812/platforms/linux64GccDPInt32Opt/bin/moveDynamicMesh
#7 __libc_start_main in /lib/x86_64-linux-gnu/libc.so.6
#8 ? in ~/OpenFOAM/OpenFOAM-v1812/platforms/linux64GccDPInt32Opt/bin/moveDynamicMesh
Aborted (core dumped)
Environment information
- OpenFOAM version : v1812 | v2006
- Operating system : Ubuntu 18.04.5 LTS