Method to divide collisions from a collisional iteration into multiple

pushing iterations.
This commit is contained in:
Jorge Gonzalez 2021-01-02 12:50:22 +01:00
commit 4ba08e74af
7 changed files with 110 additions and 64 deletions

View file

@ -369,7 +369,7 @@ MODULE moduleMeshCyl
!Computes element area
PURE SUBROUTINE areaQuad(self)
USE moduleConstParam
USE moduleConstParam, ONLY: PI8
IMPLICIT NONE
CLASS(meshVolCylQuad), INTENT(inout):: self
@ -381,7 +381,7 @@ MODULE moduleMeshCyl
self%arNodes = 0.D0
!2D 1 point Gauss Quad Integral
xi = 0.D0
detJ = self%detJac(xi)*8.D0*PI !4*2*pi
detJ = self%detJac(xi)*PI8 !4*2*pi
fPsi = self%fPsi(xi)
r = DOT_PRODUCT(fPsi,self%r)
self%volume = r*detJ
@ -466,7 +466,7 @@ MODULE moduleMeshCyl
!Computes element local stiffness matrix
PURE FUNCTION elemKQuad(self) RESULT(ke)
USE moduleConstParam, ONLY: PI
USE moduleConstParam, ONLY: PI2
IMPLICIT NONE
CLASS(meshVolCylQuad), INTENT(in):: self
@ -493,13 +493,13 @@ MODULE moduleMeshCyl
END DO
END DO
ke = ke*2.D0*PI
ke = ke*PI2
END FUNCTION elemKQuad
!Computes the local source vector for a force f
PURE FUNCTION elemFQuad(self, source) RESULT(localF)
USE moduleConstParam
USE moduleConstParam, ONLY: PI2
IMPLICIT NONE
CLASS(meshVolCylQuad), INTENT(in):: self
@ -525,7 +525,7 @@ MODULE moduleMeshCyl
END DO
END DO
localF = localF*2.D0*PI
localF = localF*PI2
END FUNCTION elemFQuad
@ -760,7 +760,7 @@ MODULE moduleMeshCyl
!Calculates area for triangular element
PURE SUBROUTINE areaTria(self)
USE moduleConstParam
USE moduleConstParam, ONLY: PI
IMPLICIT NONE
CLASS(meshVolCylTria), INTENT(inout):: self
@ -851,7 +851,7 @@ MODULE moduleMeshCyl
!Computes element local stiffness matrix
PURE FUNCTION elemKTria(self) RESULT(ke)
USE moduleConstParam
USE moduleConstParam, ONLY: PI2
IMPLICIT NONE
CLASS(meshVolCylTria), INTENT(in):: self
@ -875,13 +875,13 @@ MODULE moduleMeshCyl
ke = ke + MATMUL(TRANSPOSE(MATMUL(invJ,dPsi)),MATMUL(invJ,dPsi))*r*wTria(l)/detJ
END DO
ke = ke*2.D0*PI
ke = ke*PI2
END FUNCTION elemKTria
!Computes element local source vector
PURE FUNCTION elemFTria(self, source) RESULT(localF)
USE moduleConstParam
USE moduleConstParam, ONLY: PI2
IMPLICIT NONE
CLASS(meshVolCylTria), INTENT(in):: self
@ -906,7 +906,7 @@ MODULE moduleMeshCyl
localF = localF + r*f*fPsi*wTria(l)*detJ
END DO
localF = localF*2.D0*PI
localF = localF*PI2
END FUNCTION elemFTria