20 #ifndef LIBMESH_FEM_SYSTEM_H 21 #define LIBMESH_FEM_SYSTEM_H 24 #include "libmesh/diff_system.h" 25 #include "libmesh/fem_physics.h" 63 const std::string &
name,
64 const unsigned int number);
98 virtual void assembly (
bool get_residual,
100 bool apply_heterogeneous_constraints =
false,
101 bool apply_no_constraints =
false)
override;
111 virtual void solve ()
override;
133 virtual std::unique_ptr<DiffContext>
build_context()
override;
167 bool include_liftfunc =
true,
168 bool apply_constraints =
true)
override;
281 libmesh_assert_greater(new_h,
Real(0));
289 #endif // LIBMESH_FEM_SYSTEM_H virtual std::unique_ptr< DiffContext > build_context() override
Builds a FEMContext object with enough information to do evaluations on each element.
This is the EquationSystems class.
Real verify_analytic_jacobians
If verify_analytic_jacobian is equal to zero (as it is by default), no numeric jacobians will be calc...
This class provides all data required for a physics package (e.g.
virtual void assemble_qoi_derivative(const QoISet &qoi_indices=QoISet(), bool include_liftfunc=true, bool apply_constraints=true) override
Runs a qoi derivative assembly loop over all elements, and if assemble_qoi_sides is true over all sid...
FEMSystem sys_type
The type of system.
This is a generic class that defines a solver to handle time integration of DifferentiableSystems.
This class provides a specific system class.
Data structure for specifying which Quantities of Interest should be calculated in an adjoint or a pa...
virtual void init_context(DiffContext &) override
Real numerical_jacobian_h
If calculating numeric jacobians is required, the FEMSystem will perturb each solution vector entry b...
void numerical_elem_jacobian(FEMContext &context) const
Uses the results of multiple element_residual() calls to numerically differentiate the corresponding ...
FEMSystem & operator=(const FEMSystem &)=delete
bool(TimeSolver::* TimeSolverResPtr)(bool, DiffContext &)
Syntax sugar to make numerical_jacobian() declaration easier.
The libMesh namespace provides an interface to certain functionality in the library.
This class provides a specific system class.
void set_numerical_jacobian_h_for_var(unsigned int var_num, Real new_h)
This class provides a specific system class.
unsigned int number() const
bool fe_reinit_during_postprocess
If fe_reinit_during_postprocess is true (it is true by default), FE objects will be reinit()ed with t...
void numerical_nonlocal_jacobian(FEMContext &context) const
Uses the results of multiple side_residual() calls to numerically differentiate the corresponding jac...
virtual void init_data() override
Initializes the member data fields associated with the system, so that, e.g., assemble() may be used...
DifferentiableSystem Parent
The type of the parent.
This class provides all data required for a physics package (e.g.
FEMSystem(EquationSystems &es, const std::string &name, const unsigned int number)
Constructor.
virtual void postprocess() override
Runs a postprocessing loop over all elements, and if postprocess_sides is true over all sides...
void numerical_side_jacobian(FEMContext &context) const
Uses the results of multiple side_residual() calls to numerically differentiate the corresponding jac...
std::vector< Real > _numerical_jacobian_h_for_var
virtual void assemble_qoi(const QoISet &indices=QoISet()) override
Runs a qoi assembly loop over all elements, and if assemble_qoi_sides is true over all sides...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void mesh_position_set()
Tells the FEMSystem to set the mesh nodal coordinates which should correspond to degree of freedom co...
virtual void solve() override
Invokes the solver associated with the system.
Real numerical_jacobian_h_for_var(unsigned int var_num) const
If numerical_jacobian_h_for_var(var_num) is changed from its default value (numerical_jacobian_h), the FEMSystem will perturb solution vector entries for variable var_num by that amount when calculating finite differences with respect to that variable.
const std::string & name() const
void numerical_jacobian(TimeSolverResPtr res, FEMContext &context) const
Uses the results of multiple res calls to numerically differentiate the corresponding jacobian...
virtual void assembly(bool get_residual, bool get_jacobian, bool apply_heterogeneous_constraints=false, bool apply_no_constraints=false) override
Prepares matrix or rhs for matrix assembly.
void mesh_position_get()
Tells the FEMSystem to set the degree of freedom coefficients which should correspond to mesh nodal c...