/[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.4 - (show annotations) (download)
Mon Feb 21 04:41:52 2005 UTC (19 years, 3 months ago) by edhill
Branch: MAIN
Changes since 1.3: +65 -14 lines
 o need to read & write both qdiag and ndiag for checkpointing

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_write_pickup.F,v 1.3 2005/02/20 05:28:20 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
41 C !LOCAL VARIABLES:
42 C fn :: character buffer for creating filename
43 C prec :: precision of pickup files
44 c INTEGER prec, iChar, lChar, k
45 INTEGER prec, lChar, i, sn
46 CHARACTER*(MAX_LEN_FNAM) fn
47
48 INTEGER ILNBLNK
49 EXTERNAL ILNBLNK
50
51 #ifdef ALLOW_MDSIO
52 LOGICAL lgf
53 INTEGER dUnit
54 #endif /* ALLOW_MDSIO */
55
56 #ifdef ALLOW_MNC
57 INTEGER ii
58 CHARACTER*(MAX_LEN_FNAM) diag_mnc_bn
59 INTEGER CW_DIMS, NLEN
60 PARAMETER ( CW_DIMS = 10 )
61 PARAMETER ( NLEN = 80 )
62 INTEGER dim(CW_DIMS), ib(CW_DIMS), ie(CW_DIMS)
63 CHARACTER*(NLEN) dn(CW_DIMS)
64 CHARACTER*(NLEN) d_cw_name
65 CHARACTER*(NLEN) dn_blnk
66 #endif /* ALLOW_MNC */
67
68 CEOP
69
70 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
71
72 IF (diag_pickup_write) THEN
73
74 #ifdef ALLOW_MNC
75 IF (diag_pickup_write_mnc) THEN
76 DO i = 1,NLEN
77 dn_blnk(i:i) = ' '
78 ENDDO
79 DO i = 1,MAX_LEN_FNAM
80 diag_mnc_bn(i:i) = ' '
81 ENDDO
82 WRITE(diag_mnc_bn,'(A)') 'pickup_diagnostics'
83
84 C Update the record dimension by writing the iteration number
85 CALL MNC_CW_SET_UDIM(diag_mnc_bn, -1, myThid)
86 CALL MNC_CW_I_W_S('I',diag_mnc_bn,0,0,'T',myIter,myThid)
87 CALL MNC_CW_SET_UDIM(diag_mnc_bn, 0, myThid)
88
89 C Write the qdiag() array
90 d_cw_name(1:NLEN) = dn_blnk(1:NLEN)
91 DO ii = 1,CW_DIMS
92 dn(ii)(1:NLEN) = dn_blnk(1:NLEN)
93 ENDDO
94 d_cw_name(1:10) = 'diag_state'
95 dn(1)(1:3) = 'Xp1'
96 dim(1) = sNx + 2*OLx
97 ib(1) = OLx + 1
98 ie(1) = OLx + sNx + 1
99 dn(2)(1:3) = 'Yp1'
100 dim(2) = sNy + 2*OLy
101 ib(2) = OLy + 1
102 ie(2) = OLy + sNy + 1
103 dn(3)(1:2) = 'Nd'
104 dim(3) = numdiags
105 ib(3) = 1
106 ie(3) = numdiags
107 dn(4)(1:1) = 'T'
108 dim(4) = -1
109 ib(4) = 1
110 ie(4) = 1
111
112 CALL MNC_CW_ADD_GNAME(d_cw_name, 4,
113 & dim, dn, ib, ie, myThid)
114 CALL MNC_CW_ADD_VNAME(d_cw_name, d_cw_name,
115 & 4,5, myThid)
116 CALL MNC_CW_ADD_VATTR_TEXT(d_cw_name,'description',
117 & 'diagnostics state',myThid)
118
119 CALL MNC_CW_RL_W('D',diag_mnc_bn,0,0,
120 & d_cw_name, qdiag, myThid)
121
122 CALL MNC_CW_DEL_VNAME(d_cw_name, myThid)
123 CALL MNC_CW_DEL_GNAME(d_cw_name, myThid)
124
125 C Write the ndiag() array
126 d_cw_name(1:NLEN) = dn_blnk(1:NLEN)
127 DO ii = 1,CW_DIMS
128 dn(ii)(1:NLEN) = dn_blnk(1:NLEN)
129 ENDDO
130 d_cw_name(1:10) = 'diag_count'
131 dn(1)(1:2) = 'Nd'
132 dim(1) = numdiags
133 ib(1) = 1
134 ie(1) = numdiags
135 dn(2)(1:1) = 'T'
136 dim(2) = -1
137 ib(2) = 1
138 ie(2) = 1
139
140 CALL MNC_CW_ADD_GNAME(d_cw_name, 2,
141 & dim, dn, ib, ie, myThid)
142 CALL MNC_CW_ADD_VNAME(d_cw_name, d_cw_name,
143 & 4,5, myThid)
144 CALL MNC_CW_ADD_VATTR_TEXT(d_cw_name,'description',
145 & 'diagnostics state',myThid)
146
147 CALL MNC_CW_RL_W('I',diag_mnc_bn,0,0,
148 & d_cw_name, ndiag, myThid)
149
150 CALL MNC_CW_DEL_VNAME(d_cw_name, myThid)
151 CALL MNC_CW_DEL_GNAME(d_cw_name, myThid)
152
153
154 ENDIF
155 #endif
156
157 #ifdef ALLOW_MDSIO
158 IF (diag_pickup_write_mdsio) THEN
159 _BEGIN_MASTER( myThid )
160
161 sn = ILNBLNK(suff)
162
163 C Write qdiag()
164 DO i = 1,80
165 fn(i:i) = ' '
166 ENDDO
167 write(fn,'(a,a)') 'pickup_qdiag.', suff(1:sn)
168 prec = precFloat64
169 lgf = globalFiles
170 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',numdiags,qdiag,
171 & 1,myIter,myThid)
172
173 C Write ndiag()
174 DO i = 1,80
175 fn(i:i) = ' '
176 ENDDO
177 WRITE(fn,'(a,a)') 'pickup_ndiag.', suff(1:sn)
178 CALL MDSFINDUNIT( dUnit, mythid )
179 OPEN( dUnit, file=fn )
180 DO i = 1,numdiags
181 WRITE(dUnit,'(I10)') ndiag(i)
182 ENDDO
183 CLOSE( dUnit )
184 _END_MASTER( myThid )
185 ENDIF
186 #endif /* ALLOW_MDSIO */
187
188 ENDIF
189
190 #endif /* ALLOW_DIAGNOSTICS */
191
192 RETURN
193 END

  ViewVC Help
Powered by ViewVC 1.1.22