/[MITgcm]/MITgcm/pkg/shelfice/shelfice_output.F
ViewVC logotype

Annotation of /MITgcm/pkg/shelfice/shelfice_output.F

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


Revision 1.1 - (hide annotations) (download)
Wed Jun 17 14:48:04 2009 UTC (15 years ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y
rename SHELFICE_DIAGS.h --> SHELFICE_TAVE.h
 and shelfice_do_diags.F --> shelfice_output.F

1 jmc 1.1 C $Header: /u/gcmpack/MITgcm/pkg/shelfice/shelfice_do_diags.F,v 1.5 2008/09/09 19:58:27 jmc Exp $
2     C $Name: $
3    
4     #include "SHELFICE_OPTIONS.h"
5    
6     SUBROUTINE SHELFICE_OUTPUT( myTime, myIter, myThid )
7     C *==========================================================*
8     C | SUBROUTINE SHELFICE_OUTPUT
9     C | o Do SHELFICE diagnostic output.
10     C *==========================================================*
11     IMPLICIT NONE
12    
13     C === Global variables ===
14     #include "SIZE.h"
15     #include "EEPARAMS.h"
16     #include "PARAMS.h"
17     #include "SHELFICE.h"
18     #include "SHELFICE_TAVE.h"
19    
20     C == Routine arguments ==
21     C myTime :: my time in simulation ( s )
22     C myIter :: my Iteration number
23     C myThid :: my Thread Id number
24     _RL myTime
25     INTEGER myIter
26     INTEGER myThid
27    
28     C == Local variables ==
29     CHARACTER*(MAX_LEN_MBUF) suff
30     LOGICAL DIFFERENT_MULTIPLE
31     EXTERNAL DIFFERENT_MULTIPLE
32     INTEGER i, j, k, bi, bj
33     LOGICAL dumpFiles
34     CHARACTER*(1) pf
35    
36     IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
37     pf(1:1) = 'D'
38     ELSE
39     pf(1:1) = 'R'
40     ENDIF
41    
42     IF (SHELFICEwriteState) THEN
43    
44     IF ( DIFFERENT_MULTIPLE(SHELFICE_dumpFreq,myTime,deltaTClock)
45     & ) THEN
46    
47     #ifdef ALLOW_MNC
48     IF ( useMNC .AND. SHELFICE_dump_mnc ) THEN
49     CALL MNC_CW_SET_UDIM('shelfice', -1, myThid)
50     CALL MNC_CW_RL_W_S('D','shelfice',0,0,'T', myTime, myThid)
51     CALL MNC_CW_SET_UDIM('shelfice', 0, myThid)
52     CALL MNC_CW_I_W_S('I','shelfice',0,0,'iter', myIter, myThid)
53     CALL MNC_CW_RL_W_S('D','shelfice',0,0,'model_time',
54     & myTime,myThid)
55     CALL MNC_CW_RS_W(pf,'shelfice',0,0,'fwFlux',
56     & shelfIceFreshWaterFlux,myThid)
57     CALL MNC_CW_RS_W(pf,'shelfice',0,0,'heatFlux',
58     & shelfIceHeatFlux,myThid)
59     ENDIF
60     #endif
61     IF (SHELFICE_dump_mdsio) THEN
62     WRITE(suff,'(I10.10)') myIter
63     _BARRIER
64     CALL WRITE_FLD_XY_RS( 'SHICE_fwFlux.',suff,
65     & shelficeFreshWaterFlux,myIter,myThid)
66     CALL WRITE_FLD_XY_RS( 'SHICE_heatFlux.',suff,
67     & shelficeHeatFlux,myIter,myThid)
68     _BARRIER
69     ENDIF
70    
71     ENDIF
72     ENDIF
73    
74     C----------------------------------------------------------------
75     C Do SHELFICE time averaging.
76     C----------------------------------------------------------------
77    
78     #ifdef ALLOW_TIMEAVE
79    
80     IF ( SHELFICE_taveFreq .GT. 0 ) THEN
81     C-- Time-cumulations
82     DO bj = myByLo(myThid), myByHi(myThid)
83     DO bi = myBxLo(myThid), myBxHi(myThid)
84     DO j=1,sNy
85     DO i=1,sNx
86     shelfice_FrshFluxtave(i,j,1,bi,bj)=
87     & shelfice_frshFluxtave(i,j,1,bi,bj)
88     & + shelficeFreshWaterFlux(i,j,bi,bj) *deltaTclock
89     shelfice_heatFluxtave(i,j,1,bi,bj) =
90     & shelfice_heatFluxtave(i,j,1,bi,bj)
91     & + shelficeHeatFlux(i,j,bi,bj) *deltaTclock
92     ENDDO
93     ENDDO
94     SHELFICE_TimeAve(1,bi,bj)=SHELFICE_TimeAve(1,bi,bj)+deltaTclock
95     ENDDO
96     ENDDO
97    
98     C Dump files and restart average computation if needed
99     dumpFiles = .FALSE.
100     IF ( myIter .NE. nIter0 ) THEN
101     dumpFiles =
102     & DIFFERENT_MULTIPLE(SHELFICE_taveFreq,myTime,deltaTClock)
103     #ifdef ALLOW_CAL
104     IF ( useCAL ) THEN
105     CALL CAL_TIME2DUMP( SHELFICE_taveFreq, deltaTClock,
106     U dumpFiles,
107     I myTime, myIter, myThid )
108     ENDIF
109     #endif
110     ENDIF
111    
112     IF (dumpFiles) THEN
113     C Normalize by integrated time
114     DO bj = myByLo(myThid), myByHi(myThid)
115     DO bi = myBxLo(myThid), myBxHi(myThid)
116     CALL TIMEAVE_NORMALIZ(shelfice_frshFluxtave,SHELFICE_timeave,
117     & 1,bi,bj,myThid)
118     CALL TIMEAVE_NORMALIZ(shelfice_heatFluxtave,SHELFICE_timeave,
119     & 1,bi,bj,myThid)
120     ENDDO
121     ENDDO
122    
123     #ifdef ALLOW_MNC
124     IF (useMNC .AND. SHELFICE_tave_mnc) THEN
125     CALL MNC_CW_SET_UDIM('shelfice_tave', -1, myThid)
126     CALL MNC_CW_RL_W_S('D','shelfice_tave',0,0,'T', myTime, myThid)
127     CALL MNC_CW_SET_UDIM('shelfice_tave', 0, myThid)
128     CALL MNC_CW_I_W_S('I','shelfice_tave',0,0,'iter', myIter,
129     & myThid)
130     C CALL MNC_CW_RL_W_S('D','shelfice_tave',0,0,'model_time',
131     C & myTime,myThid)
132     CALL MNC_CW_RL_W(pf,'shelfice_tave',0,0,
133     & 'fwFluxtave',Shelfice_FrshFluxtave,myThid)
134     CALL MNC_CW_RL_W(pf,'shelfice_tave',0,0,
135     & 'heatFluxtave',Shelfice_HeatFluxtave,myThid)
136     ENDIF
137     #endif
138     IF (SHELFICE_tave_mdsio) THEN
139     WRITE(suff,'(I10.10)') myIter
140     _BARRIER
141     CALL WRITE_FLD_XY_RL('SHICE_fwFluxtave.',suff,
142     & shelfice_frshFluxtave,myIter,myThid)
143     CALL WRITE_FLD_XY_RL('SHICE_heatFluxtave.',suff,
144     & shelfice_heatFluxtave ,myIter,myThid)
145     _BARRIER
146     ENDIF
147    
148     C Reset averages to zero
149     DO bj = myByLo(myThid), myByHi(myThid)
150     DO bi = myBxLo(myThid), myBxHi(myThid)
151     CALL TIMEAVE_RESET(shelfice_frshFluxtave,1,bi,bj,myThid)
152     CALL TIMEAVE_RESET(shelfice_heatFluxtave ,1,bi,bj,myThid)
153     SHELFICE_TimeAve(1,bi,bj) = 0. _d 0
154     ENDDO
155     ENDDO
156    
157     ENDIF
158     C ( SHELFICE_taveFreq .GT. 0 )
159     ENDIF
160     #endif /* ALLOW_TIMEAVE */
161    
162     RETURN
163     END

  ViewVC Help
Powered by ViewVC 1.1.22