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