8 #ifndef TEST_BASE_DEPARTURESENSEMBLE_H_
9 #define TEST_BASE_DEPARTURESENSEMBLE_H_
11 #include <Eigen/Dense>
15 #define ECKIT_TESTING_SELF_REGISTER_CASES 0
17 #include "eckit/config/LocalConfiguration.h"
18 #include "eckit/testing/Test.h"
24 #include "oops/util/Logger.h"
40 DeparturesEnsemble_ yens(Test_::obspace(), myNens);
41 size_t myNobs = yens[0].nobs();
43 std::vector<double> rms1(myNens);
44 for (
size_t ii=0; ii < myNens; ++ii) {
46 rms1[ii] = yens[ii].rms();
49 Eigen::MatrixXd yEnsPack = yens.packEigen();
50 Eigen::VectorXd rms2 = yEnsPack.rowwise().norm() / sqrt(myNobs);
51 oops::Log::info() <<
"norm of eigen stuff: " << rms2 << std::endl;
52 for (
size_t iens = 0; iens < myNens; ++iens) {
53 oops::Log::test() <<
"ii=" << iens <<
" yens[ii].rms=" << rms1[iens]
54 <<
" rms(ypack[ii,:])=" << rms2[iens] << std::endl;
55 EXPECT(oops::is_close(rms2[iens], rms1[iens], 1.e-14));
65 std::string
testid()
const override {
return "test::DeparturesEnsemble<" + OBS::name() +
">";}
68 std::vector<eckit::testing::Test>& ts = eckit::testing::specification();
69 ts.emplace_back(
CASE(
"base/DeparturesEnsemble/testDeparturesEnsemble")
70 { testDeparturesEnsemble<OBS>(); });
82 #endif // TEST_BASE_DEPARTURESENSEMBLE_H_