30 #include <MeshKernel/LandBoundaries.hpp>
31 #include <MeshKernel/Parameters.hpp>
32 #include <MeshKernel/UndoActions/UndoAction.hpp>
94 std::unique_ptr<Smoother> smoother,
95 std::unique_ptr<Orthogonalizer> orthogonalizer,
96 std::unique_ptr<Polygons> polygon,
97 std::unique_ptr<LandBoundaries> landBoundaries,
102 [[nodiscard]] std::unique_ptr<UndoAction>
Initialize();
118 void FindNeighbouringBoundaryNodes(
const UInt nodeId,
119 const UInt nearestPointIndex,
121 UInt& rightNode)
const;
124 void SnapMeshToOriginalMeshBoundary();
127 void ComputeLinearSystemTerms();
134 void ComputeLocalIncrements(
UInt nodeIndex,
137 std::array<double, 2>& weightsSum);
141 void UpdateNodeCoordinates(
UInt nodeIndex);
144 void AllocateLinearSystem();
147 void ComputeCoordinates()
const;
150 std::unique_ptr<Smoother> m_smoother;
151 std::unique_ptr<Orthogonalizer> m_orthogonalizer;
152 std::unique_ptr<Polygons> m_polygons;
153 std::unique_ptr<LandBoundaries> m_landBoundaries;
157 std::vector<UInt> m_localCoordinatesIndices;
158 std::vector<Point> m_localCoordinates;
159 std::vector<Point> m_orthogonalCoordinates;
160 std::vector<Point> m_originalNodes;
163 std::vector<UInt> m_compressedEndNodeIndex;
164 std::vector<UInt> m_compressedStartNodeIndex;
165 std::vector<double> m_compressedWeightX;
166 std::vector<double> m_compressedWeightY;
167 std::vector<double> m_compressedRhs;
168 std::vector<UInt> m_compressedNodesNodes;
171 double m_mumax = 0.0;