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

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

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


Revision 1.4 - (hide 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 heimbach 1.2 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 dimitri 1.4 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 heimbach 1.2 #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 dimitri 1.3 SEAICE_TimeAve(k,bi,bj)=ZERO
222 heimbach 1.2 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