Common scatter subroutine
All subroutines of scattering particle properties to the nodes of a volume have been converged into one in moduleMesh.
This commit is contained in:
parent
d613f80c0d
commit
35bd61fda9
9 changed files with 39 additions and 408 deletions
|
|
@ -76,9 +76,7 @@ MODULE moduleMesh3DCart
|
|||
PROCEDURE, PASS:: partialDer => partialDerTetra
|
||||
PROCEDURE, PASS:: elemK => elemKTetra
|
||||
PROCEDURE, PASS:: elemF => elemFTetra
|
||||
PROCEDURE, NOPASS:: weight => weightTetra
|
||||
PROCEDURE, NOPASS:: inside => insideTetra
|
||||
PROCEDURE, PASS:: scatter => scatterTetra
|
||||
PROCEDURE, PASS:: gatherEF => gatherEFTetra
|
||||
PROCEDURE, PASS:: getNodes => getNodesTetra
|
||||
PROCEDURE, PASS:: phy2log => phy2logTetra
|
||||
|
|
@ -459,15 +457,6 @@ MODULE moduleMesh3DCart
|
|||
|
||||
END FUNCTION elemFTetra
|
||||
|
||||
PURE FUNCTION weightTetra(xii) RESULT(w)
|
||||
IMPLICIT NONE
|
||||
REAL(8), INTENT(in):: xii(1:3)
|
||||
REAL(8), ALLOCATABLE:: w(:)
|
||||
|
||||
w = fPsiTetra(xii)
|
||||
|
||||
END FUNCTION weightTetra
|
||||
|
||||
PURE FUNCTION insideTetra(xi) RESULT(ins)
|
||||
IMPLICIT NONE
|
||||
|
||||
|
|
@ -481,53 +470,6 @@ MODULE moduleMesh3DCart
|
|||
|
||||
END FUNCTION insideTetra
|
||||
|
||||
SUBROUTINE scatterTetra(self, part)
|
||||
USE moduleMath
|
||||
USE moduleSpecies
|
||||
USE OMP_LIB
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshVol3DCartTetra), INTENT(in):: self
|
||||
CLASS(particle), INTENT(in):: part
|
||||
REAL(8):: w_p(1:4)
|
||||
REAL(8):: tensorS(1:3, 1:3)
|
||||
CLASS(meshNode), POINTER:: node
|
||||
INTEGER:: sp
|
||||
|
||||
w_p = self%weight(part%xi)
|
||||
tensorS = outerProduct(part%v, part%v)
|
||||
|
||||
sp = part%species%n
|
||||
node => self%n1
|
||||
CALL OMP_SET_LOCK(node%lock)
|
||||
node%output(sp)%den = node%output(sp)%den + part%weight*w_p(1)
|
||||
node%output(sp)%mom(:) = node%output(sp)%mom(:) + part%weight*w_p(1)*part%v(:)
|
||||
node%output(sp)%tensorS(:,:) = node%output(sp)%tensorS(:,:) + part%weight*w_p(1)*tensorS
|
||||
CALL OMP_UNSET_LOCK(node%lock)
|
||||
|
||||
node => self%n2
|
||||
CALL OMP_SET_LOCK(node%lock)
|
||||
node%output(sp)%den = node%output(sp)%den + part%weight*w_p(2)
|
||||
node%output(sp)%mom(:) = node%output(sp)%mom(:) + part%weight*w_p(2)*part%v(:)
|
||||
node%output(sp)%tensorS(:,:) = node%output(sp)%tensorS(:,:) + part%weight*w_p(2)*tensorS
|
||||
CALL OMP_UNSET_LOCK(node%lock)
|
||||
|
||||
node => self%n3
|
||||
CALL OMP_SET_LOCK(node%lock)
|
||||
node%output(sp)%den = node%output(sp)%den + part%weight*w_p(3)
|
||||
node%output(sp)%mom(:) = node%output(sp)%mom(:) + part%weight*w_p(3)*part%v(:)
|
||||
node%output(sp)%tensorS(:,:) = node%output(sp)%tensorS(:,:) + part%weight*w_p(3)*tensorS
|
||||
CALL OMP_UNSET_LOCK(node%lock)
|
||||
|
||||
node => self%n4
|
||||
CALL OMP_SET_LOCK(node%lock)
|
||||
node%output(sp)%den = node%output(sp)%den + part%weight*w_p(4)
|
||||
node%output(sp)%mom(:) = node%output(sp)%mom(:) + part%weight*w_p(4)*part%v(:)
|
||||
node%output(sp)%tensorS(:,:) = node%output(sp)%tensorS(:,:) + part%weight*w_p(4)*tensorS
|
||||
CALL OMP_UNSET_LOCK(node%lock)
|
||||
|
||||
END SUBROUTINE scatterTetra
|
||||
|
||||
PURE FUNCTION gatherEFTetra(self, xi) RESULT(EF)
|
||||
IMPLICIT NONE
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue