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.
Classes | List of all members
Kratos::CalculateSignedDistanceTo3DSkinProcess Class Reference

Short class definition. More...

#include <calculate_signed_distance_to_3d_skin_process.h>

Inheritance diagram for Kratos::CalculateSignedDistanceTo3DSkinProcess:
Collaboration diagram for Kratos::CalculateSignedDistanceTo3DSkinProcess:

Classes

struct  IntersectionNodeStruct
 
struct  TetEdgeStruct
 

Public Member Functions

Life Cycle
 CalculateSignedDistanceTo3DSkinProcess (ModelPart &rThisModelPartStruc, ModelPart &rThisModelPartFluid)
 Constructor. More...
 
 ~CalculateSignedDistanceTo3DSkinProcess () override
 Destructor. More...
 
Operators
void operator() ()
 
Operations
void Execute () override
 Execute method is used to execute the Process algorithms. More...
 
void MappingPressureToStructure (BinBasedFastPointLocator< 3 > &node_locator)
 
void ComputeDiscontinuousInterpolation (const Node &pNode, Geometry< Node > &geom, const array_1d< double, 4 > &distances, array_1d< double, 4 > &Npos, array_1d< double, 4 > &Nneg)
 
void AveragePressureToNode (BinBasedFastPointLocator< 3 > &node_locator, Node &node)
 
void DistanceFluidStructure ()
 
void Initialize ()
 
void SetIndexTable (BoundedMatrix< unsigned int, 6, 2 > &TetEdgeIndexTable)
 
void CalcElementDistances (ModelPart::ElementsContainerType::iterator &i_fluidElement, BoundedMatrix< unsigned int, 6, 2 > TetEdgeIndexTable)
 
void IdentifyIntersectionNodes (ModelPart::ElementsContainerType::iterator &i_fluidElement, unsigned int i_tetEdge, std::vector< OctreeType::cell_type * > &leaves, std::vector< TetEdgeStruct > &IntersectedTetEdges, unsigned int &NumberIntersectionsOnTetCorner, BoundedMatrix< unsigned int, 6, 2 > TetEdgeIndexTable, int &intersection_counter)
 
bool StructuralElementNotYetConsidered (unsigned int IDCurrentStructElem, std::vector< unsigned int > &IntersectingStructElemID)
 
bool IsIntersectionNodeOnTetEdge (double *IntersectionPoint, double *EdgeNode1, double *EdgeNode2)
 
bool IsNewIntersectionNode (IntersectionNodeStruct &NewIntersectionNode, std::vector< TetEdgeStruct > &IntersectedTetEdges)
 
bool IsIntersectionOnCorner (IntersectionNodeStruct &NewIntersectionNode, double *EdgeNode1, double *EdgeNode2)
 
void CalculateNormal3D (Point &Point1, Point &Point2, Point &Point3, array_1d< double, 3 > &rResultNormal)
 
void CalcDistanceTo3DSkin (std::vector< TetEdgeStruct > &IntersectedTetEdges, ModelPart::ElementsContainerType::iterator &i_fluid_Element, unsigned int NumberIntersectionsOnTetCorner)
 
void FillIntNodesContainer (std::vector< TetEdgeStruct > &IntersectedTetEdges, std::vector< IntersectionNodeStruct > &NodesOfApproximatedStructure)
 
void CalcSignedDistancesToOneIntNode (ModelPart::ElementsContainerType::iterator &i_fluid_Element, std::vector< IntersectionNodeStruct > NodesOfApproximatedStructure, array_1d< double, 4 > &ElementalDistances)
 
void CalcSignedDistancesToTwoIntNodes (ModelPart::ElementsContainerType::iterator &i_fluid_Element, std::vector< IntersectionNodeStruct > NodesOfApproximatedStructure, array_1d< double, 4 > &ElementalDistances)
 
void CalcSignedDistancesToThreeIntNodes (ModelPart::ElementsContainerType::iterator &i_fluid_Element, std::vector< IntersectionNodeStruct > &NodesOfApproximatedStructure, array_1d< double, 4 > &ElementalDistances)
 
void CalcSignedDistancesToMoreThanThreeIntNodes (ModelPart::ElementsContainerType::iterator &i_fluid_Element, std::vector< IntersectionNodeStruct > NodesOfApproximatedStructure, array_1d< double, 4 > &ElementalDistances, std::vector< TetEdgeStruct > &IntersectedTetEdges)
 
double PointDistanceToPlane (Point &planeBasePoint, array_1d< double, 3 > &planeNormal, Point &ToPoint)
 
void AssignMinimalNodalDistance ()
 
void AvoidZeroDistances (ModelPart::ElementsContainerType::iterator &Element, array_1d< double, 4 > &ElementalDistances)
 
void GenerateSkinModelPart (ModelPart &mrNewSkinModelPart)
 
void GenerateOctree ()
 
void GenerateNodes ()
 
void GenerateCellNode (CellType *pCell, std::size_t &LastId)
 
void SetNodeInNeighbours (CellType *pCell, int Position, CellNodeDataType *pNode)
 
void CalculateDistance2 ()
 
void CalculateDistance ()
 
void CalculateDistance (CellNodeDataType &rNode, int i_direction)
 
void CalculateNotEmptyLeavesDistance (CellType *pCell)
 
void CalculateNodeDistance (Node &rNode)
 
double DistancePositionInSpace (double *coords)
 
void GetIntersectionsAndNodes (double *ray, int direction, std::vector< std::pair< double, Element::GeometryType * > > &intersections, DistanceSpatialContainersConfigure::data_type &rNodesArray)
 
void GetIntersections (double *ray, int direction, std::vector< std::pair< double, Element::GeometryType * > > &intersections)
 
int GetCellIntersections (OctreeType::cell_type *cell, double *ray, OctreeType::key_type *ray_key, int direction, std::vector< std::pair< double, Element::GeometryType * > > &intersections)
 
int IntersectionTriangleSegment (Element::GeometryType &rGeometry, double *RayPoint1, double *RayPoint2, double *IntersectionPoint)
 
Input and output
std::string Info () const override
 Turn back information as a string. More...
 
void PrintInfo (std::ostream &rOStream) const override
 Print information about this object. More...
 
void PrintData (std::ostream &rOStream) const override
 Print object's data. More...
 
void PrintGiDMesh (std::ostream &rOStream) const
 
void PrintGiDResults (std::ostream &rOStream) const
 
- Public Member Functions inherited from Kratos::Process
 KRATOS_CLASS_POINTER_DEFINITION (Process)
 Pointer definition of Process. More...
 
 Process ()
 Default constructor. More...
 
 Process (const Flags options)
 
 ~Process () override
 Destructor. More...
 
void operator() ()
 This operator is provided to call the process as a function and simply calls the Execute method. More...
 
virtual Process::Pointer Create (Model &rModel, Parameters ThisParameters)
 This method creates an pointer of the process. More...
 
virtual void ExecuteInitialize ()
 This function is designed for being called at the beginning of the computations right after reading the model and the groups. More...
 
virtual void ExecuteBeforeSolutionLoop ()
 This function is designed for being execute once before the solution loop but after all of the solvers where built. More...
 
virtual void ExecuteInitializeSolutionStep ()
 This function will be executed at every time step BEFORE performing the solve phase. More...
 
virtual void ExecuteFinalizeSolutionStep ()
 This function will be executed at every time step AFTER performing the solve phase. More...
 
virtual void ExecuteBeforeOutputStep ()
 This function will be executed at every time step BEFORE writing the output. More...
 
virtual void ExecuteAfterOutputStep ()
 This function will be executed at every time step AFTER writing the output. More...
 
virtual void ExecuteFinalize ()
 This function is designed for being called at the end of the computations. More...
 
virtual int Check ()
 This function is designed for being called after ExecuteInitialize ONCE to verify that the input is correct. More...
 
virtual void Clear ()
 This method clears the assignation of the conditions. More...
 
virtual const Parameters GetDefaultParameters () const
 This method provides the defaults parameters to avoid conflicts between the different constructors. More...
 
std::string Info () const override
 Turn back information as a string. More...
 
void PrintInfo (std::ostream &rOStream) const override
 Print information about this object. More...
 
void PrintData (std::ostream &rOStream) const override
 Print object's data. More...
 
- Public Member Functions inherited from Kratos::Flags
Flagsoperator= (Flags const &rOther)
 Assignment operator. More...
 
 operator bool () const
 
Flags operator~ () const
 
bool operator! () const
 
void AssignFlags (Flags const &rOther)
 
void Set (const Flags ThisFlag)
 
void Set (const Flags ThisFlag, bool Value)
 
void Reset (const Flags ThisFlag)
 
void Flip (const Flags ThisFlag)
 
void SetPosition (IndexType Position, bool Value=true)
 
bool GetPosition (IndexType Position) const
 
void FlipPosition (IndexType Position)
 
void ClearPosition (IndexType Position)
 
void Clear ()
 
Flags AsFalse () const
 
bool Is (Flags const &rOther) const
 
bool IsDefined (Flags const &rOther) const
 
bool IsNot (Flags const &rOther) const
 
bool IsNotDefined (Flags const &rOther) const
 
 KRATOS_CLASS_POINTER_DEFINITION (Flags)
 Pointer definition of Flags. More...
 
const Flagsoperator|= (const Flags &Other)
 
const Flagsoperator&= (const Flags &Other)
 
 Flags ()
 Default constructor. More...
 
 Flags (Flags const &rOther)
 Copy constructor. More...
 
virtual ~Flags ()
 Destructor. More...
 

Type Definitions

typedef DistanceSpatialContainersConfigure ConfigurationType
 
typedef OctreeBinaryCell< ConfigurationTypeCellType
 
typedef OctreeBinary< CellTypeOctreeType
 
typedef ConfigurationType::cell_node_data_type CellNodeDataType
 
typedef Point PointType
 
typedef OctreeType::cell_type::object_container_type object_container_type
 always the point 3D More...
 
 KRATOS_CLASS_POINTER_DEFINITION (CalculateSignedDistanceTo3DSkinProcess)
 Pointer definition of CalculateSignedDistanceTo3DSkinProcess. More...
 

Additional Inherited Members

- Public Types inherited from Kratos::Flags
enum  FlagsList {
  Flag0 = BlockType(1) , Flag1 = BlockType(1) << 1 , Flag2 = BlockType(1) << 2 , Flag3 = BlockType(1) << 3 ,
  Flag4 = BlockType(1) << 4 , Flag5 = BlockType(1) << 5 , Flag6 = BlockType(1) << 6 , Flag7 = BlockType(1) << 7 ,
  Flag8 = BlockType(1) << 8 , Flag9 = BlockType(1) << 9 , Flag10 = BlockType(1) << 10 , Flag11 = BlockType(1) << 11 ,
  Flag12 = BlockType(1) << 12 , Flag13 = BlockType(1) << 13 , Flag14 = BlockType(1) << 14 , Flag15 = BlockType(1) << 15 ,
  Flag16 = BlockType(1) << 16 , Flag17 = BlockType(1) << 17 , Flag18 = BlockType(1) << 18 , Flag19 = BlockType(1) << 19 ,
  Flag20 = BlockType(1) << 20 , Flag21 = BlockType(1) << 21 , Flag22 = BlockType(1) << 22 , Flag23 = BlockType(1) << 23 ,
  Flag24 = BlockType(1) << 24 , Flag25 = BlockType(1) << 25 , Flag26 = BlockType(1) << 26 , Flag27 = BlockType(1) << 27 ,
  Flag28 = BlockType(1) << 28 , Flag29 = BlockType(1) << 29 , Flag30 = BlockType(1) << 30
}
 
typedef int64_t BlockType
 
typedef int64_t FlagType
 
typedef std::size_t IndexType
 
- Static Public Member Functions inherited from Kratos::Flags
static const Flags AllDefined ()
 
static const Flags AllTrue ()
 
static Flags Create (IndexType ThisPosition, bool Value=true)
 

Detailed Description

Short class definition.

Detail class definition.

Member Typedef Documentation

◆ CellNodeDataType

◆ CellType

◆ ConfigurationType

◆ object_container_type

typedef OctreeType::cell_type::object_container_type Kratos::CalculateSignedDistanceTo3DSkinProcess::object_container_type

always the point 3D

◆ OctreeType

◆ PointType

Constructor & Destructor Documentation

◆ CalculateSignedDistanceTo3DSkinProcess()

Kratos::CalculateSignedDistanceTo3DSkinProcess::CalculateSignedDistanceTo3DSkinProcess ( ModelPart rThisModelPartStruc,
ModelPart rThisModelPartFluid 
)
inline

Constructor.

◆ ~CalculateSignedDistanceTo3DSkinProcess()

Kratos::CalculateSignedDistanceTo3DSkinProcess::~CalculateSignedDistanceTo3DSkinProcess ( )
inlineoverride

Destructor.

Member Function Documentation

◆ AssignMinimalNodalDistance()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::AssignMinimalNodalDistance ( )
inline

◆ AveragePressureToNode()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::AveragePressureToNode ( BinBasedFastPointLocator< 3 > &  node_locator,
Node node 
)
inline

◆ AvoidZeroDistances()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::AvoidZeroDistances ( ModelPart::ElementsContainerType::iterator Element,
array_1d< double, 4 > &  ElementalDistances 
)
inline

If structure directly passes through the corner point of a tetrahedra (leading to zero distances in the respective node), then a small distance value (different from zero) will be stored for that point. This is necessary since the embedded solver cannot handle zero distances.

Parameters
Elementcurrent Element which was cut by the structure (flag SPLIT_ELEMENT is set to one)
ElementalDistancesElemental distances calculated by the intersection pattern

◆ CalcDistanceTo3DSkin()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::CalcDistanceTo3DSkin ( std::vector< TetEdgeStruct > &  IntersectedTetEdges,
ModelPart::ElementsContainerType::iterator i_fluid_Element,
unsigned int  NumberIntersectionsOnTetCorner 
)
inline

◆ CalcElementDistances()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::CalcElementDistances ( ModelPart::ElementsContainerType::iterator i_fluidElement,
BoundedMatrix< unsigned int, 6, 2 >  TetEdgeIndexTable 
)
inline

◆ CalcSignedDistancesToMoreThanThreeIntNodes()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::CalcSignedDistancesToMoreThanThreeIntNodes ( ModelPart::ElementsContainerType::iterator i_fluid_Element,
std::vector< IntersectionNodeStruct NodesOfApproximatedStructure,
array_1d< double, 4 > &  ElementalDistances,
std::vector< TetEdgeStruct > &  IntersectedTetEdges 
)
inline

◆ CalcSignedDistancesToOneIntNode()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::CalcSignedDistancesToOneIntNode ( ModelPart::ElementsContainerType::iterator i_fluid_Element,
std::vector< IntersectionNodeStruct NodesOfApproximatedStructure,
array_1d< double, 4 > &  ElementalDistances 
)
inline

◆ CalcSignedDistancesToThreeIntNodes()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::CalcSignedDistancesToThreeIntNodes ( ModelPart::ElementsContainerType::iterator i_fluid_Element,
std::vector< IntersectionNodeStruct > &  NodesOfApproximatedStructure,
array_1d< double, 4 > &  ElementalDistances 
)
inline

◆ CalcSignedDistancesToTwoIntNodes()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::CalcSignedDistancesToTwoIntNodes ( ModelPart::ElementsContainerType::iterator i_fluid_Element,
std::vector< IntersectionNodeStruct NodesOfApproximatedStructure,
array_1d< double, 4 > &  ElementalDistances 
)
inline

◆ CalculateDistance() [1/2]

void Kratos::CalculateSignedDistanceTo3DSkinProcess::CalculateDistance ( )
inline

◆ CalculateDistance() [2/2]

void Kratos::CalculateSignedDistanceTo3DSkinProcess::CalculateDistance ( CellNodeDataType rNode,
int  i_direction 
)
inline

◆ CalculateDistance2()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::CalculateDistance2 ( )
inline

◆ CalculateNodeDistance()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::CalculateNodeDistance ( Node rNode)
inline

◆ CalculateNormal3D()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::CalculateNormal3D ( Point Point1,
Point Point2,
Point Point3,
array_1d< double, 3 > &  rResultNormal 
)
inline

◆ CalculateNotEmptyLeavesDistance()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::CalculateNotEmptyLeavesDistance ( CellType pCell)
inline

◆ ComputeDiscontinuousInterpolation()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::ComputeDiscontinuousInterpolation ( const Node pNode,
Geometry< Node > &  geom,
const array_1d< double, 4 > &  distances,
array_1d< double, 4 > &  Npos,
array_1d< double, 4 > &  Nneg 
)
inline

◆ DistanceFluidStructure()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::DistanceFluidStructure ( )
inline

◆ DistancePositionInSpace()

double Kratos::CalculateSignedDistanceTo3DSkinProcess::DistancePositionInSpace ( double coords)
inline

◆ Execute()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::Execute ( )
inlineoverridevirtual

Execute method is used to execute the Process algorithms.

Reimplemented from Kratos::Process.

◆ FillIntNodesContainer()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::FillIntNodesContainer ( std::vector< TetEdgeStruct > &  IntersectedTetEdges,
std::vector< IntersectionNodeStruct > &  NodesOfApproximatedStructure 
)
inline

◆ GenerateCellNode()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::GenerateCellNode ( CellType pCell,
std::size_t &  LastId 
)
inline

◆ GenerateNodes()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::GenerateNodes ( )
inline

◆ GenerateOctree()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::GenerateOctree ( )
inline

◆ GenerateSkinModelPart()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::GenerateSkinModelPart ( ModelPart mrNewSkinModelPart)
inline

◆ GetCellIntersections()

int Kratos::CalculateSignedDistanceTo3DSkinProcess::GetCellIntersections ( OctreeType::cell_type cell,
double ray,
OctreeType::key_type ray_key,
int  direction,
std::vector< std::pair< double, Element::GeometryType * > > &  intersections 
)
inline

◆ GetIntersections()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::GetIntersections ( double ray,
int  direction,
std::vector< std::pair< double, Element::GeometryType * > > &  intersections 
)
inline

◆ GetIntersectionsAndNodes()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::GetIntersectionsAndNodes ( double ray,
int  direction,
std::vector< std::pair< double, Element::GeometryType * > > &  intersections,
DistanceSpatialContainersConfigure::data_type rNodesArray 
)
inline

◆ IdentifyIntersectionNodes()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::IdentifyIntersectionNodes ( ModelPart::ElementsContainerType::iterator i_fluidElement,
unsigned int  i_tetEdge,
std::vector< OctreeType::cell_type * > &  leaves,
std::vector< TetEdgeStruct > &  IntersectedTetEdges,
unsigned int NumberIntersectionsOnTetCorner,
BoundedMatrix< unsigned int, 6, 2 >  TetEdgeIndexTable,
int intersection_counter 
)
inline

◆ Info()

std::string Kratos::CalculateSignedDistanceTo3DSkinProcess::Info ( ) const
inlineoverridevirtual

Turn back information as a string.

Reimplemented from Kratos::Flags.

◆ Initialize()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::Initialize ( )
inline

◆ IntersectionTriangleSegment()

int Kratos::CalculateSignedDistanceTo3DSkinProcess::IntersectionTriangleSegment ( Element::GeometryType rGeometry,
double RayPoint1,
double RayPoint2,
double IntersectionPoint 
)
inline

◆ IsIntersectionNodeOnTetEdge()

bool Kratos::CalculateSignedDistanceTo3DSkinProcess::IsIntersectionNodeOnTetEdge ( double IntersectionPoint,
double EdgeNode1,
double EdgeNode2 
)
inline

◆ IsIntersectionOnCorner()

bool Kratos::CalculateSignedDistanceTo3DSkinProcess::IsIntersectionOnCorner ( IntersectionNodeStruct NewIntersectionNode,
double EdgeNode1,
double EdgeNode2 
)
inline

◆ IsNewIntersectionNode()

bool Kratos::CalculateSignedDistanceTo3DSkinProcess::IsNewIntersectionNode ( IntersectionNodeStruct NewIntersectionNode,
std::vector< TetEdgeStruct > &  IntersectedTetEdges 
)
inline

◆ KRATOS_CLASS_POINTER_DEFINITION()

Kratos::CalculateSignedDistanceTo3DSkinProcess::KRATOS_CLASS_POINTER_DEFINITION ( CalculateSignedDistanceTo3DSkinProcess  )

◆ MappingPressureToStructure()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::MappingPressureToStructure ( BinBasedFastPointLocator< 3 > &  node_locator)
inline

This function maps the nodal pressure values computed in the CFD analysis to the respective structural nodes, i.e. for each structural node inside a fluid tetrahedra positive and negative face pressure is computed by mapping between the nodal values of the tetrahedra. Afterwards the resulting delta is applied as new nodal pressure.

◆ operator()()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::operator() ( )
inline

◆ PointDistanceToPlane()

double Kratos::CalculateSignedDistanceTo3DSkinProcess::PointDistanceToPlane ( Point planeBasePoint,
array_1d< double, 3 > &  planeNormal,
Point ToPoint 
)
inline

This function calculates the distance of a 3D point to a plane spanned by a 3D triangle

Parameters
Planebase point
planeNormal
ToPointThe point which distance is required
Returns
The distance between the point and the plane spanned by the 3D triangle

◆ PrintData()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::PrintData ( std::ostream &  rOStream) const
inlineoverridevirtual

Print object's data.

Reimplemented from Kratos::Flags.

◆ PrintGiDMesh()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::PrintGiDMesh ( std::ostream &  rOStream) const
inline

◆ PrintGiDResults()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::PrintGiDResults ( std::ostream &  rOStream) const
inline

◆ PrintInfo()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::PrintInfo ( std::ostream &  rOStream) const
inlineoverridevirtual

Print information about this object.

Reimplemented from Kratos::Flags.

◆ SetIndexTable()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::SetIndexTable ( BoundedMatrix< unsigned int, 6, 2 > &  TetEdgeIndexTable)
inline

◆ SetNodeInNeighbours()

void Kratos::CalculateSignedDistanceTo3DSkinProcess::SetNodeInNeighbours ( CellType pCell,
int  Position,
CellNodeDataType pNode 
)
inline

◆ StructuralElementNotYetConsidered()

bool Kratos::CalculateSignedDistanceTo3DSkinProcess::StructuralElementNotYetConsidered ( unsigned int  IDCurrentStructElem,
std::vector< unsigned int > &  IntersectingStructElemID 
)
inline

The documentation for this class was generated from the following file: