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