Renaming the generic 'non-analogue' scheme for 'weighting' scheme.

This commit is contained in:
Jorge Gonzalez 2020-12-13 17:04:52 +01:00
commit f151f3cd0e
5 changed files with 30 additions and 30 deletions

View file

@ -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/",

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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)