PolyFEM
Loading...
Searching...
No Matches
InertiaForm.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include "
Form.hpp
"
4
5
#include <
polyfem/utils/Types.hpp
>
6
#include <
polyfem/time_integrator/ImplicitTimeIntegrator.hpp
>
7
8
#include <Eigen/Core>
9
10
namespace
polyfem::solver
11
{
13
class
InertiaForm
:
public
Form
14
{
15
friend
class
InertiaForceDerivative
;
16
17
public
:
21
InertiaForm
(
const
StiffnessMatrix
&mass,
22
const
time_integrator::ImplicitTimeIntegrator
&time_integrator);
23
24
std::string
name
()
const override
{
return
"inertia"
; }
25
26
protected
:
30
double
value_unweighted
(
const
Eigen::VectorXd &
x
)
const override
;
31
35
void
first_derivative_unweighted
(
const
Eigen::VectorXd &
x
, Eigen::VectorXd &gradv)
const override
;
36
40
void
second_derivative_unweighted
(
const
Eigen::VectorXd &
x
,
StiffnessMatrix
&hessian)
const override
;
41
42
private
:
43
// TODO mass might be time dependent
44
const
StiffnessMatrix
&
mass_
;
45
const
time_integrator::ImplicitTimeIntegrator
&
time_integrator_
;
46
};
47
}
// namespace polyfem::solver
Form.hpp
ImplicitTimeIntegrator.hpp
x
int x
Definition
SplineBasis3d.cpp:55
Types.hpp
polyfem::solver::Form
Definition
Form.hpp:11
polyfem::solver::InertiaForceDerivative
Definition
InertiaForceDerivative.hpp:13
polyfem::solver::InertiaForm
Form of the inertia.
Definition
InertiaForm.hpp:14
polyfem::solver::InertiaForm::value_unweighted
double value_unweighted(const Eigen::VectorXd &x) const override
Compute the value of the form.
Definition
InertiaForm.cpp:17
polyfem::solver::InertiaForm::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
InertiaForm.cpp:26
polyfem::solver::InertiaForm::name
std::string name() const override
Definition
InertiaForm.hpp:24
polyfem::solver::InertiaForm::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
InertiaForm.cpp:31
polyfem::solver::InertiaForm::time_integrator_
const time_integrator::ImplicitTimeIntegrator & time_integrator_
Time integrator.
Definition
InertiaForm.hpp:45
polyfem::solver::InertiaForm::mass_
const StiffnessMatrix & mass_
Mass matrix.
Definition
InertiaForm.hpp:44
polyfem::time_integrator::ImplicitTimeIntegrator
Implicit time integrator of a second order ODE (equivently a system of coupled first order ODEs).
Definition
ImplicitTimeIntegrator.hpp:15
polyfem::solver
Definition
AdjointNLProblem.cpp:17
polyfem::StiffnessMatrix
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix
Definition
Types.hpp:24
src
polyfem
solver
forms
InertiaForm.hpp
Generated by
1.9.8