PolyFEM
Loading...
Searching...
No Matches
DifferentiableScalarVarForm.cpp
Go to the documentation of this file.
2
3namespace polyfem::varform
4{
6 {
7 return ScalarVarForm::name();
8 }
9
11 Eigen::MatrixXd &solution,
12 const InitialConditionOverride *initial_condition_override,
13 const ForwardStepCallback &post_step,
14 const bool)
15 {
16 ScalarVarForm::solve(solution, initial_condition_override, post_step);
17 }
18
23
25 const std::string &path,
26 const Eigen::MatrixXd &solution,
27 const double time,
28 const double dt) const
29 {
32 const auto opts = ScalarVarForm::export_options(space);
34 path, space, ScalarVarForm::output_field_function(solution, opts), time, dt, opts);
35 }
36
39
41 {
42 assert(mesh_ && "The mesh must be loaded before it is accessed");
43 return *mesh_;
44 }
45
47 {
48 assert(problem && "The problem must be initialized before it is accessed");
49 return *problem;
50 }
51
53 {
54 assert(problem && "The problem must be initialized before it is accessed");
55 return *problem;
56 }
57
58 std::string DifferentiableScalarVarForm::output_file_path(const std::string &path) const
59 {
61 }
62
65
68
70 {
71 assert(primary_assembler_ && "The primary assembler must be initialized before it is accessed");
72 return *primary_assembler_;
73 }
74
76 {
77 assert(mass_assembler_ && "The mass assembler must be initialized before it is accessed");
78 return *mass_assembler_;
79 }
80
86
88 {
89 assert(mesh_ && "Vertex positions can only be updated after loading a mesh");
90 return *mesh_;
91 }
92
101
109
111 const int discr_order,
112 const int discr_orderq,
113 const int geometry_discr_order) const
114 {
115 return ScalarVarForm::n_boundary_samples(discr_order, discr_orderq, geometry_discr_order);
116 }
117} // namespace polyfem::varform
Caches basis evaluation and geometric mapping at every element.
void save_vtu(const std::string &path, const OutputSpace &space, const OutputFieldFunction &output_fields, const double t, const double dt, const ExportOptions &opts) const
saves the vtu file for time t
Definition OutData.cpp:2162
Abstract mesh class to capture 2d/3d conforming and non-conforming meshes.
Definition Mesh.hpp:50
class to store time stepping data
Definition SolveData.hpp:56
const assembler::AssemblyValsCache & mass_assembly_cache() const override
std::string output_file_path(const std::string &path) const override
const assembler::Mass & mass_assembler() const override
QuadratureOrders boundary_samples(int discr_order, int discr_orderq, int geometry_discr_order) const override
const VarFormBoundaryState & boundary_state() const override
void save_vtu(const std::string &path, const Eigen::MatrixXd &solution, double time, double dt) const override
std::string name() const override
Get the name of the variational formulation.
const StiffnessMatrix & mass_matrix() const override
const assembler::AssemblyValsCache & assembly_cache() const override
const assembler::Assembler & primary_assembler() const override
void solve(Eigen::MatrixXd &solution, const InitialConditionOverride *initial_condition_override, const ForwardStepCallback &post_step, bool differentiable) override
bool is_contact_enabled() const override
Check if contact is enabled for the variational formulation, for output purposes.
A finite-element space for one scalar- or vector-valued field.
Definition FESpace.hpp:59
std::shared_ptr< time_integrator::ImplicitTimeIntegrator > time_integrator
std::shared_ptr< assembler::Mass > mass_assembler_
std::string name() const override
Get the name of the variational formulation.
assembler::AssemblyValsCache mass_ass_vals_cache_
assembler::AssemblyValsCache ass_vals_cache_
std::shared_ptr< assembler::Assembler > primary_assembler_
std::shared_ptr< assembler::RhsAssembler > rhs_assembler_
io::OutputSpace output_space() const override
Get the output space of the variational formulation, for output purposes.
void prepare()
Prepare all discretization and assembly data without running a solve.
Definition VarForm.cpp:259
std::shared_ptr< assembler::Problem > problem
current problem, it contains rhs and bc
Definition VarForm.hpp:261
virtual bool is_contact_enabled() const
Check if contact is enabled for the variational formulation, for output purposes.
Definition VarForm.hpp:111
void solve(Eigen::MatrixXd &sol, const InitialConditionOverride *initial_condition_override=nullptr, const ForwardStepCallback &post_step={})
Solve the variational formulation and store the solution in the given matrix.
Definition VarForm.cpp:594
std::unique_ptr< mesh::Mesh > mesh_
Definition VarForm.hpp:273
io::OutGeometryData::ExportOptions export_options(const io::OutputSpace &space) const
Definition VarForm.cpp:835
io::OutGeometryData output_geometry_
Definition VarForm.hpp:277
io::OutputFieldFunction output_field_function(const Eigen::MatrixXd &solution, const io::OutGeometryData::ExportOptions &opts) const
Definition VarForm.cpp:844
QuadratureOrders n_boundary_samples(const int discr_order, const int discr_orderq, const int gdiscr_order) const
Definition VarForm.cpp:185
std::string resolve_output_path(const std::string &path) const
Definition VarForm.cpp:1116
void ensure_output_sampler() const
Definition VarForm.cpp:821
std::function< void(int step, const Eigen::MatrixXd &solution)> ForwardStepCallback
Definition VarForm.hpp:53
std::array< int, 2 > QuadratureOrders
Definition Types.hpp:19
nlohmann::json json
Definition Common.hpp:9
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix
Definition Types.hpp:24
Temporary compatibility wrapper for boundary data belonging to one FE space.
Definition FESpace.hpp:152