/[MITgcm]/MITgcm/pkg/thsice/thsice_output.F
ViewVC logotype

Diff of /MITgcm/pkg/thsice/thsice_output.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.2 by jmc, Wed Apr 6 18:47:11 2005 UTC revision 1.10 by jmc, Mon Aug 27 13:23:13 2007 UTC
# Line 42  CEOP Line 42  CEOP
42  #ifdef ALLOW_THSICE  #ifdef ALLOW_THSICE
43    
44  C     == Local variables ==  C     == Local variables ==
45        LOGICAL  DIFF_BASE_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
46        EXTERNAL DIFF_BASE_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
47        INTEGER bi, bj, kl        INTEGER bi, bj, kl
48        CHARACTER*(MAX_LEN_MBUF) suff, fn        CHARACTER*(MAX_LEN_MBUF) suff, fn
49        LOGICAL gf        LOGICAL gf
50    #ifdef ALLOW_MNC
51          INTEGER i
52          CHARACTER*(MAX_LEN_MBUF) mncf
53          CHARACTER*(1) pf
54    #endif
55    
56  #ifdef ALLOW_TIMEAVE  #ifdef ALLOW_TIMEAVE
57    
# Line 74  c set arrays to zero if first timestep Line 79  c set arrays to zero if first timestep
79         ENDDO         ENDDO
80    
81  C     Dump files and restart average computation if needed  C     Dump files and restart average computation if needed
82        ELSEIF (        ELSEIF (
83       &  DIFF_BASE_MULTIPLE(baseTime,thSIce_taveFreq,myTime,deltaTClock)       &  DIFFERENT_MULTIPLE(thSIce_taveFreq,myTime,deltaTClock)
84       &     ) THEN       &     ) THEN
85    
86  C--    Normalize by integrated time  C--    Normalize by integrated time
# Line 132  c    &                 bi,bj,myThid) Line 137  c    &                 bi,bj,myThid)
137           ENDIF           ENDIF
138          ENDDO          ENDDO
139         ENDDO         ENDDO
140            
141  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
142    
143  C--    Write 1 file per time-average variable:  C--    Write 1 file per time-average variable:
# Line 177  C--    Write all time-average variables Line 182  C--    Write all time-average variables
182         _BARRIER         _BARRIER
183         _BEGIN_MASTER( myThid )         _BEGIN_MASTER( myThid )
184    
185  C-     find wether we are writing globalFile or tile-files:         IF ( thSIce_tave_mdsio ) THEN
186         CALL GET_WRITE_GLOBAL_FLD( gf )  
187    C        find wether we are writing globalFile or tile-files:
188             CALL GET_WRITE_GLOBAL_FLD( gf )
189    
190             WRITE(fn,'(A,I10.10)') 'thSIce_tave.', myIter
191    
192         WRITE(fn,'(A,I10.10)') 'thSIce_tave.', myIter           CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
193         &        ice_fract_Ave,  1, myIter, myThid )
194             CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
195         &        ice_iceH_Ave,   2, myIter, myThid )
196             CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
197         &        ice_snowH_Ave,  3, myIter, myThid )
198             CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
199         &        ice_Tsrf_Ave,   4, myIter, myThid )
200             CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
201         &        ice_Tice1_Ave,  5, myIter, myThid )
202             CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
203         &        ice_Tice2_Ave,  6, myIter, myThid )
204             CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
205         &        ice_snowPr_Ave, 7, myIter, myThid )
206             CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
207         &        ice_albedo_Ave, 8, myIter, myThid )
208             CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
209         &        ice_flx2oc_Ave, 9, myIter, myThid )
210             CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
211         &        ice_frw2oc_Ave,10, myIter, myThid )
212             kl = 11
213             CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
214         &        ice_salFx_Ave, kl, myIter, myThid )
215             IF ( fluidIsWater ) THEN
216               kl = kl+1
217               CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
218         &          ice_flxAtm_Ave,kl, myIter, myThid )
219               kl = kl+1
220               CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
221         &          ice_frwAtm_Ave,kl, myIter, myThid )
222             ENDIF
223             IF ( stepFwd_oceMxL ) THEN
224               kl = kl+1
225               CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
226         &          ice_tMxL_Ave,  kl, myIter, myThid )
227               kl = kl+1
228               CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,
229         &          ice_sMxL_Ave,  kl, myIter, myThid )
230             ENDIF
231    
        CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_fract_Ave,  1, myIter, myThid )  
        CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_iceH_Ave,   2, myIter, myThid )  
        CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_snowH_Ave,  3, myIter, myThid )  
        CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_Tsrf_Ave,   4, myIter, myThid )  
        CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_Tice1_Ave,  5, myIter, myThid )  
        CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_Tice2_Ave,  6, myIter, myThid )  
        CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_snowPr_Ave, 7, myIter, myThid )  
        CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_albedo_Ave, 8, myIter, myThid )  
        CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_flx2oc_Ave, 9, myIter, myThid )  
        CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_frw2oc_Ave,10, myIter, myThid )  
        kl = 11  
        CALL MDSWRITEFIELD( fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_salFx_Ave, kl, myIter, myThid )  
        IF ( fluidIsWater ) THEN  
         kl = kl+1  
         CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_flxAtm_Ave,kl, myIter, myThid )  
         kl = kl+1  
         CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', 1,  
      &                     ice_frwAtm_Ave,kl, myIter, myThid )  
232         ENDIF         ENDIF
233         IF ( stepFwd_oceMxL ) THEN  
234          kl = kl+1  #ifdef ALLOW_MNC
235          CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', 1,         IF ( useMNC .AND. thSIce_tave_mnc ) THEN
236       &                     ice_tMxL_Ave,  kl, myIter, myThid )           IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
237          kl = kl+1             pf(1:1) = 'D'
238          CALL MDSWRITEFIELD(fn, writeBinaryPrec, gf, 'RL', 1,           ELSE
239       &                     ice_sMxL_Ave,  kl, myIter, myThid )             pf(1:1) = 'R'
240             ENDIF
241             DO i = 1,MAX_LEN_MBUF
242               mncf(i:i) = ' '
243             ENDDO
244    C        C             123456789 1
245             mncf(1:11) = 'thsice_tave'
246             CALL MNC_CW_SET_UDIM(mncf, -1, myThid)
247             CALL MNC_CW_RL_W_S('D',mncf,0,0,'T', myTime, myThid)
248             CALL MNC_CW_SET_UDIM(mncf, 0, myThid)
249             CALL MNC_CW_I_W_S('I',mncf,0,0,'iter', myIter, myThid)
250             CALL MNC_CW_RL_W(pf,mncf,0,0,
251         &                    'fract_ave', ice_fract_Ave, myThid)
252             CALL MNC_CW_RL_W(pf,mncf,0,0,
253         &                    'iceH_ave',  ice_iceH_Ave,  myThid)
254             CALL MNC_CW_RL_W(pf,mncf,0,0,
255         &                    'snowH_ave', ice_snowH_Ave, myThid)
256             CALL MNC_CW_RL_W(pf,mncf,0,0,
257         &                    'Tsrf_ave',  ice_Tsrf_Ave,  myThid)
258             CALL MNC_CW_RL_W(pf,mncf,0,0,
259         &                    'Tice1_ave', ice_Tice1_Ave, myThid)
260             CALL MNC_CW_RL_W(pf,mncf,0,0,
261         &                    'Tice2_ave', ice_Tice2_Ave, myThid)
262             CALL MNC_CW_RL_W(pf,mncf,0,0,
263         &                    'snowPr_ave',ice_snowPr_Ave,myThid)
264             CALL MNC_CW_RL_W(pf,mncf,0,0,
265         &                    'albedo_ave',ice_albedo_Ave,myThid)
266             CALL MNC_CW_RL_W(pf,mncf,0,0,
267         &                    'flx2oc_ave',ice_flx2oc_Ave,myThid)
268             CALL MNC_CW_RL_W(pf,mncf,0,0,
269         &                    'frw2oc_ave',ice_frw2oc_Ave,myThid)
270             IF ( fluidIsWater ) THEN
271               CALL MNC_CW_RL_W(pf,mncf,0,0,
272         &                    'flxAtm_ave',ice_flxAtm_Ave,myThid)
273               CALL MNC_CW_RL_W(pf,mncf,0,0,
274         &                    'frwAtm_ave',ice_frwAtm_Ave,myThid)
275             ENDIF
276             IF ( stepFwd_oceMxL ) THEN
277               CALL MNC_CW_RL_W(pf,mncf,0,0,'tMxL_ave',ice_tMxL_Ave,myThid)
278               CALL MNC_CW_RL_W(pf,mncf,0,0,'sMxL_ave',ice_sMxL_Ave,myThid)
279             ENDIF
280         ENDIF         ENDIF
281    #endif
282    
283         _END_MASTER( myThid )         _END_MASTER( myThid )
284         _BARRIER         _BARRIER
285            
286  C--    Reset averages to zero  C--    Reset averages to zero
287         DO bj = myByLo(myThid), myByHi(myThid)         DO bj = myByLo(myThid), myByHi(myThid)
288          DO bi = myBxLo(myThid), myBxHi(myThid)          DO bi = myBxLo(myThid), myBxHi(myThid)
# Line 246  C--    Reset averages to zero Line 304  C--    Reset averages to zero
304           ice_timeAve(1,bi,bj) = 0.           ice_timeAve(1,bi,bj) = 0.
305          ENDDO          ENDDO
306         ENDDO         ENDDO
307            
308        ENDIF        ENDIF
309    
310  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
311    
312  C     Dump a snap-shot of main state variables:  C     Dump a snap-shot of main state variables:
313        IF (        IF (
314       &  DIFF_BASE_MULTIPLE(baseTime,thSIce_diagFreq,myTime,deltaTClock)       &     DIFFERENT_MULTIPLE( thSIce_diagFreq, myTime, deltaTClock )
315       &     .OR. myTime.EQ.startTime       &  .OR. dumpInitAndLast.AND.( myTime.EQ.endTime .OR.
316       &     .OR. myTime.EQ.endTime ) THEN       &                             myTime.EQ.startTime  )
317         &   ) THEN
318         WRITE(suff,'(I10.10)') myIter  
319            IF ( thSIce_snapshot_mdsio ) THEN
320         CALL WRITE_FLD_XY_RL('ice_fract.',  suff,iceMask,  
321       &     myIter,myThid)            WRITE(suff,'(I10.10)') myIter
322         CALL WRITE_FLD_XY_RL('ice_iceH.',   suff,iceheight,  
323       &     myIter,myThid)            CALL WRITE_FLD_XY_RL('ice_fract.',  suff,iceMask,
324         CALL WRITE_FLD_XY_RL('ice_snowH.',  suff,snowheight,       &         myIter,myThid)
325       &     myIter,myThid)            CALL WRITE_FLD_XY_RL('ice_iceH.',   suff,iceHeight,
326         CALL WRITE_FLD_XY_RL('ice_Tsrf.',   suff,Tsrf,       &         myIter,myThid)
327       &     myIter,myThid)            CALL WRITE_FLD_XY_RL('ice_snowH.',  suff,snowHeight,
328         CALL WRITE_FLD_XY_RL('ice_Tice1.',  suff,Tice1,       &         myIter,myThid)
329       &     myIter,myThid)            CALL WRITE_FLD_XY_RL('ice_Tsrf.',   suff,Tsrf,
330         CALL WRITE_FLD_XY_RL('ice_Tice2.',  suff,Tice2,       &         myIter,myThid)
331       &     myIter,myThid)            CALL WRITE_FLD_XY_RL('ice_Tice1.',  suff,Tice1,
332         CALL WRITE_FLD_XY_RL('ice_Qice1.',  suff,Qice1,       &         myIter,myThid)
333       &     myIter,myThid)            CALL WRITE_FLD_XY_RL('ice_Tice2.',  suff,Tice2,
334         CALL WRITE_FLD_XY_RL('ice_Qice2.',  suff,Qice2,       &         myIter,myThid)
335       &     myIter,myThid)            CALL WRITE_FLD_XY_RL('ice_Qice1.',  suff,Qice1,
336         CALL WRITE_FLD_XY_RL('ice_snowPrc.',suff,snowPrc,       &         myIter,myThid)
337       &     myIter,myThid)            CALL WRITE_FLD_XY_RL('ice_Qice2.',  suff,Qice2,
338         CALL WRITE_FLD_XY_RL('ice_snowAge.',suff,snowAge,       &         myIter,myThid)
339       &     myIter,myThid)            CALL WRITE_FLD_XY_RL('ice_snowAge.',suff,snowAge,
340         IF ( stepFwd_oceMxL ) THEN       &         myIter,myThid)
341          CALL WRITE_FLD_XY_RL('ice_tOceMxL.', suff, tOceMxL,            IF ( myTime.NE.startTime ) THEN
342       &     myIter,myThid)              CALL WRITE_FLD_XY_RL('ice_snowPrc.',suff,snowPrc,
343          CALL WRITE_FLD_XY_RL('ice_sOceMxL.', suff, sOceMxL,       &           myIter,myThid)
344       &     myIter,myThid)              CALL WRITE_FLD_XY_RL('ice_flxAtm.',suff,icFlxAtm,
345         ENDIF       &           myIter,myThid)
346                CALL WRITE_FLD_XY_RL('ice_frwAtm.',suff,icFrwAtm,
347         &           myIter,myThid)
348              ENDIF
349              IF ( stepFwd_oceMxL ) THEN
350                CALL WRITE_FLD_XY_RL('ice_tOceMxL.', suff, tOceMxL,
351         &           myIter,myThid)
352                CALL WRITE_FLD_XY_RL('ice_sOceMxL.', suff, sOceMxL,
353         &           myIter,myThid)
354              ENDIF
355    
356            ENDIF
357    
358    #ifdef ALLOW_MNC
359            IF ( thSIce_snapshot_mnc ) THEN
360              IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
361                pf(1:1) = 'D'
362              ELSE
363                pf(1:1) = 'R'
364              ENDIF
365              DO i = 1,MAX_LEN_MBUF
366                mncf(i:i) = ' '
367              ENDDO
368    C         C             123456789 12345
369              mncf(1:15) = 'thsice_snapshot'
370              CALL MNC_CW_SET_UDIM(mncf, -1, myThid)
371              CALL MNC_CW_I_W_S('I',mncf,0,0,'iter', myIter, myThid)
372              CALL MNC_CW_SET_UDIM(mncf, 0, myThid)
373              CALL MNC_CW_RL_W_S('D',mncf,0,0,'T', myTime, myThid)
374              CALL MNC_CW_RL_W(pf,mncf,0,0,'iceMask',   iceMask,   myThid)
375              CALL MNC_CW_RL_W(pf,mncf,0,0,'iceHeight', iceHeight, myThid)
376              CALL MNC_CW_RL_W(pf,mncf,0,0,'snowHeight',snowHeight,myThid)
377              CALL MNC_CW_RL_W(pf,mncf,0,0,'Tsrf',      Tsrf,      myThid)
378              CALL MNC_CW_RL_W(pf,mncf,0,0,'Tice1',     Tice1,     myThid)
379              CALL MNC_CW_RL_W(pf,mncf,0,0,'Tice2',     Tice1,     myThid)
380              CALL MNC_CW_RL_W(pf,mncf,0,0,'Qice1',     Qice1,     myThid)
381              CALL MNC_CW_RL_W(pf,mncf,0,0,'Qice2',     Qice2,     myThid)
382              CALL MNC_CW_RL_W(pf,mncf,0,0,'snowAge',   snowAge,   myThid)
383              IF ( stepFwd_oceMxL ) THEN
384                CALL MNC_CW_RL_W(pf,mncf,0,0,'tOceMxL',tOceMxL,myThid)
385                CALL MNC_CW_RL_W(pf,mncf,0,0,'sOceMxL',sOceMxL,myThid)
386              ENDIF
387            ENDIF
388    #endif  /* ALLOW_MNC */
389    
390    
391        ENDIF        ENDIF
392            
393        IF ( thSIce_monFreq.GT. 0. _d 0 )        IF ( thSIce_monFreq.GT. 0. _d 0 )
394       &    CALL THSICE_MONITOR( myTime, myIter, myThid )       &    CALL THSICE_MONITOR( myTime, myIter, myThid )
395    
396  #endif /* ALLOW_THSICE */  #endif /* ALLOW_THSICE */
397          
398        RETURN        RETURN
399        END        END

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22