HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Functions | Variables
HHO_nsa

Implementation of the HHO scheme for Navier-Stokes with variable density. More...

Namespaces

namespace  HArDCore2D::NSASolutions
 

Classes

struct  HArDCore2D::VarDensityNavierStokes
 Class for Navier-Stokes model. More...
 
struct  HArDCore2D::NSASolutions::IExactSolution
 
struct  HArDCore2D::NSASolutions::Linear
 
struct  HArDCore2D::NSASolutions::Trigonometric
 
struct  HArDCore2D::NSASolutions::CaiEtAl
 
struct  HArDCore2D::NSASolutions::GuermondQuartapelle
 
struct  HArDCore2D::NSASolutions::LidDrivenCavity
 
struct  HArDCore2D::NSASolutions::RayleighTaylor
 
struct  HArDCore2D::NSASolutions::DamBreak
 

Typedefs

typedef Eigen::SparseMatrix< double > HArDCore2D::VarDensityNavierStokes::systemMatrixType
 
typedef std::function< VectorRd(const VectorRd &)> HArDCore2D::VarDensityNavierStokes::MomentumForcingTermType
 
typedef std::function< double(const VectorRd &)> HArDCore2D::VarDensityNavierStokes::CompressibilityForcingTermType
 
typedef std::function< double(const VectorRd &)> HArDCore2D::VarDensityNavierStokes::DensityForcingTermType
 
typedef std::function< VectorRd(const VectorRd &)> HArDCore2D::VarDensityNavierStokes::VelocityType
 
typedef std::function< MatrixRd(const VectorRd &)> HArDCore2D::VarDensityNavierStokes::VelocityGradientType
 
typedef std::function< double(const VectorRd &)> HArDCore2D::VarDensityNavierStokes::PressureType
 
typedef std::function< VectorRd(const VectorRd &)> HArDCore2D::VarDensityNavierStokes::PressureGradientType
 
typedef std::function< double(const VectorRd &)> HArDCore2D::VarDensityNavierStokes::VolumicFractionType
 
typedef IntegralWeight HArDCore2D::VarDensityNavierStokes::ViscosityType
 

Functions

 HArDCore2D::VarDensityNavierStokes::VarDensityNavierStokes (const VHHOSpace &vhho_space, const GlobalDOFSpace &p_space, const GlobalDOFSpace &phi_space, const BoundaryConditions &BC, bool use_threads, bool stokes=false, std::ostream &output=std::cout)
 Constructor.
 
void HArDCore2D::VarDensityNavierStokes::assembleLinearHHOSystem (const MomentumForcingTermType &f, const CompressibilityForcingTermType &g, const VolumicFractionType &rhog, const ViscosityType &mu, const Eigen::VectorXd &u0, const Eigen::VectorXd &uold, const double &time_step)
 Assemble the global system

 
void HArDCore2D::VarDensityNavierStokes::assembleLinearDGSystem (const CompressibilityForcingTermType &h, const Eigen::VectorXd &uprho, const VolumicFractionType &rho, const double &time_step)
 DG ADVECTION SYSTEM.
 
size_t HArDCore2D::VarDensityNavierStokes::nloc_sc_u () const
 Returns the local number of velocity statically condensed DOFs.
 
size_t HArDCore2D::VarDensityNavierStokes::nloc_sc_p () const
 Returns the local number of pressure statically condensed DOFs.
 
size_t HArDCore2D::VarDensityNavierStokes::numSCDOFs_u () const
 Returns the number of velocity statically condensed DOFs.
 
size_t HArDCore2D::VarDensityNavierStokes::numSCDOFs_p () const
 Returns the number of pressure statically condensed DOFs.
 
size_t HArDCore2D::VarDensityNavierStokes::numSCDOFs () const
 Returns the number of statically condensed DOFs.
 
size_t HArDCore2D::VarDensityNavierStokes::numDirDOFs () const
 Returns the number of Dirichlet DOFs.
 
size_t HArDCore2D::VarDensityNavierStokes::dimVelocity () const
 Returns the dimension of velocity space.
 
size_t HArDCore2D::VarDensityNavierStokes::dimPressure () const
 Returns the dimension of pressure space.
 
size_t HArDCore2D::VarDensityNavierStokes::dimVolumicFraction () const
 Returns the dimension of pressure space.
 
size_t HArDCore2D::VarDensityNavierStokes::numNonSCDOFs () const
 Returns the number of DOFs after SC and with Lagrange multiplier, but before eliminating Dirichlet DOFs.
 
size_t HArDCore2D::VarDensityNavierStokes::sizeSystemHHO () const
 Returns the size of the final system with Lagrange multiplier, after application of SC and removal of Dirichlet BCs.
 
size_t HArDCore2D::VarDensityNavierStokes::sizeSystemDG () const
 
const VHHOSpaceHArDCore2D::VarDensityNavierStokes::vhhospace () const
 Returns the velocity space.
 
const GlobalDOFSpaceHArDCore2D::VarDensityNavierStokes::pspace () const
 Returns the pressure space.
 
const GlobalDOFSpaceHArDCore2D::VarDensityNavierStokes::phispace () const
 Returns the pressure space.
 
const MeshHArDCore2D::VarDensityNavierStokes::mesh () const
 Returns the mesh.
 
const systemMatrixTypeHArDCore2D::VarDensityNavierStokes::systemMatrixHHO () const
 Returns the linear system matrix.
 
systemMatrixTypeHArDCore2D::VarDensityNavierStokes::systemMatrixHHO ()
 Returns the linear system matrix.
 
const Eigen::VectorXd & HArDCore2D::VarDensityNavierStokes::systemVector () const
 Returns the linear system right-hand side vector.
 
Eigen::VectorXd & HArDCore2D::VarDensityNavierStokes::systemVector ()
 Returns the linear system right-hand side vector.
 
const double & HArDCore2D::VarDensityNavierStokes::stabilizationParameter () const
 Returns the stabilization parameter (scaling)
 
double & HArDCore2D::VarDensityNavierStokes::stabilizationParameter ()
 Returns the stabilization parameter.
 
const systemMatrixTypeHArDCore2D::VarDensityNavierStokes::scMatrix () const
 Returns the static condensation recovery operator.
 
Eigen::VectorXd & HArDCore2D::VarDensityNavierStokes::scVector ()
 Returns the static condensation rhs.
 
const systemMatrixTypeHArDCore2D::VarDensityNavierStokes::systemMatrixDG () const
 Returns the linear system matrix.
 
systemMatrixTypeHArDCore2D::VarDensityNavierStokes::systemMatrixDG ()
 Returns the linear system matrix.
 
const Eigen::VectorXd & HArDCore2D::VarDensityNavierStokes::systemVectorDG () const
 Returns the linear system right-hand side vector.
 
Eigen::VectorXd & HArDCore2D::VarDensityNavierStokes::systemVectorDG ()
 Returns the linear system right-hand side vector.
 
bool & HArDCore2D::VarDensityNavierStokes::isStokes ()
 Returns the Stokes status.
 
Eigen::VectorXd HArDCore2D::VarDensityNavierStokes::interpolate (const VelocityType &u, const PressureType &p, const VolumicFractionType &phi, const int doe_cell=-1, const int doe_face=-1) const
 Interpolates velocity and pressure.
 
std::vector< double > HArDCore2D::VarDensityNavierStokes::computeEnergyNorms (const std::vector< Eigen::VectorXd > &list_dofs) const
 Compute the discrete energy norm of a family of vectors representing the dofs.
 
std::vector< double > HArDCore2D::VarDensityNavierStokes::computePressureL2Norm (const std::vector< Eigen::VectorXd > &list_dofs) const
 Compute the discrete L2 norm of the pressure.
 
std::vector< std::tuple< double, double, double > > HArDCore2D::VarDensityNavierStokes::computeDGNorms (const std::vector< Eigen::VectorXd > &list_dofs, const VelocityType &u) const
 Compute the discrete energy norm of a family of vectors representing the dofs.
 
std::vector< double > HArDCore2D::VarDensityNavierStokes::computePhysicalEnergies (const Eigen::VectorXd &uprho, const MomentumForcingTermType &f, const ViscosityType &mu) const
 UTILS.
 
Eigen::VectorXd HArDCore2D::VarDensityNavierStokes::pressureVertexValues (const Eigen::VectorXd &p) const
 Create vertex values for the pressure (from the element values), for plotting.
 
Eigen::VectorXd HArDCore2D::VarDensityNavierStokes::volumicFractionVertexValues (const Eigen::VectorXd &phi) const
 Create vertex values for volumic fraction.
 
void HArDCore2D::VarDensityNavierStokes::writeToVtuFile (const Eigen::VectorXd &upphi, const Eigen::VectorXd &upphiI, const std::unique_ptr< Mesh > &mesh_ptr, const std::string &solution_name, const std::string &mesh_name, const size_t &degree, const int &time_it, const double &reynolds, const std::vector< std::string > &plot_variables, const std::string &output_path)
 Write solution to vut file.
 
void HArDCore2D::VarDensityNavierStokes::writeTimeStepData (const std::string &filename, const int &time_it, const double &time, const double &dt, const double &L2_u_err, const double &H1_u_err, const double &Energy_err, const double &L2_rho_err, const double &cf_rho_err, const double &upw_rho_err, const double &E_kinetic, const double &E_potential, const double &E_dissipation) const
 Writing data to txt file.
 
void HArDCore2D::VarDensityNavierStokes::writeFileHeader (const std::string &filename, const std::string &solution_name, const int &solution_number, const std::string &mesh_name, const size_t &degree, const std::unique_ptr< Mesh > &mesh_ptr, const double &viscosity) const
 Writing file header with simulation metadata.
 
Eigen::VectorXd HArDCore2D::VarDensityNavierStokes::imposingBC (const VelocityType &u, const Eigen::VectorXd &uph) const
 impose boundary conditions
 
double HArDCore2D::VarDensityNavierStokes::getUpwindDensity (const size_t &iE, const size_t &iT, const Eigen::VectorXd &uprho) const
 get upwind value of the density at the face E
 
Eigen::VectorXd HArDCore2D::VarDensityNavierStokes::newtonRaphson (LinearSolver< VarDensityNavierStokes::systemMatrixType > &solver, const std::unique_ptr< Mesh > &mesh_ptr, const size_t &newton_maxit, const double &newton_tol, const Eigen::VectorXd &u_newt, const Eigen::VectorXd &un, const MomentumForcingTermType &f, const CompressibilityForcingTermType &g, const VolumicFractionType &rhog, const ViscosityType &mu, const double &time_step)
 newton method
 
 HArDCore2D::NSASolutions::IExactSolution::IExactSolution (std::string name, bool is_stokes, double viscosity)
 
virtual HArDCore2D::NSASolutions::IExactSolution::~IExactSolution ()
 
std::string HArDCore2D::NSASolutions::IExactSolution::name () const
 Return the solution name.
 
bool HArDCore2D::NSASolutions::IExactSolution::isStokes () const
 
double HArDCore2D::NSASolutions::IExactSolution::viscosity () const
 Return the viscosity.
 
virtual Eigen::Vector2d HArDCore2D::NSASolutions::IExactSolution::momentumForcingTerm (const Eigen::Vector2d &x, const double &t=0) const =0
 
virtual double HArDCore2D::NSASolutions::IExactSolution::compressibilityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const =0
 
virtual double HArDCore2D::NSASolutions::IExactSolution::densityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const =0
 
virtual Eigen::Vector2d HArDCore2D::NSASolutions::IExactSolution::velocity (const Eigen::Vector2d &x, const double &t=0) const =0
 
virtual double HArDCore2D::NSASolutions::IExactSolution::pressure (const Eigen::Vector2d &x, const double &t=0) const =0
 
virtual Eigen::Matrix2d HArDCore2D::NSASolutions::IExactSolution::velocityGradient (const Eigen::Vector2d &x, const double &t=0) const =0
 
virtual Eigen::Vector2d HArDCore2D::NSASolutions::IExactSolution::pressureGradient (const Eigen::Vector2d &x, const double &t=0) const =0
 
virtual double HArDCore2D::NSASolutions::IExactSolution::volumicFraction (const Eigen::Vector2d &x, const double &t=0) const =0
 
 HArDCore2D::NSASolutions::Linear::Linear (const int &stokes)
 
Eigen::Vector2d HArDCore2D::NSASolutions::Linear::momentumForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::Linear::compressibilityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::Linear::densityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::Linear::velocity (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::Linear::pressure (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d HArDCore2D::NSASolutions::Linear::velocityGradient (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::Linear::pressureGradient (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::Linear::volumicFraction (const Eigen::Vector2d &x, const double &t=0) const
 
 HArDCore2D::NSASolutions::Trigonometric::Trigonometric (const int &stokes)
 
Eigen::Vector2d HArDCore2D::NSASolutions::Trigonometric::momentumForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::Trigonometric::compressibilityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::Trigonometric::densityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::Trigonometric::velocity (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::Trigonometric::pressure (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d HArDCore2D::NSASolutions::Trigonometric::velocityGradient (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::Trigonometric::pressureGradient (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::Trigonometric::volumicFraction (const Eigen::Vector2d &x, const double &t=0) const
 
 HArDCore2D::NSASolutions::CaiEtAl::CaiEtAl (const int &stokes)
 
Eigen::Vector2d HArDCore2D::NSASolutions::CaiEtAl::momentumForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::CaiEtAl::compressibilityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::CaiEtAl::densityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::CaiEtAl::velocity (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::CaiEtAl::pressure (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d HArDCore2D::NSASolutions::CaiEtAl::velocityGradient (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::CaiEtAl::pressureGradient (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::CaiEtAl::volumicFraction (const Eigen::Vector2d &x, const double &t=0) const
 
 HArDCore2D::NSASolutions::GuermondQuartapelle::GuermondQuartapelle (const int &stokes)
 
Eigen::Vector2d HArDCore2D::NSASolutions::GuermondQuartapelle::momentumForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::GuermondQuartapelle::compressibilityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::GuermondQuartapelle::densityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::GuermondQuartapelle::velocity (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::GuermondQuartapelle::pressure (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d HArDCore2D::NSASolutions::GuermondQuartapelle::velocityGradient (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::GuermondQuartapelle::pressureGradient (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::GuermondQuartapelle::volumicFraction (const Eigen::Vector2d &x, const double &t=0) const
 
 HArDCore2D::NSASolutions::LidDrivenCavity::LidDrivenCavity (const int &stokes)
 
Eigen::Vector2d HArDCore2D::NSASolutions::LidDrivenCavity::momentumForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::LidDrivenCavity::compressibilityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::LidDrivenCavity::densityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::LidDrivenCavity::velocity (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::LidDrivenCavity::pressure (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d HArDCore2D::NSASolutions::LidDrivenCavity::velocityGradient (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::LidDrivenCavity::pressureGradient (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::LidDrivenCavity::volumicFraction (const Eigen::Vector2d &x, const double &t=0) const
 
 HArDCore2D::NSASolutions::RayleighTaylor::RayleighTaylor (const double &rho_min, const double &rho_max, const double &Re, const double &L, const double &a, const double &g)
 
Eigen::Vector2d HArDCore2D::NSASolutions::RayleighTaylor::momentumForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 A function to transform the unit domain to \((-L/2,L/2)\times (-2L,2L)\).
 
double HArDCore2D::NSASolutions::RayleighTaylor::compressibilityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::RayleighTaylor::densityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::RayleighTaylor::velocity (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::RayleighTaylor::pressure (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d HArDCore2D::NSASolutions::RayleighTaylor::velocityGradient (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::RayleighTaylor::pressureGradient (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::RayleighTaylor::volumicFraction (const Eigen::Vector2d &x, const double &t=0) const
 
 HArDCore2D::NSASolutions::DamBreak::DamBreak (const double &rho_min, const double &rho_max, const double &Re, const double &L, const double &H, const double &g)
 
Eigen::Vector2d HArDCore2D::NSASolutions::DamBreak::momentumForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::DamBreak::compressibilityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::DamBreak::densityForcingTerm (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::DamBreak::velocity (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::DamBreak::pressure (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d HArDCore2D::NSASolutions::DamBreak::velocityGradient (const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d HArDCore2D::NSASolutions::DamBreak::pressureGradient (const Eigen::Vector2d &x, const double &t=0) const
 
double HArDCore2D::NSASolutions::DamBreak::volumicFraction (const Eigen::Vector2d &x, const double &t=0) const
 

Variables

std::string HArDCore2D::NSASolutions::IExactSolution::m_name
 
bool HArDCore2D::NSASolutions::IExactSolution::m_is_stokes
 
double HArDCore2D::NSASolutions::IExactSolution::m_viscosity
 
static double HArDCore2D::NSASolutions::RayleighTaylor::s_L = 0.0
 

Detailed Description

Implementation of the HHO scheme for Navier-Stokes with variable density.

Typedef Documentation

◆ CompressibilityForcingTermType

◆ DensityForcingTermType

◆ MomentumForcingTermType

◆ PressureGradientType

◆ PressureType

typedef std::function<double(const VectorRd &)> HArDCore2D::VarDensityNavierStokes::PressureType

◆ systemMatrixType

typedef Eigen::SparseMatrix<double> HArDCore2D::VarDensityNavierStokes::systemMatrixType

◆ VelocityGradientType

◆ VelocityType

◆ ViscosityType

◆ VolumicFractionType

typedef std::function<double(const VectorRd &)> HArDCore2D::VarDensityNavierStokes::VolumicFractionType

Function Documentation

◆ assembleLinearDGSystem()

void VarDensityNavierStokes::assembleLinearDGSystem ( const CompressibilityForcingTermType h,
const Eigen::VectorXd &  uprho,
const VolumicFractionType rho,
const double &  time_step 
)

DG ADVECTION SYSTEM.

◆ assembleLinearHHOSystem()

void VarDensityNavierStokes::assembleLinearHHOSystem ( const MomentumForcingTermType f,
const CompressibilityForcingTermType g,
const VolumicFractionType rhog,
const ViscosityType mu,
const Eigen::VectorXd &  u0,
const Eigen::VectorXd &  uold,
const double &  time_step 
)

Assemble the global system

HHO NAVIER-STOKES SYSTEM.

Parameters
fForcing term
gForcing term for the divergence equation
rhogdenisty on the boundary
muViscosity
u0solution at previous time step
uoldsolution at previous Newton iteration
time_steptime step

◆ CaiEtAl()

CaiEtAl::CaiEtAl ( const int &  stokes)

◆ compressibilityForcingTerm() [1/8]

double Linear::compressibilityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ compressibilityForcingTerm() [2/8]

double Trigonometric::compressibilityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ compressibilityForcingTerm() [3/8]

double CaiEtAl::compressibilityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ compressibilityForcingTerm() [4/8]

double GuermondQuartapelle::compressibilityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ compressibilityForcingTerm() [5/8]

double LidDrivenCavity::compressibilityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ compressibilityForcingTerm() [6/8]

double RayleighTaylor::compressibilityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ compressibilityForcingTerm() [7/8]

double DamBreak::compressibilityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ compressibilityForcingTerm() [8/8]

virtual double HArDCore2D::NSASolutions::IExactSolution::compressibilityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
pure virtual

◆ computeDGNorms()

std::vector< std::tuple< double, double, double > > VarDensityNavierStokes::computeDGNorms ( const std::vector< Eigen::VectorXd > &  list_dofs,
const VelocityType u 
) const

Compute the discrete energy norm of a family of vectors representing the dofs.

◆ computeEnergyNorms()

std::vector< double > VarDensityNavierStokes::computeEnergyNorms ( const std::vector< Eigen::VectorXd > &  list_dofs) const

Compute the discrete energy norm of a family of vectors representing the dofs.

Parameters
list_dofsThe list of vectors representing the dofs

◆ computePhysicalEnergies()

std::vector< double > VarDensityNavierStokes::computePhysicalEnergies ( const Eigen::VectorXd &  uprho,
const MomentumForcingTermType f,
const ViscosityType mu 
) const

UTILS.

Parameters
uprhoSolution vector
fMomentum forcing term
muViscosity

◆ computePressureL2Norm()

std::vector< double > VarDensityNavierStokes::computePressureL2Norm ( const std::vector< Eigen::VectorXd > &  list_dofs) const

Compute the discrete L2 norm of the pressure.

Parameters
list_dofsThe list of vectors representing the dofs

◆ DamBreak()

DamBreak::DamBreak ( const double &  rho_min,
const double &  rho_max,
const double &  Re,
const double &  L,
const double &  H,
const double &  g 
)

◆ densityForcingTerm() [1/8]

double Linear::densityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ densityForcingTerm() [2/8]

double Trigonometric::densityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ densityForcingTerm() [3/8]

double CaiEtAl::densityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ densityForcingTerm() [4/8]

double GuermondQuartapelle::densityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ densityForcingTerm() [5/8]

double LidDrivenCavity::densityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ densityForcingTerm() [6/8]

double RayleighTaylor::densityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ densityForcingTerm() [7/8]

double DamBreak::densityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ densityForcingTerm() [8/8]

virtual double HArDCore2D::NSASolutions::IExactSolution::densityForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
pure virtual

◆ dimPressure()

size_t HArDCore2D::VarDensityNavierStokes::dimPressure ( ) const
inline

Returns the dimension of pressure space.

◆ dimVelocity()

size_t HArDCore2D::VarDensityNavierStokes::dimVelocity ( ) const
inline

Returns the dimension of velocity space.

◆ dimVolumicFraction()

size_t HArDCore2D::VarDensityNavierStokes::dimVolumicFraction ( ) const
inline

Returns the dimension of pressure space.

◆ getUpwindDensity()

double HArDCore2D::VarDensityNavierStokes::getUpwindDensity ( const size_t &  iE,
const size_t &  iT,
const Eigen::VectorXd &  uprho 
) const

get upwind value of the density at the face E

◆ GuermondQuartapelle()

GuermondQuartapelle::GuermondQuartapelle ( const int &  stokes)

◆ IExactSolution()

IExactSolution::IExactSolution ( std::string  name,
bool  is_stokes,
double  viscosity 
)

◆ imposingBC()

Eigen::VectorXd VarDensityNavierStokes::imposingBC ( const VelocityType u,
const Eigen::VectorXd &  uph 
) const

impose boundary conditions

◆ interpolate()

Eigen::VectorXd VarDensityNavierStokes::interpolate ( const VelocityType u,
const PressureType p,
const VolumicFractionType phi,
const int  doe_cell = -1,
const int  doe_face = -1 
) const

Interpolates velocity and pressure.

INTERPOLATION.

Parameters
uContinuous velocity to interpolate
pContinuous pressure to interpolate
doe_cellThe optional degre of cell quadrature rules to compute the interpolate. If negative, then 2*degree()+3 will be used.
doe_faceThe optional degre of face quadrature rules to compute the interpolate. If negative, then 2*degree()+3 will be used.

◆ isStokes() [1/2]

bool & HArDCore2D::VarDensityNavierStokes::isStokes ( )
inline

Returns the Stokes status.

◆ isStokes() [2/2]

bool HArDCore2D::NSASolutions::IExactSolution::isStokes ( ) const
inline

Return true if the solution is for the Stokes problem, false if it is for the Navier-Stokes problem

◆ LidDrivenCavity()

LidDrivenCavity::LidDrivenCavity ( const int &  stokes)

◆ Linear()

Linear::Linear ( const int &  stokes)

◆ mesh()

const Mesh & HArDCore2D::VarDensityNavierStokes::mesh ( ) const
inline

Returns the mesh.

◆ momentumForcingTerm() [1/8]

Eigen::Vector2d Linear::momentumForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ momentumForcingTerm() [2/8]

Eigen::Vector2d Trigonometric::momentumForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ momentumForcingTerm() [3/8]

Eigen::Vector2d CaiEtAl::momentumForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ momentumForcingTerm() [4/8]

Eigen::Vector2d GuermondQuartapelle::momentumForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ momentumForcingTerm() [5/8]

Eigen::Vector2d LidDrivenCavity::momentumForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ momentumForcingTerm() [6/8]

Eigen::Vector2d RayleighTaylor::momentumForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

A function to transform the unit domain to \((-L/2,L/2)\times (-2L,2L)\).

Implements HArDCore2D::NSASolutions::IExactSolution.

◆ momentumForcingTerm() [7/8]

Eigen::Vector2d DamBreak::momentumForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ momentumForcingTerm() [8/8]

virtual Eigen::Vector2d HArDCore2D::NSASolutions::IExactSolution::momentumForcingTerm ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
pure virtual

◆ name()

std::string HArDCore2D::NSASolutions::IExactSolution::name ( ) const
inline

Return the solution name.

◆ newtonRaphson()

Eigen::VectorXd VarDensityNavierStokes::newtonRaphson ( LinearSolver< VarDensityNavierStokes::systemMatrixType > &  solver,
const std::unique_ptr< Mesh > &  mesh_ptr,
const size_t &  newton_maxit,
const double &  newton_tol,
const Eigen::VectorXd &  u_newt,
const Eigen::VectorXd &  un,
const MomentumForcingTermType f,
const CompressibilityForcingTermType g,
const VolumicFractionType rhog,
const ViscosityType mu,
const double &  time_step 
)

newton method

initializing parameters

◆ nloc_sc_p()

size_t HArDCore2D::VarDensityNavierStokes::nloc_sc_p ( ) const
inline

Returns the local number of pressure statically condensed DOFs.

◆ nloc_sc_u()

size_t HArDCore2D::VarDensityNavierStokes::nloc_sc_u ( ) const
inline

Returns the local number of velocity statically condensed DOFs.

◆ numDirDOFs()

size_t HArDCore2D::VarDensityNavierStokes::numDirDOFs ( ) const
inline

Returns the number of Dirichlet DOFs.

◆ numNonSCDOFs()

size_t HArDCore2D::VarDensityNavierStokes::numNonSCDOFs ( ) const
inline

Returns the number of DOFs after SC and with Lagrange multiplier, but before eliminating Dirichlet DOFs.

◆ numSCDOFs()

size_t HArDCore2D::VarDensityNavierStokes::numSCDOFs ( ) const
inline

Returns the number of statically condensed DOFs.

◆ numSCDOFs_p()

size_t HArDCore2D::VarDensityNavierStokes::numSCDOFs_p ( ) const
inline

Returns the number of pressure statically condensed DOFs.

◆ numSCDOFs_u()

size_t HArDCore2D::VarDensityNavierStokes::numSCDOFs_u ( ) const
inline

Returns the number of velocity statically condensed DOFs.

◆ phispace()

const GlobalDOFSpace & HArDCore2D::VarDensityNavierStokes::phispace ( ) const
inline

Returns the pressure space.

◆ pressure() [1/8]

double Linear::pressure ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressure() [2/8]

double Trigonometric::pressure ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressure() [3/8]

double CaiEtAl::pressure ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressure() [4/8]

double GuermondQuartapelle::pressure ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressure() [5/8]

double LidDrivenCavity::pressure ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressure() [6/8]

double RayleighTaylor::pressure ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressure() [7/8]

double DamBreak::pressure ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressure() [8/8]

virtual double HArDCore2D::NSASolutions::IExactSolution::pressure ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
pure virtual

◆ pressureGradient() [1/8]

Eigen::Vector2d Linear::pressureGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressureGradient() [2/8]

Eigen::Vector2d Trigonometric::pressureGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressureGradient() [3/8]

Eigen::Vector2d CaiEtAl::pressureGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressureGradient() [4/8]

Eigen::Vector2d GuermondQuartapelle::pressureGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressureGradient() [5/8]

Eigen::Vector2d LidDrivenCavity::pressureGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressureGradient() [6/8]

Eigen::Vector2d RayleighTaylor::pressureGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressureGradient() [7/8]

Eigen::Vector2d DamBreak::pressureGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ pressureGradient() [8/8]

virtual Eigen::Vector2d HArDCore2D::NSASolutions::IExactSolution::pressureGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
pure virtual

◆ pressureVertexValues()

Eigen::VectorXd VarDensityNavierStokes::pressureVertexValues ( const Eigen::VectorXd &  p) const

Create vertex values for the pressure (from the element values), for plotting.

Parameters
pVector of pressure DOFs

◆ pspace()

const GlobalDOFSpace & HArDCore2D::VarDensityNavierStokes::pspace ( ) const
inline

Returns the pressure space.

◆ RayleighTaylor()

RayleighTaylor::RayleighTaylor ( const double &  rho_min,
const double &  rho_max,
const double &  Re,
const double &  L,
const double &  a,
const double &  g 
)

◆ scMatrix()

const systemMatrixType & HArDCore2D::VarDensityNavierStokes::scMatrix ( ) const
inline

Returns the static condensation recovery operator.

◆ scVector()

Eigen::VectorXd & HArDCore2D::VarDensityNavierStokes::scVector ( )
inline

Returns the static condensation rhs.

◆ sizeSystemDG()

size_t HArDCore2D::VarDensityNavierStokes::sizeSystemDG ( ) const
inline

◆ sizeSystemHHO()

size_t HArDCore2D::VarDensityNavierStokes::sizeSystemHHO ( ) const
inline

Returns the size of the final system with Lagrange multiplier, after application of SC and removal of Dirichlet BCs.

◆ stabilizationParameter() [1/2]

double & HArDCore2D::VarDensityNavierStokes::stabilizationParameter ( )
inline

Returns the stabilization parameter.

◆ stabilizationParameter() [2/2]

const double & HArDCore2D::VarDensityNavierStokes::stabilizationParameter ( ) const
inline

Returns the stabilization parameter (scaling)

◆ systemMatrixDG() [1/2]

systemMatrixType & HArDCore2D::VarDensityNavierStokes::systemMatrixDG ( )
inline

Returns the linear system matrix.

◆ systemMatrixDG() [2/2]

const systemMatrixType & HArDCore2D::VarDensityNavierStokes::systemMatrixDG ( ) const
inline

Returns the linear system matrix.

◆ systemMatrixHHO() [1/2]

systemMatrixType & HArDCore2D::VarDensityNavierStokes::systemMatrixHHO ( )
inline

Returns the linear system matrix.

◆ systemMatrixHHO() [2/2]

const systemMatrixType & HArDCore2D::VarDensityNavierStokes::systemMatrixHHO ( ) const
inline

Returns the linear system matrix.

◆ systemVector() [1/2]

Eigen::VectorXd & HArDCore2D::VarDensityNavierStokes::systemVector ( )
inline

Returns the linear system right-hand side vector.

◆ systemVector() [2/2]

const Eigen::VectorXd & HArDCore2D::VarDensityNavierStokes::systemVector ( ) const
inline

Returns the linear system right-hand side vector.

◆ systemVectorDG() [1/2]

Eigen::VectorXd & HArDCore2D::VarDensityNavierStokes::systemVectorDG ( )
inline

Returns the linear system right-hand side vector.

◆ systemVectorDG() [2/2]

const Eigen::VectorXd & HArDCore2D::VarDensityNavierStokes::systemVectorDG ( ) const
inline

Returns the linear system right-hand side vector.

◆ Trigonometric()

Trigonometric::Trigonometric ( const int &  stokes)

◆ VarDensityNavierStokes()

VarDensityNavierStokes::VarDensityNavierStokes ( const VHHOSpace vhho_space,
const GlobalDOFSpace p_space,
const GlobalDOFSpace phi_space,
const BoundaryConditions BC,
bool  use_threads,
bool  stokes = false,
std::ostream &  output = std::cout 
)

Constructor.

Parameters
vhho_spaceVelocity space and operators
p_spaceSpace for the pressure
phi_spaceSpace for the volumic fraction
BCBoundary conditions
use_threadsTrue for parallel execution, false for sequential execution
stokesTrue if we want to assemble the Stokes system without convective terms
outputOutput stream to print status messages

◆ velocity() [1/8]

Eigen::Vector2d Linear::velocity ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocity() [2/8]

Eigen::Vector2d Trigonometric::velocity ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocity() [3/8]

Eigen::Vector2d CaiEtAl::velocity ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocity() [4/8]

Eigen::Vector2d GuermondQuartapelle::velocity ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocity() [5/8]

Eigen::Vector2d LidDrivenCavity::velocity ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocity() [6/8]

Eigen::Vector2d RayleighTaylor::velocity ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocity() [7/8]

Eigen::Vector2d DamBreak::velocity ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocity() [8/8]

virtual Eigen::Vector2d HArDCore2D::NSASolutions::IExactSolution::velocity ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
pure virtual

◆ velocityGradient() [1/8]

Eigen::Matrix2d Linear::velocityGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocityGradient() [2/8]

Eigen::Matrix2d Trigonometric::velocityGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocityGradient() [3/8]

Eigen::Matrix2d CaiEtAl::velocityGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocityGradient() [4/8]

Eigen::Matrix2d GuermondQuartapelle::velocityGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocityGradient() [5/8]

Eigen::Matrix2d LidDrivenCavity::velocityGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocityGradient() [6/8]

Eigen::Matrix2d RayleighTaylor::velocityGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocityGradient() [7/8]

Eigen::Matrix2d DamBreak::velocityGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ velocityGradient() [8/8]

virtual Eigen::Matrix2d HArDCore2D::NSASolutions::IExactSolution::velocityGradient ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
pure virtual

◆ vhhospace()

const VHHOSpace & HArDCore2D::VarDensityNavierStokes::vhhospace ( ) const
inline

Returns the velocity space.

◆ viscosity()

double HArDCore2D::NSASolutions::IExactSolution::viscosity ( ) const
inline

Return the viscosity.

◆ volumicFraction() [1/8]

double Linear::volumicFraction ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ volumicFraction() [2/8]

double Trigonometric::volumicFraction ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ volumicFraction() [3/8]

double CaiEtAl::volumicFraction ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ volumicFraction() [4/8]

double GuermondQuartapelle::volumicFraction ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ volumicFraction() [5/8]

double LidDrivenCavity::volumicFraction ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ volumicFraction() [6/8]

double RayleighTaylor::volumicFraction ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ volumicFraction() [7/8]

double DamBreak::volumicFraction ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
virtual

◆ volumicFraction() [8/8]

virtual double HArDCore2D::NSASolutions::IExactSolution::volumicFraction ( const Eigen::Vector2d &  x,
const double &  t = 0 
) const
pure virtual

◆ volumicFractionVertexValues()

Eigen::VectorXd VarDensityNavierStokes::volumicFractionVertexValues ( const Eigen::VectorXd &  phi) const

Create vertex values for volumic fraction.

Creating vertex values for volumic fraction.

Parameters
phiVector of volumic fraction DOFs

◆ writeFileHeader()

void VarDensityNavierStokes::writeFileHeader ( const std::string &  filename,
const std::string &  solution_name,
const int &  solution_number,
const std::string &  mesh_name,
const size_t &  degree,
const std::unique_ptr< Mesh > &  mesh_ptr,
const double &  viscosity 
) const

Writing file header with simulation metadata.

◆ writeTimeStepData()

void VarDensityNavierStokes::writeTimeStepData ( const std::string &  filename,
const int &  time_it,
const double &  time,
const double &  dt,
const double &  L2_u_err,
const double &  H1_u_err,
const double &  Energy_err,
const double &  L2_rho_err,
const double &  cf_rho_err,
const double &  upw_rho_err,
const double &  E_kinetic,
const double &  E_potential,
const double &  E_dissipation 
) const

Writing data to txt file.

◆ writeToVtuFile()

void VarDensityNavierStokes::writeToVtuFile ( const Eigen::VectorXd &  upphi,
const Eigen::VectorXd &  upphiI,
const std::unique_ptr< Mesh > &  mesh_ptr,
const std::string &  solution_name,
const std::string &  mesh_name,
const size_t &  degree,
const int &  time_it,
const double &  reynolds,
const std::vector< std::string > &  plot_variables,
const std::string &  output_path 
)

Write solution to vut file.

Writing solution to vtu file.

◆ ~IExactSolution()

IExactSolution::~IExactSolution ( )
virtual

Variable Documentation

◆ m_is_stokes

bool HArDCore2D::NSASolutions::IExactSolution::m_is_stokes
protected

◆ m_name

std::string HArDCore2D::NSASolutions::IExactSolution::m_name
protected

◆ m_viscosity

double HArDCore2D::NSASolutions::IExactSolution::m_viscosity
protected

◆ s_L

double HArDCore2D::NSASolutions::RayleighTaylor::s_L = 0.0
static