The TELEMAC-MASCARET system  trunk
qtria1.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE qtria1
3 ! *****************
4 !
5  &( f , xk , nf , ndire , npoin2, tstot , ftot , fmoy )
6 !
7 !***********************************************************************
8 ! TOMAWAC V6P1 27/06/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE CONTRIBUTION OF THE NON-LINEAR
12 !+ INTERACTIONS SOURCE TERM (FREQUENCY TRIADS).
13 !
14 !history EDF/DER/LNH
15 !+ 26/12/96
16 !+ V1P1
17 !+
18 !
19 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
20 !+ 13/07/2010
21 !+ V6P0
22 !+ Translation of French comments within the FORTRAN sources into
23 !+ English comments
24 !
25 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
26 !+ 21/08/2010
27 !+ V6P0
28 !+ Creation of DOXYGEN tags for automated documentation and
29 !+ cross-referencing of the FORTRAN sources
30 !
31 !history G.MATTAROLO (EDF - LNHE)
32 !+ 27/06/2011
33 !+ V6P1
34 !+ Translation of French names of the variables in argument
35 !
36 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37 !| ALFLTA |-->| COEFFICIENT ALPHA OF LTA TRIAD INTERACTION MODEL
38 !| DEPTH |-->| WATER DEPTH
39 !| F |-->| DIRECTIONAL SPECTRUM
40 !| FMOY |-->| MEAN FREQUENCIES F-10
41 !| FREQ |-->| DISCRETIZED FREQUENCIES
42 !| FTOT |-->| SPECTRUM VARIANCE
43 !| GRAVIT |-->| GRAVITY ACCELERATION
44 !| NF |-->| NUMBER OF FREQUENCIES
45 !| NDIRE |-->| NUMBER OF DIRECTIONS
46 !| NPOIN2 |-->| NUMBER OF POINTS IN 2D MESH
47 !| RFMLTA |-->| COEFFICIENT OF LTA TRIAD INTERACTION MODEL
48 !| TSTOT |<->| TOTAL PART OF THE SOURCE TERM CONTRIBUTION
49 !| XK |-->| DISCRETIZED WAVE NUMBER
50 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51 !
53  & , raisf, freq, depth
54 !
55  USE interface_tomawac, ex_qtria1 => qtria1
56  IMPLICIT NONE
57 !
58 !.....VARIABLES IN ARGUMENT
59 ! """"""""""""""""""""
60  INTEGER, INTENT(IN) :: NF, NDIRE, NPOIN2
61  DOUBLE PRECISION, INTENT(IN) :: F(npoin2,ndire,nf)
62  DOUBLE PRECISION, INTENT(IN) :: XK(npoin2,nf)
63  DOUBLE PRECISION, INTENT(IN) :: FTOT(npoin2) , FMOY(npoin2)
64  DOUBLE PRECISION, INTENT(INOUT) :: TSTOT(npoin2,ndire,nf)
65 !
66 !.....VARIABLES FROM MODULE TOMAWAC
67 ! """""""""""""""""""""""""""""
68 !| ALFLTA |-->| COEFFICIENT ALPHA OF LTA TRIAD INTERACTION MODEL
69 !| RFMLTA |-->| COEFFICIENT OF LTA TRIAD INTERACTION MODEL
70 !| RAISF |-->| FREQUENTIAL RATIO
71 !
72 !
73 !.....LOCAL VARIABLES
74 ! """""""""""""""""
75  INTEGER IIND , IFMA , IFF , IPL , IPO
76  DOUBLE PRECISION CPH , CGR , BIF , RPS2 , RP ,
77  & fps2 , cphs2 , xkps2 , urs , rind , fmax ,
78  & f2p , cph2p , xk2p , cgr2p , e2p , eps2 ,
79  & omp , om2p , coef , d , deukd ,
80  & splus , smoin ,fp , xkp
81 !
82 !.....FUNCTION / FORMULATION
83 ! """"""""""""""""
84 !
85  coef = gravit*sqrt(2.d0)
86 !
87  DO ipo=1,npoin2
88 !
89  d=depth(ipo)
90 !
91 !.......COMPUTES THE URSELL NUMBER AT THE CONSIDERED POINT IN SPACE
92 ! """""""""""""""""""""""""""""""""""""""""""""""""""""
93  urs = coef*sqrt(ftot(ipo))/(deupi*d*fmoy(ipo))**2
94 !
95 !.......COMPUTES THE CONTRIBUTION OF TRIADS ONLY IF URSELL > 0.1
96 ! """""""""""""""""""""""""""""""""""""""""
97  IF (urs.GT.0.1d0) THEN
98 !
99 !.........COMPUTES THE SINE OF THE BIPHASE
100 ! """""""""""""""""""""""""""""
101  IF (urs.GT.10.d0) THEN
102  bif=1.d0
103  ELSE
104  bif=sin(abs(deupi/4.d0*(-1.d0+tanh(0.2d0/urs))))
105  ENDIF
106 !
107 !.........COMPUTES THE MAXIMUM FREQUENTIAL INDEX
108 ! """"""""""""""""""""""""""""""""""""""
109  fmax = rfmlta*max(fmoy(ipo),freq(1))
110  rind = 1.d0 + log(fmax/freq(1))/log(raisf)
111  ifma = min(int(rind),nf)
112 !
113  DO iff=1,ifma
114  fp = freq(iff)
115  omp = deupi*fp
116  xkp = xk(ipo,iff)
117  cph = omp/xkp
118 !
119 !
120 !...........COMPUTES THE CONTIBUTION S+
121 ! """""""""""""""""""""""""""
122  fps2 = fp/2.d0
123  rind = 1.d0 + log(fps2/freq(1))/log(raisf)
124  iind = int(rind)
125  rind = rind-dble(iind)
126 !
127  IF (iind.GT.0) THEN
128  deukd=2.d0*xkp*d
129  IF(deukd.LE.7.d2) THEN
130  cgr = cph*(0.5d0+xkp*d/sinh(2.d0*xkp*d))
131  ELSE
132  cgr = 0.5d0*cph
133  ENDIF
134  CALL wnscou(xkps2,fps2,d)
135  cphs2 = deupi*fps2/xkps2
137  rps2 = cph*cgr*(
138  & xkps2**2*(gravit*d+2.d0*cphs2**2)/(xkp*d)/
139  & (gravit*d+(2.d0/15.d0)*gravit*d**3*xkp**2-0.4d0*(omp*d)**2)
140  & )**2
141 ! RPS2 = CPH*CGR*RPP(XKPS2,CPHS2,XKP,OMP,D)**2
142 
143 !
144  DO ipl=1,ndire
145  eps2=(1.d0-rind)*f(ipo,ipl,iind)+rind*f(ipo,ipl,iind+1)
146  splus = alflta*rps2*bif*(eps2-2.d0*f(ipo,ipl,iff))*eps2
147  IF(splus.LT.0.d0) splus = 0.d0
148  tstot(ipo,ipl,iff) = tstot(ipo,ipl,iff) + splus
149  ENDDO
150  ENDIF
151 !
152 !
153 !...........COMPUTES THE CONTIBUTION S-
154 ! """""""""""""""""""""""""""
155  f2p = 2.d0*fp
156  rind = 1.d0 + log(f2p/freq(1))/log(raisf)
157  iind = int(rind)
158  rind = rind-dble(iind)
159  IF (iind.LT.ifma) THEN
160  om2p = deupi*f2p
161  CALL wnscou(xk2p,f2p,d)
162  cph2p = om2p/xk2p
163  deukd=2.d0*xk2p*d
164  IF(deukd.LE.700d2) THEN
165  cgr2p = cph2p*(0.5d0+xk2p*d/sinh(2.d0*xk2p*d))
166  ELSE
167  cgr2p = cph2p*0.5d0
168  ENDIF
170  rp = cph2p*cgr2p*(
171  & xkp**2*(gravit*d+2.d0*cph**2)/(xk2p*d)/
172  & (gravit*d+(2.d0/15.d0)*gravit*d**3*xk2p**2-0.4d0*(om2p*d)**2)
173  & )**2
174 ! RP = CPH2P*CGR2P*RPP(XKP,CPH,XK2P,OM2P,D)**2
175 
176 !
177  DO ipl=1,ndire
178  e2p = (1.d0-rind)*f(ipo,ipl,iind)+rind*f(ipo,ipl,iind+1)
179  smoin = 2.d0*alflta*rp*bif*f(ipo,ipl,iff)
180  & *(f(ipo,ipl,iff)-2.d0*e2p)
181  IF(smoin.LT.0.d0) smoin = 0.d0
182  tstot(ipo,ipl,iff) = tstot(ipo,ipl,iff) - smoin
183  ENDDO
184  ENDIF
185 !
186  ENDDO
187  ENDIF
188  ENDDO
189 !
190  RETURN
191  END
subroutine qtria1(F, XK, NF, NDIRE, NPOIN2, TSTOT, FTOT, FMOY)
Definition: qtria1.f:7
subroutine wnscou(CK2, FREQ, DEPTH)
Definition: wnscou.f:7
subroutine coef(S3D_IVIDE, S3D_EPAI, TRA01, S3D_NPFMAX, IMAX, NDEB, S3D_RHOS, GRAV, S3D_DTC, DSIG1)
Definition: coef.f:9