Reference documentation for deal.II version 9.0.0
Public Member Functions | Private Attributes | List of all members
OpenCASCADE::ArclengthProjectionLineManifold< dim, spacedim > Class Template Reference

#include <deal.II/opencascade/boundary_lib.h>

Inheritance diagram for OpenCASCADE::ArclengthProjectionLineManifold< dim, spacedim >:
[legend]

Public Member Functions

 ArclengthProjectionLineManifold (const TopoDS_Shape &sh, const double tolerance=1e-7)
 
virtual std::unique_ptr< Manifold< dim, spacedim > > clone () const override
 
virtual Point< 1 > pull_back (const Point< spacedim > &space_point) const override
 
virtual Point< spacedim > push_forward (const Point< 1 > &chart_point) const override
 
- Public Member Functions inherited from ChartManifold< dim, spacedim, 1 >
 ChartManifold (const Tensor< 1, chartdim > &periodicity=Tensor< 1, chartdim >())
 
virtual ~ChartManifold () override=default
 
virtual Point< spacedim > get_intermediate_point (const Point< spacedim > &p1, const Point< spacedim > &p2, const double w) const override
 
virtual Point< spacedim > get_new_point (const ArrayView< const Point< spacedim >> &surrounding_points, const ArrayView< const double > &weights) const override
 
virtual void get_new_points (const ArrayView< const Point< spacedim >> &surrounding_points, const Table< 2, double > &weights, ArrayView< Point< spacedim >> new_points) const override
 
virtual Point< spacedim > push_forward (const Point< chartdim > &chart_point) const=0
 
virtual DerivativeForm< 1, chartdim, spacedim > push_forward_gradient (const Point< chartdim > &chart_point) const
 
virtual Tensor< 1, spacedim > get_tangent_vector (const Point< spacedim > &x1, const Point< spacedim > &x2) const override
 
const Tensor< 1, chartdim > & get_periodicity () const
 
- Public Member Functions inherited from Manifold< dim, spacedim >
virtual ~Manifold ()=default
 
virtual Point< spacedim > project_to_manifold (const ArrayView< const Point< spacedim >> &surrounding_points, const Point< spacedim > &candidate) const
 
virtual Point< spacedim > get_new_point_on_line (const typename Triangulation< dim, spacedim >::line_iterator &line) const
 
virtual Point< spacedim > get_new_point_on_quad (const typename Triangulation< dim, spacedim >::quad_iterator &quad) const
 
virtual Point< spacedim > get_new_point_on_hex (const typename Triangulation< dim, spacedim >::hex_iterator &hex) const
 
Point< spacedim > get_new_point_on_face (const typename Triangulation< dim, spacedim >::face_iterator &face) const
 
Point< spacedim > get_new_point_on_cell (const typename Triangulation< dim, spacedim >::cell_iterator &cell) const
 
virtual Tensor< 1, spacedim > normal_vector (const typename Triangulation< dim, spacedim >::face_iterator &face, const Point< spacedim > &p) const
 
virtual void get_normals_at_vertices (const typename Triangulation< dim, spacedim >::face_iterator &face, FaceVertexNormals &face_vertex_normals) const
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
 Subscriptor (Subscriptor &&) noexcept
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
Subscriptoroperator= (Subscriptor &&) noexcept
 
void subscribe (const char *identifier=nullptr) const
 
void unsubscribe (const char *identifier=nullptr) const
 
unsigned int n_subscriptions () const
 
void list_subscribers () const
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Private Attributes

const TopoDS_Shape sh
 
Handle_Adaptor3d_HCurve curve
 
const double tolerance
 
const double length
 

Additional Inherited Members

- Public Types inherited from Manifold< dim, spacedim >
typedef Tensor< 1, spacedim > FaceVertexNormals[GeometryInfo< dim >::vertices_per_face]
 
- Static Public Member Functions inherited from Subscriptor
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 

Detailed Description

template<int dim, int spacedim>
class OpenCASCADE::ArclengthProjectionLineManifold< dim, spacedim >

A Manifold object based on OpenCASCADE TopoDS_Shape objects which have topological dimension equal to one (TopoDS_Edge or TopoDS_Wire) where new points are located at the arclength average of the surrounding points. If the given TopoDS_Shape can be casted to a periodic (closed) curve, then this information is used internally to set the periodicity of the base ChartManifold class.

This class can only work on TopoDS_Edge or TopoDS_Wire objects, and it only makes sense when spacedim is three. If you use an object of topological dimension different from one, an exception is throw.

In debug mode there is an additional sanity check to make sure that the surrounding points actually live on the Manifold, i.e., calling OpenCASCADE::closest_point() on those points leaves them untouched. If this is not the case, an ExcPointNotOnManifold is thrown.

Author
Luca Heltai, Andrea Mola, 2011–2014.

Definition at line 291 of file boundary_lib.h.

Constructor & Destructor Documentation

◆ ArclengthProjectionLineManifold()

template<int dim, int spacedim>
OpenCASCADE::ArclengthProjectionLineManifold< dim, spacedim >::ArclengthProjectionLineManifold ( const TopoDS_Shape &  sh,
const double  tolerance = 1e-7 
)

Default constructor with a TopoDS_Edge.

Definition at line 286 of file boundary_lib.cc.

Member Function Documentation

◆ clone()

template<int dim, int spacedim>
std::unique_ptr< Manifold< dim, spacedim > > OpenCASCADE::ArclengthProjectionLineManifold< dim, spacedim >::clone ( ) const
overridevirtual

Clone the current Manifold.

Implements Manifold< dim, spacedim >.

Definition at line 304 of file boundary_lib.cc.

◆ pull_back()

template<int dim, int spacedim>
Point< 1 > OpenCASCADE::ArclengthProjectionLineManifold< dim, spacedim >::pull_back ( const Point< spacedim > &  space_point) const
overridevirtual

Given a point on real space, find its arclength parameter. Throws an error in debug mode, if the point is not on the TopoDS_Edge given at construction time.

Implements ChartManifold< dim, spacedim, 1 >.

Definition at line 314 of file boundary_lib.cc.

◆ push_forward()

template<int dim, int spacedim>
Point< spacedim > OpenCASCADE::ArclengthProjectionLineManifold< dim, spacedim >::push_forward ( const Point< 1 > &  chart_point) const
overridevirtual

Given an arclength parameter, find its image in real space.

Definition at line 329 of file boundary_lib.cc.

Member Data Documentation

◆ sh

template<int dim, int spacedim>
const TopoDS_Shape OpenCASCADE::ArclengthProjectionLineManifold< dim, spacedim >::sh
private

The actual shape used to build this object.

Definition at line 323 of file boundary_lib.h.

◆ curve

template<int dim, int spacedim>
Handle_Adaptor3d_HCurve OpenCASCADE::ArclengthProjectionLineManifold< dim, spacedim >::curve
private

A Curve adaptor. This is the one which is used in the computations, and it points to the right one above.

Definition at line 329 of file boundary_lib.h.

◆ tolerance

template<int dim, int spacedim>
const double OpenCASCADE::ArclengthProjectionLineManifold< dim, spacedim >::tolerance
private

Relative tolerance used in all internal computations.

Definition at line 334 of file boundary_lib.h.

◆ length

template<int dim, int spacedim>
const double OpenCASCADE::ArclengthProjectionLineManifold< dim, spacedim >::length
private

The total length of the curve. This is also used as a period if the edge is periodic.

Definition at line 340 of file boundary_lib.h.


The documentation for this class was generated from the following files: