From 4585390b5018340fc27008108a7e2e0b6aec1351 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Tue, 21 Nov 2023 09:53:36 +0100 Subject: [PATCH 1/2] Fixing issue Fixing an issue with reading tables led me to other issues with collisions that I think are fixed right now. I am testing with the 1D ionization model for ALPHIE and things seems to be working properly. --- src/modules/common/moduleTable.f90 | 2 +- src/modules/mesh/moduleMesh.f90 | 2 ++ src/modules/moduleCollisions.f90 | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/common/moduleTable.f90 b/src/modules/common/moduleTable.f90 index e4da335..2dc1c75 100644 --- a/src/modules/common/moduleTable.f90 +++ b/src/modules/common/moduleTable.f90 @@ -93,7 +93,7 @@ MODULE moduleTable f = self%fMax ELSE - i = MINLOC(x - self%x, 1) + i = MINLOC(ABS(x - self%x), 1) deltaX = x - self%x(i) IF (deltaX < 0 ) THEN i = i - 1 diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index 7e30326..e96ff2a 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -911,7 +911,9 @@ MODULE moduleMesh !Loop over collisions DO c = 1, interactionMatrix(k)%amount IF (rnd_real <= probabilityColl(c)) THEN + !$OMP CRITICAL CALL interactionMatrix(k)%collisions(c)%obj%collide(part_i, part_j, vRel) + !$OMP END CRITICAL !If collisions are gonna be output, count the collision IF (collOutput) THEN diff --git a/src/modules/moduleCollisions.f90 b/src/modules/moduleCollisions.f90 index ccca930..fec4c8d 100644 --- a/src/modules/moduleCollisions.f90 +++ b/src/modules/moduleCollisions.f90 @@ -362,7 +362,7 @@ MODULE moduleCollisions CALL sp%ionize(neutral) CLASS DEFAULT - ! CALL criticalError(sp%name // " is not a neutral", 'collideBinaryIonization') + CALL criticalError(sp%name // " is not a neutral", 'collideBinaryIonization') RETURN END SELECT -- 2.49.1 From e41b448ef83cad310ad1dae677c9bc10b55888fc Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Fri, 24 Nov 2023 10:30:50 +0100 Subject: [PATCH 2/2] Different species for secondary electrons The option to have a different species than the impacting electron for secondary electrons from ionization is introduced. --- doc/user-manual/fpakc_UserManual.pdf | Bin 185259 -> 185542 bytes doc/user-manual/fpakc_UserManual.tex | 5 ++++ src/modules/init/moduleInput.f90 | 14 +++++++++--- src/modules/moduleCollisions.f90 | 33 +++++++++++++++++++++++---- 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/doc/user-manual/fpakc_UserManual.pdf b/doc/user-manual/fpakc_UserManual.pdf index c099b01f29ab35ef115ef44b47a742d9d5fd0be6..c424f5016355cf3dd5bdebf5cb23ee291f1c5145 100644 GIT binary patch delta 15413 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 D;J-Sn delta 15128 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
$bJkFhVX zJrFx_*-@=^*{q69jAU@DSzW9+c15b}r@VdM{L((xxpW<-b=rlG&E)b?8`=OpW(?^d zL^Oi%GI*>Efh38+Cb<^TO8kMGQ$$-Qe2Rpzv9ZNa4iaqbu?Hc@o^lWaeh!kc_VyTi zygkY8B(XfYm^O}98bgAJ5FU^H>rpWbMr=QWw66Op6&r6maTOUX28-KpqFkqxR*VKF z;s89Q{_wl;Gf@ABNJKIYzmbNaU~v!*K_inW1OyEtVM#bF;v5A_#-M2g;$L^+{}^K^ zI2<0JSL)9{!T`o(BEYr?8ifL&@J1RAB0)$RfkZ(F2zU^%zbgm$V*rsv1?h+fDQGL; zF+{L_-*^s>MQaRJ^C-r6JOQN~o&Xb3rosP#F#*D(7!$B$)Lk$Zpshf}p%{~}|9cPq z&D2C98D#|`27|gxgm5IJ6^K|O`WzlYxsFI6{ce5?)&3MB8SN($2CW?hOF=Oq;qfSq zDG(MVAc;UiS&KxZz$ibF$Y||I6cUOt8N#BpBV#veM^%oD$DmwCCJ_E7ApBpXlfgKM zG%J~mLo=aJ5N?7n7y^XSn1UyvvV;N>bOR3)47iMe5E23!7I_)aNJxKzd?zBc1Lw$i zQqr>uT2UBjAqY#rq3aEVCv1obAP*KxLb@L!5Q#*DfxtN|GVLJ(4x$dk;OD>K20~FV zNLQ1|AoMm^gK7-QKd$-LGoU1*VhjUOkR=1cLI~wdfF^hx8JW5eV1sfOnT*9FTunWP zN4OBsAWTwmB`qtwp^j12#Q-~^41^&fi!X#Dl5i-8Ll827L41QJ5%$4hu!O%w`rWt? z7Fm#ioOopY1T+E>tq%#s1jHjU2f7K=kM!QzmK3GNaw=yOCo z`aKdEO`~986cKECP-ewJ$kGO3a5zK~0!2XQLxd-w5ztn}k^U(N|5grgkW55X1U#y6 z15-ixjoD8PFf17*GyoB(ya3&6<6W3~nS@L#KqI4r3lHiJ(oF;iT{%E+Mp=P?BO`+v zLm*(W`lts{O&0(JL=EB z#e_`$gUyKK|ApOuNkz?O6gI#BCm_QPv84IBEq98ejOhCJYOhC0w3>kCq6;U5gzWsl zfOvGlrjY*E(E(rh?->vSzyPRO8_W;pMfY2b2Hu8XA zFr=a|41r8Qm0$qWP{Bn7Z%6^Dm;))`U$6ne7|^KjLihK81Lgvl6Lk=WY_`BMBnXj; zpm{^sB%6jmwG?WPL_doj#Hqy(tq=GUK9oolq_Y4>q@Z!yUsU8}0Q?XSQu7Q|`#_CE z0b`&e5>S9FBW}dD)RqE400*HM<4{>jEg8rxg+Mn#8kbC=pmG4{fwl}p!k{KRAR!VU zf|vs{BT7ILvH=4{$f#Kf&`^~fVCR1n{;#C~B1&T{mWUdX2m~@Z?66ogV=(-ntc3-t zY)}NW6o}fSHV~;agrBHx!UEHv&XG~g7QlUE%m5E#P>KK=iE;?}AlM|KgaP4!(gcSk z5R+avgE11B{h*iwPoUn#BQu@qR^$+Z0s8_ph60g{QXKcs#^66t2DBuiDmS2k%Dtgh zf^#HP;Rb4>gBCz{wBnSF@cXX}!cmaR8IUYM86;z%-A4aYCtuWB0^9|Ghq{YHVkoM$ zC@`W}fuWRuLVnai7iB^`m?Th42q+8%dN^{)2LvSk6B7Ss5YXfg^#M;p1~*ke3L?h9 z%s@fc2Rzu$AOyr>!92Br1~P~MvIU6>z)B7^p8*tv#Lhry(ET<%2%;AZ5QqS#3W&@; z49HPD2?5H$Ww7HwJ%~jYFal~h0)!zUiywFoRf(yL{~fpg0c9AlAVdZixQs`c5YW(; zA%L=m5*k&5fPiFVbA$mC60$DI0wEv@c*?V{udKd zB}AekK%<~LArVzE0TZw|*vJ?H5CL7%NxzRh@ZaA>zy}5b;xd&ns?dIzidnC?H^hTo{2y1a=ju!UaGU%BrA~|0dwy`3IKD$Vm?{0h^PJjKK&1VD3g5 zIQQ?`>>ov_G-O$(F0PS52*zTV@`nHcQ#FbSr~+sj+Q;C_0n%DPW)jjec(7Fc>ph_V ze^LYdi985_kpSg8pb9EI0jxv`O(vmJ8!T9UKS#Ac0J&i9L}~}-4isYw_$Yun2R21{-BqjXGS7u(a6gru;xPw2)+xW zR#aFF0W~v%WjgvC7;fw~NCSkS&LW7kgTPl%RDZ_;#EbMh7KAl2K1jd_92?jYi1}|?LPj7!uJ9`F@=iu8n MgNTT#z8b^-0qDJ%_W%F@ diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index fccf4a0..2b8fa8e 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -764,6 +764,11 @@ make \item \textbf{electron}: Character. Name of species designed as electrons. Only valid for \textbf{ionization} and \textbf{recombination} processes. + \item \textbf{electronSecondary}: Character. + Optional. + Name of species designed as secondary electrons. + If none provided, \textbf{electron} is used. + Only valid for \textbf{ionization}. \end{itemize} \end{itemize} \item \textbf{Coulomb}: Array of objects. diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 9891806..46b627b 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -634,7 +634,7 @@ MODULE moduleInput INTEGER:: i, k, ij INTEGER:: pt_i, pt_j REAL(8):: energyThreshold, energyBinding - CHARACTER(:), ALLOCATABLE:: electron + CHARACTER(:), ALLOCATABLE:: electron, electronSecondary INTEGER:: e CLASS(meshCell), POINTER:: cell @@ -711,8 +711,16 @@ MODULE moduleInput IF (.NOT. found) CALL criticalError('energyThreshold not found for collision' // object, 'readInteractions') CALL config%get(object // '.electron', electron, found) IF (.NOT. found) CALL criticalError('electron not found for collision' // object, 'readInteractions') - CALL initBinaryIonization(interactionMatrix(ij)%collisions(k)%obj, & - crossSecFilePath, energyThreshold, electron) + CALL config%get(object // '.electronSecondary', electronSecondary, found) + IF (found) THEN + CALL initBinaryIonization(interactionMatrix(ij)%collisions(k)%obj, & + crossSecFilePath, energyThreshold, electron, electronSecondary) + + ELSE + CALL initBinaryIonization(interactionMatrix(ij)%collisions(k)%obj, & + crossSecFilePath, energyThreshold, electron) + + END IF CASE ('recombination') !Electorn impact ionization diff --git a/src/modules/moduleCollisions.f90 b/src/modules/moduleCollisions.f90 index fec4c8d..d9a6ef2 100644 --- a/src/modules/moduleCollisions.f90 +++ b/src/modules/moduleCollisions.f90 @@ -43,7 +43,8 @@ MODULE moduleCollisions TYPE, EXTENDS(collisionBinary):: collisionBinaryIonization REAL(8):: eThreshold !Minimum energy (non-dimensional units) required for ionization REAL(8):: deltaV !Change in velocity due to exchange of eThreshold - CLASS(speciesCharged), POINTER:: electron !Pointer to species considerer as electrons + CLASS(speciesCharged), POINTER:: electron !Pointer to species considerer as electrons + CLASS(speciesCharged), POINTER:: electronSecondary !Pointer to species considerer as secondary electron CONTAINS PROCEDURE, PASS:: collide => collideBinaryIonization @@ -241,7 +242,7 @@ MODULE moduleCollisions !ELECTRON IMPACT IONIZATION !Inits electron impact ionization - SUBROUTINE initBinaryIonization(collision, crossSectionFilename, energyThreshold, electron) + SUBROUTINE initBinaryIonization(collision, crossSectionFilename, energyThreshold, electron, electronSecondary) USE moduleTable USE moduleRefParam USE moduleConstParam @@ -253,7 +254,8 @@ MODULE moduleCollisions CHARACTER(:), ALLOCATABLE, INTENT(in):: crossSectionFilename REAL(8), INTENT(in):: energyThreshold CHARACTER(:), ALLOCATABLE, INTENT(in):: electron - INTEGER:: electronIndex + CHARACTER(:), ALLOCATABLE, OPTIONAL, INTENT(in):: electronSecondary + INTEGER:: electronIndex, electronSecondaryIndex ALLOCATE(collisionBinaryIonization:: collision) @@ -278,10 +280,27 @@ MODULE moduleCollisions CLASS DEFAULT CALL criticalError("Species " // sp%name // " chosen for " // & - "secondary electron is not a charged species", 'initBinaryIonization') + "impacting electron is not a charged species", 'initBinaryIonization') END SELECT + IF (PRESENT(electronSecondary)) THEN + electronSecondaryIndex = speciesName2Index(electronSecondary) + SELECT TYPE(sp => species(electronSecondaryIndex)%obj) + TYPE IS(speciesCharged) + collision%electronSecondary => sp + + CLASS DEFAULT + CALL criticalError("Species " // sp%name // " chosen for " // & + "secondary electron is not a charged species", 'initBinaryIonization') + + END SELECT + + ELSE + collision%electronSecondary => NULL() + + END IF + !momentum change per ionization process collision%deltaV = sqrt(collision%eThreshold / collision%electron%m) @@ -336,6 +355,12 @@ MODULE moduleCollisions !Copy basic information from primary electron newElectron = electron + !If secondary electron species indicates, convert + IF (ASSOCIATED(self%electronSecondary)) THEN + newElectron%species => self%electronSecondary + + END IF + !Secondary electorn gains energy from ionization newElectron%v = vChange -- 2.49.1