5 &( cx , cy , ct , xk , cg , npoin2, ndire ,
6 & iff , nf , f , rx , ry , rxx , ryy , neigb )
79 & freq , costet, sintet, dfreq, sphe, proinf, nbor, nptfr,
80 & sccg,sdelta,sxkonpt,sddx,sddy,
81 & sqrdelta,sqrccg,frdk,frda,scda,
82 & l_delta,deja_diffrac,
83 & optder, fltdif, diffra, nb_close, f2difm, ampli, div , maxnsp
92 INTEGER,
INTENT(IN) :: NF,NDIRE,NPOIN2,IFF
93 INTEGER,
INTENT(IN) :: NEIGB(npoin2,maxnsp)
94 DOUBLE PRECISION,
INTENT(INOUT) :: CX(npoin2,ndire)
95 DOUBLE PRECISION,
INTENT(INOUT) :: CY(npoin2,ndire)
96 DOUBLE PRECISION,
INTENT(INOUT) :: CT(npoin2,ndire)
97 DOUBLE PRECISION,
INTENT(IN) :: CG(npoin2,nf),XK(npoin2,nf)
98 DOUBLE PRECISION,
INTENT(IN) :: F(npoin2,ndire,nf)
99 DOUBLE PRECISION,
INTENT(IN) :: RX(maxnsp,npoin2)
100 DOUBLE PRECISION,
INTENT(IN) :: RY(maxnsp,npoin2)
101 DOUBLE PRECISION,
INTENT(IN) :: RXX(maxnsp,npoin2)
102 DOUBLE PRECISION,
INTENT(IN) :: RYY(maxnsp,npoin2)
108 DOUBLE PRECISION CDELTA,DELTAN
114 IF(.NOT.deja_diffrac)
THEN 115 ALLOCATE(sqrdelta(npoin2))
116 ALLOCATE(sqrccg(npoin2))
117 ALLOCATE(frdk(npoin2,2))
118 ALLOCATE(frda(npoin2,2))
119 ALLOCATE(scda(npoin2,3))
120 ALLOCATE(l_delta(npoin2))
131 WRITE(
lu,*)
'***************************************' 132 WRITE(
lu,*)
' ATTENTION : DIFFRACTION IS NOT TAKEN ' 133 WRITE(
lu,*)
' INTO ACCOUNT IN THE CASE OF INFINITE ' 134 WRITE(
lu,*)
' WATER DEPTH ' 135 WRITE(
lu,*)
'***************************************' 156 sccg%R(ipoin) = cg(ipoin,iff)*
deupi*freq(iff)/xk(ipoin,iff)
157 sxkonpt%R(ipoin)=1.d0/(xk(ipoin,iff)**2)
158 sqrccg(ipoin)=sqrt(abs(sccg%R(ipoin)))
175 ampli(ipoin) = sqrt(2.d0*f(ipoin,ip,iff)*dfreq(iff)
178 ampli(ipoin)=ampli(ipoin)*xk(ipoin,iff)*sqrccg(ipoin)
190 frda(i,1)=
st1%R(i)*
st0%R(i)
196 frda(i,2)=
st1%R(i)*
st0%R(i)
208 frdk(i,1)=
st1%R(i)*
st0%R(i)
214 frdk(i,2)=
st1%R(i)*
st0%R(i)
223 frdk(i,1)=
st1%R(i)*
st0%R(i)
229 frdk(i,2)=
st1%R(i)*
st0%R(i)
246 & rx(1,ipoin),ry(1,ipoin),
247 & rxx(1,ipoin),ryy(1,ipoin),
248 & npoin2,ipoin,maxnsp,ampli,
249 & frda(ipoin,1),frda(ipoin,2),
250 & scda(ipoin,1),scda(ipoin,2),
251 & scda(ipoin,3),.false.,.true.)
254 ELSEIF(optder.EQ.2)
THEN 270 scda(i,3)=
st1%R(i)*
st0%R(i)
276 scda(i,3)=scda(i,3)+
st1%R(i)*
st0%R(i)
280 WRITE(
lu,*)
'OPTDER=',optder,
' NOT TREATED' 290 div(ipoin)=sccg%R(ipoin)*scda(ipoin,3)
291 & + frdk(ipoin,1)*frda(ipoin,1)
292 & + frdk(ipoin,2)*frda(ipoin,2)
296 div(ipoin)=sxkonpt%R(ipoin)*scda(ipoin,3)
297 & + frdk(ipoin,1)*frda(ipoin,1)
298 & + frdk(ipoin,2)*frda(ipoin,2)
305 l_delta(ipoin)=.true.
306 IF(f(ipoin,ip,iff).LE.f2difm)
THEN 307 sdelta%R(ipoin) = 0.d0
308 l_delta(ipoin)=.false.
309 sqrdelta(ipoin) =1.d0
314 sdelta%R(ipoin)=div(ipoin)*sxkonpt%R(ipoin)/
315 & (sccg%R(ipoin)*ampli(ipoin))
317 sdelta%R(ipoin)=(div(ipoin)/ampli(ipoin))
320 IF(sdelta%R(ipoin).LE.-1.d0)
THEN 322 sqrdelta(ipoin) =1.d0
323 l_delta(ipoin)=.false.
324 sdelta%R(ipoin)= 0.d0
326 sqrdelta(ipoin) = sqrt(1.d0+sdelta%R(ipoin))
327 l_delta(ipoin)=.true.
330 IF(sqrdelta(ipoin).LE.f2difm)
THEN 331 sqrdelta(ipoin) =1.d0
332 l_delta(ipoin)=.false.
333 sdelta%R(ipoin)= 0.d0
340 l_delta(ipoin)=.false.
342 sdelta%R(ipoin)= 0.d0
350 CALL ov(
'X=YZ ', x=sddx%R, y=
st1%R, z=
st0%R, dim1=npoin2)
354 CALL ov(
'X=YZ ', x=sddy%R, y=
st1%R, z=
st0%R, dim1=npoin2)
360 IF(l_delta(ipoin))
THEN 361 deltan = -sintet(ip)*sddy%R(ipoin)+costet(ip)*sddx%R(ipoin)
362 cdelta = cg(ipoin,iff)/sqrdelta(ipoin)/2.d0
363 ct(ipoin,ip)=ct(ipoin,ip)*sqrdelta(ipoin)-cdelta*deltan
364 cx(ipoin,ip)=cx(ipoin,ip)*sqrdelta(ipoin)
365 cy(ipoin,ip)=cy(ipoin,ip)*sqrdelta(ipoin)
378 WRITE(
lu,*)
'***************************************' 379 WRITE(
lu,*)
' ATTENTION : THE PRESENT VERSION OF ' 380 WRITE(
lu,*)
' TOMAWAC CANNOT SIMULATE DIFFRACTION ' 381 WRITE(
lu,*)
' WHEN SPHERICAL COORDINATES ARE SET ' 382 WRITE(
lu,*)
'***************************************' subroutine ov(OP, X, Y, Z, C, DIM1)
subroutine rpi_intr(NEIGB, NB_CLOSE, RX, RY, RXX, RYY, NPOIN2, I, MAXNSP, FFD, FIRDIV1, FIRDIV2, SECDIV1, SECDIV2, SECDIV3, FRSTDIV, SCNDDIV)
type(bief_obj), target st0
type(bief_obj), target sa
subroutine diffrac(CX, CY, CT, XK, CG, NPOIN2, NDIRE, IFF, NF, F, RX, RY, RXX, RYY, NEIGB)
type(bief_obj), target st1
subroutine vector(VEC, OP, FORMUL, IELM1, XMUL, F, G, H, U, V, W, MESH, MSK, MASKEL, LEGO, ASSPAR)
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
type(bief_mesh), target mesh