Renaming the generic 'non-analogue' scheme for 'weighting' scheme.
This commit is contained in:
parent
37b0139b1f
commit
f151f3cd0e
5 changed files with 30 additions and 30 deletions
|
|
@ -34,7 +34,7 @@
|
||||||
"tau": [6.0e-7],
|
"tau": [6.0e-7],
|
||||||
"time": 3.0e-3,
|
"time": 3.0e-3,
|
||||||
"pusher": ["2DCylNeutral"],
|
"pusher": ["2DCylNeutral"],
|
||||||
"NAScheme": "Volume"
|
"WeightingScheme": "Volume"
|
||||||
},
|
},
|
||||||
"interactions": {
|
"interactions": {
|
||||||
"folderCollisions": "./data/collisions/",
|
"folderCollisions": "./data/collisions/",
|
||||||
|
|
|
||||||
|
|
@ -114,7 +114,7 @@ MODULE moduleInput
|
||||||
LOGICAL:: found
|
LOGICAL:: found
|
||||||
CHARACTER(:), ALLOCATABLE:: object
|
CHARACTER(:), ALLOCATABLE:: object
|
||||||
REAL(8):: time !simulation time in [t]
|
REAL(8):: time !simulation time in [t]
|
||||||
CHARACTER(:), ALLOCATABLE:: pusherType, EMType, NAType
|
CHARACTER(:), ALLOCATABLE:: pusherType, EMType, WSType
|
||||||
INTEGER:: nTau, nSolver
|
INTEGER:: nTau, nSolver
|
||||||
INTEGER:: i
|
INTEGER:: i
|
||||||
CHARACTER(2):: iString
|
CHARACTER(2):: iString
|
||||||
|
|
@ -168,8 +168,8 @@ MODULE moduleInput
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
!Gest the non-analogue scheme
|
!Gest the non-analogue scheme
|
||||||
CALL config%get(object // '.NAScheme', NAType, found)
|
CALL config%get(object // '.WeightingScheme', WSType, found)
|
||||||
CALL solver%initNA(NAType)
|
CALL solver%initWS(WSType)
|
||||||
|
|
||||||
|
|
||||||
!Makes tau non-dimensional
|
!Makes tau non-dimensional
|
||||||
|
|
@ -278,7 +278,7 @@ MODULE moduleInput
|
||||||
nPartOld = 0
|
nPartOld = 0
|
||||||
|
|
||||||
!Initialize the lock for the non-analogue (NA) list of particles
|
!Initialize the lock for the non-analogue (NA) list of particles
|
||||||
CALL OMP_INIT_LOCK(lockNAScheme)
|
CALL OMP_INIT_LOCK(lockWScheme)
|
||||||
|
|
||||||
END SUBROUTINE readSpecies
|
END SUBROUTINE readSpecies
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ MODULE moduleList
|
||||||
|
|
||||||
END TYPE listNode
|
END TYPE listNode
|
||||||
|
|
||||||
TYPE(listNode):: partNAScheme !Particles comming from the nonAnalogue scheme
|
TYPE(listNode):: partWScheme !Particles comming from the nonAnalogue scheme
|
||||||
|
|
||||||
TYPE pointerArray
|
TYPE pointerArray
|
||||||
TYPE(particle), POINTER:: part
|
TYPE(particle), POINTER:: part
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,10 @@ MODULE moduleSolver
|
||||||
TYPE, PUBLIC:: solverGeneric
|
TYPE, PUBLIC:: solverGeneric
|
||||||
TYPE(pusherGeneric), ALLOCATABLE:: pusher(:)
|
TYPE(pusherGeneric), ALLOCATABLE:: pusher(:)
|
||||||
PROCEDURE(solveEM_interface), POINTER, NOPASS:: solveEM => NULL()
|
PROCEDURE(solveEM_interface), POINTER, NOPASS:: solveEM => NULL()
|
||||||
PROCEDURE(nonAnalogue_interface), POINTER, NOPASS:: nonAnalogue => NULL()
|
PROCEDURE(weightingScheme_interface), POINTER, NOPASS:: weightingScheme => NULL()
|
||||||
CONTAINS
|
CONTAINS
|
||||||
PROCEDURE, PASS:: initEM
|
PROCEDURE, PASS:: initEM
|
||||||
PROCEDURE, PASS:: initNA
|
PROCEDURE, PASS:: initWS
|
||||||
PROCEDURE, PASS:: updateParticleCell
|
PROCEDURE, PASS:: updateParticleCell
|
||||||
PROCEDURE, PASS:: updatePushSpecies
|
PROCEDURE, PASS:: updatePushSpecies
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@ MODULE moduleSolver
|
||||||
END SUBROUTINE solveEM_interface
|
END SUBROUTINE solveEM_interface
|
||||||
|
|
||||||
!Apply nonAnalogue scheme to a particle
|
!Apply nonAnalogue scheme to a particle
|
||||||
SUBROUTINE nonAnalogue_interface(part, volOld, volNew)
|
SUBROUTINE weightingScheme_interface(part, volOld, volNew)
|
||||||
USE moduleSpecies
|
USE moduleSpecies
|
||||||
USE moduleMesh
|
USE moduleMesh
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
|
|
@ -49,7 +49,7 @@ MODULE moduleSolver
|
||||||
CLASS(meshVol), POINTER, INTENT(in):: volOld
|
CLASS(meshVol), POINTER, INTENT(in):: volOld
|
||||||
CLASS(meshVol), POINTER, INTENT(inout):: volNew
|
CLASS(meshVol), POINTER, INTENT(inout):: volNew
|
||||||
|
|
||||||
END SUBROUTINE nonAnalogue_interface
|
END SUBROUTINE weightingScheme_interface
|
||||||
|
|
||||||
END INTERFACE
|
END INTERFACE
|
||||||
|
|
||||||
|
|
@ -100,7 +100,7 @@ MODULE moduleSolver
|
||||||
END SUBROUTINE initEM
|
END SUBROUTINE initEM
|
||||||
|
|
||||||
!Initialize the non-analogue scheme
|
!Initialize the non-analogue scheme
|
||||||
SUBROUTINE initNA(self, NAType)
|
SUBROUTINE initWS(self, NAType)
|
||||||
USE moduleMesh
|
USE moduleMesh
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
|
@ -109,11 +109,11 @@ MODULE moduleSolver
|
||||||
|
|
||||||
SELECT CASE(NAType)
|
SELECT CASE(NAType)
|
||||||
CASE ('Volume')
|
CASE ('Volume')
|
||||||
self%nonAnalogue => volumeNAScheme
|
self%weightingScheme => volumeWScheme
|
||||||
|
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
END SUBROUTINE initNA
|
END SUBROUTINE initWS
|
||||||
|
|
||||||
!Do all pushes for particles
|
!Do all pushes for particles
|
||||||
SUBROUTINE doPushes()
|
SUBROUTINE doPushes()
|
||||||
|
|
@ -273,7 +273,7 @@ MODULE moduleSolver
|
||||||
|
|
||||||
INTEGER:: nn, n
|
INTEGER:: nn, n
|
||||||
INTEGER, SAVE:: nPartNew
|
INTEGER, SAVE:: nPartNew
|
||||||
INTEGER, SAVE:: nInjIn, nOldIn, nNAScheme
|
INTEGER, SAVE:: nInjIn, nOldIn, nWScheme
|
||||||
TYPE(particle), ALLOCATABLE, SAVE:: partTemp(:)
|
TYPE(particle), ALLOCATABLE, SAVE:: partTemp(:)
|
||||||
TYPE(lNode), POINTER:: partCurr, partNext
|
TYPE(lNode), POINTER:: partCurr, partNext
|
||||||
|
|
||||||
|
|
@ -291,14 +291,14 @@ MODULE moduleSolver
|
||||||
|
|
||||||
END IF
|
END IF
|
||||||
!$OMP SECTION
|
!$OMP SECTION
|
||||||
nNAScheme = partNAScheme%amount
|
nWScheme = partWScheme%amount
|
||||||
!$OMP END SECTIONS
|
!$OMP END SECTIONS
|
||||||
|
|
||||||
!$OMP BARRIER
|
!$OMP BARRIER
|
||||||
|
|
||||||
!$OMP SINGLE
|
!$OMP SINGLE
|
||||||
CALL MOVE_ALLOC(partOld, partTemp)
|
CALL MOVE_ALLOC(partOld, partTemp)
|
||||||
nPartNew = nInjIn + nOldIn + nNAScheme
|
nPartNew = nInjIn + nOldIn + nWScheme
|
||||||
ALLOCATE(partOld(1:nPartNew))
|
ALLOCATE(partOld(1:nPartNew))
|
||||||
!$OMP END SINGLE
|
!$OMP END SINGLE
|
||||||
|
|
||||||
|
|
@ -326,17 +326,17 @@ MODULE moduleSolver
|
||||||
END DO
|
END DO
|
||||||
!$OMP SECTION
|
!$OMP SECTION
|
||||||
nn = nInjIn + nOldIn
|
nn = nInjIn + nOldIn
|
||||||
partCurr => partNAScheme%head
|
partCurr => partWScheme%head
|
||||||
DO n = 1, nNAScheme
|
DO n = 1, nWScheme
|
||||||
partNext => partCurr%next
|
partNext => partCurr%next
|
||||||
partOld(nn+n) = partCurr%part
|
partOld(nn+n) = partCurr%part
|
||||||
DEALLOCATE(partCurr)
|
DEALLOCATE(partCurr)
|
||||||
partCurr => partNext
|
partCurr => partNext
|
||||||
|
|
||||||
END DO
|
END DO
|
||||||
IF (ASSOCIATED(partNAScheme%head)) NULLIFY(partNAScheme%head)
|
IF (ASSOCIATED(partWScheme%head)) NULLIFY(partWScheme%head)
|
||||||
IF (ASSOCIATED(partNAScheme%tail)) NULLIFY(partNAScheme%tail)
|
IF (ASSOCIATED(partWScheme%tail)) NULLIFY(partWScheme%tail)
|
||||||
partNAScheme%amount = 0
|
partWScheme%amount = 0
|
||||||
|
|
||||||
!$OMP END SECTIONS
|
!$OMP END SECTIONS
|
||||||
|
|
||||||
|
|
@ -420,7 +420,7 @@ MODULE moduleSolver
|
||||||
END SUBROUTINE solveElecField
|
END SUBROUTINE solveElecField
|
||||||
|
|
||||||
!Modify particle weight as a function of cell volume and splits particle
|
!Modify particle weight as a function of cell volume and splits particle
|
||||||
SUBROUTINE volumeNAScheme(part, volOld, volNew)
|
SUBROUTINE volumeWScheme(part, volOld, volNew)
|
||||||
USE moduleSpecies
|
USE moduleSpecies
|
||||||
USE moduleMesh
|
USE moduleMesh
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
|
|
@ -431,7 +431,7 @@ MODULE moduleSolver
|
||||||
REAL(8):: fractionVolume, fractionWeight
|
REAL(8):: fractionVolume, fractionWeight
|
||||||
INTEGER:: nSplit
|
INTEGER:: nSplit
|
||||||
|
|
||||||
!If particle has change cell, call nonAnalogue scheme
|
!If particle has change cell, call Weighting scheme
|
||||||
IF (volOld%n /= volNew%n) THEN
|
IF (volOld%n /= volNew%n) THEN
|
||||||
fractionVolume = volOld%volume/volNew%volume
|
fractionVolume = volOld%volume/volNew%volume
|
||||||
|
|
||||||
|
|
@ -451,7 +451,7 @@ MODULE moduleSolver
|
||||||
|
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
END SUBROUTINE volumeNAScheme
|
END SUBROUTINE volumeWScheme
|
||||||
|
|
||||||
!Subroutine to split the particle 'part' into a number 'nSplit' of particles.
|
!Subroutine to split the particle 'part' into a number 'nSplit' of particles.
|
||||||
!'nSplit-1' particles are added to the partNAScheme list
|
!'nSplit-1' particles are added to the partNAScheme list
|
||||||
|
|
@ -480,9 +480,9 @@ MODULE moduleSolver
|
||||||
ALLOCATE(newPart)
|
ALLOCATE(newPart)
|
||||||
!Copy data from original particle
|
!Copy data from original particle
|
||||||
newPart = part
|
newPart = part
|
||||||
CALL OMP_SET_LOCK(lockNAScheme)
|
CALL OMP_SET_LOCK(lockWScheme)
|
||||||
CALL partNAScheme%add(newPart)
|
CALL partWScheme%add(newPart)
|
||||||
CALL OMP_UNSET_LOCK(lockNASCheme)
|
CALL OMP_UNSET_LOCK(lockWScheme)
|
||||||
!Add particle to cell list
|
!Add particle to cell list
|
||||||
CALL OMP_SET_lock(vol%lock)
|
CALL OMP_SET_lock(vol%lock)
|
||||||
CALL vol%listPart_in%add(newPart)
|
CALL vol%listPart_in%add(newPart)
|
||||||
|
|
@ -505,8 +505,8 @@ MODULE moduleSolver
|
||||||
CALL volOld%findCell(part)
|
CALL volOld%findCell(part)
|
||||||
volNew => mesh%vols(part%vol)%obj
|
volNew => mesh%vols(part%vol)%obj
|
||||||
!Call the NA shcme
|
!Call the NA shcme
|
||||||
IF (ASSOCIATED(self%nonAnalogue)) THEN
|
IF (ASSOCIATED(self%weightingScheme)) THEN
|
||||||
CALL self%nonAnalogue(part, volOld, volNew)
|
CALL self%weightingScheme(part, volOld, volNew)
|
||||||
|
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ MODULE moduleSpecies
|
||||||
!Arrays that contain the particles
|
!Arrays that contain the particles
|
||||||
TYPE(particle), ALLOCATABLE, DIMENSION(:), TARGET:: partOld !array of particles from previous iteration
|
TYPE(particle), ALLOCATABLE, DIMENSION(:), TARGET:: partOld !array of particles from previous iteration
|
||||||
TYPE(particle), ALLOCATABLE, DIMENSION(:), TARGET:: partInj !array of inject particles
|
TYPE(particle), ALLOCATABLE, DIMENSION(:), TARGET:: partInj !array of inject particles
|
||||||
INTEGER(KIND=OMP_LOCK_KIND):: lockNAScheme !Lock for the NA list of particles
|
INTEGER(KIND=OMP_LOCK_KIND):: lockWScheme !Lock for the NA list of particles
|
||||||
|
|
||||||
CONTAINS
|
CONTAINS
|
||||||
FUNCTION speciesName2Index(speciesName) RESULT(sp)
|
FUNCTION speciesName2Index(speciesName) RESULT(sp)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue