From 0667c57b66ceac838f73c78ec9fde8fb168bfc22 Mon Sep 17 00:00:00 2001 From: Pedro Maciel Date: Tue, 10 Dec 2024 02:04:06 +0000 Subject: [PATCH] MIR-592 Wind vector components at the poles, fixed displacement --- src/mir/method/fe/FiniteElement.cc | 5 +++++ src/mir/method/fe/FiniteElement.h | 2 ++ src/mir/method/gridbox/GridBoxAverage.cc | 2 +- src/mir/method/gridbox/GridBoxStatistics.cc | 2 +- src/mir/method/knn/KNearestNeighbours.cc | 5 +++++ src/mir/method/knn/KNearestNeighbours.h | 1 + src/mir/method/voronoi/VoronoiMethod.cc | 5 +++++ src/mir/method/voronoi/VoronoiMethod.h | 1 + src/mir/util/Point2ToPoint3.cc | 7 ++++--- 9 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/mir/method/fe/FiniteElement.cc b/src/mir/method/fe/FiniteElement.cc index 0afcff281..72b201c68 100644 --- a/src/mir/method/fe/FiniteElement.cc +++ b/src/mir/method/fe/FiniteElement.cc @@ -246,6 +246,11 @@ void FiniteElement::print(std::ostream& out) const { } +int FiniteElement::version() const { + return 1; +} + + bool FiniteElement::sameAs(const Method& other) const { const auto* o = dynamic_cast(&other); return (o != nullptr) && meshGeneratorParams_.sameAs(o->meshGeneratorParams_) && diff --git a/src/mir/method/fe/FiniteElement.h b/src/mir/method/fe/FiniteElement.h index 3eb0da542..a1c77d79e 100644 --- a/src/mir/method/fe/FiniteElement.h +++ b/src/mir/method/fe/FiniteElement.h @@ -105,6 +105,8 @@ class FiniteElement : public MethodWeighted { void json(eckit::JSON&) const override; void print(std::ostream&) const override; + int version() const override; + // -- Overridden methods // None diff --git a/src/mir/method/gridbox/GridBoxAverage.cc b/src/mir/method/gridbox/GridBoxAverage.cc index a7d9f4554..9d698dbc6 100644 --- a/src/mir/method/gridbox/GridBoxAverage.cc +++ b/src/mir/method/gridbox/GridBoxAverage.cc @@ -186,7 +186,7 @@ const char* GridBoxAverage::name() const { int GridBoxAverage::version() const { - return 4; + return 5; } diff --git a/src/mir/method/gridbox/GridBoxStatistics.cc b/src/mir/method/gridbox/GridBoxStatistics.cc index 1f341c262..3dba3ac19 100644 --- a/src/mir/method/gridbox/GridBoxStatistics.cc +++ b/src/mir/method/gridbox/GridBoxStatistics.cc @@ -181,7 +181,7 @@ const char* GridBoxStatistics::name() const { int GridBoxStatistics::version() const { - return 4; + return 5; } diff --git a/src/mir/method/knn/KNearestNeighbours.cc b/src/mir/method/knn/KNearestNeighbours.cc index 531b48d31..ca6f82ffa 100644 --- a/src/mir/method/knn/KNearestNeighbours.cc +++ b/src/mir/method/knn/KNearestNeighbours.cc @@ -162,6 +162,11 @@ void KNearestNeighbours::print(std::ostream& out) const { } +int KNearestNeighbours::version() const { + return 1; +} + + WeightMatrix::Check KNearestNeighbours::validateMatrixWeights() const { return distanceWeighting().validateMatrixWeights(); } diff --git a/src/mir/method/knn/KNearestNeighbours.h b/src/mir/method/knn/KNearestNeighbours.h index 7da3e2e22..38447102f 100644 --- a/src/mir/method/knn/KNearestNeighbours.h +++ b/src/mir/method/knn/KNearestNeighbours.h @@ -52,6 +52,7 @@ class KNearestNeighbours : public MethodWeighted { void print(std::ostream&) const override; const char* name() const override = 0; + int version() const override; virtual const pick::Pick& pick() const = 0; virtual const distance::DistanceWeighting& distanceWeighting() const = 0; diff --git a/src/mir/method/voronoi/VoronoiMethod.cc b/src/mir/method/voronoi/VoronoiMethod.cc index 7fcdbba18..965559425 100644 --- a/src/mir/method/voronoi/VoronoiMethod.cc +++ b/src/mir/method/voronoi/VoronoiMethod.cc @@ -178,4 +178,9 @@ const char* VoronoiMethod::name() const { } +int VoronoiMethod::version() const { + return 1; +} + + } // namespace mir::method::voronoi diff --git a/src/mir/method/voronoi/VoronoiMethod.h b/src/mir/method/voronoi/VoronoiMethod.h index 0f13769dc..bfaf22cf5 100644 --- a/src/mir/method/voronoi/VoronoiMethod.h +++ b/src/mir/method/voronoi/VoronoiMethod.h @@ -32,6 +32,7 @@ class VoronoiMethod : public MethodWeighted { void print(std::ostream&) const override; WeightMatrix::Check validateMatrixWeights() const override; const char* name() const override; + int version() const override; knn::pick::NClosestOrNearest pick_; }; diff --git a/src/mir/util/Point2ToPoint3.cc b/src/mir/util/Point2ToPoint3.cc index 7659e7c7e..8e016b104 100644 --- a/src/mir/util/Point2ToPoint3.cc +++ b/src/mir/util/Point2ToPoint3.cc @@ -37,9 +37,10 @@ Point2ToPoint3::Point3Displaced::Point3Displaced(double poleDisplacement) : eps_ Point3 Point2ToPoint3::Point3Displaced::make_point3(const Point2& p2) const { - const Point2 p2d{p2[0], Latitude::NORTH_POLE == p2[1] ? p2[1] - eps_ - : Latitude::SOUTH_POLE == p2[1] ? p2[1] + eps_ - : p2[1]}; + const Point2 p2d{Latitude::NORTH_POLE <= p2[0] + eps_ ? p2[0] - eps_ + : Latitude::SOUTH_POLE >= p2[0] - eps_ ? p2[0] + eps_ + : p2[0], + p2[1]}; return repres::Iterator::point_3D(p2d); }