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.
brep_surface.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: Tobias Teschemacher
11 // Andreas Apostolatos
12 // Pooyan Dadvand
13 // Philipp Bucher
14 //
15 
16 #if !defined(KRATOS_BREP_FACE_3D_H_INCLUDED )
17 #define KRATOS_BREP_FACE_3D_H_INCLUDED
18 
19 // System includes
20 
21 // External includes
22 
23 // Project includes
24 #include "geometries/geometry.h"
27 
28 // trimming integration
30 
31 namespace Kratos
32 {
35 
42 template<class TContainerPointType, class TContainerPointEmbeddedType = TContainerPointType>
44  : public Geometry<typename TContainerPointType::value_type>
45 {
46 public:
50 
53 
54  typedef typename TContainerPointType::value_type PointType;
55 
58  typedef typename GeometryType::Pointer GeometryPointer;
59 
61 
64 
68 
70 
71  typedef typename BaseType::IndexType IndexType;
72  typedef typename BaseType::SizeType SizeType;
73 
77 
81 
84  typename NurbsSurfaceType::Pointer pSurface)
85  : BaseType(PointsArrayType(), &msGeometryData)
86  , mpNurbsSurface(pSurface)
87  {
88  mIsTrimmed = false;
89  }
90 
93  typename NurbsSurfaceType::Pointer pSurface,
94  BrepCurveOnSurfaceLoopArrayType& BrepOuterLoopArray,
95  BrepCurveOnSurfaceLoopArrayType& BrepInnerLoopArray)
96  : BaseType(PointsArrayType(), &msGeometryData)
97  , mpNurbsSurface(pSurface)
98  , mOuterLoopArray(BrepOuterLoopArray)
99  , mInnerLoopArray(BrepInnerLoopArray)
100  {
101  mIsTrimmed = !(mOuterLoopArray.size() == 0 && mInnerLoopArray.size() == 0);
102  }
103 
106  typename NurbsSurfaceType::Pointer pSurface,
107  BrepCurveOnSurfaceLoopArrayType& BrepOuterLoopArray,
108  BrepCurveOnSurfaceLoopArrayType& BrepInnerLoopArray,
109  bool IsTrimmed)
110  : BaseType(PointsArrayType(), &msGeometryData)
111  , mpNurbsSurface(pSurface)
112  , mOuterLoopArray(BrepOuterLoopArray)
113  , mInnerLoopArray(BrepInnerLoopArray)
114  , mIsTrimmed(IsTrimmed)
115  {
116  }
117 
118  explicit BrepSurface(const PointsArrayType& ThisPoints)
119  : BaseType(ThisPoints, &msGeometryData)
120  {
121  }
122 
124  BrepSurface( BrepSurface const& rOther )
125  : BaseType( rOther )
126  , mpNurbsSurface(rOther.mpNurbsSurface)
127  , mOuterLoopArray(rOther.mOuterLoopArray)
128  , mInnerLoopArray(rOther.mInnerLoopArray)
129  , mEmbeddedEdgesArray(rOther.mEmbeddedEdgesArray)
130  , mIsTrimmed(rOther.mIsTrimmed)
131  {
132  }
133 
135  template<class TOtherContainerPointType, class TOtherContainerPointEmbeddedType>
136  explicit BrepSurface(
138  : BaseType( rOther )
139  , mpNurbsSurface(rOther.mpNurbsSurface)
140  , mOuterLoopArray(rOther.mOuterLoopArray)
141  , mInnerLoopArray(rOther.mInnerLoopArray)
142  , mEmbeddedEdgesArray(rOther.mEmbeddedEdgesArray)
143  , mIsTrimmed(rOther.mIsTrimmed)
144  {
145  }
146 
148  ~BrepSurface() override = default;
149 
153 
156  {
157  BaseType::operator=( rOther );
158  mpNurbsSurface = rOther.mpNurbsSurface;
159  mOuterLoopArray = rOther.mOuterLoopArray;
160  mInnerLoopArray = rOther.mInnerLoopArray;
161  mEmbeddedEdgesArray = rOther.mEmbeddedEdgesArray;
162  mIsTrimmed = rOther.mIsTrimmed;
163  return *this;
164  }
165 
167  template<class TOtherContainerPointType, class TOtherContainerPointEmbeddedType>
169  {
170  BaseType::operator=( rOther );
171  mpNurbsSurface = rOther.mpNurbsSurface;
172  mOuterLoopArray = rOther.mOuterLoopArray;
173  mInnerLoopArray = rOther.mInnerLoopArray;
174  mEmbeddedEdgesArray = rOther.mEmbeddedEdgesArray;
175  mIsTrimmed = rOther.mIsTrimmed;
176  return *this;
177  }
178 
182 
183  typename BaseType::Pointer Create( PointsArrayType const& ThisPoints ) const override
184  {
185  return typename BaseType::Pointer( new BrepSurface( ThisPoints ) );
186  }
187 
191 
200  {
201  const auto& const_this = *this;
202  return std::const_pointer_cast<GeometryType>(
203  const_this.pGetGeometryPart(Index));
204  }
205 
213  const GeometryPointer pGetGeometryPart(const IndexType Index) const override
214  {
216  return mpNurbsSurface;
217 
218  for (IndexType i = 0; i < mOuterLoopArray.size(); ++i)
219  {
220  for (IndexType j = 0; j < mOuterLoopArray[i].size(); ++j)
221  {
222  if (mOuterLoopArray[i][j]->Id() == Index)
223  return mOuterLoopArray[i][j];
224  }
225  }
226 
227  for (IndexType i = 0; i < mInnerLoopArray.size(); ++i)
228  {
229  for (IndexType j = 0; j < mInnerLoopArray[i].size(); ++j)
230  {
231  if (mInnerLoopArray[i][j]->Id() == Index)
232  return mInnerLoopArray[i][j];
233  }
234  }
235 
236  for (IndexType i = 0; i < mEmbeddedEdgesArray.size(); ++i)
237  {
238  if (mEmbeddedEdgesArray[i]->Id() == Index)
239  return mEmbeddedEdgesArray[i];
240  }
241 
242  KRATOS_ERROR << "Index " << Index << " not existing in BrepSurface: "
243  << this->Id() << std::endl;
244  }
245 
252  bool HasGeometryPart(const IndexType Index) const override
253  {
255  return true;
256 
257  for (IndexType i = 0; i < mOuterLoopArray.size(); ++i)
258  {
259  for (IndexType j = 0; j < mOuterLoopArray[i].size(); ++j)
260  {
261  if (mOuterLoopArray[i][j]->Id() == Index)
262  return true;
263  }
264  }
265 
266  for (IndexType i = 0; i < mInnerLoopArray.size(); ++i)
267  {
268  for (IndexType j = 0; j < mInnerLoopArray[i].size(); ++j)
269  {
270  if (mInnerLoopArray[i][j]->Id() == Index)
271  return true;
272  }
273  }
274 
275  for (IndexType i = 0; i < mEmbeddedEdgesArray.size(); ++i)
276  {
277  if (mEmbeddedEdgesArray[i]->Id() == Index)
278  return true;
279  }
280 
281  return false;
282  }
283 
286  {
287  mEmbeddedEdgesArray = EmbeddedEdges;
288  }
289 
292  return mOuterLoopArray;
293  }
294 
297  return mInnerLoopArray;
298  }
299 
302  return mEmbeddedEdgesArray;
303  }
304 
308 
310  void Calculate(
311  const Variable<array_1d<double, 3>>& rVariable,
312  array_1d<double, 3>& rOutput) const override
313  {
314  if (rVariable == CHARACTERISTIC_GEOMETRY_LENGTH)
315  {
316  mpNurbsSurface->Calculate(rVariable, rOutput);
317  }
318  }
319 
323 
325  SizeType PolynomialDegree(IndexType LocalDirectionIndex) const override
326  {
327  return mpNurbsSurface->PolynomialDegree(LocalDirectionIndex);
328  }
329 
333 
334  /*
335  * @brief checks if the BrepSurface has any boundary trim information.
336  * @return true if has no trimming.
337  */
338  bool IsTrimmed() const
339  {
340  return mIsTrimmed;
341  }
342 
344  SizeType PointsNumberInDirection(IndexType DirectionIndex) const override
345  {
346  return mpNurbsSurface->PointsNumberInDirection(DirectionIndex);
347  }
348 
352 
354  Point Center() const override
355  {
356  return mpNurbsSurface->Center();
357  }
358 
388  const CoordinatesArrayType& rPointGlobalCoordinates,
389  CoordinatesArrayType& rProjectedPointLocalCoordinates,
390  const double Tolerance = std::numeric_limits<double>::epsilon()
391  ) const override
392  {
393  return mpNurbsSurface->ProjectionPointGlobalToLocalSpace(
394  rPointGlobalCoordinates, rProjectedPointLocalCoordinates, Tolerance);
395  }
396 
397 
398 
399  /*
400  * @brief This method maps from dimension space to working space.
401  * @param rResult array_1d<double, 3> with the coordinates in working space
402  * @param LocalCoordinates The local coordinates in dimension space
403  * @return array_1d<double, 3> with the coordinates in working space
404  * @see PointLocalCoordinates
405  */
407  CoordinatesArrayType& rResult,
408  const CoordinatesArrayType& rLocalCoordinates
409  ) const override
410  {
411  mpNurbsSurface->GlobalCoordinates(rResult, rLocalCoordinates);
412 
413  return rResult;
414  }
415 
419 
422  {
423  return mpNurbsSurface->GetDefaultIntegrationInfo();
424  }
425 
429 
430  /* Creates integration points on the nurbs surface of this geometry.
431  * @param return integration points.
432  */
434  IntegrationPointsArrayType& rIntegrationPoints,
435  IntegrationInfo& rIntegrationInfo) const override
436  {
437  if (!mIsTrimmed) {
438  mpNurbsSurface->CreateIntegrationPoints(
439  rIntegrationPoints, rIntegrationInfo);
440  }
441  else
442  {
443  std::vector<double> spans_u;
444  std::vector<double> spans_v;
445  mpNurbsSurface->SpansLocalSpace(spans_u, 0);
446  mpNurbsSurface->SpansLocalSpace(spans_v, 1);
447 
449  rIntegrationPoints,
450  mOuterLoopArray, mInnerLoopArray,
451  spans_u, spans_v,
452  rIntegrationInfo);
453  }
454  }
455 
459 
460  /* @brief calls function of undelying nurbs surface and updates
461  * the parent to itself.
462  *
463  * @param rResultGeometries list of quadrature point geometries.
464  * @param NumberOfShapeFunctionDerivatives the number of evaluated
465  * derivatives of shape functions at the quadrature point geometries.
466  * @param rIntegrationPoints list of provided integration points.
467  *
468  * @see quadrature_point_geometry.h
469  */
471  GeometriesArrayType& rResultGeometries,
472  IndexType NumberOfShapeFunctionDerivatives,
473  const IntegrationPointsArrayType& rIntegrationPoints,
474  IntegrationInfo& rIntegrationInfo) override
475  {
476  mpNurbsSurface->CreateQuadraturePointGeometries(
477  rResultGeometries, NumberOfShapeFunctionDerivatives, rIntegrationPoints, rIntegrationInfo);
478 
479  for (IndexType i = 0; i < rResultGeometries.size(); ++i) {
480  rResultGeometries(i)->SetGeometryParent(this);
481  }
482  }
483 
487 
489  Vector &rResult,
490  const CoordinatesArrayType& rCoordinates) const override
491  {
492  mpNurbsSurface->ShapeFunctionsValues(rResult, rCoordinates);
493 
494  return rResult;
495  }
496 
498  Matrix& rResult,
499  const CoordinatesArrayType& rCoordinates) const override
500  {
501  mpNurbsSurface->ShapeFunctionsLocalGradients(rResult, rCoordinates);
502 
503  return rResult;
504  }
505 
509 
511  {
513  }
514 
516  {
518  }
519 
523 
525  std::string Info() const override
526  {
527  return "Brep surface";
528  }
529 
531  void PrintInfo( std::ostream& rOStream ) const override
532  {
533  rOStream << "Brep surface";
534  }
535 
537  void PrintData( std::ostream& rOStream ) const override
538  {
539  BaseType::PrintData( rOStream );
540  std::cout << std::endl;
541  rOStream << " Brep surface " << std::endl;
542  }
543 
545 
546 private:
549 
550  static const GeometryData msGeometryData;
551 
552  static const GeometryDimension msGeometryDimension;
553 
557 
558  typename NurbsSurfaceType::Pointer mpNurbsSurface;
559 
560  BrepCurveOnSurfaceLoopArrayType mOuterLoopArray;
561  BrepCurveOnSurfaceLoopArrayType mInnerLoopArray;
562 
563  BrepCurveOnSurfaceArrayType mEmbeddedEdgesArray;
564 
568  bool mIsTrimmed;
569 
573 
574  friend class Serializer;
575 
576  void save( Serializer& rSerializer ) const override
577  {
579  rSerializer.save("NurbsSurface", mpNurbsSurface);
580  rSerializer.save("OuterLoopArray", mOuterLoopArray);
581  rSerializer.save("InnerLoopArray", mInnerLoopArray);
582  rSerializer.save("EmbeddedEdgesArray", mEmbeddedEdgesArray);
583  rSerializer.save("IsTrimmed", mIsTrimmed);
584  }
585 
586  void load( Serializer& rSerializer ) override
587  {
589  rSerializer.load("NurbsSurface", mpNurbsSurface);
590  rSerializer.load("OuterLoopArray", mOuterLoopArray);
591  rSerializer.load("InnerLoopArray", mInnerLoopArray);
592  rSerializer.load("EmbeddedEdgesArray", mEmbeddedEdgesArray);
593  rSerializer.load("IsTrimmed", mIsTrimmed);
594  }
595 
596  BrepSurface()
597  : BaseType( PointsArrayType(), &msGeometryData )
598  {}
599 
601 
602 }; // Class BrepSurface
603 
606 
608 template<class TContainerPointType, class TContainerPointEmbeddedType = TContainerPointType> inline std::istream& operator >> (
609  std::istream& rIStream,
611 
613 template<class TContainerPointType, class TContainerPointEmbeddedType = TContainerPointType> inline std::ostream& operator << (
614  std::ostream& rOStream,
616 {
617  rThis.PrintInfo( rOStream );
618  rOStream << std::endl;
619  rThis.PrintData( rOStream );
620  return rOStream;
621 }
622 
626 
627 template<class TContainerPointType, class TContainerPointEmbeddedType> const
628 GeometryData BrepSurface<TContainerPointType, TContainerPointEmbeddedType>::msGeometryData(
631  {}, {}, {});
632 
633 template<class TContainerPointType, class TContainerPointEmbeddedType>
635 
637 }// namespace Kratos.
638 
639 #endif // KRATOS_BREP_FACE_3D_H_INCLUDED defined
The BrepCurveOnSurface acts as topology for curves on surfaces.
Definition: brep_curve_on_surface.h:44
The BrepSurface acts as topology for faces. Those can be enclosed by a certain set of brep face curve...
Definition: brep_surface.h:45
BrepSurface(const PointsArrayType &ThisPoints)
Definition: brep_surface.h:118
CoordinatesArrayType & GlobalCoordinates(CoordinatesArrayType &rResult, const CoordinatesArrayType &rLocalCoordinates) const override
Definition: brep_surface.h:406
BaseType::PointsArrayType PointsArrayType
Definition: brep_surface.h:74
SizeType PolynomialDegree(IndexType LocalDirectionIndex) const override
Return polynomial degree of the nurbs surface.
Definition: brep_surface.h:325
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: brep_surface.h:531
bool IsTrimmed() const
Definition: brep_surface.h:338
DenseVector< typename BrepCurveOnSurfaceType::Pointer > BrepCurveOnSurfaceLoopType
Definition: brep_surface.h:66
GeometryData::KratosGeometryFamily GetGeometryFamily() const override
Definition: brep_surface.h:510
NurbsSurfaceGeometry< 3, TContainerPointType > NurbsSurfaceType
Definition: brep_surface.h:62
BaseType::IndexType IndexType
Definition: brep_surface.h:71
BrepSurface(BrepSurface< TOtherContainerPointType, TOtherContainerPointEmbeddedType > const &rOther)
Copy constructor from a geometry with different point type.
Definition: brep_surface.h:136
GeometryData::KratosGeometryType GetGeometryType() const override
Definition: brep_surface.h:515
void CreateQuadraturePointGeometries(GeometriesArrayType &rResultGeometries, IndexType NumberOfShapeFunctionDerivatives, const IntegrationPointsArrayType &rIntegrationPoints, IntegrationInfo &rIntegrationInfo) override
Definition: brep_surface.h:470
BrepSurface & operator=(const BrepSurface &rOther)
Assignment operator.
Definition: brep_surface.h:155
BaseType::SizeType SizeType
Definition: brep_surface.h:72
BaseType::Pointer Create(PointsArrayType const &ThisPoints) const override
Definition: brep_surface.h:183
Geometry< typename TContainerPointType::value_type > GeometryType
Definition: brep_surface.h:57
bool HasGeometryPart(const IndexType Index) const override
This function is used to check if this BrepSurface has certain trim or surface object.
Definition: brep_surface.h:252
KRATOS_CLASS_POINTER_DEFINITION(BrepSurface)
BrepSurface & operator=(BrepSurface< TOtherContainerPointType, TOtherContainerPointEmbeddedType > const &rOther)
Assignment operator for geometries with different point type.
Definition: brep_surface.h:168
SizeType PointsNumberInDirection(IndexType DirectionIndex) const override
Returns number of points of NurbsSurface.
Definition: brep_surface.h:344
Vector & ShapeFunctionsValues(Vector &rResult, const CoordinatesArrayType &rCoordinates) const override
Definition: brep_surface.h:488
IntegrationInfo GetDefaultIntegrationInfo() const override
Provides the default integration dependent on the polynomial degree.
Definition: brep_surface.h:421
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: brep_surface.h:537
Matrix & ShapeFunctionsLocalGradients(Matrix &rResult, const CoordinatesArrayType &rCoordinates) const override
Definition: brep_surface.h:497
GeometryPointer pGetGeometryPart(const IndexType Index) override
This function returns the pointer of the geometry which is corresponding to the trim index....
Definition: brep_surface.h:199
const BrepCurveOnSurfaceLoopArrayType & GetInnerLoops() const
Access the nested loop of inner loops.
Definition: brep_surface.h:296
BrepSurface(BrepSurface const &rOther)
Copy constructor.
Definition: brep_surface.h:124
DenseVector< typename BrepCurveOnSurfaceType::Pointer > BrepCurveOnSurfaceArrayType
Definition: brep_surface.h:65
const BrepCurveOnSurfaceLoopArrayType & GetOuterLoops() const
Access the nested loop of outer loops.
Definition: brep_surface.h:291
void CreateIntegrationPoints(IntegrationPointsArrayType &rIntegrationPoints, IntegrationInfo &rIntegrationInfo) const override
Definition: brep_surface.h:433
BrepSurface(typename NurbsSurfaceType::Pointer pSurface)
Constructor for untrimmed patch.
Definition: brep_surface.h:83
BrepSurface(typename NurbsSurfaceType::Pointer pSurface, BrepCurveOnSurfaceLoopArrayType &BrepOuterLoopArray, BrepCurveOnSurfaceLoopArrayType &BrepInnerLoopArray, bool IsTrimmed)
Constructor for trimmed patch including IsTrimmed.
Definition: brep_surface.h:105
BrepSurface(typename NurbsSurfaceType::Pointer pSurface, BrepCurveOnSurfaceLoopArrayType &BrepOuterLoopArray, BrepCurveOnSurfaceLoopArrayType &BrepInnerLoopArray)
Constructor for trimmed patch.
Definition: brep_surface.h:92
DenseVector< DenseVector< typename BrepCurveOnSurfaceType::Pointer > > BrepCurveOnSurfaceLoopArrayType
Definition: brep_surface.h:67
BaseType::GeometriesArrayType GeometriesArrayType
Definition: brep_surface.h:69
const BrepCurveOnSurfaceArrayType & GetEmbeddedEdges() const
Access the array of embedded edges.
Definition: brep_surface.h:301
Geometry< typename TContainerPointType::value_type > BaseType
Definition: brep_surface.h:56
TContainerPointType::value_type PointType
Definition: brep_surface.h:54
std::string Info() const override
Turn back information as a string.
Definition: brep_surface.h:525
void Calculate(const Variable< array_1d< double, 3 >> &rVariable, array_1d< double, 3 > &rOutput) const override
Calculate with array_1d<double, 3>
Definition: brep_surface.h:310
Point Center() const override
Provides the center of the underlying surface.
Definition: brep_surface.h:354
void AddEmbeddedEdges(BrepCurveOnSurfaceArrayType EmbeddedEdges)
Used to add the embedded edges to the brep surface.
Definition: brep_surface.h:285
~BrepSurface() override=default
Destructor.
GeometryType::Pointer GeometryPointer
Definition: brep_surface.h:58
const GeometryPointer pGetGeometryPart(const IndexType Index) const override
This function returns the pointer of the geometry which is corresponding to the trim index....
Definition: brep_surface.h:213
BaseType::IntegrationPointsArrayType IntegrationPointsArrayType
Definition: brep_surface.h:76
GeometryData::IntegrationMethod IntegrationMethod
Definition: brep_surface.h:60
BaseType::CoordinatesArrayType CoordinatesArrayType
Definition: brep_surface.h:75
int ProjectionPointGlobalToLocalSpace(const CoordinatesArrayType &rPointGlobalCoordinates, CoordinatesArrayType &rProjectedPointLocalCoordinates, const double Tolerance=std::numeric_limits< double >::epsilon()) const override
Calls projection of its nurbs surface. Projects a certain point on the geometry, or finds the closest...
Definition: brep_surface.h:387
BrepCurveOnSurface< TContainerPointType, TContainerPointEmbeddedType > BrepCurveOnSurfaceType
Definition: brep_surface.h:63
static void CreateBrepSurfaceTrimmingIntegrationPoints(IntegrationPointsArrayType &rIntegrationPoints, const DenseVector< DenseVector< typename BrepCurveOnSurface< PointerVector< Node >, PointerVector< Point >>::Pointer >> &rOuterLoops, const DenseVector< DenseVector< typename BrepCurveOnSurface< PointerVector< Node >, PointerVector< Point >>::Pointer >> &rInnerLoops, const std::vector< double > &rSpansU, const std::vector< double > &rSpansV, IntegrationInfo &rIntegrationInfo)
Definition: brep_trimming_utilities.cpp:18
Definition: geometry_data.h:60
KratosGeometryType
Definition: geometry_data.h:110
IntegrationMethod
Definition: geometry_data.h:76
KratosGeometryFamily
Definition: geometry_data.h:91
Definition: geometry_dimension.h:42
Geometry base class.
Definition: geometry.h:71
virtual void PrintData(std::ostream &rOStream) const
Print object's data.
Definition: geometry.h:3834
Geometry & operator=(const Geometry &rOther)
Definition: geometry.h:400
std::vector< IntegrationPointType > IntegrationPointsArrayType
Definition: geometry.h:161
std::size_t SizeType
Definition: geometry.h:144
std::size_t IndexType
Definition: geometry.h:137
IndexType const & Id() const
Id of this Geometry.
Definition: geometry.h:964
static constexpr IndexType BACKGROUND_GEOMETRY_INDEX
Definition: geometry.h:220
Integration information for the creation of integration points.
Definition: integration_info.h:35
Definition: amatrix_interface.h:41
Definition: nurbs_surface_geometry.h:38
Point class.
Definition: point.h:59
PointerVector is a container like stl vector but using a vector to store pointers to its data.
Definition: pointer_vector.h:72
size_type size() const
Definition: pointer_vector.h:255
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
void load(std::string const &rTag, TDataType &rObject)
Definition: serializer.h:207
void save(std::string const &rTag, std::array< TDataType, TDataSize > const &rObject)
Definition: serializer.h:545
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
Short class definition.
Definition: array_1d.h:61
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
#define KRATOS_ERROR
Definition: exception.h:161
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
const GeometryData BrepCurve< TContainerPointType, TContainerPointEmbeddedType >::msGeometryData & msGeometryDimension
Definition: brep_curve.h:483
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
def Index()
Definition: hdf5_io_tools.py:38
def load(f)
Definition: ode_solve.py:307
int j
Definition: quadrature.py:648
integer i
Definition: TensorModule.f:17