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