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.
triangle_2d_10.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: Mohamed Nabi
11 //
12 //
13 // Contributors:
14 //
15 //
16 
17 #pragma once
18 
19 // System includes
20 
21 // External includes
22 
23 // Project includes
24 #include "geometries/line_2d_4.h"
26 
27 namespace Kratos
28 {
31 
35 
39 
43 
47 
65 template<class TPointType>
66 class Triangle2D10 : public Geometry<TPointType>
67 {
68 public:
72 
77 
82 
87 
92 
98 
102  typedef TPointType PointType;
103 
110  typedef typename BaseType::IndexType IndexType;
111 
117  typedef typename BaseType::SizeType SizeType;
118 
124 
129 
135 
144 
151 
157 
163 
170 
177 
185 
193 
198 
202 
203  Triangle2D10(const PointType& Point01, const PointType& Point02, const PointType& Point03,
204  const PointType& Point04, const PointType& Point05, const PointType& Point06,
205  const PointType& Point07, const PointType& Point08, const PointType& Point09,
206  const PointType& Point10) : BaseType(PointsArrayType(), &msGeometryData)
207  {
208  auto& r_points = this->Points();
209  r_points.push_back(typename PointType::Pointer(new PointType(Point01)));
210  r_points.push_back(typename PointType::Pointer(new PointType(Point02)));
211  r_points.push_back(typename PointType::Pointer(new PointType(Point03)));
212  r_points.push_back(typename PointType::Pointer(new PointType(Point04)));
213  r_points.push_back(typename PointType::Pointer(new PointType(Point05)));
214  r_points.push_back(typename PointType::Pointer(new PointType(Point06)));
215  r_points.push_back(typename PointType::Pointer(new PointType(Point07)));
216  r_points.push_back(typename PointType::Pointer(new PointType(Point08)));
217  r_points.push_back(typename PointType::Pointer(new PointType(Point09)));
218  r_points.push_back(typename PointType::Pointer(new PointType(Point10)));
219  }
220 
221  Triangle2D10(typename PointType::Pointer pPoint01, typename PointType::Pointer pPoint02,
222  typename PointType::Pointer pPoint03, typename PointType::Pointer pPoint04,
223  typename PointType::Pointer pPoint05, typename PointType::Pointer pPoint06,
224  typename PointType::Pointer pPoint07, typename PointType::Pointer pPoint08,
225  typename PointType::Pointer pPoint09, typename PointType::Pointer pPoint10)
226  : BaseType(PointsArrayType(), &msGeometryData)
227  {
228  auto& r_points = this->Points();
229  r_points.push_back(pPoint01);
230  r_points.push_back(pPoint02);
231  r_points.push_back(pPoint03);
232  r_points.push_back(pPoint04);
233  r_points.push_back(pPoint05);
234  r_points.push_back(pPoint06);
235  r_points.push_back(pPoint07);
236  r_points.push_back(pPoint08);
237  r_points.push_back(pPoint09);
238  r_points.push_back(pPoint10);
239  }
240 
241  Triangle2D10(const PointsArrayType& ThisPoints) : BaseType(ThisPoints, &msGeometryData)
242  {
243  if (this->PointsNumber() != 10)
244  {
245  KRATOS_ERROR << "Invalid points number. Expected 10, given " << this->PointsNumber()
246  << std::endl;
247  }
248  }
249 
251  explicit Triangle2D10(const IndexType GeometryId, const PointsArrayType& rThisPoints)
252  : BaseType(GeometryId, rThisPoints, &msGeometryData)
253  {
254  KRATOS_ERROR_IF(this->PointsNumber() != 10) << "Invalid points number. Expected 10, given "
255  << this->PointsNumber() << std::endl;
256  }
257 
259  explicit Triangle2D10(const std::string& rGeometryName, const PointsArrayType& rThisPoints)
260  : BaseType(rGeometryName, rThisPoints, &msGeometryData)
261  {
262  KRATOS_ERROR_IF(this->PointsNumber() != 10) << "Invalid points number. Expected 10, given "
263  << this->PointsNumber() << std::endl;
264  }
265 
275  Triangle2D10(Triangle2D10 const& rOther) : BaseType(rOther)
276  {
277  }
278 
291  template<class TOtherPointType> Triangle2D10(Triangle2D10<TOtherPointType> const& rOther)
292  : BaseType(rOther)
293  {
294  }
295 
299  ~Triangle2D10() override {}
300 
302  {
304  }
305 
307  {
309  }
310 
314 
327  {
328  BaseType::operator=(rOther);
329  return *this;
330  }
331 
343  template<class TOtherPointType>
345  {
346  BaseType::operator=(rOther);
347  return *this;
348  }
349 
353 
359  typename BaseType::Pointer Create(PointsArrayType const& rThisPoints) const override
360  {
361  return typename BaseType::Pointer(new Triangle2D10(rThisPoints));
362  }
363 
370  typename BaseType::Pointer Create(const IndexType NewGeometryId,
371  PointsArrayType const& rThisPoints) const override
372  {
373  return typename BaseType::Pointer(new Triangle2D10(NewGeometryId, rThisPoints));
374  }
375 
381  typename BaseType::Pointer Create(const BaseType& rGeometry) const override
382  {
383  auto p_geometry = typename BaseType::Pointer(new Triangle2D10(rGeometry.Points()));
384  p_geometry->SetData(rGeometry.GetData());
385  return p_geometry;
386  }
387 
394  typename BaseType::Pointer Create(const IndexType NewGeometryId, const BaseType& rGeometry) const override
395  {
396  auto p_geometry = typename BaseType::Pointer(new Triangle2D10(NewGeometryId, rGeometry.Points()));
397  p_geometry->SetData(rGeometry.GetData());
398  return p_geometry;
399  }
400 
406  Matrix& PointsLocalCoordinates(Matrix& rResult) const override
407  {
408  rResult.resize(10, 2, false);
409  //
410  const double oneThird = 1.0 / 3.0;
411  const double twoThird = 2.0 / 3.0;
412  //
413  rResult(0, 0) = 0.0;
414  rResult(0, 1) = 0.0;
415  //
416  rResult(1, 0) = 1.0;
417  rResult(1, 1) = 0.0;
418  //
419  rResult(2, 0) = 0.0;
420  rResult(2, 1) = 1.0;
421  //
422  rResult(3, 0) = oneThird;
423  rResult(3, 1) = 0.0;
424  //
425  rResult(4, 0) = twoThird;
426  rResult(4, 1) = 0.0;
427  //
428  rResult(5, 0) = twoThird;
429  rResult(5, 1) = oneThird;
430  //
431  rResult(6, 0) = oneThird;
432  rResult(6, 1) = twoThird;
433  //
434  rResult(7, 0) = 0.0;
435  rResult(7, 1) = twoThird;
436  //
437  rResult(8, 0) = 0.0;
438  rResult(8, 1) = oneThird;
439  //
440  rResult(9, 0) = oneThird;
441  rResult(9, 1) = oneThird;
442  //
443  return rResult;
444  }
445 
449 
465  double Length() const override
466  {
467  return std::sqrt(std::abs(Area()));
468  }
469 
481  double Area() const override
482  {
483  Vector temp;
484  this->DeterminantOfJacobian(temp, msGeometryData.DefaultIntegrationMethod());
485  const IntegrationPointsArrayType& integration_points = this->IntegrationPoints(msGeometryData.DefaultIntegrationMethod());
486  double area = 0.00;
487  for (unsigned int i = 0; i < integration_points.size(); ++i)
488  {
489  area += temp[i] * integration_points[i].Weight();
490  }
491  return area;
492  }
493 
504  double DomainSize() const override
505  {
506  return Area();
507  }
508 
517  bool IsInside(const CoordinatesArrayType& rPoint, CoordinatesArrayType& rResult,
518  const double Tolerance = std::numeric_limits<double>::epsilon()) const override
519  {
520  this->PointLocalCoordinates(rResult, rPoint);
521  if ((rResult[0] >= (0.0 - Tolerance)) && (rResult[0] <= (1.0 + Tolerance))) {
522  if ((rResult[1] >= (0.0 - Tolerance)) && (rResult[1] <= (1.0 + Tolerance))) {
523  if ((rResult[0] + rResult[1]) <= (1.0 + Tolerance)) {
524  return true;
525  }
526  }
527  }
528  return false;
529  }
530 
534 
541  Vector& ShapeFunctionsValues(Vector& rResult, const CoordinatesArrayType& rCoordinates) const override
542  {
543  if (rResult.size() != 10) rResult.resize(10, false);
544  const double xi = rCoordinates[0];
545  const double et = rCoordinates[1];
546  const double zt = 1.0 - xi - et;
547  //
548  rResult[0] = zt * (3.0 * zt - 1.0) * (3.0 * zt - 2.0) * 0.5;
549  rResult[1] = xi * (3.0 * xi - 1.0) * (3.0 * xi - 2.0) * 0.5;
550  rResult[2] = et * (3.0 * et - 1.0) * (3.0 * et - 2.0) * 0.5;
551  rResult[3] = xi * zt * (3.0 * zt - 1.0) * 4.5;
552  rResult[4] = xi * zt * (3.0 * xi - 1.0) * 4.5;
553  rResult[5] = xi * et * (3.0 * xi - 1.0) * 4.5;
554  rResult[6] = xi * et * (3.0 * et - 1.0) * 4.5;
555  rResult[7] = et * zt * (3.0 * et - 1.0) * 4.5;
556  rResult[8] = et * zt * (3.0 * zt - 1.0) * 4.5;
557  rResult[9] = xi * et * zt * 27.0;
558  //
559  return rResult;
560  }
561 
571  double ShapeFunctionValue(IndexType ShapeFunctionIndex, const CoordinatesArrayType& rPoint) const override
572  {
573  const double xi = rPoint[0];
574  const double et = rPoint[1];
575  const double zt = 1.0 - xi - et;
576  double shape = 0.0;
577  //
578  switch (ShapeFunctionIndex)
579  {
580  case 0:
581  shape = zt * (3.0 * zt - 1.0) * (3.0 * zt - 2.0) * 0.5;
582  break;
583  case 1:
584  shape = xi * (3.0 * xi - 1.0) * (3.0 * xi - 2.0) * 0.5;
585  break;
586  case 2:
587  shape = et * (3.0 * et - 1.0) * (3.0 * et - 2.0) * 0.5;
588  break;
589  case 3:
590  shape = xi * zt * (3.0 * zt - 1.0) * 4.5;
591  break;
592  case 4:
593  shape = xi * zt * (3.0 * xi - 1.0) * 4.5;
594  break;
595  case 5:
596  shape = xi * et * (3.0 * xi - 1.0) * 4.5;
597  break;
598  case 6:
599  shape = xi * et * (3.0 * et - 1.0) * 4.5;
600  break;
601  case 7:
602  shape = et * zt * (3.0 * et - 1.0) * 4.5;
603  break;
604  case 8:
605  shape = et * zt * (3.0 * zt - 1.0) * 4.5;
606  break;
607  case 9:
608  shape = xi * et * zt * 27.0;
609  break;
610  default:
611  KRATOS_ERROR << "Wrong index of shape function!" << *this << std::endl;
612  break;
613  }
614  //
615  return shape;
616  }
617 
621 
629  std::string Info() const override
630  {
631  return "2 dimensional triangle with ten nodes in 2D space";
632  }
633 
640  void PrintInfo(std::ostream& rOStream) const override
641  {
642  rOStream << "2 dimensional triangle with ten nodes in 2D space";
643  }
644 
655  void PrintData( std::ostream& rOStream ) const override
656  {
657  // Base Geometry class PrintData call
658  BaseType::PrintData( rOStream );
659  std::cout << std::endl;
660 
661  // If the geometry has valid points, calculate and output its data
662  if (this->AllPointsAreValid()) {
663  Matrix jacobian;
664  this->Jacobian( jacobian, PointType() );
665  rOStream << " Jacobian in the origin\t : " << jacobian;
666  }
667  }
668 
672 
684  SizeType EdgesNumber() const override
685  {
686  return 3;
687  }
688 
698  {
700  edges.push_back(Kratos::make_shared<EdgeType>(this->pGetPoint(0), this->pGetPoint(1), this->pGetPoint(3), this->pGetPoint(4)));
701  edges.push_back(Kratos::make_shared<EdgeType>(this->pGetPoint(1), this->pGetPoint(2), this->pGetPoint(5), this->pGetPoint(6)));
702  edges.push_back(Kratos::make_shared<EdgeType>(this->pGetPoint(2), this->pGetPoint(0), this->pGetPoint(7), this->pGetPoint(8)));
703  return edges;
704  }
705 
706  SizeType FacesNumber() const override
707  {
708  return 3;
709  }
710 
711  //Connectivities of faces required
713  {
714  if (NumberNodesInFaces.size() != 3) NumberNodesInFaces.resize(3, false);
715  NumberNodesInFaces[0] = 4;
716  NumberNodesInFaces[1] = 4;
717  NumberNodesInFaces[2] = 4;
718  }
719 
721  {
722  // faces in columns
723  if (NodesInFaces.size1() != 5 || NodesInFaces.size2() != 3)
724  NodesInFaces.resize(5, 3, false);
725  //
726  //compatible to Edges() function. Triangle library considers a different order
727  NodesInFaces(0, 0) = 0;//face or master node
728  NodesInFaces(1, 0) = 1;
729  NodesInFaces(2, 0) = 5;
730  NodesInFaces(3, 0) = 6;
731  NodesInFaces(4, 0) = 2;
732  //
733  NodesInFaces(0, 1) = 1;//face or master node
734  NodesInFaces(1, 1) = 2;
735  NodesInFaces(2, 1) = 7;
736  NodesInFaces(3, 1) = 8;
737  NodesInFaces(4, 1) = 0;
738  //
739  NodesInFaces(0, 2) = 2;//face or master node
740  NodesInFaces(1, 2) = 0;
741  NodesInFaces(2, 2) = 3;
742  NodesInFaces(3, 2) = 4;
743  NodesInFaces(4, 2) = 1;
744  }
745 
751  {
752  ShapeFunctionsGradientsType localGradients
753  = CalculateShapeFunctionsIntegrationPointsLocalGradients(ThisMethod);
754  const int integration_points_number = msGeometryData.IntegrationPointsNumber(ThisMethod);
755  ShapeFunctionsGradientsType Result(integration_points_number);
756  for (int pnt = 0; pnt < integration_points_number; ++pnt)
757  {
758  Result[pnt] = localGradients[pnt];
759  }
760  return Result;
761  }
762 
768  {
769  IntegrationMethod ThisMethod = msGeometryData.DefaultIntegrationMethod();
770  ShapeFunctionsGradientsType localGradients
771  = CalculateShapeFunctionsIntegrationPointsLocalGradients(ThisMethod);
772  const int integration_points_number = msGeometryData.IntegrationPointsNumber(ThisMethod);
773  ShapeFunctionsGradientsType Result(integration_points_number);
774  for (int pnt = 0; pnt < integration_points_number; ++pnt)
775  {
776  Result[pnt] = localGradients[pnt];
777  }
778  return Result;
779  }
780 
790  Matrix& ShapeFunctionsLocalGradients(Matrix& rResult, const CoordinatesArrayType& rPoint) const override
791  {
792  rResult.resize(10, 2, false);
793  const double xi = rPoint[0];
794  const double et = rPoint[1];
795  const double zt = 1.0 - xi - et;
796  //
797  noalias(rResult) = ZeroMatrix(10, 2);
798  //
799  rResult(0, 0) = -4.5 * zt * (3.0 * zt - 2.0) - 1.0;
800  rResult(0, 1) = -4.5 * zt * (3.0 * zt - 2.0) - 1.0;
801  //
802  rResult(1, 0) = 4.5 * xi * (3.0 * xi - 2.0) + 1.0;
803  rResult(1, 1) = 0.0;
804  //
805  rResult(2, 0) = 0.0;
806  rResult(2, 1) = 4.5 * et * (3.0 * et - 2.0) + 1.0;
807  //
808  rResult(3, 0) = 4.5 * (zt * (3.0 * zt - 1.0) - xi * (6.0 * zt - 1.0));
809  rResult(3, 1) = -4.5 * xi * (6.0 * zt - 1.0);
810  //
811  rResult(4, 0) = 4.5 * (zt * (6.0 * xi - 1.0) - xi * (3.0 * xi - 1.0));
812  rResult(4, 1) = -4.5 * xi * (3.0 * xi - 1.0);
813  //
814  rResult(5, 0) = 4.5 * et * (6.0 * xi - 1.0);
815  rResult(5, 1) = 4.5 * xi * (3.0 * xi - 1.0);
816  //
817  rResult(6, 0) = 4.5 * et * (3.0 * et - 1.0);
818  rResult(6, 1) = 4.5 * xi * (6.0 * et - 1.0);
819  //
820  rResult(7, 0) = -4.5 * et * (3.0 * et - 1.0);
821  rResult(7, 1) = 4.5 * (zt * (6.0 * et - 1.0) - et * (3.0 * et - 1.0));
822  //
823  rResult(8, 0) = -4.5 * et * (6.0 * zt - 1.0);
824  rResult(8, 1) = 4.5 * (zt * (3.0 * zt - 1.0) - et * (6.0 * zt - 1.0));
825  //
826  rResult(9, 0) = 27.0 * et * (zt - xi);
827  rResult(9, 1) = 27.0 * xi * (zt - et);
828  //
829  return rResult;
830  }
831 
841  virtual Matrix& ShapeFunctionsGradients(Matrix& rResult, const CoordinatesArrayType& rPoint)
842  {
843  rResult.resize(10, 2, false);
844  //
845  const double xi = rPoint[0];
846  const double et = rPoint[1];
847  const double zt = 1.0 - xi - et;
848  //
849  noalias(rResult) = ZeroMatrix(10, 2);
850  //
851  rResult(0, 0) = -4.5 * zt * (3.0 * zt - 2.0) - 1.0;
852  rResult(0, 1) = -4.5 * zt * (3.0 * zt - 2.0) - 1.0;
853  //
854  rResult(1, 0) = 4.5 * xi * (3.0 * xi - 2.0) + 1.0;
855  rResult(1, 1) = 0.0;
856  //
857  rResult(2, 0) = 0.0;
858  rResult(2, 1) = 4.5 * et * (3.0 * et - 2.0) + 1.0;
859  //
860  rResult(3, 0) = 4.5 * (zt * (3.0 * zt - 1.0) - xi * (6.0 * zt - 1.0));
861  rResult(3, 1) = -4.5 * xi * (6.0 * zt - 1.0);
862  //
863  rResult(4, 0) = 4.5 * (zt * (6.0 * xi - 1.0) - xi * (3.0 * xi - 1.0));
864  rResult(4, 1) = -4.5 * xi * (3.0 * xi - 1.0);
865  //
866  rResult(5, 0) = 4.5 * et * (6.0 * xi - 1.0);
867  rResult(5, 1) = 4.5 * xi * (3.0 * xi - 1.0);
868  //
869  rResult(6, 0) = 4.5 * et * (3.0 * et - 1.0);
870  rResult(6, 1) = 4.5 * xi * (6.0 * et - 1.0);
871  //
872  rResult(7, 0) = -4.5 * et * (3.0 * et - 1.0);
873  rResult(7, 1) = 4.5 * (zt * (6.0 * et - 1.0) - et * (3.0 * et - 1.0));
874  //
875  rResult(8, 0) = -4.5 * et * (6.0 * zt - 1.0);
876  rResult(8, 1) = 4.5 * (zt * (3.0 * zt - 1.0) - et * (6.0 * zt - 1.0));
877  //
878  rResult(9, 0) = 27.0 * et * (zt - xi);
879  rResult(9, 1) = 27.0 * xi * (zt - et);
880  //
881  return rResult;
882  }
883 
891  ShapeFunctionsSecondDerivativesType& rResult, const CoordinatesArrayType& rPoint) const override
892  {
893  if (rResult.size() != this->PointsNumber())
894  {
896  rResult.swap(temp);
897  }
898  //
899  rResult[0].resize(2, 2, false);
900  rResult[1].resize(2, 2, false);
901  rResult[2].resize(2, 2, false);
902  rResult[3].resize(2, 2, false);
903  rResult[4].resize(2, 2, false);
904  rResult[5].resize(2, 2, false);
905  rResult[6].resize(2, 2, false);
906  rResult[7].resize(2, 2, false);
907  rResult[8].resize(2, 2, false);
908  rResult[9].resize(2, 2, false);
909  //
910  const double xi = rPoint[0];
911  const double et = rPoint[1];
912  const double zt = 1.0 - xi - et;
913  //
914  rResult[0](0, 0) = 9.0 * (3.0 * zt - 1.0);
915  rResult[0](0, 1) = 9.0 * (3.0 * zt - 1.0);
916  rResult[0](1, 0) = 9.0 * (3.0 * zt - 1.0);
917  rResult[0](1, 1) = 9.0 * (3.0 * zt - 1.0);
918  //
919  rResult[1](0, 0) = 9.0 * (3.0 * xi - 1.0);
920  rResult[1](0, 1) = 0.0;
921  rResult[1](1, 0) = 0.0;
922  rResult[1](1, 1) = 0.0;
923  //
924  rResult[2](0, 0) = 0.0;
925  rResult[2](0, 1) = 0.0;
926  rResult[2](1, 0) = 0.0;
927  rResult[2](1, 1) = 9.0 * (3.0 * et - 1.0);
928  //
929  rResult[3](0, 0) = 9.0 * (3.0 * xi - 6.0 * zt + 1.0);
930  rResult[3](0, 1) = 4.5 * (6.0 * xi - 6.0 * zt + 1.0);
931  rResult[3](1, 0) = 4.5 * (6.0 * xi - 6.0 * zt + 1.0);
932  rResult[3](1, 1) = 27.0 * xi;
933  //
934  rResult[4](0, 0) = 9.0 * (3.0 * zt - 6.0 * xi + 1.0);
935  rResult[4](0, 1) = -4.5 * (6.0 * xi - 1.0);
936  rResult[4](1, 0) = -4.5 * (6.0 * xi - 1.0);
937  rResult[4](1, 1) = 0.0;
938  //
939  rResult[5](0, 0) = 27.0 * et;
940  rResult[5](0, 1) = 4.5 * (6.0 * xi - 1.0);
941  rResult[5](1, 0) = 4.5 * (6.0 * xi - 1.0);
942  rResult[5](1, 1) = 0.0;
943  //
944  rResult[6](0, 0) = 0.0;
945  rResult[6](0, 1) = 4.5 * (6.0 * et - 1.0);
946  rResult[6](1, 0) = 4.5 * (6.0 * et - 1.0);
947  rResult[6](1, 1) = 27.0 * xi;
948  //
949  rResult[7](0, 0) = 0.0;
950  rResult[7](0, 1) = 4.5 * (6.0 * et - 1.0);
951  rResult[7](1, 0) = 4.5 * (6.0 * et - 1.0);
952  rResult[7](1, 1) = 9.0 * (3.0 * zt - 6.0 * et + 1.0);
953  //
954  rResult[8](0, 0) = 27.0 * et;
955  rResult[8](0, 1) = 4.5 * (6.0 * et - 6.0 * zt + 1.0);
956  rResult[8](1, 0) = 4.5 * (6.0 * et - 6.0 * zt + 1.0);
957  rResult[8](1, 1) = 9.0 * (3.0 * et - 6.0 * zt + 1.0);
958  //
959  rResult[9](0, 0) = -54.0 * et;
960  rResult[9](0, 1) = -27.0 * (xi - zt + et);
961  rResult[9](1, 0) = -27.0 * (xi - zt + et);
962  rResult[9](1, 1) = -54.0 * xi;
963  //
964  return rResult;
965  }
966 
974  ShapeFunctionsThirdDerivativesType& rResult, const CoordinatesArrayType& rPoint) const override
975  {
976  if (rResult.size() != this->PointsNumber())
977  {
979  rResult.swap(temp);
980  }
981  //
982  for (IndexType i = 0; i < rResult.size(); ++i)
983  {
985  rResult[i].swap(temp);
986  }
987  //
988  rResult[0][0].resize(2, 2, false);
989  rResult[0][1].resize(2, 2, false);
990  rResult[1][0].resize(2, 2, false);
991  rResult[1][1].resize(2, 2, false);
992  rResult[2][0].resize(2, 2, false);
993  rResult[2][1].resize(2, 2, false);
994  rResult[3][0].resize(2, 2, false);
995  rResult[3][1].resize(2, 2, false);
996  rResult[4][0].resize(2, 2, false);
997  rResult[4][1].resize(2, 2, false);
998  rResult[5][0].resize(2, 2, false);
999  rResult[5][1].resize(2, 2, false);
1000  rResult[6][0].resize(2, 2, false);
1001  rResult[6][1].resize(2, 2, false);
1002  rResult[7][0].resize(2, 2, false);
1003  rResult[7][1].resize(2, 2, false);
1004  rResult[8][0].resize(2, 2, false);
1005  rResult[8][1].resize(2, 2, false);
1006  rResult[9][0].resize(2, 2, false);
1007  rResult[9][1].resize(2, 2, false);
1008  //
1009  rResult[0][0](0, 0) = -27.0;
1010  rResult[0][0](0, 1) = -27.0;
1011  rResult[0][0](1, 0) = -27.0;
1012  rResult[0][0](1, 1) = -27.0;
1013  rResult[0][1](0, 0) = -27.0;
1014  rResult[0][1](0, 1) = -27.0;
1015  rResult[0][1](1, 0) = -27.0;
1016  rResult[0][1](1, 1) = -27.0;
1017  //
1018  rResult[1][0](0, 0) = 27.0;
1019  rResult[1][0](0, 1) = 0.0;
1020  rResult[1][0](1, 0) = 0.0;
1021  rResult[1][0](1, 1) = 0.0;
1022  rResult[1][1](0, 0) = 0.0;
1023  rResult[1][1](0, 1) = 0.0;
1024  rResult[1][1](1, 0) = 0.0;
1025  rResult[1][1](1, 1) = 0.0;
1026  //
1027  rResult[2][0](0, 0) = 0.0;
1028  rResult[2][0](0, 1) = 0.0;
1029  rResult[2][0](1, 0) = 0.0;
1030  rResult[2][0](1, 1) = 0.0;
1031  rResult[2][1](0, 0) = 0.0;
1032  rResult[2][1](0, 1) = 0.0;
1033  rResult[2][1](1, 0) = 0.0;
1034  rResult[2][1](1, 1) = 27.0;
1035  //
1036  rResult[3][0](0, 0) = 81.0;
1037  rResult[3][0](0, 1) = 54.0;
1038  rResult[3][0](1, 0) = 54.0;
1039  rResult[3][0](1, 1) = 27.0;
1040  rResult[3][1](0, 0) = 54.0;
1041  rResult[3][1](0, 1) = 27.0;
1042  rResult[3][1](1, 0) = 27.0;
1043  rResult[3][1](1, 1) = 0.0;
1044  //
1045  rResult[4][0](0, 0) = -81.0;
1046  rResult[4][0](0, 1) = -27.0;
1047  rResult[4][0](1, 0) = -27.0;
1048  rResult[4][0](1, 1) = 0.0;
1049  rResult[4][1](0, 0) = -27.0;
1050  rResult[4][1](0, 1) = 0.0;
1051  rResult[4][1](1, 0) = 0.0;
1052  rResult[4][1](1, 1) = 0.0;
1053  //
1054  rResult[5][0](0, 0) = 0.0;
1055  rResult[5][0](0, 1) = 27.0;
1056  rResult[5][0](1, 0) = 27.0;
1057  rResult[5][0](1, 1) = 0.0;
1058  rResult[5][1](0, 0) = 27.0;
1059  rResult[5][1](0, 1) = 0.0;
1060  rResult[5][1](1, 0) = 0.0;
1061  rResult[5][1](1, 1) = 0.0;
1062  //
1063  rResult[6][0](0, 0) = 0.0;
1064  rResult[6][0](0, 1) = 0.0;
1065  rResult[6][0](1, 0) = 0.0;
1066  rResult[6][0](1, 1) = 27.0;
1067  rResult[6][1](0, 0) = 0.0;
1068  rResult[6][1](0, 1) = 27.0;
1069  rResult[6][1](1, 0) = 27.0;
1070  rResult[6][1](1, 1) = 0.0;
1071  //
1072  rResult[7][0](0, 0) = 0.0;
1073  rResult[7][0](0, 1) = 0.0;
1074  rResult[7][0](1, 0) = 0.0;
1075  rResult[7][0](1, 1) = -27.0;
1076  rResult[7][1](0, 0) = 0.0;
1077  rResult[7][1](0, 1) = -27.0;
1078  rResult[7][1](1, 0) = -27.0;
1079  rResult[7][1](1, 1) = -81.0;
1080  //
1081  rResult[8][0](0, 0) = 0.0;
1082  rResult[8][0](0, 1) = 27.0;
1083  rResult[8][0](1, 0) = 27.0;
1084  rResult[8][0](1, 1) = 54.0;
1085  rResult[8][1](0, 0) = 27.0;
1086  rResult[8][1](0, 1) = 54.0;
1087  rResult[8][1](1, 0) = 54.0;
1088  rResult[8][1](1, 1) = 81.0;
1089  //
1090  rResult[9][0](0, 0) = 0.0;
1091  rResult[9][0](0, 1) = -54.0;
1092  rResult[9][0](1, 0) = -54.0;
1093  rResult[9][0](1, 1) = -54.0;
1094  rResult[9][1](0, 0) = -54.0;
1095  rResult[9][1](0, 1) = -54.0;
1096  rResult[9][1](1, 0) = -54.0;
1097  rResult[9][1](1, 1) = 0.0;
1098  //
1099  return rResult;
1100  }
1101 
1105 
1107 
1108 protected:
1113 private:
1116 
1117  static const GeometryData msGeometryData;
1118 
1119  static const GeometryDimension msGeometryDimension;
1120 
1124 
1125  friend class Serializer;
1126 
1127  void save(Serializer& rSerializer) const override
1128  {
1130  }
1131 
1132  void load(Serializer& rSerializer) override
1133  {
1135  }
1136 
1137  Triangle2D10() : BaseType(PointsArrayType(), &msGeometryData) {}
1138 
1142 
1146 
1150 
1158  static Matrix CalculateShapeFunctionsIntegrationPointsValues(typename BaseType::IntegrationMethod ThisMethod)
1159  {
1160  IntegrationPointsContainerType all_integration_points = AllIntegrationPoints();
1161  IntegrationPointsArrayType integration_points = all_integration_points[static_cast<int>(ThisMethod)];
1162  //number of integration points
1163  const int integration_points_number = integration_points.size();
1164  //number of nodes in current geometry
1165  const int points_number = 10;
1166  //setting up return matrix
1167  Matrix shape_function_values(integration_points_number, points_number);
1168  //loop over all integration points
1169  for (int pnt = 0; pnt < integration_points_number; ++pnt)
1170  {
1171  const double xi = integration_points[pnt].X();
1172  const double et = integration_points[pnt].Y();
1173  const double zt = 1.0 - xi - et;
1174  //
1175  shape_function_values(pnt, 0) = zt * (3.0 * zt - 1.0) * (3.0 * zt - 2.0) * 0.5;
1176  shape_function_values(pnt, 1) = xi * (3.0 * xi - 1.0) * (3.0 * xi - 2.0) * 0.5;
1177  shape_function_values(pnt, 2) = et * (3.0 * et - 1.0) * (3.0 * et - 2.0) * 0.5;
1178  shape_function_values(pnt, 3) = xi * zt * (3.0 * zt - 1.0) * 4.5;
1179  shape_function_values(pnt, 4) = xi * zt * (3.0 * xi - 1.0) * 4.5;
1180  shape_function_values(pnt, 5) = xi * et * (3.0 * xi - 1.0) * 4.5;
1181  shape_function_values(pnt, 6) = xi * et * (3.0 * et - 1.0) * 4.5;
1182  shape_function_values(pnt, 7) = et * zt * (3.0 * et - 1.0) * 4.5;
1183  shape_function_values(pnt, 8) = et * zt * (3.0 * zt - 1.0) * 4.5;
1184  shape_function_values(pnt, 9) = xi * et * zt * 27.0;
1185  }
1186  return shape_function_values;
1187  }
1188 
1199  CalculateShapeFunctionsIntegrationPointsLocalGradients(typename BaseType::IntegrationMethod ThisMethod)
1200  {
1201  IntegrationPointsContainerType all_integration_points = AllIntegrationPoints();
1202  IntegrationPointsArrayType integration_points = all_integration_points[static_cast<int>(ThisMethod)];
1203  //number of integration points
1204  const int integration_points_number = integration_points.size();
1205  ShapeFunctionsGradientsType d_shape_f_values(integration_points_number);
1206  //loop over all integration points
1207  for (int pnt = 0; pnt < integration_points_number; ++pnt)
1208  {
1209  Matrix result(10, 2);
1210  const double xi = integration_points[pnt].X();
1211  const double et = integration_points[pnt].Y();
1212  const double zt = 1.0 - xi - et;
1213  //
1214  noalias(result) = ZeroMatrix(10, 2);
1215  //
1216  result(0, 0) = -4.5 * zt * (3.0 * zt - 2.0) - 1.0;
1217  result(0, 1) = -4.5 * zt * (3.0 * zt - 2.0) - 1.0;
1218  //
1219  result(1, 0) = 4.5 * xi * (3.0 * xi - 2.0) + 1.0;
1220  result(1, 1) = 0.0;
1221  //
1222  result(2, 0) = 0.0;
1223  result(2, 1) = 4.5 * et * (3.0 * et - 2.0) + 1.0;
1224  //
1225  result(3, 0) = 4.5 * (zt * (3.0 * zt - 1.0) - xi * (6.0 * zt - 1.0));
1226  result(3, 1) = -4.5 * xi * (6.0 * zt - 1.0);
1227  //
1228  result(4, 0) = 4.5 * (zt * (6.0 * xi - 1.0) - xi * (3.0 * xi - 1.0));
1229  result(4, 1) = -4.5 * xi * (3.0 * xi - 1.0);
1230  //
1231  result(5, 0) = 4.5 * et * (6.0 * xi - 1.0);
1232  result(5, 1) = 4.5 * xi * (3.0 * xi - 1.0);
1233  //
1234  result(6, 0) = 4.5 * et * (3.0 * et - 1.0);
1235  result(6, 1) = 4.5 * xi * (6.0 * et - 1.0);
1236  //
1237  result(7, 0) = -4.5 * et * (3.0 * et - 1.0);
1238  result(7, 1) = 4.5 * (zt * (6.0 * et - 1.0) - et * (3.0 * et - 1.0));
1239  //
1240  result(8, 0) = -4.5 * et * (6.0 * zt - 1.0);
1241  result(8, 1) = 4.5 * (zt * (3.0 * zt - 1.0) - et * (6.0 * zt - 1.0));
1242  //
1243  result(9, 0) = 27.0 * et * (zt - xi);
1244  result(9, 1) = 27.0 * xi * (zt - et);
1245  //
1246  d_shape_f_values[pnt] = result;
1247  }
1248  return d_shape_f_values;
1249  }
1250 
1251  static const IntegrationPointsContainerType AllIntegrationPoints()
1252  {
1253  IntegrationPointsContainerType integration_points =
1254  {
1255  {
1256  Quadrature<TriangleGaussLegendreIntegrationPoints1, 2, IntegrationPoint<3>>::GenerateIntegrationPoints(),
1257  Quadrature<TriangleGaussLegendreIntegrationPoints2, 2, IntegrationPoint<3>>::GenerateIntegrationPoints(),
1258  Quadrature<TriangleGaussLegendreIntegrationPoints3, 2, IntegrationPoint<3>>::GenerateIntegrationPoints(),
1259  Quadrature<TriangleGaussLegendreIntegrationPoints4, 2, IntegrationPoint<3>>::GenerateIntegrationPoints(),
1260  Quadrature<TriangleGaussLegendreIntegrationPoints5, 2, IntegrationPoint<3>>::GenerateIntegrationPoints()
1261  }
1262  };
1263  return integration_points;
1264  }
1265 
1266  static const ShapeFunctionsValuesContainerType AllShapeFunctionsValues()
1267  {
1268  ShapeFunctionsValuesContainerType shape_functions_values =
1269  {
1270  {
1271  Triangle2D10<TPointType>::CalculateShapeFunctionsIntegrationPointsValues(GeometryData::IntegrationMethod::GI_GAUSS_1),
1272  Triangle2D10<TPointType>::CalculateShapeFunctionsIntegrationPointsValues(GeometryData::IntegrationMethod::GI_GAUSS_2),
1273  Triangle2D10<TPointType>::CalculateShapeFunctionsIntegrationPointsValues(GeometryData::IntegrationMethod::GI_GAUSS_3),
1274  Triangle2D10<TPointType>::CalculateShapeFunctionsIntegrationPointsValues(GeometryData::IntegrationMethod::GI_GAUSS_4),
1275  Triangle2D10<TPointType>::CalculateShapeFunctionsIntegrationPointsValues(GeometryData::IntegrationMethod::GI_GAUSS_5),
1276  }
1277  };
1278  return shape_functions_values;
1279  }
1280 
1281  static const ShapeFunctionsLocalGradientsContainerType AllShapeFunctionsLocalGradients()
1282  {
1283  ShapeFunctionsLocalGradientsContainerType shape_functions_local_gradients =
1284  {
1285  {
1286  Triangle2D10<TPointType>::CalculateShapeFunctionsIntegrationPointsLocalGradients(GeometryData::IntegrationMethod::GI_GAUSS_1),
1287  Triangle2D10<TPointType>::CalculateShapeFunctionsIntegrationPointsLocalGradients(GeometryData::IntegrationMethod::GI_GAUSS_2),
1288  Triangle2D10<TPointType>::CalculateShapeFunctionsIntegrationPointsLocalGradients(GeometryData::IntegrationMethod::GI_GAUSS_3),
1289  Triangle2D10<TPointType>::CalculateShapeFunctionsIntegrationPointsLocalGradients(GeometryData::IntegrationMethod::GI_GAUSS_4),
1290  Triangle2D10<TPointType>::CalculateShapeFunctionsIntegrationPointsLocalGradients(GeometryData::IntegrationMethod::GI_GAUSS_5),
1291  }
1292  };
1293  return shape_functions_local_gradients;
1294  }
1295 
1299 
1303 
1307 
1308  template<class TOtherPointType> friend class Triangle2D10;
1309 
1313 
1315 }; // Class Geometry
1316 
1320 
1324 
1328 template<class TPointType>
1329 inline std::istream& operator >> (std::istream& rIStream, Triangle2D10<TPointType>& rThis);
1330 
1334 template<class TPointType>
1335 inline std::ostream& operator << (std::ostream& rOStream, const Triangle2D10<TPointType>& rThis)
1336 {
1337  rThis.PrintInfo(rOStream);
1338  rOStream << std::endl;
1339  rThis.PrintData(rOStream);
1340  return rOStream;
1341 }
1342 
1344 
1345 template<class TPointType> const
1346 GeometryData Triangle2D10<TPointType>::msGeometryData(
1349  Triangle2D10<TPointType>::AllIntegrationPoints(),
1350  Triangle2D10<TPointType>::AllShapeFunctionsValues(),
1351  AllShapeFunctionsLocalGradients());
1352 
1353 template<class TPointType>
1354 const GeometryDimension Triangle2D10<TPointType>::msGeometryDimension(2, 2);
1355 
1356 }// namespace Kratos.
Definition: geometry_data.h:60
KratosGeometryType
Definition: geometry_data.h:110
SizeType IntegrationPointsNumber() const
Definition: geometry_data.h:430
IntegrationMethod
Definition: geometry_data.h:76
KratosGeometryFamily
Definition: geometry_data.h:91
IntegrationMethod DefaultIntegrationMethod() const
Definition: geometry_data.h:425
Definition: geometry_dimension.h:42
Geometry base class.
Definition: geometry.h:71
SizeType PointsNumber() const
Definition: geometry.h:528
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
DataValueContainer & GetData()
Definition: geometry.h:591
std::size_t SizeType
Definition: geometry.h:144
const TPointType::Pointer pGetPoint(const int Index) const
Definition: geometry.h:1790
std::size_t IndexType
Definition: geometry.h:137
std::array< Matrix, static_cast< int >GeometryData::IntegrationMethod::NumberOfIntegrationMethods)> ShapeFunctionsValuesContainerType
Definition: geometry.h:172
Vector & DeterminantOfJacobian(Vector &rResult) const
Definition: geometry.h:3154
virtual CoordinatesArrayType & PointLocalCoordinates(CoordinatesArrayType &rResult, const CoordinatesArrayType &rPoint) const
Returns the local coordinates of a given arbitrary point.
Definition: geometry.h:1854
const PointsArrayType & Points() const
Definition: geometry.h:1768
bool AllPointsAreValid() const
Checks if the geometry points are valid Checks if the geometry points are valid from the pointer valu...
Definition: geometry.h:4093
std::array< IntegrationPointsArrayType, static_cast< int >GeometryData::IntegrationMethod::NumberOfIntegrationMethods)> IntegrationPointsContainerType
Definition: geometry.h:167
const IntegrationPointsArrayType & IntegrationPoints() const
Definition: geometry.h:2284
JacobiansType & Jacobian(JacobiansType &rResult) const
Definition: geometry.h:2901
GeometryData::ShapeFunctionsLocalGradientsContainerType ShapeFunctionsLocalGradientsContainerType
Definition: geometry.h:177
GeometryData::IntegrationMethod IntegrationMethod
Definition: geometry.h:122
Short class definition.
Definition: integration_point.h:52
Definition: amatrix_interface.h:41
void swap(Matrix &Other)
Definition: amatrix_interface.h:289
void resize(std::size_t NewSize1, std::size_t NewSize2, bool preserve=0)
Definition: amatrix_interface.h:224
An three node 2D line geometry with cubic shape functions.
Definition: line_2d_4.h:62
This class defines the node.
Definition: node.h:65
PointerVector is a container like stl vector but using a vector to store pointers to its data.
Definition: pointer_vector.h:72
void push_back(const TPointerType &x)
Definition: pointer_vector.h:270
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
A ten node 2D triangular geometry with cubic shape functions.
Definition: triangle_2d_10.h:67
Triangle2D10(typename PointType::Pointer pPoint01, typename PointType::Pointer pPoint02, typename PointType::Pointer pPoint03, typename PointType::Pointer pPoint04, typename PointType::Pointer pPoint05, typename PointType::Pointer pPoint06, typename PointType::Pointer pPoint07, typename PointType::Pointer pPoint08, typename PointType::Pointer pPoint09, typename PointType::Pointer pPoint10)
Definition: triangle_2d_10.h:221
void NodesInFaces(DenseMatrix< unsigned int > &NodesInFaces) const override
Definition: triangle_2d_10.h:720
BaseType::NormalType NormalType
Definition: triangle_2d_10.h:197
BaseType::IntegrationPointsArrayType IntegrationPointsArrayType
Definition: triangle_2d_10.h:143
Triangle2D10 & operator=(Triangle2D10< TOtherPointType > const &rOther)
Definition: triangle_2d_10.h:344
BaseType::ShapeFunctionsSecondDerivativesType ShapeFunctionsSecondDerivativesType
Definition: triangle_2d_10.h:184
BaseType::Pointer Create(const IndexType NewGeometryId, const BaseType &rGeometry) const override
Creates a new geometry pointer.
Definition: triangle_2d_10.h:394
BaseType::PointsArrayType PointsArrayType
Definition: triangle_2d_10.h:123
BaseType::GeometriesArrayType GeometriesArrayType
Definition: triangle_2d_10.h:97
SizeType EdgesNumber() const override
This method gives you number of all edges of this geometry.
Definition: triangle_2d_10.h:684
Geometry< TPointType > BaseType
Definition: triangle_2d_10.h:76
Matrix & PointsLocalCoordinates(Matrix &rResult) const override
Definition: triangle_2d_10.h:406
BaseType::ShapeFunctionsValuesContainerType ShapeFunctionsValuesContainerType
Definition: triangle_2d_10.h:156
Line2D4< TPointType > EdgeType
Definition: triangle_2d_10.h:81
BaseType::JacobiansType JacobiansType
Definition: triangle_2d_10.h:169
~Triangle2D10() override
Definition: triangle_2d_10.h:299
bool IsInside(const CoordinatesArrayType &rPoint, CoordinatesArrayType &rResult, const double Tolerance=std::numeric_limits< double >::epsilon()) const override
Returns whether given arbitrary point is inside the Geometry and the respective local point for the g...
Definition: triangle_2d_10.h:517
Triangle2D10(const PointType &Point01, const PointType &Point02, const PointType &Point03, const PointType &Point04, const PointType &Point05, const PointType &Point06, const PointType &Point07, const PointType &Point08, const PointType &Point09, const PointType &Point10)
Definition: triangle_2d_10.h:203
double ShapeFunctionValue(IndexType ShapeFunctionIndex, const CoordinatesArrayType &rPoint) const override
Definition: triangle_2d_10.h:571
Triangle2D10(Triangle2D10 const &rOther)
Definition: triangle_2d_10.h:275
BaseType::ShapeFunctionsGradientsType ShapeFunctionsGradientsType
Definition: triangle_2d_10.h:176
BaseType::IntegrationPointsContainerType IntegrationPointsContainerType
Definition: triangle_2d_10.h:150
double Length() const override
Definition: triangle_2d_10.h:465
BaseType::ShapeFunctionsLocalGradientsContainerType ShapeFunctionsLocalGradientsContainerType
Definition: triangle_2d_10.h:162
TPointType PointType
Definition: triangle_2d_10.h:102
Triangle2D10(const IndexType GeometryId, const PointsArrayType &rThisPoints)
Constructor with Geometry Id.
Definition: triangle_2d_10.h:251
SizeType FacesNumber() const override
Returns the number of faces of the current geometry.
Definition: triangle_2d_10.h:706
BaseType::IndexType IndexType
Definition: triangle_2d_10.h:110
virtual ShapeFunctionsGradientsType ShapeFunctionsLocalGradients(IntegrationMethod ThisMethod)
Definition: triangle_2d_10.h:750
ShapeFunctionsSecondDerivativesType & ShapeFunctionsSecondDerivatives(ShapeFunctionsSecondDerivativesType &rResult, const CoordinatesArrayType &rPoint) const override
Definition: triangle_2d_10.h:890
Vector & ShapeFunctionsValues(Vector &rResult, const CoordinatesArrayType &rCoordinates) const override
Returns vector of shape function values at local coordinate.
Definition: triangle_2d_10.h:541
BaseType::CoordinatesArrayType CoordinatesArrayType
Definition: triangle_2d_10.h:128
BaseType::Pointer Create(const IndexType NewGeometryId, PointsArrayType const &rThisPoints) const override
Creates a new geometry pointer.
Definition: triangle_2d_10.h:370
GeometryData::KratosGeometryType GetGeometryType() const override
Definition: triangle_2d_10.h:306
virtual Matrix & ShapeFunctionsGradients(Matrix &rResult, const CoordinatesArrayType &rPoint)
Definition: triangle_2d_10.h:841
Matrix & ShapeFunctionsLocalGradients(Matrix &rResult, const CoordinatesArrayType &rPoint) const override
Definition: triangle_2d_10.h:790
friend class Triangle2D10
Definition: triangle_2d_10.h:1308
GeometriesArrayType GenerateEdges() const override
This method gives you all edges of this geometry.
Definition: triangle_2d_10.h:697
ShapeFunctionsThirdDerivativesType & ShapeFunctionsThirdDerivatives(ShapeFunctionsThirdDerivativesType &rResult, const CoordinatesArrayType &rPoint) const override
Definition: triangle_2d_10.h:973
BaseType::IntegrationPointType IntegrationPointType
Definition: triangle_2d_10.h:134
GeometryData::IntegrationMethod IntegrationMethod
Definition: triangle_2d_10.h:91
BaseType::SizeType SizeType
Definition: triangle_2d_10.h:117
void NumberNodesInFaces(DenseVector< unsigned int > &NumberNodesInFaces) const override
Definition: triangle_2d_10.h:712
GeometryData::KratosGeometryFamily GetGeometryFamily() const override
Definition: triangle_2d_10.h:301
double DomainSize() const override
Definition: triangle_2d_10.h:504
KRATOS_CLASS_POINTER_DEFINITION(Triangle2D10)
Triangle2D10(const PointsArrayType &ThisPoints)
Definition: triangle_2d_10.h:241
std::string Info() const override
Definition: triangle_2d_10.h:629
virtual ShapeFunctionsGradientsType ShapeFunctionsLocalGradients()
Definition: triangle_2d_10.h:767
void PrintInfo(std::ostream &rOStream) const override
Definition: triangle_2d_10.h:640
Triangle2D10(Triangle2D10< TOtherPointType > const &rOther)
Definition: triangle_2d_10.h:291
BaseType::ShapeFunctionsThirdDerivativesType ShapeFunctionsThirdDerivativesType
Definition: triangle_2d_10.h:192
BaseType::Pointer Create(PointsArrayType const &rThisPoints) const override
Creates a new geometry pointer.
Definition: triangle_2d_10.h:359
double Area() const override
Definition: triangle_2d_10.h:481
BaseType::Pointer Create(const BaseType &rGeometry) const override
Creates a new geometry pointer.
Definition: triangle_2d_10.h:381
Triangle2D10 & operator=(const Triangle2D10 &rOther)
Definition: triangle_2d_10.h:326
void PrintData(std::ostream &rOStream) const override
Definition: triangle_2d_10.h:655
Triangle2D10(const std::string &rGeometryName, const PointsArrayType &rThisPoints)
Constructor with Geometry Name.
Definition: triangle_2d_10.h:259
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
#define KRATOS_ERROR_IF(conditional)
Definition: exception.h:162
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
const GeometryData Triangle2D10< TPointType >::msGeometryData & msGeometryDimension(), Triangle2D10< TPointType >::AllShapeFunctionsValues(), AllShapeFunctionsLocalGradients()
Definition: brep_curve.h:483
KratosZeroMatrix< double > ZeroMatrix
Definition: amatrix_interface.h:559
Internals::Matrix< double, AMatrix::dynamic, AMatrix::dynamic > Matrix
Definition: amatrix_interface.h:470
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
const GeometryData BrepCurve< TContainerPointType, TContainerPointEmbeddedType >::msGeometryData & msGeometryDimension
Definition: brep_curve.h:483
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
def load(f)
Definition: ode_solve.py:307
float temp
Definition: rotating_cone.py:85
integer i
Definition: TensorModule.f:17