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
|
|
@ -41,8 +41,8 @@ MODULE moduleMeshInput0D
|
|||
self%numNodes = 1
|
||||
ALLOCATE(self%nodes(1:1))
|
||||
!Allocates one volume
|
||||
self%numVols = 1
|
||||
ALLOCATE(self%vols(1:1))
|
||||
self%numCells = 1
|
||||
ALLOCATE(self%cells(1:1))
|
||||
!Allocates matrix K
|
||||
SELECT TYPE(self)
|
||||
TYPE IS(meshParticles)
|
||||
|
|
@ -59,8 +59,8 @@ MODULE moduleMeshInput0D
|
|||
CALL self%nodes(1)%obj%init(1, r)
|
||||
|
||||
!Creates the volume
|
||||
ALLOCATE(meshVol0D:: self%vols(1)%obj)
|
||||
CALL self%vols(1)%obj%init(1, (/ 1/), self%nodes)
|
||||
ALLOCATE(meshCell0D:: self%cells(1)%obj)
|
||||
CALL self%cells(1)%obj%init(1, (/ 1/), self%nodes)
|
||||
|
||||
END SUBROUTINE read0D
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ MODULE moduleMeshOutput0D
|
|||
END IF
|
||||
|
||||
OPEN(20, file = path // folder // '/' // fileName, position = 'append', action = 'write')
|
||||
WRITE(20, "(ES20.6E3, 10I20)") REAL(t)*tauMin*ti_ref, (self%vols(1)%obj%tallyColl(k)%tally, k=1,nCollPairs)
|
||||
WRITE(20, "(ES20.6E3, 10I20)") REAL(t)*tauMin*ti_ref, (self%cells(1)%obj%tallyColl(k)%tally, k=1,nCollPairs)
|
||||
CLOSE(20)
|
||||
|
||||
END SUBROUTINE printColl0D
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ MODULE moduleMeshInputGmsh2
|
|||
|
||||
!Substract the number of edges to the total number of elements
|
||||
!to obtain the number of volume elements
|
||||
self%numVols = TotalnumElem - self%numEdges
|
||||
self%numCells = TotalnumElem - self%numEdges
|
||||
ALLOCATE(self%edges(1:self%numEdges))
|
||||
numEdges = self%numEdges
|
||||
|
||||
|
|
@ -146,13 +146,13 @@ MODULE moduleMeshInputGmsh2
|
|||
END DO
|
||||
|
||||
TYPE IS(meshCollisions)
|
||||
self%numVols = TotalnumElem
|
||||
self%numCells = TotalnumElem
|
||||
numEdges = 0
|
||||
|
||||
END SELECT
|
||||
|
||||
!Allocates arrays
|
||||
ALLOCATE(self%vols(1:self%numVols))
|
||||
ALLOCATE(self%cells(1:self%numCells))
|
||||
|
||||
SELECT TYPE(self)
|
||||
TYPE IS(meshParticles)
|
||||
|
|
@ -232,7 +232,7 @@ MODULE moduleMeshInputGmsh2
|
|||
END SELECT
|
||||
|
||||
!Read and initialize volumes
|
||||
DO e = 1, self%numVols
|
||||
DO e = 1, self%numCells
|
||||
!Reads the volume according to the geometry
|
||||
SELECT CASE(self%dimen)
|
||||
CASE(3)
|
||||
|
|
@ -244,7 +244,7 @@ MODULE moduleMeshInputGmsh2
|
|||
!Tetrahedron element
|
||||
ALLOCATE(p(1:4))
|
||||
READ(10, *) n, elemType, eTemp, eTemp, eTemp, p(1:4)
|
||||
ALLOCATE(meshVol3DCartTetra:: self%vols(e)%obj)
|
||||
ALLOCATE(meshCell3DCartTetra:: self%cells(e)%obj)
|
||||
|
||||
END SELECT
|
||||
|
||||
|
|
@ -259,13 +259,13 @@ MODULE moduleMeshInputGmsh2
|
|||
!Triangular element
|
||||
ALLOCATE(p(1:3))
|
||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:3)
|
||||
ALLOCATE(meshVol2DCylTria:: self%vols(e)%obj)
|
||||
ALLOCATE(meshCell2DCylTria:: self%cells(e)%obj)
|
||||
|
||||
CASE (3)
|
||||
!Quadrilateral element
|
||||
ALLOCATE(p(1:4))
|
||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:4)
|
||||
ALLOCATE(meshVol2DCylQuad:: self%vols(e)%obj)
|
||||
ALLOCATE(meshCell2DCylQuad:: self%cells(e)%obj)
|
||||
|
||||
END SELECT
|
||||
|
||||
|
|
@ -278,13 +278,13 @@ MODULE moduleMeshInputGmsh2
|
|||
!Triangular element
|
||||
ALLOCATE(p(1:3))
|
||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:3)
|
||||
ALLOCATE(meshVol2DCartTria:: self%vols(e)%obj)
|
||||
ALLOCATE(meshCell2DCartTria:: self%cells(e)%obj)
|
||||
|
||||
CASE (3)
|
||||
!Quadrilateral element
|
||||
ALLOCATE(p(1:4))
|
||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:4)
|
||||
ALLOCATE(meshVol2DCartQuad:: self%vols(e)%obj)
|
||||
ALLOCATE(meshCell2DCartQuad:: self%cells(e)%obj)
|
||||
|
||||
END SELECT
|
||||
|
||||
|
|
@ -296,19 +296,19 @@ MODULE moduleMeshInputGmsh2
|
|||
ALLOCATE(p(1:2))
|
||||
|
||||
READ(10, *) n, elemType, eTemp, eTemp, eTemp, p(1:2)
|
||||
ALLOCATE(meshVol1DRadSegm:: self%vols(e)%obj)
|
||||
ALLOCATE(meshCell1DRadSegm:: self%cells(e)%obj)
|
||||
|
||||
CASE("Cart")
|
||||
ALLOCATE(p(1:2))
|
||||
|
||||
READ(10, *) n, elemType, eTemp, eTemp, eTemp, p(1:2)
|
||||
ALLOCATE(meshVol1DCartSegm:: self%vols(e)%obj)
|
||||
ALLOCATE(meshCell1DCartSegm:: self%cells(e)%obj)
|
||||
|
||||
END SELECT
|
||||
|
||||
END SELECT
|
||||
|
||||
CALL self%vols(e)%obj%init(n - numEdges, p, self%nodes)
|
||||
CALL self%cells(e)%obj%init(n - numEdges, p, self%nodes)
|
||||
DEALLOCATE(p)
|
||||
|
||||
END DO
|
||||
|
|
|
|||
|
|
@ -181,9 +181,9 @@ MODULE moduleMeshOutputGmsh2
|
|||
DO c = 1, interactionMatrix(k)%amount
|
||||
WRITE(cString, "(I2)") c
|
||||
title = '"Pair ' // interactionMatrix(k)%sp_i%name // '-' // interactionMatrix(k)%sp_j%name // ' collision ' // cString
|
||||
CALL writeGmsh2HeaderElementData(60, title, t, time, 1, self%numVols)
|
||||
DO n=1, self%numVols
|
||||
WRITE(60, "(I6,I10)") n + numEdges, self%vols(n)%obj%tallyColl(k)%tally(c)
|
||||
CALL writeGmsh2HeaderElementData(60, title, t, time, 1, self%numCells)
|
||||
DO n=1, self%numCells
|
||||
WRITE(60, "(I6,I10)") n + numEdges, self%cells(n)%obj%tallyColl(k)%tally(c)
|
||||
END DO
|
||||
CALL writeGmsh2FooterElementData(60)
|
||||
|
||||
|
|
@ -211,9 +211,9 @@ MODULE moduleMeshOutputGmsh2
|
|||
REAL(8):: time
|
||||
CHARACTER(:), ALLOCATABLE:: fileName
|
||||
CHARACTER (LEN=iterationDigits):: tstring
|
||||
REAL(8):: xi(1:3)
|
||||
REAL(8):: Xi(1:3)
|
||||
|
||||
xi = (/ 0.D0, 0.D0, 0.D0 /)
|
||||
Xi = (/ 0.D0, 0.D0, 0.D0 /)
|
||||
|
||||
IF (emOutput) THEN
|
||||
time = DBLE(t)*tauMin*ti_ref
|
||||
|
|
@ -231,9 +231,9 @@ MODULE moduleMeshOutputGmsh2
|
|||
END DO
|
||||
CALL writeGmsh2FooterNodeData(20)
|
||||
|
||||
CALL writeGmsh2HeaderElementData(20, 'Electric Field (V m^-1)', t, time, 3, self%numVols)
|
||||
DO e=1, self%numVols
|
||||
WRITE(20, *) e+self%numEdges, self%vols(e)%obj%gatherEF(xi)*EF_ref
|
||||
CALL writeGmsh2HeaderElementData(20, 'Electric Field (V m^-1)', t, time, 3, self%numCells)
|
||||
DO e=1, self%numCells
|
||||
WRITE(20, *) e+self%numEdges, self%cells(e)%obj%gatherElectricField(Xi)*EF_ref
|
||||
END DO
|
||||
CALL writeGmsh2FooterElementData(20)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue