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.
Public Member Functions | List of all members
Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver > Class Template Reference

Short class definition. More...

#include <variational_distance_calculation_process.h>

Inheritance diagram for Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >:
Collaboration diagram for Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >:

Public Types

Type Definitions
typedef Scheme< TSparseSpace, TDenseSpace > SchemeType
 
typedef SchemeType::Pointer SchemePointerType
 
typedef BuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::Pointer BuilderSolverPointerType
 
typedef ImplicitSolvingStrategy< TSparseSpace, TDenseSpace, TLinearSolver > SolvingStrategyType
 
- 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
 

Public Member Functions

 KRATOS_DEFINE_LOCAL_FLAG (PERFORM_STEP1)
 
 KRATOS_DEFINE_LOCAL_FLAG (DO_EXPENSIVE_CHECKS)
 
 KRATOS_DEFINE_LOCAL_FLAG (CALCULATE_EXACT_DISTANCES_TO_PLANE)
 
Pointer Definitions
 KRATOS_CLASS_POINTER_DEFINITION (VariationalDistanceCalculationProcess)
 Pointer definition of VariationalDistanceCalculationProcess. More...
 
Life Cycle
 VariationalDistanceCalculationProcess (ModelPart &rBaseModelPart, typename TLinearSolver::Pointer pLinearSolver, unsigned int MaxIterations=10, Flags Options=CALCULATE_EXACT_DISTANCES_TO_PLANE.AsFalse(), std::string AuxPartName="RedistanceCalculationPart", double Coefficient1=0.01, double Coefficient2=0.1)
 
 VariationalDistanceCalculationProcess (ModelPart &rBaseModelPart, typename TLinearSolver::Pointer pLinearSolver, BuilderSolverPointerType pBuilderAndSolver, unsigned int MaxIterations=10, Flags Options=CALCULATE_EXACT_DISTANCES_TO_PLANE.AsFalse(), std::string AuxPartName="RedistanceCalculationPart", double Coefficient1=0.01, double Coefficient2=0.1)
 Constructor with custom Builder And Solver. More...
 
 ~VariationalDistanceCalculationProcess () override
 Destructor. More...
 
Operators
void operator() ()
 
Operations
void Execute () override
 Execute method is used to execute the Process algorithms. More...
 
void Clear () override
 This method clears the assignation of the conditions. More...
 
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...
 
- 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 const Parameters GetDefaultParameters () const
 This method provides the defaults parameters to avoid conflicts between the different constructors. 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...
 

Protected Member Functions

Protected Operations
void ValidateInput ()
 
void InitializeSolutionStrategy (BuilderSolverPointerType pBuilderAndSolver)
 
virtual void ReGenerateDistanceModelPart (ModelPart &rBaseModelPart)
 

Protected Attributes

Protected member Variables
bool mDistancePartIsInitialized
 
unsigned int mMaxIterations
 
ModelmrModel
 
ModelPartmrBaseModelPart
 
Flags mOptions
 
std::string mAuxModelPartName
 
double mCoefficient1
 
double mCoefficient2
 
SolvingStrategyType::UniquePointer mpSolvingStrategy
 

Additional Inherited Members

- 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

template<unsigned int TDim, class TSparseSpace, class TDenseSpace, class TLinearSolver>
class Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >

Short class definition.

takes a model part full of SIMPLICIAL ELEMENTS (triangles and tetras) and recomputes a signed distance function mantaining as much as possible the position of the zero of the function prior to the call.

This is achieved by minimizing the function ( 1 - norm( gradient( distance ) )**2 with the restriction that "distance" is a finite elment function

Member Typedef Documentation

◆ BuilderSolverPointerType

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef BuilderAndSolver<TSparseSpace,TDenseSpace,TLinearSolver>::Pointer Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::BuilderSolverPointerType

◆ SchemePointerType

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef SchemeType::Pointer Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::SchemePointerType

◆ SchemeType

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef Scheme< TSparseSpace, TDenseSpace > Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::SchemeType

◆ SolvingStrategyType

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef ImplicitSolvingStrategy< TSparseSpace, TDenseSpace, TLinearSolver > Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::SolvingStrategyType

Constructor & Destructor Documentation

◆ VariationalDistanceCalculationProcess() [1/2]

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::VariationalDistanceCalculationProcess ( ModelPart rBaseModelPart,
typename TLinearSolver::Pointer  pLinearSolver,
unsigned int  MaxIterations = 10,
Flags  Options = CALCULATE_EXACT_DISTANCES_TO_PLANE.AsFalse(),
std::string  AuxPartName = "RedistanceCalculationPart",
double  Coefficient1 = 0.01,
double  Coefficient2 = 0.1 
)
inline

This process recomputed the distance function mantaining the zero of the existing distance distribution for this reason the DISTANCE should be initialized to values distinct from zero in at least some portions of the domain alternatively, the DISTANCE shall be fixed to zero at least on some nodes, and the process will compute a positive distance respecting that zero

Parameters
base_model_parr- is the model part on the top of which the calculation will be performed
plinear_solver- linear solver to be used internally @max_iterations - maximum number of iteration to be employed in the nonlinear optimization process.
  • can also be set to 0 if a (very) rough approximation is enough

EXAMPLE OF USAGE FROM PYTHON:

class distance_linear_solver_settings: solver_type = "AMGCL" tolerance = 1E-3 max_iteration = 200 scaling = False krylov_type = "CG" smoother_type = "SPAI0" verbosity = 0

import linear_solver_factory distance_linear_solver = linear_solver_factory.ConstructSolver(distance_linear_solver_settings)

max_iterations=1 distance_calculator = VariationalDistanceCalculationProcess2D(fluid_model_part, distance_linear_solver, max_iterations) distance_calculator.Execute()

◆ VariationalDistanceCalculationProcess() [2/2]

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::VariationalDistanceCalculationProcess ( ModelPart rBaseModelPart,
typename TLinearSolver::Pointer  pLinearSolver,
BuilderSolverPointerType  pBuilderAndSolver,
unsigned int  MaxIterations = 10,
Flags  Options = CALCULATE_EXACT_DISTANCES_TO_PLANE.AsFalse(),
std::string  AuxPartName = "RedistanceCalculationPart",
double  Coefficient1 = 0.01,
double  Coefficient2 = 0.1 
)
inline

Constructor with custom Builder And Solver.

To be used in the trilinos version, since the trilinos builder and solver needs additional data (the EpetraComm).

Parameters
rBaseModelPartReference ModelPart for distance calculation.
pLinearSolverLinear solver for the distance system.
MaxIterationsMaximum number of non-linear optimization iterations.
OptionsConfiguration flags for the procedure.
AuxPartNameName to be used for the internal distance calculation ModelPart.

◆ ~VariationalDistanceCalculationProcess()

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::~VariationalDistanceCalculationProcess ( )
inlineoverride

Destructor.

Member Function Documentation

◆ Clear()

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::Clear ( )
inlineoverridevirtual

This method clears the assignation of the conditions.

Reimplemented from Kratos::Process.

◆ Execute()

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::Execute ( )
inlineoverridevirtual

Execute method is used to execute the Process algorithms.

Reimplemented from Kratos::Process.

◆ Info()

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
std::string Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::Info ( ) const
inlineoverridevirtual

Turn back information as a string.

Reimplemented from Kratos::Process.

◆ InitializeSolutionStrategy()

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::InitializeSolutionStrategy ( BuilderSolverPointerType  pBuilderAndSolver)
inlineprotected

◆ KRATOS_CLASS_POINTER_DEFINITION()

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::KRATOS_CLASS_POINTER_DEFINITION ( VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >  )

Pointer definition of VariationalDistanceCalculationProcess.

◆ KRATOS_DEFINE_LOCAL_FLAG() [1/3]

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::KRATOS_DEFINE_LOCAL_FLAG ( CALCULATE_EXACT_DISTANCES_TO_PLANE  )

◆ KRATOS_DEFINE_LOCAL_FLAG() [2/3]

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::KRATOS_DEFINE_LOCAL_FLAG ( DO_EXPENSIVE_CHECKS  )

◆ KRATOS_DEFINE_LOCAL_FLAG() [3/3]

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::KRATOS_DEFINE_LOCAL_FLAG ( PERFORM_STEP1  )

◆ operator()()

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::operator() ( )
inline

◆ PrintData()

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::PrintData ( std::ostream &  rOStream) const
inlineoverridevirtual

Print object's data.

Reimplemented from Kratos::Process.

◆ PrintInfo()

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::PrintInfo ( std::ostream &  rOStream) const
inlineoverridevirtual

Print information about this object.

Reimplemented from Kratos::Process.

◆ ReGenerateDistanceModelPart()

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
virtual void Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::ReGenerateDistanceModelPart ( ModelPart rBaseModelPart)
inlineprotectedvirtual

◆ ValidateInput()

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::ValidateInput ( )
inlineprotected

Member Data Documentation

◆ mAuxModelPartName

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
std::string Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::mAuxModelPartName
protected

◆ mCoefficient1

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
double Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::mCoefficient1
protected

◆ mCoefficient2

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
double Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::mCoefficient2
protected

◆ mDistancePartIsInitialized

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
bool Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::mDistancePartIsInitialized
protected

◆ mMaxIterations

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
unsigned int Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::mMaxIterations
protected

◆ mOptions

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Flags Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::mOptions
protected

◆ mpSolvingStrategy

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
SolvingStrategyType::UniquePointer Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::mpSolvingStrategy
protected

◆ mrBaseModelPart

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
ModelPart& Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::mrBaseModelPart
protected

◆ mrModel

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Model& Kratos::VariationalDistanceCalculationProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::mrModel
protected

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