/[MITgcm]/MITgcm/pkg/ptracers/ptracers_write_timeave.F
ViewVC logotype

Contents of /MITgcm/pkg/ptracers/ptracers_write_timeave.F

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


Revision 1.4 - (show annotations) (download)
Sun May 15 03:06:01 2005 UTC (19 years ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57h_done
Changes since 1.3: +5 -7 lines
remove "baseTime" (no used) from arg. list of DIFF_BASE_MULTIPLE
and rename it: DIFFERENT_MULTIPLE

1 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_write_timeave.F,v 1.3 2005/04/06 18:45:48 jmc Exp $
2 C $Name: $
3
4 #include "PTRACERS_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 CBOP 1
8 C !ROUTINE: PTRACERS_WRITE_TIMEAVE
9
10 C !INTERFACE:
11 SUBROUTINE PTRACERS_WRITE_TIMEAVE(myTime, myIter, myThid)
12
13 C !DESCRIPTION:
14 C At the end of average period, write the time-average
15 C state-variables on file; then reset for next period
16
17 C !USES:
18 IMPLICIT NONE
19 #include "SIZE.h"
20 #include "EEPARAMS.h"
21 #include "PARAMS.h"
22 #include "PTRACERS_SIZE.h"
23 #include "PTRACERS.h"
24 #include "PTRACERS_STATV.h"
25 C Functions
26 LOGICAL DIFFERENT_MULTIPLE
27 EXTERNAL DIFFERENT_MULTIPLE
28 INTEGER IO_ERRCOUNT
29 EXTERNAL IO_ERRCOUNT
30
31 C !INPUT PARAMETERS:
32 C myThid :: Thread number for this instance of the routine.
33 C myIter :: Iteration number
34 C myTime :: Current time of simulation ( s )
35 INTEGER myThid
36 INTEGER myIter
37 _RL myTime
38 CEOP
39
40 #if ( defined ALLOW_PTRACERS && defined ALLOW_TIMEAVE )
41
42 C !LOCAL VARIABLES:
43 C suff :: Hold suffix part of a filename
44 C TimeAve :: total time over average
45 INTEGER prevPrec
46 CHARACTER*(MAX_LEN_FNAM) suff
47 _RL DDTT
48 INTEGER bi,bj,k, iTracer
49 INTEGER beginIOErrCount
50 INTEGER endIOErrCount
51 CHARACTER*(MAX_LEN_MBUF) msgBuf
52 #ifdef ALLOW_MNC
53 INTEGER ii,jj, ilnb
54 CHARACTER*(MAX_LEN_FNAM) name
55 C Functions
56 INTEGER ILNBLNK
57 #endif /* ALLOW_MNC */
58
59 C Final Time Averages and Dump Files if needed
60 IF ( DIFFERENT_MULTIPLE( PTRACERS_taveFreq, myTime, deltaTClock )
61 & ) THEN
62
63 CML WRITE(*,*) 'EH3: myIter = ', myIter
64
65 DO bj = myByLo(myThid), myByHi(myThid)
66 DO bi = myBxLo(myThid), myBxHi(myThid)
67 C Normalize by integrated time
68 DO iTracer=1,PTRACERS_numInUse
69 CALL TIMEAVE_NORMALIZ(
70 & ptracerFluxtave(1-Olx,1-Oly, 1,1,iTracer),
71 & ptracer_full, 1,bi,bj,myThid)
72 CALL TIMEAVE_NORMALIZ(
73 & ptracertave (1-Olx,1-Oly,1,1,1,iTracer),
74 & ptracer_half,Nr,bi,bj,myThid)
75 ENDDO
76 ENDDO
77 ENDDO
78
79 C Write to files
80 _BARRIER
81 _BEGIN_MASTER( myThid )
82
83 #ifdef ALLOW_MNC
84 IF (useMNC .AND. PTRACERS_write_mnc) THEN
85 CALL MNC_CW_SET_UDIM('ptr_tave', -1, myThid)
86 CALL MNC_CW_I_W_S('I','ptr_tave',0,0,'T',myIter,myThid)
87 CALL MNC_CW_SET_UDIM('ptr_tave', 0, myThid)
88 CALL MNC_CW_SET_UDIM('ptr_flux_tave', -1, myThid)
89 CALL MNC_CW_I_W_S('I','ptr_flux_tave',0,0,'T',myIter,
90 & myThid)
91 CALL MNC_CW_SET_UDIM('ptr_flux_tave', 0, myThid)
92 DO ii = 1,PTRACERS_numInUse
93 CALL MNC_CW_RL_W('D','ptr_tave',0,0,PTRACERS_names(ii),
94 & ptracertave(1-OLx,1-OLy,1,1,1,ii),myThid)
95 DO jj = 1,MAX_LEN_FNAM
96 name(jj:jj) = ' '
97 ENDDO
98 ilnb = ILNBLNK(PTRACERS_names(ii))
99 WRITE(name,'(a,a)') 'surf_',PTRACERS_names(ii)(1:ilnb)
100 CALL MNC_CW_RL_W('D','ptr_flux_tave',0,0,name,
101 & ptracerFluxtave(1-OLx,1-OLy,1,1,ii),myThid)
102 ENDDO
103 ENDIF
104 #endif /* ALLOW_MNC */
105
106 IF (PTRACERS_write_mdsio) THEN
107
108 C Set IO "context" for writing state
109 #ifdef USE_DFILE
110 CALL DFILE_SET_RW
111 CALL DFILE_SET_CONT_ON_ERROR
112 #endif
113 C Read IO error counter
114 beginIOErrCount = IO_ERRCOUNT(myThid)
115 c prevPrec = writeBinaryPrec
116 c writeBinaryPrec = precFloat32
117
118 do iTracer=1,PTRACERS_numInUse
119 WRITE(suff,'(A7,I2.2,A1,I10.10)') 'PtrFluxtave',
120 & iTracer,'.',myIter
121 CALL WRITE_FLD_XY_RL (suff,' ',
122 & ptracerFluxtave(1-Olx,1-Oly, 1,1,iTracer),
123 & myIter,myThid)
124 WRITE(suff,'(A7,I2.2,A1,I10.10)') 'PTRtave',
125 & iTracer,'.',myIter
126 CALL WRITE_FLD_XYZ_RL(suff,' ',
127 & ptracertave (1-Olx,1-Oly,1,1,1,iTracer),
128 & myIter,myThid)
129 enddo
130
131 c writeBinaryPrec = prevPrec
132 C Reread IO error counter
133 endIOErrCount = IO_ERRCOUNT(myThid)
134
135 C Check for IO errors
136 IF ( endIOErrCount .NE. beginIOErrCount ) THEN
137 WRITE(msgBuf,'(A)') 'S/R PTRACERS_WRITE_TIMEAVE'
138 CALL PRINT_ERROR( msgBuf, 1 )
139 WRITE(msgBuf,'(A)') 'Error writing out data'
140 CALL PRINT_ERROR( msgBuf, 1 )
141 WRITE(msgBuf,'(A,I10)') 'Timestep ',myIter
142 CALL PRINT_ERROR( msgBuf, 1 )
143 ELSE
144 WRITE(msgBuf,'(A,I10)')
145 & '// PTRACER time-average data written, t-step', myIter
146 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
147 & SQUEEZE_RIGHT, 1 )
148 WRITE(msgBuf,'(A)') ' '
149 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
150 & SQUEEZE_RIGHT, 1 )
151 ENDIF
152
153 ENDIF
154
155 _END_MASTER( myThid )
156 _BARRIER
157
158 DO bj = myByLo(myThid), myByHi(myThid)
159 DO bi = myBxLo(myThid), myBxHi(myThid)
160
161 C Like before the 1rst iteration,
162 C ==> call TIMEAVE_STATVARS with myIter=nIter0 :
163 C 1) Reset the averages to zero ;
164 C 2) Start to cumulate state-variables with Half time step.
165
166 CALL PTRACERS_STATVARS(myTime, nIter0, bi, bj, myThid)
167
168 ENDDO
169 ENDDO
170
171 ENDIF
172
173 #endif /* ALLOW_PTRACERS and ALLOW_TIMEAVE */
174
175 RETURN
176 END

  ViewVC Help
Powered by ViewVC 1.1.22