/[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.8 - (hide annotations) (download)
Fri Mar 24 23:38:56 2017 UTC (7 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, HEAD
Changes since 1.7: +12 -5 lines
use new S/R RW_GET_SUFFIX to get file suffix (according to "rwSuffixType")

1 jmc 1.8 C $Header: /u/gcmpack/MITgcm/pkg/gmredi/gmredi_output.F,v 1.7 2010/01/20 01:20:29 jmc 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 jmc 1.7 #if ( defined (ALLOW_TIMEAVE) || \
49     defined (GM_NON_UNITY_DIAGONAL) || defined (GM_EXTRA_DIAGONAL) )
50 jmc 1.8 CHARACTER*(10) suff
51 jmc 1.7 #endif
52 jmc 1.6 #ifdef ALLOW_TIMEAVE
53     INTEGER bi, bj
54     #endif
55     #ifdef ALLOW_MNC
56 edhill 1.5 CHARACTER*(1) pf
57 jmc 1.6 #endif
58 jmc 1.1
59 jmc 1.6 #if ( defined (GM_NON_UNITY_DIAGONAL) || defined (GM_EXTRA_DIAGONAL) )
60 jmc 1.1
61 jmc 1.3 IF ( DIFFERENT_MULTIPLE(diagFreq,myTime,deltaTClock)
62 jmc 1.6 & ) THEN
63 edhill 1.4
64     IF ( GM_MDSIO ) THEN
65 jmc 1.8 IF ( rwSuffixType.EQ.0 ) THEN
66     WRITE(suff,'(I10.10)') myIter
67     ELSE
68     CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
69     ENDIF
70 edhill 1.4 #ifdef GM_NON_UNITY_DIAGONAL
71     CALL WRITE_FLD_XYZ_RL( 'GM_Kux.',suff,Kux,myIter,myThid)
72     CALL WRITE_FLD_XYZ_RL( 'GM_Kvy.',suff,Kvy,myIter,myThid)
73     #endif
74     #ifdef GM_EXTRA_DIAGONAL
75     IF (GM_ExtraDiag) THEN
76     CALL WRITE_FLD_XYZ_RL( 'GM_Kuz.',suff,Kuz,myIter,myThid)
77     CALL WRITE_FLD_XYZ_RL( 'GM_Kvz.',suff,Kvz,myIter,myThid)
78     ENDIF
79     #endif
80     ENDIF
81    
82     #ifdef ALLOW_MNC
83     IF ( GM_MNC ) THEN
84 jmc 1.6 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
85     pf(1:1) = 'D'
86     ELSE
87     pf(1:1) = 'R'
88     ENDIF
89 edhill 1.4 CALL MNC_CW_SET_UDIM('gm_inst', -1, myThid)
90     CALL MNC_CW_RL_W_S('D','gm_inst',0,0,'T',myTime,myThid)
91     CALL MNC_CW_SET_UDIM('gm_inst', 0, myThid)
92     CALL MNC_CW_I_W_S('I','gm_inst',0,0,'iter',myIter,myThid)
93 jmc 1.1 #ifdef GM_NON_UNITY_DIAGONAL
94 edhill 1.5 CALL MNC_CW_RL_W(pf,'gm_inst',0,0,'Kux',Kux,myThid)
95     CALL MNC_CW_RL_W(pf,'gm_inst',0,0,'Kvy',Kvy,myThid)
96 jmc 1.1 #endif
97     #ifdef GM_EXTRA_DIAGONAL
98 edhill 1.4 IF (GM_ExtraDiag) THEN
99 edhill 1.5 CALL MNC_CW_RL_W(pf,'gm_inst',0,0,'Kuz',Kuz,myThid)
100     CALL MNC_CW_RL_W(pf,'gm_inst',0,0,'Kvz',Kvz,myThid)
101 jmc 1.6 ENDIF
102 edhill 1.4 #endif
103     ENDIF
104 jmc 1.1 #endif
105 edhill 1.4
106 jmc 1.6 ENDIF
107 jmc 1.1
108     #endif /* GM_NON_UNITY_DIAGONAL || GM_EXTRA_DIAGONAL */
109    
110     #ifdef ALLOW_TIMEAVE
111     C Dump files and restart average computation if needed
112 jmc 1.6 IF ( DIFFERENT_MULTIPLE( taveFreq, myTime, deltaTClock )
113 jmc 1.1 & ) THEN
114 jmc 1.6
115 jmc 1.1 C Normalize by integrated time
116     DO bj = myByLo(myThid), myByHi(myThid)
117     DO bi = myBxLo(myThid), myBxHi(myThid)
118 jmc 1.6 CALL TIMEAVE_NORMALIZE( GM_Kwx_T, GM_timeAve,
119     & Nr, bi, bj, myThid )
120     CALL TIMEAVE_NORMALIZE( GM_Kwy_T, GM_timeAve,
121     & Nr, bi, bj, myThid )
122     CALL TIMEAVE_NORMALIZE( GM_Kwz_T, GM_timeAve,
123     & Nr, bi, bj, myThid )
124 jmc 1.1 #ifdef GM_VISBECK_VARIABLE_K
125     IF (GM_Visbeck_alpha.NE.0.)
126 jmc 1.6 & CALL TIMEAVE_NORMALIZE( Visbeck_K_T, GM_timeAve,
127     & 1 , bi, bj, myThid )
128 jmc 1.1 #endif
129     #ifdef GM_BOLUS_ADVEC
130     IF (GM_AdvForm) THEN
131 jmc 1.6 CALL TIMEAVE_NORMALIZE( GM_PsiXtave, GM_timeAve,
132     & Nr, bi, bj, myThid )
133     CALL TIMEAVE_NORMALIZE( GM_PsiYtave, GM_timeAve,
134     & Nr, bi, bj, myThid )
135 jmc 1.1 ENDIF
136     #endif
137     ENDDO
138     ENDDO
139 jmc 1.6
140 edhill 1.4 IF ( GM_MDSIO ) THEN
141 jmc 1.8 IF ( rwSuffixType.EQ.0 ) THEN
142     WRITE(suff,'(I10.10)') myIter
143     ELSE
144     CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
145     ENDIF
146 edhill 1.4 CALL WRITE_FLD_XYZ_RL('GM_Kwx-T.',suff,GM_Kwx_T,myIter,myThid)
147     CALL WRITE_FLD_XYZ_RL('GM_Kwy-T.',suff,GM_Kwy_T,myIter,myThid)
148     CALL WRITE_FLD_XYZ_RL('GM_Kwz-T.',suff,GM_Kwz_T,myIter,myThid)
149     #ifdef GM_VISBECK_VARIABLE_K
150     IF (GM_Visbeck_alpha.NE.0.)
151     & CALL WRITE_FLD_XY_RL('Visbeck_K-T.',suff,Visbeck_K_T,
152     & myIter,myThid)
153     #endif
154     #ifdef GM_BOLUS_ADVEC
155     IF (GM_AdvForm) THEN
156     CALL WRITE_FLD_XYZ_RL('GM_PsiXtave.',suff,GM_PsiXtave,
157     & myIter,myThid)
158     CALL WRITE_FLD_XYZ_RL('GM_PsiYtave.',suff,GM_PsiYtave,
159     & myIter,myThid)
160     ENDIF
161     #endif
162     ENDIF
163 jmc 1.6
164 edhill 1.4 #ifdef ALLOW_MNC
165     IF ( GM_MNC ) THEN
166 jmc 1.6 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
167     pf(1:1) = 'D'
168     ELSE
169     pf(1:1) = 'R'
170     ENDIF
171 edhill 1.4 CALL MNC_CW_SET_UDIM('gm_tave', -1, myThid)
172     CALL MNC_CW_RL_W_S('D','gm_tave',0,0,'T',myTime,myThid)
173     CALL MNC_CW_SET_UDIM('gm_tave', 0, myThid)
174     CALL MNC_CW_I_W_S('I','gm_tave',0,0,'iter',myIter,myThid)
175 edhill 1.5 CALL MNC_CW_RL_W(pf,'gm_tave',0,0,'Kwx',GM_Kwx_T,myThid)
176     CALL MNC_CW_RL_W(pf,'gm_tave',0,0,'Kwy',GM_Kwy_T,myThid)
177     CALL MNC_CW_RL_W(pf,'gm_tave',0,0,'Kwz',GM_Kwz_T,myThid)
178 jmc 1.1 #ifdef GM_VISBECK_VARIABLE_K
179 edhill 1.4 IF (GM_Visbeck_alpha.NE.0.) THEN
180 jmc 1.6 CALL MNC_CW_RL_W(pf,'gm_tave',0,0,'VisbK',
181 edhill 1.4 & Visbeck_K_T, myThid)
182     ENDIF
183 jmc 1.1 #endif
184     #ifdef GM_BOLUS_ADVEC
185 edhill 1.4 IF (GM_AdvForm) THEN
186     CALL MNC_CW_RL_W(
187 edhill 1.5 & pf,'gm_tave',0,0,'PsiX', GM_PsiXtave, myThid)
188 edhill 1.4 CALL MNC_CW_RL_W(
189 edhill 1.5 & pf,'gm_tave',0,0,'PsiY', GM_PsiYtave, myThid)
190 edhill 1.4 ENDIF
191     #endif
192 jmc 1.1 ENDIF
193     #endif
194 jmc 1.6
195 jmc 1.1 C Reset averages to zero
196     DO bj = myByLo(myThid), myByHi(myThid)
197     DO bi = myBxLo(myThid), myBxHi(myThid)
198 jmc 1.6 CALL TIMEAVE_RESET( GM_Kwx_T, Nr, bi, bj, myThid )
199     CALL TIMEAVE_RESET( GM_Kwy_T, Nr, bi, bj, myThid )
200     CALL TIMEAVE_RESET( GM_Kwz_T, Nr, bi, bj, myThid )
201 jmc 1.1 #ifdef GM_VISBECK_VARIABLE_K
202     IF (GM_Visbeck_alpha.NE.0.)
203 jmc 1.6 & CALL TIMEAVE_RESET( Visbeck_K_T, 1, bi, bj, myThid )
204 jmc 1.1 #endif
205     #ifdef GM_BOLUS_ADVEC
206     IF (GM_AdvForm) THEN
207 jmc 1.6 CALL TIMEAVE_RESET( GM_PsiXtave, Nr, bi, bj, myThid )
208     CALL TIMEAVE_RESET( GM_PsiYtave, Nr, bi, bj, myThid )
209 jmc 1.1 ENDIF
210     #endif
211 jmc 1.6 GM_timeAve(bi,bj) = 0.
212 jmc 1.1 ENDDO
213     ENDDO
214 jmc 1.6
215 jmc 1.1 ENDIF
216 jmc 1.6 #endif /* ALLOW_TIMEAVE */
217 jmc 1.1
218     #endif /* ALLOW_GMREDI */
219 jmc 1.6
220 jmc 1.1 RETURN
221     END

  ViewVC Help
Powered by ViewVC 1.1.22