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

Contents 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 - (show annotations) (download)
Tue Sep 15 19:16:53 2009 UTC (15 years, 10 months ago) by rpa
Branch: MAIN
importing layers package

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