fPsi no longer allocates memory
I noticed that phy2logquad had a lot of overhead. Trying to reducing it by simplifying calls to fPsi, dPsi and such. The function for fPsi has been made so no memory is allocated and works under the assumption that the input array has the right size (1:numNodes)
This commit is contained in:
parent
c82cd50cf9
commit
0db76083ec
8 changed files with 408 additions and 409 deletions
|
|
@ -41,8 +41,8 @@ MODULE moduleMesh3DCart
|
|||
END TYPE meshVol3DCart
|
||||
|
||||
ABSTRACT INTERFACE
|
||||
PURE FUNCTION dPsi_interface(xii) RESULT(dPsi)
|
||||
REAL(8), INTENT(in):: xii(1:3)
|
||||
PURE FUNCTION dPsi_interface(Xi) RESULT(dPsi)
|
||||
REAL(8), INTENT(in):: Xi(1:3)
|
||||
REAL(8), ALLOCATABLE:: dPsi(:,:)
|
||||
|
||||
END FUNCTION dPsi_interface
|
||||
|
|
@ -71,8 +71,8 @@ MODULE moduleMesh3DCart
|
|||
PROCEDURE, PASS:: calcVol => volumeTetra
|
||||
PROCEDURE, NOPASS:: fPsi => fPsiTetra
|
||||
PROCEDURE, NOPASS:: dPsi => dPsiTetra
|
||||
PROCEDURE, NOPASS:: dPsiXi1 => dPsiTetraXii1
|
||||
PROCEDURE, NOPASS:: dPsiXi2 => dPsiTetraXii2
|
||||
PROCEDURE, NOPASS:: dPsiXi1 => dPsiTetraXi1
|
||||
PROCEDURE, NOPASS:: dPsiXi2 => dPsiTetraXi2
|
||||
PROCEDURE, PASS:: partialDer => partialDerTetra
|
||||
PROCEDURE, PASS:: elemK => elemKTetra
|
||||
PROCEDURE, PASS:: elemF => elemFTetra
|
||||
|
|
@ -213,14 +213,14 @@ MODULE moduleMesh3DCart
|
|||
|
||||
CLASS(meshEdge3DCartTria), INTENT(in):: self
|
||||
REAL(8):: r(1:3)
|
||||
REAL(8):: xii(1:3)
|
||||
REAL(8):: Xi(1:3)
|
||||
REAL(8):: fPsi(1:3)
|
||||
|
||||
xii(1) = random( 0.D0, 1.D0)
|
||||
xii(2) = random( 0.D0, 1.D0 - xii(1))
|
||||
xii(3) = 0.D0
|
||||
Xi(1) = random( 0.D0, 1.D0)
|
||||
Xi(2) = random( 0.D0, 1.D0 - Xi(1))
|
||||
Xi(3) = 0.D0
|
||||
|
||||
fPsi = self%fPsi(xii)
|
||||
fPsi = self%fPsi(Xi)
|
||||
r = (/DOT_PRODUCT(fPsi, self%x), &
|
||||
DOT_PRODUCT(fPsi, self%y), &
|
||||
DOT_PRODUCT(fPsi, self%z)/)
|
||||
|
|
@ -228,17 +228,17 @@ MODULE moduleMesh3DCart
|
|||
END FUNCTION randPosEdgeTria
|
||||
|
||||
!Shape functions for triangular surface
|
||||
PURE FUNCTION fPsiEdgeTria(xii) RESULT(fPsi)
|
||||
PURE FUNCTION fPsiEdgeTria(Xi) RESULT(fPsi)
|
||||
IMPLICIT NONE
|
||||
|
||||
REAL(8), INTENT(in):: xii(1:3)
|
||||
REAL(8), INTENT(in):: Xi(1:3)
|
||||
REAL(8), ALLOCATABLE:: fPsi(:)
|
||||
|
||||
ALLOCATE(fPsi(1:3))
|
||||
|
||||
fPsi(1) = 1.D0 - xii(1) - xii(2)
|
||||
fPsi(2) = xii(1)
|
||||
fPsi(3) = xii(2)
|
||||
fPsi(1) = 1.D0 - Xi(1) - Xi(2)
|
||||
fPsi(2) = Xi(1)
|
||||
fPsi(3) = Xi(2)
|
||||
|
||||
END FUNCTION fPsiEdgeTria
|
||||
|
||||
|
|
@ -254,6 +254,7 @@ MODULE moduleMesh3DCart
|
|||
INTEGER, INTENT(in):: p(:)
|
||||
TYPE(meshNodeCont), INTENT(in), TARGET:: nodes(:)
|
||||
REAL(8), DIMENSION(1:3):: r1, r2, r3, r4 !Positions of each node
|
||||
REAL(8):: Xi(1:3), fPsi(1:4)
|
||||
REAL(8):: volNodes(1:4) !Volume of each node
|
||||
|
||||
self%n = n
|
||||
|
|
@ -274,8 +275,9 @@ MODULE moduleMesh3DCart
|
|||
CALL self%calcVol()
|
||||
|
||||
!Assign proportional volume to each node
|
||||
!TODO: Review this to apply to all elements in the future
|
||||
volNodes = self%fPsi((/0.25D0, 0.25D0, 0.25D0/))*self%volume
|
||||
Xi = (/0.25D0, 0.25D0, 0.25D0/)
|
||||
CALL self%fPsi(Xi, fPsi)
|
||||
volNodes = fPsi*self%volume
|
||||
self%n1%v = self%n1%v + volNodes(1)
|
||||
self%n2%v = self%n2%v + volNodes(2)
|
||||
self%n3%v = self%n3%v + volNodes(3)
|
||||
|
|
@ -295,19 +297,18 @@ MODULE moduleMesh3DCart
|
|||
|
||||
CLASS(meshVol3DCartTetra), INTENT(in):: self
|
||||
REAL(8):: r(1:3)
|
||||
REAL(8):: xii(1:3)
|
||||
REAL(8), ALLOCATABLE:: fPsi(:)
|
||||
REAL(8):: Xi(1:3)
|
||||
REAL(8):: fPsi(1:4)
|
||||
|
||||
xii(1) = random( 0.D0, 1.D0)
|
||||
xii(2) = random( 0.D0, 1.D0 - xii(1))
|
||||
xii(3) = random( 0.D0, 1.D0 - xii(1) - xii(2))
|
||||
Xi(1) = random( 0.D0, 1.D0)
|
||||
Xi(2) = random( 0.D0, 1.D0 - Xi(1))
|
||||
Xi(3) = random( 0.D0, 1.D0 - Xi(1) - Xi(2))
|
||||
|
||||
ALLOCATE(fPsi(1:4))
|
||||
fPsi = self%fPsi(xii)
|
||||
CALL self%fPsi(Xi, fPsi)
|
||||
|
||||
r(1) = DOT_PRODUCT(fPsi, self%x)
|
||||
r(2) = DOT_PRODUCT(fPsi, self%y)
|
||||
r(3) = DOT_PRODUCT(fPsi, self%z)
|
||||
r = (/ DOT_PRODUCT(fPsi, self%x), &
|
||||
DOT_PRODUCT(fPsi, self%y), &
|
||||
DOT_PRODUCT(fPsi, self%z) /)
|
||||
|
||||
END FUNCTION randPosVolTetra
|
||||
|
||||
|
|
@ -316,83 +317,81 @@ MODULE moduleMesh3DCart
|
|||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol3DCartTetra), INTENT(inout):: self
|
||||
REAL(8):: xii(1:3)
|
||||
REAL(8):: Xi(1:3)
|
||||
|
||||
self%volume = 0.D0
|
||||
xii = (/0.25D0, 0.25D0, 0.25D0/)
|
||||
self%volume = self%detJac(xii)
|
||||
Xi = (/0.25D0, 0.25D0, 0.25D0/)
|
||||
self%volume = self%detJac(Xi)
|
||||
|
||||
END SUBROUTINE volumeTetra
|
||||
|
||||
!Computes element functions in point xii
|
||||
PURE FUNCTION fPsiTetra(xi) RESULT(fPsi)
|
||||
!Computes element functions in point Xi
|
||||
PURE SUBROUTINE fPsiTetra(Xi, fPsi)
|
||||
IMPLICIT NONE
|
||||
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8), ALLOCATABLE:: fPsi(:)
|
||||
REAL(8), INTENT(in):: Xi(1:3)
|
||||
REAL(8), INTENT(out):: fPsi(:)
|
||||
|
||||
ALLOCATE(fPsi(1:4))
|
||||
fPsi(1) = 1.D0 - Xi(1) - Xi(2) - Xi(3)
|
||||
fPsi(2) = Xi(1)
|
||||
fPsi(3) = Xi(2)
|
||||
fPsi(4) = Xi(3)
|
||||
|
||||
fPsi(1) = 1.D0 - xi(1) - xi(2) - xi(3)
|
||||
fPsi(2) = xi(1)
|
||||
fPsi(3) = xi(2)
|
||||
fPsi(4) = xi(3)
|
||||
END SUBROUTINE fPsiTetra
|
||||
|
||||
END FUNCTION fPsiTetra
|
||||
|
||||
!Derivative element function at coordinates xii
|
||||
PURE FUNCTION dPsiTetra(xii) RESULT(dPsi)
|
||||
!Derivative element function at coordinates Xi
|
||||
PURE FUNCTION dPsiTetra(Xi) RESULT(dPsi)
|
||||
IMPLICIT NONE
|
||||
|
||||
REAL(8), INTENT(in):: xii(1:3)
|
||||
REAL(8), INTENT(in):: Xi(1:3)
|
||||
REAL(8), ALLOCATABLE:: dPsi(:,:)
|
||||
|
||||
ALLOCATE(dPsi(1:3,1:4))
|
||||
|
||||
dPsi(1,:) = dPsiTetraXii1(xii(2), xii(3))
|
||||
dPsi(2,:) = dPsiTetraXii2(xii(1), xii(3))
|
||||
dPsi(3,:) = dPsiTetraXii3(xii(1), xii(2))
|
||||
dPsi(1,:) = dPsiTetraXi1(Xi(2), Xi(3))
|
||||
dPsi(2,:) = dPsiTetraXi2(Xi(1), Xi(3))
|
||||
dPsi(3,:) = dPsiTetraXi3(Xi(1), Xi(2))
|
||||
|
||||
END FUNCTION dPsiTetra
|
||||
|
||||
!Derivative element function respect to xii1
|
||||
PURE FUNCTION dPsiTetraXii1(xii2, xii3) RESULT(dPsiXii1)
|
||||
!Derivative element function respect to Xi1
|
||||
PURE FUNCTION dPsiTetraXi1(Xi2, Xi3) RESULT(dPsiXi1)
|
||||
IMPLICIT NONE
|
||||
REAL(8), INTENT(in):: xii2, xii3
|
||||
REAL(8):: dPsiXii1(1:4)
|
||||
REAL(8), INTENT(in):: Xi2, Xi3
|
||||
REAL(8):: dPsiXi1(1:4)
|
||||
|
||||
dPsiXii1(1) = -1.D0
|
||||
dPsiXii1(2) = 1.D0
|
||||
dPsiXii1(3) = 0.D0
|
||||
dPsiXii1(4) = 0.D0
|
||||
dPsiXi1(1) = -1.D0
|
||||
dPsiXi1(2) = 1.D0
|
||||
dPsiXi1(3) = 0.D0
|
||||
dPsiXi1(4) = 0.D0
|
||||
|
||||
END FUNCTION dPsiTetraXii1
|
||||
END FUNCTION dPsiTetraXi1
|
||||
|
||||
!Derivative element function respect to xii2
|
||||
PURE FUNCTION dPsiTetraXii2(xii1, xii3) RESULT(dPsiXii2)
|
||||
!Derivative element function respect to Xi2
|
||||
PURE FUNCTION dPsiTetraXi2(Xi1, Xi3) RESULT(dPsiXi2)
|
||||
IMPLICIT NONE
|
||||
REAL(8), INTENT(in):: xii1, xii3
|
||||
REAL(8):: dPsiXii2(1:4)
|
||||
REAL(8), INTENT(in):: Xi1, Xi3
|
||||
REAL(8):: dPsiXi2(1:4)
|
||||
|
||||
dPsiXii2(1) = -1.D0
|
||||
dPsiXii2(2) = 0.D0
|
||||
dPsiXii2(3) = 1.D0
|
||||
dPsiXii2(4) = 0.D0
|
||||
dPsiXi2(1) = -1.D0
|
||||
dPsiXi2(2) = 0.D0
|
||||
dPsiXi2(3) = 1.D0
|
||||
dPsiXi2(4) = 0.D0
|
||||
|
||||
END FUNCTION dPsiTetraXii2
|
||||
END FUNCTION dPsiTetraXi2
|
||||
|
||||
!Derivative element function respect to xii3
|
||||
PURE FUNCTION dPsiTetraXii3(xii1, xii2) RESULT(dPsiXii3)
|
||||
!Derivative element function respect to Xi3
|
||||
PURE FUNCTION dPsiTetraXi3(Xi1, Xi2) RESULT(dPsiXi3)
|
||||
IMPLICIT NONE
|
||||
REAL(8), INTENT(in):: xii1, xii2
|
||||
REAL(8):: dPsiXii3(1:4)
|
||||
REAL(8), INTENT(in):: Xi1, Xi2
|
||||
REAL(8):: dPsiXi3(1:4)
|
||||
|
||||
dPsiXii3(1) = -1.D0
|
||||
dPsiXii3(2) = 0.D0
|
||||
dPsiXii3(3) = 0.D0
|
||||
dPsiXii3(4) = 1.D0
|
||||
dPsiXi3(1) = -1.D0
|
||||
dPsiXi3(2) = 0.D0
|
||||
dPsiXi3(3) = 0.D0
|
||||
dPsiXi3(4) = 1.D0
|
||||
|
||||
END FUNCTION dPsiTetraXii3
|
||||
END FUNCTION dPsiTetraXi3
|
||||
|
||||
!Computes the derivatives in global coordinates
|
||||
PURE SUBROUTINE partialDerTetra(self, dPsi, dx, dy, dz)
|
||||
|
|
@ -421,19 +420,19 @@ MODULE moduleMesh3DCart
|
|||
|
||||
CLASS(meshVol3DCartTetra), INTENT(in):: self
|
||||
REAL(8), ALLOCATABLE:: localK(:,:)
|
||||
REAL(8):: xii(1:3)
|
||||
REAL(8):: Xi(1:3)
|
||||
REAL(8):: fPsi(1:4), dPsi(1:3, 1:4)
|
||||
REAL(8):: invJ(1:3,1:3), detJ
|
||||
|
||||
ALLOCATE(localK(1:4,1:4))
|
||||
localK = 0.D0
|
||||
xii = 0.D0
|
||||
Xi = 0.D0
|
||||
!TODO: One point Gauss integral. Upgrade when possible
|
||||
xii = (/ 0.25D0, 0.25D0, 0.25D0 /)
|
||||
dPsi = self%dPsi(xii)
|
||||
detJ = self%detJac(xii, dPsi)
|
||||
invJ = self%invJac(xii, dPsi)
|
||||
fPsi = self%fPsi(xii)
|
||||
Xi = (/ 0.25D0, 0.25D0, 0.25D0 /)
|
||||
dPsi = self%dPsi(Xi)
|
||||
detJ = self%detJac(Xi, dPsi)
|
||||
invJ = self%invJac(Xi, dPsi)
|
||||
CALL self%fPsi(Xi, fPsi)
|
||||
localK = MATMUL(TRANSPOSE(MATMUL(invJ,dPsi)),MATMUL(invJ,dPsi))*1.D0/detJ
|
||||
|
||||
END FUNCTION elemKTetra
|
||||
|
|
@ -445,40 +444,40 @@ MODULE moduleMesh3DCart
|
|||
REAL(8), INTENT(in):: source(1:)
|
||||
REAL(8), ALLOCATABLE:: localF(:)
|
||||
REAL(8):: fPsi(1:4), dPsi(1:3, 1:4)
|
||||
REAL(8):: xii(1:3)
|
||||
REAL(8):: Xi(1:3)
|
||||
REAL(8):: detJ, f
|
||||
|
||||
ALLOCATE(localF(1:4))
|
||||
|
||||
localF = 0.D0
|
||||
xii = 0.D0
|
||||
!TODO: One point Gauss integral. Upgrade when possible
|
||||
xii = (/ 0.25D0, 0.25D0, 0.25D0 /)
|
||||
dPsi = self%dPsi(xii)
|
||||
detJ = self%detJac(xii, dPsi)
|
||||
fPsi = self%fPsi(xii)
|
||||
Xi = 0.D0
|
||||
Xi = (/ 0.25D0, 0.25D0, 0.25D0 /)
|
||||
dPsi = self%dPsi(Xi)
|
||||
detJ = self%detJac(Xi, dPsi)
|
||||
CALL self%fPsi(Xi, fPsi)
|
||||
f = DOT_PRODUCT(fPsi, source)
|
||||
localF = f*fPsi*1.D0*detJ
|
||||
|
||||
END FUNCTION elemFTetra
|
||||
|
||||
PURE FUNCTION insideTetra(xi) RESULT(ins)
|
||||
PURE FUNCTION insideTetra(Xi) RESULT(ins)
|
||||
IMPLICIT NONE
|
||||
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8), INTENT(in):: Xi(1:3)
|
||||
LOGICAL:: ins
|
||||
|
||||
ins = xi(1) >= 0.D0 .AND. &
|
||||
xi(2) >= 0.D0 .AND. &
|
||||
xi(3) >= 0.D0 .AND. &
|
||||
1.D0 - xi(1) - xi(2) - xi(3) >= 0.D0
|
||||
ins = Xi(1) >= 0.D0 .AND. &
|
||||
Xi(2) >= 0.D0 .AND. &
|
||||
Xi(3) >= 0.D0 .AND. &
|
||||
1.D0 - Xi(1) - Xi(2) - Xi(3) >= 0.D0
|
||||
|
||||
END FUNCTION insideTetra
|
||||
|
||||
PURE FUNCTION gatherEFTetra(self, xi) RESULT(EF)
|
||||
PURE FUNCTION gatherEFTetra(self, Xi) RESULT(EF)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol3DCartTetra), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8), INTENT(in):: Xi(1:3)
|
||||
REAL(8):: dPsi(1:3, 1:4)
|
||||
REAL(8):: dPsiR(1:3, 1:4)
|
||||
REAL(8):: invJ(1:3, 1:3), detJ
|
||||
|
|
@ -490,9 +489,9 @@ MODULE moduleMesh3DCart
|
|||
self%n3%emData%phi, &
|
||||
self%n4%emData%phi /)
|
||||
|
||||
dPsi = self%dPsi(xi)
|
||||
detJ = self%detJac(xi, dPsi)
|
||||
invJ = self%invJac(xi, dPsi)
|
||||
dPsi = self%dPsi(Xi)
|
||||
detJ = self%detJac(Xi, dPsi)
|
||||
invJ = self%invJac(Xi, dPsi)
|
||||
dPsiR = MATMUL(invJ, dPsi)/detJ
|
||||
EF(1) = -DOT_PRODUCT(dPsiR(1,:), phi)
|
||||
EF(2) = -DOT_PRODUCT(dPsiR(2,:), phi)
|
||||
|
|
@ -500,11 +499,11 @@ MODULE moduleMesh3DCart
|
|||
|
||||
END FUNCTION gatherEFTetra
|
||||
|
||||
PURE FUNCTION gatherMFTetra(self, xi) RESULT(MF)
|
||||
PURE FUNCTION gatherMFTetra(self, Xi) RESULT(MF)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol3DCartTetra), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8), INTENT(in):: Xi(1:3)
|
||||
REAL(8):: fPsi(1:4)
|
||||
REAL(8):: MF_Nodes(1:4,1:3)
|
||||
REAL(8):: MF(1:3)
|
||||
|
|
@ -522,7 +521,7 @@ MODULE moduleMesh3DCart
|
|||
self%n3%emData%B(3), &
|
||||
self%n4%emData%B(3) /)
|
||||
|
||||
fPsi = self%fPsi(xi)
|
||||
CALL self%fPsi(Xi, fPsi)
|
||||
MF = MATMUL(fPsi, MF_Nodes)
|
||||
|
||||
END FUNCTION gatherMFTetra
|
||||
|
|
@ -538,37 +537,37 @@ MODULE moduleMesh3DCart
|
|||
|
||||
END FUNCTION getNodesTetra
|
||||
|
||||
PURE FUNCTION phy2logTetra(self,r) RESULT(xi)
|
||||
PURE FUNCTION phy2logTetra(self,r) RESULT(Xi)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol3DCartTetra), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: r(1:3)
|
||||
REAL(8):: xi(1:3)
|
||||
REAL(8):: Xi(1:3)
|
||||
REAL(8):: invJ(1:3, 1:3), detJ
|
||||
REAL(8):: deltaR(1:3)
|
||||
REAL(8):: dPsi(1:3, 1:4)
|
||||
|
||||
xi = 0.D0
|
||||
Xi = 0.D0
|
||||
deltaR = (/r(1) - self%x(1), r(2) - self%y(1), r(3) - self%z(1) /)
|
||||
dPsi = self%dPsi(xi)
|
||||
invJ = self%invJac(xi, dPsi)
|
||||
detJ = self%detJac(xi, dPsi)
|
||||
xi = MATMUL(invJ, deltaR)/detJ
|
||||
dPsi = self%dPsi(Xi)
|
||||
invJ = self%invJac(Xi, dPsi)
|
||||
detJ = self%detJac(Xi, dPsi)
|
||||
Xi = MATMUL(invJ, deltaR)/detJ
|
||||
|
||||
END FUNCTION phy2logTetra
|
||||
|
||||
SUBROUTINE nextElementTetra(self, xi, nextElement)
|
||||
SUBROUTINE nextElementTetra(self, Xi, nextElement)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol3DCartTetra), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8), INTENT(in):: Xi(1:3)
|
||||
CLASS(meshElement), POINTER, INTENT(out):: nextElement
|
||||
REAL(8):: xiArray(1:4)
|
||||
REAL(8):: XiArray(1:4)
|
||||
INTEGER:: nextInt
|
||||
|
||||
!TODO: Review when connectivity
|
||||
xiArray = (/ xi(3), 1.D0 - xi(1) - xi(2) - xi(3), xi(2), xi(1) /)
|
||||
nextInt = MINLOC(xiArray, 1)
|
||||
XiArray = (/ Xi(3), 1.D0 - Xi(1) - Xi(2) - Xi(3), Xi(2), Xi(1) /)
|
||||
nextInt = MINLOC(XiArray, 1)
|
||||
NULLIFY(nextElement)
|
||||
SELECT CASE(nextInt)
|
||||
CASE (1)
|
||||
|
|
@ -585,11 +584,11 @@ MODULE moduleMesh3DCart
|
|||
|
||||
!COMMON FUNCTIONS FOR CARTESIAN VOLUME ELEMENTS IN 3D
|
||||
!Computes element Jacobian determinant
|
||||
PURE FUNCTION detJ3DCart(self, xi, dPsi_in) RESULT(dJ)
|
||||
PURE FUNCTION detJ3DCart(self, Xi, dPsi_in) RESULT(dJ)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol3DCart), INTENT(in)::self
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8), INTENT(in):: Xi(1:3)
|
||||
REAL(8), INTENT(in), OPTIONAL:: dPsi_in(1:, 1:)
|
||||
REAL(8):: dJ
|
||||
REAL(8), ALLOCATABLE:: dPsi(:,:)
|
||||
|
|
@ -599,7 +598,7 @@ MODULE moduleMesh3DCart
|
|||
dPsi = dPsi_in
|
||||
|
||||
ELSE
|
||||
dPsi = self%dPsi(xi)
|
||||
dPsi = self%dPsi(Xi)
|
||||
|
||||
END IF
|
||||
|
||||
|
|
@ -610,11 +609,11 @@ MODULE moduleMesh3DCart
|
|||
|
||||
END FUNCTION detJ3DCart
|
||||
|
||||
PURE FUNCTION invJ3DCart(self,xi,dPsi_in) RESULT(invJ)
|
||||
PURE FUNCTION invJ3DCart(self,Xi,dPsi_in) RESULT(invJ)
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol3DCart), INTENT(in):: self
|
||||
REAL(8), INTENT(in):: xi(1:3)
|
||||
REAL(8), INTENT(in):: Xi(1:3)
|
||||
REAL(8), INTENT(in), OPTIONAL:: dPsi_in(1:,1:)
|
||||
REAL(8), ALLOCATABLE:: dPsi(:,:)
|
||||
REAL(8), DIMENSION(1:3):: dx, dy, dz
|
||||
|
|
@ -624,7 +623,7 @@ MODULE moduleMesh3DCart
|
|||
dPsi=dPsi_in
|
||||
|
||||
ELSE
|
||||
dPsi = self%dPsi(xi)
|
||||
dPsi = self%dPsi(Xi)
|
||||
|
||||
END IF
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue