File indexing completed on 2018-06-09 05:10:00 UTC
view on githubraw file Latest commit 46918f1b on 2018-06-01 20:55:34 UTC
785a077159 Alis*0001 #include "PTRACERS_OPTIONS.h"
46918f1b26 Jean*0002 #include "GAD_OPTIONS.h"
785a077159 Alis*0003
d2825c6d08 Ed H*0004
785a077159 Alis*0005
d2825c6d08 Ed H*0006
e6469f285f Jean*0007
d2825c6d08 Ed H*0008
785a077159 Alis*0009 SUBROUTINE PTRACERS_READPARMS( myThid )
e6469f285f Jean*0010
d2825c6d08 Ed H*0011
785a077159 Alis*0012
0013
d2825c6d08 Ed H*0014
785a077159 Alis*0015 IMPLICIT NONE
0016 #include "SIZE.h"
0017 #include "EEPARAMS.h"
4e66ab0b67 Oliv*0018 #ifdef ALLOW_LONGSTEP
0019 #include "LONGSTEP_PARAMS.h"
0020 #endif
636477d15b Jean*0021 #include "PTRACERS_SIZE.h"
0a278985fd Jean*0022 #include "PTRACERS_PARAMS.h"
981f32514d Dimi*0023 #include "PARAMS.h"
50653b81f1 Ed H*0024 #ifdef ALLOW_MNC
0025 #include "MNC_PARAMS.h"
0026 #endif
a30418b6b9 Ed H*0027
d2825c6d08 Ed H*0028
785a077159 Alis*0029 INTEGER myThid
d2825c6d08 Ed H*0030
785a077159 Alis*0031
0032 #ifdef ALLOW_PTRACERS
d2825c6d08 Ed H*0033
d75c5feb26 Jean*0034
d2825c6d08 Ed H*0035
0036
d75c5feb26 Jean*0037 INTEGER k, iTracer
785a077159 Alis*0038 INTEGER iUnit
d2825c6d08 Ed H*0039 INTEGER ic
785a077159 Alis*0040 CHARACTER*(MAX_LEN_MBUF) msgBuf
d75c5feb26 Jean*0041 _RL PTRACERS_diffKr(PTRACERS_num)
282caa8385 Jean*0042 _RL tauTr1ClimRelax
785a077159 Alis*0043
636477d15b Jean*0044
0045
282caa8385 Jean*0046
636477d15b Jean*0047 NAMELIST /PTRACERS_PARM01/
282caa8385 Jean*0048 & tauTr1ClimRelax,
dc3a357327 Jean*0049 & PTRACERS_numInUse,
0050 & PTRACERS_Iter0,
fc10d43a89 Jean*0051 & PTRACERS_doAB_onGpTr,
dc3a357327 Jean*0052 & PTRACERS_addSrelax2EmP,
0053 & PTRACERS_startStepFwd,
5d1aafd341 Jean*0054 & PTRACERS_resetFreq,
0055 & PTRACERS_resetPhase,
d2825c6d08 Ed H*0056 & PTRACERS_advScheme,
1883875e84 Jean*0057 & PTRACERS_ImplVertAdv,
d2825c6d08 Ed H*0058 & PTRACERS_diffKh,
0059 & PTRACERS_diffK4,
0060 & PTRACERS_diffKr,
d75c5feb26 Jean*0061 & PTRACERS_diffKrNr,
dd33ff71a5 Mart*0062 & PTRACERS_ref,
e6469f285f Jean*0063 & PTRACERS_EvPrRn,
d2825c6d08 Ed H*0064 & PTRACERS_useGMRedi,
82f84e4873 Jean*0065 & PTRACERS_useDWNSLP,
d2825c6d08 Ed H*0066 & PTRACERS_useKPP,
46918f1b26 Jean*0067 & PTRACERS_linFSConserve,
0068 & PTRACERS_stayPositive,
d2825c6d08 Ed H*0069 & PTRACERS_initialFile,
0070 & PTRACERS_names,
0071 & PTRACERS_long_names,
0072 & PTRACERS_units,
dc3a357327 Jean*0073 & PTRACERS_useRecords,
0074 & PTRACERS_dumpFreq,
0075 & PTRACERS_taveFreq,
0076 & PTRACERS_monitorFreq,
e6469f285f Jean*0077 & PTRACERS_timeave_mnc,
de55280acd Mart*0078 & PTRACERS_snapshot_mnc,
0079 & PTRACERS_monitor_mnc,
e6469f285f Jean*0080 & PTRACERS_pickup_write_mnc,
46918f1b26 Jean*0081 & PTRACERS_pickup_read_mnc
d2825c6d08 Ed H*0082
ae4c29e0db Jean*0083
0084
0085 IF ( .NOT.usePTRACERS ) THEN
0086
0087 _BEGIN_MASTER(myThid)
0088
0089
0090 CALL PACKAGES_UNUSED_MSG( 'usePTRACERS', ' ', ' ' )
0091 _END_MASTER(myThid)
0092 RETURN
0093 ENDIF
0094
6bc4100fab Jean*0095 _BEGIN_MASTER(myThid)
0096
01111eb599 Jean*0097
0098 CALL PTRACERS_SET_IOLABEL(
0099 O PTRACERS_ioLabel,
0100 I PTRACERS_num, myThid )
0101
d2825c6d08 Ed H*0102
f932d407eb Mart*0103 PTRACERS_dumpFreq = dumpFreq
0badf4857e Mart*0104 PTRACERS_taveFreq = taveFreq
0105 PTRACERS_monitorFreq = monitorFreq
727f3ba9e2 Jean*0106 PTRACERS_Iter0 = 0
785a077159 Alis*0107 PTRACERS_numInUse=-1
0108 DO iTracer=1,PTRACERS_num
dc3a357327 Jean*0109 PTRACERS_startStepFwd(iTracer) = baseTime
5d1aafd341 Jean*0110 PTRACERS_resetFreq (iTracer) = 0.
0111 PTRACERS_resetPhase(iTracer) = 0.
d2825c6d08 Ed H*0112 PTRACERS_advScheme(iTracer)=saltAdvScheme
1883875e84 Jean*0113 PTRACERS_ImplVertAdv(iTracer) = .FALSE.
d2825c6d08 Ed H*0114 PTRACERS_diffKh(iTracer)=diffKhS
0115 PTRACERS_diffK4(iTracer)=diffK4S
d75c5feb26 Jean*0116 PTRACERS_diffKr(iTracer)=UNSET_RL
0117 DO k=1,Nr
0118 PTRACERS_diffKrNr(k,iTracer)=diffKrNrS(k)
dd33ff71a5 Mart*0119 PTRACERS_ref (k,iTracer)=0. _d 0
d75c5feb26 Jean*0120 ENDDO
e6469f285f Jean*0121 PTRACERS_EvPrRn(iTracer)=UNSET_RL
d2825c6d08 Ed H*0122 PTRACERS_useGMRedi(iTracer)=useGMRedi
1db41719d4 Jean*0123 PTRACERS_useDWNSLP(iTracer)=useDOWN_SLOPE
a2b9d94edc Jean*0124 PTRACERS_useKPP(iTracer) =useKPP
46918f1b26 Jean*0125 PTRACERS_linFSConserve(iTracer)= .FALSE.
0126 #ifdef GAD_SMOLARKIEWICZ_HACK
0127 PTRACERS_stayPositive(iTracer) = .TRUE.
0128 #else
0129 PTRACERS_stayPositive(iTracer) = .FALSE.
0130 #endif
d2825c6d08 Ed H*0131 PTRACERS_initialFile(iTracer)=' '
0132 DO ic = 1,MAX_LEN_FNAM
0133 PTRACERS_names(iTracer)(ic:ic) = ' '
0134 PTRACERS_long_names(iTracer)(ic:ic) = ' '
0135 PTRACERS_units(iTracer)(ic:ic) = ' '
0136 ENDDO
785a077159 Alis*0137 ENDDO
fc10d43a89 Jean*0138 PTRACERS_doAB_onGpTr = doAB_onGtGs
c2ced55abd Jean*0139 PTRACERS_addSrelax2EmP = .FALSE.
50653b81f1 Ed H*0140 PTRACERS_useRecords = .FALSE.
0141 #ifdef ALLOW_MNC
6bc4100fab Jean*0142 PTRACERS_timeave_mnc = useMNC .AND. timeave_mnc
0143 PTRACERS_snapshot_mnc = useMNC .AND. snapshot_mnc
0144 PTRACERS_monitor_mnc = useMNC .AND. monitor_mnc
0145 PTRACERS_pickup_write_mnc = useMNC .AND. pickup_write_mnc
0146 PTRACERS_pickup_read_mnc = useMNC .AND. pickup_read_mnc
50653b81f1 Ed H*0147 #else
0148 PTRACERS_timeave_mnc = .FALSE.
0149 PTRACERS_snapshot_mnc = .FALSE.
de55280acd Mart*0150 PTRACERS_monitor_mnc = .FALSE.
50653b81f1 Ed H*0151 PTRACERS_pickup_write_mnc = .FALSE.
0152 PTRACERS_pickup_read_mnc = .FALSE.
0153 #endif
282caa8385 Jean*0154 tauTr1ClimRelax = 0.
4e66ab0b67 Oliv*0155 DO k = 1,Nr
0156 #ifdef ALLOW_LONGSTEP
0157 PTRACERS_dTLev(k) = LS_nIter*dTtracerLev(k)
0158 #else
0159 PTRACERS_dTLev(k) = dTtracerLev(k)
0160 #endif
0161 ENDDO
785a077159 Alis*0162
d2825c6d08 Ed H*0163
785a077159 Alis*0164 WRITE(msgBuf,'(A)') ' PTRACERS_READPARMS: opening data.ptracers'
6bc4100fab Jean*0165 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0166 & SQUEEZE_RIGHT , myThid )
785a077159 Alis*0167 CALL OPEN_COPY_DATA_FILE(
0168 I 'data.ptracers', 'PTRACERS_READPARMS',
0169 O iUnit,
0170 I myThid )
0171 READ(UNIT=iUnit,NML=PTRACERS_PARM01)
0172 WRITE(msgBuf,'(A)')
0173 & ' PTRACERS_READPARMS: finished reading data.ptracers'
6bc4100fab Jean*0174 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0175 & SQUEEZE_RIGHT , myThid )
785a077159 Alis*0176
d2825c6d08 Ed H*0177
7a77863887 Mart*0178 #ifdef SINGLE_DISK_IO
785a077159 Alis*0179 CLOSE(iUnit)
7a77863887 Mart*0180 #else
0181 CLOSE(iUnit,STATUS='DELETE')
0182 #endif /* SINGLE_DISK_IO */
785a077159 Alis*0183
dc3a357327 Jean*0184
282caa8385 Jean*0185
dc3a357327 Jean*0186 IF ( tauTr1ClimRelax .NE. 0. ) THEN
0187 #ifndef ALLOW_COST
0188 WRITE(msgBuf,'(2A)')' PTRACERS_READPARMS: ',
0189 & 'tauTr1ClimRelax has been removed (code is gone)'
0190 CALL PRINT_ERROR( msgBuf, myThid )
0191 STOP 'ABNORMAL END: S/R PTRACERS_READPARMS'
0192 #else
282caa8385 Jean*0193 lambdaTr1ClimRelax = 1./tauTr1ClimRelax
dc3a357327 Jean*0194 ELSE
0195 lambdaTr1ClimRelax = 0.
0196 #endif
282caa8385 Jean*0197 ENDIF
0198
dc3a357327 Jean*0199
0200
d2825c6d08 Ed H*0201
0202
785a077159 Alis*0203 IF (PTRACERS_numInUse.LT.0) THEN
d2825c6d08 Ed H*0204 PTRACERS_numInUse=PTRACERS_num
785a077159 Alis*0205 ENDIF
dc3a357327 Jean*0206
d2825c6d08 Ed H*0207
785a077159 Alis*0208 IF (PTRACERS_numInUse.GT.PTRACERS_num) THEN
078adc59f0 Jean*0209 WRITE(msgBuf,'(A,I4,A,I4,A)')
0210 & ' PTRACERS_READPARMS: You requested',PTRACERS_numInUse,
0211 & ' tracers at run time when only',PTRACERS_num,
d2825c6d08 Ed H*0212 & ' were specified at compile time. Naughty! '
6bc4100fab Jean*0213 CALL PRINT_ERROR( msgBuf, myThid )
785a077159 Alis*0214 STOP 'ABNORMAL END: S/R PTRACERS_READPARMS'
d2825c6d08 Ed H*0215 ENDIF
2ac3d7bd33 Jean*0216
0217
0218 DO iTracer=1,PTRACERS_numInUse
0219 IF ( PTRACERS_diffKr(iTracer).NE.UNSET_RL ) THEN
0220 DO k=1,Nr
0221 PTRACERS_diffKrNr(k,iTracer)=PTRACERS_diffKr(iTracer)
0222 ENDDO
0223 ENDIF
0224 ENDDO
0225
dc3a357327 Jean*0226
0227 PTRACERS_startAllTrc = .TRUE.
0228 DO iTracer=1,PTRACERS_numInUse
0229 IF ( PTRACERS_startStepFwd(iTracer) .NE. baseTime )
0230 & PTRACERS_startAllTrc = .FALSE.
0231 ENDDO
c6839165c8 Jean*0232 #ifdef ALLOW_AUTODIFF
dc3a357327 Jean*0233 IF ( .NOT.PTRACERS_startAllTrc ) THEN
0234 WRITE(msgBuf,'(A)')
0235 & 'PTRACERS_READPARMS: Compiling AD code does not allow'
0236 CALL PRINT_ERROR( msgBuf, myThid )
0237 WRITE(msgBuf,'(A)')
0238 & 'to use different starting time (PTRACERS_startStepFwd)'
0239 CALL PRINT_ERROR( msgBuf, myThid )
0240 STOP 'ABNORMAL END: S/R PTRACERS_READPARMS'
0241 ENDIF
c6839165c8 Jean*0242 #endif /* ALLOW_AUTODIFF */
2ac3d7bd33 Jean*0243
0aacb0e819 Oliv*0244
0245
0246 PTRACERS_calcSurfCor = .FALSE.
0247 DO iTracer=1,PTRACERS_num
0248 IF (PTRACERS_linFSConserve(iTracer)) PTRACERS_calcSurfCor=.TRUE.
0249 ENDDO
0250
d2825c6d08 Ed H*0251 #ifdef ALLOW_MNC
6bc4100fab Jean*0252 PTRACERS_timeave_mnc = useMNC .AND. PTRACERS_timeave_mnc
0253 PTRACERS_snapshot_mnc = useMNC .AND. PTRACERS_snapshot_mnc
0254 PTRACERS_monitor_mnc = useMNC .AND. PTRACERS_monitor_mnc
0255 PTRACERS_pickup_write_mnc = useMNC .AND. PTRACERS_pickup_write_mnc
0256 PTRACERS_pickup_read_mnc = useMNC .AND. PTRACERS_pickup_read_mnc
50653b81f1 Ed H*0257
0258 PTRACERS_timeave_mdsio = (.NOT. PTRACERS_timeave_mnc)
0259 & .OR. outputTypesInclusive
0260 PTRACERS_snapshot_mdsio = (.NOT. PTRACERS_snapshot_mnc)
0261 & .OR. outputTypesInclusive
de55280acd Mart*0262 PTRACERS_monitor_stdio = (.NOT. PTRACERS_monitor_mnc)
0263 & .OR. outputTypesInclusive
50653b81f1 Ed H*0264 PTRACERS_pickup_write_mdsio = (.NOT. PTRACERS_pickup_write_mnc)
0265 & .OR. outputTypesInclusive
0266 PTRACERS_pickup_read_mdsio = (.NOT. PTRACERS_pickup_read_mnc)
0267 & .OR. outputTypesInclusive
0268 #else
0269 PTRACERS_timeave_mnc = .FALSE.
0270 PTRACERS_snapshot_mnc = .FALSE.
de55280acd Mart*0271 PTRACERS_monitor_mnc = .FALSE.
50653b81f1 Ed H*0272 PTRACERS_pickup_write_mnc = .FALSE.
0273 PTRACERS_pickup_read_mnc = .FALSE.
0274 PTRACERS_timeave_mdsio = .TRUE.
0275 PTRACERS_snapshot_mdsio = .TRUE.
de55280acd Mart*0276 PTRACERS_monitor_stdio = .TRUE.
50653b81f1 Ed H*0277 PTRACERS_pickup_write_mdsio = .TRUE.
0278 PTRACERS_pickup_read_mdsio = .TRUE.
0279 #endif
e6469f285f Jean*0280
89ba77ec3c Jean*0281
6bc4100fab Jean*0282
0283 _END_MASTER(myThid)
0284
0285 _BARRIER
0286
785a077159 Alis*0287 #endif /* ALLOW_PTRACERS */
0288
0289 RETURN
0290 END