70 template<
unsigned int TDim,
unsigned int TNumNodes,
class... TWallModel>
88 static constexpr std::size_t VoigtSize = 3 * (TDim-1);
89 static constexpr std::size_t BlockSize = TDim + 1;
90 static constexpr std::size_t LocalSize = TNumNodes*BlockSize;
190 return Kratos::make_intrusive<NavierStokesWallCondition>(NewId, GetGeometry().
Create(ThisNodes), pProperties);
199 Condition::Pointer
Create(
IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties)
const override
201 return Kratos::make_intrusive< NavierStokesWallCondition >(NewId, pGeom, pProperties);
212 Condition::Pointer pNewCondition =
Create(NewId, GetGeometry().
Create( rThisNodes ), pGetProperties() );
214 pNewCondition->SetData(this->GetData());
215 pNewCondition->SetFlags(this->GetFlags());
217 return pNewCondition;
228 void CalculateLocalSystem(
MatrixType& rLeftHandSideMatrix,
239 void CalculateLeftHandSide(
MatrixType& rLeftHandSideMatrix,
249 void CalculateRightHandSide(
VectorType& rRightHandSideVector,
258 int Check(
const ProcessInfo& rCurrentProcessInfo)
const override;
266 void EquationIdVector(
267 EquationIdVectorType& rResult,
268 const ProcessInfo& rCurrentProcessInfo)
const override;
277 DofsVectorType& rConditionDofList,
278 const ProcessInfo& rCurrentProcessInfo)
const override;
300 std::string
Info()
const override
302 std::stringstream buffer;
303 buffer <<
"NavierStokesWallCondition" << TDim <<
"D";
310 rOStream <<
"NavierStokesWallCondition";
314 void PrintData(std::ostream& rOStream)
const override {}
359 void ComputeGaussPointLHSContribution(
361 const ConditionDataStruct& rData,
373 void ComputeGaussPointRHSContribution(
375 const ConditionDataStruct& rData,
386 void ComputeRHSNeumannContribution(
388 const ConditionDataStruct&
data);
399 void ComputeRHSOutletInflowContribution(
401 const ConditionDataStruct& rData,
437 void save(
Serializer& rSerializer)
const override
464 void CalculateGaussPointSlipTangentialCorrectionLHSContribution(
465 BoundedMatrix<double,LocalSize,LocalSize>& rLeftHandSideMatrix,
466 const ConditionDataStruct& rDataStruct);
476 void CalculateGaussPointSlipTangentialCorrectionRHSContribution(
477 array_1d<double,LocalSize>& rRightHandSideVector,
478 const ConditionDataStruct& rDataStruct);
488 void ProjectViscousStress(
489 const Vector& rViscousStress,
490 const array_1d<double,3> rNormal,
491 array_1d<double,3>& rProjectedViscousStress);
499 void SetTangentialProjectionMatrix(
500 const array_1d<double,3>& rUnitNormal,
501 BoundedMatrix<double,TDim,TDim>& rTangProjMat)
504 for (std::size_t
d1 = 0;
d1 < TDim; ++
d1) {
505 for (std::size_t d2 = 0; d2 < TDim; ++d2) {
506 rTangProjMat(
d1,d2) -= rUnitNormal[
d1]*rUnitNormal[d2];
511 template<
typename TWallModelType>
512 int WallModelCheckCall(
const ProcessInfo& rProcessInfo)
const
514 return TWallModelType::Check(
this, rProcessInfo);
517 template<
typename TWallModelType>
518 void AddWallModelRightHandSideCall(
522 TWallModelType::AddWallModelRightHandSide(rRHS,
this, rProcessInfo);
525 template<
typename TWallModelType>
526 void AddWallModelLeftHandSideCall(
530 TWallModelType::AddWallModelLeftHandSide(rLHS,
this, rProcessInfo);
533 template<
typename TWallModelType>
534 void AddWallModelLocalSystemCall(
539 TWallModelType::AddWallModelLocalSystem(rLHS, rRHS,
this, rProcessInfo);
574 template<
unsigned int TDim,
unsigned int TNumNodes,
class TWallModel >
581 template<
unsigned int TDim,
unsigned int TNumNodes,
class TWallModel >
585 rOStream << std::endl;
Base class for all Conditions.
Definition: condition.h:59
std::size_t SizeType
Definition: condition.h:94
Condition & operator=(Condition const &rOther)
Assignment operator.
Definition: condition.h:181
std::size_t IndexType
Definition: flags.h:74
Geometry base class.
Definition: geometry.h:71
Implements a wall condition for the Navier-Stokes (and Stokes) monolithic formulations This condition...
Definition: navier_stokes_wall_condition.h:72
Vector VectorType
Definition: navier_stokes_wall_condition.h:102
~NavierStokesWallCondition() override
Destructor.
Definition: navier_stokes_wall_condition.h:164
Condition::Pointer Clone(IndexType NewId, NodesArrayType const &rThisNodes) const override
Definition: navier_stokes_wall_condition.h:210
NavierStokesWallCondition(IndexType NewId=0)
Default constructor.
Definition: navier_stokes_wall_condition.h:122
std::size_t IndexType
Definition: navier_stokes_wall_condition.h:106
Matrix MatrixType
Definition: navier_stokes_wall_condition.h:104
std::string Info() const override
Turn back information as a string.
Definition: navier_stokes_wall_condition.h:300
Condition::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const override
Create a new NavierStokesWallCondition object.
Definition: navier_stokes_wall_condition.h:199
NavierStokesWallCondition & operator=(NavierStokesWallCondition const &rOther)
Assignment operator.
Definition: navier_stokes_wall_condition.h:172
NavierStokesWallCondition(IndexType NewId, GeometryType::Pointer pGeometry)
Constructor using Geometry.
Definition: navier_stokes_wall_condition.h:141
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(NavierStokesWallCondition)
Pointer definition of NavierStokesWallCondition.
std::vector< std::size_t > EquationIdVectorType
Definition: navier_stokes_wall_condition.h:108
Node NodeType
Definition: navier_stokes_wall_condition.h:94
Properties PropertiesType
Definition: navier_stokes_wall_condition.h:96
NavierStokesWallCondition(NavierStokesWallCondition const &rOther)
Copy constructor.
Definition: navier_stokes_wall_condition.h:158
Geometry< NodeType >::PointsArrayType NodesArrayType
Definition: navier_stokes_wall_condition.h:100
std::vector< Dof< double >::Pointer > DofsVectorType
Definition: navier_stokes_wall_condition.h:110
NavierStokesWallCondition(IndexType NewId, const NodesArrayType &ThisNodes)
Constructor using an array of nodes.
Definition: navier_stokes_wall_condition.h:131
Geometry< NodeType > GeometryType
Definition: navier_stokes_wall_condition.h:98
NavierStokesWallCondition(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
Constructor using Properties.
Definition: navier_stokes_wall_condition.h:152
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: navier_stokes_wall_condition.h:314
Condition::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const override
Create a new NavierStokesWallCondition object.
Definition: navier_stokes_wall_condition.h:188
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: navier_stokes_wall_condition.h:308
This class defines the node.
Definition: node.h:65
PointerVector is a container like stl vector but using a vector to store pointers to its data.
Definition: pointer_vector.h:72
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
TDataType Calculate(GeometryType &dummy, const Variable< TDataType > &rVariable)
Definition: add_geometries_to_python.cpp:103
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
AMatrix::IdentityMatrix< double > IdentityMatrix
Definition: amatrix_interface.h:564
Internals::Matrix< double, AMatrix::dynamic, 1 > Vector
Definition: amatrix_interface.h:472
array_1d< double, 3 > VectorType
Definition: solid_mechanics_application_variables.cpp:19
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
ProcessInfo
Definition: edgebased_PureConvection.py:116
data
Definition: mesh_to_mdpa_converter.py:59
def load(f)
Definition: ode_solve.py:307
subroutine d1(DSTRAN, D, dtime, NDI, NSHR, NTENS)
Definition: TensorModule.f:594
Definition: navier_stokes_wall_condition.h:81
array_1d< double, TNumNodes > N
Definition: navier_stokes_wall_condition.h:84
Vector ViscousStress
Definition: navier_stokes_wall_condition.h:85
double wGauss
Definition: navier_stokes_wall_condition.h:82
array_1d< double, 3 > Normal
Definition: navier_stokes_wall_condition.h:83