Huge improvement in reset (by increasing a little bit push time) using

OMP locks to assign particles to cells in the pushing step.

Trying to combine push+reset and  collision+scatter did not work.
This commit is contained in:
Jorge Gonzalez 2020-10-17 18:46:10 +02:00
commit fd42e0f3f9
7 changed files with 101 additions and 92 deletions

View file

@ -1,7 +1,6 @@
MODULE moduleSolver
CONTAINS
SUBROUTINE scatterGrid(meshIn, partArray)
USE moduleSpecies
USE moduleMesh
@ -53,15 +52,14 @@ MODULE moduleSolver
part_temp%v(3) = -sin_alpha*v_p_oh_star(2)+cos_alpha*v_p_oh_star(3)
part_temp%pt = part%pt
part_temp%e_p = part%e_p
!Assign cell to particle
!Copy temporal particle to particle
part=part_temp
END SUBROUTINE push
SUBROUTINE resetParticles(partInj, partOld)
USE moduleSpecies
USE moduleList
USE moduleMesh
USE moduleSpecies, ONLY: particle, &
n_part_old, n_part_new, nPartInj
IMPLICIT NONE
TYPE(particle), INTENT(in), ALLOCATABLE:: partInj(:)
@ -88,16 +86,15 @@ MODULE moduleSolver
!$OMP BARRIER
!$OMP SINGLE
CALL MOVE_ALLOC(part_old, partTemp)
CALL MOVE_ALLOC(partOld, partTemp)
n_part_new = n_inj_in + n_old_in
ALLOCATE(partOld(1:n_part_new))
nn = 0
DO n = 1, nPartInj
IF (part_inj(n)%n_in) THEN
IF (partInj(n)%n_in) THEN
nn = nn + 1
part_old(nn) = part_inj(n)
CALL mesh%vols(part_old(nn)%e_p)%obj%listPart_in%add(part_old(nn))
partOld(nn) = partInj(n)
END IF
@ -107,7 +104,6 @@ MODULE moduleSolver
IF (partTemp(n)%n_in) THEN
nn = nn + 1
partOld(nn) = partTemp(n)
CALL mesh%vols(partOld(nn)%e_p)%obj%listPart_in%add(partOld(nn))
END IF