Loading [MathJax]/extensions/tex2jax.js
PolyFEM
Toggle main menu visibility
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
y
z
Variables
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
x
y
z
Typedefs
Enumerations
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
Typedefs
b
c
d
e
f
g
h
l
m
n
o
p
q
s
t
v
Enumerations
Related Symbols
a
c
e
g
i
l
o
p
s
Files
File List
File Members
All
_
a
c
d
e
f
g
h
i
j
l
m
o
p
q
r
s
t
u
v
w
x
y
z
Functions
Variables
_
a
c
d
e
f
g
i
l
m
q
s
t
v
w
x
y
z
Macros
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
Loading...
Searching...
No Matches
PeriodicLagrangianForm.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
AugmentedLagrangianForm.hpp
"
4
#include <
polyfem/assembler/PeriodicBoundary.hpp
>
5
6
namespace
polyfem::solver
7
{
9
class
PeriodicLagrangianForm
:
public
AugmentedLagrangianForm
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
}
20
std::string
name
()
const override
{
…
}
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
};
9
class
PeriodicLagrangianForm
:
public
AugmentedLagrangianForm
{
…
};
60
}
// namespace polyfem::solver
AugmentedLagrangianForm.hpp
PeriodicBoundary.hpp
x
int x
Definition
SplineBasis3d.cpp:55
polyfem::solver::AugmentedLagrangianForm
Form of the augmented lagrangian.
Definition
AugmentedLagrangianForm.hpp:9
polyfem::solver::PeriodicLagrangianForm
Form of the augmented lagrangian for bc constraints.
Definition
PeriodicLagrangianForm.hpp:10
polyfem::solver::PeriodicLagrangianForm::update_lagrangian
void update_lagrangian(const Eigen::VectorXd &x, const double k_al) override
Definition
PeriodicLagrangianForm.cpp:88
polyfem::solver::PeriodicLagrangianForm::not_constraints_
Eigen::VectorXi not_constraints_
Not Constraints.
Definition
PeriodicLagrangianForm.hpp:58
polyfem::solver::PeriodicLagrangianForm::name
std::string name() const override
Definition
PeriodicLagrangianForm.hpp:20
polyfem::solver::PeriodicLagrangianForm::n_dofs_
const int n_dofs_
Definition
PeriodicLagrangianForm.hpp:56
polyfem::solver::PeriodicLagrangianForm::first_derivative_unweighted
void first_derivative_unweighted(const Eigen::VectorXd &x, Eigen::VectorXd &gradv) const override
Compute the first derivative of the value wrt x.
Definition
PeriodicLagrangianForm.cpp:71
polyfem::solver::PeriodicLagrangianForm::project_gradient
virtual void project_gradient(Eigen::VectorXd &grad) const override
Definition
PeriodicLagrangianForm.cpp:52
polyfem::solver::PeriodicLagrangianForm::second_derivative_unweighted
void second_derivative_unweighted(const Eigen::VectorXd &x, StiffnessMatrix &hessian) const override
Compute the second derivative of the value wrt x.
Definition
PeriodicLagrangianForm.cpp:76
polyfem::solver::PeriodicLagrangianForm::constraints_
Eigen::VectorXi constraints_
Constraints.
Definition
PeriodicLagrangianForm.hpp:57
polyfem::solver::PeriodicLagrangianForm::update_quantities
void update_quantities(const double t, const Eigen::VectorXd &x) override
Update time dependent quantities.
Definition
PeriodicLagrangianForm.hpp:44
polyfem::solver::PeriodicLagrangianForm::periodic_bc_
const std::shared_ptr< utils::PeriodicBoundary > periodic_bc_
Definition
PeriodicLagrangianForm.hpp:55
polyfem::solver::PeriodicLagrangianForm::value_unweighted
double value_unweighted(const Eigen::VectorXd &x) const override
Compute the value of the form.
Definition
PeriodicLagrangianForm.cpp:62
polyfem::solver::PeriodicLagrangianForm::can_project
virtual bool can_project() const override
Definition
PeriodicLagrangianForm.cpp:50
polyfem::solver::PeriodicLagrangianForm::compute_error
double compute_error(const Eigen::VectorXd &x) const override
Definition
PeriodicLagrangianForm.cpp:81
polyfem::solver::PeriodicLagrangianForm::project_hessian
virtual void project_hessian(StiffnessMatrix &hessian) const override
Definition
PeriodicLagrangianForm.cpp:57
polyfem::solver
Definition
OptState.hpp:16
polyfem::StiffnessMatrix
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix
Definition
Types.hpp:22
src
polyfem
solver
forms
lagrangian
PeriodicLagrangianForm.hpp
Generated by
1.9.8