/[MITgcm]/MITgcm/pkg/shap_filt/shap_filt_readparms.F
ViewVC logotype

Contents of /MITgcm/pkg/shap_filt/shap_filt_readparms.F

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


Revision 1.16 - (show annotations) (download)
Tue May 27 23:41:30 2014 UTC (9 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66i, checkpoint66h, checkpoint65o, checkpoint64y, checkpoint64z
Changes since 1.15: +15 -4 lines
add a call to S/R packages_unused_msg.F to print a weak warning
when parameter file "data.this_pkg" exist but  but useTHIS_PKG=F

1 C $Header: /u/gcmpack/MITgcm/pkg/shap_filt/shap_filt_readparms.F,v 1.15 2009/04/28 23:27:24 jmc Exp $
2 C $Name: $
3
4 #include "SHAP_FILT_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: SHAP_FILT_READPARMS
8 C !INTERFACE:
9 SUBROUTINE SHAP_FILT_READPARMS( myThid )
10
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | SUBROUTINE SHAP_FILT_READPARMS
14 C | o Routine to initialize Shapiro Filter parameters
15 C *==========================================================*
16 C *==========================================================*
17 C \ev
18
19 C !USES:
20 IMPLICIT NONE
21
22 C === Global variables ===
23 #include "SIZE.h"
24 #include "EEPARAMS.h"
25 #include "PARAMS.h"
26 #include "SHAP_FILT.h"
27
28 C !INPUT/OUTPUT PARAMETERS:
29 C === Routine arguments ===
30 INTEGER myThid
31
32 #ifdef ALLOW_SHAP_FILT
33
34 C !LOCAL VARIABLES:
35 C === Local variables ===
36 C msgBuf :: Informational/error message buffer
37 C iUnit :: Work variable for IO unit number
38 CHARACTER*(MAX_LEN_MBUF) msgBuf
39 INTEGER iUnit
40 CEOP
41
42 NAMELIST /SHAP_PARM01/
43 & Shap_funct, shap_filt_uvStar, shap_filt_TrStagg,
44 & Shap_alwaysExchUV, Shap_alwaysExchTr,
45 & nShapT,nShapS, nShapTrPhys, Shap_Trtau, Shap_TrLength,
46 & nShapUV, nShapUVPhys, Shap_uvtau, Shap_uvLength,
47 & Shap_noSlip, Shap_diagFreq
48
49 IF ( .NOT.useSHAP_FILT ) THEN
50 C- pkg SHAP_FILT is not used
51 _BEGIN_MASTER(myThid)
52 C- Track pkg activation status:
53 c SHAPIsOn = .FALSE.
54 C print a (weak) warning if data.shap is found
55 CALL PACKAGES_UNUSED_MSG( 'useSHAP_FILT', ' ', 'shap' )
56 _END_MASTER(myThid)
57 RETURN
58 ENDIF
59
60 C-- SHAP_FILT_READPARMS has been called so we know that
61 C the package is active.
62 c SHAPIsOn = .TRUE.
63
64 _BEGIN_MASTER(myThid)
65
66 WRITE(msgBuf,'(A)') ' SHAP_FILT_READPARMS: opening data.shap'
67 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
68 & SQUEEZE_RIGHT , 1)
69
70 CALL OPEN_COPY_DATA_FILE(
71 I 'data.shap', 'SHAP_FILT_READPARMS',
72 O iUnit,
73 I myThid )
74
75 C-- Default flags and values for Shapiro Filter
76 Shap_funct = 2
77 shap_filt_uvStar = .TRUE.
78 shap_filt_TrStagg = .TRUE.
79 Shap_alwaysExchUV = .FALSE.
80 Shap_alwaysExchTr = .FALSE.
81 nShapT = 0
82 nShapS = -1
83 nShapUV = 0
84 nShapTrPhys = 0
85 nShapUVPhys = 0
86 Shap_Trtau = dTtracerLev(1)
87 Shap_TrLength = 0.
88 Shap_uvtau = deltaTMom
89 Shap_TrLength = 0.
90 Shap_noSlip = 0.
91 Shap_diagFreq = diagFreq
92
93 C-- Read parameters from open data file
94 READ(UNIT=iUnit,NML=SHAP_PARM01)
95
96 WRITE(msgBuf,'(A)')
97 & ' SHAP_FILT_READPARMS: finished reading data.shap'
98 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
99 & SQUEEZE_RIGHT , 1)
100
101 C-- Close the open data file
102 CLOSE(iUnit)
103
104 C for backward compatibility:
105 IF (nShapS.EQ.-1) nShapS = nShapT
106
107 IF (Shap_funct.EQ.20) THEN
108 C use shap-funct S2 with nShap_Phys=nShap
109 C to get exactly the same results as shap-funct S2G.
110 nShapTrPhys = MAX(nShapT,nShapS)
111 nShapUVPhys = nShapUV
112 ENDIF
113
114 IF ( Shap_funct.EQ.1 .OR. Shap_funct.EQ.4
115 & .OR. Shap_funct.EQ.21
116 & ) THEN
117 Shap_alwaysExchUV = .TRUE.
118 ENDIF
119 IF ( Shap_funct.EQ.1 .OR. Shap_funct.EQ.4
120 & ) THEN
121 Shap_alwaysExchTr = .TRUE.
122 ENDIF
123
124 C- print out some kee parameters :
125 CALL WRITE_0D_I( Shap_funct, INDEX_NONE,
126 & 'Shap_funct =',
127 & ' /* select Shapiro filter function */')
128 CALL WRITE_0D_I( nShapT , INDEX_NONE,
129 & 'nShapT =',
130 & ' /* power of Shapiro filter for Temperat */')
131 CALL WRITE_0D_I( nShapS , INDEX_NONE,
132 & 'nShapS =',
133 & ' /* power of Shapiro filter for Salinity */')
134 CALL WRITE_0D_I( nShapUV, INDEX_NONE,
135 & 'nShapUV =',
136 & ' /* power of Shapiro filter for momentum */')
137
138 CALL WRITE_0D_L( shap_filt_uvStar, INDEX_NONE,
139 & 'shap_filt_uvStar =',' /* apply filter before Press. Solver */')
140 CALL WRITE_0D_L( shap_filt_TrStagg, INDEX_NONE,
141 & 'shap_filt_TrStagg =',
142 & ' /* filter T,S before calc PhiHyd (staggerTimeStep) */')
143 CALL WRITE_0D_L( Shap_alwaysExchUV, INDEX_NONE,
144 & 'Shap_alwaysExchUV =',' /* always exch(U,V) nShapUV times*/')
145 CALL WRITE_0D_L( Shap_alwaysExchTr, INDEX_NONE,
146 & 'Shap_alwaysExchTr =',' /* always exch(Tracer) nShapTr times*/')
147
148 IF (Shap_funct.EQ.2) THEN
149 CALL WRITE_0D_I( nShapTrPhys, INDEX_NONE,
150 & 'nShapTrPhys =',
151 & ' /* power of physical-space filter (Tracer) */')
152 CALL WRITE_0D_I( nShapUVPhys, INDEX_NONE,
153 & 'nShapUVPhys =',
154 & ' /* power of physical-space filter (Momentum) */')
155 ENDIF
156
157 CALL WRITE_0D_RL( Shap_Trtau, INDEX_NONE,
158 & 'Shap_Trtau =',
159 & ' /* time scale of Shapiro filter (Tracer) */')
160 CALL WRITE_0D_RL( Shap_TrLength, INDEX_NONE,
161 & 'Shap_TrLength =',
162 & ' /* Length scale of Shapiro filter (Tracer) */')
163 CALL WRITE_0D_RL( Shap_uvtau, INDEX_NONE,
164 & 'Shap_uvtau =',
165 & ' /* time scale of Shapiro filter (Momentum) */')
166 CALL WRITE_0D_RL( Shap_uvLength, INDEX_NONE,
167 & 'Shap_uvLength =',
168 & ' /* Length scale of Shapiro filter (Momentum) */')
169 CALL WRITE_0D_RL( Shap_noSlip, INDEX_NONE,
170 & 'Shap_noSlip =',
171 & ' /* No-slip parameter (0=Free-slip ; 1=No-slip)*/')
172 CALL WRITE_0D_RL( Shap_diagFreq, INDEX_NONE,
173 & 'Shap_diagFreq =',
174 & ' /* Frequency^-1 for diagnostic output (s)*/')
175
176 C-- Check the Options :
177 #ifndef USE_OLD_SHAPIRO_FILTERS
178 #ifdef NO_SLIP_SHAP
179 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
180 WRITE(msgBuf,'(2A)') 'SHAP_FILT: CPP-option NO_SLIP_SHAP',
181 & ' only in OLD_SHAPIRO S/R ;'
182 CALL PRINT_ERROR( msgBuf , 1)
183 WRITE(msgBuf,'(2A)') ' ==> use parameter Shap_noSlip=1. ',
184 & '(in "data.shap") instead'
185 CALL PRINT_ERROR( msgBuf , 1)
186 STOP 'ABNORMAL END: S/R SHAP_FILT_READPARMS'
187 #endif
188 #endif
189
190 C-- Check the parameters :
191
192 IF ( .NOT.shap_filt_uvStar ) THEN
193
194 C- Notes: applying the filter at the end of the time step (after SOLVE_FOR_P)
195 C affects the barotropic flow divergence ; this might not be consistent
196 C with some option of the code.
197
198 IF ( rigidLid ) THEN
199 WRITE(msgBuf,'(2A)') 'SHAP_FILT with rigidLid ',
200 & 'needs shap_filt_uvStar=.true.'
201 CALL PRINT_ERROR( msgBuf , 1)
202 STOP 'ABNORMAL END: S/R SHAP_FILT_READPARMS'
203 ELSEIF ( .NOT.exactConserv ) THEN
204 WRITE(msgBuf,'(2A)') 'S/R SHAP_FILT_READPARMS: WARNING <<< ',
205 & 'applying Filter after SOLVE_FOR_P (shap_filt_uvStar=FALSE)'
206 CALL PRINT_MESSAGE(msgBuf, errorMessageUnit, SQUEEZE_RIGHT,1)
207 WRITE(msgBuf,'(2A)') 'S/R SHAP_FILT_READPARMS: WARNING <<< ',
208 & 'requires to recompute Eta after ==> turn on exactConserv '
209 CALL PRINT_MESSAGE(msgBuf, errorMessageUnit, SQUEEZE_RIGHT,1)
210 ENDIF
211
212 ENDIF
213
214 C- Some Filters / options are not available on CS-grid:
215 IF (useCubedSphereExchange) THEN
216 IF ( Shap_funct.EQ.1 .OR. Shap_funct.EQ.4 ) THEN
217 WRITE(msgBuf,'(2A,I3)') 'SHAP_FILT on CS-grid ',
218 & 'does not work with Shap_funct=', Shap_funct
219 CALL PRINT_ERROR( msgBuf , 1)
220 STOP 'ABNORMAL END: S/R SHAP_FILT_READPARMS'
221 ELSEIF ( Shap_funct.EQ.21 .AND. nShapUV.GT.0
222 & .AND. nSx*nSy*nPx*nPy .NE. 6 ) THEN
223 WRITE(msgBuf,'(2A)') 'SHAP_FILT on CS-grid:',
224 & ' multi-tiles / face not implemented with'
225 CALL PRINT_ERROR( msgBuf , 1)
226 WRITE(msgBuf,'(A,I3,A)') ' Shap_funct=', Shap_funct,
227 & ' ; => use instead Shap_funct=2 & nShap[]Phys=0'
228 CALL PRINT_ERROR( msgBuf , 1)
229 STOP 'ABNORMAL END: S/R SHAP_FILT_READPARMS'
230 ENDIF
231 ENDIF
232
233 _END_MASTER(myThid)
234
235 C-- Everyone else must wait for the parameters to be loaded
236 _BARRIER
237
238 #endif /* ALLOW_SHAP_FILT */
239 RETURN
240 END

  ViewVC Help
Powered by ViewVC 1.1.22