14 #if USE_TRIANGLE_NONFREE_TPL
16 #if !defined(KRATOS_CAD_TESSELLATION_MODELER_INCLUDED)
17 #define KRATOS_CAD_TESSELLATION_MODELER_INCLUDED
38 class KRATOS_API(KRATOS_CORE) CadTessellationModeler :
public Modeler {
52 typedef Point EmbeddedNodeType;
54 typedef PointerVector<NodeType> ContainerNodeType;
56 typedef PointerVector<EmbeddedNodeType> ContainerEmbeddedNodeType;
58 typedef BrepSurface<ContainerNodeType, ContainerEmbeddedNodeType> BrepSurfaceType;
60 typedef BrepCurveOnSurface<ContainerNodeType, ContainerEmbeddedNodeType> BrepCurveOnSurfaceType;
67 CadTessellationModeler() : Modeler()
76 CadTessellationModeler(
78 Parameters ModelerParameters = Parameters())
79 : Modeler(rModel, ModelerParameters)
85 virtual ~CadTessellationModeler() =
default;
105 const Parameters ModelParameters)
const override;
114 void SetupModelPart()
override;
121 std::string
Info()
const override
123 return "CadTessellationModeler";
127 void PrintInfo(std::ostream& rOStream)
const override
133 void PrintData(std::ostream& rOStream)
const override
149 Model* mpModel =
nullptr;
155 friend class Serializer;
172 std::vector<array_1d<double, 2>> ComputeBoundaryTessellation(
const BrepCurveOnSurfaceType& rBoundarySegment);
180 std::vector<BoundedMatrix<double,3,3>> ComputeSurfaceTriangulation(
181 const BrepSurfaceType& rSurfaceGeometry,
182 const std::vector<array_1d<double, 2>>& rBoundaryLoop);
193 std::vector<BoundedMatrix<double,3,3>> InsertGaussPointsExactSurface(
194 const BrepSurfaceType& rSurfaceGeometry,
195 const std::vector<double>& rPointsCoordinates,
196 const std::vector<IndexType>& rTriangleConnectivities);
208 std::vector<BoundedMatrix<double,3,3>> InsertGaussPointsApproxSurface(
209 const BrepSurfaceType& rSurfaceGeometry,
210 const std::vector<double>& rPointsCoordinates,
211 const std::vector<IndexType>& rTriangleConnectivities);
223 double ComputeDiscretizationError(
224 const std::vector<BoundedMatrix<double,3,3>>& rGaussPointsExact,
225 const std::vector<BoundedMatrix<double,3,3>>& rGaussPointsApprox);
234 inline std::istream&
operator>>(std::istream& rIStream,
235 CadTessellationModeler& rThis)
241 inline std::ostream&
operator<<(std::ostream& rOStream,
const CadTessellationModeler& rThis)
243 rThis.PrintInfo(rOStream);
244 rOStream << std::endl;
245 rThis.PrintData(rOStream);
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
std::size_t IndexType
The definition of the index type.
Definition: key_hash.h:35
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
Node NodeType
The definition of the node.
Definition: tetrahedral_mesh_orientation_check.h:34
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
dictionary Model
TODO replace this "model" for real one once available in kratos core.
Definition: script.py:94
#define KRATOS_CLASS_POINTER_DEFINITION(a)
Definition: smart_pointers.h:69