source: trunk/SOURCES/Hemin40_files/output_hemin40_mod-0.4.f90 @ 4

Last change on this file since 4 was 4, checked in by dumas, 10 years ago

initial import GRISLI trunk

File size: 26.5 KB
Line 
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
13module  output_hemin40_mod
14
15       USE module3D_phy
16
17implicit none
18
19real ::  bmean                        !<
20real ::  accmean                      !< accumulation moyenne
21real ::  ablmean                      !< ablation moyenne
22real ::  calvmean                     !< moyenne calving
23real ::  ablbordmean                  !<
24real ::  ablatotmean
25real ::  bmeltmean                    !< moyenne fusion basale
26real ::  tbmean                       !< temperature basale moyenne
27real ::  tbdotmean                    !< moyenne variation / temps temperature basale
28real ::  vsmean                       !< vitesse de surface moyenne
29!real ::  vsdotmean                    ! moyenne variation / temps vitesse de surface
30real ::  uzsmean   !!!! utilise ?     !< vitesse verticale de surface moyenne
31real ::  uzsdotmean                   !< moyenne variation / temps vitesse verticale de surface
32real ::  uzkmean                      !< moyenne vitesse verticale de surface
33real ::  hdotmean                     !< moyenne derivee / temps de H
34real ::  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
41CONTAINS
42!_________________________________________________________________________
43subroutine init_outshort
44
45!ndisp sorite courte tous les ndisp
46NDISP=100
47end subroutine init_outshort
48
49!_________________________________________________________________________
50subroutine 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! =========================================     
599do 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
622enddo
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
711905 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) ) ) 
713900   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))
715903   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 
718904  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   
724940   format('%%%% ',a,'   time=',f8.0,' %%%%')
725end subroutine shortoutput
726
727
728end module output_hemin40_mod
Note: See TracBrowser for help on using the repository browser.