8 #ifndef TEST_INTERFACE_LOCALOBSSPACE_H_
9 #define TEST_INTERFACE_LOCALOBSSPACE_H_
14 #define ECKIT_TESTING_SELF_REGISTER_CASES 0
16 #include "eckit/config/LocalConfiguration.h"
17 #include "eckit/geometry/Point2.h"
18 #include "eckit/testing/Test.h"
22 #include "oops/util/dot_product.h"
38 eckit::LocalConfiguration geolocconf(localconf,
"location");
39 double lon = geolocconf.getDouble(
"lon");
40 double lat = geolocconf.getDouble(
"lat");
41 const eckit::geometry::Point2 center(lon, lat);
44 eckit::LocalConfiguration locconf(localconf,
"localization");
48 for (
size_t jj = 0; jj < Test_::obspace().size(); ++jj) {
50 LocalObsSpace_ localobs(Test_::obspace()[jj], center, locconf);
51 oops::Log::test() <<
"Local obs within " << locconf <<
" from " << center <<
52 ": " << localobs << std::endl;
55 ObsVector_ localvec(localobs);
56 totalNobs += localvec.nobs();
60 const int ref_nobs = localconf.getInt(
"reference nobs");
61 EXPECT(totalNobs == ref_nobs);
76 eckit::LocalConfiguration geolocconf(localconf,
"location");
77 double lon = geolocconf.getDouble(
"lon");
78 double lat = geolocconf.getDouble(
"lat");
79 const eckit::geometry::Point2 center(lon, lat);
82 eckit::LocalConfiguration locconf(localconf,
"localization");
83 const std::string varname = localconf.getString(
"variable name");
85 for (
size_t jj = 0; jj < Test_::obspace().size(); ++jj) {
87 ObsVector_ fullvec(Test_::obspace()[jj], varname);
88 oops::Log::test() <<
"Full Obsvector: " << fullvec << std::endl;
91 LocalObsSpace_ localobs(Test_::obspace()[jj], center, locconf);
92 oops::Log::test() <<
"Local obs within " << locconf <<
" from " << center <<
93 ": " << localobs << std::endl;
96 ObsVector_ localvec1(localobs, varname);
97 oops::Log::test() <<
"Local Obsvector from Local Obsspace: " << localvec1 << std::endl;
100 ObsVector_ localvec2(localobs, fullvec);
101 oops::Log::test() <<
"Local ObsVector from full ObsVector: " << localvec2 << std::endl;
103 EXPECT(localvec1.nobs() == localvec2.nobs());
104 localvec2 -= localvec1;
105 const double rms = dot_product(localvec2, localvec2);
118 std::string
testid()
const override {
return "test::LocalObsSpace<" + OBS::name() +
">";}
121 std::vector<eckit::testing::Test>& ts = eckit::testing::specification();
122 ts.emplace_back(
CASE(
"interface/LocalObsSpace/testLocalObsSpace")
123 { testLocalObsSpace<OBS>(); });
124 ts.emplace_back(
CASE(
"interface/LocalObsSpace/testLocalObsVector")
125 { testLocalObsVector<OBS>(); });
137 #endif // TEST_INTERFACE_LOCALOBSSPACE_H_