File indexing completed on 2025-11-07 06:08:21 UTC
view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 UTC
6d54cf9ca1 Ed H*0001 #include "BULK_FORCE_OPTIONS.h"
7753507405 Curt*0002
0003 SUBROUTINE BULKF_READPARMS( myThid )
ae4c29e0db Jean*0004
6a1d3c464b Jean*0005
0006
ae4c29e0db Jean*0007
6a1d3c464b Jean*0008
ae4c29e0db Jean*0009
7753507405 Curt*0010 IMPLICIT NONE
0011
0012
0013 #include "SIZE.h"
0014 #include "EEPARAMS.h"
0015 #include "PARAMS.h"
6a1d3c464b Jean*0016 #include "BULKF_PARAMS.h"
7753507405 Curt*0017 #include "BULKF.h"
0018 #ifdef CONSERV_BULKF
0019 #include "BULKF_CONSERV.h"
0020 #endif
0021
0022
0023 INTEGER myThid
0024
0025 #ifdef ALLOW_BULK_FORCE
6a1d3c464b Jean*0026
ae4c29e0db Jean*0027
0028
6a1d3c464b Jean*0029 CHARACTER*(MAX_LEN_MBUF) msgBuf
0030 INTEGER iUnit
b7411f1a84 Jean*0031
0032 _RL blk_taveFreq
7753507405 Curt*0033
0034
6a1d3c464b Jean*0035 NAMELIST /BULKF_CONST/
69f66dfb04 Jean*0036 & rhoA, rhoFW,
0037 & cpAir, Lvap, Lfresh,
0038 & Tf0kel, Rgas, xkar, stefan,
0039 & zref, zwd, zth,
0040 & cDrag_1, cDrag_2, cDrag_3,
0041 & cStantonS, cStantonU, cDalton,
0042 & umin, humid_fac, saltQsFac, gamma_blk,
6a1d3c464b Jean*0043 & atm_emissivity, ocean_emissivity,
0044 & snow_emissivity, ice_emissivity,
679d149d01 Jean*0045 #ifdef ALLOW_FORMULA_AIM
0046 & FWIND0, CHS, VGUST, DTHETA, dTstab, FSTAB,
0047 #endif
0048 & ocean_albedo
6a1d3c464b Jean*0049
7753507405 Curt*0050 NAMELIST /BULKF_PARM01/
69f66dfb04 Jean*0051 & useFluxFormula_AIM, blk_nIter, calcWindStress,
679d149d01 Jean*0052 & blk_taveFreq,
7753507405 Curt*0053 & AirTempFile, AirHumidityFile, RainFile,
0054 & SolarFile, LongwaveFile, UWindFile,
0055 & VWindFile, RunoffFile, WSpeedFile, QnetFile,
679d149d01 Jean*0056 & EmPFile, CloudFile, airPotTempFile
7753507405 Curt*0057
0058 #ifdef CONSERV_BULKF
0059
0060 NAMELIST /BULKF_PARM02/
0061 & qnet_off, empmr_off, conservcycle
0062 #endif
0063
ae4c29e0db Jean*0064
0065
0066 IF ( .NOT.useBulkForce ) THEN
0067
0068 _BEGIN_MASTER(myThid)
0069
0070
0071 CALL PACKAGES_UNUSED_MSG(
0072 I 'useBulkForce', 'BULKF_READPARMS', 'blk' )
0073 _END_MASTER(myThid)
0074 RETURN
0075 ENDIF
7753507405 Curt*0076
0077 _BEGIN_MASTER(myThid)
0078
679d149d01 Jean*0079
6a1d3c464b Jean*0080
69f66dfb04 Jean*0081
0082 rhoA = 1.3 _d 0
0083 rhoFW = rhoConstFresh
0084 cpAir = atm_Cp
0085
6a1d3c464b Jean*0086 Lvap = 2.5 _d 6
0087 Lfresh = 3.34 _d 5
69f66dfb04 Jean*0088
6a1d3c464b Jean*0089 Tf0kel = celsius2K
69f66dfb04 Jean*0090 Rgas = atm_Rd
0091
6a1d3c464b Jean*0092 xkar = 0.4 _d 0
69f66dfb04 Jean*0093 stefan = 5.67 _d -8
0094 zref = 10.0 _d 0
0095 zwd = zref
0096 zth = zref
0097 cDrag_1 = 2.70 _d -3
0098 cDrag_2 = 0.142 _d -3
0099 cDrag_3 = 0.0764 _d -3
0100 cStantonS = 18.0 _d -3
0101 cStantonU = 32.7 _d -3
0102 cDalton = 34.6 _d -3
0103 umin = 1.0 _d 0
6a1d3c464b Jean*0104 humid_fac = 0.606 _d 0
69f66dfb04 Jean*0105 saltQsFac = 0.980 _d 0
6a1d3c464b Jean*0106 gamma_blk = 0.010 _d 0
0107 atm_emissivity = .90 _d 0
0108 ocean_emissivity= .985 _d 0
0109 snow_emissivity = .98 _d 0
0110 ice_emissivity = .98 _d 0
679d149d01 Jean*0111 ocean_albedo = .10 _d 0
0112 #ifdef ALLOW_FORMULA_AIM
0113 FWIND0 = 0.6 _d 0
0114 CHS = 0.8 _d -3
0115 VGUST = 5. _d 0
0116 DTHETA = 3. _d 0
0117 dTstab = 1. _d 0
0118 FSTAB = 0.67 _d 0
0119 #endif
6a1d3c464b Jean*0120
0121
679d149d01 Jean*0122 useFluxFormula_AIM = .FALSE.
69f66dfb04 Jean*0123 blk_nIter = 5
679d149d01 Jean*0124 calcWindStress = zonalWindFile .EQ. ' '
0125 & .AND. meridWindFile .EQ. ' '
6a1d3c464b Jean*0126
0127
7753507405 Curt*0128 AirTempFile=' '
0129 AirHumidityFile=' '
0130 RainFile=' '
0131 SolarFile=' '
0132 LongwaveFile=' '
0133 UWindFile=' '
0134 VWindFile=' '
0135 WspeedFile=' '
0136 RunoffFile=' '
0137 QnetFile=' '
0138 EmPFile=' '
0139 CloudFile=' '
0140 SnowFile=' '
679d149d01 Jean*0141 airPotTempFile=' '
7753507405 Curt*0142
b7411f1a84 Jean*0143
0144 blk_taveFreq = UNSET_RL
0145
0146 CALL OPEN_COPY_DATA_FILE(
0147 I 'data.blk', 'BULKF_READPARMS',
0148 O iUnit,
0149 I myThid )
0150
7753507405 Curt*0151
69f66dfb04 Jean*0152 WRITE(msgBuf,'(A)')' BULKF_READPARMS: starts to read BULKF_CONST'
0153 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0154 & SQUEEZE_RIGHT , myThid)
6a1d3c464b Jean*0155 READ(UNIT=iUnit,NML=BULKF_CONST)
69f66dfb04 Jean*0156 WRITE(msgBuf,'(A)') ' BULKF_READPARMS: read BULKF_CONST : OK'
6a1d3c464b Jean*0157 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
69f66dfb04 Jean*0158 & SQUEEZE_RIGHT , myThid)
7753507405 Curt*0159
69f66dfb04 Jean*0160 WRITE(msgBuf,'(A)')' BULKF_READPARMS: starts to read BULKF_PARM01'
0161 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0162 & SQUEEZE_RIGHT , myThid)
6a1d3c464b Jean*0163 READ(UNIT=iUnit,NML=BULKF_PARM01)
69f66dfb04 Jean*0164 WRITE(msgBuf,'(A)') ' BULKF_READPARMS: read BULKF_PARM01 : OK'
7753507405 Curt*0165 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
69f66dfb04 Jean*0166 & SQUEEZE_RIGHT , myThid)
7753507405 Curt*0167
0168 #ifdef CONSERV_BULKF
0169
0170 qnet_off=0.d0
0171 empmr_off=0.d0
69f66dfb04 Jean*0172 WRITE(msgBuf,'(A)')' BULKF_READPARMS: starts reading BULKF_PARM02'
0173 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0174 & SQUEEZE_RIGHT , myThid)
7753507405 Curt*0175 READ(UNIT=iUnit,NML=BULKF_PARM02)
69f66dfb04 Jean*0176 WRITE(msgBuf,'(A)') ' BULKF_READPARMS: read BULKF_PARM02 : OK'
7753507405 Curt*0177 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
69f66dfb04 Jean*0178 & SQUEEZE_RIGHT , myThid)
7753507405 Curt*0179
0180 #endif /* CONSERV_BULKF */
0181
0182
7a77863887 Mart*0183 #ifdef SINGLE_DISK_IO
7753507405 Curt*0184 CLOSE(iUnit)
7a77863887 Mart*0185 #else
0186 CLOSE(iUnit,STATUS='DELETE')
0187 #endif /* SINGLE_DISK_IO */
6a1d3c464b Jean*0188
b7411f1a84 Jean*0189
0190
0191 IF ( blk_taveFreq .NE. UNSET_RL ) THEN
0192 WRITE(msgBuf,'(2A)') 'BULKF_READPARMS: "blk_taveFreq"',
0193 & ' is no longer allowed in file "data.blk"'
0194 CALL PRINT_ERROR( msgBuf, myThid )
0195 WRITE(msgBuf,'(2A)') 'BULKF_READPARMS: ',
0196 & ' since "pkg/timeave" has been removed.'
0197 CALL PRINT_ERROR( msgBuf, myThid )
0198
0199 STOP 'ABNORMAL END: S/R BULKF_READPARMS'
0200 ENDIF
0201
679d149d01 Jean*0202
0203 #ifndef ALLOW_FORMULA_AIM
0204 IF ( useFluxFormula_AIM ) THEN
0205 WRITE(msgBuf,'(2A)') ' BULKF_READPARMS: ',
0206 & 'useFluxFormula_AIM is TRUE and #undef ALLOW_FORMULA_AIM'
0207 CALL PRINT_ERROR( msgBuf , myThid)
0208 WRITE(msgBuf,'(2A)') ' BULKF_READPARMS: => recompile with',
0209 & ' #define ALLOW_FORMULA_AIM in BULK_FORCE_OPTIONS.h'
0210 CALL PRINT_ERROR( msgBuf , myThid)
b7411f1a84 Jean*0211 STOP 'ABNORMAL END: S/R BULKF_READPARMS'
679d149d01 Jean*0212 ENDIF
0213 #endif
0214
6a1d3c464b Jean*0215
69f66dfb04 Jean*0216
0217
6a1d3c464b Jean*0218
8d92b2862f Jean*0219 useQnetch = QnetFile .NE. ' '
0220 useEmPch = EmPFile .NE. ' '
0221
6a1d3c464b Jean*0222
0223 iUnit = standardMessageUnit
0224
0225
69f66dfb04 Jean*0226
0227 WRITE(iUnit,*) 'BlkF: rhoA =',rhoA
0228 WRITE(iUnit,*) 'BlkF: rhoFW =',rhoFW
0229 WRITE(iUnit,*) 'BlkF: cpAir =',cpAir
0230
6a1d3c464b Jean*0231 WRITE(iUnit,*) 'BlkF: Lvap =',Lvap
0232 WRITE(iUnit,*) 'BlkF: Lfresh =',Lfresh
69f66dfb04 Jean*0233
0234
6a1d3c464b Jean*0235 WRITE(iUnit,*) 'BlkF: Tf0kel =',Tf0kel
69f66dfb04 Jean*0236 WRITE(iUnit,*) 'BlkF: Rgas =',Rgas
0237
6a1d3c464b Jean*0238 WRITE(iUnit,*) 'BlkF: xkar =',xkar
69f66dfb04 Jean*0239 WRITE(iUnit,*) 'BlkF: stefan =',stefan
0240 WRITE(iUnit,*) 'BlkF: zref =',zref
0241 WRITE(iUnit,*) 'BlkF: zwd =',zwd
0242 WRITE(iUnit,*) 'BlkF: zth =',zth
0243 WRITE(iUnit,*) 'BlkF: cDrag_1 =',cDrag_1
0244 WRITE(iUnit,*) 'BlkF: cDrag_2 =',cDrag_2
0245 WRITE(iUnit,*) 'BlkF: cDrag_3 =',cDrag_3
0246 WRITE(iUnit,*) 'BlkF: cStantonS=',cStantonS
0247 WRITE(iUnit,*) 'BlkF: cStantonU=',cStantonU
0248 WRITE(iUnit,*) 'BlkF: cDalton =',cDalton
0249 WRITE(iUnit,*) 'BlkF: umin =',umin
6a1d3c464b Jean*0250 WRITE(iUnit,*) 'BlkF: humid_fac=',humid_fac
69f66dfb04 Jean*0251 WRITE(iUnit,*) 'BlkF: saltQsFac=',saltQsFac
6a1d3c464b Jean*0252 WRITE(iUnit,*) 'BlkF: gamma_blk=',gamma_blk
0253 WRITE(iUnit,*) 'BlkF: atm_emissivity =',atm_emissivity
0254 WRITE(iUnit,*) 'BlkF: ocean_emissivity=',ocean_emissivity
0255 WRITE(iUnit,*) 'BlkF: snow_emissivity =',snow_emissivity
0256 WRITE(iUnit,*) 'BlkF: ice_emissivity =',ice_emissivity
679d149d01 Jean*0257 WRITE(iUnit,*) 'BlkF: ocean_albedo =',ocean_albedo
0258 #ifdef ALLOW_FORMULA_AIM
0259 WRITE(iUnit,*) 'BlkF: FWIND0 =', FWIND0
0260 WRITE(iUnit,*) 'BlkF: CHS =', CHS
0261 WRITE(iUnit,*) 'BlkF: VGUST =', VGUST
0262 WRITE(iUnit,*) 'BlkF: DTHETA =', DTHETA
0263 WRITE(iUnit,*) 'BlkF: dTstab =', dTstab
0264 WRITE(iUnit,*) 'BlkF: FSTAB =', FSTAB
0265 #endif
0266 WRITE(iUnit,*) 'BlkF: useFluxFormula_AIM=',useFluxFormula_AIM
8d92b2862f Jean*0267 WRITE(iUnit,*) 'BlkF: calcWindStress =', calcWindStress
0268 WRITE(iUnit,*) 'BlkF: useQnetch =', useQnetch
0269 WRITE(iUnit,*) 'BlkF: useEmPch =', useEmPch
69f66dfb04 Jean*0270 WRITE(iUnit,*) 'BlkF: blk_nIter =',blk_nIter
6a1d3c464b Jean*0271 IF (iUnit.EQ.88) CLOSE(iUnit)
0272
0273
7753507405 Curt*0274 _END_MASTER(myThid)
0275
0276
0277 _BARRIER
0278
0279 #endif /* ALLOW_BULK_FORCE */
0280
6a1d3c464b Jean*0281 RETURN
0282 END