Changeset 4570


Ignore:
Timestamp:
Jun 13, 2023, 8:58:55 PM (19 months ago)
Author:
idelkadi
Message:

Ecrad version update in LMDZ (SPARTACUS solver)

Location:
LMDZ6/trunk/libf/phylmd/ecrad
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/ecrad/radiation_scheme.F90

    r4543 r4570  
    356356! AI appel radiation_setup
    357357call SETUP_RADIATION_SCHEME(loutput)
     358! Read "radiation_driver" namelist into radiation driver config type
     359  file_name="namelist_ecrad"
     360call driver_config%read(file_name)
     361
     362if (rad_config%i_solver_sw == ISolverSPARTACUS &
     363      & .or.   rad_config%i_solver_lw == ISolverSPARTACUS) then
     364       print*,'Solveur SW: ', rad_config%i_solver_sw
     365       print*,'Solveur LW: ', rad_config%i_solver_lw
     366   if (driver_config%ok_effective_size) then
     367       print*,'low_inv_effective_size = ',driver_config%low_inv_effective_size
     368       print*,'middle_inv_effective_size = ',driver_config%middle_inv_effective_size
     369       print*,'high_inv_effective_size = ',driver_config%high_inv_effective_size
     370   else if (driver_config%ok_separation) then   
     371       print*,'cloud_separation_scale_surface =',driver_config%cloud_separation_scale_surface
     372       print*,'cloud_separation_scale_toa =',driver_config%cloud_separation_scale_toa
     373       print*,'cloud_separation_scale_power =',driver_config%cloud_separation_scale_power
     374       print*,'cloud_inhom_separation_factor =',driver_config%cloud_inhom_separation_factor
     375   endif   
     376endif   
    358377
    359378 if (lprint_config) then
     
    502521! AI ! Read cloud properties needed by SPARTACUS
    503522!AI ATTENTION meme traitement dans le version offline
    504   if (driver_config%low_inv_effective_size >= 0.0_jprb &
    505      & .or. driver_config%middle_inv_effective_size >= 0.0_jprb &
    506      & .or. driver_config%high_inv_effective_size >= 0.0_jprb) then
     523
     524! 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)
     526
     527!  if (driver_config%low_inv_effective_size >= 0.0_jprb &
     528!     & .or. driver_config%middle_inv_effective_size >= 0.0_jprb &
     529!     & .or. driver_config%high_inv_effective_size >= 0.0_jprb) then
     530  if (driver_config%ok_effective_size) then
    507531     call cloud%create_inv_cloud_effective_size_eta(klon, klev, &
    508532               &  thermodynamics%pressure_hl, &
     
    510534               &  driver_config%middle_inv_effective_size, &
    511535               &  driver_config%high_inv_effective_size, 0.8_jprb, 0.45_jprb)
    512   else if (driver_config%cloud_separation_scale_surface > 0.0_jprb &
    513          .and. driver_config%cloud_separation_scale_toa > 0.0_jprb) then
    514     call cloud%param_cloud_effective_separation_eta(klon, klev, &
     536!  else if (driver_config%cloud_separation_scale_surface > 0.0_jprb &
     537!         .and. driver_config%cloud_separation_scale_toa > 0.0_jprb) then
     538  else if (driver_config%ok_separation) then
     539      call cloud%param_cloud_effective_separation_eta(klon, klev, &
    515540               &  thermodynamics%pressure_hl, &
    516541               &  driver_config%cloud_separation_scale_surface, &
  • LMDZ6/trunk/libf/phylmd/ecrad/setup_config_from_lmdz.F90

    r4543 r4570  
    88
    99  type driver_config_type
     10     logical    :: ok_effective_size  = .true.
     11     logical    :: ok_separation = .false.   
    1012     real(jprb) :: high_inv_effective_size   = -1.0_jprb ! m-1
    1113     real(jprb) :: middle_inv_effective_size = -1.0_jprb ! m-1
    1214     real(jprb) :: low_inv_effective_size    = -1.0_jprb ! m-1
    13      real(jprb) :: cloud_inhom_separation_factor  = 1.0_jprb
     15     real(jprb) :: cloud_inhom_separation_factor  = -1.0_jprb
    1416     real(jprb) :: cloud_separation_scale_surface = -1.0_jprb
    1517     real(jprb) :: cloud_separation_scale_toa     = -1.0_jprb
     
    3436    character(*), intent(in)          :: file_name
    3537    logical, intent(out), optional    :: is_success
    36     integer :: iosopen ! Status after calling open
     38    logical    :: ok_effective_size, ok_separation
     39    integer    :: iosopen ! Status after calling open
    3740    real(jprb) :: high_inv_effective_size
    3841    real(jprb) :: middle_inv_effective_size
     
    4548    real(jprb) :: overlap_decorr_length
    4649
    47     namelist /radiation_driver/ frac_std, overlap_decorr_length, &
     50    namelist /radiation_driver/ ok_effective_size, ok_separation, &
     51         &  frac_std, overlap_decorr_length, &
    4852         &  high_inv_effective_size, middle_inv_effective_size, low_inv_effective_size, &
    4953         &  cloud_inhom_separation_factor, cloud_separation_scale_surface, &
    5054         &  cloud_separation_scale_toa, cloud_separation_scale_power
     55
     56    ok_effective_size = .false.
     57    ok_separation = .false.
     58    high_inv_effective_size   = -1.0_jprb
     59    middle_inv_effective_size = -1.0_jprb
     60    low_inv_effective_size    = -1.0_jprb
     61    cloud_inhom_separation_factor  = -1.0_jprb
     62    cloud_separation_scale_surface = -1.0_jprb
     63    cloud_separation_scale_toa     = -1.0_jprb
     64    cloud_separation_scale_power   = -1.0_jprb
     65    frac_std = 0.75_jprb
     66    overlap_decorr_length = 2000.0_jprb
    5167
    5268    ! Open the namelist file and read the radiation_driver namelist
     
    7288
    7389    ! Copy namelist data into configuration object
     90    this%ok_effective_size = ok_effective_size
     91    this%ok_separation = ok_separation
    7492    this%frac_std = frac_std
    7593    this%overlap_decorr_length = overlap_decorr_length
Note: See TracChangeset for help on using the changeset viewer.