130 REAL( fp ),
PARAMETER ::
emc(59) = reshape( &
131 & (/0.175350e+02_fp, -.617670e+00_fp, .894800e-02_fp, .318420e+01_fp,&
132 0.191890e-01_fp, -.108730e-01_fp, .258180e-03_fp, .683960e+02_fp,&
133 -.406430e+00_fp, .228320e-01_fp, -.530610e-03_fp, .476290e+01_fp,&
134 0.154100e+00_fp, -.337170e-01_fp, .844280e-03_fp, .782870e+02_fp,&
135 -.434630e-02_fp, .531250e+01_fp, -.114770e-01_fp, .314159e+01_fp,&
136 -.100000e+01_fp, .195000e-04_fp, .255000e+01_fp, -.637182e+01_fp,&
137 0.253918e-01_fp, .357569e-04_fp, .942928e+01_fp, -.332839e-01_fp,&
138 -.647724e-04_fp, -.329282e+01_fp, .965450e-02_fp, .281588e-04_fp,&
139 0.252676e+00_fp, .343867e-02_fp, -.156362e-04_fp, -.156669e-03_fp,&
140 0.139485e-04_fp, -.407633e-07_fp, -.141316e+00_fp, -.356556e-02_fp,&
141 0.142869e-04_fp, -.240701e+01_fp, -.563888e-01_fp, .325227e-03_fp,&
142 0.296005e+01_fp, .704675e-01_fp, -.426440e-03_fp, -.751252e+00_fp,&
143 -.191934e-01_fp, .125937e-03_fp, -.288253e+00_fp, -.102655e-02_fp,&
144 0.226701e-05_fp, -.119072e-02_fp, -.263165e-04_fp, .114597e-06_fp,&
145 0.406300e+00_fp, .200031e-02_fp, -.781635e-05_fp/), (/59/) )
232 SUBROUTINE fastem1(Frequency, & ! INPUT
233 Sat_Zenith_Angle, & ! INPUT
235 Wind_Speed, & ! INPUT
236 Emissivity, & ! OUTPUT
237 dEH_dWindSpeed, & ! OUTPUT)
241 REAL( fp ),
INTENT( IN ) :: frequency, sat_zenith_angle
242 REAL( fp ),
INTENT( IN ) :: sst, wind_speed
243 REAL( fp ),
INTENT( IN OUT ) :: emissivity(:), deh_dwindspeed, dev_dwindspeed
250 real(fp) zch4,xcorr2v,evertr,ehorzr,xcorr2h,ffoam,zcv2,zcv3
251 real(fp) xcorr1,zcv1,zcv4,zch1,zch2,zcv5,zcv6,tau2
252 real(fp) wind,ehorz,evert,sec,sec2,freqghz2
253 real(fp) u10mps2,usec,tccub,tau1,tc,tcsq,freqghz
254 real(fp) u10mps,ps2,pc2,pcc,pss,rvertsi,rverts,rvertsr
255 real(fp) rverts5,rhorzs5,xcorr15,ffoam5,evertr5,ehorzr5
256 real(fp) perm_real,perm_imag,rhorzsr,zch5,zch6,zch3,rhorzsi
257 real(fp) rhorzs,perm_imag2,einf,fen,del2,del1,fen2,perm_real2
258 real(fp) perm_imag1,perm_real1,den1,den2
259 real(fp) ffoamv,ffoamh,xcorr1h,xcorr1v
260 complex(fp) perm1,perm2,rvth,rhth,xperm
271 freqghz2=freqghz*freqghz
272 u10mps2=u10mps*u10mps
295 fen=
two*
pi*freqghz*0.001_fp
297 den1=
one+fen2*tau1*tau1
298 den2=
one+fen2*tau2*tau2
301 perm_imag1=del1*fen*tau1/den1
302 perm_imag2=del2*fen*tau2/den2
303 perm_real=perm_real1+perm_real2+einf
304 perm_imag=perm_imag1+perm_imag2
305 xperm=cmplx(perm_real,perm_imag,
fp)
311 perm1 = sqrt(xperm - cmplx(ps2,
zero,
fp))
313 rhth = (pcc - perm1)/(pcc + perm1)
314 rvth = (perm2 - perm1)/(perm2 + perm1)
315 rvertsr=
real(rvth,
fp)
318 rverts=rvertsr*rvertsr+rvertsi*rvertsi
319 rhorzsr=
real(rhth,
fp)
322 rhorzs=rhorzsr*rhorzsr+rhorzsi*rhorzsi
325 xcorr1=exp(
emc(21)*u10mps*pc2/freqghz2)
332 zcv1=
emc(24)+
emc(25)*freqghz+
emc(26)*freqghz2
333 zcv2=(
emc(27)+
emc(28)*freqghz+
emc(29)*freqghz2)*sec
334 zcv3=(
emc(30)+
emc(31)*freqghz+
emc(32)*freqghz2)*sec2
335 zcv4=(
emc(33)+
emc(34)*freqghz+
emc(35)*freqghz2)*u10mps
336 zcv5=(
emc(36)+
emc(37)*freqghz+
emc(38)*freqghz2)*u10mps2
337 zcv6=(
emc(39)+
emc(40)*freqghz+
emc(41)*freqghz2)*usec
338 zch1=
emc(42)+
emc(43)*freqghz+
emc(44)*freqghz2
339 zch2=(
emc(45)+
emc(46)*freqghz+
emc(47)*freqghz2)*sec
340 zch3=(
emc(48)+
emc(49)*freqghz+
emc(50)*freqghz2)*sec2
341 zch4=(
emc(51)+
emc(52)*freqghz+
emc(53)*freqghz2)*u10mps
342 zch5=(
emc(54)+
emc(55)*freqghz+
emc(56)*freqghz2)*u10mps2
343 zch6=(
emc(57)+
emc(58)*freqghz+
emc(59)*freqghz2)*usec
346 xcorr2v=.01_fp*(zcv1+zcv2+zcv3+zcv4+zcv5+zcv6)
347 xcorr2h=.01_fp*(zch1+zch2+zch3+zch4+zch5+zch6)
349 evertr=
one-rverts*xcorr1+xcorr2v
350 ehorzr=
one-rhorzs*xcorr1+xcorr2h
354 ffoam=
emc(22)*(u10mps**
emc(23))
355 evert=evertr - ffoam*evertr+ ffoam
356 ehorz=ehorzr - ffoam*ehorzr + ffoam
365 emissivity(1) = evertr5
366 emissivity(2) = ehorzr5
376 ehorzr=ehorz - ffoam5*ehorz
377 ffoamh =-ehorz*ehorzr5 + ehorz
378 evertr=evert - ffoam5*evert
379 ffoamv =-evert*evertr5 + evert
382 rhorzs = -ehorzr*xcorr15
383 xcorr1h = -rhorzs5*ehorzr
385 rverts = -evertr*xcorr15
386 xcorr1v = -rverts5*evertr
402 deh_dwindspeed =
emc(23)*ffoam5/wind*ffoamh + &
403 zch4*(
emc(51)+
emc(52)*freqghz+
emc(53)*freqghz2) + &
404 xcorr1h*
emc(21)*pc2/freqghz2*xcorr15 + &
405 zch6*(
emc(57)+
emc(58)*freqghz+
emc(59)*freqghz2)*sec + &
406 zch5*(
emc(54)+
emc(55)*freqghz+
emc(56)*freqghz2)*
two*wind
409 dev_dwindspeed =
emc(23)*ffoam5/wind*ffoamv + &
410 zcv4*(
emc(33)+
emc(34)*freqghz+
emc(35)*freqghz2) + &
411 xcorr1v*
emc(21)*pc2/freqghz2*xcorr15 + &
412 zcv6*(
emc(39)+
emc(40)*freqghz+
emc(41)*freqghz2)*sec + &
413 zcv5*(
emc(36)+
emc(37)*freqghz+
emc(38)*freqghz2)*
two*wind
real(fp), dimension(59), parameter emc
real(fp), parameter, public zero
integer, parameter, public fp
subroutine, public fastem1(Frequency, Sat_Zenith_Angle, SST, Wind_Speed, Emissivity, dEH_dWindSpeed, dEV_dWindSpeed)
real(fp), parameter, public one
real(fp), parameter, public two
real(fp), parameter, public degrees_to_radians
real(fp), parameter, public pi