da_tp_to_qs_adj1.inc
References to this file elsewhere.
1 subroutine da_tp_to_qs_adj1( t, p, es, t_prime, p_prime, &
2 qs_prime_over_qs )
3
4 !---------------------------------------------------------------------------
5 ! Purpose: Adjoint of da_tp_to_qs_lin.
6 !---------------------------------------------------------------------------
7
8 implicit none
9
10 real, intent(in) :: t ! Temperature.
11 real, intent(in) :: p ! Pressure.
12 real, intent(in) :: es ! Sat. vapour pressure.
13 real, intent(inout) :: t_prime ! Temperature increment.
14 real, intent(inout) :: p_prime ! Pressure increment.
15 real, intent(in) :: qs_prime_over_qs ! qs~/qs.
16
17 real :: temp ! Temporary storage.
18 real :: es_prime_over_es ! es~/es
19
20 !---------------------------------------------------------------------------
21 ! [3.0] Calculate saturation specific humidity increment:
22 !---------------------------------------------------------------------------
23
24 temp = qs_prime_over_qs / ( p - rd_over_rv1 * es )
25
26 es_prime_over_es = temp * p
27
28 p_prime = p_prime - temp
29
30 !---------------------------------------------------------------------------
31 ! [2.0] Calculate saturation vapour pressure increment:
32 !---------------------------------------------------------------------------
33
34 temp = t + es_gammakelvin
35
36 t_prime = t_prime + es_gammabeta * es_prime_over_es / ( temp * temp )
37
38 end subroutine da_tp_to_qs_adj1
39
40