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::TrilinosLevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver > Class Template Reference

Short class definition. More...

#include <trilinos_levelset_convection_process.h>

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

Public Types

Type Definitions
typedef LevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver > BaseType
 
typedef TLinearSolver::Pointer LinearSolverPointerType
 
typedef BuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::Pointer BuilderSolverPointerType
 
- Public Types inherited from Kratos::LevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >
typedef ImplicitSolvingStrategy< TSparseSpace, TDenseSpace, TLinearSolver > SolvingStrategyType
 
typedef BuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver >::Pointer BuilderAndSolverPointerType
 
typedef ComputeNodalGradientProcess< ComputeNodalGradientProcessSettings::SaveAsNonHistoricalVariableComputeGradientProcessType
 
typedef ComputeGradientProcessType::Pointer ComputeGradientProcessPointerType
 
- 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)
 
Pointer Definitions
 KRATOS_CLASS_POINTER_DEFINITION (TrilinosLevelSetConvectionProcess)
 Pointer definition of TrilinosLevelSetConvectionProcess. More...
 
Life Cycle
 TrilinosLevelSetConvectionProcess (Epetra_MpiComm &rEpetraCommunicator, Model &rModel, typename TLinearSolver::Pointer pLinearSolver, Parameters ThisParameters)
 
 TrilinosLevelSetConvectionProcess (Epetra_MpiComm &rEpetraCommunicator, ModelPart &rBaseModelPart, typename TLinearSolver::Pointer pLinearSolver, Parameters ThisParameters)
 
 TrilinosLevelSetConvectionProcess (TrilinosLevelSetConvectionProcess const &rOther)=delete
 Copy constructor. More...
 
 ~TrilinosLevelSetConvectionProcess () override
 Destructor. 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...
 
- Public Member Functions inherited from Kratos::LevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >
 KRATOS_CLASS_POINTER_DEFINITION (LevelSetConvectionProcess)
 Pointer definition of LevelSetConvectionProcess. More...
 
 LevelSetConvectionProcess (Model &rModel, typename TLinearSolver::Pointer pLinearSolver, Parameters ThisParameters)
 Construct a new Level Set Convection Process object Level set convection proces model constructor. More...
 
 LevelSetConvectionProcess (ModelPart &rBaseModelPart, typename TLinearSolver::Pointer pLinearSolver, Parameters ThisParameters)
 Construct a new Level Set Convection Process object Level set convection proces model part constructor. More...
 
 LevelSetConvectionProcess (LevelSetConvectionProcess const &rOther)=delete
 Copy constructor. More...
 
 ~LevelSetConvectionProcess () override
 Destructor. More...
 
void operator() ()
 
void Execute () override
 Perform the level-set convection This solver provides a stabilized convection solver based on [Codina, R., 1993. Comput. Methods Appl. Mech. Engrg., 110(3-4), pp.325-342.] It uses the sub-stepping approach to comply with the user defined maximum CFL number. The error compensation is done according to the BFECC algorithm, which requires forward, backward, and the final forward solution steps (that triplicates the computational cost). The error compensation severely disturbs the monotonicity of the results that is compensated for by implementing a limited BFECC algorithm. The limiter relies on the nodal gradient of LevelSetVar (non-historical variable LevelSetGradientVar). For more info see [Kuzmin et al., Comput. Methods Appl. Mech. Engrg., 322 (2017) 23–41]. More...
 
void Clear () override
 This method clears the assignation of the conditions. More...
 
const Parameters GetDefaultParameters () const override
 This method provides the defaults parameters to avoid conflicts between the different constructors. 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...
 
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...
 

Protected Member Functions

Protected Operations
void ReGenerateConvectionModelPart (ModelPart &rBaseModelPart) override
 
- Protected Member Functions inherited from Kratos::LevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >
 LevelSetConvectionProcess (ModelPart &rModelPart, Parameters ThisParameters)
 
void SetConvectionProblemSettings ()
 Set the level set convection formulation settings This method sets the convection diffusion settings specifying the variable to be convect, its gradient, and the convection variable Additionally, it also sets the required ProcessInfo variables. More...
 
void InitializeDistanceModelPartDatabases ()
 Initializes the databases values This function initializes is intended to collect all the database initializations. More...
 
unsigned int EvaluateNumberOfSubsteps ()
 
void EvaluateLimiter ()
 Convection limiter evaluation This function implements the limiter evaluation Note that both the standard and the high order limiter (with nodal projections contributions) are implemented. More...
 
void ErrorCalculationAndCorrection ()
 Eulerian error calculation and correction This function implements the Backward Forward Error Compensation and Correction (BFECC) algorithm Note that this assumes that the first forward convection to n+1 has been completed. Then we go backwards to n* to calculate and apply the convection error. More...
 
void ComputeNodalH ()
 Nodal H calculation This function calculates the nodal h by executing a process where the nodal h calculaiton is implemented. More...
 

Protected Attributes

Protected member Variables
Epetra_MpiComm & mrEpetraCommunicator
 
- Protected Attributes inherited from Kratos::LevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >
ModelPartmrBaseModelPart
 
ModelmrModel
 
ModelPartmpDistanceModelPart = nullptr
 
const Variable< double > * mpLevelSetVar = nullptr
 
const Variable< array_1d< double, 3 > > * mpConvectVar = nullptr
 
const Variable< array_1d< double, 3 > > * mpLevelSetGradientVar = nullptr
 
double mMaxAllowedCFL = 1.0
 
unsigned int mMaxSubsteps = 0
 
bool mIsBfecc
 
bool mElementRequiresLimiter
 
bool mElementTauNodal
 
bool mCalculateNodalH = true
 
bool mElementRequiresLevelSetGradient
 
bool mEvaluateLimiter
 
double mPowerBfeccLimiter = 2.0
 
double mPowerElementalLimiter = 4.0
 
Vector mError
 
Vector mOldDistance
 
Vector mSigmaPlus
 
Vector mSigmaMinus
 
Vector mLimiter
 
std::vector< array_1d< double, 3 > > mVelocity
 
std::vector< array_1d< double, 3 > > mVelocityOld
 
bool mDistancePartIsInitialized = false
 
SolvingStrategyType::UniquePointer mpSolvingStrategy
 
std::string mAuxModelPartName
 
std::string mConvectionElementType
 
const ElementmpConvectionFactoryElement = nullptr
 
Parameters mLevelSetConvectionSettings
 
ComputeGradientProcessPointerType mpGradientCalculator = nullptr
 

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::TrilinosLevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >

Short class definition.

takes a model part full of SIMPLICIAL ELEMENTS (triangles and tetras) and convects a level set distance on the top of it

Member Typedef Documentation

◆ BaseType

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef LevelSetConvectionProcess<TDim, TSparseSpace, TDenseSpace, TLinearSolver> Kratos::TrilinosLevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::BaseType

◆ BuilderSolverPointerType

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

◆ LinearSolverPointerType

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
typedef TLinearSolver::Pointer Kratos::TrilinosLevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::LinearSolverPointerType

Constructor & Destructor Documentation

◆ TrilinosLevelSetConvectionProcess() [1/3]

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::TrilinosLevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::TrilinosLevelSetConvectionProcess ( Epetra_MpiComm &  rEpetraCommunicator,
Model rModel,
typename TLinearSolver::Pointer  pLinearSolver,
Parameters  ThisParameters 
)
inline

◆ TrilinosLevelSetConvectionProcess() [2/3]

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::TrilinosLevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::TrilinosLevelSetConvectionProcess ( Epetra_MpiComm &  rEpetraCommunicator,
ModelPart rBaseModelPart,
typename TLinearSolver::Pointer  pLinearSolver,
Parameters  ThisParameters 
)
inline

◆ TrilinosLevelSetConvectionProcess() [3/3]

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Kratos::TrilinosLevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::TrilinosLevelSetConvectionProcess ( TrilinosLevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver > const &  rOther)
delete

Copy constructor.

◆ ~TrilinosLevelSetConvectionProcess()

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

Destructor.

Member Function Documentation

◆ Info()

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

Turn back information as a string.

Reimplemented from Kratos::LevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >.

◆ KRATOS_CLASS_POINTER_DEFINITION()

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

Pointer definition of TrilinosLevelSetConvectionProcess.

◆ KRATOS_DEFINE_LOCAL_FLAG() [1/2]

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

◆ KRATOS_DEFINE_LOCAL_FLAG() [2/2]

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

◆ PrintInfo()

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

Print information about this object.

Reimplemented from Kratos::LevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >.

◆ ReGenerateConvectionModelPart()

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
void Kratos::TrilinosLevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::ReGenerateConvectionModelPart ( ModelPart rBaseModelPart)
inlineoverrideprotectedvirtual

Member Data Documentation

◆ mrEpetraCommunicator

template<unsigned int TDim, class TSparseSpace , class TDenseSpace , class TLinearSolver >
Epetra_MpiComm& Kratos::TrilinosLevelSetConvectionProcess< TDim, TSparseSpace, TDenseSpace, TLinearSolver >::mrEpetraCommunicator
protected

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