11 use fckit_configuration_module,
only: fckit_configuration
30 character(len=max_string) :: qcname
31 character(len=max_string) :: b_matrix_path
32 character(len=max_string) :: r_matrix_path
33 character(len=max_string) :: forward_mod_name
34 character(len=max_string),
allocatable :: retrieval_variables(:)
36 integer(c_int) :: onedvarflag
37 integer(c_int) :: passflag
41 integer(c_int),
allocatable :: channels(:)
45 logical :: useqtsplitrain
46 logical :: rttov_mwscattswitch
47 logical :: rttov_usetotalice
48 logical :: usemlminimization
49 logical :: usejforconvergence
50 logical :: userhwaterforqc
51 logical :: store1dvarlwp
52 logical :: usecoldsurfacecheck
53 logical :: fulldiagnostics
55 integer :: max1dvariterations
56 integer :: jconvergenceoption
57 integer :: iternumforlwpcheck
58 integer :: maxmliterations
59 real(kind_real) :: retrievederrorfactor
60 real(kind_real) :: convergencefactor
61 real(kind_real) :: cost_convergencefactor
62 real(kind_real) :: emisslanddefault
63 real(kind_real) :: emissseaicedefault
64 character(len=max_string) :: emiseigvecpath
65 character(len=max_string) :: emisatlas
84 type(fckit_configuration),
intent(in) :: f_conf
85 integer(c_int),
intent(in) :: channels(:)
88 character(len=max_string) :: tmp
89 character(len=:),
allocatable :: str
90 character(len=:),
allocatable :: str_array(:)
93 self % qcname =
"rttovonedvarcheck"
94 call f_conf % get_or_die(
"BMatrix",str)
95 self % b_matrix_path = str
96 call f_conf % get_or_die(
"RMatrix",str)
97 self % r_matrix_path = str
98 call f_conf % get_or_die(
"ModName",str)
99 self % forward_mod_name = str
100 call f_conf % get_or_die(
"nlevels",self % nlevels)
103 self % nmvars = f_conf % get_size(
"retrieval variables")
104 allocate(self % retrieval_variables(self % nmvars))
105 call f_conf % get_or_die(
"retrieval variables", str_array)
106 self % retrieval_variables(1:self % nmvars) = str_array
109 self % nchans =
size(channels)
110 allocate(self % channels(self % nchans))
111 self % channels(:) = channels(:)
114 call f_conf % get_or_die(
"qtotal", self % qtotal)
117 call f_conf % get_or_die(
"UseQtSplitRain", self % UseQtsplitRain)
120 call f_conf % get_or_die(
"RTTOVMWScattSwitch", self % RTTOV_mwscattSwitch)
123 call f_conf % get_or_die(
"RTTOVUseTotalIce", self % RTTOV_usetotalice)
126 call f_conf % get_or_die(
"UseMLMinimization", self % UseMLMinimization)
129 call f_conf % get_or_die(
"UseJforConvergence", self % UseJforConvergence)
132 call f_conf % get_or_die(
"UseRHwaterForQC", self % UseRHwaterForQC)
135 call f_conf % get_or_die(
"UseColdSurfaceCheck", self % UseColdSurfaceCheck)
138 call f_conf % get_or_die(
"Store1DVarLWP", self % Store1DVarLWP)
141 call f_conf % get_or_die(
"FullDiagnostics", self % FullDiagnostics)
144 call f_conf % get_or_die(
"Max1DVarIterations", self % Max1DVarIterations)
149 call f_conf % get_or_die(
"JConvergenceOption", self % JConvergenceOption)
152 call f_conf % get_or_die(
"IterNumForLWPCheck", self % IterNumForLWPCheck)
157 call f_conf % get_or_die(
"RetrievedErrorFactor", self % RetrievedErrorFactor)
161 call f_conf % get_or_die(
"ConvergenceFactor", self % ConvergenceFactor)
164 call f_conf % get_or_die(
"CostConvergenceFactor", self % Cost_ConvergenceFactor)
167 call f_conf % get_or_die(
"MaxMLIterations", self % MaxMLIterations)
170 call f_conf % get_or_die(
"StartOb", self % StartOb)
173 call f_conf % get_or_die(
"FinishOb", self % FinishOb)
176 call f_conf % get_or_die(
"EmissLandDefault", self % EmissLandDefault)
179 call f_conf % get_or_die(
"EmissSeaIceDefault", self % EmissSeaIceDefault)
182 call f_conf % get_or_die(
"EmisEigVecPath",str)
183 self % EmisEigVecPath = str
184 self % pcemiss = .false.
185 if (len(trim(self % EmisEigVecPath)) > 4)
then
186 self % pcemiss = .true.
190 call f_conf % get_or_die(
"EmisAtlas",str)
191 self % EmisAtlas = str
194 if (self % FullDiagnostics)
then
215 write(*,*)
"qcname = ", trim(self % qcname)
216 write(*,*)
"b_matrix_path = ", trim(self % b_matrix_path)
217 write(*,*)
"r_matrix_path = ", trim(self % r_matrix_path)
218 write(*,*)
"forward_mod_name = ", trim(self % forward_mod_name)
219 write(*,*)
"retrieval_variables = "
220 do ii = 1, self % nmvars
221 write(*,*) trim(self % retrieval_variables(ii)),
" "
223 write(*,*)
"nlevels = ",self % nlevels
224 write(*,*)
"nmvars = ",self % nmvars
225 write(*,*)
"nchans = ",self % nchans
226 write(*,*)
"channels(:) = ",self % channels(:)
227 write(*,*)
"qtotal = ",self % qtotal
228 write(*,*)
"RTTOV_mwscattSwitch = ",self % RTTOV_mwscattSwitch
229 write(*,*)
"RTTOV_usetotalice = ",self % RTTOV_usetotalice
230 write(*,*)
"UseMLMinimization = ",self % UseMLMinimization
231 write(*,*)
"UseJforConvergence = ",self % UseJforConvergence
232 write(*,*)
"UseRHwaterForQC = ", self % UseRHwaterForQC
233 write(*,*)
"UseColdSurfaceCheck = ", self % UseColdSurfaceCheck
234 write(*,*)
"UseQtsplitRain = ",self % UseQtsplitRain
235 write(*,*)
"FullDiagnostics = ",self % FullDiagnostics
236 write(*,*)
"Max1DVarIterations = ",self % Max1DVarIterations
237 write(*,*)
"JConvergenceOption = ",self % JConvergenceOption
238 write(*,*)
"IterNumForLWPCheck = ",self % IterNumForLWPCheck
239 write(*,*)
"ConvergenceFactor = ",self % ConvergenceFactor
240 write(*,*)
"CostConvergenceFactor = ",self % Cost_ConvergenceFactor
241 write(*,*)
"MaxMLIterations = ",self % MaxMLIterations
242 write(*,*)
"EmissLandDefault = ",self % EmissLandDefault
243 write(*,*)
"EmissSeaIceDefault = ",self % EmissSeaIceDefault
244 write(*,*)
"Use PC for Emissivity = ", self % pcemiss
245 write(*,*)
"EmisEigVecPath = ",self % EmisEigVecPath
246 write(*,*)
"EmisAtlas = ",self % EmisAtlas
Fortran module constants used throughout the rttovonedvarcheck filter.
Fortran module containing main type, setup and utilities for the main rttovonedvarcheck object.
subroutine ufo_rttovonedvarcheck_print(self)
Print contents of rttovonedvarcheck object.
subroutine, public ufo_rttovonedvarcheck_setup(self, f_conf, channels)
Setup the defaults for the main rttovonedvarcheck object and read in the contents of the yaml file.