First attempt at Coulomb collisions #46
2 changed files with 16 additions and 1 deletions
Fixed segmentation fault in Coulomb collisions
When the relative velocity between a charged particle and the background for Coulomb collisions (W in the code) was low, there was a segmentation fault. This is fixed now as if the norm of the relative velocity (normW) in the code is too low, no collision is applied.
commit
f4448d9e7a
|
|
@ -1016,6 +1016,14 @@ MODULE moduleMesh
|
||||||
|
|
||||||
W = partTemp%part%v - velocity
|
W = partTemp%part%v - velocity
|
||||||
normW = NORM2(W)
|
normW = NORM2(W)
|
||||||
|
IF (normW > 1.D-10) THEN
|
||||||
|
!If relative velocity is too low, skip collision and move to next particle
|
||||||
|
partTemp => partTemp%next
|
||||||
|
|
||||||
|
CYCLE
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
lW = l * normW
|
lW = l * normW
|
||||||
AW = coulombMatrix(k)%A_i/normW
|
AW = coulombMatrix(k)%A_i/normW
|
||||||
|
|
||||||
|
|
@ -1082,6 +1090,14 @@ MODULE moduleMesh
|
||||||
|
|
||||||
W = partTemp%part%v - velocity
|
W = partTemp%part%v - velocity
|
||||||
normW = NORM2(W)
|
normW = NORM2(W)
|
||||||
|
IF (normW > 1.D-10) THEN
|
||||||
|
!If relative velocity is too low, skip collision and move to next particle
|
||||||
|
partTemp => partTemp%next
|
||||||
|
|
||||||
|
CYCLE
|
||||||
|
|
||||||
|
END IF
|
||||||
|
|
||||||
lW = l * normW
|
lW = l * normW
|
||||||
AW = coulombMatrix(k)%A_j/normW
|
AW = coulombMatrix(k)%A_j/normW
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,6 @@ MODULE moduleSolver
|
||||||
CHARACTER(:), ALLOCATABLE:: pusherType
|
CHARACTER(:), ALLOCATABLE:: pusherType
|
||||||
REAL(8):: tau, tauSp
|
REAL(8):: tau, tauSp
|
||||||
|
|
||||||
!TODO: Reorganize if Cart pushers are combined
|
|
||||||
SELECT CASE(mesh%dimen)
|
SELECT CASE(mesh%dimen)
|
||||||
CASE(0)
|
CASE(0)
|
||||||
self%pushParticle => push0D
|
self%pushParticle => push0D
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue