13 #if !defined(KRATOS_TRANSONIC_PERTURBATION_POTENTIAL_FLOW_ELEMENT_H)
14 #define KRATOS_TRANSONIC_PERTURBATION_POTENTIAL_FLOW_ELEMENT_H
45 template <
int TDim,
int TNumNodes>
89 GeometryType::Pointer pGeometry)
98 GeometryType::Pointer pGeometry,
99 PropertiesType::Pointer pProperties)
100 :
Element(NewId, pGeometry, pProperties)
137 PropertiesType::Pointer pProperties)
const override;
140 GeometryType::Pointer pGeom,
141 PropertiesType::Pointer pProperties)
const override;
159 const ProcessInfo& CurrentProcessInfo)
const override;
162 const ProcessInfo& rCurrentProcessInfo)
const override;
169 std::vector<double>& rValues,
173 std::vector<int>& rValues,
191 std::string
Info()
const override;
194 void PrintInfo(std::ostream& rOStream)
const override;
197 void PrintData(std::ostream& rOStream)
const override;
218 const double densityDerivativeWRTVelocity,
219 const double densityDerivativeWRTUpwindVelocity,
230 const double rDensity,
253 void GetWakeDistances(
array_1d<
double,
254 TNumNodes>& distances)
const;
266 void GetDofListNormalElement(
DofsVectorType& rElementalDofList)
const;
268 void GetDofListKuttaElement(
DofsVectorType& rElementalDofList)
const;
270 void GetDofListWakeElement(
DofsVectorType& rElementalDofList)
const;
272 void CalculateLeftHandSideSubsonicElement(
MatrixType& rLeftHandSideMatrix,
287 void CalculateLeftHandSideSubdividedElement(
Matrix& lhs_positive,
290 void CalculateVolumesSubdividedElement(
double& rUpper_vol,
294 void ComputeLHSGaussPointContribution(
const double weight,
298 void AssignLeftHandSideSubdividedElement(
299 Matrix& rLeftHandSideMatrix,
307 void AssignLeftHandSideWakeElement(
MatrixType& rLeftHandSideMatrix,
313 void AssignLeftHandSideWakeNode(
MatrixType& rLeftHandSideMatrix,
318 unsigned int row)
const;
320 void AssignRightHandSideWakeNode(
VectorType& rRightHandSideVector,
325 unsigned int& rRow)
const;
335 void SelectUpwindElement(std::vector<IndexType>& rUpwindElementNodesIds,
338 int GetAdditionalUpwindNodeIndex()
const;
350 void save(
Serializer& rSerializer)
const override;
Base class for all Elements.
Definition: element.h:60
std::vector< DofType::Pointer > DofsVectorType
Definition: element.h:100
std::vector< std::size_t > EquationIdVectorType
Definition: element.h:98
std::size_t IndexType
Definition: flags.h:74
Geometry base class.
Definition: geometry.h:71
This class is a wrapper for a pointer to a data that is located in a different rank.
Definition: global_pointer.h:44
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
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
Definition: transonic_perturbation_potential_flow_element.h:47
int Check(const ProcessInfo &rCurrentProcessInfo) const override
Definition: transonic_perturbation_potential_flow_element.cpp:198
Element::Pointer Clone(IndexType NewId, NodesArrayType const &ThisNodes) const override
It creates a new element pointer and clones the previous element data.
Definition: transonic_perturbation_potential_flow_element.cpp:49
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: transonic_perturbation_potential_flow_element.cpp:351
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: transonic_perturbation_potential_flow_element.cpp:345
BoundedVector< double, TNumNodes+1 > AssembleDensityDerivativeAndShapeFunctions(const double densityDerivativeWRTVelocitySquared, const double densityDerivativeWRTUpwindVelocitySquared, const array_1d< double, TDim > &velocity, const array_1d< double, TDim > &upwindVelocity, const ProcessInfo &rCurrentProcessInfo)
Definition: transonic_perturbation_potential_flow_element.cpp:1163
TransonicPerturbationPotentialFlowElement(TransonicPerturbationPotentialFlowElement const &rOther)=delete
Element BaseType
Definition: transonic_perturbation_potential_flow_element.h:52
void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Definition: transonic_perturbation_potential_flow_element.cpp:66
~TransonicPerturbationPotentialFlowElement() override
Definition: transonic_perturbation_potential_flow_element.h:117
virtual void CalculateLeftHandSideContribution(BoundedMatrix< double, TNumNodes, TNumNodes > &rLhs_total, const ProcessInfo &rCurrentProcessInfo, const array_1d< double, TDim > &rVelocity, const ElementalData &rData)
Definition: transonic_perturbation_potential_flow_element.cpp:870
virtual void CalculateRightHandSideWakeElement(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: transonic_perturbation_potential_flow_element.cpp:765
TransonicPerturbationPotentialFlowElement(IndexType NewId, const NodesArrayType &ThisNodes)
Definition: transonic_perturbation_potential_flow_element.h:79
TransonicPerturbationPotentialFlowElement(TransonicPerturbationPotentialFlowElement &&rOther)=delete
TransonicPerturbationPotentialFlowElement & operator=(TransonicPerturbationPotentialFlowElement const &rOther)=delete
Assignment operator.
virtual void AssembleSupersonicLeftHandSide(MatrixType &rLeftHandSideMatrix, const double densityDerivativeWRTVelocity, const double densityDerivativeWRTUpwindVelocity, const array_1d< double, TDim > velocity, const array_1d< double, TDim > upwindVelocity, const ProcessInfo &rCurrentProcessInfo)
Definition: transonic_perturbation_potential_flow_element.cpp:1126
TransonicPerturbationPotentialFlowElement(IndexType NewId, GeometryType::Pointer pGeometry)
Definition: transonic_perturbation_potential_flow_element.h:88
virtual void FindUpwindElement(const ProcessInfo &rCurrentProcessInfo)
Definition: transonic_perturbation_potential_flow_element.cpp:1218
PointerVector< GeometryType > GeometriesArrayType
Definition: transonic_perturbation_potential_flow_element.h:54
void Initialize(const ProcessInfo &rCurrentProcessInfo) override
Definition: transonic_perturbation_potential_flow_element.cpp:60
array_1d< double, 3 > GetEdgeNormal(const GeometryType &rEdge)
Definition: transonic_perturbation_potential_flow_element.cpp:1278
void GetDofList(DofsVectorType &rElementalDofList, const ProcessInfo &rCurrentProcessInfo) const override
Definition: transonic_perturbation_potential_flow_element.cpp:158
TransonicPerturbationPotentialFlowElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
Definition: transonic_perturbation_potential_flow_element.h:97
GlobalPointer< Element > pGetUpwindElement() const
Definition: transonic_perturbation_potential_flow_element.cpp:361
std::string Info() const override
Turn back information as a string.
Definition: transonic_perturbation_potential_flow_element.cpp:337
void CalculateLeftHandSideNormalElement(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo)
Definition: transonic_perturbation_potential_flow_element.cpp:631
virtual void CalculateRightHandSideContribution(BoundedVector< double, TNumNodes > &rRhs_total, const double rDensity, const array_1d< double, TDim > &rVelocity)
Definition: transonic_perturbation_potential_flow_element.cpp:619
void CalculateLeftHandSideWakeElement(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo)
Definition: transonic_perturbation_potential_flow_element.cpp:685
bool CheckUpwindElement()
Definition: transonic_perturbation_potential_flow_element.cpp:375
void CalculateLeftHandSide(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo) override
Definition: transonic_perturbation_potential_flow_element.cpp:92
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(TransonicPerturbationPotentialFlowElement)
void CalculateRightHandSideNormalElement(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: transonic_perturbation_potential_flow_element.cpp:580
void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Definition: transonic_perturbation_potential_flow_element.cpp:76
void pSetUpwindElement(GlobalPointer< Element > pUpwindElement)
Definition: transonic_perturbation_potential_flow_element.cpp:369
Element::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const override
It creates a new element pointer.
Definition: transonic_perturbation_potential_flow_element.cpp:26
TransonicPerturbationPotentialFlowElement & operator=(TransonicPerturbationPotentialFlowElement &&rOther)=delete
Move operator.
void EquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &CurrentProcessInfo) const override
Definition: transonic_perturbation_potential_flow_element.cpp:125
void CalculateOnIntegrationPoints(const Variable< double > &rVariable, std::vector< double > &rValues, const ProcessInfo &rCurrentProcessInfo) override
Definition: transonic_perturbation_potential_flow_element.cpp:225
TransonicPerturbationPotentialFlowElement(IndexType NewId=0)
Default constuctor.
Definition: transonic_perturbation_potential_flow_element.h:72
PotentialFlowUtilities::ElementalData< TNumNodes, TDim > ElementalData
Definition: transonic_perturbation_potential_flow_element.h:55
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
AMatrix::MatrixRow< const TExpressionType > row(AMatrix::MatrixExpression< TExpressionType, TCategory > const &TheExpression, std::size_t RowIndex)
Definition: amatrix_interface.h:649
float velocity
Definition: PecletTest.py:54
lhs
Definition: generate_frictional_mortar_condition.py:297
data
Definition: mesh_to_mdpa_converter.py:59
def load(f)
Definition: ode_solve.py:307
Definition: potential_flow_utilities.h:39