The TELEMAC-MASCARET system  trunk
declarations_tomawac.f
Go to the documentation of this file.
1 ! ***************************
3 ! ***************************
4 !
5 !***********************************************************************
6 ! TOMAWAC V7P0 25/06/2012
7 !***********************************************************************
8 !
9 !brief DECLARES BIEF STRUCTURES IN TOMAWAC.
10 !
11 !history OPTIMER
12 !+ 14/06/00
13 !+ V5P2
14 !+ M. BENOIT / J.M HERVOUET, LEADS FOR EDF
15 !
16 !history OPTIMER
17 !+ 25/08/00
18 !+ V6P0
19 !+ D. VIOLEAU, LEAD FOR EDF
20 !
21 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
22 !+ 13/07/2010
23 !+ V6P0
24 !+ Translation of French comments within the FORTRAN sources into
25 !+ English comments
26 !
27 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
28 !+ 21/08/2010
29 !+ V6P0
30 !+ Creation of DOXYGEN tags for automated documentation and
31 !+ cross-referencing of the FORTRAN sources
32 !
33 !history G.MATTAROLO (EDF)
34 !+ 16/05/2011
35 !+ V6P1
36 !+ Declaration of new variables defined by
37 !+ E. GAGNAIRE-RENOU for solving new source terms models.
38 !
39 !history G.MATTAROLO (EDF)
40 !+ 25/06/2012
41 !+ V6P2
42 !+ Declaration of new variables for representing diffraction
43 !
44 !history J-M HERVOUET (EDF R&D, LNHE)
45 !+ 24/12/2013
46 !+ V7P0
47 !+ Logical variable RAZTIM added (initial time set to zero).
48 !
49 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51 !
52  USE bief_def
53 !
54 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
55 !
56 ! DECLARES BIEF STRUCTURES
57 !
58 ! 4D VARIABLES TO BE ADVECTED
59 !
60  type(bief_obj), TARGET :: sf
61 !
62 ! ADVECTION COEFFICIENT B
63 !
64  type(bief_obj), TARGET :: sb
65 !
66 ! FREQUENCIES
67 !
68  type(bief_obj), TARGET :: sfr
69 !
70 ! FREQUENCY STEPS
71 !
72  type(bief_obj), TARGET :: sdfr
73 !
74 ! SPECTRAL DENSITY
75 !
76  type(bief_obj), TARGET :: sspec
77 !
78 ! DIRECTIONAL FUNCTION
79 !
80  type(bief_obj), TARGET :: sfra
81 !
82 ! NON-LINEAR INTERACTIONS
83 !
84  type(bief_obj), TARGET :: scoef
85 !
86 ! tableau des pieds des caracteristiques
87 !
88  type(bief_obj), TARGET :: sshp1
89 !
90 ! tableau des pieds des caracteristiques
91 !
92  type(bief_obj), TARGET :: sshz
93 !
94  type(bief_obj), TARGET ::sct,scf,sshf,sxk,scg ,
100 !
101  type(bief_obj), TARGET :: stra01, stold , stnew, stra31,
103 !
104 ! Variance
105  TYPE(bief_obj), TARGET :: svaria
106  DOUBLE PRECISION, DIMENSION(:) ,POINTER :: varian
107 !
108 ! Mean Wave number
109  TYPE(bief_obj), TARGET :: sxkmoy
110  DOUBLE PRECISION, DIMENSION(:) ,POINTER :: xkmoy
111 !
112 ! Mean frequency
113  TYPE(bief_obj), TARGET :: sfmoy
114  DOUBLE PRECISION, DIMENSION(:) ,POINTER :: fmoy
115 !
116 ! Wave stress
117  TYPE(bief_obj), TARGET :: stauwa
118  DOUBLE PRECISION, DIMENSION(:) ,POINTER :: tauwav
119 !
120 ! FRICTION VELOCITY
121  TYPE(bief_obj), TARGET :: susold, susnew
122  DOUBLE PRECISION, DIMENSION(:), POINTER :: usold, usnew
123 !
124 ! SURFACE ROUGHNESS
125  TYPE(bief_obj), TARGET :: sz0old
126  DOUBLE PRECISION, DIMENSION(:), POINTER :: z0old
127 !
128 ! WIND DIRECTION
129  TYPE(bief_obj), TARGET :: stwold
130  DOUBLE PRECISION, DIMENSION(:), POINTER :: twold
131 !
132 ! DRIVING FORCE
133  TYPE(bief_obj), TARGET :: forcex, forcey
134  DOUBLE PRECISION, DIMENSION(:), POINTER :: fx, fy
135 !
136 ! RADIATION STRESS
137  TYPE(bief_obj), TARGET :: contxx, contxy, contyy
138  DOUBLE PRECISION, DIMENSION(:), POINTER :: sxx, sxy, syy
139 !
140 ! Peak Frequency by read method of order 5
141  TYPE(bief_obj), TARGET :: pfrea5
142  DOUBLE PRECISION, DIMENSION(:), POINTER :: frea5
143 !
144 ! Peak Frequency by read method of order 8
145  TYPE(bief_obj), TARGET :: pfrea8
146  DOUBLE PRECISION, DIMENSION(:), POINTER :: frea8
147 !
148 ! DRAG COEFFICIENT
149  TYPE(bief_obj), TARGET :: scdra2
150  DOUBLE PRECISION, DIMENSION(:) ,POINTER :: cdra2
151 !
152 ! MAXIMUM ORBITAL VELOCITY NEAR THE BOTTOM
153  TYPE(bief_obj), TARGET :: svifon
154  DOUBLE PRECISION, DIMENSION(:), POINTER :: vifond
155 !
156 ! POWER PER UNIT LENGTH
157  TYPE(bief_obj), TARGET :: spower
158  DOUBLE PRECISION, DIMENSION(:), POINTER :: power
159 !
160 ! MEAN PERIOD Tmoy
161  TYPE(bief_obj), TARGET :: sptmoy
162  DOUBLE PRECISION, DIMENSION(:), POINTER :: ptmoy
163 !
164 ! MEAN PERIOD Tm01
165  TYPE(bief_obj), TARGET :: sptm01
166  DOUBLE PRECISION, DIMENSION(:), POINTER :: ptm01
167 !
168 ! MEAN PERIOD Tm02
169  TYPE(bief_obj), TARGET :: sptm02
170  DOUBLE PRECISION, DIMENSION(:), POINTER :: ptm02
171 !
172 ! Discrete peak period
173  TYPE(bief_obj), TARGET :: spptpd
174  DOUBLE PRECISION, DIMENSION(:), POINTER :: pptpd
175 !
176 ! Discrete peak period
177  TYPE(bief_obj), TARGET :: pprea5
178  DOUBLE PRECISION, DIMENSION(:), POINTER :: prea5
179 !
180 ! Discrete peak period
181  TYPE(bief_obj), TARGET :: pprea8
182  DOUBLE PRECISION, DIMENSION(:), POINTER :: prea8
184  TYPE(bief_obj), TARGET :: sprive, sibor , slifbr,
187  & samorp
188 
189 ! DU vieux
190  type(bief_obj), TARGET :: sxrelc, syrelc, sxrelv, syrelv
191  DOUBLE PRECISION, DIMENSION(:) , POINTER :: xrelc, xrelv, yrelc,
193 ! FIN DU vieux
194 
195 ! BLOCK OF BIEF_OBJ STRUCTURES
196 !
197  TYPE(bief_obj) :: tb
198 !
199 ! EXTENSION OF IKLE2 (WITH LARGER NUMBER OF ELEMENTS)
200 !
201  TYPE(bief_obj) :: ikle_ext
202 !
203 ! BIEF_OBJ STRUCTURES FOR ARRAYS OF DIMENSION NPOIN3
204 !
205  TYPE(bief_obj), POINTER :: t3_01,t3_02,t3_03,t3_04,t3_05,t3_06
206  TYPE(bief_obj), POINTER :: t3_07,t3_08,t3_09,t3_10
207 !
208 ! MESH STRUCTURES FOR 2D AND 3D
209 !
210  TYPE(bief_mesh), TARGET :: mesh,mesh3d
211 !
212 ! DIFFRACTION
213 !
214  TYPE(bief_obj), TARGET :: sa, sa_rmse, sccg, sdelta, sddx, sddy
215  TYPE(bief_obj), TARGET :: sdiv, snb_close, sneigb
216  TYPE(bief_obj), TARGET :: srk, srx, srxx, sry, sryy, sxkonpt
218 !-----------------------------------------------------------------------
219 ! KEYWORDS AND PARAMETERS
220 !-----------------------------------------------------------------------
221 !
222 ! NUMBER OF DISCRETISED DIRECTIONS
223 !
224  INTEGER ndire
225 !
226 ! NUMBER OF DISCRETISED FREQUENCIES
227 !
228  INTEGER nf
229 !
230 ! PERIOD FOR LISTING PRINTOUTS
231 !
232  INTEGER lisprd
233 !
234 ! PERIOD FOR GRAPHIC PRINTOUTS
235 !
236  INTEGER graprd
237 !
238 ! NUMBER OF TIME STEP
239 !
240  INTEGER, TARGET :: nit
241 !
242 ! TIDE REFRESHING PERIOD
243 !
244  INTEGER lam
245 !
246 ! RANK OF THE WATER LEVEL DATA IN THE TELEMAC FILE
247 !
248  INTEGER idhma
249 !
250 ! NUMBER OF FIRST ITERATION FOR GRAPHICS PRINTOUTS
251 !
252  INTEGER gradeb
253 !
254 ! NUMBER OF BOTTOM SMOOTHINGS
255 !
256  INTEGER lisfon
257 !
258 ! WIND GENERATION
259 !
260  INTEGER svent
261 !
262 ! WHITECAPPING DISSIPATION
263 !
264  INTEGER smout
265 !
266 ! BOTTOM FRICTION DISSIPATION
267 !
268  INTEGER sfrot
269 !
270 ! NON-LINEAR TRANSFERS BETWEEN FREQUENCIES
271 !
272  INTEGER strif
273 !
274 ! DEPTH-INDUCED BREAKING DISSIPATION
275 !
276  INTEGER sbrek
277 !
278 ! DEPTH-INDUCED BREAKING 1 (BJ) QB COMPUTATION METHOD
279 !
280  INTEGER iqbbj
281 !
282 ! DEPTH-INDUCED BREAKING 1 (BJ) HM COMPUTATION METHOD
283 !
284  INTEGER ihmbj
285 !
286 ! DEPTH-INDUCED BREAKING 1 (BJ) CHARACTERISTIC FREQUENCY
287 !
288  INTEGER ifrbj
289 !
290 ! DEPTH-INDUCED BREAKING 2 (TG) CHARACTERISTIC FREQUENCY
291 !
292  INTEGER ifrtg
293 !
294 ! DEPTH-INDUCED BREAKING 2 (TG) WEIGHTING FUNCTION
295 !
296  INTEGER iwhtg
297 !
298 ! DEPTH-INDUCED BREAKING 3 (RO) WAVE HEIGHT DISTRIBUTION
299 !
300  INTEGER idisro
301 !
302 ! DEPTH-INDUCED BREAKING 3 (RO) EXPONENT WEIGHTING FUNCTION
303 !
304  INTEGER iexpro
305 !
306 ! DEPTH-INDUCED BREAKING 3 (RO) CHARACTERISTIC FREQUENCY
307 !
308  INTEGER ifrro
309 !
310 ! DEPTH-INDUCED BREAKING 4 (IH) CHARACTERISTIC FREQUENCY
311 !
312  INTEGER ifrih
313 !
314 ! NUMBER OF BREAKING TIME STEPS
315 !
316  INTEGER ndtbrk
317 !
318 ! WAVE GROWTH LIMITER
319 !
320  INTEGER limit
321 !
322 ! CURRENTS FILE FORMAT
323 !
324  INTEGER indic
325 !
326 ! WINDS FILE FORMAT
327 !
328  INTEGER indiv
329 !
330 ! TIDAL WATER LEVEL FILE FORMAT
331 !
332  INTEGER indim
333 !
334 ! TYPE OF INITIAL DIRECTIONAL SPECTRUM
335 !
336  INTEGER inispe
337 !
338 ! TYPE OF BOUNDARY DIRECTIONAL SPECTRUM
339 !
340  INTEGER limspe
341 !
342 ! TRIAD INTERACTIONS
343 !
344  INTEGER stria
345 !
346 ! NUMBER OF ITERATIONS FOR THE SOURCE TERMS
347 !
348  INTEGER nsits
349 !
350 ! TIME INCREMENT NUMBER IN TELEMAC FILE
351 !
352  INTEGER nptt
353 !
354 ! VECTOR LENGTH
355 !
356  INTEGER lvmac
357 !
358 ! NUMBER OF PRIVATE ARRAYS, NUMBER OF PRIVATE ARRAYS WITH GIVEN NAME
359 !
360  INTEGER npriv,n_names_priv
361 !
362 ! NUMBER OF DIFFERENTIATING ARRAYS, AND THOSE WITH A GIVEN NAME
363 !
364  INTEGER nadvar,n_names_advar
365 !
366 ! INITIAL ANGULAR DISTRIBUTION FUNCTION
367 !
368  INTEGER frabi
369 !
370 ! BOUNDARY ANGULAR DISTRIBUTION FUNCTION
371 !
372  INTEGER frabl
373 !
374 ! GODA CONSTANT FOR THE ANGULAR DISTRIBUTION FUNCTION
375 !
376  DOUBLE PRECISION smax
377 !
378 ! NUMBER OF POINTS FOR WHICH WE WANT TO WRITE THEIR SPECTRUM
379 !
380  INTEGER npleo
381 !
382 ! NUMBER OF POINTS FOR WHICH WE WILL IMPOSE A SPECTRUM
383 !
384  INTEGER npspe
385 !
386 ! DEBUGGER
387 !
388  INTEGER debug
389 !
390 ! COORDINATES OF THE ORIGIN IN (X, Y)
391 !
392  INTEGER i_orig,j_orig
393 !
394 ! LINEAR WAVE GROWTH
395 !
396  INTEGER lvent
397 !
398 ! SETTING FOR INTEGRATION ON OMEGA1
399 !
400  INTEGER iq_om1
401 !
402 ! SETTING FOR INTEGRATION ON THETA1
403 !
404  INTEGER nq_te1
405 !
406 ! SETTING FOR INTEGRATION ON OMEGA2
407 !
408  INTEGER nq_om2
409 !
410 ! DIFFRACTION
411 !
412  INTEGER diffra
413 !
414 ! STARTING TIME STEP FOR DIFFRACTION
415 !
416  INTEGER nptdif
417 !
418 ! DIAGNOSTIC TAIL OPTION
419 !
420  INTEGER diaghf
421 !
422 ! OPTION FOR SECOND DERIVATIVES
423 !
424  INTEGER optder
425 !
426 ! DISSIPATION BY STRONG CURRENT
427 !
428  INTEGER sdscu
429 !
430 ! MODELISATION CBAJ
431 !
432  INTEGER cbaj
433 !
434 ! TIME STEP
435 !
436  DOUBLE PRECISION, TARGET :: dt
437 !
438 ! MINIMAL FREQUENCY
439 !
440  DOUBLE PRECISION f1
441 !
442 ! FREQUENTIAL RATIO
443 !
444  DOUBLE PRECISION raisf
445 !
446 ! DATE OF COMPUTATION BEGINNING
447 !
448  DOUBLE PRECISION ddc
449 !
450 ! BOTTOM FRICTION COEFFICIENT
451 !
452  DOUBLE PRECISION cfrot1
453 !
454 ! WHITE CAPPING DISSIPATION COEFFICIENT
455 !
456  DOUBLE PRECISION cmout1
457 !
458 ! WHITE CAPPING WEIGHTING COEFFICIENT
459 !
460  DOUBLE PRECISION cmout2
461 !
462 ! AIR DENSITY
463 !
464  DOUBLE PRECISION roair
465 !
466 ! WATER DENSITY
467 !
468  DOUBLE PRECISION roeau
469 !
470 ! WIND GENERATION COEFFICIENT
471 !
472  DOUBLE PRECISION betam
473 !
474 ! VON KARMAN CONSTANT
475 !
476  DOUBLE PRECISION xkappa
477 !
478 ! CHARNOCK CONSTANT
479 !
480  DOUBLE PRECISION alpha
481 !
482 ! SHIFT GROWING CURVE DUE TO WIND
483 !
484  DOUBLE PRECISION decal
485 !
486 ! ELEVATION FOR WIND MEASUREMENTS
487 !
488  DOUBLE PRECISION zvent
489 !
490 ! WIND DRAG COEFFICIENT
491 !
492  DOUBLE PRECISION cdrag
493 !
494 ! DEPTH-INDUCED BREAKING 1 (BJ) COEFFICIENT ALPHA
495 !
496  DOUBLE PRECISION alfabj
497 !
498 ! DEPTH-INDUCED BREAKING 1 (BJ) COEFFICIENT GAMMA1
499 !
500  DOUBLE PRECISION gambj1
501 !
502 ! DEPTH-INDUCED BREAKING 1 (BJ) COEFFICIENT GAMMA2
503 !
504  DOUBLE PRECISION gambj2
505 !
506 ! DEPTH-INDUCED BREAKING 2 (TG) COEFFICIENT B
507 !
508  DOUBLE PRECISION boretg
509 !
510 ! DEPTH-INDUCED BREAKING 2 (TG) COEFFICIENT GAMMA
511 !
512  DOUBLE PRECISION gamatg
513 !
514 ! DEPTH-INDUCED BREAKING 3 (RO) COEFFICIENT ALPHA
515 !
516  DOUBLE PRECISION alfaro
517 !
518 ! DEPTH-INDUCED BREAKING 3 (RO) COEFFICIENT GAMMA
519 !
520  DOUBLE PRECISION gamaro
521 !
522 ! DEPTH-INDUCED BREAKING 3 (RO) COEFFICIENT GAMMA2
523 !
524  DOUBLE PRECISION gam2ro
525 !
526 ! DEPTH-INDUCED BREAKING 4 (IH) COEFFICIENT BETA0
527 !
528  DOUBLE PRECISION betaih
529 !
530 ! DEPTH-INDUCED BREAKING 4 (IH) COEFFICIENT M2STAR
531 !
532  DOUBLE PRECISION em2sih
533 !
534 ! MAXIMUM VALUE OF THE RATIO HM0 OVER D
535 !
536  DOUBLE PRECISION coefhs
537 !
538 ! COEFFICIENT OF THE TIME SUB-INCREMENTS FOR BREAKING
539 !
540  DOUBLE PRECISION xdtbrk
541 !
542 ! STANDARD CONFIGURATION PARAMETER
543 !
544  DOUBLE PRECISION xlamd
545 !
546 ! IMPLICITATION COEFFICIENT FOR SOURCE TERMS
547 !
548  DOUBLE PRECISION cimpli
549 !
550 ! INITIAL STILL WATER LEVEL
551 !
552  DOUBLE PRECISION zrepos
553 !
554 ! TRIADS 1 (LTA) COEFFICIENT ALPHA
555 !
556  DOUBLE PRECISION alflta
557 !
558 ! TRIADS 1 (LTA) COEFFICIENT RFMLTA
559 !
560  DOUBLE PRECISION rfmlta
561 !
562 ! TRIADS 2 (SPB) NUMBER OF CONFIGURATIONS
563 !
564  INTEGER nbd
565 !
566 ! TRIADS 2 (SPB) COEFFICIENT K
567 !
568  DOUBLE PRECISION kspb
569 !
570 ! TRIADS 2 (SPB) LOWER DIRECTIONAL BOUNDARY
571 !
572  DOUBLE PRECISION bdispb
573 !
574 ! TRIADS 2 (SPB) UPPER DIRECTIONAL BOUNDARY
575 !
576  DOUBLE PRECISION bdsspb
577  ! TRIAD QT2
578  INTEGER, ALLOCATABLE :: qindi(:)
579  LOGICAL :: deja_qt2 = .false.
580 !
581 ! SIGNIFICANT WAVE HEIGHT
582 !
583  DOUBLE PRECISION hm0
584 !
585 ! PEAK FREQUENCY
586 !
587  DOUBLE PRECISION fpic
588 !
589 ! PEAK FACTOR
590 !
591  DOUBLE PRECISION gamma
592 !
593 ! VALUE OF SIGMA-A FOR SPECTRUM
594 !
595  DOUBLE PRECISION sigmaa
596 !
597 ! VALUE OF SIGMA-B FOR SPECTRUM
598 !
599  DOUBLE PRECISION sigmab
600 !
601 ! PHILLIPS CONSTANT
602 !
603  DOUBLE PRECISION alphil
604 !
605 ! MEAN FETCH VALUE
606 !
607  DOUBLE PRECISION fetch
608 !
609 ! MAXIMUM PEAK FREQUENCY
610 !
611  DOUBLE PRECISION fremax
612 !
613 ! MAIN DIRECTION 1
614 !
615  DOUBLE PRECISION teta1
616 !
617 ! DIRECTIONAL SPREAD 1
618 !
619  DOUBLE PRECISION spred1
620 !
621 ! MAIN DIRECTION 2
622 !
623  DOUBLE PRECISION teta2
624 !
625 ! DIRECTIONAL SPREAD 2
626 !
627  DOUBLE PRECISION spred2
628 !
629 ! WEIGHTING FACTOR FOR ADF (DIRECTIONAL SPREADING FUNCTION)
630 !
631  DOUBLE PRECISION xlamda
632 !
633 ! SPECTRUM TAIL FACTOR
634 !
635  DOUBLE PRECISION tailf
636 !
637 ! SPECTRUM ENERGY THRESHOLD
638 !
639  DOUBLE PRECISION e2fmin
640 !
641 ! BOUNDARY SIGNIFICANT WAVE HEIGHT
642 !
643  DOUBLE PRECISION hm0l
644 !
645 ! BOUNDARY PEAK FREQUENCY
646 !
647  DOUBLE PRECISION fpicl
648 !
649 ! BOUNDARY SPECTRUM VALUE OF SIGMA-A
650 !
651  DOUBLE PRECISION sigmal
652 !
653 ! BOUNDARY SPECTRUM VALUE OF SIGMA-B
654 !
655  DOUBLE PRECISION sigmbl
656 !
657 ! BOUNDARY PHILLIPS CONSTANT
658 !
659  DOUBLE PRECISION aphill
660 !
661 ! BOUNDARY MEAN FETCH VALUE
662 !
663  DOUBLE PRECISION fetchl
664 !
665 ! BOUNDARY MAXIMUM PEAK FREQUENCY
666 !
667  DOUBLE PRECISION fpmaxl
668 !
669 ! BOUNDARY MAIN DIRECTION 1
670 !
671  DOUBLE PRECISION teta1l
672 !
673 ! BOUNDARY DIRECTIONAL SPREAD 1
674 !
675  DOUBLE PRECISION spre1l
676 !
677 ! BOUNDARY MAIN DIRECTION 2
678 !
679  DOUBLE PRECISION teta2l
680 !
681 ! BOUNDARY DIRECTIONAL SPREAD 2
682 !
683  DOUBLE PRECISION spre2l
684 !
685 ! BOUNDARY WEIGHTING FACTOR FOR ADF
686 !
687  DOUBLE PRECISION xlamdl
688 !
689 ! BOUNDARY PEAK FACTOR
690 !
691  DOUBLE PRECISION gammal
692 !
693 ! WIND VELOCITY ALONG X AND Y
694 !
695  DOUBLE PRECISION vx_cte,vy_cte
696 !
697 ! MINIMUM WATER DEPTH
698 !
699  DOUBLE PRECISION promin
700 !
701 ! COORDINATES OF SPECTRUM PRINTOUT POINTS
702 !
703  DOUBLE PRECISION, ALLOCATABLE :: xleo(:),yleo(:)
704 !
705 ! ID OF SPECTRUM PRINTOUT NODE
706 !
707  INTEGER, ALLOCATABLE :: noleo(:)
708 !
709 ! COORDINATES OF THE SPECTRUM THAT WILL BE IMPOSED
710 !
711  DOUBLE PRECISION, ALLOCATABLE :: xspe(:),yspe(:)
712 !
713 ! YAN GENERATION COEFFICIENT D
714 !
715  DOUBLE PRECISION coefwd
716 !
717 ! YAN GENERATION COEFFICIENT E
718 !
719  DOUBLE PRECISION coefwe
720 !
721 ! YAN GENERATION COEFFICIENT F
722 !
723  DOUBLE PRECISION coefwf
724 !
725 ! YAN GENERATION COEFFICIENT H
726 !
727  DOUBLE PRECISION coefwh
728 !
729 ! WESTHUYSEN DISSIPATION COEFFICIENT
730 !
731  DOUBLE PRECISION cmout3
732 !
733 ! SATURATION THRESHOLD FOR THE DISSIPATION
734 !
735  DOUBLE PRECISION cmout4
736 !
737 ! WESTHUYSEN WHITE CAPPING DISSIPATION
738 !
739  DOUBLE PRECISION cmout5
740 !
741 ! WESTHUYSEN WEIGHTING COEFFICIENT
742 !
743  DOUBLE PRECISION cmout6
744 !
745 ! QNL4 - THRESHOLD0 FOR CONFIGURATIONS ELIMINATION
746 !
747  DOUBLE PRECISION seuil
748 !
749 ! QNL4 - THRESHOLD1 FOR CONFIGURATIONS ELIMINATION
750 !
751  DOUBLE PRECISION seuil1
752 !
753 ! QNL4 - THRESHOLD2 FOR CONFIGURATIONS ELIMINATION
754 !
755  DOUBLE PRECISION seuil2
756 !
757 ! SPECTRUM VARIANCE THRESHOLD FOR DIFFRACTION
758 !
759  DOUBLE PRECISION f2difm
760 !
761 ! DISSIPATION COEFFICIENT FOR STRONG CURRENT
762 !
763  DOUBLE PRECISION cdscur
764 !
765 ! TIME OF BEGGINNING CALCULATION
766 !
767  DOUBLE PRECISION at0
768 !
769 ! CONSIDERATION OF SOURCE TERMS
770 !
771  LOGICAL tsou
772 !
773 ! SPHERICAL COORDINATES
774 !
775  LOGICAL sphe
776 !
777 ! GLOBAL OUTPUT AT THE END
778 !
779  LOGICAL glob
780 !
781 ! NEXT COMPUTATION
782 !
783  LOGICAL suit
784 !
785 ! INFINITE DEPTH
786 !
787  LOGICAL proinf
788 !
789 ! CONSIDERATION OF A CURRENT
790 !
791  LOGICAL couran
792 !
793 ! CONSIDERATION OF A WIND
794 !
795  LOGICAL vent
796 !
797 ! CONSIDERATION OF A STATIONARY CURRENT
798 !
799  LOGICAL cousta
800 !
801 ! CONSIDERATION OF A STATIONARY WIND
802 !
803  LOGICAL vensta
804 !
805 ! CONSIDERATION OF TIDE
806 !
807  LOGICAL maree
808 !
809 ! TRIGONOMETRICAL CONVENTION
810 !
811  LOGICAL trigo
812 !
813 ! RECOVERY OF TELEMAC DATA ITEM
814 !
815  LOGICAL dontel
816 !
817 ! CONSIDERATION OF PROPAGATION
818 !
819  LOGICAL prop
820 !
821 ! VALIDATION
822 !
823  LOGICAL valid
824 !
825 ! LIMIT SPECTRUM MODIFIED BY USER
826 !
827  LOGICAL speuli
828 !
829 ! DIFFRACTION FILTER
830 !
831  LOGICAL fltdif
832 !
833 ! INITIAL TIME SET TO ZERO
834 !
835  LOGICAL raztim
836 !
837 ! VEGETATION TAKEN INTO ACCOUNT
838 !
839  LOGICAL vegetation
840 !
841 ! POROUS MEDIA TAKEN INTO ACCOUNT
842 !
843  LOGICAL porous
844 !
845 ! SOURCE TERMS CALCULATED ON IMPOSED BOUNDARIES
846 !
847  LOGICAL source_on_bnd
848 !
849 ! TITLE
850 !
851  CHARACTER (LEN=80) :: titcas
852 !
853 ! VARIABLES FOR 2D GRAPHIC PRINTOUTS
854 !
855  CHARACTER(LEN=72) :: sort2d
856 !
857  INTEGER, PARAMETER :: maxvar = 35
858 !
859 ! EQUATION SOLVED
860 !
861  CHARACTER(LEN=20) equa
862 !
863 ! NAMES OF PRIVATE ARRAYS (GIVEN BY USER)
864 !
865  CHARACTER(LEN=32) names_prive(4)
866 !
867 ! NAMES OF DIFFERENTING ARRAYS (GIVEN BY USER)
868 !
869  CHARACTER(LEN=32) names_advar(maxvar)
870 !
871 ! TYPE OF ELEMENT IN 2D, 3D
872 !
873  INTEGER ielm2,ielm3
874 !
875 ! NPOIN2*NDIRE
876 !
877  INTEGER npoin3
878 !
879 !GM V6P1 - NEW SOURCE TERMS
881 ! declaration for QNL4 - MDIA method
882  INTEGER, PARAMETER :: mdia = 4
884 ! declaration for QNL4 - MDIA method
885  INTEGER , ALLOCATABLE :: ianmdi(:,:,:)
887 ! declaration for QNL4 - MDIA method
888  DOUBLE PRECISION,ALLOCATABLE :: coemdi(:,:),xmumdi(:),xlamdi(:)
890 ! declaration for QNL4 - GQM method
891  INTEGER nconf , nconfm , nf1 , nf2 , nt1
893 ! declaration for QNL4 - GQM method
894  DOUBLE PRECISION elim
896 ! declaration for QNL4 - GQM method
897  INTEGER, ALLOCATABLE :: k_if1(:) , k_1p(:,:) , k_1m(:,:),
898  & k_if2(:,:,:), k_if3(:,:,:),
899  & k_1p2p(:,:,:), k_1p2m(:,:,:),
900  & k_1p3p(:,:,:), k_1p3m(:,:,:),
901  & k_1m2p(:,:,:), k_1m2m(:,:,:),
902  & k_1m3p(:,:,:), k_1m3m(:,:,:),
903  & idconf(:,:)
905 ! declaration for QNL4 - GQM method
906  DOUBLE PRECISION, ALLOCATABLE :: tb_v24(:,:,:), tb_v34(:,:,:),
907  & tb_tpm(:,:,:), tb_tmp(:,:,:),
908  & tb_fac(:,:,:),
909  & tb_v14(:)
911 ! declaration for QNL4 - GQM method
912  INTEGER, PARAMETER :: lbuf = 500
914 ! declaration for QNL4 - GQM method
915  INTEGER, PARAMETER :: dimbuf = 2*lbuf+200
917 ! declaration for QNL4 - GQM method
918  INTEGER f_poin(dimbuf) , t_poin(dimbuf)
920 ! declaration for QNL4 - GQM method
921  DOUBLE PRECISION f_coef(dimbuf), f_proj(dimbuf), tb_sca(dimbuf)
922 !GM Fin
923 !
924 !V6P2 Diffraction
926 ! description
927  INTEGER, PARAMETER :: maxnsp = 30
928  INTEGER :: nrk_c
929 !V6P2 End diffraction
930 !
932  LOGICAL sorleo(maxvar) , sorimp(maxvar)
934  CHARACTER(LEN=32) varcla(10)
936 ! nom des variables
937  CHARACTER(LEN=32) texte(maxvar)
938 !
939  INTEGER :: alire(maxvar)
940 ! DATA ALIRE /
941 ! BE ABSOLUTLY SURE THAT ALIRE IS SIZE MAXVAR
942  parameter( alire = (/
943  & 0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,
944  & 0,0,0,0,0,0,0,0 /) )
945 !
946 !-----------------------------------------------------------------------
947 ! DECLARES POINTERS FOR ALIASES
948 ! THE TARGETS ARE DEFINED IN POINT
949 !-----------------------------------------------------------------------
950 !
951 ! MESH COORDINATES PER POINT
952 !
953  DOUBLE PRECISION, DIMENSION(:), POINTER :: x,y
954 !
955 ! MESH COORDINATES IN ELEMENTS
956 !
957  DOUBLE PRECISION, DIMENSION(:), POINTER :: xel,yel
959 ! inverse du determinant des elements 2d
960  DOUBLE PRECISION, DIMENSION(:), POINTER :: surdet
962 ! correspondance numerotation locale-globale
963  INTEGER, DIMENSION(:) , POINTER :: ikle2
965 ! numeros 2d des elements ayant une face commune avec l'element.
966 ! si ifabor<=0 on a une face liquide,solide,ou periodique
967  INTEGER, DIMENSION(:) , POINTER :: ifabor
969 ! numeros globaux des points frontieres
970  INTEGER, DIMENSION(:) , POINTER :: nbor
972 ! nombre d'elements du maillage 2d
973  INTEGER, POINTER:: nelem2
975 ! nombre de points 'frontiere'
976  INTEGER, POINTER:: nptfr
978 ! nombre de points du maillage 2d
979  INTEGER, POINTER :: npoin2
981 ! spectre directionnel de variance
982  DOUBLE PRECISION, DIMENSION(:) , POINTER :: f
984 ! champ convecteur selon teta
985  DOUBLE PRECISION, DIMENSION(:) , POINTER :: ct
987 ! champ convecteur selon freq. relat.
988  DOUBLE PRECISION, DIMENSION(:) , POINTER :: cf
990 ! coordonnees barycentriques suivant z des noeuds dans leurs etages "eta" associes
991  DOUBLE PRECISION, DIMENSION(:) , POINTER :: shz
993 ! coordonnees barycentriques suivant f des noeuds dans leurs frequences "fre" associees
994  DOUBLE PRECISION, DIMENSION(:) , POINTER :: shf
996 ! jacobien passage de n(kx,ky) a f(fr,teta)
997  DOUBLE PRECISION, DIMENSION(:) , POINTER :: b
999 ! nombres d'onde
1000  DOUBLE PRECISION, DIMENSION(:) , POINTER :: xk
1002 ! vitesses de groupe
1003  DOUBLE PRECISION, DIMENSION(:) , POINTER :: cg
1005 ! cote du fond
1006  DOUBLE PRECISION, DIMENSION(:) , POINTER :: zf
1008 ! profondeur
1009  DOUBLE PRECISION, DIMENSION(:) , POINTER :: depth
1011 ! composantes ouest-est du courant (a t)
1012  DOUBLE PRECISION, DIMENSION(:) , POINTER :: uc
1014 ! composantes sud-nord du courant (a t)
1015  DOUBLE PRECISION, DIMENSION(:) , POINTER :: vc
1017 ! composantes ouest-est du courant (a t1)
1018  DOUBLE PRECISION, DIMENSION(:) , POINTER :: uc1
1020 ! composantes sud-nord du courant (a t1)
1021  DOUBLE PRECISION, DIMENSION(:) , POINTER :: vc1
1023 ! composantes ouest-est du courant (a t2)
1024  DOUBLE PRECISION, DIMENSION(:) , POINTER :: uc2
1026 ! composantes sud-nord du courant (a t2)
1027  DOUBLE PRECISION, DIMENSION(:) , POINTER :: vc2
1029 ! variation temporelle de la profondeur
1030  DOUBLE PRECISION, DIMENSION(:) , POINTER :: dzhdt
1032 ! gradient de profondeur par rapport a x
1033  DOUBLE PRECISION, DIMENSION(:) , POINTER :: dzx
1035 ! gradient de profondeur par rapport a y
1036  DOUBLE PRECISION, DIMENSION(:) , POINTER :: dzy
1038 ! tableau utilise pour le limiteur de croissance
1039  DOUBLE PRECISION, DIMENSION(:) , POINTER :: df_lim
1041 ! composantes ouest-est du vent (a t)
1042  DOUBLE PRECISION, DIMENSION(:) , POINTER :: uv
1044 ! composantes sud-nord du vent (a t)
1045  DOUBLE PRECISION, DIMENSION(:) , POINTER :: vv
1047 ! composantes ouest-est du vent (a t1)
1048  DOUBLE PRECISION, DIMENSION(:) , POINTER :: uv1
1050 ! composantes sud-nord du vent (a t1)
1051  DOUBLE PRECISION, DIMENSION(:) , POINTER :: vv1
1053 ! composantes ouest-est du vent (a t2)
1054  DOUBLE PRECISION, DIMENSION(:) , POINTER :: uv2
1056 ! composantes sud-nord du vent (a t2)
1057  DOUBLE PRECISION, DIMENSION(:) , POINTER :: vv2
1059 ! hauteur de la maree par rapport a zrepos a t1
1060  DOUBLE PRECISION, DIMENSION(:) , POINTER :: zm1
1062 ! hauteur de la maree par rapport a zrepos a t2
1063  DOUBLE PRECISION, DIMENSION(:) , POINTER :: zm2
1065 ! frequences de discretisation
1066  DOUBLE PRECISION, DIMENSION(:) , POINTER :: freq
1068 ! pas de frequence
1069  DOUBLE PRECISION, DIMENSION(:) , POINTER :: dfreq
1071 ! VARIANCE DENSITY FREQUENCY SPECTRUM
1072  DOUBLE PRECISION, DIMENSION(:) , POINTER :: spec
1074 ! DIRECTIONAL SPREADING FUNCTION VALUES
1075  DOUBLE PRECISION, DIMENSION(:) , POINTER :: fra
1077 ! coefficients de calcul pour dia
1078  DOUBLE PRECISION, DIMENSION(:) , POINTER :: coefnl
1080 ! cosinus des latitudes des points 2d
1081  DOUBLE PRECISION, DIMENSION(:) , POINTER :: cosf
1083 ! tangentes des latitudes des points 2d
1084  DOUBLE PRECISION, DIMENSION(:) , POINTER :: tgf
1086 ! gradient de courant u par rapport a x
1087  DOUBLE PRECISION, DIMENSION(:) , POINTER :: dux
1089 ! gradient de courant u par rapport a y
1090  DOUBLE PRECISION, DIMENSION(:) , POINTER :: duy
1092 ! gradient de courant v par rapport a x
1093  DOUBLE PRECISION, DIMENSION(:) , POINTER :: dvx
1095 ! gradient de courant v par rapport a y
1096  DOUBLE PRECISION, DIMENSION(:) , POINTER :: dvy
1098 ! directions de discretisation
1099  DOUBLE PRECISION, DIMENSION(:) , POINTER :: teta
1101 ! cosinus des directions
1102  DOUBLE PRECISION, DIMENSION(:) , POINTER :: costet
1104 ! sinus des directions
1105  DOUBLE PRECISION, DIMENSION(:) , POINTER :: sintet
1107 ! densite spectrale au bord
1108  DOUBLE PRECISION, DIMENSION(:) , POINTER :: fbor
1110 ! contribution terme source - partie derivee
1111  DOUBLE PRECISION, DIMENSION(:) , POINTER :: tsder
1113 ! contribution terme source - partie totale
1114  DOUBLE PRECISION, DIMENSION(:) , POINTER :: tstot
1116 ! tableau de travail structures
1117  DOUBLE PRECISION, DIMENSION(:) , POINTER :: t0
1119 ! tableau de travail structures
1120  DOUBLE PRECISION, DIMENSION(:) , POINTER :: t1
1122 ! tableau de travail structures
1123  DOUBLE PRECISION, DIMENSION(:) , POINTER :: t2
1125 ! tableau de travail structures
1126  DOUBLE PRECISION, DIMENSION(:) , POINTER :: t3
1128 ! tableau de travail structures
1129  DOUBLE PRECISION, DIMENSION(:) , POINTER :: t4
1130 ! BREAKING WAVE RATIO (CALCULATED IN QBREAK AND USED IN FDISS3D AND FDISSK)
1131  DOUBLE PRECISION, DIMENSION(:) , POINTER :: betabr
1133 ! tableau de travail
1134  DOUBLE PRECISION, DIMENSION(:) , POINTER :: told
1136 ! tableau de travail
1137  DOUBLE PRECISION, DIMENSION(:) , POINTER :: tnew
1139 ! AMORTISSEMENT DE MILIEU POREUX
1140  DOUBLE PRECISION, DIMENSION(:) , POINTER :: amorp
1142 !
1143  DOUBLE PRECISION, DIMENSION(:) ,POINTER :: tra31, tra32,
1146 ! tableau de travail
1147  DOUBLE PRECISION, DIMENSION(:) , POINTER :: tra01
1149 ! tableau utilisateur
1150  DOUBLE PRECISION, DIMENSION(:) , POINTER :: prive
1152 ! differentiable arrays
1153  DOUBLE PRECISION, DIMENSION(:) , POINTER :: advar
1155 !
1156  INTEGER, DIMENSION(:), POINTER :: ibor
1158 ! type des conditions a la limite sur f(libre / impose)
1159  INTEGER, DIMENSION(:), POINTER :: lifbor
1161 ! COLOUR OF BOUNDARY POINT (DEFAULT: ITS RANK)
1162  INTEGER, DIMENSION(:), POINTER :: boundary_colour
1164 ! numeros des elements 2d choisis pour chaque noeud
1165  INTEGER, DIMENSION(:), POINTER :: elt
1167 ! numeros des directions/etages choisis pour chaque noeud
1168  INTEGER, DIMENSION(:), POINTER :: eta
1169 ! numeros des Sous-domaines ou sont les pieds des caracteristiques
1170  INTEGER, DIMENSION(:), POINTER :: isub
1172 ! numeros des frequences choisies pour chaque noeud
1173  INTEGER, DIMENSION(:), POINTER :: fre
1175 ! tableau des indices angulaires pour dia
1176  INTEGER, DIMENSION(:), POINTER :: iangnl
1178 !
1179  INTEGER, DIMENSION(:), POINTER :: itr11 , itr12 , itr13
1181 ! tableau de travail
1182  INTEGER, DIMENSION(:), POINTER :: itr01
1184 !
1185  INTEGER, DIMENSION(:), POINTER :: itr31,itr32,itr33
1187 ! Diffraction
1188 !
1189  INTEGER, DIMENSION(:), POINTER :: nb_close, neigb
1190  DOUBLE PRECISION, DIMENSION(:), POINTER :: ampli, a_rmse, ccg,
1192 !
1193 ! GEOMETRY FILE
1194 !
1195  INTEGER, TARGET :: wacgeo
1197 ! STEERING FILE
1198 !
1199  INTEGER :: waccas
1201 ! BOUNDARY CONDITIONS FILE
1202 !
1203  INTEGER, TARGET :: waccli
1205 ! BOTTOM TOPOGRAPHY FILE
1206 !
1207  INTEGER :: wacfon
1209 ! 2D RESULTS FILE
1210 !
1211  INTEGER, TARGET :: wacres
1213 ! 1D SPECTRA RESULTS FILE
1214 !
1215  INTEGER :: wacspe
1217 ! PUNCTUAL RESULTS FILE
1218 !
1219  INTEGER :: wacleo
1221 ! PREVIOUS COMPUTATION FILE
1222 !
1223  INTEGER :: wacpre
1225 ! GLOBAL RESULT FILE
1226 !
1227  INTEGER :: wacrbi
1229 ! BINARY CURRENTS FILE
1230 !
1231  INTEGER :: waccob
1233 ! FORMATTED CURRENTS FILE
1234 !
1235  INTEGER :: waccof
1237 ! BINARY FILE 1
1238 !
1239  INTEGER :: wacbi1
1241 ! FORMATTED FILE 1
1242 !
1243  INTEGER :: wacfo1
1245 ! BINARY WINDS FILE
1246 !
1247  INTEGER :: wacveb
1249 ! FORMATTED WINDS FILE
1250 !
1251  INTEGER :: wacvef
1253 ! VALIDATION FILE
1254 !
1255  INTEGER :: wacref
1257 ! BINARY TIDAL WATER LEVEL FILE
1258 !
1259  INTEGER :: wacmab
1261 ! FORMATTED TIDAL WATER LEVEL FILE
1262 !
1263  INTEGER :: wacmaf
1265 ! TEXT FILE WHICH DEFINES X AND Y COORDINATES FOR OUTPUTED SPECTRA
1266 !
1267  INTEGER :: leowxy
1269 ! TEXT FILE WHICH DEFINES X AND Y COORDINATES FOR IMPOSED SPECTRA
1270 !
1271  INTEGER :: leoixy
1273 ! BINARY FILE WITH THE IMPOSED SPECTRA
1274 !
1275  INTEGER :: impspe
1277 ! MAXIMUM OF LOGICAL UNITS NUMBERS
1278 !
1279  INTEGER, PARAMETER :: maxlu_wac = 44
1281 ! BIEF_FILES STRUCTURES
1282 !
1283  TYPE(bief_file), TARGET :: wac_files(maxlu_wac)
1284 ! THOSE POINTER WILL DIRECTLY ADDRESS LOGICAL UNIT, NAME, AND FORMAT
1285  INTEGER, POINTER :: lugeo, lures, lupre, lubi1, lufo1,
1287  & lucob, lucof, lumab, lumaf
1288  CHARACTER(LEN=PATH_LEN), POINTER :: namfon, namres, namleo,
1290  &nammab
1291  CHARACTER(LEN=8), POINTER :: fmtgeo, fmtres, fmtpre, fmtbi1,
1293  & fmtmaf, fmtmab
1294 !
1295 ! TOMAWAC CONSTANTS (INITIALISED INTO TOMAWAC_CONSTANTS)
1296 !
1297  DOUBLE PRECISION :: pi,deupi,gravit,pisur2,gradeg,degrad
1298  DOUBLE PRECISION :: sr,r2,usdpi
1300 ! FOR READING NAMES OF VARIABLES IN SERAFIN DATA FILES
1301 ! 30 IS HERE A MAXIMUM OF VARIABLES PER FILE
1302 !
1303  CHARACTER(LEN=32) :: texcob(30),texmab(30),texveb(30)
1305 ! NAMES OF VARIABLES IN SERAFIN DATA FILES (VELOCITY ALONG X AND Y
1306 ! WIND ALONG X AND Y
1307 ! DEPTH)
1308 !
1309  CHARACTER(LEN=32) :: nameu,namev,namewx,namewy,nameh
1311 ! UNIT OF TIME IN SERAFIN DATA FILES
1312 !
1313  DOUBLE PRECISION :: unitcob,unitmab,unitveb,unitspe
1315 ! TIME SHIFT IN SERAFIN DATA FILES
1316 !
1317  DOUBLE PRECISION :: phascob,phasmab,phasveb,phasspe
1319 ! SAVED VARIABLE
1320 !
1321  ! limwac
1322  DOUBLE PRECISION, ALLOCATABLE :: uv2d(:),vv2d(:),prof(:)
1323  DOUBLE PRECISION, ALLOCATABLE :: fb_cte(:,:)
1324  INTEGER :: npb
1325  ! rpi_invr
1326  DOUBLE PRECISION, ALLOCATABLE:: rk_i(:,:), rn(:,:)
1327  DOUBLE PRECISION, ALLOCATABLE:: rx_i(:,:), ry_i(:,:)
1328  DOUBLE PRECISION, ALLOCATABLE:: rxx_i(:,:), ryy_i(:,:)
1329  DOUBLE PRECISION, ALLOCATABLE:: rad1(:,:)
1330  LOGICAL :: deja_rpi = .false.
1331  ! frmset
1332  INTEGER,ALLOCATABLE:: ilm_poin(:,:), clm(:), kacc(:)
1333  INTEGER,ALLOCATABLE:: nb_c(:), sur_p(:,:)
1334  INTEGER,ALLOCATABLE:: stack(:), stack2(:)
1335  LOGICAL,ALLOCATABLE:: already_pom(:)
1336  DOUBLE PRECISION,ALLOCATABLE:: mindist(:)
1337  LOGICAL :: deja_frmset = .false.
1338  ! diffrac
1339  DOUBLE PRECISION, ALLOCATABLE :: sqrdelta(:)
1340  DOUBLE PRECISION, ALLOCATABLE :: sqrccg(:)
1341  DOUBLE PRECISION, ALLOCATABLE :: frdk(:,:),frda(:,:),scda(:,:)
1342  LOGICAL, ALLOCATABLE :: l_delta(:)
1343  LOGICAL :: deja_diffrac = .false.
1344  ! rpi_intr
1345  DOUBLE PRECISION, ALLOCATABLE :: wu_om_rpi(:)
1346  LOGICAL :: deja_rpi_intr = .false.
1347  DOUBLE PRECISION dtsi
1348  ! Time step informations
1349  DOUBLE PRECISION, TARGET :: at
1350  INTEGER, TARGET :: lt
1351 ! NUMBER OF VARIABLES OF THE FORMATTED CURRENT FILE
1352  INTEGER nvcou
1353 ! TIME T1 AND T2 IN THE CURRENT FILE
1354  DOUBLE PRECISION tc1,tc2
1355 ! N.OF VARIABLES OF THE FORMATTED WATER LEVEL FILE
1356  INTEGER nvhma
1357 ! TIME T1 AND T2 IN THE WATER LEVEL FILE
1358  DOUBLE PRECISION tm1,tm2
1359 ! N.OF VARIABLES OF THE WIND FILE
1360  INTEGER nvwin
1361 ! TIME T1 AND T2 IN THE WIND FILE
1362  DOUBLE PRECISION tv1,tv2
1363 ! SAY IF WE TAKE BOUNDARY CONDITION BEFORE OR AFTER THE TIMESTEP
1364 ! true limwac at the beginning of the loop in time
1365  LOGICAL avant
1366 ! SAY IF WE USE ECRETE FUNCTION FOR THE SPECTRUM.
1367  LOGICAL ecret
1368  ! Coupling informations
1369  TYPE cpl_wac_data_obj
1370  ! Number of telemac time steps
1371  INTEGER :: nit_tel
1372  ! Coupling period with telemac
1373  INTEGER :: percou_wac
1374  ! Current velocity along x in telemac model
1375  TYPE(bief_obj), POINTER :: u_tel
1376  ! Current velocity along y in telemac model
1377  TYPE(bief_obj), POINTER :: v_tel
1378  ! Telemac model water depth
1379  TYPE(bief_obj), POINTER :: h_tel
1381  ! Mean direction of wave
1382  TYPE(bief_obj), POINTER :: dirmoy_tel
1383  ! Significant wave height
1384  TYPE(bief_obj), POINTER :: hm0_tel
1385  ! Peak Period order 5th
1386  TYPE(bief_obj), POINTER :: tpr5_tel
1388  ! Orbital velocity
1389  TYPE(bief_obj), POINTER :: orbvel_tel
1390  ! Driving force along x passed to telemac
1391  TYPE(bief_obj), POINTER :: fx_wac
1392  ! Driving force along y passed to telemac
1393  TYPE(bief_obj), POINTER :: fy_wac
1394  ! Wind velocity along x in tomawac model
1395  TYPE(bief_obj), POINTER :: uv_wac
1396  ! Wind velocity along y in tomawac model
1397  TYPE(bief_obj), POINTER :: vv_wac
1398  ! Telemac model time step
1399  DOUBLE PRECISION :: dt_tel
1400  ! Computation time of telemac model
1401  DOUBLE PRECISION :: at_tel
1402  LOGICAL :: coupl3d
1403 ! WAVE INDUCED PRESSURE AND ITS DERIVATIVES
1404  TYPE(bief_obj),POINTER :: wipw, wipdxw, wipdyw
1405 ! STOKES VELOCITY
1406  TYPE(bief_obj),POINTER :: ustw, vstw, wstw
1407 ! ELEVATION
1408  TYPE(bief_obj),POINTER :: ztelw
1409  INTEGER :: nzw
1410 ! SURFACES STRESS DUE TO DEPTH INDUCED WAVE BREAKING
1411  TYPE(bief_obj),POINTER :: fdxw, fdyw
1412 ! DISSIPATION DUE TO BOTTOM FRICTION
1413  TYPE(bief_obj),POINTER :: fbxw, fbyw
1414 ! MODIFIED FRICTION COEFFICIENT DUE TO WAVES + CURRENTS
1415  TYPE(bief_obj),POINTER :: cfwcw
1416 ! MODIFIED TURBULENT WAVES VISCOSITY DUE TO BREAKING
1417  TYPE(bief_obj),POINTER :: fdkw
1418 ! FORCES DUE TO WIND
1419  TYPE(bief_obj),POINTER :: fwx, fwy
1420  END TYPE
1421 
1423  INTEGER, PARAMETER :: wac_full_run = -1
1424  INTEGER, PARAMETER :: wac_cpl_init = 0
1425  INTEGER, PARAMETER :: wac_cpl_run = 1
1426  INTEGER, PARAMETER :: wac_api_init = 2
1427  INTEGER, PARAMETER :: wac_api_run = 3
1429  SAVE
1430 !
1431 ! COUPLING VARIABLES
1432  TYPE(bief_obj), TARGET :: u_tel,v_tel,h_tel
1434  TYPE(bief_obj), TARGET :: cosdir_tel,sindir_tel
1435  TYPE(bief_obj), TARGET :: orbvel_tel
1436  TYPE(bief_obj), TARGET :: fx_wac,fy_wac
1437  TYPE(bief_obj), TARGET :: uv_wac,vv_wac
1439  ! NUMBER OF VARIABLES TO COMMUNICATE
1440  INTEGER :: nvartom2tel
1441  INTEGER :: nvartel2tom
1443  ! BLOCK FOR COMMUNICATION
1444  TYPE(bief_obj) :: tel2tom, tom2tel
1446  ! COPIES OF TELEMAC VARIABLES
1447  LOGICAL :: courou_tel, vent_tel, copsis_tel
1449 
1450 
1451  END MODULE declarations_tomawac
double precision, dimension(:), pointer tra36
type(bief_obj), pointer t3_06
integer, dimension(:,:,:), allocatable ianmdi
type(bief_obj), target stauwa
double precision, dimension(:), pointer sxx
character(len=path_len), pointer namwxy
double precision, dimension(:), pointer sintet
type(bief_obj), target scosf
character(len=8), pointer fmtgeo
double precision, dimension(:), pointer ddy
logical, dimension(maxvar) sorimp
integer, dimension(:), pointer itr11
double precision, dimension(:), pointer cg
type(bief_obj), target hm0_tel
double precision, dimension(:), pointer uv
type(bief_obj), target sxrelv
type(bief_obj), target sptmoy
double precision, dimension(:), pointer dvx
double precision, dimension(:), pointer cdra2
character(len=8), pointer fmtpre
integer, dimension(:), pointer nb_close
type(bief_obj), target ststot
type(bief_obj), target stgf
double precision, dimension(:), pointer uc2
character(len=8), pointer fmtveb
type(bief_obj), target snb_close
integer, dimension(:,:), allocatable k_1m
double precision, dimension(:), pointer t3
double precision, dimension(:), pointer div
type(bief_obj), target ssinte
double precision, dimension(:), pointer yrelc
character(len=32), dimension(10) varcla
double precision, dimension(:,:,:), allocatable tb_fac
double precision, dimension(:,:,:), allocatable tb_tpm
double precision, dimension(:), allocatable tb_v14
type(bief_obj), target contyy
type(bief_obj), target stra01
double precision, dimension(:), pointer dzhdt
type(bief_obj), target sitr01
type(bief_obj), target sfre
character(len=path_len), pointer namixy
double precision, dimension(:), allocatable wu_om_rpi
type(bief_obj), target spower
integer, dimension(:,:,:), allocatable k_1m2p
type(bief_obj), target sshz
double precision, dimension(:), pointer vc
type(bief_obj), target sindir_tel
double precision, dimension(:), pointer vc2
type(bief_obj), target svv
integer, dimension(dimbuf) f_poin
type(bief_obj), target u_tel
double precision, dimension(:,:), allocatable rx_i
double precision, dimension(:), pointer depth
logical, dimension(:), allocatable already_pom
double precision, dimension(:), pointer freq
double precision, dimension(:), pointer ccg
type(bief_obj), target sdux
double precision, dimension(:), pointer usnew
double precision, dimension(:), pointer tnew
type(bief_obj), target sa_rmse
double precision, dimension(:,:), allocatable rxx_i
type(bief_obj), target szm2
double precision, dimension(:), allocatable mindist
type(bief_obj), pointer t3_07
type(bief_obj), pointer t3_09
double precision, dimension(:), pointer spec
double precision, dimension(:), pointer a_rmse
double precision, dimension(:), allocatable yspe
integer, dimension(:,:), allocatable idconf
type(bief_obj), target pprea5
type(bief_obj), target selt
type(bief_obj), target sxk
double precision, dimension(:), pointer uc
type(bief_obj), pointer t3_03
type(bief_obj), target svc2
type(bief_obj), target sptm01
type(bief_obj), target bst1
double precision, dimension(:), pointer ampli
type(bief_obj), target sdvy
double precision, dimension(:), pointer prea5
integer, dimension(:,:,:), allocatable k_if2
type(bief_obj), target pfrea5
double precision, dimension(:), allocatable yleo
double precision, dimension(:), pointer yrelv
integer, parameter maxvar
type(bief_obj), target svc
type(bief_obj), target sccg
character(len=8), pointer fmtvef
type(bief_obj), target stra34
type(bief_obj), target steta
character(len=80) titcas
double precision, dimension(:), pointer delta
type(bief_obj), target svifon
double precision, target at
type(bief_obj), target sf
type(bief_obj), target sxrelc
type(bief_obj), pointer t3_05
double precision, dimension(:), pointer xrelv
type(bief_obj), target susold
type(bief_obj), target scoef
integer, dimension(:), pointer fre
type(bief_obj), target sddx
type(bief_obj), target am1
type(bief_obj), target sdzx
double precision, dimension(:), pointer zf
double precision, dimension(:), pointer pptpd
type(bief_obj), target sisub
integer, dimension(:,:,:), allocatable k_1m3p
double precision, dimension(:), pointer vv2
integer, parameter maxlu_wac
double precision, dimension(:), pointer t2
character(len=8), pointer fmtmab
type(bief_obj), pointer t3_02
double precision, dimension(:,:,:), allocatable tb_v34
double precision, dimension(:), pointer ptm02
double precision, dimension(:), pointer uv1
character(len=32), dimension(30) texveb
type(bief_obj), target stra31
double precision, dimension(:,:), allocatable rad1
double precision, dimension(:), pointer teta
integer, dimension(:), pointer boundary_colour
double precision, dimension(:,:), allocatable ry_i
character(len=8), pointer fmtres
integer, dimension(:), pointer lifbor
double precision, dimension(:), pointer dzy
double precision, dimension(:), pointer shf
double precision, dimension(:), pointer power
type(bief_obj), target tpr5_tel
double precision, dimension(:), pointer frea8
integer, dimension(:,:,:), allocatable k_1p3p
type(bief_obj), target uv_wac
type(bief_obj), target sdzhdt
double precision, dimension(:), pointer f
type(bief_obj), target sz0old
type(bief_obj), target spptpd
type(bief_obj), target contxx
type(bief_obj), target st2
integer, dimension(:,:,:), allocatable k_1m3m
double precision, dimension(:), pointer prive
double precision, dimension(:), pointer tra38
integer, dimension(:), pointer neigb
character(len=32), dimension(maxvar) texte
type(bief_obj), target stra37
integer, dimension(:), pointer itr01
double precision, dimension(:), pointer fx
type(bief_obj), target sdelta
double precision, dimension(:), pointer surdet
double precision, dimension(:,:,:), allocatable tb_tmp
double precision, dimension(:), pointer y
type(bief_obj), target scf
integer, dimension(:), pointer itr13
logical, dimension(:), allocatable l_delta
double precision, dimension(:), pointer coefnl
double precision, dimension(:,:), allocatable fb_cte
double precision, dimension(:), pointer usold
type(bief_obj), target v_tel
type(bief_obj), target szf
type(bief_obj), target suc
type(bief_obj), target samorp
type(bief_obj), pointer t3_04
type(bief_obj), target fy_wac
character(len=32), dimension(30) texmab
type(bief_obj), target forcey
integer, dimension(maxvar) alire
character(len=32), dimension(4) names_prive
double precision, dimension(:), pointer t4
double precision, dimension(:), pointer ptmoy
type(bief_obj), target sshp1
double precision, dimension(:), pointer dfreq
double precision, dimension(:), pointer tra31
character(len=path_len), pointer nammaf
type(bief_obj), target st4
double precision, dimension(:), allocatable sqrccg
double precision, dimension(:), pointer advar
double precision, dimension(dimbuf) f_proj
integer, dimension(:), pointer iangnl
type(bief_obj), target slifbr
character(len=path_len), pointer namspe
type(bief_obj), target sddy
double precision, dimension(:), pointer ry
double precision, dimension(:), pointer uv2
type(bief_obj), target stra32
double precision, dimension(:), pointer fy
integer, parameter wac_api_run
integer, dimension(:,:,:), allocatable k_1p2p
double precision, dimension(:), pointer tra34
type(bief_obj), target sfr
type(bief_mesh), target mesh3d
integer, dimension(:), pointer itr12
character(len=8), pointer fmtref
double precision, dimension(:,:), allocatable coemdi
integer, dimension(:,:,:), allocatable k_1m2m
type(bief_obj), target sibor
double precision, dimension(:), pointer tra39
integer, dimension(:,:), allocatable ilm_poin
type(bief_obj), target sb
type(bief_obj), target sxkonpt
double precision, dimension(:), allocatable prof
double precision, dimension(:), allocatable uv2d
integer, parameter mdia
integer, parameter wac_cpl_run
type(bief_obj), pointer t3_08
type(cpl_wac_data_obj) cpl_wac_data
type(bief_obj), target scdra2
type(bief_obj), target st3
double precision, dimension(:), pointer vc1
double precision, dimension(dimbuf) f_coef
integer, dimension(:,:), allocatable sur_p
type(bief_obj), target sdfr
double precision, dimension(:), pointer vifond
type(bief_obj), target sfbor
integer, dimension(:), allocatable k_if1
type(bief_obj), target susnew
integer, dimension(:), pointer elt
integer, dimension(:,:,:), allocatable k_1p2m
double precision, dimension(:), pointer tgf
double precision, dimension(:), pointer xel
character(len=32), dimension(maxvar) names_advar
type(bief_obj), target sitr13
type(bief_obj), target pprea8
character(len=path_len), pointer namvef
character(len=8), pointer fmtbi1
type(bief_obj), target stra35
integer, dimension(:), pointer itr31
integer, parameter wac_cpl_init
type(bief_obj), target suc2
double precision, dimension(:), pointer ct
double precision, dimension(:), pointer b
double precision, dimension(:), pointer z0old
integer, parameter dimbuf
character(len=path_len), pointer namcob
type(bief_obj), target st0
type(bief_obj), target sct
type(bief_obj), target sduy
double precision, dimension(:), pointer zm2
integer, dimension(:), pointer nbor
double precision, dimension(:,:), allocatable rk_i
type(bief_obj), target sfmoy
type(bief_obj), target sxkmoy
double precision, dimension(:), pointer told
type(bief_obj), target sa
double precision, dimension(:), pointer tra01
type(bief_obj), target svv2
type(bief_obj), target scoste
type(bief_obj), target stnew
type(bief_obj), target siagnl
integer, dimension(:), pointer isub
type(bief_obj), target svv1
type(bief_obj), target sbetbr
double precision, dimension(:), pointer prea8
type(bief_obj), target varsor
type(bief_obj), target sitr11
type(bief_obj), target sdiv
type(bief_obj), target vv_wac
type(bief_obj), target cosdir_tel
integer, dimension(:), pointer itr33
double precision, dimension(:), pointer sxy
integer, parameter wac_api_init
type(bief_obj), target sryy
integer, dimension(:,:), allocatable k_1p
double precision, dimension(:,:), allocatable ryy_i
type(bief_obj), target sitr31
type(bief_obj), target st1
double precision, dimension(:), pointer tsder
double precision, dimension(:), pointer tra35
type(bief_obj), target stra36
double precision, dimension(:), pointer xk
double precision, dimension(:,:), allocatable rn
integer, dimension(:), allocatable stack
double precision, dimension(:), pointer zm1
type(bief_obj), pointer t3_10
integer, dimension(:), allocatable stack2
double precision, dimension(:), pointer rx
double precision, dimension(:), pointer frea5
double precision, dimension(:), allocatable xspe
type(bief_obj), target contxy
double precision, dimension(:), pointer ddx
type(bief_obj), target sliq
double precision, dimension(:), pointer vv
double precision, dimension(:), allocatable xlamdi
type(bief_obj), target forcex
double precision, dimension(:,:), allocatable scda
double precision, dimension(:), pointer yel
logical, dimension(maxvar) sorleo
type(bief_obj), target stra39
double precision, dimension(:), pointer rxx
double precision, dimension(:,:), allocatable frdk
integer, dimension(:), pointer eta
double precision, dimension(:), pointer rk
type(bief_obj), target srx
type(bief_obj), target suc1
double precision, dimension(:), pointer uc1
double precision, dimension(:), pointer varian
double precision, dimension(:), pointer tra32
type(bief_obj), target sfra
character(len=8), pointer fmtcob
double precision, dimension(:), pointer tra37
double precision, dimension(:), pointer tstot
double precision, dimension(:), pointer dzx
double precision, dimension(:), pointer shz
character(len=path_len), pointer namfon
character(len=8), pointer fmtmaf
type(bief_obj), target sboundary_colour
double precision, dimension(dimbuf) tb_sca
type(bief_obj), target stra38
type(bief_obj), target stwold
type(bief_obj), target sdzy
integer, dimension(:), allocatable nb_c
character(len=8), pointer fmtrbi
character(len=8), pointer fmtleo
type(bief_obj), target orbvel_tel
double precision, dimension(:), pointer vv1
type(bief_obj), target syrelv
integer, dimension(:), allocatable clm
character(len=8), pointer fmtcof
double precision, dimension(:), pointer cf
character(len=path_len), pointer namcof
double precision, dimension(:), pointer amorp
type(bief_obj), target sry
double precision, dimension(:), pointer duy
double precision, dimension(:), pointer fbor
type(bief_obj), target sptm02
type(bief_obj), target sprive
type(bief_obj), target sdvx
double precision, dimension(:), pointer betabr
integer, dimension(:), allocatable noleo
type(bief_obj), target h_tel
integer, dimension(:), allocatable qindi
type(bief_obj), target sshf
double precision, dimension(:), pointer costet
integer, parameter maxnsp
integer, dimension(:,:,:), allocatable k_if3
double precision, dimension(:), pointer cosf
integer, dimension(:), allocatable kacc
integer, dimension(:,:,:), allocatable k_1p3m
double precision, dimension(:), pointer xkonpt
type(bief_obj), target stold
double precision, dimension(:), pointer ptm01
type(bief_obj), target sitr32
double precision, dimension(:), pointer xkmoy
double precision, dimension(:), pointer t0
type(bief_obj), target svaria
type(bief_obj), target dirmoy_tel
type(bief_obj), target sneigb
type(bief_obj), target fx_wac
character(len=72) sort2d
double precision, dimension(:), pointer fmoy
double precision, dimension(:), pointer tauwav
double precision, dimension(:), allocatable sqrdelta
double precision, dimension(:,:), allocatable frda
type(bief_obj), target suv2
type(bief_obj), target stsder
type(bief_obj), target sdf_lim
integer, dimension(:), pointer ibor
type(bief_obj), target suv1
double precision, dimension(:), pointer df_lim
double precision, dimension(:), allocatable xleo
character(len=path_len), pointer namveb
type(bief_obj), target sitr12
integer, dimension(dimbuf) t_poin
double precision, dimension(:), pointer dux
type(bief_obj), target sdepth
character(len=32), dimension(30) texcob
character(len=path_len), pointer nammab
double precision, dimension(:,:,:), allocatable tb_v24
type(bief_obj), target seta
double precision, dimension(:), pointer xrelc
double precision, dimension(:), pointer x
type(bief_obj), target srxx
double precision, dimension(:), allocatable xmumdi
integer, dimension(:), pointer ikle2
double precision, dimension(:), pointer syy
type(bief_obj), target pfrea8
character(len=path_len), pointer namres
type(bief_obj), target scg
type(bief_mesh), target mesh
double precision, dimension(:), pointer t1
type(bief_obj), target sitr33
type(bief_obj), target suv
double precision, dimension(:), allocatable vv2d
type(bief_obj), target szm1
character(len=path_len), pointer namleo
type(bief_obj), target srk
double precision, dimension(:), pointer fra
type(bief_obj), target svc1
double precision, dimension(:), pointer dvy
double precision, dimension(:), pointer twold
double precision, target dt
type(bief_file), dimension(maxlu_wac), target wac_files
integer, parameter wac_full_run
integer, parameter lbuf
type(bief_obj), target sspec
type(bief_obj), target syrelc
integer, dimension(:), pointer ifabor
type(bief_obj), pointer t3_01
integer, dimension(:), pointer itr32
double precision, dimension(:), pointer ryy