PolyFEM
Loading...
Searching...
No Matches
polyfem::varform::ThermoElasticVarForm Class Reference

#include <ThermoElasticVarForm.hpp>

Inheritance diagram for polyfem::varform::ThermoElasticVarForm:
[legend]
Collaboration diagram for polyfem::varform::ThermoElasticVarForm:
[legend]

Public Member Functions

std::string name () const override
 Get the name of the variational formulation.
 
void init (const std::string &formulation, const Units &units, const json &args, const std::string &out_path) override
 Initialize the variational formulation with the given parameters.
 
io::OutStatsData compute_errors (const Eigen::MatrixXd &solution) override
 Get the error statistics of the variational formulation, for output purposes.
 
std::vector< io::OutputFieldoutput_fields (const io::OutputSample &sample, const Eigen::MatrixXd &solution, const io::OutputFieldOptions &options) const override
 Get the output fields of the variational formulation, for output purposes.
 
- Public Member Functions inherited from polyfem::varform::NonlinearElasticVarForm
bool is_contact_enabled () const override
 Check if contact is enabled for the variational formulation, for output purposes.
 
io::OutputSpace output_space () const override
 Get the output space of the variational formulation, for output purposes.
 
- Public Member Functions inherited from polyfem::varform::ElasticVarForm
void save_json (const Eigen::MatrixXd &solution, std::ostream &out) const override
 Save the solution to a JSON file, for output purposes.
 
void export_data (const Eigen::MatrixXd &solution) const override
 
- Public Member Functions inherited from polyfem::varform::VarForm
virtual ~VarForm ()=default
 
void set_args (const json &args)
 Reset the internal state of the variational formulation, e.g.
 
void set_mesh (std::unique_ptr< mesh::Mesh > mesh, const double loading_mesh_time=0)
 Set the mesh for the variational formulation.
 
void solve (Eigen::MatrixXd &sol)
 Solve the variational formulation and store the solution in the given matrix.
 
void set_time_callback (const std::function< void(int, int, double, double)> &callback)
 
int problem_dimension () const
 Get the problem dimension of the variational formulation, for output purposes.
 
const io::OutRuntimeDataoutput_timings () const
 Get the runtime timings of the variational formulation, for output purposes.
 
void save_json (const Eigen::MatrixXd &solution) const
 Save the solution to a JSON file, for output purposes.
 

Private Member Functions

void reset () override
 
void load_mesh (const mesh::Mesh &mesh, const json &args) override
 
void build_basis (mesh::Mesh &mesh, const bool iso_parametric, const json &args) override
 
void assemble_rhs (const mesh::Mesh &mesh) override
 
void assemble_mass_mat (const mesh::Mesh &mesh, const json &args) override
 
void solve_problem (Eigen::MatrixXd &sol) override
 
void build_rhs_assembler () override
 
void read_material_space_ids (const json &args)
 
json elastic_material_args () const
 
json time_integrator_args (const int fe_space_id) const
 
void build_displacement_boundary (mesh::Mesh &mesh)
 
void build_temperature_basis (mesh::Mesh &mesh, const bool iso_parametric, const json &args)
 
void build_temperature_boundary (mesh::Mesh &mesh)
 
void build_forms (Eigen::MatrixXd &solution, const double t)
 
void update_transient_form_weights ()
 
void solve_nonlinear_step (const int step, Eigen::MatrixXd &solution)
 
void initial_temperature_solution (Eigen::MatrixXd &solution) const
 
void split_solution (const Eigen::MatrixXd &solution, Eigen::MatrixXd &displacement, Eigen::MatrixXd &temperature) const
 
Eigen::MatrixXd stacked_solution (const Eigen::MatrixXd &displacement, const Eigen::MatrixXd &temperature) const
 
int displacement_ndof () const
 
int temperature_ndof () const
 
int total_ndof () const
 

Private Attributes

FESpace temperature_space_
 
VarFormBoundaryState temperature_boundary_
 
std::shared_ptr< assembler::Problemtemperature_problem_
 
assembler::AssemblyValsCache temperature_ass_vals_cache_
 
assembler::AssemblyValsCache temperature_mass_ass_vals_cache_
 
assembler::AssemblyValsCache temperature_pure_mass_ass_vals_cache_
 
std::shared_ptr< assembler::Assemblertemperature_assembler_
 
std::shared_ptr< assembler::MixedNLAssemblerthermoelastic_assembler_
 
std::shared_ptr< assembler::Masstemperature_mass_assembler_
 
std::shared_ptr< assembler::HRZMasstemperature_pure_mass_assembler_
 
std::shared_ptr< assembler::RhsAssemblertemperature_rhs_assembler_
 
std::shared_ptr< assembler::Densitytemperature_rhs_density_
 
StiffnessMatrix temperature_mass_
 
StiffnessMatrix temperature_pure_mass_
 
StiffnessMatrix stacked_lumped_mass_
 
Eigen::MatrixXd temperature_rhs_
 
std::shared_ptr< time_integrator::ImplicitTimeIntegratortemperature_time_integrator_
 
std::shared_ptr< solver::ElasticForm > temperature_form_
 
std::shared_ptr< solver::MixedAssemblerFormthermoelastic_form_
 
std::shared_ptr< solver::BodyFormtemperature_body_form_
 
std::shared_ptr< solver::InertiaFormtemperature_inertia_form_
 
std::shared_ptr< solver::StackedFormstacked_form_
 
int displacement_space_id_ = -1
 
int temperature_space_id_ = -1
 
std::string elastic_formulation_ = "NeoHookean"
 

Additional Inherited Members

- Protected Member Functions inherited from polyfem::varform::NonlinearElasticVarForm
void init_solve (Eigen::MatrixXd &sol, const double t)
 
void init_forms (const json &args, const int dim, Eigen::MatrixXd &sol, const double t)
 
void solve_tensor_nonlinear (int step, Eigen::MatrixXd &sol, const bool init_lagging=true)
 
std::shared_ptr< assembler::PressureAssemblerbuild_pressure_assembler () const
 
void build_collision_mesh (const mesh::Mesh &mesh, const json &args)
 
void preprocess_contact_parameters ()
 
void build_collision_mesh (const mesh::Mesh &mesh, const int n_bases, const std::vector< basis::ElementBases > &bases, const std::vector< basis::ElementBases > &geom_bases, const std::vector< mesh::LocalBoundary > &total_local_boundary, const mesh::Obstacle &obstacle, const json &args, const std::function< std::string(const std::string &)> &resolve_input_path, const Eigen::VectorXi &in_node_to_node, ipc::CollisionMesh &collision_mesh)
 
int n_obstacle_vertices () const override
 
- Protected Member Functions inherited from polyfem::varform::ElasticVarForm
void build_elastic_basis (mesh::Mesh &mesh, const bool iso_parametric, const json &args, const int fe_space_id)
 
void initial_velocity (Eigen::MatrixXd &velocity) const
 
void initial_acceleration (Eigen::MatrixXd &acceleration) const
 
void initial_elastic_solution (Eigen::MatrixXd &solution) const
 
QuadratureOrders elastic_boundary_samples () const
 
std::vector< int > elastic_primitive_to_node () const
 
std::vector< int > elastic_node_to_primitive () const
 
void build_mesh_matrices (Eigen::MatrixXd &V, Eigen::MatrixXi &F) const
 
void save_elastic_step_state (const double t0, const double dt, const int t, const time_integrator::ImplicitTimeIntegrator *time_integrator) const
 
std::vector< io::OutputFieldelastic_output_fields (const io::OutputSample &sample, const Eigen::MatrixXd &solution, const io::OutputFieldOptions &options, const mesh::Obstacle *obstacle, const time_integrator::ImplicitTimeIntegrator *time_integrator, const std::vector< std::pair< std::string, std::shared_ptr< solver::Form > > > &named_forms, const solver::Form *elastic_form, const solver::ContactForm *contact_form=nullptr) const
 
void append_primary_output_fields (std::vector< io::OutputField > &fields, const io::OutputSample &sample, const Eigen::MatrixXd &solution, const io::OutputFieldOptions &options, const mesh::Obstacle *obstacle=nullptr) const
 
Eigen::MatrixXd displaced_output_normals (const io::OutputSample &sample, const Eigen::MatrixXd &solution) const
 
- Protected Member Functions inherited from polyfem::varform::VarForm
std::string resolve_output_path (const std::string &path) const
 
std::string resolve_input_path (const std::string &path, const bool only_if_exists=false) const
 
void set_materials (assembler::Assembler &assembler, const int size) const
 
void assign_discr_orders (const json &discr_order, const mesh::Mesh &mesh, Eigen::VectorXi &disc_orders)
 
void assign_discr_orders (const json &discr_order, const int fe_space_id, const mesh::Mesh &mesh, Eigen::VectorXi &disc_orders)
 
void prepare ()
 
QuadratureOrders n_boundary_samples (const int discr_order, const int gdiscr_order) const
 
void build_fe_space (mesh::Mesh &mesh, const bool iso_parametric, const Eigen::VectorXi &disc_orders, const std::string &basis_type, const std::string &poly_basis_type, const assembler::Assembler &space_assembler, const int value_dim, const int quadrature_order, const int mass_quadrature_order, const bool use_corner_quadrature, const int n_harmonic_samples, const int integral_constraints, FESpace &space, VarFormBoundaryState &boundary, std::shared_ptr< GeometryMapping > geometry=nullptr)
 
void save_step_state (const double t0, const double dt, const int t, const time_integrator::ImplicitTimeIntegrator *time_integrator, const bool rest_mesh_written=false) const
 
void ensure_output_sampler () const
 
void save_restart_json (const double t0, const double dt, const int t, const bool rest_mesh_written) const
 
void save_timestep (const double time, const int t, const double t0, const double dt, const Eigen::MatrixXd &solution) const
 
void save_subsolve (const int i, const int t, const Eigen::MatrixXd &solution) const
 
int output_file_index (const int t) const
 
void notify_time_step (const int t, const int time_steps, const double t0, const double dt) const
 
io::OutGeometryData::ExportOptions export_options (const io::OutputSpace &space) const
 
io::OutputFieldFunction output_field_function (const Eigen::MatrixXd &solution, const io::OutGeometryData::ExportOptions &opts) const
 
- Static Protected Member Functions inherited from polyfem::varform::VarForm
static bool read_initial_x_from_file (const std::string &state_path, const std::string &x_name, const bool reorder, const Eigen::VectorXi &in_node_to_node, const int dim, Eigen::MatrixXd &x)
 
static void rebuild_node_positions (const std::vector< basis::ElementBases > &bases, const std::vector< int > &node_ids, std::vector< RowVectorNd > &positions)
 
- Protected Attributes inherited from polyfem::varform::NonlinearElasticVarForm
ipc::CollisionMesh collision_mesh
 
std::shared_ptr< assembler::PressureAssemblerelasticity_pressure_assembler = nullptr
 
std::shared_ptr< assembler::ViscousDampingdamping_assembler = nullptr
 
std::shared_ptr< assembler::ViscousDampingPrevdamping_prev_assembler = nullptr
 
mesh::Obstacle obstacle
 
solver::SolveData solve_data
 
std::vector< std::shared_ptr< solver::Form > > forms
 
bool contact_dhat_was_explicit_ = false
 
- Protected Attributes inherited from polyfem::varform::ElasticVarForm
FESpace space_
 
VarFormBoundaryState boundary_
 
assembler::AssemblyValsCache ass_vals_cache_
 
assembler::AssemblyValsCache mass_ass_vals_cache_
 
assembler::AssemblyValsCache pure_mass_ass_vals_cache_
 
std::shared_ptr< assembler::RhsAssemblerrhs_assembler_
 
StiffnessMatrix mass_
 
StiffnessMatrix pure_mass_
 
double avg_mass_ = 0
 
Eigen::MatrixXd rhs_
 
std::shared_ptr< assembler::Assemblerprimary_assembler_ = nullptr
 
std::shared_ptr< assembler::Massmass_assembler_ = nullptr
 
std::shared_ptr< assembler::HRZMasspure_mass_assembler_ = nullptr
 
double t0 = 0
 
int time_steps = 0
 
double dt = 0
 
- Protected Attributes inherited from polyfem::varform::VarForm
std::shared_ptr< assembler::Problemproblem
 current problem, it contains rhs and bc
 
Units units
 
json args
 
io::OutStatsData stats
 
io::OutRuntimeData timings
 runtime statistics
 
std::string root_path
 
std::string output_path
 
std::unique_ptr< mesh::Meshmesh_
 
std::function< void(int, int, double, double)> time_callback
 
io::OutGeometryData output_geometry_
 
bool output_sampler_initialized_ = false
 
bool prepared_ = false
 

Detailed Description

Definition at line 37 of file ThermoElasticVarForm.hpp.

Member Function Documentation

◆ assemble_mass_mat()

void polyfem::varform::ThermoElasticVarForm::assemble_mass_mat ( const mesh::Mesh mesh,
const json args 
)
overrideprivatevirtual

◆ assemble_rhs()

◆ build_basis()

void polyfem::varform::ThermoElasticVarForm::build_basis ( mesh::Mesh mesh,
const bool  iso_parametric,
const json args 
)
overrideprivatevirtual

Reimplemented from polyfem::varform::NonlinearElasticVarForm.

Definition at line 324 of file ThermoElasticVarForm.cpp.

References polyfem::varform::VarForm::args, polyfem::varform::ElasticVarForm::ass_vals_cache_, polyfem::varform::VarForm::assign_discr_orders(), polyfem::varform::FESpace::basis_list(), polyfem::varform::ElasticVarForm::boundary_, polyfem::varform::VarFormBoundaryState::boundary_nodes, polyfem::varform::NonlinearElasticVarForm::build_collision_mesh(), build_displacement_boundary(), polyfem::varform::VarForm::build_fe_space(), build_temperature_basis(), build_temperature_boundary(), polyfem::io::OutStatsData::compute_mesh_size(), polyfem::io::OutStatsData::count_flipped_elements(), polyfem::mesh::Mesh::dimension(), displacement_space_id_, polyfem::varform::FESpace::geometry_basis_list(), polyfem::assembler::AssemblyValsCache::init(), polyfem::assembler::AssemblyValsCache::init_empty(), polyfem::mesh::Mesh::is_volume(), polyfem::logger(), polyfem::varform::ElasticVarForm::mass_ass_vals_cache_, polyfem::io::OutStatsData::mesh_size, polyfem::varform::FESpace::n_bases, polyfem::io::OutStatsData::n_flipped, polyfem::mesh::Obstacle::n_vertices(), polyfem::varform::VarFormBoundaryState::normalize_boundary_nodes(), polyfem::varform::NonlinearElasticVarForm::obstacle, polyfem::refinement::APriori::p_refine(), polyfem::varform::NonlinearElasticVarForm::preprocess_contact_parameters(), polyfem::varform::ElasticVarForm::primary_assembler_, polyfem::varform::VarForm::problem, polyfem::varform::ElasticVarForm::pure_mass_ass_vals_cache_, polyfem::varform::ElasticVarForm::space_, polyfem::varform::FESpace::space_in_node_to_node, polyfem::varform::VarForm::stats, temperature_ass_vals_cache_, temperature_assembler_, temperature_mass_ass_vals_cache_, temperature_problem_, temperature_pure_mass_ass_vals_cache_, temperature_space_, and polyfem::mesh::Mesh::update_nodes().

Here is the call graph for this function:

◆ build_displacement_boundary()

void polyfem::varform::ThermoElasticVarForm::build_displacement_boundary ( mesh::Mesh mesh)
private

◆ build_forms()

void polyfem::varform::ThermoElasticVarForm::build_forms ( Eigen::MatrixXd &  solution,
const double  t 
)
private

Definition at line 688 of file ThermoElasticVarForm.cpp.

References polyfem::solver::SolveData::al_form, polyfem::varform::VarForm::args, polyfem::varform::ElasticVarForm::ass_vals_cache_, polyfem::varform::FESpace::bases, polyfem::varform::FESpace::basis_list(), polyfem::varform::ElasticVarForm::boundary_, polyfem::varform::VarFormBoundaryState::boundary_nodes, polyfem::time_integrator::ImplicitTimeIntegrator::construct_time_integrator(), polyfem::varform::FESpace::disc_orders, polyfem::solver::Discrete, displacement_ndof(), displacement_space_id_, polyfem::varform::ElasticVarForm::dt, polyfem::varform::ElasticVarForm::elastic_boundary_samples(), polyfem::time_integrator::ImplicitTimeIntegrator::First, polyfem::varform::NonlinearElasticVarForm::forms, polyfem::varform::FESpace::geometry_basis_list(), polyfem::varform::NonlinearElasticVarForm::init_forms(), polyfem::varform::ElasticVarForm::initial_acceleration(), polyfem::varform::ElasticVarForm::initial_elastic_solution(), initial_temperature_solution(), polyfem::varform::ElasticVarForm::initial_velocity(), polyfem::varform::VarFormBoundaryState::local_boundary, polyfem::varform::VarFormBoundaryState::local_neumann_boundary, polyfem::varform::ElasticVarForm::mass_, polyfem::varform::VarForm::mesh_, polyfem::varform::FESpace::n_bases, polyfem::varform::VarForm::n_boundary_samples(), polyfem::mesh::Obstacle::n_vertices(), polyfem::varform::NonlinearElasticVarForm::obstacle, polyfem::varform::VarForm::output_path, polyfem::varform::VarForm::problem, polyfem::varform::ElasticVarForm::rhs_assembler_, polyfem::time_integrator::ImplicitTimeIntegrator::Second, polyfem::varform::NonlinearElasticVarForm::solve_data, polyfem::varform::ElasticVarForm::space_, split_solution(), stacked_form_, temperature_ass_vals_cache_, temperature_assembler_, temperature_body_form_, temperature_boundary_, temperature_form_, temperature_inertia_form_, temperature_mass_, temperature_ndof(), temperature_rhs_, temperature_rhs_assembler_, temperature_rhs_density_, temperature_space_, temperature_space_id_, temperature_time_integrator_, thermoelastic_assembler_, thermoelastic_form_, polyfem::solver::SolveData::time_integrator, time_integrator_args(), total_ndof(), and update_transient_form_weights().

Referenced by solve_problem().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ build_rhs_assembler()

void polyfem::varform::ThermoElasticVarForm::build_rhs_assembler ( )
overrideprivatevirtual

Reimplemented from polyfem::varform::NonlinearElasticVarForm.

Definition at line 541 of file ThermoElasticVarForm.cpp.

References polyfem::varform::VarForm::args, polyfem::varform::FESpace::basis_list(), polyfem::varform::ElasticVarForm::boundary_, polyfem::varform::VarFormBoundaryState::dirichlet_nodes, polyfem::varform::VarFormBoundaryState::dirichlet_nodes_position, displacement_space_id_, polyfem::varform::FESpace::geometry_basis_list(), polyfem::varform::ElasticVarForm::mass_ass_vals_cache_, polyfem::varform::VarForm::mesh_, polyfem::varform::FESpace::n_bases, polyfem::varform::VarFormBoundaryState::neumann_nodes, polyfem::varform::VarFormBoundaryState::neumann_nodes_position, polyfem::varform::NonlinearElasticVarForm::obstacle, polyfem::varform::ElasticVarForm::primary_assembler_, polyfem::varform::VarForm::problem, polyfem::solver::SolveData::rhs_assembler, polyfem::varform::ElasticVarForm::rhs_assembler_, polyfem::varform::NonlinearElasticVarForm::solve_data, polyfem::varform::ElasticVarForm::space_, temperature_assembler_, temperature_boundary_, temperature_mass_ass_vals_cache_, temperature_problem_, temperature_rhs_assembler_, temperature_space_, and temperature_space_id_.

Referenced by assemble_rhs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ build_temperature_basis()

void polyfem::varform::ThermoElasticVarForm::build_temperature_basis ( mesh::Mesh mesh,
const bool  iso_parametric,
const json args 
)
private

Definition at line 469 of file ThermoElasticVarForm.cpp.

References polyfem::varform::VarForm::args, polyfem::varform::VarForm::assign_discr_orders(), polyfem::varform::VarForm::build_fe_space(), polyfem::varform::FESpace::geometry, polyfem::logger(), polyfem::varform::FESpace::n_bases, polyfem::varform::ElasticVarForm::space_, temperature_assembler_, temperature_boundary_, temperature_space_, and temperature_space_id_.

Referenced by build_basis().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ build_temperature_boundary()

◆ compute_errors()

io::OutStatsData polyfem::varform::ThermoElasticVarForm::compute_errors ( const Eigen::MatrixXd &  solution)
overridevirtual

Get the error statistics of the variational formulation, for output purposes.

Returns
Error statistics

Reimplemented from polyfem::varform::ElasticVarForm.

Definition at line 1014 of file ThermoElasticVarForm.cpp.

References polyfem::varform::VarForm::args, polyfem::varform::FESpace::basis_list(), polyfem::io::OutStatsData::compute_errors(), polyfem::varform::FESpace::geometry_basis_list(), polyfem::varform::VarForm::mesh_, polyfem::varform::FESpace::n_bases, polyfem::varform::VarForm::problem, polyfem::varform::ElasticVarForm::space_, split_solution(), and polyfem::varform::VarForm::stats.

Here is the call graph for this function:

◆ displacement_ndof()

int polyfem::varform::ThermoElasticVarForm::displacement_ndof ( ) const
inlineprivate

Definition at line 80 of file ThermoElasticVarForm.hpp.

References polyfem::varform::FESpace::ndof(), and polyfem::varform::ElasticVarForm::space_.

Referenced by assemble_mass_mat(), build_forms(), solve_nonlinear_step(), split_solution(), stacked_solution(), and total_ndof().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ elastic_material_args()

json polyfem::varform::ThermoElasticVarForm::elastic_material_args ( ) const
private

Definition at line 257 of file ThermoElasticVarForm.cpp.

References polyfem::varform::VarForm::args.

Referenced by load_mesh().

Here is the caller graph for this function:

◆ init()

void polyfem::varform::ThermoElasticVarForm::init ( const std::string &  formulation,
const Units units,
const json args,
const std::string &  out_path 
)
overridevirtual

◆ initial_temperature_solution()

void polyfem::varform::ThermoElasticVarForm::initial_temperature_solution ( Eigen::MatrixXd &  solution) const
private

Definition at line 652 of file ThermoElasticVarForm.cpp.

References polyfem::varform::VarForm::args, polyfem::varform::VarForm::read_initial_x_from_file(), polyfem::varform::VarForm::resolve_input_path(), polyfem::varform::FESpace::space_in_node_to_node, temperature_rhs_assembler_, and temperature_space_.

Referenced by build_forms(), and solve_problem().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ load_mesh()

◆ name()

std::string polyfem::varform::ThermoElasticVarForm::name ( ) const
inlineoverridevirtual

Get the name of the variational formulation.

Returns
Name of the variational formulation

Implements polyfem::varform::VarForm.

Definition at line 40 of file ThermoElasticVarForm.hpp.

Referenced by output_fields().

Here is the caller graph for this function:

◆ output_fields()

std::vector< io::OutputField > polyfem::varform::ThermoElasticVarForm::output_fields ( const io::OutputSample sample,
const Eigen::MatrixXd &  solution,
const io::OutputFieldOptions options 
) const
overridevirtual

Get the output fields of the variational formulation, for output purposes.

Parameters
sampleOutput sample
solutionSolution matrix
optionsOutput field options
Returns
Output fields

Reimplemented from polyfem::varform::NonlinearElasticVarForm.

Definition at line 1030 of file ThermoElasticVarForm.cpp.

References polyfem::varform::VarForm::args, polyfem::io::OutputSample::Contact, polyfem::io::OutputSample::domain, polyfem::io::OutputSample::element_ids, polyfem::io::OutputFieldOptions::export_field(), polyfem::io::OutputSample::local_points, polyfem::varform::VarForm::mesh_, name(), polyfem::io::OutputSample::node_ids, polyfem::varform::NonlinearElasticVarForm::output_fields(), polyfem::io::OutputField::Point, polyfem::io::OutputSample::points, split_solution(), and polyfem::io::OutputSample::time.

Here is the call graph for this function:

◆ read_material_space_ids()

void polyfem::varform::ThermoElasticVarForm::read_material_space_ids ( const json args)
private

Definition at line 245 of file ThermoElasticVarForm.cpp.

References polyfem::varform::VarForm::args, displacement_space_id_, elastic_formulation_, polyfem::log_and_throw_error(), and temperature_space_id_.

Referenced by init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reset()

◆ solve_nonlinear_step()

◆ solve_problem()

void polyfem::varform::ThermoElasticVarForm::solve_problem ( Eigen::MatrixXd &  sol)
overrideprivatevirtual

◆ split_solution()

void polyfem::varform::ThermoElasticVarForm::split_solution ( const Eigen::MatrixXd &  solution,
Eigen::MatrixXd &  displacement,
Eigen::MatrixXd &  temperature 
) const
private

Definition at line 678 of file ThermoElasticVarForm.cpp.

References displacement_ndof(), temperature_ndof(), and total_ndof().

Referenced by build_forms(), compute_errors(), output_fields(), and solve_problem().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ stacked_solution()

Eigen::MatrixXd polyfem::varform::ThermoElasticVarForm::stacked_solution ( const Eigen::MatrixXd &  displacement,
const Eigen::MatrixXd &  temperature 
) const
private

Definition at line 665 of file ThermoElasticVarForm.cpp.

References displacement_ndof(), and temperature_ndof().

Referenced by solve_problem().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ temperature_ndof()

int polyfem::varform::ThermoElasticVarForm::temperature_ndof ( ) const
inlineprivate

Definition at line 81 of file ThermoElasticVarForm.hpp.

References polyfem::varform::FESpace::ndof(), and temperature_space_.

Referenced by assemble_mass_mat(), build_forms(), split_solution(), stacked_solution(), and total_ndof().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ time_integrator_args()

json polyfem::varform::ThermoElasticVarForm::time_integrator_args ( const int  fe_space_id) const
private

Definition at line 270 of file ThermoElasticVarForm.cpp.

References polyfem::varform::VarForm::args, and polyfem::log_and_throw_error().

Referenced by build_forms().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ total_ndof()

int polyfem::varform::ThermoElasticVarForm::total_ndof ( ) const
inlineprivate

Definition at line 82 of file ThermoElasticVarForm.hpp.

References displacement_ndof(), and temperature_ndof().

Referenced by build_forms(), solve_problem(), and split_solution().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_transient_form_weights()

void polyfem::varform::ThermoElasticVarForm::update_transient_form_weights ( )
private

Definition at line 840 of file ThermoElasticVarForm.cpp.

References polyfem::varform::VarForm::problem, polyfem::varform::NonlinearElasticVarForm::solve_data, temperature_body_form_, temperature_form_, temperature_time_integrator_, thermoelastic_form_, polyfem::solver::SolveData::time_integrator, and polyfem::solver::SolveData::update_dt().

Referenced by build_forms(), and solve_problem().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ displacement_space_id_

int polyfem::varform::ThermoElasticVarForm::displacement_space_id_ = -1
private

◆ elastic_formulation_

std::string polyfem::varform::ThermoElasticVarForm::elastic_formulation_ = "NeoHookean"
private

Definition at line 114 of file ThermoElasticVarForm.hpp.

Referenced by init(), read_material_space_ids(), and reset().

◆ stacked_form_

std::shared_ptr<solver::StackedForm> polyfem::varform::ThermoElasticVarForm::stacked_form_
private

Definition at line 110 of file ThermoElasticVarForm.hpp.

Referenced by build_forms(), and reset().

◆ stacked_lumped_mass_

StiffnessMatrix polyfem::varform::ThermoElasticVarForm::stacked_lumped_mass_
private

Definition at line 101 of file ThermoElasticVarForm.hpp.

Referenced by assemble_mass_mat(), reset(), and solve_problem().

◆ temperature_ass_vals_cache_

assembler::AssemblyValsCache polyfem::varform::ThermoElasticVarForm::temperature_ass_vals_cache_
private

Definition at line 88 of file ThermoElasticVarForm.hpp.

Referenced by build_basis(), build_forms(), and reset().

◆ temperature_assembler_

std::shared_ptr<assembler::Assembler> polyfem::varform::ThermoElasticVarForm::temperature_assembler_
private

◆ temperature_body_form_

std::shared_ptr<solver::BodyForm> polyfem::varform::ThermoElasticVarForm::temperature_body_form_
private

Definition at line 108 of file ThermoElasticVarForm.hpp.

Referenced by build_forms(), reset(), and update_transient_form_weights().

◆ temperature_boundary_

VarFormBoundaryState polyfem::varform::ThermoElasticVarForm::temperature_boundary_
private

◆ temperature_form_

std::shared_ptr<solver::ElasticForm> polyfem::varform::ThermoElasticVarForm::temperature_form_
private

Definition at line 106 of file ThermoElasticVarForm.hpp.

Referenced by build_forms(), reset(), and update_transient_form_weights().

◆ temperature_inertia_form_

std::shared_ptr<solver::InertiaForm> polyfem::varform::ThermoElasticVarForm::temperature_inertia_form_
private

Definition at line 109 of file ThermoElasticVarForm.hpp.

Referenced by build_forms(), and reset().

◆ temperature_mass_

StiffnessMatrix polyfem::varform::ThermoElasticVarForm::temperature_mass_
private

Definition at line 99 of file ThermoElasticVarForm.hpp.

Referenced by assemble_mass_mat(), build_forms(), and reset().

◆ temperature_mass_ass_vals_cache_

assembler::AssemblyValsCache polyfem::varform::ThermoElasticVarForm::temperature_mass_ass_vals_cache_
private

◆ temperature_mass_assembler_

std::shared_ptr<assembler::Mass> polyfem::varform::ThermoElasticVarForm::temperature_mass_assembler_
private

Definition at line 94 of file ThermoElasticVarForm.hpp.

Referenced by assemble_mass_mat(), init(), load_mesh(), and reset().

◆ temperature_problem_

std::shared_ptr<assembler::Problem> polyfem::varform::ThermoElasticVarForm::temperature_problem_
private

◆ temperature_pure_mass_

StiffnessMatrix polyfem::varform::ThermoElasticVarForm::temperature_pure_mass_
private

Definition at line 100 of file ThermoElasticVarForm.hpp.

Referenced by assemble_mass_mat(), and reset().

◆ temperature_pure_mass_ass_vals_cache_

assembler::AssemblyValsCache polyfem::varform::ThermoElasticVarForm::temperature_pure_mass_ass_vals_cache_
private

Definition at line 90 of file ThermoElasticVarForm.hpp.

Referenced by assemble_mass_mat(), build_basis(), and reset().

◆ temperature_pure_mass_assembler_

std::shared_ptr<assembler::HRZMass> polyfem::varform::ThermoElasticVarForm::temperature_pure_mass_assembler_
private

Definition at line 95 of file ThermoElasticVarForm.hpp.

Referenced by assemble_mass_mat(), init(), load_mesh(), and reset().

◆ temperature_rhs_

Eigen::MatrixXd polyfem::varform::ThermoElasticVarForm::temperature_rhs_
private

Definition at line 102 of file ThermoElasticVarForm.hpp.

Referenced by assemble_rhs(), build_forms(), and reset().

◆ temperature_rhs_assembler_

std::shared_ptr<assembler::RhsAssembler> polyfem::varform::ThermoElasticVarForm::temperature_rhs_assembler_
private

◆ temperature_rhs_density_

std::shared_ptr<assembler::Density> polyfem::varform::ThermoElasticVarForm::temperature_rhs_density_
private

Definition at line 97 of file ThermoElasticVarForm.hpp.

Referenced by assemble_rhs(), build_forms(), and reset().

◆ temperature_space_

◆ temperature_space_id_

int polyfem::varform::ThermoElasticVarForm::temperature_space_id_ = -1
private

◆ temperature_time_integrator_

std::shared_ptr<time_integrator::ImplicitTimeIntegrator> polyfem::varform::ThermoElasticVarForm::temperature_time_integrator_
private

◆ thermoelastic_assembler_

std::shared_ptr<assembler::MixedNLAssembler> polyfem::varform::ThermoElasticVarForm::thermoelastic_assembler_
private

Definition at line 93 of file ThermoElasticVarForm.hpp.

Referenced by build_forms(), init(), load_mesh(), and reset().

◆ thermoelastic_form_

std::shared_ptr<solver::MixedAssemblerForm> polyfem::varform::ThermoElasticVarForm::thermoelastic_form_
private

Definition at line 107 of file ThermoElasticVarForm.hpp.

Referenced by build_forms(), reset(), and update_transient_form_weights().


The documentation for this class was generated from the following files: