fPsi functions for edges

I need to make a common module for mesh, many functions for elements are
shared.

Also, try to reduce the 'select type' statements, but I don't know
enough Fortran for it.
This commit is contained in:
Jorge Gonzalez 2026-02-05 15:30:50 +01:00
commit fbbb0d5d13
7 changed files with 114 additions and 28 deletions

View file

@ -30,7 +30,7 @@ MODULE moduleMesh3DCart
PROCEDURE, PASS:: intersection => intersection3DCartTria
PROCEDURE, PASS:: randPos => randPosEdgeTria
!PARTICULAR PROCEDURES
PROCEDURE, NOPASS, PRIVATE:: fPsi => fPsiEdgeTria
PROCEDURE, NOPASS:: fPsi => fPsiTria
END TYPE meshEdge3DCartTria
@ -204,7 +204,7 @@ MODULE moduleMesh3DCart
Xi(2) = random( 0.D0, 1.D0 - Xi(1))
Xi(3) = 0.D0
fPsi = self%fPsi(Xi)
fPsi = self%fPsi(Xi, 3)
r = (/DOT_PRODUCT(fPsi, self%x), &
DOT_PRODUCT(fPsi, self%y), &
DOT_PRODUCT(fPsi, self%z)/)
@ -212,17 +212,18 @@ MODULE moduleMesh3DCart
END FUNCTION randPosEdgeTria
!Shape functions for triangular surface
PURE FUNCTION fPsiEdgeTria(Xi) RESULT(fPsi)
PURE FUNCTION fPsiTria(Xi, nNodes) RESULT(fPsi)
IMPLICIT NONE
REAL(8), INTENT(in):: Xi(1:3)
REAL(8):: fPsi(1:3)
INTEGER, INTENT(in):: nNodes
REAL(8):: fPsi(1:nNodes)
fPsi(1) = 1.D0 - Xi(1) - Xi(2)
fPsi(2) = Xi(1)
fPsi(3) = Xi(2)
END FUNCTION fPsiEdgeTria
END FUNCTION fPsiTria
!VOLUME FUNCTIONS
!TETRA FUNCTIONS