|
PolyFEM
|
#include <Laplacian.hpp>
Public Member Functions | |
| Laplacian (const std::string &conductivity_param_name="") | |
| std::string | name () const override |
| std::map< std::string, ParamFunc > | parameters () const override |
| void | add_multimaterial (const int index, const json ¶ms, const Units &units, const std::string &root_path) override |
| Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 9, 1 > | assemble (const LinearAssemblerData &data) const override |
| computes local stiffness matrix (1x1) for bases i,j where i,j is passed in through data ie integral of grad(phi_i) dot grad(phi_j) | |
| double | compute_energy (const NonLinearAssemblerData &data) const override |
| Eigen::VectorXd | assemble_gradient (const NonLinearAssemblerData &data) const override |
| Eigen::MatrixXd | assemble_hessian (const NonLinearAssemblerData &data) const override |
| VectorNd | compute_rhs (const AutodiffHessianPt &pt) const override |
| uses autodiff to compute the rhs for a fabricated solution in this case it just return pt.getHessian().trace() pt is the evaluation of the solution at a point | |
| void | compute_stress_grad_multiply_mat (const OptAssemblerData &data, const Eigen::MatrixXd &mat, Eigen::MatrixXd &stress, Eigen::MatrixXd &result) const override |
| void | compute_stiffness_value (const double t, const assembler::ElementAssemblyValues &vals, const Eigen::MatrixXd &local_pts, const Eigen::MatrixXd &displacement, Eigen::MatrixXd &tensor) const override |
| Eigen::Matrix< AutodiffScalarGrad, Eigen::Dynamic, 1, 0, 3, 1 > | kernel (const int dim, const AutodiffGradPt &rvect, const AutodiffScalarGrad &r) const override |
| kernel of the pde, used in kernel problem | |
| bool | is_linear () const override |
| void | assemble (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, StiffnessMatrix &stiffness, const bool is_mass=false) const override |
| assembles the stiffness matrix for the given basis the bilinear form (local assembler) is encoded by the overloaded assemble (see below) function that the subclass (eg Laplacian) defines sets stiffness and modifies cache if it has not already been computed | |
| virtual Eigen::Matrix< double, Eigen::Dynamic, 1, 0, 9, 1 > | assemble (const LinearAssemblerData &data) const=0 |
| local assembly function that defines the bilinear form (LHS) computes and returns a single local stiffness value | |
| 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 |
| virtual Eigen::VectorXd | assemble_gradient (const NonLinearAssemblerData &data) const=0 |
| 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 |
| virtual Eigen::MatrixXd | assemble_hessian (const NonLinearAssemblerData &data) const=0 |
Public Member Functions inherited from polyfem::assembler::LinearAssembler | |
| LinearAssembler () | |
| virtual | ~LinearAssembler ()=default |
| void | assemble (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, StiffnessMatrix &stiffness, const bool is_mass=false) const override |
| assembles the stiffness matrix for the given basis the bilinear form (local assembler) is encoded by the overloaded assemble (see below) function that the subclass (eg Laplacian) defines sets stiffness and modifies cache if it has not already been computed | |
Public Member Functions inherited from polyfem::assembler::Assembler | |
| virtual | ~Assembler ()=default |
| int | size () const |
| virtual void | set_size (const int size) |
| virtual void | compute_scalar_value (const OutputData &data, std::vector< NamedMatrix > &result) const |
| virtual void | compute_tensor_value (const OutputData &data, std::vector< NamedMatrix > &result) const |
| virtual void | compute_dstress_dmu_dlambda (const OptAssemblerData &data, Eigen::MatrixXd &dstress_dmu, Eigen::MatrixXd &dstress_dlambda) const |
| virtual void | compute_stress_grad_multiply_stress (const OptAssemblerData &data, Eigen::MatrixXd &stress, Eigen::MatrixXd &result) const |
| virtual void | compute_stress_grad_multiply_vect (const OptAssemblerData &data, const Eigen::MatrixXd &vect, Eigen::MatrixXd &stress, Eigen::MatrixXd &result) const |
| virtual void | compute_stress_grad (const OptAssemblerData &data, const Eigen::MatrixXd &prev_grad_u_i, Eigen::MatrixXd &stress, Eigen::MatrixXd &result) const |
| virtual void | compute_stress_prev_grad (const OptAssemblerData &data, const Eigen::MatrixXd &prev_grad_u_i, Eigen::MatrixXd &result) const |
| void | set_materials (const std::vector< int > &body_ids, const json &body_params, const Units &units, const std::string &root_path) |
| virtual void | update_lame_params (const Eigen::MatrixXd &lambdas, const Eigen::MatrixXd &mus) |
| virtual bool | is_solution_displacement () const |
| virtual bool | is_fluid () const |
| virtual bool | is_tensor () const |
Public Member Functions inherited from polyfem::assembler::NLAssembler | |
| virtual | ~NLAssembler ()=default |
| 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 |
| Eigen::VectorXd | assemble_energy_per_element (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 |
Private Member Functions | |
| double | conductivity (const RowVectorNd &uv, const RowVectorNd &p, double t, int element_id) const |
Private Attributes | |
| std::string | conductivity_param_name_ |
| GenericMatParam | conductivity_ |
Additional Inherited Members | |
Public Types inherited from polyfem::assembler::Assembler | |
| typedef std::pair< std::string, Eigen::MatrixXd > | NamedMatrix |
| typedef std::function< double(const RowVectorNd &, const RowVectorNd &, double, int)> | ParamFunc |
Protected Attributes inherited from polyfem::assembler::Assembler | |
| int | size_ = -1 |
Definition at line 12 of file Laplacian.hpp.
|
explicit |
Definition at line 29 of file Laplacian.cpp.
|
overridevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 48 of file Laplacian.cpp.
References polyfem::assembler::GenericMatParam::add_multimaterial(), conductivity_, conductivity_param_name_, and polyfem::Units::thermal_conductivity().
|
overridevirtual |
assembles the stiffness matrix for the given basis the bilinear form (local assembler) is encoded by the overloaded assemble (see below) function that the subclass (eg Laplacian) defines sets stiffness and modifies cache if it has not already been computed
Reimplemented from polyfem::assembler::Assembler.
|
overridevirtual |
computes local stiffness matrix (1x1) for bases i,j where i,j is passed in through data ie integral of grad(phi_i) dot grad(phi_j)
Implements polyfem::assembler::LinearAssembler.
Definition at line 62 of file Laplacian.cpp.
References polyfem::assembler::ElementAssemblyValues::basis_values, conductivity(), polyfem::assembler::LinearAssemblerData::da, polyfem::assembler::ElementAssemblyValues::element_id, polyfem::assembler::LinearAssemblerData::i, polyfem::assembler::LinearAssemblerData::j, polyfem::quadrature::Quadrature::points, polyfem::assembler::ElementAssemblyValues::quadrature, polyfem::assembler::LinearAssemblerData::t, polyfem::assembler::ElementAssemblyValues::val, and polyfem::assembler::LinearAssemblerData::vals.
Referenced by assemble_hessian(), polyfem::varform::OperatorSplittingVarForm::solve_problem(), and polyfem::legacy::State::solve_transient_navier_stokes_split().
|
virtual |
local assembly function that defines the bilinear form (LHS) computes and returns a single local stiffness value
Implements polyfem::assembler::LinearAssembler.
|
overridevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 336 of file Assembler.cpp.
|
overridevirtual |
Reimplemented from polyfem::assembler::Assembler.
|
overridevirtual |
Implements polyfem::assembler::NLAssembler.
Definition at line 86 of file Laplacian.cpp.
References assemble_hessian(), and polyfem::assembler::Assembler::size().
|
virtual |
Implements polyfem::assembler::NLAssembler.
|
overridevirtual |
Reimplemented from polyfem::assembler::Assembler.
|
overridevirtual |
Implements polyfem::assembler::NLAssembler.
Definition at line 93 of file Laplacian.cpp.
References assemble(), polyfem::assembler::ElementAssemblyValues::basis_values, polyfem::assembler::NonLinearAssemblerData::da, polyfem::assembler::Assembler::size(), polyfem::assembler::NonLinearAssemblerData::t, and polyfem::assembler::NonLinearAssemblerData::vals.
Referenced by assemble_gradient(), and compute_energy().
|
virtual |
Implements polyfem::assembler::NLAssembler.
|
overridevirtual |
Implements polyfem::assembler::NLAssembler.
Definition at line 78 of file Laplacian.cpp.
References assemble_hessian(), and polyfem::assembler::Assembler::size().
|
overridevirtual |
uses autodiff to compute the rhs for a fabricated solution in this case it just return pt.getHessian().trace() pt is the evaluation of the solution at a point
Reimplemented from polyfem::assembler::Assembler.
Definition at line 108 of file Laplacian.cpp.
|
overridevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 139 of file Laplacian.cpp.
References conductivity(), and vals.
|
overridevirtual |
Reimplemented from polyfem::assembler::Assembler.
Definition at line 130 of file Laplacian.cpp.
References polyfem::assembler::OptAssemblerData::grad_u_i.
|
private |
Definition at line 54 of file Laplacian.cpp.
References conductivity_, and conductivity_param_name_.
Referenced by assemble(), compute_stiffness_value(), and parameters().
|
inlineoverridevirtual |
Reimplemented from polyfem::assembler::LinearAssembler.
Definition at line 54 of file Laplacian.hpp.
|
overridevirtual |
kernel of the pde, used in kernel problem
Reimplemented from polyfem::assembler::Assembler.
Definition at line 116 of file Laplacian.cpp.
|
inlineoverridevirtual |
Implements polyfem::assembler::Assembler.
Definition at line 22 of file Laplacian.hpp.
|
overridevirtual |
Implements polyfem::assembler::Assembler.
Definition at line 35 of file Laplacian.cpp.
References conductivity(), and conductivity_param_name_.
|
private |
Definition at line 60 of file Laplacian.hpp.
Referenced by add_multimaterial(), and conductivity().
|
private |
Definition at line 59 of file Laplacian.hpp.
Referenced by add_multimaterial(), conductivity(), and parameters().