Reduction in pushing
Reduction in 10-20% of time spend in pushing in 2DCyl thanks to rewriting fPsi and dPsi.
This commit is contained in:
parent
0db76083ec
commit
2486ef6316
18 changed files with 1289 additions and 1280 deletions
|
|
@ -32,34 +32,27 @@ MODULE moduleMesh1DRad
|
|||
|
||||
END TYPE meshEdge1DRad
|
||||
|
||||
TYPE, PUBLIC, ABSTRACT, EXTENDS(meshVol):: meshVol1DRad
|
||||
TYPE, PUBLIC, ABSTRACT, EXTENDS(meshCell):: meshCell1DRad
|
||||
CONTAINS
|
||||
PROCEDURE, PASS:: detJac => detJ1DRad
|
||||
PROCEDURE, PASS:: invJac => invJ1DRad
|
||||
PROCEDURE(dPsi_interface), DEFERRED, NOPASS:: dPsi
|
||||
PROCEDURE(partialDer_interface), DEFERRED, PASS:: partialDer
|
||||
|
||||
END TYPE meshVol1DRad
|
||||
END TYPE meshCell1DRad
|
||||
|
||||
ABSTRACT INTERFACE
|
||||
PURE FUNCTION dPsi_interface(xi) RESULT(dPsi)
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8), ALLOCATABLE:: dPsi(:,:)
|
||||
|
||||
END FUNCTION dPsi_interface
|
||||
|
||||
PURE SUBROUTINE partialDer_interface(self, dPsi, dx)
|
||||
IMPORT meshVol1DRad
|
||||
IMPORT meshCell1DRad
|
||||
|
||||
CLASS(meshVol1DRad), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: dPsi(1:,1:)
|
||||
CLASS(meshCell1DRad), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: dPsi(1:3,1:self%nNodes)
|
||||
REAL(8), INTENT(out), DIMENSION(1):: dx
|
||||
|
||||
END SUBROUTINE partialDer_interface
|
||||
|
||||
END INTERFACE
|
||||
|
||||
TYPE, PUBLIC, EXTENDS(meshVol1DRad):: meshVol1DRadSegm
|
||||
TYPE, PUBLIC, EXTENDS(meshCell1DRad):: meshCell1DRadSegm
|
||||
!Element coordinates
|
||||
REAL(8):: r(1:2)
|
||||
!Connectivity to nodes
|
||||
|
|
@ -68,22 +61,22 @@ MODULE moduleMesh1DRad
|
|||
CLASS(meshElement), POINTER:: e1 => NULL(), e2 => NULL()
|
||||
REAL(8):: arNodes(1:2)
|
||||
CONTAINS
|
||||
PROCEDURE, PASS:: init => initVol1DRadSegm
|
||||
PROCEDURE, PASS:: init => initCell1DRadSegm
|
||||
PROCEDURE, PASS:: randPos => randPos1DRadSeg
|
||||
PROCEDURE, PASS:: area => areaRad
|
||||
PROCEDURE, NOPASS:: fPsi => fPsiRad
|
||||
PROCEDURE, NOPASS:: dPsi => dPsiRad
|
||||
PROCEDURE, PASS:: fPsi => fPsiRad
|
||||
PROCEDURE, PASS:: dPsi => dPsiRad
|
||||
PROCEDURE, PASS:: partialDer => partialDerRad
|
||||
PROCEDURE, PASS:: elemK => elemKRad
|
||||
PROCEDURE, PASS:: elemF => elemFRad
|
||||
PROCEDURE, PASS:: gatherElectricField => gatherEFRad
|
||||
PROCEDURE, PASS:: gatherMagneticField => gatherMFRad
|
||||
PROCEDURE, NOPASS:: inside => insideRad
|
||||
PROCEDURE, PASS:: gatherEF => gatherEFRad
|
||||
PROCEDURE, PASS:: gatherMF => gatherMFRad
|
||||
PROCEDURE, PASS:: getNodes => getNodesRad
|
||||
PROCEDURE, PASS:: phy2log => phy2logRad
|
||||
PROCEDURE, PASS:: nextElement => nextElementRad
|
||||
|
||||
END TYPE meshVol1DRadSegm
|
||||
END TYPE meshCell1DRadSegm
|
||||
|
||||
CONTAINS
|
||||
!NODE FUNCTIONS
|
||||
|
|
@ -195,17 +188,18 @@ MODULE moduleMesh1DRad
|
|||
!VOLUME FUNCTIONS
|
||||
!SEGMENT FUNCTIONS
|
||||
!Init segment element
|
||||
SUBROUTINE initVol1DRadSegm(self, n, p, nodes)
|
||||
SUBROUTINE initCell1DRadSegm(self, n, p, nodes)
|
||||
USE moduleRefParam
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(out):: self
|
||||
CLASS(meshCell1DRadSegm), INTENT(out):: self
|
||||
INTEGER, INTENT(in):: n
|
||||
INTEGER, INTENT(in):: p(:)
|
||||
TYPE(meshNodeCont), INTENT(in), TARGET:: nodes(:)
|
||||
REAL(8), DIMENSION(1:3):: r1, r2
|
||||
|
||||
self%n = n
|
||||
self%nNodes = SIZE(p)
|
||||
self%n1 => nodes(p(1))%obj
|
||||
self%n2 => nodes(p(2))%obj
|
||||
!Get element coordinates
|
||||
|
|
@ -223,22 +217,22 @@ MODULE moduleMesh1DRad
|
|||
ALLOCATE(self%listPart_in(1:nSpecies))
|
||||
ALLOCATE(self%totalWeight(1:nSpecies))
|
||||
|
||||
END SUBROUTINE initVol1DRadSegm
|
||||
END SUBROUTINE initCell1DRadSegm
|
||||
|
||||
!Calculates a random position in 1D volume
|
||||
FUNCTION randPos1DRadSeg(self) RESULT(r)
|
||||
USE moduleRandom
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(in):: self
|
||||
CLASS(meshCell1DRadSegm), INTENT(in):: self
|
||||
REAL(8):: r(1:3)
|
||||
REAL(8):: Xi(1:3)
|
||||
REAL(8), ALLOCATABLE:: fPsi(:)
|
||||
REAL(8):: fPsi(1:2)
|
||||
|
||||
Xi(1) = random(-1.D0, 1.D0)
|
||||
Xi(2:3) = 0.D0
|
||||
|
||||
CALL self%fPsi(Xi, fPsi)
|
||||
fPsi = self%fPsi(Xi)
|
||||
r(1) = DOT_PRODUCT(fPsi, self%r)
|
||||
|
||||
END FUNCTION randPos1DRadSeg
|
||||
|
|
@ -247,7 +241,7 @@ MODULE moduleMesh1DRad
|
|||
PURE SUBROUTINE areaRad(self)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(inout):: self
|
||||
CLASS(meshCell1DRadSegm), INTENT(inout):: self
|
||||
REAL(8):: l !element length
|
||||
REAL(8):: fPsi(1:2), fPsi_node(1:2)
|
||||
REAL(8):: r
|
||||
|
|
@ -258,7 +252,7 @@ MODULE moduleMesh1DRad
|
|||
self%arNodes = 0.D0
|
||||
!1 point Gauss integral
|
||||
Xi = 0.D0
|
||||
CALL self%fPsi(Xi, fPsi)
|
||||
fPsi = self%fPsi(Xi)
|
||||
detJ = self%detJac(Xi)
|
||||
!Computes total volume of the cell
|
||||
r = DOT_PRODUCT(fPsi, self%r)
|
||||
|
|
@ -266,37 +260,40 @@ MODULE moduleMesh1DRad
|
|||
self%volume = r*l
|
||||
!Computes volume per node
|
||||
Xi = (/-5.D-1, 0.D0, 0.D0/)
|
||||
CALL self%fPsi(Xi, fPsi_node)
|
||||
fPsi_node = self%fPsi(Xi)
|
||||
r = DOT_PRODUCT(fPsi_node,self%r)
|
||||
self%arNodes(1) = fPsi(1)*r*l
|
||||
Xi = (/ 5.D-1, 0.D0, 0.D0/)
|
||||
CALL self%fPsi(Xi, fPsi_node)
|
||||
fPsi_node = self%fPsi(Xi)
|
||||
r = DOT_PRODUCT(fPsi_node,self%r)
|
||||
self%arNodes(2) = fPsi(2)*r*l
|
||||
|
||||
END SUBROUTINE areaRad
|
||||
|
||||
!Computes element functions at point Xi
|
||||
PURE SUBROUTINE fPsiRad(xi, fPsi)
|
||||
PURE FUNCTION fPsiRad(self, xi) RESULT(fPsi)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshCell1DRadSegm), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8), INTENT(out):: fPsi(:)
|
||||
REAL(8):: fPsi(1:self%nNodes)
|
||||
|
||||
fPsi(1) = 1.D0 - xi(1)
|
||||
fPsi(2) = 1.D0 + xi(1)
|
||||
|
||||
fPsi = fPsi * 5.D-1
|
||||
|
||||
END SUBROUTINE fPsiRad
|
||||
END FUNCTION fPsiRad
|
||||
|
||||
!Computes element derivative shape function at Xi
|
||||
PURE FUNCTION dPsiRad(xi) RESULT(dPsi)
|
||||
PURE FUNCTION dPsiRad(self, xi) RESULT(dPsi)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshCell1DRadSegm), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8), ALLOCATABLE:: dPsi(:,:)
|
||||
REAL(8):: dPsi(1:3,1:self%nNodes)
|
||||
|
||||
ALLOCATE(dPsi(1:1, 1:2))
|
||||
dPsi = 0.D0
|
||||
|
||||
dPsi(1, 1) = -5.D-1
|
||||
dPsi(1, 2) = 5.D-1
|
||||
|
|
@ -307,8 +304,8 @@ MODULE moduleMesh1DRad
|
|||
PURE SUBROUTINE partialDerRad(self, dPsi, dx)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: dPsi(1:,1:)
|
||||
CLASS(meshCell1DRadSegm), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: dPsi(1:3,1:self%nNodes)
|
||||
REAL(8), INTENT(out), DIMENSION(1):: dx
|
||||
|
||||
dx(1) = DOT_PRODUCT(dPsi(1,:), self%r)
|
||||
|
|
@ -320,15 +317,14 @@ MODULE moduleMesh1DRad
|
|||
USE moduleConstParam, ONLY: PI2
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(in):: self
|
||||
REAL(8), ALLOCATABLE:: localK(:,:)
|
||||
CLASS(meshCell1DRadSegm), INTENT(in):: self
|
||||
REAL(8):: localK(1:self%nNodes,1:self%nNodes)
|
||||
REAL(8):: Xi(1:3)
|
||||
REAL(8):: dPsi(1:1, 1:2)
|
||||
REAL(8):: invJ(1), detJ
|
||||
REAL(8):: dPsi(1:3, 1:2)
|
||||
REAL(8):: invJ(1:3,1:3), detJ
|
||||
REAL(8):: r, fPsi(1:2)
|
||||
INTEGER:: l
|
||||
|
||||
ALLOCATE(localK(1:2, 1:2))
|
||||
localK = 0.D0
|
||||
Xi = 0.D0
|
||||
DO l = 1, 3
|
||||
|
|
@ -336,7 +332,7 @@ MODULE moduleMesh1DRad
|
|||
dPsi = self%dPsi(Xi)
|
||||
detJ = self%detJac(Xi, dPsi)
|
||||
invJ = self%invJac(Xi, dPsi)
|
||||
CALL self%fPsi(Xi, fPsi)
|
||||
fPsi = self%fPsi(Xi)
|
||||
r = DOT_PRODUCT(fPsi, self%r)
|
||||
localK = localK + MATMUL(RESHAPE(MATMUL(invJ,dPsi), (/ 2, 1/)), &
|
||||
RESHAPE(MATMUL(invJ,dPsi), (/ 1, 2/)))* &
|
||||
|
|
@ -352,22 +348,21 @@ MODULE moduleMesh1DRad
|
|||
USE moduleConstParam, ONLY: PI2
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: source(1:)
|
||||
REAL(8), ALLOCATABLE:: localF(:)
|
||||
CLASS(meshCell1DRadSegm), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: source(1:self%nNodes)
|
||||
REAL(8):: localF(1:self%nNodes)
|
||||
REAL(8):: fPsi(1:2)
|
||||
REAL(8):: detJ, f, r
|
||||
REAL(8):: Xi(1:3)
|
||||
INTEGER:: l
|
||||
|
||||
ALLOCATE(localF(1:2))
|
||||
localF = 0.D0
|
||||
Xi = 0.D0
|
||||
|
||||
DO l = 1, 3
|
||||
Xi(1) = corSeg(l)
|
||||
detJ = self%detJac(Xi)
|
||||
CALL self%fPsi(Xi, fPsi)
|
||||
fPsi = self%fPsi(Xi)
|
||||
r = DOT_PRODUCT(fPsi, self%r)
|
||||
f = DOT_PRODUCT(fPsi, source)
|
||||
localF = localF + f*fPsi*r*wSeg(l)*detJ
|
||||
|
|
@ -376,6 +371,40 @@ MODULE moduleMesh1DRad
|
|||
|
||||
END FUNCTION elemFRad
|
||||
|
||||
PURE FUNCTION gatherEFRad(self, Xi) RESULT(array)
|
||||
IMPLICIT NONE
|
||||
CLASS(meshCell1DRadSegm), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: Xi(1:3)
|
||||
REAL(8):: array(1:3)
|
||||
REAL(8):: phi(1:2)
|
||||
|
||||
phi = (/ self%n1%emData%phi, &
|
||||
self%n2%emData%phi /)
|
||||
|
||||
array = -self%gatherDF(Xi, phi)
|
||||
|
||||
END FUNCTION gatherEFRad
|
||||
|
||||
PURE FUNCTION gatherMFRad(self, Xi) RESULT(array)
|
||||
IMPLICIT NONE
|
||||
CLASS(meshCell1DRadSegm), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: Xi(1:3)
|
||||
REAL(8):: array(1:3)
|
||||
REAL(8):: B(1:2,1:3)
|
||||
|
||||
B(:,1) = (/ self%n1%emData%B(1), &
|
||||
self%n2%emData%B(1) /)
|
||||
|
||||
B(:,2) = (/ self%n1%emData%B(2), &
|
||||
self%n2%emData%B(2) /)
|
||||
|
||||
B(:,3) = (/ self%n1%emData%B(3), &
|
||||
self%n2%emData%B(3) /)
|
||||
|
||||
array = self%gatherF(Xi, 3, B)
|
||||
|
||||
END FUNCTION gatherMFRad
|
||||
|
||||
PURE FUNCTION insideRad(xi) RESULT(ins)
|
||||
IMPLICIT NONE
|
||||
|
||||
|
|
@ -387,58 +416,13 @@ MODULE moduleMesh1DRad
|
|||
|
||||
END FUNCTION insideRad
|
||||
|
||||
!Gathers EF at position Xi
|
||||
PURE FUNCTION gatherEFRad(self, xi) RESULT(EF)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8):: dPsi(1, 1:2)
|
||||
REAL(8):: phi(1:2)
|
||||
REAL(8):: EF(1:3)
|
||||
REAL(8):: invJ
|
||||
|
||||
phi = (/ self%n1%emData%phi, &
|
||||
self%n2%emData%phi /)
|
||||
|
||||
dPsi = self%dPsi(xi)
|
||||
invJ = self%invJac(xi, dPsi)
|
||||
EF(1) = -DOT_PRODUCT(dPsi(1, :), phi)*invJ
|
||||
EF(2) = 0.D0
|
||||
EF(3) = 0.D0
|
||||
|
||||
END FUNCTION gatherEFRad
|
||||
|
||||
PURE FUNCTION gatherMFRad(self, xi) RESULT(MF)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8):: fPsi(1:2)
|
||||
REAL(8):: MF_Nodes(1:2, 1:3)
|
||||
REAL(8):: MF(1:3)
|
||||
REAL(8):: invJ
|
||||
|
||||
MF_Nodes(1:2,1) = (/ self%n1%emData%B(1), &
|
||||
self%n2%emData%B(1) /)
|
||||
MF_Nodes(1:2,2) = (/ self%n1%emData%B(2), &
|
||||
self%n2%emData%B(2) /)
|
||||
MF_Nodes(1:2,3) = (/ self%n1%emData%B(3), &
|
||||
self%n2%emData%B(3) /)
|
||||
|
||||
CALL self%fPsi(xi, fPsi)
|
||||
MF = MATMUL(fPsi, MF_Nodes)
|
||||
|
||||
END FUNCTION gatherMFRad
|
||||
|
||||
!Get nodes from 1D volume
|
||||
PURE FUNCTION getNodesRad(self) RESULT(n)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(in):: self
|
||||
INTEGER, ALLOCATABLE:: n(:)
|
||||
CLASS(meshCell1DRadSegm), INTENT(in):: self
|
||||
INTEGER:: n(1:self%nNodes)
|
||||
|
||||
ALLOCATE(n(1:2))
|
||||
n = (/ self%n1%n, self%n2%n /)
|
||||
|
||||
END FUNCTION getNodesRad
|
||||
|
|
@ -446,7 +430,7 @@ MODULE moduleMesh1DRad
|
|||
PURE FUNCTION phy2logRad(self, r) RESULT(xN)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(in):: self
|
||||
CLASS(meshCell1DRadSegm), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: r(1:3)
|
||||
REAL(8):: xN(1:3)
|
||||
|
||||
|
|
@ -459,7 +443,7 @@ MODULE moduleMesh1DRad
|
|||
SUBROUTINE nextElementRad(self, xi, nextElement)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(in):: self
|
||||
CLASS(meshCell1DRadSegm), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
CLASS(meshElement), POINTER, INTENT(out):: nextElement
|
||||
|
||||
|
|
@ -479,10 +463,10 @@ MODULE moduleMesh1DRad
|
|||
PURE FUNCTION detJ1DRad(self, xi, dPsi_in) RESULT(dJ)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRad), INTENT(in):: self
|
||||
CLASS(meshCell1DRad), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8), INTENT(in), OPTIONAL:: dPsi_in(1:,1:)
|
||||
REAL(8), ALLOCATABLE:: dPsi(:,:)
|
||||
REAL(8), INTENT(in), OPTIONAL:: dPsi_in(1:3,1:self%nNodes)
|
||||
REAL(8):: dPsi(1:3,1:self%nNodes)
|
||||
REAL(8):: dJ
|
||||
REAL(8):: dx(1)
|
||||
|
||||
|
|
@ -503,12 +487,12 @@ MODULE moduleMesh1DRad
|
|||
PURE FUNCTION invJ1DRad(self, xi, dPsi_in) RESULT(invJ)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRad), INTENT(in):: self
|
||||
CLASS(meshCell1DRad), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8), INTENT(in), OPTIONAL:: dPsi_in(1:,1:)
|
||||
REAL(8), ALLOCATABLE:: dPsi(:,:)
|
||||
REAL(8), INTENT(in), OPTIONAL:: dPsi_in(1:3,1:self%nNodes)
|
||||
REAL(8):: dPsi(1:3,1:self%nNodes)
|
||||
REAL(8):: dx(1)
|
||||
REAL(8):: invJ
|
||||
REAL(8):: invJ(1:3,1:3)
|
||||
|
||||
IF (PRESENT(dPsi_in)) THEN
|
||||
dPsi = dPsi_in
|
||||
|
|
@ -518,8 +502,11 @@ MODULE moduleMesh1DRad
|
|||
|
||||
END IF
|
||||
|
||||
invJ = 0.D0
|
||||
|
||||
CALL self%partialDer(dPsi, dx)
|
||||
invJ = 1.D0/dx(1)
|
||||
|
||||
invJ(1,1) = 1.D0/dx(1)
|
||||
|
||||
END FUNCTION invJ1DRad
|
||||
|
||||
|
|
@ -529,11 +516,11 @@ MODULE moduleMesh1DRad
|
|||
CLASS(meshGeneric), INTENT(inout):: self
|
||||
INTEGER:: e, et
|
||||
|
||||
DO e = 1, self%numVols
|
||||
DO e = 1, self%numCells
|
||||
!Connect Vol-Vol
|
||||
DO et = 1, self%numVols
|
||||
DO et = 1, self%numCells
|
||||
IF (e /= et) THEN
|
||||
CALL connectVolVol(self%vols(e)%obj, self%vols(et)%obj)
|
||||
CALL connectVolVol(self%cells(e)%obj, self%cells(et)%obj)
|
||||
|
||||
END IF
|
||||
|
||||
|
|
@ -543,7 +530,7 @@ MODULE moduleMesh1DRad
|
|||
TYPE IS(meshParticles)
|
||||
!Connect Vol-Edge
|
||||
DO et = 1, self%numEdges
|
||||
CALL connectVolEdge(self%vols(e)%obj, self%edges(et)%obj)
|
||||
CALL connectVolEdge(self%cells(e)%obj, self%edges(et)%obj)
|
||||
|
||||
END DO
|
||||
|
||||
|
|
@ -556,13 +543,13 @@ MODULE moduleMesh1DRad
|
|||
SUBROUTINE connectVolVol(elemA, elemB)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol), INTENT(inout):: elemA
|
||||
CLASS(meshVol), INTENT(inout):: elemB
|
||||
CLASS(meshCell), INTENT(inout):: elemA
|
||||
CLASS(meshCell), INTENT(inout):: elemB
|
||||
|
||||
SELECT TYPE(elemA)
|
||||
TYPE IS(meshVol1DRadSegm)
|
||||
TYPE IS(meshCell1DRadSegm)
|
||||
SELECT TYPE(elemB)
|
||||
TYPE IS(meshVol1DRadSegm)
|
||||
TYPE IS(meshCell1DRadSegm)
|
||||
CALL connectSegmSegm(elemA, elemB)
|
||||
|
||||
END SELECT
|
||||
|
|
@ -574,8 +561,8 @@ MODULE moduleMesh1DRad
|
|||
SUBROUTINE connectSegmSegm(elemA, elemB)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(inout), TARGET:: elemA
|
||||
CLASS(meshVol1DRadSegm), INTENT(inout), TARGET:: elemB
|
||||
CLASS(meshCell1DRadSegm), INTENT(inout), TARGET:: elemA
|
||||
CLASS(meshCell1DRadSegm), INTENT(inout), TARGET:: elemB
|
||||
|
||||
IF (.NOT. ASSOCIATED(elemA%e1) .AND. &
|
||||
elemA%n2%n == elemB%n1%n) THEN
|
||||
|
|
@ -597,11 +584,11 @@ MODULE moduleMesh1DRad
|
|||
SUBROUTINE connectVolEdge(elemA, elemB)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol), INTENT(inout):: elemA
|
||||
CLASS(meshCell), INTENT(inout):: elemA
|
||||
CLASS(meshEdge), INTENT(inout):: elemB
|
||||
|
||||
SELECT TYPE(elemA)
|
||||
TYPE IS (meshVol1DRadSegm)
|
||||
TYPE IS (meshCell1DRadSegm)
|
||||
SELECT TYPE(elemB)
|
||||
CLASS IS(meshEdge1DRad)
|
||||
CALL connectSegmEdge(elemA, elemB)
|
||||
|
|
@ -615,7 +602,7 @@ MODULE moduleMesh1DRad
|
|||
SUBROUTINE connectSegmEdge(elemA, elemB)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol1DRadSegm), INTENT(inout), TARGET:: elemA
|
||||
CLASS(meshCell1DRadSegm), INTENT(inout), TARGET:: elemA
|
||||
CLASS(meshEdge1DRad), INTENT(inout), TARGET:: elemB
|
||||
|
||||
IF (.NOT. ASSOCIATED(elemA%e1) .AND. &
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue