aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/Collision
diff options
context:
space:
mode:
authorGravatar Yinjian Zhao <yinjianzhao@lbl.gov> 2019-11-24 13:53:41 -0700
committerGravatar Yinjian Zhao <yinjianzhao@lbl.gov> 2019-11-24 13:53:41 -0700
commite859fcf3ee3ddb9efbb8e49c09852bb9c9fa32c7 (patch)
treebcea264fd3840b070dbded9cc883ed750c96f903 /Source/Particles/Collision
parenta9b158c647a20d030c98c18636d8bdb81d6dda35 (diff)
downloadWarpX-e859fcf3ee3ddb9efbb8e49c09852bb9c9fa32c7.tar.gz
WarpX-e859fcf3ee3ddb9efbb8e49c09852bb9c9fa32c7.tar.zst
WarpX-e859fcf3ee3ddb9efbb8e49c09852bb9c9fa32c7.zip
Modifed UpdateMomentumPerezElastic.H again.ls
Diffstat (limited to 'Source/Particles/Collision')
-rw-r--r--Source/Particles/Collision/UpdateMomentumPerezElastic.H14
1 files changed, 11 insertions, 3 deletions
diff --git a/Source/Particles/Collision/UpdateMomentumPerezElastic.H b/Source/Particles/Collision/UpdateMomentumPerezElastic.H
index 2a3b0f847..c66edd655 100644
--- a/Source/Particles/Collision/UpdateMomentumPerezElastic.H
+++ b/Source/Particles/Collision/UpdateMomentumPerezElastic.H
@@ -103,9 +103,17 @@ void UpdateMomentumPerezElastic (
// Compute scattering angle
T_R cosXs;
T_R sinXs;
- if ( s <= 0.01 )
- { cosXs = 1. + s * std::log(buf1); }
- else if ( s > 0.01 && s <= 3. )
+ if ( s <= 0.1 )
+ {
+ while ( true )
+ {
+ cosXs = 1. + s * std::log(buf1);
+ // avoid the bug when buf1 is too small
+ if ( cosXs >= -1.0 ) { break; }
+ buf1 = amrex::Random();
+ }
+ }
+ else if ( s > 0.1 && s <= 3. )
{
// buf2 is A inverse
buf2 = 0.0056958 + 0.9560202*s - 0.508139*s*s +