The TELEMAC-MASCARET system  trunk
semimp.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE semimp
3 ! *****************
4 !
5  & (f , cf , xk , nf , ndire, npoin2,
6  & iangnl,tstot, tsder, told , tnew, z0new, twnew,
7  & taux1, taux2, taux3, taux4, taux5, taux6, taux7,
8  & mdia, ianmdi, coemdi, fbor)
9 !
10 !***********************************************************************
11 ! TOMAWAC V7P3
12 !***********************************************************************
13 !
14 !brief SOLVES THE INTEGRATION STEP OF THE SOURCE TERMS USING
15 !+ A SCHEME WITH VARIABLE DEGREE OF IMPLICITATION.
16 !
17 !history M. BENOIT
18 !+ 26/03/95
19 !+ V1P0
20 !+ CREATED
21 !
22 !history M. BENOIT
23 !+ 07/11/96
24 !+ V1P2
25 !+ MODIFIED
26 !
27 !history
28 !+ 25/08/2000
29 !+ V5P0
30 !+ MODIFIED
31 !
32 !history JMH
33 !+ 16/12/2008
34 !+ V5P9
35 !+ BETA HAS BEEN ADDED TO THE LIST OF ARGUMENTS AND
36 !
37 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
38 !+ 13/07/2010
39 !+ V6P0
40 !+ Translation of French comments within the FORTRAN sources into
41 !+ English comments
42 !
43 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
44 !+ 21/08/2010
45 !+ V6P0
46 !+ Creation of DOXYGEN tags for automated documentation and
47 !+ cross-referencing of the FORTRAN sources
48 !
49 !history E.G.RENOU (EDF), G.MATTAROLO (EDF)
50 !+ 12/05/2011
51 !+ V6P1
52 !+ MODIFIED: integration of new source terms, developed by
53 !+ E.G. Renou.
54 !+ - modification of the variables in argument list
55 !+ - modification of the local variable declarations
56 !+ - modification concerning friction velocity and roughness
57 !+ length calculation
58 !+ - calls to subroutines QWINDL, QWIND3, QMOUT2, QNLIN2,
59 !+ QNLIN3
60 !
61 !history G.MATTAROLO (EDF - LNHE)
62 !+ 27/06/2011
63 !+ V6P1
64 !+ Translation of French names of the variables in argument
65 !
66 !history U.H.MERKEL
67 !+ 27/06/2012
68 !+ V6P2
69 !+ Renamed SUM to SOMME, due to NAG compiler
70 !
71 !history E. GAGNAIRE-RENOU (EDF - LNHE)
72 !+ 12/03/2013
73 !+ V6P3
74 !+ HF diagnostic tail is not necessarily imposed
75 !
76 !history VITO BACCHI (EDF - LNHE)
77 !+ 12/09/2014
78 !+ V7P0
79 !+ Friction due to vegetation added.
80 !
81 !history THIERRY FOUQUET (EDF-LNHE)
82 !+ 19/11/2014
83 !+ V7P0
84 !+ BAJ MODELING
85 !
86 !history A JOLY (EDF-LNHE)
87 !+ 18/05/2017
88 !+ V7P3
89 !+ New condition to stop source terms being added to open
90 !+ boundaries.
91 !
92 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
93 !| CF |-->| ADVECTION FIELD ALONG FREQUENCY
94 !| COEMDI |-->| COEFFICIENTS USED FOR MDIA METHOD
95 !| F |<->| DIRECTIONAL SPECTRUM
96 !| FBOR |-->| SPECTRAL VARIANCE DENSITY AT THE BOUNDARIES
97 !| FMOY |<--| MEAN FREQUENCIES F-10
98 !| FREQ |-->| DISCRETIZED FREQUENCIES
99 !| IANGNL |-->| ANGULAR INDICES TABLE
100 !| IANMDI |-->| ANGULAR INDICES TABLE FOR MDIA
101 !| MDIA |-->| NUMBER OF CONFIGURATIONS FOR MDIA METHOD
102 !| NBOR |-->| GLOBAL NUMBER OF BOUNDARY POINTS
103 !| NF |-->| NUMBER OF FREQUENCIES
104 !| NDIRE |-->| NUMBER OF DIRECTIONS
105 !| NPOIN2 |-->| NUMBER OF POINTS IN 2D MESH
106 !| NPTFR |-->| NUMBER OF BOUNDARY POINTS
107 !| TAUX1 |<->| WORK TABLE
108 !| TAUX2 |<->| WORK TABLE
109 !| TAUX3 |<->| WORK TABLE
110 !| TAUX4 |<->| WORK TABLE
111 !| TAUX5 |<->| WORK TABLE
112 !| TAUX6 |<->| WORK TABLE
113 !| TAUX7 |<->| WORK TABLE
114 !| TNEW |<->| WORK TABLE
115 !| TOLD |<->| WORK TABLE
116 !| TSDER |<--| DERIVED PART OF THE SOURCE TERM CONTRIBUTION
117 !| TSTOT |<--| TOTAL PART OF THE SOURCE TERM CONTRIBUTION
118 !| TWNEW |<->| WIND DIRECTION AT TIME N+1
119 !| USNEW |<->| FRICTION VELOCITY AT TIME N+1
120 !| VARIAN |-->| SPECTRUM VARIANCE
121 !| XK |-->| DISCRETIZED WAVE NUMBER
122 !| XKMOY |<--| AVERAGE WAVE NUMBER
123 !| Z0NEW |<->| SURFACE ROUGHNESS LENGTH AT TIME N+1
124 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
125 !
127  & namewx,namewy,unitveb,phasveb,
128  & source_on_bnd,debug,cg,porous,
129  & amorp,lt, gravit, cimpli,
130  & ifrbj, ifrtg , ifrro, ifrih,
131  & diaghf, coefhs, nsits, smout,
132  & fmoy, varian, xkmoy, sfrot, svent, lvent, strif, vent, vensta,
133  & luvef, luveb, namvef, namveb, fmtveb, fmtvef,
134  & sbrek, xdtbrk, ndtbrk, stria, proinf, df_lim, limit,
135  & vegetation, cbaj, sdscu,freq, dfreq, depth,
136  & teta, tailf, raisf, nbor, nptfr, lifbor,
137  & tv1 ,tv2 , uv1, uv2, vv1, vv2, uv, vv,
138  & tauwav,usold, usnew, twold, z0old, at, dtsi, indiv, nvwin
139 ! FROM DECLARATION_TOMAWAC :
140 ! DIAGHF OPTION FOR SPECTRUM DIAGNOSTIC TAIL
141 ! CBAJ CHOICE OF THE CENTRAL FREQUENCY CALCULUS
142 ! COEFHS MAXIMUM VALUE OF THE RATIO HM0 ON D
143 ! DF_LIM WORK TABLE
144 ! DTSI INTEGRATION TIME STEP (SECONDS)
145 ! F1 MINIMAL DISCRETIZED FREQUENCY
146 ! INDIV WIND FILE FORMAT
147 ! LIMIT TYPE OF WAVE GROWTH LIMITER MODEL SELECTED
148 ! LVENT LINEAR WAVE GROWTH MODEL SELECTION
149 ! NDTBRK NUMBER OF TIME STEPS FOR BREAKING SOURCE TERM
150 ! NSITS NUMBER OF ITERATIONS FOR THE SOURCE TERMS
151 ! PROINF LOGICAL INDICATING INFINITE DEPTH ASSUMEPTION
152 ! RAISF FREQUENTIAL RATIO
153 ! SBREK DEPTH-INDUCED BREAKING DISSIPATION MODEL
154 ! SDSCU DISSIPATION BY STRONG CURRENT
155 ! SMOUT SELECTION OF WHITE CAPPING SOURCE TERM MODEL
156 ! STRIA SELECTION OF THE TRIAD INTERACTION MODEL
157 ! STRIF SELECTION OF QUADRUPLET INTERACTION MODEL
158 ! SFROT SELECTION OF THE BOTTOM FRICTION DISSIPATION
159 ! SVENT SELECTION OF THE WIND GENERATION MODEL
160 ! TAILF SPECTRUM TAIL FACTOR
161 ! TAUWAV STRESS DUE TO THE WAVES
162 ! TETA DISCRETIZED DIRECTIONS
163 ! TWOLD WIND DIRECTION AT TIME N
164 ! TNEW WORK TABLE
165 ! TOLD WORK TABLE
166 ! TV1 TIME T1 IN THE WIND FILE
167 ! TV2 TIME T2 IN THE WIND FILE
168 ! USOLD FRICTION VELOCITY AT TIME N
169 ! U1,V1 WIND SPEED AT TIME T1 IN THE WIND FILE
170 ! U2,V2 WIND SPEED AT TIME T2 IN THE WIND FILE
171 ! UV,VV WIND DATA INTERPOLATED OVER 2D MESH
172 ! VEGETATION IF YES, VEGETATION TAKEN INTO ACCOUNT
173 ! VENSTA INDICATES IF THE WIND IS STATIONARY
174 ! VENT INDICATES IF WIND IS TAKEN INTO ACC
175 ! XDTBRK COEFFICIENT OF TIME SUB-INCREMENTS FOR BREAKING
176 ! Y ORDINATES OF POINTS IN THE MESH
177 ! Z0OLD SURFACE ROUGHNESS LENGTH AT TIME N
178  USE interface_tomawac, ex_semimp => semimp
179 !
182  IMPLICIT NONE
183 !
184 !
185 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
186 !
187  INTEGER, INTENT(IN) :: NPOIN2,NDIRE,NF, IANGNL(*)
188  DOUBLE PRECISION, INTENT(INOUT) :: Z0NEW(npoin2), TWNEW(npoin2)
189  DOUBLE PRECISION, INTENT(INOUT) :: TAUX1(npoin2), TAUX2(npoin2),
190  & taux3(npoin2), taux4(npoin2),
191  & taux5(npoin2), taux6(npoin2),
192  & taux7(npoin2)
193  DOUBLE PRECISION, INTENT(INOUT) :: F(npoin2,ndire,nf)
194  DOUBLE PRECISION, INTENT(INOUT) :: TSDER(npoin2,ndire,nf)
195  DOUBLE PRECISION, INTENT(INOUT) :: TSTOT(npoin2,ndire,nf)
196  DOUBLE PRECISION, INTENT(INOUT) :: TOLD(npoin2,ndire)
197  DOUBLE PRECISION, INTENT(INOUT) :: TNEW(npoin2,ndire)
198  DOUBLE PRECISION, INTENT(INOUT) :: XK(npoin2,nf)
199  DOUBLE PRECISION, INTENT(IN) :: CF(*)
200 !....MDIA method declarations
201  INTEGER, INTENT(IN) :: MDIA, IANMDI(*)
202  DOUBLE PRECISION, INTENT(IN) :: COEMDI(*)
203  DOUBLE PRECISION, INTENT(IN) :: FBOR(nptfr,ndire,nf)
204 !
205 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
206 !
207  INTEGER ISITS,IFF,IP,JP,K,NVENT,IFCAR,MF1,MF2,MFMAX,IDT
208  INTEGER IPTFR
209  DOUBLE PRECISION AUX1,AUX2,AUX3,AUX4,COEF
210  DOUBLE PRECISION FM1,FM2,TDEB,TFIN,VITVEN
211  DOUBLE PRECISION VITMIN,HM0,HM0MAX,DTN,SOMME,AUXI,USMIN
212 ! MDIA, HERE HARDCODED
213  DOUBLE PRECISION XCCMDI(4)
214 !
215  LOGICAL TROUVE(3)
216 !
217  DOUBLE PRECISION CPHAS , SEUILF
218 !
219  CHARACTER(LEN=8) FMTVEN
220 !
221 !-----------------------------------------------------------------------
222 !
223  vitmin=1.d-3
224 !
225 ! ------------------------------------------------------------------
226 ! CHOPS THE SPECTRUM IN ACCORDANCE WITH THE BATHYMETRY
227 ! -----------------------------------------------------------------
228 !
229  IF(.NOT.proinf) THEN
230 !
231 ! 0.1 COMPUTES THE TOTAL VARIANCE OF THE SPECTRUM
232 ! -----------------------------------------------
233 !
234  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE TOTNRJ'
235  CALL totnrj(varian, f, nf, ndire, npoin2)
236  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE TOTNRJ'
237 !
238 ! 0.2 COMPUTES THE CORRECTION COEFFICIENT ON THE SPECTRUM
239 ! -------------------------------------------------------
240 !
241  DO ip=1,npoin2
242  hm0max=coefhs*depth(ip)
243  hm0 =max(4.d0*sqrt(varian(ip)),1.d-20)
244  taux1(ip)=min((hm0max/hm0)**2,1.d0)
245  ENDDO
246 !
247 ! 0.3 CORRECTS THE SPECTRUM
248 ! --------------------------
249 !
250  DO iff=1,nf
251  DO jp=1,ndire
252  DO ip=1,npoin2
253  f(ip,jp,iff)=f(ip,jp,iff)*taux1(ip)
254  ENDDO
255  ENDDO
256  ENDDO
257 !
258  ENDIF
259 !
260 ! ----------------------------------------------------------------
261 ! IF THE COMPUTATION INCLUDES STATIONARY WINDS, DUPLICATES THE
262 ! CONDITIONS AT THE START OF THE TIME STEP TO THE END OF THE TIME
263 ! STEP. (THIS IS BECAUSE ARRAYS TWNEW, USNEW AND Z0NEW ARE WORKING
264 ! ARRAYS USED IN DUMP2D BETWEEN 2 CALLS TO SEMIMP).
265 !
266 ! TODO: QUESTION JMH 16/09/2014 : WHAT IF VENT=.FALSE. AND USNEW USED
267 ! IN BETWEEN ???? IT WOULD BE SAFER TO HAVE USOLD AND USNEW
268 ! WITH THIS NAME AND ONLY USED FOR THIS...
269 !
270 ! ----------------------------------------------------------------
271 !
272  IF(vent.AND.vensta) THEN
273  DO ip=1,npoin2
274  twnew(ip)=twold(ip)
275  ENDDO
276 !
277  IF (svent.GE.2.OR.(lvent.EQ.1.AND.svent.NE.1).OR.
278  & (smout.EQ.2.AND.svent.NE.1)) THEN
279  DO ip=1,npoin2
280  usnew(ip)=usold(ip)
281  z0new(ip)=z0old(ip)
282  ENDDO
283  ENDIF
284  ENDIF
285 !
286 ! -----------------------------------------------------------------
287 ! START OF THE MAIN LOOP ON THE NUMBER OF TIME STEPS (NSITS)
288 ! FOR INTEGRATION OF THE SOURCE TERMS, BY PROPAGATION TIME STEP
289 ! -----------------------------------------------------------------
290 !
291  DO isits=1,nsits
292 !
293 ! 1. ASSIGNS THE START AND END DATES OF TIME STEP
294 ! ===============================================
295 !
296  tdeb=at-(nsits-isits+1)*dtsi
297  tfin=tdeb+dtsi
298 !
299 !
300 ! 2. UPDATES (IF HAS TO) THE WIND ARRAYS
301 ! ======================================
302 !
303  IF(vent.AND..NOT.vensta) THEN
304 !
305 ! 2.1 UPDATES THE WIND FIELD FOR DATE TFIN
306 ! ---------------------------------------------------
307 !
308  IF(namveb(1:1).NE.' '.OR.namvef(1:1).NE.' ') THEN
309  IF(namvef(1:1).NE.' ') THEN
310  nvent=luvef
311  fmtven=fmtvef
312  ELSE
313  nvent=luveb
314  fmtven=fmtveb
315  ENDIF
316  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE NOUDON'
317  CALL noudon(uv,namewx,2, vv,namewy,2,
318  & vv,'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',0,
319  & npoin2, nvent,fmtven,tfin,tv1,tv2,
320  & uv1,uv2,vv1,vv2,vv1,vv2,indiv,
321  & 'WIND ',nvwin,texveb,trouve,unitveb,phasveb)
322  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE NOUDON'
323  ELSE
324  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE ANAVEN'
325  CALL anaven
326  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE ANAVEN'
327  ENDIF
328 !
329 ! 2.2 COMPUTES THE WIND DIRECTION
330 ! -----------------------------------
331 !
332  DO ip=1,npoin2
333  vitven=sqrt(uv(ip)**2+vv(ip)**2)
334  IF(vitven.GT.vitmin) THEN
335  twnew(ip)=atan2(uv(ip),vv(ip))
336  ELSE
337  twnew(ip)=0.d0
338  ENDIF
339  ENDDO
340 !
341 ! 2.3 COMPUTES THE FRICTION VELOCITIES AND ROUGHNESS LENGTHS
342 ! ------------------------------------------------------------
343 !
344  IF(svent.GE.2.OR.(lvent.EQ.1.AND.svent.NE.1).OR.
345  & (smout.EQ.2.AND.svent.NE.1)) THEN
346  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE USTAR2'
347  CALL ustar2( usnew, npoin2)
348  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE USTAR2'
349  ENDIF
350 !
351  ENDIF
352 !
353  IF(vent.AND.svent.EQ.1) THEN
354  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE USTAR1'
355  CALL ustar1(usnew, z0new, tauwav, npoin2)
356  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE USTAR1'
357  ENDIF
358 !
359 !
360 ! 3. COMPUTES MEAN PARAMETERS FOR THE DIRECTIONAL SPECTRUM
361 ! =========================================================
362 !
363 ! 3.1 COMPUTES THE TOTAL VARIANCE OF THE SPECTRUM
364 ! -----------------------------------------------
365 !
366  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE TOTNRJ'
367  CALL totnrj(varian, f, nf, ndire, npoin2)
368  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE TOTNRJ'
369 !
370  IF (cbaj.EQ.0) THEN
371 !
372 ! 3.2 COMPUTES THE MEAN FREQUENCY OF THE SPECTRUM
373 ! -----------------------------------------------
374 !
375  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE FREMOY'
376  CALL fremoy(fmoy, f, nf, ndire, npoin2)
377  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE FREMOY'
378 !
379 ! 3.3 COMPUTES THE MEAN WAVE NUMBER OF THE SPECTRUM
380 ! -------------------------------------------------
381  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE KMOYEN'
382  CALL kmoyen (xkmoy, xk , f, nf, ndire, npoin2,
383  & taux1 , taux2 , taux3 )
384  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE KMOYEN'
385  ELSEIF (cbaj.EQ.1) THEN
386 !
387 ! 3.2 COMPUTES THE MEAN FREQUENCY OF THE SPECTRUM
388 ! -----------------------------------------------
389 !
390  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE FREM01'
391  CALL frem01 (fmoy, f, nf, ndire, npoin2)
392  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE FREM01'
393 !
394 ! 3.3 COMPUTES THE MEAN WAVE NUMBER OF THE SPECTRUM
395 ! -------------------------------------------------
396  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE KMOYE2'
397  CALL kmoye2(xkmoy, xk, f, nf, ndire , npoin2,
398  & taux1 , taux2 , taux3 )
399  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE KMOYE2'
400  ELSE
401  WRITE(lu,*) 'UNKNOWN VALUE OF BAJ:',cbaj
402  CALL plante(1)
403  stop
404  ENDIF
405 !
406 ! 4. COMPUTES THE CONTRIBUTIONS OF THE SOURCE TERMS FOR GENERATION,
407 ! WHITECAPPING AND INTERACTIONS BETWEEN QUADRUPLETS
408 ! =============================================================
409 !
410 ! 4.1 INITIALISES THE ARRAYS FOR THE SOURCE TERMS
411 ! ----------------------------------------------------
412  DO iff=1,nf
413  DO jp=1,ndire
414  DO ip=1,npoin2
415  tstot(ip,jp,iff)=0.d0
416  tsder(ip,jp,iff)=0.d0
417  ENDDO
418  ENDDO
419  ENDDO
420 !
421 ! 4.2 GENERATION BY WIND
422 ! ----------------------
423 !
424  IF(vent) THEN
425  IF(svent.EQ.1) THEN
426  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QWIND1'
427  CALL qwind1
428  &( tstot , tsder , f , xk , usold , usnew , twold , twnew ,
429  & z0old , z0new , nf , ndire , npoin2, told , tnew ,
430  & taux2 , taux3 , taux4 , taux5 , taux6 , taux7 )
431  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QWIND1'
432  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE STRESS'
433  CALL stress
434  &( tauwav, tstot , f , usnew , twnew , z0new ,
435  & npoin2, ndire , nf , taux1 , taux2 , taux3 )
436  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE STRESS'
437  ELSEIF(svent.EQ.2) THEN
438  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QWIND2'
439  CALL qwind2
440  &( tstot , tsder , f , xk , usold , usnew , twold , twnew ,
441  & nf , ndire , npoin2, t3_01%R,t3_02%R )
442  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QWIND2'
443  ELSEIF(svent.EQ.3) THEN
444  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QWIND3'
445  CALL qwind3
446  &( tstot , tsder , f , xk , usold , usnew , twold , twnew ,
447  & nf , ndire , npoin2, taux1 , taux2 , taux3 , taux4 )
448  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QWIND3'
449 !
450  ENDIF
451 !
452 ! ADDS THE LINEAR WIND GROWTH SOURCE TERME
453 ! """""""""""""""""""""""""""""""""""""""
454 !
455  IF(lvent.EQ.1) THEN
456  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QWINDL'
457  CALL qwindl(tstot, usold, usnew, twold, twnew, nf, ndire,
458  & npoin2, t3_01%R, t3_02%R, taux5, taux6)
459  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QWINDL'
460  ENDIF
461 !
462  ELSE
463 !
464  DO ip=1,npoin2
465  usnew(ip)=0.d0
466  ENDDO
467 !
468  ENDIF
469 
470  IF (cbaj.EQ.1) THEN
471 ! Calculation pf mean frequency fmean_WS put in the tabular TAUX7
472  seuilf = 1.d-20
473  DO ip=1,npoin2
474  taux1(ip) = 0.0d0
475  taux2(ip) = 0.0d0
476  ENDDO
477 !
478  DO iff=1,nf
479  aux3=deupi/dble(ndire)*dfreq(iff)
480  aux4=aux3/freq(iff)
481  DO jp=1,ndire
482  DO ip=1,npoin2
483  cphas=deupi*freq(iff)/xk(ip,iff)
484  auxi=28.0d0/cphas*usnew(ip)*cos(teta(jp)-twnew(ip))
485  IF ((tstot(ip,jp,iff).GT.0).OR.(auxi.GE.1.0d0)) THEN
486  taux1(ip) = taux1(ip) + f(ip,jp,iff)*aux3
487  taux2(ip) = taux2(ip) + f(ip,jp,iff)*aux4
488  ENDIF
489  ENDDO
490  ENDDO
491  ENDDO
492 !
493  DO ip=1,npoin2
494  IF (taux1(ip).LT.seuilf) THEN
495  taux7(ip) = seuilf
496  ELSE
497  taux7(ip) = taux1(ip)/taux2(ip)
498  ENDIF
499  ENDDO
500  ENDIF
501 
502 ! 4.3 NON-LINEAR INTERACTIONS BETWEEN QUADRUPLETS
503 ! -----------------------------------------------
504 !
505  IF(strif.EQ.1) THEN
506 !
507  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QNLIN1'
508  CALL qnlin1(tstot, tsder, iangnl, nf, ndire, npoin2,
509  & f, xkmoy, taux1, taux2, taux3, taux4, taux5,taux6)
510  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QNLIN1'
511 !
512  ELSEIF (strif.EQ.2) THEN
513 !
514 ! sets XCCMDI values for MDIA method
515  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QNLIN2'
516  xccmdi(1)=8.360d7
517  xccmdi(2)=7.280d7
518  xccmdi(3)=3.340d7
519  xccmdi(4)=2.570d6
520  DO k=1,mdia
521  xccmdi(k)=xccmdi(k)/dble(mdia)
522  ENDDO
523 ! alls MDIA method
524  DO k=1,mdia
525  CALL qnlin2
526  &( tstot , tsder , ianmdi((k-1)*ndire*16+1:k*ndire*16) ,
527  & coemdi((k-1)*32+1:k*32) , nf , ndire,
528  & npoin2, f , xkmoy , taux1 , taux2 , xccmdi(k))
529  ENDDO
530  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QNLIN2'
531 !....calls GQM method
532  ELSEIF (strif.EQ.3) THEN
533  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QNLIN3'
534  CALL qnlin3(tstot , tsder , f ,npoin2, ndire , nf )
535  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QNLIN3'
536  ENDIF
537 !
538 ! 4.4 WHITE-CAPPING DISSIPATION
539 ! -------------------------------------------------
540 !
541  IF(smout.EQ.1) THEN
542 !
543  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QMOUT1'
544  CALL qmout1
545  &( tstot, tsder, f , xk , varian, fmoy, xkmoy,
546  & nf , ndire , npoin2, taux1 )
547  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QMOUT1'
548 !
549  ELSEIF(smout.EQ.2) THEN
550 !
551  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QMOUT2'
552  CALL qmout2
553  &( tstot , tsder , f , xk , varian, fmoy , xkmoy , usold ,
554  & usnew , nf , ndire , npoin2, taux1 , taux2 , taux5 , taux6 )
555  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QMOUT2'
556 !
557  ENDIF
558 !
559 ! 4.5 BOTTOM FRICTION DISSIPATION
560 ! -------------------------------
561 !
562  IF(sfrot.EQ.1.AND..NOT.proinf) THEN
563  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QFROT1'
564  CALL qfrot1
565  &( tstot , tsder , f , xk , nf ,ndire , npoin2)
566  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QFROT1'
567  ELSEIF(sfrot.NE.0) THEN
568  WRITE(lu,*) 'OPTION FOR BOTTOM FRICTION DISSIPATION'
569  WRITE(lu,*) 'UNKNOWN: SFROT=',sfrot
570  CALL plante(1)
571  stop
572  ENDIF
573 !
574 ! 5. UPDATES THE SPECTRUM - TAKES THE SOURCE TERMS INTO ACCOUNT
575 ! (GENERATION, WHITECAPPING AND QUADRUPLET INTERACTIONS)
576 ! ==============================================================
577 !
578 !
579 ! COMPUTATION OF LIMITING FACTOR INSERTED
580 ! IN THE LOOP TO HAVE DF_LIM(NPOIN2) INSTEAD
581 ! OF DF_LIM(NPOIN2,NF)
582 !
583 ! if nf is growing, inverse if limit and loop on nf
584  DO iff=1,nf
585 ! LIMITING FACTOR TAKEN FROM WAM-CYCLE 4
586  IF(limit.EQ.1) THEN
587  coef=0.62d-4*dtsi/1200.d0
588  auxi=coef/freq(iff)**5
589  DO ip=1,npoin2
590  df_lim(ip)=auxi
591  ENDDO
592 ! LIMITING FACTOR FROM HERSBACH AND JANSSEN (1999)
593  ELSEIF(limit.EQ.2) THEN
594  coef=3.d-7*gravit*freq(nf)*dtsi
595  auxi=coef/freq(iff)**4
596  usmin=gravit*5.6d-3/freq(iff)
597  DO ip=1,npoin2
598  df_lim(ip)=auxi*max(usnew(ip),usmin)
599  ENDDO
600 !
601 ! LIMITING FACTOR FROM LAUGEL ou BAJ
602 !
603  ELSEIF (limit.EQ.3) THEN
604  coef=3.0d-7*gravit*dtsi
605  auxi=coef/freq(iff)**4
606  usmin=gravit*5.6d-3/freq(iff)
607  DO ip=1,npoin2
608  df_lim(ip)=auxi*max(usnew(ip),usmin)*taux7(ip)
609  ENDDO
610 !
611  ELSEIF(limit.NE.0) THEN
612  WRITE(lu,*) 'UNKNOWN LIMITING FACTOR:',limit
613  CALL plante(1)
614  stop
615  ENDIF
616  IF(limit.NE.0) THEN
617  DO jp=1,ndire
618  DO ip=1,npoin2
619  aux1=max(1.d0-dtsi*tsder(ip,jp,iff)*cimpli,1.d0)
620  aux2=dtsi*tstot(ip,jp,iff)/aux1
621  aux3=min(abs(aux2),df_lim(ip))
622  aux4=sign(aux3,aux2)
623  f(ip,jp,iff)=max(f(ip,jp,iff)+aux4,0.d0)
624  ENDDO
625  ENDDO
626  ELSE
627  DO jp=1,ndire
628  DO ip=1,npoin2
629  aux1=max(1.d0-dtsi*tsder(ip,jp,iff)*cimpli,1.d0)
630  aux2=dtsi*tstot(ip,jp,iff)/aux1
631  f(ip,jp,iff)=max(f(ip,jp,iff)+aux2,0.d0)
632  ENDDO
633  ENDDO
634  ENDIF
635  ENDDO
636 !
637  IF(diaghf.EQ.1) THEN
638 !
639 ! 6. TREATS THE HIGH FREQUENCIES DIFFERENTLY
640 ! =======================================================
641 !
642 ! 6.1 COMPUTES THE MEAN FREQUENCY OF THE SPECTRUM
643 ! ----------------------------------------------
644 !
645  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE FREMOY'
646  CALL fremoy(fmoy, f, nf, ndire, npoin2)
647  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE FREMOY'
648 !
649  aux1=gravit/(7.d0*deupi*freq(1))
650  aux2=2.5d0/freq(1)
651  aux3=1.d0/log10(raisf)
652 !
653 ! IF CBAJ and loop inversed 6.2 and 6.3 written twice with a different formula for FM2
654  IF(cbaj.EQ.0) THEN
655  DO ip=1,npoin2
656 !
657 ! 6.2 COMPUTES THE LAST FREQUENCY OF THE DISCRETISED SPECTRUM.
658 ! THIS FREQUENCY IS THE MAXIMUM OF (FM1=4.*FPM ; FM2=2.5*FMOY).
659 ! ITS INDEX IS MFMAX.
660 ! -------------------------------------------------------------
661 !
662  fm1 =aux1/max(usnew(ip),1.d-90)
663  fm2 =aux2*fmoy(ip)
664  mf1=int(aux3*log10(fm1)+1.d0)
665  mf2=int(aux3*log10(fm2)+1.d0)
666  mfmax=max(min(max(mf1,mf2),nf),1)
667 !
668 ! 6.3 MODIFIES THE HIGH FREQUENCY PART OF THE SPECTRUM
669 ! A DECREASE IN F**(-TAILF) IS IMPOSED BEYOND
670 ! FREQ(MFMAX). (TAILF=5 IN WAM-CYCLE 4)
671 ! -------------------------------------------------------------
672 !
673  DO iff=mfmax+1,nf
674  aux4=(freq(mfmax)/freq(iff))**tailf
675  DO jp=1,ndire
676  f(ip,jp,iff)=aux4*f(ip,jp,mfmax)
677  ENDDO
678  ENDDO
679  ENDDO
680 
681  ELSE
682  DO ip=1,npoin2
683  fm1 =aux1/max(usnew(ip),1.d-90)
684  fm2 =aux2*taux7(ip)
685  mf1=int(aux3*log10(fm1)+1.d0)
686  mf2=int(aux3*log10(fm2)+1.d0)
687  mfmax=max(min(max(mf1,mf2),nf),1)
688  DO iff=mfmax+1,nf
689  aux4=(freq(mfmax)/freq(iff))**tailf
690  DO jp=1,ndire
691  f(ip,jp,iff)=aux4*f(ip,jp,mfmax)
692  ENDDO
693  ENDDO
694 !
695  ENDDO
696  ENDIF
697  ELSEIF(diaghf.GE.2) THEN
698  WRITE(lu,*) 'OPTION FOR DIAGNOSTIC TAIL'
699  WRITE(lu,*) 'UNKNOWN: DIAGHF=',diaghf
700  CALL plante(1)
701  stop
702  ENDIF
703 !
704 !
705 ! 7. TAKES THE BREAKING SOURCE TERM INTO ACCOUNT
706 ! =================================================
707 !
708 ! IF((SBREK.GT.0.OR.STRIA.GT.0).AND..NOT.PROINF) THEN
709 !VB mofid
710  IF(((sbrek.GT.0.OR.stria.GT.0.OR.vegetation.OR.porous).AND.
711  & .NOT.proinf).OR.sdscu.EQ.2) THEN
712 !VB fin modif
713 !
714 ! 7.1 COMPUTES A REPRESENTATIVE FREQUENCY
715 ! ------------------------------------------
716  IF (sbrek.GT.0.AND.sbrek.LT.5) THEN
717  IF (sbrek.EQ.1) ifcar = ifrbj
718  IF (sbrek.EQ.2) ifcar = ifrtg
719  IF (sbrek.GE.3) ifcar = ifrro
720  IF (sbrek.GE.4) ifcar = ifrih
721 !
722  IF (ifcar.EQ.1) THEN
723 !
724 ! MEAN FREQUENCY FMOY
725 ! - - - - - - - - - - - -
726  IF (cbaj.EQ.1) THEN
727  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE FREMOY'
728  CALL fremoy(taux3, f, nf, ndire, npoin2 )
729  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE FREMOY'
730  ELSE
731  DO ip=1,npoin2
732  taux3(ip)=fmoy(ip)
733  ENDDO
734  ENDIF
735 
736  ELSE IF (ifcar.EQ.2) THEN
737 !
738 ! MEAN FREQUENCY F01
739 ! - - - - - - - - - - -
740  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE FREM01'
741  CALL frem01( taux3, f, nf, ndire, npoin2)
742  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE FREM01'
743 
744  ELSE IF (ifcar.EQ.3) THEN
745 !
746 ! MEAN FREQUENCY F02
747 ! - - - - - - - - - - -
748  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE FREM02'
749  CALL frem02( taux3, f, nf, ndire, npoin2)
750  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE FREM02'
751 
752  ELSE IF (ifcar.EQ.4) THEN
753 !
754 ! PEAK FREQUENCY (DISCRETE FREQUENCY WITH MAX VARIANCE)
755 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
756  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE FREPIC'
757  CALL frepic( taux3, f, nf, ndire, npoin2)
758  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE FREPIC'
759 
760  ELSE IF (ifcar.EQ.5) THEN
761 !
762 ! PEAK FREQUENCY (READ WITH EXPONENT 5)
763 ! - - - - - - - - - - - - - - - - - - - - - - - - - -
764  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE FPREAD'
765  CALL fpread( taux3, f, nf, ndire, npoin2, 5.d0)
766  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE FPREAD'
767 
768  ELSE IF (ifcar.EQ.6) THEN
769 !
770 ! PEAK FREQUENCY (READ WITH EXPONENT 8)
771 ! - - - - - - - - - - - - - - - - - - - - - - - - - -
772  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE FPREAD'
773  CALL fpread( taux3, f, nf, ndire, npoin2, 8.d0)
774  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE FPREAD'
775 
776  ELSE
777 
778  WRITE(lu,*) 'WAVE FREQUENCY NOT EXPECTED......IFCAR=',
779  & ifcar
780  CALL plante(1)
781  stop
782  ENDIF
783 !
784  ENDIF
785 !
786 !.........LOOP ON SUB-TIME STEPS FOR BREAKING
787 ! = = = = = = = = = = = = = = = = = = = = = = = = = = =
788  somme=(xdtbrk**ndtbrk-1.d0)/(xdtbrk-1.d0)
789  dtn=dtsi/somme
790 !
791  DO idt=1,ndtbrk
792 ! 7.2 INITIALISES THE ARRAYS FOR THE SOURCE-TERMS
793 ! ----------------------------------------------------
794  DO iff=1,nf
795  DO jp=1,ndire
796  DO ip=1,npoin2
797  tstot(ip,jp,iff)=0.d0
798  ENDDO
799  ENDDO
800  ENDDO
801 !
802 ! 7.3 COMPUTES THE TOTAL VARIANCE OF THE SPECTRUM
803 ! --------------------------------------------
804 !
805  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE TOTNRJ'
806  CALL totnrj(varian, f, nf, ndire, npoin2)
807  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE TOTNRJ'
808 !
809 !
810 ! 7.4 COMPUTES THE WAVE BREAKING CONTRIBUTION
811 ! --------------------------------------
812 !
813 ! 7.4.1 BREAKING ACCORDING TO BATTJES AND JANSSEN (1978)
814 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
815 !
816  IF(sbrek.EQ.1) THEN
817 !
818  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QBREK1'
819  CALL qbrek1
820  & ( tstot , f , taux3 , varian, nf , ndire , npoin2)
821  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QBREK1'
822 !
823 !
824 ! 7.4.2 BREAKING ACCORDING TO THORNTON AND GUZA (1983)
825 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - -
826 !
827  ELSEIF(sbrek.EQ.2) THEN
828 !
829  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QBREK2'
830  CALL qbrek2
831  & ( tstot , f , taux3 , varian, nf , ndire ,
832  & npoin2)
833  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QBREK2'
834 !
835 !
836 ! 7.4.3 BREAKING ACCORDING TO ROELVINK (1993)
837 ! - - - - - - - - - - - - - - - - - - - - - -
838 !
839  ELSEIF(sbrek.EQ.3) THEN
840 !
841  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QBREK3'
842  CALL qbrek3
843  &( tstot , f , taux3 , varian, nf , ndire ,
844  & npoin2)
845  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QBREK3'
846 !
847 !
848 ! 7.4.4 BREAKING ACCORDING TO IZUMIYA AND HORIKAWA (1984)
849 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - -
850 !
851  ELSEIF(sbrek.EQ.4) THEN
852 !
853  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QBREK4'
854  CALL qbrek4
855  &( tstot , f ,taux3,varian, nf , ndire , npoin2)
856  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QBREK4'
857 !
858  ELSEIF(sbrek.NE.0) THEN
859  WRITE(lu,*) 'BREAKING FORMULATION NOT PROGRAMMED: ',
860  & sbrek
861  CALL plante(1)
862  stop
863  ENDIF
864 !
865 ! 7.5 NON-LINEAR INTERACTIONS BETWEEN FREQUENCY TRIPLETS
866 ! -----------------------------------------------------------
867  IF(stria.EQ.1) THEN
868  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE FREMOY'
869  CALL fremoy( fmoy, f, nf, ndire, npoin2)
870  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE FREMOY'
871  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QTRIA1'
872  CALL qtria1
873  &( f , xk , nf , ndire , npoin2, tstot , varian, fmoy )
874  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QTRIA1'
875 !
876  ELSEIF(stria.EQ.2) THEN
877  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QTRIA2'
878  CALL qtria2
879  &( f , xk , nf , ndire , npoin2, tstot )
880  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QTRIA2'
881  ENDIF
882 !
883 !
884 ! 7.6 WAVE BLOCKING DISSIPATION
885 ! -----------------------------
886  IF(sdscu.EQ.2) THEN
887  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QDSCUR'
888  CALL qdscur
889  &( tstot , tsder , f , cf , xk , usold , usnew ,
890  & nf , ndire , npoin2, taux2 ,t3_01%R,t3_02%R)
891  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QDSCUR'
892  ENDIF
893 !
894 !======================================================================
895 ! 7.7 VEGETATION
896 !VBA PRISE EN COMPTE VEGETATION
897 !======================================================================
898 !
899  IF(vegetation) THEN
900  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QVEG'
901  CALL qveg( tstot, tsder, f, varian, fmoy, xkmoy, nf,
902  & ndire ,npoin2 )
903  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QVEG'
904  ENDIF
905 !======================================================================
906 ! 4.6 POROUS MEDIA
907 !TF PRISE EN COMPTE POROSITE
908 !======================================================================
909 !
910  IF(porous) THEN
911  IF(debug.EQ.2) WRITE(lu,*) ' APPEL DE QPOROS'
912  CALL qporos( tstot , tsder , f , cg, lt, xk,
913  & nf , ndire , npoin2, amorp)
914  IF(debug.EQ.2) WRITE(lu,*) ' RETOUR DE QPOROS'
915  ENDIF
916 !
917 !======================================================================
918 !VBA PRISE EN COMPTE VEGETATION
919 !======================================================================
920 !
921 !
922 ! 7.9 UPDATES THE SPECTRUM - TAKES THE BREAKING SOURCE TERM
923 ! INTO ACCOUNT (EXPLICIT EULER SCHEME)
924 ! ---------------------------------------------------------
925 !
926  DO iff=1,nf
927  DO jp=1,ndire
928  DO ip=1,npoin2
929  f(ip,jp,iff)=max(f(ip,jp,iff)+dtn*tstot(ip,jp,iff),0.d0)
930  ENDDO
931  ENDDO
932  ENDDO
933 !
934  dtn=dtn*xdtbrk
935 !
936  ENDDO
937 !
938  ENDIF
939 !
940 !
941 ! 8. TRANSFERS DATA FROM NEW TO OLD FOR THE NEXT TIME STEP
942 ! ==============================================================
943  IF(vent) THEN
944  DO ip=1,npoin2
945  usold(ip)=usnew(ip)
946  z0old(ip)=z0new(ip)
947  twold(ip)=twnew(ip)
948  ENDDO
949  ENDIF
950 !
951 !======================================================================
952 ! 9 IGNORE BOUNDARY CONDITIONS ON IMPOSED BOUNDARIES
953 !======================================================================
954 ! ALONG THE IMPOSED BOUNDARIES, REWRITE THE CORRECT SPECTRUM
955 ! IF THE SOURCE TERMS SHOULD NOT BE TAKEN INTO ACCOUNT
956 !
957  IF(.NOT.source_on_bnd) THEN
958  DO iptfr=1,nptfr
959  IF(lifbor(iptfr).EQ.kent) THEN
960  DO iff=1,nf
961  DO ip=1,ndire
962  f(nbor(iptfr),ip,iff)=fbor(iptfr,ip,iff)
963  ENDDO
964  ENDDO
965  ENDIF
966  ENDDO
967  ENDIF
968  ENDDO
969 
970 !
971 ! -----------------------------------------------------------------
972 ! END OF THE MAIN LOOP ON THE NUMBER OF TIME STEPS (NSITS)
973 ! FOR INTEGRATION OF THE SOURCE TERMS, BY PROPAGATION TIME STEP
974 ! -----------------------------------------------------------------
975 !
976  RETURN
977  END
978 
subroutine stress(TAUWAV, TSTOT, F, USNEW, TWNEW, Z0NEW, NPOIN2, NDIRE, NF, XTAUW, YTAUW, TAUHF)
Definition: stress.f:8
subroutine anaven
Definition: anaven.f:4
subroutine qnlin2(TSTOT, TSDER, IANGNL, COEFNL, NF, NDIRE, NPOIN2, F, XKMOY, TAUX1, DFINI, XCOEF)
Definition: qnlin2.f:8
type(bief_obj), pointer t3_02
character(len=32), dimension(30) texveb
subroutine qbrek1(TSTOT, F, FCAR, VARIAN, NF, NDIRE, NPOIN2)
Definition: qbrek1.f:7
subroutine qnlin1(TSTOT, TSDER, IANGNL, NF, NDIRE, NPOIN2, F, XKMOY, TAUX1, TAUX2, TAUX3, TAUX4, TAUX5, DFINI)
Definition: qnlin1.f:8
subroutine qtria1(F, XK, NF, NDIRE, NPOIN2, TSTOT, FTOT, FMOY)
Definition: qtria1.f:7
subroutine ustar1(USTAR, Z0, TAUWAV, NPOIN2)
Definition: ustar1.f:7
subroutine qdscur(TSTOT, TSDER, F, CF, XK, USOLD, USNEW, NF, NDIRE, NPOIN2, F_INT, BETOTO, BETOTN)
Definition: qdscur.f:8
subroutine totnrj(VARIAN, F, NF, NDIRE, NPOIN2)
Definition: totnrj.f:7
subroutine frepic(FPIC, F, NF, NDIRE, NPOIN2)
Definition: frepic.f:7
subroutine qbrek3(TSTOT, F, FCAR, VARIAN, NF, NDIRE, NPOIN2)
Definition: qbrek3.f:7
subroutine qnlin3(T1TOT, T1DER, F2, N1POIN2, N1PLAN, N1F)
Definition: qnlin3.f:7
integer, parameter kent
subroutine noudon(F1, NAME1, MODE1, F2, NAME2, MODE2, F3, NAME3, MODE3, NPOIN, NDON, FFORMAT, AT, TV1, TV2, F11, F12, F21, F22, F31, F32, INDIC, CHDON, NVAR, TEXTE, TROUVE, UNITIME, PHASTIME)
Definition: noudon.f:10
subroutine qmout2(TSTOT, TSDER, F, XK, ENRJ, FMOY, XKMOY, USOLD, USNEW, NF, NDIRE, NPOIN2, TAUX1, F_INT, BETOTO, BETOTN)
Definition: qmout2.f:8
subroutine qporos
Definition: qporos.f:4
subroutine kmoye2(XKMOY, XK, F, NF, NDIRE, NPOIN2, AUX1, AUX2, AUX3)
Definition: kmoye2.f:8
subroutine qwind2(TSTOT, TSDER, F, XK, USOLD, USNEW, TWOLD, TWNEW, NF, NDIRE, NPOIN2, USN, USO)
Definition: qwind2.f:8
subroutine qwind1(TSTOT, TSDER, F, XK, USOLD, USNEW, TWOLD, TWNEW, Z0OLD, Z0NEW, NF, NDIRE, NPOIN2, TOLD, TNEW, USN, USO, OMNEW, OMOLD, BETAN, BETAO)
Definition: qwind1.f:9
subroutine qtria2(F, XK, NF, NDIRE, NPOIN2, TSTOT)
Definition: qtria2.f:7
subroutine semimp(F, CF, XK, NF, NDIRE, NPOIN2, IANGNL, TSTOT, TSDER, TOLD, TNEW, Z0NEW, TWNEW, TAUX1, TAUX2, TAUX3, TAUX4, TAUX5, TAUX6, TAUX7, MDIA, IANMDI, COEMDI, FBOR)
Definition: semimp.f:10
subroutine ustar2(USTAR, NPOIN2)
Definition: ustar2.f:7
subroutine qbrek2(TSTOT, F, FCAR, VARIAN, NF, NDIRE, NPOIN2)
Definition: qbrek2.f:7
subroutine frem02(FM02, F, NF, NDIRE, NPOIN2)
Definition: frem02.f:7
subroutine qwind3(TSTOT, TSDER, F, XK, USOLD, USNEW, TWOLD, TWNEW, NF, NDIRE, NPOIN2, BETAN, BETAO, DIRN, DIRO)
Definition: qwind3.f:8
subroutine qmout1(TSTOT, TSDER, F, XK, ENRJ, FMOY, XKMOY, NF, NDIRE, NPOIN2, TAUX1)
Definition: qmout1.f:8
subroutine kmoyen(XKMOY, XK, F, NF, NDIRE, NPOIN2, AUX1, AUX2, AUX3)
Definition: kmoyen.f:7
subroutine qwindl(TSTOT, USOLD, USNEW, TWOLD, TWNEW, NF, NDIRE, NPOIN2, USN, USO, FPMO, FPMN)
Definition: qwindl.f:8
subroutine qveg(TSTOT, TSDER, F, VARIAN, FMOY, XKMOY, NF, NDIRE, NPOIN2)
Definition: qveg.f:8
subroutine qfrot1(TSTOT, TSDER, F, XK, NF, NDIRE, NPOIN2)
Definition: qfrot1.f:7
subroutine fpread(FREAD, F, NF, NDIRE, NPOIN2, EXPO)
Definition: fpread.f:7
subroutine fremoy(FMOY, F, NF, NDIRE, NPOIN2)
Definition: fremoy.f:7
type(bief_obj), pointer t3_01
subroutine qbrek4(TSTOT, F, FCAR, VARIAN, NF, NDIRE, NPOIN2)
Definition: qbrek4.f:7
subroutine frem01(FM01, F, NF, NDIRE, NPOIN2)
Definition: frem01.f:7