41 "model_part_name":"PLEASE_CHOOSE_MODEL_PART_NAME",
42 "variable_name": "PLEASE_PRESCRIBE_VARIABLE_NAME",
45 "gravity_direction": 1,
46 "first_reference_coordinate": [0.0,1.0,0.0],
47 "second_reference_coordinate": [1.0,0.5,0.0],
48 "third_reference_coordinate": [1.0,0.5,0.0],
49 "specific_weight" : 10000.0,
50 "pressure_tension_cut_off" : 0.0,
56 rParameters[
"first_reference_coordinate"];
57 rParameters[
"second_reference_coordinate"];
58 rParameters[
"third_reference_coordinate"];
60 rParameters[
"variable_name"];
61 rParameters[
"model_part_name"];
76 calculateEquationParameters();
99 double distance = inner_prod(mNormalVector, rNode.Coordinates());
100 const double d = inner_prod(mNormalVector, direction);
101 distance = -(distance - mEqRHS) / d;
102 const double pressure = - PORE_PRESSURE_SIGN_FACTOR * mSpecificWeight * distance;
104 if (pressure < PORE_PRESSURE_SIGN_FACTOR * mPressureTensionCutOff) {
105 rNode.FastGetSolutionStepValue(var) = pressure;
106 if (mIsFixed) rNode.Fix(var);
108 if (mIsFixedProvided) rNode.Free(var);
111 if (mIsFixed) rNode.Fix(var);
112 else if (mIsFixedProvided) rNode.Free(var);
113 rNode.FastGetSolutionStepValue(var) = std::min(pressure, PORE_PRESSURE_SIGN_FACTOR * mPressureTensionCutOff);
121 std::string
Info()
const override
123 return "ApplyConstantPhreaticSurfacePressureProcess";
144 void calculateEquationParameters()
146 const Vector3 v1 = mSecondReferenceCoordinate - mFirstReferenceCoordinate;
147 const Vector3 v2 = mThirdReferenceCoordinate - mFirstReferenceCoordinate;
149 if (
norm_2(mNormalVector) == 0.0)
150 KRATOS_ERROR <<
"Normal vector to phreatic surface has zero size!"
153 mEqRHS =
inner_prod(mNormalVector, mFirstReferenceCoordinate);
Definition: apply_constant_phreatic_surface_pressure_process.hpp:26
std::string mVariableName
Definition: apply_constant_phreatic_surface_pressure_process.hpp:129
Vector3 mThirdReferenceCoordinate
Definition: apply_constant_phreatic_surface_pressure_process.hpp:137
Vector3 mFirstReferenceCoordinate
Definition: apply_constant_phreatic_surface_pressure_process.hpp:135
ApplyConstantPhreaticSurfacePressureProcess(const ApplyConstantPhreaticSurfacePressureProcess &)=delete
KRATOS_CLASS_POINTER_DEFINITION(ApplyConstantPhreaticSurfacePressureProcess)
bool mIsFixedProvided
Definition: apply_constant_phreatic_surface_pressure_process.hpp:131
double mPressureTensionCutOff
Definition: apply_constant_phreatic_surface_pressure_process.hpp:140
void ExecuteInitialize() override
Definition: apply_constant_phreatic_surface_pressure_process.hpp:90
unsigned int mGravityDirection
Definition: apply_constant_phreatic_surface_pressure_process.hpp:133
ModelPart & mrModelPart
Member Variables.
Definition: apply_constant_phreatic_surface_pressure_process.hpp:128
Vector3 mSecondReferenceCoordinate
Definition: apply_constant_phreatic_surface_pressure_process.hpp:136
ApplyConstantPhreaticSurfacePressureProcess & operator=(const ApplyConstantPhreaticSurfacePressureProcess &)=delete
~ApplyConstantPhreaticSurfacePressureProcess() override=default
bool mIsSeepage
Definition: apply_constant_phreatic_surface_pressure_process.hpp:132
Vector3 mNormalVector
Definition: apply_constant_phreatic_surface_pressure_process.hpp:138
double mEqRHS
Definition: apply_constant_phreatic_surface_pressure_process.hpp:139
bool mIsFixed
Definition: apply_constant_phreatic_surface_pressure_process.hpp:130
ApplyConstantPhreaticSurfacePressureProcess(ModelPart &model_part, Parameters rParameters)
Definition: apply_constant_phreatic_surface_pressure_process.hpp:32
double mSpecificWeight
Definition: apply_constant_phreatic_surface_pressure_process.hpp:134
std::string Info() const override
Turn back information as a string.
Definition: apply_constant_phreatic_surface_pressure_process.hpp:121
KratosComponents class encapsulates a lookup table for a family of classes in a generic way.
Definition: kratos_components.h:49
static T CrossProduct(const T &a, const T &b)
Performs the vector product of the two input vectors a,b.
Definition: math_utils.h:762
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
NodesContainerType & Nodes(IndexType ThisIndex=0)
Definition: model_part.h:507
This class defines the node.
Definition: node.h:65
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
double GetDouble() const
This method returns the double contained in the current Parameter.
Definition: kratos_parameters.cpp:657
Vector GetVector() const
This method returns the vector contained in the current Parameter.
Definition: kratos_parameters.cpp:707
int GetInt() const
This method returns the integer contained in the current Parameter.
Definition: kratos_parameters.cpp:666
void ValidateAndAssignDefaults(const Parameters &rDefaultParameters)
This function is designed to verify that the parameters under testing match the form prescribed by th...
Definition: kratos_parameters.cpp:1306
std::string GetString() const
This method returns the string contained in the current Parameter.
Definition: kratos_parameters.cpp:684
bool Has(const std::string &rEntry) const
This method checks if the Parameter contains a certain entry.
Definition: kratos_parameters.cpp:520
bool GetBool() const
This method returns the boolean contained in the current Parameter.
Definition: kratos_parameters.cpp:675
The base class for all processes in Kratos.
Definition: process.h:49
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
#define KRATOS_ERROR
Definition: exception.h:161
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KratosZeroVector< double > ZeroVector
Definition: amatrix_interface.h:561
TExpressionType::data_type norm_2(AMatrix::MatrixExpression< TExpressionType, TCategory > const &TheExpression)
Definition: amatrix_interface.h:625
void block_for_each(TIterator itBegin, TIterator itEnd, TFunction &&rFunction)
Execute a functor on all items of a range in parallel.
Definition: parallel_utilities.h:299
TExpression1Type::data_type inner_prod(AMatrix::MatrixExpression< TExpression1Type, TCategory1 > const &First, AMatrix::MatrixExpression< TExpression2Type, TCategory2 > const &Second)
Definition: amatrix_interface.h:592
model_part
Definition: face_heat.py:14