/[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.4 - (hide 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 edhill 1.4 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_write_pickup.F,v 1.3 2005/02/20 05:28:20 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    
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 edhill 1.4 INTEGER prec, lChar, i, sn
46 edhill 1.1 CHARACTER*(MAX_LEN_FNAM) fn
47    
48     INTEGER ILNBLNK
49     EXTERNAL ILNBLNK
50    
51 edhill 1.4 #ifdef ALLOW_MDSIO
52     LOGICAL lgf
53     INTEGER dUnit
54     #endif /* ALLOW_MDSIO */
55    
56 edhill 1.2 #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 edhill 1.1 CEOP
69    
70     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
71    
72     IF (diag_pickup_write) THEN
73    
74 edhill 1.2 #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 edhill 1.4
89     C Write the qdiag() array
90 edhill 1.2 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 edhill 1.4 dn(3)(1:2) = 'Nd'
104 edhill 1.2 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 edhill 1.4
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 edhill 1.2
147 edhill 1.4 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 edhill 1.2 ENDIF
155     #endif
156    
157 edhill 1.4 #ifdef ALLOW_MDSIO
158 edhill 1.1 IF (diag_pickup_write_mdsio) THEN
159 edhill 1.4 _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 edhill 1.1 CALL MDSWRITEFIELD(fn,prec,lgf,'RL',numdiags,qdiag,
171     & 1,myIter,myThid)
172 edhill 1.4
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 edhill 1.1 ENDIF
186 edhill 1.4 #endif /* ALLOW_MDSIO */
187 edhill 1.1
188     ENDIF
189    
190     #endif /* ALLOW_DIAGNOSTICS */
191    
192     RETURN
193     END

  ViewVC Help
Powered by ViewVC 1.1.22