@@ -178,8 +178,8 @@ SUBROUTINE s_coeff( pres,rho,c,coeffs )
178178 coeffs(2 ,i1,i2) = - 3d0 * i2/ 2d0
179179 coeffs(3 ,i1,i2) = i2/ rho
180180 coeffs(4 ,i1,i2) = i1
181- IF (Re_inv/= dflt_real) coeffs(5 ,i1,i2) = 4d0 * i2* Re_inv/ rho
182- IF ( Web /= dflt_real) coeffs(6 ,i1,i2) = 2 * i2/ Web/ rho
181+ IF (Re_inv/= dflt_real) coeffs(5 ,i1,i2) = - 4d0 * i2* Re_inv/ rho
182+ IF ( Web /= dflt_real) coeffs(6 ,i1,i2) = - 2d0 * i2/ Web/ rho
183183 ELSE IF (bubble_model== 2 ) THEN
184184 ! KM with approximation of 1/(1-V/C) = 1+V/C
185185 coeffs(1 ,i1,i2) = - 3d0 * i2/ 2d0
@@ -228,7 +228,12 @@ SUBROUTINE s_mom_inv( q_prim_vf, momsp, moms3d, is1, is2, is3 )
228228 n_tait = fluid_pp(1 )% gamma
229229 n_tait = 1.d0 / n_tait + 1.d0 ! make this the usual little 'gamma'
230230 B_tait = fluid_pp(1 )% pi_inf
231- c = DSQRT(n_tait* (pres+ B_tait)/ (rho* (1.d0 - alf)))
231+ c = n_tait* (pres+ B_tait)/ (rho* (1.d0 - alf))
232+ IF (c > 0.d0 ) THEN
233+ c = DSQRT(c)
234+ ELSE
235+ c = sgm_eps
236+ END IF
232237 END IF
233238
234239 CALL s_coeff(pres,rho,c,coeff)
@@ -284,15 +289,25 @@ SUBROUTINE s_mom_inv( q_prim_vf, momsp, moms3d, is1, is2, is3 )
284289 momsp(1 )% sf(id1,id2,id3) = f_quad(abscX,abscY,wght,3d0 ,0d0 ,0d0 )
285290 momsp(2 )% sf(id1,id2,id3) = 4.d0 * pi* nbub* f_quad(abscX,abscY,wght,2d0 ,1d0 ,0d0 )
286291 momsp(3 )% sf(id1,id2,id3) = f_quad(abscX,abscY,wght,3d0 ,2d0 ,0d0 )
287- momsp(4 )% sf(id1,id2,id3) = f_quad(abscX,abscY,wght,3d0 * (1d0 - gam),0d0 ,3d0 * gam)
288-
289- ! DO i1 = 1,nterms
290- ! IF (momsp(i1)%sf(id1,id2,id3)/=momsp(i1)%sf(id1,id2,id3)) THEN
291- ! PRINT*, 'nan in momsp', i1,id1
292- ! PRINT*, 'moms: ', moms(:)
293- ! CALL s_mpi_abort()
294- ! END IF
295- ! END DO
292+ IF (ABS (gam-1.d0 ) <= 1.d-4 ) THEN
293+ ! Gam \approx 1, don't risk imaginary quadrature
294+ momsp(4 )% sf(id1,id2,id3) = 1.d0
295+ ELSE
296+ momsp(4 )% sf(id1,id2,id3) = f_quad(abscX,abscY,wght,3d0 * (1d0 - gam),0d0 ,3d0 * gam)
297+ END IF
298+
299+ DO i1 = 1 ,4
300+ IF (momsp(i1)% sf(id1,id2,id3) /= momsp(i1)% sf(id1,id2,id3)) THEN
301+ PRINT * , ' NaN in sp moment' , i1, ' location' ,id1,id2,id3
302+ PRINT * , ' Rs' , Rvec(:)
303+ PRINT * , ' alpha' , alf
304+ PRINT * , ' nbub' , nbub
305+ PRINT * , ' abscX' , abscX(:,:)
306+ PRINT * , ' abscY' , abscY(:,:)
307+ PRINT * , ' wght' , wght(:,:)
308+ CALL s_mpi_abort()
309+ END IF
310+ END DO
296311 ELSE
297312 DO q = 1 ,nb
298313 DO i1 = 0 ,2 ; DO i2 = 0 ,2
@@ -384,7 +399,7 @@ SUBROUTINE s_hyqmom(frho,fup,fmom)
384399 c2 = d2 - bu** 2d0
385400 frho(1 ) = fmom(1 )/ 2d0 ;
386401 frho(2 ) = fmom(1 )/ 2d0 ;
387- c2 = MAXVAL ( (/ c2,verysmall / ) )
402+ c2 = MAXVAL ( (/ c2, verysmall / ) )
388403 fup(1 ) = bu - DSQRT(c2)
389404 fup(2 ) = bu + DSQRT(c2)
390405
0 commit comments