30 #include "MeshKernel/Constants.hpp"
56 return m_weights[node][connectedNode];
65 return m_connectedNodes[node][connectedNode];
73 return m_numConnectedNodes[node];
82 void ComputeTopologies();
85 void ComputeOperators();
90 bool ComputeCoordinates();
93 void ComputeWeights();
97 void ComputeOperatorsNode(
UInt currentNode);
101 void NodeAdministration(
UInt currentNode);
105 void ComputeNodeXiEta(
UInt currentNode);
113 [[nodiscard]]
double OptimalEdgeAngle(
UInt numFaceNodes,
114 double theta1 = -1.0,
115 double theta2 = -1.0,
116 bool isBoundaryEdge =
false)
const;
120 void AllocateNodeOperators(
UInt topologyIndex);
124 void SaveNodeTopologyIfNeeded(
UInt currentNode);
129 void ComputeJacobian(
UInt currentNode, std::vector<double>& J)
const;
135 std::vector<std::vector<double>> m_weights;
138 std::vector<std::vector<std::vector<double>>> m_Gxi;
139 std::vector<std::vector<std::vector<double>>> m_Geta;
140 std::vector<std::vector<double>> m_Divxi;
141 std::vector<std::vector<double>> m_Diveta;
142 std::vector<std::vector<std::vector<double>>> m_Az;
143 std::vector<std::vector<double>> m_Jxi;
144 std::vector<std::vector<double>> m_Jeta;
145 std::vector<std::vector<double>> m_ww2;
148 std::vector<UInt> m_sharedFacesCache;
149 std::vector<UInt> m_connectedNodesCache;
150 std::vector<std::vector<UInt>> m_faceNodeMappingCache;
151 std::vector<double> m_xiCache;
152 std::vector<double> m_etaCache;
153 std::vector<UInt> m_boundaryEdgesCache;
154 std::vector<double> m_leftXFaceCenterCache;
155 std::vector<double> m_leftYFaceCenterCache;
156 std::vector<double> m_rightXFaceCenterCache;
157 std::vector<double> m_rightYFaceCenterCache;
158 std::vector<double> m_xisCache;
159 std::vector<double> m_etasCache;
162 std::vector<UInt> m_nodeTopologyMapping;
163 std::vector<std::vector<double>> m_topologyXi;
164 std::vector<std::vector<double>> m_topologyEta;
165 std::vector<std::vector<UInt>> m_topologySharedFaces;
166 std::vector<std::vector<std::vector<UInt>>> m_topologyFaceNodeMapping;
167 std::vector<std::vector<UInt>> m_topologyConnectedNodes;
169 std::vector<UInt> m_numConnectedNodes;
170 std::vector<std::vector<UInt>> m_connectedNodes;
173 UInt m_maximumNumConnectedNodes = 0;
174 UInt m_maximumNumSharedFaces = 0;
176 static constexpr
int m_topologyInitialSize = 10;
177 static constexpr
double m_thetaTolerance = 1e-4;