From f86641110ce6bf86e55ac7cd600dbcc3f2f25976 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 9 Feb 2023 12:15:18 +0100 Subject: [PATCH] Issue in connectivity between Quad elements For unstructured meshes, the quad elements where not being propertly connected as not all possibilities were tested. This should be fixed now. --- src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 108 +++++++++++++++---- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 108 +++++++++++++++---- 2 files changed, 176 insertions(+), 40 deletions(-) diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index c02078a..d50263b 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -1012,38 +1012,106 @@ MODULE moduleMesh2DCart CLASS(meshCell2DCartQuad), INTENT(inout), TARGET:: elemB !Check direction 1 - IF (.NOT. ASSOCIATED(elemA%e1) .AND. & - elemA%n1%n == elemB%n4%n .AND. & - elemA%n2%n == elemB%n3%n) THEN - elemA%e1 => elemB - elemB%e3 => elemA + IF (.NOT. ASSOCIATED(elemA%e1)) THEN + IF (elemA%n1%n == elemB%n4%n .AND. & + elemA%n2%n == elemB%n3%n) THEN + elemA%e1 => elemB + elemB%e3 => elemA + + ELSEIF (elemA%n1%n == elemB%n3%n .AND. & + elemA%n2%n == elemB%n2%n) THEN + elemA%e1 => elemB + elemB%e2 => elemA + + ELSEIF (elemA%n1%n == elemB%n2%n .AND. & + elemA%n2%n == elemB%n1%n) THEN + elemA%e1 => elemB + elemB%e1 => elemA + + ELSEIF (elemA%n1%n == elemB%n1%n .AND. & + elemA%n2%n == elemB%n4%n) THEN + elemA%e1 => elemB + elemB%e4 => elemA + + END IF END IF !Check direction 2 - IF (.NOT. ASSOCIATED(elemA%e2) .AND. & - elemA%n2%n == elemB%n1%n .AND. & - elemA%n3%n == elemB%n4%n) THEN - elemA%e2 => elemB - elemB%e4 => elemA + IF (.NOT. ASSOCIATED(elemA%e2)) THEN + IF (elemA%n2%n == elemB%n1%n .AND. & + elemA%n3%n == elemB%n4%n) THEN + elemA%e2 => elemB + elemB%e4 => elemA + + ELSEIF (elemA%n2%n == elemB%n4%n .AND. & + elemA%n3%n == elemB%n3%n) THEN + elemA%e2 => elemB + elemB%e3 => elemA + + ELSEIF (elemA%n2%n == elemB%n3%n .AND. & + elemA%n3%n == elemB%n2%n) THEN + elemA%e2 => elemB + elemB%e2 => elemA + + ELSEIF (elemA%n2%n == elemB%n2%n .AND. & + elemA%n3%n == elemB%n1%n) THEN + elemA%e2 => elemB + elemB%e1 => elemA + + END IF END IF !Check direction 3 - IF (.NOT. ASSOCIATED(elemA%e3) .AND. & - elemA%n3%n == elemB%n2%n .AND. & - elemA%n4%n == elemB%n1%n) THEN - elemA%e3 => elemB - elemB%e1 => elemA + IF (.NOT. ASSOCIATED(elemA%e3)) THEN + IF (elemA%n3%n == elemB%n2%n .AND. & + elemA%n4%n == elemB%n1%n) THEN + elemA%e3 => elemB + elemB%e1 => elemA + + ELSEIF (elemA%n3%n == elemB%n1%n .AND. & + elemA%n4%n == elemB%n4%n) THEN + elemA%e3 => elemB + elemB%e4 => elemA + + ELSEIF (elemA%n3%n == elemB%n4%n .AND. & + elemA%n4%n == elemB%n3%n) THEN + elemA%e3 => elemB + elemB%e3 => elemA + + ELSEIF (elemA%n3%n == elemB%n3%n .AND. & + elemA%n4%n == elemB%n2%n) THEN + elemA%e3 => elemB + elemB%e2 => elemA + + END IF END IF !Check direction 4 - IF (.NOT. ASSOCIATED(elemA%e4) .AND. & - elemA%n4%n == elemB%n3%n .AND. & - elemA%n1%n == elemB%n2%n) THEN - elemA%e4 => elemB - elemB%e2 => elemA + IF (.NOT. ASSOCIATED(elemA%e4)) THEN + IF (elemA%n4%n == elemB%n3%n .AND. & + elemA%n1%n == elemB%n2%n) THEN + elemA%e4 => elemB + elemB%e2 => elemA + + ELSEIF (elemA%n4%n == elemB%n2%n .AND. & + elemA%n1%n == elemB%n1%n) THEN + elemA%e4 => elemB + elemB%e1 => elemA + + ELSEIF (elemA%n4%n == elemB%n1%n .AND. & + elemA%n1%n == elemB%n4%n) THEN + elemA%e4 => elemB + elemB%e4 => elemA + + ELSEIF (elemA%n4%n == elemB%n4%n .AND. & + elemA%n1%n == elemB%n3%n) THEN + elemA%e4 => elemB + elemB%e3 => elemA + + END IF END IF diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 307f71c..f6f2b26 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -1050,38 +1050,106 @@ MODULE moduleMesh2DCyl CLASS(meshCell2DCylQuad), INTENT(inout), TARGET:: elemB !Check direction 1 - IF (.NOT. ASSOCIATED(elemA%e1) .AND. & - elemA%n1%n == elemB%n4%n .AND. & - elemA%n2%n == elemB%n3%n) THEN - elemA%e1 => elemB - elemB%e3 => elemA + IF (.NOT. ASSOCIATED(elemA%e1)) THEN + IF (elemA%n1%n == elemB%n4%n .AND. & + elemA%n2%n == elemB%n3%n) THEN + elemA%e1 => elemB + elemB%e3 => elemA + + ELSEIF (elemA%n1%n == elemB%n3%n .AND. & + elemA%n2%n == elemB%n2%n) THEN + elemA%e1 => elemB + elemB%e2 => elemA + + ELSEIF (elemA%n1%n == elemB%n2%n .AND. & + elemA%n2%n == elemB%n1%n) THEN + elemA%e1 => elemB + elemB%e1 => elemA + + ELSEIF (elemA%n1%n == elemB%n1%n .AND. & + elemA%n2%n == elemB%n4%n) THEN + elemA%e1 => elemB + elemB%e4 => elemA + + END IF END IF !Check direction 2 - IF (.NOT. ASSOCIATED(elemA%e2) .AND. & - elemA%n2%n == elemB%n1%n .AND. & - elemA%n3%n == elemB%n4%n) THEN - elemA%e2 => elemB - elemB%e4 => elemA + IF (.NOT. ASSOCIATED(elemA%e2)) THEN + IF (elemA%n2%n == elemB%n1%n .AND. & + elemA%n3%n == elemB%n4%n) THEN + elemA%e2 => elemB + elemB%e4 => elemA + + ELSEIF (elemA%n2%n == elemB%n4%n .AND. & + elemA%n3%n == elemB%n3%n) THEN + elemA%e2 => elemB + elemB%e3 => elemA + + ELSEIF (elemA%n2%n == elemB%n3%n .AND. & + elemA%n3%n == elemB%n2%n) THEN + elemA%e2 => elemB + elemB%e2 => elemA + + ELSEIF (elemA%n2%n == elemB%n2%n .AND. & + elemA%n3%n == elemB%n1%n) THEN + elemA%e2 => elemB + elemB%e1 => elemA + + END IF END IF !Check direction 3 - IF (.NOT. ASSOCIATED(elemA%e3) .AND. & - elemA%n3%n == elemB%n2%n .AND. & - elemA%n4%n == elemB%n1%n) THEN - elemA%e3 => elemB - elemB%e1 => elemA + IF (.NOT. ASSOCIATED(elemA%e3)) THEN + IF (elemA%n3%n == elemB%n2%n .AND. & + elemA%n4%n == elemB%n1%n) THEN + elemA%e3 => elemB + elemB%e1 => elemA + + ELSEIF (elemA%n3%n == elemB%n1%n .AND. & + elemA%n4%n == elemB%n4%n) THEN + elemA%e3 => elemB + elemB%e4 => elemA + + ELSEIF (elemA%n3%n == elemB%n4%n .AND. & + elemA%n4%n == elemB%n3%n) THEN + elemA%e3 => elemB + elemB%e3 => elemA + + ELSEIF (elemA%n3%n == elemB%n3%n .AND. & + elemA%n4%n == elemB%n2%n) THEN + elemA%e3 => elemB + elemB%e2 => elemA + + END IF END IF !Check direction 4 - IF (.NOT. ASSOCIATED(elemA%e4) .AND. & - elemA%n4%n == elemB%n3%n .AND. & - elemA%n1%n == elemB%n2%n) THEN - elemA%e4 => elemB - elemB%e2 => elemA + IF (.NOT. ASSOCIATED(elemA%e4)) THEN + IF (elemA%n4%n == elemB%n3%n .AND. & + elemA%n1%n == elemB%n2%n) THEN + elemA%e4 => elemB + elemB%e2 => elemA + + ELSEIF (elemA%n4%n == elemB%n2%n .AND. & + elemA%n1%n == elemB%n1%n) THEN + elemA%e4 => elemB + elemB%e1 => elemA + + ELSEIF (elemA%n4%n == elemB%n1%n .AND. & + elemA%n1%n == elemB%n4%n) THEN + elemA%e4 => elemB + elemB%e4 => elemA + + ELSEIF (elemA%n4%n == elemB%n4%n .AND. & + elemA%n1%n == elemB%n3%n) THEN + elemA%e4 => elemB + elemB%e3 => elemA + + END IF END IF