/[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.3 - (show annotations) (download)
Sun Sep 14 18:41:55 2008 UTC (15 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62t, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y
Changes since 1.2: +67 -20 lines
allow to restart without SOM pickup (resetting SOM to zero).

1 C $Header: /u/gcmpack/MITgcm/pkg/generic_advdiff/gad_read_pickup.F,v 1.2 2008/05/09 21:43:16 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*(MAX_LEN_FNAM) fn, filNam
42 CHARACTER*(MAX_LEN_MBUF) msgBuf
43 INTEGER ioUnit
44 LOGICAL fileExist
45 CEOP
46
47 C- Need to synchronize here before doing master-thread IO
48 C note: not presently needed (synchronized through MDS_CHECK4FILE call)
49 c _BARRIER
50 ioUnit = errorMessageUnit
51
52 #ifdef ALLOW_MNC
53 IF ( useMNC .AND. pickup_read_mnc ) THEN
54 c IF ( tempSOM_Advection ) THEN
55 C Read variables from the pickup file
56 c WRITE(fn,'(a)') 'pickup_som'
57 c CALL MNC_FILE_CLOSE_ALL_MATCHING(fn, myThid)
58 c CALL MNC_CW_SET_UDIM(fn, 1, myThid)
59 c CALL MNC_CW_SET_CITER(fn, 3, 3, myIter, -1, myThid)
60 c prefix = 'somT_'
61 c DO n = 1,nSOM
62 c CALL MNC_CW_RL_R('D',fn,0,0, som_name,
63 c & som_T(1-OLx,1-OLy,1,1,1,n),myThid)
64 c ENDDO
65 c ENDIF
66 ENDIF
67 #endif /* ALLOW_MNC */
68
69 c IF ( pickup_read_mdsio .AND. tempSOM_Advection ) THEN
70 IF ( tempSOM_Advection ) THEN
71 C-- Pot. Temp. 2nd.Order moments
72
73 IF (pickupSuff .EQ. ' ') THEN
74 WRITE(fn,'(A,I10.10)') 'pickup_somT.', myIter
75 ELSE
76 WRITE(fn,'(A,A10)') 'pickup_somT.', pickupSuff
77 ENDIF
78
79 C- First check if pickup file exist
80 CALL MDS_CHECK4FILE(
81 I fn, '.data', 'GAD_READ_PICKUP',
82 O filNam, fileExist,
83 I myThid )
84
85 IF ( fileExist ) THEN
86 C- Read 2nd Order moments as consecutive records
87 prec = precFloat64
88 DO n=1,nSOM
89 iRec = n
90 CALL READ_REC_3D_RL( fn, prec, Nr,
91 O som_T(1-Olx,1-Oly,1,1,1,n),
92 I iRec, myIter, myThid )
93 ENDDO
94 ELSE
95 IF ( pickupStrictlyMatch ) THEN
96 WRITE(msgBuf,'(4A)') 'GAD_READ_PICKUP: ',
97 & 'try with " pickupStrictlyMatch=.FALSE.,"',
98 & ' in file: "data", NameList: "PARM03"'
99 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
100 STOP 'ABNORMAL END: S/R GAD_READ_PICKUP'
101 ELSE
102 WRITE(msgBuf,'(2A)') 'WARNING >> GAD_READ_PICKUP: ',
103 & 'approximated restart: reset SOM_T to zero'
104 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
105 ENDIF
106 ENDIF
107
108 ENDIF
109
110 c IF ( pickup_read_mdsio .AND. saltSOM_Advection ) THEN
111 IF ( saltSOM_Advection ) THEN
112 C-- Salinity 2nd.Order moments
113
114 IF (pickupSuff .EQ. ' ') THEN
115 WRITE(fn,'(A,I10.10)') 'pickup_somS.', myIter
116 ELSE
117 WRITE(fn,'(A,A10)') 'pickup_somS.', pickupSuff
118 ENDIF
119
120 C- First check if pickup file exist
121 CALL MDS_CHECK4FILE(
122 I fn, '.data', 'GAD_READ_PICKUP',
123 O filNam, fileExist,
124 I myThid )
125
126 IF ( fileExist ) THEN
127 C- Read 2nd Order moments as consecutive records
128 prec = precFloat64
129 DO n=1,nSOM
130 iRec = n
131 CALL READ_REC_3D_RL( fn, prec, Nr,
132 O som_S(1-Olx,1-Oly,1,1,1,n),
133 I iRec, myIter, myThid )
134 ENDDO
135 ELSE
136 IF ( pickupStrictlyMatch ) THEN
137 WRITE(msgBuf,'(4A)') 'GAD_READ_PICKUP: ',
138 & 'try with " pickupStrictlyMatch=.FALSE.,"',
139 & ' in file: "data", NameList: "PARM03"'
140 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
141 STOP 'ABNORMAL END: S/R GAD_READ_PICKUP'
142 ELSE
143 WRITE(msgBuf,'(2A)') 'WARNING >> GAD_READ_PICKUP: ',
144 & 'approximated restart: reset SOM_S to zero'
145 CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
146 ENDIF
147 ENDIF
148
149 ENDIF
150
151 #endif /* GAD_ALLOW_TS_SOM_ADV */
152
153 RETURN
154 END

  ViewVC Help
Powered by ViewVC 1.1.22