13 #ifndef KRATOS_FRACTIONAL_STEP_STRATEGY
14 #define KRATOS_FRACTIONAL_STEP_STRATEGY
30 #include "custom_utilities/solver_settings.h"
75 template <
class TSparseSpace,
class TDenseSpace,
class TLinearSolver>
101 bool PredictorCorrector):
106 KRATOS_WARNING(
"FractionalStepStrategy") <<
"This constructor is deprecated. Use the one with the \'CalculateReactionsFlag\' instead." << std::endl;
107 InitializeStrategy(rSolverConfig,PredictorCorrector);
112 bool PredictorCorrector,
118 KRATOS_WARNING(
"FractionalStepStrategy") <<
"This constructor is deprecated. Use the one with the \'CalculateReactionsFlag\' instead." << std::endl;
119 InitializeStrategy(rSolverConfig,PredictorCorrector);
125 bool PredictorCorrector,
126 bool CalculateReactionsFlag)
131 InitializeStrategy(rSolverConfig,PredictorCorrector);
137 bool PredictorCorrector,
138 bool CalculateReactionsFlag,
144 InitializeStrategy(rSolverConfig,PredictorCorrector);
164 const int n_conds = r_model_part.NumberOfConditions();
165 #pragma omp parallel for
166 for (
int i_cond = 0; i_cond < n_conds; ++i_cond) {
167 auto it_cond = r_model_part.ConditionsBegin() + i_cond;
168 if (it_cond->Is(SLIP)) {
169 auto& r_geom = it_cond->GetGeometry();
170 for (
auto& r_node : r_geom) {
172 r_node.Set(SLIP,
true);
196 <<
"Buffer size too small for fractional step strategy (BDF2), needed 3, got " << r_model_part.GetBufferSize() << std::endl;
198 <<
"Buffer size too small for fractional step strategy (Backward Euler), needed 2, got " << r_model_part.GetBufferSize() << std::endl;
201 const auto &r_current_process_info = r_model_part.GetProcessInfo();
202 for (
const auto& r_element : r_model_part.Elements()) {
203 ierr = r_element.Check(r_current_process_info);
209 for (
const auto& r_condition : r_model_part.Conditions()) {
210 ierr = r_condition.Check(r_current_process_info);
229 bool converged =
false;
235 const auto convergence_output = this->
SolveStep();
238 KRATOS_INFO_IF(
"FractionalStepStrategy",
echo_level > 0) <<
"Predictor-corrector converged in " << it + 1 <<
" iterations." << std::endl;
242 KRATOS_WARNING_IF(
"FractionalStepStrategy", !converged &&
echo_level > 0) <<
"Predictor-corrector iterations did not converge." << std::endl;
245 const auto convergence_output = this->
SolveStep();
251 converged = std::get<0>(convergence_output);
278 auto &r_process_info = r_model_part.GetProcessInfo();
279 const int n_elems = r_model_part.NumberOfElements();
282 const int original_step = r_process_info[FRACTIONAL_STEP];
283 r_process_info.SetValue(FRACTIONAL_STEP, 1);
288 const auto &r_const_process_info = r_process_info;
291 #pragma omp parallel for private(RHS_Contribution, LHS_Contribution)
292 for (
int i_elem = 0; i_elem < n_elems; ++i_elem) {
294 auto it_elem = r_model_part.ElementsBegin() + i_elem;
295 it_elem->CalculateLocalSystem(
298 r_const_process_info);
301 unsigned int index = 0;
302 auto& r_geom = it_elem->GetGeometry();
303 const unsigned int n_nodes = r_geom.PointsNumber();
306 auto& r_reaction = r_geom[
i].FastGetSolutionStepValue(REACTION);
308 r_reaction[
d] -= RHS_Contribution[index++];
310 r_geom[
i].UnSetLock();
315 r_model_part.GetCommunicator().AssembleCurrentData(REACTION);
318 r_process_info.SetValue(FRACTIONAL_STEP, original_step);
344 int StrategyLevel = Level > 0 ? Level - 1 : 0;
377 std::string
Info()
const override
379 std::stringstream buffer;
380 buffer <<
"FractionalStepStrategy" ;
391 void PrintData(std::ostream& rOStream)
const override {}
468 double Dt = r_process_info[DELTA_TIME];
469 double OldDt = r_process_info.GetPreviousTimeStepInfo(1)[DELTA_TIME];
471 double Rho = OldDt /
Dt;
472 double TimeCoeff = 1.0 / (
Dt * Rho * Rho +
Dt * Rho);
474 Vector& BDFcoeffs = r_process_info[BDF_COEFFICIENTS];
475 BDFcoeffs.
resize(3,
false);
477 BDFcoeffs[0] = TimeCoeff * (Rho * Rho + 2.0 * Rho);
478 BDFcoeffs[1] = -TimeCoeff * (Rho * Rho + 2.0 * Rho + 1.0);
479 BDFcoeffs[2] = TimeCoeff;
483 double Dt = r_process_info[DELTA_TIME];
484 double TimeCoeff = 1.0 /
Dt;
486 Vector& BDFcoeffs = r_process_info[BDF_COEFFICIENTS];
487 BDFcoeffs.
resize(2,
false);
489 BDFcoeffs[0] = TimeCoeff;
490 BDFcoeffs[1] = -TimeCoeff;
504 bool Converged =
false;
541 #pragma omp parallel for
542 for (
int i_node = 0; i_node <
n_nodes; ++i_node) {
543 auto it_node = rModelPart.
NodesBegin() + i_node;
544 const double old_press = it_node->FastGetSolutionStepValue(PRESSURE);
551 #pragma omp parallel for
552 for (
int i_node = 0; i_node <
n_nodes; ++i_node) {
553 auto it_node = rModelPart.
NodesBegin() + i_node;
554 it_node->FastGetSolutionStepValue(PRESSURE_OLD_IT) += it_node->FastGetSolutionStepValue(PRESSURE);
572 (*iExtraSteps)->Execute();
575 return std::make_tuple(Converged, NormDp);
584 #pragma omp parallel for reduction(+:NormV)
585 for (
int i_node = 0; i_node <
n_nodes; ++i_node) {
586 const auto it_node = rModelPart.
NodesBegin() + i_node;
587 const auto &r_vel = it_node->FastGetSolutionStepValue(VELOCITY);
588 for (
unsigned int d = 0;
d < 3; ++
d) {
589 NormV += r_vel[
d] * r_vel[
d];
595 const double zero_tol = 1.0e-12;
596 const double Ratio = (NormV < zero_tol) ? NormDv : NormDv / NormV;
600 << std::scientific << std::setprecision(8) <<
"FRAC VEL.: ratio = " << Ratio <<
"; exp.ratio = " <<
mVelocityTolerance <<
" abs = " << NormDv << std::endl;
614 #pragma omp parallel for reduction(+:NormP)
615 for (
int i_node = 0; i_node <
n_nodes; ++i_node) {
616 const auto it_node = rModelPart.
NodesBegin() + i_node;
617 const double Pr = it_node->FastGetSolutionStepValue(PRESSURE);
623 const double zero_tol = 1.0e-12;
624 const double Ratio = (NormP < zero_tol) ? NormDp : NormDp / NormP;
643 #pragma omp parallel for
644 for (
int i_node = 0; i_node <
n_nodes; ++i_node) {
645 auto it_node = rModelPart.
NodesBegin() + i_node;
646 it_node->FastGetSolutionStepValue(CONV_PROJ) = CONV_PROJ.Zero();
647 it_node->FastGetSolutionStepValue(PRESS_PROJ) = PRESS_PROJ.Zero();
648 it_node->FastGetSolutionStepValue(DIVPROJ) = 0.0;
649 it_node->FastGetSolutionStepValue(NODAL_AREA) = 0.0;
652 #pragma omp parallel for
653 for (
int i_elem = 0; i_elem < n_elems; ++i_elem) {
666 #pragma omp parallel for
667 for (
int i_node = 0; i_node <
n_nodes; ++i_node) {
668 auto it_node = rModelPart.
NodesBegin() + i_node;
669 const double NodalArea = it_node->FastGetSolutionStepValue(NODAL_AREA);
670 it_node->FastGetSolutionStepValue(CONV_PROJ) /= NodalArea;
671 it_node->FastGetSolutionStepValue(PRESS_PROJ) /= NodalArea;
672 it_node->FastGetSolutionStepValue(DIVPROJ) /= NodalArea;
685 #pragma omp parallel for
686 for (
int i_elem = 0; i_elem < n_elems; ++i_elem) {
700 #pragma omp parallel for
701 for (
int i_node = 0; i_node <
n_nodes; ++i_node) {
702 auto it_node = rModelPart.
NodesBegin() + i_node;
703 const double NodalArea = it_node->FastGetSolutionStepValue(NODAL_AREA);
704 if ( ! it_node->IsFixed(VELOCITY_X) )
705 it_node->FastGetSolutionStepValue(VELOCITY_X) += it_node->FastGetSolutionStepValue(FRACT_VEL_X) / NodalArea;
706 if ( ! it_node->IsFixed(VELOCITY_Y) )
707 it_node->FastGetSolutionStepValue(VELOCITY_Y) += it_node->FastGetSolutionStepValue(FRACT_VEL_Y) / NodalArea;
708 if ( ! it_node->IsFixed(VELOCITY_Z) )
709 it_node->FastGetSolutionStepValue(VELOCITY_Z) += it_node->FastGetSolutionStepValue(FRACT_VEL_Z) / NodalArea;
714 #pragma omp parallel for
715 for (
int i_node = 0; i_node <
n_nodes; ++i_node) {
716 auto it_node = rModelPart.
NodesBegin() + i_node;
717 const double NodalArea = it_node->FastGetSolutionStepValue(NODAL_AREA);
718 if ( ! it_node->IsFixed(VELOCITY_X) )
719 it_node->FastGetSolutionStepValue(VELOCITY_X) += it_node->FastGetSolutionStepValue(FRACT_VEL_X) / NodalArea;
720 if ( ! it_node->IsFixed(VELOCITY_Y) )
721 it_node->FastGetSolutionStepValue(VELOCITY_Y) += it_node->FastGetSolutionStepValue(FRACT_VEL_Y) / NodalArea;
734 const int num_nodes_in_model_part = rModelPart.
NumberOfNodes();
736 #pragma omp parallel for
737 for (
int i = 0;
i < num_nodes_in_model_part;
i++)
740 const Node& r_const_node = *itNode;
742 if ( r_const_node.
Is(rSlipWallFlag) )
747 double Proj = rNormal[0] * rDeltaVelocity[0];
748 double Norm = rNormal[0] * rNormal[0];
752 Proj += rNormal[
d] * rDeltaVelocity[
d];
753 Norm += rNormal[
d] * rNormal[
d];
757 rDeltaVelocity -= Proj * rNormal;
781 Node& rNode0 = rGeom[0];
784 Node& rNode1 = rGeom[1];
788 if ( (
static_cast<int>(rNode0.
Id()) == Node1Pair ) && (
static_cast<int>(rNode1.
Id()) == Node0Pair ) )
795 rNode0.
GetValue(NODAL_AREA) = NodalArea;
796 rNode0.
GetValue(CONV_PROJ) = ConvProj;
797 rNode0.
GetValue(PRESS_PROJ) = PressProj;
799 rNode1.
GetValue(NODAL_AREA) = NodalArea;
800 rNode1.
GetValue(CONV_PROJ) = ConvProj;
801 rNode1.
GetValue(PRESS_PROJ) = PressProj;
807 double NodalArea = rGeom[0].FastGetSolutionStepValue(NODAL_AREA);
810 double DivProj = rGeom[0].FastGetSolutionStepValue(DIVPROJ);
812 for (
unsigned int i = 1;
i < 4;
i++)
814 NodalArea += rGeom[
i].FastGetSolutionStepValue(NODAL_AREA);
815 ConvProj += rGeom[
i].FastGetSolutionStepValue(CONV_PROJ);
816 PressProj += rGeom[
i].FastGetSolutionStepValue(PRESS_PROJ);
817 DivProj += rGeom[
i].FastGetSolutionStepValue(DIVPROJ);
820 for (
unsigned int i = 0;
i < 4;
i++)
822 rGeom[
i].
GetValue(NODAL_AREA) = NodalArea;
824 rGeom[
i].
GetValue(PRESS_PROJ) = PressProj;
837 if (itNode->GetValue(NODAL_AREA) != 0.0)
839 itNode->FastGetSolutionStepValue(NODAL_AREA) = itNode->GetValue(NODAL_AREA);
840 itNode->FastGetSolutionStepValue(CONV_PROJ) = itNode->GetValue(CONV_PROJ);
841 itNode->FastGetSolutionStepValue(PRESS_PROJ) = itNode->GetValue(PRESS_PROJ);
842 itNode->FastGetSolutionStepValue(DIVPROJ) = itNode->GetValue(DIVPROJ);
845 itNode->GetValue(NODAL_AREA) = 0.0;
846 itNode->GetValue(CONV_PROJ) = CONV_PROJ.Zero();
847 itNode->GetValue(PRESS_PROJ) = PRESS_PROJ.Zero();
848 itNode->GetValue(DIVPROJ) = 0.0;
867 Node& rNode0 = rGeom[0];
870 Node& rNode1 = rGeom[1];
874 if ( (
static_cast<int>(rNode0.
Id()) == Node1Pair ) && (
static_cast<int>(rNode1.
Id()) == Node0Pair ) )
878 rNode0.
GetValue(FRACT_VEL) = DeltaVel;
879 rNode1.
GetValue(FRACT_VEL) = DeltaVel;
885 for (
unsigned int i = 1;
i < 4;
i++)
887 DeltaVel += rGeom[
i].FastGetSolutionStepValue(FRACT_VEL);
890 for (
unsigned int i = 0;
i < 4;
i++)
902 if ( rDeltaVel[0]*rDeltaVel[0] + rDeltaVel[1]*rDeltaVel[1] + rDeltaVel[2]*rDeltaVel[2] != 0.0)
904 itNode->FastGetSolutionStepValue(FRACT_VEL) = itNode->GetValue(FRACT_VEL);
947 void InitializeStrategy(
949 bool PredictorCorrector)
958 mDomainSize = rSolverConfig.GetDomainSize();
967 if (r_process_info.Has(FS_PRESSURE_GRADIENT_RELAXATION_FACTOR)) {
969 KRATOS_INFO(
"FractionalStepStrategy") <<
"Using fractional step strategy with "
970 "pressure gradient relaxation = "
989 KRATOS_ERROR <<
"FractionalStepStrategy error: No Velocity strategy defined in FractionalStepSettings" << std::endl;
994 if (HavePressStrategy)
1001 KRATOS_ERROR <<
"FractionalStepStrategy error: No Pressure strategy defined in FractionalStepSettings" << std::endl;
1004 Process::Pointer pTurbulenceProcess;
1005 bool HaveTurbulence = rSolverConfig.GetTurbulenceModel(pTurbulenceProcess);
The Commmunicator class manages communication for distributed ModelPart instances.
Definition: communicator.h:67
virtual bool AssembleNonHistoricalData(Variable< int > const &ThisVariable)
Definition: communicator.cpp:527
virtual const DataCommunicator & GetDataCommunicator() const
Definition: communicator.cpp:340
virtual bool AssembleCurrentData(Variable< int > const &ThisVariable)
Definition: communicator.cpp:502
MeshType & LocalMesh()
Returns the reference to the mesh storing all local entities.
Definition: communicator.cpp:245
void SetValue(const Variable< TDataType > &rThisVariable, TDataType const &rValue)
Sets the value for a given variable.
Definition: data_value_container.h:320
bool Is(Flags const &rOther) const
Definition: flags.h:274
Fractional-step strategy for incompressible Navier-Stokes formulation This strategy implements a spli...
Definition: fractional_step_strategy.h:77
virtual void CalculateReactions()
Calculates the reactions This methods calculates the reactions of the momentum equation....
Definition: fractional_step_strategy.h:275
FractionalStepStrategy(ModelPart &rModelPart, SolverSettingsType &rSolverConfig, bool PredictorCorrector)
Definition: fractional_step_strategy.h:99
double mVelocityTolerance
Definition: fractional_step_strategy.h:413
void Initialize() override
Initialization of member variables and prior operations.
Definition: fractional_step_strategy.h:159
unsigned int mMaxPressureIter
Definition: fractional_step_strategy.h:421
int Check() override
Function to perform expensive checks.
Definition: fractional_step_strategy.h:183
bool GetCalculateReactionsFlag()
This method returns the flag mCalculateReactionsFlag.
Definition: fractional_step_strategy.h:362
virtual void AddIterationStep(Process::Pointer pNewStep)
Definition: fractional_step_strategy.h:321
FractionalStepStrategy(ModelPart &rModelPart, SolverSettingsType &rSolverConfig, bool PredictorCorrector, const Kratos::Variable< int > &PeriodicVar)
Definition: fractional_step_strategy.h:110
std::vector< Process::Pointer > mExtraIterationSteps
Definition: fractional_step_strategy.h:441
const Kratos::Variable< int > & mrPeriodicIdVar
Definition: fractional_step_strategy.h:443
KRATOS_CLASS_POINTER_DEFINITION(FractionalStepStrategy)
Counted pointer of FractionalStepStrategy.
StrategyPointerType mpMomentumStrategy
Scheme for the solution of the momentum equation.
Definition: fractional_step_strategy.h:436
void EnforceSlipCondition(const Kratos::Flags &rSlipWallFlag)
Substract wall-normal component of velocity update to ensure that the final velocity satisfies slip c...
Definition: fractional_step_strategy.h:730
bool SolveSolutionStep() override
Solves the current step. This function returns true if a solution has been found, false otherwise.
Definition: fractional_step_strategy.h:227
double mPressureTolerance
Definition: fractional_step_strategy.h:415
void Clear() override
Clears the internal storage.
Definition: fractional_step_strategy.h:331
ImplicitSolvingStrategy< TSparseSpace, TDenseSpace, TLinearSolver > BaseType
Definition: fractional_step_strategy.h:85
ImplicitSolvingStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::Pointer StrategyPointerType
Definition: fractional_step_strategy.h:91
bool CheckFractionalStepConvergence(const double NormDv)
Definition: fractional_step_strategy.h:578
void SetTimeCoefficients()
Set the Time Coefficients object Calculate the coefficients for the BDF2 time iteration....
Definition: fractional_step_strategy.h:459
void PeriodicConditionProjectionCorrection(ModelPart &rModelPart)
Definition: fractional_step_strategy.h:768
FractionalStepStrategy(ModelPart &rModelPart, SolverSettingsType &rSolverConfig, bool PredictorCorrector, bool CalculateReactionsFlag)
Definition: fractional_step_strategy.h:122
StrategyPointerType mpPressureStrategy
Scheme for the solution of the mass equation.
Definition: fractional_step_strategy.h:439
void SetEchoLevel(int Level) override
This sets the level of echo for the solving strategy.
Definition: fractional_step_strategy.h:341
virtual void CalculateEndOfStepVelocity()
Definition: fractional_step_strategy.h:676
bool mReformDofSet
Definition: fractional_step_strategy.h:431
void FinalizeSolutionStep() override
Performs all the required operations that should be done (for each step) after solving the solution s...
Definition: fractional_step_strategy.h:262
SolverSettings< TSparseSpace, TDenseSpace, TLinearSolver > SolverSettingsType
Definition: fractional_step_strategy.h:93
std::string Info() const override
Turn back information as a string.
Definition: fractional_step_strategy.h:377
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: fractional_step_strategy.h:385
BaseType::LocalSystemMatrixType LocalSystemMatrixType
Definition: fractional_step_strategy.h:89
void PeriodicConditionVelocityCorrection(ModelPart &rModelPart)
Definition: fractional_step_strategy.h:854
BaseType::LocalSystemVectorType LocalSystemVectorType
Definition: fractional_step_strategy.h:87
unsigned int mMaxVelocityIter
Definition: fractional_step_strategy.h:419
double mPressureGradientRelaxationFactor
Definition: fractional_step_strategy.h:417
bool CheckPressureConvergence(const double NormDp)
Definition: fractional_step_strategy.h:608
bool mPredictorCorrector
Definition: fractional_step_strategy.h:427
unsigned int mTimeOrder
Definition: fractional_step_strategy.h:425
~FractionalStepStrategy() override
Destructor.
Definition: fractional_step_strategy.h:148
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: fractional_step_strategy.h:391
virtual void ComputeSplitOssProjections(ModelPart &rModelPart)
Definition: fractional_step_strategy.h:637
FractionalStepStrategy(ModelPart &rModelPart, SolverSettingsType &rSolverConfig, bool PredictorCorrector, bool CalculateReactionsFlag, const Kratos::Variable< int > &PeriodicVar)
Definition: fractional_step_strategy.h:134
bool mUseSlipConditions
Definition: fractional_step_strategy.h:429
void SetCalculateReactionsFlag(bool CalculateReactionsFlag)
This method sets the flag mCalculateReactionsFlag.
Definition: fractional_step_strategy.h:353
virtual void ClearExtraIterationSteps()
Definition: fractional_step_strategy.h:326
virtual std::tuple< bool, double > SolveStep()
Definition: fractional_step_strategy.h:496
unsigned int mDomainSize
Definition: fractional_step_strategy.h:423
bool mCalculateReactionsFlag
Definition: fractional_step_strategy.h:433
void InitializeSolutionStep() override
Performs all the required operations that should be done (for each step) before solving the solution ...
Definition: fractional_step_strategy.h:221
Geometry base class.
Definition: geometry.h:71
SizeType PointsNumber() const
Definition: geometry.h:528
TVariableType::Type & GetValue(const TVariableType &rThisVariable)
Definition: geometry.h:627
Implicit solving strategy base class This is the base class from which we will derive all the implici...
Definition: implicit_solving_strategy.h:61
BaseType::LocalSystemVectorType LocalSystemVectorType
Definition: implicit_solving_strategy.h:80
BaseType::LocalSystemMatrixType LocalSystemMatrixType
Definition: implicit_solving_strategy.h:78
void resize(std::size_t NewSize1, std::size_t NewSize2, bool preserve=0)
Definition: amatrix_interface.h:224
NodesContainerType & Nodes()
Definition: mesh.h:346
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
ConditionIterator ConditionsBegin(IndexType ThisIndex=0)
Definition: model_part.h:1361
Communicator & GetCommunicator()
Definition: model_part.h:1821
NodeIterator NodesBegin(IndexType ThisIndex=0)
Definition: model_part.h:487
SizeType NumberOfElements(IndexType ThisIndex=0) const
Definition: model_part.h:1027
ProcessInfo & GetProcessInfo()
Definition: model_part.h:1746
MeshType::NodeIterator NodeIterator
Definition: model_part.h:134
SizeType NumberOfNodes(IndexType ThisIndex=0) const
Definition: model_part.h:341
NodeIterator NodesEnd(IndexType ThisIndex=0)
Definition: model_part.h:497
MeshType::ConditionIterator ConditionIterator
Definition: model_part.h:189
NodesContainerType & Nodes(IndexType ThisIndex=0)
Definition: model_part.h:507
ConditionIterator ConditionsEnd(IndexType ThisIndex=0)
Definition: model_part.h:1371
This class defines the node.
Definition: node.h:65
TVariableType::Type & FastGetSolutionStepValue(const TVariableType &rThisVariable)
Definition: node.h:435
IndexType Id() const
Definition: node.h:262
TVariableType::Type & GetValue(const TVariableType &rThisVariable)
Definition: node.h:466
size_type size() const
Returns the number of elements in the container.
Definition: pointer_vector_set.h:502
Helper class to define solution strategies for FS_Strategy.
Definition: solver_settings.h:53
@ Velocity
Definition: solver_settings.h:66
@ Pressure
Definition: solver_settings.h:66
Solving strategy base class This is the base class from which we will derive all the strategies (impl...
Definition: solving_strategy.h:64
TDenseSpace::MatrixType LocalSystemMatrixType
Definition: solving_strategy.h:79
virtual void SetEchoLevel(const int Level)
This sets the level of echo for the solving strategy.
Definition: solving_strategy.h:255
ModelPart & GetModelPart()
Operations to get the pointer to the model.
Definition: solving_strategy.h:350
int GetEchoLevel()
This returns the level of echo for the solving strategy.
Definition: solving_strategy.h:271
virtual int Check()
Function to perform expensive checks.
Definition: solving_strategy.h:377
TDenseSpace::VectorType LocalSystemVectorType
Definition: solving_strategy.h:81
KeyType Key() const
Definition: variable_data.h:187
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
This class implements a set of auxiliar, already parallelized, methods to perform some common tasks r...
Definition: variable_utils.h:63
void SetHistoricalVariableToZero(const Variable< TType > &rVariable, NodesContainerType &rNodes)
Sets the nodal value of any variable to zero.
Definition: variable_utils.h:757
#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
#define KRATOS_INFO_IF(label, conditional)
Definition: logger.h:251
#define KRATOS_WARNING_IF(label, conditional)
Definition: logger.h:266
#define KRATOS_WARNING(label)
Definition: logger.h:265
void InitializeAllEntities(ModelPart &rModelPart)
This method initializes all the active entities (conditions, elements, constraints)
Definition: entities_utilities.cpp:199
ProcessInfo & GetProcessInfo(ModelPart &rModelPart)
Definition: add_model_part_to_python.cpp:54
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KratosZeroVector< double > ZeroVector
Definition: amatrix_interface.h:561
REACTION_CHECK_STIFFNESS_FACTOR int
Definition: contact_structural_mechanics_application_variables.h:75
Dt
Definition: face_heat.py:78
int n_nodes
Definition: generate_total_lagrangian_mixed_volumetric_strain_element.py:15
int d
Definition: ode_solve.py:397
def Norm(vector)
Definition: sand_production_post_process_tool.py:10
echo_level
Definition: script.py:68
integer i
Definition: TensorModule.f:17