source: LMDZ6/trunk/libf/phylmd/ecrad/radiation/radiation_ice_optics_baran2017.F90 @ 4946

Last change on this file since 4946 was 4773, checked in by idelkadi, 7 months ago
  • Update of Ecrad in LMDZ The same organization of the Ecrad offline version is retained in order to facilitate the updating of Ecrad in LMDZ and the comparison between online and offline results. version 1.6.1 of Ecrad (https://github.com/lguez/ecrad.git)
  • Implementation of the double call of Ecrad in LMDZ


File size: 2.6 KB
Line 
1! radiation_ice_optics_baran2017.F90 - 2017 parameterization of Baran's ice optical properties
2!
3! (C) Copyright 2017- ECMWF.
4!
5! This software is licensed under the terms of the Apache Licence Version 2.0
6! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
7!
8! In applying this licence, ECMWF does not waive the privileges and immunities
9! granted to it by virtue of its status as an intergovernmental organisation
10! nor does it submit to any jurisdiction.
11!
12! Author:  Robin Hogan
13! Email:   r.j.hogan@ecmwf.int
14!
15
16module radiation_ice_optics_baran2017
17
18  implicit none
19  public
20
21  ! The number of ice coefficients depends on the parameterization
22  integer, parameter :: NIceOpticsCoeffsBaran2017 = 9
23  integer, parameter :: NIceOpticsGeneralCoeffsBaran2017 = 5
24
25contains
26
27 
28  !---------------------------------------------------------------------
29  ! Compute ice-particle scattering properties using a
30  ! parameterization as a function of ice water mixing ratio and
31  ! temperature
32  subroutine calc_ice_optics_baran2017(nb, coeff_gen, coeff, ice_wp, &
33       &  qi, temperature, od, scat_od, g)
34
35    use parkind1, only : jprb
36    !use yomhook,  only : lhook, dr_hook, jphook
37
38    ! Number of bands
39    integer, intent(in)  :: nb
40    ! General coefficients read from a data file
41    real(jprb), intent(in) :: coeff_gen(:)
42    ! Band-specific coefficients read from a data file
43    real(jprb), intent(in) :: coeff(:,:)
44    ! Ice water path (kg m-2) and mixing ratio (kg kg-1)
45    real(jprb), intent(in) :: ice_wp, qi
46    ! Temperature (K)
47    real(jprb), intent(in) :: temperature
48    ! Total optical depth, scattering optical depth and asymmetry factor
49    real(jprb), intent(out) :: od(nb), scat_od(nb), g(nb)
50   
51    ! Modified ice mixing ratio, and the same raised to an appropriate power
52    real(jprb) :: qi_mod, qi_mod_od, qi_mod_ssa, qi_mod_g
53   
54    !real(jphook) :: hook_handle
55
56    !if (lhook) call dr_hook('radiation_ice_optics:calc_ice_optics_baran2017',0,hook_handle)
57
58    qi_mod     = qi * exp(coeff_gen(1)*(temperature-coeff_gen(2)))
59    qi_mod_od  = qi_mod ** coeff_gen(3)
60    qi_mod_ssa = qi_mod ** coeff_gen(4)
61    qi_mod_g   = qi_mod ** coeff_gen(5)
62
63    od      = ice_wp * (coeff(1:nb,1) + coeff(1:nb,2)/(1.0_jprb+qi_mod_od *coeff(1:nb,3)))
64    scat_od = od     * (coeff(1:nb,4) + coeff(1:nb,5)/(1.0_jprb+qi_mod_ssa*coeff(1:nb,6)))
65    g       =           coeff(1:nb,7) + coeff(1:nb,8)/(1.0_jprb+qi_mod_g  *coeff(1:nb,9))
66
67    !if (lhook) call dr_hook('radiation_ice_optics:calc_ice_optics_baran2017',1,hook_handle)
68
69  end subroutine calc_ice_optics_baran2017
70
71end module radiation_ice_optics_baran2017
Note: See TracBrowser for help on using the repository browser.