11 use missing_values_mod
24 character(len=max_string) :: forward_mod_name
26 integer :: surface_type
28 integer,
allocatable :: channels_used(:)
29 integer,
allocatable :: channels_all(:)
30 real(kind_real) :: latitude
31 real(kind_real) :: longitude
32 real(kind_real) :: elevation
33 real(kind_real) :: sensor_zenith_angle
34 real(kind_real) :: sensor_azimuth_angle
35 real(kind_real) :: solar_zenith_angle
36 real(kind_real) :: solar_azimuth_angle
37 real(kind_real) :: cloudtopp
38 real(kind_real) :: cloudfrac
39 real(kind_real) :: final_cost
40 real(kind_real) :: lwp
41 real(kind_real),
allocatable :: yobs(:)
42 real(kind_real),
allocatable :: final_bt_diff(:)
43 real(kind_real),
allocatable :: emiss(:)
44 real(kind_real),
allocatable :: background_t(:)
45 real(kind_real),
allocatable :: output_profile(:)
46 real(kind_real),
allocatable :: output_bt(:)
47 real(kind_real),
allocatable :: background_bt(:)
48 logical :: retrievecloud
50 logical :: mwscatt_totalice
51 logical,
allocatable :: calc_emiss(:)
80 integer,
intent(in) :: nchans
81 integer,
intent(in) :: nlevels
82 integer,
intent(in) :: nprofelements
85 character(len=*),
parameter :: routinename =
"ufo_rttovonedvarcheck_InitOb"
86 real(kind_real) :: missing
88 missing = missing_value(missing)
92 allocate(self % yobs(nchans))
93 allocate(self % final_bt_diff(nchans))
94 allocate(self % channels_used(nchans))
95 allocate(self % channels_all(nchans_all))
96 allocate(self % emiss(nchans_all))
97 allocate(self % background_T(nlevels))
98 allocate(self % output_profile(nprofelements))
99 allocate(self % output_BT(nchans_all))
100 allocate(self % background_BT(nchans_all))
101 allocate(self % calc_emiss(nchans_all))
103 self % yobs(:) = missing
104 self % final_bt_diff(:) = missing
105 self % emiss(:) =
zero
106 self % background_T(:) = missing
107 self % output_profile(:) = missing
108 self % output_BT(:) = missing
109 self % background_BT(:) = missing
110 self % calc_emiss(:) = .true.
128 character(len=*),
parameter :: routinename =
"ufo_rttovonedvarcheck_DeleteOb"
129 real(kind_real) :: missing
131 missing = missing_value(missing)
134 self % latitude = missing
135 self % longitude = missing
136 self % elevation = missing
137 self % surface_type = 0
139 self % sensor_zenith_angle = missing
140 self % sensor_azimuth_angle = missing
141 self % solar_zenith_angle = missing
142 self % solar_azimuth_angle = missing
143 self % cloudtopp = 500.0_kind_real
144 self % cloudfrac =
zero
145 self % final_cost = missing
147 self % retrievecloud = .false.
148 self % mwscatt = .false.
149 self % mwscatt_totalice = .false.
151 if (
allocated(self % yobs))
deallocate(self % yobs)
152 if (
allocated(self % final_bt_diff))
deallocate(self % final_bt_diff)
153 if (
allocated(self % channels_used))
deallocate(self % channels_used)
154 if (
allocated(self % channels_all))
deallocate(self % channels_all)
155 if (
allocated(self % emiss))
deallocate(self % emiss)
156 if (
allocated(self % background_T))
deallocate(self % background_T)
157 if (
allocated(self % output_profile))
deallocate(self % output_profile)
158 if (
allocated(self % output_BT))
deallocate(self % output_BT)
159 if (
allocated(self % background_BT))
deallocate(self % background_BT)
160 if (
allocated(self % calc_emiss))
deallocate(self % calc_emiss)
162 self % pcemis => null()
180 character(len=20) :: surface_type
182 if (self % surface_type ==
rtland)
then
183 surface_type =
"land"
184 else if (self % surface_type ==
rtsea)
then
186 else if (self % surface_type ==
rtice)
then
189 surface_type =
"unknown"
192 write(*,
"(A,2F8.2)")
"Lat,Long:",self % latitude, self % longitude
193 write(*,*)
"Surface type for RTTOV: ",surface_type
194 write(*,
"(A,F8.2)")
"Surface height:",self % elevation
195 write(*,
"(A,F8.2)")
"Satellite zenith angle: ",self % sensor_zenith_angle
196 write(*,
"(A,F8.2)")
"Solar zenith angle: ",self % solar_zenith_angle
197 write(*,
"(A)")
"Background T profile: "
198 write(*,
"(10F8.2)") self % background_T
real(kind_real), parameter, public zero
Fortran module constants used throughout the rttovonedvarcheck filter.
integer, parameter, public rtsea
integer for sea surface type
integer, parameter, public rtland
integer for land surface type
integer, parameter, public rtice
integer for seaice surface type
Fortran module which contains the observation metadata for a single observation.
subroutine ufo_rttovonedvarcheck_deleteob(self)
Delete the single observation object.
subroutine ufo_rttovonedvarcheck_initob(self, nchans, nlevels, nprofelements, nchans_all)
Initialize observation object.
subroutine ufo_rttovonedvarcheck_printob(self)
Print information about the single observation object.
Fortran module which contains the methods for Infrared Principal Component Emissivity The science can...
Fortran module containing main type, setup and utilities for the main rttovonedvarcheck object.