/[MITgcm]/MITgcm/pkg/layers/layers_output.F
ViewVC logotype

Diff of /MITgcm/pkg/layers/layers_output.F

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

revision 1.2 by rpa, Sun Sep 20 20:54:48 2009 UTC revision 1.11 by jmc, Thu Oct 18 19:51:14 2012 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "LAYERS_OPTIONS.h"  #include "LAYERS_OPTIONS.h"
5    
6    CBOP 0
7    C     !ROUTINE: LAYERS_OUTPUT
8    
9    C     !INTERFACE:
10        SUBROUTINE LAYERS_OUTPUT( myTime, myIter, myThid )        SUBROUTINE LAYERS_OUTPUT( myTime, myIter, myThid )
11    
12  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
# Line 35  C     myThid :: my Thread Id number Line 39  C     myThid :: my Thread Id number
39  CEOP  CEOP
40    
41  #ifdef ALLOW_LAYERS  #ifdef ALLOW_LAYERS
42    #ifdef ALLOW_TIMEAVE
43  C     !LOCAL VARIABLES:  C     !LOCAL VARIABLES:
44  C     == Local variables ==  C     == Local variables ==
45        LOGICAL  DIFFERENT_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
46        EXTERNAL DIFFERENT_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
       INTEGER bi, bj, K  
47        CHARACTER*(MAX_LEN_MBUF) suff        CHARACTER*(MAX_LEN_MBUF) suff
48        CHARACTER*(1) pf        INTEGER iLa
49          INTEGER bi, bj
50    
51        IF ( writeBinaryPrec .EQ. precFloat64 ) THEN  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
         pf(1:1) = 'D'  
       ELSE  
         pf(1:1) = 'R'  
       ENDIF  
52    
53        IF ( DIFFERENT_MULTIPLE(dumpFreq,myTime,deltaTClock)        IF ( layers_taveFreq.GT.0. ) THEN
54       &  .AND. myIter .GT. 0 ) THEN  cgf layers_maxNum loop and dimension would be needed for
55    cgf the following and tave output to work beyond iLa=1
56          IF ( layers_MDSIO ) THEN  c      DO iLa=1,layers_maxNum
57            WRITE(suff,'(I10.10)') myIter         iLa=1
58    
59    c set arrays to zero if first timestep
60           IF ( myIter.EQ.nIter0 ) THEN
61            DO bj = myByLo(myThid), myByHi(myThid)
62             DO bi = myBxLo(myThid), myBxHi(myThid)
63              layers_TimeAve(bi,bj) = 0.
64  #ifdef LAYERS_UFLUX  #ifdef LAYERS_UFLUX
65              CALL WRITE_FLD_XYG_RL(            CALL TIMEAVE_RESET(layers_UH_T,  Nlayers,bi,bj,myThid)
      &       'layers_UFlux.',suff,layers_UFlux,myIter,myThid)  
66  #ifdef LAYERS_THICKNESS  #ifdef LAYERS_THICKNESS
67              CALL WRITE_FLD_XYG_RL(            CALL TIMEAVE_RESET(layers_Hw_T, Nlayers,bi,bj,myThid)
68       &       'layers_HU.',suff,layers_HU,myIter,myThid)            CALL TIMEAVE_RESET(layers_PIw_T,Nlayers,bi,bj,myThid)
69              CALL TIMEAVE_RESET(layers_U_T,  Nlayers,bi,bj,myThid)
70  #endif /* LAYERS_THICKNESS */  #endif /* LAYERS_THICKNESS */
71  #endif /* LAYESR_UFLUX */  #endif /* LAYERS_UFLUX */
72    
73  #ifdef LAYERS_VFLUX  #ifdef LAYERS_VFLUX
74              CALL WRITE_FLD_XYG_RL(            CALL TIMEAVE_RESET(layers_VH_T, Nlayers,bi,bj,myThid)
      &       'layers_VFlux.',suff,layers_VFlux,myIter,myThid)  
75  #ifdef LAYERS_THICKNESS  #ifdef LAYERS_THICKNESS
76              CALL WRITE_FLD_XYG_RL(            CALL TIMEAVE_RESET(layers_Hs_T, Nlayers,bi,bj,myThid)
77       &       'layers_HV.',suff,layers_HV,myIter,myThid)            CALL TIMEAVE_RESET(layers_PIs_T,Nlayers,bi,bj,myThid)
78              CALL TIMEAVE_RESET(layers_V_T,  Nlayers,bi,bj,myThid)
79  #endif /* LAYERS_THICKNESS */  #endif /* LAYERS_THICKNESS */
80  #endif /* LAYESR_VFLUX */  #endif /* LAYERS_VFLUX */
           ENDIF  
         ENDIF  
   
 #ifdef ALLOW_MNC  
 #ifdef LAYERS_MNC  
         IF ( layers_MNC) THEN  
 C           Do MNC output...  
 C           But how?  
         ENDIF  
 #endif /* LAYERS_MNC */  
 #endif /* ALLOW_MNC */  
81    
82  #ifdef ALLOW_TIMEAVE  #ifdef LAYERS_PRHO_REF
83              CALL TIMEAVE_RESET(prho_tave,Nr,bi,bj,myThid)
84    #endif /* LAYERS_PRHO_REF */
85             ENDDO
86            ENDDO
87    
88  C     Dump files and restart average computation if needed  C     Dump files and restart average computation if needed
89        IF ( DIFFERENT_MULTIPLE(taveFreq,myTime,deltaTClock)         ELSEIF (
90       & .AND. myIter .GT. 0   ) THEN       &  DIFFERENT_MULTIPLE(layers_taveFreq,myTime,deltaTClock)
91         &        ) THEN
92    
93  C      Normalize by integrated time  C      Normalize by integrated time
94         DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
95          DO bi = myBxLo(myThid), myBxHi(myThid)           DO bi = myBxLo(myThid), myBxHi(myThid)
96    
97  #ifdef LAYERS_UFLUX  #ifdef LAYERS_UFLUX
98           CALL TIMEAVE_NORMALIZ(layers_UFlux_T,layers_timeave,Nlayers,            CALL TIMEAVE_NORMALIZE( layers_UH_T, layers_TimeAve,
99       &                 bi,bj,myThid)       &                            Nlayers, bi, bj, myThid )
100  #ifdef LAYERS_THICKNESS  #ifdef LAYERS_THICKNESS
101           CALL TIMEAVE_NORMALIZ(layers_HU_T,layers_timeave,Nlayers,            CALL TIMEAVE_NORMALIZE( layers_Hw_T, layers_TimeAve,
102       &                 bi,bj,myThid)       &                            Nlayers, bi, bj, myThid )
103  #endif /* LAYERS_THICKNESS */  #endif /* LAYERS_THICKNESS */
104  #endif /* LAYERS_UFLUX */  #endif /* LAYERS_UFLUX */
105    
106  #ifdef LAYERS_VFLUX  #ifdef LAYERS_VFLUX
107           CALL TIMEAVE_NORMALIZ(layers_VFlux_T,layers_timeave,Nlayers,            CALL TIMEAVE_NORMALIZE( layers_VH_T, layers_TimeAve,
108       &                 bi,bj,myThid)       &                            Nlayers, bi, bj, myThid )
109  #ifdef LAYERS_THICKNESS  #ifdef LAYERS_THICKNESS
110           CALL TIMEAVE_NORMALIZ(layers_HV_T,layers_timeave,Nlayers,            CALL TIMEAVE_NORMALIZE( layers_Hs_T, layers_TimeAve,
111       &                 bi,bj,myThid)       &                            Nlayers, bi, bj, myThid )
112  #endif /* LAYERS_THICKNESS */  #endif /* LAYERS_THICKNESS */
113  #endif /* LAYERS_VFLUX */  #endif /* LAYERS_VFLUX */
114    
115    #ifdef LAYERS_PRHO_REF
116              IF ( layers_num(1).EQ.3 )
117         &    CALL TIMEAVE_NORMALIZE( prho_tave, layers_TimeAve,
118         &                            Nr, bi, bj, myThid )
119    #endif /* LAYERS_PRHO_REF */
120    
121             ENDDO
122          ENDDO          ENDDO
        ENDDO  
123    
124         IF ( layers_MDSIO ) THEN          IF ( layers_MDSIO ) THEN
125           WRITE(suff,'(I10.10)') myIter           WRITE(suff,'(I10.10)') myIter
126  #ifdef LAYERS_UFLUX  #ifdef LAYERS_UFLUX
127           CALL WRITE_FLD_XYG_RL(           CALL WRITE_FLD_3D_RL( 'layers_UH-tave.', suff, Nlayers,
128       &    'layers_UFlux-tave.',suff,layers_UFlux_T,myIter,myThid)       &                          layers_UH_T, myIter, myThid )
129  #ifdef LAYERS_THICKNESS  #ifdef LAYERS_THICKNESS
130           CALL WRITE_FLD_XYG_RL(           CALL WRITE_FLD_3D_RL( 'layers_Hw-tave.', suff, Nlayers,
131       &    'layers_HU-tave.',suff,layers_HU_T,myIter,myThid)       &                          layers_Hw_T, myIter, myThid )
132  #endif /* LAYERS_THICKNESS */  #endif /* LAYERS_THICKNESS */
133  #endif /* LAYERS_UFLUX */  #endif /* LAYERS_UFLUX */
134  #ifdef LAYERS_VFLUX  #ifdef LAYERS_VFLUX
135           CALL WRITE_FLD_XYG_RL(           CALL WRITE_FLD_3D_RL( 'layers_VH-tave.', suff, Nlayers,
136       &    'layers_VFlux-tave.',suff,layers_VFlux_T,myIter,myThid)       &                          layers_VH_T, myIter, myThid )
137  #ifdef LAYERS_THICKNESS  #ifdef LAYERS_THICKNESS
138           CALL WRITE_FLD_XYG_RL(           CALL WRITE_FLD_3D_RL( 'layers_Hs-tave.', suff, Nlayers,
139       &    'layers_HV-tave.',suff,layers_HV_T,myIter,myThid)       &                          layers_Hs_T, myIter, myThid )
140  #endif /* LAYERS_THICKNESS */  #endif /* LAYERS_THICKNESS */
141  #endif /* LAYERS_VFLUX */  #endif /* LAYERS_VFLUX */
        ENDIF  
142    
143  #ifdef ALLOW_MNC  #ifdef LAYERS_PRHO_REF
144             IF ( layers_num(1).EQ.3 )
145         &   CALL WRITE_FLD_3D_RL( 'layers_prho-tave.', suff, Nr,
146         &                          prho_tave, myIter, myThid )
147    #endif /* LAYERS_PRHO_REF */
148    
149            ENDIF
150    
151    c#ifdef ALLOW_MNC
152  C     Do MNC output.  C     Do MNC output.
153  #endif  c#endif
154    
155  C      Reset averages to zero  C      Reset averages to zero
156         DO bj = myByLo(myThid), myByHi(myThid)          DO bj = myByLo(myThid), myByHi(myThid)
157          DO bi = myBxLo(myThid), myBxHi(myThid)           DO bi = myBxLo(myThid), myBxHi(myThid)
158              layers_TimeAve(bi,bj) = 0.
159  #ifdef LAYERS_UFLUX  #ifdef LAYERS_UFLUX
160            CALL TIMEAVE_RESET(layers_UFlux_T,Nlayers,bi,bj,myThid)            CALL TIMEAVE_RESET(layers_UH_T,  Nlayers,bi,bj,myThid)
161  #ifdef LAYERS_THICKNESS  #ifdef LAYERS_THICKNESS
162            CALL TIMEAVE_RESET(layers_HU_T,Nlayers,bi,bj,myThid)            CALL TIMEAVE_RESET(layers_Hw_T, Nlayers,bi,bj,myThid)
163              CALL TIMEAVE_RESET(layers_PIw_T,Nlayers,bi,bj,myThid)
164              CALL TIMEAVE_RESET(layers_U_T,  Nlayers,bi,bj,myThid)
165  #endif /* LAYERS_THICKNESS */  #endif /* LAYERS_THICKNESS */
166  #endif /* LAYERS_UFLUX */  #endif /* LAYERS_UFLUX */
167    
168  #ifdef LAYERS_VFLUX  #ifdef LAYERS_VFLUX
169            CALL TIMEAVE_RESET(layers_VFlux_T,Nlayers,bi,bj,myThid)            CALL TIMEAVE_RESET(layers_VH_T, Nlayers,bi,bj,myThid)
170  #ifdef LAYERS_THICKNESS  #ifdef LAYERS_THICKNESS
171            CALL TIMEAVE_RESET(layers_HV_T,Nlayers,bi,bj,myThid)            CALL TIMEAVE_RESET(layers_Hs_T, Nlayers,bi,bj,myThid)
172              CALL TIMEAVE_RESET(layers_PIs_T,Nlayers,bi,bj,myThid)
173              CALL TIMEAVE_RESET(layers_V_T,  Nlayers,bi,bj,myThid)
174  #endif /* LAYERS_THICKNESS */  #endif /* LAYERS_THICKNESS */
175  #endif /* LAYERS_VFLUX */  #endif /* LAYERS_VFLUX */
176           DO k=1,Nlayers  
177            layers_TimeAve(k,bi,bj)=0.  #ifdef LAYERS_PRHO_REF
178              IF ( layers_num(1).EQ.3 )
179         &    CALL TIMEAVE_RESET(prho_tave,Nr,bi,bj,myThid)
180    #endif /* LAYERS_PRHO_REF */
181           ENDDO           ENDDO
182          ENDDO          ENDDO
        ENDDO  
   
       ENDIF  
183    
184    C--   end of bloc: if time is a multiple of layers_taveFreq
185           ENDIF
186    
187          ENDIF
188  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
   
189  #endif /* ALLOW_LAYERS */  #endif /* ALLOW_LAYERS */
190    
191        RETURN        RETURN

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22