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

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

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


Revision 1.4 - (show annotations) (download)
Fri Jul 29 18:24:35 2005 UTC (18 years, 10 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint57o_post, checkpoint57s_post, checkpoint57r_post, checkpoint57p_post, checkpoint57q_post
Changes since 1.3: +71 -21 lines
 o MNC-ify the gmredi package -- tested and works w/ and w/o mnc
   for ideal_2D_oce and lab_sea on linux_ia32_g77

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

  ViewVC Help
Powered by ViewVC 1.1.22