8 #ifndef TEST_UFO_OBSBIASCOVARIANCEDETAILS_H_
9 #define TEST_UFO_OBSBIASCOVARIANCEDETAILS_H_
14 #define ECKIT_TESTING_SELF_REGISTER_CASES 0
16 #include "eckit/config/LocalConfiguration.h"
17 #include "eckit/testing/Test.h"
18 #include "ioda/ObsSpace.h"
19 #include "oops/mpi/mpi.h"
20 #include "oops/runs/Test.h"
21 #include "oops/util/DateTime.h"
22 #include "oops/util/Duration.h"
23 #include "oops/util/Logger.h"
24 #include "test/TestEnvironment.h"
34 eckit::LocalConfiguration
conf(::test::TestEnvironment::config());
37 util::DateTime bgn(
conf.getString(
"window begin"));
38 util::DateTime end(
conf.getString(
"window end"));
39 std::vector<eckit::LocalConfiguration> obsconfs
40 =
conf.getSubConfigurations(
"observations");
42 for (
auto & oconf : obsconfs) {
43 ioda::ObsSpace odb(oconf.getSubConfiguration(
"obs space"), oops::mpi::world(),
44 bgn, end, oops::mpi::myself());
63 oconf.set(
"iteration", 0);
67 oconf.set(
"iteration", 1);
68 EXPECT_THROWS(ybias_cov.
linearize(ybias, oconf));
71 const std::vector<int> qc_flags(odb.nlocs(), 50);
72 const std::vector<std::string> vars = odb.obsvariables().variables();
73 for (
const auto & var : vars)
74 odb.put_db(
"EffectiveQC0", var , qc_flags);
77 const std::vector<float> errs(odb.nlocs(), 1.0);
78 for (
const auto & var : vars)
79 odb.put_db(
"EffectiveError", var , errs);
82 ioda::ObsVector predx(odb);
83 for (std::size_t jj = 0; jj < predx.size(); ++jj)
86 predx.save(pred +
"Predictor");
96 ybias_cov.
multiply(ybias_inc, ybias_inc_2);
98 EXPECT(ybias_inc.
norm() != ybias_inc_2.
norm());
99 oops::Log::test() <<
"ufo::testObsBiasCovarianceDetails multiply is verified" << std::endl;
105 const double tolerance = oconf.getDouble(
"tolerance");
106 EXPECT(ybias_inc.
norm() - ybias_inc_3.
norm() < tolerance);
107 oops::Log::test() <<
"ufo::testObsBiasCovarianceDetails inverseMultiply is verified"
119 std::string
testid()
const override {
return "ufo::test::ObsBiasCovarianceDetails";}
122 std::vector<eckit::testing::Test>& ts = eckit::testing::specification();
124 ts.emplace_back(
CASE(
"ufo/ObsBias/testObsBiasCovarianceDetails")
136 #endif // TEST_UFO_OBSBIASCOVARIANCEDETAILS_H_