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

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

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


Revision 1.7 - (hide 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 jmc 1.7 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_read_pickup.F,v 1.6 2009/08/27 18:00:01 jmc 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 jmc 1.5 C !ROUTINE: DIAGNOSTICS_READ_PICKUP
9 edhill 1.1 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 jmc 1.6 INTEGER bi,bj
37     INTEGER prec, sn
38 edhill 1.1 CHARACTER*(MAX_LEN_FNAM) fn
39    
40     INTEGER ILNBLNK
41     EXTERNAL ILNBLNK
42    
43 jmc 1.7 INTEGER dUnit, ndId, n, m
44 edhill 1.1
45     #ifdef ALLOW_MNC
46 jmc 1.6 INTEGER i, ii
47 edhill 1.1 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 jmc 1.5
74 edhill 1.1 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 jmc 1.5 dim(3) = numDiags
90 edhill 1.1 ib(3) = 1
91 jmc 1.5 ie(3) = numDiags
92 edhill 1.1 dn(4)(1:1) = 'T'
93     dim(4) = -1
94     ib(4) = 1
95     ie(4) = 1
96 jmc 1.5 CALL MNC_CW_ADD_GNAME(d_cw_name, 4,
97 edhill 1.1 & dim, dn, ib, ie, myThid)
98 jmc 1.5 CALL MNC_CW_ADD_VNAME(d_cw_name, d_cw_name,
99 edhill 1.1 & 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 jmc 1.5
105 edhill 1.1 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 jmc 1.5 dim(1) = numDiags
113 edhill 1.1 ib(1) = 1
114 jmc 1.5 ie(1) = numDiags
115 edhill 1.1 dn(2)(1:1) = 'T'
116     dim(2) = -1
117     ib(2) = 1
118     ie(2) = 1
119 jmc 1.5 CALL MNC_CW_ADD_GNAME(d_cw_name, 2,
120 edhill 1.1 & dim, dn, ib, ie, myThid)
121 jmc 1.5 CALL MNC_CW_ADD_VNAME(d_cw_name, d_cw_name,
122 edhill 1.1 & 4,5, myThid)
123     CALL MNC_CW_ADD_VATTR_TEXT(d_cw_name,'description',
124     & 'diagnostics state',myThid)
125 jmc 1.4 C- jmc: get warnings when I compile this S/R because something is not right
126 jmc 1.5 C in the type or one or more arguments. commented out for now
127 jmc 1.4 c CALL MNC_CW_RL_R('I',diag_mnc_bn,0,0,
128     c & d_cw_name, ndiag, myThid)
129 edhill 1.1 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 jmc 1.5
135 edhill 1.1 IF (diag_pickup_read_mdsio) THEN
136    
137     C Read qdiag()
138 jmc 1.6 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 edhill 1.1
143     C Read ndiag()
144 jmc 1.6 _BARRIER
145     _BEGIN_MASTER(myThid)
146    
147     C-- jmc: should really write 1 file per tile
148 edhill 1.1 WRITE(fn,'(A,I10.10)') 'pickup_ndiag.', nIter0
149 jmc 1.6 CALL MDSFINDUNIT( dUnit, myThid )
150 edhill 1.1 OPEN( dUnit, file=fn )
151 jmc 1.2 DO n = 1,nlists
152 edhill 1.3 DO m = 1,nfields(n)
153 jmc 1.7 ndId = ABS(jdiag(m,n))
154     READ(dUnit,'(I10)') ndiag(ndId,1,1)
155 edhill 1.3 ENDDO
156 edhill 1.1 ENDDO
157     CLOSE( dUnit )
158 jmc 1.6 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 edhill 1.1 _END_MASTER(myThid)
167 jmc 1.6 _BARRIER
168 edhill 1.1 ENDIF
169    
170     ENDIF
171    
172     #endif /* DIAGNOSTICS_HAS_PICKUP */
173    
174     RETURN
175     END

  ViewVC Help
Powered by ViewVC 1.1.22