/[MITgcm]/MITgcm/pkg/seaice/seaice_do_diags.F
ViewVC logotype

Contents of /MITgcm/pkg/seaice/seaice_do_diags.F

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


Revision 1.4 - (show annotations) (download)
Sat Dec 28 10:11:11 2002 UTC (21 years, 4 months ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint47j_post, checkpoint48d_pre, checkpoint47f_post, checkpoint48d_post, checkpoint48a_post, checkpoint48e_post, checkpoint47h_post, checkpoint48c_post, checkpoint47i_post, checkpoint48, checkpoint47g_post, checkpoint48b_post, checkpoint48c_pre
Branch point for: c24_e25_ice, ecco-branch
Changes since 1.3: +9 -9 lines
checkpoint47f_post
Merging from release1_p10:
o modifications for using pkg/exf with pkg/seaice
  - pkg/seaice CPP options SEAICE_EXTERNAL_FORCING
    and SEAICE_EXTERNAL_FLUXES
  - pkg/exf CPP options EXF_READ_EVAP and
    EXF_NO_BULK_COMPUTATIONS
  - usage examples are Experiments 8 and 9 in
    verification/lab_sea/README
  - verification/lab_sea default experiment now uses
    pkg/gmredi, pkg/kpp, pkg/seaice, and pkg/exf

1 C $Header:
2
3 #include "SEAICE_OPTIONS.h"
4
5 SUBROUTINE SEAICE_DO_DIAGS( myTime, myIter, myThid )
6 C /==========================================================\
7 C | SUBROUTINE SEAICE_DO_DIAGS |
8 C | o Do SEAICE diagnostic output. |
9 C \==========================================================/
10 IMPLICIT NONE
11
12 C === Global variables ===
13 #include "SIZE.h"
14 #include "EEPARAMS.h"
15 #include "PARAMS.h"
16 #include "FFIELDS.h"
17 #include "SEAICE_DIAGS.h"
18 #include "SEAICE_PARAMS.h"
19 #include "SEAICE_FFIELDS.h"
20 #include "SEAICE.h"
21
22 C == Routine arguments ==
23 C myTime - Current time of simulation ( s )
24 C myIter - Iteration number
25 C myThid - Number of this instance of SEAICE_DO_DIAGS
26 _RL myTime
27 INTEGER myIter
28 INTEGER myThid
29
30 #ifdef ALLOW_SEAICE
31
32 C == Local variables ==
33 CHARACTER*(MAX_LEN_MBUF) suff
34 LOGICAL DIFFERENT_MULTIPLE
35 EXTERNAL DIFFERENT_MULTIPLE
36 INTEGER i, j, k, bi, bj
37 _RS arr(1-oLx:sNx+oLx,1-oLy:sNy+oLy,nSx,nSy)
38
39 IF (SEAICEwriteState) THEN
40
41 IF ( DIFFERENT_MULTIPLE(SEAICE_dumpFreq,myTime,
42 & myTime-deltaTClock) ) THEN
43
44 WRITE(suff,'(I10.10)') myIter
45 _BARRIER
46 _BEGIN_MASTER( myThid )
47 CALL WRITE_FLD_XY_RS( 'FU.',suff,fu,myIter,myThid)
48 CALL WRITE_FLD_XY_RS( 'FV.',suff,fv,myIter,myThid)
49 CALL WRITE_FLD_XY_RS( 'EmPmR.',suff,EmPmR,myIter,myThid)
50 CALL WRITE_FLD_XY_RS( 'Qnet.',suff,Qnet,myIter,myThid)
51 CALL WRITE_FLD_XY_RS( 'Qsw.',suff,Qsw,myIter,myThid)
52 _END_MASTER( myThid )
53 _BARRIER
54
55 DO bj=myByLo(myThid),myByHi(myThid)
56 DO bi=myBxLo(myThid),myBxHi(myThid)
57 DO j=1,sNy
58 DO i=1,sNx
59 arr(i,j,bi,bj)=UICE(i,j,1,bi,bj)
60 ENDDO
61 ENDDO
62 ENDDO
63 ENDDO
64 _BARRIER
65 _BEGIN_MASTER( myThid )
66 CALL WRITE_FLD_XY_RS( 'UICE.',suff,arr,myIter,myThid)
67 _END_MASTER( myThid )
68 _BARRIER
69
70 DO bj=myByLo(myThid),myByHi(myThid)
71 DO bi=myBxLo(myThid),myBxHi(myThid)
72 DO j=1,sNy
73 DO i=1,sNx
74 arr(i,j,bi,bj)=VICE(i,j,1,bi,bj)
75 ENDDO
76 ENDDO
77 ENDDO
78 ENDDO
79 _BARRIER
80 _BEGIN_MASTER( myThid )
81 CALL WRITE_FLD_XY_RS( 'VICE.',suff,arr,myIter,myThid)
82 _END_MASTER( myThid )
83 _BARRIER
84
85 DO bj=myByLo(myThid),myByHi(myThid)
86 DO bi=myBxLo(myThid),myBxHi(myThid)
87 DO j=1,sNy
88 DO i=1,sNx
89 arr(i,j,bi,bj)=HEFF(i,j,1,bi,bj)
90 ENDDO
91 ENDDO
92 ENDDO
93 ENDDO
94 _BARRIER
95 _BEGIN_MASTER( myThid )
96 CALL WRITE_FLD_XY_RS( 'HEFF.',suff,arr,myIter,myThid)
97 _END_MASTER( myThid )
98 _BARRIER
99
100 DO bj=myByLo(myThid),myByHi(myThid)
101 DO bi=myBxLo(myThid),myBxHi(myThid)
102 DO j=1,sNy
103 DO i=1,sNx
104 arr(i,j,bi,bj)=AREA(i,j,1,bi,bj)
105 ENDDO
106 ENDDO
107 ENDDO
108 ENDDO
109 _BARRIER
110 _BEGIN_MASTER( myThid )
111 CALL WRITE_FLD_XY_RS( 'AREA.',suff,arr,myIter,myThid)
112 _END_MASTER( myThid )
113 _BARRIER
114
115 #ifdef SEAICE_DEBUG
116 c CALL PLOT_FIELD_XYRS( uwind ,'Current uwind ' , myIter, myThid )
117 c CALL PLOT_FIELD_XYRS( vwind ,'Current vwind ' , myIter, myThid )
118 c CALL PLOT_FIELD_XYRS( atemp ,'Current atemp ' , myIter, myThid )
119 c CALL PLOT_FIELD_XYRS( aqh ,'Current aqh ' , myIter, myThid )
120 c CALL PLOT_FIELD_XYRS( lwflux,'Current lwflux ', myIter, myThid )
121 c CALL PLOT_FIELD_XYRS( swflux,'Current swflux ', myIter, myThid )
122 CALL PLOT_FIELD_XYRL( fu ,'Current fu ' , myIter, myThid )
123 CALL PLOT_FIELD_XYRL( fv ,'Current fv ' , myIter, myThid )
124 CALL PLOT_FIELD_XYRL( Qnet ,'Current Qnet ' , myIter, myThid )
125 #endif SEAICE_DEBUG
126
127 ENDIF
128 ENDIF
129
130 C----------------------------------------------------------------
131 C Do SEAICE time averaging.
132 C----------------------------------------------------------------
133
134 #ifdef ALLOW_TIMEAVE
135
136 C-- Time-cumulations
137 DO bj = myByLo(myThid), myByHi(myThid)
138 DO bi = myBxLo(myThid), myBxHi(myThid)
139 DO j=1,sNy
140 DO i=1,sNx
141 FUtave(i,j,1,bi,bj) =
142 & FUtave(i,j,1,bi,bj) +FU(i,j,bi,bj) *deltaTclock
143 FVtave(i,j,1,bi,bj) =
144 & FVtave(i,j,1,bi,bj) +FV(i,j,bi,bj) *deltaTclock
145 EmPmRtave(i,j,1,bi,bj)=
146 & EmPmRtave(i,j,1,bi,bj)+EmPmR(i,j,bi,bj) *deltaTclock
147 QNETtave(i,j,1,bi,bj) =
148 & QNETtave(i,j,1,bi,bj) +QNET(i,j,bi,bj) *deltaTclock
149 QSWtave(i,j,1,bi,bj) =
150 & QSWtave(i,j,1,bi,bj) +QSW(i,j,bi,bj) *deltaTclock
151 UICEtave(i,j,1,bi,bj) =
152 & UICEtave(i,j,1,bi,bj) +UICE(i,j,1,bi,bj)*deltaTclock
153 VICEtave(i,j,1,bi,bj) =
154 & VICEtave(i,j,1,bi,bj) +VICE(i,j,1,bi,bj)*deltaTclock
155 HEFFtave(i,j,1,bi,bj) =
156 & HEFFtave(i,j,1,bi,bj) +HEFF(i,j,1,bi,bj)*deltaTclock
157 AREAtave(i,j,1,bi,bj) =
158 & AREAtave(i,j,1,bi,bj) +AREA(i,j,1,bi,bj)*deltaTclock
159 ENDDO
160 ENDDO
161 DO k=1,Nr
162 SEAICE_TimeAve(k,bi,bj)=SEAICE_TimeAve(k,bi,bj)+deltaTclock
163 ENDDO
164 ENDDO
165 ENDDO
166
167 C Dump files and restart average computation if needed
168 IF ( myIter.NE.nIter0 .AND.
169 & DIFFERENT_MULTIPLE(SEAICE_taveFreq,myTime,myTime-deltaTClock)
170 & ) THEN
171
172 C Normalize by integrated time
173 DO bj = myByLo(myThid), myByHi(myThid)
174 DO bi = myBxLo(myThid), myBxHi(myThid)
175 CALL TIMEAVE_NORMALIZ(FUtave ,SEAICE_timeave, 1,
176 & bi,bj,myThid)
177 CALL TIMEAVE_NORMALIZ(FVtave ,SEAICE_timeave, 1,
178 & bi,bj,myThid)
179 CALL TIMEAVE_NORMALIZ(EmPmRtave,SEAICE_timeave, 1,
180 & bi,bj,myThid)
181 CALL TIMEAVE_NORMALIZ(QNETtave ,SEAICE_timeave, 1,
182 & bi,bj,myThid)
183 CALL TIMEAVE_NORMALIZ(QSWtave ,SEAICE_timeave, 1,
184 & bi,bj,myThid)
185 CALL TIMEAVE_NORMALIZ(UICEtave ,SEAICE_timeave, 1,
186 & bi,bj,myThid)
187 CALL TIMEAVE_NORMALIZ(VICEtave ,SEAICE_timeave, 1,
188 & bi,bj,myThid)
189 CALL TIMEAVE_NORMALIZ(HEFFtave ,SEAICE_timeave, 1,
190 & bi,bj,myThid)
191 CALL TIMEAVE_NORMALIZ(AREAtave ,SEAICE_timeave, 1,
192 & bi,bj,myThid)
193 ENDDO
194 ENDDO
195
196 WRITE(suff,'(I10.10)') myIter
197
198 CALL WRITE_FLD_XY_RL('FUtave.' ,suff,FUtave ,myIter,myThid)
199 CALL WRITE_FLD_XY_RL('FVtave.' ,suff,FVtave ,myIter,myThid)
200 CALL WRITE_FLD_XY_RL('EmPmRtave.',suff,EmPmRtave,myIter,myThid)
201 CALL WRITE_FLD_XY_RL('QNETtave.' ,suff,QNETtave ,myIter,myThid)
202 CALL WRITE_FLD_XY_RL('QSWtave.' ,suff,QSWtave ,myIter,myThid)
203 CALL WRITE_FLD_XY_RL('UICEtave.' ,suff,UICEtave ,myIter,myThid)
204 CALL WRITE_FLD_XY_RL('VICEtave.' ,suff,VICEtave ,myIter,myThid)
205 CALL WRITE_FLD_XY_RL('HEFFtave.' ,suff,HEFFtave ,myIter,myThid)
206 CALL WRITE_FLD_XY_RL('AREAtave.' ,suff,AREAtave ,myIter,myThid)
207
208 C Reset averages to zero
209 DO bj = myByLo(myThid), myByHi(myThid)
210 DO bi = myBxLo(myThid), myBxHi(myThid)
211 CALL TIMEAVE_RESET(FUtave ,1,bi,bj,myThid)
212 CALL TIMEAVE_RESET(FVtave ,1,bi,bj,myThid)
213 CALL TIMEAVE_RESET(EmPmRtave,1,bi,bj,myThid)
214 CALL TIMEAVE_RESET(QNETtave ,1,bi,bj,myThid)
215 CALL TIMEAVE_RESET(QSWtave ,1,bi,bj,myThid)
216 CALL TIMEAVE_RESET(UICEtave ,1,bi,bj,myThid)
217 CALL TIMEAVE_RESET(VICEtave ,1,bi,bj,myThid)
218 CALL TIMEAVE_RESET(HEFFtave ,1,bi,bj,myThid)
219 CALL TIMEAVE_RESET(AREAtave ,1,bi,bj,myThid)
220 DO k=1,Nr
221 SEAICE_TimeAve(k,bi,bj)=ZERO
222 ENDDO
223 ENDDO
224 ENDDO
225
226 ENDIF
227
228 #endif /* ALLOW_TIMEAVE */
229
230 #endif ALLOW_SEAICE
231
232 RETURN
233 END

  ViewVC Help
Powered by ViewVC 1.1.22