1 | !> \file output_hemin40_mod-0.4.f90 |
---|
2 | !! Module pour l'ecriture des output |
---|
3 | !< |
---|
4 | |
---|
5 | !> \namespace output_hemin40_mod |
---|
6 | !! Module pour l'ecriture des output |
---|
7 | !! \author ... |
---|
8 | !! \date ... |
---|
9 | !! @note Used module |
---|
10 | !! @note - use module3D_phy |
---|
11 | !< |
---|
12 | |
---|
13 | module output_hemin40_mod |
---|
14 | |
---|
15 | USE module3D_phy |
---|
16 | |
---|
17 | implicit none |
---|
18 | |
---|
19 | real :: bmean !< |
---|
20 | real :: accmean !< accumulation moyenne |
---|
21 | real :: ablmean !< ablation moyenne |
---|
22 | real :: calvmean !< moyenne calving |
---|
23 | real :: ablbordmean !< |
---|
24 | real :: ablatotmean |
---|
25 | real :: bmeltmean !< moyenne fusion basale |
---|
26 | real :: tbmean !< temperature basale moyenne |
---|
27 | real :: tbdotmean !< moyenne variation / temps temperature basale |
---|
28 | real :: vsmean !< vitesse de surface moyenne |
---|
29 | !real :: vsdotmean ! moyenne variation / temps vitesse de surface |
---|
30 | real :: uzsmean !!!! utilise ? !< vitesse verticale de surface moyenne |
---|
31 | real :: uzsdotmean !< moyenne variation / temps vitesse verticale de surface |
---|
32 | real :: uzkmean !< moyenne vitesse verticale de surface |
---|
33 | real :: hdotmean !< moyenne derivee / temps de H |
---|
34 | real :: bdotmean !< moyenne bedrock derive / temps |
---|
35 | !real :: pf0mean !< moyenne de PF0 |
---|
36 | !real :: pf1mean !< moyenne de PF1 |
---|
37 | !real :: evapmean !< moyenne de EVAP |
---|
38 | !real :: pwmean !< moyenne PW |
---|
39 | !real :: pdfmean !< moyenne PDF |
---|
40 | |
---|
41 | CONTAINS |
---|
42 | !_________________________________________________________________________ |
---|
43 | subroutine init_outshort |
---|
44 | |
---|
45 | !ndisp sorite courte tous les ndisp |
---|
46 | NDISP=100 |
---|
47 | end subroutine init_outshort |
---|
48 | |
---|
49 | !_________________________________________________________________________ |
---|
50 | subroutine shortoutput |
---|
51 | |
---|
52 | ! 1_initialization |
---|
53 | !------------------ |
---|
54 | integer KK |
---|
55 | ! integer inpl, INPG, INPF |
---|
56 | ! integer inplab,inpkeew,inpinn,inpcord |
---|
57 | ! integer inpscaN,inpbar,inpkara,inpsib,inpbrit |
---|
58 | integer inp(13) ! Surface posee (nb de noeuds) |
---|
59 | integer inf(13) ! surface flottante |
---|
60 | integer npab, npcal |
---|
61 | |
---|
62 | REAL long, lat, rd, cx, cy, cxmin, cymin, r2 |
---|
63 | !Variables pour sommer |
---|
64 | real isvol(13),isvolf(13) ! volume posé et flottants |
---|
65 | REAL ISCALV(13),ISACC(13),ISBM(13),ISABL(13) |
---|
66 | REAL ISABLBORD(13),ABLATOT(13),TACC(13),TBM(13) |
---|
67 | REAL ITJJA(13) |
---|
68 | REAL ABLAMEAN |
---|
69 | !moyennes utilisées en output |
---|
70 | REAL HMAX_(13) , HMEAN_(13) |
---|
71 | REAL BMEAN_(13) , ACCMEAN_(13) , ABLMEAN_(13) , ABLBORDMEAN_(13) |
---|
72 | REAL ABLATOTMEAN_(13) , CALVMEAN_(13) , ITJJAMEAN_(13) |
---|
73 | |
---|
74 | |
---|
75 | |
---|
76 | ! REAL ITJJAMEAN_L, ITJJAMEAN_G, ITJJAMEAN_F ... |
---|
77 | ! REAL ITJJAMEAN_LAB,ITJJAMEAN_KEEW,ITJJAMEAN_INN,ITJJAMEAN_CORD |
---|
78 | ! REAL ITJJAMEAN_SCAN,ITJJAMEAN_BAR,ITJJAMEAN_KARA,ITJJAMEAN_SIB,ITJJAMEAN_BRIT |
---|
79 | |
---|
80 | REAL HDOTMEAN_G |
---|
81 | REAL ABLA(NX,NY) |
---|
82 | REAL DELTAVOL |
---|
83 | |
---|
84 | |
---|
85 | ! open(unit=4145,file='reg_output_nord.dat') |
---|
86 | |
---|
87 | BMELTMEAN=0. |
---|
88 | TBMEAN=0. |
---|
89 | TBDOTMEAN=0. |
---|
90 | VSMEAN=0. |
---|
91 | UZSMEAN=0. |
---|
92 | UZSDOTMEAN=0. |
---|
93 | UZKMEAN=0. |
---|
94 | HDOTMEAN=0. |
---|
95 | HDOTMEAN_G = 0. |
---|
96 | BDOTMEAN=0. |
---|
97 | |
---|
98 | DO kk = 1,13 |
---|
99 | INP(kk) = 0 |
---|
100 | INF(kk) = 0 |
---|
101 | ISVOL(kk) = 0. |
---|
102 | ISVOLF(kk) = 0. |
---|
103 | ISBM(kk) = 0. |
---|
104 | ISACC(kk) = 0. |
---|
105 | ISCALV(kk) = 0. |
---|
106 | ISABL(kk) = 0. |
---|
107 | ISABLBORD(kk) = 0. |
---|
108 | ABLATOT(kk)= 0. |
---|
109 | TACC(kk) = 0. |
---|
110 | TBM(kk) = 0. |
---|
111 | ITJJA(kk) = 0. |
---|
112 | END DO |
---|
113 | |
---|
114 | ! -- Modification le 22/11/99 par SC |
---|
115 | |
---|
116 | rd = pi/180. |
---|
117 | ! cxmin = -6500. ! pour resolution 50x50 km2 |
---|
118 | ! cymin = -6000. |
---|
119 | |
---|
120 | cxmin = -5852.1 |
---|
121 | cymin = -5402.05 |
---|
122 | |
---|
123 | |
---|
124 | ! 2_preparing outputs |
---|
125 | !-------------------- |
---|
126 | |
---|
127 | |
---|
128 | ! ========================================= |
---|
129 | ! Debut de la boucle sur les noeuds ISM |
---|
130 | ! ========================================= |
---|
131 | do I=1,NX |
---|
132 | do J=1,NY |
---|
133 | |
---|
134 | cx = cxmin + (i-1)*DX*1e-03 |
---|
135 | cy = cymin + (j-1)*DY*1e-03 |
---|
136 | IF((cx.ge.0).AND.(cy.lt.0))long = atan(-cx/cy)/rd |
---|
137 | IF(((cx.ge.0).and.(cy.gt.0)).OR.((cx.lt.0.).AND.(cy.gt.0))) & |
---|
138 | long = (pi + atan(-cx/cy))/rd |
---|
139 | IF((cx.lt.0).AND.(cy.lt.0))long = (2*pi + atan(-cx/cy))/rd |
---|
140 | IF(cy.eq.0)THEN |
---|
141 | IF(cx.gt.0)long = 90. |
---|
142 | IF(cx.lt.0)long = 270 |
---|
143 | ENDIF |
---|
144 | r2 =cx**2+cy**2 |
---|
145 | lat = asin(1 - r2/(2*(6378**2)))/rd |
---|
146 | |
---|
147 | ! -------------------------------------------------------------------- |
---|
148 | |
---|
149 | ! -- Laurentide |
---|
150 | IF( (((long.ge.190).AND.(long.lt.210)).AND. & |
---|
151 | ((lat.ge.50).AND.(lat.le.70))).OR. & |
---|
152 | (((long.ge.210).AND.(long.lt.220)).AND. & |
---|
153 | ((lat.ge.55).AND.(lat.le.75))).OR. & |
---|
154 | (((long.ge.220).AND.(long.lt.250)).AND. & |
---|
155 | ((lat.ge.40).AND.(lat.le.85))).OR. & |
---|
156 | (((long.ge.250).AND.(long.lt.290)).AND. & |
---|
157 | ((lat.ge.35).AND.(lat.le.85))).OR. & |
---|
158 | (((long.ge.290).AND.(long.lt.300)).AND. & |
---|
159 | ((lat.ge.35).AND.(lat.le.75))).OR. & |
---|
160 | (((long.ge.300).AND.(long.le.310)).AND. & |
---|
161 | ((lat.ge.35).AND.(lat.lt.60))) )THEN |
---|
162 | |
---|
163 | ! write(4145,*) i,j,' 2' |
---|
164 | IF(H(i,j).gt.2.) THEN |
---|
165 | if (mk(i,j).eq.1) then |
---|
166 | INF(2) = INF(2) + 1 |
---|
167 | ISVOLF(2) = ISVOLF(2) + H(I,J) |
---|
168 | else |
---|
169 | INP(2) = INP(2) + 1 |
---|
170 | ISVOL(2) = ISVOL(2) + H(I,J) |
---|
171 | ISACC(2) = ISACC(2) + ACC(I,J) |
---|
172 | ISABL(2) = ISABL(2) + ABL(I,J) |
---|
173 | ITJJA(2) = ITJJA(2) + TJULY(I,J) |
---|
174 | if (H(I,J).gt.HMAX_(2)) HMAX_(2)=H(I,J) |
---|
175 | endif |
---|
176 | ENDIF |
---|
177 | TACC(2) = TACC(2) + ACC(I,J) |
---|
178 | ISABLBORD(2) = ISABLBORD(2) + ABLBORD(I,J) |
---|
179 | ABLATOT(2) = ISABL(2) + ISABLBORD(2) |
---|
180 | ISCALV(2) = ISCALV(2) + CALV(I,J) |
---|
181 | ISBM(2) = ISACC(2)+ISABL(2)+ISCALV(2)+ISABLBORD(2) |
---|
182 | TBM(2) = TACC(2)+ISABL(2)+ISCALV(2)+ISABLBORD(2) |
---|
183 | ENDIF |
---|
184 | |
---|
185 | ! -- Labrador Sector |
---|
186 | IF((((long.ge.285).AND.(long.le.300)).AND. & |
---|
187 | ((lat.ge.35).AND.(lat.le.70))).OR. & |
---|
188 | (((long.ge.300).AND.(long.lt.310)).AND. & |
---|
189 | ((lat.ge.35).AND.(lat.lt.60))))THEN |
---|
190 | |
---|
191 | ! write(4145,*) i,j,' 5' |
---|
192 | IF(H(i,j).gt.2.) THEN |
---|
193 | if (mk(i,j).eq.1) then |
---|
194 | INF(5) = INF(5) + 1 |
---|
195 | ISVOLF(5) = ISVOLF(5) + H(I,J) |
---|
196 | else |
---|
197 | INP(5) = INP(5) + 1 |
---|
198 | ISVOL(5) = ISVOL(5) + H(I,J) |
---|
199 | ISACC(5) = ISACC(5) + ACC(I,J) |
---|
200 | ISABL(5) = ISABL(5) + ABL(I,J) |
---|
201 | ITJJA(5) = ITJJA(5) + TJULY(I,J) |
---|
202 | if (H(I,J).gt.HMAX_(5)) HMAX_(5)=H(I,J) |
---|
203 | endif |
---|
204 | ENDIF |
---|
205 | TACC(5) = TACC(5) + ACC(I,J) |
---|
206 | ISABLBORD(5) = ISABLBORD(5) + ABLBORD(I,J) |
---|
207 | ABLATOT(5) = ISABL(5) + ISABLBORD(5) |
---|
208 | ISCALV(5) = ISCALV(5) + CALV(I,J) |
---|
209 | ISBM(5) = ISACC(5)+ISABL(5)+ISCALV(5)+ISABLBORD(5) |
---|
210 | TBM(5) = TACC(5)+ISABL(5)+ISCALV(5)+ISABLBORD(5) |
---|
211 | |
---|
212 | ENDIF |
---|
213 | |
---|
214 | ! -- Keewatin Sector |
---|
215 | IF( ((long.gt.240).AND.(long.lt.285)).AND. & |
---|
216 | ((lat.ge.35).AND.(lat.le.70)) )THEN |
---|
217 | |
---|
218 | ! write(4145,*) i,j,' 6' |
---|
219 | IF(H(i,j).gt.2.) THEN |
---|
220 | if (mk(i,j).eq.1) then |
---|
221 | INF(6) = INF(6) + 1 |
---|
222 | ISVOLF(6) = ISVOLF(6) + H(I,J) |
---|
223 | else |
---|
224 | INP(6) = INP(6) + 1 |
---|
225 | ISVOL(6) = ISVOL(6) + H(I,J) |
---|
226 | ISACC(6) = ISACC(6) + ACC(I,J) |
---|
227 | ISABL(6) = ISABL(6) + ABL(I,J) |
---|
228 | ITJJA(6) = ITJJA(6) + TJULY(I,J) |
---|
229 | if (H(I,J).gt.HMAX_(6)) HMAX_(6)=H(I,J) |
---|
230 | endif |
---|
231 | ENDIF |
---|
232 | TACC(6) = TACC(6) + ACC(I,J) |
---|
233 | ISABLBORD(6) = ISABLBORD(6) + ABLBORD(I,J) |
---|
234 | ABLATOT(6) = ISABL(6) + ISABLBORD(6) |
---|
235 | ISCALV(6) = ISCALV(6) + CALV(I,J) |
---|
236 | ISBM(6) = ISACC(6)+ISABL(6)+ISCALV(6)+ISABLBORD(6) |
---|
237 | TBM(6) = TACC(6)+ISABL(6)+ISCALV(6)+ISABLBORD(6) |
---|
238 | |
---|
239 | ENDIF |
---|
240 | |
---|
241 | ! -- Innuitian Ice Sheet |
---|
242 | IF( ((long.gt.230).AND.(long.lt.290)).AND. & |
---|
243 | ((lat.gt.70).AND.(lat.le.85)))THEN |
---|
244 | |
---|
245 | ! write(4145,*) i,j,' 7' |
---|
246 | IF(H(i,j).gt.2.) THEN |
---|
247 | if (mk(i,j).eq.1) then |
---|
248 | INF(7) = INF(7) + 1 |
---|
249 | ISVOLF(7) = ISVOLF(7) + H(I,J) |
---|
250 | else |
---|
251 | INP(7) = INP(7) + 1 |
---|
252 | ISVOL(7) = ISVOL(7) + H(I,J) |
---|
253 | ISACC(7) = ISACC(7) + ACC(I,J) |
---|
254 | ISABL(7) = ISABL(7) + ABL(I,J) |
---|
255 | ITJJA(7) = ITJJA(7) + TJULY(I,J) |
---|
256 | if (H(I,J).gt.HMAX_(7)) HMAX_(7)=H(I,J) |
---|
257 | endif |
---|
258 | ENDIF |
---|
259 | TACC(7) = TACC(7) + ACC(I,J) |
---|
260 | ISABLBORD(7) = ISABLBORD(7) + ABLBORD(I,J) |
---|
261 | ABLATOT(7) = ISABL(7) + ISABLBORD(7) |
---|
262 | ISCALV(7) = ISCALV(7) + CALV(I,J) |
---|
263 | ISBM(7) = ISACC(7)+ISABL(7)+ISCALV(7)+ISABLBORD(7) |
---|
264 | TBM(7) = TACC(7)+ISABL(7)+ISCALV(7)+ISABLBORD(7) |
---|
265 | |
---|
266 | |
---|
267 | ENDIF |
---|
268 | |
---|
269 | ! -- Cordilleran Ice Sheet |
---|
270 | IF( (((long.ge.190).AND.(long.lt.210)).AND. & |
---|
271 | ((lat.ge.50).AND.(lat.le.70))).OR. & |
---|
272 | (((long.ge.210).AND.(long.lt.220)).AND. & |
---|
273 | ((lat.ge.55).AND.(lat.le.75))).OR. & |
---|
274 | (((long.ge.210).AND.(long.lt.220)).AND. & |
---|
275 | ((lat.ge.55).AND.(lat.le.75))).OR. & |
---|
276 | (((long.ge.220).AND.(long.le.240)).AND. & |
---|
277 | ((lat.ge.40).AND.(lat.le.70))) ) THEN |
---|
278 | |
---|
279 | ! write(4145,*) i,j,' 8' |
---|
280 | IF(H(i,j).gt.2.) THEN |
---|
281 | if (mk(i,j).eq.1) then |
---|
282 | INF(8) = INF(8) + 1 |
---|
283 | ISVOLF(8) = ISVOLF(8) + H(I,J) |
---|
284 | else |
---|
285 | INP(8) = INP(8) + 1 |
---|
286 | ISVOL(8) = ISVOL(8) + H(I,J) |
---|
287 | ISACC(8) = ISACC(8) + ACC(I,J) |
---|
288 | ISABL(8) = ISABL(8) + ABL(I,J) |
---|
289 | ITJJA(8) = ITJJA(8) + TJULY(I,J) |
---|
290 | if (H(I,J).gt.HMAX_(8)) HMAX_(8)=H(I,J) |
---|
291 | endif |
---|
292 | ENDIF |
---|
293 | TACC(8) = TACC(8) + ACC(I,J) |
---|
294 | ISABLBORD(8) = ISABLBORD(8) + ABLBORD(I,J) |
---|
295 | ABLATOT(8) = ISABL(8) + ISABLBORD(8) |
---|
296 | ISCALV(8) = ISCALV(8) + CALV(I,J) |
---|
297 | ISBM(8) = ISACC(8)+ISABL(8)+ISCALV(8)+ISABLBORD(8) |
---|
298 | TBM(8) = TACC(8)+ISABL(8)+ISCALV(8)+ISABLBORD(8) |
---|
299 | |
---|
300 | ENDIF |
---|
301 | |
---|
302 | ! -------------------------------------------------------------------- |
---|
303 | |
---|
304 | ! -- Groenland |
---|
305 | IF( (((long.ge.290).AND.(long.le.310)).AND. & |
---|
306 | ((lat.ge.75).AND.(lat.le.85))).OR. & |
---|
307 | (((long.ge.300).AND.(long.lt.310)).AND. & |
---|
308 | ((lat.ge.60).AND.(lat.le.75))).OR. & |
---|
309 | ! (((long.ge.310).AND.(long.le.350)).AND. & |
---|
310 | ! ((lat.ge.40).AND.(lat.le.85))) ) THEN |
---|
311 | (((long.ge.310).AND.(long.le.345)).AND. & |
---|
312 | ((lat.ge.54).AND.(lat.le.85))) ) THEN |
---|
313 | |
---|
314 | ! write(4145,*) i,j,' 3' |
---|
315 | IF(H(i,j).gt.2.) THEN |
---|
316 | if (mk(i,j).eq.1) then |
---|
317 | INF(3) = INF(3) + 1 |
---|
318 | ISVOLF(3) = ISVOLF(3) + H(I,J) |
---|
319 | else |
---|
320 | INP(3) = INP(3) + 1 |
---|
321 | ISVOL(3) = ISVOL(3) + H(I,J) |
---|
322 | ISACC(3) = ISACC(3) + ACC(I,J) |
---|
323 | ISABL(3) = ISABL(3) + ABL(I,J) |
---|
324 | if (H(I,J).gt.HMAX_(3)) HMAX_(3)=H(I,J) |
---|
325 | endif |
---|
326 | ENDIF |
---|
327 | TACC(3) = TACC(3) + ACC(I,J) |
---|
328 | ISABLBORD(3) = ISABLBORD(3) + ABLBORD(I,J) |
---|
329 | ABLATOT(3) = ISABL(3) + ISABLBORD(3) |
---|
330 | ISCALV(3) = ISCALV(3) + CALV(I,J) |
---|
331 | ISBM(3) = ISACC(3)+ISABL(3)+ISCALV(3)+ISABLBORD(3) |
---|
332 | TBM(3) = TACC(3)+ISABL(3)+ISCALV(3)+ISABLBORD(3) |
---|
333 | HDOTMEAN_G = HDOTMEAN_G + HDOT(I,J) |
---|
334 | ENDIF |
---|
335 | |
---|
336 | ! -------------------------------------------------------------------- |
---|
337 | |
---|
338 | ! -- Fennoscandie |
---|
339 | |
---|
340 | ! IF( (((long.ge.350).AND.(long.lt.360)).AND. & |
---|
341 | IF( (((long.ge.345).AND.(long.lt.360)).AND. & |
---|
342 | ((lat.ge.50).AND.(lat.le.60))).OR. & |
---|
343 | (((long.ge.0).AND.(long.le.50)).AND. & |
---|
344 | ((lat.ge.50).AND.(lat.le.85))).OR. & |
---|
345 | (((long.ge.50).AND.(long.le.120)).AND. & |
---|
346 | ((lat.ge.60).AND.(lat.le.85))) ) THEN |
---|
347 | |
---|
348 | ! write(4145,*) i,j,' 4' |
---|
349 | IF(H(i,j).gt.2.) THEN |
---|
350 | if (mk(i,j).eq.1) then |
---|
351 | INF(4) = INF(4) + 1 |
---|
352 | ISVOLF(4) = ISVOLF(4) + H(I,J) |
---|
353 | else |
---|
354 | INP(4) = INP(4) + 1 |
---|
355 | ISVOL(4) = ISVOL(4) + H(I,J) |
---|
356 | ISACC(4) = ISACC(4) + ACC(I,J) |
---|
357 | ISABL(4) = ISABL(4) + ABL(I,J) |
---|
358 | ITJJA(4) = ITJJA(4) + TJULY(I,J) |
---|
359 | if (H(I,J).gt.HMAX_(4)) HMAX_(4)=H(I,J) |
---|
360 | endif |
---|
361 | ENDIF |
---|
362 | TACC(4) = TACC(4) + ACC(I,J) |
---|
363 | ISABLBORD(4) = ISABLBORD(4) + ABLBORD(I,J) |
---|
364 | ABLATOT(4) = ISABL(4) + ISABLBORD(4) |
---|
365 | ISCALV(4) = ISCALV(4) + CALV(I,J) |
---|
366 | ISBM(4) = ISACC(4)+ISABL(4)+ISCALV(4)+ISABLBORD(4) |
---|
367 | TBM(4) = TACC(4)+ISABL(4)+ISCALV(4)+ISABLBORD(4) |
---|
368 | ENDIF |
---|
369 | |
---|
370 | ! -- Scandinavian Ice Sheet |
---|
371 | |
---|
372 | IF( ((long.gt.0.).AND.(long.le.45)).AND. & |
---|
373 | ((lat.ge.50).AND.(lat.le.70)))THEN |
---|
374 | |
---|
375 | ! write(4145,*) i,j,' 9' |
---|
376 | IF(H(i,j).gt.2.) THEN |
---|
377 | if (mk(i,j).eq.1) then |
---|
378 | INF(9) = INF(9) + 1 |
---|
379 | ISVOLF(9) = ISVOLF(9) + H(I,J) |
---|
380 | else |
---|
381 | INP(9) = INP(9) + 1 |
---|
382 | ISVOL(9) = ISVOL(9) + H(I,J) |
---|
383 | ISACC(9) = ISACC(9) + ACC(I,J) |
---|
384 | ISABL(9) = ISABL(9) + ABL(I,J) |
---|
385 | ITJJA(9) = ITJJA(9) + TJULY(I,J) |
---|
386 | if (H(I,J).gt.HMAX_(9)) HMAX_(9)=H(I,J) |
---|
387 | endif |
---|
388 | ENDIF |
---|
389 | TACC(9) = TACC(9) + ACC(I,J) |
---|
390 | ISABLBORD(9) = ISABLBORD(9) + ABLBORD(I,J) |
---|
391 | ABLATOT(9) = ISABL(9) + ISABLBORD(9) |
---|
392 | ISCALV(9) = ISCALV(9) + CALV(I,J) |
---|
393 | ISBM(9) = ISACC(9)+ISABL(9)+ISCALV(9)+ISABLBORD(9) |
---|
394 | TBM(9) = TACC(9)+ISABL(9)+ISCALV(9)+ISABLBORD(9) |
---|
395 | |
---|
396 | ENDIF |
---|
397 | |
---|
398 | ! -- Barents Ice Sheet |
---|
399 | |
---|
400 | IF ( (((long.gt.0.).AND.(long.le.60.)).AND. & |
---|
401 | ((lat.gt.70).AND.(lat.le.85.))).OR. & |
---|
402 | ! (((long.gt.45.).AND.(long.le.60.)).OR. & |
---|
403 | (((long.gt.45.).AND.(long.le.60.)).AND. & |
---|
404 | ((lat.ge.60.).AND.(lat.lt.70.))))THEN |
---|
405 | |
---|
406 | ! write(4145,*) i,j,' 10' |
---|
407 | IF(H(i,j).gt.2.) THEN |
---|
408 | if (mk(i,j).eq.1) then |
---|
409 | INF(10) = INF(10) + 1 |
---|
410 | ISVOLF(10) = ISVOLF(10) + H(I,J) |
---|
411 | else |
---|
412 | INP(10) = INP(10) + 1 |
---|
413 | ISVOL(10) = ISVOL(10) + H(I,J) |
---|
414 | ISACC(10) = ISACC(10) + ACC(I,J) |
---|
415 | ISABL(10) = ISABL(10) + ABL(I,J) |
---|
416 | ITJJA(10) = ITJJA(10) + TJULY(I,J) |
---|
417 | if (H(I,J).gt.HMAX_(10)) HMAX_(10)=H(I,J) |
---|
418 | endif |
---|
419 | ENDIF |
---|
420 | TACC(10) = TACC(10) + ACC(I,J) |
---|
421 | ISABLBORD(10) = ISABLBORD(10) + ABLBORD(I,J) |
---|
422 | ABLATOT(10) = ISABL(10) + ISABLBORD(10) |
---|
423 | ISCALV(10) = ISCALV(10) + CALV(I,J) |
---|
424 | ISBM(10) = ISACC(10)+ISABL(10)+ISCALV(10)+ISABLBORD(10) |
---|
425 | TBM(10) = TACC(10)+ISABL(10)+ISCALV(10)+ISABLBORD(10) |
---|
426 | |
---|
427 | |
---|
428 | ENDIF |
---|
429 | |
---|
430 | ! -- Kara Ice Sheet |
---|
431 | |
---|
432 | IF( ((long.gt.60.).AND.(long.le.120)).AND. & |
---|
433 | ((lat.ge.60).AND.(lat.le.85)))THEN |
---|
434 | |
---|
435 | ! write(4145,*) i,j,' 11' |
---|
436 | IF(H(i,j).gt.2.) THEN |
---|
437 | if (mk(i,j).eq.1) then |
---|
438 | INF(11) = INF(11) + 1 |
---|
439 | ISVOLF(11) = ISVOLF(11) + H(I,J) |
---|
440 | else |
---|
441 | INP(11) = INP(11) + 1 |
---|
442 | ISVOL(11) = ISVOL(11) + H(I,J) |
---|
443 | ISACC(11) = ISACC(11) + ACC(I,J) |
---|
444 | ISABL(11) = ISABL(11) + ABL(I,J) |
---|
445 | ITJJA(11) = ITJJA(11) + TJULY(I,J) |
---|
446 | if (H(I,J).gt.HMAX_(10)) HMAX_(10)=H(I,J) |
---|
447 | endif |
---|
448 | ENDIF |
---|
449 | TACC(11) = TACC(11) + ACC(I,J) |
---|
450 | ISABLBORD(11) = ISABLBORD(11) + ABLBORD(I,J) |
---|
451 | ABLATOT(11) = ISABL(11) + ISABLBORD(11) |
---|
452 | ISCALV(11) = ISCALV(11) + CALV(I,J) |
---|
453 | ISBM(11) = ISACC(11)+ISABL(11)+ISCALV(11)+ISABLBORD(11) |
---|
454 | TBM(11) = TACC(11)+ISABL(11)+ISCALV(11)+ISABLBORD(11) |
---|
455 | |
---|
456 | |
---|
457 | ENDIF |
---|
458 | |
---|
459 | ! -- Siberian Ice Sheet |
---|
460 | |
---|
461 | IF( ((long.gt.120.).AND.(long.lt.190)).AND. & |
---|
462 | ((lat.ge.60).AND.(lat.le.85)))THEN |
---|
463 | |
---|
464 | ! write(4145,*) i,j,' 12' |
---|
465 | IF(H(i,j).gt.2.) THEN |
---|
466 | if (mk(i,j).eq.1) then |
---|
467 | INF(12) = INF(12) + 1 |
---|
468 | ISVOLF(12) = ISVOLF(12) + H(I,J) |
---|
469 | else |
---|
470 | INP(12) = INP(12) + 1 |
---|
471 | ISVOL(12) = ISVOL(12) + H(I,J) |
---|
472 | ISACC(12) = ISACC(12) + ACC(I,J) |
---|
473 | ISABL(12) = ISABL(12) + ABL(I,J) |
---|
474 | ITJJA(12) = ITJJA(12) + TJULY(I,J) |
---|
475 | if (H(I,J).gt.HMAX_(12)) HMAX_(12)=H(I,J) |
---|
476 | endif |
---|
477 | ENDIF |
---|
478 | TACC(12) = TACC(12) + ACC(I,J) |
---|
479 | ISABLBORD(12) = ISABLBORD(12) + ABLBORD(I,J) |
---|
480 | ABLATOT(12) = ISABL(12) + ISABLBORD(12) |
---|
481 | ISCALV(12) = ISCALV(12) + CALV(I,J) |
---|
482 | ISBM(12) = ISACC(12)+ISABL(12)+ISCALV(12)+ISABLBORD(12) |
---|
483 | TBM(12) = TACC(12)+ISABL(12)+ISCALV(12)+ISABLBORD(12) |
---|
484 | |
---|
485 | |
---|
486 | ENDIF |
---|
487 | |
---|
488 | ! -- British Ice Sheet |
---|
489 | |
---|
490 | ! IF( ((long.gt.350.).AND.(long.le.360)).AND. & |
---|
491 | IF( ((long.gt.345.).AND.(long.le.360)).AND. & |
---|
492 | ((lat.ge.50).AND.(lat.le.60)))THEN |
---|
493 | |
---|
494 | ! write(4145,*) i,j,' 13' |
---|
495 | IF(H(i,j).gt.2.) THEN |
---|
496 | if (mk(i,j).eq.1) then |
---|
497 | INF(13) = INF(13) + 1 |
---|
498 | ISVOLF(13) = ISVOLF(13) + H(I,J) |
---|
499 | else |
---|
500 | INP(13) = INP(13) + 1 |
---|
501 | ISVOL(13) = ISVOL(13) + H(I,J) |
---|
502 | ISACC(13) = ISACC(13) + ACC(I,J) |
---|
503 | ISABL(13) = ISABL(13) + ABL(I,J) |
---|
504 | ITJJA(13) = ITJJA(13) + TJULY(I,J) |
---|
505 | if (H(I,J).gt.HMAX_(13)) HMAX_(13)=H(I,J) |
---|
506 | endif |
---|
507 | ENDIF |
---|
508 | TACC(13) = TACC(13) + ACC(I,J) |
---|
509 | ISABLBORD(13) = ISABLBORD(13) + ABLBORD(I,J) |
---|
510 | ABLATOT(13) = ISABL(13) + ISABLBORD(13) |
---|
511 | ISCALV(13) = ISCALV(13) + CALV(I,J) |
---|
512 | ISBM(13) = ISACC(13)+ISABL(13)+ISCALV(13)+ISABLBORD(13) |
---|
513 | TBM(13) = TACC(13)+ISABL(13)+ISCALV(13)+ISABLBORD(13) |
---|
514 | |
---|
515 | |
---|
516 | ENDIF |
---|
517 | |
---|
518 | ! -------------------------------------------------------------------- |
---|
519 | |
---|
520 | ! -- Heminord |
---|
521 | |
---|
522 | IF(H(i,j).gt.2.) THEN |
---|
523 | if (mk(i,j).eq.1) then |
---|
524 | INF(1) = INF(1) + 1 |
---|
525 | ISVOLF(1) = ISVOLF(1) + H(I,J) |
---|
526 | else |
---|
527 | INP(1) = INP(1) + 1 |
---|
528 | ISVOL(1) = ISVOL(1) + H(I,J) |
---|
529 | ISACC(1) = ISACC(1) + ACC(I,J) |
---|
530 | ISABL(1) = ISABL(1) + ABL(I,J) |
---|
531 | ITJJA(1) = ITJJA(1) + TJULY(I,J) |
---|
532 | |
---|
533 | if (h(i,j).GT.hmax) hmax=h(i,j) |
---|
534 | bmean=bm(i,j)+bmean |
---|
535 | accmean=acc(i,j)+accmean |
---|
536 | ablmean = ablmean + abl(i,j) |
---|
537 | tbmean=tbmean+t(i,j,nz) |
---|
538 | tbdotmean=tbdotmean+tbdot(i,j) |
---|
539 | vsmean=vsmean+SQRT(ux(i,j,1)**2+uy(i,j,1)**2) |
---|
540 | uzsdotmean=uzsdotmean+uzsdot(I,J) |
---|
541 | uzkmean=uzkmean+uzk(i,j) |
---|
542 | hdotmean=hdotmean + hdot(i,j) |
---|
543 | bdotmean=bdotmean + bdot(i,j) |
---|
544 | bmeltmean=bmeltmean+bmelt(i,j) |
---|
545 | endif |
---|
546 | ENDIF |
---|
547 | tacc(1) = tacc(1) + acc(i,j) |
---|
548 | isablbord(1) = isablbord(1) + ablbord(i,j) |
---|
549 | if(ablbord(i,j).NE.0)npab = npab + 1 |
---|
550 | ablatot(1) = isabl(1) + isablbord(1) |
---|
551 | iscalv(1) = iscalv(1) + calv(i,j) |
---|
552 | if(calv(i,j).NE.0)npcal = npcal + 1 |
---|
553 | isbm(1) = isacc(1)+isabl(1)+iscalv(1)+isablbord(1) |
---|
554 | tbm(1) = tacc(1)+isabl(1)+iscalv(1)+isablbord(1) |
---|
555 | |
---|
556 | calvmean=calvmean+calv(i,j) |
---|
557 | ablbordmean=ablbordmean+ablbord(i,j) |
---|
558 | ablamean = ablbordmean + ablmean |
---|
559 | |
---|
560 | end do |
---|
561 | end DO |
---|
562 | |
---|
563 | ! ========================================= |
---|
564 | ! Fin de la boucle sur les noeuds ISM |
---|
565 | ! ========================================= |
---|
566 | |
---|
567 | !==================================================== |
---|
568 | ! -- Hemin40 : : 1 |
---|
569 | |
---|
570 | !==================================================== |
---|
571 | ! -- Laurentide : : 2 |
---|
572 | |
---|
573 | ! -- Labrador Sector : 5 |
---|
574 | |
---|
575 | ! -- Keewatin Sector : 6 |
---|
576 | |
---|
577 | ! -- Innuitian Ice Sheet : 7 |
---|
578 | |
---|
579 | ! -- Cordilleran Ice Sheet : 8 |
---|
580 | |
---|
581 | !==================================================== |
---|
582 | ! -- Groenland : : 3 |
---|
583 | |
---|
584 | |
---|
585 | !==================================================== |
---|
586 | ! -- Fennoscandie : : 4 |
---|
587 | |
---|
588 | ! -- Scandinavian Ice Sheet : 9 |
---|
589 | |
---|
590 | ! -- Barents Ice Sheet : 10 |
---|
591 | |
---|
592 | ! -- Kara Ice Sheet : 11 |
---|
593 | |
---|
594 | ! -- Siberian Ice Sheet : 12 |
---|
595 | |
---|
596 | ! -- British Ice Sheet : 13 |
---|
597 | |
---|
598 | ! ========================================= |
---|
599 | do K=1,13 |
---|
600 | |
---|
601 | ! == Les moyennes |
---|
602 | IF(INP(K).ne.0)THEN |
---|
603 | HMEAN_(K) = ISVOL(K) /INP(K) ! /(DX*DY*INP(K)) |
---|
604 | BMEAN_(K) = ISBM(K) /INP(K) |
---|
605 | ACCMEAN_(K) = ISACC(K) /INP(K) |
---|
606 | ABLMEAN_(K) = ISABL(K) /INP(K) |
---|
607 | ABLBORDMEAN_(K) = ISABLBORD(K) /INP(K) |
---|
608 | CALVMEAN_(K) = ISCALV(K) /INP(K) |
---|
609 | ABLATOTMEAN_(K) = ABLATOT(K) /INP(K) |
---|
610 | ITJJAMEAN_(K) = ITJJA(K) /INP(K) |
---|
611 | ENDIF |
---|
612 | ! == Les volmes intergrées (3D) |
---|
613 | ISVOL(K) = ISVOL(K)*DX*DY |
---|
614 | isacc(k)=isacc(k)*dx*dy |
---|
615 | isabl(k)=isabl(k)*dx*dy |
---|
616 | isablbord(k)=isablbord(k)*dx*dy |
---|
617 | ablatot(k)=ablatot(k)*dx*dy |
---|
618 | iscalv(k)=iscalv(k)*dx*dy |
---|
619 | isbm(k)=isbm(k)*dx*dy |
---|
620 | tacc(k)=tacc(k)*dx*dy |
---|
621 | tbm(k)=tbm(k)*dx*dy |
---|
622 | enddo |
---|
623 | !nom_table='abl' |
---|
624 | !call printtable_r(abl,nom_table) |
---|
625 | |
---|
626 | !==================================================== |
---|
627 | ! -- Hemin40 : : 1 |
---|
628 | |
---|
629 | if (NP.ne.0) then |
---|
630 | ! HMEAN=VOL/NP |
---|
631 | ! VOL=VOL*DX*DY |
---|
632 | ! ISVOL(1) = VOL |
---|
633 | ! BMEAN=BMEAN/NP |
---|
634 | ! ACCMEAN=ACCMEAN/NP |
---|
635 | ! ITJJAMEAN = ITJJA(1)/NP |
---|
636 | ! ABLMEAN=BMEAN-ACCMEAN |
---|
637 | !!! ABLMEAN = ABLMEAN/NP |
---|
638 | ! CALVMEAN=CALVMEAN/NP |
---|
639 | !!! BMELTMEAN=BMELTMEAN/NP |
---|
640 | !!! ABLBORDMEAN=ABLBORDMEAN/NP |
---|
641 | !!! ABLAMEAN = ABLAMEAN/NP |
---|
642 | TBMEAN=TBMEAN/NP |
---|
643 | TBDOTMEAN=TBDOTMEAN/NP |
---|
644 | VSMEAN=VSMEAN/NP |
---|
645 | ! VSDOTMEAN=VSDOTMEAN/NP |
---|
646 | UZSMEAN=UZSMEAN/NP |
---|
647 | UZSDOTMEAN=UZSDOTMEAN/NP |
---|
648 | UZKMEAN=UZKMEAN/NP |
---|
649 | DELTAVOL = HDOTMEAN*DX*DY |
---|
650 | HDOTMEAN=HDOTMEAN/NP |
---|
651 | endif |
---|
652 | |
---|
653 | BDOTMEAN=BDOTMEAN/NX/NY |
---|
654 | |
---|
655 | ! 2_writing outputs |
---|
656 | !------------------ |
---|
657 | |
---|
658 | ! WRITE(35,904)TIME,VOL,DELTAVOL,NP,ISACC(1),ISABL(1), & |
---|
659 | ! ISABLBORD(1),ABLATOT(1),ISCALV(1),ISBM(1), & |
---|
660 | ! ISVOL(2),INPL,ISACC(2), & |
---|
661 | ! ISABL(2),ISABLBORD(2),ABLATOT(2),ISCALV(2),ISBM(2), & |
---|
662 | ! ISVOL(3),INPG,ISACC(3),ISABL(3),ISABLBORD(3), & |
---|
663 | ! ABLATOT(3),ISCALV(3),ISBM(3),ISVOL(4),INPF,ISACC(4), & |
---|
664 | ! ISABL(4),ISABLBORD(4),ABLATOT(4),ISCALV(4),ISBM(4), & |
---|
665 | ! nint(HMEAN),nint(HMAX),BMEAN,TBMEAN,nint(VSMEAN), & |
---|
666 | ! TBDOTMEAN,HDOTMEAN,BDOTMEAN,BMELTMEAN,NPAB, & |
---|
667 | !! TBDOTMEAN,VSDOTMEAN,HDOTMEAN,BDOTMEAN,BMELTMEAN,NPAB, & |
---|
668 | ! NPCAL,HDOTMEAN_G,TACC(1),TBM(1),TACC(2),TBM(2), & |
---|
669 | ! TACC(3),TBM(3),TACC(4),TBM(4), & |
---|
670 | ! ITJJAMEAN,ITJJAMEAN_L,ITJJAMEAN_G,ITJJAMEAN_F, & |
---|
671 | ! ISVOL(5),INPLAB,ISACC(5),ABLATOT(5),ITJJAMEAN_LAB, & |
---|
672 | ! ISVOL(6),INPKEEW,ISACC(6),ABLATOT(6),ITJJAMEAN_KEEW, & |
---|
673 | ! ISVOL(7),INPINN,ISACC(7),ABLATOT(7),ITJJAMEAN_INN, & |
---|
674 | ! ISVOL(8),INPCORD,ISACC(8),ABLATOT(8),ITJJAMEAN_CORD, & |
---|
675 | ! ISVOL(9),INPSCAN,ISACC(9),ABLATOT(9),ITJJAMEAN_SCAN, & |
---|
676 | ! ISVOL(10),INPBAR,ISACC(10),ABLATOT(10),ITJJAMEAN_BAR, & |
---|
677 | ! ISVOL(11),INPKARA,ISACC(11),ABLATOT(11),ITJJAMEAN_KARA, & |
---|
678 | ! ISVOL(12),INPSIB,ISACC(12),ABLATOT(12),ITJJAMEAN_SIB, & |
---|
679 | ! ISVOL(13),INPBRIT,ISACC(13),ABLATOT(13),ITJJAMEAN_BRIT, & |
---|
680 | ! HMEAN,HMEAN_L,HMEAN_G,HMEAN_F,HMEAN_LAB,HMEAN_KEEW, & |
---|
681 | ! HMEAN_INN,HMEAN_CORD,HMEAN_SCAN,HMEAN_BAR,HMEAN_KARA, & |
---|
682 | ! HMEAN_SIB,HMEAN_BRIT, & |
---|
683 | ! HMAX,HMAX_L,HMAX_G,HMAX_F,HMAX_LAB,HMAX_KEEW,HMAX_INN, & |
---|
684 | ! HMAX_CORD, HMAX_SCAN,HMAX_BAR,HMAX_KARA,HMAX_SIB,HMAX_BRIT |
---|
685 | |
---|
686 | |
---|
687 | |
---|
688 | |
---|
689 | !print*,'=========================' |
---|
690 | !print*,'ecrit short, time = ',time,dt |
---|
691 | !print*,'hdot ISABLBORD',hdot(30:40,100),ISABLBORD(2) |
---|
692 | |
---|
693 | write(35,905) time,isvol(1),deltavol,inp(1),isvolf(1),inf(1),isacc(1),isabl(1), & ! 8 |
---|
694 | ISABLBORD(1),ABLATOT(1),ISCALV(1),ISBM(1), & ! 4 |
---|
695 | isvol(2),inp(2),isvolf(2),inf(2),isacc(2),isabl(2),isablbord(2),ablatot(2),iscalv(2),isbm(2),itjjamean_(2),hmean_(2),Hmax_(2), & ! 13 |
---|
696 | isvol(3),inp(3),isvolf(3),inf(3),isacc(3),isabl(3),isablbord(3),ablatot(3),iscalv(3),isbm(3),itjjamean_(3),hmean_(3),hmax_(3), & ! 13 |
---|
697 | isvol(4),inp(4),isvolf(4),inf(4),isacc(4),isabl(4),isablbord(4),ablatot(4),iscalv(4),isbm(4),itjjamean_(4),hmean_(4),hmax_(4), & ! 13 |
---|
698 | isvol(5),inp(5),isvolf(5),inf(5),isacc(5),isabl(5),isablbord(5),ablatot(5),iscalv(5),isbm(5),itjjamean_(5),hmean_(5),hmax_(5), & ! 13 |
---|
699 | isvol(6),inp(6),isvolf(6),inf(6),isacc(6),isabl(6),isablbord(6),ablatot(6),iscalv(6),isbm(6),itjjamean_(6),hmean_(6),hmax_(6), & ! 13 |
---|
700 | isvol(7),inp(7),isvolf(7),inf(7),isacc(7),isabl(7),isablbord(7),ablatot(7),iscalv(7),isbm(7),itjjamean_(7),hmean_(7),hmax_(7), & ! 13 |
---|
701 | isvol(8),inp(8),isvolf(8),inf(8),isacc(8),isabl(8),isablbord(8),ablatot(8),iscalv(8),isbm(8),itjjamean_(8),hmean_(8),hmax_(8), & ! 13 |
---|
702 | isvol(9),inp(9),isvolf(9),inf(9),isacc(9),isabl(9),isablbord(9),ablatot(9),iscalv(9),isbm(9),itjjamean_(9),hmean_(9),hmax_(9), & ! 13 |
---|
703 | isvol(10),inp(10),isvolf(10),inf(10),isacc(10),isabl(10),isablbord(10),ablatot(10),iscalv(10),isbm(10),itjjamean_(10),hmean_(10),hmax_(10), & ! 13 |
---|
704 | isvol(11),inp(11),isvolf(11),inf(11),isacc(11),isabl(11),isablbord(11),ablatot(11),iscalv(11),isbm(11),itjjamean_(11),hmean_(11),hmax_(11), & ! 13 |
---|
705 | isvol(12),inp(12),isvolf(12),inf(12),isacc(12),isabl(12),isablbord(12),ablatot(12),iscalv(12),isbm(12),itjjamean_(12),hmean_(12),hmax_(12), & ! 13 |
---|
706 | isvol(13),inp(13),isvolf(13),inf(13),isacc(13),isabl(13),isablbord(13),ablatot(13),iscalv(13),isbm(13),itjjamean_(13),hmean_(13),hmax_(13) ! 13 |
---|
707 | |
---|
708 | |
---|
709 | ! !! format 900 faux, a reprendre |
---|
710 | |
---|
711 | 905 format(f9.1,1x, e11.4,1x,e11.5, 1x,i5, 1x,e10.4,1x,i5 , 6(1x,e12.5), & |
---|
712 | 12(2(1x,e10.4,1x,i5), 9(1x,e11.4) ) ) |
---|
713 | 900 format(i5,1x,f9.1,1x,f5.1,1x,e10.5,1x,i4,1x,i4,1x,f6.2,1X, & |
---|
714 | f6.2,1X,f6.2,1X,f6.2,1X,i5,8(1x,f6.2)) |
---|
715 | 903 format(f9.1,1x,f4.1,1x,f5.1,1x,e10.5,1x,i5,1x,i4,1x,i5,1X, & |
---|
716 | f7.3,1x,f6.2,1X,i6,4(1x,e7.1),1X,f6.2,1x,f7.3) |
---|
717 | |
---|
718 | 904 format(F9.1,1x,e10.5,1x,e11.5,1x,i5,6(1x,e12.6),3(1x,e10.5, & |
---|
719 | 1x,i5,6(1X,e12.6)),1X,i4,1X,i5,1x,f7.3,1x, & |
---|
720 | f6.2,1x,i6,2(1x,e7.1),2(1x,f8.4),1X,f6.2,2(1x,i5),1x,e7.1, & |
---|
721 | 8(1x,e12.6),4(1x,f15.7),9(1x,e10.5,1x,i5,2(1x,e12.6),1x,f15.7), & |
---|
722 | 26(1x,f8.3)) |
---|
723 | |
---|
724 | 940 format('%%%% ',a,' time=',f8.0,' %%%%') |
---|
725 | end subroutine shortoutput |
---|
726 | |
---|
727 | |
---|
728 | end module output_hemin40_mod |
---|