- Timestamp:
- Mar 29, 2022, 10:50:19 AM (3 years ago)
- Location:
- LMDZ6/trunk/libf/phylmd/ecrad
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/ecrad/radiation_config.F90
r3908 r4115 609 609 610 610 integer :: iunit ! Unit number of namelist file 611 612 logical :: lldeb_conf = .false. 611 613 612 614 namelist /radiation/ do_sw, do_lw, do_sw_direct, & … … 844 846 this%i_lw_emiss_index = i_lw_emiss_index 845 847 848 ! AI mars 2022 849 if (lldeb_conf) then 850 print*,'**************PARAMETRES DE CONFIGURATION OFFLINE*******************' 851 print*,'config%iverbosesetup = ', iverbosesetup 852 print*,'config%do_lw = ', do_lw 853 print*,'config%do_sw = ', do_sw 854 print*,'config%do_clear = ', do_clear 855 print*,'config%do_sw_direct = ', do_sw_direct 856 print*,'config%do_3d_effects = ', do_3d_effects 857 print*,'config%do_3d_lw_multilayer_effects = ', do_3d_lw_multilayer_effects 858 print*,'config%do_lw_side_emissivity = ', do_lw_side_emissivity 859 print*,'config%use_expm_everywhere = ', use_expm_everywhere 860 print*,'config%use_aerosols = ', use_aerosols 861 print*,'config%do_lw_cloud_scattering = ', do_lw_cloud_scattering 862 print*,'config%do_lw_aerosol_scattering = ', do_lw_aerosol_scattering 863 print*,'config%nregions = ', n_regions 864 print*,'config%do_surface_sw_spectral_flux = ', do_surface_sw_spectral_flux 865 print*,'config%do_sw_delta_scaling_with_gases = ', & 866 do_sw_delta_scaling_with_gases 867 print*,'config%do_fu_lw_ice_optics_bug = ', do_fu_lw_ice_optics_bug 868 print*,'config%do_canopy_fluxes_sw = ', do_canopy_fluxes_sw 869 print*,'config%do_canopy_fluxes_lw = ', do_canopy_fluxes_lw 870 print*,'config%use_canopy_full_spectrum_sw = ', use_canopy_full_spectrum_sw 871 print*,'config%use_canopy_full_spectrum_lw = ', use_canopy_full_spectrum_lw 872 print*,'config%do_canopy_gases_sw = ', do_canopy_gases_sw 873 print*,'config%do_canopy_gases_lw = ', do_canopy_gases_lw 874 print*,'config%mono_lw_wavelength = ', mono_lw_wavelength 875 print*,'config%mono_lw_total_od = ', mono_lw_total_od 876 print*,'config%mono_sw_total_od = ', mono_sw_total_od 877 print*,'config%mono_lw_single_scattering_albedo = ', & 878 mono_lw_single_scattering_albedo 879 print*,'config%mono_sw_single_scattering_albedo = ', & 880 mono_sw_single_scattering_albedo 881 print*,'config%mono_lw_asymmetry_factor = ', mono_lw_asymmetry_factor 882 print*,'config%mono_sw_asymmetry_factor = ', mono_sw_asymmetry_factor 883 print*,'config%use_beta_overlap = ', use_beta_overlap 884 print*,'config%cloud_inhom_decorr_scaling = ', cloud_inhom_decorr_scaling 885 print*,'config%clear_to_thick_fraction = ', clear_to_thick_fraction 886 print*,'config%overhead_sun_factor = ', overhead_sun_factor 887 print*,'config%max_gas_od_3d = ', max_gas_od_3d 888 print*,'config%max_cloud_od = ', max_cloud_od 889 print*,'config%max_3d_transfer_rate = ', max_3d_transfer_rate 890 print*,'config%min_cloud_effective_size = ', & 891 max(1.0e-6_jprb,min_cloud_effective_size) 892 print*,'config%overhang_factor = ', encroachment_scaling 893 894 print*,'config%directory_name = ',directory_name 895 print*,'config%cloud_pdf_override_file_name = ',cloud_pdf_override_file_name 896 print*,'config%liq_optics_override_file_name = ',liq_optics_override_file_name 897 print*,'config%ice_optics_override_file_name = ',ice_optics_override_file_name 898 print*,'config%aerosol_optics_override_file_name = ', & 899 aerosol_optics_override_file_name 900 print*,'config%cloud_fraction_threshold = ',cloud_fraction_threshold 901 print*,'config%cloud_mixing_ratio_threshold = ',cloud_mixing_ratio_threshold 902 print*,'config%n_aerosol_types = ',n_aerosol_types 903 print*,'config%do_save_radiative_properties = ',do_save_radiative_properties 904 print*,'config%do_lw_derivatives = ',do_lw_derivatives 905 print*,'config%do_save_spectral_flux = ',do_save_spectral_flux 906 print*,'config%do_save_gpoint_flux = ',do_save_gpoint_flux 907 print*,'config%do_nearest_spectral_sw_albedo = ',do_nearest_spectral_sw_albedo 908 print*,'config%do_nearest_spectral_lw_emiss = ',do_nearest_spectral_lw_emiss 909 print*,'config%sw_albedo_wavelength_bound = ',sw_albedo_wavelength_bound 910 print*,'config%lw_emiss_wavelength_bound = ',lw_emiss_wavelength_bound 911 print*,'config%i_sw_albedo_index = ',i_sw_albedo_index 912 print*,'config%i_lw_emiss_index = ',i_lw_emiss_index 913 print*,'************************************************************************' 914 endif 846 915 if (do_save_gpoint_flux) then 847 916 ! Saving the fluxes every g-point overrides saving as averaged … … 850 919 ! save anything 851 920 this%do_save_spectral_flux = .true. 921 print*,'config%do_save_spectral_flux = .true.' 852 922 end if 853 923 … … 855 925 call get_enum_code(liquid_model_name, LiquidModelName, & 856 926 & 'liquid_model_name', this%i_liq_model) 927 print*,'config%i_liq_model =', this%i_liq_model 857 928 858 929 ! Determine ice optics model 859 930 call get_enum_code(ice_model_name, IceModelName, & 860 931 & 'ice_model_name', this%i_ice_model) 861 932 print*,'config%i_ice_model =', this%i_ice_model 862 933 ! Determine gas optics model 863 934 call get_enum_code(gas_model_name, GasModelName, & 864 935 & 'gas_model_name', this%i_gas_model) 936 print*,'config%%i_gas_model = ', this%i_gas_model 865 937 866 938 ! Determine solvers 867 939 call get_enum_code(sw_solver_name, SolverName, & 868 940 & 'sw_solver_name', this%i_solver_sw) 941 print*,'config%i_solver_sw = ', this%i_solver_sw 869 942 call get_enum_code(lw_solver_name, SolverName, & 870 943 & 'lw_solver_name', this%i_solver_lw) 871 944 print*,'config%i_solver_lw = ', this%i_solver_lw 872 945 if (len_trim(sw_encroachment_name) > 1) then 873 946 call get_enum_code(sw_encroachment_name, EncroachmentName, & … … 877 950 call get_enum_code(sw_entrapment_name, EntrapmentName, & 878 951 & 'sw_entrapment_name', this%i_3d_sw_entrapment) 952 print*,'config%i_3d_sw_entrapment = ', this%i_3d_sw_entrapment 879 953 end if 880 954 … … 882 956 call get_enum_code(overlap_scheme_name, OverlapName, & 883 957 & 'overlap_scheme_name', this%i_overlap_scheme) 884 958 print*,'config%i_overlap_scheme = ', this%i_overlap_scheme 885 959 ! Determine cloud PDF shape 886 960 call get_enum_code(cloud_pdf_shape_name, PdfShapeName, & 887 961 & 'cloud_pdf_shape_name', this%i_cloud_pdf_shape) 888 962 print*,'config%i_cloud_pdf_shape = ', this%i_cloud_pdf_shape 889 963 this%i_aerosol_type_map = 0 890 964 if (this%use_aerosols) then 891 965 this%i_aerosol_type_map(1:n_aerosol_types) & 892 966 & = i_aerosol_type_map(1:n_aerosol_types) 967 print*,'config%i_aerosol_type_map = ', this%i_aerosol_type_map 893 968 end if 894 969 … … 900 975 this%do_clouds = .false. 901 976 end if 977 print*,'config%do_clouds = ', this%do_clouds 902 978 903 979 ! Normal subroutine exit -
LMDZ6/trunk/libf/phylmd/ecrad/radiation_ifs_rrtm.F90
r3908 r4115 97 97 ! can compute UV and photosynthetically active radiation for a 98 98 ! particular wavelength range 99 if (.not.allocated(config%wavenumber1_sw)) then100 99 allocate(config%wavenumber1_sw(config%n_bands_sw)) 101 end if102 if (.not.allocated(config%wavenumber2_sw)) then103 100 allocate(config%wavenumber2_sw(config%n_bands_sw)) 104 end if105 if (.not.allocated(config%wavenumber1_lw)) then106 101 allocate(config%wavenumber1_lw(config%n_bands_lw)) 107 end if108 if (.not.allocated(config%wavenumber2_lw)) then109 102 allocate(config%wavenumber2_lw(config%n_bands_lw)) 110 end if111 103 config%wavenumber1_lw = (/ 10, 350, 500, 630, 700, 820, 980, 1080, 1180, 1390, 1480, & 112 104 & 1800, 2080, 2250, 2380, 2600 /) … … 117 109 config%wavenumber2_sw = (/ 3250, 4000, 4650, 5150, 6150, 7700, 8050, 12850, 16000, & 118 110 & 22650, 29000, 38000, 50000, 2600 /) 119 120 if (.not.allocated(config%i_band_from_g_sw)) then 111 print*,'allocate dans ifs_rrtm' 121 112 allocate(config%i_band_from_g_sw (config%n_g_sw)) 122 end if123 if (.not.allocated(config%i_band_from_g_lw)) then124 113 allocate(config%i_band_from_g_lw (config%n_g_lw)) 125 end if126 if (.not.allocated(config%i_band_from_reordered_g_sw)) then127 114 allocate(config%i_band_from_reordered_g_sw(config%n_g_sw)) 128 end if129 if (.not.allocated(config%i_band_from_reordered_g_lw)) then130 115 allocate(config%i_band_from_reordered_g_lw(config%n_g_lw)) 131 end if132 if (.not.allocated(config%i_g_from_reordered_g_sw)) then133 116 allocate(config%i_g_from_reordered_g_sw(config%n_g_sw)) 134 end if135 if (.not.allocated(config%i_g_from_reordered_g_lw)) then136 117 allocate(config%i_g_from_reordered_g_lw(config%n_g_lw)) 137 end if138 118 139 119 ! Shortwave starts at 16: need to start at 1 -
LMDZ6/trunk/libf/phylmd/ecrad/radiation_scheme.F90
r4031 r4115 96 96 97 97 ! Modules from radiation library 98 ! AI ATTENTION99 !use radiation_config, only : config_type100 98 USE radiation_single_level, ONLY : single_level_type 101 99 USE radiation_thermodynamics, ONLY : thermodynamics_type … … 106 104 USE radiation_interface, ONLY : radiation, set_gas_units 107 105 USE radiation_save, ONLY : save_inputs 106 107 USE mod_phys_lmdz_para 108 108 109 109 IMPLICIT NONE … … 297 297 logical :: loutput=.true. 298 298 logical :: lprint_input=.false. 299 logical :: lprint_config=.true. 299 logical :: lprint_config=.false. 300 logical, save :: debut_ecrad=.true. 301 !$OMP THREADPRIVATE(debut_ecrad) 300 302 301 303 ! Import time functions for iseed calculation … … 335 337 print*,'PAEROSOL_OLD, PAEROSOL =', PAEROSOL_OLD, PAEROSOL 336 338 endif 337 ! AI ATTENTION lecture de namelist338 ! alternative a l appel de radiation_setup ifs339 !file_name="namelist_ecrad"340 !call rad_config%read(file_name=file_name)341 ! Setup the radiation scheme: load the coefficients for gas and342 ! cloud optics, currently from RRTMG343 !call setup_radiation(rad_config)344 339 345 340 IF (LHOOK) CALL DR_HOOK('RADIATION_SCHEME',0,ZHOOK_HANDLE) 346 341 print*,'Entree dans radiation_scheme' 342 343 !$OMP MASTER 344 if (debut_ecrad) then 347 345 ! AI appel radiation_setup 348 346 call SETUP_RADIATION_SCHEME(loutput) 349 !! Les 6 bandes SW pour l'albedo : 350 !! 0.185-0.25, 0.25-0.4, 0.4-0.69 , 0.69-1.19, 1.19-2.38, 2.38-4.00 micro-metre 351 call rad_config%define_sw_albedo_intervals(6, & 352 & (/ 0.25e-6_jprb, 0.44e-6_jprb, 1.19e-6_jprb, & 353 & 2.38e-6_jprb, 4.00e-6_jprb /), (/ 1,2,3,4,5,6 /)) 354 355 if (lprint_config) then 347 348 if (lprint_config) then 356 349 print*,'************* Parametres de configuration ********************' 357 350 print*,'rad_config%iverbosesetup = ',rad_config%iverbosesetup … … 378 371 print*,'n_bands_lw =', rad_config%n_bands_lw 379 372 print*,'rad_config%i_emiss_from_band_lw =', rad_config%i_emiss_from_band_lw 380 endif 381 373 endif 374 debut_ecrad=.false. 375 endif 376 !$OMP END MASTER 377 !$OMP BARRIER 378 ! Fin partie initialisation et configuration 379 380 ! AI : allocation des tableaux pour chaque partie (thermo, ...) 381 ! passage des champs LMDZ aux structures Ecrad 382 ! calculs Ecrad 382 383 ! AI ATTENTION 383 384 ! Allocate memory in radiation objects 385 ! emissivite avec une seule bande 384 386 CALL single_level%allocate(KLON, NSW, 1, & 385 387 & use_sw_albedo_direct=.TRUE.) … … 388 390 ! Set thermodynamic profiles: simply copy over the half-level 389 391 ! pressure and temperature 390 print*,'Appel allocate thermo'392 !print*,'Appel allocate thermo' 391 393 CALL thermodynamics%allocate(KLON, KLEV, use_h2o_sat=.true.) 392 print*,'Definir les champs thermo'394 !print*,'Definir les champs thermo' 393 395 ! AI 394 396 ! pressure_hl > paprs … … 397 399 thermodynamics%temperature_hl(KIDIA:KFDIA,:) = PTEMPERATURE_H(KIDIA:KFDIA,:) 398 400 399 ! IFS currently sets the half-level temperature at the surface to be 400 ! equal to the skin temperature. The radiation scheme takes as input 401 ! only the half-level temperatures and assumes the Planck function to 402 ! vary linearly in optical depth between half levels. In the lowest 403 ! atmospheric layer, where the atmospheric temperature can be much 404 ! cooler than the skin temperature, this can lead to significant 405 ! differences between the effective temperature of this lowest layer 406 ! and the true value in the model. 407 ! 408 ! We may approximate the temperature profile in the lowest model level 409 ! as piecewise linear between the top of the layer T[k-1/2], the 410 ! centre of the layer T[k] and the base of the layer Tskin. The mean 411 ! temperature of the layer is then 0.25*T[k-1/2] + 0.5*T[k] + 412 ! 0.25*Tskin, which can be achieved by setting the atmospheric 413 ! temperature at the half-level corresponding to the surface as 414 ! follows: 415 !thermodynamics%temperature_hl(KIDIA:KFDIA,KLEV+1) & 416 ! & = PTEMPERATURE(KIDIA:KFDIA,KLEV) & 417 ! & + 0.5_JPRB * (PTEMPERATURE_H(KIDIA:KFDIA,KLEV+1) & 418 ! & -PTEMPERATURE_H(KIDIA:KFDIA,KLEV)) 419 420 ! Alternatively we respect the model's atmospheric temperature in the 421 ! lowest model level by setting the temperature at the lowest 422 ! half-level such that the mean temperature of the layer is correct: 423 !thermodynamics%temperature_hl(KIDIA:KFDIA,KLEV+1) & 424 ! & = 2.0_JPRB * PTEMPERATURE(KIDIA:KFDIA,KLEV) & 425 ! & - PTEMPERATURE_H(KIDIA:KFDIA,KLEV) 426 401 !print*,'Compute saturation specific humidity' 427 402 ! Compute saturation specific humidity, used to hydrate aerosols. The 428 403 ! "2" for the last argument indicates that the routine is not being 429 404 ! called from within the convection scheme. 430 405 !CALL SATUR(KIDIA, KFDIA, KLON, 1, KLEV, & 431 ! & PPRESSURE, PTEMPERATURE, thermodynamics%h2o_sat_liq, 2) 406 ! & PPRESSURE, PTEMPERATURE, thermodynamics%h2o_sat_liq, 2) 432 407 ! Alternative approximate version using temperature and pressure from 433 408 ! the thermodynamics structure 434 print*,'Compute saturation specific humidity'435 409 CALL thermodynamics%calc_saturation_wrt_liquid(KIDIA, KFDIA) 436 410 … … 440 414 ! Set single-level fileds 441 415 single_level%solar_irradiance = PSOLAR_IRRADIANCE 442 !allocate(single_level%cos_sza(KIDIA:KFDIA))443 416 single_level%cos_sza(KIDIA:KFDIA) = PMU0(KIDIA:KFDIA) 444 !allocate(single_level%skin_temperature(KIDIA:KFDIA))445 417 single_level%skin_temperature(KIDIA:KFDIA) = PTEMPERATURE_SKIN(KIDIA:KFDIA) 446 !allocate(single_level%sw_albedo(KIDIA:KFDIA,1))447 418 single_level%sw_albedo(KIDIA:KFDIA,:) = PALBEDO_DIF(KIDIA:KFDIA,:) 448 !single_level%sw_albedo(KIDIA:KFDIA,:) = 0.2_JPRB449 !allocate(single_level%sw_albedo_direct(KIDIA:KFDIA,1))450 419 single_level%sw_albedo_direct(KIDIA:KFDIA,:)=PALBEDO_DIR(KIDIA:KFDIA,:) 451 !single_level%sw_albedo_direct(KIDIA:KFDIA,:)=0.2_JPRB452 ! Longwave emissivity is in two bands453 !allocate(single_level%lw_emissivity(KIDIA:KFDIA,1))454 !single_level%lw_emissivity(KIDIA:KFDIA,1) = 1.0_JPRB455 420 single_level%lw_emissivity(KIDIA:KFDIA,1) = PEMIS(KIDIA:KFDIA) 456 421 !single_level%lw_emissivity(KIDIA:KFDIA,2) = PEMIS_WINDOW(KIDIA:KFDIA) … … 480 445 481 446 print*,'********** CLOUDS (allocate + input) *******************************************' 482 print*,'Appel Allocate clouds'447 !print*,'Appel Allocate clouds' 483 448 CALL cloud%allocate(KLON, KLEV) 484 449 ! Set cloud fields … … 487 452 cloud%fraction(KIDIA:KFDIA,:) = PCLOUD_FRAC(KIDIA:KFDIA,:) 488 453 454 !AI ATTENTION a voir avec JL 489 455 ! Compute effective radii and convert to metres 490 456 !CALL LIQUID_EFFECTIVE_RADIUS(KIDIA, KFDIA, KLON, KLEV, & … … 506 472 !CALL CLOUD_OVERLAP_DECORR_LEN(KIDIA, KFDIA, KLON, PGEMU, YRERAD%NDECOLAT, & 507 473 ! & ZDECORR_LEN_KM, PDECORR_LEN_RATIO=ZDECORR_LEN_RATIO) 508 ! AI ATTENTION a revoir 509 ZDECORR_LEN_RATIO = 0.5_JPRB 510 rad_config%cloud_inhom_decorr_scaling = ZDECORR_LEN_RATIO 474 475 ! AI ATTENTION (valeur lue dans namelist) 476 !ZDECORR_LEN_RATIO = 0.5_JPRB 477 !rad_config%cloud_inhom_decorr_scaling = ZDECORR_LEN_RATIO 478 !AI ATTENTION meme valeur que dans offline 511 479 ZDECORR_LEN_KM = 2000.0_JPRB 512 480 DO JLON = KIDIA,KFDIA … … 520 488 ! hard coded at 1.0. 521 489 !CALL cloud%create_fractional_std(KLON, KLEV, YRERAD%RCLOUD_FRAC_STD) 490 ! AI ATTENTION frac_std=0.75 meme valeur que dans la version offline 522 491 CALL cloud%create_fractional_std(KLON, KLEV, frac_std) 523 492 493 ! AI ! Read cloud properties needed by SPARTACUS 524 494 ! By default mid and high cloud effective size is 10 km 525 CALL cloud%create_inv_cloud_effective_size(KLON,KLEV,1.0_JPRB/10000.0_JPRB)495 !CALL cloud%create_inv_cloud_effective_size(KLON,KLEV,1.0_JPRB/10000.0_JPRB) 526 496 ! But for boundary clouds (eta > 0.8) we set it to 1 km 527 DO JLEV = 1,KLEV528 DO JLON = KIDIA,KFDIA529 IF (PPRESSURE(JLON,JLEV) > 0.8_JPRB * PPRESSURE_H(JLON,KLEV+1)) THEN530 cloud%inv_cloud_effective_size(JLON,JLEV) = 1.0e-3_JPRB531 ENDIF532 ENDDO533 ENDDO497 !DO JLEV = 1,KLEV 498 ! DO JLON = KIDIA,KFDIA 499 ! IF (PPRESSURE(JLON,JLEV) > 0.8_JPRB * PPRESSURE_H(JLON,KLEV+1)) THEN 500 ! cloud%inv_cloud_effective_size(JLON,JLEV) = 1.0e-3_JPRB 501 ! ENDIF 502 ! ENDDO 503 !ENDDO 534 504 !AI ATTENTION meme traitement dans le version offline 535 !call cloud%create_inv_cloud_effective_size_eta(ncol, nlev, &536 !& thermodynamics%pressure_hl, &537 ! & low_inv_effective_size, &538 ! & middle_inv_effective_size, &539 ! & high_inv_effective_size, 0.8_jprb, 0.45_jprb)505 call cloud%create_inv_cloud_effective_size_eta(KLON, KLEV, & 506 & thermodynamics%pressure_hl, & 507 & 0.005_JPRB, & 508 & 0.0001_JPRB, & 509 & 0.0001, 0.8_jprb, 0.45_jprb) 540 510 541 511 print*,'******** AEROSOLS (allocate + input) **************************************' … … 596 566 597 567 print*,'********** GAS (allocate + input) ************************************************' 598 print*,'Appel Allocate gas'568 !print*,'Appel Allocate gas' 599 569 CALL gas%allocate(KLON, KLEV) 600 570 … … 609 579 610 580 ! Insert gas mixing ratios 611 print*,'Insert gas mixing ratios'581 !print*,'Insert gas mixing ratios' 612 582 CALL gas%put(IH2O, IMassMixingRatio, PQ) 613 583 CALL gas%put(IO3, IMassMixingRatio, PO3) 614 CALL gas%put_well_mixed(ICO2, I VolumeMixingRatio, PCO2)615 CALL gas%put_well_mixed(ICH4, I VolumeMixingRatio, PCH4)616 CALL gas%put_well_mixed(IN2O, I VolumeMixingRatio, PN2O)617 CALL gas%put_well_mixed(ICFC11, I VolumeMixingRatio, PCFC11)618 CALL gas%put_well_mixed(ICFC12, I VolumeMixingRatio, PCFC12)619 CALL gas%put_well_mixed(IHCFC22, I VolumeMixingRatio, PHCFC22)620 CALL gas%put_well_mixed(ICCL4, I VolumeMixingRatio, PCCL4)621 CALL gas%put_well_mixed(IO2, I VolumeMixingRatio, PO2)584 CALL gas%put_well_mixed(ICO2, IMAssMixingRatio, PCO2) 585 CALL gas%put_well_mixed(ICH4, IMassMixingRatio, PCH4) 586 CALL gas%put_well_mixed(IN2O, IMassMixingRatio, PN2O) 587 CALL gas%put_well_mixed(ICFC11, IMassMixingRatio, PCFC11) 588 CALL gas%put_well_mixed(ICFC12, IMassMixingRatio, PCFC12) 589 CALL gas%put_well_mixed(IHCFC22, IMassMixingRatio, PHCFC22) 590 CALL gas%put_well_mixed(ICCL4, IMassMixingRatio, PCCL4) 591 CALL gas%put_well_mixed(IO2, IMassMixingRatio, PO2) 622 592 ! Ensure the units of the gas mixing ratios are what is required by 623 593 ! the gas absorption model … … 675 645 ! Compute UV fluxes as weighted sum of appropriate shortwave bands 676 646 PFLUX_UV (KIDIA:KFDIA) = 0.0_JPRB 677 ! AI ATTENTION 678 !DO JBAND = 1,NWEIGHT_UV 679 ! PFLUX_UV(KIDIA:KFDIA) = PFLUX_UV(KIDIA:KFDIA) + WEIGHT_UV(JBAND) & 680 ! & * flux%sw_dn_surf_band(IBAND_UV(JBAND),KIDIA:KFDIA) 681 !ENDDO 647 DO JBAND = 1,NWEIGHT_UV 648 PFLUX_UV(KIDIA:KFDIA) = PFLUX_UV(KIDIA:KFDIA) + WEIGHT_UV(JBAND) & 649 & * flux%sw_dn_surf_band(IBAND_UV(JBAND),KIDIA:KFDIA) 650 ENDDO 682 651 683 652 ! Compute photosynthetically active radiation similarly 684 653 PFLUX_PAR (KIDIA:KFDIA) = 0.0_JPRB 685 654 PFLUX_PAR_CLEAR(KIDIA:KFDIA) = 0.0_JPRB 686 !AI ATTENTION 687 !DO JBAND = 1,NWEIGHT_PAR 688 ! PFLUX_PAR(KIDIA:KFDIA) = PFLUX_PAR(KIDIA:KFDIA) + WEIGHT_PAR(JBAND) & 689 ! & * flux%sw_dn_surf_band(IBAND_PAR(JBAND),KIDIA:KFDIA) 690 ! PFLUX_PAR_CLEAR(KIDIA:KFDIA) = PFLUX_PAR_CLEAR(KIDIA:KFDIA) & 691 ! & + WEIGHT_PAR(JBAND) & 692 ! & * flux%sw_dn_surf_clear_band(IBAND_PAR(JBAND),KIDIA:KFDIA) 693 !ENDDO 655 DO JBAND = 1,NWEIGHT_PAR 656 PFLUX_PAR(KIDIA:KFDIA) = PFLUX_PAR(KIDIA:KFDIA) + WEIGHT_PAR(JBAND) & 657 & * flux%sw_dn_surf_band(IBAND_PAR(JBAND),KIDIA:KFDIA) 658 PFLUX_PAR_CLEAR(KIDIA:KFDIA) = PFLUX_PAR_CLEAR(KIDIA:KFDIA) & 659 & + WEIGHT_PAR(JBAND) & 660 & * flux%sw_dn_surf_clear_band(IBAND_PAR(JBAND),KIDIA:KFDIA) 661 ENDDO 694 662 695 663 ! Compute effective broadband emissivity … … 702 670 703 671 ! Copy longwave derivatives 672 ! AI ATTENTION 704 673 !IF (YRERAD%LAPPROXLWUPDATE) THEN 705 674 IF (rad_config%do_lw_derivatives) THEN … … 708 677 709 678 ! Store the shortwave downwelling fluxes in each albedo band 679 !AI ATTENTION 710 680 !IF (YRERAD%LAPPROXSWUPDATE) THEN 711 681 IF (rad_config%do_surface_sw_spectral_flux) THEN -
LMDZ6/trunk/libf/phylmd/ecrad/radiation_setup.F90
r3946 r4115 290 290 ! ENDIF 291 291 292 292 ! *** SETUP SOLVER *** 293 293 294 294 ! 3D effects are off by default (ifs) … … 412 412 !! NMPSRTM(:)=(/ 6, 6, 5, 5, 5, 5, 5, 4, 4, 3, 2, 2, 1, 6 /) 413 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 /)) 417 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 /)) 417 call rad_config%define_sw_albedo_intervals(6, & 418 & [0.25e-6_jprb, 0.44e-6_jprb, 0.69e-6_jprb, & 419 & 1.19e-6_jprb, 2.38e-6_jprb], [1,2,3,4,5,6]) 418 420 ! Likewise between the 16 RRTM longwave bands and the 2 emissivity 419 421 ! inputs (info taken from rrtm_ecrt_140gp_mcica.F90) representing … … 425 427 426 428 ! ! Get spectral weightings for UV and PAR 427 !!call rad_config%get_sw_weights(0.2e-6_jprb, 0.4415e-6_jprb, &428 !!& NWEIGHT_UV, IBAND_UV, WEIGHT_UV, 'ultraviolet')429 !!call rad_config%get_sw_weights(0.4e-6_jprb, 0.7e-6_jprb, &430 !!& NWEIGHT_PAR, IBAND_PAR, WEIGHT_PAR, &431 !!& 'photosynthetically active radiation, PAR')429 call rad_config%get_sw_weights(0.2e-6_jprb, 0.4415e-6_jprb, & 430 & NWEIGHT_UV, IBAND_UV, WEIGHT_UV, 'ultraviolet') 431 call rad_config%get_sw_weights(0.4e-6_jprb, 0.7e-6_jprb, & 432 & NWEIGHT_PAR, IBAND_PAR, WEIGHT_PAR, & 433 & 'photosynthetically active radiation, PAR') 432 434 433 435 ! IF (YRERAD%NAERMACC > 0) THEN -
LMDZ6/trunk/libf/phylmd/ecrad/surdi.F90
r3908 r4115 104 104 !RCCL4 = 1.E-12_JPRB*ZCL4MWG/ZAIRMWG 105 105 106 !ATTENTION AI 02 2022 107 RCCO2 = 353.E-06_JPRB 108 RCCH4 = 1.72E-06_JPRB 109 RCN2O = 310.E-09_JPRB 110 RCCFC11 = 280.E-12_JPRB 111 RCCFC12 = 484.E-12_JPRB 112 RCCFC22 = 1.E-12_JPRB 113 RCCCL4 = 1.E-12_JPRB 114 RCNO2 = 500.E-13_JPRB 115 106 116 IF( LAQUA ) THEN 107 117 RCARDI = 348.E-06_JPRB*ZCO2MWG/ZAIRMWG
Note: See TracChangeset
for help on using the changeset viewer.