New option for initial distribution of species
The number of particles per cell can be defined when giving an initial distribution fora species. If not, the typical method of using the species weight is used. This is particularly useful for cylindrical coordinates in which very little particles might end up in the axis if a constant weight is used.
This commit is contained in:
parent
5bc064d018
commit
1f2ec8d82f
4 changed files with 97 additions and 8 deletions
|
|
@ -324,7 +324,8 @@ MODULE moduleInput
|
|||
REAL(8):: densityCen
|
||||
!Mean velocity and temperature at particle position
|
||||
REAL(8):: velocityXi(1:3), temperatureXi
|
||||
INTEGER:: nNewPart = 0.D0
|
||||
INTEGER:: nNewPart = 0
|
||||
REAL(8):: weight = 0.D0
|
||||
CLASS(meshCell), POINTER:: cell
|
||||
TYPE(particle), POINTER:: partNew
|
||||
REAL(8):: vTh
|
||||
|
|
@ -343,6 +344,9 @@ MODULE moduleInput
|
|||
!Reads node values at the nodes
|
||||
filename = path // spFile
|
||||
CALL mesh%readInitial(filename, density, velocity, temperature)
|
||||
!Check if initial number of particles is given
|
||||
CALL config%get(object // '.particlesPerCell', nNewPart, found)
|
||||
|
||||
!For each volume in the node, create corresponding particles
|
||||
DO e = 1, mesh%numCells
|
||||
!Scale variables
|
||||
|
|
@ -355,7 +359,11 @@ MODULE moduleInput
|
|||
densityCen = mesh%cells(e)%obj%gatherF((/ 0.D0, 0.D0, 0.D0 /), nNodes, sourceScalar)
|
||||
|
||||
!Calculate number of particles
|
||||
nNewPart = INT(densityCen * (mesh%cells(e)%obj%volume*Vol_ref) / species(sp)%obj%weight)
|
||||
IF (.NOT. found) THEN
|
||||
nNewPart = FLOOR(densityCen * (mesh%cells(e)%obj%volume*Vol_ref) / species(sp)%obj%weight)
|
||||
|
||||
END IF
|
||||
weight = densityCen * (mesh%cells(e)%obj%volume*Vol_ref) / REAL(nNewPart)
|
||||
|
||||
!Allocate new particles
|
||||
DO p = 1, nNewPart
|
||||
|
|
@ -392,7 +400,7 @@ MODULE moduleInput
|
|||
|
||||
partNew%n_in = .TRUE.
|
||||
|
||||
partNew%weight = species(sp)%obj%weight
|
||||
partNew%weight = weight
|
||||
|
||||
!Assign particle to temporal list of particles
|
||||
CALL partInitial%add(partNew)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue