/[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.5 - (hide annotations) (download)
Thu Sep 29 12:19:52 2005 UTC (18 years, 7 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint58l_post, checkpoint57t_post, checkpoint58e_post, mitgcm_mapl_00, checkpoint58u_post, checkpoint58w_post, checkpoint60, checkpoint61, checkpoint62, checkpoint58r_post, checkpoint57y_post, checkpoint58n_post, checkpoint58x_post, checkpoint58t_post, checkpoint58h_post, checkpoint57y_pre, checkpoint58q_post, checkpoint57v_post, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint58j_post, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint59j, checkpoint59, checkpoint58, checkpoint58f_post, checkpoint57x_post, checkpoint58d_post, checkpoint58c_post, checkpoint57w_post, checkpint57u_post, checkpoint58a_post, checkpoint58i_post, checkpoint58g_post, checkpoint58o_post, checkpoint57z_post, checkpoint58y_post, checkpoint58k_post, checkpoint58v_post, checkpoint58s_post, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint58p_post, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y, checkpoint58b_post, checkpoint58m_post
Changes since 1.4: +17 -11 lines
 o make mnc honor the writeBinaryPrec flag for all the non-pickup and
   non-diagnostics output types

1 edhill 1.5 C $Header: /u/gcmpack/MITgcm/pkg/gmredi/gmredi_output.F,v 1.4 2005/07/29 18:24:35 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     C !LOCAL VARIABLES:
43     C == Local variables ==
44 jmc 1.3 LOGICAL DIFFERENT_MULTIPLE
45     EXTERNAL DIFFERENT_MULTIPLE
46 jmc 1.1 INTEGER bi, bj, K
47     CHARACTER*(MAX_LEN_MBUF) suff
48 edhill 1.5 CHARACTER*(1) pf
49 jmc 1.1
50 edhill 1.5 IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
51     pf(1:1) = 'D'
52     ELSE
53     pf(1:1) = 'R'
54     ENDIF
55 jmc 1.1
56     #if ( defined (GM_NON_UNITY_DIAGONAL) || defined (GM_EXTRA_DIAGONAL) )
57    
58 jmc 1.3 IF ( DIFFERENT_MULTIPLE(diagFreq,myTime,deltaTClock)
59 jmc 1.1 & ) 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     CALL MNC_CW_SET_UDIM('gm_inst', -1, myThid)
78     CALL MNC_CW_RL_W_S('D','gm_inst',0,0,'T',myTime,myThid)
79     CALL MNC_CW_SET_UDIM('gm_inst', 0, myThid)
80     CALL MNC_CW_I_W_S('I','gm_inst',0,0,'iter',myIter,myThid)
81 jmc 1.1 #ifdef GM_NON_UNITY_DIAGONAL
82 edhill 1.5 CALL MNC_CW_RL_W(pf,'gm_inst',0,0,'Kux',Kux,myThid)
83     CALL MNC_CW_RL_W(pf,'gm_inst',0,0,'Kvy',Kvy,myThid)
84 jmc 1.1 #endif
85     #ifdef GM_EXTRA_DIAGONAL
86 edhill 1.4 IF (GM_ExtraDiag) THEN
87 edhill 1.5 CALL MNC_CW_RL_W(pf,'gm_inst',0,0,'Kuz',Kuz,myThid)
88     CALL MNC_CW_RL_W(pf,'gm_inst',0,0,'Kvz',Kvz,myThid)
89 edhill 1.4 ENDIF
90     #endif
91     ENDIF
92 jmc 1.1 #endif
93 edhill 1.4
94 jmc 1.1 ENDIF
95    
96     #endif /* GM_NON_UNITY_DIAGONAL || GM_EXTRA_DIAGONAL */
97    
98    
99     #ifdef ALLOW_TIMEAVE
100    
101     C Dump files and restart average computation if needed
102 jmc 1.3 IF ( DIFFERENT_MULTIPLE(taveFreq,myTime,deltaTClock)
103 jmc 1.1 & ) THEN
104    
105     C Normalize by integrated time
106     DO bj = myByLo(myThid), myByHi(myThid)
107     DO bi = myBxLo(myThid), myBxHi(myThid)
108     CALL TIMEAVE_NORMALIZ(GM_Kwx_T,GM_timeave, Nr,
109     & bi,bj,myThid)
110     CALL TIMEAVE_NORMALIZ(GM_Kwy_T,GM_timeave, Nr,
111     & bi,bj,myThid)
112     CALL TIMEAVE_NORMALIZ(GM_Kwz_T,GM_timeave, Nr,
113     & bi,bj,myThid)
114     #ifdef GM_VISBECK_VARIABLE_K
115     IF (GM_Visbeck_alpha.NE.0.)
116     & CALL TIMEAVE_NORMALIZ(Visbeck_K_T,GM_timeave, 1,
117     & bi,bj,myThid)
118     #endif
119     #ifdef GM_BOLUS_ADVEC
120     IF (GM_AdvForm) THEN
121     CALL TIMEAVE_NORMALIZ(GM_PsiXtave,GM_timeave, Nr,
122     & bi,bj,myThid)
123     CALL TIMEAVE_NORMALIZ(GM_PsiYtave,GM_timeave, Nr,
124     & bi,bj,myThid)
125     ENDIF
126     #endif
127     ENDDO
128     ENDDO
129    
130 edhill 1.4 IF ( GM_MDSIO ) THEN
131     WRITE(suff,'(I10.10)') myIter
132     CALL WRITE_FLD_XYZ_RL('GM_Kwx-T.',suff,GM_Kwx_T,myIter,myThid)
133     CALL WRITE_FLD_XYZ_RL('GM_Kwy-T.',suff,GM_Kwy_T,myIter,myThid)
134     CALL WRITE_FLD_XYZ_RL('GM_Kwz-T.',suff,GM_Kwz_T,myIter,myThid)
135     #ifdef GM_VISBECK_VARIABLE_K
136     IF (GM_Visbeck_alpha.NE.0.)
137     & CALL WRITE_FLD_XY_RL('Visbeck_K-T.',suff,Visbeck_K_T,
138     & myIter,myThid)
139     #endif
140     #ifdef GM_BOLUS_ADVEC
141     IF (GM_AdvForm) THEN
142     CALL WRITE_FLD_XYZ_RL('GM_PsiXtave.',suff,GM_PsiXtave,
143     & myIter,myThid)
144     CALL WRITE_FLD_XYZ_RL('GM_PsiYtave.',suff,GM_PsiYtave,
145     & myIter,myThid)
146     ENDIF
147     #endif
148     ENDIF
149    
150     #ifdef ALLOW_MNC
151     IF ( GM_MNC ) THEN
152     CALL MNC_CW_SET_UDIM('gm_tave', -1, myThid)
153     CALL MNC_CW_RL_W_S('D','gm_tave',0,0,'T',myTime,myThid)
154     CALL MNC_CW_SET_UDIM('gm_tave', 0, myThid)
155     CALL MNC_CW_I_W_S('I','gm_tave',0,0,'iter',myIter,myThid)
156 edhill 1.5 CALL MNC_CW_RL_W(pf,'gm_tave',0,0,'Kwx',GM_Kwx_T,myThid)
157     CALL MNC_CW_RL_W(pf,'gm_tave',0,0,'Kwy',GM_Kwy_T,myThid)
158     CALL MNC_CW_RL_W(pf,'gm_tave',0,0,'Kwz',GM_Kwz_T,myThid)
159 jmc 1.1 #ifdef GM_VISBECK_VARIABLE_K
160 edhill 1.4 IF (GM_Visbeck_alpha.NE.0.) THEN
161 edhill 1.5 CALL MNC_CW_RL_W(pf,'gm_tave',0,0,'VisbK',
162 edhill 1.4 & Visbeck_K_T, myThid)
163     ENDIF
164 jmc 1.1 #endif
165     #ifdef GM_BOLUS_ADVEC
166 edhill 1.4 IF (GM_AdvForm) THEN
167     CALL MNC_CW_RL_W(
168 edhill 1.5 & pf,'gm_tave',0,0,'PsiX', GM_PsiXtave, myThid)
169 edhill 1.4 CALL MNC_CW_RL_W(
170 edhill 1.5 & pf,'gm_tave',0,0,'PsiY', GM_PsiYtave, myThid)
171 edhill 1.4 ENDIF
172     #endif
173 jmc 1.1 ENDIF
174     #endif
175    
176     C Reset averages to zero
177     DO bj = myByLo(myThid), myByHi(myThid)
178     DO bi = myBxLo(myThid), myBxHi(myThid)
179     CALL TIMEAVE_RESET(GM_Kwx_T,Nr,bi,bj,myThid)
180     CALL TIMEAVE_RESET(GM_Kwy_T,Nr,bi,bj,myThid)
181     CALL TIMEAVE_RESET(GM_Kwz_T,Nr,bi,bj,myThid)
182     #ifdef GM_VISBECK_VARIABLE_K
183     IF (GM_Visbeck_alpha.NE.0.)
184     & CALL TIMEAVE_RESET(Visbeck_K_T,1,bi,bj,myThid)
185     #endif
186     #ifdef GM_BOLUS_ADVEC
187     IF (GM_AdvForm) THEN
188     CALL TIMEAVE_RESET(GM_PsiXtave,Nr,bi,bj,myThid)
189     CALL TIMEAVE_RESET(GM_PsiYtave,Nr,bi,bj,myThid)
190     ENDIF
191     #endif
192     DO k=1,Nr
193     GM_TimeAve(k,bi,bj)=0.
194     ENDDO
195     ENDDO
196     ENDDO
197    
198     ENDIF
199    
200     #endif /* ALLOW_TIMEAVE */
201    
202     #endif /* ALLOW_GMREDI */
203    
204     RETURN
205     END

  ViewVC Help
Powered by ViewVC 1.1.22