44 namespace NekMeshUtils
51 std::vector<NodeSharedPtr> nodeList;
53 GetCurvedNodes(nodeList);
59 for (
int k = 0; k < nodeList.size(); ++k)
61 s << std::scientific << std::setprecision(8) <<
" " 62 << nodeList[k]->m_x <<
" " << nodeList[k]->m_y <<
" " 63 << nodeList[k]->m_z <<
" ";
71 static std::mutex io_mutex;
72 std::unique_lock<std::mutex> lock(io_mutex);
78 p[0] = m_n1->GetGeom(coordDim);
79 p[1] = m_n2->GetGeom(coordDim);
82 if (m_edgeNodes.size() > 0)
88 c->m_points.push_back(p[0]);
89 for (
int i = 0; i < m_edgeNodes.size(); ++i)
91 c->m_points.push_back(m_edgeNodes[i]->GetGeom(coordDim));
93 c->m_points.push_back(p[1]);
96 m_id, coordDim, p, c);
112 int nPoints = order + 1;
121 for (
int i = 0; i < coordDim; ++i)
124 xmap->BwdTrans(geom->GetCoeffs(i), phys[i]);
127 m_edgeNodes.resize(nPoints - 2);
129 for (
int i = 1; i < nPoints - 1; ++i)
132 for (
int j = 0; j < coordDim; ++j)
134 x[j] = xmap->PhysEvaluate(edgePoints + i, phys[j]);
138 std::shared_ptr<Node>(
new Node(
id++, x[0], x[1], x[2]));
141 m_curveType = edgeType;
148 std::dynamic_pointer_cast<
CADCurve>(m_parentCAD);
149 for (
int i = 0; i < m_edgeNodes.size(); i++)
152 loc[0] = m_edgeNodes[i]->m_x;
153 loc[1] = m_edgeNodes[i]->m_y;
154 loc[2] = m_edgeNodes[i]->m_z;
157 m_edgeNodes[i]->SetCADCurve(c, t);
159 m_edgeNodes[i]->m_x = loc[0];
160 m_edgeNodes[i]->m_y = loc[1];
161 m_edgeNodes[i]->m_z = loc[2];
163 vector<pair<CADSurfSharedPtr, CADOrientation::Orientation>> s =
165 for (
int j = 0; j < s.size(); j++)
168 m_edgeNodes[i]->SetCADSurf(s[j].first, uv);
175 std::dynamic_pointer_cast<
CADSurf>(m_parentCAD);
176 for (
int i = 0; i < m_edgeNodes.size(); i++)
179 loc[0] = m_edgeNodes[i]->m_x;
180 loc[1] = m_edgeNodes[i]->m_y;
181 loc[2] = m_edgeNodes[i]->m_z;
184 m_edgeNodes[i]->m_x = loc[0];
185 m_edgeNodes[i]->m_y = loc[1];
186 m_edgeNodes[i]->m_z = loc[2];
187 m_edgeNodes[i]->SetCADSurf(s, uv);
void MakeOrder(int order, SpatialDomains::GeometrySharedPtr geom, LibUtilities::PointsType edgeType, int coordDim, int &id)
Make this edge an order order edge.
std::shared_ptr< CADSurf > CADSurfSharedPtr
base class for CAD curves.
NEKMESHUTILS_EXPORT std::string GetXmlCurveString()
Creates a Nektar++ string listing the coordinates of all the nodes.
NEKMESHUTILS_EXPORT SpatialDomains::SegGeomSharedPtr GetGeom(int coordDim)
Generate a SpatialDomains::SegGeom object for this edge.
std::shared_ptr< StdExpansion > StdExpansionSharedPtr
std::shared_ptr< CADCurve > CADCurveSharedPtr
std::shared_ptr< Geometry > GeometrySharedPtr
base class for a cad surface
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
PointsManagerT & PointsManager(void)
Defines a specification for a set of points.
std::shared_ptr< PointGeom > PointGeomSharedPtr
std::shared_ptr< Curve > CurveSharedPtr
std::shared_ptr< SegGeom > SegGeomSharedPtr