Added the possibility to have sub-steps

Now per each Coulomb collision process there is the possibility to do
sub-steps. This helps in improving accuracy without reducing the time
step of the problem.
This commit is contained in:
Jorge Gonzalez 2023-07-12 14:21:29 +02:00
commit 28b2bf206a
3 changed files with 55 additions and 43 deletions

View file

@ -12,6 +12,8 @@ MODULE moduleCoulomb
REAL(8):: lnCoulomb !This can be done a function in the future
REAL(8):: A_i
REAL(8):: l2_j
REAL(8):: tauSub
INTEGER:: nSubSteps
CONTAINS
PROCEDURE, PASS:: init => initInteractionCoulomb
@ -44,7 +46,7 @@ MODULE moduleCoulomb
END FUNCTION H
SUBROUTINE initInteractionCoulomb(self, i, j)
SUBROUTINE initInteractionCoulomb(self, i, j, subSteps)
USE moduleSpecies
USE moduleErrors
USE moduleConstParam
@ -52,10 +54,14 @@ MODULE moduleCoulomb
IMPLICIT NONE
CLASS(interactionsCoulomb), INTENT(out):: self
INTEGER, INTENT(in):: subSteps
INTEGER, INTENT(in):: i, j
REAL(8):: Z_i, Z_j
REAL(8):: scaleFactor
self%nSubSteps = subSteps
self%tauSub = tauMin / REAL(self%nSubSteps)
self%sp_i => species(i)%obj
self%sp_j => species(j)%obj