35 #ifndef NekMeshUtils_CADSYSTEM_CADSURF
36 #define NekMeshUtils_CADSYSTEM_CADSURF
45 namespace NekMeshUtils
59 std::vector<CADCurveSharedPtr>
edges;
60 std::vector<CADOrientation::Orientation>
edgeo;
93 std::vector<EdgeLoopSharedPtr> &ein);
Provides a generic Factory class.
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
CADType::cadType m_type
type of the cad object
CADOrientation::Orientation m_orientation
orientation of the CADObject
base class for a cad surface
virtual Array< OneD, NekDouble > N(Array< OneD, NekDouble > uv)=0
Get the normal vector at parametric point u,v.
virtual Array< OneD, NekDouble > BoundingBox()=0
Returns the bounding box of the surface.
virtual Array< OneD, NekDouble > locuv(Array< OneD, NekDouble > p, NekDouble &dist)=0
Performs a reverse look up to find u,v and x,y,z. if xyz is off the surface it will return the closes...
virtual Array< OneD, NekDouble > D2(Array< OneD, NekDouble > uv)=0
Get the set of second derivatives at parametric point u,v.
virtual Array< OneD, NekDouble > D1(Array< OneD, NekDouble > uv)=0
Get the set of first derivatives at parametric point u,v.
virtual Array< OneD, NekDouble > GetBounds()=0
Get the limits of the parametric space for the surface.
CADSurf()
Default constructor.
virtual NekDouble Curvature(Array< OneD, NekDouble > uv)=0
returns curvature at point uv
virtual bool IsPlanar()=0
Is the surface defined by a planar surface (i.e not nurbs and is flat)
virtual void GetBounds(NekDouble &umin, NekDouble &umax, NekDouble &vmin, NekDouble &vmax)=0
Get the limits of the parametric space for the surface.
virtual Array< OneD, NekDouble > P(Array< OneD, NekDouble > uv)=0
Get the x,y,z at parametric point u,v.
virtual void P(Array< OneD, NekDouble > uv, NekDouble &x, NekDouble &y, NekDouble &z)=0
Get the x,y,z at parametric point u,v.
virtual void Test(Array< OneD, NekDouble > uv)=0
Function which tests the the value of uv used is within the surface.
static void OrientateEdges(CADSurfSharedPtr surf, std::vector< EdgeLoopSharedPtr > &ein)
Static function which orientates the edge loop on a surface.
void SetEdges(std::vector< EdgeLoopSharedPtr > ein)
Set the edge loop.
std::vector< EdgeLoopSharedPtr > m_edges
List of bounding edges in loops with orientation.
std::vector< EdgeLoopSharedPtr > GetEdges()
Get the loop structures which bound the cad surface.
CADOrientation::Orientation Orientation()
query reversed normal
std::shared_ptr< EdgeLoop > EdgeLoopSharedPtr
CADSurfFactory & GetCADSurfFactory()
std::shared_ptr< CADSurf > CADSurfSharedPtr
LibUtilities::NekFactory< std::string, CADSurf > CADSurfFactory
std::shared_ptr< CADCurve > CADCurveSharedPtr
struct which descibes a collection of cad edges which are a loop on the cad surface
std::vector< CADOrientation::Orientation > edgeo
Array< OneD, NekDouble > center
std::vector< CADCurveSharedPtr > edges