The TELEMAC-MASCARET system  trunk
wac_init.F
Go to the documentation of this file.
1  SUBROUTINE wac_init
2  & (part,impres,debres,date,time)
3 !
4 !***********************************************************************
5 ! TOMAWAC V7P3
6 !***********************************************************************
7 !
8 !brief MAIN SUBROUTINE OF TOMAWAC (INTIALISATION PART)
9 !+ SOLVES THE EQUATION FOR THE
10 !+ DIRECTIONAL WAVE SPECTRUM
11 !
12 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13 !
14  USE bief
15  USE couple_mod
18  USE interface_tomawac, ex_wac_init => wac_init
19 !
21  IMPLICIT NONE
22 !
23 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24 !
25  LOGICAL, INTENT(INOUT) :: IMPRES, DEBRES
26  INTEGER, INTENT(IN) :: PART
27  INTEGER, INTENT(INOUT) :: DATE(3),TIME(3)
28 !
29 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
30 !
31  INTEGER IREC, K, IDIRE, IFREQ, IP
32  DOUBLE PRECISION :: LAMBD0
33  DOUBLE PRECISION VITVEN,VITMIN
34 !
35 !-----------------------------------------------------------------------
36 !
37 ! MESH ORGANISATION - 2D LEVEL
38 !
39  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE LECLIM POUR MESH2D'
42  & nptfr,'WAC',.false., fmtgeo, lugeo,
45  IF(debug.GT.0) WRITE(lu,*) 'SORTIE DE LECLIM'
46 !
47 !
48 ! LAMBD00 is not initialised yet and can produce some Nan
49 ! Is it useful to have it as a keyword like in telemac2D ?
50  lambd0=0.d0
51  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE INBIEF POUR MESH2D'
53  & lvmac,ielm2,lambd0,sphe,mesh,stsder,ststot,1,1,equa)
54  IF(debug.GT.0) WRITE(lu,*) 'SORTIE DE INBIEF'
55 !
56 ! EXTENSION OF IKLE2 (SEE CALL TO POST_INTERP IN PROPA)
57 !
59 !
60 ! MESH ORGANISATION - 3D LEVEL
61 !
62  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE LECLIM POUR MESH3D'
65  & nptfr,'WAC',.false., fmtgeo, lugeo,
67  IF(debug.GT.0) WRITE(lu,*) 'SORTIE DE LECLIM'
68 !
69  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE INBIEF POUR MESH3D'
71  & lvmac,ielm3,lambd0,sphe,mesh3d,
72  & stsder,ststot,1,1,equa,mesh2d=mesh)
73  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE INBIEF'
74 !
75 ! 3D IFABOR
76 !
77  CALL ifabtom(mesh3d%IFABOR%I,nelem2,ndire-1)
78 !
79 !-----------------------------------------------------------------------
80 !
81 ! V6P2 Diffraction : FREEMESH METHOD
82 !
83  IF(diffra.GT.0) THEN
84  IF(ncsize.GT.1.AND.optder.EQ.1) THEN
85  WRITE(lu,*) ''
86  WRITE(lu,*) '***************************************'
87  WRITE(lu,*) ' ATTENTION : DIFFRACTION '
88  WRITE(lu,*) ' OPTION FOR THE SECOND DERIVATIVES '
89  WRITE(lu,*) ' SET TO 2 IN PARALLEL MODE '
90  WRITE(lu,*) '***************************************'
91  ENDIF
92  WRITE(lu,*) '****************************************'
93  WRITE(lu,*) 'DIFFRACTION IS TAKEN INTO ACCOUNT '
94  WRITE(lu,*) 'STARTING FROM TIME STEP ',nptdif
95  IF(diffra.EQ.1) THEN
96  WRITE(lu,*) 'MILD SLOPE EQUATION FORMULATION'
97  ELSE
98  WRITE(lu,*)'REVISED MILD SLOPE EQUATION FORMULATION'
99  ENDIF
100  WRITE(lu,*) '****************************************'
101 !
102 ! SETS UP OF THE SUBDOMAINS FOR THE FREEMSESH METHOD
103 ! AND CALCULATES THE INVERSE MATRICES FOR EACH SUBDOMAIN
104 !
105  IF(optder.EQ.1) THEN
106  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE FREEMESH'
107  CALL frmset( neigb, npoin2, nelem2, ikle2,
108  & rk, rx, ry, rxx, ryy)
109  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE FREEMESH'
110  ENDIF
111  ENDIF
112 !-----------------------------------------------------------------------
113 !
114 ! LECTURE DE LA COTE DU FOND (ZF) SUR LE FICHIER DE GEOMETRIE
115 !
116  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE FONSTR'
118  & mesh, 1.d0,.true., 0, names_prive,sprive)
119  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE FONSTR'
120 !
121 ! CORRECTION EVENTUELLE DES VALEURS DU FOND (OU CALCUL DU FOND SI CELA
122 ! N'A PAS ETE FAIT DANS FONSTR)
123 ! EN STANDARD, TOM_CORFON NE FAIT RIEN (ATTENTION, ALLER CHERCHER
124 ! LE TOM_CORFON DE TOMAWAC).
125 ! DANS LE CAS DE COUPLAGE AVEC TELEMAC, ON LIT LE FOND A PARTIR DU
126 ! MODELE TELEMAC ET TOM_CORFON N EST PAS UTILISE
127 !
128  IF(part.EQ.wac_full_run.OR.part.EQ.wac_cpl_init.OR.
129  & part.EQ.wac_api_init)THEN
130  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE TOM_CORFON'
131  CALL tom_corfon
132  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE TOM_CORFON'
133  ENDIF
134 !
135 ! CALCUL DE LA PROFONDEUR D'EAU (TABLEAU DEPTH)
136 !
137  IF(.NOT.proinf) THEN
138  DO ip=1,npoin2
139  depth(ip)=max(zrepos-zf(ip),0.9d0*promin)
140  ENDDO
141 ! DO NOT UNDERSTAND 0.9
142  ENDIF
143 !
144 !-----------------------------------------------------------------------
145 !
146 ! PREPARATION DES SORTIES GRAPHIQUES
147 !
148 ! CREATION DU JEU DE DONNEES POUR UN FORMAT DE FICHIER FORMAT_RES.
149 ! LE JEU DE DONNEES EST CREE DANS LE FICHIER NRES, ET EST DEFINI
150 ! PAR UN TITRE ET LES VARIABLES A ECRIRE.
151 !
152  IF(namres.NE.' ') THEN
153  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE WRITE_HEADER'
154  CALL write_header(fmtres, ! FORMAT FICHIER RESULTAT
155  & lures, ! LU FICHIER RESULTAT
156  & titcas, ! TITRE DE L'ETUDE
157  & maxvar, ! MAX VARIABLES SORTIE
158  & texte, ! NOMS VARIABLES SORTIE
159  & sorleo) ! SORTIE OU PAS DES VARIABLES
160  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE WRITE_HEADER'
161 !
162 ! ECRITURE DU MAILLAGE DANS LE FICHIER SORTIE :
163 ! SI ON EST ON PARALLEL, FAUT L'INDIQUER VIA NCSIZE ET NPTIR.
164 ! LES AUTRES INFORMATIONS SONT DANS MESH.
165 ! EN PLUS : DATE/TEMPS DE DEPART ET LES COORDONNEES DE L'ORIGINE.
166 !
167  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE WRITE_MESH'
168  CALL write_mesh(fmtres, ! FORMAT FICHIER RESULTAT
169  & lures, ! LU FICHIER RESULTAT
170  & mesh,
171  & 1, ! NOMBRE DE PLAN /NA/
172  & date, ! DATE DEBUT
173  & time, ! HEURE DEBUT
174  & stra31,stra32, ! WORKING ARRAYS
175  & ncsize.GT.1, nptir,
176  & ngeo=lugeo,
177  & geoformat=fmtgeo)
178  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE WRITE_MESH'
179  ENDIF
180 !
181 !-----------------------------------------------------------------------
182 ! CONDITIONS INITIALES
183 !=====C INITIALISATION DES VECTEURS DE DISCRETISATION, DU COURANT,
184 ! 2 C DU VENT ET DU SPECTRE DE VARIANCE.
185 !=====C===========================================================
186  lt=0
187  dtsi=dt/nsits
188 !-----------------------------------------------------------------------
189 ! INITIALISES TETA
190 ! BY DEFAULT THE DIRECTIONS OF PROPAGATION ARE EVENLY DISTRIBUTED
191  DO idire = 1,ndire+1
192  teta(idire) = (idire-1)*deupi/ndire
193  ENDDO
194 !
195 !-----------------------------------------------------------------------
196 !
197 ! INITIALISES FREQ AND DFREQ, THE FREQUENCIES OF PROPAGATION
198 ! ARE DISTRIBUTED USING AN EXPONENTIAL LAW
199 !
200  DO ifreq = 1,nf
201  freq(ifreq) = f1*raisf**(ifreq-1)
202  ENDDO
203 !-----------------------------------------------------------------------
204 !
205 ! INITIALISING DZHDT (BUT MAYBE REDONE IN LECSUI OR CONDIW)
206 !
207  DO ip=1,npoin2
208  dzhdt(ip)=0.d0
209  ENDDO
210 
211 ! RECEIVE DATA FROM TELEMAC
212 ! WAC2
213  IF ((part.EQ.0).AND.inclus(coupling,'TOMAWAC2')) THEN
215  cpl_wac_data%U_TEL => u_tel
216  cpl_wac_data%V_TEL => v_tel
217  cpl_wac_data%H_TEL => h_tel
218  cpl_wac_data%FX_WAC => fx_wac
219  cpl_wac_data%FY_WAC => fy_wac
220  cpl_wac_data%UV_WAC => uv_wac
221  cpl_wac_data%VV_WAC => vv_wac
222  cpl_wac_data%DIRMOY_TEL => dirmoy_tel
223  cpl_wac_data%HM0_TEL => hm0_tel
224  cpl_wac_data%TPR5_TEL => tpr5_tel
225  cpl_wac_data%ORBVEL_TEL => orbvel_tel
226  ENDIF
227 !
228  IF(suit) THEN
229  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE LECSUI'
230  CALL lecsui(f, ndire, nf, npoin2,
231  & vent,cousta.OR.part.EQ.wac_cpl_init ,
232  & lupre,fmtpre, maree.OR.part.EQ.wac_cpl_init,tsder)
233  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE LECSUI'
234  ELSE
235  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE CONDIW'
236  CALL condiw(part,
237  & cpl_wac_data%U_TEL, cpl_wac_data%V_TEL, cpl_wac_data%H_TEL)
238  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE CONDIW'
239 ! DEPTH MAY BE MODIFIED IN CONDIW
240  IF(.NOT.proinf) THEN
241  DO ip=1,npoin2
242  IF(depth(ip).LT.promin) depth(ip)=0.9d0*promin
243  ENDDO
244  ENDIF
245  ENDIF
246 !
247  IF(raztim) at=0.d0
248  IF(part.EQ.wac_cpl_init) at=cpl_wac_data%AT_TEL
249 !
250  at0=at
251 !
252  IF(.NOT.proinf) THEN
253  DO ip=1,npoin2
254  IF(depth(ip).LE.0.d0) THEN
255  WRITE(lu,*) ''
256  WRITE(lu,*) '**************************'
257  WRITE(lu,*) ' ! NEGATIVE WATER DEPTH ! '
258  WRITE(lu,*) ' END OF THE COMPUTATION '
259  WRITE(lu,*) '**************************'
260  CALL plante(1)
261  stop
262  ENDIF
263  ENDDO
264  ENDIF
265 !
266 !=====C
267 ! 4 C CALCULS PREPARATOIRES POUR INTERACTIONS NON-LINEAIRES.
268 !=====C=======================================================
269 !.....DIA method (Hasselmann et al., 1985)
270 !
271  IF(strif.EQ.1) THEN
272  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE PRENL1'
273  CALL prenl1( iangnl, coefnl, ndire , nf , raisf , xlamd )
274  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE PRENL1'
275 !
276 !.....MDIA method (Tolman, 2004)
277 !
278  ELSEIF (strif.EQ.2) THEN
279 !.....Setting parametres for MDIA
280  xlamdi(1)=0.075d0
281  xmumdi(1)=0.023d0
282  xlamdi(2)=0.219d0
283  xmumdi(2)=0.127d0
284  xlamdi(3)=0.299d0
285  xmumdi(3)=0.184d0
286  xlamdi(4)=0.394d0
287  xmumdi(4)=0.135d0
288 !
289  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE PRENL2'
290  DO k=1,mdia
291  CALL prenl2(ianmdi(1,1,k),coemdi(1,k),ndire,nf,raisf,
292  & xlamdi(k),xmumdi(k))
293  ENDDO
294  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE PRENL2'
295 !
296 !.....GQM method (Lavrenov, 2001)
297 !
298  ELSEIF(strif.EQ.3) THEN
299  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE PRENL3'
300  CALL prenl3
301  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE PRENL3'
302  ENDIF
303 !
304  IF(stria.EQ.2) THEN
305  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE PREQT2'
306  CALL preqt2
307  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE PREQT2'
308  ENDIF
309 !
310 !=====C INITIALISATION DE LA CONTRAINTE DE HOULE, PUIS CALCUL DES
311 ! 5 C VITESSE DE FROTTEMENT U*, RUGOSITE Z0 ET DIRECTION INITIALES.
312 !=====C==============================================================
313 !
314 !.....5.1 INITIALISATION DE LA CONTRAINTE DE HOULE INITIALE.
315 ! """"""""""""""""""""""""""""""""""""""""""""""""""""""
316  CALL ov('X=C ', x=tauwav, c=0.d0, dim1=npoin2)
317 !
318 !.....5.2 CALCUL DE U* ET Z0 SELON LA METHODE CONSIDEREE.
319 ! """""""""""""""""""""""""""""""""""""""""""""""""""
320  IF (vent) THEN
321  IF (svent.EQ.1) THEN
322  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE USTAR1'
323  CALL ustar1( usold, z0old, tauwav, npoin2 )
324  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE USTAR1'
325  ELSEIF (svent.GE.2) THEN
326  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE USTAR2'
327  CALL ustar2(usold, npoin2)
328  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE USTAR2'
329  ELSEIF (svent.EQ.0.AND.lvent.EQ.1) THEN
330  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE USTAR2'
331  CALL ustar2(usold, npoin2)
332  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE USTAR2'
333  ELSEIF (svent.EQ.0.AND.lvent.EQ.0.AND.smout.EQ.2) THEN
334  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE USTAR2'
335  CALL ustar2(usold, npoin2)
336  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE USTAR2'
337  ELSE
338  WRITE(lu,*) 'PB IN WAC : WIND PRESENT, BUT SVENT NOT CORRECT'
339  CALL plante(1)
340  stop
341  ENDIF
342  ELSE
343 ! USOLD
344  CALL os('X=0 ',x=susold)
345 ! USNEW
346  CALL os('X=0 ',x=susnew)
347  ENDIF
348 !
349 !.....5.3 CALCUL DE LA DIRECTION DU VENT
350 ! """"""""""""""""""""""""""""""""""
351  vitmin=1.d-3
352  IF (vent) THEN
353  DO ip=1,npoin2
354  vitven=sqrt(uv(ip)**2+vv(ip)**2)
355  IF (vitven.GT.vitmin) THEN
356  twold(ip)=atan2(uv(ip),vv(ip))
357  ELSE
358  twold(ip)=0.d0
359  ENDIF
360  ENDDO
361  ENDIF
362 !
363 !=====C
364 ! 6 C INITIALISATION DE CERTAINS TABLEAUX UTILES.
365 !=====C============================================
366 !
367 ! COUPLAGE TELEMAC-TOMAWAC si PART=0
368 !
369  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE INITAB'
370  CALL initab( ibor, ifabor, nelem2, part)
371  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE INITAB'
372 !
373  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE IMPR'
374  CALL impr(lisprd,lt,at,lt,3)
375  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE IMPR'
376  IF (part.EQ.wac_cpl_init) THEN
377 ! ONLY FOR COUPLAGE BUT CAN INDUCE PROBLEM IN TELEMAC2D IF NOT DONE.
378  CALL os('X=0 ',x=cpl_wac_data%FX_WAC)
379  CALL os('X=0 ',x=cpl_wac_data%FY_WAC)
380  CALL os('X=0 ',x=cpl_wac_data%UV_WAC)
381  CALL os('X=0 ',x=cpl_wac_data%VV_WAC)
382  ENDIF
383 !=====C
384 ! 7 C AFFECTATION DES CONDITIONS AUX LIMITES A L'INSTANT INITIAL.
385 !=====C============================================================
386  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE LIMWAC'
387  CALL limwac
388  &(f , fbor , nptfr, ndire, nf, npoin2,
390  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE LIMWAC'
391 !
392 !=====C CALCUL DES NOMBRES D'ONDE (XK), DE LA VITESSE DE GROUPE (CG) ET
393 ! 8 C DU FACTEUR DE PASSAGE (B) EN SPECTRE DE VARIANCE EN (FR,TETA).
394 !=====C=================================================================
395 !
396  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE INIPHY'
397  CALL iniphy ( xk, cg, b, npoin2, nf )
398  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE INIPHY'
399 !
400 !=====C
401 ! 8b C MISE A ZERO DU SPECTRE SUR LES POINTS OU PROF < PROMIN
402 !=====C=======================================================
403 !
404  IF(.NOT.proinf) THEN
405  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE ECRETE'
406  IF (ecret) CALL ecrete(f, depth, npoin2, ndire, nf, promin)
407 ! SHOULD THINK OT THAT ....
408  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE ECRETE'
409  ENDIF
410 !
411 !=====C
412 ! 9 C SORTIES GRAPHIQUES (EVENTUELLES) A L'ETAT INITIAL.
413 !=====C===================================================
414 !
415 !.....9.1 CHOIX DES POINTS DE SORTIE DU SPECTRE DIRECTIONNEL.
416 !
417 !
418  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE PROXIM'
419  IF(npleo.GT.0) THEN
420  CALL proxim(noleo, xleo, yleo, x, y, npleo, npoin2,
421  & ikle2,nelem2,nelem2)
422  ENDIF
423  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE PROXIM'
424 !
425 !.....9.2 TEST POUR SAVOIR SI ON IMPRIME OU PAS.
426 !
427  impres=.false.
428  debres=.false.
429  IF(lt.EQ.gradeb) THEN
430  impres=.true.
431  debres=.true.
432  ENDIF
433 !
434  IF(impres) THEN
435 !
436 !.....9.3 IMPRESSION (EVENTUELLE) DES VARIABLES SUR LE MAILLAGE 2D.
437 !
438 !
439 ! THE VARIABLES ARE COMPUTED HERE WITH THE ORIGINAL SPECTRUM
440 ! DONE IN SPEINI, THERE IS NO CALL TRANSF BEFORE BECAUSE
441 ! CURRENTS ARE NOT TAKEN INTO ACCOUNT IN SPEINI
442 !
443  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE DUMP2D'
444  CALL dump2d(f, npoin3*nf)
445  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE DUMP2D'
446 !
447  IF(namres(1:1).NE.' ') THEN
448  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE BIEF_DESIMP'
451  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE BIEF_DESIMP'
452  ENDIF
453 !
454 !.....9.4 IMPRESSION (EVENTUELLE) DES SPECTRES DIRECTIONNELS.
455 !
456  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE ECRSPE'
457  irec = (lt - gradeb) ! Should be 0
458  CALL ecrspe(f, ndire , nf , npoin2, irec, tsder, noleo,
459  & npleo, debres, date, time, mesh%KNOLG%I ,mesh)
460  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE ECRSPE'
461  ENDIF
462 !
463 ! CASE OF TRIPLE COUPLING, INITIAL CONDITIONS
464 !
465 ! WAC2
466  IF (inclus(coupling,'TOMAWAC2')) THEN
467  CALL os('X=0 ',x=fx_wac)
468  CALL os('X=0 ',x=fy_wac)
469  ENDIF
470  IF ((inclus(coupling,'SISYPHE').OR.inclus(coupling,'GAIA'))
471  & .AND.part.EQ.wac_cpl_init) THEN
472 ! 3 VARIABLES THAT WILL BE TRANSMITTED TO SISYPHE OR GAIA
473 ! ALL THIS IF BLOCK ADAPTED FROM DUMP2D
474 ! MEAN DIRECTION
475  CALL tetmoy(cpl_wac_data%DIRMOY_TEL%R, f, ndire, nf, npoin2)
476  IF(trigo) THEN
477  DO ip=1,npoin2
478  cpl_wac_data%DIRMOY_TEL%R(ip) =
479  & (pisur2-cpl_wac_data%DIRMOY_TEL%R(ip))*gradeg
480  ENDDO
481  ELSE
482  DO ip=1,npoin2
483  cpl_wac_data%DIRMOY_TEL%R(ip) =
484  & cpl_wac_data%DIRMOY_TEL%R(ip)*gradeg
485  ENDDO
486  ENDIF
487 ! SIGNIFICANT WAVE HEIGHT
488  CALL totnrj(tra37, f, nf,ndire,npoin2)
489  DO ip=1,npoin2
490  cpl_wac_data%HM0_TEL%R(ip)=4.d0*sqrt(tra37(ip))
491  ENDDO
492 ! TPR5
493  CALL fpread(cpl_wac_data%TPR5_TEL%R, f, nf, ndire,
494  & npoin2, 5.d0)
495  DO ip=1,npoin2
496  cpl_wac_data%TPR5_TEL%R(ip)=
497  & 1.d0/min(max(cpl_wac_data%TPR5_TEL%R(ip),freq(1)),freq(nf))
498  ENDDO
499 ! ORBITAL VELOCITY SET TO 0.D0
500  CALL os('X=0 ',x=cpl_wac_data%ORBVEL_TEL)
501  ENDIF
502 !
503 !=====C
504 ! 10 C PREPARATION DE LA PROPAGATION (REMONTEE DES CARACTERISTIQUES).
505 !=====C===============================================================
506 !
507  IF(prop) THEN
508 !
509  CALL impr(lisprd,lt,at,lt,1)
510  CALL impr(lisprd,lt,at,lt,2)
511 !
512  IF(debug.GT.0) WRITE(lu,*) 'APPEL DE PREPRO 1'
513  CALL prepro
514  & ( stsder, ststot, ikle2, ibor, elt, eta, fre,
515  & xk, cg, itr01, npoin3, npoin2, nelem2,
516  & ndire, nf, couran.OR.part.EQ.wac_cpl_init)
517  IF(debug.GT.0) WRITE(lu,*) 'RETOUR DE PREPRO 1'
518 !
519  ENDIF
520 !
521 !------------------------------------------------------------------
522 !
523 #if defined COMPAD
525 #endif
526 !
527 !=======================================================================
528 !
529 !COUPLAGE : end cycle IF(PART.LE.0) pour couplage avec TELEMAC
530  END SUBROUTINE wac_init
integer, dimension(:,:,:), allocatable ianmdi
character(len=8), pointer fmtgeo
subroutine proxim(IP, XP, YP, X, Y, NP, NPOIN, IKLE, NELEM, NELMAX)
Definition: proxim.f:7
logical, dimension(maxvar) sorimp
subroutine frmset(NEIGB, NPOIN2, NELEM2, IKLE, RK, RX, RY, RXX, RYY)
Definition: frmset.f:8
subroutine write_mesh(FFORMAT, NFILE, MESH, NPLAN, DATE, TIME, T1, T2, PARALL, NPTIR, NGEO, GEOFORMAT, LATLONG)
Definition: write_mesh.f:8
double precision, dimension(:), pointer cg
type(bief_obj), target hm0_tel
subroutine ov(OP, X, Y, Z, C, DIM1)
Definition: ov.f:7
double precision, dimension(:), pointer uv
subroutine prepro(CX, CY, IKLE2, IFABOR, ELT, ETA, FRE, XK, CG, ITR01, NPOIN3, NPOIN2, NELEM2, NDIRE, NF, COURAN)
Definition: prepro.f:9
character(len=8), pointer fmtpre
type(bief_obj), target ststot
double precision, dimension(:), pointer dzhdt
type(bief_obj), target u_tel
double precision, dimension(:), pointer depth
double precision, dimension(:), pointer freq
integer, parameter kadh
double precision, dimension(:), allocatable yleo
integer, parameter maxvar
character(len=80) titcas
double precision, target at
type(bief_obj), target susold
integer, dimension(:), pointer fre
double precision, dimension(:), pointer zf
subroutine prenl1(IANGNL, COEFNL, NDIRE, NF, RAISF, XLAMD)
Definition: prenl1.f:7
subroutine iniphy(XK, CG, B, NPOIN2, NF)
Definition: iniphy.f:7
type(bief_obj), target stra31
double precision, dimension(:), pointer teta
integer, dimension(:), pointer boundary_colour
character(len=8), pointer fmtres
integer, dimension(:), pointer lifbor
type(bief_obj), target tpr5_tel
type(bief_obj), target uv_wac
double precision, dimension(:), pointer f
integer, parameter kentu
type(bief_obj), target st2
subroutine tetmoy(TETAM, F, NDIRE, NF, NPOIN2)
Definition: tetmoy.f:7
double precision, dimension(:), pointer prive
integer, dimension(:), pointer neigb
subroutine ecrete(F, DEPTH, NPOIN2, NDIRE, NF, PROMIN)
Definition: ecrete.f:7
character(len=32), dimension(maxvar) texte
integer, dimension(:), pointer itr01
subroutine lecsui(F, NDIRE, NF, NPOIN2, VENT, COURAN, NPRE, FFORMAT, MAREE, TRA01)
Definition: lecsui.f:7
double precision, dimension(:), pointer y
double precision, dimension(:), pointer coefnl
double precision, dimension(:), pointer usold
type(bief_obj), target v_tel
type(bief_obj), target szf
type(bief_obj), target fy_wac
character(len=32), dimension(4) names_prive
subroutine ustar1(USTAR, Z0, TAUWAV, NPOIN2)
Definition: ustar1.f:7
integer, dimension(:), pointer iangnl
double precision, dimension(:), pointer ry
subroutine totnrj(VARIAN, F, NF, NDIRE, NPOIN2)
Definition: totnrj.f:7
type(bief_obj), target stra32
type(bief_mesh), target mesh3d
subroutine build_ikle_ext(IKLE_EXT, NELMAX, IKLE, NELEM)
Definition: build_ikle_ext.f:7
integer, parameter kent
double precision, dimension(:,:), allocatable coemdi
subroutine fonstr(H, ZF, Z, CHESTR, NGEO, FFORMAT, NFON, NOMFON, MESH, FFON, LISTIN, N_NAMES_PRIV, NAMES_PRIVE, PRIVE)
Definition: fonstr.f:8
integer, parameter mdia
type(cpl_wac_data_obj) cpl_wac_data
subroutine initab(IBOR1, IFABOR1, NELEM2_DIM, PART)
Definition: initab.f:7
subroutine tom_corfon
Definition: tom_corfon.f:4
type(bief_obj), target st3
subroutine ad_tomawac_initialisation_end
type(bief_obj), target susnew
integer, dimension(:), pointer elt
subroutine prenl2(IANGNL, COEFNL, NDIRE, NF, RAISF, XLAMD, XMU)
Definition: prenl2.f:7
integer, dimension(:), pointer itr31
integer, parameter wac_cpl_init
double precision, dimension(:), pointer b
double precision, dimension(:), pointer z0old
subroutine wac_init
Definition: wac_init.F:3
subroutine write_header(FFORMAT, NRES, TITLE, NVAR, NOMVAR, OUTVAR)
Definition: write_header.f:7
logical function inclus(C1, C2)
Definition: inclus.f:7
integer, parameter kinc
type(bief_obj), target varsor
type(bief_obj), target vv_wac
integer, parameter wac_api_init
type(bief_obj), target sitr31
subroutine preqt2
Definition: preqt2.f:4
type(bief_obj), target st1
double precision, dimension(:), pointer tsder
double precision, dimension(:), pointer xk
subroutine dump2d(XF1, NP1)
Definition: dump2d.f:7
subroutine ustar2(USTAR, NPOIN2)
Definition: ustar2.f:7
subroutine impr(LISPRD, LT, AT, ISITS, ICOD)
Definition: impr.f:7
double precision, dimension(:), pointer rx
double precision, dimension(:), pointer vv
double precision, dimension(:), allocatable xlamdi
logical, dimension(maxvar) sorleo
subroutine condiw(PART, UTEL, VTEL, HTEL)
Definition: condiw.f:7
double precision, dimension(:), pointer rxx
integer, dimension(:), pointer eta
double precision, dimension(:), pointer rk
double precision, dimension(:), pointer tra37
character(len=path_len), pointer namfon
type(bief_obj), target orbvel_tel
subroutine ecrspe(F, NDIRE, NF, NPOIN2, LT, AUXIL, NOLEO, NLEO, DEBRES, DATE, TIME, KNOLG, MESH)
Definition: ecrspe.f:8
double precision, dimension(:), pointer fbor
type(bief_obj), target sprive
subroutine prenl3
Definition: prenl3.f:4
integer, dimension(:), allocatable noleo
type(bief_obj), target h_tel
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
type(bief_obj), target sitr32
type(bief_obj), target dirmoy_tel
type(bief_obj), target fx_wac
double precision, dimension(:), pointer tauwav
type(bief_obj), target stsder
subroutine limwac(F, FBOR, NPTFR, NDIRE, NF, NPOIN2, KENT, PRIVE, NPRIV, IMP_FILE)
Definition: limwac.f:8
subroutine inbief(LIHBOR, KLOG, IT1, IT2, IT3, LVMAC, IELMX, LAMBD0, SPHERI, MESH, T1, T2, OPTASS, PRODUC, EQUA, MESH2D)
Definition: inbief.f:8
integer, dimension(:), pointer ibor
double precision, dimension(:), allocatable xleo
subroutine leclim(LIHBOR, LIUBOR, LIVBOR, LITBOR, HBOR, UBOR, VBOR, TBOR, CHBORD, ATBOR, BTBOR, NPTFR, CODE, TRAC, FFORMAT, NGEO, KENT, KENTU, KSORT, KADH, KLOG, KINC, NUMLIQ, MESH, BOUNDARY_COLOUR, NPTFR2)
Definition: leclim.f:10
subroutine, public receive_couple(CID, NPOIN, NVAR, VARCOUPLE, DEFAULT_VAL)
Definition: couple_mod.F:838
double precision, dimension(:), pointer x
double precision, dimension(:), allocatable xmumdi
integer, dimension(:), pointer ikle2
character(len=path_len), pointer namres
subroutine fpread(FREAD, F, NF, NDIRE, NPOIN2, EXPO)
Definition: fpread.f:7
integer, parameter klog
type(bief_mesh), target mesh
type(bief_obj), target sitr33
character(len=path_len), target coupling
subroutine bief_desimp(FORMAT_RES, VARSOR, N, NRES, AT, LT, LISPRD, LEOPRD, SORLEO, SORIMP, MAXVAR, TEXTE, PTINIG, PTINIL, MESH, IIMP, ILEO, COMPGRAPH)
Definition: bief_desimp.f:9
integer, parameter ksort
double precision, dimension(:), pointer twold
double precision, target dt
type(bief_file), dimension(maxlu_wac), target wac_files
integer, parameter wac_full_run
integer, dimension(:), pointer ifabor
subroutine ifabtom(IFABOR, NELEM2, NETAGE)
Definition: ifabtom.f:7
double precision, dimension(:), pointer ryy
Definition: bief.f:3