16 class AugmentedLagrangianForm;
17 class AveragePressureForm;
21 class MixedLinearForm;
22 class NavierStokesForm;
35 void init(
const std::string &formulation,
const Units &
units,
const json &
args,
const std::string &out_path)
override;
36 void save_json(
const Eigen::MatrixXd &solution, std::ostream &out)
const override;
37 void export_data(
const Eigen::MatrixXd &solution)
const override;
45 const Eigen::MatrixXd &solution,
49 void reset()
override;
60 void split_solution(
const Eigen::MatrixXd &stacked, Eigen::MatrixXd &primary, Eigen::MatrixXd &pressure)
const;
63 const std::unique_ptr<polysolve::linear::Solver> &solver,
66 const bool compute_spectrum,
67 Eigen::MatrixXd &sol);
107 using FluidVarForm::FluidVarForm;
108 std::string
name()
const override {
return "Stokes"; }
112 Eigen::MatrixXd &sol,
122 using FluidVarForm::FluidVarForm;
123 std::string
name()
const override {
return "NavierStokes"; }
127 Eigen::MatrixXd &sol,
135 std::vector<std::shared_ptr<solver::Form>>
forms_;
136 std::vector<std::shared_ptr<solver::AugmentedLagrangianForm>>
al_forms_;
Caches basis evaluation and geometric mapping at every element.
Abstract mesh class to capture 2d/3d conforming and non-conforming meshes.
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix