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

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

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


Revision 1.9 - (hide annotations) (download)
Sat Jun 23 14:48:08 2007 UTC (16 years, 11 months ago) by heimbach
Branch: MAIN
Changes since 1.8: +48 -1 lines
Modifs to enable running exf and seaice as stand-alone
(monitor output tricked so testreport can probe results)

1 heimbach 1.9 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_monitor.F,v 1.8 2006/10/23 15:11:40 heimbach Exp $
2 dimitri 1.1 C $Name: $
3    
4     #include "SEAICE_OPTIONS.h"
5 heimbach 1.9 #ifdef ALLOW_EXF
6     # include "EXF_OPTIONS.h"
7     #endif
8 dimitri 1.1
9     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
10     CBOP
11     C !ROUTINE: SEAICE_MONITOR
12    
13     C !INTERFACE:
14     SUBROUTINE SEAICE_MONITOR(
15 jmc 1.4 I myTime, myIter, myThid )
16 dimitri 1.1
17     C !DESCRIPTION:
18     C Print some statistics about input forcing fields.
19    
20     C !USES:
21     IMPLICIT NONE
22     #include "SIZE.h"
23     #include "EEPARAMS.h"
24     #include "PARAMS.h"
25     #include "GRID.h"
26 jmc 1.5 #include "SEAICE_PARAMS.h"
27     #include "SEAICE.h"
28 dimitri 1.1 #ifdef ALLOW_MONITOR
29     # include "MONITOR.h"
30     #endif
31    
32     C !INPUT PARAMETERS:
33     INTEGER myIter
34     _RL myTime
35     INTEGER myThid
36     CEOP
37    
38     #ifdef ALLOW_MONITOR
39 jmc 1.6 C === Functions ====
40 jmc 1.4 LOGICAL DIFFERENT_MULTIPLE
41     EXTERNAL DIFFERENT_MULTIPLE
42 jmc 1.6 LOGICAL MASTER_CPU_IO
43     EXTERNAL MASTER_CPU_IO
44 jmc 1.4
45     C == Local variables ==
46     CHARACTER*(MAX_LEN_MBUF) msgBuf
47 dimitri 1.1 INTEGER i,j,bi,bj
48     _RL TMP_DIAG (1-OLx:sNx+OLx,1-OLy:sNy+OLy, nSx,nSy)
49    
50 jmc 1.5 IF ( DIFFERENT_MULTIPLE(SEAICE_monFreq,myTime,deltaTClock)
51 jmc 1.4 & ) THEN
52    
53 jmc 1.6 IF ( MASTER_CPU_IO(myThid) ) THEN
54 jmc 1.5 C-- only the master thread is allowed to switch On/Off mon_write_stdout
55     C & mon_write_mnc (since it's the only thread that uses those flags):
56    
57     IF (SEAICE_mon_stdio) THEN
58     mon_write_stdout = .TRUE.
59     ELSE
60     mon_write_stdout = .FALSE.
61     ENDIF
62     mon_write_mnc = .FALSE.
63 jmc 1.4 #ifdef ALLOW_MNC
64 jmc 1.5 IF (useMNC .AND. SEAICE_mon_mnc) THEN
65     DO i = 1,MAX_LEN_MBUF
66     mon_fname(i:i) = ' '
67     ENDDO
68     mon_fname(1:14) = 'monitor_seaice'
69     CALL MNC_CW_APPEND_VNAME(
70     & 'T', '-_-_--__-__t', 0,0, myThid)
71     CALL MNC_CW_SET_UDIM(mon_fname, -1, myThid)
72     CALL MNC_CW_I_W_S(
73     & 'I',mon_fname,1,1,'T', myIter, myThid)
74     CALL MNC_CW_SET_UDIM(mon_fname, 0, myThid)
75     mon_write_mnc = .TRUE.
76     ENDIF
77 jmc 1.4 #endif /* ALLOW_MNC */
78    
79 jmc 1.5 IF ( mon_write_stdout ) THEN
80     WRITE(msgBuf,'(2A)') '// ===========================',
81     & '============================'
82     CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
83     WRITE(msgBuf,'(A)') '// Begin MONITOR SEAICE statistics'
84     CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
85     WRITE(msgBuf,'(2A)') '// ===========================',
86     & '============================'
87     CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
88     ENDIF
89    
90 jmc 1.6 C-- endif master cpu io
91 jmc 1.5 ENDIF
92 jmc 1.4
93     CALL MON_SET_PREF('seaice',myThid)
94     CALL MON_OUT_I ('_tsnumber', myIter,mon_string_none,myThid)
95     CALL MON_OUT_RL('_time_sec', myTime,mon_string_none,myThid)
96    
97 dimitri 1.1 C Print some statistics about input forcing fields
98     DO bj=myByLo(myThid),myByHi(myThid)
99     DO bi=myBxLo(myThid),myBxHi(myThid)
100     DO J=1-OLy,sNy+OLy
101     DO I=1-OLx,sNx+OLx
102     TMP_DIAG(i,j,bi,bj)=UICE(i,j,1,bi,bj)
103     ENDDO
104     ENDDO
105     ENDDO
106     ENDDO
107 mlosch 1.3 #ifdef SEAICE_CGRID
108     CALL MON_PRINTSTATS_RL(1,TMP_DIAG,'_uice',
109     & maskW,maskW,rAw,drF,myThid)
110     #else
111 dimitri 1.1 CALL MON_PRINTSTATS_RL(1,TMP_DIAG,'_uice',
112     & UVM,UVM,rAz,drF,myThid)
113 mlosch 1.3 #endif
114 dimitri 1.1 DO bj=myByLo(myThid),myByHi(myThid)
115     DO bi=myBxLo(myThid),myBxHi(myThid)
116     DO J=1-OLy,sNy+OLy
117     DO I=1-OLx,sNx+OLx
118     TMP_DIAG(i,j,bi,bj)=VICE(i,j,1,bi,bj)
119     ENDDO
120     ENDDO
121     ENDDO
122     ENDDO
123 mlosch 1.3 #ifdef SEAICE_CGRID
124     CALL MON_PRINTSTATS_RL(1,TMP_DIAG,'_vice',
125     & maskS,maskS,rAs,drF,myThid)
126     #else
127 dimitri 1.1 CALL MON_PRINTSTATS_RL(1,TMP_DIAG,'_vice',
128     & UVM,UVM,rAz,drF,myThid)
129 mlosch 1.3 #endif
130 dimitri 1.1 DO bj=myByLo(myThid),myByHi(myThid)
131     DO bi=myBxLo(myThid),myBxHi(myThid)
132     DO J=1-OLy,sNy+OLy
133     DO I=1-OLx,sNx+OLx
134     TMP_DIAG(i,j,bi,bj)=AREA(i,j,1,bi,bj)
135     ENDDO
136     ENDDO
137     ENDDO
138     ENDDO
139     CALL MON_PRINTSTATS_RL(1,TMP_DIAG,'_area',
140     & maskH,maskH,rA ,drF,myThid)
141     DO bj=myByLo(myThid),myByHi(myThid)
142     DO bi=myBxLo(myThid),myBxHi(myThid)
143     DO J=1-OLy,sNy+OLy
144     DO I=1-OLx,sNx+OLx
145     TMP_DIAG(i,j,bi,bj)=HEFF(i,j,1,bi,bj)
146     ENDDO
147     ENDDO
148     ENDDO
149     ENDDO
150     CALL MON_PRINTSTATS_RL(1,TMP_DIAG,'_heff',
151     & maskH,maskH,rA ,drF,myThid)
152 heimbach 1.8 DO bj=myByLo(myThid),myByHi(myThid)
153     DO bi=myBxLo(myThid),myBxHi(myThid)
154     DO J=1-OLy,sNy+OLy
155     DO I=1-OLx,sNx+OLx
156     TMP_DIAG(i,j,bi,bj)=HSNOW(i,j,bi,bj)
157     ENDDO
158     ENDDO
159     ENDDO
160     ENDDO
161     CALL MON_PRINTSTATS_RL(1,TMP_DIAG,'_hsnow',
162     & maskH,maskH,rA ,drF,myThid)
163 jmc 1.4
164 heimbach 1.9 #ifdef ALLOW_BULK_OFFLINE
165     c-- Trick monitor output for testreport
166     C-- by writing some statistics into dynstat fields
167     c-- which are tested by testreport
168     CALL MON_SET_PREF('dynstat',myThid)
169     c--
170     DO bj=myByLo(myThid),myByHi(myThid)
171     DO bi=myBxLo(myThid),myBxHi(myThid)
172     DO J=1-OLy,sNy+OLy
173     DO I=1-OLx,sNx+OLx
174     TMP_DIAG(i,j,bi,bj)=AREA(i,j,1,bi,bj)
175     ENDDO
176     ENDDO
177     ENDDO
178     ENDDO
179     CALL MON_PRINTSTATS_RL(1,TMP_DIAG,'_theta',
180     & maskH,maskH,rA ,drF,myThid)
181     DO bj=myByLo(myThid),myByHi(myThid)
182     DO bi=myBxLo(myThid),myBxHi(myThid)
183     DO J=1-OLy,sNy+OLy
184     DO I=1-OLx,sNx+OLx
185     TMP_DIAG(i,j,bi,bj)=HEFF(i,j,1,bi,bj)
186     ENDDO
187     ENDDO
188     ENDDO
189     ENDDO
190     CALL MON_PRINTSTATS_RL(1,TMP_DIAG,'_salt',
191     & maskH,maskH,rA ,drF,myThid)
192     DO bj=myByLo(myThid),myByHi(myThid)
193     DO bi=myBxLo(myThid),myBxHi(myThid)
194     DO J=1-OLy,sNy+OLy
195     DO I=1-OLx,sNx+OLx
196     TMP_DIAG(i,j,bi,bj)=HSNOW(i,j,bi,bj)
197     ENDDO
198     ENDDO
199     ENDDO
200     ENDDO
201     CALL MON_PRINTSTATS_RL(1,TMP_DIAG,'_wvel',
202     & maskH,maskH,rA ,drF,myThid)
203     c--
204     CALL MON_SET_PREF('seaice',myThid)
205     #endif /* ALLOW_BULK_OFFLINE */
206    
207    
208 jmc 1.6 IF ( MASTER_CPU_IO(myThid) ) THEN
209 jmc 1.5 C-- only the master thread is allowed to switch On/Off mon_write_stdout
210     C & mon_write_mnc (since it's the only thread that uses those flags):
211    
212     IF ( mon_write_stdout ) THEN
213     WRITE(msgBuf,'(2A)') '// ===========================',
214     & '============================'
215     CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
216     WRITE(msgBuf,'(A)') '// End MONITOR SEAICE statistics'
217     CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
218     WRITE(msgBuf,'(2A)') '// ===========================',
219     & '============================'
220     CALL PRINT_MESSAGE(msgBuf, mon_ioUnit, SQUEEZE_RIGHT, 1)
221     ENDIF
222    
223     mon_write_stdout = .FALSE.
224     mon_write_mnc = .FALSE.
225    
226 jmc 1.6 C-- endif master cpu io
227 jmc 1.4 ENDIF
228    
229 jmc 1.5 C endif different multiple
230 jmc 1.4 ENDIF
231    
232 dimitri 1.1 #endif /* ALLOW_MONITOR */
233    
234     RETURN
235     END

  ViewVC Help
Powered by ViewVC 1.1.22