13 #ifndef KRATOS_EMBEDDED_AUSAS_NAVIER_STOKES_WALL_CONDITION_H
14 #define KRATOS_EMBEDDED_AUSAS_NAVIER_STOKES_WALL_CONDITION_H
69 template <
unsigned int TDim,
unsigned int TNumNodes = TDim>
135 unsigned int n_pos = 0;
136 unsigned int n_neg = 0;
172 Condition(NewId,pGeometry,pProperties) {}
203 return Kratos::make_intrusive<EmbeddedAusasNavierStokesWallCondition>(NewId, GetGeometry().
Create(ThisNodes), pProperties);
212 Condition::Pointer
Create(
IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties)
const override {
213 return Kratos::make_intrusive< EmbeddedAusasNavierStokesWallCondition >(NewId, pGeom, pProperties);
223 Condition::Pointer pNewCondition =
Create(NewId, GetGeometry().
Create( rThisNodes ), pGetProperties() );
225 pNewCondition->SetData(this->GetData());
226 pNewCondition->SetFlags(this->GetFlags());
228 return pNewCondition;
243 unsigned int n_pos = 0, n_neg = 0;
244 for (
unsigned int i_node = 0; i_node < TNumNodes; ++i_node) {
245 const double aux_dist = r_geometry[i_node].FastGetSolutionStepValue(DISTANCE);
254 if (n_pos != 0 && n_neg != 0){
258 for (
unsigned int i_node = 0; i_node < TNumNodes; ++i_node) {
260 for (
unsigned int j = 0;
j < r_node_element_candidates.
size();
j++) {
261 element_candidates.
push_back(r_node_element_candidates(
j));
267 "Condition " << this->Id() <<
" has no candidate parent elements.\n" <<
268 "Check that the FindNodalNeighboursProcess has been executed.";
271 std::vector<unsigned int> node_ids(TNumNodes), element_nodes_ids;
273 for (
unsigned int i_node = 0; i_node < TNumNodes; ++i_node) {
274 node_ids[i_node] = r_geometry[i_node].
Id();
276 std::sort(node_ids.begin(), node_ids.end());
279 for (
unsigned int i_candidate = 0; i_candidate < element_candidates.
size(); ++i_candidate) {
280 GeometryType &r_elem_geom = element_candidates[i_candidate].GetGeometry();
281 const unsigned int n_elem_nodes = r_elem_geom.
PointsNumber();
284 element_nodes_ids.resize(n_elem_nodes);
285 for (
unsigned int j = 0;
j < n_elem_nodes; ++
j) {
286 element_nodes_ids[
j] = r_elem_geom[
j].
Id();
288 std::sort(element_nodes_ids.begin(), element_nodes_ids.end());
291 if (std::includes(element_nodes_ids.begin(), element_nodes_ids.end(), node_ids.begin(), node_ids.end())) {
293 mpParentElement = element_candidates(i_candidate);
296 mParentElementIds.resize(TNumNodes);
298 std::vector<unsigned int > aux_elem_ids(n_elem_nodes);
299 for (
unsigned int j = 0;
j < n_elem_nodes; ++
j) {
300 aux_elem_ids[
j] = r_elem_geom[
j].
Id();
303 for (
unsigned int i = 0;
i < TNumNodes; ++
i) {
304 const unsigned int aux_id = r_geometry[
i].
Id();
305 const std::vector<unsigned int >::iterator aux_it = std::find(aux_elem_ids.begin(), aux_elem_ids.end(), aux_id);
306 mParentElementIds[
i] = std::distance(aux_elem_ids.begin(), aux_it);
314 KRATOS_ERROR <<
"Condition " << this->Id() <<
" cannot find parent element.";
317 KRATOS_CATCH(
"Error in EmbeddedAusasNavierStokesWallCondition InitializeSolutionStep() method.");
333 constexpr
unsigned int MatrixSize = TNumNodes*(TDim+1);
335 if (rLeftHandSideMatrix.size1() != MatrixSize)
336 rLeftHandSideMatrix.
resize(MatrixSize, MatrixSize,
false);
338 if (rRightHandSideVector.size() != MatrixSize)
339 rRightHandSideVector.
resize(MatrixSize,
false);
343 this->FillConditionData(
data);
355 const ProcessInfo& rProcessInfo = rCurrentProcessInfo;
356 data.OutletInflowPreventionSwitch = rProcessInfo.
Has(OUTLET_INFLOW_CONTRIBUTION_SWITCH) ? rProcessInfo[OUTLET_INFLOW_CONTRIBUTION_SWITCH] :
false;
357 if (
data.OutletInflowPreventionSwitch) {
358 data.charVel = rProcessInfo[CHARACTERISTIC_VELOCITY];
362 if (
data.n_pos != 0 &&
data.n_neg != 0){
365 const unsigned int n_gauss_pos = (
data.w_gauss_pos_face).size();
366 for (
unsigned int i_gauss = 0; i_gauss < n_gauss_pos; ++i_gauss) {
369 for (
unsigned int i = 0;
i < TNumNodes; ++
i) {
370 data.N(
i) = aux_N(mParentElementIds[
i]);
372 data.wGauss =
data.w_gauss_pos_face(i_gauss);
373 data.Normal =
data.pos_face_area_normals[i_gauss];
376 ComputeGaussPointRHSContribution(rhs_gauss,
data);
377 ComputeGaussPointLHSContribution(lhs_gauss,
data);
379 noalias(rLeftHandSideMatrix) += lhs_gauss;
380 noalias(rRightHandSideVector) += rhs_gauss;
384 const unsigned int n_gauss_neg = (
data.w_gauss_neg_face).size();
385 for (
unsigned int i_gauss = 0; i_gauss < n_gauss_neg; ++i_gauss) {
388 for (
unsigned int i = 0;
i < TNumNodes; ++
i) {
389 data.N(
i) = aux_N(mParentElementIds[
i]);
391 data.wGauss =
data.w_gauss_neg_face(i_gauss);
392 data.Normal =
data.neg_face_area_normals[i_gauss];
395 ComputeGaussPointRHSContribution(rhs_gauss,
data);
396 ComputeGaussPointLHSContribution(lhs_gauss,
data);
398 noalias(rLeftHandSideMatrix) += lhs_gauss;
399 noalias(rRightHandSideVector) += rhs_gauss;
402 const unsigned int n_gauss = (
data.w_gauss_container).size();
403 for (
unsigned int i_gauss = 0; i_gauss < n_gauss; ++i_gauss) {
406 data.wGauss =
data.w_gauss_container(i_gauss);
407 data.Normal =
data.area_normals_container[i_gauss];
410 ComputeGaussPointRHSContribution(rhs_gauss,
data);
411 ComputeGaussPointLHSContribution(lhs_gauss,
data);
413 noalias(rLeftHandSideMatrix) += lhs_gauss;
414 noalias(rRightHandSideVector) += rhs_gauss;
432 constexpr
unsigned int MatrixSize = TNumNodes*(TDim+1);
434 if (rLeftHandSideMatrix.size1() != MatrixSize)
435 rLeftHandSideMatrix.
resize(MatrixSize, MatrixSize,
false);
439 this->FillConditionData(
data);
448 if (
data.n_pos != 0 &&
data.n_neg != 0){
451 const unsigned int n_gauss_pos = (
data.w_gauss_pos_face).size();
452 for (
unsigned int i_gauss = 0; i_gauss < n_gauss_pos; ++i_gauss) {
455 for (
unsigned int i = 0;
i < TNumNodes; ++
i) {
456 data.N(
i) = aux_N(mParentElementIds[
i]);
458 data.wGauss =
data.w_gauss_pos_face(i_gauss);
459 data.Normal =
data.pos_face_area_normals[i_gauss];
462 ComputeGaussPointLHSContribution(lhs_gauss,
data);
464 noalias(rLeftHandSideMatrix) += lhs_gauss;
468 const unsigned int n_gauss_neg = (
data.w_gauss_neg_face).size();
469 for (
unsigned int i_gauss = 0; i_gauss < n_gauss_neg; ++i_gauss) {
472 for (
unsigned int i = 0;
i < TNumNodes; ++
i) {
473 data.N(
i) = aux_N(mParentElementIds[
i]);
475 data.wGauss =
data.w_gauss_neg_face(i_gauss);
476 data.Normal =
data.neg_face_area_normals[i_gauss];
479 ComputeGaussPointLHSContribution(lhs_gauss,
data);
481 noalias(rLeftHandSideMatrix) += lhs_gauss;
484 const unsigned int n_gauss = (
data.w_gauss_container).size();
485 for (
unsigned int i_gauss = 0; i_gauss < n_gauss; ++i_gauss) {
488 data.wGauss =
data.w_gauss_container(i_gauss);
489 data.Normal =
data.area_normals_container[i_gauss];
492 ComputeGaussPointLHSContribution(lhs_gauss,
data);
494 noalias(rLeftHandSideMatrix) += lhs_gauss;
512 constexpr
unsigned int MatrixSize = TNumNodes*(TDim+1);
514 if (rRightHandSideVector.size() != MatrixSize)
515 rRightHandSideVector.
resize(MatrixSize,
false);
519 this->FillConditionData(
data);
529 const ProcessInfo& rProcessInfo = rCurrentProcessInfo;
530 data.OutletInflowPreventionSwitch = rProcessInfo.
Has(OUTLET_INFLOW_CONTRIBUTION_SWITCH) ? rProcessInfo[OUTLET_INFLOW_CONTRIBUTION_SWITCH] :
false;
531 if (
data.OutletInflowPreventionSwitch) {
532 data.charVel = rProcessInfo[CHARACTERISTIC_VELOCITY];
536 if (
data.n_pos != 0 &&
data.n_neg != 0){
539 const unsigned int n_gauss_pos = (
data.w_gauss_pos_face).size();
540 for (
unsigned int i_gauss = 0; i_gauss < n_gauss_pos; ++i_gauss) {
543 for (
unsigned int i = 0;
i < TNumNodes; ++
i) {
544 data.N(
i) = aux_N(mParentElementIds[
i]);
546 data.wGauss =
data.w_gauss_pos_face(i_gauss);
547 data.Normal =
data.pos_face_area_normals[i_gauss];
550 ComputeGaussPointRHSContribution(rhs_gauss,
data);
552 noalias(rRightHandSideVector) += rhs_gauss;
556 const unsigned int n_gauss_neg = (
data.w_gauss_neg_face).size();
557 for (
unsigned int i_gauss = 0; i_gauss < n_gauss_neg; ++i_gauss) {
560 for (
unsigned int i = 0;
i < TNumNodes; ++
i) {
561 data.N(
i) = aux_N(mParentElementIds[
i]);
563 data.wGauss =
data.w_gauss_neg_face(i_gauss);
564 data.Normal =
data.neg_face_area_normals[i_gauss];
567 ComputeGaussPointRHSContribution(rhs_gauss,
data);
569 noalias(rRightHandSideVector) += rhs_gauss;
572 const unsigned int n_gauss = (
data.w_gauss_container).size();
573 for (
unsigned int i_gauss = 0; i_gauss < n_gauss; ++i_gauss) {
576 data.wGauss =
data.w_gauss_container(i_gauss);
577 data.Normal =
data.area_normals_container[i_gauss];
580 ComputeGaussPointRHSContribution(rhs_gauss,
data);
582 noalias(rRightHandSideVector) += rhs_gauss;
607 for(
unsigned int i = 0;
i < rGeom.
size(); ++
i) {
608 if(rGeom[
i].SolutionStepsDataHas(VELOCITY) ==
false)
609 KRATOS_ERROR <<
"Missing VELOCITY variable on solution step data for node " << rGeom[
i].
Id();
610 if(rGeom[
i].SolutionStepsDataHas(PRESSURE) ==
false)
611 KRATOS_ERROR <<
"Missing PRESSURE variable on solution step data for node " << rGeom[
i].
Id();
612 if(rGeom[
i].SolutionStepsDataHas(MESH_VELOCITY) ==
false)
613 KRATOS_ERROR <<
"Missing MESH_VELOCITY variable on solution step data for node " << rGeom[
i].
Id();
614 if(rGeom[
i].SolutionStepsDataHas(ACCELERATION) ==
false)
615 KRATOS_ERROR <<
"Missing ACCELERATION variable on solution step data for node " << rGeom[
i].
Id();
616 if(rGeom[
i].SolutionStepsDataHas(EXTERNAL_PRESSURE) ==
false)
617 KRATOS_ERROR <<
"Missing EXTERNAL_PRESSURE variable on solution step data for node " << rGeom[
i].
Id();
618 if(rGeom[
i].SolutionStepsDataHas(DISTANCE) ==
false)
619 KRATOS_ERROR <<
"Missing DISTANCE variable on solution step data for node " << rGeom[
i].
Id();
620 if(rGeom[
i].HasDofFor(VELOCITY_X) ==
false || rGeom[
i].HasDofFor(VELOCITY_Y) ==
false || rGeom[
i].HasDofFor(VELOCITY_Z) ==
false)
621 KRATOS_ERROR <<
"Missing VELOCITY component degree of freedom on node " << rGeom[
i].
Id();
622 if(rGeom[
i].HasDofFor(PRESSURE) ==
false)
623 KRATOS_ERROR <<
"Missing PRESSURE component degree of freedom on node " << rGeom[
i].
Id();
661 std::string
Info()
const override {
662 std::stringstream buffer;
663 buffer <<
"EmbeddedAusasNavierStokesWallCondition" << TDim <<
"D";
669 rOStream <<
Info() <<
"\nCondition id: " << Id();
673 void PrintData(std::ostream& rOStream)
const override {}
698 return mpParentElement->shared_from_this();
702 return mParentElementIds;
705 void ComputeGaussPointLHSContribution(
BoundedMatrix<
double,TNumNodes*(TDim+1),TNumNodes*(TDim+1)>&
lhs,
const ConditionDataStruct&
data);
706 void ComputeGaussPointRHSContribution(
array_1d<
double,TNumNodes*(TDim+1)>&
rhs,
const ConditionDataStruct&
data);
708 void ComputeRHSNeumannContribution(
array_1d<
double,TNumNodes*(TDim+1)>&
rhs,
const ConditionDataStruct&
data);
709 void ComputeRHSOutletInflowContribution(
array_1d<
double,TNumNodes*(TDim+1)>&
rhs,
const ConditionDataStruct& rData);
717 for (
unsigned int i_node = 0; i_node < TNumNodes; ++i_node) {
718 const double aux_dist = r_geometry[i_node].FastGetSolutionStepValue(DISTANCE);
730 Element::Pointer p_parent_element = this->pGetElement();
732 const Vector &distances = p_parent_element->GetValue(ELEMENTAL_DISTANCES);
733 const unsigned int n_parent_nodes = p_parent_geometry->PointsNumber();
736 ModifiedShapeFunctions::Pointer p_ausas_modified_sh_func =
nullptr;
737 if (n_parent_nodes == 4) {
738 p_ausas_modified_sh_func = Kratos::make_shared<Tetrahedra3D4AusasModifiedShapeFunctions>(p_parent_geometry, distances);
740 else if (n_parent_nodes == 3) {
741 p_ausas_modified_sh_func = Kratos::make_shared<Triangle2D3AusasModifiedShapeFunctions>(p_parent_geometry, distances);
743 KRATOS_ERROR <<
"Asking for a non-implemented geometry modified shape functions utility.";
747 std::vector<unsigned int> cond_ids(TNumNodes);
748 for (
unsigned int i_node = 0; i_node < TNumNodes; ++i_node) {
749 cond_ids[i_node] = r_geometry[i_node].
Id();
751 std::sort(cond_ids.begin(), cond_ids.end());
755 p_parent_geometry->NodesInFaces(elem_face_loc_ids);
756 p_parent_geometry->NumberNodesInFaces(elem_nodes_in_face);
757 const unsigned int n_elem_faces = elem_face_loc_ids.size2();
760 unsigned int face_id = n_elem_faces + 1;
761 for (
unsigned int i_face = 0; i_face < n_elem_faces; ++i_face) {
762 const unsigned int n_face_nodes = elem_nodes_in_face(i_face);
767 std::vector<unsigned int> face_loc_ids(n_face_nodes);
768 for (
unsigned int i_node = 0; i_node < n_face_nodes; ++i_node) {
769 face_loc_ids[i_node] = elem_face_loc_ids(i_node + 1, i_face);
773 std::vector<unsigned int> face_glob_ids(n_face_nodes);
774 for (
unsigned int i_node = 0; i_node < n_face_nodes; ++i_node) {
775 const int aux_loc_id = face_loc_ids[i_node];
776 face_glob_ids[i_node] = (*p_parent_geometry)[aux_loc_id].Id();
778 std::sort(face_glob_ids.begin(), face_glob_ids.end());
781 if (std::includes(face_glob_ids.begin(), face_glob_ids.end(), cond_ids.begin(), cond_ids.end())) {
788 "No parent element face found for condition " << this->Id() <<
" and parent element " << p_parent_element->Id();
791 p_ausas_modified_sh_func->ComputePositiveExteriorFaceShapeFunctionsAndGradientsValues(
798 p_ausas_modified_sh_func->ComputeNegativeExteriorFaceShapeFunctionsAndGradientsValues(
805 p_ausas_modified_sh_func->ComputePositiveExteriorFaceAreaNormals(
810 p_ausas_modified_sh_func->ComputeNegativeExteriorFaceAreaNormals(
818 const unsigned int n_gauss = integration_points.size();
824 Vector gauss_pts_J_det(n_gauss);
827 for (
unsigned int i_gauss = 0; i_gauss < n_gauss; ++i_gauss) {
828 rData.
w_gauss_container(i_gauss) = integration_points[i_gauss].Weight() * gauss_pts_J_det(i_gauss);
834 for (
unsigned int i_gauss = 0; i_gauss < n_gauss; ++i_gauss) {
841 for (
unsigned int i = 0;
i < TNumNodes;
i++) {
844 for (
unsigned int k = 0;
k < TDim;
k++) {
876 ElementWeakPointerType mpParentElement;
877 std::vector<unsigned int> mParentElementIds;
885 void save(
Serializer& rSerializer)
const override
937 template<
unsigned int TDim,
unsigned int TNumNodes >
944 template<
unsigned int TDim,
unsigned int TNumNodes >
948 rOStream << std::endl;
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
Base class for all Conditions.
Definition: condition.h:59
std::vector< std::size_t > EquationIdVectorType
Definition: condition.h:98
std::vector< DofType::Pointer > DofsVectorType
Definition: condition.h:100
virtual int Check(const ProcessInfo &rCurrentProcessInfo) const
Definition: condition.h:854
Condition & operator=(Condition const &rOther)
Assignment operator.
Definition: condition.h:181
bool Has(const Variable< TDataType > &rThisVariable) const
Checks if the data container has a value associated with a given variable.
Definition: data_value_container.h:382
Implements a wall condition for the Navier-Stokes monolithic formulation.
Definition: embedded_ausas_navier_stokes_wall_condition.h:71
Vector VectorType
Definition: embedded_ausas_navier_stokes_wall_condition.h:92
std::vector< Dof< double >::Pointer > DofsVectorType
Definition: embedded_ausas_navier_stokes_wall_condition.h:100
Geometry< NodeType > GeometryType
Definition: embedded_ausas_navier_stokes_wall_condition.h:80
void GetDofList(DofsVectorType &ConditionDofList, const ProcessInfo &CurrentProcessInfo) const override
Returns a list of the element's Dofs.
void CalculateLeftHandSide(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo) override
Calculates the RHS condition contributions.
Definition: embedded_ausas_navier_stokes_wall_condition.h:427
Element::WeakPointer ElementWeakPointerType
Definition: embedded_ausas_navier_stokes_wall_condition.h:90
EmbeddedAusasNavierStokesWallCondition(IndexType NewId, const NodesArrayType &ThisNodes)
Constructor using an array of nodes.
Definition: embedded_ausas_navier_stokes_wall_condition.h:154
void InitializeSolutionStep(const ProcessInfo &rCurrentProcessInfo) override
Definition: embedded_ausas_navier_stokes_wall_condition.h:236
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: embedded_ausas_navier_stokes_wall_condition.h:668
int Check(const ProcessInfo &rCurrentProcessInfo) const override
Condition check.
Definition: embedded_ausas_navier_stokes_wall_condition.h:594
GeometryType::Pointer GeometryPointerType
Definition: embedded_ausas_navier_stokes_wall_condition.h:82
void EquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const override
Provides the global indices for each one of this element's local rows.
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(EmbeddedAusasNavierStokesWallCondition)
Pointer definition of EmbeddedAusasNavierStokesWallCondition.
EmbeddedAusasNavierStokesWallCondition(EmbeddedAusasNavierStokesWallCondition const &rOther)
Copy constructor.
Definition: embedded_ausas_navier_stokes_wall_condition.h:175
std::string Info() const override
Turn back information as a string.
Definition: embedded_ausas_navier_stokes_wall_condition.h:661
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: embedded_ausas_navier_stokes_wall_condition.h:673
Matrix MatrixType
Definition: embedded_ausas_navier_stokes_wall_condition.h:94
~EmbeddedAusasNavierStokesWallCondition() override
Destructor.
Definition: embedded_ausas_navier_stokes_wall_condition.h:179
Node NodeType
Definition: embedded_ausas_navier_stokes_wall_condition.h:76
Element::Pointer pGetElement()
Definition: embedded_ausas_navier_stokes_wall_condition.h:697
EmbeddedAusasNavierStokesWallCondition(IndexType NewId=0)
Default constructor.
Definition: embedded_ausas_navier_stokes_wall_condition.h:147
GeometryType::CoordinatesArrayType CoordinatesArrayType
Definition: embedded_ausas_navier_stokes_wall_condition.h:86
Condition::Pointer Clone(IndexType NewId, NodesArrayType const &rThisNodes) const override
Definition: embedded_ausas_navier_stokes_wall_condition.h:222
GeometryType::PointsArrayType NodesArrayType
Definition: embedded_ausas_navier_stokes_wall_condition.h:84
EmbeddedAusasNavierStokesWallCondition & operator=(EmbeddedAusasNavierStokesWallCondition const &rOther)
Assignment operator.
Definition: embedded_ausas_navier_stokes_wall_condition.h:187
Condition::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const override
Create a new EmbeddedAusasNavierStokesWallCondition object.
Definition: embedded_ausas_navier_stokes_wall_condition.h:202
void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Calculates the RHS condition contributions.
Definition: embedded_ausas_navier_stokes_wall_condition.h:507
void FillConditionData(ConditionDataStruct &rData)
Definition: embedded_ausas_navier_stokes_wall_condition.h:712
Condition::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const override
Create a new EmbeddedAusasNavierStokesWallCondition object.
Definition: embedded_ausas_navier_stokes_wall_condition.h:212
void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Calculates the LHS and RHS condition contributions.
Definition: embedded_ausas_navier_stokes_wall_condition.h:327
std::size_t IndexType
Definition: embedded_ausas_navier_stokes_wall_condition.h:96
std::vector< std::size_t > EquationIdVectorType
Definition: embedded_ausas_navier_stokes_wall_condition.h:98
EmbeddedAusasNavierStokesWallCondition(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
Constructor using Properties.
Definition: embedded_ausas_navier_stokes_wall_condition.h:171
EmbeddedAusasNavierStokesWallCondition(IndexType NewId, GeometryType::Pointer pGeometry)
Constructor using Geometry.
Definition: embedded_ausas_navier_stokes_wall_condition.h:162
GeometryType::ShapeFunctionsGradientsType ShapeFunctionsGradientsType
Definition: embedded_ausas_navier_stokes_wall_condition.h:88
std::vector< unsigned int > GetParentElementIds()
Definition: embedded_ausas_navier_stokes_wall_condition.h:701
Properties PropertiesType
Definition: embedded_ausas_navier_stokes_wall_condition.h:78
std::size_t IndexType
Definition: flags.h:74
Geometry base class.
Definition: geometry.h:71
SizeType PointsNumber() const
Definition: geometry.h:528
SizeType size() const
Definition: geometry.h:518
std::vector< IntegrationPointType > IntegrationPointsArrayType
Definition: geometry.h:161
virtual array_1d< double, 3 > Normal(const CoordinatesArrayType &rPointLocalCoordinates) const
It returns a vector that is normal to its corresponding geometry in the given local point.
Definition: geometry.h:1543
const Matrix & ShapeFunctionsValues() const
Definition: geometry.h:3393
IndexType const & Id() const
Id of this Geometry.
Definition: geometry.h:964
Vector & DeterminantOfJacobian(Vector &rResult) const
Definition: geometry.h:3154
TVariableType::Type & GetValue(const TVariableType &rThisVariable)
Definition: geometry.h:627
const IntegrationPointsArrayType & IntegrationPoints() const
Definition: geometry.h:2284
void push_back(TPointerType x)
Definition: global_pointers_vector.h:322
size_type size() const
Definition: global_pointers_vector.h:307
Definition: amatrix_interface.h:41
void resize(std::size_t NewSize1, std::size_t NewSize2, bool preserve=0)
Definition: amatrix_interface.h:224
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
Short class definition.
Definition: array_1d.h:61
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
#define KRATOS_ERROR
Definition: exception.h:161
#define KRATOS_ERROR_IF(conditional)
Definition: exception.h:162
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
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
KratosZeroMatrix< double > ZeroMatrix
Definition: amatrix_interface.h:559
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
AMatrix::MatrixRow< const TExpressionType > row(AMatrix::MatrixExpression< TExpressionType, TCategory > const &TheExpression, std::size_t RowIndex)
Definition: amatrix_interface.h:649
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
rhs
Definition: generate_frictional_mortar_condition.py:297
lhs
Definition: generate_frictional_mortar_condition.py:297
data
Definition: mesh_to_mdpa_converter.py:59
def load(f)
Definition: ode_solve.py:307
vel
Definition: pure_conduction.py:76
int k
Definition: quadrature.py:595
int j
Definition: quadrature.py:648
integer i
Definition: TensorModule.f:17
e
Definition: run_cpp_mpi_tests.py:31
Definition: embedded_ausas_navier_stokes_wall_condition.h:106
unsigned int n_neg
Definition: embedded_ausas_navier_stokes_wall_condition.h:136
VectorType w_gauss_pos_face
Definition: embedded_ausas_navier_stokes_wall_condition.h:126
unsigned int n_pos
Definition: embedded_ausas_navier_stokes_wall_condition.h:135
ShapeFunctionsGradientsType DN_DX_pos_face
Definition: embedded_ausas_navier_stokes_wall_condition.h:125
ShapeFunctionsGradientsType DN_DX_neg_face
Definition: embedded_ausas_navier_stokes_wall_condition.h:131
std::vector< VectorType > area_normals_container
Definition: embedded_ausas_navier_stokes_wall_condition.h:120
MatrixType N_neg_face
Definition: embedded_ausas_navier_stokes_wall_condition.h:130
VectorType w_gauss_neg_face
Definition: embedded_ausas_navier_stokes_wall_condition.h:132
bool OutletInflowPreventionSwitch
Definition: embedded_ausas_navier_stokes_wall_condition.h:107
MatrixType N_container
Definition: embedded_ausas_navier_stokes_wall_condition.h:118
std::vector< array_1d< double, 3 > > pos_face_area_normals
Definition: embedded_ausas_navier_stokes_wall_condition.h:127
MatrixType N_pos_face
Definition: embedded_ausas_navier_stokes_wall_condition.h:124
double delta
Definition: embedded_ausas_navier_stokes_wall_condition.h:109
double charVel
Definition: embedded_ausas_navier_stokes_wall_condition.h:108
BoundedMatrix< double, TNumNodes, TDim > v
Definition: embedded_ausas_navier_stokes_wall_condition.h:115
array_1d< double, 3 > Normal
Definition: embedded_ausas_navier_stokes_wall_condition.h:113
double wGauss
Definition: embedded_ausas_navier_stokes_wall_condition.h:112
std::vector< array_1d< double, 3 > > neg_face_area_normals
Definition: embedded_ausas_navier_stokes_wall_condition.h:133
array_1d< double, TNumNodes > N
Definition: embedded_ausas_navier_stokes_wall_condition.h:114
VectorType w_gauss_container
Definition: embedded_ausas_navier_stokes_wall_condition.h:119