[2046] | 1 | SUBROUTINE 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 | |
---|
| 71 | END SUBROUTINE season_haze |
---|