View Issue Details

IDProjectCategoryView StatusLast Update
0001026OpenFOAM[All Projects] Bugpublic2015-01-03 15:33
Reporteruser507Assigned To 
Status newResolutionopen 
Platformx86-64OSLinux MintOS Version15
Product Version 
Fixed in Version 
Summary0001026: Mesh check in moveDynamicMesh fails altough checkMesh report OK mesh
DescriptionThe mesh check in moveDynamicMesh fails, reporting cells with too high aspect ratio (>1000). This happens immediately at the very first timestep, and continues throughout the iterations. There is several strange things with this:

1: It is exactly the same number of high-aspect ratio cells every single timestep.

2: The maximum aspect ratio is the same for all timesteps.

3: Even if you make an extremely small time step (1e-20) from the initial grid (which is OK with max. aspect ratio of ~12), it reports bad cells, even tough the grid has barely changed.

4: If you later run checkMesh on the meshes, it report that evertyhing is OK, and that the max. aspect ratio is way lower (~10) than what reported during the execution of moveDynamicMesh.

I cannot find any bad cells by visual inspection of the grid, and since checkMesh report that the grid is OK, I am starting to believe that this is a bug in the code.
Steps To ReproduceRun the attached case. I have tried this with several different meshes, and the error is present in all I have tried so far, although different meshes give different number of bad cells and aspect ratio.
Additional InformationI have tried to set the tolerance for the cellDisplacement down to 1e-10 without any change in the behaviour. I am running latest 2.2.x from Github, revision ef4666fa2875.
TagscheckMesh, moveDynamicMesh



2013-09-26 12:03


oscillatingCylinderDebug.tar.gz (3,368 bytes)


2013-09-26 12:26

updater   ~0002517

Quick question: Did you also do a full checkMesh? It's like this:

  checkMesh -allGeometry -allTopology


2013-09-26 12:49


No, I had not tested "-allGeometry -allTopology" at the time of the submission of the bug, however, I have now, and the result is still that checkMesh report OK.

For clarity, here is the output of moveDynamicMesh for the first timestep saved to disk:

Time = 0.05
GAMG: Solving for cellDisplacementx, Initial residual = 0, Final residual = 0, No Iterations 0
GAMG: Solving for cellDisplacementz, Initial residual = 0.36378882, Final residual = 9.9918428e-11, No Iterations 22
    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 (1.9112663e-18 -3.6591235e-16 2.1207669e-34) OK.
 ***High aspect ratio cells found, Max aspect ratio: 1001.605, number of cells 32
    Minimum face area = 1.5126463e-05. Maximum face area = 3.2604706. Face area magnitudes OK.
    Min volume = 1.5126463e-05. Max volume = 1.7954904. Total volume = 14399.215. Cell volumes OK.
    Mesh non-orthogonality Max: 44.430341 average: 12.225806
    Non-orthogonality check OK.
    Face pyramids OK.
    Max skewness = 2.3876698 OK.
    Failed 1 mesh geometry checks.
    Failed 1 mesh checks.
ExecutionTime = 2.04 s ClockTime = 2 s

And here is the output of "checkMesh -allGeometry -allTopology" for the very same timestep:

Time = 0.05

Checking geometry...
    Overall domain bounding box (-60 -0.5 -60) (60 0.5 60)
    Mesh (non-empty, non-wedge) directions (1 0 1)
    Mesh (non-empty) directions (1 0 1)
    All edges aligned with or perpendicular to non-empty directions.
    Boundary openness (1.6717897e-18 8.8757027e-16 -5.3019173e-35) OK.
    Max cell openness = 4.3443937e-16 OK.
    Max aspect ratio = 12.315346 OK.
    Minimum face area = 1.5126354e-05. Maximum face area = 3.260471. Face area magnitudes OK.
    Min volume = 1.5126354e-05. Max volume = 1.7954912. Total volume = 14399.215. Cell volumes OK.
    Mesh non-orthogonality Max: 44.430368 average: 12.225806
    Non-orthogonality check OK.
    Face pyramids OK.
    Max skewness = 2.3876697 OK.
    Coupled point location match (average 0) OK.
    Face tets OK.
    Min/max edge length = 0.0010006416 3.260471 OK.
    All angles in faces OK.
    Face flatness (1 = flat, 0 = butterfly) : average = 1 min = 1
    All face flatness OK.
    Cell determinant (wellposedness) : minimum: 0.2284715 average: 2.7377074
    Cell determinant check OK.
    Concave cell check OK.

Mesh OK.

I have also tried to run the case both in serial and parallel, and the result is the same.


2013-09-26 13:40


The aspect ratio check in moveDynamicMesh is done at a level (primitiveMesh) where it does not know that it is a 2D case. The one in checkMesh does take this into account and knocks out the y component.

Guess the moveDynamicMesh check should be moved to the higher level.

Issue History

Date Modified Username Field Change
2013-09-26 12:03 user507 New Issue
2013-09-26 12:03 user507 File Added: oscillatingCylinderDebug.tar.gz
2013-09-26 12:26 wyldckat Note Added: 0002517
2013-09-26 12:49 user507 Note Added: 0002518
2013-09-26 13:40 user4 Note Added: 0002519
2014-12-29 18:32 wyldckat Tag Attached: checkMesh
2014-12-29 18:33 wyldckat Tag Attached: moveDynamicMesh