PolyFEM
Loading...
Searching...
No Matches
ThermoElasticity.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <memory>
6
7namespace polyfem::assembler
8{
9 namespace detail
10 {
11 class ThermoElasticityModel;
12 }
13
15 {
16 public:
19
20 std::string name() const override { return "ThermoElasticity"; }
21 std::map<std::string, ParamFunc> parameters() const override;
22
23 void set_size(const int size) override;
24 void add_multimaterial(const int index, const json &params, const Units &units, const std::string &root_path) override;
25
26 protected:
27 int rows() const override { return size(); }
28 int cols() const override { return 1; }
29
30 double compute_energy(const MixedNonLinearAssemblerData &data) const override;
31 Eigen::VectorXd compute_gradient(const MixedNonLinearAssemblerData &data) const override;
32 Eigen::MatrixXd compute_hessian(const MixedNonLinearAssemblerData &data) const override;
33
34 private:
37
38 std::unique_ptr<detail::ThermoElasticityModel> model_;
40 };
41} // namespace polyfem::assembler
std::map< std::string, ParamFunc > parameters() const override
double compute_energy(const MixedNonLinearAssemblerData &data) const override
void set_size(const int size) override
detail::ThermoElasticityModel & model()
Eigen::VectorXd compute_gradient(const MixedNonLinearAssemblerData &data) const override
void add_multimaterial(const int index, const json &params, const Units &units, const std::string &root_path) override
Eigen::MatrixXd compute_hessian(const MixedNonLinearAssemblerData &data) const override
std::unique_ptr< detail::ThermoElasticityModel > model_
std::string name() const override
Used for test only.
nlohmann::json json
Definition Common.hpp:9