UFO
ROobserror.cc
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017-2018 UCAR
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  */
7 
9 
10 #include "eckit/config/Configuration.h"
11 
12 #include "ioda/ObsDataVector.h"
13 #include "ioda/ObsSpace.h"
14 #include "ioda/ObsVector.h"
15 #include "oops/base/ObsFilterBase.h"
16 #include "oops/interface/ObsFilter.h"
17 #include "oops/util/Logger.h"
18 #include "ufo/GeoVaLs.h"
19 
20 namespace ufo {
21 
22 // -----------------------------------------------------------------------------
23 
24 ROobserror::ROobserror(ioda::ObsSpace & obsdb,
25  const eckit::Configuration & config,
26  std::shared_ptr<ioda::ObsDataVector<int> > qc,
27  std::shared_ptr<ioda::ObsDataVector<float> > oberr)
28  : FilterBase(obsdb, config, qc, oberr)
29 {
30  oops::Log::trace() << "ROobserror contructor starting" << std::endl;
31  const oops::Variables filvar = filtervars_[0].toOopsVariables();;
32  oops::Log::trace() << "ROobserror contructor = "<< filvar << std::endl;
33  ufo_roobserror_create_f90(key_, obsdb, config, filvar);
34  oops::Log::trace() << "ROobserror contructor key = " << key_ << std::endl;
35 }
36 
37 // -----------------------------------------------------------------------------
38 
40  oops::Log::trace() << "ROobserror destructor key = " << key_ << std::endl;
42 }
43 
44 // -----------------------------------------------------------------------------
45 
46 void ROobserror::applyFilter(const std::vector<bool> & apply,
47  const Variables & filtervars,
48  std::vector<std::vector<bool>> & flagged) const {
49  oops::Log::trace() << "ROobserror using priorFilter" << std::endl;
50  flags_->save("FortranQC"); // should pass values to fortran properly
51  obserr_->save("FortranERR"); // should pass values to fortran properly
53  flags_->read("FortranQC"); // should get values from fortran properly
54  obserr_->read("FortranERR"); // should get values from fortran properly
55 }
56 
57 // -----------------------------------------------------------------------------
58 
59 void ROobserror::print(std::ostream & os) const {
60  os << "ROobserror::print not yet implemented " << key_;
61 }
62 
63 // -----------------------------------------------------------------------------
64 
65 } // namespace ufo
ufo::Variables
Definition: src/ufo/filters/Variables.h:24
ufo::ROobserror::key_
F90roerr key_
Definition: ROobserror.h:50
ufo::FilterBase
FilterBase: Base class for UFO QC filters.
Definition: FilterBase.h:42
ufo::ROobserror::ROobserror
ROobserror(ioda::ObsSpace &, const eckit::Configuration &, std::shared_ptr< ioda::ObsDataVector< int > >, std::shared_ptr< ioda::ObsDataVector< float > >)
Definition: ROobserror.cc:24
ufo
Definition: RunCRTM.h:27
ufo::FilterBase::obserr_
std::shared_ptr< ioda::ObsDataVector< float > > obserr_
Definition: FilterBase.h:62
ROobserror.h
ufo::FilterBase::flags_
std::shared_ptr< ioda::ObsDataVector< int > > flags_
Definition: FilterBase.h:61
ufo::ufo_roobserror_delete_f90
void ufo_roobserror_delete_f90(F90roerr &)
ufo::Variables::toOopsVariables
oops::Variables toOopsVariables() const
Definition: Variables.cc:144
ufo::FilterBase::filtervars_
ufo::Variables filtervars_
Definition: FilterBase.h:64
ioda::ObsDataVector< int >
ufo::ROobserror::~ROobserror
~ROobserror()
Definition: ROobserror.cc:39
ufo::ufo_roobserror_create_f90
void ufo_roobserror_create_f90(F90roerr &, const ioda::ObsSpace &, const eckit::Configuration &, const oops::Variables &)
Interface to Fortran RO observation error routines.
ufo::ROobserror::print
void print(std::ostream &) const override
Definition: ROobserror.cc:59
ufo::ufo_roobserror_prior_f90
void ufo_roobserror_prior_f90(const F90roerr &)
ufo::ROobserror::applyFilter
void applyFilter(const std::vector< bool > &, const Variables &, std::vector< std::vector< bool >> &) const override
Definition: ROobserror.cc:46