da_thickness_tl.inc

References to this file elsewhere.
1 subroutine da_thickness_tl(pre_ma,tv_ma,ks,ke,tv1,tv2,layer1,layer2,pre1,pre2,   &
2                          TGL_pre_ma,TGL_tv_ma,TGL_tv1,TGL_tv2,TGL_thk)
3 
4    !-----------------------------------------------------------------------
5    ! Purpose: tangent-linear routine for thickness
6    !-----------------------------------------------------------------------
7 
8    implicit none
9 
10    integer, intent(in)                  :: layer1,layer2
11    integer, intent(in)                  :: ks,ke
12    real, dimension(ks-1:ke+1), intent(in) :: pre_ma,tv_ma
13    real, dimension(ks-1:ke+1), intent(in) :: TGL_pre_ma,TGL_tv_ma
14    real, intent(in)                     :: tv1,tv2
15    real, intent(in)                     :: TGL_tv1,TGL_tv2
16    real, intent(in)                     :: pre1,pre2
17    real, intent(out)                    :: TGL_thk
18 
19    integer                    :: k
20    real, dimension(ks-1:ke+1) :: p_tmp
21    real, dimension(ks-1:ke+1) :: TGL_p_tmp
22 
23    TGL_thk = TGL_tv1*log(pre_ma(layer1-1)/pre1) +          &
24              TGL_pre_ma(layer1-1)*tv1/pre_ma(layer1-1) +    &
25              TGL_tv2*log(pre2/pre_ma(layer2)) -            &
26              TGL_pre_ma(layer2)*tv2/pre_ma(layer2)
27    TGL_thk = 0.5 * gas_constant/gravity * TGL_thk
28 
29    TGL_p_tmp(layer1) = 0.
30    p_tmp(layer1) = pre1
31    TGL_p_tmp(layer2-1) = 0.
32    p_tmp(layer2-1) = pre2
33 
34    do k=layer2,layer1-1
35       TGL_p_tmp(k) = TGL_pre_ma(k)
36       p_tmp(k) = pre_ma(k)
37    end do
38 
39    ! Vertical integration of the virtual temperature
40 
41    do k=layer2,layer1-1
42       TGL_thk = TGL_thk + 0.5 * gas_constant/gravity * (   &
43                 TGL_tv_ma(k)*log(p_tmp(k-1)/p_tmp(k+1)) + &
44                 TGL_p_tmp(k-1)*tv_ma(k)/p_tmp(k-1) -       &
45                 TGL_p_tmp(k+1)*tv_ma(k)/p_tmp(k+1)     )
46    end do
47 
48 end subroutine da_thickness_tl
49 
50