41 '$Id: CRTM_MoleculeScatter.f90 60152 2015-08-13 19:19:13Z paul.vandelst@noaa.gov $' 43 REAL(fp),
PARAMETER ::
rfactor = 27.0363_fp
117 Atmosphere, & ! Input
118 AtmOptics, & ! In/Output
120 result( error_status )
122 REAL(fp),
INTENT(IN) :: wavenumber
125 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: message_log
127 INTEGER :: error_status
129 CHARACTER(*),
PARAMETER :: routine_name =
'CRTM_Compute_MoleculeScatter' 133 REAL(fp) :: wavelength , opt_unit, optical_depth
140 IF( wavenumber >
zero )
THEN 144 CALL display_message(routine_name,
'Invalid wavenumber',error_status,message_log=message_log)
152 CALL raylo(wavelength, opt_unit)
155 DO k = 1, atmosphere%n_Layers
156 optical_depth =
rfactor*opt_unit*(atmosphere%Level_Pressure(k)-atmosphere%Level_Pressure(k-1))
157 atmoptics%Optical_Depth(k) = atmoptics%Optical_Depth(k) + optical_depth
158 atmoptics%Single_Scatter_Albedo(k) = atmoptics%Single_Scatter_Albedo(k) + optical_depth
161 atmoptics%Phase_Coefficient(2,1,k) = atmoptics%Phase_Coefficient(2,1,k) + &
162 0.25_fp * optical_depth
237 Atmosphere_TL, & ! TL Input
238 AtmOptics_TL, & ! TL Output
240 result( error_status )
242 REAL(fp),
INTENT(IN) :: wavenumber
245 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: message_log
247 INTEGER :: error_status
249 CHARACTER(*),
PARAMETER :: routine_name =
'CRTM_Compute_MoleculeScatter_TL' 252 REAL(fp) :: wavelength , opt_unit, optical_depth_tl
259 IF( wavenumber >
zero )
THEN 263 CALL display_message(routine_name,
'Invalid wavenumber',error_status,message_log=message_log)
269 CALL raylo(wavelength, opt_unit)
270 DO k = 1, atmosphere_tl%n_Layers
271 optical_depth_tl =
rfactor*opt_unit*(atmosphere_tl%Level_Pressure(k)-atmosphere_tl%Level_Pressure(k-1))
272 atmoptics_tl%Optical_Depth(k) = atmoptics_tl%Optical_Depth(k) + optical_depth_tl
273 atmoptics_tl%Single_Scatter_Albedo(k) = atmoptics_tl%Single_Scatter_Albedo(k) + optical_depth_tl
275 atmoptics_tl%Phase_Coefficient(2,1,k) = atmoptics_tl%Phase_Coefficient(2,1,k) + &
276 0.25_fp * optical_depth_tl
342 AtmOptics_AD, & ! AD Input
343 Atmosphere_AD, & ! AD Output
345 result( error_status )
347 REAL(fp),
INTENT(IN) :: wavenumber
350 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: message_log
352 INTEGER :: error_status
354 CHARACTER(*),
PARAMETER :: routine_name =
'CRTM_Compute_MoleculeScatter_AD' 356 REAL(fp) :: wavelength , opt_unit, optical_depth_ad
363 IF( wavenumber >
zero )
THEN 367 CALL display_message(routine_name,
'Invalid wavenumber',error_status,message_log=message_log)
373 CALL raylo(wavelength, opt_unit)
374 DO k = 1, atmosphere_ad%n_Layers
375 optical_depth_ad = atmoptics_ad%Single_Scatter_Albedo(k)
376 optical_depth_ad = optical_depth_ad + 0.25_fp * atmoptics_ad%Phase_Coefficient(2,1,k)
377 atmosphere_ad%Level_Pressure(k) = atmosphere_ad%Level_Pressure(k) + &
378 rfactor*opt_unit*optical_depth_ad
379 atmosphere_ad%Level_Pressure(k-1) = atmosphere_ad%Level_Pressure(k-1) - &
380 rfactor*opt_unit*optical_depth_ad
398 REAL(fp),
INTENT(IN) :: wavenumber
399 REAL(fp) :: wavelength
400 REAL(fp),
PARAMETER :: wfactor = 10000.0_fp
401 wavelength = wfactor/wavenumber
411 SUBROUTINE raylo(WE, OPT)
412 REAL(fp),
INTENT(IN) :: WE
413 REAL(fp),
INTENT(OUT) :: OPT
414 REAL(fp),
PARAMETER :: DELT = 0.0279_fp
415 REAL(fp) :: X1, DY, X2, AS
417 as=(6432.8_fp+2949810.0_fp/(146.0_fp-x1)+25540.0_fp/(41.0_fp-x1))*1.0e-08_fp + 1.0_fp
418 x2=(as*as - 1.0_fp)**2
419 dy = (6.0_fp+3.0_fp*delt)/(6.0_fp-7.0_fp*delt)
integer, parameter, public failure
real(fp), parameter, public zero
real(fp), parameter rfactor
integer, parameter, public fp
subroutine raylo(WE, OPT)
integer function, public crtm_compute_moleculescatter_ad(Wavenumber, AtmOptics_AD, Atmosphere_AD, Message_Log)
recursive subroutine, public display_message(Routine_Name, Message, Error_State, Message_Log)
integer function, public crtm_compute_moleculescatter(Wavenumber, Atmosphere, AtmOptics, Message_Log)
character(*), parameter module_rcs_id
integer function, public crtm_compute_moleculescatter_tl(Wavenumber, Atmosphere_TL, AtmOptics_TL, Message_Log)
integer, parameter, public success
real(fp) function compute_wavelength(Wavenumber)