Merge branch 'issue/particlesStuck' into 'development'
Issue in connectivity between Quad elements See merge request JorgeGonz/fpakc!39
This commit is contained in:
commit
f815c8f192
3 changed files with 179 additions and 43 deletions
|
|
@ -1012,38 +1012,106 @@ MODULE moduleMesh2DCart
|
||||||
CLASS(meshCell2DCartQuad), INTENT(inout), TARGET:: elemB
|
CLASS(meshCell2DCartQuad), INTENT(inout), TARGET:: elemB
|
||||||
|
|
||||||
!Check direction 1
|
!Check direction 1
|
||||||
IF (.NOT. ASSOCIATED(elemA%e1) .AND. &
|
IF (.NOT. ASSOCIATED(elemA%e1)) THEN
|
||||||
elemA%n1%n == elemB%n4%n .AND. &
|
IF (elemA%n1%n == elemB%n4%n .AND. &
|
||||||
elemA%n2%n == elemB%n3%n) THEN
|
elemA%n2%n == elemB%n3%n) THEN
|
||||||
elemA%e1 => elemB
|
elemA%e1 => elemB
|
||||||
elemB%e3 => elemA
|
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
|
END IF
|
||||||
|
|
||||||
!Check direction 2
|
!Check direction 2
|
||||||
IF (.NOT. ASSOCIATED(elemA%e2) .AND. &
|
IF (.NOT. ASSOCIATED(elemA%e2)) THEN
|
||||||
elemA%n2%n == elemB%n1%n .AND. &
|
IF (elemA%n2%n == elemB%n1%n .AND. &
|
||||||
elemA%n3%n == elemB%n4%n) THEN
|
elemA%n3%n == elemB%n4%n) THEN
|
||||||
elemA%e2 => elemB
|
elemA%e2 => elemB
|
||||||
elemB%e4 => elemA
|
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
|
END IF
|
||||||
|
|
||||||
!Check direction 3
|
!Check direction 3
|
||||||
IF (.NOT. ASSOCIATED(elemA%e3) .AND. &
|
IF (.NOT. ASSOCIATED(elemA%e3)) THEN
|
||||||
elemA%n3%n == elemB%n2%n .AND. &
|
IF (elemA%n3%n == elemB%n2%n .AND. &
|
||||||
elemA%n4%n == elemB%n1%n) THEN
|
elemA%n4%n == elemB%n1%n) THEN
|
||||||
elemA%e3 => elemB
|
elemA%e3 => elemB
|
||||||
elemB%e1 => elemA
|
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
|
END IF
|
||||||
|
|
||||||
!Check direction 4
|
!Check direction 4
|
||||||
IF (.NOT. ASSOCIATED(elemA%e4) .AND. &
|
IF (.NOT. ASSOCIATED(elemA%e4)) THEN
|
||||||
elemA%n4%n == elemB%n3%n .AND. &
|
IF (elemA%n4%n == elemB%n3%n .AND. &
|
||||||
elemA%n1%n == elemB%n2%n) THEN
|
elemA%n1%n == elemB%n2%n) THEN
|
||||||
elemA%e4 => elemB
|
elemA%e4 => elemB
|
||||||
elemB%e2 => elemA
|
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
|
END IF
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -524,7 +524,7 @@ MODULE moduleMesh2DCyl
|
||||||
conv = 1.D0
|
conv = 1.D0
|
||||||
XiO = 0.D0
|
XiO = 0.D0
|
||||||
|
|
||||||
DO WHILE(conv > 1.D-2)
|
DO WHILE(conv > 1.D-4)
|
||||||
dPsi = self%dPsi(XiO, 4)
|
dPsi = self%dPsi(XiO, 4)
|
||||||
pDer = self%partialDer(4, dPsi)
|
pDer = self%partialDer(4, dPsi)
|
||||||
detJ = self%detJac(pDer)
|
detJ = self%detJac(pDer)
|
||||||
|
|
@ -1050,38 +1050,106 @@ MODULE moduleMesh2DCyl
|
||||||
CLASS(meshCell2DCylQuad), INTENT(inout), TARGET:: elemB
|
CLASS(meshCell2DCylQuad), INTENT(inout), TARGET:: elemB
|
||||||
|
|
||||||
!Check direction 1
|
!Check direction 1
|
||||||
IF (.NOT. ASSOCIATED(elemA%e1) .AND. &
|
IF (.NOT. ASSOCIATED(elemA%e1)) THEN
|
||||||
elemA%n1%n == elemB%n4%n .AND. &
|
IF (elemA%n1%n == elemB%n4%n .AND. &
|
||||||
elemA%n2%n == elemB%n3%n) THEN
|
elemA%n2%n == elemB%n3%n) THEN
|
||||||
elemA%e1 => elemB
|
elemA%e1 => elemB
|
||||||
elemB%e3 => elemA
|
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
|
END IF
|
||||||
|
|
||||||
!Check direction 2
|
!Check direction 2
|
||||||
IF (.NOT. ASSOCIATED(elemA%e2) .AND. &
|
IF (.NOT. ASSOCIATED(elemA%e2)) THEN
|
||||||
elemA%n2%n == elemB%n1%n .AND. &
|
IF (elemA%n2%n == elemB%n1%n .AND. &
|
||||||
elemA%n3%n == elemB%n4%n) THEN
|
elemA%n3%n == elemB%n4%n) THEN
|
||||||
elemA%e2 => elemB
|
elemA%e2 => elemB
|
||||||
elemB%e4 => elemA
|
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
|
END IF
|
||||||
|
|
||||||
!Check direction 3
|
!Check direction 3
|
||||||
IF (.NOT. ASSOCIATED(elemA%e3) .AND. &
|
IF (.NOT. ASSOCIATED(elemA%e3)) THEN
|
||||||
elemA%n3%n == elemB%n2%n .AND. &
|
IF (elemA%n3%n == elemB%n2%n .AND. &
|
||||||
elemA%n4%n == elemB%n1%n) THEN
|
elemA%n4%n == elemB%n1%n) THEN
|
||||||
elemA%e3 => elemB
|
elemA%e3 => elemB
|
||||||
elemB%e1 => elemA
|
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
|
END IF
|
||||||
|
|
||||||
!Check direction 4
|
!Check direction 4
|
||||||
IF (.NOT. ASSOCIATED(elemA%e4) .AND. &
|
IF (.NOT. ASSOCIATED(elemA%e4)) THEN
|
||||||
elemA%n4%n == elemB%n3%n .AND. &
|
IF (elemA%n4%n == elemB%n3%n .AND. &
|
||||||
elemA%n1%n == elemB%n2%n) THEN
|
elemA%n1%n == elemB%n2%n) THEN
|
||||||
elemA%e4 => elemB
|
elemA%e4 => elemB
|
||||||
elemB%e2 => elemA
|
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
|
END IF
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -639,8 +639,8 @@ MODULE moduleMesh
|
||||||
CLASS(meshCell), INTENT(inout):: self
|
CLASS(meshCell), INTENT(inout):: self
|
||||||
CLASS(particle), INTENT(inout), TARGET:: part
|
CLASS(particle), INTENT(inout), TARGET:: part
|
||||||
CLASS(meshCell), OPTIONAL, INTENT(in):: oldCell
|
CLASS(meshCell), OPTIONAL, INTENT(in):: oldCell
|
||||||
REAL(8):: Xi(1:3)
|
REAL(8):: Xi(1:3) = 0.D0
|
||||||
CLASS(meshElement), POINTER:: neighbourElement
|
CLASS(meshElement), POINTER:: neighbourElement => NULL()
|
||||||
INTEGER:: sp
|
INTEGER:: sp
|
||||||
|
|
||||||
Xi = self%phy2log(part%r)
|
Xi = self%phy2log(part%r)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue