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
6 ! subprogram: iceem_amsua noaa/nesdis SSM/I emissivity model over snow/ice
8 ! prgmmr: Banghua Yan org: nesdis date: 2004-02-12
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
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
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
44 ! 12: Cultivations (use paramater 7)
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)
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
94 ! Questions/comments: Please send to Fuzhong.Weng@noaa.gov and Banghua.Yan@noaa.gov
98 ! machine: ibm rs/6000 sp
102 ! use kinds, only: r_kind,i_kind
103 ! use constants, only: zero, half, one
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)
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
122 data ev_default/0.9_r_kind/
123 data eh_default/0.88_r_kind/
125 esh = eh_default ; esv = ev_default
126 eair = dcmplx(one, -one)
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)
137 lai = 3.0_r_kind*veg_frac + half
139 leaf_thick = 0.07_r_kind
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, &
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
163 end subroutine emiss_ssmi