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
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
LaggedRegForm.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
Form.hpp
"
4
5
#include <
polyfem/utils/Types.hpp
>
6
7
namespace
polyfem::solver
8
{
10
class
LaggedRegForm
:
public
Form
11
{
12
public
:
14
LaggedRegForm
(
const
int
n_lagging_iters);
15
16
std::string
name
()
const override
{
return
"lagged-regularization"
; }
17
18
protected
:
22
double
value_unweighted
(
const
Eigen::VectorXd &
x
)
const override
;
23
27
void
first_derivative_unweighted
(
const
Eigen::VectorXd &
x
, Eigen::VectorXd &gradv)
const override
;
28
32
void
second_derivative_unweighted
(
const
Eigen::VectorXd &
x
,
StiffnessMatrix
&hessian)
const override
;
33
34
public
:
37
void
init_lagging
(
const
Eigen::VectorXd &
x
)
override
;
38
42
void
update_lagging
(
const
Eigen::VectorXd &
x
,
const
int
iter_num)
override
;
43
46
bool
uses_lagging
()
const override
{
return
true
; }
47
48
private
:
49
int
n_lagging_iters_
;
50
Eigen::VectorXd
x_lagged_
;
51
};
10
class
LaggedRegForm
:
public
Form
{
…
};
52
}
// namespace polyfem::solver
Form.hpp
x
int x
Definition
SplineBasis3d.cpp:55
Types.hpp
polyfem::solver::Form
Definition
Form.hpp:11
polyfem::solver::LaggedRegForm
Tikonov regularization form between x and x_lagged.
Definition
LaggedRegForm.hpp:11
polyfem::solver::LaggedRegForm::init_lagging
void init_lagging(const Eigen::VectorXd &x) override
Initialize lagged fields.
Definition
LaggedRegForm.cpp:32
polyfem::solver::LaggedRegForm::update_lagging
void update_lagging(const Eigen::VectorXd &x, const int iter_num) override
Update lagged fields.
Definition
LaggedRegForm.cpp:37
polyfem::solver::LaggedRegForm::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
LaggedRegForm.cpp:26
polyfem::solver::LaggedRegForm::n_lagging_iters_
int n_lagging_iters_
Number of iterations to lag for.
Definition
LaggedRegForm.hpp:49
polyfem::solver::LaggedRegForm::uses_lagging
bool uses_lagging() const override
Does this form require lagging?
Definition
LaggedRegForm.hpp:46
polyfem::solver::LaggedRegForm::value_unweighted
double value_unweighted(const Eigen::VectorXd &x) const override
Compute the value of the form.
Definition
LaggedRegForm.cpp:16
polyfem::solver::LaggedRegForm::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
LaggedRegForm.cpp:21
polyfem::solver::LaggedRegForm::x_lagged_
Eigen::VectorXd x_lagged_
The full variables from the previous lagging solve.
Definition
LaggedRegForm.hpp:50
polyfem::solver::LaggedRegForm::name
std::string name() const override
Definition
LaggedRegForm.hpp:16
polyfem::solver
Definition
OptState.hpp:16
polyfem::StiffnessMatrix
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix
Definition
Types.hpp:22
src
polyfem
solver
forms
LaggedRegForm.hpp
Generated by
1.9.8