Identifying issues
I need a way to compute the energy (velocity) for the emitted particles. I think I also need a better way to calculate the velocity distribution of particles being injected or emitted from a surface.
This commit is contained in:
parent
4701321dcf
commit
db804bebc1
2 changed files with 9 additions and 10 deletions
|
|
@ -261,12 +261,12 @@ MODULE moduleMeshBoundary
|
||||||
energy = (eRel - bound%energyThreshold) * PI2 / (PI2 + theta**2) + bound%energyThreshold
|
energy = (eRel - bound%energyThreshold) * PI2 / (PI2 + theta**2) + bound%energyThreshold
|
||||||
|
|
||||||
!Get number of secondary electrons particles
|
!Get number of secondary electrons particles
|
||||||
yield = part%weight*bound%yield%get(eRel) * (1.D0 * theta**2 / PI2) !Check equation!
|
yield = part%weight*bound%yield%get(eRel) * (1.D0 * theta**2 / PI2)
|
||||||
|
|
||||||
!Convert the number to macro-particles
|
!Convert the number to macro-particles
|
||||||
nNewElectrons = FLOOR(yield / bound%electron%weight)
|
nNewElectrons = FLOOR(yield / bound%electron%weight)
|
||||||
|
|
||||||
!If the weight of new macro-particles is below the yield, correct adding a particle
|
!If the weight of new macro-particles is below the yield, add an additional particle with less weight
|
||||||
IF (REAL(nNewElectrons) * bound%electron%weight < yield) THEN
|
IF (REAL(nNewElectrons) * bound%electron%weight < yield) THEN
|
||||||
nNewElectrons = nNewElectrons + 1
|
nNewElectrons = nNewElectrons + 1
|
||||||
ALLOCATE(weight(1:nNewElectrons))
|
ALLOCATE(weight(1:nNewElectrons))
|
||||||
|
|
@ -310,7 +310,9 @@ MODULE moduleMeshBoundary
|
||||||
secondaryElectron%n_in = .TRUE.
|
secondaryElectron%n_in = .TRUE.
|
||||||
|
|
||||||
!Assign velocity
|
!Assign velocity
|
||||||
secondaryElectron%v = 2.D0 * edge%normal + 1.D-1 * (/ randomMaxwellian(), randomMaxwellian(), randomMaxwellian() /)
|
!TODO: Calculate energy and velocity
|
||||||
|
!TODO: Better way to inject particles from surface. For this and for general injection
|
||||||
|
secondaryElectron%v = 1.D0 * edge%normal + 1.D-1 * (/ randomMaxwellian(), randomMaxwellian(), randomMaxwellian() /)
|
||||||
|
|
||||||
!Add particle to list
|
!Add particle to list
|
||||||
CALL partSurfaces%setLock()
|
CALL partSurfaces%setLock()
|
||||||
|
|
|
||||||
|
|
@ -367,14 +367,11 @@ MODULE moduleInject
|
||||||
self%v(2)%obj%randomVel(), &
|
self%v(2)%obj%randomVel(), &
|
||||||
self%v(3)%obj%randomVel() /)
|
self%v(3)%obj%randomVel() /)
|
||||||
|
|
||||||
!For each direction, velocities have to agree with the direction of injection
|
!If velocity is not in the right direction, invert it
|
||||||
DO j = 1, 3
|
IF (DOT_PRODUCT(direction, partInj(n)%v) < 0.D0) THEN
|
||||||
DO WHILE (partInj(n)%v(i)*direction(i) < 0)
|
partInj(n)%v = - partInj(n)%v
|
||||||
partInj(n)%v(i) = self%vMod*direction(i) + self%v(i)%obj%randomVel()
|
|
||||||
|
|
||||||
END DO
|
END IF
|
||||||
|
|
||||||
END DO
|
|
||||||
|
|
||||||
!Obtain natural coordinates of particle in cell
|
!Obtain natural coordinates of particle in cell
|
||||||
partInj(n)%Xi = mesh%cells(partInj(n)%cell)%obj%phy2log(partInj(n)%r)
|
partInj(n)%Xi = mesh%cells(partInj(n)%cell)%obj%phy2log(partInj(n)%r)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue