/[MITgcm]/MITgcm/pkg/sbo/sbo_diags.F
ViewVC logotype

Annotation of /MITgcm/pkg/sbo/sbo_diags.F

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


Revision 1.7 - (hide annotations) (download)
Thu May 11 00:03:07 2006 UTC (18 years, 1 month ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint58e_post
Changes since 1.6: +6 -3 lines
Adding global mean forcing to time series.

1 heimbach 1.7 C $Header: /u/gcmpack/MITgcm/pkg/sbo/sbo_diags.F,v 1.6 2005/05/15 03:04:57 jmc Exp $
2 edhill 1.4 C $Name: $
3 dimitri 1.2
4     #include "SBO_OPTIONS.h"
5    
6     SUBROUTINE SBO_DIAGS( myCurrentTime, myIter, myThid )
7     C /==========================================================\
8     C | SUBROUTINE SBO_DIAGS |
9     C | o Do SBO diagnostic output. |
10     C \==========================================================/
11     IMPLICIT NONE
12    
13     C === Global variables ===
14     #include "SIZE.h"
15     #include "EEPARAMS.h"
16     #include "PARAMS.h"
17     #include "SBO.h"
18    
19     C == Routine arguments ==
20     C myCurrentTime - Current time of simulation ( s )
21     C myIter - Iteration number
22     C myThid - Number of this instance of INI_FORCING
23     _RL myCurrentTime
24     INTEGER myIter
25     INTEGER myThid
26    
27     #ifdef ALLOW_SBO
28    
29     c == Local variables ==
30     c bi, bj - loop counters
31     c sbo_diag - vector of SBO diagnostics contains:
32     c model time (s), xoamc, yoamc, zoamc,
33     c xoamp, yoamp, zoamp, mass, xcom, ycom, zcom
34     INTEGER bi, bj
35 heimbach 1.7 Real*8 sbo_diag(14)
36 jmc 1.6 LOGICAL DIFFERENT_MULTIPLE
37     EXTERNAL DIFFERENT_MULTIPLE
38 dimitri 1.2 _RL DDTT
39     CHARACTER*(MAX_LEN_MBUF) suff
40     character*(8) fName
41     integer narr
42     integer irecord, k
43    
44     C-----------------------------------------------------------------
45     C Save angular momentum and mass variables at every time step
46     C-----------------------------------------------------------------
47    
48     sbo_diag(1) = myCurrentTime
49     sbo_diag(2) = xoamc
50     sbo_diag(3) = yoamc
51     sbo_diag(4) = zoamc
52     sbo_diag(5) = xoamp
53     sbo_diag(6) = yoamp
54     sbo_diag(7) = zoamp
55     sbo_diag(8) = mass
56     sbo_diag(9) = xcom
57     sbo_diag(10) = ycom
58     sbo_diag(11) = zcom
59 heimbach 1.7 sbo_diag(12) = sboarea
60     sbo_diag(13) = sboempmrwet
61     sbo_diag(14) = sboqnetwet
62 dimitri 1.2
63     fName = 'SBO_DIAG'
64 heimbach 1.7 narr = 14
65 dimitri 1.2 irecord = myCurrentTime/deltaTClock
66    
67     CALL SBO_WRITEVECTOR(
68     I fName,
69     I narr,
70     I sbo_diag,
71     I irecord,
72     I myIter,
73     I myThid )
74    
75     #ifdef ALLOW_TIMEAVE
76    
77     C-----------------------------------------------------------------
78     C Save time-averaged bottom pressure at sbo_taveFreq intervals
79     C-----------------------------------------------------------------
80    
81     C Initialize averages to zero
82     IF ( myIter.EQ.nIter0 ) THEN
83     DO bj = myByLo(myThid), myByHi(myThid)
84     DO bi = myBxLo(myThid), myBxHi(myThid)
85     CALL TIMEAVE_RESET(OBPtave,1,bi,bj,myThid)
86     DO k=1,Nr
87     sbo_TimeAve(k,bi,bj)=0.
88     ENDDO
89     ENDDO
90     ENDDO
91     ENDIF
92    
93     C Time Average SBO fields
94     IF ( myIter .EQ. nIter0 .OR.
95 jmc 1.6 & DIFFERENT_MULTIPLE(sbo_taveFreq,myCurrentTime,deltaTClock)
96     & ) THEN
97 dimitri 1.2 DDTT=0.5*deltaTclock
98     ELSE
99     DDTT=deltaTclock
100     ENDIF
101     DO bj = myByLo(myThid), myByHi(myThid)
102     DO bi = myBxLo(myThid), myBxHi(myThid)
103     CALL TIMEAVE_CUMULATE(
104     & obp,OBPtave,1,DDTT,bi,bj,myThid)
105    
106     C Keep record of how much time has been integrated over
107     DO k=1,Nr
108     sbo_TimeAve(k,bi,bj)=sbo_TimeAve(k,bi,bj)+DDTT
109     ENDDO
110     ENDDO
111     ENDDO
112    
113     C Dump files and restart average computation if needed
114     IF ( myIter.NE.nIter0 .AND.
115 jmc 1.6 & DIFFERENT_MULTIPLE(sbo_taveFreq,myCurrentTime,deltaTClock)
116 dimitri 1.2 & ) THEN
117    
118     C Normalize by integrated time
119     DO bj = myByLo(myThid), myByHi(myThid)
120     DO bi = myBxLo(myThid), myBxHi(myThid)
121     CALL TIMEAVE_NORMALIZ(OBPtave,sbo_timeave,1,bi,bj,myThid)
122     ENDDO
123     ENDDO
124    
125     WRITE(suff,'(I10.10)') myIter
126    
127     CALL WRITE_FLD_XY_RL('OBPtave',suff,OBPtave,
128     & myIter,myThid)
129    
130     C Reset averages to zero
131     DO bj = myByLo(myThid), myByHi(myThid)
132     DO bi = myBxLo(myThid), myBxHi(myThid)
133     CALL TIMEAVE_RESET(OBPtave,1,bi,bj,myThid)
134     DO k=1,Nr
135     sbo_TimeAve(k,bi,bj)=0.
136     ENDDO
137     ENDDO
138     ENDDO
139    
140     C Time Average SBO fields
141     DDTT=0.5*deltaTclock
142     DO bj = myByLo(myThid), myByHi(myThid)
143     DO bi = myBxLo(myThid), myBxHi(myThid)
144     CALL TIMEAVE_CUMULATE(
145     & obp,OBPtave,1,DDTT,bi,bj,myThid)
146    
147     C Keep record of how much time has been integrated over
148     DO k=1,Nr
149     sbo_TimeAve(k,bi,bj)=sbo_TimeAve(k,bi,bj)+DDTT
150     ENDDO
151     ENDDO
152     ENDDO
153     ENDIF
154    
155 adcroft 1.3 #endif /* ALLOW_TIMEAVE */
156 dimitri 1.2
157 adcroft 1.3 #endif /* ALLOW_SBO */
158 dimitri 1.2
159     RETURN
160     END

  ViewVC Help
Powered by ViewVC 1.1.22