! $Id: strataer_nuc_mod.F90 3930 2021-06-11 19:39:09Z oboucher $
MODULE strataer_nuc_mod
! This module contains information about strato microphysic model nucleation parameters
  
  IMPLICIT NONE
  
CONTAINS
  
  ! Init all nucleation params
  SUBROUTINE strataer_nuc_init()
    
    USE ioipsl_getin_p_mod, ONLY : getin_p
    USE print_control_mod, ONLY : lunout
    USE mod_phys_lmdz_para, ONLY : is_master
    USE strataer_local_var_mod, ONLY: ALPH2SO4,flag_nuc_rate_box,nuclat_min,nuclat_max, &
         nucpres_min,nucpres_max
    
    !Config Key  = flag_nuc_rate_box
    !Config Desc = define or not a box for nucleation rate
    ! - F = global nucleation
    ! - T = 2D-box for nucleation need nuclat_min, nuclat_max, nucpres_min and
    ! nucpres_max
    !       to define its bounds.
    !Config Def  = F
    !Config Help = Used in physiq.F

    CALL getin_p('flag_nuc_rate_box',flag_nuc_rate_box)
    CALL getin_p('nuclat_min',nuclat_min)
    CALL getin_p('nuclat_max',nuclat_max)
    CALL getin_p('nucpres_min',nucpres_min)
    CALL getin_p('nucpres_max',nucpres_max)
    
    ! Read argument H2SO4 accommodation  coefficient [condensation/evaporation]
    CALL getin_p('alph2so4',ALPH2SO4)
    
    !============= Print params =============
    IF (is_master) THEN
       WRITE(lunout,*) 'IN STRATAER_NUC : ALPH2SO4 = ',alph2so4
       WRITE(lunout,*) 'IN STRATAER_NUC : flag_nuc_rate_box = ',flag_nuc_rate_box
       IF (flag_nuc_rate_box) THEN
          WRITE(lunout,*) 'IN STRATAER_NUC : nuclat_min = ',nuclat_min,', nuclat_max = ',nuclat_max
          WRITE(lunout,*) 'IN STRATAER_NUC : nucpres_min = ',nucpres_min,', nucpres_max = ',nucpres_max
       ENDIF
    ENDIF ! if master
    
  END SUBROUTINE strataer_nuc_init
  
  ! Init aerosol tracers and large scale scavinging
  SUBROUTINE tracstrataer_init(aerosol,lessivage)
    
    USE infotrac_phy, ONLY: nbtr, nbtr_sulgas, id_H2SO4_strat
    USE ioipsl, ONLY : getin
    USE print_control_mod, ONLY : lunout
    
    ! Output variables
    LOGICAL,DIMENSION(nbtr), INTENT(INOUT) :: aerosol
    LOGICAL,INTENT(INOUT)                  :: lessivage
    INTEGER :: it
    
    ! Initialization
    lessivage  =.TRUE.
    aerosol(:) = .FALSE.
    
    DO it= 1, nbtr_sulgas
       aerosol(it)=.FALSE.
       IF (it==id_H2SO4_strat) aerosol(it)=.TRUE.
    ENDDO
    DO it= nbtr_sulgas+1, nbtr
       aerosol(it)=.TRUE.
    ENDDO
    
    !!jyg(20130206) : le choix d activation du lessivage est fait dans phytrac avec iflag_lscav
!    CALL getin('lessivage',lessivage)
    WRITE(lunout,*) 'IN TRACSTRATAER_INIT lessivage: ',lessivage
    
  END SUBROUTINE tracstrataer_init
  
END MODULE strataer_nuc_mod
