source: LMDZ6/branches/contrails/libf/phylmd/lmdz_cloud_optics_prop_ini.f90 @ 5517

Last change on this file since 5517 was 5488, checked in by aborella, 3 weeks ago

Added dependance of rei to contrail fraction

File size: 4.1 KB
Line 
1MODULE lmdz_cloud_optics_prop_ini
2  IMPLICIT NONE
3
4  SAVE
5
6  INTEGER, PROTECTED :: prt_level, lunout
7  INTEGER, PROTECTED :: flag_aerosol
8  INTEGER, PROTECTED :: iflag_t_glace=0
9  INTEGER, PROTECTED :: iflag_rei
10  INTEGER, PROTECTED :: novlp, iflag_ice_thermo
11  LOGICAL, PROTECTED :: ok_cdnc
12  LOGICAL, PROTECTED :: ok_icefra_lscp, ok_new_lscp
13  LOGICAL, PROTECTED :: ok_plane_contrail
14  REAL, PROTECTED :: bl95_b0, bl95_b1 ! Parameter in B&L 95-Formula
15  REAL, ALLOCATABLE :: latitude_deg(:)
16  !$OMP THREADPRIVATE(latitude_deg)
17  REAL, PROTECTED :: cdnc_max=-1.
18  REAL, PROTECTED :: cdnc_max_m3=-1.
19  REAL, PROTECTED :: cdnc_min=-1.
20  REAL, PROTECTED :: cdnc_min_m3=-1.
21  REAL, PROTECTED :: rpi, rg, rd
22  REAL, PROTECTED :: rad_chau1, rad_chau2, rad_froid
23  REAL, PROTECTED :: rei_max, rei_min
24  REAL, PROTECTED :: zepsec
25  REAL, PROTECTED :: re_ice_crystals_contrails=7.5E-6 ! [m] effective radius of ice crystals in contrails
26  REAL, PARAMETER :: thres_tau=0.3, thres_neb=0.001
27  REAL, PARAMETER :: prmhc=440.*100. ! Pressure between medium and high level cloud in Pa
28  REAL, PARAMETER :: prlmc=680.*100. ! Pressure between low and medium level cloud in Pa
29  REAL, PARAMETER :: coef_froi=0.09, coef_chau =0.13
30  REAL, PARAMETER :: seuil_neb=0.001
31! if iflag_t_glace=0, old values are used for liquid/ice partitionning:
32  REAL, PARAMETER :: t_glace_min_old = 258.
33  REAL, PARAMETER :: t_glace_max_old = 273.13
34  REAL, PARAMETER :: k_ice0=0.005 ! units=m2/g
35  REAL, PARAMETER :: df=1.66 ! diffusivity factor
36!$OMP THREADPRIVATE(prt_level, lunout, flag_aerosol, iflag_t_glace)
37!$OMP THREADPRIVATE(iflag_rei, novlp, iflag_ice_thermo) 
38!$OMP THREADPRIVATE(ok_cdnc, ok_icefra_lscp, ok_new_lscp)
39!$OMP THREADPRIVATE(bl95_b0, bl95_b1, cdnc_max, cdnc_max_m3)
40!$OMP THREADPRIVATE(cdnc_min, cdnc_min_m3, rpi, rg, rd)
41!$OMP THREADPRIVATE(rad_chau1, rad_chau2, rad_froid, rei_max, rei_min)
42!$OMP THREADPRIVATE(zepsec)
43!$OMP THREADPRIVATE(re_ice_crystals_contrails)
44
45 
46CONTAINS
47
48  SUBROUTINE cloud_optics_prop_ini(klon, prt_level_in, lunout_in, flag_aerosol_in, &
49       & ok_cdnc_in, bl95_b0_in, &
50       & bl95_b1_in, latitude_deg_in, rpi_in, rg_in, rd_in, zepsec_in, novlp_in, &
51       & iflag_ice_thermo_in, ok_new_lscp_in, &
52       & ok_plane_contrail_in)
53
54    USE ioipsl_getin_p_mod, ONLY : getin_p
55
56    IMPLICIT NONE
57    INTEGER, INTENT(IN) :: klon
58    INTEGER, INTENT(IN) :: prt_level_in, lunout_in
59    INTEGER, INTENT(IN) :: flag_aerosol_in
60    INTEGER, INTENT(IN) :: novlp_in, iflag_ice_thermo_in
61    LOGICAL, INTENT(IN) :: ok_cdnc_in, ok_new_lscp_in
62    LOGICAL, INTENT(IN) :: ok_plane_contrail_in
63    REAL, INTENT(IN) :: bl95_b0_in, bl95_b1_in
64    REAL, INTENT(IN) :: latitude_deg_in(klon)
65    REAL, INTENT(IN) :: rpi_in, rg_in, rd_in
66    REAL, INTENT(IN) :: zepsec_in
67
68    ALLOCATE(latitude_deg(klon))
69
70    prt_level = prt_level_in
71    lunout = lunout_in
72    flag_aerosol = flag_aerosol_in
73    ok_cdnc = ok_cdnc_in
74    bl95_b0 = bl95_b0_in
75    bl95_b1 = bl95_b1_in
76    latitude_deg(:) = latitude_deg_in(:)
77    rpi = rpi_in
78    rg = rg_in
79    rd = rd_in
80    zepsec = zepsec_in
81    novlp = novlp_in
82    iflag_ice_thermo = iflag_ice_thermo_in
83    ok_new_lscp = ok_new_lscp_in
84    ok_plane_contrail = ok_plane_contrail_in
85   
86    call getin_p('cdnc_min',cdnc_min)
87    cdnc_min_m3=cdnc_min*1.E6
88    IF (cdnc_min_m3<0.) cdnc_min_m3=20.E6 ! astuce pour retrocompatibilite
89    write(lunout,*)'cdnc_min=', cdnc_min_m3/1.E6
90    call getin_p('cdnc_max',cdnc_max)
91    cdnc_max_m3=cdnc_max*1.E6
92    IF (cdnc_max_m3<0.) cdnc_max_m3=1000.E6 ! astuce pour retrocompatibilite
93    write(lunout,*)'cdnc_max=', cdnc_max_m3/1.E6
94    CALL getin_p('iflag_t_glace',iflag_t_glace)     
95    write(lunout,*)'iflag_t_glace= ',iflag_t_glace
96    CALL getin_p('rad_chau1',rad_chau1)
97    CALL getin_p('rad_chau2',rad_chau2)
98    CALL getin_p('rad_froid ',rad_froid)
99    CALL getin_p('ok_icefra_lscp', ok_icefra_lscp)
100    iflag_rei = 0
101    CALL getin_p('iflag_rei',iflag_rei)
102    rei_min = 3.5
103    CALL getin_p('rei_min',rei_min)
104    rei_max = 61.29
105    CALL getin_p('rei_max',rei_max)
106    CALL getin_p('re_ice_crystals_contrails', re_ice_crystals_contrails)
107
108   
109  END SUBROUTINE cloud_optics_prop_ini
110
111END MODULE lmdz_cloud_optics_prop_ini
Note: See TracBrowser for help on using the repository browser.