21#include "libmesh/libmesh_config.h"
23#include "libmesh/nonlinear_implicit_system.h"
24#include "libmesh/fe.h"
31class StaticCondensation;
88 const unsigned int ivar_num,
89 const unsigned int jvar_num,
93 const std::vector<Real> & JxW_local,
94 const std::vector<std::vector<Real>> & phi,
95 const std::vector<Number> & sol,
96 const std::size_t n_dofs,
100 const std::vector<Real> & JxW_local,
101 const std::vector<std::vector<Real>> & phi,
102 const std::size_t n_dofs,
106 const unsigned int vel_component,
107 std::vector<Gradient> & sigma);
110 const std::vector<Number> & scalar_sol,
116 const std::vector<Number> & v_sol_local,
117 const unsigned int qp,
118 const unsigned int vel_component)
const;
121 const std::vector<Number> & v_sol_local,
122 const unsigned int qp,
123 const unsigned int vel_component,
124 const unsigned int vel_j_component,
125 const std::vector<std::vector<Real>> & phi,
126 const unsigned int j)
const;
129 const unsigned int vel_component,
130 std::vector<Gradient> & sigma,
161 const std::vector<Number> & scalar_sol,
162 const unsigned int vel_component,
171 const std::vector<Number> & scalar_sol,
172 const std::vector<Number> & lm_sol,
173 const unsigned int vel_component,
185 const std::vector<Number> & scalar_sol,
186 const std::vector<Number> & lm_sol,
187 const unsigned int vel_component,
199 const std::vector<Real> *
JxW;
201 const std::vector<std::vector<RealVectorValue>> *
vector_phi;
215 std::unordered_map<unsigned int, std::vector<dof_id_type>>
dof_indices;
Defines a dense matrix for use in Finite Element-type computations.
Defines a dense vector for use in Finite Element-type computations.
This class handles the numbering of degrees of freedom on a mesh.
This is the base class from which all geometric element types are derived.
boundary_id_type bottom_bnd
void scalar_volume_residual(const std::vector< Gradient > &vel_gradient, const unsigned int vel_component, std::vector< Gradient > &sigma, DenseVector< Number > &R)
std::vector< Number > qv_dof_values
boundary_id_type right_bnd
std::vector< Number > qu_dof_values
std::vector< Number > v_dof_values
std::vector< Gradient > sigma_u
std::vector< Number > p_dof_values
const std::vector< std::vector< Real > > * scalar_phi_face
std::vector< Gradient > sigma_v
const std::vector< std::vector< RealVectorValue > > * vector_phi
const std::vector< Real > * JxW
void vector_dirichlet_residual(const unsigned int vel_component, DenseVector< Number > &R)
std::unique_ptr< FEVectorBase > vector_fe_face
const std::vector< std::vector< Real > > * div_vector_phi
void create_identity_jacobian(const QBase &quadrature, const std::vector< Real > &JxW_local, const std::vector< std::vector< Real > > &phi, const std::size_t n_dofs, DenseMatrix< Number > &J)
const std::vector< Point > * q_point
std::vector< Number > lm_v_sol
void pressure_dirichlet_residual(DenseVector< Number > &R)
const std::vector< Real > * JxW_face
const std::vector< std::vector< Real > > * scalar_phi
void pressure_face_residual(DenseVector< Number > &R)
std::vector< Number > p_sol
void scalar_dirichlet_residual(const std::vector< Gradient > &vector_sol, const std::vector< Number > &scalar_sol, const unsigned int vel_component, DenseVector< Number > &R)
void vector_face_residual(const std::vector< Number > &lm_sol, DenseVector< Number > &R)
virtual void jacobian(const NumericVector< Number > &X, SparseMatrix< Number > &, NonlinearImplicitSystem &S) override
Jacobian function.
std::unique_ptr< FEBase > scalar_fe
const std::vector< Point > * normals
void scalar_face_jacobian(const unsigned int vel_component, DenseMatrix< Number > &Jsq, DenseMatrix< Number > &Jsp, DenseMatrix< Number > &Jss, DenseMatrix< Number > &Jslm, DenseMatrix< Number > &Js_lmu, DenseMatrix< Number > &Js_lmv)
void scalar_volume_jacobian(const unsigned int vel_component, DenseMatrix< Number > &Jsq, DenseMatrix< Number > &Jsp, DenseMatrix< Number > &Jsu, DenseMatrix< Number > &Jsv)
std::unique_ptr< QBase > qrule
std::unordered_map< unsigned int, std::vector< dof_id_type > > dof_indices
std::size_t scalar_n_dofs
std::vector< Number > v_sol
NumberVectorValue vel_cross_vel_residual(const std::vector< Number > &u_sol_local, const std::vector< Number > &v_sol_local, const unsigned int qp, const unsigned int vel_component) const
std::vector< Gradient > qv_sol
std::vector< Number > lm_u_sol
const std::vector< std::vector< RealVectorValue > > * vector_phi_face
boundary_id_type left_bnd
std::vector< Number > qbar
NumberVectorValue vel_cross_vel_jacobian(const std::vector< Number > &u_sol_local, const std::vector< Number > &v_sol_local, const unsigned int qp, const unsigned int vel_component, const unsigned int vel_j_component, const std::vector< std::vector< Real > > &phi, const unsigned int j) const
RealVectorValue get_dirichlet_velocity(const unsigned int qp) const
void create_identity_residual(const QBase &quadrature, const std::vector< Real > &JxW_local, const std::vector< std::vector< Real > > &phi, const std::vector< Number > &sol, const std::size_t n_dofs, DenseVector< Number > &R)
std::unique_ptr< QBase > qface
std::vector< Number > u_sol
const std::vector< std::vector< RealVectorValue > > * grad_scalar_phi
std::size_t global_lm_n_dofs
boundary_id_type current_bnd
void scalar_face_residual(const std::vector< Gradient > &vector_sol, const std::vector< Number > &scalar_sol, const std::vector< Number > &lm_sol, const unsigned int vel_component, DenseVector< Number > &R)
std::vector< Number > lm_u_dof_values
void pressure_volume_jacobian(DenseMatrix< Number > &Jpu, DenseMatrix< Number > &Jpv, DenseMatrix< Number > &Jpglm, DenseMatrix< Number > &Jglmp)
static constexpr Real tau
Number global_lm_dof_value
std::vector< Number > u_dof_values
const std::vector< std::vector< Real > > * lm_phi_face
void lm_face_residual(const std::vector< Gradient > &vector_sol, const std::vector< Number > &scalar_sol, const std::vector< Number > &lm_sol, const unsigned int vel_component, DenseVector< Number > &R)
void vector_face_jacobian(DenseMatrix< Number > &Jqlm)
void lm_face_jacobian(const unsigned int vel_component, DenseMatrix< Number > &Jlmq, DenseMatrix< Number > &Jlmp, DenseMatrix< Number > &Jlms, DenseMatrix< Number > &Jlmlm, DenseMatrix< Number > &Jlm_lmu, DenseMatrix< Number > &Jlm_lmv)
std::size_t vector_n_dofs
virtual void residual(const NumericVector< Number > &X, NumericVector< Number > &R, NonlinearImplicitSystem &S) override
Residual function.
void scalar_dirichlet_jacobian(const unsigned int vel_component, DenseMatrix< Number > &Jsq, DenseMatrix< Number > &Jsp, DenseMatrix< Number > &Jss)
std::vector< Gradient > qu_sol
const std::vector< Point > * qface_point
void compute_stress(const std::vector< Gradient > &vel_gradient, const unsigned int vel_component, std::vector< Gradient > &sigma)
std::unique_ptr< FEBase > scalar_fe_face
void vector_volume_jacobian(DenseMatrix< Number > &Jqq, DenseMatrix< Number > &Jqs)
void add_matrix(NonlinearImplicitSystem &sys, const unsigned int ivar_num, const unsigned int jvar_num, const DenseMatrix< Number > &elem_mat)
std::vector< Number > lm_v_dof_values
std::unique_ptr< FEVectorBase > vector_fe
void vector_volume_residual(const std::vector< Gradient > &vector_sol, const std::vector< Number > &scalar_sol, DenseVector< Number > &R)
std::unique_ptr< FEBase > lm_fe_face
void pressure_face_jacobian(DenseMatrix< Number > &Jplm_u, DenseMatrix< Number > &Jplm_v)
void pressure_volume_residual(DenseVector< Number > &Rp, DenseVector< Number > &Rglm)
This is the MeshBase class.
Abstract base class to be used to calculate the Jacobian of a nonlinear system.
Abstract base class to be used to calculate the residual of a nonlinear system.
Manages consistently variables, degrees of freedom, coefficient vectors, matrices and non-linear solv...
Provides a uniform interface to vector storage schemes for different linear algebra libraries.
The QBase class provides the basic functionality from which various quadrature rules can be derived.
Manages consistently variables, degrees of freedom, and coefficient vectors.
This class defines a vector in LIBMESH_DIM dimensional Real or Complex space.
The libMesh namespace provides an interface to certain functionality in the library.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real