/[MITgcm]/MITgcm/pkg/gmredi/gmredi_output.F
ViewVC logotype

Annotation of /MITgcm/pkg/gmredi/gmredi_output.F

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


Revision 1.6 - (hide annotations) (download)
Sat Jan 2 23:10:47 2010 UTC (14 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62a
Changes since 1.5: +52 -46 lines
time-ave: use simpler (no level index) cumulative-time counter: GM_timeAve(bi,bj)

1 jmc 1.6 C $Header: /u/gcmpack/MITgcm/pkg/gmredi/gmredi_output.F,v 1.5 2005/09/29 12:19:52 edhill Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "GMREDI_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: GMREDI_OUTPUT
8    
9     C !INTERFACE:
10     SUBROUTINE GMREDI_OUTPUT( myTime, myIter, myThid )
11    
12     C !DESCRIPTION: \bv
13     C *==========================================================*
14     C | SUBROUTINE GMREDI_OUTPUT
15     C | o general routine for GM/Redi output
16     C *==========================================================*
17     C | write time-average & snap-shot output
18     C *==========================================================*
19     C \ev
20    
21     C !USES:
22     IMPLICIT NONE
23    
24     C === Global variables ===
25     #include "SIZE.h"
26     #include "EEPARAMS.h"
27     #include "PARAMS.h"
28     #include "GMREDI.h"
29     #include "GMREDI_TAVE.h"
30    
31     C !INPUT PARAMETERS:
32     C == Routine arguments ==
33     C myTime :: Current time of simulation ( s )
34     C myIter :: Iteration number
35     C myThid :: my Thread Id number
36     _RL myTime
37     INTEGER myIter
38     INTEGER myThid
39     CEOP
40    
41     #ifdef ALLOW_GMREDI
42 jmc 1.6 C !FUNCTIONS:
43     LOGICAL DIFFERENT_MULTIPLE
44     EXTERNAL DIFFERENT_MULTIPLE
45    
46 jmc 1.1 C !LOCAL VARIABLES:
47     C == Local variables ==
48     CHARACTER*(MAX_LEN_MBUF) suff
49 jmc 1.6 #ifdef ALLOW_TIMEAVE
50     INTEGER bi, bj
51     #endif
52     #ifdef ALLOW_MNC
53 edhill 1.5 CHARACTER*(1) pf
54 jmc 1.6 #endif
55 jmc 1.1
56 jmc 1.6 #if ( defined (GM_NON_UNITY_DIAGONAL) || defined (GM_EXTRA_DIAGONAL) )
57 jmc 1.1
58 jmc 1.3 IF ( DIFFERENT_MULTIPLE(diagFreq,myTime,deltaTClock)
59 jmc 1.6 & ) THEN
60 edhill 1.4
61     IF ( GM_MDSIO ) THEN
62     WRITE(suff,'(I10.10)') myIter
63     #ifdef GM_NON_UNITY_DIAGONAL
64     CALL WRITE_FLD_XYZ_RL( 'GM_Kux.',suff,Kux,myIter,myThid)
65     CALL WRITE_FLD_XYZ_RL( 'GM_Kvy.',suff,Kvy,myIter,myThid)
66     #endif
67     #ifdef GM_EXTRA_DIAGONAL
68     IF (GM_ExtraDiag) THEN
69     CALL WRITE_FLD_XYZ_RL( 'GM_Kuz.',suff,Kuz,myIter,myThid)
70     CALL WRITE_FLD_XYZ_RL( 'GM_Kvz.',suff,Kvz,myIter,myThid)
71     ENDIF
72     #endif
73     ENDIF
74    
75     #ifdef ALLOW_MNC
76     IF ( GM_MNC ) THEN
77 jmc 1.6 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
78     pf(1:1) = 'D'
79     ELSE
80     pf(1:1) = 'R'
81     ENDIF
82 edhill 1.4 CALL MNC_CW_SET_UDIM('gm_inst', -1, myThid)
83     CALL MNC_CW_RL_W_S('D','gm_inst',0,0,'T',myTime,myThid)
84     CALL MNC_CW_SET_UDIM('gm_inst', 0, myThid)
85     CALL MNC_CW_I_W_S('I','gm_inst',0,0,'iter',myIter,myThid)
86 jmc 1.1 #ifdef GM_NON_UNITY_DIAGONAL
87 edhill 1.5 CALL MNC_CW_RL_W(pf,'gm_inst',0,0,'Kux',Kux,myThid)
88     CALL MNC_CW_RL_W(pf,'gm_inst',0,0,'Kvy',Kvy,myThid)
89 jmc 1.1 #endif
90     #ifdef GM_EXTRA_DIAGONAL
91 edhill 1.4 IF (GM_ExtraDiag) THEN
92 edhill 1.5 CALL MNC_CW_RL_W(pf,'gm_inst',0,0,'Kuz',Kuz,myThid)
93     CALL MNC_CW_RL_W(pf,'gm_inst',0,0,'Kvz',Kvz,myThid)
94 jmc 1.6 ENDIF
95 edhill 1.4 #endif
96     ENDIF
97 jmc 1.1 #endif
98 edhill 1.4
99 jmc 1.6 ENDIF
100 jmc 1.1
101     #endif /* GM_NON_UNITY_DIAGONAL || GM_EXTRA_DIAGONAL */
102    
103    
104     #ifdef ALLOW_TIMEAVE
105     C Dump files and restart average computation if needed
106 jmc 1.6 IF ( DIFFERENT_MULTIPLE( taveFreq, myTime, deltaTClock )
107 jmc 1.1 & ) THEN
108 jmc 1.6
109 jmc 1.1 C Normalize by integrated time
110     DO bj = myByLo(myThid), myByHi(myThid)
111     DO bi = myBxLo(myThid), myBxHi(myThid)
112 jmc 1.6 CALL TIMEAVE_NORMALIZE( GM_Kwx_T, GM_timeAve,
113     & Nr, bi, bj, myThid )
114     CALL TIMEAVE_NORMALIZE( GM_Kwy_T, GM_timeAve,
115     & Nr, bi, bj, myThid )
116     CALL TIMEAVE_NORMALIZE( GM_Kwz_T, GM_timeAve,
117     & Nr, bi, bj, myThid )
118 jmc 1.1 #ifdef GM_VISBECK_VARIABLE_K
119     IF (GM_Visbeck_alpha.NE.0.)
120 jmc 1.6 & CALL TIMEAVE_NORMALIZE( Visbeck_K_T, GM_timeAve,
121     & 1 , bi, bj, myThid )
122 jmc 1.1 #endif
123     #ifdef GM_BOLUS_ADVEC
124     IF (GM_AdvForm) THEN
125 jmc 1.6 CALL TIMEAVE_NORMALIZE( GM_PsiXtave, GM_timeAve,
126     & Nr, bi, bj, myThid )
127     CALL TIMEAVE_NORMALIZE( GM_PsiYtave, GM_timeAve,
128     & Nr, bi, bj, myThid )
129 jmc 1.1 ENDIF
130     #endif
131     ENDDO
132     ENDDO
133 jmc 1.6
134 edhill 1.4 IF ( GM_MDSIO ) THEN
135     WRITE(suff,'(I10.10)') myIter
136     CALL WRITE_FLD_XYZ_RL('GM_Kwx-T.',suff,GM_Kwx_T,myIter,myThid)
137     CALL WRITE_FLD_XYZ_RL('GM_Kwy-T.',suff,GM_Kwy_T,myIter,myThid)
138     CALL WRITE_FLD_XYZ_RL('GM_Kwz-T.',suff,GM_Kwz_T,myIter,myThid)
139     #ifdef GM_VISBECK_VARIABLE_K
140     IF (GM_Visbeck_alpha.NE.0.)
141     & CALL WRITE_FLD_XY_RL('Visbeck_K-T.',suff,Visbeck_K_T,
142     & myIter,myThid)
143     #endif
144     #ifdef GM_BOLUS_ADVEC
145     IF (GM_AdvForm) THEN
146     CALL WRITE_FLD_XYZ_RL('GM_PsiXtave.',suff,GM_PsiXtave,
147     & myIter,myThid)
148     CALL WRITE_FLD_XYZ_RL('GM_PsiYtave.',suff,GM_PsiYtave,
149     & myIter,myThid)
150     ENDIF
151     #endif
152     ENDIF
153 jmc 1.6
154 edhill 1.4 #ifdef ALLOW_MNC
155     IF ( GM_MNC ) THEN
156 jmc 1.6 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
157     pf(1:1) = 'D'
158     ELSE
159     pf(1:1) = 'R'
160     ENDIF
161 edhill 1.4 CALL MNC_CW_SET_UDIM('gm_tave', -1, myThid)
162     CALL MNC_CW_RL_W_S('D','gm_tave',0,0,'T',myTime,myThid)
163     CALL MNC_CW_SET_UDIM('gm_tave', 0, myThid)
164     CALL MNC_CW_I_W_S('I','gm_tave',0,0,'iter',myIter,myThid)
165 edhill 1.5 CALL MNC_CW_RL_W(pf,'gm_tave',0,0,'Kwx',GM_Kwx_T,myThid)
166     CALL MNC_CW_RL_W(pf,'gm_tave',0,0,'Kwy',GM_Kwy_T,myThid)
167     CALL MNC_CW_RL_W(pf,'gm_tave',0,0,'Kwz',GM_Kwz_T,myThid)
168 jmc 1.1 #ifdef GM_VISBECK_VARIABLE_K
169 edhill 1.4 IF (GM_Visbeck_alpha.NE.0.) THEN
170 jmc 1.6 CALL MNC_CW_RL_W(pf,'gm_tave',0,0,'VisbK',
171 edhill 1.4 & Visbeck_K_T, myThid)
172     ENDIF
173 jmc 1.1 #endif
174     #ifdef GM_BOLUS_ADVEC
175 edhill 1.4 IF (GM_AdvForm) THEN
176     CALL MNC_CW_RL_W(
177 edhill 1.5 & pf,'gm_tave',0,0,'PsiX', GM_PsiXtave, myThid)
178 edhill 1.4 CALL MNC_CW_RL_W(
179 edhill 1.5 & pf,'gm_tave',0,0,'PsiY', GM_PsiYtave, myThid)
180 edhill 1.4 ENDIF
181     #endif
182 jmc 1.1 ENDIF
183     #endif
184 jmc 1.6
185 jmc 1.1 C Reset averages to zero
186     DO bj = myByLo(myThid), myByHi(myThid)
187     DO bi = myBxLo(myThid), myBxHi(myThid)
188 jmc 1.6 CALL TIMEAVE_RESET( GM_Kwx_T, Nr, bi, bj, myThid )
189     CALL TIMEAVE_RESET( GM_Kwy_T, Nr, bi, bj, myThid )
190     CALL TIMEAVE_RESET( GM_Kwz_T, Nr, bi, bj, myThid )
191 jmc 1.1 #ifdef GM_VISBECK_VARIABLE_K
192     IF (GM_Visbeck_alpha.NE.0.)
193 jmc 1.6 & CALL TIMEAVE_RESET( Visbeck_K_T, 1, bi, bj, myThid )
194 jmc 1.1 #endif
195     #ifdef GM_BOLUS_ADVEC
196     IF (GM_AdvForm) THEN
197 jmc 1.6 CALL TIMEAVE_RESET( GM_PsiXtave, Nr, bi, bj, myThid )
198     CALL TIMEAVE_RESET( GM_PsiYtave, Nr, bi, bj, myThid )
199 jmc 1.1 ENDIF
200     #endif
201 jmc 1.6 GM_timeAve(bi,bj) = 0.
202 jmc 1.1 ENDDO
203     ENDDO
204 jmc 1.6
205 jmc 1.1 ENDIF
206 jmc 1.6 #endif /* ALLOW_TIMEAVE */
207 jmc 1.1
208     #endif /* ALLOW_GMREDI */
209 jmc 1.6
210 jmc 1.1 RETURN
211     END

  ViewVC Help
Powered by ViewVC 1.1.22