/[MITgcm]/MITgcm_contrib/rpa_layers/layers/layers_output.F
ViewVC logotype

Annotation of /MITgcm_contrib/rpa_layers/layers/layers_output.F

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


Revision 1.1 - (hide annotations) (download)
Tue Sep 15 19:16:53 2009 UTC (15 years, 10 months ago) by rpa
Branch: MAIN
importing layers package

1 rpa 1.1 #include "LAYERS_OPTIONS.h"
2    
3     SUBROUTINE LAYERS_OUTPUT( myTime, myIter, myThid )
4    
5     C !DESCRIPTION: \bv
6     C *==========================================================*
7     C | SUBROUTINE LAYERS_OUTPUT
8     C | o general routine for LAYERS output
9     C *==========================================================*
10     C | write time-average & snap-shot output
11     C *==========================================================*
12     C \ev
13    
14     C !USES:
15     IMPLICIT NONE
16    
17     C === Global variables ===
18     #include "SIZE.h"
19     #include "EEPARAMS.h"
20     #include "PARAMS.h"
21     #include "LAYERS_SIZE.h"
22     #include "LAYERS.h"
23    
24     C !INPUT PARAMETERS:
25     C == Routine arguments ==
26     C myTime :: Current time of simulation ( s )
27     C myIter :: Iteration number
28     C myThid :: my Thread Id number
29     _RL myTime
30     INTEGER myIter
31     INTEGER myThid
32     CEOP
33    
34     #ifdef ALLOW_LAYERS
35    
36     C !LOCAL VARIABLES:
37     C == Local variables ==
38     LOGICAL DIFFERENT_MULTIPLE
39     EXTERNAL DIFFERENT_MULTIPLE
40     INTEGER bi, bj, K
41     CHARACTER*(MAX_LEN_MBUF) suff
42     CHARACTER*(1) pf
43    
44     IF ( writeBinaryPrec .EQ. precFloat64 ) THEN
45     pf(1:1) = 'D'
46     ELSE
47     pf(1:1) = 'R'
48     ENDIF
49    
50     IF ( DIFFERENT_MULTIPLE(dumpFreq,myTime,deltaTClock)
51     & ) THEN
52    
53     IF ( layers_MDSIO ) THEN
54     WRITE(suff,'(I10.10)') myIter
55     #ifdef LAYERS_UFLUX
56     CALL WRITE_FLD_XYG_RL(
57     & 'layers_UFlux.',suff,layers_UFlux,myIter,myThid)
58     #ifdef LAYERS_THICKNESS
59     CALL WRITE_FLD_XYG_RL(
60     & 'layers_HU.',suff,layers_HU,myIter,myThid)
61     #endif /* LAYERS_THICKNESS */
62     #endif /* LAYESR_UFLUX */
63     #ifdef LAYERS_VFLUX
64     CALL WRITE_FLD_XYG_RL(
65     & 'layers_VFlux.',suff,layers_VFlux,myIter,myThid)
66     #ifdef LAYERS_THICKNESS
67     CALL WRITE_FLD_XYG_RL(
68     & 'layers_HV.',suff,layers_HV,myIter,myThid)
69     #endif /* LAYERS_THICKNESS */
70     #endif /* LAYESR_VFLUX */
71     ENDIF
72     ENDIF
73    
74     #ifdef ALLOW_MNC
75     #ifdef LAYERS_MNC
76     IF ( layers_MNC) THEN
77     C Do MNC output...
78     C But how?
79     ENDIF
80     #endif /* LAYERS_MNC */
81     #endif /* ALLOW_MNC */
82    
83     #ifdef ALLOW_TIMEAVE
84    
85     C Dump files and restart average computation if needed
86     IF ( DIFFERENT_MULTIPLE(taveFreq,myTime,deltaTClock)
87     & ) THEN
88    
89     C Normalize by integrated time
90     DO bj = myByLo(myThid), myByHi(myThid)
91     DO bi = myBxLo(myThid), myBxHi(myThid)
92    
93     #ifdef LAYERS_UFLUX
94     CALL TIMEAVE_NORMALIZ(layers_UFlux_T,layers_timeave,Nlayers,
95     & bi,bj,myThid)
96     #ifdef LAYERS_THICKNESS
97     CALL TIMEAVE_NORMALIZ(layers_HU_T,layers_timeave,Nlayers,
98     & bi,bj,myThid)
99     #endif /* LAYERS_THICKNESS */
100     #endif /* LAYERS_UFLUX */
101    
102     #ifdef LAYERS_VFLUX
103     CALL TIMEAVE_NORMALIZ(layers_VFlux_T,layers_timeave,Nlayers,
104     & bi,bj,myThid)
105     #ifdef LAYERS_THICKNESS
106     CALL TIMEAVE_NORMALIZ(layers_HV_T,layers_timeave,Nlayers,
107     & bi,bj,myThid)
108     #endif /* LAYERS_THICKNESS */
109     #endif /* LAYERS_VFLUX */
110    
111     ENDDO
112     ENDDO
113    
114     IF ( layers_MDSIO ) THEN
115     WRITE(suff,'(I10.10)') myIter
116     #ifdef LAYERS_UFLUX
117     CALL WRITE_FLD_XYG_RL(
118     & 'layers_UFlux-tave.',suff,layers_UFlux_T,myIter,myThid)
119     #ifdef LAYERS_THICKNESS
120     CALL WRITE_FLD_XYG_RL(
121     & 'layers_HU-tave.',suff,layers_HU_T,myIter,myThid)
122     #endif /* LAYERS_THICKNESS */
123     #endif /* LAYERS_UFLUX */
124     #ifdef LAYERS_VFLUX
125     CALL WRITE_FLD_XYG_RL(
126     & 'layers_VFlux-tave.',suff,layers_VFlux_T,myIter,myThid)
127     #ifdef LAYERS_THICKNESS
128     CALL WRITE_FLD_XYG_RL(
129     & 'layers_HV-tave.',suff,layers_HV_T,myIter,myThid)
130     #endif /* LAYERS_THICKNESS */
131     #endif /* LAYERS_VFLUX */
132     ENDIF
133    
134     #ifdef ALLOW_MNC
135     C Do MNC output.
136     #endif
137    
138     C Reset averages to zero
139     DO bj = myByLo(myThid), myByHi(myThid)
140     DO bi = myBxLo(myThid), myBxHi(myThid)
141     #ifdef LAYERS_UFLUX
142     CALL TIMEAVE_RESET(layers_UFlux_T,Nlayers,bi,bj,myThid)
143     #ifdef LAYERS_THICKNESS
144     CALL TIMEAVE_RESET(layers_HU_T,Nlayers,bi,bj,myThid)
145     #endif /* LAYERS_THICKNESS */
146     #endif /* LAYERS_UFLUX */
147    
148     #ifdef LAYERS_VFLUX
149     CALL TIMEAVE_RESET(layers_VFlux_T,Nlayers,bi,bj,myThid)
150     #ifdef LAYERS_THICKNESS
151     CALL TIMEAVE_RESET(layers_HV_T,Nlayers,bi,bj,myThid)
152     #endif /* LAYERS_THICKNESS */
153     #endif /* LAYERS_VFLUX */
154     DO k=1,Nlayers
155     layers_TimeAve(k,bi,bj)=0.
156     ENDDO
157     ENDDO
158     ENDDO
159    
160     ENDIF
161    
162    
163     #endif /* ALLOW_TIMEAVE */
164    
165     #endif /* ALLOW_LAYERS */
166    
167     RETURN
168     END

  ViewVC Help
Powered by ViewVC 1.1.22