41 std::string
name()
const override {
return "MultiModels"; }
42 std::map<std::string, ParamFunc>
parameters()
const override;
49 const std::function<Eigen::MatrixXd(
const Eigen::MatrixXd &)> &fun)
const override;
VectorNd compute_rhs(const AutodiffHessianPt &pt) const override
std::vector< std::string > multi_material_models_
UnconstrainedOgdenElasticity unconstrained_ogden_elasticity_
LinearElasticity linear_elasticity_
FixedCorotational fixed_corotational_
MooneyRivlinElasticity mooney_rivlin_elasticity_
void set_size(const int size) override
void add_multimaterial(const int index, const json ¶ms, const Units &units) override
SaintVenantElasticity saint_venant_
Eigen::MatrixXd assemble_hessian(const NonLinearAssemblerData &data) const override
Eigen::VectorXd assemble_gradient(const NonLinearAssemblerData &data) const override
double compute_energy(const NonLinearAssemblerData &data) const override
MooneyRivlin3ParamElasticity mooney_rivlin_3_param_elasticity_
std::map< std::string, ParamFunc > parameters() const override
IncompressibleOgdenElasticity incompressible_ogden_elasticity_
HookeLinearElasticity hooke_
void assign_stress_tensor(const OutputData &data, const int all_size, const ElasticityTensorType &type, Eigen::MatrixXd &all, const std::function< Eigen::MatrixXd(const Eigen::MatrixXd &)> &fun) const override
NeoHookeanElasticity neo_hookean_
std::string name() const override
void init_multimodels(const std::vector< std::string > &mats)
double assemble_energy(const bool is_volume, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &cache, const double t, const double dt, const Eigen::MatrixXd &displacement, const Eigen::MatrixXd &displacement_prev) const override
void assemble_gradient(const bool is_volume, const int n_basis, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &cache, const double t, const double dt, const Eigen::MatrixXd &displacement, const Eigen::MatrixXd &displacement_prev, Eigen::MatrixXd &rhs) const override
void assemble_hessian(const bool is_volume, const int n_basis, const bool project_to_psd, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &gbases, const AssemblyValsCache &cache, const double t, const double dt, const Eigen::MatrixXd &displacement, const Eigen::MatrixXd &displacement_prev, utils::MatrixCache &mat_cache, StiffnessMatrix &grad) const override
Eigen::Matrix< AutodiffScalarHessian, Eigen::Dynamic, 1, 0, 3, 1 > AutodiffHessianPt
Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 3, 1 > VectorNd