File indexing completed on 2018-03-06 06:08:58 UTC
view on githubraw file Latest commit 455d18a2 on 2018-03-01 19:51:51 UTC
d676f916b2 Jean*0001 #include "AIM_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE AIM_READPARMS( myThid )
0007
0008
0009
0010
0011
0012
d24aab1d8d Jean*0013
d676f916b2 Jean*0014
0015
0016
d24aab1d8d Jean*0017
d676f916b2 Jean*0018
0019 IMPLICIT NONE
0020
0021
0022 #include "AIM_SIZE.h"
0023 #include "EEPARAMS.h"
a27dd2281d Jean*0024 #include "PARAMS.h"
65007c221b Jean*0025 #include "AIM_PARAMS.h"
2a4f7f3ad0 Jean*0026 #include "AIM_CO2.h"
d0a9461855 Jean*0027 #ifdef ALLOW_MNC
0028 #include "MNC_PARAMS.h"
0029 #endif
d676f916b2 Jean*0030
0031
0032
0033
0034 #include "com_forcon.h"
0035 #include "com_sflcon.h"
0036 #include "com_cnvcon.h"
0037 #include "com_lsccon.h"
d24aab1d8d Jean*0038 #include "com_radcon.h"
0039 #include "com_vdicon.h"
d676f916b2 Jean*0040
0041
d24aab1d8d Jean*0042
0043
d676f916b2 Jean*0044 INTEGER myThid
0045
0046
0047 #ifdef ALLOW_AIM
0048
d24aab1d8d Jean*0049
2a4f7f3ad0 Jean*0050
0051
0052
0053
0054
d676f916b2 Jean*0055 CHARACTER*(MAX_LEN_MBUF) msgBuf
2a4f7f3ad0 Jean*0056 CHARACTER*10 endList
0057 INTEGER buffI(1)
d676f916b2 Jean*0058 INTEGER iUnit
2a4f7f3ad0 Jean*0059 INTEGER errCount
0060 _RL aim_fixed_pCO2
0061 _RL atmpCO2init
d676f916b2 Jean*0062
0063
0064
65007c221b Jean*0065
0066
0067
d0a9461855 Jean*0068
0069
0070
65007c221b Jean*0071
b3097ed02d Jean*0072
0073
0074
65007c221b Jean*0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
2a4f7f3ad0 Jean*0085
0086
0087
0088
e749d70ece Jean*0089
3a474aa258 Jean*0090
65007c221b Jean*0091
0092
0093 NAMELIST /AIM_PARAMS/
d24aab1d8d Jean*0094 & aim_useFMsurfBC, aim_useMMsurfFc,
d0a9461855 Jean*0095 & aim_surfForc_TimePeriod, aim_surfForc_NppCycle,
0096 & aim_surfForc_TransRatio, aim_surfPotTemp,
0097 & aim_energPrecip, aim_splitSIOsFx,
65007c221b Jean*0098 & aim_MMsufx, aim_MMsufxLength,
0099 & aim_LandFile, aim_albFile, aim_vegFile,
0100 & aim_sstFile, aim_lstFile, aim_oiceFile, aim_snowFile,
5e328a6c4a Davi*0101 & aim_swcFile, aim_qfxFile,
2a4f7f3ad0 Jean*0102 & aim_dragStrato, aim_selectOceAlbedo,
0103 & aim_select_pCO2, aim_abs_pCO2, aim_fixed_pCO2, atmpCO2init,
ad0ca66649 Ed H*0104 & aim_clrSkyDiag, aim_taveFreq, aim_diagFreq, aim_tendFreq,
d0a9461855 Jean*0105 & aim_timeave_mnc, aim_snapshot_mnc,
2a4f7f3ad0 Jean*0106 & aim_pickup_write_mnc, aim_pickup_read_mnc
65007c221b Jean*0107
d676f916b2 Jean*0108
b3097ed02d Jean*0109
0110
0111
0112
0113
0114
0115
0116
0117
d676f916b2 Jean*0118
0119
0120
7f98c35e47 Davi*0121
d676f916b2 Jean*0122
0123
0124
0125
0126
0127
bea6259b65 Jean*0128
d676f916b2 Jean*0129 NAMELIST /AIM_PAR_FOR/
0130 & SOLC, ALBSEA, ALBICE, ALBSN,
7f98c35e47 Davi*0131 & SDALB, SWCAP, SWWIL, hSnowWetness, OBLIQ
d676f916b2 Jean*0132
d24aab1d8d Jean*0133
d676f916b2 Jean*0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
e749d70ece Jean*0148
d676f916b2 Jean*0149
0150
0151
0152 NAMELIST /AIM_PAR_SFL/
0153 & FWIND0, FTEMP0, FHUM0,
0154 & CDL, CDS, CHL, CHS, VGUST, CTDAY,
e749d70ece Jean*0155 & DTHETA, dTstab, FSTAB, HDRAG, FHDRAG
d676f916b2 Jean*0156
0157
0158
0159
0160
0161
0162
0163
0164
0165 NAMELIST /AIM_PAR_CNV/
0166 & PSMIN, TRCNV, QBL, RHBL, RHIL, ENTMAX, SMF
0167
d24aab1d8d Jean*0168
d676f916b2 Jean*0169
0170
0171
0172
0173 NAMELIST /AIM_PAR_LSC/
0174 & TRLSC, RHLSC, DRHLSC, QSMAX
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199 NAMELIST /AIM_PAR_RAD/
0200 & RHCL1, RHCL2, QACL1, QACL2, ALBCL,
0201 & EPSSW, EPSLW, EMISFC,
0202 & ABSDRY, ABSAER, ABSWV1, ABSWV2, ABSCL1, ABSCL2,
d24aab1d8d Jean*0203 & ABLWIN, ABLCO2, ABLWV1, ABLWV2, ABLCL1, ABLCL2
d676f916b2 Jean*0204
d24aab1d8d Jean*0205
d676f916b2 Jean*0206
0207
0208
0209
0210
0211 NAMELIST /AIM_PAR_VDI/
0212 & TRSHC, TRVDI, TRVDS, RHGRAD, SEGRAD
0213
0214
0215
0216 _BEGIN_MASTER(myThid)
d24aab1d8d Jean*0217
d0a9461855 Jean*0218
0219 aim_useFMsurfBC = .TRUE.
0220 aim_useMMsurfFc = .FALSE.
0221 aim_surfPotTemp = .FALSE.
0222 aim_energPrecip = .FALSE.
0223 aim_splitSIOsFx = .FALSE.
0224 aim_clrSkyDiag = .FALSE.
0225 #ifdef ALLOW_MNC
0226 aim_timeave_mnc = timeave_mnc .AND. useMNC
0227 aim_snapshot_mnc = snapshot_mnc .AND. useMNC
0228 aim_pickup_write_mnc = pickup_write_mnc .AND. useMNC
0229 aim_pickup_read_mnc = pickup_read_mnc .AND. useMNC
0230 #else
0231 aim_timeave_mnc = .FALSE.
0232 aim_snapshot_mnc = .FALSE.
0233 aim_pickup_write_mnc = .FALSE.
0234 aim_pickup_read_mnc = .FALSE.
0235 #endif
0236 aim_MMsufx = '.bin'
0237 aim_MMsufxLength = 4
0238
0239 aim_surfForc_TimePeriod = 30.*86400.
0240
0241 aim_surfForc_NppCycle = 12
0242
0243
0244
0245 aim_surfForc_TransRatio = 1.
0246 aim_LandFile = ' '
0247 aim_albFile = ' '
0248 aim_vegFile = ' '
0249 aim_sstFile = ' '
0250 aim_lstFile = ' '
0251 aim_oiceFile = ' '
0252 aim_snowFile = ' '
0253 aim_swcFile = ' '
5e328a6c4a Davi*0254 aim_qfxFile = ' '
d0a9461855 Jean*0255 aim_dragStrato = 0.
2a4f7f3ad0 Jean*0256 aim_selectOceAlbedo = 0
0257 aim_select_pCO2 = 0
0258 aim_ref_pCO2 = 320. _d -6
455d18a2e4 Jean*0259
0260
0261 aim_abs_pCO2 = 1.2616 _d 0
2a4f7f3ad0 Jean*0262 aim_fixed_pCO2 = UNSET_RL
0263 atmpCO2init = UNSET_RL
0264
d0a9461855 Jean*0265 aim_taveFreq = taveFreq
0266 aim_diagFreq = dumpFreq
0267 aim_tendFreq = 0.
7f98c35e47 Davi*0268 OBLIQ = 23.45 _d 0
d0a9461855 Jean*0269
0270
0271
2a4f7f3ad0 Jean*0272 WRITE(msgBuf,'(A)') ' AIM_READPARMS: opening data.aimphys'
0273 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0274 & SQUEEZE_RIGHT, myThid )
d676f916b2 Jean*0275
2a4f7f3ad0 Jean*0276 CALL OPEN_COPY_DATA_FILE( 'data.aimphys', 'AIM_READPARMS',
d676f916b2 Jean*0277 O iUnit, myThid )
0278
0279
0280
65007c221b Jean*0281
0282 READ(UNIT=iUnit,NML=AIM_PARAMS)
0283
d676f916b2 Jean*0284
0285 READ(UNIT=iUnit,NML=AIM_PAR_FOR)
0286
0287
0288 READ(UNIT=iUnit,NML=AIM_PAR_SFL)
d24aab1d8d Jean*0289
d676f916b2 Jean*0290
0291 READ(UNIT=iUnit,NML=AIM_PAR_CNV)
0292
0293
0294 READ(UNIT=iUnit,NML=AIM_PAR_LSC)
0295
0296
0297 READ(UNIT=iUnit,NML=AIM_PAR_RAD)
0298
0299
0300 READ(UNIT=iUnit,NML=AIM_PAR_VDI)
0301
d24aab1d8d Jean*0302 WRITE(msgBuf,'(A)')
2a4f7f3ad0 Jean*0303 & ' AIM_READPARMS: finished reading data.aimphys'
0304 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0305 & SQUEEZE_RIGHT, myThid )
d24aab1d8d Jean*0306
d676f916b2 Jean*0307
7a77863887 Mart*0308 #ifdef SINGLE_DISK_IO
d676f916b2 Jean*0309 CLOSE(iUnit)
7a77863887 Mart*0310 #else
0311 CLOSE(iUnit,STATUS='DELETE')
0312 #endif /* SINGLE_DISK_IO */
d676f916b2 Jean*0313
0314
3a474aa258 Jean*0315
2a4f7f3ad0 Jean*0316 errCount = 0
0317
0318 IF ( aim_select_pCO2.LT.0 .OR. aim_select_pCO2.GT.3 ) THEN
0319 WRITE(msgBuf,'(2A)') 'AIM_READPARMS: ',
0320 & 'Invalid value for "aim_select_pCO2"'
0321 CALL PRINT_ERROR( msgBuf, myThid )
0322 errCount = errCount + 1
0323 ENDIF
0324 #ifndef ALLOW_AIM_CO2
0325 IF ( aim_select_pCO2.GE.2 .AND. aim_select_pCO2.LE.3 ) THEN
0326 WRITE(msgBuf,'(2A)') 'AIM_READPARMS: ',
0327 & 'aim_select_pCO2 > 1 but ALLOW_AIM_CO2 undef'
0328 CALL PRINT_ERROR( msgBuf, myThid )
0329 WRITE(msgBuf,'(2A)')
0330 & 'Re-compile with: #define ALLOW_AIM_CO2 (AIM_OPTIONS.h)'
0331 CALL PRINT_ERROR( msgBuf, myThid )
0332 errCount = errCount + 1
0333 ENDIF
0334 #endif /* ndef ALLOW_AIM_CO2 */
0335
0336 IF ( aim_fixed_pCO2.EQ.UNSET_RL ) THEN
0337 aim_fixed_pCO2 = aim_ref_pCO2
0338 ELSEIF ( aim_select_pCO2.NE.1 .AND.
0339 & aim_select_pCO2.GE.0 .AND. aim_select_pCO2.LE.3 ) THEN
0340 WRITE(msgBuf,'(2A)') 'AIM_READPARMS: ',
0341 & 'aim_fixed_pCO2 only used if aim_select_pCO2=1'
0342 CALL PRINT_ERROR( msgBuf, myThid )
0343 errCount = errCount + 1
0344 ENDIF
0345 IF ( atmpCO2init.EQ.UNSET_RL ) THEN
0346 atmpCO2init = aim_ref_pCO2
0347 ELSEIF ( aim_select_pCO2.GE.0 .AND. aim_select_pCO2.LT.2 ) THEN
0348 WRITE(msgBuf,'(2A)') '** WARNING ** AIM_READPARMS: ',
0349 & 'atmpCO2init only used if aim_select_pCO2 > 1'
0350 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0351 & SQUEEZE_RIGHT, myThid )
0352 ENDIF
3a474aa258 Jean*0353
e749d70ece Jean*0354 #ifndef ALLOW_CLR_SKY_DIAG
0355
0356 IF ( aim_clrSkyDiag ) THEN
2a4f7f3ad0 Jean*0357 WRITE(msgBuf,'(2A)') 'AIM_READPARMS: ',
0358 & 'aim_clrSkyDiag=T but ALLOW_CLR_SKY_DIAG undef'
0359 CALL PRINT_ERROR( msgBuf, myThid )
e749d70ece Jean*0360 WRITE(msgBuf,'(2A)')
0361 & 'Re-compile with: #define ALLOW_CLR_SKY_DIAG (AIM_OPTIONS.h)'
2a4f7f3ad0 Jean*0362 CALL PRINT_ERROR( msgBuf, myThid )
0363 errCount = errCount + 1
e749d70ece Jean*0364 ENDIF
0365 #endif
0366
3a474aa258 Jean*0367
0368 #ifndef ALLOW_AIM_TAVE
0369 IF (aim_taveFreq.GT.0.) THEN
0370 WRITE(msgBuf,'(A)')
0371 & 'AIM_READPARMS: aim_taveFreq > 0 but ALLOW_AIM_TAVE undefined'
2a4f7f3ad0 Jean*0372 CALL PRINT_ERROR( msgBuf, myThid )
3a474aa258 Jean*0373 WRITE(msgBuf,'(2A)')
e749d70ece Jean*0374 & 'Re-compile with: #define ALLOW_AIM_TAVE (AIM_OPTIONS.h)'
2a4f7f3ad0 Jean*0375 CALL PRINT_ERROR( msgBuf, myThid )
0376 errCount = errCount + 1
3a474aa258 Jean*0377 ENDIF
0378 #endif /* ALLOW_AIM_TAVE */
0379
ad0ca66649 Ed H*0380 #ifdef ALLOW_MNC
d24aab1d8d Jean*0381 aim_timeave_mnc = useMNC .AND. aim_timeave_mnc
0382 aim_snapshot_mnc = useMNC .AND. aim_snapshot_mnc
0383 aim_pickup_write_mnc = useMNC .AND. aim_pickup_write_mnc
0384 aim_pickup_read_mnc = useMNC .AND. aim_pickup_read_mnc
0385 #else /* ALLOW_MNC */
78ad6fc820 Ed H*0386 aim_timeave_mnc = .FALSE.
0387 aim_snapshot_mnc = .FALSE.
0388 aim_pickup_write_mnc = .FALSE.
0389 aim_pickup_read_mnc = .FALSE.
ad0ca66649 Ed H*0390 #endif /* ALLOW_MNC */
d24aab1d8d Jean*0391 aim_timeave_mdsio = (.NOT. aim_timeave_mnc)
0392 & .OR. outputTypesInclusive
0393 aim_snapshot_mdsio = (.NOT. aim_snapshot_mnc)
0394 & .OR. outputTypesInclusive
0395 aim_pickup_write_mdsio = (.NOT. aim_pickup_write_mnc)
0396 & .OR. outputTypesInclusive
0397 aim_pickup_read_mdsio = (.NOT. aim_pickup_read_mnc)
0398 & .OR. outputTypesInclusive
ad0ca66649 Ed H*0399
3a474aa258 Jean*0400
d676f916b2 Jean*0401
2a4f7f3ad0 Jean*0402 iUnit = standardMessageUnit
0403 endList = ' ; '
d676f916b2 Jean*0404
0405 WRITE(msgBuf,'(A)') ' '
2a4f7f3ad0 Jean*0406 CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid )
d676f916b2 Jean*0407 WRITE(msgBuf,'(A)') '// ==================================='
2a4f7f3ad0 Jean*0408 CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid )
d676f916b2 Jean*0409 WRITE(msgBuf,'(A)') '// AIM physics parameters :'
2a4f7f3ad0 Jean*0410 CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid )
d676f916b2 Jean*0411 WRITE(msgBuf,'(A)') '// ==================================='
2a4f7f3ad0 Jean*0412 CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid )
d676f916b2 Jean*0413
a27dd2281d Jean*0414 CALL WRITE_0D_L( useLand, INDEX_NONE,
0415 & 'useLand =',
d24aab1d8d Jean*0416 &' /* use Land package for surf.BC over land */')
a27dd2281d Jean*0417
65007c221b Jean*0418
0419 CALL WRITE_0D_L( aim_useFMsurfBC, INDEX_NONE,
0420 & 'aim_useFMsurfBC =',
d24aab1d8d Jean*0421 &' /* F.Molteni surf. BC scheme on/off flag */')
65007c221b Jean*0422 CALL WRITE_0D_L( aim_useMMsurfFc, INDEX_NONE,
0423 & 'aim_useMMsurfFc =',
d24aab1d8d Jean*0424 &' /* Monthly Mean surf. Forcing on/off flag */')
4da4b49499 Jean*0425 CALL WRITE_0D_RL(aim_surfForc_TimePeriod, INDEX_NONE,
d0a9461855 Jean*0426 & 'aim_surfForc_TimePeriod =',
0427 & ' /* Length of forcing time period (s) */')
0428 CALL WRITE_0D_I( aim_surfForc_NppCycle, INDEX_NONE,
0429 & 'aim_surfForc_NppCycle =',
0430 & ' /* Number of time period per Cycle */')
4da4b49499 Jean*0431 CALL WRITE_0D_RL(aim_surfForc_TransRatio, INDEX_NONE,
d0a9461855 Jean*0432 & 'aim_surfForc_TransRatio =',
0433 & ' /* transition ratio from one month to the next */')
65007c221b Jean*0434 CALL WRITE_0D_L( aim_surfPotTemp, INDEX_NONE,
0435 & 'aim_surfPotTemp =',
d24aab1d8d Jean*0436 &' /* Surf Temp file in Pot.Temp on/off flag */')
b3097ed02d Jean*0437 CALL WRITE_0D_L( aim_energPrecip, INDEX_NONE,
0438 & 'aim_energPrecip =',
d24aab1d8d Jean*0439 & ' /* account for energy of precip. on/off flag */')
b3097ed02d Jean*0440 CALL WRITE_0D_L( aim_splitSIOsFx, INDEX_NONE,
0441 & 'aim_splitSIOsFx =',
d24aab1d8d Jean*0442 & ' /* separate Sea-Ice & Ocean Flux on/off flag */')
4da4b49499 Jean*0443 CALL WRITE_0D_RL(aim_dragStrato,INDEX_NONE,'aim_dragStrato=',
299f32bec2 Jean*0444 & ' /* stratospheric-drag damping time scale (s) */')
2a4f7f3ad0 Jean*0445 CALL WRITE_0D_I( aim_selectOceAlbedo, INDEX_NONE,
0446 & 'aim_selectOceAlbedo =', ' /* Ocean albedo(latitude) flag */')
0447
0448 WRITE(msgBuf,'(2A)') 'aim_select_pCO2=',
0449 & ' /* select AIM CO2 option */'
0450 CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid )
0451 buffI(1) = aim_select_pCO2
0452 CALL PRINT_LIST_I( buffI, 1, 1, INDEX_NONE,
0453 & .FALSE., .TRUE., iUnit )
0454 WRITE(msgBuf,'(2A)')
0455 & ' =0: prescribed LW absorption in CO2 band (=ABLCO2)'
0456 CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid )
0457 WRITE(msgBuf,'(2A)')
0458 & ' =1: absorption fct of prescribed pCO2 (=aim_fixed_pCO2)'
0459 CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid )
0460 WRITE(msgBuf,'(2A)')
0461 & ' =2: same as 0 with passive, well-mixed pCO2 atm box'
0462 CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid )
0463 WRITE(msgBuf,'(2A)')
0464 & ' =3: same as 1 with evolving, well-mixed pCO2 atm-box'
0465 CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid )
0466 CALL PRINT_MESSAGE(endList, iUnit, SQUEEZE_RIGHT, myThid )
0467 IF ( aim_select_pCO2.EQ.1 .OR. aim_select_pCO2.EQ.3 )
0468 & CALL WRITE_0D_RL( aim_abs_pCO2, INDEX_NONE,
0469 & 'aim_abs_pCO2 =', ' /* pCO2 dep. coeff. of CO2 absortion */')
0470 IF ( aim_select_pCO2.EQ.1 )
0471 & CALL WRITE_0D_RL( aim_fixed_pCO2, INDEX_NONE,
0472 & 'aim_fixed_pCO2 =', ' /* fixed pCO2 for AIM radiation */')
0473 #ifdef ALLOW_AIM_CO2
0474 CALL WRITE_0D_RL( atmpCO2init, INDEX_NONE,
0475 & 'atmpCO2init =', ' /* Initial atm-box pCO2 */')
0476 #endif
e749d70ece Jean*0477 CALL WRITE_0D_L( aim_clrSkyDiag, INDEX_NONE,
0478 & 'aim_clrSkyDiag =',
d24aab1d8d Jean*0479 & ' /* do clear-sky radiation diagnostics */')
4da4b49499 Jean*0480 CALL WRITE_0D_RL( aim_taveFreq, INDEX_NONE,'aim_taveFreq =',
3a474aa258 Jean*0481 & ' /* Frequency^-1 for time-Aver. output (s) */')
4da4b49499 Jean*0482 CALL WRITE_0D_RL( aim_diagFreq, INDEX_NONE,'aim_diagFreq =',
65007c221b Jean*0483 & ' /* Frequency^-1 for diagnostic output (s) */')
4da4b49499 Jean*0484 CALL WRITE_0D_RL( aim_tendFreq, INDEX_NONE,'aim_tendFreq =',
65007c221b Jean*0485 & ' /* Frequency^-1 for tendencies output (s) */')
0486
d676f916b2 Jean*0487
4da4b49499 Jean*0488 CALL WRITE_0D_RL( SOLC, INDEX_NONE,'AIM_FOR: SOLC =',
d676f916b2 Jean*0489 & ' /* Solar constant (area averaged) in W/m2 */')
7f98c35e47 Davi*0490 CALL WRITE_0D_RL( OBLIQ, INDEX_NONE,'AIM_FOR: OBLIQ =',
0491 & ' /* Obliquity (degree) used with ALLOW_INSOLATION */')
4da4b49499 Jean*0492 CALL WRITE_0D_RL( ALBSEA,INDEX_NONE,'AIM_FOR: ALBSEA =',
d676f916b2 Jean*0493 & ' /* Albedo over sea [0-1] */')
4da4b49499 Jean*0494 CALL WRITE_0D_RL( ALBICE,INDEX_NONE,'AIM_FOR: ALBICE =',
d676f916b2 Jean*0495 & ' /* Albedo over sea ice (for ice fraction =1) */')
4da4b49499 Jean*0496 CALL WRITE_0D_RL( ALBSN, INDEX_NONE,'AIM_FOR: ALBSN =',
d676f916b2 Jean*0497 & ' /* Albedo over snow (for snow depth > SDALB) */')
4da4b49499 Jean*0498 CALL WRITE_0D_RL( SDALB, INDEX_NONE,'AIM_FOR: SDALB =',
d676f916b2 Jean*0499 & ' /* Snow depth (mm H2O) corresp. maximum albedo */')
4da4b49499 Jean*0500 CALL WRITE_0D_RL( SWCAP, INDEX_NONE,'AIM_FOR: SWCAP =',
d676f916b2 Jean*0501 & ' /* Soil wetness at field capacity (Vol.fract.) */')
4da4b49499 Jean*0502 CALL WRITE_0D_RL( SWWIL, INDEX_NONE,'AIM_FOR: SWWIL =',
d676f916b2 Jean*0503 & ' /* Soil wetness at wilting point (Vol.fract.) */')
4da4b49499 Jean*0504 CALL WRITE_0D_RL( hSnowWetness, INDEX_NONE,
bea6259b65 Jean*0505 & 'AIM_FOR: hSnowWetness=',
0506 & ' /* snow depth corresp. maximum wetness (m) */')
d676f916b2 Jean*0507
0508
4da4b49499 Jean*0509 CALL WRITE_0D_RL( FWIND0,INDEX_NONE,'AIM_SFL: FWIND0 =',
d676f916b2 Jean*0510 & ' /* ratio of near-sfc wind to lowest-level wind */')
4da4b49499 Jean*0511 CALL WRITE_0D_RL( FTEMP0,INDEX_NONE,'AIM_SFL: FTEMP0 =',
d676f916b2 Jean*0512 & ' /* weight for near-sfc temp. extrapolation (0-1)*/')
4da4b49499 Jean*0513 CALL WRITE_0D_RL( FHUM0, INDEX_NONE,'AIM_SFL: FHUM0 =',
d676f916b2 Jean*0514 & ' /* weight for near-sfc spec.humid. extrap. (0-1)*/')
4da4b49499 Jean*0515 CALL WRITE_0D_RL( CDL, INDEX_NONE,'AIM_SFL: CDL =',
d676f916b2 Jean*0516 & ' /* drag coefficient for momentum over land */')
4da4b49499 Jean*0517 CALL WRITE_0D_RL( CDS, INDEX_NONE,'AIM_SFL: CDS =',
d676f916b2 Jean*0518 & ' /* drag coefficient for momentum over sea */')
4da4b49499 Jean*0519 CALL WRITE_0D_RL( CHL, INDEX_NONE,'AIM_SFL: CHL =',
d676f916b2 Jean*0520 & ' /* heat exchange coefficient over land */')
4da4b49499 Jean*0521 CALL WRITE_0D_RL( CHS, INDEX_NONE,'AIM_SFL: CHS =',
d676f916b2 Jean*0522 & ' /* heat exchange coefficient over sea */')
4da4b49499 Jean*0523 CALL WRITE_0D_RL( VGUST, INDEX_NONE,'AIM_SFL: VGUST =',
d676f916b2 Jean*0524 & ' /* wind speed [m/s] for sub-grid-scale gusts */')
4da4b49499 Jean*0525 CALL WRITE_0D_RL( CTDAY, INDEX_NONE,'AIM_SFL: CTDAY =',
d676f916b2 Jean*0526 & ' /* daily-cycle correction (dTskin/dSSRad) */')
4da4b49499 Jean*0527 CALL WRITE_0D_RL( DTHETA,INDEX_NONE,'AIM_SFL: DTHETA =',
d676f916b2 Jean*0528 & ' /* Pot.Temp. gradient for stability correction */')
4da4b49499 Jean*0529 CALL WRITE_0D_RL( dTstab,INDEX_NONE,'AIM_SFL: dTstab =',
e749d70ece Jean*0530 & ' /* Pot.Temp. increment for stab.funct. derivative */')
4da4b49499 Jean*0531 CALL WRITE_0D_RL( FSTAB, INDEX_NONE,'AIM_SFL: FSTAB =',
d676f916b2 Jean*0532 & ' /* Amplitude of stability correction (fract.) */')
4da4b49499 Jean*0533 CALL WRITE_0D_RL( HDRAG, INDEX_NONE,'AIM_SFL: HDRAG =',
d676f916b2 Jean*0534 & ' /* Height scale for orographic correction */')
4da4b49499 Jean*0535 CALL WRITE_0D_RL( FHDRAG,INDEX_NONE,'AIM_SFL: FHDRAG =',
d676f916b2 Jean*0536 & ' /* Amplitude of orographic correction (fract.)*/')
0537
0538
4da4b49499 Jean*0539 CALL WRITE_0D_RL( PSMIN, INDEX_NONE,'AIM_CNV: PSMIN =',
d676f916b2 Jean*0540 & ' /* min norm.sfc.P. for occurrence of convect. */')
4da4b49499 Jean*0541 CALL WRITE_0D_RL( TRCNV, INDEX_NONE,'AIM_CNV: TRCNV =',
d676f916b2 Jean*0542 & ' /* time of relaxation [h] towards ref state */')
4da4b49499 Jean*0543 CALL WRITE_0D_RL( QBL, INDEX_NONE,'AIM_CNV: QBL =',
d676f916b2 Jean*0544 & ' /* specific hum. threshold in the Bound.layer */')
4da4b49499 Jean*0545 CALL WRITE_0D_RL( RHBL, INDEX_NONE,'AIM_CNV: RHBL =',
d676f916b2 Jean*0546 & ' /* relative hum. threshold in the Bound.layer */')
4da4b49499 Jean*0547 CALL WRITE_0D_RL( RHIL, INDEX_NONE,'AIM_CNV: RHIL =',
d676f916b2 Jean*0548 & ' /* rel.hum. threshold (intern) for 2nd mass.Flx*/')
4da4b49499 Jean*0549 CALL WRITE_0D_RL( ENTMAX,INDEX_NONE,'AIM_CNV: ENTMAX =',
d676f916b2 Jean*0550 & ' /* time of relaxation [h] towards neutral eq. */')
4da4b49499 Jean*0551 CALL WRITE_0D_RL( SMF, INDEX_NONE,'AIM_CNV: SMF =',
d676f916b2 Jean*0552 & ' /* ratio 2ndary/primary mass.Flx at cloud-base*/')
0553
0554
4da4b49499 Jean*0555 CALL WRITE_0D_RL( TRLSC, INDEX_NONE,'AIM_LSC: TRLSC =',
d676f916b2 Jean*0556 & ' /* relaxation time [h] for supersat. spec.hum. */')
4da4b49499 Jean*0557 CALL WRITE_0D_RL( RHLSC, INDEX_NONE,'AIM_LSC: RHLSC =',
d676f916b2 Jean*0558 & ' /* Max rel.humidity threshold (at sigma=1) */')
4da4b49499 Jean*0559 CALL WRITE_0D_RL( DRHLSC,INDEX_NONE,'AIM_LSC: DRHLSC =',
d676f916b2 Jean*0560 & ' /* Vertical range of rel.humidity threshold */')
4da4b49499 Jean*0561 CALL WRITE_0D_RL( QSMAX, INDEX_NONE,'AIM_LSC: QSMAX =',
d676f916b2 Jean*0562 & ' /* Define the maximum latent heat release */')
0563
0564
4da4b49499 Jean*0565 CALL WRITE_0D_RL( RHCL1, INDEX_NONE,'AIM_RAD: RHCL1 =',
d676f916b2 Jean*0566 & ' /* rel.hum. corresponding to cloud cover = 0 */')
4da4b49499 Jean*0567 CALL WRITE_0D_RL( RHCL2, INDEX_NONE,'AIM_RAD: RHCL2 =',
d676f916b2 Jean*0568 & ' /* rel.hum. corresponding to cloud cover = 1 */')
4da4b49499 Jean*0569 CALL WRITE_0D_RL( QACL1, INDEX_NONE,'AIM_RAD: QACL1 =',
d676f916b2 Jean*0570 & ' /* spec.hum. threshold for cloud, upper trop. */')
4da4b49499 Jean*0571 CALL WRITE_0D_RL( QACL2, INDEX_NONE,'AIM_RAD: QACL2 =',
d676f916b2 Jean*0572 & ' /* spec.hum. threshold for cloud, upper trop. */')
4da4b49499 Jean*0573 CALL WRITE_0D_RL( ALBCL, INDEX_NONE,'AIM_RAD: ALBCL =',
d676f916b2 Jean*0574 & ' /* cloud albedo (for cloud cover = 1) */')
4da4b49499 Jean*0575 CALL WRITE_0D_RL( EPSSW, INDEX_NONE,'AIM_RAD: EPSSW =',
d24aab1d8d Jean*0576 & ' /* fract. of inc.solar rad. absorbed by ozone */')
4da4b49499 Jean*0577 CALL WRITE_0D_RL( EPSLW, INDEX_NONE,'AIM_RAD: EPSLW =',
d24aab1d8d Jean*0578 & ' /* fract. of sfc LW emitted directly to space */')
4da4b49499 Jean*0579 CALL WRITE_0D_RL( EMISFC,INDEX_NONE,'AIM_RAD: EMISFC =',
d24aab1d8d Jean*0580 & ' /* longwave surface emissivity */')
d676f916b2 Jean*0581
0582 WRITE(msgBuf,'(A)')
0583 & ' AIM_RAD : ShortWave absorptivities (for dp = 10^5 Pa) :'
2a4f7f3ad0 Jean*0584 CALL PRINT_MESSAGE( msgBuf, iUnit, SQUEEZE_RIGHT, myThid )
4da4b49499 Jean*0585 CALL WRITE_0D_RL( ABSDRY,INDEX_NONE,'AIM_RAD: ABSDRY =',
d676f916b2 Jean*0586 & ' /* abs. of dry air (visible band) */')
4da4b49499 Jean*0587 CALL WRITE_0D_RL( ABSAER,INDEX_NONE,'AIM_RAD: ABSAER =',
d676f916b2 Jean*0588 & ' /* abs. of aerosols (visible band) */')
4da4b49499 Jean*0589 CALL WRITE_0D_RL( ABSWV1,INDEX_NONE,'AIM_RAD: ABSWV1 =',
d676f916b2 Jean*0590 & ' /* abs. of water vap. (vis. band)(/dq, 1g/kg) */')
4da4b49499 Jean*0591 CALL WRITE_0D_RL( ABSWV2,INDEX_NONE,'AIM_RAD: ABSWV2 =',
d676f916b2 Jean*0592 & ' /* abs. of water vap.(near IR bd)(/dq, 1g/kg) */')
4da4b49499 Jean*0593 CALL WRITE_0D_RL( ABSCL1,INDEX_NONE,'AIM_RAD: ABSCL1 =',
d676f916b2 Jean*0594 & ' /* abs. of clouds (vis.band)(constant term) */')
4da4b49499 Jean*0595 CALL WRITE_0D_RL( ABSCL2,INDEX_NONE,'AIM_RAD: ABSCL2 =',
d676f916b2 Jean*0596 & ' /* abs. of clouds (vis.band) (/dw, 1g/kg) */')
0597
0598 WRITE(msgBuf,'(A)')
0599 & ' AIM_RAD : LongWave absorptivities (per dp = 10^5 Pa) :'
4da4b49499 Jean*0600 CALL WRITE_0D_RL( ABLWIN,INDEX_NONE,'AIM_RAD: ABLWIN =',
d676f916b2 Jean*0601 & ' /* abs. of air in "window" band */')
4da4b49499 Jean*0602 CALL WRITE_0D_RL( ABLCO2,INDEX_NONE,'AIM_RAD: ABLCO2 =',
d676f916b2 Jean*0603 & ' /* abs. of air in CO2 band */')
4da4b49499 Jean*0604 CALL WRITE_0D_RL( ABLWV1,INDEX_NONE,'AIM_RAD: ABLWV1 =',
d676f916b2 Jean*0605 & ' /* abs. of Water vap. H2O bd-1(weak)(/dq,1g/kg)*/')
4da4b49499 Jean*0606 CALL WRITE_0D_RL( ABLWV2,INDEX_NONE,'AIM_RAD: ABLWV2 =',
d676f916b2 Jean*0607 & ' /* abs. of W. vap., H2O bd-2(strong)(/dq,1g/kg)*/')
4da4b49499 Jean*0608 CALL WRITE_0D_RL( ABLCL1,INDEX_NONE,'AIM_RAD: ABLCL1 =',
d676f916b2 Jean*0609 & ' /* abs. of clouds in window band (const term) */')
4da4b49499 Jean*0610 CALL WRITE_0D_RL( ABLCL2,INDEX_NONE,'AIM_RAD: ABLCL2 =',
d676f916b2 Jean*0611 & ' /* abs. of clouds in window band (/dw, 1g/kg) */')
0612
0613
4da4b49499 Jean*0614 CALL WRITE_0D_RL( TRSHC, INDEX_NONE,'AIM_VDI: TRSHC =',
d676f916b2 Jean*0615 & ' /* relaxation time [h] for shallow convection */')
4da4b49499 Jean*0616 CALL WRITE_0D_RL( TRVDI, INDEX_NONE,'AIM_VDI: TRVDI =',
d676f916b2 Jean*0617 & ' /* relaxation time [h] for moisture diffusion */')
4da4b49499 Jean*0618 CALL WRITE_0D_RL( TRVDS, INDEX_NONE,'AIM_VDI: TRVDS =',
d676f916b2 Jean*0619 & ' /* relaxation time [h] for super-adiab. cond. */')
4da4b49499 Jean*0620 CALL WRITE_0D_RL( RHGRAD,INDEX_NONE,'AIM_VDI: RHGRAD =',
d676f916b2 Jean*0621 & ' /* max gradient of rel.humidity (d_RH/d_sigma)*/')
4da4b49499 Jean*0622 CALL WRITE_0D_RL( SEGRAD,INDEX_NONE,'AIM_VDI: SEGRAD =',
d676f916b2 Jean*0623 & ' /* max grad. of dry static Energy(d_DSE/d_phi)*/')
0624
2a4f7f3ad0 Jean*0625 IF ( errCount.GE.1 ) THEN
0626 WRITE(msgBuf,'(A,I3,A)')
0627 & 'AIM_READPARMS: detected', errCount,' fatal error(s)'
0628 CALL PRINT_ERROR( msgBuf, myThid )
0629 CALL ALL_PROC_DIE( 0 )
0630 STOP 'ABNORMAL END: S/R AIM_READPARMS'
0631 ENDIF
4c105e462e Davi*0632
d676f916b2 Jean*0633
0634
2a4f7f3ad0 Jean*0635
0636 aim_pCO2 = aim_fixed_pCO2
0637 #ifdef ALLOW_AIM_CO2
0638 atm_pCO2 = atmpCO2init
0639 #endif /* ALLOW_AIM_CO2 */
0640
d676f916b2 Jean*0641 _END_MASTER(myThid)
d24aab1d8d Jean*0642
d676f916b2 Jean*0643
0644 _BARRIER
0645
0646 #endif /* ALLOW_AIM */
0647
0648 RETURN
0649 END