Changeset 4388 for LMDZ6/branches
- Timestamp:
- Jan 20, 2023, 3:41:14 PM (23 months ago)
- Location:
- LMDZ6/branches/LMDZ_ECRad/libf/phylmd
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/LMDZ_ECRad/libf/phylmd/ecrad/radiation_scheme.F90
r4188 r4388 16 16 & IDAY, TIME, & 17 17 & PSOLAR_IRRADIANCE, & 18 & PMU0, PTEMPERATURE_SKIN, PALBEDO_DIF, PALBEDO_DIR, & 18 & PMU0, PTEMPERATURE_SKIN, & 19 & PALBEDO_DIF, PALBEDO_DIR, & 19 20 & PEMIS, PEMIS_WINDOW, & 20 & PCCN_LAND, PCCN_SEA, & 21 & PGELAM, PGEMU, PLAND_SEA_MASK, & 22 & PPRESSURE, PTEMPERATURE, & 21 & PGELAM, PGEMU, & 23 22 & PPRESSURE_H, PTEMPERATURE_H, PQ, PQSAT, & 24 23 & PCO2, PCH4, PN2O, PNO2, PCFC11, PCFC12, PHCFC22, & 25 24 & PCCL4, PO3, PO2, & 26 & PCLOUD_FRAC, PQ_LIQUID, PQ_ICE, PQ_ RAIN, PQ_SNOW, &25 & PCLOUD_FRAC, PQ_LIQUID, PQ_ICE, PQ_SNOW, & 27 26 & ZRE_LIQUID_UM, ZRE_ICE_UM, & 28 27 & PAEROSOL_OLD, PAEROSOL, & … … 140 139 REAL(KIND=JPRB), INTENT(IN) :: PGEMU(KLON) 141 140 ! Land-sea mask 142 REAL(KIND=JPRB), INTENT(IN) :: PLAND_SEA_MASK(KLON)141 !REAL(KIND=JPRB), INTENT(IN) :: PLAND_SEA_MASK(KLON) 143 142 144 143 ! *** Variables on full levels 145 REAL(KIND=JPRB), INTENT(IN) :: PPRESSURE(KLON,KLEV) ! (Pa)146 REAL(KIND=JPRB), INTENT(IN) :: PTEMPERATURE(KLON,KLEV) ! (K)144 !REAL(KIND=JPRB), INTENT(IN) :: PPRESSURE(KLON,KLEV) ! (Pa) 145 !REAL(KIND=JPRB), INTENT(IN) :: PTEMPERATURE(KLON,KLEV) ! (K) 147 146 ! *** Variables on half levels 148 147 REAL(KIND=JPRB), INTENT(IN) :: PPRESSURE_H(KLON,KLEV+1) ! (Pa) … … 168 167 REAL(KIND=JPRB), INTENT(IN) :: PQ_LIQUID(KLON,KLEV) 169 168 REAL(KIND=JPRB), INTENT(IN) :: PQ_ICE(KLON,KLEV) 170 REAL(KIND=JPRB), INTENT(IN) :: PQ_RAIN(KLON,KLEV)169 !REAL(KIND=JPRB), INTENT(IN) :: PQ_RAIN(KLON,KLEV) 171 170 REAL(KIND=JPRB), INTENT(IN) :: PQ_SNOW(KLON,KLEV) 172 171 … … 175 174 REAL(KIND=JPRB), INTENT(IN) :: PAEROSOL(KLON,KLEV,KAEROSOL) 176 175 177 REAL(KIND=JPRB), INTENT(IN) :: PCCN_LAND(KLON)178 REAL(KIND=JPRB), INTENT(IN) :: PCCN_SEA(KLON)176 !REAL(KIND=JPRB), INTENT(IN) :: PCCN_LAND(KLON) 177 !REAL(KIND=JPRB), INTENT(IN) :: PCCN_SEA(KLON) 179 178 180 179 !AI mars 2021 … … 321 320 print*,'PTEMPERATURE_SKIN =',PTEMPERATURE_SKIN 322 321 print*,'PEMIS, PEMIS_WINDOW =', PEMIS, PEMIS_WINDOW 323 print*,'PCCN_LAND, PCCN_SEA =', PCCN_LAND, PCCN_SEA324 322 print*,'PGELAM, PGEMU =', PGELAM, PGEMU 325 print*,'PPRESSURE =', PPRESSURE326 print*,'PTEMPERATURE =', PTEMPERATURE327 323 print*,'PPRESSURE_H =', PPRESSURE_H 328 324 print*,'PTEMPERATURE_H =', PTEMPERATURE_H … … 332 328 PCO2, PCH4, PN2O, PNO2, PCFC11, PCFC12, PHCFC22, PCCL4 333 329 print*,'PO3 =',PO3 334 print*,'PCLOUD_FRAC, PQ_LIQUID, PQ_ICE, PQ_ RAIN, PQ_SNOW =', &335 PCLOUD_FRAC, PQ_LIQUID, PQ_ICE, PQ_ RAIN, PQ_SNOW330 print*,'PCLOUD_FRAC, PQ_LIQUID, PQ_ICE, PQ_SNOW =', & 331 PCLOUD_FRAC, PQ_LIQUID, PQ_ICE, PQ_SNOW 336 332 print*,'ZRE_LIQUID_UM, ZRE_ICE_UM =', & 337 333 ZRE_LIQUID_UM, ZRE_ICE_UM … … 408 404 ! Alternative approximate version using temperature and pressure from 409 405 ! the thermodynamics structure 410 CALL thermodynamics%calc_saturation_wrt_liquid(KIDIA, KFDIA) 406 !CALL thermodynamics%calc_saturation_wrt_liquid(KIDIA, KFDIA) 407 !AI ATTENTION 408 thermodynamics%h2o_sat_liq = PQSAT 411 409 412 410 print*,'********** SINGLE LEVEL VARS **********************************' 413 411 !AI ATTENTION 414 !thermodynamics%h2o_sat_liq = PQSAT415 412 ! Set single-level fileds 416 413 single_level%solar_irradiance = PSOLAR_IRRADIANCE -
LMDZ6/branches/LMDZ_ECRad/libf/phylmd/ecrad/radiation_setup.F90
r4188 r4388 69 69 CONTAINS 70 70 71 ! This routine copies information between the IFSradiation71 ! This routine copies information between the LMDZ radiation 72 72 ! configuration (stored in global variables) and the radiation 73 73 ! configuration of the modular radiation scheme (stored in … … 75 75 ! to print lots of information during the setup stage (default is 76 76 ! no). 77 ! AI At the end of the routine, the parameters are read in namelist 78 ! 77 79 SUBROUTINE SETUP_RADIATION_SCHEME(LOUTPUT) 78 80 79 81 USE YOMHOOK, ONLY : LHOOK, DR_HOOK 82 ! AI (propre a IFS) 80 83 ! USE YOMLUN, ONLY : NULNAM, NULOUT, NULERR 81 84 USE YOMLUN, ONLY : NULOUT, NULERR 82 85 USE YOESRTWN, ONLY : NMPSRTM 83 ! AI ATTENTION 86 ! AI ATTENTION (propre a IFS) 84 87 ! USE YOERAD, ONLY : YRERAD 85 88 … … 87 90 USE radiation_aerosol_optics, ONLY : dry_aerosol_sw_mass_extinction 88 91 92 ! AI (propre a IFS) 89 93 !#include "posname.intfb.h" 90 94 … … 143 147 ! Do we do Hogan and Bozzo (2014) approximate longwave updates? 144 148 ! AI ATTENTION (ifs : ) 149 ! AI (propre a IFS) 145 150 ! rad_config%do_lw_derivatives = YRERAD%LAPPROXLWUPDATE 146 151 rad_config%do_lw_derivatives = .false. … … 161 166 ! *** SETUP GAS OPTICS *** 162 167 163 ! Assume IFS has already set-up RRTM, so the setup_radiation 164 ! routine below does not have to (ifs : F) 168 ! routine below does not have to (ifs : F) 165 169 print*,'i_gas_model =',rad_config%i_gas_model 166 170 rad_config%do_setup_ifsrrtm = .TRUE. … … 174 178 ! AI ATTENTION 175 179 ! Choix offline : liquid_model_name = "SOCRATES" 176 ! IF (YRERAD%NLIQOPT == 2) THEN177 ! rad_config%i_liq_model = ILiquidModelSlingo178 ! ELSEIF (YRERAD%NLIQOPT == 3) THEN179 180 rad_config%i_liq_model = ILiquidModelSOCRATES 180 181 if (lprint_setp) then … … 182 183 endif 183 184 184 ! ELSE185 ! WRITE(NULERR,'(a,i0)') 'Unavailable liquid optics model in modular radiation scheme: NLIQOPT=', &186 ! & YRERAD%NLIQOPT187 ! CALL ABOR1('RADIATION_SETUP: error interpreting NLIQOPT')188 ! ENDIF189 190 185 ! Setup ice optics 191 186 ! Choix offline : ice_model_name = "Fu-IFS" 192 ! IF (YRERAD%NICEOPT == 3) THEN193 187 rad_config%i_ice_model = IIceModelFu 194 188 if (lprint_setp) then 195 189 print*,'rad_config%i_ice_model =', rad_config%i_ice_model 196 190 endif 197 ! ELSEIF (YRERAD%NICEOPT == 4) THEN 198 ! rad_config%i_ice_model = IIceModelBaran 199 ! ELSE 200 ! WRITE(NULERR,'(a,i0)') 'Unavailable ice optics model in modular radiation scheme: NICEOPT=', & 201 ! & YRERAD%NICEOPT 202 ! CALL ABOR1('RADIATION_SETUP: error interpreting NICEOPT') 203 ! ENDIF 204 191 192 ! AI (propre a IFS) 205 193 ! For consistency with earlier versions of the IFS radiation 206 194 ! scheme, we perform shortwave delta-Eddington scaling *after* the … … 215 203 endif 216 204 205 ! AI (propre a IFS) 217 206 ! Use Exponential-Exponential cloud overlap to match original IFS 218 207 ! implementation of Raisanen cloud generator … … 230 219 endif 231 220 232 ! IF (YRERAD%NAERMACC > 0) THEN233 ! Using MACC climatology - in this case the aerosol optics file234 ! will be chosen automatically235 236 ! 12 IFS aerosol classes: 1-3 Sea salt, 4-6 Boucher desert dust,237 ! 7 hydrophilic organics, 8 hydrophobic organics, 9&10238 ! hydrophobic black carbon, 11 ammonium sulphate, 12 inactive239 ! SO2240 ! rad_config%n_aerosol_types = 12241 ! if (lprint_setp) then242 ! print*,'rad_config%n_aerosol_types =', rad_config%n_aerosol_types243 ! endif244 245 ! Indices to the aerosol optical properties in246 ! aerosol_ifs_rrtm_*.nc, for each class, where negative numbers247 ! index hydrophilic aerosol types and positive numbers index248 ! hydrophobic aerosol types249 ! rad_config%i_aerosol_type_map = 0 ! There can be up to 256 types250 ! if (lprint_setp) then251 ! print*,'rad_config%i_aerosol_type_map =', rad_config%i_aerosol_type_map252 ! endif253 254 ! rad_config%i_aerosol_type_map(1:12) = (/ &255 ! & -1, & ! Sea salt, size bin 1 (OPAC)256 ! & -2, & ! Sea salt, size bin 2 (OPAC)257 ! & -3, & ! Sea salt, size bin 3 (OPAC)258 ! & 7, & ! Desert dust, size bin 1 (Woodward 2001)259 ! & 8, & ! Desert dust, size bin 2 (Woodward 2001)260 ! & 9, & ! Desert dust, size bin 3 (Woodward 2001)261 ! & -4, & ! Hydrophilic organic matter (OPAC)262 ! & 10, & ! Hydrophobic organic matter (OPAC)263 ! & 11, & ! Black carbon (Boucher)264 ! & 11, & ! Black carbon (Boucher)265 ! & -5, & ! Ammonium sulphate (OPAC)266 ! & 14 /) ! Stratospheric sulphate (hand edited from OPAC)267 ! if (lprint_setp) then268 ! print*,'rad_config%i_aerosol_type_map =', rad_config%i_aerosol_type_map269 ! endif270 271 ! Background aerosol mass-extinction coefficients are obtained272 ! after the configuration files have been read - see later in273 ! this routine.274 275 ! ELSE276 ! Using Tegen climatology277 ! rad_config%n_aerosol_types = 6278 ! rad_config%i_aerosol_type_map = 0 ! There can be up to 256 types279 ! rad_config%i_aerosol_type_map(1:6) = (/ &280 ! & 1, & ! Continental background281 ! & 2, & ! Maritime282 ! & 3, & ! Desert283 ! & 4, & ! Urban284 ! & 5, & ! Volcanic active285 ! & 6 /) ! Stratospheric background286 287 ! Manually set the aerosol optics file name (the directory will288 ! be added automatically)289 ! rad_config%aerosol_optics_override_file_name = 'aerosol_ifs_rrtm_tegen.nc'290 ! ENDIF291 292 221 ! *** SETUP SOLVER *** 293 222 … … 300 229 ! Select longwave solver 301 230 ! AI ATTENTION 302 ! SELECT CASE (YRERAD%NLWSOLVER)303 ! CASE(0)304 ! rad_config%i_solver_lw = ISolverMcICA305 ! CASE(1)306 231 rad_config%i_solver_lw = ISolverSpartacus 307 232 if (lprint_setp) then … … 309 234 endif 310 235 311 ! CASE(2)312 ! rad_config%i_solver_lw = ISolverSpartacus313 ! rad_config%do_3d_effects = .TRUE.314 ! CASE DEFAULT315 ! WRITE(NULERR,'(a,i0)') 'Unknown value for NLWSOLVER: ', YRERAD%NLWSOLVER316 ! CALL ABOR1('RADIATION_SETUP: error interpreting NLWSOLVER')317 ! END SELECT318 319 ! Select shortwave solver320 ! SELECT CASE (YRERAD%NSWSOLVER)321 ! CASE(0)322 ! rad_config%i_solver_sw = ISolverMcICA323 ! CASE(1)324 236 rad_config%i_solver_sw = ISolverSpartacus 325 237 if (lprint_setp) then 326 238 print*,'rad_config%i_solver_sw =', rad_config%i_solver_sw 327 239 endif 328 329 ! rad_config%do_3d_effects = .FALSE.330 ! IF (YRERAD%NLWSOLVER == 2) THEN331 ! CALL ABOR1('RADIATION_SETUP: cannot represent 3D effects in LW but not SW')332 ! ENDIF333 ! CASE(2)334 ! rad_config%i_solver_sw = ISolverSpartacus335 ! rad_config%do_3d_effects = .TRUE.336 ! IF (YRERAD%NLWSOLVER == 1) THEN337 ! CALL ABOR1('RADIATION_SETUP: cannot represent 3D effects in SW but not LW')338 ! ENDIF339 ! CASE DEFAULT340 ! WRITE(NULERR,'(a,i0)') 'Unknown value for NSWSOLVER: ', YRERAD%NSWSOLVER341 ! CALL ABOR1('RADIATION_SETUP: error interpreting NSWSOLVER')342 ! END SELECT343 240 344 241 ! SPARTACUS solver requires delta scaling to be done separately … … 357 254 rad_config%do_lw_aerosol_scattering 358 255 endif 359 360 ! SELECT CASE (YRERAD%NLWSCATTERING)361 ! CASE(1)362 ! rad_config%do_lw_cloud_scattering = .TRUE.363 ! CASE(2)364 ! rad_config%do_lw_cloud_scattering = .TRUE.365 ! IF (YRERAD%NAERMACC > 0) THEN366 ! Tegen climatology omits data required to do longwave367 ! scattering by aerosols, so only turn this on with a more368 ! recent scattering database369 ! ENDIF370 ! END SELECT371 372 256 373 257 ! *** IMPLEMENT SETTINGS *** … … 379 263 ! variables in the NAERAD namelist available in the YRERAD 380 264 ! structure. 381 ! CALL POSNAME(NULNAM, 'RADIATION', ISTAT) 382 ! SELECT CASE (ISTAT) 383 ! CASE(0) 384 ! CALL rad_config%read(unit=NULNAM) 385 ! CASE(1) 386 ! WRITE(NULOUT,'(a)') 'Namelist RADIATION not found, using settings from NAERAD only' 387 ! CASE DEFAULT 388 ! CALL ABOR1('RADIATION_SETUP: error reading RADIATION section of namelist file') 389 ! END SELECT 390 391 ! AI ATTENTION test 265 266 ! AI ATTENTION (parameters read in namelist file) 392 267 file_name="namelist_ecrad" 393 268 call rad_config%read(file_name=file_name) 394 395 ! Print configuration396 ! IF (IVERBOSESETUP > 1) THEN397 ! WRITE(NULOUT,'(a)') 'Radiation scheme settings:'398 ! CALL rad_config%print(IVERBOSE=IVERBOSESETUP)399 ! ENDIF400 269 401 270 ! Use configuration data to set-up radiation scheme, including … … 409 278 ! results... 410 279 ! Note that NMPSRTM(:)=(/ 6, 6, 5, 5, 5, 5, 5, 4, 4, 3, 2, 2, 1, 6 /) 411 ! AI 412 !! NMPSRTM(:)=(/ 6, 6, 5, 5, 5, 5, 5, 4, 4, 3, 2, 2, 1, 6 /) 413 !! rad_config%i_albedo_from_band_sw = NMPSRTM 414 ! call rad_config%define_sw_albedo_intervals(6, & 415 ! & (/ 0.25e-6_jprb, 0.44e-6_jprb, 1.19e-6_jprb, & 416 ! & 2.38e-6_jprb, 4.00e-6_jprb /), (/ 1,2,3,4,5,6 /)) 280 ! AI (6 albedo SW bands) 417 281 call rad_config%define_sw_albedo_intervals(6, & 418 282 & [0.25e-6_jprb, 0.44e-6_jprb, 0.69e-6_jprb, & … … 422 286 ! outside and inside the window region of the spectrum 423 287 ! rad_config%i_emiss_from_band_lw = (/ 1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1 /) 424 ! AI 288 ! AI ATTENTION ????? 425 289 !! call rad_config%define_lw_emiss_intervals(3, & 426 290 !! & (/ 8.0e-6_jprb,13.0e-6_jprb /), (/ 1,2,1 /)) -
LMDZ6/branches/LMDZ_ECRad/libf/phylmd/radlwsw_m.F90
r4188 r4388 1348 1348 CALL RADIATION_SCHEME & 1349 1349 & (ist, iend, klon, klev, naero_grp, NSW, & 1350 ! ??? naero_tot1351 1350 & day_cur, current_time, & 1351 ! Cste solaire/(d_Terre-Soleil)**2 1352 1352 & SOLARIRAD, & 1353 ! Cos(angle zin), temp sol 1353 1354 & rmu0, tsol, & 1354 1355 ! Albedo diffuse et directe … … 1356 1357 ! Emessivite : PEMIS_WINDOW (???), & 1357 1358 & ZEMIS, ZEMISW, & 1358 ! PCCN_LAND, PCCN_SEA, & ???1359 & pctsrf(:,is_ter), pctsrf(:,is_oce), &1360 1359 ! longitude(rad), sin(latitude), PMASQ_ ??? 1361 & ZGELAM, ZGEMU, zmasq, & 1362 ! pression et temp aux milieux 1363 & pplay_i, t_i, & 1364 ! PTEMPERATURE_H ?, 1360 & ZGELAM, ZGEMU, & 1361 ! Temp et pres aux interf, vapeur eau, Satur spec humid 1365 1362 & paprs_i, ZTH_i, q_i, qsat_i, & 1366 1363 ! Gas … … 1368 1365 & ZCCL4, POZON_i(:,:,1), ZO2, & 1369 1366 ! nuages : 1370 & cldfra_i, flwc_i, fiwc_i, ZQ_RAIN, ZQ_SNOW, & 1367 & cldfra_i, flwc_i, fiwc_i, ZQ_SNOW, & 1368 ! rayons effectifs des gouttelettes 1371 1369 & ref_liq_i, ref_ice_i, & 1372 1370 ! aerosols
Note: See TracChangeset
for help on using the changeset viewer.