27#include <boost/math/constants/constants.hpp>
29#include <Eigen/Sparse>
30#include <unsupported/Eigen/SparseExtra>
77 std::ostream & output = std::cout
85 const Eigen::VectorXd & u0,
86 const Eigen::VectorXd & uold,
87 const double & time_step
165 return m_vhhospace.
mesh();
217 const int doe_cell = -1,
218 const int doe_face = -1
223 const std::vector<Eigen::VectorXd> & list_dofs
228 const Eigen::VectorXd & p
233 const Eigen::VectorXd & uph,
234 const Eigen::VectorXd & upI,
235 const std::unique_ptr<Mesh> & mesh_ptr,
236 const std::string & solution_name,
238 const size_t & degree,
245 const Eigen::VectorXd & uph
250 const std::unique_ptr<Mesh> & mesh_ptr,
251 const size_t & newton_maxit,
252 const double & newton_tol,
253 const Eigen::VectorXd & u_newt,
254 const Eigen::VectorXd & un,
258 const double & time_step
263 std::pair<Eigen::MatrixXd, Eigen::VectorXd>
264 _compute_local_contribution(
269 const Eigen::VectorXd & u0,
270 const Eigen::VectorXd & uold,
271 const double & time_step
278 void _assemble_local_contribution(
280 const std::pair<Eigen::MatrixXd, Eigen::VectorXd> & lsT,
281 std::list<Eigen::Triplet<double> > & A1,
282 Eigen::VectorXd & b1,
283 std::list<Eigen::Triplet<double> > & A2,
294 std::ostream & m_output;
295 const size_t m_nloc_sc_u;
296 const size_t m_nloc_sc_p;
300 Eigen::VectorXd m_sc_b;
The BoundaryConditions class provides definition of boundary conditions.
Definition BoundaryConditions.hpp:45
const size_t n_dir_edges() const
Returns the number of Dirichlet edges.
Definition BoundaryConditions.hpp:70
Base class for global DOF spaces. Provides functions to manipulate global DOFs (the local version bei...
Definition globaldofspace.hpp:16
This structure is a wrapper to allow a given code to select various linear solvers.
Definition linearsolver.hpp:146
Class definition: polynomial bases and operators.
Definition vhhospace.hpp:52
Eigen::Vector2d VectorRd
Definition basis.hpp:55
Eigen::Matrix2d MatrixRd
Definition basis.hpp:54
size_t dimension() const
Returns the dimension of the global space (all DOFs for all geometric entities)
Definition localdofspace.hpp:61
size_t numLocalDofsEdge() const
Returns the number of local edge DOFs.
Definition localdofspace.hpp:45
const Mesh & mesh() const
Return a const reference to the mesh.
Definition vhhospace.hpp:140
bool use_threads
Definition HHO_DiffAdvecReac.hpp:47
std::string mesh_name
Definition HHO_DiffAdvecReac.hpp:44
std::size_t n_cells() const
number of cells in the mesh.
Definition Mesh2D.hpp:63
Definition ddr-klplate.hpp:27
Structure for weights (scalar, at the moment) in integral.
Definition integralweight.hpp:33
Structure to store information for, and perform, local static condensation.
Definition local_static_condensation.hpp:25
Class for the Navier-Stokes model.
Definition hho-ns.hpp:59
bool & isStokes()
Returns the Stokes status.
Definition hho-uns.hpp:209
const GlobalDOFSpace & pspace() const
Returns the pressure space.
Definition hho-uns.hpp:157
size_t nloc_sc_p() const
Returns the local number of pressure statically condensed DOFs.
Definition hho-uns.hpp:97
size_t numNonSCDOFs() const
Returns the number of DOFs after SC and with Lagrange multiplier, but before eliminating Dirichlet DO...
Definition hho-uns.hpp:139
const Mesh & mesh() const
Returns the mesh.
Definition hho-uns.hpp:163
size_t numSCDOFs_p() const
Returns the number of pressure statically condensed DOFs.
Definition hho-uns.hpp:109
NavierStokes(const VHHOSpace &vhho_space, const GlobalDOFSpace &p_space, const BoundaryConditions &BC, bool use_threads, bool stokes=false, std::ostream &output=std::cout)
Constructor.
size_t numSCDOFs_u() const
Returns the number of velocity statically condensed DOFs.
Definition hho-uns.hpp:103
std::function< VectorRd(const VectorRd &)> MomentumForcingTermType
Definition hho-uns.hpp:62
size_t nloc_sc_u() const
Returns the local number of velocity statically condensed DOFs.
Definition hho-uns.hpp:91
void writeToVtuFile(const Eigen::VectorXd &uph, const Eigen::VectorXd &upI, const std::unique_ptr< Mesh > &mesh_ptr, const std::string &solution_name, const std::string &mesh_name, const size_t °ree, const int &time_it)
Write solution to vut file.
Definition hho-uns.cpp:812
IntegralWeight ViscosityType
Definition hho-uns.hpp:68
std::function< VectorRd(const VectorRd &)> PressureGradientType
Definition hho-uns.hpp:67
double & stabilizationParameter()
Returns the stabilization parameter.
Definition hho-uns.hpp:194
const SystemMatrixType & systemMatrix() const
Returns the linear system matrix.
Definition hho-uns.hpp:169
const double & stabilizationParameter() const
Returns the stabilization parameter (scaling)
Definition hho-uns.hpp:189
size_t numDirDOFs() const
Returns the number of Dirichlet DOFs.
Definition hho-uns.hpp:121
size_t dimVelocity() const
Returns the dimension of velocity space.
Definition hho-uns.hpp:127
std::function< VectorRd(const VectorRd &)> VelocityType
Definition hho-uns.hpp:64
Eigen::SparseMatrix< double > SystemMatrixType
Definition hho-uns.hpp:60
void assembleLinearSystem(const MomentumForcingTermType &f, const CompressibilityForcingTermType &g, const ViscosityType &mu, const Eigen::VectorXd &u0, const Eigen::VectorXd &uold, const double &time_step)
Assemble the global system
Definition hho-uns.cpp:361
std::vector< double > computeEnergyNorms(const std::vector< Eigen::VectorXd > &list_dofs) const
Compute the discrete energy norm of a family of vectors representing the dofs.
size_t dimPressure() const
Returns the dimension of pressure space.
Definition hho-uns.hpp:133
Eigen::VectorXd interpolate(const VelocityType &u, const PressureType &p, const int doe_cell=-1, const int doe_face=-1) const
Interpolates velocity and pressure.
size_t sizeSystem() const
Returns the size of the final system with Lagrange multiplier, after application of SC and removal of...
Definition hho-uns.hpp:145
std::function< MatrixRd(const VectorRd &)> VelocityGradientType
Definition hho-uns.hpp:65
size_t numSCDOFs() const
Returns the number of statically condensed DOFs.
Definition hho-uns.hpp:115
Eigen::VectorXd newtonRaphson(LinearSolver< NavierStokes::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 ViscosityType &mu, const double &time_step)
newton method
Definition hho-uns.cpp:885
Eigen::VectorXd imposingBC(const VelocityType &u, const Eigen::VectorXd &uph) const
impose boundary conditions
Definition hho-uns.cpp:858
std::function< double(const VectorRd &)> PressureType
Definition hho-uns.hpp:66
const VHHOSpace & vhhospace() const
Returns the velocity space.
Definition hho-uns.hpp:151
const Eigen::VectorXd & systemVector() const
Returns the linear system right-hand side vector.
Definition hho-uns.hpp:179
std::function< double(const VectorRd &)> CompressibilityForcingTermType
Definition hho-uns.hpp:63
const SystemMatrixType & scMatrix() const
Returns the static condensation recovery operator.
Definition hho-uns.hpp:199
Eigen::VectorXd pressureVertexValues(const Eigen::VectorXd &p) const
Create vertex values for the pressure (from the element values), for plotting.
Definition hho-uns.cpp:786
Eigen::VectorXd & scVector()
Returns the static condensation rhs.
Definition hho-uns.hpp:204
SystemMatrixType & systemMatrix()
Returns the linear system matrix.
Definition hho-uns.hpp:174
Eigen::VectorXd & systemVector()
Returns the linear system right-hand side vector.
Definition hho-uns.hpp:184