PolyFEM
Loading...
Searching...
No Matches
ImplicitNewmark.hpp
Go to the documentation of this file.
1#pragma once
2
4
6{
14 {
15 public:
17
20 void set_parameters(const json &params) override;
21
24 void update_quantities(const Eigen::VectorXd &x) override;
25
31 Eigen::VectorXd x_tilde() const override;
32
41 Eigen::VectorXd compute_velocity(const Eigen::VectorXd &x) const override;
42
49 Eigen::VectorXd compute_acceleration(const Eigen::VectorXd &v) const override;
50
55 double acceleration_scaling() const override;
56
68 double dv_dx(const unsigned prev_ti = 0) const override;
69
70 double da_dx(const unsigned prev_ti = 0) const;
71
73 double beta() const { return beta_; }
75 double gamma() const { return gamma_; }
76
77 protected:
79 double beta_ = 0.25;
81 double gamma_ = 0.5;
82 };
83} // namespace polyfem::time_integrator
int x
double beta() const
parameter for blending accelerations in the solution update.
double acceleration_scaling() const override
Compute the acceleration scaling used to scale forces when integrating a second order ODE.
double da_dx(const unsigned prev_ti=0) const
double gamma_
parameter for blending accelerations in the velocity update.
double beta_
parameter for blending accelerations in the solution update.
Eigen::VectorXd x_tilde() const override
Compute the predicted solution to be used in the inertia term .
void set_parameters(const json &params) override
Set the gamma and beta parameters from a json object.
double gamma() const
parameter for blending accelerations in the velocity update.
Eigen::VectorXd compute_velocity(const Eigen::VectorXd &x) const override
Compute the current velocity given the current solution and using the stored previous solution(s).
Eigen::VectorXd compute_acceleration(const Eigen::VectorXd &v) const override
Compute the current acceleration given the current velocity and using the stored previous velocity(s)...
double dv_dx(const unsigned prev_ti=0) const override
Compute the derivative of the velocity with respect to the solution.
void update_quantities(const Eigen::VectorXd &x) override
Update the time integration quantities (i.e., , , and ).
Implicit time integrator of a second order ODE (equivently a system of coupled first order ODEs).
nlohmann::json json
Definition Common.hpp:9