10 #if !defined(KRATOS_BUILD_MODEL_PART_BOUNDARY_PROCESS_H_INCLUDED )
11 #define KRATOS_BUILD_MODEL_PART_BOUNDARY_PROCESS_H_INCLUDED
96 std::string
const rModelPartName,
143 std::cout<<
" [ Construct Boundary on ModelPart ["<<i_mp.Name()<<
"] ]"<<std::endl;
149 std::cout<<
" ERROR: BOUNDARY CONSTRUCTION FAILED ModelPart : ["<<i_mp.Name()<<
"] "<<std::endl;
164 std::cout<<
" [ Construct Boundary on ModelPart["<<
mModelPartName<<
"] ]"<<std::endl;
171 std::cout<<
" ERROR: BOUNDARY CONSTRUCTION FAILED on ModelPart : ["<<rModelPart.
Name()<<
"] "<<std::endl;
183 if( NumberOfSubModelParts > 1 ){
184 SetMainModelPartConditions();
185 SetComputingModelPart();
200 std::cout<<
" Boundary Normals Computed and Assigned ] "<<std::endl;
206 void CheckMasterElement(
int Id,
const Element::WeakPointer& old_nelem,
const Element::WeakPointer& new_nelem)
209 KRATOS_ERROR <<
"sorry weak pointers are not any longer supported " << std::endl;
222 void CheckMasterNode(
int Id,
const Node::WeakPointer& old_nnode,
const Node::Pointer& new_nnode)
226 KRATOS_ERROR <<
"sorry weak pointers are not any longer supported " << std::endl;
245 int composite_conditions = 0;
246 int total_conditions = 0;
252 std::cout<<
" [ START SEARCH CONDITIONS MASTERS : "<<std::endl;
256 if(i_cond.Is(BOUNDARY))
257 ++composite_conditions;
260 KRATOS_ERROR <<
"sorry weak pointers are not any longer supported " << std::endl;
282 unsigned int size = cGeometry.
size();
284 bool perform_search =
true;
285 for(
unsigned int i=0;
i<size; ++
i)
287 if( cGeometry[
i].
Is(RIGID) )
288 perform_search =
false;
292 if( i_cond.Is(CONTACT) )
293 perform_search =
false;
303 auto& nElements1 = cGeometry[0].
GetValue(NEIGHBOUR_ELEMENTS);
304 auto& nElements2 = cGeometry[1].
GetValue(NEIGHBOUR_ELEMENTS);
306 if( nElements1.size() == 0 || nElements2.size() == 0 )
307 std::cout<<
" NO SIZE in NEIGHBOUR_ELEMENTS "<<std::endl;
309 KRATOS_ERROR <<
"sorry weak pointers are not any longer supported " << std::endl;
312 for(
auto i_nelem(nElements1.begin()); i_nelem != nElements1.end(); ++i_nelem)
314 KRATOS_ERROR <<
"sorry weak pointers are not any longer supported " << std::endl;
318 for(
auto j_nelem(nElements2.begin()); j_nelem != nElements2.end(); ++j_nelem)
321 KRATOS_ERROR <<
"sorry weak pointers are not any longer supported " << std::endl;
324 if(j_nelem->Id() == i_nelem->Id() && !found){
326 auto& rMasterElements = i_cond.GetValue(MASTER_ELEMENTS);
328 if(rMasterElements.size()){
330 rMasterElements.clear();
334 std::cout<<
" First Assignment of Master Elements "<<i_cond.Id()<<std::endl;
337 rMasterElements.push_back(*i_nelem.base());
346 for (
unsigned int iface=0; iface<eGeometry.
size(); ++iface)
349 found = MesherUtils.
FindCondition(cGeometry,eGeometry,lpofa,lnofa,iface);
360 if(rMasterNodes.
size()){
361 const auto& pMaster = rMasterNodes(0);
362 const auto& pother = eGeometry(lpofa(0,
node));
364 rMasterNodes.
clear();
368 std::cout<<
" First Assignment of Master Nodes "<<i_cond.Id()<<std::endl;
374 std::cout<<
" 2N Geometry MASTER_NODE not FOUND : something is wrong "<<std::endl;
384 auto& nElements1 = cGeometry[0].
GetValue(NEIGHBOUR_ELEMENTS);
385 auto& nElements2 = cGeometry[1].
GetValue(NEIGHBOUR_ELEMENTS);
386 auto& nElements3 = cGeometry[2].
GetValue(NEIGHBOUR_ELEMENTS);
388 if( nElements1.size() == 0 || nElements2.size() == 0 || nElements3.size() == 0 )
391 for(
auto i_nelem(nElements1.begin()); i_nelem != nElements1.end(); ++i_nelem)
393 KRATOS_ERROR <<
"sorry weak pointers are not any longer supported " << std::endl;
396 for(
auto j_nelem(nElements2.begin()); j_nelem != nElements2.end(); ++j_nelem)
398 KRATOS_ERROR <<
"sorry weak pointers are not any longer supported " << std::endl;
401 if(j_nelem->Id() == i_nelem->Id() && !found)
403 for(
auto k_nelem(nElements3.begin()); k_nelem != nElements3.end(); ++k_nelem)
405 KRATOS_ERROR <<
"sorry weak pointers are not any longer supported " << std::endl;
408 if(k_nelem->Id() == i_nelem->Id() && !found)
410 auto& rMasterElements = i_cond.GetValue(MASTER_ELEMENTS);
412 if(rMasterElements.size()){
414 rMasterElements.clear();
418 std::cout<<
" First Assignment of Master Elements "<<i_cond.Id()<<std::endl;
421 rMasterElements.push_back(*i_nelem.base());
430 for(
unsigned int iface=0; iface<eGeometry.
size(); ++iface)
433 found = MesherUtils.
FindCondition(cGeometry,eGeometry,lpofa,lnofa,iface);
445 if(rMasterNodes.
size()){
447 rMasterNodes.
clear();
451 std::cout<<
" First Assignment of Master Nodes "<<i_cond.Id()<<std::endl;
458 std::cout<<
" 3N Geometry MASTER_NODE not FOUND : something is wrong "<<std::endl;
476 KRATOS_ERROR <<
"sorry weak pointers are not any longer supported " << std::endl;
496 if(
counter == total_conditions){
503 std::cout<<
" Condition Masters (ModelPart "<<
mrModelPart.
Name()<<
"): not LOCATED ["<<
counter-total_conditions<<
"]"<<std::endl;
507 if(
counter != composite_conditions)
509 std::cout<<
" Condition Masters (ModelPart "<<
mrModelPart.
Name()<<
"): LOCATED ["<<
counter<<
"] COMPOSITE ["<<composite_conditions<<
"] NO MATCH"<<std::endl;
512 std::cout<<
" END SEARCH CONDITIONS MASTERS ] "<<found<<std::endl;
534 std::string
Info()
const override
536 return "BuildModelPartBoundaryProcess";
542 rOStream <<
"BuildModelPartBoundaryProcess";
587 for(
auto& i_cond : rTemporaryConditions)
589 i_cond.GetValue(MASTER_ELEMENTS).clear();
590 i_cond.GetValue(MASTER_NODES).clear();
592 KRATOS_ERROR_IF(i_cond.GetValue(MASTER_ELEMENTS).size() || i_cond.GetValue(MASTER_NODES).size())<<
593 " Master Entities not cleared "<<std::endl;
607 std::cout<<
" [ Initial Conditions : "<<rModelPart.
Conditions().size()<<std::endl;
610 if( !rModelPart.
Elements().size() || (rModelPart.
Is(ACTIVE)) ){
612 std::cout<<
" [ Final Conditions : "<<rModelPart.
Conditions().size()<<std::endl;
618 bool any_node_to_erase =
false;
619 for(
auto& i_node : rModelPart.
Nodes())
621 if( any_node_to_erase ==
false )
622 if( i_node.Is(TO_ERASE) )
623 any_node_to_erase =
true;
627 unsigned int ConditionId=1;
635 for(
auto i_cond(rConditions.begin()); i_cond != rConditions.end(); ++i_cond)
637 TemporaryConditions.push_back(*i_cond.base());
638 i_cond->SetId(ConditionId);
645 TemporaryConditions.reserve(rModelPart.
Conditions().size());
646 TemporaryConditions.swap(rModelPart.
Conditions());
649 if( any_node_to_erase ){
650 for(
auto& i_cond : TemporaryConditions)
653 for(
unsigned int i=0;
i<cGeometry.
size(); ++
i)
655 if(cGeometry[
i].
Is(TO_ERASE)){
656 i_cond.Set(TO_ERASE);
661 i_cond.
SetId(ConditionId);
666 for(
auto& i_cond : TemporaryConditions)
668 i_cond.SetId(ConditionId);
676 std::vector<int> PreservedConditions( TemporaryConditions.size() + 1 );
677 std::fill( PreservedConditions.begin(), PreservedConditions.end(), 0 );
683 this->
AddOtherConditions(rModelPart, TemporaryConditions, PreservedConditions, ConditionId);
696 for(
auto& i_elem : rModelPart.
Elements())
700 for(
unsigned int j=0;
j<eGeometry.
size(); ++
j)
702 eGeometry[
j].Set(BOUNDARY,
false);
703 if(rModelPart.
Is(FLUID)){
704 eGeometry[
j].Set(FREE_SURFACE,
false);
709 for(
auto& i_elem : rModelPart.
Elements())
724 auto& nElements = i_elem.GetValue(NEIGHBOUR_ELEMENTS);
727 unsigned int iface=0;
728 for(
auto& i_nelem : nElements)
730 unsigned int NumberNodesInFace = lnofa[iface];
731 if(i_nelem.Id() == i_elem.Id())
734 unsigned int rigid_nodes = 0;
735 unsigned int inlet_nodes = 0;
736 unsigned int free_surface_nodes = 0;
737 for(
unsigned int j=1;
j<=NumberNodesInFace; ++
j)
739 eGeometry[lpofa(
j,iface)].Set(BOUNDARY,
true);
740 if(rModelPart.
Is(FLUID)){
741 if(eGeometry[lpofa(
j,iface)].
Is(RIGID) || eGeometry[lpofa(
j,iface)].
Is(SOLID)){
744 else if(eGeometry[lpofa(
j,iface)].
Is(INLET)){
748 ++free_surface_nodes;
754 if(rModelPart.
Is(FLUID)){
755 if( (free_surface_nodes>0 && (rigid_nodes>0 || inlet_nodes>0)) || (rigid_nodes==0 && inlet_nodes==0) ){
756 for(
unsigned int j=1;
j<=NumberNodesInFace; ++
j)
758 eGeometry[lpofa(
j,iface)].Set(FREE_SURFACE,
true);
771 for(
unsigned int j=0;
j<eGeometry.
size(); ++
j)
773 eGeometry[
j].Set(BOUNDARY,
true);
793 if(number_properties<0)
794 KRATOS_ERROR<<
" number of properties is "<<number_properties<<std::endl;
799 for(
auto& i_elem : rModelPart.
Elements())
803 for(
unsigned int j=0;
j<eGeometry.
size(); ++
j)
805 eGeometry[
j].Set(BOUNDARY,
false);
806 if(rModelPart.
Is(FLUID)){
807 eGeometry[
j].Set(FREE_SURFACE,
false);
814 for(
auto i_elem(rElements.begin()); i_elem != rElements.end(); ++i_elem)
841 auto& nElements = i_elem->GetValue(NEIGHBOUR_ELEMENTS);
848 unsigned int iface=0;
849 for(
auto& i_nelem : nElements)
851 unsigned int NumberNodesInFace = lnofa[iface];
852 if(i_nelem.Id() == i_elem->Id())
855 unsigned int rigid_nodes = 0;
856 unsigned int inlet_nodes = 0;
857 unsigned int free_surface_nodes = 0;
858 for(
unsigned int j=1;
j<=NumberNodesInFace; ++
j)
860 eGeometry[lpofa(
j,iface)].Set(BOUNDARY,
true);
861 if(rModelPart.
Is(FLUID)){
862 if(eGeometry[lpofa(
j,iface)].
Is(RIGID) || eGeometry[lpofa(
j,iface)].
Is(SOLID)){
865 else if(eGeometry[lpofa(
j,iface)].
Is(INLET)){
869 ++free_surface_nodes;
875 if(rModelPart.
Is(FLUID)){
876 if( (free_surface_nodes>0 && (rigid_nodes>0 || inlet_nodes>0)) || (rigid_nodes==0 && inlet_nodes==0) ){
877 for(
unsigned int j=1;
j<=NumberNodesInFace; ++
j)
879 eGeometry[lpofa(
j,iface)].Set(FREE_SURFACE,
true);
886 Condition::GeometryType::Pointer ConditionVertices;
888 FaceNodes.
reserve(NumberNodesInFace);
890 for(
unsigned int j=1;
j<=NumberNodesInFace; ++
j)
892 FaceNodes.
push_back(eGeometry(lpofa(
j,iface)));
896 if( NumberNodesInFace == 2 ){
898 ConditionVertices = Kratos::make_shared< Line2D2< Node > >(FaceNodes);
900 ConditionVertices = Kratos::make_shared< Line3D2< Node > >(FaceNodes);
903 else if ( NumberNodesInFace == 3 ){
905 ConditionVertices = Kratos::make_shared< Line2D3< Node > >(FaceNodes);
907 ConditionVertices = Kratos::make_shared< Triangle3D3< Node > >(FaceNodes);
913 CompositeCondition::Pointer p_cond = Kratos::make_intrusive< CompositeCondition >(rConditionId,ConditionVertices,properties);
915 bool condition_found =
false;
916 bool point_condition =
false;
919 for(
auto i_cond(rTemporaryConditions.begin()); i_cond != rTemporaryConditions.end(); ++i_cond)
924 condition_found = MesherUtils.
FindCondition(cGeometry,eGeometry,lpofa,lnofa,iface);
926 if( condition_found ){
928 p_cond->AddChild(*i_cond.base());
930 rPreservedConditions[i_cond->Id()] += 1;
933 point_condition =
true;
939 if( !point_condition ){
946 auto& MasterElements = p_cond->GetValue(MASTER_ELEMENTS);
947 MasterElements.push_back(*i_elem.base());
950 MasterNodes.
push_back(eGeometry(lpofa(0,iface)));
965 for(
unsigned int j=0;
j<eGeometry.
size(); ++
j)
967 eGeometry[
j].Set(BOUNDARY,
true);
983 for(
unsigned int i=0;
i<rGeometry.
size(); ++
i)
985 for(
auto& i_node : rModelPart.
Nodes())
987 if( rGeometry[
i].Id() == i_node.
Id() )
1003 std::cout<<
" CONDITIONS: geometry nodes ("<<rModelPart.
Conditions().size()<<
")"<<std::endl;
1008 std::cout<<
"["<<i_cond.
Id()<<
"]:"<<std::endl;
1011 for(
unsigned int i = 0;
i < cGeometry.
size(); ++
i)
1013 std::cout<< cGeometry[
i].
Id()<<
", ";
1017 i_cond.GetValue(MASTER_ELEMENTS).front().PrintInfo(std::cout);
1019 std::cout<<std::endl;
1021 std::cout<<std::endl;
1035 for(
auto& i_cond : rTemporaryConditions)
1037 if(rPreservedConditions[i_cond.Id()] == 0){
1047 for(
unsigned int j=0;
j<cGeometry.
size(); ++
j)
1052 rPreservedConditions[i_cond.Id()] += 1;
1056 Condition::Pointer p_cond = i_cond.Clone(rConditionId, FaceNodes);
1066 bool all_assigned =
true;
1067 unsigned int lost_conditions = 0;
1068 for(
unsigned int i=1;
i<rPreservedConditions.size(); ++
i)
1070 if( rPreservedConditions[
i] == 0 ){
1071 all_assigned =
false;
1078 if(all_assigned ==
true)
1079 std::cout<<
" ALL_PREVIOUS_CONDITIONS_RELOCATED "<<std::endl;
1081 std::cout<<
" SOME_PREVIOUS_CONDITIONS_ARE_LOST [lost_conditions:"<<lost_conditions<<
"]"<<std::endl;
1084 return all_assigned;
1116 if(rModelPart.
Is(FLUID)){
1118 for(
auto& i_node : rModelPart.
Nodes())
1120 i_node.Set(FREE_SURFACE,
false);
1153 void SetComputingModelPart()
1157 std::string ComputingModelPartName;
1160 if(i_mp.Is(ACTIVE) && i_mp.IsNot(THERMAL))
1161 ComputingModelPartName = i_mp.Name();
1167 std::cout<<
" ["<<ComputingModelPartName<<
" :: CONDITIONS [OLD:"<<rModelPart.
NumberOfConditions();
1174 if( i_mp.NumberOfElements() && ComputingModelPartName != i_mp.Name() ){
1178 for(
auto i_cond(rConditions.begin()); i_cond != rConditions.end(); ++i_cond)
1182 KeepConditions.
push_back(*i_cond.base());
1189 rModelPart.Conditions().swap(KeepConditions);
1192 std::cout<<
" / NEW:"<<rModelPart.NumberOfConditions()<<
"] "<<std::endl;
1199 void SetMainModelPartConditions()
1211 unsigned int condId=1;
1216 if( !(i_mp.Is(ACTIVE)) && !(i_mp.Is(CONTACT)) ){
1220 for(
auto i_cond(rConditions.begin()); i_cond != rConditions.end(); ++i_cond)
1224 KeepConditions.
push_back(*(i_cond.base()));
1225 KeepConditions.back().SetId(condId);
1236 for(
auto i_cond(rConditions.begin()); i_cond != rConditions.end(); ++i_cond)
1238 if(i_cond->Is(CONTACT)){
1239 KeepConditions.push_back(*i_cond.base());
1240 KeepConditions.back().SetId(condId);
1301 rOStream << std::endl;
Definition: boundary_normals_calculation_utilities.hpp:48
void CalculateWeightedBoundaryNormals(ModelPart &rModelPart, int EchoLevel=0)
Calculates the area normal (unitary vector oriented as the normal) and weight the normal to shrink.
Definition: boundary_normals_calculation_utilities.hpp:123
Short class definition.
Definition: build_model_part_boundary_process.hpp:79
void ResetFreeSurfaceFlag(ModelPart &rModelPart)
Definition: build_model_part_boundary_process.hpp:1113
ModelPart::ConditionType ConditionType
Definition: build_model_part_boundary_process.hpp:84
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: build_model_part_boundary_process.hpp:540
bool AddOtherConditions(ModelPart &rModelPart, ModelPart::ConditionsContainerType &rTemporaryConditions, std::vector< int > &rPreservedConditions, unsigned int &rConditionId)
Definition: build_model_part_boundary_process.hpp:1027
ConditionType::GeometryType GeometryType
Definition: build_model_part_boundary_process.hpp:85
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: build_model_part_boundary_process.hpp:546
KRATOS_CLASS_POINTER_DEFINITION(BuildModelPartBoundaryProcess)
Pointer definition of BuildModelPartBoundaryProcess.
std::string Info() const override
Turn back information as a string.
Definition: build_model_part_boundary_process.hpp:534
virtual ~BuildModelPartBoundaryProcess()
Destructor.
Definition: build_model_part_boundary_process.hpp:105
virtual void SetBoundaryFlags(ModelPart &rModelPart)
Definition: build_model_part_boundary_process.hpp:690
bool UniqueSkinSearch(ModelPart &rModelPart)
Definition: build_model_part_boundary_process.hpp:601
virtual void AddConditionToModelPart(ModelPart &rModelPart, Condition::Pointer pCondition)
Definition: build_model_part_boundary_process.hpp:1103
void CheckMasterNode(int Id, const Node::WeakPointer &old_nnode, const Node::Pointer &new_nnode)
Definition: build_model_part_boundary_process.hpp:222
int mEchoLevel
Definition: build_model_part_boundary_process.hpp:571
bool FindConditionID(ModelPart &rModelPart, GeometryType &rGeometry)
Definition: build_model_part_boundary_process.hpp:978
ModelPart & mrModelPart
Definition: build_model_part_boundary_process.hpp:567
void operator()()
Definition: build_model_part_boundary_process.hpp:114
virtual bool CheckAcceptedCondition(ModelPart &rModelPart, Condition &rCondition)
Definition: build_model_part_boundary_process.hpp:1090
void Execute() override
Execute method is used to execute the Process algorithms.
Definition: build_model_part_boundary_process.hpp:124
virtual bool BuildCompositeConditions(ModelPart &rModelPart, ModelPart::ConditionsContainerType &rTemporaryConditions, std::vector< int > &rPreservedConditions, unsigned int &rConditionId)
Definition: build_model_part_boundary_process.hpp:782
bool ClearMasterEntities(ModelPart &rModelPart, ModelPart::ConditionsContainerType &rTemporaryConditions)
Definition: build_model_part_boundary_process.hpp:583
void CheckMasterElement(int Id, const Element::WeakPointer &old_nelem, const Element::WeakPointer &new_nelem)
Definition: build_model_part_boundary_process.hpp:206
bool SearchConditionMasters()
Definition: build_model_part_boundary_process.hpp:240
std::string mModelPartName
Definition: build_model_part_boundary_process.hpp:569
void PrintSkin(ModelPart &rModelPart)
Definition: build_model_part_boundary_process.hpp:997
BuildModelPartBoundaryProcess(ModelPart &rModelPart, std::string const rModelPartName, int EchoLevel=0)
Default constructor.
Definition: build_model_part_boundary_process.hpp:95
Base class for all Conditions.
Definition: condition.h:59
bool Is(Flags const &rOther) const
Definition: flags.h:274
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
void SetId(const IndexType Id)
Sets Id of this Geometry.
Definition: geometry.h:982
SizeType size() const
Definition: geometry.h:518
IndexType const & Id() const
Id of this Geometry.
Definition: geometry.h:964
virtual void NodesInFaces(DenseMatrix< unsigned int > &rNodesInFaces) const
Definition: geometry.h:2195
virtual void NumberNodesInFaces(DenseVector< unsigned int > &rNumberNodesInFaces) const
Definition: geometry.h:2190
TVariableType::Type & GetValue(const TVariableType &rThisVariable)
Definition: geometry.h:627
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
void clear()
Definition: global_pointers_vector.h:361
size_type size() const
Definition: global_pointers_vector.h:307
Definition: amatrix_interface.h:41
PropertiesType::Pointer pGetProperties(IndexType PropertiesId)
Definition: mesh.h:394
The base class for processes passed to the solution scheme.
Definition: mesher_process.hpp:37
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
SizeType NumberOfSubModelParts() const
Definition: model_part.h:1665
std::string & Name()
Definition: model_part.h:1811
ConditionsContainerType & Conditions(IndexType ThisIndex=0)
Definition: model_part.h:1381
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
void AddCondition(ConditionType::Pointer pNewCondition, IndexType ThisIndex=0)
Definition: model_part.cpp:1436
SubModelPartsContainerType & SubModelParts()
Definition: model_part.h:1718
SizeType NumberOfConditions(IndexType ThisIndex=0) const
Definition: model_part.h:1218
ModelPart & GetSubModelPart(std::string const &SubModelPartName)
Definition: model_part.cpp:2029
ModelPart & GetParentModelPart()
Definition: model_part.cpp:2124
MeshType & GetMesh(IndexType ThisIndex=0)
Definition: model_part.h:1791
NodesContainerType & Nodes(IndexType ThisIndex=0)
Definition: model_part.h:507
PointerVector is a container like stl vector but using a vector to store pointers to its data.
Definition: pointer_vector.h:72
void reserve(size_type dim)
Definition: pointer_vector.h:319
void push_back(const TPointerType &x)
Definition: pointer_vector.h:270
void push_back(TPointerType x)
Adds a pointer to the end of the set.
Definition: pointer_vector_set.h:544
#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
#define KRATOS_ERROR_IF(conditional)
Definition: exception.h:162
#define KRATOS_WARNING(label)
Definition: logger.h:265
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
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
int dimension
Definition: isotropic_damage_automatic_differentiation.py:123
int j
Definition: quadrature.py:648
int counter
Definition: script_THERMAL_CORRECT.py:218
integer i
Definition: TensorModule.f:17
Definition: mesh_converter.cpp:38