From d728bb6f2c80d722aa0ba7518a8f844d7df2d944 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Wed, 31 Jan 2024 12:33:39 +0100 Subject: [PATCH 01/33] NumM and NumN made private --- .../CurvilinearGrid/CurvilinearGrid.hpp | 13 ++++- .../src/CurvilinearGrid/CurvilinearGrid.cpp | 54 +++++++++---------- .../CurvilinearGridCurvature.cpp | 10 ++-- .../CurvilinearGridDeRefinement.cpp | 8 +-- .../CurvilinearGridDeleteExterior.cpp | 8 +-- .../CurvilinearGridLineMirror.cpp | 8 +-- .../CurvilinearGridOrthogonalization.cpp | 30 +++++------ .../CurvilinearGridRefinement.cpp | 10 ++-- .../CurvilinearGridSmoothness.cpp | 10 ++-- .../CurvilinearGridSnapping.cpp | 4 +- libs/MeshKernel/src/Splines.cpp | 8 +-- .../src/CurvilinearGridDeRefinementTests.cpp | 12 ++--- .../src/CurvilinearGridRectangularTests.cpp | 16 +++--- .../src/CurvilinearGridRefinementTests.cpp | 8 +-- libs/MeshKernelApi/src/MeshKernel.cpp | 4 +- tools/test_utils/src/MakeCurvilinearGrids.cpp | 4 +- 16 files changed, 108 insertions(+), 99 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index 513598f86..a4e8b8e7d 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -219,13 +219,19 @@ namespace meshkernel /// @brief Get the mesh bounding box. BoundingBox GetBoundingBox() const; - UInt m_numM = 0; ///< The number of m coordinates (vertical lines) - UInt m_numN = 0; ///< The number of n coordinates (horizontal lines) lin_alg::Matrix m_gridNodes; ///< Member variable storing the grid lin_alg::Matrix m_gridFacesMask; ///< The mask of the grid faces (true/false) lin_alg::Matrix m_gridNodesTypes; ///< The grid node types std::vector m_gridIndices; ///< The original mapping of the flatten nodes in the curvilinear grid + /// @brief The number of columns of nodes + /// @return A number >= 2 for a valid curvilinear grid + UInt NumM() const { return m_numM; } + + /// @brief The number of rows of nodes + /// @return A number >= 2 for a valid curvilinear grid + UInt NumN() const { return m_numN; } + private: /// @brief Remove invalid nodes. /// This function is recursive @@ -243,5 +249,8 @@ namespace meshkernel /// @param[in] secondNode The indices of the second new node in the modified grid. void AddEdge(CurvilinearGridNodeIndices const& firstNode, CurvilinearGridNodeIndices const& secondNode); + + UInt m_numM = 0; ///< The number of m coordinates (columns, or vertical lines) + UInt m_numN = 0; ///< The number of n coordinates (rows, or horizontal lines) }; } // namespace meshkernel diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp index 495dc2c49..52cabc423 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp @@ -35,12 +35,12 @@ using meshkernel::CurvilinearGrid; using meshkernel::CurvilinearGridNodeIndices; CurvilinearGrid::CurvilinearGrid(const CurvilinearGrid& grid) : Mesh(grid.m_edges, grid.m_nodes, grid.m_projection), - m_numM(grid.m_numM), - m_numN(grid.m_numN), m_gridNodes(grid.m_gridNodes), m_gridFacesMask(grid.m_gridFacesMask), m_gridNodesTypes(grid.m_gridNodesTypes), - m_gridIndices(grid.m_gridIndices) + m_gridIndices(grid.m_gridIndices), + m_numM(grid.NumM()), + m_numN(grid.NumN()) { } @@ -306,14 +306,14 @@ CurvilinearGrid::ComputeBlockFromCornerPoints(const CurvilinearGridNodeIndices& throw ConstraintError("Invalid index: first index - {{{}, {}}}, second index - {{{}, {}}}", lowerLeft.m_m, lowerLeft.m_n, upperRight.m_m, upperRight.m_n); } - if (lowerLeft.m_m >= m_numM || lowerLeft.m_n >= m_numN) + if (lowerLeft.m_m >= NumM() || lowerLeft.m_n >= NumN()) { - throw ConstraintError("Invalid index: first index {{{}, {}}} not in mesh limits {{{}, {}}}", lowerLeft.m_m, lowerLeft.m_n, m_numM, m_numN); + throw ConstraintError("Invalid index: first index {{{}, {}}} not in mesh limits {{{}, {}}}", lowerLeft.m_m, lowerLeft.m_n, NumM(), NumN()); } - if (upperRight.m_m >= m_numM || upperRight.m_n >= m_numN) + if (upperRight.m_m >= NumM() || upperRight.m_n >= NumN()) { - throw ConstraintError("Invalid index: second index {{{}, {}}} not in mesh limits {{{}, {}}}", upperRight.m_m, upperRight.m_n, m_numM, m_numN); + throw ConstraintError("Invalid index: second index {{{}, {}}} not in mesh limits {{{}, {}}}", upperRight.m_m, upperRight.m_n, NumM(), NumN()); } return {lowerLeft, upperRight}; @@ -322,10 +322,10 @@ CurvilinearGrid::ComputeBlockFromCornerPoints(const CurvilinearGridNodeIndices& void CurvilinearGrid::ComputeGridFacesMask() { // Flag valid faces - lin_alg::ResizeAndFillMatrix(m_gridFacesMask, m_numM - 1, m_numN - 1, false, false); - for (UInt m = 0; m < m_numM - 1; ++m) + lin_alg::ResizeAndFillMatrix(m_gridFacesMask, NumM() - 1, NumN() - 1, false, false); + for (UInt m = 0; m < NumM() - 1; ++m) { - for (UInt n = 0; n < m_numN - 1; ++n) + for (UInt n = 0; n < NumN() - 1; ++n) { // Only if all grid nodes of the face are valid, the face is valid if (!IsValidFace(m, n)) @@ -350,9 +350,9 @@ void CurvilinearGrid::RemoveInvalidNodes(bool invalidNodesToRemove) invalidNodesToRemove = false; // Flag nodes not connected to valid faces - for (UInt m = 1; m < m_numM - 1; ++m) + for (UInt m = 1; m < NumM() - 1; ++m) { - for (UInt n = 1; n < m_numN - 1; ++n) + for (UInt n = 1; n < NumN() - 1; ++n) { if (m_gridNodes(m, n).IsValid() && !m_gridFacesMask(m, n) && @@ -366,7 +366,7 @@ void CurvilinearGrid::RemoveInvalidNodes(bool invalidNodesToRemove) } } - for (UInt m = 1; m < m_numM - 1; ++m) + for (UInt m = 1; m < NumM() - 1; ++m) { if (m_gridNodes(m, 0).IsValid() && !m_gridFacesMask(m - 1, 0) && @@ -376,7 +376,7 @@ void CurvilinearGrid::RemoveInvalidNodes(bool invalidNodesToRemove) } } - for (UInt n = 1; n < m_numN - 1; ++n) + for (UInt n = 1; n < NumN() - 1; ++n) { if (m_gridNodes(0, n).IsValid() && !m_gridFacesMask(0, n - 1) && @@ -397,12 +397,12 @@ void CurvilinearGrid::RemoveInvalidNodes(bool invalidNodesToRemove) void CurvilinearGrid::ComputeGridNodeTypes() { RemoveInvalidNodes(true); - lin_alg::ResizeAndFillMatrix(m_gridNodesTypes, m_numM, m_numN, false, NodeType::Invalid); + lin_alg::ResizeAndFillMatrix(m_gridNodesTypes, NumM(), NumN(), false, NodeType::Invalid); // Flag faces based on boundaries - for (UInt m = 0; m < m_numM; ++m) + for (UInt m = 0; m < NumM(); ++m) { - for (UInt n = 0; n < m_numN; ++n) + for (UInt n = 0; n < NumN(); ++n) { if (!m_gridNodes(m, n).IsValid()) @@ -416,7 +416,7 @@ void CurvilinearGrid::ComputeGridNodeTypes() m_gridNodesTypes(m, n) = NodeType::BottomLeft; continue; } - if (m == 0 && n == m_numN - 1) + if (m == 0 && n == NumN() - 1) { m_gridNodesTypes(m, n) = NodeType::UpperLeft; continue; @@ -437,27 +437,27 @@ void CurvilinearGrid::ComputeGridNodeTypes() continue; } // Right side - if (m == m_numM - 1 && n == 0) + if (m == NumM() - 1 && n == 0) { m_gridNodesTypes(m, n) = NodeType::BottomRight; continue; } - if (m == m_numM - 1 && n == m_numN - 1) + if (m == NumM() - 1 && n == NumN() - 1) { m_gridNodesTypes(m, n) = NodeType::UpperRight; continue; } - if (m == m_numM - 1 && !m_gridNodes(m, n - 1).IsValid()) + if (m == NumM() - 1 && !m_gridNodes(m, n - 1).IsValid()) { m_gridNodesTypes(m, n) = NodeType::BottomRight; continue; } - if (m == m_numM - 1 && !m_gridNodes(m, n + 1).IsValid()) + if (m == NumM() - 1 && !m_gridNodes(m, n + 1).IsValid()) { m_gridNodesTypes(m, n) = NodeType::UpperRight; continue; } - if (m == m_numM - 1) + if (m == NumM() - 1) { m_gridNodesTypes(m, n) = NodeType::Right; continue; @@ -479,17 +479,17 @@ void CurvilinearGrid::ComputeGridNodeTypes() continue; } // Upper side - if (n == m_numN - 1 && !m_gridNodes(m - 1, n).IsValid()) + if (n == NumN() - 1 && !m_gridNodes(m - 1, n).IsValid()) { m_gridNodesTypes(m, n) = NodeType::UpperLeft; continue; } - if (n == m_numN - 1 && !m_gridNodes(m + 1, n).IsValid()) + if (n == NumN() - 1 && !m_gridNodes(m + 1, n).IsValid()) { m_gridNodesTypes(m, n) = NodeType::UpperRight; continue; } - if (n == m_numN - 1) + if (n == NumN() - 1) { m_gridNodesTypes(m, n) = NodeType::Up; continue; @@ -863,7 +863,7 @@ meshkernel::Point CurvilinearGrid::TransformDisplacement(Point const& displaceme { Point left = m_gridNodes(node.m_m, node.m_n); Point right = left; - if (node.m_m < m_numM - 1 && m_gridNodes(node.m_m + 1, node.m_n).IsValid()) + if (node.m_m < NumM() - 1 && m_gridNodes(node.m_m + 1, node.m_n).IsValid()) { right = m_gridNodes(node.m_m + 1, node.m_n); } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridCurvature.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridCurvature.cpp index 3afa3395f..f64e525e1 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridCurvature.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridCurvature.cpp @@ -35,13 +35,13 @@ void meshkernel::CurvilinearGridCurvature::Compute(const CurvilinearGrid& grid, const CurvilinearDirection direction, lin_alg::Matrix& curvature) { - lin_alg::ResizeAndFillMatrix(curvature, grid.m_numM, grid.m_numN, false, constants::missing::doubleValue); + lin_alg::ResizeAndFillMatrix(curvature, grid.NumM(), grid.NumN(), false, constants::missing::doubleValue); if (direction == CurvilinearDirection::M) { - for (UInt i = 1; i < grid.m_numM - 1; ++i) + for (UInt i = 1; i < grid.NumM() - 1; ++i) { - for (UInt j = 0; j < grid.m_numN; ++j) + for (UInt j = 0; j < grid.NumN(); ++j) { curvature(i, j) = ComputeNodeCurvature(grid.m_gridNodes(i - 1, j), grid.m_gridNodes(i, j), grid.m_gridNodes(i + 1, j)); } @@ -49,9 +49,9 @@ void meshkernel::CurvilinearGridCurvature::Compute(const CurvilinearGrid& grid, } else if (direction == CurvilinearDirection::N) { - for (UInt i = 0; i < grid.m_numM; ++i) + for (UInt i = 0; i < grid.NumM(); ++i) { - for (UInt j = 1; j < grid.m_numN - 1; ++j) + for (UInt j = 1; j < grid.NumN() - 1; ++j) { curvature(i, j) = ComputeNodeCurvature(grid.m_gridNodes(i, j - 1), grid.m_gridNodes(i, j), grid.m_gridNodes(i, j + 1)); } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeRefinement.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeRefinement.cpp index 8013c2f64..391be7b79 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeRefinement.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeRefinement.cpp @@ -49,10 +49,10 @@ void CurvilinearGridDeRefinement::Compute() // the de-refined grid std::vector> deRefinedGrid; - deRefinedGrid.reserve(m_grid.m_numM); + deRefinedGrid.reserve(m_grid.NumM()); UInt mIndexOriginalGrid = 0; - while (mIndexOriginalGrid < m_grid.m_numM) + while (mIndexOriginalGrid < m_grid.NumM()) { UInt localMDeRefinement = 1; if (mIndexOriginalGrid >= m_lowerLeft.m_m && mIndexOriginalGrid < m_upperRight.m_m) @@ -60,10 +60,10 @@ void CurvilinearGridDeRefinement::Compute() localMDeRefinement = numMToDeRefine; } deRefinedGrid.emplace_back(std::vector()); - deRefinedGrid.back().reserve(m_grid.m_numN); + deRefinedGrid.back().reserve(m_grid.NumN()); UInt nIndexOriginalGrid = 0; - while (nIndexOriginalGrid < m_grid.m_numN) + while (nIndexOriginalGrid < m_grid.NumN()) { UInt localNDeRefinement = 1; if (nIndexOriginalGrid >= m_lowerLeft.m_n && nIndexOriginalGrid < m_upperRight.m_n) diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeleteExterior.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeleteExterior.cpp index 0b378b88d..6bb38da9f 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeleteExterior.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeleteExterior.cpp @@ -50,7 +50,7 @@ void meshkernel::CurvilinearGridDeleteExterior::Compute() // Split into 4 regions, setting the nodes in each region to invalid // // First region: all nodes "south" the designated box - for (UInt n = 0; n < m_grid.m_numN; ++n) + for (UInt n = 0; n < m_grid.NumN(); ++n) { for (UInt m = 0; m < lowerLimitJ; ++m) { @@ -68,7 +68,7 @@ void meshkernel::CurvilinearGridDeleteExterior::Compute() } // Third region: all nodes "directly east of" the designated box - for (UInt n = upperLimitI + 1; n < m_grid.m_numN; ++n) + for (UInt n = upperLimitI + 1; n < m_grid.NumN(); ++n) { for (UInt m = lowerLimitJ; m <= upperLimitJ; ++m) { @@ -77,9 +77,9 @@ void meshkernel::CurvilinearGridDeleteExterior::Compute() } // Fourth region: all nodes "north" the designated box - for (UInt n = 0; n < m_grid.m_numN; ++n) + for (UInt n = 0; n < m_grid.NumN(); ++n) { - for (UInt m = upperLimitJ + 1; m < m_grid.m_numM; ++m) + for (UInt m = upperLimitJ + 1; m < m_grid.NumM(); ++m) { m_grid.m_gridNodes(n, m).SetInvalid(); } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineMirror.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineMirror.cpp index 3431e1078..2cac09084 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineMirror.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineMirror.cpp @@ -74,14 +74,14 @@ void CurvilinearGridLineMirror::Compute() if (gridLineType == CurvilinearGrid::BoundaryGridLineType::Right) { auto const last_row = m_grid.m_gridNodes.rows() - 1; - m_grid.m_gridNodes.row(last_row)[i] = m_grid.m_gridNodes(m_grid.m_numM - 1, i) * a + - m_grid.m_gridNodes(m_grid.m_numM - 2, i) * b; + m_grid.m_gridNodes.row(last_row)[i] = m_grid.m_gridNodes(m_grid.NumM() - 1, i) * a + + m_grid.m_gridNodes(m_grid.NumM() - 2, i) * b; } if (gridLineType == CurvilinearGrid::BoundaryGridLineType::Up) { auto const last_col = m_grid.m_gridNodes.cols() - 1; - m_grid.m_gridNodes.col(last_col)[i] = m_grid.m_gridNodes(i, m_grid.m_numN - 1) * a + - m_grid.m_gridNodes(i, m_grid.m_numN - 2) * b; + m_grid.m_gridNodes.col(last_col)[i] = m_grid.m_gridNodes(i, m_grid.NumN() - 1) * a + + m_grid.m_gridNodes(i, m_grid.NumN() - 2) * b; } if (gridLineType == CurvilinearGrid::BoundaryGridLineType::Bottom) { diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp index ee9acaf3e..3530d5aa6 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp @@ -39,8 +39,8 @@ using meshkernel::CurvilinearGridOrthogonalization; CurvilinearGridOrthogonalization::CurvilinearGridOrthogonalization(CurvilinearGrid& grid, const OrthogonalizationParameters& orthogonalizationParameters) : CurvilinearGridAlgorithm(grid), - m_orthoEqTerms(m_grid.m_numM, m_grid.m_numN), - m_isGridNodeFrozen(m_grid.m_numM, m_grid.m_numN), + m_orthoEqTerms(m_grid.NumM(), m_grid.NumN()), + m_isGridNodeFrozen(m_grid.NumM(), m_grid.NumN()), m_splines(Splines(m_grid)) { CheckOrthogonalizationParameters(orthogonalizationParameters); @@ -91,11 +91,11 @@ void CurvilinearGridOrthogonalization::Compute() void CurvilinearGridOrthogonalization::ProjectHorizontalBoundaryGridNodes() { // m grid lines (horizontal) - for (UInt n = 0; n < m_grid.m_numN; ++n) + for (UInt n = 0; n < m_grid.NumN(); ++n) { UInt startM = constants::missing::uintValue; int nextVertical = 0; - for (UInt m = 0; m < m_grid.m_numM; ++m) + for (UInt m = 0; m < m_grid.NumM(); ++m) { const auto nodeType = m_grid.m_gridNodesTypes(m, n); if (nodeType == CurvilinearGrid::NodeType::BottomLeft || nodeType == CurvilinearGrid::NodeType::UpperLeft) @@ -170,11 +170,11 @@ void CurvilinearGridOrthogonalization::ProjectHorizontalBoundaryGridNodes() void CurvilinearGridOrthogonalization::ProjectVerticalBoundariesGridNodes() { // m gridlines (vertical) - for (UInt m = 0; m < m_grid.m_numM; ++m) + for (UInt m = 0; m < m_grid.NumM(); ++m) { UInt startN = constants::missing::uintValue; int nextHorizontal = 0; - for (UInt n = 0; n < m_grid.m_numN; ++n) + for (UInt n = 0; n < m_grid.NumN(); ++n) { const auto nodeType = m_grid.m_gridNodesTypes(m, n); if (nodeType == CurvilinearGrid::NodeType::BottomLeft || nodeType == CurvilinearGrid::NodeType::BottomRight) @@ -236,7 +236,7 @@ void CurvilinearGridOrthogonalization::ProjectVerticalBoundariesGridNodes() } // Vertical spline index - const auto splineIndex = m_grid.m_numN + m; + const auto splineIndex = m_grid.NumN() + m; m_grid.m_gridNodes(m, nn) = m_splines.ComputeClosestPointOnSplineSegment(splineIndex, static_cast(startN), static_cast(n), @@ -257,8 +257,8 @@ void CurvilinearGridOrthogonalization::Solve() const auto minMInternal = std::max(static_cast(1), m_lowerLeft.m_m); const auto minNInternal = std::max(static_cast(1), m_lowerLeft.m_n); - const auto maxMInternal = std::min(m_upperRight.m_m, m_grid.m_numM - 1); - const auto maxNInternal = std::min(m_upperRight.m_n, m_grid.m_numN - 1); + const auto maxMInternal = std::min(m_upperRight.m_m, m_grid.NumM() - 1); + const auto maxNInternal = std::min(m_upperRight.m_n, m_grid.NumN() - 1); for (auto innerIterations = 0; innerIterations < m_orthogonalizationParameters.inner_iterations; ++innerIterations) { @@ -399,7 +399,7 @@ void CurvilinearGridOrthogonalization::ComputeVerticalCoefficients() { const auto invalidBoundaryNodes = ComputeInvalidVerticalBoundaryNodes(); // Store the counter - lin_alg::Matrix counter(m_grid.m_numM, m_grid.m_numN); + lin_alg::Matrix counter(m_grid.NumM(), m_grid.NumN()); counter.fill(0); // Perform left sum @@ -454,7 +454,7 @@ void CurvilinearGridOrthogonalization::ComputeVerticalCoefficients() void CurvilinearGridOrthogonalization::ComputeHorizontalCoefficients() { const auto invalidBoundaryNodes = ComputeInvalidHorizontalBoundaryNodes(); - lin_alg::Matrix counter(m_grid.m_numM, m_grid.m_numN); + lin_alg::Matrix counter(m_grid.NumM(), m_grid.NumN()); counter.fill(0); // Perform bottom sum @@ -508,7 +508,7 @@ void CurvilinearGridOrthogonalization::ComputeHorizontalCoefficients() lin_alg::Matrix CurvilinearGridOrthogonalization::ComputeInvalidHorizontalBoundaryNodes() const { - lin_alg::Matrix invalidBoundaryNodes(m_grid.m_numM, m_grid.m_numN); + lin_alg::Matrix invalidBoundaryNodes(m_grid.NumM(), m_grid.NumN()); invalidBoundaryNodes.fill(false); for (auto m = m_lowerLeft.m_m + 1; m < m_upperRight.m_m; ++m) @@ -539,7 +539,7 @@ lin_alg::Matrix CurvilinearGridOrthogonalization::ComputeInvalidHorizontal auto lastValidM = m + step; while (lastValidM > 0 && - lastValidM < m_grid.m_numM && + lastValidM < m_grid.NumM() && m_grid.m_gridNodesTypes(lastValidM, n) == CurvilinearGrid::NodeType::InternalValid) { lastValidM += step; @@ -558,7 +558,7 @@ lin_alg::Matrix CurvilinearGridOrthogonalization::ComputeInvalidHorizontal lin_alg::Matrix CurvilinearGridOrthogonalization::ComputeInvalidVerticalBoundaryNodes() const { - lin_alg::Matrix invalidBoundaryNodes(m_grid.m_numM, m_grid.m_numN); + lin_alg::Matrix invalidBoundaryNodes(m_grid.NumM(), m_grid.NumN()); invalidBoundaryNodes.fill(false); for (auto m = m_lowerLeft.m_m + 1; m < m_upperRight.m_m; ++m) @@ -588,7 +588,7 @@ lin_alg::Matrix CurvilinearGridOrthogonalization::ComputeInvalidVerticalBo } auto lastValidN = n + step; while (lastValidN > 0 && - lastValidN < m_grid.m_numN && + lastValidN < m_grid.NumN() && m_grid.m_gridNodesTypes(m, lastValidN) == CurvilinearGrid::NodeType::InternalValid) { lastValidN += step; diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridRefinement.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridRefinement.cpp index c7fd2f1f5..2ef2cf7ae 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridRefinement.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridRefinement.cpp @@ -58,8 +58,8 @@ void CurvilinearGridRefinement::Compute() // Estimate the dimension of the refined grid const auto numMToRefine = m_upperRight.m_m - m_lowerLeft.m_m; const auto numNToRefine = m_upperRight.m_n - m_lowerLeft.m_n; - const UInt maxM = m_grid.m_numM + numMToRefine * (m_refinement - 1); - const UInt maxN = m_grid.m_numN + numNToRefine * (m_refinement - 1); + const UInt maxM = m_grid.NumM() + numMToRefine * (m_refinement - 1); + const UInt maxN = m_grid.NumN() + numNToRefine * (m_refinement - 1); // Local vector for each curvilinear grid face std::vector bottomRefinement(m_refinement); @@ -71,7 +71,7 @@ void CurvilinearGridRefinement::Compute() lin_alg::Matrix refinedGrid(maxM, maxN); UInt refinedM = 0; - for (UInt currentM = 0; currentM < m_grid.m_numM - 1; ++currentM) + for (UInt currentM = 0; currentM < m_grid.NumM() - 1; ++currentM) { UInt localMRefinement = 1; if (currentM >= m_lowerLeft.m_m && currentM < m_upperRight.m_m) @@ -80,7 +80,7 @@ void CurvilinearGridRefinement::Compute() } UInt refinedN = 0; - for (UInt currentN = 0; currentN < m_grid.m_numN - 1; ++currentN) + for (UInt currentN = 0; currentN < m_grid.NumN() - 1; ++currentN) { UInt localNRefinement = 1; @@ -111,7 +111,7 @@ void CurvilinearGridRefinement::Compute() rightRefinement.clear(); for (UInt n = 0; n < localNRefinement + 1; ++n) { - const auto splineIndex = m_grid.m_numN + currentM; + const auto splineIndex = m_grid.NumN() + currentM; const auto interpolationPoint = static_cast(currentN) + static_cast(n) / static_cast(localNRefinement); leftRefinement.emplace_back(ComputePointOnSplineAtAdimensionalDistance(m_splines.m_splineNodes[splineIndex], m_splines.m_splineDerivatives[splineIndex], interpolationPoint)); rightRefinement.emplace_back(ComputePointOnSplineAtAdimensionalDistance(m_splines.m_splineNodes[splineIndex + 1], m_splines.m_splineDerivatives[splineIndex + 1], interpolationPoint)); diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothness.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothness.cpp index 0202dba4b..70270bde9 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothness.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothness.cpp @@ -37,13 +37,13 @@ void meshkernel::CurvilinearGridSmoothness::Compute(const CurvilinearGrid& grid, const CurvilinearDirection direction, lin_alg::Matrix& smoothness) { - lin_alg::ResizeAndFillMatrix(smoothness, grid.m_numM, grid.m_numN, false, constants::missing::doubleValue); + lin_alg::ResizeAndFillMatrix(smoothness, grid.NumM(), grid.NumN(), false, constants::missing::doubleValue); if (direction == CurvilinearDirection::M) { - for (UInt i = 1; i < grid.m_numM - 1; ++i) + for (UInt i = 1; i < grid.NumM() - 1; ++i) { - for (UInt j = 0; j < grid.m_numN; ++j) + for (UInt j = 0; j < grid.NumN(); ++j) { smoothness(i, j) = ComputeNodeSmoothness(grid.m_gridNodes(i - 1, j), grid.m_gridNodes(i, j), grid.m_gridNodes(i + 1, j)); } @@ -51,9 +51,9 @@ void meshkernel::CurvilinearGridSmoothness::Compute(const CurvilinearGrid& grid, } else if (direction == CurvilinearDirection::N) { - for (UInt i = 0; i < grid.m_numM; ++i) + for (UInt i = 0; i < grid.NumM(); ++i) { - for (UInt j = 1; j < grid.m_numN - 1; ++j) + for (UInt j = 1; j < grid.NumN() - 1; ++j) { smoothness(i, j) = ComputeNodeSmoothness(grid.m_gridNodes(i, j - 1), grid.m_gridNodes(i, j), grid.m_gridNodes(i, j + 1)); } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSnapping.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSnapping.cpp index a37f54636..ecd009cbd 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSnapping.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSnapping.cpp @@ -141,9 +141,9 @@ meshkernel::CurvilinearGridSnapping::ComputeLoopBounds(const CurvilinearGridNode if (m_points.size() == 2) { const auto m1 = static_cast(std::max(1, snappedNodeIndex.m_m + 1 - predefinedSmootingRegionFactor * m_smoothingRegionIndicator.m_m) - 1); - const auto m2 = static_cast(std::min(m_grid.m_numM, snappedNodeIndex.m_m + 1 + predefinedSmootingRegionFactor * m_smoothingRegionIndicator.m_m) - 1); + const auto m2 = static_cast(std::min(m_grid.NumM(), snappedNodeIndex.m_m + 1 + predefinedSmootingRegionFactor * m_smoothingRegionIndicator.m_m) - 1); const auto n1 = static_cast(std::max(1, snappedNodeIndex.m_n + 1 - predefinedSmootingRegionFactor * m_smoothingRegionIndicator.m_n) - 1); - const auto n2 = static_cast(std::min(m_grid.m_numN, snappedNodeIndex.m_n + 1 + predefinedSmootingRegionFactor * m_smoothingRegionIndicator.m_n) - 1); + const auto n2 = static_cast(std::min(m_grid.NumN(), snappedNodeIndex.m_n + 1 + predefinedSmootingRegionFactor * m_smoothingRegionIndicator.m_n) - 1); return {CurvilinearGridNodeIndices(m1, n1), CurvilinearGridNodeIndices(m2, n2)}; } diff --git a/libs/MeshKernel/src/Splines.cpp b/libs/MeshKernel/src/Splines.cpp index f6ef9449e..905b4f3a0 100644 --- a/libs/MeshKernel/src/Splines.cpp +++ b/libs/MeshKernel/src/Splines.cpp @@ -43,10 +43,10 @@ Splines::Splines(Projection projection) : m_projection(projection) {} Splines::Splines(CurvilinearGrid const& grid) { // first the m_n m_m-gridlines - lin_alg::Matrix mGridLines(grid.m_numN, grid.m_numM); - for (UInt n = 0; n < grid.m_numN; ++n) + lin_alg::Matrix mGridLines(grid.NumN(), grid.NumM()); + for (UInt n = 0; n < grid.NumN(); ++n) { - for (UInt m = 0; m < grid.m_numM; ++m) + for (UInt m = 0; m < grid.NumM(); ++m) { mGridLines(n, m) = grid.m_gridNodes(m, n); } @@ -54,7 +54,7 @@ Splines::Splines(CurvilinearGrid const& grid) } // then the m_m m_n-gridlines - for (UInt m = 0; m < grid.m_numM; ++m) + for (UInt m = 0; m < grid.NumM(); ++m) { AddSpline(lin_alg::MatrixRowToSTLVector(grid.m_gridNodes, m)); } diff --git a/libs/MeshKernel/tests/src/CurvilinearGridDeRefinementTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridDeRefinementTests.cpp index 66dfdab03..60e2104c0 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridDeRefinementTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridDeRefinementTests.cpp @@ -24,8 +24,8 @@ TEST(CurvilinearGridDeRefinement, Compute_OnCurvilinearGrid_ShouldDeRefineVertic curvilinearGridDeRefinement.Compute(); // Assert (the vertical line at x=15 is removed) - ASSERT_EQ(4, curvilinearGrid.m_numM); - ASSERT_EQ(4, curvilinearGrid.m_numN); + ASSERT_EQ(4, curvilinearGrid.NumM()); + ASSERT_EQ(4, curvilinearGrid.NumN()); } TEST(CurvilinearGridDeRefinement, Compute_OnCurvilinearGridWithMissingFaces_ShouldDeRefineVerticalGridLines) @@ -50,8 +50,8 @@ TEST(CurvilinearGridDeRefinement, Compute_OnCurvilinearGridWithMissingFaces_Shou curvilinearGridDeRefinement.Compute(); // Assert - ASSERT_EQ(6, curvilinearGrid.m_numM); - ASSERT_EQ(4, curvilinearGrid.m_numN); + ASSERT_EQ(6, curvilinearGrid.NumM()); + ASSERT_EQ(4, curvilinearGrid.NumN()); } TEST(CurvilinearGridDeRefinement, Compute_OnCurvilinearGrid_ShouldDeRefineHorizontalGridLines) @@ -71,6 +71,6 @@ TEST(CurvilinearGridDeRefinement, Compute_OnCurvilinearGrid_ShouldDeRefineHorizo curvilinearGridDeRefinement.Compute(); // Assert (the vertical line at x=15 is removed) - ASSERT_EQ(4, curvilinearGrid.m_numM); - ASSERT_EQ(4, curvilinearGrid.m_numN); + ASSERT_EQ(4, curvilinearGrid.NumM()); + ASSERT_EQ(4, curvilinearGrid.NumN()); } diff --git a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp index 6c7de21ac..71361d935 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp @@ -245,9 +245,9 @@ void TestDeleteInteriorNodes(meshkernel::CurvilinearGrid& curvilinearGrid, { // Check first, that all nodes are valid - for (meshkernel::UInt i = 0; i < curvilinearGrid.m_numN; ++i) + for (meshkernel::UInt i = 0; i < curvilinearGrid.NumN(); ++i) { - for (meshkernel::UInt j = 0; j < curvilinearGrid.m_numM; ++j) + for (meshkernel::UInt j = 0; j < curvilinearGrid.NumM(); ++j) { EXPECT_TRUE(curvilinearGrid.GetNode(i, j).IsValid()); } @@ -274,9 +274,9 @@ void TestDeleteInteriorNodes(meshkernel::CurvilinearGrid& curvilinearGrid, EXPECT_EQ(initialSize - expectedInvalidated, CurvilinearGridCountValidNodes(curvilinearGrid)); // Check that these nodes have been set to invalid. - for (meshkernel::UInt i = 0; i < curvilinearGrid.m_numN; ++i) + for (meshkernel::UInt i = 0; i < curvilinearGrid.NumN(); ++i) { - for (meshkernel::UInt j = 0; j < curvilinearGrid.m_numM; ++j) + for (meshkernel::UInt j = 0; j < curvilinearGrid.NumM(); ++j) { if (inRange(i, lowerLimitI, upperLimitI) && inRange(j, lowerLimitJ, upperLimitJ)) { @@ -363,9 +363,9 @@ void TestDeleteExteriorNodes(meshkernel::CurvilinearGrid& curvilinearGrid, const meshkernel::CurvilinearGridNodeIndices second) { // Check first, that all nodes are valid - for (meshkernel::UInt i = 0; i < curvilinearGrid.m_numN; ++i) + for (meshkernel::UInt i = 0; i < curvilinearGrid.NumN(); ++i) { - for (meshkernel::UInt j = 0; j < curvilinearGrid.m_numM; ++j) + for (meshkernel::UInt j = 0; j < curvilinearGrid.NumM(); ++j) { EXPECT_TRUE(curvilinearGrid.GetNode(i, j).IsValid()); } @@ -392,9 +392,9 @@ void TestDeleteExteriorNodes(meshkernel::CurvilinearGrid& curvilinearGrid, EXPECT_EQ(expectedValid, CurvilinearGridCountValidNodes(curvilinearGrid)); // Check that these exterior nodes have been set to invalid. - for (meshkernel::UInt i = 0; i < curvilinearGrid.m_numN; ++i) + for (meshkernel::UInt i = 0; i < curvilinearGrid.NumN(); ++i) { - for (meshkernel::UInt j = 0; j < curvilinearGrid.m_numM; ++j) + for (meshkernel::UInt j = 0; j < curvilinearGrid.NumM(); ++j) { if (inRange(i, lowerLimitI, upperLimitI) && inRange(j, lowerLimitJ, upperLimitJ)) { diff --git a/libs/MeshKernel/tests/src/CurvilinearGridRefinementTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridRefinementTests.cpp index c56fec19f..aecce477a 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridRefinementTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridRefinementTests.cpp @@ -23,8 +23,8 @@ TEST(CurvilinearGridRefinement, Compute_OnCurvilinearGrid_ShouldRefine) curvilinearGridRefinement.Compute(); // Assert - ASSERT_EQ(13, curvilinearGrid.m_numM); - ASSERT_EQ(4, curvilinearGrid.m_numN); + ASSERT_EQ(13, curvilinearGrid.NumM()); + ASSERT_EQ(4, curvilinearGrid.NumN()); constexpr double tolerance = 1e-12; ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 0).x, tolerance); @@ -69,8 +69,8 @@ TEST(CurvilinearGridRefinement, Compute_OnCurvilinearGridWithMissingFaces_Should curvilinearGridRefinement.Compute(); // Assert - ASSERT_EQ(15, curvilinearGrid.m_numM); - ASSERT_EQ(4, curvilinearGrid.m_numN); + ASSERT_EQ(15, curvilinearGrid.NumM()); + ASSERT_EQ(4, curvilinearGrid.NumN()); constexpr double tolerance = 1e-12; diff --git a/libs/MeshKernelApi/src/MeshKernel.cpp b/libs/MeshKernelApi/src/MeshKernel.cpp index 412adfde8..97fc560c9 100644 --- a/libs/MeshKernelApi/src/MeshKernel.cpp +++ b/libs/MeshKernelApi/src/MeshKernel.cpp @@ -525,8 +525,8 @@ namespace meshkernelapi { throw meshkernel::MeshKernelError("The selected mesh kernel id does not exist."); } - curvilinearGrid.num_n = static_cast(meshKernelState[meshKernelId].m_curvilinearGrid->m_numN); - curvilinearGrid.num_m = static_cast(meshKernelState[meshKernelId].m_curvilinearGrid->m_numM); + curvilinearGrid.num_n = static_cast(meshKernelState[meshKernelId].m_curvilinearGrid->NumN()); + curvilinearGrid.num_m = static_cast(meshKernelState[meshKernelId].m_curvilinearGrid->NumM()); } catch (...) { diff --git a/tools/test_utils/src/MakeCurvilinearGrids.cpp b/tools/test_utils/src/MakeCurvilinearGrids.cpp index 1ab1d6c86..5e1db19fd 100644 --- a/tools/test_utils/src/MakeCurvilinearGrids.cpp +++ b/tools/test_utils/src/MakeCurvilinearGrids.cpp @@ -24,9 +24,9 @@ size_t CurvilinearGridCountValidNodes(meshkernel::CurvilinearGrid const& curvili { size_t validNodes = 0; size_t index = 0; - for (size_t m = 0; m < curvilinearGrid.m_numM; ++m) + for (size_t m = 0; m < curvilinearGrid.NumM(); ++m) { - for (size_t n = 0; n < curvilinearGrid.m_numN; ++n) + for (size_t n = 0; n < curvilinearGrid.NumN(); ++n) { if (curvilinearGrid.m_gridNodes(m, n).IsValid()) { From ae644adffed860b9d731d7b4d3d6d01115966a02 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Wed, 31 Jan 2024 14:47:58 +0100 Subject: [PATCH 02/33] Fix method comments --- .../MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index a4e8b8e7d..2fc9082ab 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -109,10 +109,16 @@ namespace meshkernel /// @param[in] point The input grid points [[nodiscard]] CurvilinearGridNodeIndices GetNodeIndices(Point point); - /// @brief Gets a constant reference to the grid node at the (i,j) location + /// @brief Gets a reference to the grid node at the (i,j) location + /// @note:rows of nodes are stored in matrix columns and vice versa + /// @param [in] i column index of node + /// @param [in] j row index of node [[nodiscard]] meshkernel::Point& GetNode(const UInt i, const UInt j) { return m_gridNodes(i, j); } - /// @brief Gets a reference to the grid node at the (i,j) location + /// @brief Gets a constant reference to the grid node at the (i,j) location + /// @note:rows of nodes are stored in matrix columns and vice versa + /// @param [in] i column index of node + /// @param [in] j row index of node [[nodiscard]] meshkernel::Point const& GetNode(const UInt i, const UInt j) const { return m_gridNodes(i, j); } /// @brief Gets a reference to the grid node at the location specified by the index. From 9d82248e62d15214e531045b1873ebf44741d0a2 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Wed, 31 Jan 2024 15:00:08 +0100 Subject: [PATCH 03/33] Additional access methods --- .../CurvilinearGrid/CurvilinearGrid.hpp | 21 ++++++++++ .../src/CurvilinearGridRectangularTests.cpp | 39 +++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index 2fc9082ab..67ebe7c61 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -238,6 +238,27 @@ namespace meshkernel /// @return A number >= 2 for a valid curvilinear grid UInt NumN() const { return m_numN; } + /// @brief Is the node matrix empty + /// @return true iff the node matrix is empty + bool IsEmpty() const { return lin_alg::MatrixIsEmpty(m_gridNodes); } + + /// @brief Get a copy of the nodes matrix + /// @note:rows are stored as columns and vice versa + /// @return a copy of the matrix + lin_alg::Matrix GetNodes() const { return m_gridNodes; } + + /// @brief Get a column of nodes as STL vector + /// @note:rows are stored as columns and vice versa + /// @param [in] m the column index + /// @return a vector of NumN nodes + std::vector GetNodeColumnVector(UInt m) const { return lin_alg::MatrixRowToSTLVector(m_gridNodes, m); } + + /// @brief Get a row of nodes as STL vector + /// @note:rows are stored as columns and vice versa + /// @param [in] n the row index + /// @return a vector of NumM nodes + std::vector GetNodeRowVector(UInt n) const { return lin_alg::MatrixColToSTLVector(m_gridNodes, n); } + private: /// @brief Remove invalid nodes. /// This function is recursive diff --git a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp index 71361d935..93c6fea2d 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp @@ -475,3 +475,42 @@ TEST(CurvilinearGridUniform, DeleteExteriorNodesFailureTest) EXPECT_THROW(curvilinearGrid->ComputeBlockFromCornerPoints(CurvilinearGridNodeIndices{nx, 1}, CurvilinearGridNodeIndices{4, 4}), meshkernel::ConstraintError); } + +TEST(CurvilinearGridUniform, NumM_ReturnsNumberOfNodeColumns) +{ + const int numM = 7; + const int numN = 5; + const auto subject = MakeCurvilinearGrid(0., 0., 1., 1., numM, numN); + EXPECT_EQ(7, subject->NumM()); +} + +TEST(CurvilinearGridUniform, NumM_ReturnsNumberOfRowColumns) +{ + const int numM = 7; + const int numN = 5; + const auto subject = MakeCurvilinearGrid(0., 0., 1., 1., numM, numN); + EXPECT_EQ(5, subject->NumN()); +} + +TEST(CurvilinearGridUniform, GetNodes_ReturnsCopyOfNodeMatrix) +{ + // NOTE: the storage is transposed, i.e. nodes.rows() corresponds with the number of node columns as indicated by numM and v.v. + const int numM = 7; + const int numN = 5; + const auto subject = MakeCurvilinearGrid(0., 0., 1., 1., numM, numN); + const auto nodes = subject->GetNodes(); + EXPECT_EQ(numM, nodes.rows()); + EXPECT_EQ(numN, nodes.cols()); +} + +TEST(CurvilinearGridUniform, GetRowVector_ReturnsVectorOfLengthNumM) +{ + const auto subject = MakeCurvilinearGrid(0., 0., 1., 1., 2, 3); + EXPECT_EQ(subject->NumM(), subject->GetNodeRowVector(1).size()); +} + +TEST(CurvilinearGridUniform, GetColumnVector_ReturnsVectorOfLengthNumN) +{ + const auto subject = MakeCurvilinearGrid(0., 0., 1., 1., 2, 3); + EXPECT_EQ(subject->NumN(), subject->GetNodeColumnVector(1).size()); +} From ff11ccf681af3ace2a654f8c84b0cb644649be2f Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Wed, 31 Jan 2024 15:08:58 +0100 Subject: [PATCH 04/33] Using access methods for m,n indexing --- .../CurvilinearGridCurvature.cpp | 4 +- .../CurvilinearGridDeRefinement.cpp | 2 +- ...CurvilinearGridLineAttractionRepulsion.cpp | 6 +- .../CurvilinearGridLineMirror.cpp | 20 +- .../CurvilinearGridLineShift.cpp | 18 +- .../CurvilinearGridOrthogonalization.cpp | 48 +- .../CurvilinearGridRefinement.cpp | 8 +- .../CurvilinearGridSmoothing.cpp | 22 +- .../CurvilinearGridSmoothness.cpp | 4 +- libs/MeshKernel/src/Splines.cpp | 2 +- .../src/CurvilinearGridFromPolygonTests.cpp | 94 +- .../src/CurvilinearGridFromSplinesTests.cpp | 906 +++++++++--------- ...ilinearGridFromSplinesTransfiniteTests.cpp | 282 +++--- ...ilinearGridLineAttractionRepulsionTest.cpp | 88 +- .../src/CurvilinearGridLineShiftTests.cpp | 156 +-- .../CurvilinearGridOrthogonalizationTests.cpp | 356 +++---- .../src/CurvilinearGridRectangularTests.cpp | 86 +- .../src/CurvilinearGridRefinementTests.cpp | 106 +- .../src/CurvilinearGridSmoothingTests.cpp | 350 +++---- tools/test_utils/src/MakeCurvilinearGrids.cpp | 6 +- 20 files changed, 1282 insertions(+), 1282 deletions(-) diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridCurvature.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridCurvature.cpp index f64e525e1..473e78b62 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridCurvature.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridCurvature.cpp @@ -43,7 +43,7 @@ void meshkernel::CurvilinearGridCurvature::Compute(const CurvilinearGrid& grid, { for (UInt j = 0; j < grid.NumN(); ++j) { - curvature(i, j) = ComputeNodeCurvature(grid.m_gridNodes(i - 1, j), grid.m_gridNodes(i, j), grid.m_gridNodes(i + 1, j)); + curvature(i, j) = ComputeNodeCurvature(grid.GetNode(i - 1, j), grid.GetNode(i, j), grid.GetNode(i + 1, j)); } } } @@ -53,7 +53,7 @@ void meshkernel::CurvilinearGridCurvature::Compute(const CurvilinearGrid& grid, { for (UInt j = 1; j < grid.NumN() - 1; ++j) { - curvature(i, j) = ComputeNodeCurvature(grid.m_gridNodes(i, j - 1), grid.m_gridNodes(i, j), grid.m_gridNodes(i, j + 1)); + curvature(i, j) = ComputeNodeCurvature(grid.GetNode(i, j - 1), grid.GetNode(i, j), grid.GetNode(i, j + 1)); } } } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeRefinement.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeRefinement.cpp index 391be7b79..18dc84a59 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeRefinement.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeRefinement.cpp @@ -70,7 +70,7 @@ void CurvilinearGridDeRefinement::Compute() { localNDeRefinement = numNToDeRefine; } - deRefinedGrid.back().emplace_back(m_grid.m_gridNodes(mIndexOriginalGrid, nIndexOriginalGrid)); + deRefinedGrid.back().emplace_back(m_grid.GetNode(mIndexOriginalGrid, nIndexOriginalGrid)); nIndexOriginalGrid += localNDeRefinement; } mIndexOriginalGrid += localMDeRefinement; diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineAttractionRepulsion.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineAttractionRepulsion.cpp index faf25de10..d743f550f 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineAttractionRepulsion.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineAttractionRepulsion.cpp @@ -44,7 +44,7 @@ CurvilinearGridLineAttractionRepulsion::CurvilinearGridLineAttractionRepulsion(C void CurvilinearGridLineAttractionRepulsion::Compute() { - if (lin_alg::MatrixIsEmpty(m_grid.m_gridNodes)) + if (m_grid.IsEmpty()) { throw std::invalid_argument("CurvilinearGridLineAttractionRepulsion::Compute Empty grid"); } @@ -71,7 +71,7 @@ void CurvilinearGridLineAttractionRepulsion::Compute() for (auto n = startN; n <= endN; ++n) { // Not a valid grid node - if (!m_originalGrid.m_gridNodes(m, n).IsValid()) + if (!m_originalGrid.GetNode(m, n).IsValid()) { continue; } @@ -104,7 +104,7 @@ void CurvilinearGridLineAttractionRepulsion::Compute() displacement = m_originalGrid.TransformDisplacement(displacement, nodeIndex, false); // adjust nodes - m_grid.m_gridNodes(m, n) += displacement; + m_grid.GetNode(m, n) += displacement; } } } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineMirror.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineMirror.cpp index 2cac09084..fc41159d7 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineMirror.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineMirror.cpp @@ -68,25 +68,25 @@ void CurvilinearGridLineMirror::Compute() { if (gridLineType == CurvilinearGrid::BoundaryGridLineType::Left) { - m_grid.m_gridNodes.row(0)[i] = m_grid.m_gridNodes(1, i) * a + - m_grid.m_gridNodes(2, i) * b; + m_grid.GetNode(0, i) = m_grid.GetNode(1, i) * a + + m_grid.GetNode(2, i) * b; } if (gridLineType == CurvilinearGrid::BoundaryGridLineType::Right) { - auto const last_row = m_grid.m_gridNodes.rows() - 1; - m_grid.m_gridNodes.row(last_row)[i] = m_grid.m_gridNodes(m_grid.NumM() - 1, i) * a + - m_grid.m_gridNodes(m_grid.NumM() - 2, i) * b; + auto const last_row = (UInt)m_grid.m_gridNodes.rows() - 1; + m_grid.GetNode(last_row, i) = m_grid.GetNode(m_grid.NumM() - 1, i) * a + + m_grid.GetNode(m_grid.NumM() - 2, i) * b; } if (gridLineType == CurvilinearGrid::BoundaryGridLineType::Up) { - auto const last_col = m_grid.m_gridNodes.cols() - 1; - m_grid.m_gridNodes.col(last_col)[i] = m_grid.m_gridNodes(i, m_grid.NumN() - 1) * a + - m_grid.m_gridNodes(i, m_grid.NumN() - 2) * b; + auto const last_col = (UInt)m_grid.m_gridNodes.cols() - 1; + m_grid.GetNode(i, last_col) = m_grid.GetNode(i, m_grid.NumN() - 1) * a + + m_grid.GetNode(i, m_grid.NumN() - 2) * b; } if (gridLineType == CurvilinearGrid::BoundaryGridLineType::Bottom) { - m_grid.m_gridNodes.col(0)[i] = m_grid.m_gridNodes(i, 1) * a + - m_grid.m_gridNodes(i, 2) * b; + m_grid.GetNode(i, 0) = m_grid.GetNode(i, 1) * a + + m_grid.GetNode(i, 2) * b; } } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineShift.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineShift.cpp index eac1676db..df3cbccb1 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineShift.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineShift.cpp @@ -50,8 +50,8 @@ void CurvilinearGridLineShift::Compute() /// The first delta auto const previousNodeIndex = m_lines[0].m_startNode; - auto previousDelta = m_grid.m_gridNodes(previousNodeIndex.m_m, previousNodeIndex.m_n) - - m_originalGrid.m_gridNodes(previousNodeIndex.m_m, previousNodeIndex.m_n); + auto previousDelta = m_grid.GetNode(previousNodeIndex.m_m, previousNodeIndex.m_n) - + m_originalGrid.GetNode(previousNodeIndex.m_m, previousNodeIndex.m_n); const double eps = 1e-5; auto previousCoordinate = m_lines[0].m_startCoordinate; @@ -59,8 +59,8 @@ void CurvilinearGridLineShift::Compute() { auto const currentNodeIndex = m_lines[0].GetNodeIndexFromCoordinate(i); - auto const currentDelta = m_grid.m_gridNodes(currentNodeIndex.m_m, currentNodeIndex.m_n) - - m_originalGrid.m_gridNodes(currentNodeIndex.m_m, currentNodeIndex.m_n); + auto const currentDelta = m_grid.GetNode(currentNodeIndex.m_m, currentNodeIndex.m_n) - + m_originalGrid.GetNode(currentNodeIndex.m_m, currentNodeIndex.m_n); if (std::abs(currentDelta.x) < eps && std::abs(currentDelta.y) < eps && i != m_lines[0].m_endCoordinate) { @@ -79,8 +79,8 @@ void CurvilinearGridLineShift::Compute() auto const secondFactor = 1.0 - firstFactor; // Now distribute the shifting - m_grid.m_gridNodes(nodeIndex.m_m, nodeIndex.m_n) = m_originalGrid.m_gridNodes(nodeIndex.m_m, nodeIndex.m_n) + - previousDelta * secondFactor + currentDelta * firstFactor; + m_grid.GetNode(nodeIndex.m_m, nodeIndex.m_n) = m_originalGrid.GetNode(nodeIndex.m_m, nodeIndex.m_n) + + previousDelta * secondFactor + currentDelta * firstFactor; // Field transformation on the influence area TransformGrid(nodeIndex); } @@ -91,7 +91,7 @@ void CurvilinearGridLineShift::Compute() void CurvilinearGridLineShift::TransformGrid(CurvilinearGridNodeIndices const& node) { - auto delta = m_grid.m_gridNodes(node.m_m, node.m_n) - m_originalGrid.m_gridNodes(node.m_m, node.m_n); + auto delta = m_grid.GetNode(node.m_m, node.m_n) - m_originalGrid.GetNode(node.m_m, node.m_n); delta = m_originalGrid.TransformDisplacement(delta, node, true); auto const start = m_lines[0].IsMGridLine() ? m_lowerLeft.m_n : m_lowerLeft.m_m; @@ -102,7 +102,7 @@ void CurvilinearGridLineShift::TransformGrid(CurvilinearGridNodeIndices const& n CurvilinearGridNodeIndices currentNode{m_lines[0].IsMGridLine() ? node.m_m : i, m_lines[0].IsMGridLine() ? i : node.m_n}; - if (!m_originalGrid.m_gridNodes(currentNode.m_m, currentNode.m_n).IsValid()) + if (!m_originalGrid.GetNode(currentNode.m_m, currentNode.m_n).IsValid()) { continue; } @@ -119,7 +119,7 @@ void CurvilinearGridLineShift::TransformGrid(CurvilinearGridNodeIndices const& n } currentDelta = m_originalGrid.TransformDisplacement(currentDelta, currentNode, false); - m_grid.m_gridNodes(currentNode.m_m, currentNode.m_n) = m_originalGrid.m_gridNodes(currentNode.m_m, currentNode.m_n) + currentDelta; + m_grid.GetNode(currentNode.m_m, currentNode.m_n) = m_originalGrid.GetNode(currentNode.m_m, currentNode.m_n) + currentDelta; } } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp index 3530d5aa6..6b84035c2 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp @@ -132,9 +132,9 @@ void CurvilinearGridOrthogonalization::ProjectHorizontalBoundaryGridNodes() continue; } - const auto leftNode = m_grid.m_gridNodes(mm - 1, n); - const auto verticalNode = m_grid.m_gridNodes(mm, n + nextVertical); - const auto rightNode = m_grid.m_gridNodes(mm + 1, n); + const auto leftNode = m_grid.GetNode(mm - 1, n); + const auto verticalNode = m_grid.GetNode(mm, n + nextVertical); + const auto rightNode = m_grid.GetNode(mm + 1, n); Point boundaryNode; if (nextVertical == 1) @@ -157,10 +157,10 @@ void CurvilinearGridOrthogonalization::ProjectHorizontalBoundaryGridNodes() boundaryNode.y = (leftNode.y * qb + verticalNode.y * qbc + rightNode.y * qc + rightNode.x - leftNode.x) / rn; } - m_grid.m_gridNodes(mm, n) = m_splines.ComputeClosestPointOnSplineSegment(n, - static_cast(startM), - static_cast(m), - boundaryNode); + m_grid.GetNode(mm, n) = m_splines.ComputeClosestPointOnSplineSegment(n, + static_cast(startM), + static_cast(m), + boundaryNode); } } } @@ -210,9 +210,9 @@ void CurvilinearGridOrthogonalization::ProjectVerticalBoundariesGridNodes() { continue; } - const auto bottomNode = m_grid.m_gridNodes(m, nn - 1); - const auto horizontalNode = m_grid.m_gridNodes(m + nextHorizontal, nn); - const auto upperNode = m_grid.m_gridNodes(m, nn + 1); + const auto bottomNode = m_grid.GetNode(m, nn - 1); + const auto horizontalNode = m_grid.GetNode(m + nextHorizontal, nn); + const auto upperNode = m_grid.GetNode(m, nn + 1); Point boundaryNode; if (nextHorizontal == 1) @@ -237,10 +237,10 @@ void CurvilinearGridOrthogonalization::ProjectVerticalBoundariesGridNodes() // Vertical spline index const auto splineIndex = m_grid.NumN() + m; - m_grid.m_gridNodes(m, nn) = m_splines.ComputeClosestPointOnSplineSegment(splineIndex, - static_cast(startN), - static_cast(n), - boundaryNode); + m_grid.GetNode(m, nn) = m_splines.ComputeClosestPointOnSplineSegment(splineIndex, + static_cast(startN), + static_cast(n), + boundaryNode); } } } @@ -277,13 +277,13 @@ void CurvilinearGridOrthogonalization::Solve() } const auto residual = - m_grid.m_gridNodes(m + 1, n) * m_orthoEqTerms.a(m, n) + - m_grid.m_gridNodes(m - 1, n) * m_orthoEqTerms.b(m, n) + - m_grid.m_gridNodes(m, n + 1) * m_orthoEqTerms.c(m, n) + - m_grid.m_gridNodes(m, n - 1) * m_orthoEqTerms.d(m, n) + - m_grid.m_gridNodes(m, n) * m_orthoEqTerms.e(m, n); + m_grid.GetNode(m + 1, n) * m_orthoEqTerms.a(m, n) + + m_grid.GetNode(m - 1, n) * m_orthoEqTerms.b(m, n) + + m_grid.GetNode(m, n + 1) * m_orthoEqTerms.c(m, n) + + m_grid.GetNode(m, n - 1) * m_orthoEqTerms.d(m, n) + + m_grid.GetNode(m, n) * m_orthoEqTerms.e(m, n); - m_grid.m_gridNodes(m, n) = m_grid.m_gridNodes(m, n) - residual / m_orthoEqTerms.e(m, n) * omega; + m_grid.GetNode(m, n) = m_grid.GetNode(m, n) - residual / m_orthoEqTerms.e(m, n) * omega; } } @@ -317,10 +317,10 @@ void CurvilinearGridOrthogonalization::ComputeCoefficients() continue; } - const auto bottom = ComputeDistance(m_grid.m_gridNodes(m, n), m_grid.m_gridNodes(m + 1, n), Projection::cartesian); - const auto upper = ComputeDistance(m_grid.m_gridNodes(m, n + 1), m_grid.m_gridNodes(m + 1, n + 1), Projection::cartesian); - const auto left = ComputeDistance(m_grid.m_gridNodes(m, n), m_grid.m_gridNodes(m, n + 1), Projection::cartesian); - const auto right = ComputeDistance(m_grid.m_gridNodes(m + 1, n), m_grid.m_gridNodes(m + 1, n + 1), Projection::cartesian); + const auto bottom = ComputeDistance(m_grid.GetNode(m, n), m_grid.GetNode(m + 1, n), Projection::cartesian); + const auto upper = ComputeDistance(m_grid.GetNode(m, n + 1), m_grid.GetNode(m + 1, n + 1), Projection::cartesian); + const auto left = ComputeDistance(m_grid.GetNode(m, n), m_grid.GetNode(m, n + 1), Projection::cartesian); + const auto right = ComputeDistance(m_grid.GetNode(m + 1, n), m_grid.GetNode(m + 1, n + 1), Projection::cartesian); m_orthoEqTerms.a(m, n) = (bottom + upper) * 0.5; m_orthoEqTerms.b(m, n) = (left + right) * 0.5; diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridRefinement.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridRefinement.cpp index 2ef2cf7ae..1d4e219dc 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridRefinement.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridRefinement.cpp @@ -90,10 +90,10 @@ void CurvilinearGridRefinement::Compute() } // Only if all grid nodes of the face are valid, perform transfinite interpolation - if (m_grid.m_gridNodes(currentM, currentN).IsValid() && - m_grid.m_gridNodes(currentM + 1, currentN).IsValid() && - m_grid.m_gridNodes(currentM, currentN + 1).IsValid() && - m_grid.m_gridNodes(currentM + 1, currentN + 1).IsValid()) + if (m_grid.GetNode(currentM, currentN).IsValid() && + m_grid.GetNode(currentM + 1, currentN).IsValid() && + m_grid.GetNode(currentM, currentN + 1).IsValid() && + m_grid.GetNode(currentM + 1, currentN + 1).IsValid()) { // Calculate m-direction spline points bottomRefinement.clear(); diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp index d5f355cb0..c694e57bf 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp @@ -149,15 +149,15 @@ void CurvilinearGridSmoothing::SolveDirectional() { // smooth along vertical const auto a = maxlength < 1e-8 ? 0.5 : nSmoothing * smoothingFactor * characteristicLength / maxlength; - const auto maxDelta = firstLengthSquared > secondLengthSquared ? m_gridNodesCache(m - 1, n) - m_grid.m_gridNodes(m, n) : m_gridNodesCache(m + 1, n) - m_grid.m_gridNodes(m, n); - m_grid.m_gridNodes(m, n) = m_gridNodesCache(m, n) + maxDelta * a; + const auto maxDelta = firstLengthSquared > secondLengthSquared ? m_gridNodesCache(m - 1, n) - m_grid.GetNode(m, n) : m_gridNodesCache(m + 1, n) - m_grid.GetNode(m, n); + m_grid.GetNode(m, n) = m_gridNodesCache(m, n) + maxDelta * a; } else { // smooth along horizontal const auto a = maxlength < 1e-8 ? 0.5 : mSmoothing * smoothingFactor * characteristicLength / maxlength; - const auto maxDelta = firstLengthSquared > secondLengthSquared ? m_gridNodesCache(m, n - 1) - m_grid.m_gridNodes(m, n) : m_gridNodesCache(m, n + 1) - m_grid.m_gridNodes(m, n); - m_grid.m_gridNodes(m, n) = m_gridNodesCache(m, n) + maxDelta * a; + const auto maxDelta = firstLengthSquared > secondLengthSquared ? m_gridNodesCache(m, n - 1) - m_grid.GetNode(m, n) : m_gridNodesCache(m, n + 1) - m_grid.GetNode(m, n); + m_grid.GetNode(m, n) = m_gridNodesCache(m, n) + maxDelta * a; } } } @@ -190,8 +190,8 @@ void CurvilinearGridSmoothing::Solve() // Compute new position based on a smoothing operator if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::InternalValid) { - m_grid.m_gridNodes(m, n) = m_gridNodesCache(m, n) * a + (m_gridNodesCache(m - 1, n) + m_gridNodesCache(m + 1, n)) * 0.25 * b + - (m_gridNodesCache(m, n - 1) + m_gridNodesCache(m, n + 1)) * 0.25 * b; + m_grid.GetNode(m, n) = m_gridNodesCache(m, n) * a + (m_gridNodesCache(m - 1, n) + m_gridNodesCache(m + 1, n)) * 0.25 * b + + (m_gridNodesCache(m, n - 1) + m_gridNodesCache(m, n + 1)) * 0.25 * b; continue; } @@ -240,24 +240,24 @@ void CurvilinearGridSmoothing::ProjectPointOnClosestGridBoundary(Point const& po if (firstProjectedPointOnSegment && secondProjectedPointOnSegment && secondRatio > firstRatio) { - m_grid.m_gridNodes(m, n) = secondProjectedPoint; + m_grid.GetNode(m, n) = secondProjectedPoint; return; } if (firstProjectedPointOnSegment && secondProjectedPointOnSegment && secondRatio <= firstRatio) { - m_grid.m_gridNodes(m, n) = firstProjectedPoint; + m_grid.GetNode(m, n) = firstProjectedPoint; return; } if (firstProjectedPointOnSegment) { - m_grid.m_gridNodes(m, n) = firstProjectedPoint; + m_grid.GetNode(m, n) = firstProjectedPoint; return; } if (secondProjectedPointOnSegment) { - m_grid.m_gridNodes(m, n) = secondProjectedPoint; + m_grid.GetNode(m, n) = secondProjectedPoint; return; } - m_grid.m_gridNodes(m, n) = (firstProjectedPoint + secondProjectedPoint) * 0.5; + m_grid.GetNode(m, n) = (firstProjectedPoint + secondProjectedPoint) * 0.5; } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothness.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothness.cpp index 70270bde9..35f5136f3 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothness.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothness.cpp @@ -45,7 +45,7 @@ void meshkernel::CurvilinearGridSmoothness::Compute(const CurvilinearGrid& grid, { for (UInt j = 0; j < grid.NumN(); ++j) { - smoothness(i, j) = ComputeNodeSmoothness(grid.m_gridNodes(i - 1, j), grid.m_gridNodes(i, j), grid.m_gridNodes(i + 1, j)); + smoothness(i, j) = ComputeNodeSmoothness(grid.GetNode(i - 1, j), grid.GetNode(i, j), grid.GetNode(i + 1, j)); } } } @@ -55,7 +55,7 @@ void meshkernel::CurvilinearGridSmoothness::Compute(const CurvilinearGrid& grid, { for (UInt j = 1; j < grid.NumN() - 1; ++j) { - smoothness(i, j) = ComputeNodeSmoothness(grid.m_gridNodes(i, j - 1), grid.m_gridNodes(i, j), grid.m_gridNodes(i, j + 1)); + smoothness(i, j) = ComputeNodeSmoothness(grid.GetNode(i, j - 1), grid.GetNode(i, j), grid.GetNode(i, j + 1)); } } } diff --git a/libs/MeshKernel/src/Splines.cpp b/libs/MeshKernel/src/Splines.cpp index 905b4f3a0..ca80a3629 100644 --- a/libs/MeshKernel/src/Splines.cpp +++ b/libs/MeshKernel/src/Splines.cpp @@ -48,7 +48,7 @@ Splines::Splines(CurvilinearGrid const& grid) { for (UInt m = 0; m < grid.NumM(); ++m) { - mGridLines(n, m) = grid.m_gridNodes(m, n); + mGridLines(n, m) = grid.GetNode(m, n); } AddSpline(lin_alg::MatrixRowToSTLVector(mGridLines, n)); } diff --git a/libs/MeshKernel/tests/src/CurvilinearGridFromPolygonTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridFromPolygonTests.cpp index fe3a9018c..e93739184 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridFromPolygonTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridFromPolygonTests.cpp @@ -28,21 +28,21 @@ TEST(CurvilinearGridFromPolygon, ComputeGridInPolygonWithFourthSide) // check the values constexpr double tolerance = 1e-6; - ASSERT_NEAR(273.50231900000000, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(305.00253300000003, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(507.50378400000000, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); + ASSERT_NEAR(273.50231900000000, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(305.00253300000003, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(507.50378400000000, curvilinearGrid->GetNode(0, 2).x, tolerance); - ASSERT_NEAR(478.88043199999998, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(493.13061499999998, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(494.63061499999998, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); + ASSERT_NEAR(478.88043199999998, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(493.13061499999998, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(494.63061499999998, curvilinearGrid->GetNode(0, 2).y, tolerance); - ASSERT_NEAR(274.25231900000000, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(410.51616175207897, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(741.50524900000005, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); + ASSERT_NEAR(274.25231900000000, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(410.51616175207897, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(741.50524900000005, curvilinearGrid->GetNode(1, 2).x, tolerance); - ASSERT_NEAR(325.12890599999997, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(314.33420290273324, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(328.12893700000001, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); + ASSERT_NEAR(325.12890599999997, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(314.33420290273324, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(328.12893700000001, curvilinearGrid->GetNode(1, 2).y, tolerance); } TEST(CurvilinearGridFromPolygon, ComputeGridInPolygonWithoutFourthSide) @@ -67,21 +67,21 @@ TEST(CurvilinearGridFromPolygon, ComputeGridInPolygonWithoutFourthSide) // check the values constexpr double tolerance = 1e-6; - ASSERT_NEAR(273.50231900000000, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(492.12869250000006, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(710.75506600000006, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); + ASSERT_NEAR(273.50231900000000, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(492.12869250000006, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(710.75506600000006, curvilinearGrid->GetNode(0, 2).x, tolerance); - ASSERT_NEAR(478.88043199999998, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(484.88049300000000, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(490.88055400000002, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); + ASSERT_NEAR(478.88043199999998, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(484.88049300000000, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(490.88055400000002, curvilinearGrid->GetNode(0, 2).y, tolerance); - ASSERT_NEAR(274.25231900000000, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(481.37408996173241, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(741.50524900000005, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); + ASSERT_NEAR(274.25231900000000, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(481.37408996173241, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(741.50524900000005, curvilinearGrid->GetNode(1, 2).x, tolerance); - ASSERT_NEAR(325.12890599999997, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(322.93773596204318, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(328.12893700000001, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); + ASSERT_NEAR(325.12890599999997, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(322.93773596204318, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(328.12893700000001, curvilinearGrid->GetNode(1, 2).y, tolerance); } TEST(CurvilinearGridFromPolygon, ComputeGridTriangle) @@ -107,27 +107,27 @@ TEST(CurvilinearGridFromPolygon, ComputeGridTriangle) // check the values constexpr double tolerance = 1e-6; - ASSERT_NEAR(444.50479100000001, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(444.09570300000001, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(526.73339799999997, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(558.64300500000002, curvilinearGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(593.41625999999997, curvilinearGrid->m_gridNodes(0, 4).x, tolerance); - - ASSERT_NEAR(437.15594499999997, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(436.74685699999998, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(377.83657799999997, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(324.65368699999999, curvilinearGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(266.56158399999998, curvilinearGrid->m_gridNodes(0, 4).y, tolerance); - - ASSERT_NEAR(427.73178100000001, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(455.85723540740742, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(483.98268981481488, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(506.38081040740741, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(528.77893099999994, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - - ASSERT_NEAR(382.74575800000002, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(362.14685592592593, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(341.54795385185184, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(302.41837092592596, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(263.28878800000001, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); + ASSERT_NEAR(444.50479100000001, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(444.09570300000001, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(526.73339799999997, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(558.64300500000002, curvilinearGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(593.41625999999997, curvilinearGrid->GetNode(0, 4).x, tolerance); + + ASSERT_NEAR(437.15594499999997, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(436.74685699999998, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(377.83657799999997, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(324.65368699999999, curvilinearGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(266.56158399999998, curvilinearGrid->GetNode(0, 4).y, tolerance); + + ASSERT_NEAR(427.73178100000001, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(455.85723540740742, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(483.98268981481488, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(506.38081040740741, curvilinearGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(528.77893099999994, curvilinearGrid->GetNode(1, 4).x, tolerance); + + ASSERT_NEAR(382.74575800000002, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(362.14685592592593, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(341.54795385185184, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(302.41837092592596, curvilinearGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(263.28878800000001, curvilinearGrid->GetNode(1, 4).y, tolerance); } diff --git a/libs/MeshKernel/tests/src/CurvilinearGridFromSplinesTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridFromSplinesTests.cpp index 4b7a4964e..6472c8625 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridFromSplinesTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridFromSplinesTests.cpp @@ -156,37 +156,37 @@ TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshTwoCrossingCurvatureAd auto curviGrid = curvilinearGridFromSplines.Compute(); const double tolerance = 1e-6; - ASSERT_NEAR(588.14274314862507, curviGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(469.41412484972938, curviGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(366.68736858428133, curviGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(277.80579475635676, curviGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(200.90339412262884, curviGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(134.36565217535070, curviGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(76.795653489238660, curviGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(26.984754415671301, curviGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(-22.826144657896062, curviGrid->m_gridNodes(0, 8).x, tolerance); - ASSERT_NEAR(-78.994845354601750, curviGrid->m_gridNodes(0, 9).x, tolerance); - ASSERT_NEAR(-142.33284961942132, curviGrid->m_gridNodes(0, 10).x, tolerance); - ASSERT_NEAR(-213.75523850308639, curviGrid->m_gridNodes(0, 11).x, tolerance); - ASSERT_NEAR(-294.29389287118539, curviGrid->m_gridNodes(0, 12).x, tolerance); - ASSERT_NEAR(-385.11240158824154, curviGrid->m_gridNodes(0, 13).x, tolerance); - ASSERT_NEAR(-487.52287256398955, curviGrid->m_gridNodes(0, 14).x, tolerance); - - ASSERT_NEAR(278.61331701020396, curviGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(288.96871619915311, curviGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(297.92844792816703, curviGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(305.68061577714451, curviGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(312.38797132933286, curviGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(318.19133103205218, curviGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(323.21253254389961, curviGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(327.55699263496803, curviGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(331.90145272603644, curviGrid->m_gridNodes(0, 8).y, tolerance); - ASSERT_NEAR(336.80043433613747, curviGrid->m_gridNodes(0, 9).y, tolerance); - ASSERT_NEAR(342.32471590692433, curviGrid->m_gridNodes(0, 10).y, tolerance); - ASSERT_NEAR(348.55410995290555, curviGrid->m_gridNodes(0, 11).y, tolerance); - ASSERT_NEAR(355.57861615934416, curviGrid->m_gridNodes(0, 12).y, tolerance); - ASSERT_NEAR(363.49972166014766, curviGrid->m_gridNodes(0, 13).y, tolerance); - ASSERT_NEAR(372.43186728162192, curviGrid->m_gridNodes(0, 14).y, tolerance); + ASSERT_NEAR(588.14274314862507, curviGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(469.41412484972938, curviGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(366.68736858428133, curviGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(277.80579475635676, curviGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(200.90339412262884, curviGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(134.36565217535070, curviGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(76.795653489238660, curviGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(26.984754415671301, curviGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(-22.826144657896062, curviGrid->GetNode(0, 8).x, tolerance); + ASSERT_NEAR(-78.994845354601750, curviGrid->GetNode(0, 9).x, tolerance); + ASSERT_NEAR(-142.33284961942132, curviGrid->GetNode(0, 10).x, tolerance); + ASSERT_NEAR(-213.75523850308639, curviGrid->GetNode(0, 11).x, tolerance); + ASSERT_NEAR(-294.29389287118539, curviGrid->GetNode(0, 12).x, tolerance); + ASSERT_NEAR(-385.11240158824154, curviGrid->GetNode(0, 13).x, tolerance); + ASSERT_NEAR(-487.52287256398955, curviGrid->GetNode(0, 14).x, tolerance); + + ASSERT_NEAR(278.61331701020396, curviGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(288.96871619915311, curviGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(297.92844792816703, curviGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(305.68061577714451, curviGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(312.38797132933286, curviGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(318.19133103205218, curviGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(323.21253254389961, curviGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(327.55699263496803, curviGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(331.90145272603644, curviGrid->GetNode(0, 8).y, tolerance); + ASSERT_NEAR(336.80043433613747, curviGrid->GetNode(0, 9).y, tolerance); + ASSERT_NEAR(342.32471590692433, curviGrid->GetNode(0, 10).y, tolerance); + ASSERT_NEAR(348.55410995290555, curviGrid->GetNode(0, 11).y, tolerance); + ASSERT_NEAR(355.57861615934416, curviGrid->GetNode(0, 12).y, tolerance); + ASSERT_NEAR(363.49972166014766, curviGrid->GetNode(0, 13).y, tolerance); + ASSERT_NEAR(372.43186728162192, curviGrid->GetNode(0, 14).y, tolerance); } TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshTwoCrossingCurvatureNotAdapted) @@ -222,37 +222,37 @@ TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshTwoCrossingCurvatureNo const auto curviGrid = curvilinearGridFromSplines.Compute(); const double tolerance = 1e-6; - ASSERT_NEAR(548.64105210377159, curviGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(438.27011790167523, curviGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(342.77462390017541, curviGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(260.14970602195672, curviGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(188.66070933405891, curviGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(126.80677012682224, curviGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(73.289306283324080, curviGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(26.984754415671301, curviGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(-19.319797451981476, curviGrid->m_gridNodes(0, 8).x, tolerance); - ASSERT_NEAR(-71.534605117026189, curviGrid->m_gridNodes(0, 9).x, tolerance); - ASSERT_NEAR(-130.41404632812231, curviGrid->m_gridNodes(0, 10).x, tolerance); - ASSERT_NEAR(-196.80878667783674, curviGrid->m_gridNodes(0, 11).x, tolerance); - ASSERT_NEAR(-271.67806966408966, curviGrid->m_gridNodes(0, 12).x, tolerance); - ASSERT_NEAR(-356.10357543986055, curviGrid->m_gridNodes(0, 13).x, tolerance); - ASSERT_NEAR(-451.30504847658597, curviGrid->m_gridNodes(0, 14).x, tolerance); - - ASSERT_NEAR(115.02822097141149, curviGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(159.99460818323763, curviGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(198.90057007709373, curviGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(232.56291132224692, curviGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(261.68835027673492, curviGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(286.88835606699604, curviGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(308.69198597353653, curviGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(327.55699263496803, curviGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(346.42199929639952, curviGrid->m_gridNodes(0, 8).y, tolerance); - ASSERT_NEAR(367.69491210293836, curviGrid->m_gridNodes(0, 9).y, tolerance); - ASSERT_NEAR(391.68307322030449, curviGrid->m_gridNodes(0, 10).y, tolerance); - ASSERT_NEAR(418.73305358857078, curviGrid->m_gridNodes(0, 11).y, tolerance); - ASSERT_NEAR(449.23566003445961, curviGrid->m_gridNodes(0, 12).y, tolerance); - ASSERT_NEAR(483.63158148526736, curviGrid->m_gridNodes(0, 13).y, tolerance); - ASSERT_NEAR(522.41775585855908, curviGrid->m_gridNodes(0, 14).y, tolerance); + ASSERT_NEAR(548.64105210377159, curviGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(438.27011790167523, curviGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(342.77462390017541, curviGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(260.14970602195672, curviGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(188.66070933405891, curviGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(126.80677012682224, curviGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(73.289306283324080, curviGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(26.984754415671301, curviGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(-19.319797451981476, curviGrid->GetNode(0, 8).x, tolerance); + ASSERT_NEAR(-71.534605117026189, curviGrid->GetNode(0, 9).x, tolerance); + ASSERT_NEAR(-130.41404632812231, curviGrid->GetNode(0, 10).x, tolerance); + ASSERT_NEAR(-196.80878667783674, curviGrid->GetNode(0, 11).x, tolerance); + ASSERT_NEAR(-271.67806966408966, curviGrid->GetNode(0, 12).x, tolerance); + ASSERT_NEAR(-356.10357543986055, curviGrid->GetNode(0, 13).x, tolerance); + ASSERT_NEAR(-451.30504847658597, curviGrid->GetNode(0, 14).x, tolerance); + + ASSERT_NEAR(115.02822097141149, curviGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(159.99460818323763, curviGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(198.90057007709373, curviGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(232.56291132224692, curviGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(261.68835027673492, curviGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(286.88835606699604, curviGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(308.69198597353653, curviGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(327.55699263496803, curviGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(346.42199929639952, curviGrid->GetNode(0, 8).y, tolerance); + ASSERT_NEAR(367.69491210293836, curviGrid->GetNode(0, 9).y, tolerance); + ASSERT_NEAR(391.68307322030449, curviGrid->GetNode(0, 10).y, tolerance); + ASSERT_NEAR(418.73305358857078, curviGrid->GetNode(0, 11).y, tolerance); + ASSERT_NEAR(449.23566003445961, curviGrid->GetNode(0, 12).y, tolerance); + ASSERT_NEAR(483.63158148526736, curviGrid->GetNode(0, 13).y, tolerance); + ASSERT_NEAR(522.41775585855908, curviGrid->GetNode(0, 14).y, tolerance); } TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshTwoCrossingCurvatureAdaptedLargeMRefinement) @@ -290,69 +290,69 @@ TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshTwoCrossingCurvatureAd const auto curviGrid = curvilinearGridFromSplines.Compute(); const double tolerance = 1e-6; - ASSERT_NEAR(588.14274314862507, curviGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(469.41412484972938, curviGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(366.68736858428133, curviGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(277.80579475635676, curviGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(200.90339412262884, curviGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(134.36565217535070, curviGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(76.795653489238660, curviGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(26.984754415671301, curviGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(-22.826144657896062, curviGrid->m_gridNodes(0, 8).x, tolerance); - ASSERT_NEAR(-78.994845354601750, curviGrid->m_gridNodes(0, 9).x, tolerance); - ASSERT_NEAR(-142.33284961942132, curviGrid->m_gridNodes(0, 10).x, tolerance); - ASSERT_NEAR(-213.75523850308639, curviGrid->m_gridNodes(0, 11).x, tolerance); - ASSERT_NEAR(-294.29389287118539, curviGrid->m_gridNodes(0, 12).x, tolerance); - ASSERT_NEAR(-385.11240158824154, curviGrid->m_gridNodes(0, 13).x, tolerance); - ASSERT_NEAR(-487.52287256398955, curviGrid->m_gridNodes(0, 14).x, tolerance); - - ASSERT_NEAR(278.61331701020396, curviGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(288.96871619915311, curviGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(297.92844792816703, curviGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(305.68061577714451, curviGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(312.38797132933286, curviGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(318.19133103205218, curviGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(323.21253254389961, curviGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(327.55699263496803, curviGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(331.90145272603644, curviGrid->m_gridNodes(0, 8).y, tolerance); - ASSERT_NEAR(336.80043433613747, curviGrid->m_gridNodes(0, 9).y, tolerance); - ASSERT_NEAR(342.32471590692433, curviGrid->m_gridNodes(0, 10).y, tolerance); - ASSERT_NEAR(348.55410995290555, curviGrid->m_gridNodes(0, 11).y, tolerance); - ASSERT_NEAR(355.57861615934416, curviGrid->m_gridNodes(0, 12).y, tolerance); - ASSERT_NEAR(363.49972166014766, curviGrid->m_gridNodes(0, 13).y, tolerance); - ASSERT_NEAR(372.43186728162192, curviGrid->m_gridNodes(0, 14).y, tolerance); - - ASSERT_NEAR(589.75167441442306, curviGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(475.48540012613313, curviGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(375.29368253913503, curviGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(288.60548301452314, curviGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(213.60084073664558, curviGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(148.70508336617249, curviGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(92.555767846678634, curviGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(43.974076823189009, curviGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(-4.6076142003006169, curviGrid->m_gridNodes(1, 8).x, tolerance); - ASSERT_NEAR(-59.390212249936532, curviGrid->m_gridNodes(1, 9).x, tolerance); - ASSERT_NEAR(-121.16519343815622, curviGrid->m_gridNodes(1, 10).x, tolerance); - ASSERT_NEAR(-190.82505691062727, curviGrid->m_gridNodes(1, 11).x, tolerance); - ASSERT_NEAR(-269.37621930140858, curviGrid->m_gridNodes(1, 12).x, tolerance); - ASSERT_NEAR(-357.95355502043907, curviGrid->m_gridNodes(1, 13).x, tolerance); - ASSERT_NEAR(-457.83679244535881, curviGrid->m_gridNodes(1, 14).x, tolerance); - - ASSERT_NEAR(297.06033026778510, curviGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(358.57821282279917, curviGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(396.60313403748916, curviGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(429.50317843791038, curviGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(457.96906046928518, curviGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(482.59840230123029, curviGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(503.90828050581950, curviGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(522.34608173465415, curviGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(540.78388296348885, curviGrid->m_gridNodes(1, 8).y, tolerance); - ASSERT_NEAR(561.57506236376855, curviGrid->m_gridNodes(1, 9).y, tolerance); - ASSERT_NEAR(585.02000221801700, curviGrid->m_gridNodes(1, 10).y, tolerance); - ASSERT_NEAR(611.45742523221747, curviGrid->m_gridNodes(1, 11).y, tolerance); - ASSERT_NEAR(641.26928826009907, curviGrid->m_gridNodes(1, 12).y, tolerance); - ASSERT_NEAR(674.88630065634504, curviGrid->m_gridNodes(1, 13).y, tolerance); - ASSERT_NEAR(712.79414698558730, curviGrid->m_gridNodes(1, 14).y, tolerance); + ASSERT_NEAR(588.14274314862507, curviGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(469.41412484972938, curviGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(366.68736858428133, curviGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(277.80579475635676, curviGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(200.90339412262884, curviGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(134.36565217535070, curviGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(76.795653489238660, curviGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(26.984754415671301, curviGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(-22.826144657896062, curviGrid->GetNode(0, 8).x, tolerance); + ASSERT_NEAR(-78.994845354601750, curviGrid->GetNode(0, 9).x, tolerance); + ASSERT_NEAR(-142.33284961942132, curviGrid->GetNode(0, 10).x, tolerance); + ASSERT_NEAR(-213.75523850308639, curviGrid->GetNode(0, 11).x, tolerance); + ASSERT_NEAR(-294.29389287118539, curviGrid->GetNode(0, 12).x, tolerance); + ASSERT_NEAR(-385.11240158824154, curviGrid->GetNode(0, 13).x, tolerance); + ASSERT_NEAR(-487.52287256398955, curviGrid->GetNode(0, 14).x, tolerance); + + ASSERT_NEAR(278.61331701020396, curviGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(288.96871619915311, curviGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(297.92844792816703, curviGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(305.68061577714451, curviGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(312.38797132933286, curviGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(318.19133103205218, curviGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(323.21253254389961, curviGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(327.55699263496803, curviGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(331.90145272603644, curviGrid->GetNode(0, 8).y, tolerance); + ASSERT_NEAR(336.80043433613747, curviGrid->GetNode(0, 9).y, tolerance); + ASSERT_NEAR(342.32471590692433, curviGrid->GetNode(0, 10).y, tolerance); + ASSERT_NEAR(348.55410995290555, curviGrid->GetNode(0, 11).y, tolerance); + ASSERT_NEAR(355.57861615934416, curviGrid->GetNode(0, 12).y, tolerance); + ASSERT_NEAR(363.49972166014766, curviGrid->GetNode(0, 13).y, tolerance); + ASSERT_NEAR(372.43186728162192, curviGrid->GetNode(0, 14).y, tolerance); + + ASSERT_NEAR(589.75167441442306, curviGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(475.48540012613313, curviGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(375.29368253913503, curviGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(288.60548301452314, curviGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(213.60084073664558, curviGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(148.70508336617249, curviGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(92.555767846678634, curviGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(43.974076823189009, curviGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(-4.6076142003006169, curviGrid->GetNode(1, 8).x, tolerance); + ASSERT_NEAR(-59.390212249936532, curviGrid->GetNode(1, 9).x, tolerance); + ASSERT_NEAR(-121.16519343815622, curviGrid->GetNode(1, 10).x, tolerance); + ASSERT_NEAR(-190.82505691062727, curviGrid->GetNode(1, 11).x, tolerance); + ASSERT_NEAR(-269.37621930140858, curviGrid->GetNode(1, 12).x, tolerance); + ASSERT_NEAR(-357.95355502043907, curviGrid->GetNode(1, 13).x, tolerance); + ASSERT_NEAR(-457.83679244535881, curviGrid->GetNode(1, 14).x, tolerance); + + ASSERT_NEAR(297.06033026778510, curviGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(358.57821282279917, curviGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(396.60313403748916, curviGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(429.50317843791038, curviGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(457.96906046928518, curviGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(482.59840230123029, curviGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(503.90828050581950, curviGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(522.34608173465415, curviGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(540.78388296348885, curviGrid->GetNode(1, 8).y, tolerance); + ASSERT_NEAR(561.57506236376855, curviGrid->GetNode(1, 9).y, tolerance); + ASSERT_NEAR(585.02000221801700, curviGrid->GetNode(1, 10).y, tolerance); + ASSERT_NEAR(611.45742523221747, curviGrid->GetNode(1, 11).y, tolerance); + ASSERT_NEAR(641.26928826009907, curviGrid->GetNode(1, 12).y, tolerance); + ASSERT_NEAR(674.88630065634504, curviGrid->GetNode(1, 13).y, tolerance); + ASSERT_NEAR(712.79414698558730, curviGrid->GetNode(1, 14).y, tolerance); } TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshFourSplineCrossingFront) @@ -401,59 +401,59 @@ TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshFourSplineCrossingFron const auto curviGrid = curvilinearGridFromSplines.Compute(); const double tolerance = 1e-6; - ASSERT_NEAR(100.52954683251164, curviGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(53.257591250608634, curviGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(5.1909985476910663, curviGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(-43.683589051402279, curviGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(-93.379753864774997, curviGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(-143.07591867814773, curviGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(-199.56653306317651, curviGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(-263.78053278694000, curviGrid->m_gridNodes(0, 7).x, tolerance); - - ASSERT_NEAR(210.24345077714435, curviGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(215.47871920476678, curviGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(220.80199200157290, curviGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(226.21474851271995, curviGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(231.71849295101799, curviGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(237.22223738931604, curviGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(243.47845265069932, curviGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(250.59001639344984, curviGrid->m_gridNodes(0, 7).y, tolerance); - - ASSERT_NEAR(125.95663927357324, curviGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(87.191079979748508, curviGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(46.912312421706382, curviGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(-0.21122329512429161, curviGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(-47.914454551477142, curviGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(-95.617685807829986, curviGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(-149.56437809547685, curviGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(-210.56103370149361, curviGrid->m_gridNodes(1, 7).x, tolerance); - - ASSERT_NEAR(439.83786433363935, curviGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(521.88179941347357, curviGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(597.52538709342150, curviGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(618.74929979346371, curviGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(642.24827559144808, curviGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(665.74725138943245, curviGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(694.97385948812678, curviGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(731.13649297609936, curviGrid->m_gridNodes(1, 7).y, tolerance); - - ASSERT_NEAR(125.95663927357324, curviGrid->m_gridNodes(2, 0).x, tolerance); - ASSERT_NEAR(87.191079979748508, curviGrid->m_gridNodes(2, 1).x, tolerance); - ASSERT_NEAR(53.136666853719120, curviGrid->m_gridNodes(2, 2).x, tolerance); - ASSERT_NEAR(48.869442121499411, curviGrid->m_gridNodes(2, 3).x, tolerance); - ASSERT_NEAR(44.963973598369989, curviGrid->m_gridNodes(2, 4).x, tolerance); - ASSERT_NEAR(41.058505075240568, curviGrid->m_gridNodes(2, 5).x, tolerance); - ASSERT_NEAR(37.375052143743041, curviGrid->m_gridNodes(2, 6).x, tolerance); - ASSERT_NEAR(34.121747416893278, curviGrid->m_gridNodes(2, 7).x, tolerance); - - ASSERT_NEAR(439.83786433363935, curviGrid->m_gridNodes(2, 0).y, tolerance); - ASSERT_NEAR(521.88179941347357, curviGrid->m_gridNodes(2, 1).y, tolerance); - ASSERT_NEAR(603.50877899861121, curviGrid->m_gridNodes(2, 2).y, tolerance); - ASSERT_NEAR(665.92991255625338, curviGrid->m_gridNodes(2, 3).y, tolerance); - ASSERT_NEAR(731.53111467598717, curviGrid->m_gridNodes(2, 4).y, tolerance); - ASSERT_NEAR(797.13231679572095, curviGrid->m_gridNodes(2, 5).y, tolerance); - ASSERT_NEAR(874.67633078399956, curviGrid->m_gridNodes(2, 6).y, tolerance); - ASSERT_NEAR(966.34690521633274, curviGrid->m_gridNodes(2, 7).y, tolerance); + ASSERT_NEAR(100.52954683251164, curviGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(53.257591250608634, curviGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(5.1909985476910663, curviGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(-43.683589051402279, curviGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(-93.379753864774997, curviGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(-143.07591867814773, curviGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(-199.56653306317651, curviGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(-263.78053278694000, curviGrid->GetNode(0, 7).x, tolerance); + + ASSERT_NEAR(210.24345077714435, curviGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(215.47871920476678, curviGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(220.80199200157290, curviGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(226.21474851271995, curviGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(231.71849295101799, curviGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(237.22223738931604, curviGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(243.47845265069932, curviGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(250.59001639344984, curviGrid->GetNode(0, 7).y, tolerance); + + ASSERT_NEAR(125.95663927357324, curviGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(87.191079979748508, curviGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(46.912312421706382, curviGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(-0.21122329512429161, curviGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(-47.914454551477142, curviGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(-95.617685807829986, curviGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(-149.56437809547685, curviGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(-210.56103370149361, curviGrid->GetNode(1, 7).x, tolerance); + + ASSERT_NEAR(439.83786433363935, curviGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(521.88179941347357, curviGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(597.52538709342150, curviGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(618.74929979346371, curviGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(642.24827559144808, curviGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(665.74725138943245, curviGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(694.97385948812678, curviGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(731.13649297609936, curviGrid->GetNode(1, 7).y, tolerance); + + ASSERT_NEAR(125.95663927357324, curviGrid->GetNode(2, 0).x, tolerance); + ASSERT_NEAR(87.191079979748508, curviGrid->GetNode(2, 1).x, tolerance); + ASSERT_NEAR(53.136666853719120, curviGrid->GetNode(2, 2).x, tolerance); + ASSERT_NEAR(48.869442121499411, curviGrid->GetNode(2, 3).x, tolerance); + ASSERT_NEAR(44.963973598369989, curviGrid->GetNode(2, 4).x, tolerance); + ASSERT_NEAR(41.058505075240568, curviGrid->GetNode(2, 5).x, tolerance); + ASSERT_NEAR(37.375052143743041, curviGrid->GetNode(2, 6).x, tolerance); + ASSERT_NEAR(34.121747416893278, curviGrid->GetNode(2, 7).x, tolerance); + + ASSERT_NEAR(439.83786433363935, curviGrid->GetNode(2, 0).y, tolerance); + ASSERT_NEAR(521.88179941347357, curviGrid->GetNode(2, 1).y, tolerance); + ASSERT_NEAR(603.50877899861121, curviGrid->GetNode(2, 2).y, tolerance); + ASSERT_NEAR(665.92991255625338, curviGrid->GetNode(2, 3).y, tolerance); + ASSERT_NEAR(731.53111467598717, curviGrid->GetNode(2, 4).y, tolerance); + ASSERT_NEAR(797.13231679572095, curviGrid->GetNode(2, 5).y, tolerance); + ASSERT_NEAR(874.67633078399956, curviGrid->GetNode(2, 6).y, tolerance); + ASSERT_NEAR(966.34690521633274, curviGrid->GetNode(2, 7).y, tolerance); } TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearGridFromSplineWithSevenSplies) { @@ -518,99 +518,99 @@ TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearGridFromSplineWithSevenSpl const auto curviGrid = curvilinearGridFromSplines.Compute(); const double tolerance = 1e-6; - ASSERT_NEAR(318.51231173935355, curviGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(299.48353221639496, curviGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(282.44733906260205, curviGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(267.19252754998109, curviGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(253.53063723900343, curviGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(241.29345538457824, curviGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(230.33080196895105, curviGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(220.50856220652270, curviGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(211.70693763972625, curviGrid->m_gridNodes(0, 8).x, tolerance); - ASSERT_NEAR(203.81889090380005, curviGrid->m_gridNodes(0, 9).x, tolerance); - ASSERT_NEAR(196.74876236149268, curviGrid->m_gridNodes(0, 10).x, tolerance); - ASSERT_NEAR(190.41103939285921, curviGrid->m_gridNodes(0, 11).x, tolerance); - ASSERT_NEAR(184.72926128776140, curviGrid->m_gridNodes(0, 12).x, tolerance); - ASSERT_NEAR(179.63504461179019, curviGrid->m_gridNodes(0, 13).x, tolerance); - ASSERT_NEAR(174.54663336028344, curviGrid->m_gridNodes(0, 14).x, tolerance); - ASSERT_NEAR(169.46405577607990, curviGrid->m_gridNodes(0, 15).x, tolerance); - ASSERT_NEAR(164.38733961009973, curviGrid->m_gridNodes(0, 16).x, tolerance); - ASSERT_NEAR(159.31651210847537, curviGrid->m_gridNodes(0, 17).x, tolerance); - ASSERT_NEAR(154.25160000000000, curviGrid->m_gridNodes(0, 18).x, tolerance); - ASSERT_NEAR(149.31711800582937, curviGrid->m_gridNodes(0, 19).x, tolerance); - ASSERT_NEAR(144.38562161142110, curviGrid->m_gridNodes(0, 20).x, tolerance); - ASSERT_NEAR(139.45710784084523, curviGrid->m_gridNodes(0, 21).x, tolerance); - ASSERT_NEAR(134.53157358568254, curviGrid->m_gridNodes(0, 22).x, tolerance); - ASSERT_NEAR(129.60901561173370, curviGrid->m_gridNodes(0, 23).x, tolerance); - ASSERT_NEAR(124.68943056574528, curviGrid->m_gridNodes(0, 24).x, tolerance); - ASSERT_NEAR(119.26411278039352, curviGrid->m_gridNodes(0, 25).x, tolerance); - ASSERT_NEAR(113.33983596520923, curviGrid->m_gridNodes(0, 26).x, tolerance); - ASSERT_NEAR(106.94724906818072, curviGrid->m_gridNodes(0, 27).x, tolerance); - ASSERT_NEAR(100.15448186391468, curviGrid->m_gridNodes(0, 28).x, tolerance); - ASSERT_NEAR(93.085794486715571, curviGrid->m_gridNodes(0, 29).x, tolerance); - ASSERT_NEAR(85.945168726353714, curviGrid->m_gridNodes(0, 30).x, tolerance); - ASSERT_NEAR(79.042711413094352, curviGrid->m_gridNodes(0, 31).x, tolerance); - ASSERT_NEAR(72.818165313086013, curviGrid->m_gridNodes(0, 32).x, tolerance); - ASSERT_NEAR(67.850573321365587, curviGrid->m_gridNodes(0, 33).x, tolerance); - ASSERT_NEAR(64.836764457842776, curviGrid->m_gridNodes(0, 34).x, tolerance); - ASSERT_NEAR(64.515162424795946, curviGrid->m_gridNodes(0, 35).x, tolerance); - ASSERT_NEAR(67.506775188377858, curviGrid->m_gridNodes(0, 36).x, tolerance); - ASSERT_NEAR(74.607619951405468, curviGrid->m_gridNodes(0, 37).x, tolerance); - ASSERT_NEAR(84.055547192477718, curviGrid->m_gridNodes(0, 38).x, tolerance); - ASSERT_NEAR(96.661189343119005, curviGrid->m_gridNodes(0, 39).x, tolerance); - ASSERT_NEAR(111.19388303065054, curviGrid->m_gridNodes(0, 40).x, tolerance); - ASSERT_NEAR(130.07126718065518, curviGrid->m_gridNodes(0, 41).x, tolerance); - ASSERT_NEAR(151.46031591233805, curviGrid->m_gridNodes(0, 42).x, tolerance); - ASSERT_NEAR(176.73644628514995, curviGrid->m_gridNodes(0, 43).x, tolerance); - ASSERT_NEAR(207.42707538337629, curviGrid->m_gridNodes(0, 44).x, tolerance); - ASSERT_NEAR(241.61953469189427, curviGrid->m_gridNodes(0, 45).x, tolerance); - - ASSERT_NEAR(-32.907270623515025, curviGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(-20.681837507733704, curviGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(-9.6398276503176721, curviGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(0.32833495830444726, curviGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(9.3229308506649744, curviGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(17.435580744966774, curviGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(24.749870809921365, curviGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(31.341956888789504, curviGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(37.281141739253201, curviGrid->m_gridNodes(0, 8).y, tolerance); - ASSERT_NEAR(42.630422109756289, curviGrid->m_gridNodes(0, 9).y, tolerance); - ASSERT_NEAR(47.447004133801570, curviGrid->m_gridNodes(0, 10).y, tolerance); - ASSERT_NEAR(51.782786571790027, curviGrid->m_gridNodes(0, 11).y, tolerance); - ASSERT_NEAR(55.684812056743255, curviGrid->m_gridNodes(0, 12).y, tolerance); - ASSERT_NEAR(59.195686975419036, curviGrid->m_gridNodes(0, 13).y, tolerance); - ASSERT_NEAR(62.714970591706496, curviGrid->m_gridNodes(0, 14).y, tolerance); - ASSERT_NEAR(66.242673999999440, curviGrid->m_gridNodes(0, 15).y, tolerance); - ASSERT_NEAR(69.778807369430695, curviGrid->m_gridNodes(0, 16).y, tolerance); - ASSERT_NEAR(73.323379936765136, curviGrid->m_gridNodes(0, 17).y, tolerance); - ASSERT_NEAR(76.876400000000004, curviGrid->m_gridNodes(0, 18).y, tolerance); - ASSERT_NEAR(80.337923744434121, curviGrid->m_gridNodes(0, 19).y, tolerance); - ASSERT_NEAR(83.803699631016158, curviGrid->m_gridNodes(0, 20).y, tolerance); - ASSERT_NEAR(87.273715653647628, curviGrid->m_gridNodes(0, 21).y, tolerance); - ASSERT_NEAR(90.747959670019270, curviGrid->m_gridNodes(0, 22).y, tolerance); - ASSERT_NEAR(94.226419412087282, curviGrid->m_gridNodes(0, 23).y, tolerance); - ASSERT_NEAR(97.709082496475787, curviGrid->m_gridNodes(0, 24).y, tolerance); - ASSERT_NEAR(101.55670701883272, curviGrid->m_gridNodes(0, 25).y, tolerance); - ASSERT_NEAR(105.88904155040480, curviGrid->m_gridNodes(0, 26).y, tolerance); - ASSERT_NEAR(110.86139387022313, curviGrid->m_gridNodes(0, 27).y, tolerance); - ASSERT_NEAR(116.66849852789267, curviGrid->m_gridNodes(0, 28).y, tolerance); - ASSERT_NEAR(123.54448633755437, curviGrid->m_gridNodes(0, 29).y, tolerance); - ASSERT_NEAR(131.75553064619231, curviGrid->m_gridNodes(0, 30).y, tolerance); - ASSERT_NEAR(141.58081563533725, curviGrid->m_gridNodes(0, 31).y, tolerance); - ASSERT_NEAR(153.27757201630283, curviGrid->m_gridNodes(0, 32).y, tolerance); - ASSERT_NEAR(167.02858202611705, curviGrid->m_gridNodes(0, 33).y, tolerance); - ASSERT_NEAR(182.87812073196093, curviGrid->m_gridNodes(0, 34).y, tolerance); - ASSERT_NEAR(200.67802082725191, curviGrid->m_gridNodes(0, 35).y, tolerance); - ASSERT_NEAR(220.09368423101697, curviGrid->m_gridNodes(0, 36).y, tolerance); - ASSERT_NEAR(240.56147175543990, curviGrid->m_gridNodes(0, 37).y, tolerance); - ASSERT_NEAR(262.53677014280578, curviGrid->m_gridNodes(0, 38).y, tolerance); - ASSERT_NEAR(285.72723326832892, curviGrid->m_gridNodes(0, 39).y, tolerance); - ASSERT_NEAR(310.96873531044707, curviGrid->m_gridNodes(0, 40).y, tolerance); - ASSERT_NEAR(336.98028385317122, curviGrid->m_gridNodes(0, 41).y, tolerance); - ASSERT_NEAR(365.26582661002578, curviGrid->m_gridNodes(0, 42).y, tolerance); - ASSERT_NEAR(395.14268835984223, curviGrid->m_gridNodes(0, 43).y, tolerance); - ASSERT_NEAR(425.52204184241054, curviGrid->m_gridNodes(0, 44).y, tolerance); - ASSERT_NEAR(458.71059422143117, curviGrid->m_gridNodes(0, 45).y, tolerance); + ASSERT_NEAR(318.51231173935355, curviGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(299.48353221639496, curviGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(282.44733906260205, curviGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(267.19252754998109, curviGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(253.53063723900343, curviGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(241.29345538457824, curviGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(230.33080196895105, curviGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(220.50856220652270, curviGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(211.70693763972625, curviGrid->GetNode(0, 8).x, tolerance); + ASSERT_NEAR(203.81889090380005, curviGrid->GetNode(0, 9).x, tolerance); + ASSERT_NEAR(196.74876236149268, curviGrid->GetNode(0, 10).x, tolerance); + ASSERT_NEAR(190.41103939285921, curviGrid->GetNode(0, 11).x, tolerance); + ASSERT_NEAR(184.72926128776140, curviGrid->GetNode(0, 12).x, tolerance); + ASSERT_NEAR(179.63504461179019, curviGrid->GetNode(0, 13).x, tolerance); + ASSERT_NEAR(174.54663336028344, curviGrid->GetNode(0, 14).x, tolerance); + ASSERT_NEAR(169.46405577607990, curviGrid->GetNode(0, 15).x, tolerance); + ASSERT_NEAR(164.38733961009973, curviGrid->GetNode(0, 16).x, tolerance); + ASSERT_NEAR(159.31651210847537, curviGrid->GetNode(0, 17).x, tolerance); + ASSERT_NEAR(154.25160000000000, curviGrid->GetNode(0, 18).x, tolerance); + ASSERT_NEAR(149.31711800582937, curviGrid->GetNode(0, 19).x, tolerance); + ASSERT_NEAR(144.38562161142110, curviGrid->GetNode(0, 20).x, tolerance); + ASSERT_NEAR(139.45710784084523, curviGrid->GetNode(0, 21).x, tolerance); + ASSERT_NEAR(134.53157358568254, curviGrid->GetNode(0, 22).x, tolerance); + ASSERT_NEAR(129.60901561173370, curviGrid->GetNode(0, 23).x, tolerance); + ASSERT_NEAR(124.68943056574528, curviGrid->GetNode(0, 24).x, tolerance); + ASSERT_NEAR(119.26411278039352, curviGrid->GetNode(0, 25).x, tolerance); + ASSERT_NEAR(113.33983596520923, curviGrid->GetNode(0, 26).x, tolerance); + ASSERT_NEAR(106.94724906818072, curviGrid->GetNode(0, 27).x, tolerance); + ASSERT_NEAR(100.15448186391468, curviGrid->GetNode(0, 28).x, tolerance); + ASSERT_NEAR(93.085794486715571, curviGrid->GetNode(0, 29).x, tolerance); + ASSERT_NEAR(85.945168726353714, curviGrid->GetNode(0, 30).x, tolerance); + ASSERT_NEAR(79.042711413094352, curviGrid->GetNode(0, 31).x, tolerance); + ASSERT_NEAR(72.818165313086013, curviGrid->GetNode(0, 32).x, tolerance); + ASSERT_NEAR(67.850573321365587, curviGrid->GetNode(0, 33).x, tolerance); + ASSERT_NEAR(64.836764457842776, curviGrid->GetNode(0, 34).x, tolerance); + ASSERT_NEAR(64.515162424795946, curviGrid->GetNode(0, 35).x, tolerance); + ASSERT_NEAR(67.506775188377858, curviGrid->GetNode(0, 36).x, tolerance); + ASSERT_NEAR(74.607619951405468, curviGrid->GetNode(0, 37).x, tolerance); + ASSERT_NEAR(84.055547192477718, curviGrid->GetNode(0, 38).x, tolerance); + ASSERT_NEAR(96.661189343119005, curviGrid->GetNode(0, 39).x, tolerance); + ASSERT_NEAR(111.19388303065054, curviGrid->GetNode(0, 40).x, tolerance); + ASSERT_NEAR(130.07126718065518, curviGrid->GetNode(0, 41).x, tolerance); + ASSERT_NEAR(151.46031591233805, curviGrid->GetNode(0, 42).x, tolerance); + ASSERT_NEAR(176.73644628514995, curviGrid->GetNode(0, 43).x, tolerance); + ASSERT_NEAR(207.42707538337629, curviGrid->GetNode(0, 44).x, tolerance); + ASSERT_NEAR(241.61953469189427, curviGrid->GetNode(0, 45).x, tolerance); + + ASSERT_NEAR(-32.907270623515025, curviGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(-20.681837507733704, curviGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(-9.6398276503176721, curviGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(0.32833495830444726, curviGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(9.3229308506649744, curviGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(17.435580744966774, curviGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(24.749870809921365, curviGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(31.341956888789504, curviGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(37.281141739253201, curviGrid->GetNode(0, 8).y, tolerance); + ASSERT_NEAR(42.630422109756289, curviGrid->GetNode(0, 9).y, tolerance); + ASSERT_NEAR(47.447004133801570, curviGrid->GetNode(0, 10).y, tolerance); + ASSERT_NEAR(51.782786571790027, curviGrid->GetNode(0, 11).y, tolerance); + ASSERT_NEAR(55.684812056743255, curviGrid->GetNode(0, 12).y, tolerance); + ASSERT_NEAR(59.195686975419036, curviGrid->GetNode(0, 13).y, tolerance); + ASSERT_NEAR(62.714970591706496, curviGrid->GetNode(0, 14).y, tolerance); + ASSERT_NEAR(66.242673999999440, curviGrid->GetNode(0, 15).y, tolerance); + ASSERT_NEAR(69.778807369430695, curviGrid->GetNode(0, 16).y, tolerance); + ASSERT_NEAR(73.323379936765136, curviGrid->GetNode(0, 17).y, tolerance); + ASSERT_NEAR(76.876400000000004, curviGrid->GetNode(0, 18).y, tolerance); + ASSERT_NEAR(80.337923744434121, curviGrid->GetNode(0, 19).y, tolerance); + ASSERT_NEAR(83.803699631016158, curviGrid->GetNode(0, 20).y, tolerance); + ASSERT_NEAR(87.273715653647628, curviGrid->GetNode(0, 21).y, tolerance); + ASSERT_NEAR(90.747959670019270, curviGrid->GetNode(0, 22).y, tolerance); + ASSERT_NEAR(94.226419412087282, curviGrid->GetNode(0, 23).y, tolerance); + ASSERT_NEAR(97.709082496475787, curviGrid->GetNode(0, 24).y, tolerance); + ASSERT_NEAR(101.55670701883272, curviGrid->GetNode(0, 25).y, tolerance); + ASSERT_NEAR(105.88904155040480, curviGrid->GetNode(0, 26).y, tolerance); + ASSERT_NEAR(110.86139387022313, curviGrid->GetNode(0, 27).y, tolerance); + ASSERT_NEAR(116.66849852789267, curviGrid->GetNode(0, 28).y, tolerance); + ASSERT_NEAR(123.54448633755437, curviGrid->GetNode(0, 29).y, tolerance); + ASSERT_NEAR(131.75553064619231, curviGrid->GetNode(0, 30).y, tolerance); + ASSERT_NEAR(141.58081563533725, curviGrid->GetNode(0, 31).y, tolerance); + ASSERT_NEAR(153.27757201630283, curviGrid->GetNode(0, 32).y, tolerance); + ASSERT_NEAR(167.02858202611705, curviGrid->GetNode(0, 33).y, tolerance); + ASSERT_NEAR(182.87812073196093, curviGrid->GetNode(0, 34).y, tolerance); + ASSERT_NEAR(200.67802082725191, curviGrid->GetNode(0, 35).y, tolerance); + ASSERT_NEAR(220.09368423101697, curviGrid->GetNode(0, 36).y, tolerance); + ASSERT_NEAR(240.56147175543990, curviGrid->GetNode(0, 37).y, tolerance); + ASSERT_NEAR(262.53677014280578, curviGrid->GetNode(0, 38).y, tolerance); + ASSERT_NEAR(285.72723326832892, curviGrid->GetNode(0, 39).y, tolerance); + ASSERT_NEAR(310.96873531044707, curviGrid->GetNode(0, 40).y, tolerance); + ASSERT_NEAR(336.98028385317122, curviGrid->GetNode(0, 41).y, tolerance); + ASSERT_NEAR(365.26582661002578, curviGrid->GetNode(0, 42).y, tolerance); + ASSERT_NEAR(395.14268835984223, curviGrid->GetNode(0, 43).y, tolerance); + ASSERT_NEAR(425.52204184241054, curviGrid->GetNode(0, 44).y, tolerance); + ASSERT_NEAR(458.71059422143117, curviGrid->GetNode(0, 45).y, tolerance); } TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshTwoCrossingCurvatureAdaptedSpherical) @@ -650,51 +650,51 @@ TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshTwoCrossingCurvatureAd const double tolerance = 1e-6; - ASSERT_NEAR(41.099466896304122, curviGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(41.099108497593477, curviGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(41.098791358547970, curviGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(41.098510729263410, curviGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(41.098262406654840, curviGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(41.098042671505588, curviGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(41.097848232763340, curviGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(41.097676178248982, curviGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(41.097523931039888, curviGrid->m_gridNodes(0, 8).x, tolerance); - ASSERT_NEAR(41.097389210874489, curviGrid->m_gridNodes(0, 9).x, tolerance); - ASSERT_NEAR(41.097270000000002, curviGrid->m_gridNodes(0, 10).x, tolerance); - ASSERT_NEAR(41.097150789125514, curviGrid->m_gridNodes(0, 11).x, tolerance); - ASSERT_NEAR(41.097017310879082, curviGrid->m_gridNodes(0, 12).x, tolerance); - ASSERT_NEAR(41.096867857715743, curviGrid->m_gridNodes(0, 13).x, tolerance); - ASSERT_NEAR(41.096700517728394, curviGrid->m_gridNodes(0, 14).x, tolerance); - ASSERT_NEAR(41.096513150189345, curviGrid->m_gridNodes(0, 15).x, tolerance); - ASSERT_NEAR(41.096303358164640, curviGrid->m_gridNodes(0, 16).x, tolerance); - ASSERT_NEAR(41.096068457850762, curviGrid->m_gridNodes(0, 17).x, tolerance); - ASSERT_NEAR(41.095805444241556, curviGrid->m_gridNodes(0, 18).x, tolerance); - ASSERT_NEAR(41.095510952686034, curviGrid->m_gridNodes(0, 19).x, tolerance); - ASSERT_NEAR(41.095181215845365, curviGrid->m_gridNodes(0, 20).x, tolerance); - ASSERT_NEAR(41.094812015498384, curviGrid->m_gridNodes(0, 21).x, tolerance); - - ASSERT_NEAR(41.101732337816657, curviGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(41.101733590647953, curviGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(41.101734698311994, curviGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(41.101735677734105, curviGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(41.101736543840993, curviGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(41.101737309803312, curviGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(41.101737987246892, curviGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(41.101738586437314, curviGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(41.101739116441543, curviGrid->m_gridNodes(0, 8).y, tolerance); - ASSERT_NEAR(41.101739585269776, curviGrid->m_gridNodes(0, 9).y, tolerance); - ASSERT_NEAR(41.101739999999999, curviGrid->m_gridNodes(0, 10).y, tolerance); - ASSERT_NEAR(41.101740414730223, curviGrid->m_gridNodes(0, 11).y, tolerance); - ASSERT_NEAR(41.101740878961273, curviGrid->m_gridNodes(0, 12).y, tolerance); - ASSERT_NEAR(41.101741398583627, curviGrid->m_gridNodes(0, 13).y, tolerance); - ASSERT_NEAR(41.101741980184251, curviGrid->m_gridNodes(0, 14).y, tolerance); - ASSERT_NEAR(41.101742631127856, curviGrid->m_gridNodes(0, 15).y, tolerance); - ASSERT_NEAR(41.101743359647344, curviGrid->m_gridNodes(0, 16).y, tolerance); - ASSERT_NEAR(41.101744174944386, curviGrid->m_gridNodes(0, 17).y, tolerance); - ASSERT_NEAR(41.101745087301268, curviGrid->m_gridNodes(0, 18).y, tolerance); - ASSERT_NEAR(41.101746108205063, curviGrid->m_gridNodes(0, 19).y, tolerance); - ASSERT_NEAR(41.101747250485388, curviGrid->m_gridNodes(0, 20).y, tolerance); - ASSERT_NEAR(41.101748528467041, curviGrid->m_gridNodes(0, 21).y, tolerance); + ASSERT_NEAR(41.099466896304122, curviGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(41.099108497593477, curviGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(41.098791358547970, curviGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(41.098510729263410, curviGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(41.098262406654840, curviGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(41.098042671505588, curviGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(41.097848232763340, curviGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(41.097676178248982, curviGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(41.097523931039888, curviGrid->GetNode(0, 8).x, tolerance); + ASSERT_NEAR(41.097389210874489, curviGrid->GetNode(0, 9).x, tolerance); + ASSERT_NEAR(41.097270000000002, curviGrid->GetNode(0, 10).x, tolerance); + ASSERT_NEAR(41.097150789125514, curviGrid->GetNode(0, 11).x, tolerance); + ASSERT_NEAR(41.097017310879082, curviGrid->GetNode(0, 12).x, tolerance); + ASSERT_NEAR(41.096867857715743, curviGrid->GetNode(0, 13).x, tolerance); + ASSERT_NEAR(41.096700517728394, curviGrid->GetNode(0, 14).x, tolerance); + ASSERT_NEAR(41.096513150189345, curviGrid->GetNode(0, 15).x, tolerance); + ASSERT_NEAR(41.096303358164640, curviGrid->GetNode(0, 16).x, tolerance); + ASSERT_NEAR(41.096068457850762, curviGrid->GetNode(0, 17).x, tolerance); + ASSERT_NEAR(41.095805444241556, curviGrid->GetNode(0, 18).x, tolerance); + ASSERT_NEAR(41.095510952686034, curviGrid->GetNode(0, 19).x, tolerance); + ASSERT_NEAR(41.095181215845365, curviGrid->GetNode(0, 20).x, tolerance); + ASSERT_NEAR(41.094812015498384, curviGrid->GetNode(0, 21).x, tolerance); + + ASSERT_NEAR(41.101732337816657, curviGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(41.101733590647953, curviGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(41.101734698311994, curviGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(41.101735677734105, curviGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(41.101736543840993, curviGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(41.101737309803312, curviGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(41.101737987246892, curviGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(41.101738586437314, curviGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(41.101739116441543, curviGrid->GetNode(0, 8).y, tolerance); + ASSERT_NEAR(41.101739585269776, curviGrid->GetNode(0, 9).y, tolerance); + ASSERT_NEAR(41.101739999999999, curviGrid->GetNode(0, 10).y, tolerance); + ASSERT_NEAR(41.101740414730223, curviGrid->GetNode(0, 11).y, tolerance); + ASSERT_NEAR(41.101740878961273, curviGrid->GetNode(0, 12).y, tolerance); + ASSERT_NEAR(41.101741398583627, curviGrid->GetNode(0, 13).y, tolerance); + ASSERT_NEAR(41.101741980184251, curviGrid->GetNode(0, 14).y, tolerance); + ASSERT_NEAR(41.101742631127856, curviGrid->GetNode(0, 15).y, tolerance); + ASSERT_NEAR(41.101743359647344, curviGrid->GetNode(0, 16).y, tolerance); + ASSERT_NEAR(41.101744174944386, curviGrid->GetNode(0, 17).y, tolerance); + ASSERT_NEAR(41.101745087301268, curviGrid->GetNode(0, 18).y, tolerance); + ASSERT_NEAR(41.101746108205063, curviGrid->GetNode(0, 19).y, tolerance); + ASSERT_NEAR(41.101747250485388, curviGrid->GetNode(0, 20).y, tolerance); + ASSERT_NEAR(41.101748528467041, curviGrid->GetNode(0, 21).y, tolerance); } TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshTwoCrossingHighCurvature) @@ -732,37 +732,37 @@ TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshTwoCrossingHighCurvatu const auto curviGrid = curvilinearGridFromSplines.Compute(); const double tolerance = 1e-6; - ASSERT_NEAR(189.31789918088032, curviGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(47.484543647183727, curviGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(-44.200527431510437, curviGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(-103.46833666491800, curviGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(-162.73614589832556, curviGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(-269.81491405451612, curviGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(-463.27343290566068, curviGrid->m_gridNodes(0, 6).x, tolerance); - - ASSERT_NEAR(466.77055774144100, curviGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(444.40739376403246, curviGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(429.95121544759934, curviGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(420.60633510206202, curviGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(411.26145475652470, curviGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(394.37811979088713, curviGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(363.87510755081644, curviGrid->m_gridNodes(0, 6).y, tolerance); - - ASSERT_NEAR(182.83836514269635, curviGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(37.276414715909084, curviGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(-55.730094345896688, curviGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(-115.85211826633454, curviGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(-175.97414218677238, curviGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(-284.59621450100786, curviGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(-480.84301100694080, curviGrid->m_gridNodes(1, 6).x, tolerance); - - ASSERT_NEAR(507.86555019683885, curviGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(509.15016368272256, curviGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(503.07490961581618, curviGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(499.14769447767401, curviGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(495.22047933953183, curviGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(488.12520511367825, curviGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(475.30621899521509, curviGrid->m_gridNodes(1, 6).y, tolerance); + ASSERT_NEAR(189.31789918088032, curviGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(47.484543647183727, curviGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(-44.200527431510437, curviGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(-103.46833666491800, curviGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(-162.73614589832556, curviGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(-269.81491405451612, curviGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(-463.27343290566068, curviGrid->GetNode(0, 6).x, tolerance); + + ASSERT_NEAR(466.77055774144100, curviGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(444.40739376403246, curviGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(429.95121544759934, curviGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(420.60633510206202, curviGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(411.26145475652470, curviGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(394.37811979088713, curviGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(363.87510755081644, curviGrid->GetNode(0, 6).y, tolerance); + + ASSERT_NEAR(182.83836514269635, curviGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(37.276414715909084, curviGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(-55.730094345896688, curviGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(-115.85211826633454, curviGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(-175.97414218677238, curviGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(-284.59621450100786, curviGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(-480.84301100694080, curviGrid->GetNode(1, 6).x, tolerance); + + ASSERT_NEAR(507.86555019683885, curviGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(509.15016368272256, curviGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(503.07490961581618, curviGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(499.14769447767401, curviGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(495.22047933953183, curviGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(488.12520511367825, curviGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(475.30621899521509, curviGrid->GetNode(1, 6).y, tolerance); } TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshTwoCrossingHighCurvatureRemoveSkinnyTriangles) @@ -800,53 +800,53 @@ TEST(CurvilinearGridFromSplines, OrthogonalCurvilinearMeshTwoCrossingHighCurvatu const auto curviGrid = curvilinearGridFromSplines.Compute(); const double tolerance = 1e-6; - ASSERT_NEAR(189.31789918088032, curviGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(47.484543647183727, curviGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(-44.200527431510437, curviGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(-103.46833666491800, curviGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(-162.73614589832556, curviGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(-269.81491405451612, curviGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(-463.27343290566068, curviGrid->m_gridNodes(0, 6).x, tolerance); - - ASSERT_NEAR(466.77055774144100, curviGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(444.40739376403246, curviGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(429.95121544759934, curviGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(420.60633510206202, curviGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(411.26145475652470, curviGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(394.37811979088713, curviGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(363.87510755081644, curviGrid->m_gridNodes(0, 6).y, tolerance); - - ASSERT_NEAR(182.83836514269635, curviGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(42.764508901802778, curviGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(-55.730094345896688, curviGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(-115.85211826633454, curviGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(-175.97414218677238, curviGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(-284.59621450100786, curviGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(-480.84301100694080, curviGrid->m_gridNodes(1, 6).x, tolerance); - - ASSERT_NEAR(507.86555019683885, curviGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(541.25047181337595, curviGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(503.07490961581618, curviGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(499.14769447767401, curviGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(495.22047933953183, curviGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(488.12520511367825, curviGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(475.30621899521509, curviGrid->m_gridNodes(1, 6).y, tolerance); - - ASSERT_NEAR(182.83836514269635, curviGrid->m_gridNodes(2, 0).x, tolerance); - ASSERT_NEAR(42.764508901802778, curviGrid->m_gridNodes(2, 1).x, tolerance); - ASSERT_NEAR(-54.662854941964767, curviGrid->m_gridNodes(2, 2).x, tolerance); - ASSERT_NEAR(-114.47739150129740, curviGrid->m_gridNodes(2, 3).x, tolerance); - ASSERT_NEAR(-174.29192806063003, curviGrid->m_gridNodes(2, 4).x, tolerance); - ASSERT_NEAR(-282.35846494548809, curviGrid->m_gridNodes(2, 5).x, tolerance); - ASSERT_NEAR(-477.60157917913409, curviGrid->m_gridNodes(2, 6).x, tolerance); - - ASSERT_NEAR(507.86555019683885, curviGrid->m_gridNodes(2, 0).y, tolerance); - ASSERT_NEAR(541.25047181337595, curviGrid->m_gridNodes(2, 1).y, tolerance); - ASSERT_NEAR(544.22653740080693, curviGrid->m_gridNodes(2, 2).y, tolerance); - ASSERT_NEAR(552.15571117238005, curviGrid->m_gridNodes(2, 3).y, tolerance); - ASSERT_NEAR(560.08488494395317, curviGrid->m_gridNodes(2, 4).y, tolerance); - ASSERT_NEAR(574.41047198586193, curviGrid->m_gridNodes(2, 5).y, tolerance); - ASSERT_NEAR(600.29241757154784, curviGrid->m_gridNodes(2, 6).y, tolerance); + ASSERT_NEAR(189.31789918088032, curviGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(47.484543647183727, curviGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(-44.200527431510437, curviGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(-103.46833666491800, curviGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(-162.73614589832556, curviGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(-269.81491405451612, curviGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(-463.27343290566068, curviGrid->GetNode(0, 6).x, tolerance); + + ASSERT_NEAR(466.77055774144100, curviGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(444.40739376403246, curviGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(429.95121544759934, curviGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(420.60633510206202, curviGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(411.26145475652470, curviGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(394.37811979088713, curviGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(363.87510755081644, curviGrid->GetNode(0, 6).y, tolerance); + + ASSERT_NEAR(182.83836514269635, curviGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(42.764508901802778, curviGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(-55.730094345896688, curviGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(-115.85211826633454, curviGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(-175.97414218677238, curviGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(-284.59621450100786, curviGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(-480.84301100694080, curviGrid->GetNode(1, 6).x, tolerance); + + ASSERT_NEAR(507.86555019683885, curviGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(541.25047181337595, curviGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(503.07490961581618, curviGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(499.14769447767401, curviGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(495.22047933953183, curviGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(488.12520511367825, curviGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(475.30621899521509, curviGrid->GetNode(1, 6).y, tolerance); + + ASSERT_NEAR(182.83836514269635, curviGrid->GetNode(2, 0).x, tolerance); + ASSERT_NEAR(42.764508901802778, curviGrid->GetNode(2, 1).x, tolerance); + ASSERT_NEAR(-54.662854941964767, curviGrid->GetNode(2, 2).x, tolerance); + ASSERT_NEAR(-114.47739150129740, curviGrid->GetNode(2, 3).x, tolerance); + ASSERT_NEAR(-174.29192806063003, curviGrid->GetNode(2, 4).x, tolerance); + ASSERT_NEAR(-282.35846494548809, curviGrid->GetNode(2, 5).x, tolerance); + ASSERT_NEAR(-477.60157917913409, curviGrid->GetNode(2, 6).x, tolerance); + + ASSERT_NEAR(507.86555019683885, curviGrid->GetNode(2, 0).y, tolerance); + ASSERT_NEAR(541.25047181337595, curviGrid->GetNode(2, 1).y, tolerance); + ASSERT_NEAR(544.22653740080693, curviGrid->GetNode(2, 2).y, tolerance); + ASSERT_NEAR(552.15571117238005, curviGrid->GetNode(2, 3).y, tolerance); + ASSERT_NEAR(560.08488494395317, curviGrid->GetNode(2, 4).y, tolerance); + ASSERT_NEAR(574.41047198586193, curviGrid->GetNode(2, 5).y, tolerance); + ASSERT_NEAR(600.29241757154784, curviGrid->GetNode(2, 6).y, tolerance); } TEST(CurvilinearGridFromSplines, Compute_ThreeLongitudinalSplinesTwoCrossingSplines_ShouldComputeMesh) { @@ -921,63 +921,63 @@ TEST(CurvilinearGridFromSplines, Compute_ThreeLongitudinalSplinesTwoCrossingSpli ASSERT_EQ(curviGrid->GetNumEdges(), 518); const double tolerance = 1e-6; - ASSERT_NEAR(76628.277886551819, curviGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(76791.455599638575, curviGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(76954.811639895925, curviGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(77118.281322492985, curviGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(77281.800000000003, curviGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(77456.012786563486, curviGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(77630.227785337833, curviGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(77804.442019475464, curviGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(77978.652474172515, curviGrid->m_gridNodes(0, 8).x, tolerance); - - ASSERT_NEAR(371425.60232370096, curviGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(371436.18997859408, curviGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(371443.52950145339, curviGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(371447.61941049609, curviGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(371448.46000000002, curviGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(371449.35556399345, curviGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(371449.53230994282, curviGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(371448.98672684340, curviGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(371447.71609262202, curviGrid->m_gridNodes(0, 8).y, tolerance); - - ASSERT_NEAR(76662.032448408805, curviGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(76817.286847389085, curviGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(76972.714709055581, curviGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(77128.255737655345, curviGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(77283.849613552913, curviGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(77456.417295877734, curviGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(77628.979126778970, curviGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(77801.533934459163, curviGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(77974.080718107303, curviGrid->m_gridNodes(1, 8).x, tolerance); - - ASSERT_NEAR(371028.00333830336, curviGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(371038.07689532253, curviGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(371045.06020822527, curviGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(371048.95174731233, curviGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(371049.75159831985, curviGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(371050.63870543620, curviGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(371050.81377420085, curviGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(371050.27338789281, curviGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(371049.01488794532, curviGrid->m_gridNodes(1, 8).y, tolerance); - - ASSERT_NEAR(76696.427555678631, curviGrid->m_gridNodes(2, 0).x, tolerance); - ASSERT_NEAR(76845.029240917880, curviGrid->m_gridNodes(2, 1).x, tolerance); - ASSERT_NEAR(76993.806439139778, curviGrid->m_gridNodes(2, 2).x, tolerance); - ASSERT_NEAR(77142.721409325459, curviGrid->m_gridNodes(2, 3).x, tolerance); - ASSERT_NEAR(77291.736508965405, curviGrid->m_gridNodes(2, 4).x, tolerance); - ASSERT_NEAR(77461.424214244718, curviGrid->m_gridNodes(2, 5).x, tolerance); - ASSERT_NEAR(77631.102117621107, curviGrid->m_gridNodes(2, 6).x, tolerance); - ASSERT_NEAR(77800.766971634963, curviGrid->m_gridNodes(2, 7).x, tolerance); - ASSERT_NEAR(77970.415790794781, curviGrid->m_gridNodes(2, 8).x, tolerance); - - ASSERT_NEAR(370641.72934693948, curviGrid->m_gridNodes(2, 0).y, tolerance); - ASSERT_NEAR(370652.41904621699, curviGrid->m_gridNodes(2, 1).y, tolerance); - ASSERT_NEAR(370660.58064652071, curviGrid->m_gridNodes(2, 2).y, tolerance); - ASSERT_NEAR(370666.20885042200, curviGrid->m_gridNodes(2, 3).y, tolerance); - ASSERT_NEAR(370669.29796934803, curviGrid->m_gridNodes(2, 4).y, tolerance); - ASSERT_NEAR(370672.81563637080, curviGrid->m_gridNodes(2, 5).y, tolerance); - ASSERT_NEAR(370675.06421111501, curviGrid->m_gridNodes(2, 6).y, tolerance); - ASSERT_NEAR(370676.02282016393, curviGrid->m_gridNodes(2, 7).y, tolerance); - ASSERT_NEAR(370675.67515379097, curviGrid->m_gridNodes(2, 8).y, tolerance); + ASSERT_NEAR(76628.277886551819, curviGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(76791.455599638575, curviGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(76954.811639895925, curviGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(77118.281322492985, curviGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(77281.800000000003, curviGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(77456.012786563486, curviGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(77630.227785337833, curviGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(77804.442019475464, curviGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(77978.652474172515, curviGrid->GetNode(0, 8).x, tolerance); + + ASSERT_NEAR(371425.60232370096, curviGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(371436.18997859408, curviGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(371443.52950145339, curviGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(371447.61941049609, curviGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(371448.46000000002, curviGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(371449.35556399345, curviGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(371449.53230994282, curviGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(371448.98672684340, curviGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(371447.71609262202, curviGrid->GetNode(0, 8).y, tolerance); + + ASSERT_NEAR(76662.032448408805, curviGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(76817.286847389085, curviGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(76972.714709055581, curviGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(77128.255737655345, curviGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(77283.849613552913, curviGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(77456.417295877734, curviGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(77628.979126778970, curviGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(77801.533934459163, curviGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(77974.080718107303, curviGrid->GetNode(1, 8).x, tolerance); + + ASSERT_NEAR(371028.00333830336, curviGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(371038.07689532253, curviGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(371045.06020822527, curviGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(371048.95174731233, curviGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(371049.75159831985, curviGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(371050.63870543620, curviGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(371050.81377420085, curviGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(371050.27338789281, curviGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(371049.01488794532, curviGrid->GetNode(1, 8).y, tolerance); + + ASSERT_NEAR(76696.427555678631, curviGrid->GetNode(2, 0).x, tolerance); + ASSERT_NEAR(76845.029240917880, curviGrid->GetNode(2, 1).x, tolerance); + ASSERT_NEAR(76993.806439139778, curviGrid->GetNode(2, 2).x, tolerance); + ASSERT_NEAR(77142.721409325459, curviGrid->GetNode(2, 3).x, tolerance); + ASSERT_NEAR(77291.736508965405, curviGrid->GetNode(2, 4).x, tolerance); + ASSERT_NEAR(77461.424214244718, curviGrid->GetNode(2, 5).x, tolerance); + ASSERT_NEAR(77631.102117621107, curviGrid->GetNode(2, 6).x, tolerance); + ASSERT_NEAR(77800.766971634963, curviGrid->GetNode(2, 7).x, tolerance); + ASSERT_NEAR(77970.415790794781, curviGrid->GetNode(2, 8).x, tolerance); + + ASSERT_NEAR(370641.72934693948, curviGrid->GetNode(2, 0).y, tolerance); + ASSERT_NEAR(370652.41904621699, curviGrid->GetNode(2, 1).y, tolerance); + ASSERT_NEAR(370660.58064652071, curviGrid->GetNode(2, 2).y, tolerance); + ASSERT_NEAR(370666.20885042200, curviGrid->GetNode(2, 3).y, tolerance); + ASSERT_NEAR(370669.29796934803, curviGrid->GetNode(2, 4).y, tolerance); + ASSERT_NEAR(370672.81563637080, curviGrid->GetNode(2, 5).y, tolerance); + ASSERT_NEAR(370675.06421111501, curviGrid->GetNode(2, 6).y, tolerance); + ASSERT_NEAR(370676.02282016393, curviGrid->GetNode(2, 7).y, tolerance); + ASSERT_NEAR(370675.67515379097, curviGrid->GetNode(2, 8).y, tolerance); } diff --git a/libs/MeshKernel/tests/src/CurvilinearGridFromSplinesTransfiniteTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridFromSplinesTransfiniteTests.cpp index 1f514e05f..692adab55 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridFromSplinesTransfiniteTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridFromSplinesTransfiniteTests.cpp @@ -73,53 +73,53 @@ TEST(CurvilinearGridFromSplinesTransfinite, FourSplines) // check the values constexpr double tolerance = 1e-6; - ASSERT_NEAR(244.84733455150598, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(240.03223719861575, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(235.21721587684686, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(230.40187707543339, curvilinearGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(225.58666038317327, curvilinearGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(220.77175891290770, curvilinearGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(215.95654192442103, curvilinearGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(211.14151904110099, curvilinearGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(206.32630377949152, curvilinearGrid->m_gridNodes(0, 8).x, tolerance); - ASSERT_NEAR(201.51108480926104, curvilinearGrid->m_gridNodes(0, 9).x, tolerance); - ASSERT_NEAR(196.69606411139034, curvilinearGrid->m_gridNodes(0, 10).x, tolerance); - - ASSERT_NEAR(10.946966348412502, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(16.292559955716278, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(21.638069155281958, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(26.983930812344244, curvilinearGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(32.329656907057121, curvilinearGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(37.675033050656793, curvilinearGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(43.020759474232527, curvilinearGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(48.366270407390992, curvilinearGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(53.711994913833436, curvilinearGrid->m_gridNodes(0, 8).y, tolerance); - ASSERT_NEAR(59.057723537488684, curvilinearGrid->m_gridNodes(0, 9).y, tolerance); - ASSERT_NEAR(64.403232044419184, curvilinearGrid->m_gridNodes(0, 10).y, tolerance); - - ASSERT_NEAR(263.67028430842242, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(259.11363739326902, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(254.53691267796933, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(249.93698634609487, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(245.31456069699095, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(240.66785332275725, curvilinearGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(235.99933187522288, curvilinearGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(231.30940727936030, curvilinearGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(226.60252865287427, curvilinearGrid->m_gridNodes(1, 8).x, tolerance); - ASSERT_NEAR(221.88022520931327, curvilinearGrid->m_gridNodes(1, 9).x, tolerance); - ASSERT_NEAR(217.14743651601677, curvilinearGrid->m_gridNodes(1, 10).x, tolerance); - - ASSERT_NEAR(34.264668045745267, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(39.307546170495868, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(44.379080332661857, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(49.481517460105827, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(54.613111211730796, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(59.775023214376127, curvilinearGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(64.963841851929189, curvilinearGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(70.178519042215470, curvilinearGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(75.413628528250186, curvilinearGrid->m_gridNodes(1, 8).y, tolerance); - ASSERT_NEAR(80.667056521594716, curvilinearGrid->m_gridNodes(1, 9).y, tolerance); - ASSERT_NEAR(85.932983124208747, curvilinearGrid->m_gridNodes(1, 10).y, tolerance); + ASSERT_NEAR(244.84733455150598, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(240.03223719861575, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(235.21721587684686, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(230.40187707543339, curvilinearGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(225.58666038317327, curvilinearGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(220.77175891290770, curvilinearGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(215.95654192442103, curvilinearGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(211.14151904110099, curvilinearGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(206.32630377949152, curvilinearGrid->GetNode(0, 8).x, tolerance); + ASSERT_NEAR(201.51108480926104, curvilinearGrid->GetNode(0, 9).x, tolerance); + ASSERT_NEAR(196.69606411139034, curvilinearGrid->GetNode(0, 10).x, tolerance); + + ASSERT_NEAR(10.946966348412502, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(16.292559955716278, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(21.638069155281958, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(26.983930812344244, curvilinearGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(32.329656907057121, curvilinearGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(37.675033050656793, curvilinearGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(43.020759474232527, curvilinearGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(48.366270407390992, curvilinearGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(53.711994913833436, curvilinearGrid->GetNode(0, 8).y, tolerance); + ASSERT_NEAR(59.057723537488684, curvilinearGrid->GetNode(0, 9).y, tolerance); + ASSERT_NEAR(64.403232044419184, curvilinearGrid->GetNode(0, 10).y, tolerance); + + ASSERT_NEAR(263.67028430842242, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(259.11363739326902, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(254.53691267796933, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(249.93698634609487, curvilinearGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(245.31456069699095, curvilinearGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(240.66785332275725, curvilinearGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(235.99933187522288, curvilinearGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(231.30940727936030, curvilinearGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(226.60252865287427, curvilinearGrid->GetNode(1, 8).x, tolerance); + ASSERT_NEAR(221.88022520931327, curvilinearGrid->GetNode(1, 9).x, tolerance); + ASSERT_NEAR(217.14743651601677, curvilinearGrid->GetNode(1, 10).x, tolerance); + + ASSERT_NEAR(34.264668045745267, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(39.307546170495868, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(44.379080332661857, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(49.481517460105827, curvilinearGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(54.613111211730796, curvilinearGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(59.775023214376127, curvilinearGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(64.963841851929189, curvilinearGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(70.178519042215470, curvilinearGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(75.413628528250186, curvilinearGrid->GetNode(1, 8).y, tolerance); + ASSERT_NEAR(80.667056521594716, curvilinearGrid->GetNode(1, 9).y, tolerance); + ASSERT_NEAR(85.932983124208747, curvilinearGrid->GetNode(1, 10).y, tolerance); } TEST(CurvilinearGridFromSplinesTransfinite, FourSplinesOneNSwapped) @@ -153,53 +153,53 @@ TEST(CurvilinearGridFromSplinesTransfinite, FourSplinesOneNSwapped) // check the values constexpr double tolerance = 1e-6; - ASSERT_NEAR(244.84733455150598, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(240.03223719861575, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(235.21721587684686, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(230.40187707543339, curvilinearGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(225.58666038317327, curvilinearGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(220.77175891290770, curvilinearGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(215.95654192442103, curvilinearGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(211.14151904110099, curvilinearGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(206.32630377949152, curvilinearGrid->m_gridNodes(0, 8).x, tolerance); - ASSERT_NEAR(201.51108480926104, curvilinearGrid->m_gridNodes(0, 9).x, tolerance); - ASSERT_NEAR(196.69606411139034, curvilinearGrid->m_gridNodes(0, 10).x, tolerance); - - ASSERT_NEAR(10.946966348412502, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(16.292559955716278, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(21.638069155281958, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(26.983930812344244, curvilinearGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(32.329656907057121, curvilinearGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(37.675033050656793, curvilinearGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(43.020759474232527, curvilinearGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(48.366270407390992, curvilinearGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(53.711994913833436, curvilinearGrid->m_gridNodes(0, 8).y, tolerance); - ASSERT_NEAR(59.057723537488684, curvilinearGrid->m_gridNodes(0, 9).y, tolerance); - ASSERT_NEAR(64.403232044419184, curvilinearGrid->m_gridNodes(0, 10).y, tolerance); - - ASSERT_NEAR(263.67028430842242, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(259.11363739326902, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(254.53691267796933, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(249.93698634609487, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(245.31456069699095, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(240.66785332275725, curvilinearGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(235.99933187522288, curvilinearGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(231.30940727936030, curvilinearGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(226.60252865287427, curvilinearGrid->m_gridNodes(1, 8).x, tolerance); - ASSERT_NEAR(221.88022520931327, curvilinearGrid->m_gridNodes(1, 9).x, tolerance); - ASSERT_NEAR(217.14743651601677, curvilinearGrid->m_gridNodes(1, 10).x, tolerance); - - ASSERT_NEAR(34.264668045745267, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(39.307546170495868, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(44.379080332661857, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(49.481517460105827, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(54.613111211730796, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(59.775023214376127, curvilinearGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(64.963841851929189, curvilinearGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(70.178519042215470, curvilinearGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(75.413628528250186, curvilinearGrid->m_gridNodes(1, 8).y, tolerance); - ASSERT_NEAR(80.667056521594716, curvilinearGrid->m_gridNodes(1, 9).y, tolerance); - ASSERT_NEAR(85.932983124208747, curvilinearGrid->m_gridNodes(1, 10).y, tolerance); + ASSERT_NEAR(244.84733455150598, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(240.03223719861575, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(235.21721587684686, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(230.40187707543339, curvilinearGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(225.58666038317327, curvilinearGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(220.77175891290770, curvilinearGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(215.95654192442103, curvilinearGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(211.14151904110099, curvilinearGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(206.32630377949152, curvilinearGrid->GetNode(0, 8).x, tolerance); + ASSERT_NEAR(201.51108480926104, curvilinearGrid->GetNode(0, 9).x, tolerance); + ASSERT_NEAR(196.69606411139034, curvilinearGrid->GetNode(0, 10).x, tolerance); + + ASSERT_NEAR(10.946966348412502, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(16.292559955716278, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(21.638069155281958, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(26.983930812344244, curvilinearGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(32.329656907057121, curvilinearGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(37.675033050656793, curvilinearGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(43.020759474232527, curvilinearGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(48.366270407390992, curvilinearGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(53.711994913833436, curvilinearGrid->GetNode(0, 8).y, tolerance); + ASSERT_NEAR(59.057723537488684, curvilinearGrid->GetNode(0, 9).y, tolerance); + ASSERT_NEAR(64.403232044419184, curvilinearGrid->GetNode(0, 10).y, tolerance); + + ASSERT_NEAR(263.67028430842242, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(259.11363739326902, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(254.53691267796933, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(249.93698634609487, curvilinearGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(245.31456069699095, curvilinearGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(240.66785332275725, curvilinearGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(235.99933187522288, curvilinearGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(231.30940727936030, curvilinearGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(226.60252865287427, curvilinearGrid->GetNode(1, 8).x, tolerance); + ASSERT_NEAR(221.88022520931327, curvilinearGrid->GetNode(1, 9).x, tolerance); + ASSERT_NEAR(217.14743651601677, curvilinearGrid->GetNode(1, 10).x, tolerance); + + ASSERT_NEAR(34.264668045745267, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(39.307546170495868, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(44.379080332661857, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(49.481517460105827, curvilinearGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(54.613111211730796, curvilinearGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(59.775023214376127, curvilinearGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(64.963841851929189, curvilinearGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(70.178519042215470, curvilinearGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(75.413628528250186, curvilinearGrid->GetNode(1, 8).y, tolerance); + ASSERT_NEAR(80.667056521594716, curvilinearGrid->GetNode(1, 9).y, tolerance); + ASSERT_NEAR(85.932983124208747, curvilinearGrid->GetNode(1, 10).y, tolerance); } TEST(CurvilinearGridFromSplinesTransfinite, FiveSplines) @@ -236,53 +236,53 @@ TEST(CurvilinearGridFromSplinesTransfinite, FiveSplines) const auto curvilinearGrid = curvilinearGridFromSplinesTransfinite.Compute(); constexpr double tolerance = 1e-6; - ASSERT_NEAR(244.84733455150598, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(240.03223719861575, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(235.21721587684686, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(230.40187707543339, curvilinearGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(225.58666038317327, curvilinearGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(220.77175891290770, curvilinearGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(215.95654192442103, curvilinearGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(211.14151904110099, curvilinearGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(206.32630377949152, curvilinearGrid->m_gridNodes(0, 8).x, tolerance); - ASSERT_NEAR(201.51108480926104, curvilinearGrid->m_gridNodes(0, 9).x, tolerance); - ASSERT_NEAR(196.69606411139034, curvilinearGrid->m_gridNodes(0, 10).x, tolerance); - - ASSERT_NEAR(10.946966348412502, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(16.292559955716278, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(21.638069155281958, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(26.983930812344244, curvilinearGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(32.329656907057121, curvilinearGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(37.675033050656793, curvilinearGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(43.020759474232527, curvilinearGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(48.366270407390992, curvilinearGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(53.711994913833436, curvilinearGrid->m_gridNodes(0, 8).y, tolerance); - ASSERT_NEAR(59.057723537488684, curvilinearGrid->m_gridNodes(0, 9).y, tolerance); - ASSERT_NEAR(64.403232044419184, curvilinearGrid->m_gridNodes(0, 10).y, tolerance); - - ASSERT_NEAR(255.89614293923407, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(251.26839070344425, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(246.62717589518911, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(241.96945582856105, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(237.29374836322307, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(232.59945837385263, curvilinearGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(227.88656387177011, curvilinearGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(223.15709488341233, curvilinearGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(218.41314240105709, curvilinearGrid->m_gridNodes(1, 8).x, tolerance); - ASSERT_NEAR(213.65762819876193, curvilinearGrid->m_gridNodes(1, 9).x, tolerance); - ASSERT_NEAR(208.89353710816445, curvilinearGrid->m_gridNodes(1, 10).x, tolerance); - - ASSERT_NEAR(24.731736741118521, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(29.842940652626876, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(34.982267945763468, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(40.148526703963910, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(45.340177298582923, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(50.555639961868344, curvilinearGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(55.793467784299104, curvilinearGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(61.050433278839293, curvilinearGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(66.323655962424397, curvilinearGrid->m_gridNodes(1, 8).y, tolerance); - ASSERT_NEAR(71.609593896396262, curvilinearGrid->m_gridNodes(1, 9).y, tolerance); - ASSERT_NEAR(76.904826220873304, curvilinearGrid->m_gridNodes(1, 10).y, tolerance); + ASSERT_NEAR(244.84733455150598, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(240.03223719861575, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(235.21721587684686, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(230.40187707543339, curvilinearGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(225.58666038317327, curvilinearGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(220.77175891290770, curvilinearGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(215.95654192442103, curvilinearGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(211.14151904110099, curvilinearGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(206.32630377949152, curvilinearGrid->GetNode(0, 8).x, tolerance); + ASSERT_NEAR(201.51108480926104, curvilinearGrid->GetNode(0, 9).x, tolerance); + ASSERT_NEAR(196.69606411139034, curvilinearGrid->GetNode(0, 10).x, tolerance); + + ASSERT_NEAR(10.946966348412502, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(16.292559955716278, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(21.638069155281958, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(26.983930812344244, curvilinearGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(32.329656907057121, curvilinearGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(37.675033050656793, curvilinearGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(43.020759474232527, curvilinearGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(48.366270407390992, curvilinearGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(53.711994913833436, curvilinearGrid->GetNode(0, 8).y, tolerance); + ASSERT_NEAR(59.057723537488684, curvilinearGrid->GetNode(0, 9).y, tolerance); + ASSERT_NEAR(64.403232044419184, curvilinearGrid->GetNode(0, 10).y, tolerance); + + ASSERT_NEAR(255.89614293923407, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(251.26839070344425, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(246.62717589518911, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(241.96945582856105, curvilinearGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(237.29374836322307, curvilinearGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(232.59945837385263, curvilinearGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(227.88656387177011, curvilinearGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(223.15709488341233, curvilinearGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(218.41314240105709, curvilinearGrid->GetNode(1, 8).x, tolerance); + ASSERT_NEAR(213.65762819876193, curvilinearGrid->GetNode(1, 9).x, tolerance); + ASSERT_NEAR(208.89353710816445, curvilinearGrid->GetNode(1, 10).x, tolerance); + + ASSERT_NEAR(24.731736741118521, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(29.842940652626876, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(34.982267945763468, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(40.148526703963910, curvilinearGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(45.340177298582923, curvilinearGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(50.555639961868344, curvilinearGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(55.793467784299104, curvilinearGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(61.050433278839293, curvilinearGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(66.323655962424397, curvilinearGrid->GetNode(1, 8).y, tolerance); + ASSERT_NEAR(71.609593896396262, curvilinearGrid->GetNode(1, 9).y, tolerance); + ASSERT_NEAR(76.904826220873304, curvilinearGrid->GetNode(1, 10).y, tolerance); } void TestCurvilinearGridFromSplines(const std::vector& firstSpline, diff --git a/libs/MeshKernel/tests/src/CurvilinearGridLineAttractionRepulsionTest.cpp b/libs/MeshKernel/tests/src/CurvilinearGridLineAttractionRepulsionTest.cpp index 844fd2340..ea22ba74c 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridLineAttractionRepulsionTest.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridLineAttractionRepulsionTest.cpp @@ -18,17 +18,17 @@ TEST(CurvilinearLineAttraction, Compute_OnMLine_ShouldAttractMLines) // Asserts constexpr double tolerance = 1e-6; - ASSERT_NEAR(80178.014482303217, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(80266.910680413363, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(80322.584162464715, curvilinearGrid->m_gridNodes(2, 2).x, tolerance); - ASSERT_NEAR(80350.500795549306, curvilinearGrid->m_gridNodes(3, 2).x, tolerance); - ASSERT_NEAR(80362.879671417410, curvilinearGrid->m_gridNodes(4, 2).x, tolerance); - - ASSERT_NEAR(367069.60110549850, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(366937.57246542675, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(366803.23746104678, curvilinearGrid->m_gridNodes(2, 2).y, tolerance); - ASSERT_NEAR(366683.98469820933, curvilinearGrid->m_gridNodes(3, 2).y, tolerance); - ASSERT_NEAR(366555.11052078847, curvilinearGrid->m_gridNodes(4, 2).y, tolerance); + ASSERT_NEAR(80178.014482303217, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(80266.910680413363, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(80322.584162464715, curvilinearGrid->GetNode(2, 2).x, tolerance); + ASSERT_NEAR(80350.500795549306, curvilinearGrid->GetNode(3, 2).x, tolerance); + ASSERT_NEAR(80362.879671417410, curvilinearGrid->GetNode(4, 2).x, tolerance); + + ASSERT_NEAR(367069.60110549850, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(366937.57246542675, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(366803.23746104678, curvilinearGrid->GetNode(2, 2).y, tolerance); + ASSERT_NEAR(366683.98469820933, curvilinearGrid->GetNode(3, 2).y, tolerance); + ASSERT_NEAR(366555.11052078847, curvilinearGrid->GetNode(4, 2).y, tolerance); } TEST(CurvilinearLineAttraction, Compute_OnNLine_ShouldAttractNLines) @@ -45,17 +45,17 @@ TEST(CurvilinearLineAttraction, Compute_OnNLine_ShouldAttractNLines) // Asserts constexpr double tolerance = 1e-6; - ASSERT_NEAR(80145.970831448722, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(80247.575117740766, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(80292.449108019704, curvilinearGrid->m_gridNodes(2, 2).x, tolerance); - ASSERT_NEAR(80316.537053694148, curvilinearGrid->m_gridNodes(3, 2).x, tolerance); - ASSERT_NEAR(80331.200564142913, curvilinearGrid->m_gridNodes(4, 2).x, tolerance); - - ASSERT_NEAR(367047.36276461056, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(366897.17707224732, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(366792.50812354451, curvilinearGrid->m_gridNodes(2, 2).y, tolerance); - ASSERT_NEAR(366703.03776077798, curvilinearGrid->m_gridNodes(3, 2).y, tolerance); - ASSERT_NEAR(366552.40947499714, curvilinearGrid->m_gridNodes(4, 2).y, tolerance); + ASSERT_NEAR(80145.970831448722, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(80247.575117740766, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(80292.449108019704, curvilinearGrid->GetNode(2, 2).x, tolerance); + ASSERT_NEAR(80316.537053694148, curvilinearGrid->GetNode(3, 2).x, tolerance); + ASSERT_NEAR(80331.200564142913, curvilinearGrid->GetNode(4, 2).x, tolerance); + + ASSERT_NEAR(367047.36276461056, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(366897.17707224732, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(366792.50812354451, curvilinearGrid->GetNode(2, 2).y, tolerance); + ASSERT_NEAR(366703.03776077798, curvilinearGrid->GetNode(3, 2).y, tolerance); + ASSERT_NEAR(366552.40947499714, curvilinearGrid->GetNode(4, 2).y, tolerance); } TEST(CurvilinearLineRepulsion, Compute_OnMLine_ShouldRepulseMLines) @@ -72,17 +72,17 @@ TEST(CurvilinearLineRepulsion, Compute_OnMLine_ShouldRepulseMLines) // Asserts const double tolerance = 1e-6; - ASSERT_NEAR(80113.927180594226, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(80202.937709587452, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(80262.314053574693, curvilinearGrid->m_gridNodes(2, 2).x, tolerance); - ASSERT_NEAR(80290.291966405988, curvilinearGrid->m_gridNodes(3, 2).x, tolerance); - ASSERT_NEAR(80299.521456868417, curvilinearGrid->m_gridNodes(4, 2).x, tolerance); - - ASSERT_NEAR(367025.12442372262, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(366900.80385695840, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(366781.77878604224, curvilinearGrid->m_gridNodes(2, 2).y, tolerance); - ASSERT_NEAR(366674.26710998092, curvilinearGrid->m_gridNodes(3, 2).y, tolerance); - ASSERT_NEAR(366549.70842920581, curvilinearGrid->m_gridNodes(4, 2).y, tolerance); + ASSERT_NEAR(80113.927180594226, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(80202.937709587452, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(80262.314053574693, curvilinearGrid->GetNode(2, 2).x, tolerance); + ASSERT_NEAR(80290.291966405988, curvilinearGrid->GetNode(3, 2).x, tolerance); + ASSERT_NEAR(80299.521456868417, curvilinearGrid->GetNode(4, 2).x, tolerance); + + ASSERT_NEAR(367025.12442372262, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(366900.80385695840, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(366781.77878604224, curvilinearGrid->GetNode(2, 2).y, tolerance); + ASSERT_NEAR(366674.26710998092, curvilinearGrid->GetNode(3, 2).y, tolerance); + ASSERT_NEAR(366549.70842920581, curvilinearGrid->GetNode(4, 2).y, tolerance); } TEST(CurvilinearLineRepulsion, Compute_OnNLine_ShouldRepulseNLines) @@ -99,15 +99,15 @@ TEST(CurvilinearLineRepulsion, Compute_OnNLine_ShouldRepulseNLines) // Asserts const double tolerance = 1e-6; - ASSERT_NEAR(80145.970831448722, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(80222.273272260049, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(80292.449108019704, curvilinearGrid->m_gridNodes(2, 2).x, tolerance); - ASSERT_NEAR(80324.255708261146, curvilinearGrid->m_gridNodes(3, 2).x, tolerance); - ASSERT_NEAR(80331.200564142913, curvilinearGrid->m_gridNodes(4, 2).x, tolerance); - - ASSERT_NEAR(367047.36276461056, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(366941.19925013784, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(366792.50812354451, curvilinearGrid->m_gridNodes(2, 2).y, tolerance); - ASSERT_NEAR(366655.21404741227, curvilinearGrid->m_gridNodes(3, 2).y, tolerance); - ASSERT_NEAR(366552.40947499714, curvilinearGrid->m_gridNodes(4, 2).y, tolerance); + ASSERT_NEAR(80145.970831448722, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(80222.273272260049, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(80292.449108019704, curvilinearGrid->GetNode(2, 2).x, tolerance); + ASSERT_NEAR(80324.255708261146, curvilinearGrid->GetNode(3, 2).x, tolerance); + ASSERT_NEAR(80331.200564142913, curvilinearGrid->GetNode(4, 2).x, tolerance); + + ASSERT_NEAR(367047.36276461056, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(366941.19925013784, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(366792.50812354451, curvilinearGrid->GetNode(2, 2).y, tolerance); + ASSERT_NEAR(366655.21404741227, curvilinearGrid->GetNode(3, 2).y, tolerance); + ASSERT_NEAR(366552.40947499714, curvilinearGrid->GetNode(4, 2).y, tolerance); } diff --git a/libs/MeshKernel/tests/src/CurvilinearGridLineShiftTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridLineShiftTests.cpp index 11af2413f..9f7469d70 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridLineShiftTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridLineShiftTests.cpp @@ -19,45 +19,45 @@ TEST(CurvilinearLineShift, Compute_OnMGridlineShiftingOneNode_ShouldShiftLine) // Asserts const double tolerance = 1e-6; - ASSERT_NEAR(79872.000000000000, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(80010.039799507853, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(80145.970831448722, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(80225.900042018140, curvilinearGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(80305.243756829266, curvilinearGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(80381.747982750283, curvilinearGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(80458.252208671300, curvilinearGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(80534.756434592317, curvilinearGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(80611.260660513333, curvilinearGrid->m_gridNodes(0, 8).x, tolerance); - - ASSERT_NEAR(79970.149644452977, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(80103.062377666603, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(80234.924195000407, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(80324.671765221428, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(80414.057391982613, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(80505.096476712482, curvilinearGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(80595.183339827883, curvilinearGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(80684.333994102650, curvilinearGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(80772.567299473958, curvilinearGrid->m_gridNodes(1, 8).x, tolerance); - - ASSERT_NEAR(366876.00000000000, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(366959.82623907487, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(367047.36276461056, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(367104.62934968271, curvilinearGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(367163.01691965276, curvilinearGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(367224.10904462705, curvilinearGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(367285.20116960135, curvilinearGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(367346.29329457565, curvilinearGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(367407.38541954994, curvilinearGrid->m_gridNodes(0, 8).y, tolerance); - - ASSERT_NEAR(366781.50715811126, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(366849.28921837400, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(366919.18816119258, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(366966.76979594346, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(367015.14849423966, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(367056.48898898275, curvilinearGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(367099.12347147451, curvilinearGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(367143.03018172452, curvilinearGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(367188.18349069095, curvilinearGrid->m_gridNodes(1, 8).y, tolerance); + ASSERT_NEAR(79872.000000000000, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(80010.039799507853, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(80145.970831448722, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(80225.900042018140, curvilinearGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(80305.243756829266, curvilinearGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(80381.747982750283, curvilinearGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(80458.252208671300, curvilinearGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(80534.756434592317, curvilinearGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(80611.260660513333, curvilinearGrid->GetNode(0, 8).x, tolerance); + + ASSERT_NEAR(79970.149644452977, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(80103.062377666603, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(80234.924195000407, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(80324.671765221428, curvilinearGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(80414.057391982613, curvilinearGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(80505.096476712482, curvilinearGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(80595.183339827883, curvilinearGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(80684.333994102650, curvilinearGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(80772.567299473958, curvilinearGrid->GetNode(1, 8).x, tolerance); + + ASSERT_NEAR(366876.00000000000, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(366959.82623907487, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(367047.36276461056, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(367104.62934968271, curvilinearGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(367163.01691965276, curvilinearGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(367224.10904462705, curvilinearGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(367285.20116960135, curvilinearGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(367346.29329457565, curvilinearGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(367407.38541954994, curvilinearGrid->GetNode(0, 8).y, tolerance); + + ASSERT_NEAR(366781.50715811126, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(366849.28921837400, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(366919.18816119258, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(366966.76979594346, curvilinearGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(367015.14849423966, curvilinearGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(367056.48898898275, curvilinearGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(367099.12347147451, curvilinearGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(367143.03018172452, curvilinearGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(367188.18349069095, curvilinearGrid->GetNode(1, 8).y, tolerance); } TEST(CurvilinearLineShift, Compute_OnMGridlineShiftingTwoNodes_ShouldShiftLine) @@ -78,43 +78,43 @@ TEST(CurvilinearLineShift, Compute_OnMGridlineShiftingTwoNodes_ShouldShiftLine) // Asserts const double tolerance = 1e-6; - ASSERT_NEAR(79872.000000000000, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(80010.039799507853, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(80145.970831448722, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(80225.900042018140, curvilinearGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(80305.243756829266, curvilinearGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(80381.747982750283, curvilinearGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(80458.252208671300, curvilinearGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(80534.756434592317, curvilinearGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(80611.260660513333, curvilinearGrid->m_gridNodes(0, 8).x, tolerance); - - ASSERT_NEAR(79932.000000000000, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(80084.035373914361, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(80234.924195000407, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(80324.671765221428, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(80414.057391982613, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(80505.096476712482, curvilinearGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(80595.183339827883, curvilinearGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(80684.333994102650, curvilinearGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(80772.567299473958, curvilinearGrid->m_gridNodes(1, 8).x, tolerance); - - ASSERT_NEAR(366876.00000000000, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(366959.82623907487, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(367047.36276461056, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(367104.62934968271, curvilinearGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(367163.01691965276, curvilinearGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(367224.10904462705, curvilinearGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(367285.20116960135, curvilinearGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(367346.29329457565, curvilinearGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(367407.38541954994, curvilinearGrid->m_gridNodes(0, 8).y, tolerance); - - ASSERT_NEAR(366773.00000000000, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(366844.82660636236, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(366919.18816119258, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(366966.76979594346, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(367015.14849423966, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(367056.48898898275, curvilinearGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(367099.12347147451, curvilinearGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(367143.03018172452, curvilinearGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(367188.18349069095, curvilinearGrid->m_gridNodes(1, 8).y, tolerance); + ASSERT_NEAR(79872.000000000000, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(80010.039799507853, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(80145.970831448722, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(80225.900042018140, curvilinearGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(80305.243756829266, curvilinearGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(80381.747982750283, curvilinearGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(80458.252208671300, curvilinearGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(80534.756434592317, curvilinearGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(80611.260660513333, curvilinearGrid->GetNode(0, 8).x, tolerance); + + ASSERT_NEAR(79932.000000000000, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(80084.035373914361, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(80234.924195000407, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(80324.671765221428, curvilinearGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(80414.057391982613, curvilinearGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(80505.096476712482, curvilinearGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(80595.183339827883, curvilinearGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(80684.333994102650, curvilinearGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(80772.567299473958, curvilinearGrid->GetNode(1, 8).x, tolerance); + + ASSERT_NEAR(366876.00000000000, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(366959.82623907487, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(367047.36276461056, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(367104.62934968271, curvilinearGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(367163.01691965276, curvilinearGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(367224.10904462705, curvilinearGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(367285.20116960135, curvilinearGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(367346.29329457565, curvilinearGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(367407.38541954994, curvilinearGrid->GetNode(0, 8).y, tolerance); + + ASSERT_NEAR(366773.00000000000, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(366844.82660636236, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(366919.18816119258, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(366966.76979594346, curvilinearGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(367015.14849423966, curvilinearGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(367056.48898898275, curvilinearGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(367099.12347147451, curvilinearGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(367143.03018172452, curvilinearGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(367188.18349069095, curvilinearGrid->GetNode(1, 8).y, tolerance); } diff --git a/libs/MeshKernel/tests/src/CurvilinearGridOrthogonalizationTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridOrthogonalizationTests.cpp index 639b00a6a..93e0823e3 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridOrthogonalizationTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridOrthogonalizationTests.cpp @@ -36,8 +36,8 @@ TEST(CurvilinearGridOrthogonalization, Compute_OnStronglyNonOrthogonalCurvilinea // Assert the moved nodes has moved towards its original location, making the grid more orthogonal constexpr double tolerance = 1e-6; - ASSERT_NEAR(11.841396536135521, curvilinearGrid.m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(18.158586078094562, curvilinearGrid.m_gridNodes(1, 2).y, tolerance); + ASSERT_NEAR(11.841396536135521, curvilinearGrid.GetNode(1, 2).x, tolerance); + ASSERT_NEAR(18.158586078094562, curvilinearGrid.GetNode(1, 2).y, tolerance); } TEST(CurvilinearGridOrthogonalization, Compute_OnOrthogonalCurvilinearGrid_ShouldNotModifyGrid) @@ -65,45 +65,45 @@ TEST(CurvilinearGridOrthogonalization, Compute_OnOrthogonalCurvilinearGrid_Shoul // Assert nodes are on the same location because the grid is already orthogonal constexpr double tolerance = 1e-6; - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 3).x, tolerance); - - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(1, 3).x, tolerance); - - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(2, 0).x, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(2, 1).x, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(2, 2).x, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(2, 3).x, tolerance); - - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(3, 0).x, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(3, 1).x, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(3, 2).x, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(3, 3).x, tolerance); - - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(0, 3).y, tolerance); - - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(1, 3).y, tolerance); - - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(2, 0).y, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(2, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(2, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(2, 3).y, tolerance); - - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(3, 0).y, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(3, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(3, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(3, 3).y, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 0).x, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 1).x, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 2).x, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 3).x, tolerance); + + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(1, 0).x, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(1, 1).x, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(1, 2).x, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(1, 3).x, tolerance); + + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(2, 0).x, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(2, 1).x, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(2, 2).x, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(2, 3).x, tolerance); + + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(3, 0).x, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(3, 1).x, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(3, 2).x, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(3, 3).x, tolerance); + + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 0).y, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(0, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(0, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(0, 3).y, tolerance); + + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(1, 0).y, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(1, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(1, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(1, 3).y, tolerance); + + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(2, 0).y, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(2, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(2, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(2, 3).y, tolerance); + + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(3, 0).y, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(3, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(3, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(3, 3).y, tolerance); } TEST(CurvilinearGridOrthogonalization, Compute_OnONonOrthogonalCurvilinearGrid_ShouldOrthogonalizeGrid) @@ -124,45 +124,45 @@ TEST(CurvilinearGridOrthogonalization, Compute_OnONonOrthogonalCurvilinearGrid_S // Assert constexpr double tolerance = 1e-6; - ASSERT_NEAR(79983.796374595549, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(80067.930920933941, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(80150.164245250286, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(80231.651392830841, curvilinearGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(80312.801762204603, curvilinearGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(80390.860703898958, curvilinearGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(80466.956631008565, curvilinearGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(80540.510527743099, curvilinearGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(80611.260660513333, curvilinearGrid->m_gridNodes(0, 8).x, tolerance); - - ASSERT_NEAR(80056.139417226193, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(80143.392341684361, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(80232.701973556381, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(80323.273756955823, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(80415.126141636414, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(80506.879117047443, curvilinearGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(80595.173874885382, curvilinearGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(80680.093103208215, curvilinearGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(80761.372120477128, curvilinearGrid->m_gridNodes(1, 8).x, tolerance); - - ASSERT_NEAR(366936.89538054139, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(366993.16520344437, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(367050.33461904334, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(367108.77222890750, curvilinearGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(367168.86295006215, curvilinearGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(367231.44573248079, curvilinearGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(367292.13654755038, curvilinearGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(367350.89140520856, curvilinearGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(367407.38541954994, curvilinearGrid->m_gridNodes(0, 8).y, tolerance); - - ASSERT_NEAR(366823.20595668437, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(366869.41001402331, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(366915.26601702173, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(366961.36595671845, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(367008.20690690872, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(367056.34885035310, curvilinearGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(367105.00611276925, curvilinearGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(367154.47604494903, curvilinearGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(367204.88319783867, curvilinearGrid->m_gridNodes(1, 8).y, tolerance); + ASSERT_NEAR(79983.796374595549, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(80067.930920933941, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(80150.164245250286, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(80231.651392830841, curvilinearGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(80312.801762204603, curvilinearGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(80390.860703898958, curvilinearGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(80466.956631008565, curvilinearGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(80540.510527743099, curvilinearGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(80611.260660513333, curvilinearGrid->GetNode(0, 8).x, tolerance); + + ASSERT_NEAR(80056.139417226193, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(80143.392341684361, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(80232.701973556381, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(80323.273756955823, curvilinearGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(80415.126141636414, curvilinearGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(80506.879117047443, curvilinearGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(80595.173874885382, curvilinearGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(80680.093103208215, curvilinearGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(80761.372120477128, curvilinearGrid->GetNode(1, 8).x, tolerance); + + ASSERT_NEAR(366936.89538054139, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(366993.16520344437, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(367050.33461904334, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(367108.77222890750, curvilinearGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(367168.86295006215, curvilinearGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(367231.44573248079, curvilinearGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(367292.13654755038, curvilinearGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(367350.89140520856, curvilinearGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(367407.38541954994, curvilinearGrid->GetNode(0, 8).y, tolerance); + + ASSERT_NEAR(366823.20595668437, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(366869.41001402331, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(366915.26601702173, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(366961.36595671845, curvilinearGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(367008.20690690872, curvilinearGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(367056.34885035310, curvilinearGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(367105.00611276925, curvilinearGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(367154.47604494903, curvilinearGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(367204.88319783867, curvilinearGrid->GetNode(1, 8).y, tolerance); } TEST(CurvilinearGridOrthogonalization, Compute_OnONonOrthogonalCurvilinearGridWithMissingElements_ShouldOrthogonalizeGrid) @@ -184,65 +184,65 @@ TEST(CurvilinearGridOrthogonalization, Compute_OnONonOrthogonalCurvilinearGridWi // Assert constexpr double tolerance = 1e-6; - EXPECT_NEAR(79983.796374595549, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - EXPECT_NEAR(80069.224277354806, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - EXPECT_NEAR(80152.817263131525, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - EXPECT_NEAR(80235.609244143387, curvilinearGrid->m_gridNodes(0, 3).x, tolerance); - EXPECT_NEAR(80317.466702245743, curvilinearGrid->m_gridNodes(0, 4).x, tolerance); - EXPECT_NEAR(80395.149908970227, curvilinearGrid->m_gridNodes(0, 5).x, tolerance); - EXPECT_NEAR(80470.021886679329, curvilinearGrid->m_gridNodes(0, 6).x, tolerance); - EXPECT_NEAR(80542.049673235932, curvilinearGrid->m_gridNodes(0, 7).x, tolerance); - EXPECT_NEAR(80611.260660513333, curvilinearGrid->m_gridNodes(0, 8).x, tolerance); - - EXPECT_NEAR(80055.199856352847, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - EXPECT_NEAR(80143.721071059583, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - EXPECT_NEAR(80234.545379411153, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - EXPECT_NEAR(80326.293574499403, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - EXPECT_NEAR(80418.809428865279, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - EXPECT_NEAR(80510.299874655640, curvilinearGrid->m_gridNodes(1, 5).x, tolerance); - EXPECT_NEAR(80597.036324757821, curvilinearGrid->m_gridNodes(1, 6).x, tolerance); - EXPECT_NEAR(80680.228401363493, curvilinearGrid->m_gridNodes(1, 7).x, tolerance); - EXPECT_NEAR(80759.822363775238, curvilinearGrid->m_gridNodes(1, 8).x, tolerance); - - EXPECT_NEAR(80104.514488846587, curvilinearGrid->m_gridNodes(2, 0).x, tolerance); - EXPECT_NEAR(80197.383420613070, curvilinearGrid->m_gridNodes(2, 1).x, tolerance); - EXPECT_NEAR(80292.449108019704, curvilinearGrid->m_gridNodes(2, 2).x, tolerance); - EXPECT_NEAR(80387.175475807715, curvilinearGrid->m_gridNodes(2, 3).x, tolerance); - EXPECT_NEAR(80480.608251576487, curvilinearGrid->m_gridNodes(2, 4).x, tolerance); - EXPECT_NEAR(80583.120607369667, curvilinearGrid->m_gridNodes(2, 5).x, tolerance); - EXPECT_NEAR(80682.512780448465, curvilinearGrid->m_gridNodes(2, 6).x, tolerance); - EXPECT_NEAR(80780.894620879248, curvilinearGrid->m_gridNodes(2, 7).x, tolerance); - EXPECT_NEAR(80877.580909293247, curvilinearGrid->m_gridNodes(2, 8).x, tolerance); - - EXPECT_NEAR(366936.89538054139, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - EXPECT_NEAR(366994.04511051433, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - EXPECT_NEAR(367052.21760805714, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - EXPECT_NEAR(367111.62432093697, curvilinearGrid->m_gridNodes(0, 3).y, tolerance); - EXPECT_NEAR(367172.50484630122, curvilinearGrid->m_gridNodes(0, 4).y, tolerance); - EXPECT_NEAR(367234.88964184484, curvilinearGrid->m_gridNodes(0, 5).y, tolerance); - EXPECT_NEAR(367294.58040378935, curvilinearGrid->m_gridNodes(0, 6).y, tolerance); - EXPECT_NEAR(367352.12121038162, curvilinearGrid->m_gridNodes(0, 7).y, tolerance); - EXPECT_NEAR(367407.38541954994, curvilinearGrid->m_gridNodes(0, 8).y, tolerance); - - EXPECT_NEAR(366824.95581170503, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - EXPECT_NEAR(366871.97091034410, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - EXPECT_NEAR(366918.90326042997, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - EXPECT_NEAR(366966.74273245712, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - EXPECT_NEAR(367014.95754932362, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); - EXPECT_NEAR(367062.00790467981, curvilinearGrid->m_gridNodes(1, 5).y, tolerance); - EXPECT_NEAR(367109.50790550862, curvilinearGrid->m_gridNodes(1, 6).y, tolerance); - EXPECT_NEAR(367157.80620957806, curvilinearGrid->m_gridNodes(1, 7).y, tolerance); - EXPECT_NEAR(367207.16259613103, curvilinearGrid->m_gridNodes(1, 8).y, tolerance); - - EXPECT_NEAR(366718.00768776325, curvilinearGrid->m_gridNodes(2, 0).y, tolerance); - EXPECT_NEAR(366755.34794646013, curvilinearGrid->m_gridNodes(2, 1).y, tolerance); - EXPECT_NEAR(366792.50812354451, curvilinearGrid->m_gridNodes(2, 2).y, tolerance); - EXPECT_NEAR(366832.52615748829, curvilinearGrid->m_gridNodes(2, 3).y, tolerance); - EXPECT_NEAR(366870.46128228144, curvilinearGrid->m_gridNodes(2, 4).y, tolerance); - EXPECT_NEAR(366891.62363194284, curvilinearGrid->m_gridNodes(2, 5).y, tolerance); - EXPECT_NEAR(366923.14004067366, curvilinearGrid->m_gridNodes(2, 6).y, tolerance); - EXPECT_NEAR(366957.61329611664, curvilinearGrid->m_gridNodes(2, 7).y, tolerance); - EXPECT_NEAR(366996.07892524434, curvilinearGrid->m_gridNodes(2, 8).y, tolerance); + EXPECT_NEAR(79983.796374595549, curvilinearGrid->GetNode(0, 0).x, tolerance); + EXPECT_NEAR(80069.224277354806, curvilinearGrid->GetNode(0, 1).x, tolerance); + EXPECT_NEAR(80152.817263131525, curvilinearGrid->GetNode(0, 2).x, tolerance); + EXPECT_NEAR(80235.609244143387, curvilinearGrid->GetNode(0, 3).x, tolerance); + EXPECT_NEAR(80317.466702245743, curvilinearGrid->GetNode(0, 4).x, tolerance); + EXPECT_NEAR(80395.149908970227, curvilinearGrid->GetNode(0, 5).x, tolerance); + EXPECT_NEAR(80470.021886679329, curvilinearGrid->GetNode(0, 6).x, tolerance); + EXPECT_NEAR(80542.049673235932, curvilinearGrid->GetNode(0, 7).x, tolerance); + EXPECT_NEAR(80611.260660513333, curvilinearGrid->GetNode(0, 8).x, tolerance); + + EXPECT_NEAR(80055.199856352847, curvilinearGrid->GetNode(1, 0).x, tolerance); + EXPECT_NEAR(80143.721071059583, curvilinearGrid->GetNode(1, 1).x, tolerance); + EXPECT_NEAR(80234.545379411153, curvilinearGrid->GetNode(1, 2).x, tolerance); + EXPECT_NEAR(80326.293574499403, curvilinearGrid->GetNode(1, 3).x, tolerance); + EXPECT_NEAR(80418.809428865279, curvilinearGrid->GetNode(1, 4).x, tolerance); + EXPECT_NEAR(80510.299874655640, curvilinearGrid->GetNode(1, 5).x, tolerance); + EXPECT_NEAR(80597.036324757821, curvilinearGrid->GetNode(1, 6).x, tolerance); + EXPECT_NEAR(80680.228401363493, curvilinearGrid->GetNode(1, 7).x, tolerance); + EXPECT_NEAR(80759.822363775238, curvilinearGrid->GetNode(1, 8).x, tolerance); + + EXPECT_NEAR(80104.514488846587, curvilinearGrid->GetNode(2, 0).x, tolerance); + EXPECT_NEAR(80197.383420613070, curvilinearGrid->GetNode(2, 1).x, tolerance); + EXPECT_NEAR(80292.449108019704, curvilinearGrid->GetNode(2, 2).x, tolerance); + EXPECT_NEAR(80387.175475807715, curvilinearGrid->GetNode(2, 3).x, tolerance); + EXPECT_NEAR(80480.608251576487, curvilinearGrid->GetNode(2, 4).x, tolerance); + EXPECT_NEAR(80583.120607369667, curvilinearGrid->GetNode(2, 5).x, tolerance); + EXPECT_NEAR(80682.512780448465, curvilinearGrid->GetNode(2, 6).x, tolerance); + EXPECT_NEAR(80780.894620879248, curvilinearGrid->GetNode(2, 7).x, tolerance); + EXPECT_NEAR(80877.580909293247, curvilinearGrid->GetNode(2, 8).x, tolerance); + + EXPECT_NEAR(366936.89538054139, curvilinearGrid->GetNode(0, 0).y, tolerance); + EXPECT_NEAR(366994.04511051433, curvilinearGrid->GetNode(0, 1).y, tolerance); + EXPECT_NEAR(367052.21760805714, curvilinearGrid->GetNode(0, 2).y, tolerance); + EXPECT_NEAR(367111.62432093697, curvilinearGrid->GetNode(0, 3).y, tolerance); + EXPECT_NEAR(367172.50484630122, curvilinearGrid->GetNode(0, 4).y, tolerance); + EXPECT_NEAR(367234.88964184484, curvilinearGrid->GetNode(0, 5).y, tolerance); + EXPECT_NEAR(367294.58040378935, curvilinearGrid->GetNode(0, 6).y, tolerance); + EXPECT_NEAR(367352.12121038162, curvilinearGrid->GetNode(0, 7).y, tolerance); + EXPECT_NEAR(367407.38541954994, curvilinearGrid->GetNode(0, 8).y, tolerance); + + EXPECT_NEAR(366824.95581170503, curvilinearGrid->GetNode(1, 0).y, tolerance); + EXPECT_NEAR(366871.97091034410, curvilinearGrid->GetNode(1, 1).y, tolerance); + EXPECT_NEAR(366918.90326042997, curvilinearGrid->GetNode(1, 2).y, tolerance); + EXPECT_NEAR(366966.74273245712, curvilinearGrid->GetNode(1, 3).y, tolerance); + EXPECT_NEAR(367014.95754932362, curvilinearGrid->GetNode(1, 4).y, tolerance); + EXPECT_NEAR(367062.00790467981, curvilinearGrid->GetNode(1, 5).y, tolerance); + EXPECT_NEAR(367109.50790550862, curvilinearGrid->GetNode(1, 6).y, tolerance); + EXPECT_NEAR(367157.80620957806, curvilinearGrid->GetNode(1, 7).y, tolerance); + EXPECT_NEAR(367207.16259613103, curvilinearGrid->GetNode(1, 8).y, tolerance); + + EXPECT_NEAR(366718.00768776325, curvilinearGrid->GetNode(2, 0).y, tolerance); + EXPECT_NEAR(366755.34794646013, curvilinearGrid->GetNode(2, 1).y, tolerance); + EXPECT_NEAR(366792.50812354451, curvilinearGrid->GetNode(2, 2).y, tolerance); + EXPECT_NEAR(366832.52615748829, curvilinearGrid->GetNode(2, 3).y, tolerance); + EXPECT_NEAR(366870.46128228144, curvilinearGrid->GetNode(2, 4).y, tolerance); + EXPECT_NEAR(366891.62363194284, curvilinearGrid->GetNode(2, 5).y, tolerance); + EXPECT_NEAR(366923.14004067366, curvilinearGrid->GetNode(2, 6).y, tolerance); + EXPECT_NEAR(366957.61329611664, curvilinearGrid->GetNode(2, 7).y, tolerance); + EXPECT_NEAR(366996.07892524434, curvilinearGrid->GetNode(2, 8).y, tolerance); } TEST(CurvilinearGridOrthogonalization, SetFrozenLine_OnONonOrthogonalGrid_WithCrossingFrozenLines_ShouldThrowAnStdException) @@ -283,43 +283,43 @@ TEST(CurvilinearGridOrthogonalization, Compute_OnONonOrthogonalCurvilinearGridWi // Assert constexpr double tolerance = 1e-6; - ASSERT_NEAR(79983.796374595549, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(80069.479272425073, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(80153.235772058310, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(80234.211288098682, curvilinearGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(80314.661153602894, curvilinearGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(80392.150195938390, curvilinearGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(80467.771942028790, curvilinearGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(80540.898431866168, curvilinearGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(80611.260660513333, curvilinearGrid->m_gridNodes(0, 8).x, tolerance); - - ASSERT_NEAR(80055.196755132944, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(80143.960692327732, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(80234.924195000407, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(80324.849820521486, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(80416.240608373060, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(80507.596543850144, curvilinearGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(80595.526594976516, curvilinearGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(80680.087189144266, curvilinearGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(80760.998582117099, curvilinearGrid->m_gridNodes(1, 8).x, tolerance); - - ASSERT_NEAR(366936.89538054139, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(366994.21866791911, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(367052.51483841456, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(367110.61675055756, curvilinearGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(367170.31164987158, curvilinearGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(367232.48168405943, curvilinearGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(367292.78650072071, curvilinearGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(367351.20135266299, curvilinearGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(367407.38541954994, curvilinearGrid->m_gridNodes(0, 8).y, tolerance); - - ASSERT_NEAR(366824.96156769694, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(366872.12740536616, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(366919.18816119258, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(366964.42115637776, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(367010.41102564143, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(367057.91817534604, curvilinearGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(367106.12547266396, curvilinearGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(367155.26906854485, curvilinearGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(367205.43327878905, curvilinearGrid->m_gridNodes(1, 8).y, tolerance); + ASSERT_NEAR(79983.796374595549, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(80069.479272425073, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(80153.235772058310, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(80234.211288098682, curvilinearGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(80314.661153602894, curvilinearGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(80392.150195938390, curvilinearGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(80467.771942028790, curvilinearGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(80540.898431866168, curvilinearGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(80611.260660513333, curvilinearGrid->GetNode(0, 8).x, tolerance); + + ASSERT_NEAR(80055.196755132944, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(80143.960692327732, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(80234.924195000407, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(80324.849820521486, curvilinearGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(80416.240608373060, curvilinearGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(80507.596543850144, curvilinearGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(80595.526594976516, curvilinearGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(80680.087189144266, curvilinearGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(80760.998582117099, curvilinearGrid->GetNode(1, 8).x, tolerance); + + ASSERT_NEAR(366936.89538054139, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(366994.21866791911, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(367052.51483841456, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(367110.61675055756, curvilinearGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(367170.31164987158, curvilinearGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(367232.48168405943, curvilinearGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(367292.78650072071, curvilinearGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(367351.20135266299, curvilinearGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(367407.38541954994, curvilinearGrid->GetNode(0, 8).y, tolerance); + + ASSERT_NEAR(366824.96156769694, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(366872.12740536616, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(366919.18816119258, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(366964.42115637776, curvilinearGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(367010.41102564143, curvilinearGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(367057.91817534604, curvilinearGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(367106.12547266396, curvilinearGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(367155.26906854485, curvilinearGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(367205.43327878905, curvilinearGrid->GetNode(1, 8).y, tolerance); } diff --git a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp index 93c6fea2d..8314fc5db 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp @@ -129,13 +129,13 @@ TEST(CurvilinearGridUniformCurvilinearGridUniform, InsertFace_OnBottomLeft_Shoul // Assert the new coordinates constexpr double tolerance = 1e-12; - ASSERT_NEAR(79913.595823791460, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(79985.899758176762, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(-999.00000000000000, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); + ASSERT_NEAR(79913.595823791460, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(79985.899758176762, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(-999.00000000000000, curvilinearGrid->GetNode(0, 2).x, tolerance); - ASSERT_NEAR(367046.61206756550, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(367110.19327267300, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(-999.0000000000000, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); + ASSERT_NEAR(367046.61206756550, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(367110.19327267300, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(-999.0000000000000, curvilinearGrid->GetNode(0, 2).y, tolerance); } TEST(CurvilinearGridUniform, InsertFace_OnBottomRight_ShouldInsertFace) @@ -148,13 +148,13 @@ TEST(CurvilinearGridUniform, InsertFace_OnBottomRight_ShouldInsertFace) // Assert the new coordinates constexpr double tolerance = 1e-12; - ASSERT_NEAR(80176.237835892549, curvilinearGrid->m_gridNodes(5, 0).x, tolerance); - ASSERT_NEAR(80259.193944680519, curvilinearGrid->m_gridNodes(5, 1).x, tolerance); - ASSERT_NEAR(-999.0000000000000, curvilinearGrid->m_gridNodes(5, 2).x, tolerance); + ASSERT_NEAR(80176.237835892549, curvilinearGrid->GetNode(5, 0).x, tolerance); + ASSERT_NEAR(80259.193944680519, curvilinearGrid->GetNode(5, 1).x, tolerance); + ASSERT_NEAR(-999.0000000000000, curvilinearGrid->GetNode(5, 2).x, tolerance); - ASSERT_NEAR(366433.98982542212, curvilinearGrid->m_gridNodes(5, 0).y, tolerance); - ASSERT_NEAR(366433.75796857959, curvilinearGrid->m_gridNodes(5, 1).y, tolerance); - ASSERT_NEAR(-999.0000000000000, curvilinearGrid->m_gridNodes(5, 2).y, tolerance); + ASSERT_NEAR(366433.98982542212, curvilinearGrid->GetNode(5, 0).y, tolerance); + ASSERT_NEAR(366433.75796857959, curvilinearGrid->GetNode(5, 1).y, tolerance); + ASSERT_NEAR(-999.0000000000000, curvilinearGrid->GetNode(5, 2).y, tolerance); } TEST(CurvilinearGridUniform, InsertFace_OnTopLeft_ShouldInsertFace) @@ -167,13 +167,13 @@ TEST(CurvilinearGridUniform, InsertFace_OnTopLeft_ShouldInsertFace) // Assert the new coordinates constexpr double tolerance = 1e-12; - ASSERT_NEAR(-999.0000000000000, curvilinearGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(80385.178875081983, curvilinearGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(80449.954021552709, curvilinearGrid->m_gridNodes(0, 8).x, tolerance); + ASSERT_NEAR(-999.0000000000000, curvilinearGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(80385.178875081983, curvilinearGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(80449.954021552709, curvilinearGrid->GetNode(0, 8).x, tolerance); - ASSERT_NEAR(-999.0000000000000, curvilinearGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(367549.55640742677, curvilinearGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(367626.58734840894, curvilinearGrid->m_gridNodes(0, 8).y, tolerance); + ASSERT_NEAR(-999.0000000000000, curvilinearGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(367549.55640742677, curvilinearGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(367626.58734840894, curvilinearGrid->GetNode(0, 8).y, tolerance); } TEST(CurvilinearGridUniform, InsertFace_OnTopRight_ShouldInsertFace) @@ -186,13 +186,13 @@ TEST(CurvilinearGridUniform, InsertFace_OnTopRight_ShouldInsertFace) // Assert the new coordinates constexpr double tolerance = 1e-12; - ASSERT_NEAR(-999.0000000000000, curvilinearGrid->m_gridNodes(5, 6).x, tolerance); - ASSERT_NEAR(80846.719054016474, curvilinearGrid->m_gridNodes(5, 7).x, tolerance); - ASSERT_NEAR(80959.766315635425, curvilinearGrid->m_gridNodes(5, 8).x, tolerance); + ASSERT_NEAR(-999.0000000000000, curvilinearGrid->GetNode(5, 6).x, tolerance); + ASSERT_NEAR(80846.719054016474, curvilinearGrid->GetNode(5, 7).x, tolerance); + ASSERT_NEAR(80959.766315635425, curvilinearGrid->GetNode(5, 8).x, tolerance); - ASSERT_NEAR(-999.0000000000000, curvilinearGrid->m_gridNodes(5, 6).y, tolerance); - ASSERT_NEAR(366346.42989900074, curvilinearGrid->m_gridNodes(5, 7).y, tolerance); - ASSERT_NEAR(366327.01674911042, curvilinearGrid->m_gridNodes(5, 8).y, tolerance); + ASSERT_NEAR(-999.0000000000000, curvilinearGrid->GetNode(5, 6).y, tolerance); + ASSERT_NEAR(366346.42989900074, curvilinearGrid->GetNode(5, 7).y, tolerance); + ASSERT_NEAR(366327.01674911042, curvilinearGrid->GetNode(5, 8).y, tolerance); } TEST(CurvilinearGridUniform, InsertFace_OnGridWithHoles_ShouldInsertFace) @@ -205,25 +205,25 @@ TEST(CurvilinearGridUniform, InsertFace_OnGridWithHoles_ShouldInsertFace) // Assert the new coordinates constexpr double tolerance = 1e-12; - ASSERT_NEAR(80133.930743945661, curvilinearGrid->m_gridNodes(3, 0).x, tolerance); - ASSERT_NEAR(80226.579454943669, curvilinearGrid->m_gridNodes(3, 1).x, tolerance); - ASSERT_NEAR(80320.396380977647, curvilinearGrid->m_gridNodes(3, 2).x, tolerance); - ASSERT_NEAR(80447.108241179725, curvilinearGrid->m_gridNodes(3, 3).x, tolerance); - ASSERT_NEAR(80545.663179203286, curvilinearGrid->m_gridNodes(3, 4).x, tolerance); - ASSERT_NEAR(80623.151266424975, curvilinearGrid->m_gridNodes(3, 5).x, tolerance); - ASSERT_NEAR(80735.800935924854, curvilinearGrid->m_gridNodes(3, 6).x, tolerance); - ASSERT_NEAR(80848.959456291268, curvilinearGrid->m_gridNodes(3, 7).x, tolerance); - ASSERT_NEAR(80962.132385367571, curvilinearGrid->m_gridNodes(3, 8).x, tolerance); - - ASSERT_NEAR(366629.99913221149, curvilinearGrid->m_gridNodes(3, 0).y, tolerance); - ASSERT_NEAR(366656.00122676318, curvilinearGrid->m_gridNodes(3, 1).y, tolerance); - ASSERT_NEAR(366679.12590409513, curvilinearGrid->m_gridNodes(3, 2).y, tolerance); - ASSERT_NEAR(366697.14301043766, curvilinearGrid->m_gridNodes(3, 3).y, tolerance); - ASSERT_NEAR(366725.32926280121, curvilinearGrid->m_gridNodes(3, 4).y, tolerance); - ASSERT_NEAR(366718.43748113938, curvilinearGrid->m_gridNodes(3, 5).y, tolerance); - ASSERT_NEAR(366717.43216295895, curvilinearGrid->m_gridNodes(3, 6).y, tolerance); - ASSERT_NEAR(366716.74631036510, curvilinearGrid->m_gridNodes(3, 7).y, tolerance); - ASSERT_NEAR(366718.10475241451, curvilinearGrid->m_gridNodes(3, 8).y, tolerance); + ASSERT_NEAR(80133.930743945661, curvilinearGrid->GetNode(3, 0).x, tolerance); + ASSERT_NEAR(80226.579454943669, curvilinearGrid->GetNode(3, 1).x, tolerance); + ASSERT_NEAR(80320.396380977647, curvilinearGrid->GetNode(3, 2).x, tolerance); + ASSERT_NEAR(80447.108241179725, curvilinearGrid->GetNode(3, 3).x, tolerance); + ASSERT_NEAR(80545.663179203286, curvilinearGrid->GetNode(3, 4).x, tolerance); + ASSERT_NEAR(80623.151266424975, curvilinearGrid->GetNode(3, 5).x, tolerance); + ASSERT_NEAR(80735.800935924854, curvilinearGrid->GetNode(3, 6).x, tolerance); + ASSERT_NEAR(80848.959456291268, curvilinearGrid->GetNode(3, 7).x, tolerance); + ASSERT_NEAR(80962.132385367571, curvilinearGrid->GetNode(3, 8).x, tolerance); + + ASSERT_NEAR(366629.99913221149, curvilinearGrid->GetNode(3, 0).y, tolerance); + ASSERT_NEAR(366656.00122676318, curvilinearGrid->GetNode(3, 1).y, tolerance); + ASSERT_NEAR(366679.12590409513, curvilinearGrid->GetNode(3, 2).y, tolerance); + ASSERT_NEAR(366697.14301043766, curvilinearGrid->GetNode(3, 3).y, tolerance); + ASSERT_NEAR(366725.32926280121, curvilinearGrid->GetNode(3, 4).y, tolerance); + ASSERT_NEAR(366718.43748113938, curvilinearGrid->GetNode(3, 5).y, tolerance); + ASSERT_NEAR(366717.43216295895, curvilinearGrid->GetNode(3, 6).y, tolerance); + ASSERT_NEAR(366716.74631036510, curvilinearGrid->GetNode(3, 7).y, tolerance); + ASSERT_NEAR(366718.10475241451, curvilinearGrid->GetNode(3, 8).y, tolerance); } TEST(CurvilinearGridUniform, DeleteNode_OnUniformGrid_ShouldDeleteNode) diff --git a/libs/MeshKernel/tests/src/CurvilinearGridRefinementTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridRefinementTests.cpp index aecce477a..eda1e315a 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridRefinementTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridRefinementTests.cpp @@ -27,26 +27,26 @@ TEST(CurvilinearGridRefinement, Compute_OnCurvilinearGrid_ShouldRefine) ASSERT_EQ(4, curvilinearGrid.NumN()); constexpr double tolerance = 1e-12; - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(1, 0).x, tolerance); - - ASSERT_NEAR(11.0, curvilinearGrid.m_gridNodes(2, 0).x, tolerance); - ASSERT_NEAR(12.0, curvilinearGrid.m_gridNodes(3, 0).x, tolerance); - ASSERT_NEAR(13.0, curvilinearGrid.m_gridNodes(4, 0).x, tolerance); - ASSERT_NEAR(14.0, curvilinearGrid.m_gridNodes(5, 0).x, tolerance); - ASSERT_NEAR(15.0, curvilinearGrid.m_gridNodes(6, 0).x, tolerance); - ASSERT_NEAR(16.0, curvilinearGrid.m_gridNodes(7, 0).x, tolerance); - ASSERT_NEAR(17.0, curvilinearGrid.m_gridNodes(8, 0).x, tolerance); - ASSERT_NEAR(18.0, curvilinearGrid.m_gridNodes(9, 0).x, tolerance); - ASSERT_NEAR(19.0, curvilinearGrid.m_gridNodes(10, 0).x, tolerance); - - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(11, 0).x, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(12, 0).x, tolerance); - - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(0, 3).y, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 0).x, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(1, 0).x, tolerance); + + ASSERT_NEAR(11.0, curvilinearGrid.GetNode(2, 0).x, tolerance); + ASSERT_NEAR(12.0, curvilinearGrid.GetNode(3, 0).x, tolerance); + ASSERT_NEAR(13.0, curvilinearGrid.GetNode(4, 0).x, tolerance); + ASSERT_NEAR(14.0, curvilinearGrid.GetNode(5, 0).x, tolerance); + ASSERT_NEAR(15.0, curvilinearGrid.GetNode(6, 0).x, tolerance); + ASSERT_NEAR(16.0, curvilinearGrid.GetNode(7, 0).x, tolerance); + ASSERT_NEAR(17.0, curvilinearGrid.GetNode(8, 0).x, tolerance); + ASSERT_NEAR(18.0, curvilinearGrid.GetNode(9, 0).x, tolerance); + ASSERT_NEAR(19.0, curvilinearGrid.GetNode(10, 0).x, tolerance); + + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(11, 0).x, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(12, 0).x, tolerance); + + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 0).y, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(0, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(0, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(0, 3).y, tolerance); } TEST(CurvilinearGridRefinement, Compute_OnCurvilinearGridWithMissingFaces_ShouldRefine) @@ -75,46 +75,46 @@ TEST(CurvilinearGridRefinement, Compute_OnCurvilinearGridWithMissingFaces_Should constexpr double tolerance = 1e-12; // vertical gridline 0 - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 3).x, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 0).x, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 1).x, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 2).x, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 3).x, tolerance); - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(0, 3).y, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 0).y, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(0, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(0, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(0, 3).y, tolerance); // vertical gridline 2 - ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.m_gridNodes(2, 0).x, tolerance); - ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.m_gridNodes(2, 1).x, tolerance); - ASSERT_NEAR(11.0, curvilinearGrid.m_gridNodes(2, 2).x, tolerance); - ASSERT_NEAR(11.0, curvilinearGrid.m_gridNodes(2, 3).x, tolerance); + ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.GetNode(2, 0).x, tolerance); + ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.GetNode(2, 1).x, tolerance); + ASSERT_NEAR(11.0, curvilinearGrid.GetNode(2, 2).x, tolerance); + ASSERT_NEAR(11.0, curvilinearGrid.GetNode(2, 3).x, tolerance); - ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.m_gridNodes(3, 0).y, tolerance); - ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.m_gridNodes(3, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(3, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(3, 3).y, tolerance); + ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.GetNode(3, 0).y, tolerance); + ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.GetNode(3, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(3, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(3, 3).y, tolerance); // vertical gridline 10 - ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.m_gridNodes(10, 0).x, tolerance); - ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.m_gridNodes(10, 1).x, tolerance); - ASSERT_NEAR(19.0, curvilinearGrid.m_gridNodes(10, 2).x, tolerance); - ASSERT_NEAR(19.0, curvilinearGrid.m_gridNodes(10, 3).x, tolerance); + ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.GetNode(10, 0).x, tolerance); + ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.GetNode(10, 1).x, tolerance); + ASSERT_NEAR(19.0, curvilinearGrid.GetNode(10, 2).x, tolerance); + ASSERT_NEAR(19.0, curvilinearGrid.GetNode(10, 3).x, tolerance); - ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.m_gridNodes(10, 0).y, tolerance); - ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.m_gridNodes(10, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(10, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(10, 3).y, tolerance); + ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.GetNode(10, 0).y, tolerance); + ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.GetNode(10, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(10, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(10, 3).y, tolerance); // vertical gridline 11 - ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.m_gridNodes(11, 0).x, tolerance); - ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.m_gridNodes(11, 1).x, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(11, 2).x, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(11, 3).x, tolerance); - - ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.m_gridNodes(11, 0).y, tolerance); - ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.m_gridNodes(11, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(11, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(11, 3).y, tolerance); + ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.GetNode(11, 0).x, tolerance); + ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.GetNode(11, 1).x, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(11, 2).x, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(11, 3).x, tolerance); + + ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.GetNode(11, 0).y, tolerance); + ASSERT_NEAR(constants::missing::doubleValue, curvilinearGrid.GetNode(11, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(11, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(11, 3).y, tolerance); } diff --git a/libs/MeshKernel/tests/src/CurvilinearGridSmoothingTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridSmoothingTests.cpp index 9e18240b7..d6012a416 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridSmoothingTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridSmoothingTests.cpp @@ -27,45 +27,45 @@ TEST(CurvilinearGridSmoothing, Compute_OnSmoothCurvilinearGrid_ShouldNotSmoothGr // Assert nodes are on the same location because the grid is already smooth constexpr double tolerance = 1e-6; - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 3).x, tolerance); - - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(1, 3).x, tolerance); - - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(2, 0).x, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(2, 1).x, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(2, 2).x, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(2, 3).x, tolerance); - - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(3, 0).x, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(3, 1).x, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(3, 2).x, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(3, 3).x, tolerance); - - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(0, 3).y, tolerance); - - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(1, 3).y, tolerance); - - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(2, 0).y, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(2, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(2, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(2, 3).y, tolerance); - - ASSERT_NEAR(0.0, curvilinearGrid.m_gridNodes(3, 0).y, tolerance); - ASSERT_NEAR(10.0, curvilinearGrid.m_gridNodes(3, 1).y, tolerance); - ASSERT_NEAR(20.0, curvilinearGrid.m_gridNodes(3, 2).y, tolerance); - ASSERT_NEAR(30.0, curvilinearGrid.m_gridNodes(3, 3).y, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 0).x, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 1).x, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 2).x, tolerance); + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 3).x, tolerance); + + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(1, 0).x, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(1, 1).x, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(1, 2).x, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(1, 3).x, tolerance); + + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(2, 0).x, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(2, 1).x, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(2, 2).x, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(2, 3).x, tolerance); + + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(3, 0).x, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(3, 1).x, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(3, 2).x, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(3, 3).x, tolerance); + + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(0, 0).y, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(0, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(0, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(0, 3).y, tolerance); + + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(1, 0).y, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(1, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(1, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(1, 3).y, tolerance); + + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(2, 0).y, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(2, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(2, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(2, 3).y, tolerance); + + ASSERT_NEAR(0.0, curvilinearGrid.GetNode(3, 0).y, tolerance); + ASSERT_NEAR(10.0, curvilinearGrid.GetNode(3, 1).y, tolerance); + ASSERT_NEAR(20.0, curvilinearGrid.GetNode(3, 2).y, tolerance); + ASSERT_NEAR(30.0, curvilinearGrid.GetNode(3, 3).y, tolerance); } TEST(CurvilinearGridSmoothing, Compute_OnONonSmoothCurvilinearGrid_ShouldSmoothGrid) { @@ -81,45 +81,45 @@ TEST(CurvilinearGridSmoothing, Compute_OnONonSmoothCurvilinearGrid_ShouldSmoothG // Assert constexpr double tolerance = 1e-6; - ASSERT_NEAR(79983.796374595549, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(80060.011105254613, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(80137.131323077789, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(80214.289133171449, curvilinearGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(80290.623313344797, curvilinearGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(80364.411459799783, curvilinearGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(80440.632944042736, curvilinearGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(80521.863482944755, curvilinearGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(80611.260660513333, curvilinearGrid->m_gridNodes(0, 8).x, tolerance); - - ASSERT_NEAR(80049.839878894229, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(80126.599628477867, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(80209.094215192861, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(80293.744880346814, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(80379.324140649813, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(80465.542584239694, curvilinearGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(80554.276324305538, curvilinearGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(80648.676638649602, curvilinearGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(80756.869964790196, curvilinearGrid->m_gridNodes(1, 8).x, tolerance); - - ASSERT_NEAR(366936.89538054139, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(366987.83821424743, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(367041.23176860309, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(367096.32094200718, curvilinearGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(367152.27534010477, curvilinearGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(367210.34624999913, curvilinearGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(367271.13533544831, curvilinearGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(367335.99776061886, curvilinearGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(367407.38541954994, curvilinearGrid->m_gridNodes(0, 8).y, tolerance); - - ASSERT_NEAR(366833.73477307899, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(366875.95830515033, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(366920.06335723272, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(366964.51932115341, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(367008.36165438319, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(367051.96991358045, curvilinearGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(367097.07280781888, curvilinearGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(367147.66697242024, curvilinearGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(367208.53384889866, curvilinearGrid->m_gridNodes(1, 8).y, tolerance); + ASSERT_NEAR(79983.796374595549, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(80060.011105254613, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(80137.131323077789, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(80214.289133171449, curvilinearGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(80290.623313344797, curvilinearGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(80364.411459799783, curvilinearGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(80440.632944042736, curvilinearGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(80521.863482944755, curvilinearGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(80611.260660513333, curvilinearGrid->GetNode(0, 8).x, tolerance); + + ASSERT_NEAR(80049.839878894229, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(80126.599628477867, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(80209.094215192861, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(80293.744880346814, curvilinearGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(80379.324140649813, curvilinearGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(80465.542584239694, curvilinearGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(80554.276324305538, curvilinearGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(80648.676638649602, curvilinearGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(80756.869964790196, curvilinearGrid->GetNode(1, 8).x, tolerance); + + ASSERT_NEAR(366936.89538054139, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(366987.83821424743, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(367041.23176860309, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(367096.32094200718, curvilinearGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(367152.27534010477, curvilinearGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(367210.34624999913, curvilinearGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(367271.13533544831, curvilinearGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(367335.99776061886, curvilinearGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(367407.38541954994, curvilinearGrid->GetNode(0, 8).y, tolerance); + + ASSERT_NEAR(366833.73477307899, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(366875.95830515033, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(366920.06335723272, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(366964.51932115341, curvilinearGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(367008.36165438319, curvilinearGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(367051.96991358045, curvilinearGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(367097.07280781888, curvilinearGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(367147.66697242024, curvilinearGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(367208.53384889866, curvilinearGrid->GetNode(1, 8).y, tolerance); } TEST(CurvilinearGridSmoothing, Compute_OnONonSmoothCurvilinearGridWithMissingElements_ShouldSmoothGrid) @@ -136,65 +136,65 @@ TEST(CurvilinearGridSmoothing, Compute_OnONonSmoothCurvilinearGridWithMissingEle // Assert constexpr double tolerance = 1e-6; - ASSERT_NEAR(79983.796374595549, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(80060.788799524904, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(80138.938885926123, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(80216.491022095070, curvilinearGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(80293.293375308422, curvilinearGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(80367.153256326288, curvilinearGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(80441.975289048860, curvilinearGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(80522.272230797375, curvilinearGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(80611.260660513333, curvilinearGrid->m_gridNodes(0, 8).x, tolerance); - - ASSERT_NEAR(80050.309286359756, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(80129.710469510028, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(80217.157476954410, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(80301.619921323407, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(80387.883340666624, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(80476.978522055375, curvilinearGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(80558.979514368868, curvilinearGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(80649.960798514221, curvilinearGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(80756.940464565720, curvilinearGrid->m_gridNodes(1, 8).x, tolerance); - - ASSERT_NEAR(80098.932488001548, curvilinearGrid->m_gridNodes(2, 0).x, tolerance); - ASSERT_NEAR(80186.124532376241, curvilinearGrid->m_gridNodes(2, 1).x, tolerance); - ASSERT_NEAR(80292.449108019704, curvilinearGrid->m_gridNodes(2, 2).x, tolerance); - ASSERT_NEAR(80375.822861451976, curvilinearGrid->m_gridNodes(2, 3).x, tolerance); - ASSERT_NEAR(80468.946809326764, curvilinearGrid->m_gridNodes(2, 4).x, tolerance); - ASSERT_NEAR(80583.120607369667, curvilinearGrid->m_gridNodes(2, 5).x, tolerance); - ASSERT_NEAR(80652.102309464681, curvilinearGrid->m_gridNodes(2, 6).x, tolerance); - ASSERT_NEAR(80749.982910696970, curvilinearGrid->m_gridNodes(2, 7).x, tolerance); - ASSERT_NEAR(80871.931419427943, curvilinearGrid->m_gridNodes(2, 8).x, tolerance); - - ASSERT_NEAR(366936.89538054139, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(366988.35803436005, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(367042.48402813828, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(367097.89403811248, curvilinearGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(367154.23426078091, curvilinearGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(367212.51011039014, curvilinearGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(367272.20589329768, curvilinearGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(367336.32413904829, curvilinearGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(367407.38541954994, curvilinearGrid->m_gridNodes(0, 8).y, tolerance); - - ASSERT_NEAR(366833.00155397120, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(366875.36856874428, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(366919.22743417800, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(366964.89754991967, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(367010.93790833943, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(367054.20807785576, curvilinearGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(367097.95891073684, curvilinearGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(367147.87982618762, curvilinearGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(367208.42653128889, curvilinearGrid->m_gridNodes(1, 8).y, tolerance); - - ASSERT_NEAR(366729.04871992749, curvilinearGrid->m_gridNodes(2, 0).y, tolerance); - ASSERT_NEAR(366761.65380535304, curvilinearGrid->m_gridNodes(2, 1).y, tolerance); - ASSERT_NEAR(366792.50812354451, curvilinearGrid->m_gridNodes(2, 2).y, tolerance); - ASSERT_NEAR(366827.70632165857, curvilinearGrid->m_gridNodes(2, 3).y, tolerance); - ASSERT_NEAR(366865.78532145533, curvilinearGrid->m_gridNodes(2, 4).y, tolerance); - ASSERT_NEAR(366891.62363194284, curvilinearGrid->m_gridNodes(2, 5).y, tolerance); - ASSERT_NEAR(366916.02815869858, curvilinearGrid->m_gridNodes(2, 6).y, tolerance); - ASSERT_NEAR(366948.34436165588, curvilinearGrid->m_gridNodes(2, 7).y, tolerance); - ASSERT_NEAR(366996.75152488949, curvilinearGrid->m_gridNodes(2, 8).y, tolerance); + ASSERT_NEAR(79983.796374595549, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(80060.788799524904, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(80138.938885926123, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(80216.491022095070, curvilinearGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(80293.293375308422, curvilinearGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(80367.153256326288, curvilinearGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(80441.975289048860, curvilinearGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(80522.272230797375, curvilinearGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(80611.260660513333, curvilinearGrid->GetNode(0, 8).x, tolerance); + + ASSERT_NEAR(80050.309286359756, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(80129.710469510028, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(80217.157476954410, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(80301.619921323407, curvilinearGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(80387.883340666624, curvilinearGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(80476.978522055375, curvilinearGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(80558.979514368868, curvilinearGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(80649.960798514221, curvilinearGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(80756.940464565720, curvilinearGrid->GetNode(1, 8).x, tolerance); + + ASSERT_NEAR(80098.932488001548, curvilinearGrid->GetNode(2, 0).x, tolerance); + ASSERT_NEAR(80186.124532376241, curvilinearGrid->GetNode(2, 1).x, tolerance); + ASSERT_NEAR(80292.449108019704, curvilinearGrid->GetNode(2, 2).x, tolerance); + ASSERT_NEAR(80375.822861451976, curvilinearGrid->GetNode(2, 3).x, tolerance); + ASSERT_NEAR(80468.946809326764, curvilinearGrid->GetNode(2, 4).x, tolerance); + ASSERT_NEAR(80583.120607369667, curvilinearGrid->GetNode(2, 5).x, tolerance); + ASSERT_NEAR(80652.102309464681, curvilinearGrid->GetNode(2, 6).x, tolerance); + ASSERT_NEAR(80749.982910696970, curvilinearGrid->GetNode(2, 7).x, tolerance); + ASSERT_NEAR(80871.931419427943, curvilinearGrid->GetNode(2, 8).x, tolerance); + + ASSERT_NEAR(366936.89538054139, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(366988.35803436005, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(367042.48402813828, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(367097.89403811248, curvilinearGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(367154.23426078091, curvilinearGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(367212.51011039014, curvilinearGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(367272.20589329768, curvilinearGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(367336.32413904829, curvilinearGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(367407.38541954994, curvilinearGrid->GetNode(0, 8).y, tolerance); + + ASSERT_NEAR(366833.00155397120, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(366875.36856874428, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(366919.22743417800, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(366964.89754991967, curvilinearGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(367010.93790833943, curvilinearGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(367054.20807785576, curvilinearGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(367097.95891073684, curvilinearGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(367147.87982618762, curvilinearGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(367208.42653128889, curvilinearGrid->GetNode(1, 8).y, tolerance); + + ASSERT_NEAR(366729.04871992749, curvilinearGrid->GetNode(2, 0).y, tolerance); + ASSERT_NEAR(366761.65380535304, curvilinearGrid->GetNode(2, 1).y, tolerance); + ASSERT_NEAR(366792.50812354451, curvilinearGrid->GetNode(2, 2).y, tolerance); + ASSERT_NEAR(366827.70632165857, curvilinearGrid->GetNode(2, 3).y, tolerance); + ASSERT_NEAR(366865.78532145533, curvilinearGrid->GetNode(2, 4).y, tolerance); + ASSERT_NEAR(366891.62363194284, curvilinearGrid->GetNode(2, 5).y, tolerance); + ASSERT_NEAR(366916.02815869858, curvilinearGrid->GetNode(2, 6).y, tolerance); + ASSERT_NEAR(366948.34436165588, curvilinearGrid->GetNode(2, 7).y, tolerance); + ASSERT_NEAR(366996.75152488949, curvilinearGrid->GetNode(2, 8).y, tolerance); } TEST(CurvilinearGridSmoothing, ComputedDirectionalSmooth_OnMDrirection_ShouldSmoothGrid) @@ -212,25 +212,25 @@ TEST(CurvilinearGridSmoothing, ComputedDirectionalSmooth_OnMDrirection_ShouldSmo // Assert constexpr double tolerance = 1e-6; - ASSERT_NEAR(80053.996925399639, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(80144.732940478571, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(80222.990051062123, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(80314.427829118606, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(80414.057391982613, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(80505.096476712482, curvilinearGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(80595.183339827883, curvilinearGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(80684.333994102650, curvilinearGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(80772.567299473958, curvilinearGrid->m_gridNodes(1, 8).x, tolerance); - - ASSERT_NEAR(366827.17869351729, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(366872.58359778317, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(366936.38429752010, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(366981.06765786058, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(367015.14849423966, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(367056.48898898275, curvilinearGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(367099.12347147451, curvilinearGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(367143.03018172452, curvilinearGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(367188.18349069095, curvilinearGrid->m_gridNodes(1, 8).y, tolerance); + ASSERT_NEAR(80053.996925399639, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(80144.732940478571, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(80222.990051062123, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(80314.427829118606, curvilinearGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(80414.057391982613, curvilinearGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(80505.096476712482, curvilinearGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(80595.183339827883, curvilinearGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(80684.333994102650, curvilinearGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(80772.567299473958, curvilinearGrid->GetNode(1, 8).x, tolerance); + + ASSERT_NEAR(366827.17869351729, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(366872.58359778317, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(366936.38429752010, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(366981.06765786058, curvilinearGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(367015.14849423966, curvilinearGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(367056.48898898275, curvilinearGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(367099.12347147451, curvilinearGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(367143.03018172452, curvilinearGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(367188.18349069095, curvilinearGrid->GetNode(1, 8).y, tolerance); } TEST(CurvilinearGridSmoothing, ComputedDirectionalSmooth_OnNDrirection_ShouldSmoothGrid) @@ -248,23 +248,23 @@ TEST(CurvilinearGridSmoothing, ComputedDirectionalSmooth_OnNDrirection_ShouldSmo // Assert constexpr double tolerance = 1e-6; - ASSERT_NEAR(80053.996925399639, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(80144.692538122108, curvilinearGrid->m_gridNodes(1, 1).x, tolerance); - ASSERT_NEAR(80234.737077531070, curvilinearGrid->m_gridNodes(1, 2).x, tolerance); - ASSERT_NEAR(80324.189331719666, curvilinearGrid->m_gridNodes(1, 3).x, tolerance); - ASSERT_NEAR(80413.125110631052, curvilinearGrid->m_gridNodes(1, 4).x, tolerance); - ASSERT_NEAR(80505.096476712482, curvilinearGrid->m_gridNodes(1, 5).x, tolerance); - ASSERT_NEAR(80595.183339827883, curvilinearGrid->m_gridNodes(1, 6).x, tolerance); - ASSERT_NEAR(80684.333994102650, curvilinearGrid->m_gridNodes(1, 7).x, tolerance); - ASSERT_NEAR(80772.567299473958, curvilinearGrid->m_gridNodes(1, 8).x, tolerance); - - ASSERT_NEAR(366827.17869351729, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(366872.56390471710, curvilinearGrid->m_gridNodes(1, 1).y, tolerance); - ASSERT_NEAR(366919.09182483586, curvilinearGrid->m_gridNodes(1, 2).y, tolerance); - ASSERT_NEAR(366966.51416593988, curvilinearGrid->m_gridNodes(1, 3).y, tolerance); - ASSERT_NEAR(367014.64392142039, curvilinearGrid->m_gridNodes(1, 4).y, tolerance); - ASSERT_NEAR(367056.48898898275, curvilinearGrid->m_gridNodes(1, 5).y, tolerance); - ASSERT_NEAR(367099.12347147451, curvilinearGrid->m_gridNodes(1, 6).y, tolerance); - ASSERT_NEAR(367143.03018172452, curvilinearGrid->m_gridNodes(1, 7).y, tolerance); - ASSERT_NEAR(367188.18349069095, curvilinearGrid->m_gridNodes(1, 8).y, tolerance); + ASSERT_NEAR(80053.996925399639, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(80144.692538122108, curvilinearGrid->GetNode(1, 1).x, tolerance); + ASSERT_NEAR(80234.737077531070, curvilinearGrid->GetNode(1, 2).x, tolerance); + ASSERT_NEAR(80324.189331719666, curvilinearGrid->GetNode(1, 3).x, tolerance); + ASSERT_NEAR(80413.125110631052, curvilinearGrid->GetNode(1, 4).x, tolerance); + ASSERT_NEAR(80505.096476712482, curvilinearGrid->GetNode(1, 5).x, tolerance); + ASSERT_NEAR(80595.183339827883, curvilinearGrid->GetNode(1, 6).x, tolerance); + ASSERT_NEAR(80684.333994102650, curvilinearGrid->GetNode(1, 7).x, tolerance); + ASSERT_NEAR(80772.567299473958, curvilinearGrid->GetNode(1, 8).x, tolerance); + + ASSERT_NEAR(366827.17869351729, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(366872.56390471710, curvilinearGrid->GetNode(1, 1).y, tolerance); + ASSERT_NEAR(366919.09182483586, curvilinearGrid->GetNode(1, 2).y, tolerance); + ASSERT_NEAR(366966.51416593988, curvilinearGrid->GetNode(1, 3).y, tolerance); + ASSERT_NEAR(367014.64392142039, curvilinearGrid->GetNode(1, 4).y, tolerance); + ASSERT_NEAR(367056.48898898275, curvilinearGrid->GetNode(1, 5).y, tolerance); + ASSERT_NEAR(367099.12347147451, curvilinearGrid->GetNode(1, 6).y, tolerance); + ASSERT_NEAR(367143.03018172452, curvilinearGrid->GetNode(1, 7).y, tolerance); + ASSERT_NEAR(367188.18349069095, curvilinearGrid->GetNode(1, 8).y, tolerance); } diff --git a/tools/test_utils/src/MakeCurvilinearGrids.cpp b/tools/test_utils/src/MakeCurvilinearGrids.cpp index 5e1db19fd..b92b753ba 100644 --- a/tools/test_utils/src/MakeCurvilinearGrids.cpp +++ b/tools/test_utils/src/MakeCurvilinearGrids.cpp @@ -24,11 +24,11 @@ size_t CurvilinearGridCountValidNodes(meshkernel::CurvilinearGrid const& curvili { size_t validNodes = 0; size_t index = 0; - for (size_t m = 0; m < curvilinearGrid.NumM(); ++m) + for (meshkernel::UInt m = 0; m < curvilinearGrid.NumM(); ++m) { - for (size_t n = 0; n < curvilinearGrid.NumN(); ++n) + for (meshkernel::UInt n = 0; n < curvilinearGrid.NumN(); ++n) { - if (curvilinearGrid.m_gridNodes(m, n).IsValid()) + if (curvilinearGrid.GetNode(m, n).IsValid()) { validNodes++; } From 99a1acb5cef0872534a4040ae08bebef4543ad44 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Wed, 31 Jan 2024 15:29:36 +0100 Subject: [PATCH 05/33] Use new methods to get row and column vectors --- libs/MeshKernel/src/Splines.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/libs/MeshKernel/src/Splines.cpp b/libs/MeshKernel/src/Splines.cpp index ca80a3629..cce20cd37 100644 --- a/libs/MeshKernel/src/Splines.cpp +++ b/libs/MeshKernel/src/Splines.cpp @@ -43,20 +43,15 @@ Splines::Splines(Projection projection) : m_projection(projection) {} Splines::Splines(CurvilinearGrid const& grid) { // first the m_n m_m-gridlines - lin_alg::Matrix mGridLines(grid.NumN(), grid.NumM()); for (UInt n = 0; n < grid.NumN(); ++n) { - for (UInt m = 0; m < grid.NumM(); ++m) - { - mGridLines(n, m) = grid.GetNode(m, n); - } - AddSpline(lin_alg::MatrixRowToSTLVector(mGridLines, n)); + AddSpline(grid.GetNodeRowVector(n)); } // then the m_m m_n-gridlines for (UInt m = 0; m < grid.NumM(); ++m) { - AddSpline(lin_alg::MatrixRowToSTLVector(grid.m_gridNodes, m)); + AddSpline(grid.GetNodeColumnVector(m)); } m_projection = grid.m_projection; From c103df919a5b8b608121fe6da5390f35333674ea Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Wed, 31 Jan 2024 15:42:41 +0100 Subject: [PATCH 06/33] Using access methods for m,n indexing (2) some calls found after previous commit --- .../src/CurvilinearGridLineMirrorTests.cpp | 116 +++++++++--------- .../src/CurvilinearGridSmoothnessTests.cpp | 8 +- 2 files changed, 62 insertions(+), 62 deletions(-) diff --git a/libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp index 78e2d12cb..594636f80 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp @@ -8,26 +8,26 @@ TEST(CurvilinearLineMirror, Compute_LineMirrorOnLeftBoundary_ShouldCorrectlySumC { // Set-up const auto curvilinearGrid = MakeCurvilinearGrid(0.0, 0.0, 1.0, 2.0, 3, 2); - EXPECT_EQ(3, curvilinearGrid->m_gridNodes.rows()); - EXPECT_EQ(2, curvilinearGrid->m_gridNodes.cols()); + EXPECT_EQ(3, curvilinearGrid->NumM()); + EXPECT_EQ(2, curvilinearGrid->NumN()); constexpr double f = 1.2; meshkernel::CurvilinearGridLineMirror curvilinearLineMirror(*curvilinearGrid, f); curvilinearLineMirror.SetLine({0, 0}, {0, 2}); - const auto p0 = curvilinearGrid->m_gridNodes(0, 1); - const auto p1 = curvilinearGrid->m_gridNodes(1, 1); + const auto p0 = curvilinearGrid->GetNode(0, 1); + const auto p1 = curvilinearGrid->GetNode(1, 1); // Execute curvilinearLineMirror.Compute(); - EXPECT_EQ(4, curvilinearGrid->m_gridNodes.rows()); - EXPECT_EQ(2, curvilinearGrid->m_gridNodes.cols()); + EXPECT_EQ(4, curvilinearGrid->NumM()); + EXPECT_EQ(2, curvilinearGrid->NumN()); // Asserts constexpr double tolerance = 1e-6; const auto p_expected = (1 + f) * p0 + (-f) * p1; - const auto p_actual = curvilinearGrid->m_gridNodes(0, 1); + const auto p_actual = curvilinearGrid->GetNode(0, 1); ASSERT_TRUE(meshkernel::IsEqual(p_expected, p_actual, tolerance)); } @@ -35,26 +35,26 @@ TEST(CurvilinearLineMirror, Compute_LineMirrorOnRightBoundary_ShouldCorrectlySum { // Set-up const auto curvilinearGrid = MakeCurvilinearGrid(0.0, 0.0, 1.0, 2.0, 3, 2); - EXPECT_EQ(3, curvilinearGrid->m_gridNodes.rows()); - EXPECT_EQ(2, curvilinearGrid->m_gridNodes.cols()); + EXPECT_EQ(3, curvilinearGrid->NumM()); + EXPECT_EQ(2, curvilinearGrid->NumN()); constexpr double f = 1.2; meshkernel::CurvilinearGridLineMirror curvilinearLineMirror(*curvilinearGrid, f); curvilinearLineMirror.SetLine({2, 0}, {2, 2}); - const auto p0 = curvilinearGrid->m_gridNodes(2, 1); - const auto p1 = curvilinearGrid->m_gridNodes(1, 1); + const auto p0 = curvilinearGrid->GetNode(2, 1); + const auto p1 = curvilinearGrid->GetNode(1, 1); // Execute curvilinearLineMirror.Compute(); - EXPECT_EQ(4, curvilinearGrid->m_gridNodes.rows()); - EXPECT_EQ(2, curvilinearGrid->m_gridNodes.cols()); + EXPECT_EQ(4, curvilinearGrid->NumM()); + EXPECT_EQ(2, curvilinearGrid->NumN()); // Asserts constexpr double tolerance = 1e-6; const auto p_expected = (1 + f) * p0 + (-f) * p1; - const auto p_actual = curvilinearGrid->m_gridNodes(3, 1); + const auto p_actual = curvilinearGrid->GetNode(3, 1); ASSERT_TRUE(meshkernel::IsEqual(p_expected, p_actual, tolerance)); } @@ -70,17 +70,17 @@ TEST(CurvilinearLineMirror, Compute_LineMirrorOnBottomBoundary_ShouldAddFacesOnB // Asserts constexpr double tolerance = 1e-6; - ASSERT_NEAR(79885.972404917018, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(79945.113707304932, curvilinearGrid->m_gridNodes(1, 0).x, tolerance); - ASSERT_NEAR(79997.648681153471, curvilinearGrid->m_gridNodes(2, 0).x, tolerance); - ASSERT_NEAR(80022.752290748060, curvilinearGrid->m_gridNodes(3, 0).x, tolerance); - ASSERT_NEAR(80049.721398047535, curvilinearGrid->m_gridNodes(4, 0).x, tolerance); - - ASSERT_NEAR(366871.50371491740, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(366772.69280839822, curvilinearGrid->m_gridNodes(1, 0).y, tolerance); - ASSERT_NEAR(366659.31789138837, curvilinearGrid->m_gridNodes(2, 0).y, tolerance); - ASSERT_NEAR(366598.79661874950, curvilinearGrid->m_gridNodes(3, 0).y, tolerance); - ASSERT_NEAR(366516.53233619139, curvilinearGrid->m_gridNodes(4, 0).y, tolerance); + ASSERT_NEAR(79885.972404917018, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(79945.113707304932, curvilinearGrid->GetNode(1, 0).x, tolerance); + ASSERT_NEAR(79997.648681153471, curvilinearGrid->GetNode(2, 0).x, tolerance); + ASSERT_NEAR(80022.752290748060, curvilinearGrid->GetNode(3, 0).x, tolerance); + ASSERT_NEAR(80049.721398047535, curvilinearGrid->GetNode(4, 0).x, tolerance); + + ASSERT_NEAR(366871.50371491740, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(366772.69280839822, curvilinearGrid->GetNode(1, 0).y, tolerance); + ASSERT_NEAR(366659.31789138837, curvilinearGrid->GetNode(2, 0).y, tolerance); + ASSERT_NEAR(366598.79661874950, curvilinearGrid->GetNode(3, 0).y, tolerance); + ASSERT_NEAR(366516.53233619139, curvilinearGrid->GetNode(4, 0).y, tolerance); } TEST(CurvilinearLineMirror, Compute_LineMirrorOnBottomBoundaryWithZeroMirrowingFactor_ShouldNotAddFacesOnBottomBoundary) @@ -104,18 +104,18 @@ TEST(CurvilinearLineMirror, Compute_LineMirrorOnUpperBoundary_ShouldAddFacesOnUp // Asserts constexpr double tolerance = 1e-6; - Eigen::Index const last = curvilinearGrid->m_gridNodes.cols() - 1; - ASSERT_NEAR(80703.065731618568, curvilinearGrid->m_gridNodes(0, last).x, tolerance); - ASSERT_NEAR(80878.447265919545, curvilinearGrid->m_gridNodes(1, last).x, tolerance); - ASSERT_NEAR(81010.674000571220, curvilinearGrid->m_gridNodes(2, last).x, tolerance); - ASSERT_NEAR(81097.939900259138, curvilinearGrid->m_gridNodes(3, last).x, tolerance); - ASSERT_NEAR(81096.681464918671, curvilinearGrid->m_gridNodes(4, last).x, tolerance); - - ASSERT_NEAR(367480.69596951915, curvilinearGrid->m_gridNodes(0, last).y, tolerance); - ASSERT_NEAR(367242.36746145069, curvilinearGrid->m_gridNodes(1, last).y, tolerance); - ASSERT_NEAR(367002.07900554762, curvilinearGrid->m_gridNodes(2, last).y, tolerance); - ASSERT_NEAR(366719.73488287395, curvilinearGrid->m_gridNodes(3, last).y, tolerance); - ASSERT_NEAR(366511.72792605805, curvilinearGrid->m_gridNodes(4, last).y, tolerance); + Eigen::Index const last = curvilinearGrid->NumN() - 1; + ASSERT_NEAR(80703.065731618568, curvilinearGrid->GetNode(0, last).x, tolerance); + ASSERT_NEAR(80878.447265919545, curvilinearGrid->GetNode(1, last).x, tolerance); + ASSERT_NEAR(81010.674000571220, curvilinearGrid->GetNode(2, last).x, tolerance); + ASSERT_NEAR(81097.939900259138, curvilinearGrid->GetNode(3, last).x, tolerance); + ASSERT_NEAR(81096.681464918671, curvilinearGrid->GetNode(4, last).x, tolerance); + + ASSERT_NEAR(367480.69596951915, curvilinearGrid->GetNode(0, last).y, tolerance); + ASSERT_NEAR(367242.36746145069, curvilinearGrid->GetNode(1, last).y, tolerance); + ASSERT_NEAR(367002.07900554762, curvilinearGrid->GetNode(2, last).y, tolerance); + ASSERT_NEAR(366719.73488287395, curvilinearGrid->GetNode(3, last).y, tolerance); + ASSERT_NEAR(366511.72792605805, curvilinearGrid->GetNode(4, last).y, tolerance); } TEST(CurvilinearLineMirror, Compute_LineMirrorOnLeftBoundary_ShouldAddFacesOnLeftBoundary) @@ -130,25 +130,25 @@ TEST(CurvilinearLineMirror, Compute_LineMirrorOnLeftBoundary_ShouldAddFacesOnLef // Asserts constexpr double tolerance = 1e-6; - ASSERT_NEAR(79899.555713630645, curvilinearGrid->m_gridNodes(0, 0).x, tolerance); - ASSERT_NEAR(79970.016439946601, curvilinearGrid->m_gridNodes(0, 1).x, tolerance); - ASSERT_NEAR(80039.226795186711, curvilinearGrid->m_gridNodes(0, 2).x, tolerance); - ASSERT_NEAR(80107.373974174203, curvilinearGrid->m_gridNodes(0, 3).x, tolerance); - ASSERT_NEAR(80174.667394645265, curvilinearGrid->m_gridNodes(0, 4).x, tolerance); - ASSERT_NEAR(80233.729789995661, curvilinearGrid->m_gridNodes(0, 5).x, tolerance); - ASSERT_NEAR(80293.934851283411, curvilinearGrid->m_gridNodes(0, 6).x, tolerance); - ASSERT_NEAR(80355.263363179940, curvilinearGrid->m_gridNodes(0, 7).x, tolerance); - ASSERT_NEAR(80417.692693760589, curvilinearGrid->m_gridNodes(0, 8).x, tolerance); - - ASSERT_NEAR(367068.55540497036, curvilinearGrid->m_gridNodes(0, 0).y, tolerance); - ASSERT_NEAR(367133.95424016198, curvilinearGrid->m_gridNodes(0, 1).y, tolerance); - ASSERT_NEAR(367201.17228871223, curvilinearGrid->m_gridNodes(0, 2).y, tolerance); - ASSERT_NEAR(367270.06081416988, curvilinearGrid->m_gridNodes(0, 3).y, tolerance); - ASSERT_NEAR(367340.45903014857, curvilinearGrid->m_gridNodes(0, 4).y, tolerance); - ASSERT_NEAR(367425.25311140029, curvilinearGrid->m_gridNodes(0, 5).y, tolerance); - ASSERT_NEAR(367508.49440735363, curvilinearGrid->m_gridNodes(0, 6).y, tolerance); - ASSERT_NEAR(367590.20902999706, curvilinearGrid->m_gridNodes(0, 7).y, tolerance); - ASSERT_NEAR(367670.42773418076, curvilinearGrid->m_gridNodes(0, 8).y, tolerance); + ASSERT_NEAR(79899.555713630645, curvilinearGrid->GetNode(0, 0).x, tolerance); + ASSERT_NEAR(79970.016439946601, curvilinearGrid->GetNode(0, 1).x, tolerance); + ASSERT_NEAR(80039.226795186711, curvilinearGrid->GetNode(0, 2).x, tolerance); + ASSERT_NEAR(80107.373974174203, curvilinearGrid->GetNode(0, 3).x, tolerance); + ASSERT_NEAR(80174.667394645265, curvilinearGrid->GetNode(0, 4).x, tolerance); + ASSERT_NEAR(80233.729789995661, curvilinearGrid->GetNode(0, 5).x, tolerance); + ASSERT_NEAR(80293.934851283411, curvilinearGrid->GetNode(0, 6).x, tolerance); + ASSERT_NEAR(80355.263363179940, curvilinearGrid->GetNode(0, 7).x, tolerance); + ASSERT_NEAR(80417.692693760589, curvilinearGrid->GetNode(0, 8).x, tolerance); + + ASSERT_NEAR(367068.55540497036, curvilinearGrid->GetNode(0, 0).y, tolerance); + ASSERT_NEAR(367133.95424016198, curvilinearGrid->GetNode(0, 1).y, tolerance); + ASSERT_NEAR(367201.17228871223, curvilinearGrid->GetNode(0, 2).y, tolerance); + ASSERT_NEAR(367270.06081416988, curvilinearGrid->GetNode(0, 3).y, tolerance); + ASSERT_NEAR(367340.45903014857, curvilinearGrid->GetNode(0, 4).y, tolerance); + ASSERT_NEAR(367425.25311140029, curvilinearGrid->GetNode(0, 5).y, tolerance); + ASSERT_NEAR(367508.49440735363, curvilinearGrid->GetNode(0, 6).y, tolerance); + ASSERT_NEAR(367590.20902999706, curvilinearGrid->GetNode(0, 7).y, tolerance); + ASSERT_NEAR(367670.42773418076, curvilinearGrid->GetNode(0, 8).y, tolerance); } TEST(CurvilinearLineMirror, Compute_LineMirrorOnRightBoundary_ShouldAddFacesOnRightBoundary) @@ -173,9 +173,9 @@ TEST(CurvilinearLineMirror, Compute_LineMirrorOnRightBoundary_ShouldAddFacesOnRi {80733.43286732884, 366326.7255580065}, {80846.495013789012, 366309.39825786441}, {80959.52970866223, 366287.90794878011}}; - Eigen::Index const last = curvilinearGrid->m_gridNodes.rows() - 1; + Eigen::Index const last = curvilinearGrid->NumM() - 1; for (int i = 0; i < 9; ++i) { - EXPECT_TRUE(meshkernel::IsEqual(expected[i], curvilinearGrid->m_gridNodes(last, i), tolerance)); + EXPECT_TRUE(meshkernel::IsEqual(expected[i], curvilinearGrid->GetNode(last, i), tolerance)); } } diff --git a/libs/MeshKernel/tests/src/CurvilinearGridSmoothnessTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridSmoothnessTests.cpp index 426fdf0af..72e98d42b 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridSmoothnessTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridSmoothnessTests.cpp @@ -150,10 +150,10 @@ TEST(CurvilinearGridSmoothness, Compute_SmoothnessOfRegularGridWithHole_ShouldCo std::unique_ptr grid = MakeCurvilinearGrid(originX, originY, deltaX, deltaY, nx, ny); - grid->m_gridNodes(4, 4).SetInvalid(); - grid->m_gridNodes(4, 5).SetInvalid(); - grid->m_gridNodes(5, 4).SetInvalid(); - grid->m_gridNodes(5, 5).SetInvalid(); + grid->GetNode(4, 4).SetInvalid(); + grid->GetNode(4, 5).SetInvalid(); + grid->GetNode(5, 4).SetInvalid(); + grid->GetNode(5, 5).SetInvalid(); lin_alg::Matrix smoothness; From b38b6169f7e269032cba9964fc1a74e45ecdba94 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Wed, 31 Jan 2024 15:56:58 +0100 Subject: [PATCH 07/33] Renamed method to clarify that node validity is tested --- .../MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp | 4 ++-- .../src/CurvilinearGrid/CurvilinearGrid.cpp | 4 ++-- .../CurvilinearGridOrthogonalization.cpp | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index 67ebe7c61..07438c0ba 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -153,12 +153,12 @@ namespace meshkernel /// @brief Computes the grid nodes types and the faces masks void ComputeGridNodeTypes(); - /// @brief Determines if a face is valid. + /// @brief Determines if all nodes of a face are valid. /// A face is valid if all its nodes are valid. /// @param[in] m The m coordinate /// @param[in] n The n coordinate /// @return True if the face is valid, false otherwise - [[nodiscard]] bool IsValidFace(UInt m, UInt n) const; + [[nodiscard]] bool AreFaceNodesValid(UInt m, UInt n) const; /// @brief Inserts a new face. The new face will be inserted on top of the closest edge. /// @param[in] point The point used for finding the closest edge. diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp index 52cabc423..d96cb79a9 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp @@ -277,7 +277,7 @@ std::tuple CurvilinearGr return {m_gridIndices[firstNode], m_gridIndices[secondNode]}; } -bool CurvilinearGrid::IsValidFace(UInt m, UInt n) const +bool CurvilinearGrid::AreFaceNodesValid(UInt m, UInt n) const { return m_gridNodes(m, n).IsValid() && m_gridNodes(m + 1, n).IsValid() && @@ -328,7 +328,7 @@ void CurvilinearGrid::ComputeGridFacesMask() for (UInt n = 0; n < NumN() - 1; ++n) { // Only if all grid nodes of the face are valid, the face is valid - if (!IsValidFace(m, n)) + if (!AreFaceNodesValid(m, n)) { continue; } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp index 6b84035c2..058d644e1 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp @@ -408,7 +408,7 @@ void CurvilinearGridOrthogonalization::ComputeVerticalCoefficients() for (auto m = m_lowerLeft.m_m + 1; m < m_upperRight.m_m; ++m) { - if (m_grid.IsValidFace(m, n) && + if (m_grid.AreFaceNodesValid(m, n) && !IsEqual(m_orthoEqTerms.a(m, n), constants::missing::doubleValue) && !IsEqual(m_orthoEqTerms.a(m - 1, n), constants::missing::doubleValue) && !invalidBoundaryNodes(m, n)) @@ -425,7 +425,7 @@ void CurvilinearGridOrthogonalization::ComputeVerticalCoefficients() { for (auto m = int(m_upperRight.m_m) - 1; m >= int(m_lowerLeft.m_m); --m) { - if (m_grid.IsValidFace(m, n) && + if (m_grid.AreFaceNodesValid(m, n) && !IsEqual(m_orthoEqTerms.a(m, n), constants::missing::doubleValue) && !IsEqual(m_orthoEqTerms.a(m + 1, n), constants::missing::doubleValue) && !invalidBoundaryNodes(m + 1, n)) @@ -441,7 +441,7 @@ void CurvilinearGridOrthogonalization::ComputeVerticalCoefficients() { for (auto n = m_lowerLeft.m_n; n < m_upperRight.m_n; ++n) { - if (m_grid.IsValidFace(m, n)) + if (m_grid.AreFaceNodesValid(m, n)) { double const inv = 1.0 / static_cast(counter(m, n) + 1); m_orthoEqTerms.a(m, n) *= inv; @@ -462,7 +462,7 @@ void CurvilinearGridOrthogonalization::ComputeHorizontalCoefficients() { for (auto n = m_lowerLeft.m_n + 1; n < m_upperRight.m_n; ++n) { - if (m_grid.IsValidFace(m, n) && + if (m_grid.AreFaceNodesValid(m, n) && !IsEqual(m_orthoEqTerms.b(m, n), constants::missing::doubleValue) && !IsEqual(m_orthoEqTerms.b(m, n - 1), constants::missing::doubleValue) && !invalidBoundaryNodes(m, n)) @@ -479,7 +479,7 @@ void CurvilinearGridOrthogonalization::ComputeHorizontalCoefficients() { for (auto n = static_cast(m_upperRight.m_n) - 1; n >= static_cast(m_lowerLeft.m_n); --n) { - if (m_grid.IsValidFace(m, n) && + if (m_grid.AreFaceNodesValid(m, n) && !IsEqual(m_orthoEqTerms.b(m, n), constants::missing::doubleValue) && !IsEqual(m_orthoEqTerms.b(m, n + 1), constants::missing::doubleValue) && !invalidBoundaryNodes(m, n + 1)) @@ -496,7 +496,7 @@ void CurvilinearGridOrthogonalization::ComputeHorizontalCoefficients() { for (auto n = m_lowerLeft.m_n; n < m_upperRight.m_n; ++n) { - if (m_grid.IsValidFace(m, n)) + if (m_grid.AreFaceNodesValid(m, n)) { double const inv = 1.0 / static_cast(counter(m, n) + 1); m_orthoEqTerms.b(m, n) *= inv; From 19761e989fa6da6044a03007108a676285b3516e Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Wed, 31 Jan 2024 15:58:40 +0100 Subject: [PATCH 08/33] Added access method for face mask --- .../include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp | 5 +++++ .../CurvilinearGrid/CurvilinearGridOrthogonalization.cpp | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index 07438c0ba..6742d764b 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -160,6 +160,11 @@ namespace meshkernel /// @return True if the face is valid, false otherwise [[nodiscard]] bool AreFaceNodesValid(UInt m, UInt n) const; + /// @brief Determines if the face mask is true (valid face) or false (invalid face) + /// @note the face mask values are determined by the result of the valid face-nodes test + /// @return the face mask value (true/false) + [[nodiscard]] bool IsFaceMaskValid(UInt m, UInt n) const { return m_gridFacesMask(m, n); } + /// @brief Inserts a new face. The new face will be inserted on top of the closest edge. /// @param[in] point The point used for finding the closest edge. void InsertFace(Point const& point); diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp index 058d644e1..894260ead 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp @@ -312,7 +312,7 @@ void CurvilinearGridOrthogonalization::ComputeCoefficients() { for (auto n = m_lowerLeft.m_n; n < m_upperRight.m_n; ++n) { - if (!m_grid.m_gridFacesMask(m, n)) + if (!m_grid.IsFaceMaskValid(m, n)) { continue; } @@ -342,7 +342,7 @@ void CurvilinearGridOrthogonalization::ComputeCoefficients() { for (auto n = m_lowerLeft.m_n; n < m_upperRight.m_n; ++n) { - if (!m_grid.m_gridFacesMask(m, n)) + if (!m_grid.IsFaceMaskValid(m, n)) { continue; } @@ -361,7 +361,7 @@ void CurvilinearGridOrthogonalization::ComputeCoefficients() { for (auto n = m_lowerLeft.m_n; n < m_upperRight.m_n; ++n) { - if (!m_grid.m_gridFacesMask(m, n)) + if (!m_grid.IsFaceMaskValid(m, n)) { m_orthoEqTerms.atp(m, n) = constants::missing::doubleValue; continue; From ffe1b084083fe4474fca5bf036d5bd2ced76dd49 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Wed, 31 Jan 2024 16:04:09 +0100 Subject: [PATCH 09/33] Using numM, numN --- libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp index 594636f80..705297903 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp @@ -104,7 +104,7 @@ TEST(CurvilinearLineMirror, Compute_LineMirrorOnUpperBoundary_ShouldAddFacesOnUp // Asserts constexpr double tolerance = 1e-6; - Eigen::Index const last = curvilinearGrid->NumN() - 1; + const auto last = (meshkernel::UInt)curvilinearGrid->NumN() - 1; ASSERT_NEAR(80703.065731618568, curvilinearGrid->GetNode(0, last).x, tolerance); ASSERT_NEAR(80878.447265919545, curvilinearGrid->GetNode(1, last).x, tolerance); ASSERT_NEAR(81010.674000571220, curvilinearGrid->GetNode(2, last).x, tolerance); @@ -173,7 +173,7 @@ TEST(CurvilinearLineMirror, Compute_LineMirrorOnRightBoundary_ShouldAddFacesOnRi {80733.43286732884, 366326.7255580065}, {80846.495013789012, 366309.39825786441}, {80959.52970866223, 366287.90794878011}}; - Eigen::Index const last = curvilinearGrid->NumM() - 1; + const auto last = curvilinearGrid->NumM() - 1; for (int i = 0; i < 9; ++i) { EXPECT_TRUE(meshkernel::IsEqual(expected[i], curvilinearGrid->GetNode(last, i), tolerance)); From e9b686da883e3fc1b5b379e2bee4c584981c8542 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Wed, 31 Jan 2024 16:27:37 +0100 Subject: [PATCH 10/33] Grid faces mask matrix made private --- .../MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp | 9 +++++---- libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index 6742d764b..89595e736 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -230,8 +230,8 @@ namespace meshkernel /// @brief Get the mesh bounding box. BoundingBox GetBoundingBox() const; - lin_alg::Matrix m_gridNodes; ///< Member variable storing the grid - lin_alg::Matrix m_gridFacesMask; ///< The mask of the grid faces (true/false) + lin_alg::Matrix m_gridNodes; ///< Member variable storing the grid + lin_alg::Matrix m_gridNodesTypes; ///< The grid node types std::vector m_gridIndices; ///< The original mapping of the flatten nodes in the curvilinear grid @@ -282,7 +282,8 @@ namespace meshkernel void AddEdge(CurvilinearGridNodeIndices const& firstNode, CurvilinearGridNodeIndices const& secondNode); - UInt m_numM = 0; ///< The number of m coordinates (columns, or vertical lines) - UInt m_numN = 0; ///< The number of n coordinates (rows, or horizontal lines) + UInt m_numM = 0; ///< The number of m coordinates (columns, or vertical lines) + UInt m_numN = 0; ///< The number of n coordinates (rows, or horizontal lines) + lin_alg::Matrix m_gridFacesMask; ///< The mask of the grid faces (true/false) }; } // namespace meshkernel diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp index d96cb79a9..b6548d947 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp @@ -36,11 +36,12 @@ using meshkernel::CurvilinearGridNodeIndices; CurvilinearGrid::CurvilinearGrid(const CurvilinearGrid& grid) : Mesh(grid.m_edges, grid.m_nodes, grid.m_projection), m_gridNodes(grid.m_gridNodes), - m_gridFacesMask(grid.m_gridFacesMask), m_gridNodesTypes(grid.m_gridNodesTypes), m_gridIndices(grid.m_gridIndices), m_numM(grid.NumM()), - m_numN(grid.NumN()) + m_numN(grid.NumN()), + m_gridFacesMask(grid.m_gridFacesMask) + { } From b27fc0e65f1415a7938c4a7f1f32981eb4fa4aa1 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Wed, 31 Jan 2024 16:36:50 +0100 Subject: [PATCH 11/33] Added grid node type access method, storage matrix made private --- .../CurvilinearGrid/CurvilinearGrid.hpp | 15 +++++--- .../src/CurvilinearGrid/CurvilinearGrid.cpp | 4 +-- .../CurvilinearGridOrthogonalization.cpp | 32 ++++++++--------- .../CurvilinearGridSmoothing.cpp | 36 +++++++++---------- 4 files changed, 47 insertions(+), 40 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index 89595e736..b9f3963ab 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -153,6 +153,12 @@ namespace meshkernel /// @brief Computes the grid nodes types and the faces masks void ComputeGridNodeTypes(); + /// @brief Determines the grid node type + /// @param[in] m The m coordinate + /// @param[in] n The n coordinate + /// @return the node type + NodeType GetNodeType(UInt m, UInt n) const { return m_gridNodesTypes(m, n); } + /// @brief Determines if all nodes of a face are valid. /// A face is valid if all its nodes are valid. /// @param[in] m The m coordinate @@ -232,7 +238,7 @@ namespace meshkernel lin_alg::Matrix m_gridNodes; ///< Member variable storing the grid - lin_alg::Matrix m_gridNodesTypes; ///< The grid node types + public: std::vector m_gridIndices; ///< The original mapping of the flatten nodes in the curvilinear grid /// @brief The number of columns of nodes @@ -282,8 +288,9 @@ namespace meshkernel void AddEdge(CurvilinearGridNodeIndices const& firstNode, CurvilinearGridNodeIndices const& secondNode); - UInt m_numM = 0; ///< The number of m coordinates (columns, or vertical lines) - UInt m_numN = 0; ///< The number of n coordinates (rows, or horizontal lines) - lin_alg::Matrix m_gridFacesMask; ///< The mask of the grid faces (true/false) + UInt m_numM = 0; ///< The number of m coordinates (columns, or vertical lines) + UInt m_numN = 0; ///< The number of n coordinates (rows, or horizontal lines) + lin_alg::Matrix m_gridFacesMask; ///< The mask of the grid faces (true/false) + lin_alg::Matrix m_gridNodesTypes; ///< The grid node types }; } // namespace meshkernel diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp index b6548d947..b47e6e9fc 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp @@ -36,11 +36,11 @@ using meshkernel::CurvilinearGridNodeIndices; CurvilinearGrid::CurvilinearGrid(const CurvilinearGrid& grid) : Mesh(grid.m_edges, grid.m_nodes, grid.m_projection), m_gridNodes(grid.m_gridNodes), - m_gridNodesTypes(grid.m_gridNodesTypes), m_gridIndices(grid.m_gridIndices), m_numM(grid.NumM()), m_numN(grid.NumN()), - m_gridFacesMask(grid.m_gridFacesMask) + m_gridFacesMask(grid.m_gridFacesMask), + m_gridNodesTypes(grid.m_gridNodesTypes) { } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp index 894260ead..f594e6c55 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridOrthogonalization.cpp @@ -97,7 +97,7 @@ void CurvilinearGridOrthogonalization::ProjectHorizontalBoundaryGridNodes() int nextVertical = 0; for (UInt m = 0; m < m_grid.NumM(); ++m) { - const auto nodeType = m_grid.m_gridNodesTypes(m, n); + const auto nodeType = m_grid.GetNodeType(m, n); if (nodeType == CurvilinearGrid::NodeType::BottomLeft || nodeType == CurvilinearGrid::NodeType::UpperLeft) { startM = m; @@ -127,7 +127,7 @@ void CurvilinearGridOrthogonalization::ProjectHorizontalBoundaryGridNodes() { continue; } - if (m_grid.m_gridNodesTypes(mm, n) == CurvilinearGrid::NodeType::Invalid) + if (m_grid.GetNodeType(mm, n) == CurvilinearGrid::NodeType::Invalid) { continue; } @@ -176,7 +176,7 @@ void CurvilinearGridOrthogonalization::ProjectVerticalBoundariesGridNodes() int nextHorizontal = 0; for (UInt n = 0; n < m_grid.NumN(); ++n) { - const auto nodeType = m_grid.m_gridNodesTypes(m, n); + const auto nodeType = m_grid.GetNodeType(m, n); if (nodeType == CurvilinearGrid::NodeType::BottomLeft || nodeType == CurvilinearGrid::NodeType::BottomRight) { startN = n; @@ -206,7 +206,7 @@ void CurvilinearGridOrthogonalization::ProjectVerticalBoundariesGridNodes() { continue; } - if (m_grid.m_gridNodesTypes(m, nn) == CurvilinearGrid::NodeType::Invalid) + if (m_grid.GetNodeType(m, nn) == CurvilinearGrid::NodeType::Invalid) { continue; } @@ -266,7 +266,7 @@ void CurvilinearGridOrthogonalization::Solve() { for (auto n = minNInternal; n < maxNInternal; ++n) { - if (m_grid.m_gridNodesTypes(m, n) != CurvilinearGrid::NodeType::InternalValid) + if (m_grid.GetNodeType(m, n) != CurvilinearGrid::NodeType::InternalValid) { continue; } @@ -381,7 +381,7 @@ void CurvilinearGridOrthogonalization::ComputeCoefficients() { for (auto n = m_lowerLeft.m_n + 1; n < m_upperRight.m_n; ++n) { - if (m_grid.m_gridNodesTypes(m, n) != CurvilinearGrid::NodeType::InternalValid) + if (m_grid.GetNodeType(m, n) != CurvilinearGrid::NodeType::InternalValid) { continue; } @@ -516,19 +516,19 @@ lin_alg::Matrix CurvilinearGridOrthogonalization::ComputeInvalidHorizontal for (auto n = m_lowerLeft.m_n + 1; n < m_upperRight.m_n; ++n) { int step = 0; - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::BottomLeft) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::BottomLeft) { step = -1; } - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::BottomRight) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::BottomRight) { step = 1; } - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::UpperRight) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::UpperRight) { step = 1; } - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::UpperLeft) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::UpperLeft) { step = -1; } @@ -540,7 +540,7 @@ lin_alg::Matrix CurvilinearGridOrthogonalization::ComputeInvalidHorizontal auto lastValidM = m + step; while (lastValidM > 0 && lastValidM < m_grid.NumM() && - m_grid.m_gridNodesTypes(lastValidM, n) == CurvilinearGrid::NodeType::InternalValid) + m_grid.GetNodeType(lastValidM, n) == CurvilinearGrid::NodeType::InternalValid) { lastValidM += step; } @@ -566,19 +566,19 @@ lin_alg::Matrix CurvilinearGridOrthogonalization::ComputeInvalidVerticalBo for (auto n = m_lowerLeft.m_n + 1; n < m_upperRight.m_n; ++n) { int step = 0; - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::BottomLeft) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::BottomLeft) { step = -1; } - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::BottomRight) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::BottomRight) { step = -1; } - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::UpperRight) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::UpperRight) { step = 1; } - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::UpperLeft) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::UpperLeft) { step = 1; } @@ -589,7 +589,7 @@ lin_alg::Matrix CurvilinearGridOrthogonalization::ComputeInvalidVerticalBo auto lastValidN = n + step; while (lastValidN > 0 && lastValidN < m_grid.NumN() && - m_grid.m_gridNodesTypes(m, lastValidN) == CurvilinearGrid::NodeType::InternalValid) + m_grid.GetNodeType(m, lastValidN) == CurvilinearGrid::NodeType::InternalValid) { lastValidN += step; } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp index c694e57bf..3c0d8590e 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp @@ -103,14 +103,14 @@ void CurvilinearGridSmoothing::SolveDirectional() { if (m_lines[0].IsMGridLine()) { - return m_grid.m_gridNodesTypes(m, n) != CurvilinearGrid::NodeType::InternalValid && - m_grid.m_gridNodesTypes(m, n) != CurvilinearGrid::NodeType::Bottom && - m_grid.m_gridNodesTypes(m, n) != CurvilinearGrid::NodeType::Up; + return m_grid.GetNodeType(m, n) != CurvilinearGrid::NodeType::InternalValid && + m_grid.GetNodeType(m, n) != CurvilinearGrid::NodeType::Bottom && + m_grid.GetNodeType(m, n) != CurvilinearGrid::NodeType::Up; } - return m_grid.m_gridNodesTypes(m, n) != CurvilinearGrid::NodeType::InternalValid && - m_grid.m_gridNodesTypes(m, n) != CurvilinearGrid::NodeType::Left && - m_grid.m_gridNodesTypes(m, n) != CurvilinearGrid::NodeType::Right; + return m_grid.GetNodeType(m, n) != CurvilinearGrid::NodeType::InternalValid && + m_grid.GetNodeType(m, n) != CurvilinearGrid::NodeType::Left && + m_grid.GetNodeType(m, n) != CurvilinearGrid::NodeType::Right; }; // Apply smoothing @@ -178,17 +178,17 @@ void CurvilinearGridSmoothing::Solve() { // It is invalid or a corner point, skip smoothing - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::Invalid || - m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::BottomLeft || - m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::UpperLeft || - m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::BottomRight || - m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::UpperRight) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::Invalid || + m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::BottomLeft || + m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::UpperLeft || + m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::BottomRight || + m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::UpperRight) { continue; } // Compute new position based on a smoothing operator - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::InternalValid) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::InternalValid) { m_grid.GetNode(m, n) = m_gridNodesCache(m, n) * a + (m_gridNodesCache(m - 1, n) + m_gridNodesCache(m + 1, n)) * 0.25 * b + (m_gridNodesCache(m, n - 1) + m_gridNodesCache(m, n + 1)) * 0.25 * b; @@ -197,19 +197,19 @@ void CurvilinearGridSmoothing::Solve() // For the point on the boundaries first computed the new position Point newNodePosition; - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::Bottom) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::Bottom) { newNodePosition = m_gridNodesCache(m, n) * a + (m_gridNodesCache(m - 1, n) + m_gridNodesCache(m + 1, n) + m_gridNodesCache(m, n + 1)) * constants::numeric::oneThird * b; } - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::Up) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::Up) { newNodePosition = m_gridNodesCache(m, n) * a + (m_gridNodesCache(m - 1, n) + m_gridNodesCache(m + 1, n) + m_gridNodesCache(m, n - 1)) * constants::numeric::oneThird * b; } - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::Right) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::Right) { newNodePosition = m_gridNodesCache(m, n) * a + (m_gridNodesCache(m, n - 1) + m_gridNodesCache(m, n + 1) + m_gridNodesCache(m - 1, n)) * constants::numeric::oneThird * b; } - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::Left) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::Left) { newNodePosition = m_gridNodesCache(m, n) * a + (m_gridNodesCache(m, n - 1) + m_gridNodesCache(m, n + 1) + m_gridNodesCache(m + 1, n)) * constants::numeric::oneThird * b; } @@ -224,12 +224,12 @@ void CurvilinearGridSmoothing::ProjectPointOnClosestGridBoundary(Point const& po // Project the new position on the original boundary segment Point previousNode; Point nextNode; - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::Bottom || m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::Up) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::Bottom || m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::Up) { previousNode = m_gridNodesCache(m - 1, n); nextNode = m_gridNodesCache(m + 1, n); } - if (m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::Right || m_grid.m_gridNodesTypes(m, n) == CurvilinearGrid::NodeType::Left) + if (m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::Right || m_grid.GetNodeType(m, n) == CurvilinearGrid::NodeType::Left) { previousNode = m_gridNodesCache(m, n - 1); nextNode = m_gridNodesCache(m, n + 1); From d6ec13d5feec8753cb5efd36b974be5f662e199e Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Wed, 31 Jan 2024 16:41:08 +0100 Subject: [PATCH 12/33] Gridindices matrix made private --- .../MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp | 11 +++++------ .../src/CurvilinearGrid/CurvilinearGrid.cpp | 5 ++--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index b9f3963ab..1622d8776 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -239,8 +239,6 @@ namespace meshkernel lin_alg::Matrix m_gridNodes; ///< Member variable storing the grid public: - std::vector m_gridIndices; ///< The original mapping of the flatten nodes in the curvilinear grid - /// @brief The number of columns of nodes /// @return A number >= 2 for a valid curvilinear grid UInt NumM() const { return m_numM; } @@ -288,9 +286,10 @@ namespace meshkernel void AddEdge(CurvilinearGridNodeIndices const& firstNode, CurvilinearGridNodeIndices const& secondNode); - UInt m_numM = 0; ///< The number of m coordinates (columns, or vertical lines) - UInt m_numN = 0; ///< The number of n coordinates (rows, or horizontal lines) - lin_alg::Matrix m_gridFacesMask; ///< The mask of the grid faces (true/false) - lin_alg::Matrix m_gridNodesTypes; ///< The grid node types + UInt m_numM = 0; ///< The number of m coordinates (columns, or vertical lines) + UInt m_numN = 0; ///< The number of n coordinates (rows, or horizontal lines) + lin_alg::Matrix m_gridFacesMask; ///< The mask of the grid faces (true/false) + lin_alg::Matrix m_gridNodesTypes; ///< The grid node types + std::vector m_gridIndices; ///< The original mapping of the flatten nodes in the curvilinear grid }; } // namespace meshkernel diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp index b47e6e9fc..77ff4e13a 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp @@ -36,12 +36,11 @@ using meshkernel::CurvilinearGridNodeIndices; CurvilinearGrid::CurvilinearGrid(const CurvilinearGrid& grid) : Mesh(grid.m_edges, grid.m_nodes, grid.m_projection), m_gridNodes(grid.m_gridNodes), - m_gridIndices(grid.m_gridIndices), m_numM(grid.NumM()), m_numN(grid.NumN()), m_gridFacesMask(grid.m_gridFacesMask), - m_gridNodesTypes(grid.m_gridNodesTypes) - + m_gridNodesTypes(grid.m_gridNodesTypes), + m_gridIndices(grid.m_gridIndices) { } From 273bee151276b0a4066851d4e6a6728158f3c2b5 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Thu, 1 Feb 2024 09:24:05 +0100 Subject: [PATCH 13/33] Use GetNodes() access method --- .../src/CurvilinearGrid/CurvilinearGridSmoothing.cpp | 4 ++-- libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp index 3c0d8590e..fce1d5242 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp @@ -97,7 +97,7 @@ void CurvilinearGridSmoothing::SolveDirectional() { // assign current nodal values to the m_gridNodesCache - m_gridNodesCache = m_grid.m_gridNodes; + m_gridNodesCache = m_grid.GetNodes(); auto isInvalidValidNode = [this](auto const& m, auto const& n) { @@ -169,7 +169,7 @@ void CurvilinearGridSmoothing::Solve() double const b = 1.0 - a; // assign current nodal values to the m_gridNodesCache - m_gridNodesCache = m_grid.m_gridNodes; + m_gridNodesCache = m_grid.GetNodes(); // Apply smoothing for (auto m = m_lowerLeft.m_m; m <= m_upperRight.m_m; ++m) diff --git a/libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp index 516d06ee4..4a2cf82b5 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp @@ -113,7 +113,7 @@ TEST(CurvilinearGridSnapping, SnappingThreeSides) //-------------------------------- - CurvilinearGrid grid2(grid.m_gridNodes, Projection::cartesian); + CurvilinearGrid grid2(grid.GetNodes(), Projection::cartesian); snappingLine = std::vector{Point(0, 90.0), Point(0.0, 0.0)}; CurvilinearGridSnapping snappingWest(grid2, westLandBoundary, snappingLine); @@ -161,7 +161,7 @@ TEST(CurvilinearGridSnapping, SnappingThreeSides) //-------------------------------- - CurvilinearGrid grid3(grid2.m_gridNodes, Projection::cartesian); + CurvilinearGrid grid3(grid2.GetNodes(), Projection::cartesian); snappingLine = std::vector{Point({0.0e+00, 1.0e+02}), Point({1.043040e+02, 9.715260e+01})}; CurvilinearGridSnapping snappingNorth(grid3, northLandBoundary, snappingLine); @@ -287,7 +287,7 @@ TEST(CurvilinearGridSnapping, SnappingLineToLandBoundaryNorthTheWest) {0.000000000000e+00, 1.000000000000e+01, 2.000000000000e+01, 3.000000000000e+01, 4.000000000000e+01, 5.000000000000e+01, 6.000000000000e+01, 7.027745348015e+01, 8.243267902243e+01, 9.518460383235e+01, 1.064179136971e+02}, {0.000000000000e+00, 1.000000000000e+01, 2.000000000000e+01, 3.000000000000e+01, 4.000000000000e+01, 5.000000000000e+01, 6.000000000000e+01, 7.021158750721e+01, 8.185517402742e+01, 9.395380659904e+01, 1.048943352951e+02}}; - CurvilinearGrid grid2(grid.m_gridNodes, Projection::cartesian); + CurvilinearGrid grid2(grid.GetNodes(), Projection::cartesian); snappingLine = std::vector{Point(0.0, 90.0), Point(0.0, 0.0)}; CurvilinearGridSnapping snappingWest(grid2, westLandBoundary, snappingLine); snappingWest.Compute(); From 2b73525cf7e74c953046f025b8fd283c812c9716 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Thu, 1 Feb 2024 09:28:33 +0100 Subject: [PATCH 14/33] Using GetNode access method --- .../CurvilinearGridDeleteExterior.cpp | 8 +- .../CurvilinearGridDeleteInterior.cpp | 2 +- .../src/CurvilinearGridSnappingTests.cpp | 132 +++++++++--------- 3 files changed, 71 insertions(+), 71 deletions(-) diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeleteExterior.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeleteExterior.cpp index 6bb38da9f..2afe14bbf 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeleteExterior.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeleteExterior.cpp @@ -54,7 +54,7 @@ void meshkernel::CurvilinearGridDeleteExterior::Compute() { for (UInt m = 0; m < lowerLimitJ; ++m) { - m_grid.m_gridNodes(n, m).SetInvalid(); + m_grid.GetNode(n, m).SetInvalid(); } } @@ -63,7 +63,7 @@ void meshkernel::CurvilinearGridDeleteExterior::Compute() { for (UInt m = lowerLimitJ; m <= upperLimitJ; ++m) { - m_grid.m_gridNodes(n, m).SetInvalid(); + m_grid.GetNode(n, m).SetInvalid(); } } @@ -72,7 +72,7 @@ void meshkernel::CurvilinearGridDeleteExterior::Compute() { for (UInt m = lowerLimitJ; m <= upperLimitJ; ++m) { - m_grid.m_gridNodes(n, m).SetInvalid(); + m_grid.GetNode(n, m).SetInvalid(); } } @@ -81,7 +81,7 @@ void meshkernel::CurvilinearGridDeleteExterior::Compute() { for (UInt m = upperLimitJ + 1; m < m_grid.NumM(); ++m) { - m_grid.m_gridNodes(n, m).SetInvalid(); + m_grid.GetNode(n, m).SetInvalid(); } } } diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeleteInterior.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeleteInterior.cpp index d50252438..ce01e8921 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeleteInterior.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridDeleteInterior.cpp @@ -50,7 +50,7 @@ void meshkernel::CurvilinearGridDeleteInterior::Compute() { for (UInt m = lowerLimitJ + 1; m < upperLimitJ; ++m) { - m_grid.m_gridNodes(n, m).SetInvalid(); + m_grid.GetNode(n, m).SetInvalid(); } } } diff --git a/libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp index 4a2cf82b5..83eb57ef5 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp @@ -96,18 +96,18 @@ TEST(CurvilinearGridSnapping, SnappingThreeSides) // First snap the east boundary of the domain snappingEast.Compute(); - for (Eigen::Index i = 0; i < gridPoints.rows(); ++i) + for (UInt i = 0; i < gridPoints.rows(); ++i) { - for (Eigen::Index j = 0; j < gridPoints.cols(); ++j) + for (UInt j = 0; j < gridPoints.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).x, eastMappedPointsX[i][j], snapping::tolerance) << "Difference in x-points after snapping east: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid.GetNode(i, j).x, eastMappedPointsX[i][j], snapping::tolerance) << "Difference in x-points after snapping east: (" << i << ", " << j << ")"; } } - for (Eigen::Index i = 0; i < gridPoints.rows(); ++i) + for (UInt i = 0; i < gridPoints.rows(); ++i) { - for (Eigen::Index j = 0; j < gridPoints.cols(); ++j) + for (UInt j = 0; j < gridPoints.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).y, eastMappedPointsY[i][j], snapping::tolerance) << "Difference in y-points after snapping east: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid.GetNode(i, j).y, eastMappedPointsY[i][j], snapping::tolerance) << "Difference in y-points after snapping east: (" << i << ", " << j << ")"; } } @@ -144,18 +144,18 @@ TEST(CurvilinearGridSnapping, SnappingThreeSides) {3.364448501894e+00, 9.980938934087e+00, 1.998060582596e+01, 2.998027271784e+01, 3.997993960972e+01, 4.997960650159e+01, 5.997927339347e+01, 6.997894028534e+01, 7.997860717722e+01, 8.997827406910e+01, 9.777374826707e+01}, {4.303172000000e+00, 9.975620656674e+00, 1.997519460719e+01, 2.997476855770e+01, 3.997434250822e+01, 4.997391645874e+01, 5.997349040925e+01, 6.997306435977e+01, 7.997263831028e+01, 8.997221226080e+01, 9.715259600000e+01}}; - for (Eigen::Index i = 0; i < gridPoints.rows(); ++i) + for (UInt i = 0; i < gridPoints.rows(); ++i) { - for (Eigen::Index j = 0; j < gridPoints.cols(); ++j) + for (UInt j = 0; j < gridPoints.cols(); ++j) { - EXPECT_NEAR(grid2.m_gridNodes(i, j).x, westMappedPointsX[i][j], snapping::tolerance) << "Difference in x-points after snapping east: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid2.GetNode(i, j).x, westMappedPointsX[i][j], snapping::tolerance) << "Difference in x-points after snapping east: (" << i << ", " << j << ")"; } } - for (Eigen::Index i = 0; i < gridPoints.rows(); ++i) + for (UInt i = 0; i < gridPoints.rows(); ++i) { - for (Eigen::Index j = 0; j < gridPoints.cols(); ++j) + for (UInt j = 0; j < gridPoints.cols(); ++j) { - EXPECT_NEAR(grid2.m_gridNodes(i, j).y, westMappedPointsY[i][j], snapping::tolerance) << "Difference in y-points after snapping east: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid2.GetNode(i, j).y, westMappedPointsY[i][j], snapping::tolerance) << "Difference in y-points after snapping east: (" << i << ", " << j << ")"; } } @@ -192,18 +192,18 @@ TEST(CurvilinearGridSnapping, SnappingThreeSides) {3.364448501894e+00, 9.980938934087e+00, 1.998060582596e+01, 2.998027271784e+01, 3.997993960972e+01, 4.997960650159e+01, 5.997927339347e+01, 7.049505766060e+01, 8.263723768445e+01, 9.487399319961e+01, 1.033370952633e+02}, {4.303172000000e+00, 9.975620656674e+00, 1.997519460719e+01, 2.997476855770e+01, 3.997434250822e+01, 4.997391645874e+01, 5.997349040925e+01, 7.047785003180e+01, 8.230233592963e+01, 9.410634025831e+01, 1.017586980000e+02}}; - for (Eigen::Index i = 0; i < gridPoints.rows(); ++i) + for (UInt i = 0; i < gridPoints.rows(); ++i) { - for (Eigen::Index j = 0; j < gridPoints.cols(); ++j) + for (UInt j = 0; j < gridPoints.cols(); ++j) { - EXPECT_NEAR(grid3.m_gridNodes(i, j).x, northMappedPointsX[i][j], snapping::tolerance) << "Difference in x-points after snapping east: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid3.GetNode(i, j).x, northMappedPointsX[i][j], snapping::tolerance) << "Difference in x-points after snapping east: (" << i << ", " << j << ")"; } } - for (Eigen::Index i = 0; i < gridPoints.rows(); ++i) + for (UInt i = 0; i < gridPoints.rows(); ++i) { - for (Eigen::Index j = 0; j < gridPoints.cols(); ++j) + for (UInt j = 0; j < gridPoints.cols(); ++j) { - EXPECT_NEAR(grid3.m_gridNodes(i, j).y, northMappedPointsY[i][j], snapping::tolerance) << "Difference in y-points after snapping east: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid3.GetNode(i, j).y, northMappedPointsY[i][j], snapping::tolerance) << "Difference in y-points after snapping east: (" << i << ", " << j << ")"; } } } @@ -253,18 +253,18 @@ TEST(CurvilinearGridSnapping, SnappingLineToLandBoundaryNorthTheWest) snappingNorth.Compute(); - for (Eigen::Index i = 0; i < gridPoints.rows(); ++i) + for (UInt i = 0; i < gridPoints.rows(); ++i) { - for (Eigen::Index j = 0; j < gridPoints.cols(); ++j) + for (UInt j = 0; j < gridPoints.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).x, northMappedPointsX[i][j], snapping::tolerance) << "Difference in x-points after snapping north: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid.GetNode(i, j).x, northMappedPointsX[i][j], snapping::tolerance) << "Difference in x-points after snapping north: (" << i << ", " << j << ")"; } } - for (Eigen::Index i = 0; i < gridPoints.rows(); ++i) + for (UInt i = 0; i < gridPoints.rows(); ++i) { - for (Eigen::Index j = 0; j < gridPoints.cols(); ++j) + for (UInt j = 0; j < gridPoints.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).y, northMappedPointsY[i][j], snapping::tolerance) << "Difference in y-points after snapping north: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid.GetNode(i, j).y, northMappedPointsY[i][j], snapping::tolerance) << "Difference in y-points after snapping north: (" << i << ", " << j << ")"; } } @@ -292,19 +292,19 @@ TEST(CurvilinearGridSnapping, SnappingLineToLandBoundaryNorthTheWest) CurvilinearGridSnapping snappingWest(grid2, westLandBoundary, snappingLine); snappingWest.Compute(); - for (Eigen::Index i = 0; i < gridPoints.rows(); ++i) + for (UInt i = 0; i < gridPoints.rows(); ++i) { - for (Eigen::Index j = 0; j < gridPoints.cols(); ++j) + for (UInt j = 0; j < gridPoints.cols(); ++j) { - EXPECT_NEAR(grid2.m_gridNodes(i, j).x, westMappedPointsX[i][j], snapping::tolerance) << "Difference in x-points after snapping west: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid2.GetNode(i, j).x, westMappedPointsX[i][j], snapping::tolerance) << "Difference in x-points after snapping west: (" << i << ", " << j << ")"; } } - for (Eigen::Index i = 0; i < gridPoints.rows(); ++i) + for (UInt i = 0; i < gridPoints.rows(); ++i) { - for (Eigen::Index j = 0; j < gridPoints.cols(); ++j) + for (UInt j = 0; j < gridPoints.cols(); ++j) { - EXPECT_NEAR(grid2.m_gridNodes(i, j).y, westMappedPointsY[i][j], snapping::tolerance) << "Difference in y-points after snapping west: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid2.GetNode(i, j).y, westMappedPointsY[i][j], snapping::tolerance) << "Difference in y-points after snapping west: (" << i << ", " << j << ")"; } } } @@ -350,18 +350,18 @@ TEST(CurvilinearGridSnapping, SnapBoundaryRegionToEastOnePoint) snapping.Compute(); - for (Eigen::Index i = 0; i < gridPoints.rows(); ++i) + for (UInt i = 0; i < gridPoints.rows(); ++i) { - for (Eigen::Index j = 0; j < gridPoints.cols(); ++j) + for (UInt j = 0; j < gridPoints.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).x, eastMappedGridPointsX[i][j], snapping::tolerance) << "Difference in x-points after snapping east: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid.GetNode(i, j).x, eastMappedGridPointsX[i][j], snapping::tolerance) << "Difference in x-points after snapping east: (" << i << ", " << j << ")"; } } - for (Eigen::Index i = 0; i < gridPoints.rows(); ++i) + for (UInt i = 0; i < gridPoints.rows(); ++i) { - for (Eigen::Index j = 0; j < gridPoints.cols(); ++j) + for (UInt j = 0; j < gridPoints.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).y, eastMappedGridPointsY[i][j], snapping::tolerance) << "Difference in y-points after snapping east: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid.GetNode(i, j).y, eastMappedGridPointsY[i][j], snapping::tolerance) << "Difference in y-points after snapping east: (" << i << ", " << j << ")"; } } } @@ -413,19 +413,19 @@ TEST(CurvilinearGridSnapping, SnapBoundaryRegionToEastTwoPoints) snapping.Compute(); // Check results - for (Eigen::Index i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) { - for (Eigen::Index j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).x, mappedPointsX[i][j], snapping::tolerance); + EXPECT_NEAR(grid.GetNode(i, j).x, mappedPointsX[i][j], snapping::tolerance); } } - for (Eigen::Index i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) { - for (Eigen::Index j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).y, mappedPointsY[i][j], snapping::tolerance); + EXPECT_NEAR(grid.GetNode(i, j).y, mappedPointsY[i][j], snapping::tolerance); } } } @@ -480,19 +480,19 @@ TEST(CurvilinearGridSnapping, SnapPartialBoundaryRegionToWest) // Compute snapping to land boundary snapping.Compute(); - for (Eigen::Index i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) { - for (Eigen::Index j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).x, mappedPointsX[i][j], snapping::tolerance); + EXPECT_NEAR(grid.GetNode(i, j).x, mappedPointsX[i][j], snapping::tolerance); } } - for (Eigen::Index i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) { - for (Eigen::Index j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).y, mappedPointsY[i][j], snapping::tolerance); + EXPECT_NEAR(grid.GetNode(i, j).y, mappedPointsY[i][j], snapping::tolerance); } } } @@ -547,19 +547,19 @@ TEST(CurvilinearGridSnapping, SnapPartialBoundaryRegionToNorthTwoPoints) // Compute snapping to land boundary snapping.Compute(); - for (Eigen::Index i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) { - for (Eigen::Index j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).x, mappedPointsX[i][j], snapping::tolerance); + EXPECT_NEAR(grid.GetNode(i, j).x, mappedPointsX[i][j], snapping::tolerance); } } - for (Eigen::Index i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) { - for (Eigen::Index j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).y, mappedPointsY[i][j], snapping::tolerance); + EXPECT_NEAR(grid.GetNode(i, j).y, mappedPointsY[i][j], snapping::tolerance); } } } @@ -615,19 +615,19 @@ TEST(CurvilinearGridSnapping, SnapPartialBoundaryRegionToNorthFourPoints) // Compute snapping to land boundary snapping.Compute(); - for (Eigen::Index i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) { - for (Eigen::Index j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).x, mappedPointsX[i][j], snapping::tolerance) << "Difference in x-points: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid.GetNode(i, j).x, mappedPointsX[i][j], snapping::tolerance) << "Difference in x-points: (" << i << ", " << j << ")"; } } - for (Eigen::Index i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) { - for (Eigen::Index j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).y, mappedPointsY[i][j], snapping::tolerance) << "Difference in y-points: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid.GetNode(i, j).y, mappedPointsY[i][j], snapping::tolerance) << "Difference in y-points: (" << i << ", " << j << ")"; } } } @@ -684,19 +684,19 @@ TEST(CurvilinearGridSnapping, SnapPartialOffsetBoundaryRegionToNorthFourPoints) // Compute snapping to land boundary snapping.Compute(); - for (Eigen::Index i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) { - for (Eigen::Index j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).x, mappedPointsX[i][j], snapping::tolerance) << "Difference in x-points: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid.GetNode(i, j).x, mappedPointsX[i][j], snapping::tolerance) << "Difference in x-points: (" << i << ", " << j << ")"; } } - for (Eigen::Index i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) { - for (Eigen::Index j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) { - EXPECT_NEAR(grid.m_gridNodes(i, j).y, mappedPointsY[i][j], snapping::tolerance) << "Difference in y-points: (" << i << ", " << j << ")"; + EXPECT_NEAR(grid.GetNode(i, j).y, mappedPointsY[i][j], snapping::tolerance) << "Difference in y-points: (" << i << ", " << j << ")"; } } } From d7fac5bc7d2d4d51a034f95149f12bcf9bfc47cc Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Thu, 1 Feb 2024 10:47:41 +0100 Subject: [PATCH 15/33] Added asserts for the increasing number of rows/cols --- .../MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp index 705297903..525778689 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridLineMirrorTests.cpp @@ -96,6 +96,7 @@ TEST(CurvilinearLineMirror, Compute_LineMirrorOnUpperBoundary_ShouldAddFacesOnUp { // Set-up const auto curvilinearGrid = MakeSmallCurvilinearGrid(); + ASSERT_EQ(9, curvilinearGrid->NumN()); meshkernel::CurvilinearGridLineMirror curvilinearLineMirror(*curvilinearGrid, 1.2); curvilinearLineMirror.SetLine({80960.2, 366520.7}, {80609.8, 367406.0}); @@ -103,6 +104,8 @@ TEST(CurvilinearLineMirror, Compute_LineMirrorOnUpperBoundary_ShouldAddFacesOnUp curvilinearLineMirror.Compute(); // Asserts + ASSERT_EQ(10, curvilinearGrid->NumN()); + constexpr double tolerance = 1e-6; const auto last = (meshkernel::UInt)curvilinearGrid->NumN() - 1; ASSERT_NEAR(80703.065731618568, curvilinearGrid->GetNode(0, last).x, tolerance); @@ -155,6 +158,7 @@ TEST(CurvilinearLineMirror, Compute_LineMirrorOnRightBoundary_ShouldAddFacesOnRi { // Set-up const auto curvilinearGrid = MakeSmallCurvilinearGrid(); + ASSERT_EQ(5, curvilinearGrid->NumM()); meshkernel::CurvilinearGridLineMirror curvilinearLineMirror(*curvilinearGrid, 1.2); curvilinearLineMirror.SetLine({80155.8, 366529.5}, {80960.2, 366520.72}); @@ -162,6 +166,8 @@ TEST(CurvilinearLineMirror, Compute_LineMirrorOnRightBoundary_ShouldAddFacesOnRi curvilinearLineMirror.Compute(); // Asserts + ASSERT_EQ(6, curvilinearGrid->NumM()); + constexpr double tolerance = 1e-6; const std::vector expected{ {80180.468545087249, 366414.38889474329}, From 799f951549ef0a441fd6ad8dbbbe61fa330964d6 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Thu, 1 Feb 2024 10:49:48 +0100 Subject: [PATCH 16/33] Use last row/column index consistently --- .../CurvilinearGrid/CurvilinearGridLineMirror.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineMirror.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineMirror.cpp index fc41159d7..c8cdd791a 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineMirror.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridLineMirror.cpp @@ -73,15 +73,15 @@ void CurvilinearGridLineMirror::Compute() } if (gridLineType == CurvilinearGrid::BoundaryGridLineType::Right) { - auto const last_row = (UInt)m_grid.m_gridNodes.rows() - 1; - m_grid.GetNode(last_row, i) = m_grid.GetNode(m_grid.NumM() - 1, i) * a + - m_grid.GetNode(m_grid.NumM() - 2, i) * b; + auto const last_row = (UInt)m_grid.NumM() - 1; + m_grid.GetNode(last_row, i) = m_grid.GetNode(last_row - 1, i) * a + + m_grid.GetNode(last_row - 2, i) * b; } if (gridLineType == CurvilinearGrid::BoundaryGridLineType::Up) { - auto const last_col = (UInt)m_grid.m_gridNodes.cols() - 1; - m_grid.GetNode(i, last_col) = m_grid.GetNode(i, m_grid.NumN() - 1) * a + - m_grid.GetNode(i, m_grid.NumN() - 2) * b; + auto const last_col = (UInt)m_grid.NumN() - 1; + m_grid.GetNode(i, last_col) = m_grid.GetNode(i, last_col - 1) * a + + m_grid.GetNode(i, last_col - 2) * b; } if (gridLineType == CurvilinearGrid::BoundaryGridLineType::Bottom) { From 4c98e81a46a177bfd0bb500b908595074af0787d Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Thu, 1 Feb 2024 10:59:50 +0100 Subject: [PATCH 17/33] Use matrix dimensions for NumM and NumN --- .../include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp | 6 ++---- libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp | 7 ------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index 1622d8776..d7ce354d4 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -241,11 +241,11 @@ namespace meshkernel public: /// @brief The number of columns of nodes /// @return A number >= 2 for a valid curvilinear grid - UInt NumM() const { return m_numM; } + UInt NumM() const { return static_cast(m_gridNodes.rows()); } /// @brief The number of rows of nodes /// @return A number >= 2 for a valid curvilinear grid - UInt NumN() const { return m_numN; } + UInt NumN() const { return static_cast(m_gridNodes.cols()); } /// @brief Is the node matrix empty /// @return true iff the node matrix is empty @@ -286,8 +286,6 @@ namespace meshkernel void AddEdge(CurvilinearGridNodeIndices const& firstNode, CurvilinearGridNodeIndices const& secondNode); - UInt m_numM = 0; ///< The number of m coordinates (columns, or vertical lines) - UInt m_numN = 0; ///< The number of n coordinates (rows, or horizontal lines) lin_alg::Matrix m_gridFacesMask; ///< The mask of the grid faces (true/false) lin_alg::Matrix m_gridNodesTypes; ///< The grid node types std::vector m_gridIndices; ///< The original mapping of the flatten nodes in the curvilinear grid diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp index 77ff4e13a..f8365a452 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp @@ -36,8 +36,6 @@ using meshkernel::CurvilinearGridNodeIndices; CurvilinearGrid::CurvilinearGrid(const CurvilinearGrid& grid) : Mesh(grid.m_edges, grid.m_nodes, grid.m_projection), m_gridNodes(grid.m_gridNodes), - m_numM(grid.NumM()), - m_numN(grid.NumN()), m_gridFacesMask(grid.m_gridFacesMask), m_gridNodesTypes(grid.m_gridNodesTypes), m_gridIndices(grid.m_gridIndices) @@ -60,9 +58,6 @@ void CurvilinearGrid::SetGridNodes(const lin_alg::Matrix& gridNodes) throw std::invalid_argument("CurvilinearGrid::CurvilinearGrid: Invalid curvilinear grid"); } - m_numM = static_cast(m_gridNodes.rows()); - m_numN = static_cast(m_gridNodes.cols()); - m_nodesRTreeRequiresUpdate = true; m_edgesRTreeRequiresUpdate = true; m_facesRTreeRequiresUpdate = true; @@ -158,8 +153,6 @@ void CurvilinearGrid::SetFlatCopies() return; } - m_numM = static_cast(m_gridNodes.rows()); - m_numN = static_cast(m_gridNodes.cols()); const auto [nodes, edges, gridIndices] = ConvertCurvilinearToNodesAndEdges(); m_nodes = nodes; m_edges = edges; From 0cfc139faa0336be196a3cd7f1bc10f8bfcfa816 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Thu, 1 Feb 2024 11:09:44 +0100 Subject: [PATCH 18/33] Use NumM and NumN methods for grid dimensions --- .../MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp index fce1d5242..a6bee33fa 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGridSmoothing.cpp @@ -39,7 +39,7 @@ CurvilinearGridSmoothing::CurvilinearGridSmoothing(CurvilinearGrid& grid, UInt s { // Allocate cache for storing grid nodes values // ResizeAndFill2DVector(m_gridNodesCache, static_cast(m_grid.m_gridNodes.size()), static_cast(m_grid.m_gridNodes[0].size())); - lin_alg::ResizeAndFillMatrix(m_gridNodesCache, m_grid.m_gridNodes.rows(), m_grid.m_gridNodes.cols(), true); + lin_alg::ResizeAndFillMatrix(m_gridNodesCache, m_grid.NumM(), m_grid.NumN(), true); // Compute the grid node types m_grid.ComputeGridNodeTypes(); From dff3f544eb4d06bcfda4246628d1ba1eb6dc17c9 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Thu, 1 Feb 2024 11:10:33 +0100 Subject: [PATCH 19/33] Use NumM and NumN methods for grid dimensions --- .../src/CurvilinearGridSnappingTests.cpp | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp index 83eb57ef5..359084ad5 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridSnappingTests.cpp @@ -413,17 +413,17 @@ TEST(CurvilinearGridSnapping, SnapBoundaryRegionToEastTwoPoints) snapping.Compute(); // Check results - for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.NumM(); ++i) { - for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.NumN(); ++j) { EXPECT_NEAR(grid.GetNode(i, j).x, mappedPointsX[i][j], snapping::tolerance); } } - for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.NumM(); ++i) { - for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.NumN(); ++j) { EXPECT_NEAR(grid.GetNode(i, j).y, mappedPointsY[i][j], snapping::tolerance); } @@ -480,17 +480,17 @@ TEST(CurvilinearGridSnapping, SnapPartialBoundaryRegionToWest) // Compute snapping to land boundary snapping.Compute(); - for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.NumM(); ++i) { - for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.NumN(); ++j) { EXPECT_NEAR(grid.GetNode(i, j).x, mappedPointsX[i][j], snapping::tolerance); } } - for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.NumM(); ++i) { - for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.NumN(); ++j) { EXPECT_NEAR(grid.GetNode(i, j).y, mappedPointsY[i][j], snapping::tolerance); } @@ -547,17 +547,17 @@ TEST(CurvilinearGridSnapping, SnapPartialBoundaryRegionToNorthTwoPoints) // Compute snapping to land boundary snapping.Compute(); - for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.NumM(); ++i) { - for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.NumN(); ++j) { EXPECT_NEAR(grid.GetNode(i, j).x, mappedPointsX[i][j], snapping::tolerance); } } - for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.NumM(); ++i) { - for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.NumN(); ++j) { EXPECT_NEAR(grid.GetNode(i, j).y, mappedPointsY[i][j], snapping::tolerance); } @@ -615,17 +615,17 @@ TEST(CurvilinearGridSnapping, SnapPartialBoundaryRegionToNorthFourPoints) // Compute snapping to land boundary snapping.Compute(); - for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.NumM(); ++i) { - for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.NumN(); ++j) { EXPECT_NEAR(grid.GetNode(i, j).x, mappedPointsX[i][j], snapping::tolerance) << "Difference in x-points: (" << i << ", " << j << ")"; } } - for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.NumM(); ++i) { - for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.NumN(); ++j) { EXPECT_NEAR(grid.GetNode(i, j).y, mappedPointsY[i][j], snapping::tolerance) << "Difference in y-points: (" << i << ", " << j << ")"; } @@ -684,17 +684,17 @@ TEST(CurvilinearGridSnapping, SnapPartialOffsetBoundaryRegionToNorthFourPoints) // Compute snapping to land boundary snapping.Compute(); - for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.NumM(); ++i) { - for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.NumN(); ++j) { EXPECT_NEAR(grid.GetNode(i, j).x, mappedPointsX[i][j], snapping::tolerance) << "Difference in x-points: (" << i << ", " << j << ")"; } } - for (UInt i = 0; i < grid.m_gridNodes.rows(); ++i) + for (UInt i = 0; i < grid.NumM(); ++i) { - for (UInt j = 0; j < grid.m_gridNodes.cols(); ++j) + for (UInt j = 0; j < grid.NumN(); ++j) { EXPECT_NEAR(grid.GetNode(i, j).y, mappedPointsY[i][j], snapping::tolerance) << "Difference in y-points: (" << i << ", " << j << ")"; } From b8bd3f38cec418dd95d6183a77b0c33679e3361a Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Thu, 1 Feb 2024 11:13:36 +0100 Subject: [PATCH 20/33] Make gridnodes member private --- .../include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index d7ce354d4..97db22bb7 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -236,9 +236,6 @@ namespace meshkernel /// @brief Get the mesh bounding box. BoundingBox GetBoundingBox() const; - lin_alg::Matrix m_gridNodes; ///< Member variable storing the grid - - public: /// @brief The number of columns of nodes /// @return A number >= 2 for a valid curvilinear grid UInt NumM() const { return static_cast(m_gridNodes.rows()); } @@ -286,6 +283,7 @@ namespace meshkernel void AddEdge(CurvilinearGridNodeIndices const& firstNode, CurvilinearGridNodeIndices const& secondNode); + lin_alg::Matrix m_gridNodes; ///< Member variable storing the grid lin_alg::Matrix m_gridFacesMask; ///< The mask of the grid faces (true/false) lin_alg::Matrix m_gridNodesTypes; ///< The grid node types std::vector m_gridIndices; ///< The original mapping of the flatten nodes in the curvilinear grid From a6dc73e8521f4ce54d87b3905eb4d059d8182308 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Thu, 1 Feb 2024 11:40:56 +0100 Subject: [PATCH 21/33] Using NumM and NumN for dimensions --- .../src/CurvilinearGrid/CurvilinearGrid.cpp | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp index f8365a452..24654bc74 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp @@ -79,8 +79,8 @@ void CurvilinearGrid::Delete(std::shared_ptr polygons, UInt polygonInd return; } - const auto numN = static_cast(m_gridNodes.rows()); - const auto numM = static_cast(m_gridNodes.cols()); + const auto numN = static_cast(NumM()); + const auto numM = static_cast(NumN()); lin_alg::Matrix nodeBasedMask(numN, numM); nodeBasedMask.fill(false); @@ -169,19 +169,19 @@ CurvilinearGrid::ConvertCurvilinearToNodesAndEdges() const throw std::invalid_argument("CurvilinearGrid::ConvertCurvilinearToNodesAndEdges: Invalid curvilinear grid "); } - std::vector nodes(m_gridNodes.rows() * m_gridNodes.cols()); - std::vector edges(m_gridNodes.rows() * (m_gridNodes.cols() - 1) + - (m_gridNodes.rows() - 1) * m_gridNodes.cols()); - lin_alg::Matrix nodeIndices(m_gridNodes.rows(), m_gridNodes.cols()); + std::vector nodes(NumM() * NumN()); + std::vector edges(NumM() * (NumN() - 1) + + (NumM() - 1) * NumN()); + lin_alg::Matrix nodeIndices(NumM(), NumN()); nodeIndices.setConstant(constants::missing::uintValue); std::vector gridIndices(nodes.size(), CurvilinearGridNodeIndices{constants::missing::uintValue, constants::missing::uintValue}); UInt ind = 0; - for (UInt m = 0; m < m_gridNodes.rows(); m++) + for (UInt m = 0; m < NumM(); m++) { - for (UInt n = 0; n < m_gridNodes.cols(); n++) + for (UInt n = 0; n < NumN(); n++) { nodes[ind] = m_gridNodes(m, n); nodeIndices(m, n) = ind; @@ -191,9 +191,9 @@ CurvilinearGrid::ConvertCurvilinearToNodesAndEdges() const } ind = 0; - for (UInt m = 0; m < m_gridNodes.rows() - 1; m++) + for (UInt m = 0; m < NumM() - 1; m++) { - for (UInt n = 0; n < m_gridNodes.cols(); n++) + for (UInt n = 0; n < NumN(); n++) { if (nodeIndices(m, n) != constants::missing::uintValue && nodeIndices(m + 1, n) != constants::missing::uintValue) @@ -205,9 +205,9 @@ CurvilinearGrid::ConvertCurvilinearToNodesAndEdges() const } } - for (UInt m = 0; m < m_gridNodes.rows(); m++) + for (UInt m = 0; m < NumM(); m++) { - for (UInt n = 0; n < m_gridNodes.cols() - 1; n++) + for (UInt n = 0; n < NumN() - 1; n++) { if (nodeIndices(m, n) != constants::missing::uintValue && nodeIndices(m, n + 1) != constants::missing::uintValue) @@ -229,11 +229,11 @@ bool CurvilinearGrid::IsValid() const { return false; } - if (m_gridNodes.rows() < 2) + if (NumM() < 2) { return false; } - if (m_gridNodes.cols() < 2) + if (NumN() < 2) { return false; } @@ -650,28 +650,28 @@ bool CurvilinearGrid::AddGridLineAtBoundary(CurvilinearGridNodeIndices const& fi if (gridLineType == BoundaryGridLineType::Left) { lin_alg::InsertRow(m_gridNodes, - lin_alg::RowVector(m_gridNodes.cols()), + lin_alg::RowVector(NumN()), 0); gridSizeChanged = true; } if (gridLineType == BoundaryGridLineType::Right) { lin_alg::InsertRow(m_gridNodes, - lin_alg::RowVector(m_gridNodes.cols()), - m_gridNodes.rows()); + lin_alg::RowVector(NumN()), + NumM()); gridSizeChanged = true; } if (gridLineType == BoundaryGridLineType::Up) { lin_alg::InsertCol(m_gridNodes, - lin_alg::ColVector(m_gridNodes.rows()), - m_gridNodes.cols()); + lin_alg::ColVector(NumM()), + NumN()); gridSizeChanged = true; } if (gridLineType == BoundaryGridLineType::Bottom) { lin_alg::InsertCol(m_gridNodes, - lin_alg::ColVector(m_gridNodes.rows()), + lin_alg::ColVector(NumM()), 0); gridSizeChanged = true; } @@ -805,7 +805,7 @@ CurvilinearGrid::ComputeDirectionalSmoothingFactors(CurvilinearGridNodeIndices c double CurvilinearGrid::ComputeAverageNodalDistance(CurvilinearGridNodeIndices const& index, CurvilinearGridLine::GridLineDirection direction) { - if (index.m_m > m_gridNodes.rows() || index.m_n > m_gridNodes.cols()) + if (index.m_m > NumM() || index.m_n > NumN()) { throw std::invalid_argument("CurvilinearGrid::ComputeAverageNodalDistance: invalid index coordinates"); } @@ -824,7 +824,7 @@ double CurvilinearGrid::ComputeAverageNodalDistance(CurvilinearGridNodeIndices c leftDistance = ComputeDistance(m_gridNodes(index.m_m, index.m_n), m_gridNodes(index.m_m - 1, index.m_n), m_projection); numEdges += 1; } - if (index.m_m + 1 < m_gridNodes.rows() && m_gridNodes(index.m_m + 1, index.m_n).IsValid()) + if (index.m_m + 1 < NumM() && m_gridNodes(index.m_m + 1, index.m_n).IsValid()) { rightDistance = ComputeDistance(m_gridNodes(index.m_m, index.m_n), m_gridNodes(index.m_m + 1, index.m_n), m_projection); numEdges += 1; @@ -841,7 +841,7 @@ double CurvilinearGrid::ComputeAverageNodalDistance(CurvilinearGridNodeIndices c bottomDistance = ComputeDistance(m_gridNodes(index.m_m, index.m_n), m_gridNodes(index.m_m, index.m_n - 1), m_projection); numEdges += 1; } - if (index.m_n + 1 < m_gridNodes.cols() && m_gridNodes(index.m_m, index.m_n + 1).IsValid()) + if (index.m_n + 1 < NumN() && m_gridNodes(index.m_m, index.m_n + 1).IsValid()) { upDistance = ComputeDistance(m_gridNodes(index.m_m, index.m_n), m_gridNodes(index.m_m, index.m_n + 1), m_projection); numEdges += 1; @@ -917,12 +917,12 @@ meshkernel::BoundingBox CurvilinearGrid::GetBoundingBox() const Point lowerLeft(std::numeric_limits::max(), std::numeric_limits::max()); Point upperRight(-std::numeric_limits::max(), -std::numeric_limits::max()); - size_t last = m_gridNodes.rows() - 1; + size_t last = NumM() - 1; // Only need to loop over boundary nodes // First loop over lower boundary (i,0) - for (Eigen::Index i = 0; i < m_gridNodes.rows(); ++i) + for (Eigen::Index i = 0; i < NumM(); ++i) { lowerLeft.x = std::min(lowerLeft.x, m_gridNodes(i, 0).x); lowerLeft.y = std::min(lowerLeft.y, m_gridNodes(i, 0).y); @@ -931,7 +931,7 @@ meshkernel::BoundingBox CurvilinearGrid::GetBoundingBox() const } // First loop over right boundary (last,i) - for (Eigen::Index i = 0; i < m_gridNodes.cols(); ++i) + for (Eigen::Index i = 0; i < NumN(); ++i) { lowerLeft.x = std::min(lowerLeft.x, m_gridNodes(last, i).x); lowerLeft.y = std::min(lowerLeft.y, m_gridNodes(last, i).y); @@ -940,10 +940,10 @@ meshkernel::BoundingBox CurvilinearGrid::GetBoundingBox() const } // This assumes that each column has the same number of points - last = m_gridNodes.cols() - 1; + last = NumN() - 1; // First loop over upper boundary (i,last) - for (Eigen::Index i = 0; i < m_gridNodes.rows(); ++i) + for (Eigen::Index i = 0; i < NumM(); ++i) { lowerLeft.x = std::min(lowerLeft.x, m_gridNodes(i, last).x); lowerLeft.y = std::min(lowerLeft.y, m_gridNodes(i, last).y); @@ -952,7 +952,7 @@ meshkernel::BoundingBox CurvilinearGrid::GetBoundingBox() const } // First loop over left boundary (0,i) - for (Eigen::Index i = 0; i < m_gridNodes.cols(); ++i) + for (Eigen::Index i = 0; i < NumN(); ++i) { lowerLeft.x = std::min(lowerLeft.x, m_gridNodes(0, i).x); lowerLeft.y = std::min(lowerLeft.y, m_gridNodes(0, i).y); From 9729fcd9ff1cda466683513ef43617d480cdbeb4 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Mon, 5 Feb 2024 13:35:58 +0100 Subject: [PATCH 22/33] Adjusted documentation of NumN and NumM --- .../include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index 97db22bb7..de8826d54 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -236,11 +236,11 @@ namespace meshkernel /// @brief Get the mesh bounding box. BoundingBox GetBoundingBox() const; - /// @brief The number of columns of nodes + /// @brief The number of nodes M in the m dimension /// @return A number >= 2 for a valid curvilinear grid UInt NumM() const { return static_cast(m_gridNodes.rows()); } - /// @brief The number of rows of nodes + /// @brief The number of nodes N in the n dimension /// @return A number >= 2 for a valid curvilinear grid UInt NumN() const { return static_cast(m_gridNodes.cols()); } From 0a73429f40e56c82e27a03f932d9c8edb773b361 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Mon, 5 Feb 2024 13:36:41 +0100 Subject: [PATCH 23/33] Adjusted comment of GetNodes --- .../include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index de8826d54..2dee4b076 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -249,7 +249,7 @@ namespace meshkernel bool IsEmpty() const { return lin_alg::MatrixIsEmpty(m_gridNodes); } /// @brief Get a copy of the nodes matrix - /// @note:rows are stored as columns and vice versa + /// @note:the m dimension is the first (or row) index, the n dimension is the second (or column) index /// @return a copy of the matrix lin_alg::Matrix GetNodes() const { return m_gridNodes; } From f0bbda85a90e6ef46af6f9ed8f0144d7276f7333 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Mon, 5 Feb 2024 13:43:36 +0100 Subject: [PATCH 24/33] Renamed and fixed documentation for getters of row/column vectors --- .../CurvilinearGrid/CurvilinearGrid.hpp | 20 +++++++++---------- libs/MeshKernel/src/Splines.cpp | 4 ++-- .../src/CurvilinearGridRectangularTests.cpp | 4 ++-- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index 2dee4b076..f8d57112e 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -253,17 +253,15 @@ namespace meshkernel /// @return a copy of the matrix lin_alg::Matrix GetNodes() const { return m_gridNodes; } - /// @brief Get a column of nodes as STL vector - /// @note:rows are stored as columns and vice versa - /// @param [in] m the column index - /// @return a vector of NumN nodes - std::vector GetNodeColumnVector(UInt m) const { return lin_alg::MatrixRowToSTLVector(m_gridNodes, m); } - - /// @brief Get a row of nodes as STL vector - /// @note:rows are stored as columns and vice versa - /// @param [in] n the row index - /// @return a vector of NumM nodes - std::vector GetNodeRowVector(UInt n) const { return lin_alg::MatrixColToSTLVector(m_gridNodes, n); } + /// @brief Get the array of nodes at an m-dimension index + /// @param [in] m the m-dimension index + /// @return a vector of N nodes + std::vector GetNodeVectorAtM(UInt m) const { return lin_alg::MatrixRowToSTLVector(m_gridNodes, m); } + + /// @brief Get the array of nodes at an n-dimension index + /// @param [in] n the n-dimension index + /// @return a vector of M nodes + std::vector GetNodeVectorAtN(UInt n) const { return lin_alg::MatrixColToSTLVector(m_gridNodes, n); } private: /// @brief Remove invalid nodes. diff --git a/libs/MeshKernel/src/Splines.cpp b/libs/MeshKernel/src/Splines.cpp index cce20cd37..ced60d7d6 100644 --- a/libs/MeshKernel/src/Splines.cpp +++ b/libs/MeshKernel/src/Splines.cpp @@ -45,13 +45,13 @@ Splines::Splines(CurvilinearGrid const& grid) // first the m_n m_m-gridlines for (UInt n = 0; n < grid.NumN(); ++n) { - AddSpline(grid.GetNodeRowVector(n)); + AddSpline(grid.GetNodeVectorAtN(n)); } // then the m_m m_n-gridlines for (UInt m = 0; m < grid.NumM(); ++m) { - AddSpline(grid.GetNodeColumnVector(m)); + AddSpline(grid.GetNodeVectorAtM(m)); } m_projection = grid.m_projection; diff --git a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp index 8314fc5db..a65be89e5 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp @@ -506,11 +506,11 @@ TEST(CurvilinearGridUniform, GetNodes_ReturnsCopyOfNodeMatrix) TEST(CurvilinearGridUniform, GetRowVector_ReturnsVectorOfLengthNumM) { const auto subject = MakeCurvilinearGrid(0., 0., 1., 1., 2, 3); - EXPECT_EQ(subject->NumM(), subject->GetNodeRowVector(1).size()); + EXPECT_EQ(subject->NumM(), subject->GetNodeVectorAtN(1).size()); } TEST(CurvilinearGridUniform, GetColumnVector_ReturnsVectorOfLengthNumN) { const auto subject = MakeCurvilinearGrid(0., 0., 1., 1., 2, 3); - EXPECT_EQ(subject->NumN(), subject->GetNodeColumnVector(1).size()); + EXPECT_EQ(subject->NumN(), subject->GetNodeVectorAtM(1).size()); } From d2fb82d5ce9159b600dce9bce50da9d7654bdab9 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Mon, 5 Feb 2024 13:48:17 +0100 Subject: [PATCH 25/33] Renamed parameters and updated documentation --- .../CurvilinearGrid/CurvilinearGrid.hpp | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index f8d57112e..df5e8b750 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -109,17 +109,15 @@ namespace meshkernel /// @param[in] point The input grid points [[nodiscard]] CurvilinearGridNodeIndices GetNodeIndices(Point point); - /// @brief Gets a reference to the grid node at the (i,j) location - /// @note:rows of nodes are stored in matrix columns and vice versa - /// @param [in] i column index of node - /// @param [in] j row index of node - [[nodiscard]] meshkernel::Point& GetNode(const UInt i, const UInt j) { return m_gridNodes(i, j); } - - /// @brief Gets a constant reference to the grid node at the (i,j) location - /// @note:rows of nodes are stored in matrix columns and vice versa - /// @param [in] i column index of node - /// @param [in] j row index of node - [[nodiscard]] meshkernel::Point const& GetNode(const UInt i, const UInt j) const { return m_gridNodes(i, j); } + /// @brief Gets a reference to the grid node at the (m,n) location + /// @param[in] m The m-dimension index + /// @param[in] n The n-dimension index + [[nodiscard]] meshkernel::Point& GetNode(const UInt m, const UInt n) { return m_gridNodes(m, n); } + + /// @brief Gets a constant reference to the grid node at the (m,n) location + /// @param[in] m The m-dimension index + /// @param[in] n The n-dimension index + [[nodiscard]] meshkernel::Point const& GetNode(const UInt m, const UInt n) const { return m_gridNodes(m, n); } /// @brief Gets a reference to the grid node at the location specified by the index. /// @note Exception will be raised for a non-valid index From 59018dc44dedcdd4e19cf994bfe657c08f32ffe0 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Mon, 5 Feb 2024 13:57:46 +0100 Subject: [PATCH 26/33] Made parameter comments consistent --- .../MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index df5e8b750..c368d7162 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -152,20 +152,21 @@ namespace meshkernel void ComputeGridNodeTypes(); /// @brief Determines the grid node type - /// @param[in] m The m coordinate - /// @param[in] n The n coordinate + /// @param[in] m The m-dimension index + /// @param[in] n The n-dimension index /// @return the node type NodeType GetNodeType(UInt m, UInt n) const { return m_gridNodesTypes(m, n); } /// @brief Determines if all nodes of a face are valid. /// A face is valid if all its nodes are valid. - /// @param[in] m The m coordinate - /// @param[in] n The n coordinate + /// @param[in] m The m-dimension index + /// @param[in] n The n-dimension index /// @return True if the face is valid, false otherwise [[nodiscard]] bool AreFaceNodesValid(UInt m, UInt n) const; /// @brief Determines if the face mask is true (valid face) or false (invalid face) - /// @note the face mask values are determined by the result of the valid face-nodes test + /// @param[in] m The m-dimension index + /// @param[in] n The n-dimension index /// @return the face mask value (true/false) [[nodiscard]] bool IsFaceMaskValid(UInt m, UInt n) const { return m_gridFacesMask(m, n); } From de7c6a27e84fffb4b7fc49937625b09a4bd775a2 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Mon, 5 Feb 2024 14:07:07 +0100 Subject: [PATCH 27/33] Document row/column to m/n correspondence --- .../include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index c368d7162..39d6773f1 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -81,11 +81,13 @@ namespace meshkernel explicit CurvilinearGrid(Projection projection); /// @brief Lvalue constructor. Creates a new curvilinear grid from a given set of points + /// @details The matrix row index corresponds to the CurvilinearGrid m index, the matrix column index corresponds to the CurvilinearGrid n index /// @param[in] grid The input grid points /// @param[in] projection The projection to use CurvilinearGrid(lin_alg::Matrix const& grid, Projection projection); /// @brief Set the grid nodes of a curvilinear grid instance + /// @details The matrix row index corresponds to the CurvilinearGrid m index, the matrix column index corresponds to the CurvilinearGrid n index /// @param[in] gridNodes The input grid points void SetGridNodes(const lin_alg::Matrix& gridNodes); From 7e16ef73cbf86a6a130c021a3d9593e92710ec83 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Mon, 5 Feb 2024 15:36:44 +0100 Subject: [PATCH 28/33] Documented behavior of SetFlatCopies and ConvertCurvilinearToNodesAndEdges --- .../include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp index 39d6773f1..a56b6857e 100644 --- a/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp +++ b/libs/MeshKernel/include/MeshKernel/CurvilinearGrid/CurvilinearGrid.hpp @@ -101,10 +101,15 @@ namespace meshkernel [[nodiscard]] bool IsValid() const; /// @brief Converting a curvilinear mesh to a set of nodes, edges and returns the original mapping (gridtonet) + /// @details Nodes and grid indices from the matrix are serialized in row-major order (n runs fastest). + /// Edges are serialized as follows: first all m-oriented edges ((m,n)-(m+1,n)) in row-major order, then all + /// n-oriented edges ((m,n)-(m,n+1)), in row-major order. + /// @note Also invalid nodes are serialized to points, edges and grid indices /// @returns The nodes, the edges, and the original mapping (m and n indices for each node) [[nodiscard]] std::tuple, std::vector, std::vector> ConvertCurvilinearToNodesAndEdges() const; /// @brief Set internal flat copies of nodes and edges, so the pointer to the first entry is communicated with the front-end + /// @details The Mesh nodes and edges arrays, and the grid node indices array are populated by the result of ConvertCurvilinearToNodesAndEdges. void SetFlatCopies(); /// @brief Get the m and n indices of the node closest to the point From 1e17f03192df88e0d4f49557ba60e56d647a0526 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Mon, 5 Feb 2024 16:23:19 +0100 Subject: [PATCH 29/33] Added node serialization test --- .../src/CurvilinearGridRectangularTests.cpp | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp index a65be89e5..8c7632c72 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp @@ -514,3 +514,27 @@ TEST(CurvilinearGridUniform, GetColumnVector_ReturnsVectorOfLengthNumN) const auto subject = MakeCurvilinearGrid(0., 0., 1., 1., 2, 3); EXPECT_EQ(subject->NumN(), subject->GetNodeVectorAtM(1).size()); } + +TEST(CurvilinearGridUniform, ConvertCurvilinearToNodesAndEdges_ReturnsSerializedNodes) +{ + // note: this is a characterization test to document the current behavior of MakeCurvilinearGrid, + // the constructor of CurvilinearGrid taking a matrix of points, and + // CurvilinearGrid::ConvertCurvilinearToNodesAndEdges + // A grid of nx=3 and ny=2 returns node coordinates with 3 y-coordinates and 2 x-coordinates!!! + const auto grid = MakeCurvilinearGrid(2.0, 1.0, 2.0, 1.0, 3, 2); + + EXPECT_EQ(3, grid->NumM()); + EXPECT_EQ(2, grid->NumN()); + + const auto [nodes, edges, gridIndices] = grid->ConvertCurvilinearToNodesAndEdges(); + const std::vector expected_nodes = {{2., 1.}, {2., 2.}, {4., 1.}, {4., 2.}, {6., 1.}, {6., 2.}}; + + EXPECT_EQ(expected_nodes.size(), nodes.size()); + for (size_t i = 0; i < nodes.size(); ++i) + { + EXPECT_TRUE(meshkernel::IsEqual(expected_nodes[i], nodes[i], 1e-4)) + << "#" << i << ": " + << "(" << expected_nodes[i].x << "," << expected_nodes[i].y << ") != " + << "(" << nodes[i].x << "," << nodes[i].y << ")"; + } +} From cc11b8e34dd4452444cbada630e51200da92b709 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Mon, 5 Feb 2024 16:26:05 +0100 Subject: [PATCH 30/33] Added node serialization test with invalid node --- .../src/CurvilinearGridRectangularTests.cpp | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp index 8c7632c72..122be339f 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp @@ -538,3 +538,29 @@ TEST(CurvilinearGridUniform, ConvertCurvilinearToNodesAndEdges_ReturnsSerialized << "(" << nodes[i].x << "," << nodes[i].y << ")"; } } + +TEST(CurvilinearGridUniform, ConvertCurvilinearToNodesAndEdges_ReturnsSerializedNodesWithInvalidNode) +{ + // note: this is a characterization test to document the current behavior of MakeCurvilinearGrid, + // the constructor of CurvilinearGrid taking a matrix of points, and + // CurvilinearGrid::ConvertCurvilinearToNodesAndEdges + // A grid of nx=3 and ny=2 returns node coordinates with 3 y-coordinates and 2 x-coordinates!!! + const auto grid = MakeCurvilinearGrid(2.0, 1.0, 2.0, 1.0, 3, 2); + + EXPECT_EQ(3, grid->NumM()); + EXPECT_EQ(2, grid->NumN()); + + grid->GetNode(2, 1).SetInvalid(); + + const auto [nodes, edges, gridIndices] = grid->ConvertCurvilinearToNodesAndEdges(); + const std::vector expected_nodes = {{2., 1.}, {2., 2.}, {4., 1.}, {4., 2.}, {6., 1.}, {-999., -999.}}; + + EXPECT_EQ(expected_nodes.size(), nodes.size()); + for (size_t i = 0; i < nodes.size(); ++i) + { + EXPECT_TRUE(meshkernel::IsEqual(expected_nodes[i], nodes[i], 1e-4)) + << "#" << i << ": " + << "(" << expected_nodes[i].x << "," << expected_nodes[i].y << ") != " + << "(" << nodes[i].x << "," << nodes[i].y << ")"; + } +} From 9f2581bec81ff21a7ed5ac07a9fe68e11ff8e58a Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Mon, 5 Feb 2024 16:47:56 +0100 Subject: [PATCH 31/33] Added edge serialization test --- .../src/CurvilinearGridRectangularTests.cpp | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp index 122be339f..736f50cac 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp @@ -564,3 +564,27 @@ TEST(CurvilinearGridUniform, ConvertCurvilinearToNodesAndEdges_ReturnsSerialized << "(" << nodes[i].x << "," << nodes[i].y << ")"; } } + +TEST(CurvilinearGridUniform, ConvertCurvilinearToNodesAndEdges_ReturnsSerializedEdges) +{ + // note: this is a characterization test to document the current behavior of MakeCurvilinearGrid, + // the constructor of CurvilinearGrid taking a matrix of points, and + // CurvilinearGrid::ConvertCurvilinearToNodesAndEdges + // A grid of nx=3 and ny=2 returns node coordinates with 3 y-coordinates and 2 x-coordinates!!! + const auto grid = MakeCurvilinearGrid(2.0, 1.0, 2.0, 1.0, 3, 2); + + EXPECT_EQ(3, grid->NumM()); + EXPECT_EQ(2, grid->NumN()); + + const auto [nodes, edges, gridIndices] = grid->ConvertCurvilinearToNodesAndEdges(); + const std::vector expected_edges = {{{0u, 2u}, {1u, 3u}, {2u, 4u}, {3u, 5u}, {0u, 1u}, {2u, 3u}, {4u, 5u}}}; + + EXPECT_EQ(expected_edges.size(), edges.size()); + for (size_t i = 0; i < edges.size(); ++i) + { + EXPECT_EQ(expected_edges[i], edges[i]) + << "#" << i << ": " + << "[" << expected_edges[i].first << "," << expected_edges[i].second << "] != " + << "[" << edges[i].first << "," << edges[i].second << "]"; + } +} From 0fce45873bbe0a7cd613e6097aedd66d1f789016 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Mon, 5 Feb 2024 16:53:28 +0100 Subject: [PATCH 32/33] Added edge serialization test with invalid node --- .../src/CurvilinearGridRectangularTests.cpp | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp index 736f50cac..cc5146463 100644 --- a/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp +++ b/libs/MeshKernel/tests/src/CurvilinearGridRectangularTests.cpp @@ -588,3 +588,29 @@ TEST(CurvilinearGridUniform, ConvertCurvilinearToNodesAndEdges_ReturnsSerialized << "[" << edges[i].first << "," << edges[i].second << "]"; } } + +TEST(CurvilinearGridUniform, ConvertCurvilinearToNodesAndEdges_ReturnsSerializedEdgesAlsoForEdgesWithInvalidNode) +{ + // note: this is a characterization test to document the current behavior of MakeCurvilinearGrid, + // the constructor of CurvilinearGrid taking a matrix of points, and + // CurvilinearGrid::ConvertCurvilinearToNodesAndEdges + // A grid of nx=3 and ny=2 returns node coordinates with 3 y-coordinates and 2 x-coordinates!!! + const auto grid = MakeCurvilinearGrid(2.0, 1.0, 2.0, 1.0, 3, 2); + + EXPECT_EQ(3, grid->NumM()); + EXPECT_EQ(2, grid->NumN()); + + grid->GetNode(0, 1).SetInvalid(); + + const auto [nodes, edges, gridIndices] = grid->ConvertCurvilinearToNodesAndEdges(); + const std::vector expected_edges = {{{0u, 2u}, {1u, 3u}, {2u, 4u}, {3u, 5u}, {0u, 1u}, {2u, 3u}, {4u, 5u}}}; + + EXPECT_EQ(expected_edges.size(), edges.size()); + for (size_t i = 0; i < edges.size(); ++i) + { + EXPECT_EQ(expected_edges[i], edges[i]) + << "#" << i << ": " + << "[" << expected_edges[i].first << "," << expected_edges[i].second << "] != " + << "[" << edges[i].first << "," << edges[i].second << "]"; + } +} From fd3fb279da017814d86b5441ea7e6ce04c502fb8 Mon Sep 17 00:00:00 2001 From: Andreas Buykx Date: Tue, 6 Feb 2024 10:18:15 +0100 Subject: [PATCH 33/33] Removed tests that always evaluate to true --- .../src/CurvilinearGrid/CurvilinearGrid.cpp | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp index 24654bc74..bb9b88013 100644 --- a/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp +++ b/libs/MeshKernel/src/CurvilinearGrid/CurvilinearGrid.cpp @@ -195,13 +195,9 @@ CurvilinearGrid::ConvertCurvilinearToNodesAndEdges() const { for (UInt n = 0; n < NumN(); n++) { - if (nodeIndices(m, n) != constants::missing::uintValue && - nodeIndices(m + 1, n) != constants::missing::uintValue) - { - edges[ind].first = nodeIndices(m, n); - edges[ind].second = nodeIndices(m + 1, n); - ind++; - } + edges[ind].first = nodeIndices(m, n); + edges[ind].second = nodeIndices(m + 1, n); + ind++; } } @@ -209,13 +205,9 @@ CurvilinearGrid::ConvertCurvilinearToNodesAndEdges() const { for (UInt n = 0; n < NumN() - 1; n++) { - if (nodeIndices(m, n) != constants::missing::uintValue && - nodeIndices(m, n + 1) != constants::missing::uintValue) - { - edges[ind].first = nodeIndices(m, n); - edges[ind].second = nodeIndices(m, n + 1); - ind++; - } + edges[ind].first = nodeIndices(m, n); + edges[ind].second = nodeIndices(m, n + 1); + ind++; } } edges.resize(ind);