/[MITgcm]/MITgcm/pkg/diagnostics/diagnostics_write_pickup.F
ViewVC logotype

Contents of /MITgcm/pkg/diagnostics/diagnostics_write_pickup.F

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


Revision 1.7 - (show annotations) (download)
Wed May 25 04:03:09 2005 UTC (19 years ago) by edhill
Branch: MAIN
CVS Tags: checkpoint57o_post, checkpoint57m_post, checkpoint57k_post, checkpoint57i_post, checkpoint57r_post, checkpoint57n_post, checkpoint57p_post, checkpoint57q_post, checkpoint57j_post, checkpoint57l_post
Changes since 1.6: +3 -2 lines
 o for mnc output, fill the 'T' coordinate var with myTime and create a
   separate 'iter' variable for iteration count

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_write_pickup.F,v 1.6 2005/02/23 16:30:19 edhill Exp $
2 C $Name: $
3
4 #include "DIAG_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 CBOP
8 C !ROUTINE: DIAGNOSTICS_WRITE_PICKUP
9 C !INTERFACE:
10 SUBROUTINE DIAGNOSTICS_WRITE_PICKUP(
11 I suff,
12 I myTime,
13 I myIter,
14 I myThid )
15
16 C !DESCRIPTION:
17 C Writes current state of the diagnostics package.
18
19 C !USES:
20 IMPLICIT NONE
21
22 C == Global variables ===
23 #include "SIZE.h"
24 #include "EEPARAMS.h"
25 #include "PARAMS.h"
26 #include "DIAGNOSTICS_SIZE.h"
27 #include "DIAGNOSTICS.h"
28
29 C !INPUT/OUTPUT PARAMETERS:
30 C suff :: suffix for pickup file (eg. ckptA or 0000000010)
31 C myTime :: current time
32 C myIter :: time-step number
33 C myThid :: Number of this instance
34 CHARACTER*(*) suff
35 _RL myTime
36 INTEGER myIter
37 INTEGER myThid
38
39 #ifdef ALLOW_DIAGNOSTICS
40 #ifdef DIAGNOSTICS_HAS_PICKUP
41
42 C !LOCAL VARIABLES:
43 C fn :: character buffer for creating filename
44 C prec :: precision of pickup files
45 c INTEGER prec, iChar, lChar, k
46 INTEGER prec, lChar, i, sn
47 CHARACTER*(MAX_LEN_FNAM) fn
48
49 INTEGER ILNBLNK
50 EXTERNAL ILNBLNK
51
52 #ifdef ALLOW_MDSIO
53 LOGICAL lgf
54 INTEGER dUnit, n, m
55 #endif /* ALLOW_MDSIO */
56
57 #ifdef ALLOW_MNC
58 INTEGER ii
59 CHARACTER*(MAX_LEN_FNAM) diag_mnc_bn
60 INTEGER CW_DIMS, NLEN
61 PARAMETER ( CW_DIMS = 10 )
62 PARAMETER ( NLEN = 80 )
63 INTEGER dim(CW_DIMS), ib(CW_DIMS), ie(CW_DIMS)
64 CHARACTER*(NLEN) dn(CW_DIMS)
65 CHARACTER*(NLEN) d_cw_name
66 CHARACTER*(NLEN) dn_blnk
67 #endif /* ALLOW_MNC */
68
69 CEOP
70
71 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
72
73 IF (diag_pickup_write) THEN
74
75 #ifdef ALLOW_MNC
76 IF (diag_pickup_write_mnc) THEN
77 DO i = 1,NLEN
78 dn_blnk(i:i) = ' '
79 ENDDO
80 DO i = 1,MAX_LEN_FNAM
81 diag_mnc_bn(i:i) = ' '
82 ENDDO
83 WRITE(diag_mnc_bn,'(A)') 'pickup_diagnostics'
84
85 C Update the record dimension by writing the iteration number
86 CALL MNC_CW_SET_UDIM(diag_mnc_bn, -1, myThid)
87 CALL MNC_CW_RL_W_S('D',diag_mnc_bn,0,0,'T',myTime,myThid)
88 CALL MNC_CW_SET_UDIM(diag_mnc_bn, 0, myThid)
89 CALL MNC_CW_I_W_S('I',diag_mnc_bn,0,0,'iter',myIter,myThid)
90
91 C Write the qdiag() array
92 d_cw_name(1:NLEN) = dn_blnk(1:NLEN)
93 DO ii = 1,CW_DIMS
94 dn(ii)(1:NLEN) = dn_blnk(1:NLEN)
95 ENDDO
96 d_cw_name(1:10) = 'diag_state'
97 dn(1)(1:3) = 'Xp1'
98 dim(1) = sNx + 2*OLx
99 ib(1) = OLx + 1
100 ie(1) = OLx + sNx + 1
101 dn(2)(1:3) = 'Yp1'
102 dim(2) = sNy + 2*OLy
103 ib(2) = OLy + 1
104 ie(2) = OLy + sNy + 1
105 dn(3)(1:2) = 'Nd'
106 dim(3) = numdiags
107 ib(3) = 1
108 ie(3) = numdiags
109 dn(4)(1:1) = 'T'
110 dim(4) = -1
111 ib(4) = 1
112 ie(4) = 1
113
114 CALL MNC_CW_ADD_GNAME(d_cw_name, 4,
115 & dim, dn, ib, ie, myThid)
116 CALL MNC_CW_ADD_VNAME(d_cw_name, d_cw_name,
117 & 4,5, myThid)
118 CALL MNC_CW_ADD_VATTR_TEXT(d_cw_name,'description',
119 & 'diagnostics state',myThid)
120
121 CALL MNC_CW_RL_W('D',diag_mnc_bn,0,0,
122 & d_cw_name, qdiag, myThid)
123
124 CALL MNC_CW_DEL_VNAME(d_cw_name, myThid)
125 CALL MNC_CW_DEL_GNAME(d_cw_name, myThid)
126
127 C Write the ndiag() array
128 d_cw_name(1:NLEN) = dn_blnk(1:NLEN)
129 DO ii = 1,CW_DIMS
130 dn(ii)(1:NLEN) = dn_blnk(1:NLEN)
131 ENDDO
132 d_cw_name(1:10) = 'diag_count'
133 dn(1)(1:2) = 'Nd'
134 dim(1) = numdiags
135 ib(1) = 1
136 ie(1) = numdiags
137 dn(2)(1:1) = 'T'
138 dim(2) = -1
139 ib(2) = 1
140 ie(2) = 1
141
142 CALL MNC_CW_ADD_GNAME(d_cw_name, 2,
143 & dim, dn, ib, ie, myThid)
144 CALL MNC_CW_ADD_VNAME(d_cw_name, d_cw_name,
145 & 4,5, myThid)
146 CALL MNC_CW_ADD_VATTR_TEXT(d_cw_name,'description',
147 & 'diagnostics state',myThid)
148
149 CALL MNC_CW_I_W('I',diag_mnc_bn,0,0,
150 & d_cw_name, ndiag, myThid)
151
152 CALL MNC_CW_DEL_VNAME(d_cw_name, myThid)
153 CALL MNC_CW_DEL_GNAME(d_cw_name, myThid)
154
155
156 ENDIF
157 #endif
158
159 #ifdef ALLOW_MDSIO
160 IF (diag_pickup_write_mdsio) THEN
161 _BEGIN_MASTER( myThid )
162
163 sn = ILNBLNK(suff)
164
165 C Write qdiag()
166 DO i = 1,80
167 fn(i:i) = ' '
168 ENDDO
169 write(fn,'(a,a)') 'pickup_qdiag.', suff(1:sn)
170 prec = precFloat64
171 lgf = globalFiles
172 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',numdiags,qdiag,
173 & 1,myIter,myThid)
174
175 C Write ndiag()
176 DO i = 1,80
177 fn(i:i) = ' '
178 ENDDO
179 WRITE(fn,'(a,a)') 'pickup_ndiag.', suff(1:sn)
180 CALL MDSFINDUNIT( dUnit, mythid )
181 OPEN( dUnit, file=fn )
182 DO n = 1,nlists
183 DO m = 1,nfields(n)
184 WRITE(dUnit,'(I10)') ndiag(jdiag(m,n))
185 ENDDO
186 ENDDO
187 CLOSE( dUnit )
188 _END_MASTER( myThid )
189 ENDIF
190 #endif /* ALLOW_MDSIO */
191
192 ENDIF
193
194 #endif /* ALLOW_DIAGNOSTICS */
195 #endif /* DIAGNOSTICS_HAS_PICKUP */
196
197 RETURN
198 END

  ViewVC Help
Powered by ViewVC 1.1.22