KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
nurbs_geometry_modeler.h
Go to the documentation of this file.
1 // | / |
2 // ' / __| _` | __| _ \ __|
3 // . \ | ( | | ( |\__ `
4 // _|\_\_| \__,_|\__|\___/ ____/
5 // Multi-Physics
6 //
7 // License: BSD License
8 // Kratos default license: kratos/license.txt
9 //
10 // Main authors: Manuel Messmer
11 //
12 
13 #if !defined(KRATOS_NURBS_GEOMETRY_MODELER_H_INCLUDED )
14 #define KRATOS_NURBS_GEOMETRY_MODELER_H_INCLUDED
15 
16 // System includes
17 
18 // External includes
19 
20 // Project includes
21 #include "includes/model_part.h"
22 #include "modeler/modeler.h"
26 
27 namespace Kratos {
28 
29 class KRATOS_API(IGA_APPLICATION) NurbsGeometryModeler
30  : public Modeler
31 {
32 public:
36 
37  typedef std::size_t IndexType;
38  typedef std::size_t SizeType;
39  typedef Node NodeType;
40 
42  typedef typename GeometryType::Pointer GeometryPointerType;
43 
45  typedef typename NurbsSurfaceGeometryType::Pointer NurbsSurfaceGeometryPointerType;
46 
48  typedef typename NurbsVolumeGeometryType::Pointer NurbsVolumeGeometryPointerType;
49 
50 
54 
57  : Modeler() {}
58 
61  Model & rModel,
62  const Parameters ModelerParameters = Parameters())
63  : Modeler(rModel, ModelerParameters)
64  , mpModel(&rModel)
65  {
66  }
67 
69  virtual ~NurbsGeometryModeler() = default;
70 
72  Modeler::Pointer Create(Model& rModel, const Parameters ModelParameters) const override
73  {
74  return Kratos::make_shared<NurbsGeometryModeler>(rModel, ModelParameters);
75  }
76 
80 
81  void SetupGeometryModel() override;
82 
84 
85 private:
88 
89  Model* mpModel;
90 
94 
103  void CreateAndAddRegularGrid2D( ModelPart& r_model_part, const Point& A_xyz, const Point& B_xyz, const Point& A_uvw, const Point& B_uvw,
104  SizeType OrderU, SizeType OrderV, SizeType NumKnotSpansU, SizeType NumKnotSpansV );
105 
114  void CreateAndAddRegularGrid3D( ModelPart& r_model_part, const Point& A_xyz, const Point& B_xyz, const Point& A_uvw, const Point& B_uvw,
115  SizeType OrderU, SizeType OrderV, SizeType OrderW, SizeType NumKnotSpansU, SizeType NumKnotSpansV, SizeType NumKnotSpansW );
116 
117 };
118 
119 } // End namesapce Kratos
120 #endif // KRATOS_NURBS_GEOMETRY_MODELER_H_INCLUDED
Geometry base class.
Definition: geometry.h:71
This class aims to manage different model parts across multi-physics simulations.
Definition: model.h:60
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
Modeler to interact with ModelParts.
Definition: modeler.h:39
This class defines the node.
Definition: node.h:65
Definition: nurbs_geometry_modeler.h:31
Modeler::Pointer Create(Model &rModel, const Parameters ModelParameters) const override
Creates the Modeler Pointer.
Definition: nurbs_geometry_modeler.h:72
NurbsSurfaceGeometryType::Pointer NurbsSurfaceGeometryPointerType
Definition: nurbs_geometry_modeler.h:45
GeometryType::Pointer GeometryPointerType
Definition: nurbs_geometry_modeler.h:42
std::size_t SizeType
Definition: nurbs_geometry_modeler.h:38
virtual ~NurbsGeometryModeler()=default
Destructor.
NurbsGeometryModeler()
Default constructor.
Definition: nurbs_geometry_modeler.h:56
Node NodeType
Definition: nurbs_geometry_modeler.h:39
KRATOS_CLASS_POINTER_DEFINITION(NurbsGeometryModeler)
NurbsVolumeGeometry< PointerVector< NodeType > > NurbsVolumeGeometryType
Definition: nurbs_geometry_modeler.h:47
std::size_t IndexType
Definition: nurbs_geometry_modeler.h:37
NurbsVolumeGeometryType::Pointer NurbsVolumeGeometryPointerType
Definition: nurbs_geometry_modeler.h:48
NurbsSurfaceGeometry< 3, PointerVector< NodeType > > NurbsSurfaceGeometryType
Definition: nurbs_geometry_modeler.h:44
Geometry< NodeType > GeometryType
Definition: nurbs_geometry_modeler.h:41
NurbsGeometryModeler(Model &rModel, const Parameters ModelerParameters=Parameters())
Constructor.
Definition: nurbs_geometry_modeler.h:60
Definition: nurbs_surface_geometry.h:38
A volume geometry based on a full 3-dimensional BSpline tensor product.
Definition: nurbs_volume_geometry.h:46
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
Point class.
Definition: point.h:59
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43