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.
generate_new_conditions_mesher_process.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosDelaunayMeshingApplication $
3 // Created by: $Author: JMCarbonell $
4 // Last modified by: $Co-Author: $
5 // Date: $Date: April 2018 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 #if !defined(KRATOS_GENERATE_NEW_CONDITIONS_MESHER_PROCESS_H_INCLUDED )
11 #define KRATOS_GENERATE_NEW_CONDITIONS_MESHER_PROCESS_H_INCLUDED
12 
13 
14 // System includes
15 
16 // External includes
17 
18 // Project includes
20 
22 //Data: MASTER_ELEMENTS(set), MASTER_NODES(set)
23 //StepData:
24 //Flags: (checked) TO_ERASE, TO_REFINE, CONTACT, NEW_ENTITY
25 // (set) BOUNDARY(set), [TO_REFINE(nodes), TO_ERASE(condition)]->locally to not preserve condition
26 // (modified)
27 // (reset)
28 // (set):=(set in this process)
29 
30 namespace Kratos
31 {
32 
35 
42 
43 typedef Node::WeakPointer NodeWeakPtrType;
44 typedef Element::WeakPointer ElementWeakPtrType;
45 typedef Condition::WeakPointer ConditionWeakPtrType;
46 
50 
54 
58 
62 
64 
68 {
69  public:
72 
75 
79 
82  MesherUtilities::MeshingParameters& rRemeshingParameters,
83  int EchoLevel)
84  : BuildModelPartBoundaryProcess(rModelPart, rModelPart.Name(), EchoLevel),
85  mrRemesh(rRemeshingParameters)
86  {
87 
88  }
89 
92  {
93  }
94 
95 
99 
100  void operator()()
101  {
102  Execute();
103  }
104 
105 
109 
110  void Execute() override
111  {
112  KRATOS_TRY
113 
114  bool success=false;
115 
116  // double begin_time = OpenMPUtils::GetCurrentTime();
117 
118  if( mEchoLevel > 0 )
119  std::cout<<" [ Build Boundary on ModelPart ["<<mrModelPart.Name()<<"] ]"<<std::endl;
120 
122 
123  success=this->UniqueSkinSearch(mrModelPart);
124 
125  if(!success)
126  {
127  std::cout<<" ERROR: BOUNDARY BUILD FAILED ModelPart : ["<<mrModelPart<<"] "<<std::endl;
128  }
129  // else
130  // {
131  // if( mEchoLevel >= 1 ){
132  // double end_time = OpenMPUtils::GetCurrentTime();
133  // std::cout<<" [ Search performed in Time = "<<end_time-begin_time<<" ]"<<std::endl;
134  // }
135  // //PrintSkin(mrModelPart);
136  // }
137 
138  KRATOS_CATCH(" ")
139  }
140 
141 
145 
146 
150 
151 
155 
157  std::string Info() const override
158  {
159  return "GenerateNewConditionsMesherProcess";
160  }
161 
163  void PrintInfo(std::ostream& rOStream) const override
164  {
165  rOStream << "GenerateNewConditionsMesherProcess";
166  }
167 
169  void PrintData(std::ostream& rOStream) const override
170  {
171  }
172 
173 
177 
178 
180 
181  protected:
184 
188 
192 
193 
194  bool BuildCompositeConditions( ModelPart& rModelPart, ModelPart::ConditionsContainerType& rTemporaryConditions, std::vector<int>& rPreservedConditions, unsigned int& rConditionId ) override
195  {
196 
197  KRATOS_TRY
198 
199  //master conditions must be deleted and set them again in the build
200  this->ClearMasterEntities(rModelPart, rTemporaryConditions);
201 
202  //properties to be used in the generation
203  int number_properties = rModelPart.GetParentModelPart().NumberOfProperties();
204  if(number_properties<0)
205  KRATOS_ERROR<<" number of properties is "<<number_properties<<std::endl;
206 
207  Properties::Pointer properties = rModelPart.GetParentModelPart().GetMesh().pGetProperties(number_properties-1);
208 
209  ProcessInfo& rCurrentProcessInfo = rModelPart.GetProcessInfo();
210 
211  //clear nodal boundary flag
212  for(auto& i_elem : rModelPart.Elements())
213  {
214  Geometry<Node >& eGeometry = i_elem.GetGeometry();
215 
216  for(unsigned int j=0; j<eGeometry.size(); ++j)
217  {
218  eGeometry[j].Set(BOUNDARY,false);
219  if(rModelPart.Is(FLUID)){
220  eGeometry[j].Set(FREE_SURFACE,false);
221  }
222  }
223  }
224 
226 
227  rConditionId=0;
228  for(auto i_elem(rElements.begin()); i_elem != rElements.end(); ++i_elem)
229  {
230  Geometry< Node >& eGeometry = i_elem->GetGeometry();
231 
232  const unsigned int dimension = eGeometry.WorkingSpaceDimension();
233 
234  if( eGeometry.FacesNumber() >= (dimension+1) ){ //3 or 4
235 
236  /*each face is opposite to the corresponding node number so in 2D triangle
237  0 ----- 1 2
238  1 ----- 2 0
239  2 ----- 0 1
240  */
241 
242  /*each face is opposite to the corresponding node number so in 3D tetrahedron
243  0 ----- 1 2 3
244  1 ----- 2 0 3
245  2 ----- 0 1 3
246  3 ----- 0 2 1
247  */
248 
249  //finding boundaries and creating the "skin"
250  //
251  //********************************************************************
252 
253  DenseMatrix<unsigned int> lpofa; //connectivities of points defining faces
254  DenseVector<unsigned int> lnofa; //number of points defining faces
255 
256  ElementWeakPtrVectorType& nElements = i_elem->GetValue(NEIGHBOUR_ELEMENTS);
257 
258  //get matrix nodes in faces
259  eGeometry.NodesInFaces(lpofa);
260  eGeometry.NumberNodesInFaces(lnofa);
261 
262  //Get the standard ReferenceCondition
263  const Condition & rReferenceCondition = mrRemesh.GetReferenceCondition();
264 
265  //loop on neighbour elements of an element
266  unsigned int iface=0;
267  for(auto& i_nelem : nElements)
268  {
269  unsigned int NumberNodesInFace = lnofa[iface];
270 
271  if(i_nelem.Id() == i_elem->Id())
272  {
273  //if no neighbour is present => the face is free surface
274  unsigned int rigid_nodes = 0;
275  unsigned int inlet_nodes = 0;
276  unsigned int free_surface_nodes = 0;
277  for(unsigned int j=1; j<=NumberNodesInFace; ++j)
278  {
279  eGeometry[lpofa(j,iface)].Set(BOUNDARY,true);
280  if(rModelPart.Is(FLUID)){
281  if(eGeometry[lpofa(j,iface)].Is(RIGID) || eGeometry[lpofa(j,iface)].Is(SOLID)){
282  ++rigid_nodes;
283  }
284  else if(eGeometry[lpofa(j,iface)].Is(INLET)){
285  ++inlet_nodes;
286  }
287  else{
288  ++free_surface_nodes;
289  }
290  }
291  //std::cout<<" node ["<<j<<"]"<<eGeometry[lpofa(j,iface)].Id()<<std::endl;
292  }
293 
294  if(rModelPart.Is(FLUID)){
295  if( (free_surface_nodes>0 && (rigid_nodes>0 || inlet_nodes>0)) || (rigid_nodes==0 && inlet_nodes==0) ){
296  for(unsigned int j=1; j<=NumberNodesInFace; ++j)
297  {
298  eGeometry[lpofa(j,iface)].Set(FREE_SURFACE,true);
299  }
300  }
301  }
302 
303  //Get the correct ReferenceCondition
304  Condition::Pointer pBoundaryCondition;
305  bool condition_found = false;
306  bool point_condition = false;
307 
308  bool inserted = false;
309  for(auto i_cond(rTemporaryConditions.begin()); i_cond != rTemporaryConditions.end(); ++i_cond)
310  {
311  Geometry< Node >& cGeometry = i_cond->GetGeometry();
312 
313  if( i_cond->IsNot(TO_ERASE) ){
314 
315  if( i_cond->IsNot(CONTACT) ){
316 
317  if( i_cond->Is(NEW_ENTITY) ){
318  inserted = false;
319  }
320  else{
321  // remeshing rebuild
322  for( unsigned int i=0; i<cGeometry.size(); ++i )
323  {
324  if( cGeometry[i].Is(TO_ERASE)){
325  inserted = true;
326  break;
327  }
328  }
329  // remeshing rebuild
330  }
331 
332  if( !inserted ){
333 
334  if( rPreservedConditions[i_cond->Id()-1] == 0 ){
335 
336  MesherUtilities MesherUtils;
337  condition_found = MesherUtils.FindCondition(cGeometry,eGeometry,lpofa,lnofa,iface);
338 
339  if( condition_found ){
340 
341  pBoundaryCondition = (*i_cond.base()); //accessing shared_ptr get() to obtain the raw pointer
342  rPreservedConditions[i_cond->Id()-1] += 1; //add each time is used
343 
344  if( cGeometry.PointsNumber() == 1 )
345  point_condition = true;
346 
347  //break;
348  }
349  }
350 
351  }
352  else{
353 
354  if( rPreservedConditions[i_cond->Id()-1] < 2 ){
355 
356  condition_found = this->FindNodeInCondition(cGeometry,eGeometry,lpofa,lnofa,iface);
357 
358  if( condition_found ){
359 
360  pBoundaryCondition = (*i_cond.base()); //accessing shared_ptr get() to obtain the raw pointer
361  rPreservedConditions[i_cond->Id()-1] += 1; //add each time is used
362 
363  if( cGeometry.PointsNumber() == 1 )
364  point_condition = true;
365  //break;
366  }
367  // std::cout<<" INSERTED COND "<<i_cond->Id()<<std::endl;
368  }
369  }
370  }
371  else{
372  rPreservedConditions[i_cond->Id()-1] += 1; //will not be restored
373  //std::cout<<" Condition Contact "<<i_cond->Id()<<std::endl;
374  }
375  }
376 
377  if(condition_found==true){
378  // std::cout<<" Condition Found: "<<i_cond->Id()<<" ("<<i_cond->GetGeometry()[0].Id()<<", "<<i_cond->GetGeometry()[1].Id()<<") == ("<<eGeometry[lpofa(1,i)].Id()<<" "<<eGeometry[lpofa(2,i)].Id()<<") -> Used : "<<rPreservedConditions[i_cond->Id()-1]<<" times "<<std::endl;
379  break;
380  }
381  }
382 
383 
384  // Set new conditions: start
385  if( !point_condition ){
386 
387  //1.- create geometry: points array and geometry type
388 
389  Condition::NodesArrayType FaceNodes;
390  Condition::GeometryType::Pointer ConditionVertices;
391 
392  FaceNodes.reserve(NumberNodesInFace);
393 
394  for(unsigned int j=1; j<=NumberNodesInFace; ++j)
395  {
396  FaceNodes.push_back(eGeometry(lpofa(j,iface)));
397  }
398 
399  rConditionId +=1;
400 
401  //Create a condition
402  Condition::Pointer p_cond;
403  if(condition_found){
404 
405  p_cond = pBoundaryCondition->Clone(rConditionId, FaceNodes);
406 
407  //p_cond->Data() = pBoundaryCondition->Data();
408 
409  //std::cout<<" _IDa_ "<<p_cond->Id()<<" MASTER ELEMENT "<<i_elem->Id()<<" MASTER NODE "<<eGeometry[lpofa(0,iface)].Id()<<" or "<<eGeometry[lpofa(NumberNodesInFace,iface)].Id()<<std::endl;
410 
411  ElementWeakPtrVectorType& MasterElements = p_cond->GetValue(MASTER_ELEMENTS);
412  MasterElements.push_back(*i_elem.base());
413 
414  NodeWeakPtrVectorType& MasterNodes = p_cond->GetValue(MASTER_NODES);
415  MasterNodes.push_back(eGeometry(lpofa(0,iface)));
416  }
417  else{
418 
419  if( mEchoLevel > 1 ){
420  std::cout<<" NOT FOUND CONDITION :: CREATED-> ["<<rConditionId<<"] (";
421  std::cout<<FaceNodes[0].Id();
422  for(unsigned int f=1; f<FaceNodes.size(); ++f)
423  std::cout<<", "<<FaceNodes[f].Id();
424 
425  std::cout<<")"<<std::endl;
426  }
427 
428  // something not implemented in geometry or condition PrintData
429  //std::cout<<" ReferenceCondition "<<rReferenceCondition<<std::endl;
430 
431  p_cond = rReferenceCondition.Create(rConditionId, FaceNodes, properties);
432 
433  //if a condition is created new nodes must be labeled TO_REFINE
434  for(unsigned int j=0; j<FaceNodes.size(); ++j)
435  {
436  FaceNodes[j].Set(TO_REFINE);
437  }
438 
439  MeshDataTransferUtilities TransferUtilities;
440 
441  TransferUtilities.InitializeBoundaryData(p_cond.get(), *(mrRemesh.Transfer), rCurrentProcessInfo);
442 
443  //std::cout<<" _IDb_ "<<p_cond->Id()<<" MASTER ELEMENT "<<i_elem->Id()<<" MASTER NODE "<<eGeometry[lpofa(0,iface)].Id()<<" or "<<eGeometry[lpofa(NumberNodesInFace,iface)].Id()<<std::endl;
444 
445  ElementWeakPtrVectorType& MasterElements = p_cond->GetValue(MASTER_ELEMENTS);
446  MasterElements.push_back(*i_elem.base());
447 
448  NodeWeakPtrVectorType& MasterNodes = p_cond->GetValue(MASTER_NODES);
449  MasterNodes.push_back(eGeometry(lpofa(0,iface)));
450 
451  }
452 
453  mrModelPart.Conditions().push_back(p_cond);
454  // Set new conditions: end
455 
456  } //end no point condition
457 
458  } //end face condition
459 
460  iface+=1;
461 
462  } //end loop neighbours
463  }
464  // else{
465  // //set nodes to BOUNDARY for elements outside of the working space dimension
466  // for(unsigned int j=0; j<eGeometry.size(); ++j)
467  // {
468  // eGeometry[j].Set(BOUNDARY);
469  // }
470  // }
471  }
472 
473  return true;
474 
475  KRATOS_CATCH( "" )
476  }
477 
478 
479  bool CheckAcceptedCondition(ModelPart& rModelPart, Condition& rCondition) override
480  {
481  KRATOS_TRY
482 
483  bool node_not_preserved = false;
484  bool condition_not_preserved = false;
485 
486  Geometry< Node >& cGeometry = rCondition.GetGeometry();
487 
488  for(unsigned int j=0; j<cGeometry.size(); ++j)
489  {
490  if( cGeometry[j].Is(TO_ERASE) || cGeometry[j].Is(TO_REFINE) )
491  node_not_preserved = true;
492 
493  if( cGeometry[j].Is(ISOLATED) || cGeometry[j].IsNot(BOUNDARY) )
494  condition_not_preserved = true;
495  }
496 
497  if( rCondition.Is(TO_ERASE) )
498  condition_not_preserved = true;
499 
500  if( rCondition.Is(BOUNDARY) ) //flag for composite condition
501  condition_not_preserved = true;
502 
503  if(node_not_preserved == true || condition_not_preserved == true)
504  return false;
505  else
506  return true;
507 
508  KRATOS_CATCH( "" )
509  }
510 
511 
512  void AddConditionToModelPart(ModelPart& rModelPart, Condition::Pointer pCondition) override
513  {
514  KRATOS_TRY
515 
516  //rModelPart.AddCondition(pCondition); //if a Local Id corresponds to a Global Id not added
517  rModelPart.Conditions().push_back(pCondition);
518 
519  KRATOS_CATCH( "" )
520  }
521 
522 
523 
527 
528 
532 
533 
537 
538 
542 
543 
545 
546  private:
549 
550 
554 
556 
560 
561 
565 
566 
567  bool FindNodeInCondition(Geometry< Node >& cGeometry,Geometry< Node >& eGeometry , DenseMatrix<unsigned int>& lpofa, DenseVector<unsigned int>& lnofa, unsigned int& iface)
568  {
569  KRATOS_TRY
570 
571  // not equivalent geometry sizes for boundary conditions:
572  if( cGeometry.size() != lnofa[iface] )
573  return false;
574 
575  // line boundary condition:
576  if( lnofa[iface] == 2 )
577  {
578  if( cGeometry[0].Id() == eGeometry[lpofa(1,iface)].Id() ||
579  cGeometry[1].Id() == eGeometry[lpofa(2,iface)].Id() ||
580  cGeometry[0].Id() == eGeometry[lpofa(2,iface)].Id() ||
581  cGeometry[1].Id() == eGeometry[lpofa(1,iface)].Id() )
582  {
583  return true;
584  }
585  else
586  {
587  return false;
588  }
589 
590  }
591 
592  //3D faces:
593  if( lnofa[iface] == 3 )
594  {
595  if( cGeometry[0].Id() == eGeometry[lpofa(1,iface)].Id() ||
596  cGeometry[1].Id() == eGeometry[lpofa(2,iface)].Id() ||
597  cGeometry[2].Id() == eGeometry[lpofa(3,iface)].Id() ||
598  cGeometry[0].Id() == eGeometry[lpofa(3,iface)].Id() ||
599  cGeometry[1].Id() == eGeometry[lpofa(1,iface)].Id() ||
600  cGeometry[2].Id() == eGeometry[lpofa(2,iface)].Id() ||
601  cGeometry[0].Id() == eGeometry[lpofa(2,iface)].Id() ||
602  cGeometry[1].Id() == eGeometry[lpofa(3,iface)].Id() ||
603  cGeometry[2].Id() == eGeometry[lpofa(1,iface)].Id() )
604  {
605  return true;
606  }
607  else
608  {
609  return false;
610  }
611 
612  }
613 
614  if( lnofa[iface] > 3 )
615  {
616  KRATOS_THROW_ERROR( std::logic_error, "Wrong Condition Number of Face Nodes",*this );
617  }
618 
619  return false;
620 
621  KRATOS_CATCH(" ")
622  }
623 
627 
628 
632 
633 
637 
640 
642  //GenerateNewConditionsMesherProcess(GenerateNewConditionsMesherProcess const& rOther);
643 
644 
646 
647 }; // Class GenerateNewConditionsMesherProcess
648 
650 
653 
654 
658 
659 
661 inline std::istream& operator >> (std::istream& rIStream,
663 
665 inline std::ostream& operator << (std::ostream& rOStream,
667 {
668  rThis.PrintInfo(rOStream);
669  rOStream << std::endl;
670  rThis.PrintData(rOStream);
671 
672  return rOStream;
673 }
675 
676 
677 } // namespace Kratos.
678 
679 
680 
681 #endif // KRATOS_GENERATE_NEW_CONDITIONS_MESHER_PROCESS_H_INCLUDED defined
Short class definition.
Definition: build_model_part_boundary_process.hpp:79
void ResetFreeSurfaceFlag(ModelPart &rModelPart)
Definition: build_model_part_boundary_process.hpp:1113
bool UniqueSkinSearch(ModelPart &rModelPart)
Definition: build_model_part_boundary_process.hpp:601
int mEchoLevel
Definition: build_model_part_boundary_process.hpp:571
ModelPart & mrModelPart
Definition: build_model_part_boundary_process.hpp:567
bool ClearMasterEntities(ModelPart &rModelPart, ModelPart::ConditionsContainerType &rTemporaryConditions)
Definition: build_model_part_boundary_process.hpp:583
Base class for all Conditions.
Definition: condition.h:59
virtual Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const
It creates a new condition pointer.
Definition: condition.h:205
bool Is(Flags const &rOther) const
Definition: flags.h:274
bool IsNot(Flags const &rOther) const
Definition: flags.h:291
Short class definition.
Definition: generate_new_conditions_mesher_process.hpp:68
void AddConditionToModelPart(ModelPart &rModelPart, Condition::Pointer pCondition) override
Definition: generate_new_conditions_mesher_process.hpp:512
virtual ~GenerateNewConditionsMesherProcess()
Destructor.
Definition: generate_new_conditions_mesher_process.hpp:91
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: generate_new_conditions_mesher_process.hpp:169
bool CheckAcceptedCondition(ModelPart &rModelPart, Condition &rCondition) override
Definition: generate_new_conditions_mesher_process.hpp:479
bool BuildCompositeConditions(ModelPart &rModelPart, ModelPart::ConditionsContainerType &rTemporaryConditions, std::vector< int > &rPreservedConditions, unsigned int &rConditionId) override
Definition: generate_new_conditions_mesher_process.hpp:194
KRATOS_CLASS_POINTER_DEFINITION(GenerateNewConditionsMesherProcess)
Pointer definition of GenerateNewConditionsMesherProcess.
GenerateNewConditionsMesherProcess(ModelPart &rModelPart, MesherUtilities::MeshingParameters &rRemeshingParameters, int EchoLevel)
Default constructor.
Definition: generate_new_conditions_mesher_process.hpp:81
void Execute() override
Execute method is used to execute the Process algorithms.
Definition: generate_new_conditions_mesher_process.hpp:110
void operator()()
Definition: generate_new_conditions_mesher_process.hpp:100
std::string Info() const override
Turn back information as a string.
Definition: generate_new_conditions_mesher_process.hpp:157
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: generate_new_conditions_mesher_process.hpp:163
GeometryType & GetGeometry()
Returns the reference of the geometry.
Definition: geometrical_object.h:158
Geometry base class.
Definition: geometry.h:71
SizeType PointsNumber() const
Definition: geometry.h:528
SizeType size() const
Definition: geometry.h:518
virtual void NodesInFaces(DenseMatrix< unsigned int > &rNodesInFaces) const
Definition: geometry.h:2195
virtual void NumberNodesInFaces(DenseVector< unsigned int > &rNumberNodesInFaces) const
Definition: geometry.h:2190
virtual SizeType FacesNumber() const
Returns the number of faces of the current geometry.
Definition: geometry.h:2152
SizeType WorkingSpaceDimension() const
Definition: geometry.h:1287
This class is a vector which stores global pointers.
Definition: global_pointers_vector.h:61
void push_back(TPointerType x)
Definition: global_pointers_vector.h:322
Definition: amatrix_interface.h:41
Short class definition.
Definition: mesh_data_transfer_utilities.hpp:46
void InitializeBoundaryData(Condition *rCurrentCondition, const TransferParameters &rTransferVariables, const ProcessInfo &rCurrentProcessInfo)
Definition: mesh_data_transfer_utilities.cpp:65
PropertiesType::Pointer pGetProperties(IndexType PropertiesId)
Definition: mesh.h:394
Short class definition.
Definition: mesher_utilities.hpp:49
bool FindCondition(Geometry< Node > &rConditionGeometry, Geometry< Node > &rGeometry, DenseMatrix< unsigned int > &lpofa, DenseVector< unsigned int > &lnofa, unsigned int &iface)
Definition: mesher_utilities.cpp:1971
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
MeshType::ConditionsContainerType ConditionsContainerType
Condintions container. A vector set of Conditions with their Id's as key.
Definition: model_part.h:183
SizeType NumberOfProperties(IndexType ThisIndex=0) const
Returns the number of properties of the mesh.
Definition: model_part.cpp:575
MeshType::ElementsContainerType ElementsContainerType
Element container. A vector set of Elements with their Id's as key.
Definition: model_part.h:168
std::string & Name()
Definition: model_part.h:1811
ConditionsContainerType & Conditions(IndexType ThisIndex=0)
Definition: model_part.h:1381
ProcessInfo & GetProcessInfo()
Definition: model_part.h:1746
ElementsContainerType & Elements(IndexType ThisIndex=0)
Definition: model_part.h:1189
MeshType::NodesContainerType NodesContainerType
Nodes container. Which is a vector set of nodes with their Id's as key.
Definition: model_part.h:128
ModelPart & GetParentModelPart()
Definition: model_part.cpp:2124
MeshType & GetMesh(IndexType ThisIndex=0)
Definition: model_part.h:1791
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
void reserve(size_type dim)
Definition: pointer_vector.h:319
void push_back(const TPointerType &x)
Definition: pointer_vector.h:270
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
#define KRATOS_THROW_ERROR(ExceptionType, ErrorMessage, MoreInfo)
Definition: define.h:77
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
GlobalPointersVector< Element > ElementWeakPtrVectorType
Definition: build_model_part_boundary_process.hpp:60
#define KRATOS_ERROR
Definition: exception.h:161
static int EchoLevel
Definition: co_sim_EMPIRE_API.h:42
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
ModelPart::NodesContainerType NodesContainerType
Definition: find_conditions_neighbours_process.h:44
ModelPart::ConditionsContainerType ConditionsContainerType
Definition: find_conditions_neighbours_process.h:45
Condition::WeakPointer ConditionWeakPtrType
Definition: generate_new_conditions_mesher_process.hpp:45
Element::WeakPointer ElementWeakPtrType
Definition: generate_new_conditions_mesher_process.hpp:44
GlobalPointersVector< Node > NodeWeakPtrVectorType
Definition: build_model_part_boundary_process.hpp:59
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
GlobalPointersVector< Condition > ConditionWeakPtrVectorType
Definition: build_model_part_boundary_process.hpp:61
ModelPart::ElementsContainerType ElementsContainerType
Definition: clear_contact_conditions_mesher_process.hpp:43
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
Node::WeakPointer NodeWeakPtrType
Definition: generate_new_conditions_mesher_process.hpp:43
f
Definition: generate_convection_diffusion_explicit_element.py:112
int dimension
Definition: isotropic_damage_automatic_differentiation.py:123
int j
Definition: quadrature.py:648
integer i
Definition: TensorModule.f:17
Definition: mesher_utilities.hpp:631
Condition const & GetReferenceCondition()
Definition: mesher_utilities.hpp:847
TransferParametersType::Pointer Transfer
Definition: mesher_utilities.hpp:690