PolyFEM
Loading...
Searching...
No Matches
PeriodicBoundaryLagrangianForm.hpp
Go to the documentation of this file.
1#pragma once
2
4
8
9namespace polyfem::solver
10{
13 {
14 public:
15 struct Mapping
16 {
18 Eigen::MatrixXd b;
20 std::vector<int> boundary_dofs;
21 };
22
24 int ndof,
25 int value_dim,
26 const mesh::Mesh &mesh,
27 const std::vector<basis::ElementBases> &bases,
28 const std::vector<mesh::LocalBoundary> &local_boundary,
29 const std::array<int, 2> &boundary_ids,
30 double relative_tolerance);
31
33 int ndof,
34 int value_dim,
35 const mesh::Mesh &mesh,
36 const std::vector<basis::ElementBases> &bases,
37 const std::vector<mesh::LocalBoundary> &local_boundary,
38 const std::array<int, 2> &boundary_ids,
39 double relative_tolerance);
40
41 std::string name() const override { return "periodic-boundary-lagrangian"; }
42
43 private:
44 explicit PeriodicBoundaryLagrangianForm(Mapping mapping);
45 };
46} // namespace polyfem::solver
Abstract mesh class to capture 2d/3d conforming and non-conforming meshes.
Definition Mesh.hpp:49
Form of the lagrangian in augmented lagrangian.
Linear equality constraints coupling corresponding DoFs on two tagged boundaries.
static Mapping build_mapping(int ndof, int value_dim, const mesh::Mesh &mesh, const std::vector< basis::ElementBases > &bases, const std::vector< mesh::LocalBoundary > &local_boundary, const std::array< int, 2 > &boundary_ids, double relative_tolerance)
Eigen::Matrix< double, 1, Eigen::Dynamic, Eigen::RowMajor, 1, 3 > RowVectorNd
Definition Types.hpp:13
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix
Definition Types.hpp:24