1#ifndef NS_SOLUTIONS_HPP 
    2#define NS_SOLUTIONS_HPP 
   10  namespace NavierStokesSolutions
 
   15    struct IExactSolution {
 
   20      inline std::string 
name()
 const {
 
 
   37      virtual Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const = 0;
 
   38      virtual double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const = 0;
 
   39      virtual Eigen::Matrix2d 
velocityGradient(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const = 0;
 
   40      virtual Eigen::Vector2d 
pressureGradient(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const = 0;
 
   56      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
   57      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
   70      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
   71      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
   84      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
   85      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
   98      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
   99      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
  113      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
  114      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
  128      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
  129      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
  143      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
  144      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
  158        return std::array<double, 2>{2. * 
x[0] - 0.5, 2. * 
x[1]};
 
  163      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
  164      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
  182      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
  183      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
  197      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
  198      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
  212      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
  213      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
  229      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
  230      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
  246      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
  247      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
  265      Eigen::Vector2d 
velocity(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;   
 
  266      double pressure(
const Eigen::Vector2d & 
x, 
const double & 
t = 0) 
const;
 
Create grid points x
Definition generate_cartesian_mesh.m:22
 
std::function< std::array< double, 2 >(const std::array< double, 2 > &)> TransformationType
Definition MeshBuilder2D.hpp:174
 
Definition ddr-klplate.hpp:27
 
Definition ns-solutions.hpp:15
 
double viscosity() const
Return the viscosity.
Definition ns-solutions.hpp:33
 
bool isStokes() const
Definition ns-solutions.hpp:26
 
bool m_is_stokes
Definition ns-solutions.hpp:64
 
virtual ~IExactSolution()
 
virtual double pressure(const Eigen::Vector2d &x, const double &t=0) const =0
 
std::string name() const
Return the solution name.
Definition ns-solutions.hpp:22
 
virtual Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
 
virtual double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
 
double m_viscosity
Definition ns-solutions.hpp:65
 
std::string m_name
Definition ns-solutions.hpp:63
 
virtual Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const =0
 
virtual Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const =0
 
IExactSolution(std::string name, bool is_stokes, double viscosity, bool isNonNewtonian=false, double flow_index=2.0, double degen_param=0.0)
Definition ns-solutions.cpp:17
 
virtual Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const =0
 
Definition ns-solutions.hpp:175
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
static Mesh2D::MeshBuilder::TransformationType domain_transformation
A function to transform the unit domain to .
Definition ns-solutions.hpp:180
 
Kovasznay(const double &viscosity, std::ostream &output=std::cout)
Construct the class given the Reynolds number.
 
Definition ns-solutions.hpp:283
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Definition ns-solutions.hpp:88
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Definition ns-solutions.hpp:264
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
LinearTemporal(const double &viscosity)
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Definition ns-solutions.hpp:74
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Definition ns-solutions.hpp:161
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
OnlyPressure(const double &viscosity)
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Definition ns-solutions.hpp:247
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
OnlyTimeDep(const double &viscosity)
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Definition ns-solutions.hpp:146
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
PressureRobustNavierStokes(const double &viscosity)
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Definition ns-solutions.hpp:131
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
PressureRobustStokes(const double &viscosity)
 
Definition ns-solutions.hpp:102
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Definition ns-solutions.hpp:200
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
TimeDependentNavierStokes(const double &viscosity)
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Definition ns-solutions.hpp:215
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
TimeDependentStokes(const double &viscosity)
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
Definition ns-solutions.hpp:230
 
TrigTimeDep(const double &viscosity)
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Definition ns-solutions.hpp:116
 
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
 
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
 
double pressure(const Eigen::Vector2d &x, const double &t=0) const
 
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const