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

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

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


Revision 1.5 - (show annotations) (download)
Fri Mar 24 23:51:14 2017 UTC (8 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, HEAD
Changes since 1.4: +15 -7 lines
use new S/R RW_GET_SUFFIX to get file suffix (according to "rwSuffixType")

1 C $Header: /u/gcmpack/MITgcm/pkg/shelfice/shelfice_output.F,v 1.4 2012/08/06 16:56:59 jmc Exp $
2 C $Name: $
3
4 #include "SHELFICE_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: SHELFICE_OUTPUT
8 C !INTERFACE:
9 SUBROUTINE SHELFICE_OUTPUT( myTime, myIter, myThid )
10
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | SUBROUTINE SHELFICE_OUTPUT
14 C | o Do SHELFICE snapshot output
15 C | and compute & write time-average output.
16 C *==========================================================*
17 C \ev
18
19 C !USES:
20 IMPLICIT NONE
21
22 C === Global variables ===
23 #include "SIZE.h"
24 #include "EEPARAMS.h"
25 #include "PARAMS.h"
26 #include "SHELFICE.h"
27 #include "SHELFICE_TAVE.h"
28
29 C !INPUT/OUTPUT PARAMETERS:
30 C == Routine arguments ==
31 C myTime :: my time in simulation ( s )
32 C myIter :: my Iteration number
33 C myThid :: my Thread Id number
34 _RL myTime
35 INTEGER myIter
36 INTEGER myThid
37
38 C !FUNCTIONS:
39 LOGICAL DIFFERENT_MULTIPLE
40 EXTERNAL DIFFERENT_MULTIPLE
41
42 C !LOCAL VARIABLES:
43 C == Local variables ==
44 CHARACTER*(10) suff
45 #ifdef ALLOW_TIMEAVE
46 INTEGER i, j, bi, bj
47 LOGICAL dumpFiles
48 #endif
49 #ifdef ALLOW_MNC
50 CHARACTER*(1) pf
51 #endif
52 CEOP
53
54 IF (SHELFICEwriteState) THEN
55
56 C- note: surf.Fluxes have not yet been computed when called @ nIter0
57 IF ( myIter .NE. nIter0 .AND.
58 & DIFFERENT_MULTIPLE(SHELFICE_dumpFreq,myTime,deltaTClock)
59 & ) THEN
60
61 #ifdef ALLOW_MNC
62 IF ( useMNC .AND. SHELFICE_dump_mnc ) THEN
63 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
64 pf(1:1) = 'D'
65 ELSE
66 pf(1:1) = 'R'
67 ENDIF
68 CALL MNC_CW_SET_UDIM('shelfice', -1, myThid)
69 CALL MNC_CW_RL_W_S('D','shelfice',0,0,'T', myTime, myThid)
70 CALL MNC_CW_SET_UDIM('shelfice', 0, myThid)
71 CALL MNC_CW_I_W_S('I','shelfice',0,0,'iter', myIter, myThid)
72 CALL MNC_CW_RL_W_S('D','shelfice',0,0,'model_time',
73 & myTime,myThid)
74 CALL MNC_CW_RS_W(pf,'shelfice',0,0,'fwFlux',
75 & shelfIceFreshWaterFlux,myThid)
76 CALL MNC_CW_RS_W(pf,'shelfice',0,0,'heatFlux',
77 & shelfIceHeatFlux,myThid)
78 ENDIF
79 #endif
80 IF (SHELFICE_dump_mdsio) THEN
81 IF ( rwSuffixType.EQ.0 ) THEN
82 WRITE(suff,'(I10.10)') myIter
83 ELSE
84 CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
85 ENDIF
86 CALL WRITE_FLD_XY_RS( 'SHICE_fwFlux.',suff,
87 & shelficeFreshWaterFlux,myIter,myThid)
88 CALL WRITE_FLD_XY_RS( 'SHICE_heatFlux.',suff,
89 & shelficeHeatFlux,myIter,myThid)
90 ENDIF
91
92 ENDIF
93 ENDIF
94
95 C----------------------------------------------------------------
96 C Do SHELFICE time averaging.
97 C----------------------------------------------------------------
98
99 #ifdef ALLOW_TIMEAVE
100 IF ( SHELFICE_taveFreq .GT. 0 ) THEN
101
102 IF ( myIter.EQ.nIter0 ) THEN
103 C-- Initialise averages to zero
104 DO bj = myByLo(myThid), myByHi(myThid)
105 DO bi = myBxLo(myThid), myBxHi(myThid)
106 CALL TIMEAVE_RESET( shelfice_frshFluxtave, 1, bi,bj, myThid )
107 CALL TIMEAVE_RESET( shelfice_heatFluxtave, 1, bi,bj, myThid )
108 SHELFICE_timeAve(bi,bj) = 0. _d 0
109 ENDDO
110 ENDDO
111 ELSE
112 C-- Time-cumulations
113 C- note: surf.Fluxes have not yet been computed when called @ nIter0
114 DO bj = myByLo(myThid), myByHi(myThid)
115 DO bi = myBxLo(myThid), myBxHi(myThid)
116 DO j=1,sNy
117 DO i=1,sNx
118 shelfice_FrshFluxtave(i,j,1,bi,bj)=
119 & shelfice_frshFluxtave(i,j,1,bi,bj)
120 & + shelficeFreshWaterFlux(i,j,bi,bj) *deltaTClock
121 shelfice_heatFluxtave(i,j,1,bi,bj) =
122 & shelfice_heatFluxtave(i,j,1,bi,bj)
123 & + shelficeHeatFlux(i,j,bi,bj) *deltaTClock
124 ENDDO
125 ENDDO
126 SHELFICE_timeAve(bi,bj) = SHELFICE_timeAve(bi,bj)+deltaTClock
127 ENDDO
128 ENDDO
129 ENDIF
130
131 C Dump files and restart average computation if needed
132 dumpFiles = .FALSE.
133 IF ( myIter .NE. nIter0 ) THEN
134 dumpFiles =
135 & DIFFERENT_MULTIPLE(SHELFICE_taveFreq,myTime,deltaTClock)
136 #ifdef ALLOW_CAL
137 IF ( useCAL ) THEN
138 CALL CAL_TIME2DUMP( zeroRL, SHELFICE_taveFreq, deltaTClock,
139 U dumpFiles,
140 I myTime, myIter, myThid )
141 ENDIF
142 #endif
143 ENDIF
144
145 IF (dumpFiles) THEN
146 C- Normalize by integrated time
147 DO bj = myByLo(myThid), myByHi(myThid)
148 DO bi = myBxLo(myThid), myBxHi(myThid)
149 CALL TIMEAVE_NORMALIZE( shelfice_frshFluxtave,
150 & SHELFICE_timeAve, 1, bi, bj, myThid )
151 CALL TIMEAVE_NORMALIZE( shelfice_heatFluxtave,
152 & SHELFICE_timeAve, 1, bi, bj, myThid )
153 ENDDO
154 ENDDO
155
156 #ifdef ALLOW_MNC
157 IF (useMNC .AND. SHELFICE_tave_mnc) THEN
158 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
159 pf(1:1) = 'D'
160 ELSE
161 pf(1:1) = 'R'
162 ENDIF
163 CALL MNC_CW_SET_UDIM('shelfice_tave', -1, myThid)
164 CALL MNC_CW_RL_W_S( 'D','shelfice_tave', 0, 0,
165 & 'T', myTime, myThid )
166 CALL MNC_CW_SET_UDIM('shelfice_tave', 0, myThid)
167 CALL MNC_CW_I_W_S( 'I', 'shelfice_tave', 0, 0,
168 & 'iter', myIter, myThid )
169 C CALL MNC_CW_RL_W_S( 'D','shelfice_tave', 0, 0,
170 C & 'model_time', myTime, myThid )
171 CALL MNC_CW_RL_W( pf, 'shelfice_tave', 0, 0,
172 & 'fwFluxtave', Shelfice_FrshFluxtave, myThid )
173 CALL MNC_CW_RL_W( pf, 'shelfice_tave', 0, 0,
174 & 'heatFluxtave', Shelfice_HeatFluxtave, myThid )
175 ENDIF
176 #endif
177 IF (SHELFICE_tave_mdsio) THEN
178 IF ( rwSuffixType.EQ.0 ) THEN
179 WRITE(suff,'(I10.10)') myIter
180 ELSE
181 CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
182 ENDIF
183 CALL WRITE_FLD_XY_RL( 'SHICE_fwFluxtave.', suff,
184 & shelfice_frshFluxtave, myIter, myThid )
185 CALL WRITE_FLD_XY_RL( 'SHICE_heatFluxtave.', suff,
186 & shelfice_heatFluxtave, myIter, myThid )
187 ENDIF
188
189 C- Reset averages to zero
190 DO bj = myByLo(myThid), myByHi(myThid)
191 DO bi = myBxLo(myThid), myBxHi(myThid)
192 CALL TIMEAVE_RESET( shelfice_frshFluxtave, 1, bi,bj, myThid )
193 CALL TIMEAVE_RESET( shelfice_heatFluxtave, 1, bi,bj, myThid )
194 SHELFICE_timeAve(bi,bj) = 0. _d 0
195 ENDDO
196 ENDDO
197
198 C-- end if dumpFiles
199 ENDIF
200
201 C-- end if SHELFICE_taveFreq > 0
202 ENDIF
203 #endif /* ALLOW_TIMEAVE */
204
205 RETURN
206 END

  ViewVC Help
Powered by ViewVC 1.1.22