adm_ehv2pem.inc

References to this file elsewhere.
1 subroutine adm_ehv2pem( zlsat0,polar0,pems0, ehorz0,evert0)
2 !$$$   module documentation block
3 !                .      .    .                                       .
4 ! module: adm_ehv2pem  calculate Adjoint of combining V and H.pol emissivity
5 !   prgmmr: okamoto          org: np23                date: 2004-08-06
6 !
7 ! abstract:  calculate Adjoint of combine vertical and horizontal
8 !            polarized emissivity adjoint.
9 !            effective for cross-track scan type sensor such as AMSU
10 !            In contrast, for ssm/i, pems(V)=evert0, pems(H)=ehorz0,
11 !            as they are
12 !
13 ! program history log:
14 !   2004-08-06  okamoto
15 !
16 !   input argument list:
17 !     zlsat0 - satellite look angle in radians
18 !     polar  - channel polarization (0=vertical, 1=horizontal, or
19 !                                      0 to 1=mix of V and H)
20 !     pems0  - surface emissivity adjoint at obs location
21 !
22 !   output argument list:
23 !     ehorz0 - partial derivative of combined emissivity with respect to emissivity at horizontal polarization
24 !     evert0 - partial derivative of combined emissivity with respect to emissivity at vertical polarization
25 !
26 ! attributes:
27 !   language: cft77
28 !   machine:  IBM sp
29 !
30 !$$$
31 !  use kinds, only: r_kind,i_kind
32 !  use constants, only: one,zero
33   implicit none
34 
35    real(r_kind),intent(in) :: zlsat0,polar0, pems0
36    real(r_kind),intent(out):: ehorz0,evert0
37 
38    real(r_kind):: pcl2,psl2,term1,term2
39 
40     pcl2=cos(zlsat0)**2
41     psl2=sin(zlsat0)**2
42 
43     term1 = (one-polar0)*pems0
44     term2 = polar0*pems0
45 
46     evert0 = term2*psl2 + term1*pcl2
47     ehorz0 = term2*pcl2 + term1*psl2
48 
49    return
50  end subroutine adm_ehv2pem