The TELEMAC-MASCARET system  trunk
dump2d.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE dump2d
3 ! *****************
4 !
5  &( xf1 , np1 )
6 !
7 !***********************************************************************
8 ! TOMAWAC V6P3 15/06/2011
9 !***********************************************************************
10 !
11 !brief WRITES OUT WAVE, WIND, CURRENT, BATHYMETRY, ...
12 !+ VARIABLES AT EACH NODE OF THE MESH.
13 !+ VARIES SPATIALLY IN 2D (BINARY SELAFIN FORMAT).
14 !
15 !warning STSDER used as work array here.
16 !
17 !
18 !history F. MARCOS
19 !+ 01/02/95
20 !+ V1P0
21 !+ CREATED
22 !
23 !history M. BENOIT
24 !+ 04/07/96
25 !+ V1P2
26 !+ MODIFIED
27 !
28 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
29 !+ 13/07/2010
30 !+ V6P0
31 !+ Translation of French comments within the FORTRAN sources into
32 !+ English comments
33 !
34 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
35 !+ 21/08/2010
36 !+ V6P0
37 !+ Creation of DOXYGEN tags for automated documentation and
38 !+ cross-referencing of the FORTRAN sources
39 !
40 !history G.MATTAROLO (EDF - LNHE)
41 !+ 15/06/2011
42 !+ V6P1
43 !+ Translation of French names of the variables in argument
44 !
45 !history J-M HERVOUETO (EDF R&D, LNHE)
46 !+ 26/02/2013
47 !+ V6P3
48 !+ Use of work arrays optimised.
49 !
50 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51 !| NP1 |-->| NPOIN2.NDIRE.NF
52 !| XF1 |-->| VARIANCE DENSITY DIRECTIONAL SPECTRUM
53 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54 !
56  USE interface_tomawac, ex_dump2d => dump2d
57 !
58  IMPLICIT NONE
59 !
60 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
61 !
62  INTEGER, INTENT(IN) :: NP1
63  DOUBLE PRECISION, INTENT(IN) :: XF1(np1)
64 !
65 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
66 !
67  INTEGER IP
68  DOUBLE PRECISION U10 , FMIN , FMAX
69 !
70  fmin=freq(1)
71  fmax=freq(nf)
72 !
73 !=====C====================================
74 ! C COMPUTES THE SELECTED VARIABLES
75 !=====C====================================
76 ! THE ORDER IN WHICH THE VARIABLES ARE COMPUTED DOES NOT CORRESPOND TO THAT OF
77 ! THE GRAPHICAL OUTPUT IN AN EFFORT TO LIMIT THE NUMBER OF WORKING ARRAYS.
78 !
79 ! ------------------------------- RADIATION STRESSES
80 !
81  IF(.NOT.proinf) THEN
82  IF(sorleo(11).OR.sorleo(12).OR.sorleo(13).OR.
83  & sorleo(14).OR.sorleo(15) ) CALL radiat
84  & ( fx, fy, xk, xf1, cg ,
86  ENDIF
87 !
88 ! ------------------------------- DIRECTIONAL DIR_SPREADING
89 !
90  IF(sorleo(4)) THEN
91  CALL dir_spread( tra31, xf1, ndire, nf, npoin2)
92  ENDIF
93 !
94 ! ------------------------------- MEAN DIRECTION
95 !
96  IF(sorleo(3)) THEN
97  CALL tetmoy( tra32, xf1, ndire, nf , npoin2)
98  IF(trigo) THEN
99  DO ip=1,npoin2
100  tra32(ip)=(pisur2-tra32(ip))*gradeg
101  ENDDO
102  ELSE
103  DO ip=1,npoin2
104  tra32(ip)=tra32(ip)*gradeg
105  ENDDO
106  ENDIF
107  ENDIF
108 !
109 ! ------------------------------- MEAN FREQUENCY FMOY
110 !
111  IF(sorleo(18).OR.sorleo(28)) THEN
112  CALL fremoy( fmoy, xf1, nf, ndire, npoin2)
113  IF(sorleo(28)) THEN
114  DO ip=1,npoin2
115  ptmoy(ip)=1.d0/min(max(fmoy(ip),fmin),fmax)
116  ENDDO
117  ENDIF
118  ENDIF
119 !
120 ! ------------------------------- MEAN FREQUENCY FM01
121 !
122  IF(sorleo(19).OR.sorleo(29)) THEN
123  CALL frem01( tra34, xf1, nf, ndire, npoin2)
124  IF (sorleo(29)) THEN
125  DO ip=1,npoin2
126  ptm01(ip)=1.d0/min(max(tra34(ip),fmin),fmax)
127  ENDDO
128  ENDIF
129  ENDIF
130 !
131 ! ------------------------------- MEAN FREQUENCY FM02
132 !
133  IF (sorleo(20).OR.sorleo(30)) THEN
134  CALL frem02( tra35, xf1, nf, ndire, npoin2)
135  IF (sorleo(30)) THEN
136  DO ip=1,npoin2
137  ptm02(ip)=1.d0/min(max(tra35(ip),fmin),fmax)
138  ENDDO
139  ENDIF
140  ENDIF
141 !
142 ! ------------------------------- DISCRETE PEAK FREQUENCY
143 !
144  IF (sorleo(21).OR.sorleo(31)) THEN
145  CALL frepic( tra36, xf1, nf, ndire, npoin2)
146  IF (sorleo(31)) THEN
147  DO ip=1,npoin2
148  pptpd(ip)=1.d0/min(max(tra36(ip),fmin),fmax)
149  ENDDO
150  ENDIF
151  ENDIF
152 !
153 ! ------------------------------- PEAK FREQUENCY (READ 5TH ORDER)
154 !
155  IF (sorleo(22).OR.sorleo(32)) THEN
156  CALL fpread( frea5, xf1, nf, ndire, npoin2, 5.d0 )
157  IF (sorleo(32)) THEN
158  DO ip=1,npoin2
159  prea5(ip)=1.d0/min(max(frea5(ip),fmin),fmax)
160  ENDDO
161  ENDIF
162  ENDIF
163 !
164 ! ------------------------------- PEAK FREQUENCY (READ 8TH ORDER)
165 !
166  IF (sorleo(23).OR.sorleo(33)) THEN
167  CALL fpread( frea8, xf1, nf, ndire, npoin2, 8.d0 )
168  IF (sorleo(33)) THEN
169  DO ip=1,npoin2
170  prea8(ip)=1.d0/min(max(frea8(ip),fmin),fmax)
171  ENDDO
172  ENDIF
173  ENDIF
174 !
175  IF(vent) THEN
176 !
177 ! ------------------------------- DRAG COEFFICIENT
178 !
179  IF(sorleo(25)) THEN
180  DO ip=1,npoin2
181  u10=uv(ip)**2+vv(ip)**2
182  IF (u10.GT.1.d-6) THEN
183  cdra2(ip)=usold(ip)**2/u10
184  ELSE
185  cdra2(ip)=0.d0
186  ENDIF
187  ENDDO
188  ENDIF
189  ENDIF
190 !
191 ! ------------------------------- BOTTOM SPEED
192 !
193  IF(.NOT.proinf) THEN
194  IF(sorleo(16)) THEN
195  CALL vitfon(vifond,xf1, xk, nf, npoin2, ndire)
196  ENDIF
197  ENDIF
198 !
199 ! ------------------------------- VARIANCE
200 !
201  IF(sorleo(1).OR.sorleo(2)) THEN
202  CALL totnrj( varian, xf1, nf, ndire, npoin2)
203 !
204 ! ------------------------------- SIGNIFICANT WAVE HEIGHT
205 !
206  IF(sorleo(2)) THEN
207  DO ip=1,npoin2
208  IF (varian(ip).GE.0) THEN
209  tra38(ip)=4.d0*sqrt(varian(ip))
210  ELSE
211  tra38(ip)=0
212  ENDIF
213  ENDDO
214  ENDIF
215  ENDIF
216 !
217 ! ------------------------------- POWER PER UNIT LENGTH
218 !
219  IF(sorleo(34)) THEN
220  CALL wpower(xf1, cg, nf, ndire, npoin2)
221  ENDIF
222 !
223 ! ------------------------------- USER FUNCTION
224 !
225  CALL user_dump2d(xf1, np1)
226 
227 !
228 !-----------------------------------------------------------------------
229 !
230  RETURN
231  END
double precision, dimension(:), pointer tra36
double precision, dimension(:), pointer cg
subroutine dir_spread(DIRSPR, F, NDIRE, NF, NPOIN2)
Definition: dir_spread.f:7
double precision, dimension(:), pointer uv
double precision, dimension(:), pointer cdra2
subroutine vitfon(VIFOND, F, XK, NF, NPOIN2, NDIRE)
Definition: vitfon.f:7
subroutine user_dump2d(XF1, NP1)
Definition: user_dump2d.f:7
double precision, dimension(:), pointer freq
double precision, dimension(:), pointer prea5
subroutine wpower(F, CG, NF, NDIRE, NPOIN2)
Definition: wpower.f:7
double precision, dimension(:), pointer pptpd
double precision, dimension(:), pointer ptm02
double precision, dimension(:), pointer frea8
subroutine tetmoy(TETAM, F, NDIRE, NF, NPOIN2)
Definition: tetmoy.f:7
double precision, dimension(:), pointer tra38
double precision, dimension(:), pointer fx
double precision, dimension(:), pointer usold
subroutine radiat(FX1, FY1, XK1, FS, CG1, CGSUC1, DSXXDX, DSXYDX, DSXYDY, DSYYDY)
Definition: radiat.f:8
double precision, dimension(:), pointer ptmoy
double precision, dimension(:), pointer tra31
subroutine totnrj(VARIAN, F, NF, NDIRE, NPOIN2)
Definition: totnrj.f:7
double precision, dimension(:), pointer fy
double precision, dimension(:), pointer tra34
subroutine frepic(FPIC, F, NF, NDIRE, NPOIN2)
Definition: frepic.f:7
double precision, dimension(:), pointer tra39
double precision, dimension(:), pointer vifond
double precision, dimension(:), pointer prea8
double precision, dimension(:), pointer tsder
double precision, dimension(:), pointer tra35
double precision, dimension(:), pointer xk
subroutine dump2d(XF1, NP1)
Definition: dump2d.f:7
double precision, dimension(:), pointer frea5
double precision, dimension(:), pointer vv
subroutine frem02(FM02, F, NF, NDIRE, NPOIN2)
Definition: frem02.f:7
logical, dimension(maxvar) sorleo
double precision, dimension(:), pointer varian
double precision, dimension(:), pointer tra32
double precision, dimension(:), pointer tra37
double precision, dimension(:), pointer ptm01
double precision, dimension(:), pointer fmoy
subroutine fpread(FREAD, F, NF, NDIRE, NPOIN2, EXPO)
Definition: fpread.f:7
subroutine fremoy(FMOY, F, NF, NDIRE, NPOIN2)
Definition: fremoy.f:7
subroutine frem01(FM01, F, NF, NDIRE, NPOIN2)
Definition: frem01.f:7