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

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

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


Revision 1.7 - (show annotations) (download)
Sun Jul 23 00:24:18 2017 UTC (6 years, 9 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, HEAD
Changes since 1.6: +4 -4 lines
allows for negative "jdiag" (interpret |jdiag| instead)

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_read_pickup.F,v 1.6 2009/08/27 18:00:01 jmc 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_READ_PICKUP
9 C !INTERFACE:
10 SUBROUTINE DIAGNOSTICS_READ_PICKUP(
11 I myThid )
12
13 C !DESCRIPTION:
14 C Reads previously saved state for the diagnostics package.
15
16 C !USES:
17 IMPLICIT NONE
18
19 C == Global variables ===
20 #include "SIZE.h"
21 #include "EEPARAMS.h"
22 #include "PARAMS.h"
23 #include "DIAGNOSTICS_SIZE.h"
24 #include "DIAGNOSTICS.h"
25
26 C !INPUT/OUTPUT PARAMETERS:
27 C myThid :: Number of this instance
28 INTEGER myThid
29
30 #ifdef DIAGNOSTICS_HAS_PICKUP
31
32 C !LOCAL VARIABLES:
33 C fn :: character buffer for creating filename
34 C prec :: precision of pickup files
35 c INTEGER prec, iChar, lChar, k
36 INTEGER bi,bj
37 INTEGER prec, sn
38 CHARACTER*(MAX_LEN_FNAM) fn
39
40 INTEGER ILNBLNK
41 EXTERNAL ILNBLNK
42
43 INTEGER dUnit, ndId, n, m
44
45 #ifdef ALLOW_MNC
46 INTEGER i, ii
47 CHARACTER*(MAX_LEN_FNAM) diag_mnc_bn
48 INTEGER CW_DIMS, NLEN
49 PARAMETER ( CW_DIMS = 10 )
50 PARAMETER ( NLEN = 80 )
51 INTEGER dim(CW_DIMS), ib(CW_DIMS), ie(CW_DIMS)
52 CHARACTER*(NLEN) dn(CW_DIMS)
53 CHARACTER*(NLEN) d_cw_name
54 CHARACTER*(NLEN) dn_blnk
55 #endif /* ALLOW_MNC */
56
57 C Add pickup capability
58 IF (diag_pickup_read) THEN
59
60 #ifdef ALLOW_MNC
61 IF (diag_pickup_read_mnc) THEN
62 DO i = 1,NLEN
63 dn_blnk(i:i) = ' '
64 ENDDO
65 DO i = 1,MAX_LEN_FNAM
66 diag_mnc_bn(i:i) = ' '
67 ENDDO
68 WRITE(diag_mnc_bn,'(A)') 'pickup_diagnostics'
69
70 C Update the record dimension by writing the iteration number
71 CALL MNC_FILE_CLOSE_ALL_MATCHING(diag_mnc_bn, myThid)
72 CALL MNC_CW_SET_UDIM(diag_mnc_bn, 1, myThid)
73
74 C Read the qdiag() array
75 d_cw_name(1:NLEN) = dn_blnk(1:NLEN)
76 DO ii = 1,CW_DIMS
77 dn(ii)(1:NLEN) = dn_blnk(1:NLEN)
78 ENDDO
79 d_cw_name(1:10) = 'diag_state'
80 dn(1)(1:3) = 'Xp1'
81 dim(1) = sNx + 2*OLx
82 ib(1) = OLx + 1
83 ie(1) = OLx + sNx + 1
84 dn(2)(1:3) = 'Yp1'
85 dim(2) = sNy + 2*OLy
86 ib(2) = OLy + 1
87 ie(2) = OLy + sNy + 1
88 dn(3)(1:2) = 'Zd'
89 dim(3) = numDiags
90 ib(3) = 1
91 ie(3) = numDiags
92 dn(4)(1:1) = 'T'
93 dim(4) = -1
94 ib(4) = 1
95 ie(4) = 1
96 CALL MNC_CW_ADD_GNAME(d_cw_name, 4,
97 & dim, dn, ib, ie, myThid)
98 CALL MNC_CW_ADD_VNAME(d_cw_name, d_cw_name,
99 & 4,5, myThid)
100 CALL MNC_CW_RL_R('D',diag_mnc_bn,0,0,
101 & d_cw_name, qdiag, myThid)
102 CALL MNC_CW_DEL_VNAME(d_cw_name, myThid)
103 CALL MNC_CW_DEL_GNAME(d_cw_name, myThid)
104
105 C Read the ndiag() array
106 d_cw_name(1:NLEN) = dn_blnk(1:NLEN)
107 DO ii = 1,CW_DIMS
108 dn(ii)(1:NLEN) = dn_blnk(1:NLEN)
109 ENDDO
110 d_cw_name(1:10) = 'diag_count'
111 dn(1)(1:2) = 'Nd'
112 dim(1) = numDiags
113 ib(1) = 1
114 ie(1) = numDiags
115 dn(2)(1:1) = 'T'
116 dim(2) = -1
117 ib(2) = 1
118 ie(2) = 1
119 CALL MNC_CW_ADD_GNAME(d_cw_name, 2,
120 & dim, dn, ib, ie, myThid)
121 CALL MNC_CW_ADD_VNAME(d_cw_name, d_cw_name,
122 & 4,5, myThid)
123 CALL MNC_CW_ADD_VATTR_TEXT(d_cw_name,'description',
124 & 'diagnostics state',myThid)
125 C- jmc: get warnings when I compile this S/R because something is not right
126 C in the type or one or more arguments. commented out for now
127 c CALL MNC_CW_RL_R('I',diag_mnc_bn,0,0,
128 c & d_cw_name, ndiag, myThid)
129 CALL MNC_CW_DEL_VNAME(d_cw_name, myThid)
130 CALL MNC_CW_DEL_GNAME(d_cw_name, myThid)
131
132 ENDIF
133 #endif /* ALLOW_MNC */
134
135 IF (diag_pickup_read_mdsio) THEN
136
137 C Read qdiag()
138 prec = precFloat64
139 WRITE(fn,'(A,I10.10)') 'pickup_qdiag.', nIter0
140 CALL READ_REC_3D_RL( fn, prec,
141 & numDiags, qdiag, nIter0, myThid )
142
143 C Read ndiag()
144 _BARRIER
145 _BEGIN_MASTER(myThid)
146
147 C-- jmc: should really write 1 file per tile
148 WRITE(fn,'(A,I10.10)') 'pickup_ndiag.', nIter0
149 CALL MDSFINDUNIT( dUnit, myThid )
150 OPEN( dUnit, file=fn )
151 DO n = 1,nlists
152 DO m = 1,nfields(n)
153 ndId = ABS(jdiag(m,n))
154 READ(dUnit,'(I10)') ndiag(ndId,1,1)
155 ENDDO
156 ENDDO
157 CLOSE( dUnit )
158 C- Need to fill-in ndiag for other tiles
159 DO bj=1,nSy
160 DO bi=1,nSx
161 DO n=1,ndiagt
162 ndiag(n,bi,bj) = ndiag(n,1,1)
163 ENDDO
164 ENDDO
165 ENDDO
166 _END_MASTER(myThid)
167 _BARRIER
168 ENDIF
169
170 ENDIF
171
172 #endif /* DIAGNOSTICS_HAS_PICKUP */
173
174 RETURN
175 END

  ViewVC Help
Powered by ViewVC 1.1.22