1#ifndef RTN_PK_PK_PK_HPP
2#define RTN_PK_PK_PK_HPP
4#include <boost/fusion/include/map.hpp>
14 class RTNPkPkPk:
public HYPRE {
16 typedef boost::fusion::map<boost::fusion::pair<RolyCellType, std::string>,
36 return m_cell_dofs_map;
51 const double viscosity,
52 const Eigen::VectorXd
uT_old,
58 Eigen::VectorXd _interpolate_velocity(
63 void _construct_local_operators(
size_t iT);
64 void _construct_stabilization(
size_t iT);
65 std::pair<Eigen::MatrixXd, Eigen::VectorXd> _velocity_pressure_coupling(
68 const Eigen::VectorXd &
uT_old,
69 const Eigen::VectorXd &
pT_old,
72 Eigen::MatrixXd _forcing_terms(
78 std::pair<Eigen::MatrixXd, Eigen::VectorXd> _linearized_convective_term(
80 const Eigen::VectorXd &
uT_old
83 std::pair<Eigen::MatrixXd, Eigen::VectorXd> _convective_stabilization_term(
85 const Eigen::VectorXd &
uT_old,
93 std::unique_ptr<DiscreteSpace> m_pkpo_pk;
94 std::vector<Eigen::MatrixXd> m_rtn_to_pot_map;
100 Eigen::VectorXd RTNPkPkPk::_interpolate_velocity(
113 = [
this,
v, &
vh, &doe_edge](
size_t start,
size_t end)->
void
130 = [
this, &
vh,
v, &doe_cell, &doe_edge](
size_t start,
size_t end)->
void
166 for (
size_t iE = 0;
iE <
T.n_edges();
iE++) {
168 auto nTE =
T.edge_normal(
iE);
197 =
MIT.fullPivLu().solve(
bIT);
The BoundaryConditions class provides definition of boundary conditions.
Definition BoundaryConditions.hpp:45
Definition discrete-space.hpp:20
std::function< VectorRd(const VectorRd &)> VelocityType
Definition hypre.hpp:37
size_t degree() const
Returns the degree.
Definition hypre.hpp:64
const Mesh & mesh() const
Returns the mesh.
Definition hypre.hpp:166
std::unique_ptr< DiscreteSpace > m_velocity_space
Definition hypre.hpp:366
size_t m_degree
Definition hypre.hpp:345
std::function< double(const VectorRd &)> PressureType
Definition hypre.hpp:39
bool m_use_threads
Definition hypre.hpp:348
Eigen::VectorXd extendCellDofs(const Eigen::VectorXd &vh) const
Extend cell DOFs from to .
const DiscreteSpace & extendedDofsSpace() const
Return the discrete space corresponding to the extended DOFs.
Definition rtn-pk-pk-pk.hpp:43
double convective_stabilization_parameter(size_t iT, const HArDCore2D::NavierStokesSolutions::IExactSolution *isolution, const size_t cell_degree, const double viscosity, const Eigen::VectorXd uT_old, const double current_time=0.) const
Evaluates convective stabilisation parameter.
RTNPkPkPk(const Mesh &mesh, size_t degree, const BoundaryConditions &bc, const HYPREParameters ¶meters)
Constructor.
boost::fusion::map< boost::fusion::pair< RolyCellType, std::string >, boost::fusion::pair< RolyComplCellType, std::string > > CellDofsMapType
Definition rtn-pk-pk-pk.hpp:17
const CellDofsMapType & cellDofsMap() const
Return cell DOFs map.
Definition rtn-pk-pk-pk.hpp:34
Eigen::VectorXd interpolate(const VelocityType &u, const PressureType &p) const
Interpolate both velocity and pressure.
Base class for global DOF spaces. Provides functions to manipulate global DOFs (the local version bei...
Definition globaldofspace.hpp:16
end
Definition convergence_analysis.m:110
Create grid points x
Definition generate_cartesian_mesh.m:22
Eigen::Vector2d VectorRd
Definition basis.hpp:55
Eigen::MatrixXd compute_gram_matrix(const boost::multi_array< VectorRd, 2 > &B1, const boost::multi_array< double, 2 > &B2, const QuadratureRule &qr)
Compute the Gram-like matrix given a family of vector-valued and one of scalar-valued functions by te...
Definition basis.cpp:239
Eigen::VectorXd l2_projection(const std::function< typename BasisType::FunctionValue(const VectorRd &)> &f, const BasisType &basis, QuadratureRule &quad, const boost::multi_array< typename BasisType::FunctionValue, 2 > &basis_quad, const Eigen::MatrixXd &mass_basis=Eigen::MatrixXd::Zero(1, 1))
Compute the L2-projection of a function.
Definition basis.hpp:3023
static boost::multi_array< typename detail::basis_evaluation_traits< BasisType, BasisFunction >::ReturnValue, 2 > compute(const BasisType &basis, const QuadratureRule &quad)
Generic basis evaluation.
Definition basis.hpp:2425
size_t localOffset(const Edge &E, const Vertex &V) const
Returns the local offset of the vertex V with respect to the edge E.
Definition localdofspace.hpp:143
static void parallel_for(unsigned nb_elements, std::function< void(size_t start, size_t end)> functor, bool use_threads=true, unsigned nb_threads_max=1e9)
Generic function to execute threaded processes.
Definition parallel_for.hpp:42
Polytope< DIMENSION > Cell
Definition Polytope2D.hpp:152
Polytope< 1 > Edge
A Face is a Polytope with object_dim = DIMENSION - 1.
Definition Polytope2D.hpp:148
std::vector< QuadratureNode > QuadratureRule
Definition quadraturerule.hpp:55
std::unordered_map< VectorZd, double, VecHash > MonomialCellIntegralsType
Type for list of integrals of monomials.
Definition GMpoly_cell.hpp:53
MonomialCellIntegralsType IntegrateCellMonomials(const Cell &T, const size_t maxdeg)
Compute all integrals on a cell of monomials up to a total degree, using vertex values.
Definition GMpoly_cell.cpp:7
Eigen::MatrixXd GramMatrix(const Cell &T, const MonomialScalarBasisCell &basis1, const MonomialScalarBasisCell &basis2, MonomialCellIntegralsType mono_int_map={})
Computes the Gram Matrix of a pair of local scalar monomial bases.
Definition GMpoly_cell.cpp:86
QuadratureRule generate_quadrature_rule(const Cell &T, const int doe, const bool force_split)
Generate quadrature rule on mesh element.
Definition quadraturerule.cpp:10
depending on the Matrix Market format indicated by or array(dense array storage). The data will be duplicated % as appropriate if symmetry is indicated in the header. % % Optionally
if(strcmp(field, 'real')) % real valued entries T
Definition mmread.m:93
TensorizedVectorFamily< PolyCellType, dimspace > PolynCellType
Definition discrete-space-descriptor.hpp:23
TensorizedVectorFamily< Family< MonomialScalarBasisEdge >, dimspace > PolynEdgeType
Definition discrete-space-descriptor.hpp:24
Family< RolyComplBasisCell > RolyComplCellType
Definition discrete-space-descriptor.hpp:30
Family< CurlBasis< ShiftedBasis< MonomialScalarBasisCell > > > RolyCellType
Definition discrete-space-descriptor.hpp:29
Family< MonomialScalarBasisEdge > PolyEdgeType
Definition discrete-space-descriptor.hpp:22
Definition mhd-solutions.hpp:9
static auto v
Definition ddrcore-test.hpp:32
Definition hho-interpolate.hpp:15
Definition ns-solutions.hpp:15
Evaluate a basis at quadrature nodes. 'BasisFunction' (=Function, Gradient, Curl, Divergence,...
Definition basis.hpp:2421