Loading [MathJax]/extensions/tex2jax.js
PolyFEM
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PeriodicLagrangianForm.hpp
Go to the documentation of this file.
1#pragma once
2
5
6namespace polyfem::solver
7{
10 {
11 public:
17 PeriodicLagrangianForm(const int ndof,
18 const std::shared_ptr<utils::PeriodicBoundary> &periodic_bc);
19
20 std::string name() const override
21 {
22 return "periodic-alagrangian";
23 }
24
28 double value_unweighted(const Eigen::VectorXd &x) const override;
29
33 void first_derivative_unweighted(const Eigen::VectorXd &x, Eigen::VectorXd &gradv) const override;
34
38 void second_derivative_unweighted(const Eigen::VectorXd &x, StiffnessMatrix &hessian) const override;
39
40 public:
44 void update_quantities(const double t, const Eigen::VectorXd &x) override {}
45
46 void update_lagrangian(const Eigen::VectorXd &x, const double k_al) override;
47
48 double compute_error(const Eigen::VectorXd &x) const override;
49
50 virtual bool can_project() const override;
51 virtual void project_gradient(Eigen::VectorXd &grad) const override;
52 virtual void project_hessian(StiffnessMatrix &hessian) const override;
53
54 private:
55 const std::shared_ptr<utils::PeriodicBoundary> periodic_bc_;
56 const int n_dofs_;
57 Eigen::VectorXi constraints_;
58 Eigen::VectorXi not_constraints_;
59 };
60} // namespace polyfem::solver
int x
Form of the augmented lagrangian for bc constraints.
void update_lagrangian(const Eigen::VectorXd &x, const double k_al) override
Eigen::VectorXi not_constraints_
Not Constraints.
void first_derivative_unweighted(const Eigen::VectorXd &x, Eigen::VectorXd &gradv) const override
Compute the first derivative of the value wrt x.
virtual void project_gradient(Eigen::VectorXd &grad) const override
void second_derivative_unweighted(const Eigen::VectorXd &x, StiffnessMatrix &hessian) const override
Compute the second derivative of the value wrt x.
void update_quantities(const double t, const Eigen::VectorXd &x) override
Update time dependent quantities.
const std::shared_ptr< utils::PeriodicBoundary > periodic_bc_
double value_unweighted(const Eigen::VectorXd &x) const override
Compute the value of the form.
double compute_error(const Eigen::VectorXd &x) const override
virtual void project_hessian(StiffnessMatrix &hessian) const override
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix
Definition Types.hpp:22