aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/Collision
diff options
context:
space:
mode:
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 +