Update version info for release v4.6.1 (#2122)
[WRF.git] / var / da / da_radiance / emiss_ssmi.inc
blob875418f649fc3e169482656a2de9bf5e0e6d33c0
1 subroutine emiss_ssmi(ntype_index,theta,frequency,mv,veg_frac, veg_tp, soil_tp, &
2      t_soil, t_skin, snow_depth, tbb, esh, esv)
4 !$$$  subprogram documentation block
5 !                .      .    .                                       .
6 ! subprogram: iceem_amsua  noaa/nesdis SSM/I emissivity model over snow/ice
8 !   prgmmr: Banghua Yan      org: nesdis              date: 2004-02-12
9 !           Fuzhong Weng
11 ! abstract:
12 !    Please refer to the following paper for details
13 !    Yan, B., F. Weng and K.Okamoto,2004: "A microwave snow emissivity model, submitted to TGRS
15 !   version: 4
17 ! program history log:
18 !   2004-01-01  yan,b -  implement the algorithm for snow/ice emissivity
19 !   2004-02-01  yan,b -  modify the code for SSI
20 !   2004-07-23  okamoto - modify the code for GSI
21 !   2004-09-22  todling - using general interface sqrt instead of zsqrt
23 ! input argument list:
24 !      ntype_index    -  surface type
25 !              1 : ocean
26 !              2 : sea ice
27 !              3 : snow over land
28 !              4 : non-snow land
29 !      theta       -  local zenith angle in radian
30 !      frequency   -  frequency in GHz
31 !      veg_frac    -  Vegetation fraction (0 - 1.0)   (GDAS)
32 !      veg_tp      -  Vegetation type              (GDAS, not used)
33 !                        1: Broadleave Evergreen Trees
34 !                        2: Broadleave Deciduous Trees
35 !                        3: Broad & Needle Mixed Forest
36 !                        4: Needleleave Evergreen Trees
37 !                        5: Needleleave Deciduous Trees
38 !                        6: Broadleave Tree with Groundcover (Savana)
39 !                        7: Groundcover Only (Perenial Groundcover)
40 !                        8: Broadleave Shrubs with Perenial Groundcover
41 !                        9: Broadleave Shrubs with Bare Soil
42 !                        10: Dwarf Trees & Shrubs with Bare Soil
43 !                        11: Bare Soil'
44 !                        12: Cultivations (use paramater 7)
45 !                        13: Glacial
46 !      soil_tp     -  Soil type        (GDAS, not used)
47 !                        1: Loamy Sand (coarse)
48 !                        2: Silty Clayloam (medium)
49 !                        3: Light Clay (fine)
50 !                        4: Sand Loam (coarse-medium)
51 !                        5: Sandy Clay (coarse-fine)
52 !                        6: Clay Loam (medium-fine)
53 !                        7: Sandy Clay loam (coarse-med-fine)
54 !                        8: Loam (organic)
55 !                        9: Ice (use loamy sand property)
56 !      t_soil      -  soil temperature (K)    (GDAS)
57 !      t_skin      -  scattering layer temperature (K)   (GDAS)
58 !      mv          -  volumetric moisture content in soil (0.0 - 1.0) (GDAS)
59 !      mg          -  gravimetric water content (0.0 - 1.0) (GDAS,not used)
60 !      snow_depth  -  scatter medium depth (mm?)        (GDAS)
61 !      tbb[1] ~ tbb[7]: brightness temperature at four SSM/I
62 !                 tbb[1] :  at 19.35 GHz  v-polarization
63 !                 tbb[2] :  at 19.35 GHz  h-polarization
64 !                 tbb[3] :  at 22.235 GHz v-polarization
65 !                 tbb[4] :  at 37 GHz     v-polarization
66 !                 tbb[5] :  at 37 GHz     h-polarization
67 !                 tbb[6] :  at 85 GHz     v-polarization
68 !                 tbb[7] :  at 85 GHz     h-polarization
69 !       When tbb[ ]  = -999.9, it means a missing value (no available data)
71 ! output argument list:
72 !   em_vector : esv, esh
73 !      esv    : emissivity at vertical polarization
74 !      esh    : emissivity at horizontal polarization
76 ! important internal variables:
78 !   rhob    -  bulk volume density of the soil (1.18-1.12)
79 !   rhos    -  density of the solids (2.65 g.cm^3 for solid soil material)
80 !   sand    -  sand fraction (sand + clay = 1.0)
81 !   clay    -  clay fraction
82 !   lai     -  leaf area index (eg. lai = 4.0 for corn leaves)
83 !   sigma   -  surface roughness formed between medium 1 and 2,
84 !                  expressed as he standard deviation of roughtness height (mm)
85 !   leaf_thick  -  leaf thickness (mm)
86 !   rad     -  radius of dense medium scatterers (mm)
87 !   va      -  fraction volume of dense medium scatterers(0.0-1.0)
88 !   slnt    -  salinity (per throusand)
89 !   ep      -  dielectric constant of ice or sand particles, complex value
90 !                               (e.g, 3.0+i0.0)
92 ! remarks:
94 !  Questions/comments: Please send to Fuzhong.Weng@noaa.gov and Banghua.Yan@noaa.gov
96 ! attributes:
97 !   language: f90
98 !   machine:  ibm rs/6000 sp
100 !$$$
102 !  use kinds, only: r_kind,i_kind
103 !  use constants, only: zero, half, one
104   implicit none
105   
106   real(r_kind):: rhob,rhos,sand,clay
107   integer(i_kind)      :: nw,nwv,nwh
108   parameter(rhob=1.18_r_kind,rhos=2.65_r_kind,sand=0.8_r_kind,clay=0.2_r_kind)
109   parameter(nw=7,nwv=4,nwh=3)
110   
111   real(r_kind) theta,frequency,mv, mg, mge, veg_frac, veg_tp, soil_tp, &
112        t_soil, t_skin, snow_depth, em_vector(2)
113   real(r_kind) tbb(nw),tv(nwv),th(nwh)
114   real(r_kind) t_scat, b, theta_i,theta_t, mu,  &
115        r12_h, r12_v, r21_h, r21_v, r23_h, r23_v,t21_v, t21_h, t12_v, t12_h, &
116        gv, gh, ssalb_h,ssalb_v,tau_h,tau_v, esh, esv,      &
117        lai, leaf_thick, slnty, rad, sigma, va
118   real(r_kind) ev_default,eh_default
119   complex(r_kind) ep, esoil, eveg, eair, esand
120   integer(i_kind) ntype_index
121   
122   data ev_default/0.9_r_kind/
123   data eh_default/0.88_r_kind/
124   
125   esh  =  eh_default  ;  esv  =  ev_default
126   eair = dcmplx(one, -one)
127   t_scat = t_skin
128   b = t_scat
129 !        write(UNIT=stdout,FMT='(a,i3,a,7f8.2)') 'emiss_ssmi: type=',ntype_index,' tbb=',tbb
130   if (ntype_index .ne. 4) then
131      tv(1) = tbb(1);  tv(2) = tbb(3);  tv(3) = tbb(4);  tv(4) = tbb(6)
132      th(1) = tbb(2); th(2) = tbb(5);  th(3) = tbb(7)
133      call ossmem(ntype_index, theta,frequency,t_skin,tv,th,em_vector)
134      esh = em_vector(1) ;  esv = em_vector(2)
135   else
136      sigma = half
137      lai = 3.0_r_kind*veg_frac + half
138      mge = half*veg_frac
139      leaf_thick = 0.07_r_kind
140      slnty = 3.0_r_kind
141      mu  = cos(theta)
142      r12_h = zero;  r12_v = zero;  r21_h = zero; r21_v = zero
143      t21_h = one; t21_v = one; t12_v = one; t12_h = one
144      theta_i  = theta    ! in radian
145      call soil_diel(frequency, t_soil, mv, rhob, rhos, sand, clay, esoil)
146      theta_t = asin(real(sin(theta_i)*sqrt(eair)/sqrt(esoil)))
147      call reflectance(eair, esoil, theta_i, theta_t, r23_v, r23_h)
148      call rough_reflectance(frequency, theta_i, sigma, r23_v, r23_h)
149      call canopy_diel(frequency,mge, eveg)
150      call canopy_optic(lai, frequency, theta_i, eveg, leaf_thick, &
151           gv, gh, ssalb_v, ssalb_h, tau_v, tau_h)
152      call two_stream_solution( b, mu, gv, gh, ssalb_h,  ssalb_v,tau_h, tau_v, &
153           r12_h, r12_v, r21_h, r21_v, r23_h, r23_v, t21_v, t21_h, t12_v, t12_h,  &
154           esv, esh)
155   end if
156   
157   if(esh.gt.one) esh = one
158   if(esh.lt.0.35_r_kind) esh = 0.35_r_kind
159   if(esv.gt.one) esv = one
160   if(esv.lt.0.35_r_kind) esv = 0.35_r_kind
161   
162   return
163 end subroutine emiss_ssmi