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

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

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


Revision 1.7 - (hide 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 edhill 1.7 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_write_pickup.F,v 1.6 2005/02/23 16:30:19 edhill Exp $
2 edhill 1.1 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 edhill 1.5 #ifdef DIAGNOSTICS_HAS_PICKUP
41 edhill 1.1
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 edhill 1.4 INTEGER prec, lChar, i, sn
47 edhill 1.1 CHARACTER*(MAX_LEN_FNAM) fn
48    
49     INTEGER ILNBLNK
50     EXTERNAL ILNBLNK
51    
52 edhill 1.4 #ifdef ALLOW_MDSIO
53     LOGICAL lgf
54 edhill 1.6 INTEGER dUnit, n, m
55 edhill 1.4 #endif /* ALLOW_MDSIO */
56    
57 edhill 1.2 #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 edhill 1.1 CEOP
70    
71     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
72    
73     IF (diag_pickup_write) THEN
74    
75 edhill 1.2 #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 edhill 1.7 CALL MNC_CW_RL_W_S('D',diag_mnc_bn,0,0,'T',myTime,myThid)
88 edhill 1.2 CALL MNC_CW_SET_UDIM(diag_mnc_bn, 0, myThid)
89 edhill 1.7 CALL MNC_CW_I_W_S('I',diag_mnc_bn,0,0,'iter',myIter,myThid)
90 edhill 1.4
91     C Write the qdiag() array
92 edhill 1.2 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 edhill 1.4 dn(3)(1:2) = 'Nd'
106 edhill 1.2 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 edhill 1.4
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 edhill 1.2
149 edhill 1.6 CALL MNC_CW_I_W('I',diag_mnc_bn,0,0,
150 edhill 1.4 & 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 edhill 1.2 ENDIF
157     #endif
158    
159 edhill 1.4 #ifdef ALLOW_MDSIO
160 edhill 1.1 IF (diag_pickup_write_mdsio) THEN
161 edhill 1.4 _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 edhill 1.1 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',numdiags,qdiag,
173     & 1,myIter,myThid)
174 edhill 1.4
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 edhill 1.6 DO n = 1,nlists
183     DO m = 1,nfields(n)
184     WRITE(dUnit,'(I10)') ndiag(jdiag(m,n))
185     ENDDO
186 edhill 1.4 ENDDO
187     CLOSE( dUnit )
188     _END_MASTER( myThid )
189 edhill 1.1 ENDIF
190 edhill 1.4 #endif /* ALLOW_MDSIO */
191 edhill 1.1
192     ENDIF
193    
194     #endif /* ALLOW_DIAGNOSTICS */
195 edhill 1.5 #endif /* DIAGNOSTICS_HAS_PICKUP */
196 edhill 1.1
197     RETURN
198     END

  ViewVC Help
Powered by ViewVC 1.1.22