/[MITgcm]/MITgcm/pkg/generic_advdiff/gad_read_pickup.F
ViewVC logotype

Contents of /MITgcm/pkg/generic_advdiff/gad_read_pickup.F

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


Revision 1.5 - (show annotations) (download)
Fri Mar 24 23:38:56 2017 UTC (7 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, HEAD
Changes since 1.4: +16 -5 lines
use new S/R RW_GET_SUFFIX to get file suffix (according to "rwSuffixType")

1 C $Header: /u/gcmpack/MITgcm/pkg/generic_advdiff/gad_read_pickup.F,v 1.4 2011/03/14 01:37:04 jmc Exp $
2 C $Name: $
3
4 #include "GAD_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 CBOP
8 C !ROUTINE: GAD_READ_PICKUP
9
10 C !INTERFACE:
11 SUBROUTINE GAD_READ_PICKUP( myIter, myThid )
12
13 C !DESCRIPTION:
14 C Reads current state of 2nd.Order moments 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 "GAD.h"
22 #include "GAD_SOM_VARS.h"
23 #ifdef ALLOW_MNC
24 #include "MNC_PARAMS.h"
25 #endif
26
27 C !INPUT PARAMETERS:
28 C myIter :: time-step number
29 C myThid :: thread number
30 INTEGER myIter
31 INTEGER myThid
32
33 #ifdef GAD_ALLOW_TS_SOM_ADV
34
35 C !LOCAL VARIABLES:
36 C n :: 2nd.O. moment loop index
37 C iRec :: record number
38 C fn :: character buffer for creating filename
39 C prec :: precision of pickup files
40 INTEGER n, prec, iRec
41 CHARACTER*(10) suff
42 CHARACTER*(MAX_LEN_FNAM) fn, filNam
43 CHARACTER*(MAX_LEN_MBUF) msgBuf
44 INTEGER ioUnit
45 LOGICAL useCurrentDir, fileExist
46 CEOP
47
48 C- Need to synchronize here before doing master-thread IO
49 C note: not presently needed (synchronized through MDS_CHECK4FILE call)
50 c _BARRIER
51 ioUnit = errorMessageUnit
52
53 #ifdef ALLOW_MNC
54 IF ( useMNC .AND. pickup_read_mnc ) THEN
55 c IF ( tempSOM_Advection ) THEN
56 C Read variables from the pickup file
57 c WRITE(fn,'(a)') 'pickup_som'
58 c CALL MNC_FILE_CLOSE_ALL_MATCHING(fn, myThid)
59 c CALL MNC_CW_SET_UDIM(fn, 1, myThid)
60 c CALL MNC_CW_SET_CITER(fn, 3, 3, myIter, -1, myThid)
61 c prefix = 'somT_'
62 c DO n = 1,nSOM
63 c CALL MNC_CW_RL_R('D',fn,0,0, som_name,
64 c & som_T(1-OLx,1-OLy,1,1,1,n),myThid)
65 c ENDDO
66 c ENDIF
67 ENDIF
68 #endif /* ALLOW_MNC */
69
70 c IF ( pickup_read_mdsio .AND. tempSOM_Advection ) THEN
71 IF ( tempSOM_Advection ) THEN
72 C-- Pot. Temp. 2nd.Order moments
73
74 IF (pickupSuff .EQ. ' ') THEN
75 IF ( rwSuffixType.EQ.0 ) THEN
76 WRITE(fn,'(A,I10.10)') 'pickup_somT.', myIter
77 ELSE
78 CALL RW_GET_SUFFIX( suff, startTime, myIter, myThid )
79 WRITE(fn,'(A,A)') 'pickup_somT.', suff
80 ENDIF
81 ELSE
82 WRITE(fn,'(A,A10)') 'pickup_somT.', pickupSuff
83 ENDIF
84
85 C- First check if pickup file exist
86 #ifdef ALLOW_MDSIO
87 useCurrentDir = .FALSE.
88 CALL MDS_CHECK4FILE(
89 I fn, '.data', 'GAD_READ_PICKUP',
90 O filNam, fileExist,
91 I useCurrentDir, myThid )
92 #else
93 STOP 'ABNORMAL END: S/R GAD_READ_PICKUP: Needs MDSIO pkg'
94 #endif
95
96 IF ( fileExist ) THEN
97 C- Read 2nd Order moments as consecutive records
98 prec = precFloat64
99 DO n=1,nSOM
100 iRec = n
101 CALL READ_REC_3D_RL( fn, prec, Nr,
102 O som_T(1-OLx,1-OLy,1,1,1,n),
103 I iRec, myIter, myThid )
104 ENDDO
105 ELSE
106 IF ( pickupStrictlyMatch ) THEN
107 WRITE(msgBuf,'(4A)') 'GAD_READ_PICKUP: ',
108 & 'try with " pickupStrictlyMatch=.FALSE.,"',
109 & ' in file: "data", NameList: "PARM03"'
110 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
111 STOP 'ABNORMAL END: S/R GAD_READ_PICKUP'
112 ELSE
113 WRITE(msgBuf,'(2A)') 'WARNING >> GAD_READ_PICKUP: ',
114 & 'approximated restart: reset SOM_T to zero'
115 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
116 ENDIF
117 ENDIF
118
119 ENDIF
120
121 c IF ( pickup_read_mdsio .AND. saltSOM_Advection ) THEN
122 IF ( saltSOM_Advection ) THEN
123 C-- Salinity 2nd.Order moments
124
125 IF (pickupSuff .EQ. ' ') THEN
126 IF ( rwSuffixType.EQ.0 ) THEN
127 WRITE(fn,'(A,I10.10)') 'pickup_somS.', myIter
128 ELSE
129 CALL RW_GET_SUFFIX( suff, startTime, myIter, myThid )
130 WRITE(fn,'(A,A)') 'pickup_somS.', suff
131 ENDIF
132 ELSE
133 WRITE(fn,'(A,A10)') 'pickup_somS.', pickupSuff
134 ENDIF
135
136 C- First check if pickup file exist
137 #ifdef ALLOW_MDSIO
138 useCurrentDir = .FALSE.
139 CALL MDS_CHECK4FILE(
140 I fn, '.data', 'GAD_READ_PICKUP',
141 O filNam, fileExist,
142 I useCurrentDir, myThid )
143 #else
144 STOP 'ABNORMAL END: S/R GAD_READ_PICKUP: Needs MDSIO pkg'
145 #endif
146
147 IF ( fileExist ) THEN
148 C- Read 2nd Order moments as consecutive records
149 prec = precFloat64
150 DO n=1,nSOM
151 iRec = n
152 CALL READ_REC_3D_RL( fn, prec, Nr,
153 O som_S(1-OLx,1-OLy,1,1,1,n),
154 I iRec, myIter, myThid )
155 ENDDO
156 ELSE
157 IF ( pickupStrictlyMatch ) THEN
158 WRITE(msgBuf,'(4A)') 'GAD_READ_PICKUP: ',
159 & 'try with " pickupStrictlyMatch=.FALSE.,"',
160 & ' in file: "data", NameList: "PARM03"'
161 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
162 STOP 'ABNORMAL END: S/R GAD_READ_PICKUP'
163 ELSE
164 WRITE(msgBuf,'(2A)') 'WARNING >> GAD_READ_PICKUP: ',
165 & 'approximated restart: reset SOM_S to zero'
166 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
167 ENDIF
168 ENDIF
169
170 ENDIF
171
172 #endif /* GAD_ALLOW_TS_SOM_ADV */
173
174 RETURN
175 END

  ViewVC Help
Powered by ViewVC 1.1.22