/[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.4 - (hide 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 edhill 1.4 C $Header: /u/gcmpack/MITgcm/pkg/gmredi/gmredi_output.F,v 1.3 2005/05/15 03:04:56 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     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    
49    
50     #if ( defined (GM_NON_UNITY_DIAGONAL) || defined (GM_EXTRA_DIAGONAL) )
51    
52 jmc 1.3 IF ( DIFFERENT_MULTIPLE(diagFreq,myTime,deltaTClock)
53 jmc 1.1 & ) THEN
54 edhill 1.4
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 jmc 1.1 #ifdef GM_NON_UNITY_DIAGONAL
76 edhill 1.4 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 jmc 1.1 #endif
79     #ifdef GM_EXTRA_DIAGONAL
80 edhill 1.4 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 jmc 1.1 #endif
87 edhill 1.4
88 jmc 1.1 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 jmc 1.3 IF ( DIFFERENT_MULTIPLE(taveFreq,myTime,deltaTClock)
97 jmc 1.1 & ) 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 edhill 1.4 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 jmc 1.1 #ifdef GM_VISBECK_VARIABLE_K
154 edhill 1.4 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 jmc 1.1 #endif
159     #ifdef GM_BOLUS_ADVEC
160 edhill 1.4 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 jmc 1.1 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