10 #if !defined(KRATOS_SELECT_MESH_ELEMENTS_FOR_FLUIDS_PROCESS_H_INCLUDED)
11 #define KRATOS_SELECT_MESH_ELEMENTS_FOR_FLUIDS_PROCESS_H_INCLUDED
71 : mrModelPart(rModelPart),
72 mrRemesh(rRemeshingParameters)
115 double CriticalVolume = 0.05 * ModelPartVolume /
double(mrModelPart.
Elements().size());
117 mrRemesh.
Info->NumberOfElements = 0;
120 double currentTime = rCurrentProcessInfo[TIME];
121 double timeInterval = rCurrentProcessInfo[DELTA_TIME];
122 bool box_side_element =
false;
123 bool wrong_added_node =
false;
124 int number_of_slivers = 0;
126 bool refiningBox =
false;
137 for (
int el = 0;
el < OutNumberOfElements;
el++)
140 mrRemesh.
Info->NumberOfElements += 1;
146 std::cout <<
" Start Element Selection " << OutNumberOfElements << std::endl;
148 ModelPart::ElementsContainerType::iterator element_begin = mrModelPart.
ElementsBegin();
149 const SizeType nds = element_begin->GetGeometry().size();
158 for (
el = 0;
el < OutNumberOfElements;
el++)
161 double meanMeshSize = mrRemesh.
Refine->CriticalRadius;
167 bool noremesh =
false;
168 std::vector<double> normVelocityP;
169 normVelocityP.resize(nds,
false);
171 box_side_element =
false;
172 SizeType countIsolatedWallNodes = 0;
173 bool increaseAlfa =
false;
174 SizeType previouslyFreeSurfaceNodes = 0;
175 SizeType previouslyIsolatedNodes = 0;
176 SizeType sumPreviouslyIsolatedFreeSurf = 0;
178 std::vector<array_1d<double, 3>> nodesCoordinates;
179 nodesCoordinates.resize(nds);
180 std::vector<array_1d<double, 3>> nodesVelocities;
181 nodesVelocities.resize(nds);
182 SizeType isolatedNodesInTheElement = 0;
183 double rigidNodeLocalMeshSize = 0;
184 double rigidNodeMeshCounter = 0;
188 if (OutElementList[
el * nds +
pn] <= 0)
189 std::cout <<
" ERROR: something is wrong: nodal id < 0 " <<
el << std::endl;
193 wrong_added_node =
true;
194 std::cout <<
" ERROR: something is wrong: node out of bounds " << std::endl;
199 if (vertices.
back().IsNot(RIGID) && vertices.
back().IsNot(SOLID))
201 isolatedNodesInTheElement += vertices.
back().FastGetSolutionStepValue(ISOLATED_NODE);
204 if (vertices.
back().Is(ISOLATED))
208 if (vertices.
back().Is(PFEMFlags::PREVIOUS_FREESURFACE))
210 previouslyFreeSurfaceNodes++;
212 if (vertices.
back().Is(PFEMFlags::PREVIOUS_ISOLATED))
214 previouslyIsolatedNodes++;
216 if (vertices.
back().Is(BOUNDARY))
220 if (vertices.
back().GetValue(NO_MESH))
225 if (vertices.
back().Is(RIGID) || vertices.
back().Is(SOLID))
227 if (vertices.
back().Is(RIGID))
229 rigidNodeLocalMeshSize += vertices.
back().FastGetSolutionStepValue(NODAL_H_WALL);
230 rigidNodeMeshCounter += 1.0;
236 bool localIsolatedWallNode =
true;
241 localIsolatedWallNode =
false;
244 if (localIsolatedWallNode ==
true)
246 countIsolatedWallNodes++;
250 if (vertices.
back().IsNot(RIGID) && vertices.
back().Is(BOUNDARY))
254 normVelocityP[
pn] =
norm_2(velocityP0);
255 nodesVelocities[
pn] = velocityP0;
258 else if (vertices.
back().Is(ISOLATED))
261 normVelocityP[
pn] =
norm_2(velocityP0);
262 nodesVelocities[
pn] = velocityP0;
265 if (vertices.
back().Is(INLET))
270 if (refiningBox ==
true && vertices.
back().IsNot(RIGID))
280 CriticalVolume = 0.05 * (std::pow(meanMeshSize, 3) / (6.0 * std::sqrt(2)));
285 nodesCoordinates[
pn] = vertices.
back().Coordinates();
289 if (box_side_element || wrong_added_node)
291 std::cout <<
" ,,,,,,,,,,,,,,,,,,,,,,,,,,,,, Box_Side_Element " << std::endl;
297 if (rigidNodeMeshCounter > 0)
299 const double rigidWallMeshSize = rigidNodeLocalMeshSize / rigidNodeMeshCounter;
300 const double ratio = rigidWallMeshSize / meanMeshSize;
301 double tolerance = 1.8;
302 if (currentTime < 10 * timeInterval)
306 if (ratio > tolerance && numfreesurf == 0 && previouslyFreeSurfaceNodes == 0)
309 meanMeshSize += 0.5 * rigidWallMeshSize;
313 if (refiningBox ==
true)
315 IncreaseAlphaForRefininedZones(
Alpha, increaseAlfa, nds, numfreesurf, numrigid, numisolated);
318 sumIsolatedFreeSurf = numisolated + numfreesurf;
319 sumPreviouslyIsolatedFreeSurf = previouslyFreeSurfaceNodes + previouslyIsolatedNodes;
323 if (numrigid == 0 && numfreesurf == 0 && numisolated == 0 && previouslyIsolatedNodes == 0 && previouslyFreeSurfaceNodes == 0)
327 else if (numfreesurf == 0 && numisolated == 0 && previouslyIsolatedNodes == 0 && previouslyFreeSurfaceNodes == 0)
331 else if (numisolated == 0 && previouslyIsolatedNodes == 0 && numfreesurf < nds && previouslyFreeSurfaceNodes < nds)
342 if (numrigid == 0 && numfreesurf == 0 && numisolated == 0 && previouslyIsolatedNodes == 0 && previouslyFreeSurfaceNodes == 0)
346 else if (numfreesurf == 0 && numisolated == 0 && previouslyIsolatedNodes == 0 && previouslyFreeSurfaceNodes == 0)
350 else if (numisolated == 0 && previouslyIsolatedNodes == 0 && numfreesurf < nds && previouslyFreeSurfaceNodes < nds)
365 if (numrigid == 3 && numfreesurf == 0 && numisolated == 0)
369 if (numrigid == 2 && numfreesurf == 0 && numisolated == 0)
376 if (numInletNodes > 0)
381 bool accepted =
false;
385 if (numrigid == nds || noremesh ==
true)
390 if (accepted ==
true && (numfreesurf == nds || sumIsolatedFreeSurf == nds || sumPreviouslyIsolatedFreeSurf == nds))
395 if ((numfreesurf == nds || sumIsolatedFreeSurf == nds) && numrigid == 0)
397 if (checkedNodes == nds)
399 const double maxValue = 1.5;
400 const double minValue = 1.0 / maxValue;
401 if (normVelocityP[0] / normVelocityP[1] > maxValue || normVelocityP[0] / normVelocityP[1] < minValue ||
402 normVelocityP[0] / normVelocityP[2] > maxValue || normVelocityP[0] / normVelocityP[2] < minValue ||
403 normVelocityP[1] / normVelocityP[2] > maxValue || normVelocityP[1] / normVelocityP[2] < minValue)
409 const double cosAngle01 = (nodesVelocities[0][0] * nodesVelocities[1][0] + nodesVelocities[0][1] * nodesVelocities[1][1]) /
410 (std::sqrt(std::pow(nodesVelocities[0][0], 2) + std::pow(nodesVelocities[0][1], 2)) *
411 std::sqrt(std::pow(nodesVelocities[1][0], 2) + std::pow(nodesVelocities[1][1], 2)));
412 const double cosAngle02 = (nodesVelocities[0][0] * nodesVelocities[2][0] + nodesVelocities[0][1] * nodesVelocities[2][1]) /
413 (std::sqrt(std::pow(nodesVelocities[0][0], 2) + std::pow(nodesVelocities[0][1], 2)) *
414 std::sqrt(std::pow(nodesVelocities[2][0], 2) + std::pow(nodesVelocities[2][1], 2)));
415 const double cosAngle12 = (nodesVelocities[1][0] * nodesVelocities[2][0] + nodesVelocities[1][1] * nodesVelocities[2][1]) /
416 (std::sqrt(std::pow(nodesVelocities[1][0], 2) + std::pow(nodesVelocities[1][1], 2)) *
417 std::sqrt(std::pow(nodesVelocities[2][0], 2) + std::pow(nodesVelocities[2][1], 2)));
419 if (std::abs(cosAngle01) < 0.95 || std::abs(cosAngle02) < 0.95 || std::abs(cosAngle12) < 0.95)
428 double elementArea = triangle->
Area();
429 if (elementArea < CriticalVolume)
438 if ((numfreesurf == nds || sumIsolatedFreeSurf == nds || previouslyIsolatedNodes == nds || previouslyFreeSurfaceNodes == nds) && numrigid == 0 && isolatedNodesInTheElement > 0)
440 if (checkedNodes == nds)
442 const double maxValue = 2.5;
443 const double minValue = 1.0 / maxValue;
444 if (normVelocityP[0] / normVelocityP[1] < minValue || normVelocityP[0] / normVelocityP[2] < minValue || normVelocityP[0] / normVelocityP[3] < minValue ||
445 normVelocityP[0] / normVelocityP[1] > maxValue || normVelocityP[0] / normVelocityP[2] > maxValue || normVelocityP[0] / normVelocityP[3] > maxValue ||
446 normVelocityP[1] / normVelocityP[2] < minValue || normVelocityP[1] / normVelocityP[3] < minValue ||
447 normVelocityP[1] / normVelocityP[2] > maxValue || normVelocityP[1] / normVelocityP[3] > maxValue ||
448 normVelocityP[2] / normVelocityP[3] < minValue ||
449 normVelocityP[2] / normVelocityP[3] > maxValue)
455 const double cosAngle01 = (nodesVelocities[0][0] * nodesVelocities[1][0] + nodesVelocities[0][1] * nodesVelocities[1][1] + nodesVelocities[0][1] * nodesVelocities[1][2]) /
456 (std::sqrt(std::pow(nodesVelocities[0][0], 2) + std::pow(nodesVelocities[0][1], 2) + std::pow(nodesVelocities[0][2], 2)) *
457 std::sqrt(std::pow(nodesVelocities[1][0], 2) + std::pow(nodesVelocities[1][1], 2) + std::pow(nodesVelocities[1][2], 2)));
458 const double cosAngle02 = (nodesVelocities[0][0] * nodesVelocities[2][0] + nodesVelocities[0][1] * nodesVelocities[2][1] + nodesVelocities[0][1] * nodesVelocities[2][2]) /
459 (std::sqrt(std::pow(nodesVelocities[0][0], 2) + std::pow(nodesVelocities[0][1], 2) + std::pow(nodesVelocities[0][2], 2)) *
460 std::sqrt(std::pow(nodesVelocities[2][0], 2) + std::pow(nodesVelocities[2][1], 2) + std::pow(nodesVelocities[2][2], 2)));
461 const double cosAngle03 = (nodesVelocities[0][0] * nodesVelocities[3][0] + nodesVelocities[0][1] * nodesVelocities[3][1] + nodesVelocities[0][1] * nodesVelocities[3][2]) /
462 (std::sqrt(std::pow(nodesVelocities[0][0], 2) + std::pow(nodesVelocities[0][1], 2) + std::pow(nodesVelocities[0][2], 2)) *
463 std::sqrt(std::pow(nodesVelocities[3][0], 2) + std::pow(nodesVelocities[3][1], 2) + std::pow(nodesVelocities[3][2], 2)));
464 const double cosAngle12 = (nodesVelocities[1][0] * nodesVelocities[2][0] + nodesVelocities[1][1] * nodesVelocities[2][1] + nodesVelocities[1][1] * nodesVelocities[2][2]) /
465 (std::sqrt(std::pow(nodesVelocities[1][0], 2) + std::pow(nodesVelocities[1][1], 2) + std::pow(nodesVelocities[1][2], 2)) *
466 std::sqrt(std::pow(nodesVelocities[2][0], 2) + std::pow(nodesVelocities[2][1], 2) + std::pow(nodesVelocities[2][2], 2)));
467 const double cosAngle13 = (nodesVelocities[1][0] * nodesVelocities[3][0] + nodesVelocities[1][1] * nodesVelocities[3][1] + nodesVelocities[1][1] * nodesVelocities[3][2]) /
468 (std::sqrt(std::pow(nodesVelocities[1][0], 2) + std::pow(nodesVelocities[1][1], 2) + std::pow(nodesVelocities[1][2], 2)) *
469 std::sqrt(std::pow(nodesVelocities[3][0], 2) + std::pow(nodesVelocities[3][1], 2) + std::pow(nodesVelocities[3][2], 2)));
470 const double cosAngle23 = (nodesVelocities[2][0] * nodesVelocities[3][0] + nodesVelocities[2][1] * nodesVelocities[3][1] + nodesVelocities[2][1] * nodesVelocities[3][2]) /
471 (std::sqrt(std::pow(nodesVelocities[2][0], 2) + std::pow(nodesVelocities[2][1], 2) + std::pow(nodesVelocities[2][2], 2)) *
472 std::sqrt(std::pow(nodesVelocities[3][0], 2) + std::pow(nodesVelocities[3][1], 2) + std::pow(nodesVelocities[3][2], 2)));
474 if (std::abs(cosAngle01) < 0.85 || std::abs(cosAngle02) < 0.85 || std::abs(cosAngle03) < 0.85 || std::abs(cosAngle12) < 0.85 || std::abs(cosAngle13) < 0.85 || std::abs(cosAngle23) < 0.85)
486 if (
dimension == 3 && accepted && numrigid < 3 &&
487 (previouslyIsolatedNodes == 4 || previouslyFreeSurfaceNodes == 4 || sumIsolatedFreeSurf == 4 || numfreesurf == 4 || numisolated == 4 || (numrigid == 2 && isolatedNodesInTheElement > 1)))
490 double Volume = tetrahedron->
Volume();
495 const double a1 = (nodesCoordinates[1][1] - nodesCoordinates[0][1]) * (nodesCoordinates[2][2] - nodesCoordinates[0][2]) - (nodesCoordinates[2][1] - nodesCoordinates[0][1]) * (nodesCoordinates[1][2] - nodesCoordinates[0][2]);
496 const double b1 = (nodesCoordinates[1][2] - nodesCoordinates[0][2]) * (nodesCoordinates[2][0] - nodesCoordinates[0][0]) - (nodesCoordinates[2][2] - nodesCoordinates[0][2]) * (nodesCoordinates[1][0] - nodesCoordinates[0][0]);
497 const double c1 = (nodesCoordinates[1][0] - nodesCoordinates[0][0]) * (nodesCoordinates[2][1] - nodesCoordinates[0][1]) - (nodesCoordinates[2][0] - nodesCoordinates[0][0]) * (nodesCoordinates[1][1] - nodesCoordinates[0][1]);
501 const double a2 = (nodesCoordinates[1][1] - nodesCoordinates[0][1]) * (nodesCoordinates[3][2] - nodesCoordinates[0][2]) - (nodesCoordinates[3][1] - nodesCoordinates[0][1]) * (nodesCoordinates[1][2] - nodesCoordinates[0][2]);
502 const double b2 = (nodesCoordinates[1][2] - nodesCoordinates[0][2]) * (nodesCoordinates[3][0] - nodesCoordinates[0][0]) - (nodesCoordinates[3][2] - nodesCoordinates[0][2]) * (nodesCoordinates[1][0] - nodesCoordinates[0][0]);
503 const double c2 = (nodesCoordinates[1][0] - nodesCoordinates[0][0]) * (nodesCoordinates[3][1] - nodesCoordinates[0][1]) - (nodesCoordinates[3][0] - nodesCoordinates[0][0]) * (nodesCoordinates[1][1] - nodesCoordinates[0][1]);
507 const double a3 = (nodesCoordinates[1][1] - nodesCoordinates[2][1]) * (nodesCoordinates[3][2] - nodesCoordinates[2][2]) - (nodesCoordinates[3][1] - nodesCoordinates[2][1]) * (nodesCoordinates[1][2] - nodesCoordinates[2][2]);
508 const double b3 = (nodesCoordinates[1][2] - nodesCoordinates[2][2]) * (nodesCoordinates[3][0] - nodesCoordinates[2][0]) - (nodesCoordinates[3][2] - nodesCoordinates[2][2]) * (nodesCoordinates[1][0] - nodesCoordinates[2][0]);
509 const double c3 = (nodesCoordinates[1][0] - nodesCoordinates[2][0]) * (nodesCoordinates[3][1] - nodesCoordinates[2][1]) - (nodesCoordinates[3][0] - nodesCoordinates[2][0]) * (nodesCoordinates[1][1] - nodesCoordinates[2][1]);
513 const double a4 = (nodesCoordinates[0][1] - nodesCoordinates[2][1]) * (nodesCoordinates[3][2] - nodesCoordinates[2][2]) - (nodesCoordinates[3][1] - nodesCoordinates[2][1]) * (nodesCoordinates[0][2] - nodesCoordinates[2][2]);
514 const double b4 = (nodesCoordinates[0][2] - nodesCoordinates[2][2]) * (nodesCoordinates[3][0] - nodesCoordinates[2][0]) - (nodesCoordinates[3][2] - nodesCoordinates[2][2]) * (nodesCoordinates[0][0] - nodesCoordinates[2][0]);
515 const double c4 = (nodesCoordinates[0][0] - nodesCoordinates[2][0]) * (nodesCoordinates[3][1] - nodesCoordinates[2][1]) - (nodesCoordinates[3][0] - nodesCoordinates[2][0]) * (nodesCoordinates[0][1] - nodesCoordinates[2][1]);
517 const double cosAngle12 = (a1 * a2 + b1 * b2 + c1 * c2) / (std::sqrt(std::pow(a1, 2) + std::pow(b1, 2) + std::pow(c1, 2)) * std::sqrt(std::pow(a2, 2) + std::pow(b2, 2) + std::pow(c2, 2)));
518 const double cosAngle13 = (a1 * a3 + b1 * b3 + c1 * c3) / (std::sqrt(std::pow(a1, 2) + std::pow(b1, 2) + std::pow(c1, 2)) * std::sqrt(std::pow(a3, 2) + std::pow(b3, 2) + std::pow(c3, 2)));
519 const double cosAngle14 = (a1 * a4 + b1 * b4 + c1 * c4) / (std::sqrt(std::pow(a1, 2) + std::pow(b1, 2) + std::pow(c1, 2)) * std::sqrt(std::pow(a4, 2) + std::pow(b4, 2) + std::pow(c4, 2)));
520 const double cosAngle23 = (a3 * a2 + b3 * b2 + c3 * c2) / (std::sqrt(std::pow(a3, 2) + std::pow(b3, 2) + std::pow(c3, 2)) * std::sqrt(std::pow(a2, 2) + std::pow(b2, 2) + std::pow(c2, 2)));
521 const double cosAngle24 = (a4 * a2 + b4 * b2 + c4 * c2) / (std::sqrt(std::pow(a4, 2) + std::pow(b4, 2) + std::pow(c4, 2)) * std::sqrt(std::pow(a2, 2) + std::pow(b2, 2) + std::pow(c2, 2)));
522 const double cosAngle34 = (a4 * a3 + b4 * b3 + c4 * c3) / (std::sqrt(std::pow(a4, 2) + std::pow(b4, 2) + std::pow(c4, 2)) * std::sqrt(std::pow(a3, 2) + std::pow(b3, 2) + std::pow(c3, 2)));
524 if (std::abs(cosAngle12) > 0.999 || std::abs(cosAngle13) > 0.999 || std::abs(cosAngle14) > 0.999 || std::abs(cosAngle23) > 0.999 || std::abs(cosAngle24) > 0.999 || std::abs(cosAngle34) > 0.999)
529 else if (Volume <= CriticalVolume)
543 mrRemesh.
Info->NumberOfElements = number;
548 std::cout <<
"Number of Preserved Fluid Elements " << mrRemesh.
Info->NumberOfElements <<
" (slivers detected: " << number_of_slivers <<
") " << std::endl;
549 std::cout <<
"TOTAL removed nodes " << mrRemesh.
Info->RemovedNodes << std::endl;
553 ModelPart::ElementsContainerType::iterator element_begin = mrModelPart.
ElementsBegin();
554 const SizeType nds = (*element_begin).GetGeometry().size();
561 for (
int el = 0;
el < OutNumberOfElements;
el++)
568 rNodes[OutElementList[
el * nds +
pn]].Set(BLOCKED);
573 int count_release = 0;
574 for (ModelPart::NodesContainerType::iterator i_node = rNodes.begin(); i_node != rNodes.end(); i_node++)
576 if (i_node->IsNot(BLOCKED))
578 if (!(i_node->Is(FREE_SURFACE) || i_node->Is(RIGID)))
580 i_node->Set(TO_ERASE);
582 std::cout <<
" NODE " << i_node->Id() <<
" RELEASE " << std::endl;
583 if (i_node->Is(BOUNDARY))
584 std::cout <<
" ERROR: node " << i_node->Id() <<
" IS BOUNDARY RELEASE " << std::endl;
587 if (i_node->Is(TO_ERASE))
592 i_node->Reset(BLOCKED);
596 std::cout <<
" fluid NUMBER OF RELEASED NODES " << count_release << std::endl;
601 for (ModelPart::NodesContainerType::iterator i_node = rNodes.begin(); i_node != rNodes.end(); i_node++)
603 i_node->Reset(BLOCKED);
608 mMesherUtilities.
SetNodes(mrModelPart, mrRemesh);
613 std::cout <<
" Generated_Elements :" << OutNumberOfElements << std::endl;
614 std::cout <<
" Passed_AlphaShape :" << mrRemesh.
Info->NumberOfElements << std::endl;
615 std::cout <<
" SELECT MESH ELEMENTS ]; " << std::endl;
634 std::string
Info()
const override
636 return "SelectMeshElementsForFluidsProcess";
642 rOStream <<
"SelectMeshElementsForFluidsProcess";
688 void IncreaseAlphaForRefininedZones(
double &
Alpha,
697 if (increaseAlfa ==
true)
699 if (numfreesurf < nds && numisolated == 0)
703 else if (numfreesurf == 0 && numrigid == 0 && numisolated == 0)
707 else if (numfreesurf == 0 && numrigid > (0.5 * nds) && numisolated == 0)
711 else if (numfreesurf == 0 && numrigid > 0 && numisolated == 0)
750 rOStream << std::endl;
Base class for all Conditions.
Definition: condition.h:59
bool Is(Flags const &rOther) const
Definition: flags.h:274
bool IsNot(Flags const &rOther) const
Definition: flags.h:291
Geometry base class.
Definition: geometry.h:71
void push_back(PointPointerType x)
Definition: geometry.h:548
virtual double Volume() const
This method calculate and return volume of this geometry.
Definition: geometry.h:1358
PointReferenceType back()
Definition: geometry.h:507
virtual double Area() const
This method calculate and return area or surface area of this geometry depending to it's dimension.
Definition: geometry.h:1345
This class is a vector which stores global pointers.
Definition: global_pointers_vector.h:61
size_type size() const
Definition: global_pointers_vector.h:307
The base class for processes passed to the solution scheme.
Definition: mesher_process.hpp:37
Short class definition.
Definition: mesher_utilities.hpp:49
double ComputeModelPartVolume(ModelPart &rModelPart)
Definition: mesher_utilities.cpp:228
void SetNodes(ModelPart &rModelPart, MeshingParameters &rMeshingVariables)
Definition: mesher_utilities.cpp:2021
void DefineMeshSizeInTransitionZones2D(MeshingParameters &rMeshingVariables, double currentTime, array_1d< double, 3 > NodeCoordinates, double &meanMeshSize, bool &insideTransitionZone)
Definition: mesher_utilities.cpp:2153
void DefineMeshSizeInTransitionZones3D(MeshingParameters &rMeshingVariables, double currentTime, array_1d< double, 3 > NodeCoordinates, double &meanMeshSize, bool &insideTransitionZone)
Definition: mesher_utilities.cpp:2311
bool AlphaShape(double AlphaParameter, Geometry< Node > &rGeometry, const unsigned int dimension)
Definition: mesher_utilities.cpp:1182
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
ElementIterator ElementsBegin(IndexType ThisIndex=0)
Definition: model_part.h:1169
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
NodesContainerType & Nodes(IndexType ThisIndex=0)
Definition: model_part.h:507
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
Refine Mesh Elements Process 2D and 3D.
Definition: select_mesh_elements_for_fluids_process.hpp:50
void Execute() override
Execute method is used to execute the Process algorithms.
Definition: select_mesh_elements_for_fluids_process.hpp:95
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: select_mesh_elements_for_fluids_process.hpp:646
ConditionType::GeometryType GeometryType
Definition: select_mesh_elements_for_fluids_process.hpp:60
KRATOS_CLASS_POINTER_DEFINITION(SelectMeshElementsForFluidsProcess)
Pointer definition of Process.
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: select_mesh_elements_for_fluids_process.hpp:640
std::string Info() const override
Turn back information as a string.
Definition: select_mesh_elements_for_fluids_process.hpp:634
SelectMeshElementsForFluidsProcess(ModelPart &rModelPart, MesherUtilities::MeshingParameters &rRemeshingParameters, int EchoLevel)
Default constructor.
Definition: select_mesh_elements_for_fluids_process.hpp:68
std::size_t SizeType
Definition: select_mesh_elements_for_fluids_process.hpp:62
void operator()()
This operator is provided to call the process as a function and simply calls the Execute method.
Definition: select_mesh_elements_for_fluids_process.hpp:85
virtual ~SelectMeshElementsForFluidsProcess()
Destructor.
Definition: select_mesh_elements_for_fluids_process.hpp:78
ModelPart::PropertiesType PropertiesType
Definition: select_mesh_elements_for_fluids_process.hpp:59
GlobalPointersVector< Node > NodeWeakPtrVectorType
Definition: select_mesh_elements_for_fluids_process.hpp:61
ModelPart::ConditionType ConditionType
Definition: select_mesh_elements_for_fluids_process.hpp:58
A four node tetrahedra geometry with linear shape functions.
Definition: tetrahedra_3d_4.h:59
A three node 2D triangle geometry with linear shape functions.
Definition: triangle_2d_3.h:74
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
static int EchoLevel
Definition: co_sim_EMPIRE_API.h:42
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
TExpressionType::data_type norm_2(AMatrix::MatrixExpression< TExpressionType, TCategory > const &TheExpression)
Definition: amatrix_interface.h:625
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
TABLE_NUMBER_ANGULAR_VELOCITY TABLE_NUMBER_MOMENT I33 BEAM_INERTIA_ROT_UNIT_LENGHT_Y KRATOS_DEFINE_APPLICATION_VARIABLE(DEM_APPLICATION, double, BEAM_INERTIA_ROT_UNIT_LENGHT_Z) typedef std double
Definition: DEM_application_variables.h:182
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
pn
Definition: generate_droplet_dynamics.py:65
int dimension
Definition: isotropic_damage_automatic_differentiation.py:123
def Alpha(n, j)
Definition: quadrature.py:93
el
Definition: read_stl.py:25
integer i
Definition: TensorModule.f:17
int * GetElementList()
Definition: mesher_utilities.hpp:178
int & GetNumberOfPoints()
Definition: mesher_utilities.hpp:182
int & GetNumberOfElements()
Definition: mesher_utilities.hpp:183
Definition: mesher_utilities.hpp:631
MeshingInfoParameters::Pointer Info
Definition: mesher_utilities.hpp:681
std::vector< int > PreservedElements
Definition: mesher_utilities.hpp:669
RefiningParameters::Pointer Refine
Definition: mesher_utilities.hpp:684
bool MeshElementsSelectedFlag
Definition: mesher_utilities.hpp:662
MeshContainer InMesh
Definition: mesher_utilities.hpp:674
MeshContainer OutMesh
Definition: mesher_utilities.hpp:675
std::vector< double > RefiningBoxFinalTime
Definition: mesher_utilities.hpp:706
std::vector< bool > UseRefiningBox
Definition: mesher_utilities.hpp:704
bool InputInitializedFlag
Definition: mesher_utilities.hpp:661
std::vector< int > NodalPreIds
Definition: mesher_utilities.hpp:668
double AlphaParameter
Definition: mesher_utilities.hpp:651
Flags ExecutionOptions
Definition: mesher_utilities.hpp:648
std::vector< double > RefiningBoxInitialTime
Definition: mesher_utilities.hpp:705