/[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.2 - (show annotations) (download)
Sun Jan 3 00:39:46 2010 UTC (14 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint63, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x
Changes since 1.1: +103 -68 lines
time-ave: use simpler (no k index) cumulative-time counter: SHELFICE_timeAve(bi,bj)
flux not valid if nIter=nIter0: avoid snap-shot output and accumulation (time-ave)

1 C $Header: /u/gcmpack/MITgcm/pkg/shelfice/shelfice_output.F,v 1.1 2009/06/17 14:48:04 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*(MAX_LEN_MBUF) 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 WRITE(suff,'(I10.10)') myIter
82 CALL WRITE_FLD_XY_RS( 'SHICE_fwFlux.',suff,
83 & shelficeFreshWaterFlux,myIter,myThid)
84 CALL WRITE_FLD_XY_RS( 'SHICE_heatFlux.',suff,
85 & shelficeHeatFlux,myIter,myThid)
86 ENDIF
87
88 ENDIF
89 ENDIF
90
91 C----------------------------------------------------------------
92 C Do SHELFICE time averaging.
93 C----------------------------------------------------------------
94
95 #ifdef ALLOW_TIMEAVE
96 IF ( SHELFICE_taveFreq .GT. 0 ) THEN
97
98 IF ( myIter.EQ.nIter0 ) THEN
99 C-- Initialise averages to zero
100 DO bj = myByLo(myThid), myByHi(myThid)
101 DO bi = myBxLo(myThid), myBxHi(myThid)
102 CALL TIMEAVE_RESET( shelfice_frshFluxtave, 1, bi,bj, myThid )
103 CALL TIMEAVE_RESET( shelfice_heatFluxtave, 1, bi,bj, myThid )
104 SHELFICE_timeAve(bi,bj) = 0. _d 0
105 ENDDO
106 ENDDO
107 ELSE
108 C-- Time-cumulations
109 C- note: surf.Fluxes have not yet been computed when called @ nIter0
110 DO bj = myByLo(myThid), myByHi(myThid)
111 DO bi = myBxLo(myThid), myBxHi(myThid)
112 DO j=1,sNy
113 DO i=1,sNx
114 shelfice_FrshFluxtave(i,j,1,bi,bj)=
115 & shelfice_frshFluxtave(i,j,1,bi,bj)
116 & + shelficeFreshWaterFlux(i,j,bi,bj) *deltaTclock
117 shelfice_heatFluxtave(i,j,1,bi,bj) =
118 & shelfice_heatFluxtave(i,j,1,bi,bj)
119 & + shelficeHeatFlux(i,j,bi,bj) *deltaTclock
120 ENDDO
121 ENDDO
122 SHELFICE_timeAve(bi,bj) = SHELFICE_timeAve(bi,bj)+deltaTclock
123 ENDDO
124 ENDDO
125 ENDIF
126
127 C Dump files and restart average computation if needed
128 dumpFiles = .FALSE.
129 IF ( myIter .NE. nIter0 ) THEN
130 dumpFiles =
131 & DIFFERENT_MULTIPLE(SHELFICE_taveFreq,myTime,deltaTClock)
132 #ifdef ALLOW_CAL
133 IF ( useCAL ) THEN
134 CALL CAL_TIME2DUMP( SHELFICE_taveFreq, deltaTClock,
135 U dumpFiles,
136 I myTime, myIter, myThid )
137 ENDIF
138 #endif
139 ENDIF
140
141 IF (dumpFiles) THEN
142 C- Normalize by integrated time
143 DO bj = myByLo(myThid), myByHi(myThid)
144 DO bi = myBxLo(myThid), myBxHi(myThid)
145 CALL TIMEAVE_NORMALIZE( shelfice_frshFluxtave,
146 & SHELFICE_timeAve, 1, bi, bj, myThid )
147 CALL TIMEAVE_NORMALIZE( shelfice_heatFluxtave,
148 & SHELFICE_timeAve, 1, bi, bj, myThid )
149 ENDDO
150 ENDDO
151
152 #ifdef ALLOW_MNC
153 IF (useMNC .AND. SHELFICE_tave_mnc) THEN
154 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
155 pf(1:1) = 'D'
156 ELSE
157 pf(1:1) = 'R'
158 ENDIF
159 CALL MNC_CW_SET_UDIM('shelfice_tave', -1, myThid)
160 CALL MNC_CW_RL_W_S( 'D','shelfice_tave', 0, 0,
161 & 'T', myTime, myThid )
162 CALL MNC_CW_SET_UDIM('shelfice_tave', 0, myThid)
163 CALL MNC_CW_I_W_S( 'I', 'shelfice_tave', 0, 0,
164 & 'iter', myIter, myThid )
165 C CALL MNC_CW_RL_W_S( 'D','shelfice_tave', 0, 0,
166 C & 'model_time', myTime, myThid )
167 CALL MNC_CW_RL_W( pf, 'shelfice_tave', 0, 0,
168 & 'fwFluxtave', Shelfice_FrshFluxtave, myThid )
169 CALL MNC_CW_RL_W( pf, 'shelfice_tave', 0, 0,
170 & 'heatFluxtave', Shelfice_HeatFluxtave, myThid )
171 ENDIF
172 #endif
173 IF (SHELFICE_tave_mdsio) THEN
174 WRITE(suff,'(I10.10)') myIter
175 CALL WRITE_FLD_XY_RL( 'SHICE_fwFluxtave.', suff,
176 & shelfice_frshFluxtave, myIter, myThid )
177 CALL WRITE_FLD_XY_RL( 'SHICE_heatFluxtave.', suff,
178 & shelfice_heatFluxtave, myIter, myThid )
179 ENDIF
180
181 C- Reset averages to zero
182 DO bj = myByLo(myThid), myByHi(myThid)
183 DO bi = myBxLo(myThid), myBxHi(myThid)
184 CALL TIMEAVE_RESET( shelfice_frshFluxtave, 1, bi,bj, myThid )
185 CALL TIMEAVE_RESET( shelfice_heatFluxtave, 1, bi,bj, myThid )
186 SHELFICE_timeAve(bi,bj) = 0. _d 0
187 ENDDO
188 ENDDO
189
190 C-- end if dumpFiles
191 ENDIF
192
193 C-- end if SHELFICE_taveFreq > 0
194 ENDIF
195 #endif /* ALLOW_TIMEAVE */
196
197 RETURN
198 END

  ViewVC Help
Powered by ViewVC 1.1.22