13 #ifndef KRATOS_VERIFY_WATERTIGHTNESS_PROCESS_H
14 #define KRATOS_VERIFY_WATERTIGHTNESS_PROCESS_H
17 #include <unordered_map>
60 mrModelPart(rModelPart)
89 KRATOS_ERROR_IF(mrModelPart.
Conditions().size() == 0 && mrModelPart.
Elements().size() != 0) <<
"The number of conditions is zero and the number of elements is not, hence the skin can not envelope the domain" << std::endl;
97 for (
auto& r_cond : mrModelPart.
Conditions()) {
98 const auto edges = r_cond.GetGeometry().GenerateEdges();
100 for(
IndexType edge=0; edge<edges.size(); edge++) {
102 ids[
i] = edges[edge][
i].Id();
115 for(
auto it=edge_map.begin(); it!=edge_map.end(); ++it) {
117 KRATOS_ERROR <<
"ERROR OVERLAPPING CONDITIONS IN SKIN FOUND : " << std::endl <<
"The edge between nodes " << it->first[0] <<
" and " << it->first[1] << std::endl <<
" belongs to an overlapping condition " << std::endl;
118 }
else if(it->second < 2) {
119 KRATOS_ERROR <<
"ERROR NON CLOSED SKIN " << std::endl <<
"The edge between nodes " << it->first[0] <<
" and " << it->first[1] << std::endl <<
" only appears once, hence it belongs to a non watertight boundary " << std::endl;
123 KRATOS_INFO(
"CheckSkinProcess") <<
"Checked " << edge_map.size() <<
" edges in the skin. No gap or overlap found " << std::endl;
143 std::string
Info()
const override
145 return "CheckSkinProcess";
151 rOStream <<
"CheckSkinProcess";
211 rOStream << std::endl;
This function verifies that the skin has no holes nor overlapped geometries this is accomplished by s...
Definition: check_skin_process.h:40
std::string Info() const override
Turn back information as a string.
Definition: check_skin_process.h:143
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: check_skin_process.h:149
std::size_t IndexType
The index type definition.
Definition: check_skin_process.h:49
CheckSkinProcess(ModelPart &rModelPart, const Flags Options)
Constructor for CheckSkinProcess Process.
Definition: check_skin_process.h:56
KRATOS_CLASS_POINTER_DEFINITION(CheckSkinProcess)
Pointer definition of Process.
void operator()()
This operator is provided to call the process as a function and simply calls the Execute method.
Definition: check_skin_process.h:72
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: check_skin_process.h:155
~CheckSkinProcess() override
Destructor.
Definition: check_skin_process.h:65
void Execute() override
Check elements to make sure that their jacobian is positive and conditions to ensure that their face ...
Definition: check_skin_process.h:85
std::size_t IndexType
Definition: flags.h:74
Definition: amatrix_interface.h:41
iterator end()
Definition: amatrix_interface.h:243
iterator begin()
Definition: amatrix_interface.h:241
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
ConditionsContainerType & Conditions(IndexType ThisIndex=0)
Definition: model_part.h:1381
ElementsContainerType & Elements(IndexType ThisIndex=0)
Definition: model_part.h:1189
The base class for all processes in Kratos.
Definition: process.h:49
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
#define KRATOS_ERROR
Definition: exception.h:161
#define KRATOS_ERROR_IF(conditional)
Definition: exception.h:162
#define KRATOS_INFO(label)
Definition: logger.h:250
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::unordered_multimap< DenseVector< int >, std::vector< Condition::Pointer >, KeyHasherRange< DenseVector< int > >, KeyComparorRange< DenseVector< int > >> hashmap
Definition: find_neighbour_elements_of_conditions_process.hpp:24
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
integer i
Definition: TensorModule.f:17
This is a key comparer of general pourpose between two classes.
Definition: key_hash.h:100
This is a hasher of general pourpose.
Definition: key_hash.h:138