source: trunk/LMDZ.TITAN/libf/phytitan/season_haze.F90 @ 3567

Last change on this file since 3567 was 2046, checked in by jvatant, 6 years ago

Add a simple seasonal+latitudinal variation model (season_haze.F90) for the vertical mean profile
of haze. Based on Karkoscha,2016 . Activable through "seashaze" key (default=T).
--JVO

File size: 2.5 KB
Line 
1SUBROUTINE season_haze(zday,lat,press,fact)
2
3  !     ==============================================================================
4  !     Purpose
5  !     -------
6  !     Compute haze opacity seasonal modulation factor based on Karkoschka 2016
7  !     
8  !     Authors
9  !     -------
10  !     J. Vatant d'Ollone (2018)
11  !     ==============================================================================
12
13  USE radinc_h
14
15  !-----------------------------------------------------------------------
16  !     Declarations:
17  !     -------------
18
19  IMPLICIT NONE
20
21  !     Arguments :
22  !     -----------
23  REAL, INTENT(IN)                        :: zday  ! Time elapsed since Ls=0 (sols)
24  REAL, INTENT(IN)                        :: lat   ! latitude of grid point
25  REAL, DIMENSION(L_LEVELS), INTENT(IN)   :: press ! layers boundary pressure (mbar)
26  REAL, DIMENSION(L_LEVELS), INTENT(OUT)  :: fact  ! Haze opacity seasonal factor
27
28  !     Local variables :
29  !     -----------------
30  REAL :: M1,M2,D1,D2,E1,E2,B1,B2
31  REAL :: pi = 4.0*atan(1.0)
32  REAL :: sol2earthyr = 15.945 / 365.25
33  REAL :: equinox = 2009.611 ! 11 August 2009 Ls=0
34  INTEGER :: i
35  !     -------------------------------------------------------------------------
36
37  ! Mi, Ei and Di are fitted from Fig 14 from Karkoschka 2016
38
39  M1 = 0.20543*atan(0.142666*abs(lat)-2.83289)-0.560454
40  M2 = 1.09941*atan(-0.0584703*abs(lat)+1.30911)+0.0430241
41
42  D1 = 2.30639*( cos(-0.0311457*(abs(lat)*180.0/pi-90.0)) - cos(0.0311457*90.0) )
43  D2 = 68.3087*( cos(-0.0035113*(abs(lat)*180.0/pi-90.0)) - cos(0.0035113*90.0) )
44
45  E1 = 0.644826*atan(0.145421*abs(lat)-4.50363)+2003.35
46  E2 = 2001.93
47
48  IF (lat .GE. 0.0 ) THEN
49    B1 = M1 + D1 * sin( (equinox+zday*sol2earthyr-E1) * 2*pi / 29.4571 ) ! Eq. 3  from Karkoschka 2016
50    B2 = M2 + D2 * sin( (equinox+zday*sol2earthyr-E2) * 2*pi / 29.4571 ) !          """
51  ELSE
52    B1 = M1 - D1 * sin( (equinox+zday*sol2earthyr-E1) * 2*pi / 29.4571 )
53    B2 = M2 - D2 * sin( (equinox+zday*sol2earthyr-E2) * 2*pi / 29.4571 )
54  ENDIF
55
56  fact(:) = 1.0 ! default value -> no adjustment of reference haze profile
57
58  DO i=1,L_LEVELS
59
60  IF ( press(i).GT.20.0 ) THEN
61    fact(i) = 5.57403*exp(0.0629317*B1)-4.23873 ! Fit from table 5 of Karkoschka 2016
62  ELSE IF ( press(i).LT.2.0 ) THEN
63    fact(i) = 4.83997*exp(0.0501367*B2)-3.83877 !           """
64  ENDIF
65
66    IF ( fact(i) .LT. 1.0E-6 ) fact(i) = 1.0E-6     ! Threshold for extreme values ( fit go neg and no haze at all seems unphysical )
67
68  ENDDO
69
70
71END SUBROUTINE season_haze
Note: See TracBrowser for help on using the repository browser.