36 #ifndef NekMeshUtils_CADSYSTEM_CADSURF
37 #define NekMeshUtils_CADSYSTEM_CADSURF
39 #include <boost/shared_ptr.hpp>
50 namespace NekMeshUtils
62 std::vector<CADCurveSharedPtr>
edges;
80 CADSurf(
int i, TopoDS_Shape in, std::vector<EdgeLoop> ein);
Array< OneD, NekDouble > D1(Array< OneD, NekDouble > uv)
Get the set of first derivatives at parametric point u,v.
Array< OneD, NekDouble > P(Array< OneD, NekDouble > uv)
Get the x,y,z at parametric point u,v.
Array< OneD, NekDouble > center
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
bool m_hasTwoCurves
flag to alert the mesh generation to a potential problem is both curves have only two points in the m...
Array< OneD, NekDouble > locuv(Array< OneD, NekDouble > p)
Performs a reverse look up to find u,v and x,y,z.
BRepAdaptor_Surface m_occSurface
OpenCascade object for surface.
struct which descibes a collection of cad edges which for a loop on the cad surface ...
std::vector< CADCurveSharedPtr > edges
Array< OneD, NekDouble > N(Array< OneD, NekDouble > uv)
Get the normal vector at parametric point u,v.
void SetReverseNomral()
sets the flag to reverse the normal for this suface, this is determined in cadsystem and ensures all ...
class for handleing a cad surface
NekDouble DistanceTo(Array< OneD, NekDouble > p)
does unconstrained locuv to project point from anywhere
Handle(Geom_Surface) m_s
Alternate OpenCascade object for surface. Used by reverse lookup.
bool m_correctNormal
normal
std::vector< EdgeLoop > m_edges
List of bounding edges in loops with orientation.
boost::shared_ptr< CADSurf > CADSurfSharedPtr
CADSurf(int i, TopoDS_Shape in, std::vector< EdgeLoop > ein)
Default constructor.
bool IsPlane()
returns true if the surface is flat (2D)
void ProjectTo(Array< OneD, NekDouble > &tp, Array< OneD, NekDouble > &uv)
void SetTwoC()
surface needs to know if it is bounded by only two curves
void Test(Array< OneD, NekDouble > uv)
Function which tests the the value of uv used is within the surface.
Array< OneD, NekDouble > GetBounds()
Get the limits of the parametric space for the surface.
bool GetTwoC()
query two curves
Array< OneD, NekDouble > D2(Array< OneD, NekDouble > uv)
Get the set of second derivatives at parametric point u,v.
NekDouble Curvature(Array< OneD, NekDouble > uv)
returns curvature at point uv
std::vector< EdgeLoop > GetEdges()
Get the IDs of the edges which bound the surface.
boost::shared_ptr< CADCurve > CADCurveSharedPtr