/[MITgcm]/MITgcm/pkg/mypackage/mypackage_read_pickup.F
ViewVC logotype

Contents of /MITgcm/pkg/mypackage/mypackage_read_pickup.F

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


Revision 1.5 - (show annotations) (download)
Tue Apr 3 00:20:14 2012 UTC (13 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint64, checkpoint65, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e
Changes since 1.4: +6 -1 lines
add a call to ALL_PROC_DIE before stopping

1 C $Header: /u/gcmpack/MITgcm/pkg/mypackage/mypackage_read_pickup.F,v 1.4 2011/08/25 03:08:41 jmc Exp $
2 C $Name: $
3
4 #include "MYPACKAGE_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 CBOP
8 C !ROUTINE: MYPACKAGE_READ_PICKUP
9
10 C !INTERFACE:
11 SUBROUTINE MYPACKAGE_READ_PICKUP( myIter, myThid )
12
13 C !DESCRIPTION:
14 C Reads current state of MYPACKAGE from a pickup file
15
16 C !USES:
17 IMPLICIT NONE
18 #include "SIZE.h"
19 #include "EEPARAMS.h"
20 #include "PARAMS.h"
21 #include "MYPACKAGE.h"
22
23 C !INPUT PARAMETERS:
24 C myIter :: time-step number
25 C myThid :: thread number
26 INTEGER myIter
27 INTEGER myThid
28
29 #ifdef ALLOW_MYPACKAGE
30 #if (defined MYPACKAGE_3D_STATE) || (defined MYPACKAGE_2D_STATE)
31
32 C !LOCAL VARIABLES:
33 C fn :: character buffer for creating filename
34 C fp :: precision of pickup files
35 C filePrec :: pickup-file precision (read from meta file)
36 C nbFields :: number of fields in pickup file (read from meta file)
37 C missFldList :: List of missing fields (attempted to read but not found)
38 C missFldDim :: Dimension of missing fields list array: missFldList
39 C nMissing :: Number of missing fields (attempted to read but not found)
40 C j :: loop index
41 C nj :: record number
42 C ioUnit :: temp for writing msg unit
43 C msgBuf :: Informational/error message buffer
44 INTEGER fp
45 INTEGER filePrec, nbFields
46 INTEGER missFldDim, nMissing
47 INTEGER j, nj, ioUnit
48 PARAMETER( missFldDim = 12 )
49 CHARACTER*(MAX_LEN_FNAM) fn
50 CHARACTER*(8) missFldList(missFldDim)
51 CHARACTER*(MAX_LEN_MBUF) msgBuf
52 CEOP
53
54 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
55
56 IF ( pickupSuff.EQ.' ' ) THEN
57 WRITE(fn,'(A,I10.10)') 'pickup_mypackage.',myIter
58 ELSE
59 WRITE(fn,'(A,A10)') 'pickup_mypackage.',pickupSuff
60 ENDIF
61 fp = precFloat64
62
63 CALL READ_MFLDS_SET(
64 I fn,
65 O nbFields, filePrec,
66 I Nr, myIter, myThid )
67 _BEGIN_MASTER( myThid )
68 c IF ( filePrec.NE.0 .AND. filePrec.NE.fp ) THEN
69 IF ( nbFields.GE.0 .AND. filePrec.NE.fp ) THEN
70 WRITE(msgBuf,'(2A,I4)') 'MYPACKAGE_READ_PICKUP: ',
71 & 'pickup-file binary precision do not match !'
72 CALL PRINT_ERROR( msgBuf, myThid )
73 WRITE(msgBuf,'(A,2(A,I4))') 'MYPACKAGE_READ_PICKUP: ',
74 & 'file prec.=', filePrec, ' but expecting prec.=', fp
75 CALL PRINT_ERROR( msgBuf, myThid )
76 CALL ALL_PROC_DIE( 0 )
77 STOP 'ABNORMAL END: S/R MYPACKAGE_READ_PICKUP (data-prec Pb)'
78 ENDIF
79 _END_MASTER( myThid )
80
81 IF ( nbFields.LE.0 ) THEN
82 C- No meta-file or old meta-file without List of Fields
83 ioUnit = errorMessageUnit
84 IF ( pickupStrictlyMatch ) THEN
85 WRITE(msgBuf,'(4A)') 'MYPACKAGE_READ_PICKUP: ',
86 & 'no field-list found in meta-file',
87 & ' => cannot check for strick-matching'
88 CALL PRINT_ERROR( msgBuf, myThid )
89 WRITE(msgBuf,'(4A)') 'MYPACKAGE_READ_PICKUP: ',
90 & 'try with " pickupStrictlyMatch=.FALSE.,"',
91 & ' in file: "data", NameList: "PARM03"'
92 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
93 CALL ALL_PROC_DIE( myThid )
94 STOP 'ABNORMAL END: S/R MYPACKAGE_READ_PICKUP'
95 ELSE
96 WRITE(msgBuf,'(4A)') 'WARNING >> MYPACKAGE_READ_PICKUP: ',
97 & ' no field-list found'
98 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
99 IF ( nbFields.EQ.-1 ) THEN
100 C- No meta-file
101 WRITE(msgBuf,'(4A)') 'WARNING >> ',
102 & ' try to read pickup as currently written'
103 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
104 ELSE
105 C- Old meta-file without List of Fields
106 c WRITE(msgBuf,'(4A)') 'WARNING >> ',
107 c & ' try to read pickup as it used to be written'
108 c CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
109 c WRITE(msgBuf,'(4A)') 'WARNING >> ',
110 c & ' until checkpoint59l (2007 Dec 17)'
111 c CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
112 WRITE(msgBuf,'(4A)') 'MYPACKAGE_READ_PICKUP: ',
113 & 'no field-list found in meta-file'
114 CALL PRINT_ERROR( msgBuf, myThid )
115 CALL ALL_PROC_DIE( myThid )
116 STOP 'ABNORMAL END: S/R MYPACKAGE_READ_PICKUP'
117 ENDIF
118 ENDIF
119 ENDIF
120
121 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
122
123 IF ( nbFields.EQ.0 ) THEN
124 C--- Old way to read pickup:
125
126 ELSE
127 C--- New way to read MYPACKAGE pickup:
128 nj = 0
129 C--- read MYPACKAGE 3-D fields for restart
130 #ifdef MYPACKAGE_3D_STATE
131 CALL READ_MFLDS_3D_RL( 'myPaSta1', myPa_StatScal1,
132 & nj, fp, Nr, myIter, myThid )
133 CALL READ_MFLDS_3D_RL( 'myPaSta2', myPa_StatScal2,
134 & nj, fp, Nr, myIter, myThid )
135 CALL READ_MFLDS_3D_RL( 'myPaStaU', myPa_StatVelU,
136 & nj, fp, Nr, myIter, myThid )
137 CALL READ_MFLDS_3D_RL( 'myPaStaV', myPa_StatVelV,
138 & nj, fp, Nr, myIter, myThid )
139 #endif /* MYPACKAGE_3D_STATE */
140 nj = nj*Nr
141 C--- read MYPACKAGE 2-D fields for restart
142 #ifdef MYPACKAGE_2D_STATE
143 CALL READ_MFLDS_3D_RL( 'myPaSur1', myPa_Surf1,
144 & nj, fp, 1 , myIter, myThid )
145 CALL READ_MFLDS_3D_RL( 'myPaSur2', myPa_Surf2,
146 & nj, fp, 1 , myIter, myThid )
147 #endif /* MYPACKAGE_2D_STATE */
148
149 C-- end: new way to read pickup file
150 ENDIF
151
152 C-- Check for missing fields:
153 nMissing = missFldDim
154 CALL READ_MFLDS_CHECK(
155 O missFldList,
156 U nMissing,
157 I myIter, myThid )
158 IF ( nMissing.GT.missFldDim ) THEN
159 WRITE(msgBuf,'(2A,I4)') 'MYPACKAGE_READ_PICKUP: ',
160 & 'missing fields list has been truncated to', missFldDim
161 CALL PRINT_ERROR( msgBuf, myThid )
162 CALL ALL_PROC_DIE( myThid )
163 STOP 'ABNORMAL END: S/R MYPACKAGE_READ_PICKUP (list-size Pb)'
164 ENDIF
165 IF ( nMissing.GE.1 ) THEN
166 ioUnit = errorMessageUnit
167 DO j=1,nMissing
168 WRITE(msgBuf,'(4A)') 'MYPACKAGE_READ_PICKUP: ',
169 & 'cannot restart without field "',missFldList(nj),'"'
170 CALL PRINT_ERROR( msgBuf, myThid )
171 ENDDO
172 CALL ALL_PROC_DIE( myThid )
173 STOP 'ABNORMAL END: S/R MYPACKAGE_READ_PICKUP'
174 ENDIF
175
176 C-- Update overlap regions:
177 #ifdef MYPACKAGE_3D_STATE
178 CALL EXCH_3D_RL( myPa_StatScal1, Nr, myThid )
179 CALL EXCH_3D_RL( myPa_StatScal2, Nr, myThid )
180 IF ( myPa_StaV_Cgrid ) THEN
181 CALL EXCH_UV_3D_RL( myPa_StatVelU, myPa_StatVelV,
182 & .TRUE., Nr, myThid )
183 ELSE
184 C- Assume Agrid position:
185 CALL EXCH_UV_AGRID_3D_RL( myPa_StatVelU, myPa_StatVelV,
186 & .TRUE., Nr, myThid )
187 ENDIF
188 #endif /* MYPACKAGE_3D_STATE */
189 #ifdef MYPACKAGE_2D_STATE
190 CALL EXCH_XY_RL( myPa_Surf1, myThid )
191 CALL EXCH_XY_RL( myPa_Surf2, myThid )
192 #endif /* MYPACKAGE_2D_STATE */
193
194 #endif /* MYPACKAGE_3D_STATE or MYPACKAGE_2D_STATE */
195 #endif /* ALLOW_MYPACKAGE */
196
197 RETURN
198 END

  ViewVC Help
Powered by ViewVC 1.1.22