96 SUBROUTINE w3sdb1 (IX, A, DEPTH, EMEAN, FMEAN, WNMEAN, CG, LBREAK, S, D )
205 INTEGER,
INTENT(IN) :: IX
206 REAL,
INTENT(IN) :: A(NSPEC)
207 REAL,
INTENT(INOUT) :: EMEAN, FMEAN, WNMEAN, DEPTH
208 REAL,
INTENT(OUT) :: S(NSPEC), D(NSPEC)
209 REAL,
INTENT(IN) :: CG(NK)
210 LOGICAL,
INTENT(OUT) :: LBREAK
211 INTEGER :: ITH, IK, IWB
218 INTEGER,
SAVE :: IENT = 0
220 real*8 :: hm, bb, arg, q0, qb, b, cbj, hrms, eb(nk)
221 real*8 :: aux, cbj2, ratio, s0, s1, thr, br1, br2, fak
230 CALL strace (ient,
'W3SDB1')
239 IF (sum(a) .LT. thr)
RETURN
244 WRITE (ndst,9000) sdbc1, sdbc2, fdonly
254 eb(ik) = eb(ik) + a(ith+(ik-1)*nth)
258 eb(ik) = eb(ik) * dden(ik) / cg(ik)
262 fmean2 = fmean2 + eb(ik) *
sig(ik)
264 fmean2 = fmean2 / etot *
tpiinv
272 hm = dble(sdbc2) * dble(depth)
277 hm = dble(sdbc2) / dble(wnmean) * tanh( dble(wnmean) * max(depth,0.) )
283 hrms = dsqrt(8.d0 * dble(emean))
284 IF ( hm .GT. thr)
THEN
285 bb = hrms * hrms / ( hm * hm )
295 IF ( b .LE. 0.5d0 )
THEN
297 ELSE IF ( b .LE. 1.d0 )
THEN
298 q0 = ( 2.d0 * b - 1.d0 ) ** 2
303 IF ( b .LE. 0.2d0 )
THEN
305 ELSE IF ( b .LT. 1.d0 )
THEN
306 arg = exp(( q0 - 1.d0 ) / bb )
307 qb = q0 - bb * ( q0 - arg ) / ( bb - arg )
319 IF ( ( bb .GT. thr) .AND. ( abs( bb - qb ) .GT. thr) )
THEN
320 IF ( bb .LT. 1.0)
THEN
321 cbj = 2 * dble(sdbc1) * qb * dble(fmean) / bb
323 cbj = 2 * dble(sdbc1) * dble(fmean) * bb
330 ELSE IF (iwb == 2)
THEN
331 IF (etot .GT. thr)
THEN
333 fak = (1+4./sqrt(
pi)*(b*bb+1.5*b)*exp(-bb)-erf(b))
334 cbj = -sdbc1*sqrt(
pi)/16.*fmean*hrms**3/depth/etot
342 IF (cbj .GT. 0.)
THEN
350 WRITE(*,
'(A200)')
'IX, DEPTH, CBJ, BB, QB, SDBC1, SDBC2, FMEAN, FMEAN2, HS'
351 WRITE(*,
'(I10,20F20.10)') ix, depth, cbj, bb, qb, sdbc1, sdbc2, fmean, fmean2, 4*sqrt(etot)
360 dout(ik,ith) = d(ith+(ik-1)*nth)
363 CALL prt2ds (ndst, nk, nk, nth, dout,
sig,
' ', 1., &
364 0.0, 0.001,
'Diag Sdb',
' ',
'NONAME')
368 CALL outmat (ndst, d, nth, nth, nk,
'diag Sdb')
376 9000
FORMAT (
' TEST W3SDB1 : PARAMETERS :',2f7.3,l4)