#include <continuation_system.h>
Public Types | |
enum | Predictor { Euler, AB2, Invalid_Predictor } |
typedef ContinuationSystem | sys_type |
typedef FEMSystem | Parent |
typedef bool(TimeSolver::* | TimeSolverResPtr) (bool, DiffContext &) |
typedef std::map< std::string, SparseMatrix< Number > * >::iterator | matrices_iterator |
typedef std::map< std::string, SparseMatrix< Number > * >::const_iterator | const_matrices_iterator |
typedef Number(* | ValueFunctionPointer) (const Point &p, const Parameters &Parameters, const std::string &sys_name, const std::string &unknown_name) |
typedef Gradient(* | GradientFunctionPointer) (const Point &p, const Parameters ¶meters, const std::string &sys_name, const std::string &unknown_name) |
typedef std::map< std::string, NumericVector< Number > * >::iterator | vectors_iterator |
typedef std::map< std::string, NumericVector< Number > * >::const_iterator | const_vectors_iterator |
Public Member Functions | |
ContinuationSystem (EquationSystems &es, const std::string &name, const unsigned int number) | |
virtual | ~ContinuationSystem () |
virtual void | clear () override |
virtual void | solve () override |
void | continuation_solve () |
void | advance_arcstep () |
void | set_max_arclength_stepsize (Real maxds) |
void | save_current_solution () |
virtual void | assembly (bool get_residual, bool get_jacobian, bool apply_heterogeneous_constraints=false, bool apply_no_constraints=false) override |
void | mesh_position_get () |
void | mesh_position_set () |
virtual std::unique_ptr< DiffContext > | build_context () override |
virtual void | init_context (DiffContext &) override |
virtual void | postprocess () override |
virtual void | assemble_qoi (const QoISet &indices=QoISet()) override |
virtual void | assemble_qoi_derivative (const QoISet &qoi_indices=QoISet(), bool include_liftfunc=true, bool apply_constraints=true) override |
Real | numerical_jacobian_h_for_var (unsigned int var_num) const |
void | set_numerical_jacobian_h_for_var (unsigned int var_num, Real new_h) |
void | numerical_jacobian (TimeSolverResPtr res, FEMContext &context) const |
void | numerical_elem_jacobian (FEMContext &context) const |
void | numerical_side_jacobian (FEMContext &context) const |
void | numerical_nonlocal_jacobian (FEMContext &context) const |
virtual void | reinit () override |
virtual void | assemble () override |
virtual LinearSolver< Number > * | get_linear_solver () const override |
virtual std::pair< unsigned int, Real > | get_linear_solve_parameters () const override |
virtual void | release_linear_solver (LinearSolver< Number > *) const override |
virtual std::pair< unsigned int, Real > | adjoint_solve (const QoISet &qoi_indices=QoISet()) override |
virtual std::unique_ptr< DifferentiablePhysics > | clone_physics () override |
virtual std::unique_ptr< DifferentiableQoI > | clone () override |
const DifferentiablePhysics * | get_physics () const |
DifferentiablePhysics * | get_physics () |
void | attach_physics (DifferentiablePhysics *physics_in) |
void | swap_physics (DifferentiablePhysics *&swap_physics) |
const DifferentiableQoI * | get_qoi () const |
DifferentiableQoI * | get_qoi () |
void | attach_qoi (DifferentiableQoI *qoi_in) |
void | set_time_solver (std::unique_ptr< TimeSolver > _time_solver) |
TimeSolver & | get_time_solver () |
const TimeSolver & | get_time_solver () const |
virtual void | element_postprocess (DiffContext &) |
virtual void | side_postprocess (DiffContext &) |
unsigned int | get_second_order_dot_var (unsigned int var) const |
bool | have_first_order_scalar_vars () const |
bool | have_second_order_scalar_vars () const |
sys_type & | system () |
virtual void | disable_cache () override |
virtual std::string | system_type () const override |
virtual void | assemble_residual_derivatives (const ParameterVector ¶meters) override |
virtual std::pair< unsigned int, Real > | sensitivity_solve (const ParameterVector ¶meters) override |
virtual std::pair< unsigned int, Real > | weighted_sensitivity_solve (const ParameterVector ¶meters, const ParameterVector &weights) override |
virtual std::pair< unsigned int, Real > | weighted_sensitivity_adjoint_solve (const ParameterVector ¶meters, const ParameterVector &weights, const QoISet &qoi_indices=QoISet()) override |
virtual void | adjoint_qoi_parameter_sensitivity (const QoISet &qoi_indices, const ParameterVector ¶meters, SensitivityData &sensitivities) override |
virtual void | forward_qoi_parameter_sensitivity (const QoISet &qoi_indices, const ParameterVector ¶meters, SensitivityData &sensitivities) override |
virtual void | qoi_parameter_hessian (const QoISet &qoi_indices, const ParameterVector ¶meters, SensitivityData &hessian) override |
virtual void | qoi_parameter_hessian_vector_product (const QoISet &qoi_indices, const ParameterVector ¶meters, const ParameterVector &vector, SensitivityData &product) override |
SparseMatrix< Number > & | add_matrix (const std::string &mat_name) |
void | remove_matrix (const std::string &mat_name) |
bool | have_matrix (const std::string &mat_name) const |
const SparseMatrix< Number > * | request_matrix (const std::string &mat_name) const |
SparseMatrix< Number > * | request_matrix (const std::string &mat_name) |
const SparseMatrix< Number > & | get_matrix (const std::string &mat_name) const |
SparseMatrix< Number > & | get_matrix (const std::string &mat_name) |
virtual unsigned int | n_matrices () const override |
void | init () |
virtual void | reinit_constraints () |
bool | is_initialized () |
virtual void | update () |
virtual void | restrict_solve_to (const SystemSubset *subset, const SubsetSolveMode subset_solve_mode=SUBSET_ZERO) |
bool | is_adjoint_already_solved () const |
void | set_adjoint_already_solved (bool setting) |
virtual void | qoi_parameter_sensitivity (const QoISet &qoi_indices, const ParameterVector ¶meters, SensitivityData &sensitivities) |
virtual bool | compare (const System &other_system, const Real threshold, const bool verbose) const |
const std::string & | name () const |
void | project_solution (FunctionBase< Number > *f, FunctionBase< Gradient > *g=nullptr) const |
void | project_solution (FEMFunctionBase< Number > *f, FEMFunctionBase< Gradient > *g=nullptr) const |
void | project_solution (ValueFunctionPointer fptr, GradientFunctionPointer gptr, const Parameters ¶meters) const |
void | project_vector (NumericVector< Number > &new_vector, FunctionBase< Number > *f, FunctionBase< Gradient > *g=nullptr, int is_adjoint=-1) const |
void | project_vector (NumericVector< Number > &new_vector, FEMFunctionBase< Number > *f, FEMFunctionBase< Gradient > *g=nullptr, int is_adjoint=-1) const |
void | project_vector (ValueFunctionPointer fptr, GradientFunctionPointer gptr, const Parameters ¶meters, NumericVector< Number > &new_vector, int is_adjoint=-1) const |
void | boundary_project_solution (const std::set< boundary_id_type > &b, const std::vector< unsigned int > &variables, FunctionBase< Number > *f, FunctionBase< Gradient > *g=nullptr) |
void | boundary_project_solution (const std::set< boundary_id_type > &b, const std::vector< unsigned int > &variables, ValueFunctionPointer fptr, GradientFunctionPointer gptr, const Parameters ¶meters) |
void | boundary_project_vector (const std::set< boundary_id_type > &b, const std::vector< unsigned int > &variables, NumericVector< Number > &new_vector, FunctionBase< Number > *f, FunctionBase< Gradient > *g=nullptr, int is_adjoint=-1) const |
void | boundary_project_vector (const std::set< boundary_id_type > &b, const std::vector< unsigned int > &variables, ValueFunctionPointer fptr, GradientFunctionPointer gptr, const Parameters ¶meters, NumericVector< Number > &new_vector, int is_adjoint=-1) const |
unsigned int | number () const |
void | update_global_solution (std::vector< Number > &global_soln) const |
void | update_global_solution (std::vector< Number > &global_soln, const processor_id_type dest_proc) const |
const MeshBase & | get_mesh () const |
MeshBase & | get_mesh () |
const DofMap & | get_dof_map () const |
DofMap & | get_dof_map () |
const EquationSystems & | get_equation_systems () const |
EquationSystems & | get_equation_systems () |
bool | active () const |
void | activate () |
void | deactivate () |
void | set_basic_system_only () |
vectors_iterator | vectors_begin () |
const_vectors_iterator | vectors_begin () const |
vectors_iterator | vectors_end () |
const_vectors_iterator | vectors_end () const |
NumericVector< Number > & | add_vector (const std::string &vec_name, const bool projections=true, const ParallelType type=PARALLEL) |
void | remove_vector (const std::string &vec_name) |
bool & | project_solution_on_reinit (void) |
bool | have_vector (const std::string &vec_name) const |
const NumericVector< Number > * | request_vector (const std::string &vec_name) const |
NumericVector< Number > * | request_vector (const std::string &vec_name) |
const NumericVector< Number > * | request_vector (const unsigned int vec_num) const |
NumericVector< Number > * | request_vector (const unsigned int vec_num) |
const NumericVector< Number > & | get_vector (const std::string &vec_name) const |
NumericVector< Number > & | get_vector (const std::string &vec_name) |
const NumericVector< Number > & | get_vector (const unsigned int vec_num) const |
NumericVector< Number > & | get_vector (const unsigned int vec_num) |
const std::string & | vector_name (const unsigned int vec_num) const |
const std::string & | vector_name (const NumericVector< Number > &vec_reference) const |
void | set_vector_as_adjoint (const std::string &vec_name, int qoi_num) |
int | vector_is_adjoint (const std::string &vec_name) const |
void | set_vector_preservation (const std::string &vec_name, bool preserve) |
bool | vector_preservation (const std::string &vec_name) const |
NumericVector< Number > & | add_adjoint_solution (unsigned int i=0) |
NumericVector< Number > & | get_adjoint_solution (unsigned int i=0) |
const NumericVector< Number > & | get_adjoint_solution (unsigned int i=0) const |
NumericVector< Number > & | add_sensitivity_solution (unsigned int i=0) |
NumericVector< Number > & | get_sensitivity_solution (unsigned int i=0) |
const NumericVector< Number > & | get_sensitivity_solution (unsigned int i=0) const |
NumericVector< Number > & | add_weighted_sensitivity_adjoint_solution (unsigned int i=0) |
NumericVector< Number > & | get_weighted_sensitivity_adjoint_solution (unsigned int i=0) |
const NumericVector< Number > & | get_weighted_sensitivity_adjoint_solution (unsigned int i=0) const |
NumericVector< Number > & | add_weighted_sensitivity_solution () |
NumericVector< Number > & | get_weighted_sensitivity_solution () |
const NumericVector< Number > & | get_weighted_sensitivity_solution () const |
NumericVector< Number > & | add_adjoint_rhs (unsigned int i=0) |
NumericVector< Number > & | get_adjoint_rhs (unsigned int i=0) |
const NumericVector< Number > & | get_adjoint_rhs (unsigned int i=0) const |
NumericVector< Number > & | add_sensitivity_rhs (unsigned int i=0) |
NumericVector< Number > & | get_sensitivity_rhs (unsigned int i=0) |
const NumericVector< Number > & | get_sensitivity_rhs (unsigned int i=0) const |
unsigned int | n_vectors () const |
unsigned int | n_vars () const |
unsigned int | n_variable_groups () const |
unsigned int | n_components () const |
dof_id_type | n_dofs () const |
dof_id_type | n_active_dofs () const |
dof_id_type | n_constrained_dofs () const |
dof_id_type | n_local_constrained_dofs () const |
dof_id_type | n_local_dofs () const |
unsigned int | add_variable (const std::string &var, const FEType &type, const std::set< subdomain_id_type > *const active_subdomains=nullptr) |
unsigned int | add_variable (const std::string &var, const Order order=FIRST, const FEFamily=LAGRANGE, const std::set< subdomain_id_type > *const active_subdomains=nullptr) |
unsigned int | add_variables (const std::vector< std::string > &vars, const FEType &type, const std::set< subdomain_id_type > *const active_subdomains=nullptr) |
unsigned int | add_variables (const std::vector< std::string > &vars, const Order order=FIRST, const FEFamily=LAGRANGE, const std::set< subdomain_id_type > *const active_subdomains=nullptr) |
const Variable & | variable (unsigned int var) const |
const VariableGroup & | variable_group (unsigned int vg) const |
bool | has_variable (const std::string &var) const |
const std::string & | variable_name (const unsigned int i) const |
unsigned short int | variable_number (const std::string &var) const |
void | get_all_variable_numbers (std::vector< unsigned int > &all_variable_numbers) const |
unsigned int | variable_scalar_number (const std::string &var, unsigned int component) const |
unsigned int | variable_scalar_number (unsigned int var_num, unsigned int component) const |
const FEType & | variable_type (const unsigned int i) const |
const FEType & | variable_type (const std::string &var) const |
bool | identify_variable_groups () const |
void | identify_variable_groups (const bool) |
Real | calculate_norm (const NumericVector< Number > &v, unsigned int var, FEMNormType norm_type, std::set< unsigned int > *skip_dimensions=nullptr) const |
Real | calculate_norm (const NumericVector< Number > &v, const SystemNorm &norm, std::set< unsigned int > *skip_dimensions=nullptr) const |
void | read_header (Xdr &io, const std::string &version, const bool read_header=true, const bool read_additional_data=true, const bool read_legacy_format=false) |
void | read_legacy_data (Xdr &io, const bool read_additional_data=true) |
template<typename ValType > | |
void | read_serialized_data (Xdr &io, const bool read_additional_data=true) |
void | read_serialized_data (Xdr &io, const bool read_additional_data=true) |
template<typename InValType > | |
std::size_t | read_serialized_vectors (Xdr &io, const std::vector< NumericVector< Number > *> &vectors) const |
std::size_t | read_serialized_vectors (Xdr &io, const std::vector< NumericVector< Number > *> &vectors) const |
template<typename InValType > | |
void | read_parallel_data (Xdr &io, const bool read_additional_data) |
void | read_parallel_data (Xdr &io, const bool read_additional_data) |
void | write_header (Xdr &io, const std::string &version, const bool write_additional_data) const |
void | write_serialized_data (Xdr &io, const bool write_additional_data=true) const |
std::size_t | write_serialized_vectors (Xdr &io, const std::vector< const NumericVector< Number > *> &vectors) const |
void | write_parallel_data (Xdr &io, const bool write_additional_data) const |
std::string | get_info () const |
void | attach_init_function (void fptr(EquationSystems &es, const std::string &name)) |
void | attach_init_object (Initialization &init) |
void | attach_assemble_function (void fptr(EquationSystems &es, const std::string &name)) |
void | attach_assemble_object (Assembly &assemble) |
void | attach_constraint_function (void fptr(EquationSystems &es, const std::string &name)) |
void | attach_constraint_object (Constraint &constrain) |
void | attach_QOI_function (void fptr(EquationSystems &es, const std::string &name, const QoISet &qoi_indices)) |
void | attach_QOI_object (QOI &qoi) |
void | attach_QOI_derivative (void fptr(EquationSystems &es, const std::string &name, const QoISet &qoi_indices, bool include_liftfunc, bool apply_constraints)) |
void | attach_QOI_derivative_object (QOIDerivative &qoi_derivative) |
virtual void | user_initialization () |
virtual void | user_assembly () |
virtual void | user_constrain () |
virtual void | user_QOI (const QoISet &qoi_indices) |
virtual void | user_QOI_derivative (const QoISet &qoi_indices=QoISet(), bool include_liftfunc=true, bool apply_constraints=true) |
virtual void | re_update () |
virtual void | restrict_vectors () |
virtual void | prolong_vectors () |
Number | current_solution (const dof_id_type global_dof_number) const |
unsigned int | n_qois () const |
Number | point_value (unsigned int var, const Point &p, const bool insist_on_success=true) const |
Number | point_value (unsigned int var, const Point &p, const Elem &e) const |
Number | point_value (unsigned int var, const Point &p, const Elem *e) const |
Gradient | point_gradient (unsigned int var, const Point &p, const bool insist_on_success=true) const |
Gradient | point_gradient (unsigned int var, const Point &p, const Elem &e) const |
Gradient | point_gradient (unsigned int var, const Point &p, const Elem *e) const |
Tensor | point_hessian (unsigned int var, const Point &p, const bool insist_on_success=true) const |
Tensor | point_hessian (unsigned int var, const Point &p, const Elem &e) const |
Tensor | point_hessian (unsigned int var, const Point &p, const Elem *e) const |
void | local_dof_indices (const unsigned int var, std::set< dof_id_type > &var_indices) const |
void | zero_variable (NumericVector< Number > &v, unsigned int var_num) const |
bool & | hide_output () |
void | projection_matrix (SparseMatrix< Number > &proj_mat) const |
const Parallel::Communicator & | comm () const |
processor_id_type | n_processors () const |
processor_id_type | processor_id () const |
virtual void | clear_physics () |
virtual void | init_physics (const System &sys) |
virtual bool | element_time_derivative (bool request_jacobian, DiffContext &) |
virtual bool | element_constraint (bool request_jacobian, DiffContext &) |
virtual bool | side_time_derivative (bool request_jacobian, DiffContext &) |
virtual bool | side_constraint (bool request_jacobian, DiffContext &) |
virtual bool | nonlocal_time_derivative (bool request_jacobian, DiffContext &) |
virtual bool | nonlocal_constraint (bool request_jacobian, DiffContext &) |
virtual void | time_evolving (unsigned int var) |
virtual void | time_evolving (unsigned int var, unsigned int order) |
bool | is_time_evolving (unsigned int var) const |
virtual bool | eulerian_residual (bool request_jacobian, DiffContext &) |
virtual bool | eulerian_residual (bool request_jacobian, DiffContext &context) override |
virtual bool | mass_residual (bool request_jacobian, DiffContext &) |
virtual bool | mass_residual (bool request_jacobian, DiffContext &) override |
virtual bool | side_mass_residual (bool request_jacobian, DiffContext &) |
virtual bool | nonlocal_mass_residual (bool request_jacobian, DiffContext &c) |
virtual bool | damping_residual (bool request_jacobian, DiffContext &) |
virtual bool | side_damping_residual (bool request_jacobian, DiffContext &) |
virtual bool | nonlocal_damping_residual (bool request_jacobian, DiffContext &) |
virtual void | set_mesh_system (System *sys) |
const System * | get_mesh_system () const |
System * | get_mesh_system () |
virtual void | set_mesh_x_var (unsigned int var) |
unsigned int | get_mesh_x_var () const |
virtual void | set_mesh_y_var (unsigned int var) |
unsigned int | get_mesh_y_var () const |
virtual void | set_mesh_z_var (unsigned int var) |
unsigned int | get_mesh_z_var () const |
bool | _eulerian_time_deriv (bool request_jacobian, DiffContext &) |
bool | have_first_order_vars () const |
const std::set< unsigned int > & | get_first_order_vars () const |
bool | is_first_order_var (unsigned int var) const |
bool | have_second_order_vars () const |
const std::set< unsigned int > & | get_second_order_vars () const |
bool | is_second_order_var (unsigned int var) const |
virtual void | init_qoi (std::vector< Number > &) |
virtual void | clear_qoi () |
virtual void | element_qoi (DiffContext &, const QoISet &) |
virtual void | element_qoi_derivative (DiffContext &, const QoISet &) |
virtual void | side_qoi (DiffContext &, const QoISet &) |
virtual void | side_qoi_derivative (DiffContext &, const QoISet &) |
virtual void | thread_join (std::vector< Number > &qoi, const std::vector< Number > &other_qoi, const QoISet &qoi_indices) |
virtual void | parallel_op (const Parallel::Communicator &communicator, std::vector< Number > &sys_qoi, std::vector< Number > &local_qoi, const QoISet &qoi_indices) |
virtual void | finalize_derivative (NumericVector< Number > &derivatives, std::size_t qoi_index) |
Static Public Member Functions | |
static std::string | get_info () |
static void | print_info (std::ostream &out=libMesh::out) |
static unsigned int | n_objects () |
static void | enable_print_counter_info () |
static void | disable_print_counter_info () |
Protected Types | |
enum | RHS_Mode { Residual, G_Lambda } |
typedef std::map< std::string, std::pair< unsigned int, unsigned int > > | Counts |
Protected Member Functions | |
virtual void | init_data () override |
void | add_second_order_dot_vars () |
void | add_dot_var_dirichlet_bcs (unsigned int var_idx, unsigned int dot_var_idx) |
virtual void | init_matrices () |
void | project_vector (NumericVector< Number > &, int is_adjoint=-1) const |
void | project_vector (const NumericVector< Number > &, NumericVector< Number > &, int is_adjoint=-1) const |
void | increment_constructor_count (const std::string &name) |
void | increment_destructor_count (const std::string &name) |
Protected Attributes | |
RHS_Mode | rhs_mode |
DifferentiablePhysics * | _diff_physics |
DifferentiableQoI * | diff_qoi |
const Parallel::Communicator & | _communicator |
System * | _mesh_sys |
unsigned int | _mesh_x_var |
unsigned int | _mesh_y_var |
unsigned int | _mesh_z_var |
std::vector< unsigned int > | _time_evolving |
std::set< unsigned int > | _first_order_vars |
std::set< unsigned int > | _second_order_vars |
std::map< unsigned int, unsigned int > | _second_order_dot_vars |
Static Protected Attributes | |
static Counts | _counts |
static Threads::atomic< unsigned int > | _n_objects |
static Threads::spin_mutex | _mutex |
static bool | _enable_print_counter = true |
Private Member Functions | |
void | initialize_tangent () |
void | solve_tangent () |
void | update_solution () |
void | set_Theta () |
void | set_Theta_LOCA () |
void | apply_predictor () |
Private Attributes | |
NumericVector< Number > * | du_ds |
NumericVector< Number > * | previous_du_ds |
NumericVector< Number > * | previous_u |
NumericVector< Number > * | y |
NumericVector< Number > * | y_old |
NumericVector< Number > * | z |
NumericVector< Number > * | delta_u |
std::unique_ptr< LinearSolver< Number > > | linear_solver |
bool | tangent_initialized |
NewtonSolver * | newton_solver |
Real | dlambda_ds |
Real | ds |
Real | ds_current |
Real | previous_dlambda_ds |
Real | previous_ds |
unsigned int | newton_step |
This class inherits from the FEMSystem. It can be used to do arclength continuation. Most of the ideas and the notation here come from HB Keller's 1977 paper:
* @InProceedings{Kell-1977, * author = {H.~B.~Keller}, * title = {{Numerical solution of bifurcation and nonlinear eigenvalue problems}}, * booktitle = {Applications of Bifurcation Theory, P.~H.~Rabinowitz (ed.)}, * year = 1977, * publisher = {Academic Press}, * pages = {359--389}, * notes = {QA 3 U45 No.\ 38 (PMA)} * } *
Definition at line 55 of file continuation_system.h.
|
inherited |
Definition at line 306 of file implicit_system.h.
|
inherited |
|
protectedinherited |
Data structure to log the information. The log is identified by the class name.
Definition at line 117 of file reference_counter.h.
|
inherited |
|
inherited |
Matrix iterator typedefs.
Definition at line 305 of file implicit_system.h.
The type of the parent.
Definition at line 79 of file continuation_system.h.
The type of system.
Definition at line 74 of file continuation_system.h.
|
inherited |
Syntax sugar to make numerical_jacobian() declaration easier.
Definition at line 214 of file fem_system.h.
|
inherited |
|
inherited |
The code provides the ability to select from different predictor schemes for getting the initial guess for the solution at the next point on the solution arc.
Enumerator | |
---|---|
Euler | First-order Euler predictor |
AB2 | Second-order explicit Adams-Bashforth predictor |
Invalid_Predictor | Invalid predictor |
Definition at line 221 of file continuation_system.h.
|
protected |
There are (so far) two different vectors which may be assembled using the assembly routine: 1.) The Residual = the normal PDE weighted residual 2.) G_Lambda = the derivative wrt the parameter lambda of the PDE weighted residual
It is up to the derived class to handle writing separate assembly code for the different cases. Usually something like: switch (rhs_mode) { case Residual: { Fu(i) += ... // normal PDE residual break; }
case G_Lambda: { Fu(i) += ... // derivative wrt control parameter break; }
Enumerator | |
---|---|
Residual | |
G_Lambda |
Definition at line 286 of file continuation_system.h.
libMesh::ContinuationSystem::ContinuationSystem | ( | EquationSystems & | es, |
const std::string & | name, | ||
const unsigned int | number | ||
) |
Constructor. Optionally initializes required data structures.
Definition at line 29 of file continuation_system.C.
References linear_solver, libMesh::System::name(), and libMesh::on_command_line().
|
virtual |
|
inherited |
This method simply combines element_time_derivative() and eulerian_residual(), which makes its address useful as a pointer-to-member-function when refactoring.
Referenced by libMesh::EulerSolver::element_residual(), libMesh::Euler2Solver::element_residual(), and libMesh::NewmarkSolver::element_residual().
|
inlineinherited |
Activates the system. Only active systems are solved.
Definition at line 2073 of file system.h.
References libMesh::System::_active.
|
inlineinherited |
true
if the system is active, false
otherwise. An active system will be solved. Definition at line 2065 of file system.h.
References libMesh::System::_active.
|
inherited |
Definition at line 1021 of file system.C.
References libMesh::System::add_vector().
Referenced by libMesh::ExplicitSystem::assemble_qoi_derivative(), and libMesh::FEMSystem::assemble_qoi_derivative().
|
inherited |
Definition at line 957 of file system.C.
References libMesh::System::add_vector(), and libMesh::System::set_vector_as_adjoint().
Referenced by libMesh::ImplicitSystem::adjoint_solve().
|
protectedinherited |
Helper function to and Dirichlet boundary conditions to "dot" variable cousins of second order variables in the system. The function takes the second order variable index, it's corresponding "dot" variable index and then searches for DirichletBoundary objects for var_idx and then adds a DirichletBoundary object for dot_var_idx using the same boundary ids and functors for the var_idx DirichletBoundary.
Definition at line 227 of file diff_system.C.
References libMesh::DofMap::add_dirichlet_boundary(), libMesh::DofMap::get_dirichlet_boundaries(), and libMesh::System::get_dof_map().
Referenced by libMesh::DifferentiableSystem::add_second_order_dot_vars().
|
inherited |
Adds the additional matrix mat_name
to this system. Only allowed prior to assemble()
. All additional matrices have the same sparsity pattern as the matrix used during solution. When not System
but the user wants to initialize the mayor matrix, then all the additional matrices, if existent, have to be initialized by the user, too.
Definition at line 203 of file implicit_system.C.
References libMesh::ImplicitSystem::_can_add_matrices, libMesh::ImplicitSystem::_matrices, libMesh::SparseMatrix< T >::build(), libMesh::ParallelObject::comm(), and libMesh::ImplicitSystem::have_matrix().
Referenced by libMesh::ImplicitSystem::add_system_matrix(), libMesh::EigenTimeSolver::init(), and libMesh::NewmarkSystem::NewmarkSystem().
|
protectedinherited |
Helper function to add "velocity" variables that are cousins to second order-in-time variables in the DifferentiableSystem. This function is only called if the TimeSolver is a FirstOrderUnsteadySolver.
Definition at line 198 of file diff_system.C.
References libMesh::DifferentiablePhysics::_second_order_dot_vars, libMesh::Variable::active_subdomains(), libMesh::DifferentiableSystem::add_dot_var_dirichlet_bcs(), libMesh::System::add_variable(), libMesh::DifferentiablePhysics::get_second_order_vars(), libMesh::Variable::name(), libMesh::DifferentiablePhysics::time_evolving(), libMesh::Variable::type(), and libMesh::System::variable().
Referenced by libMesh::DifferentiableSystem::init_data().
|
inherited |
Definition at line 1051 of file system.C.
References libMesh::System::add_vector().
Referenced by libMesh::ImplicitSystem::assemble_residual_derivatives().
|
inherited |
Definition at line 906 of file system.C.
References libMesh::System::add_vector().
Referenced by libMesh::ImplicitSystem::sensitivity_solve().
|
inherited |
Adds the variable var
to the list of variables for this system.
Definition at line 1081 of file system.C.
References libMesh::System::_variable_groups, libMesh::System::_variable_numbers, libMesh::System::_variables, libMesh::System::add_variables(), libMesh::VariableGroup::append(), libMesh::System::identify_variable_groups(), libMesh::System::is_initialized(), libMesh::System::n_variable_groups(), libMesh::System::n_vars(), libMesh::System::number(), libMesh::System::variable_name(), and libMesh::System::variable_type().
Referenced by libMesh::DifferentiableSystem::add_second_order_dot_vars(), libMesh::System::add_variable(), libMesh::ErrorVector::plot_error(), and libMesh::System::read_header().
|
inherited |
Adds the variable var
to the list of variables for this system. Same as before, but assumes LAGRANGE
as default value for FEType.family
.
Definition at line 1159 of file system.C.
References libMesh::System::add_variable().
|
inherited |
Adds the variable var
to the list of variables for this system.
Definition at line 1171 of file system.C.
References libMesh::System::_variable_groups, libMesh::System::_variable_numbers, libMesh::System::_variables, libMesh::System::is_initialized(), libMesh::System::n_components(), libMesh::System::n_vars(), libMesh::System::number(), libMesh::System::variable_name(), and libMesh::System::variable_type().
Referenced by libMesh::System::add_variable(), and libMesh::System::add_variables().
|
inherited |
Adds the variable var
to the list of variables for this system. Same as before, but assumes LAGRANGE
as default value for FEType.family
.
Definition at line 1224 of file system.C.
References libMesh::System::add_variables().
|
inherited |
Adds the additional vector vec_name
to this system. All the additional vectors are similarly distributed, like the solution
, and initialized to zero.
By default vectors added by add_vector are projected to changed grids by reinit(). To zero them instead (more efficient), pass "false" as the second argument
Definition at line 661 of file system.C.
References libMesh::System::_dof_map, libMesh::System::_is_initialized, libMesh::System::_vector_is_adjoint, libMesh::System::_vector_projections, libMesh::System::_vector_types, libMesh::System::_vectors, libMesh::NumericVector< T >::build(), libMesh::ParallelObject::comm(), libMesh::GHOSTED, libMesh::System::have_vector(), libMesh::NumericVector< T >::init(), libMesh::System::n_dofs(), and libMesh::System::n_local_dofs().
Referenced by libMesh::System::add_adjoint_rhs(), libMesh::System::add_adjoint_solution(), libMesh::System::add_sensitivity_rhs(), libMesh::System::add_sensitivity_solution(), libMesh::ExplicitSystem::add_system_rhs(), libMesh::System::add_weighted_sensitivity_adjoint_solution(), libMesh::System::add_weighted_sensitivity_solution(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::SecondOrderUnsteadySolver::init(), libMesh::UnsteadySolver::init(), libMesh::OptimizationSystem::init_data(), init_data(), libMesh::NewmarkSystem::NewmarkSystem(), libMesh::System::read_header(), libMesh::FrequencySystem::set_frequencies(), libMesh::FrequencySystem::set_frequencies_by_range(), and libMesh::FrequencySystem::set_frequencies_by_steps().
|
inherited |
Definition at line 989 of file system.C.
References libMesh::System::add_vector(), and libMesh::System::set_vector_as_adjoint().
Referenced by libMesh::ImplicitSystem::weighted_sensitivity_adjoint_solve().
|
inherited |
Definition at line 936 of file system.C.
References libMesh::System::add_vector().
Referenced by libMesh::ImplicitSystem::weighted_sensitivity_solve().
|
overridevirtualinherited |
Solves for the derivative of each of the system's quantities of interest q in qoi
[qoi_indices] with respect to each parameter in parameters
, placing the result for qoi i
and parameter j
into sensitivities
[i][j].
Uses adjoint_solve() and the adjoint sensitivity method.
Currently uses finite differenced derivatives (partial q / partial p) and (partial R / partial p).
Reimplemented from libMesh::System.
Definition at line 697 of file implicit_system.C.
References std::abs(), libMesh::ImplicitSystem::adjoint_solve(), libMesh::SensitivityData::allocate_data(), libMesh::ExplicitSystem::assemble_qoi(), libMesh::ImplicitSystem::assemble_residual_derivatives(), libMesh::NumericVector< T >::dot(), libMesh::System::get_sensitivity_rhs(), libMesh::QoISet::has_index(), libMesh::System::is_adjoint_already_solved(), std::max(), libMesh::System::n_qois(), libMesh::System::qoi, libMesh::Real, libMesh::ParameterVector::size(), and libMesh::TOLERANCE.
|
overridevirtualinherited |
This function sets the _is_adjoint boolean member of TimeSolver to true and then calls the adjoint_solve in implicit system
Reimplemented from libMesh::ImplicitSystem.
Definition at line 164 of file diff_system.C.
References libMesh::ImplicitSystem::adjoint_solve(), libMesh::DifferentiableSystem::get_time_solver(), and libMesh::TimeSolver::set_is_adjoint().
void libMesh::ContinuationSystem::advance_arcstep | ( | ) |
Call this function after a continuation solve to compute the tangent and get the next initial guess.
Definition at line 936 of file continuation_system.C.
References solve_tangent(), and update_solution().
|
private |
Applies the predictor to the current solution to get a guess for the next solution.
Definition at line 1375 of file continuation_system.C.
References AB2, continuation_parameter, dlambda_ds, ds_current, du_ds, Euler, predictor, previous_dlambda_ds, previous_ds, previous_du_ds, libMesh::Real, and libMesh::System::solution.
Referenced by continuation_solve(), and update_solution().
|
overridevirtualinherited |
Prepares matrix
and rhs
for matrix assembly. Users should not reimplement this. Note that in some cases only current_local_solution is used during assembly, and, therefore, if solution has been altered without update() being called, then the user must call update() before calling this function.
Reimplemented from libMesh::ImplicitSystem.
Definition at line 145 of file diff_system.C.
References libMesh::DifferentiableSystem::assembly().
Runs a qoi assembly loop over all elements, and if assemble_qoi_sides
is true over all sides.
Users may have to override this function if they have any quantities of interest that are not expressible as a sum of element qois.
Reimplemented from libMesh::ExplicitSystem.
Definition at line 1121 of file fem_system.C.
References libMesh::MeshBase::active_local_elements_begin(), libMesh::MeshBase::active_local_elements_end(), libMesh::ParallelObject::comm(), libMesh::DifferentiableSystem::diff_qoi, libMesh::System::get_mesh(), libMesh::QoISet::has_index(), mesh, libMesh::System::n_qois(), libMesh::DifferentiableQoI::parallel_op(), libMesh::Threads::parallel_reduce(), libMesh::System::qoi, libMesh::StoredRange< iterator_type, object_type >::reset(), and libMesh::System::update().
|
overridevirtualinherited |
Runs a qoi derivative assembly loop over all elements, and if assemble_qoi_sides
is true over all sides.
Users may have to override this function for quantities of interest that are not expressible as a sum of element qois.
Reimplemented from libMesh::ExplicitSystem.
Definition at line 1151 of file fem_system.C.
References libMesh::MeshBase::active_local_elements_begin(), libMesh::MeshBase::active_local_elements_end(), libMesh::System::add_adjoint_rhs(), libMesh::DifferentiableSystem::diff_qoi, libMesh::DifferentiableQoI::finalize_derivative(), libMesh::System::get_mesh(), libMesh::QoISet::has_index(), mesh, libMesh::System::n_qois(), libMesh::Threads::parallel_for(), libMesh::StoredRange< iterator_type, object_type >::reset(), libMesh::System::update(), and libMesh::NumericVector< T >::zero().
|
overridevirtualinherited |
Residual parameter derivative function.
Uses finite differences by default.
This will assemble the sensitivity rhs vectors to hold -(partial R / partial p_i), making them ready to solve the forward sensitivity equation.
Can be overridden in derived classes.
Reimplemented from libMesh::System.
Definition at line 654 of file implicit_system.C.
References std::abs(), libMesh::System::add_sensitivity_rhs(), libMesh::ImplicitSystem::assembly(), libMesh::NumericVector< T >::close(), std::max(), libMesh::Real, libMesh::ExplicitSystem::rhs, libMesh::ParameterVector::size(), and libMesh::TOLERANCE.
Referenced by libMesh::ImplicitSystem::adjoint_qoi_parameter_sensitivity(), and libMesh::ImplicitSystem::sensitivity_solve().
|
overridevirtualinherited |
Prepares matrix
or rhs
for matrix assembly. Users may reimplement this to add pre- or post-assembly code before or after calling FEMSystem::assembly(). Note that in some cases only current_local_solution is used during assembly, and, therefore, if solution has been altered without update() being called, then the user must call update() before calling this function.
Implements libMesh::DifferentiableSystem.
Definition at line 854 of file fem_system.C.
References libMesh::MeshBase::active_local_elements_begin(), libMesh::MeshBase::active_local_elements_end(), libMesh::DenseMatrix< T >::add(), libMesh::FEMSystem::build_context(), libMesh::NumericVector< T >::close(), libMesh::SparseMatrix< T >::close(), libMesh::err, libMesh::FEType::family, libMesh::DiffContext::get_elem_jacobian(), libMesh::DiffContext::get_elem_residual(), libMesh::System::get_mesh(), libMesh::FEMSystem::init_context(), libMesh::NumericVector< T >::l1_norm(), libMesh::SparseMatrix< T >::l1_norm(), libMesh::DenseMatrix< T >::l1_norm(), libMesh::ImplicitSystem::matrix, std::max(), mesh, libMesh::ParallelObject::n_processors(), libMesh::System::n_variable_groups(), libMesh::FEMSystem::numerical_nonlocal_jacobian(), libMesh::out, libMesh::Threads::parallel_for(), libMesh::FEMContext::pre_fe_reinit(), libMesh::BasicOStreamProxy< charT, traits >::precision(), libMesh::DifferentiableSystem::print_jacobian_norms, libMesh::DifferentiableSystem::print_jacobians, libMesh::DifferentiableSystem::print_residual_norms, libMesh::DifferentiableSystem::print_residuals, libMesh::DifferentiableSystem::print_solution_norms, libMesh::DifferentiableSystem::print_solutions, libMesh::ParallelObject::processor_id(), libMesh::Real, libMesh::StoredRange< iterator_type, object_type >::reset(), libMesh::ExplicitSystem::rhs, libMesh::SCALAR, libMesh::DenseVector< T >::size(), libMesh::System::solution, libMesh::DifferentiableSystem::time_solver, libMesh::Variable::type(), libMesh::System::variable_group(), libMesh::FEMSystem::verify_analytic_jacobians, libMesh::DenseMatrix< T >::zero(), libMesh::SparseMatrix< T >::zero(), and libMesh::NumericVector< T >::zero().
Referenced by continuation_solve(), and solve_tangent().
|
inherited |
Register a user function to use in assembling the system matrix and RHS.
Definition at line 1777 of file system.C.
References libMesh::System::_assemble_system_function, libMesh::System::_assemble_system_object, and libMesh::out.
|
inherited |
Register a user object to use in assembling the system matrix and RHS.
Definition at line 1796 of file system.C.
References libMesh::System::_assemble_system_function, libMesh::System::_assemble_system_object, and libMesh::out.
|
inherited |
Register a user function for imposing constraints.
Definition at line 1812 of file system.C.
References libMesh::System::_constrain_system_function, libMesh::System::_constrain_system_object, and libMesh::out.
|
inherited |
Register a user object for imposing constraints.
Definition at line 1831 of file system.C.
References libMesh::System::_constrain_system_function, libMesh::System::_constrain_system_object, and libMesh::out.
|
inherited |
Register a user function to use in initializing the system.
Definition at line 1742 of file system.C.
References libMesh::System::_init_system_function, libMesh::System::_init_system_object, and libMesh::out.
|
inherited |
Register a user class to use to initialize the system.
attach_init_function
. Definition at line 1761 of file system.C.
References libMesh::System::_init_system_function, libMesh::System::_init_system_object, and libMesh::out.
|
inlineinherited |
Attach external Physics object.
Definition at line 197 of file diff_system.h.
References libMesh::DifferentiableSystem::_diff_physics, libMesh::DifferentiablePhysics::clone_physics(), and libMesh::DifferentiablePhysics::init_physics().
|
inlineinherited |
Attach external QoI object.
Definition at line 225 of file diff_system.h.
References libMesh::DifferentiableQoI::clone(), libMesh::DifferentiableSystem::diff_qoi, libMesh::DifferentiableQoI::init_qoi(), and libMesh::System::qoi.
|
inherited |
Register a user function for evaluating derivatives of a quantity of interest with respect to test functions, whose values should be placed in System::rhs
Definition at line 1883 of file system.C.
References libMesh::System::_qoi_evaluate_derivative_function, libMesh::System::_qoi_evaluate_derivative_object, and libMesh::out.
|
inherited |
Register a user object for evaluating derivatives of a quantity of interest with respect to test functions, whose values should be placed in System::rhs
Definition at line 1902 of file system.C.
References libMesh::System::_qoi_evaluate_derivative_function, libMesh::System::_qoi_evaluate_derivative_object, and libMesh::out.
|
inherited |
Register a user function for evaluating the quantities of interest, whose values should be placed in System::qoi
Definition at line 1847 of file system.C.
References libMesh::System::_qoi_evaluate_function, libMesh::System::_qoi_evaluate_object, and libMesh::out.
|
inherited |
Register a user object for evaluating the quantities of interest, whose values should be placed in System::qoi
Definition at line 1867 of file system.C.
References libMesh::System::_qoi_evaluate_function, libMesh::System::_qoi_evaluate_object, and libMesh::out.
|
inherited |
Projects arbitrary boundary functions onto a vector of degree of freedom values for the current system. Only degrees of freedom which affect the function's trace on a boundary in the set b
are affected. Only degrees of freedom associated with the variables listed in the vector variables
are projected. The function value f
and its gradient g
are user-provided cloneable functors. A gradient g
is only required/used for projecting onto finite element spaces with continuous derivatives. If non-default Parameters
are to be used, they can be provided in the parameters
argument.
This method projects an arbitrary boundary function onto the solution via L2 projections and nodal interpolations on each element.
Definition at line 985 of file system_projection.C.
|
inherited |
Projects arbitrary boundary functions onto a vector of degree of freedom values for the current system. Only degrees of freedom which affect the function's trace on a boundary in the set b
are affected. Only degrees of freedom associated with the variables listed in the vector variables
are projected. The function value fptr
and its gradient gptr
are represented by function pointers. A gradient gptr
is only required/used for projecting onto finite element spaces with continuous derivatives.
This method projects components of an arbitrary boundary function onto the solution via L2 projections and nodal interpolations on each element.
Definition at line 968 of file system_projection.C.
|
inherited |
Projects arbitrary boundary functions onto a vector of degree of freedom values for the current system. Only degrees of freedom which affect the function's trace on a boundary in the set b
are affected. Only degrees of freedom associated with the variables listed in the vector variables
are projected. The function value f
and its gradient g
are user-provided cloneable functors. A gradient g
is only required/used for projecting onto finite element spaces with continuous derivatives. If non-default Parameters
are to be used, they can be provided in the parameters
argument.
Constrain the new vector using the requested adjoint rather than primal constraints if is_adjoint is non-negative.
This method projects an arbitrary function via L2 projections and nodal interpolations on each element.
Definition at line 1021 of file system_projection.C.
References libMesh::NumericVector< T >::close(), and libMesh::Threads::parallel_for().
|
inherited |
Projects arbitrary boundary functions onto a vector of degree of freedom values for the current system. Only degrees of freedom which affect the function's trace on a boundary in the set b
are affected. Only degrees of freedom associated with the variables listed in the vector variables
are projected. The function value fptr
and its gradient gptr
are represented by function pointers. A gradient gptr
is only required/used for projecting onto finite element spaces with continuous derivatives.
Constrain the new vector using the requested adjoint rather than primal constraints if is_adjoint is non-negative.
This method projects an arbitrary boundary function via L2 projections and nodal interpolations on each element.
Definition at line 1003 of file system_projection.C.
|
overridevirtualinherited |
Builds a FEMContext object with enough information to do evaluations on each element.
For most problems, the default FEMSystem implementation is correct; users who subclass FEMContext will need to also reimplement this method to build it.
Reimplemented from libMesh::DifferentiableSystem.
Definition at line 1318 of file fem_system.C.
References libMesh::DifferentiableSystem::deltat, libMesh::DifferentiablePhysics::get_mesh_system(), libMesh::DifferentiablePhysics::get_mesh_x_var(), libMesh::DifferentiablePhysics::get_mesh_y_var(), libMesh::DifferentiablePhysics::get_mesh_z_var(), libMesh::DifferentiableSystem::get_physics(), libMesh::DifferentiableSystem::get_time_solver(), libMesh::TimeSolver::is_adjoint(), libMesh::DiffContext::is_adjoint(), libMesh::DiffContext::set_deltat_pointer(), libMesh::FEMContext::set_mesh_system(), libMesh::FEMContext::set_mesh_x_var(), libMesh::FEMContext::set_mesh_y_var(), and libMesh::FEMContext::set_mesh_z_var().
Referenced by libMesh::FEMSystem::assembly(), libMesh::FEMSystem::mesh_position_get(), and libMesh::FEMSystem::mesh_position_set().
|
inherited |
var
in the vector v
, in the specified norm (e.g. L2, L_INF, H1) Definition at line 1378 of file system.C.
References libMesh::DISCRETE_L1, libMesh::DISCRETE_L2, libMesh::DISCRETE_L_INF, libMesh::System::discrete_var_norm(), libMesh::L2, libMesh::System::n_vars(), and libMesh::Real.
Referenced by libMesh::AdaptiveTimeSolver::calculate_norm(), and libMesh::UnsteadySolver::du().
|
inherited |
v
, using component_norm
and component_scale
to choose and weight the norms of each variable. Definition at line 1400 of file system.C.
References libMesh::System::_dof_map, libMesh::System::_mesh, std::abs(), libMesh::TypeVector< T >::add_scaled(), libMesh::TypeTensor< T >::add_scaled(), libMesh::FEGenericBase< OutputType >::build(), libMesh::NumericVector< T >::build(), libMesh::ParallelObject::comm(), libMesh::FEType::default_quadrature_rule(), libMesh::DISCRETE_L1, libMesh::DISCRETE_L2, libMesh::DISCRETE_L_INF, libMesh::System::discrete_var_norm(), libMesh::DofMap::dof_indices(), libMesh::MeshBase::elem_dimensions(), libMesh::FEGenericBase< OutputType >::get_d2phi(), libMesh::System::get_dof_map(), libMesh::FEGenericBase< OutputType >::get_dphi(), libMesh::FEAbstract::get_JxW(), libMesh::System::get_mesh(), libMesh::FEGenericBase< OutputType >::get_phi(), libMesh::H1, libMesh::H1_SEMINORM, libMesh::H2, libMesh::H2_SEMINORM, libMesh::SystemNorm::is_discrete(), libMesh::L1, libMesh::NumericVector< T >::l1_norm(), libMesh::L2, libMesh::NumericVector< T >::l2_norm(), libMesh::L_INF, libMesh::NumericVector< T >::linfty_norm(), libMesh::NumericVector< T >::localize(), std::max(), libMesh::Parallel::Communicator::max(), libMesh::QBase::n_points(), libMesh::System::n_vars(), libMesh::TypeVector< T >::norm(), libMesh::TypeTensor< T >::norm(), libMesh::TensorTools::norm_sq(), libMesh::TypeVector< T >::norm_sq(), libMesh::TypeTensor< T >::norm_sq(), libMesh::Real, libMesh::FEAbstract::reinit(), libMesh::SERIAL, libMesh::NumericVector< T >::size(), libMesh::Parallel::Communicator::sum(), libMesh::SystemNorm::type(), libMesh::DofMap::variable_type(), libMesh::W1_INF_SEMINORM, libMesh::W2_INF_SEMINORM, libMesh::SystemNorm::weight(), and libMesh::SystemNorm::weight_sq().
|
overridevirtual |
Clear all the data structures associated with the system.
Reimplemented from libMesh::DifferentiableSystem.
Definition at line 80 of file continuation_system.C.
References libMesh::DifferentiableSystem::clear().
Referenced by ~ContinuationSystem().
|
virtualinherited |
Clear any data structures associated with the physics.
Referenced by libMesh::DifferentiableSystem::clear().
|
inlinevirtualinherited |
Clear all the data structures associated with the QoI.
Definition at line 75 of file diff_qoi.h.
Referenced by libMesh::DifferentiableSystem::clear().
|
inlineoverridevirtualinherited |
We don't allow systems to be attached to each other
Implements libMesh::DifferentiableQoI.
Definition at line 169 of file diff_system.h.
Referenced by libMesh::AdjointRefinementEstimator::estimate_error().
|
inlineoverridevirtualinherited |
We don't allow systems to be attached to each other
Implements libMesh::DifferentiablePhysics.
Definition at line 159 of file diff_system.h.
|
inlineinherited |
Parallel::Communicator
object used by this mesh. Definition at line 89 of file parallel_object.h.
References libMesh::ParallelObject::_communicator.
Referenced by libMesh::__libmesh_petsc_diff_solver_jacobian(), libMesh::__libmesh_petsc_diff_solver_monitor(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::__libmesh_tao_equality_constraints(), libMesh::__libmesh_tao_equality_constraints_jacobian(), libMesh::__libmesh_tao_gradient(), libMesh::__libmesh_tao_hessian(), libMesh::__libmesh_tao_inequality_constraints(), libMesh::__libmesh_tao_inequality_constraints_jacobian(), libMesh::__libmesh_tao_objective(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::BoundaryInfo::_find_id_maps(), libMesh::SlepcEigenSolver< T >::_petsc_shell_matrix_get_diagonal(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_get_diagonal(), libMesh::SlepcEigenSolver< T >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_mult_add(), libMesh::EquationSystems::_read_impl(), libMesh::MeshRefinement::_refine_elements(), libMesh::MeshRefinement::_smooth_flags(), libMesh::PetscDMWrapper::add_dofs_helper(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::ImplicitSystem::add_matrix(), libMesh::System::add_vector(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assemble_qoi(), libMesh::MeshCommunication::assign_global_indices(), libMesh::DofMap::attach_matrix(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::PetscDMWrapper::build_section(), libMesh::PetscDMWrapper::build_sf(), libMesh::MeshBase::cache_elem_dims(), libMesh::System::calculate_norm(), libMesh::DofMap::check_dirichlet_bcid_consistency(), libMesh::PetscDMWrapper::check_section_n_dofs(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshTools::create_bounding_box(), libMesh::MeshTools::create_nodal_bounding_box(), libMesh::MeshRefinement::create_parent_error_vector(), libMesh::MeshTools::create_processor_bounding_box(), libMesh::MeshTools::create_subdomain_bounding_box(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), DMlibMeshFunction(), DMlibMeshJacobian(), DMlibMeshSetSystem_libMesh(), DMVariableBounds_libMesh(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::EpetraVector< T >::EpetraVector(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), libMesh::CondensedEigenSystem::get_eigenpair(), libMesh::DofMap::get_info(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::LocationMap< T >::init(), libMesh::TimeSolver::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), libMesh::EigenSystem::init_data(), libMesh::EigenSystem::init_matrices(), libMesh::OptimizationSystem::initialize_equality_constraints_storage(), libMesh::OptimizationSystem::initialize_inequality_constraints_storage(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_new_node_procids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_flags(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_p_levels(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshTools::libmesh_assert_valid_unique_ids(), libMesh::libmesh_petsc_snes_fd_residual(), libMesh::libmesh_petsc_snes_jacobian(), libMesh::libmesh_petsc_snes_mffd_residual(), libMesh::libmesh_petsc_snes_postcheck(), libMesh::libmesh_petsc_snes_residual(), libMesh::libmesh_petsc_snes_residual_helper(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::limit_overrefined_boundary(), libMesh::MeshRefinement::limit_underrefined_boundary(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_new_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_new_nodes_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_unique_ids_parallel_consistent(), libMesh::MeshCommunication::make_nodes_parallel_consistent(), libMesh::MeshCommunication::make_p_levels_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::FEMSystem::mesh_position_set(), libMesh::DistributedMesh::n_active_elem(), libMesh::MeshTools::n_active_levels(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::CondensedEigenSystem::n_global_non_condensed_dofs(), libMesh::MeshTools::n_levels(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::MeshTools::n_p_levels(), libMesh::BoundaryInfo::n_shellface_conds(), libMesh::DistributedMesh::parallel_max_elem_id(), libMesh::DistributedMesh::parallel_max_node_id(), libMesh::ReplicatedMesh::parallel_max_unique_id(), libMesh::DistributedMesh::parallel_max_unique_id(), libMesh::DistributedMesh::parallel_n_elem(), libMesh::DistributedMesh::parallel_n_nodes(), libMesh::SparsityPattern::Build::parallel_sync(), libMesh::MeshTools::paranoid_n_levels(), libMesh::petsc_auto_fieldsplit(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::MeshBase::prepare_for_use(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs_helper(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), libMesh::MeshBase::recalculate_n_partitions(), libMesh::MeshRefinement::refine_and_coarsen_elements(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::CheckpointIO::select_split_config(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::PetscDiffSolver::setup_petsc_data(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::split_mesh(), libMesh::MeshBase::subdomain_ids(), libMesh::BoundaryInfo::sync(), libMesh::MeshRefinement::test_level_one(), libMesh::MeshRefinement::test_unflagged(), libMesh::MeshTools::total_weight(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().
|
virtualinherited |
true
when the other system contains identical data, up to the given threshold. Outputs some diagnostic info when verbose
is set. Definition at line 514 of file system.C.
References libMesh::System::_is_initialized, libMesh::System::_sys_name, libMesh::System::_vectors, libMesh::System::get_vector(), libMesh::System::n_vectors(), libMesh::System::name(), libMesh::out, and libMesh::System::solution.
Referenced by libMesh::EquationSystems::compare().
void libMesh::ContinuationSystem::continuation_solve | ( | ) |
Perform a continuation solve of the system. In general, you can only begin the continuation solves after either reading in or solving for two previous values of the control parameter. The prior two solutions are required for starting up the continuation method.
Definition at line 358 of file continuation_system.C.
References std::abs(), libMesh::NumericVector< T >::add(), apply_predictor(), libMesh::FEMSystem::assembly(), libMesh::NumericVector< T >::close(), libMesh::SparseMatrix< T >::close(), continuation_parameter, continuation_parameter_tolerance, delta_u, dlambda_ds, libMesh::NumericVector< T >::dot(), ds_current, du_ds, G_Lambda, initial_newton_tolerance, initialize_tangent(), libMesh::NumericVector< T >::l2_norm(), libMesh::libmesh_real(), linear_solver, libMesh::ImplicitSystem::matrix, max_continuation_parameter, libMesh::DiffSolver::max_linear_iterations, libMesh::DiffSolver::max_nonlinear_iterations, std::min(), min_continuation_parameter, n_arclength_reductions, n_backtrack_steps, newton_progress_check, newton_solver, newton_step, old_continuation_parameter, libMesh::out, std::pow(), libMesh::BasicOStreamProxy< charT, traits >::precision(), previous_u, quiet, libMesh::Real, Residual, libMesh::ExplicitSystem::rhs, rhs_mode, libMesh::NumericVector< T >::scale(), libMesh::BasicOStreamProxy< charT, traits >::setf(), libMesh::System::solution, solution_tolerance, tangent_initialized, Theta, Theta_LOCA, libMesh::DifferentiableSystem::time_solver, libMesh::BasicOStreamProxy< charT, traits >::unsetf(), y, y_old, z, and libMesh::NumericVector< T >::zero().
|
inherited |
Definition at line 194 of file system.C.
References libMesh::System::_dof_map, and libMesh::System::current_local_solution.
Referenced by libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::HPCoarsenTest::add_projection(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::HPCoarsenTest::select_refinement(), libMesh::EnsightIO::write_scalar_ascii(), and libMesh::EnsightIO::write_vector_ascii().
|
inlinevirtualinherited |
Subtracts a damping vector contribution on elem
from elem_residual. This method is not used in first-order-in-time problems. For second-order-in-time problems, this is the term. This method is only called for UnsteadySolver-based TimeSolvers.
If this method receives request_jacobian = true, then it should compute elem_jacobian and return true if possible. If elem_jacobian has not been computed then the method should return false.
If the problem has no damping, the default "do-nothing" is correct. Otherwise, this must be reimplemented.
Definition at line 374 of file diff_physics.h.
Referenced by libMesh::EulerSolver::element_residual(), libMesh::Euler2Solver::element_residual(), and libMesh::NewmarkSolver::element_residual().
|
inlineinherited |
Deactivates the system. Only active systems are solved.
Definition at line 2081 of file system.h.
References libMesh::System::_active.
|
overridevirtualinherited |
Avoids use of any cached data that might affect any solve result. Should be overridden in derived systems.
Reimplemented from libMesh::System.
Definition at line 306 of file implicit_system.C.
References libMesh::System::assemble_before_solve, libMesh::ImplicitSystem::get_linear_solver(), and libMesh::LinearSolver< T >::reuse_preconditioner().
|
staticinherited |
Definition at line 106 of file reference_counter.C.
References libMesh::ReferenceCounter::_enable_print_counter.
Referenced by libMesh::LibMeshInit::LibMeshInit().
|
inlinevirtualinherited |
Adds the constraint contribution on elem
to elem_residual. If this method receives request_jacobian = true, then it should compute elem_jacobian and return true if possible. If elem_jacobian has not been computed then the method should return false.
Users may need to reimplement this for their particular PDE.
To implement the constraint 0 = G(u), the user should examine u = elem_solution and add (G(u), phi_i) to elem_residual in elem_constraint().
Definition at line 142 of file diff_physics.h.
Referenced by libMesh::EulerSolver::element_residual(), libMesh::Euler2Solver::element_residual(), libMesh::SteadySolver::element_residual(), libMesh::EigenTimeSolver::element_residual(), and libMesh::NewmarkSolver::element_residual().
|
inlinevirtualinherited |
Does any work that needs to be done on elem
in a postprocessing loop.
Definition at line 282 of file diff_system.h.
|
inlinevirtualinherited |
Does any work that needs to be done on elem
in a quantity of interest assembly loop, outputting to elem_qoi.
Only qois included in the supplied QoISet
need to be assembled.
Definition at line 108 of file diff_qoi.h.
|
inlinevirtualinherited |
Does any work that needs to be done on elem
in a quantity of interest derivative assembly loop, outputting to elem_qoi_derivative
Only qois included in the supplied QoISet
need their derivatives assembled.
Definition at line 120 of file diff_qoi.h.
|
inlinevirtualinherited |
Adds the time derivative contribution on elem
to elem_residual. If this method receives request_jacobian = true, then it should compute elem_jacobian and return true if possible. If elem_jacobian has not been computed then the method should return false.
Users need to reimplement this for their particular PDE.
To implement the physics model du/dt = F(u), the user should examine u = elem_solution and add (F(u), phi_i) to elem_residual in elem_time_derivative().
Definition at line 124 of file diff_physics.h.
Referenced by libMesh::SteadySolver::element_residual(), and libMesh::EigenTimeSolver::element_residual().
|
staticinherited |
Methods to enable/disable the reference counter output from print_info()
Definition at line 100 of file reference_counter.C.
References libMesh::ReferenceCounter::_enable_print_counter.
|
overridevirtualinherited |
Adds a pseudo-convection contribution on elem
to elem_residual, if the nodes of elem
are being translated by a moving mesh.
This function assumes that the user's time derivative equations (except for any equations involving unknown mesh xyz coordinates themselves) are expressed in an Eulerian frame of reference, and that the user is satisfied with an unstabilized convection term. Lagrangian equations will probably require overriding eulerian_residual() with a blank function; ALE or stabilized formulations will require reimplementing eulerian_residual() entirely.
Reimplemented from libMesh::DifferentiablePhysics.
|
inlinevirtualinherited |
Adds a pseudo-convection contribution on elem
to elem_residual, if the nodes of elem
are being translated by a moving mesh.
The library provides a basic implementation in FEMPhysics::eulerian_residual()
Reimplemented in libMesh::FEMPhysics.
Definition at line 294 of file diff_physics.h.
|
virtualinherited |
Method to finalize qoi derivatives which require more than just a simple sum of element contributions.
Referenced by libMesh::FEMSystem::assemble_qoi_derivative().
|
overridevirtualinherited |
Solves for the derivative of each of the system's quantities of interest q in qoi
[qoi_indices] with respect to each parameter in parameters
, placing the result for qoi i
and parameter j
into sensitivities
[i][j].
Uses the forward sensitivity method.
Currently uses finite differenced derivatives (partial q / partial p) and (partial R / partial p).
Reimplemented from libMesh::System.
Definition at line 807 of file implicit_system.C.
References std::abs(), libMesh::SensitivityData::allocate_data(), libMesh::ExplicitSystem::assemble_qoi(), libMesh::ExplicitSystem::assemble_qoi_derivative(), libMesh::ImplicitSystem::assembly(), libMesh::NumericVector< T >::close(), libMesh::SparseMatrix< T >::close(), libMesh::NumericVector< T >::dot(), libMesh::System::get_adjoint_rhs(), libMesh::System::get_sensitivity_solution(), libMesh::QoISet::has_index(), libMesh::ImplicitSystem::matrix, std::max(), libMesh::System::n_qois(), libMesh::System::qoi, libMesh::Real, libMesh::ExplicitSystem::rhs, libMesh::ImplicitSystem::sensitivity_solve(), libMesh::ParameterVector::size(), and libMesh::TOLERANCE.
|
inherited |
Definition at line 1031 of file system.C.
References libMesh::System::get_vector().
Referenced by libMesh::ImplicitSystem::adjoint_solve(), libMesh::ImplicitSystem::forward_qoi_parameter_sensitivity(), libMesh::ImplicitSystem::qoi_parameter_hessian(), libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product(), and libMesh::ImplicitSystem::weighted_sensitivity_adjoint_solve().
|
inherited |
Definition at line 1041 of file system.C.
References libMesh::System::get_vector().
|
inherited |
Definition at line 969 of file system.C.
References libMesh::System::get_vector().
Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::ImplicitSystem::adjoint_solve(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::AdjointResidualErrorEstimator::estimate_error(), libMesh::ImplicitSystem::qoi_parameter_hessian(), libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product(), and libMesh::ImplicitSystem::weighted_sensitivity_adjoint_solve().
|
inherited |
Definition at line 979 of file system.C.
References libMesh::System::get_vector().
|
inherited |
Fills all_variable_numbers
with all the variable numbers for the variables that have been added to this system.
Definition at line 1258 of file system.C.
References libMesh::System::_variable_numbers, and libMesh::System::n_vars().
|
inlineinherited |
_dof_map
. Definition at line 2049 of file system.h.
References libMesh::System::_dof_map.
Referenced by libMesh::__libmesh_petsc_diff_solver_jacobian(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::DifferentiableSystem::add_dot_var_dirichlet_bcs(), libMesh::HPCoarsenTest::add_projection(), libMesh::UnsteadySolver::adjoint_advance_timestep(), libMesh::ImplicitSystem::adjoint_solve(), libMesh::NewmarkSolver::advance_timestep(), libMesh::UnsteadySolver::advance_timestep(), libMesh::EquationSystems::allgather(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::PetscDMWrapper::build_sf(), libMesh::System::calculate_norm(), libMesh::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), DMCreateDomainDecomposition_libMesh(), DMCreateFieldDecomposition_libMesh(), DMlibMeshFunction(), DMlibMeshJacobian(), DMlibMeshSetSystem_libMesh(), libMesh::DofMap::enforce_constraints_exactly(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::System::get_info(), libMesh::SystemSubsetBySubdomain::init(), libMesh::SecondOrderUnsteadySolver::init_data(), libMesh::UnsteadySolver::init_data(), libMesh::EigenSystem::init_matrices(), libMesh::ImplicitSystem::init_matrices(), libMesh::CondensedEigenSystem::initialize_condensed_dofs(), libMesh::OptimizationSystem::initialize_equality_constraints_storage(), libMesh::OptimizationSystem::initialize_inequality_constraints_storage(), libMesh::libmesh_petsc_snes_jacobian(), libMesh::libmesh_petsc_snes_postcheck(), libMesh::libmesh_petsc_snes_residual_helper(), libMesh::System::local_dof_indices(), libMesh::DofMap::max_constraint_error(), libMesh::DGFEMContext::neighbor_side_fe_reinit(), libMesh::UnsteadySolver::old_nonlinear_solution(), libMesh::SecondOrderUnsteadySolver::old_solution_accel(), libMesh::SecondOrderUnsteadySolver::old_solution_rate(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::petsc_auto_fieldsplit(), libMesh::ErrorVector::plot_error(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::FEMContext::pre_fe_reinit(), libMesh::System::re_update(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::SecondOrderUnsteadySolver::reinit(), libMesh::UnsteadySolver::reinit(), libMesh::EigenSystem::reinit(), libMesh::ImplicitSystem::reinit(), libMesh::System::reinit_constraints(), libMesh::EquationSystems::reinit_solutions(), libMesh::UnsteadySolver::retrieve_timestep(), libMesh::HPCoarsenTest::select_refinement(), libMesh::ImplicitSystem::sensitivity_solve(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::NewtonSolver::solve(), libMesh::PetscDiffSolver::solve(), libMesh::ImplicitSystem::weighted_sensitivity_adjoint_solve(), libMesh::ImplicitSystem::weighted_sensitivity_solve(), libMesh::System::write_parallel_data(), libMesh::EnsightIO::write_scalar_ascii(), libMesh::System::write_SCALAR_dofs(), and libMesh::EnsightIO::write_vector_ascii().
|
inlineinherited |
_dof_map
. Definition at line 2057 of file system.h.
References libMesh::System::_dof_map.
|
inlineinherited |
Definition at line 712 of file system.h.
References libMesh::System::_equation_systems.
Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::NewmarkSystem::clear(), libMesh::FrequencySystem::clear_all(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::AdjointResidualErrorEstimator::estimate_error(), libMesh::ExactErrorEstimator::find_squared_element_error(), libMesh::ImplicitSystem::get_linear_solve_parameters(), libMesh::FrequencySystem::init_data(), libMesh::FrequencySystem::n_frequencies(), libMesh::System::point_value(), libMesh::FrequencySystem::set_current_frequency(), libMesh::FrequencySystem::set_frequencies(), libMesh::FrequencySystem::set_frequencies_by_range(), libMesh::FrequencySystem::set_frequencies_by_steps(), libMesh::NewmarkSystem::set_newmark_parameters(), libMesh::NonlinearImplicitSystem::set_solver_parameters(), libMesh::CondensedEigenSystem::solve(), libMesh::EigenSystem::solve(), libMesh::FrequencySystem::solve(), libMesh::LinearImplicitSystem::solve(), and libMesh::WrappedFunction< Output >::WrappedFunction().
|
inlineinherited |
Definition at line 717 of file system.h.
References libMesh::System::_equation_systems.
|
inlineinherited |
Definition at line 517 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_first_order_vars.
Referenced by libMesh::DifferentiableSystem::have_first_order_scalar_vars().
|
staticinherited |
Gets a string containing the reference information.
Definition at line 47 of file reference_counter.C.
References libMesh::ReferenceCounter::_counts, and libMesh::Quality::name().
Referenced by libMesh::ReferenceCounter::print_info().
|
inherited |
Definition at line 1658 of file system.C.
References libMesh::FEType::family, libMesh::System::get_dof_map(), libMesh::DofMap::get_info(), libMesh::FEType::inf_map, libMesh::System::n_constrained_dofs(), libMesh::System::n_dofs(), libMesh::System::n_local_constrained_dofs(), libMesh::System::n_local_dofs(), libMesh::System::n_matrices(), libMesh::System::n_variable_groups(), libMesh::VariableGroup::n_variables(), libMesh::System::n_vectors(), libMesh::VariableGroup::name(), libMesh::System::name(), libMesh::System::number(), libMesh::FEType::order, libMesh::FEType::radial_family, libMesh::FEType::radial_order, libMesh::System::system_type(), libMesh::Variable::type(), libMesh::DofMap::variable_group(), and libMesh::System::variable_group().
|
overridevirtualinherited |
Reimplemented from libMesh::ImplicitSystem.
Definition at line 184 of file diff_system.C.
References libMesh::DifferentiableSystem::time_solver.
|
overridevirtualinherited |
Reimplemented from libMesh::ImplicitSystem.
Definition at line 175 of file diff_system.C.
References libMesh::DifferentiableSystem::time_solver.
|
inherited |
mat_name
.None of these matrices is involved in the solution process. Access is only granted when the matrix is already properly initialized.
Definition at line 263 of file implicit_system.C.
References libMesh::ImplicitSystem::_matrices.
Referenced by libMesh::NewmarkSystem::compute_matrix(), libMesh::EigenTimeSolver::solve(), and libMesh::NewmarkSystem::update_rhs().
|
inherited |
mat_name
.None of these matrices is involved in the solution process. Access is only granted when the matrix is already properly initialized.
Definition at line 276 of file implicit_system.C.
References libMesh::ImplicitSystem::_matrices.
|
inlineinherited |
_mesh
. Definition at line 2033 of file system.h.
References libMesh::System::_mesh.
Referenced by libMesh::ExactSolution::_compute_error(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::HPCoarsenTest::add_projection(), libMesh::FEMSystem::assemble_qoi(), libMesh::FEMSystem::assemble_qoi_derivative(), libMesh::FEMSystem::assembly(), libMesh::System::calculate_norm(), DMCreateDomainDecomposition_libMesh(), DMCreateFieldDecomposition_libMesh(), DMlibMeshSetSystem_libMesh(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointResidualErrorEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::SystemSubsetBySubdomain::init(), libMesh::System::init_data(), libMesh::EigenSystem::init_matrices(), libMesh::ImplicitSystem::init_matrices(), libMesh::System::local_dof_indices(), libMesh::DofMap::max_constraint_error(), libMesh::FEMSystem::mesh_position_get(), libMesh::FEMSystem::mesh_position_set(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::petsc_auto_fieldsplit(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::FEMSystem::postprocess(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::System::read_parallel_data(), libMesh::System::read_serialized_vector(), libMesh::System::read_serialized_vectors(), libMesh::EigenSystem::reinit(), libMesh::ImplicitSystem::reinit(), libMesh::HPSingularity::select_refinement(), libMesh::HPCoarsenTest::select_refinement(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::System::write_header(), libMesh::System::write_parallel_data(), libMesh::System::write_serialized_vector(), libMesh::System::write_serialized_vectors(), and libMesh::System::zero_variable().
|
inlineinherited |
_mesh
. Definition at line 2041 of file system.h.
References libMesh::System::_mesh.
|
inlineinherited |
Definition at line 624 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_mesh_sys.
Referenced by libMesh::FEMSystem::build_context().
|
inlineinherited |
Definition at line 630 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_mesh_sys.
|
inlineinherited |
Definition at line 636 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_mesh_x_var.
Referenced by libMesh::FEMSystem::build_context().
|
inlineinherited |
Definition at line 642 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_mesh_y_var.
Referenced by libMesh::FEMSystem::build_context().
|
inlineinherited |
Definition at line 648 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_mesh_z_var.
Referenced by libMesh::FEMSystem::build_context().
|
inlineinherited |
this
. Definition at line 182 of file diff_system.h.
References libMesh::DifferentiableSystem::_diff_physics.
Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::SteadySolver::_general_residual(), libMesh::NewmarkSolver::_general_residual(), libMesh::FEMSystem::build_context(), libMesh::EulerSolver::element_residual(), libMesh::Euler2Solver::element_residual(), libMesh::EigenTimeSolver::element_residual(), libMesh::FEMSystem::init_context(), libMesh::EigenTimeSolver::nonlocal_residual(), and libMesh::EigenTimeSolver::side_residual().
|
inlineinherited |
this
. Definition at line 191 of file diff_system.h.
References libMesh::DifferentiableSystem::_diff_physics.
|
inlineinherited |
this
. Definition at line 211 of file diff_system.h.
References libMesh::DifferentiableSystem::diff_qoi.
|
inlineinherited |
Definition at line 219 of file diff_system.h.
References libMesh::DifferentiableSystem::diff_qoi.
|
inherited |
For a given second order (in time) variable var, this method will return the index to the corresponding "dot" variable. For FirstOrderUnsteadySolver classes, the "dot" variable would automatically be added and the returned index will correspond to that variable. For SecondOrderUnsteadySolver classes, this method will return var as there this is no "dot" variable per se, but having this function allows one to use the interface to treat both FirstOrderUnsteadySolver and SecondOrderUnsteadySolver simultaneously.
Definition at line 306 of file diff_system.C.
References libMesh::DifferentiablePhysics::_second_order_dot_vars, libMesh::UnsteadySolver::time_order(), and libMesh::DifferentiableSystem::time_solver.
Referenced by libMesh::FirstOrderUnsteadySolver::compute_second_order_eqns().
|
inlineinherited |
Definition at line 530 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_second_order_vars.
Referenced by libMesh::DifferentiableSystem::add_second_order_dot_vars(), libMesh::DiffContext::DiffContext(), libMesh::Euler2Solver::element_residual(), libMesh::DifferentiableSystem::have_second_order_scalar_vars(), and libMesh::FEMContext::pre_fe_reinit().
|
inherited |
assemble_residual_derivatives()
is called.When assembled, this vector should hold -(partial R / partial p_i)
Definition at line 1061 of file system.C.
References libMesh::System::get_vector().
Referenced by libMesh::ImplicitSystem::adjoint_qoi_parameter_sensitivity(), and libMesh::ImplicitSystem::sensitivity_solve().
|
inherited |
Definition at line 1071 of file system.C.
References libMesh::System::get_vector().
|
inherited |
Definition at line 916 of file system.C.
References libMesh::System::get_vector().
Referenced by libMesh::ImplicitSystem::forward_qoi_parameter_sensitivity(), libMesh::ImplicitSystem::qoi_parameter_hessian(), and libMesh::ImplicitSystem::sensitivity_solve().
|
inherited |
Definition at line 926 of file system.C.
References libMesh::System::get_vector().
|
inlineinherited |
Definition at line 415 of file diff_system.h.
References libMesh::DifferentiableSystem::time_solver.
Referenced by libMesh::DifferentiableSystem::adjoint_solve(), libMesh::FEMSystem::build_context(), libMesh::DiffContext::DiffContext(), libMesh::FEMSystem::postprocess(), libMesh::FEMContext::pre_fe_reinit(), and libMesh::DifferentiableSystem::solve().
|
inlineinherited |
Non-const version of the above
Definition at line 423 of file diff_system.h.
References libMesh::DifferentiableSystem::time_solver.
|
inherited |
vec_name
. Access is only granted when the vector is already properly initialized. Definition at line 774 of file system.C.
References libMesh::System::_vectors.
Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::UnsteadySolver::adjoint_advance_timestep(), libMesh::NewmarkSolver::advance_timestep(), libMesh::AdaptiveTimeSolver::advance_timestep(), libMesh::UnsteadySolver::advance_timestep(), libMesh::System::compare(), libMesh::NewmarkSolver::compute_initial_accel(), libMesh::UnsteadySolver::du(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::System::get_adjoint_rhs(), libMesh::System::get_adjoint_solution(), libMesh::System::get_sensitivity_rhs(), libMesh::System::get_sensitivity_solution(), libMesh::System::get_weighted_sensitivity_adjoint_solution(), libMesh::System::get_weighted_sensitivity_solution(), libMesh::NewmarkSystem::initial_conditions(), libMesh::NewmarkSolver::project_initial_accel(), libMesh::SecondOrderUnsteadySolver::project_initial_rate(), libMesh::SecondOrderUnsteadySolver::reinit(), libMesh::UnsteadySolver::reinit(), libMesh::MemorySolutionHistory::retrieve(), libMesh::UnsteadySolver::retrieve_timestep(), libMesh::TwostepTimeSolver::solve(), libMesh::FrequencySystem::solve(), libMesh::NewmarkSystem::update_rhs(), and libMesh::NewmarkSystem::update_u_v_a().
|
inherited |
vec_name
. Access is only granted when the vector is already properly initialized. Definition at line 787 of file system.C.
References libMesh::System::_vectors.
|
inherited |
vec_num
(where the vectors are counted starting with 0). Definition at line 800 of file system.C.
References libMesh::System::vectors_begin(), and libMesh::System::vectors_end().
|
inherited |
vec_num
(where the vectors are counted starting with 0). Definition at line 816 of file system.C.
References libMesh::System::vectors_begin(), and libMesh::System::vectors_end().
|
inherited |
Definition at line 1001 of file system.C.
References libMesh::System::get_vector().
Referenced by libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product(), and libMesh::ImplicitSystem::weighted_sensitivity_adjoint_solve().
|
inherited |
Definition at line 1011 of file system.C.
References libMesh::System::get_vector().
|
inherited |
Definition at line 943 of file system.C.
References libMesh::System::get_vector().
Referenced by libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product(), and libMesh::ImplicitSystem::weighted_sensitivity_solve().
|
inherited |
Definition at line 950 of file system.C.
References libMesh::System::get_vector().
|
inherited |
true
if a variable named var
exists in this System Definition at line 1236 of file system.C.
References libMesh::System::_variable_numbers.
Referenced by libMesh::GMVIO::copy_nodal_solution().
|
inherited |
Check for any first order vars that are also belong to FEFamily::SCALAR
Definition at line 323 of file diff_system.C.
References libMesh::DifferentiablePhysics::get_first_order_vars(), libMesh::DifferentiablePhysics::have_first_order_vars(), libMesh::SCALAR, and libMesh::System::variable().
|
inlineinherited |
Definition at line 511 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_first_order_vars.
Referenced by libMesh::DifferentiableSystem::have_first_order_scalar_vars().
|
inlineinherited |
true
if this System
has a matrix associated with the given name, false
otherwise. Definition at line 419 of file implicit_system.h.
References libMesh::ImplicitSystem::_matrices.
Referenced by libMesh::ImplicitSystem::add_matrix(), and libMesh::EigenTimeSolver::init().
|
inherited |
Check for any second order vars that are also belong to FEFamily::SCALAR
Definition at line 335 of file diff_system.C.
References libMesh::DifferentiablePhysics::get_second_order_vars(), libMesh::DifferentiablePhysics::have_second_order_vars(), libMesh::SCALAR, and libMesh::System::variable().
Referenced by libMesh::EulerSolver::nonlocal_residual(), and libMesh::Euler2Solver::nonlocal_residual().
|
inlineinherited |
Definition at line 524 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_second_order_vars.
Referenced by libMesh::EulerSolver::element_residual(), and libMesh::DifferentiableSystem::have_second_order_scalar_vars().
|
inlineinherited |
true
if this System
has a vector associated with the given name, false
otherwise. Definition at line 2225 of file system.h.
References libMesh::System::_vectors.
Referenced by libMesh::System::add_vector().
|
inlineinherited |
true
, then EquationSystems::write
will ignore this system. Definition at line 1662 of file system.h.
References libMesh::System::_hide_output.
|
inlineinherited |
true
when VariableGroup
structures should be automatically identified, false
otherwise. Definition at line 2201 of file system.h.
References libMesh::System::_identify_variable_groups.
Referenced by libMesh::System::add_variable().
|
inlineinherited |
Toggle automatic VariableGroup
identification.
Definition at line 2209 of file system.h.
References libMesh::System::_identify_variable_groups.
|
inlineprotectedinherited |
Increments the construction counter. Should be called in the constructor of any derived class that will be reference counted.
Definition at line 181 of file reference_counter.h.
References libMesh::ReferenceCounter::_counts, libMesh::Quality::name(), and libMesh::Threads::spin_mtx.
Referenced by libMesh::ReferenceCountedObject< RBParametrized >::ReferenceCountedObject().
|
inlineprotectedinherited |
Increments the destruction counter. Should be called in the destructor of any derived class that will be reference counted.
Definition at line 194 of file reference_counter.h.
References libMesh::ReferenceCounter::_counts, libMesh::Quality::name(), and libMesh::Threads::spin_mtx.
Referenced by libMesh::ReferenceCountedObject< RBParametrized >::~ReferenceCountedObject().
|
inherited |
Initializes degrees of freedom on the current mesh. Sets the
Definition at line 237 of file system.C.
References libMesh::System::_basic_system_only, libMesh::System::init_data(), libMesh::System::is_initialized(), libMesh::System::n_vars(), and libMesh::System::user_initialization().
|
overridevirtualinherited |
Reimplemented from libMesh::DifferentiablePhysics.
Definition at line 1342 of file fem_system.C.
References libMesh::DifferentiableSystem::deltat, libMesh::FEInterface::field_type(), libMesh::FEMContext::get_element_fe(), libMesh::FEAbstract::get_JxW(), libMesh::FEGenericBase< OutputType >::get_phi(), libMesh::DifferentiableSystem::get_physics(), libMesh::DifferentiablePhysics::is_time_evolving(), libMesh::System::n_vars(), libMesh::DiffContext::set_deltat_pointer(), libMesh::TYPE_SCALAR, libMesh::TYPE_VECTOR, and libMesh::System::variable_type().
Referenced by libMesh::FEMSystem::assembly(), libMesh::FEMSystem::mesh_position_get(), and libMesh::FEMSystem::mesh_position_set().
|
overrideprotectedvirtual |
Initializes the member data fields associated with the system, so that, e.g., assemble()
may be used.
Reimplemented from libMesh::FEMSystem.
Definition at line 90 of file continuation_system.C.
References libMesh::System::add_vector(), delta_u, du_ds, libMesh::FEMSystem::init_data(), previous_du_ds, previous_u, y, y_old, and z.
|
protectedvirtualinherited |
Initializes the matrices associated with this system.
Definition at line 106 of file implicit_system.C.
References libMesh::ImplicitSystem::_can_add_matrices, libMesh::ImplicitSystem::_matrices, libMesh::DofMap::attach_matrix(), libMesh::DofMap::compute_sparsity(), libMesh::System::get_dof_map(), libMesh::System::get_mesh(), libMesh::SparseMatrix< T >::initialized(), libMesh::DofMap::is_attached(), and libMesh::ImplicitSystem::matrix.
Referenced by libMesh::ImplicitSystem::init_data().
|
virtualinherited |
Initialize any data structures associated with the physics.
Referenced by libMesh::DifferentiableSystem::attach_physics(), and libMesh::DifferentiableSystem::init_data().
|
inlinevirtualinherited |
Initialize system qoi. By default, does nothing in order to maintain backward compatibility for FEMSystem applications that control qoi.
Definition at line 69 of file diff_qoi.h.
Referenced by libMesh::DifferentiableSystem::attach_qoi().
|
private |
Before starting arclength continuation, we need at least 2 prior solutions (both solution and u_previous should be filled with meaningful values) And we need to initialize the tangent vector. This only needs to be called once.
Definition at line 131 of file continuation_system.C.
References libMesh::NumericVector< T >::add(), libMesh::NumericVector< T >::close(), continuation_parameter, dlambda_ds, ds_current, du_ds, libMesh::NumericVector< T >::l2_norm(), old_continuation_parameter, libMesh::out, previous_u, quiet, libMesh::Real, libMesh::NumericVector< T >::scale(), set_Theta(), libMesh::System::solution, solve_tangent(), tangent_initialized, Theta, Theta_LOCA, update_solution(), and y.
Referenced by continuation_solve().
|
inlineinherited |
Accessor for the adjoint_already_solved boolean
Definition at line 388 of file system.h.
References libMesh::System::adjoint_already_solved.
Referenced by libMesh::ImplicitSystem::adjoint_qoi_parameter_sensitivity(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::AdjointResidualErrorEstimator::estimate_error(), libMesh::ImplicitSystem::qoi_parameter_hessian(), and libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product().
|
inlineinherited |
Definition at line 520 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_first_order_vars.
|
inlineinherited |
true
iff this system has been initialized. Definition at line 2089 of file system.h.
References libMesh::System::_is_initialized.
Referenced by libMesh::System::add_variable(), libMesh::System::add_variables(), and libMesh::System::init().
|
inlineinherited |
Definition at line 533 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_second_order_vars.
Referenced by libMesh::FirstOrderUnsteadySolver::compute_second_order_eqns().
|
inlineinherited |
true
iff variable var
is evolving with respect to time. In general, the user's init() function should have set time_evolving() for any variables which behave like du/dt = F(u), and should not call time_evolving() for any variables which behave like 0 = G(u). Definition at line 277 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_time_evolving.
Referenced by libMesh::FEMSystem::init_context().
|
inherited |
Fills the std::set with the degrees of freedom on the local processor corresponding the the variable number passed in.
Definition at line 1277 of file system.C.
References libMesh::DofMap::dof_indices(), libMesh::DofMap::end_dof(), libMesh::DofMap::first_dof(), libMesh::System::get_dof_map(), and libMesh::System::get_mesh().
Referenced by libMesh::System::discrete_var_norm().
|
overridevirtualinherited |
Subtracts a mass vector contribution on elem
from elem_residual.
If this method receives request_jacobian = true, then it should compute elem_jacobian and return true if possible. If elem_jacobian has not been computed then the method should return false.
Many problems can use the reimplementation in FEMPhysics::mass_residual which subtracts (du/dt,v) for each transient variable u; users with more complicated transient problems will need to reimplement this themselves.
Reimplemented from libMesh::DifferentiablePhysics.
|
inlinevirtualinherited |
Subtracts a mass vector contribution on elem
from elem_residual. For first-order-in-time problems, this is the term. For second-order-in-time problems, this is the term. This method is only called for UnsteadySolver-based TimeSolvers.
If this method receives request_jacobian = true, then it should compute elem_jacobian and return true if possible. If elem_jacobian has not been computed then the method should return false.
Many first-order-in-time problems can use the reimplementation in FEMPhysics::mass_residual which subtracts (du/dt,v) for each transient variable u; users with more complicated transient problems or second-order-in-time problems will need to reimplement this themselves.
Reimplemented in libMesh::FEMPhysics.
Definition at line 318 of file diff_physics.h.
Referenced by libMesh::EulerSolver::element_residual(), libMesh::Euler2Solver::element_residual(), libMesh::NewmarkSolver::element_residual(), and libMesh::EigenTimeSolver::element_residual().
|
inherited |
Tells the FEMSystem to set the degree of freedom coefficients which should correspond to mesh nodal coordinates.
Definition at line 1389 of file fem_system.C.
References libMesh::DifferentiablePhysics::_mesh_sys, libMesh::DifferentiablePhysics::_mesh_x_var, libMesh::DifferentiablePhysics::_mesh_y_var, libMesh::DifferentiablePhysics::_mesh_z_var, libMesh::MeshBase::active_local_element_ptr_range(), libMesh::FEMSystem::build_context(), libMesh::FEMContext::elem_position_get(), libMesh::DiffContext::get_dof_indices(), libMesh::DiffContext::get_elem_solution(), libMesh::System::get_mesh(), libMesh::FEMSystem::init_context(), libMesh::invalid_uint, mesh, libMesh::FEMContext::pre_fe_reinit(), libMesh::System::solution, and libMesh::System::update().
|
inherited |
Tells the FEMSystem to set the mesh nodal coordinates which should correspond to degree of freedom coefficients.
Definition at line 1061 of file fem_system.C.
References libMesh::DifferentiablePhysics::_mesh_sys, libMesh::MeshBase::active_local_element_ptr_range(), libMesh::FEMSystem::build_context(), libMesh::ParallelObject::comm(), libMesh::FEMContext::elem_fe_reinit(), libMesh::FEMContext::elem_position_set(), libMesh::FEMContext::get_elem(), libMesh::System::get_mesh(), libMesh::Elem::has_children(), libMesh::FEMSystem::init_context(), mesh, libMesh::MeshBase::nodes_begin(), libMesh::MeshBase::nodes_end(), libMesh::FEMContext::pre_fe_reinit(), and libMesh::Parallel::sync_dofobject_data_by_id().
Referenced by libMesh::FEMSystem::solve().
|
inlineinherited |
Definition at line 2217 of file system.h.
References libMesh::System::n_constrained_dofs(), and libMesh::System::n_dofs().
|
inlineinherited |
n_vars()
in the case of all scalar-valued variables. Definition at line 2121 of file system.h.
References libMesh::System::_variables, libMesh::Variable::first_scalar_number(), and libMesh::Variable::n_components().
Referenced by libMesh::System::add_variables().
|
inherited |
Definition at line 157 of file system.C.
References libMesh::System::_dof_map.
Referenced by libMesh::System::get_info(), and libMesh::System::n_active_dofs().
|
inherited |
Definition at line 150 of file system.C.
References libMesh::System::_dof_map.
Referenced by libMesh::System::add_vector(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::System::get_info(), libMesh::SecondOrderUnsteadySolver::init_data(), libMesh::UnsteadySolver::init_data(), libMesh::System::init_data(), libMesh::OptimizationSystem::initialize_equality_constraints_storage(), libMesh::OptimizationSystem::initialize_inequality_constraints_storage(), libMesh::System::n_active_dofs(), libMesh::CondensedEigenSystem::n_global_non_condensed_dofs(), libMesh::FEMSystem::numerical_jacobian(), libMesh::System::read_legacy_data(), libMesh::SecondOrderUnsteadySolver::reinit(), libMesh::UnsteadySolver::reinit(), and libMesh::System::restrict_vectors().
|
inherited |
Definition at line 172 of file system.C.
References libMesh::System::_dof_map.
Referenced by libMesh::System::get_info().
|
inherited |
Definition at line 187 of file system.C.
References libMesh::System::_dof_map, and libMesh::ParallelObject::processor_id().
Referenced by libMesh::System::add_vector(), libMesh::PetscDMWrapper::build_section(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::System::get_info(), libMesh::SecondOrderUnsteadySolver::init_data(), libMesh::UnsteadySolver::init_data(), libMesh::System::init_data(), libMesh::OptimizationSystem::initialize_equality_constraints_storage(), libMesh::OptimizationSystem::initialize_inequality_constraints_storage(), libMesh::SecondOrderUnsteadySolver::reinit(), libMesh::UnsteadySolver::reinit(), and libMesh::System::restrict_vectors().
|
inlineoverridevirtualinherited |
Reimplemented from libMesh::System.
Definition at line 426 of file implicit_system.h.
References libMesh::ImplicitSystem::_matrices.
|
inlinestaticinherited |
Prints the number of outstanding (created, but not yet destroyed) objects.
Definition at line 83 of file reference_counter.h.
References libMesh::ReferenceCounter::_n_objects.
|
inlineinherited |
Definition at line 95 of file parallel_object.h.
References libMesh::ParallelObject::_communicator, and libMesh::Parallel::Communicator::size().
Referenced by libMesh::BoundaryInfo::_find_id_maps(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DistributedMesh::add_elem(), libMesh::DistributedMesh::add_node(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assembly(), libMesh::AztecLinearSolver< T >::AztecLinearSolver(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::DistributedMesh::clear(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::UnstructuredMesh::create_pid_mesh(), libMesh::MeshTools::create_processor_bounding_box(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::EnsightIO::EnsightIO(), libMesh::MeshBase::get_info(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), libMesh::Nemesis_IO_Helper::initialize(), libMesh::DistributedMesh::insert_elem(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_new_node_procids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::DofMap::local_variable_indices(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshBase::n_active_elem_on_proc(), libMesh::MeshBase::n_elem_on_proc(), libMesh::MeshBase::n_nodes_on_proc(), libMesh::MeshBase::partition(), libMesh::PetscLinearSolver< T >::PetscLinearSolver(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::CheckpointIO::read_connectivity(), libMesh::XdrIO::read_header(), libMesh::CheckpointIO::read_nodes(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::System::read_serialized_vector(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().
|
inlineinherited |
Number of currently active quantities of interest.
Definition at line 2278 of file system.h.
References libMesh::System::qoi.
Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::ImplicitSystem::adjoint_qoi_parameter_sensitivity(), libMesh::ImplicitSystem::adjoint_solve(), libMesh::SensitivityData::allocate_data(), libMesh::SensitivityData::allocate_hessian_data(), libMesh::ExplicitSystem::assemble_qoi(), libMesh::FEMSystem::assemble_qoi(), libMesh::ExplicitSystem::assemble_qoi_derivative(), libMesh::FEMSystem::assemble_qoi_derivative(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::AdjointResidualErrorEstimator::estimate_error(), libMesh::ImplicitSystem::forward_qoi_parameter_sensitivity(), libMesh::FEMContext::pre_fe_reinit(), libMesh::ImplicitSystem::qoi_parameter_hessian(), libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product(), libMesh::QoISet::size(), and libMesh::ImplicitSystem::weighted_sensitivity_adjoint_solve().
|
inlineinherited |
VariableGroup
variable groups in the system Definition at line 2113 of file system.h.
References libMesh::System::_variable_groups.
Referenced by libMesh::System::add_variable(), libMesh::FEMSystem::assembly(), libMesh::System::get_info(), and libMesh::System::init_data().
|
inlineinherited |
Definition at line 2105 of file system.h.
References libMesh::System::_variables.
Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::PetscDMWrapper::add_dofs_helper(), libMesh::DiffContext::add_localized_vector(), libMesh::System::add_variable(), libMesh::System::add_variables(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::PetscDMWrapper::build_section(), libMesh::System::calculate_norm(), libMesh::DGFEMContext::DGFEMContext(), libMesh::DiffContext::DiffContext(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointResidualErrorEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::ErrorEstimator::estimate_errors(), libMesh::ExactSolution::ExactSolution(), libMesh::System::get_all_variable_numbers(), libMesh::System::init(), libMesh::FEMSystem::init_context(), libMesh::FEMContext::init_internal_data(), libMesh::DGFEMContext::neighbor_side_fe_reinit(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::petsc_auto_fieldsplit(), libMesh::FEMContext::pre_fe_reinit(), libMesh::System::re_update(), libMesh::System::read_legacy_data(), libMesh::System::read_parallel_data(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::System::read_serialized_vector(), libMesh::System::read_serialized_vectors(), libMesh::HPCoarsenTest::select_refinement(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::SystemSubsetBySubdomain::set_var_nums(), libMesh::System::write_header(), libMesh::System::write_parallel_data(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::System::write_serialized_vector(), libMesh::System::write_serialized_vectors(), and libMesh::System::zero_variable().
|
inlineinherited |
_vectors
map Definition at line 2233 of file system.h.
References libMesh::System::_vectors.
Referenced by libMesh::ExplicitSystem::add_system_rhs(), libMesh::System::compare(), libMesh::System::get_info(), and libMesh::System::write_header().
|
inlineinherited |
Definition at line 2017 of file system.h.
References libMesh::System::_sys_name.
Referenced by libMesh::System::compare(), ContinuationSystem(), DMlibMeshSetUpName_Private(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::ExactSolution::ExactSolution(), libMesh::ExactErrorEstimator::find_squared_element_error(), libMesh::System::get_info(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::NewtonSolver::init(), libMesh::TimeSolver::init_data(), libMesh::petsc_auto_fieldsplit(), libMesh::TimeSolver::reinit(), libMesh::PetscDiffSolver::setup_petsc_data(), libMesh::FrequencySystem::solve(), libMesh::LinearImplicitSystem::solve(), libMesh::NonlinearImplicitSystem::solve(), libMesh::System::user_assembly(), libMesh::System::user_constrain(), libMesh::System::user_initialization(), libMesh::System::user_QOI(), libMesh::System::user_QOI_derivative(), libMesh::System::write_header(), libMesh::System::write_parallel_data(), and libMesh::System::write_serialized_data().
|
inlinevirtualinherited |
Adds any nonlocal constraint contributions (e.g. some components of constraints in scalar variable equations) to elem_residual
If this method receives request_jacobian = true, then it should also modify elem_jacobian and return true if possible. If the Jacobian changes have not been computed then the method should return false.
Users may need to reimplement this for PDEs on systems to which SCALAR variables with non-transient equations have been added.
Definition at line 227 of file diff_physics.h.
Referenced by libMesh::EulerSolver::nonlocal_residual(), libMesh::Euler2Solver::nonlocal_residual(), libMesh::SteadySolver::nonlocal_residual(), libMesh::EigenTimeSolver::nonlocal_residual(), and libMesh::NewmarkSolver::nonlocal_residual().
|
inlinevirtualinherited |
Subtracts any nonlocal damping vector contributions (e.g. any first time derivative coefficients in scalar variable equations) from elem_residual
If this method receives request_jacobian = true, then it should also modify elem_jacobian and return true if possible. If the Jacobian changes have not been computed then the method should return false.
Definition at line 406 of file diff_physics.h.
Referenced by libMesh::EulerSolver::nonlocal_residual(), libMesh::Euler2Solver::nonlocal_residual(), and libMesh::NewmarkSolver::nonlocal_residual().
|
virtualinherited |
Subtracts any nonlocal mass vector contributions (e.g. any time derivative coefficients in scalar variable equations) from elem_residual
If this method receives request_jacobian = true, then it should also modify elem_jacobian and return true if possible. If the Jacobian changes have not been computed then the method should return false.
Many problems can use the reimplementation in FEMPhysics::mass_residual which subtracts (du/dt,v) for each transient scalar variable u; users with more complicated transient scalar variable equations will need to reimplement this themselves.
Referenced by libMesh::EulerSolver::nonlocal_residual(), libMesh::Euler2Solver::nonlocal_residual(), libMesh::EigenTimeSolver::nonlocal_residual(), and libMesh::NewmarkSolver::nonlocal_residual().
|
inlinevirtualinherited |
Adds any nonlocal time derivative contributions (e.g. some components of time derivatives in scalar variable equations) to elem_residual
If this method receives request_jacobian = true, then it should also modify elem_jacobian and return true if possible. If the Jacobian changes have not been computed then the method should return false.
Users may need to reimplement this for PDEs on systems to which SCALAR variables have been added.
Definition at line 209 of file diff_physics.h.
Referenced by libMesh::EulerSolver::nonlocal_residual(), libMesh::Euler2Solver::nonlocal_residual(), libMesh::SteadySolver::nonlocal_residual(), libMesh::EigenTimeSolver::nonlocal_residual(), and libMesh::NewmarkSolver::nonlocal_residual().
|
inlineinherited |
Definition at line 2025 of file system.h.
References libMesh::System::_sys_number.
Referenced by libMesh::ExactSolution::_compute_error(), libMesh::PetscDMWrapper::add_dofs_helper(), libMesh::System::add_variable(), libMesh::System::add_variables(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::ExodusII_IO::copy_nodal_solution(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::find_squared_element_error(), libMesh::System::get_info(), libMesh::System::read_legacy_data(), libMesh::System::read_parallel_data(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::HPCoarsenTest::select_refinement(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::System::write_parallel_data(), libMesh::System::write_serialized_blocked_dof_objects(), and libMesh::System::zero_variable().
|
inherited |
Uses the results of multiple element_residual() calls to numerically differentiate the corresponding jacobian on an element.
Definition at line 1294 of file fem_system.C.
References libMesh::TimeSolver::element_residual(), and libMesh::FEMSystem::numerical_jacobian().
|
inherited |
Uses the results of multiple res
calls to numerically differentiate the corresponding jacobian.
Definition at line 1182 of file fem_system.C.
References libMesh::DifferentiablePhysics::_mesh_sys, libMesh::DifferentiablePhysics::_mesh_x_var, libMesh::DifferentiablePhysics::_mesh_y_var, libMesh::DifferentiablePhysics::_mesh_z_var, libMesh::DiffContext::get_dof_indices(), libMesh::FEMContext::get_elem(), libMesh::DiffContext::get_elem_jacobian(), libMesh::DiffContext::get_elem_residual(), libMesh::DiffContext::get_elem_solution(), libMesh::Elem::hmin(), libMesh::invalid_uint, libMesh::libmesh_real(), libMesh::System::n_dofs(), libMesh::DiffContext::n_vars(), libMesh::FEMSystem::numerical_jacobian_h, libMesh::FEMSystem::numerical_jacobian_h_for_var(), libMesh::Elem::point(), libMesh::Real, and libMesh::DenseVector< T >::zero().
Referenced by libMesh::FEMSystem::numerical_elem_jacobian(), libMesh::FEMSystem::numerical_nonlocal_jacobian(), and libMesh::FEMSystem::numerical_side_jacobian().
|
inlineinherited |
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.
This is useful in multiphysics problems which have not been normalized.
Definition at line 259 of file fem_system.h.
References libMesh::FEMSystem::_numerical_jacobian_h_for_var, libMesh::FEMSystem::numerical_jacobian_h, and libMesh::Real.
Referenced by libMesh::FEMSystem::numerical_jacobian().
|
inherited |
Uses the results of multiple side_residual() calls to numerically differentiate the corresponding jacobian on nonlocal DoFs.
Definition at line 1310 of file fem_system.C.
References libMesh::TimeSolver::nonlocal_residual(), and libMesh::FEMSystem::numerical_jacobian().
Referenced by libMesh::FEMSystem::assembly().
|
inherited |
Uses the results of multiple side_residual() calls to numerically differentiate the corresponding jacobian on an element's side.
Definition at line 1302 of file fem_system.C.
References libMesh::FEMSystem::numerical_jacobian(), and libMesh::TimeSolver::side_residual().
|
virtualinherited |
Method to populate system qoi data structure with process-local qoi. By default, simply sums process qois into system qoi.
Referenced by libMesh::FEMSystem::assemble_qoi().
|
inherited |
var
at the physical point p
in the mesh, similarly to point_value. Definition at line 2100 of file system.C.
References libMesh::Parallel::Communicator::broadcast(), libMesh::ParallelObject::comm(), libMesh::PointLocatorBase::enable_out_of_mesh_mode(), libMesh::System::get_dof_map(), libMesh::System::get_mesh(), mesh, libMesh::Parallel::Communicator::min(), libMesh::ParallelObject::n_processors(), libMesh::ParallelObject::processor_id(), and libMesh::DofObject::processor_id().
Referenced by libMesh::System::point_gradient().
|
inherited |
var
at the physical point p
in local Elem e
in the mesh, similarly to point_value. Definition at line 2154 of file system.C.
References libMesh::TypeVector< T >::add_scaled(), libMesh::FEGenericBase< OutputType >::build(), libMesh::Elem::contains_point(), libMesh::System::current_solution(), libMesh::Elem::dim(), libMesh::DofMap::dof_indices(), libMesh::System::get_dof_map(), libMesh::Elem::infinite(), libMesh::FEInterface::inverse_map(), libMesh::DofMap::is_evaluable(), and libMesh::DofMap::variable_type().
|
inherited |
Calls the version of point_gradient() which takes a reference. This function exists only to prevent people from calling the version of point_gradient() that has a boolean third argument, which would result in unnecessary PointLocator calls.
Definition at line 2210 of file system.C.
References libMesh::System::point_gradient().
|
inherited |
var
at the physical point p
in the mesh, similarly to point_value. Definition at line 2220 of file system.C.
References libMesh::Parallel::Communicator::broadcast(), libMesh::ParallelObject::comm(), libMesh::PointLocatorBase::enable_out_of_mesh_mode(), libMesh::System::get_dof_map(), libMesh::System::get_mesh(), mesh, libMesh::Parallel::Communicator::min(), libMesh::ParallelObject::n_processors(), libMesh::ParallelObject::processor_id(), and libMesh::DofObject::processor_id().
Referenced by libMesh::System::point_hessian().
|
inherited |
var
at the physical point p
in local Elem e
in the mesh, similarly to point_value. Definition at line 2273 of file system.C.
References libMesh::TypeTensor< T >::add_scaled(), libMesh::FEGenericBase< OutputType >::build(), libMesh::Elem::contains_point(), libMesh::System::current_solution(), libMesh::Elem::dim(), libMesh::DofMap::dof_indices(), libMesh::System::get_dof_map(), libMesh::Elem::infinite(), libMesh::FEInterface::inverse_map(), libMesh::DofMap::is_evaluable(), and libMesh::DofMap::variable_type().
|
inherited |
Calls the version of point_hessian() which takes a reference. This function exists only to prevent people from calling the version of point_hessian() that has a boolean third argument, which would result in unnecessary PointLocator calls.
Definition at line 2329 of file system.C.
References libMesh::System::point_hessian().
|
inherited |
var
at the physical point p
in the mesh, without knowing a priori which element contains p
.MeshBase::sub_point_locator()
; users may or may not want to call MeshBase::clear_point_locator()
afterward. Also, point_locator() is expensive (N log N for initial construction, log N for evaluations). Avoid using this function in any context where you are already looping over elements.Because the element containing p
may lie on any processor, this function is parallel-only.
By default this method expects the point to reside inside the domain and will abort if no element can be found which contains p
. The optional parameter insist_on_success
can be set to false to allow the method to return 0 when the point is not located.
Definition at line 1993 of file system.C.
References libMesh::Parallel::Communicator::broadcast(), libMesh::ParallelObject::comm(), libMesh::PointLocatorBase::enable_out_of_mesh_mode(), libMesh::System::get_dof_map(), libMesh::System::get_mesh(), mesh, libMesh::Parallel::Communicator::min(), libMesh::ParallelObject::n_processors(), libMesh::ParallelObject::processor_id(), and libMesh::DofObject::processor_id().
Referenced by libMesh::System::point_value().
|
inherited |
var
at the physical point p
contained in local Elem e
This version of point_value can be run in serial, but assumes e
is in the local mesh partition or is algebraically ghosted.
Definition at line 2046 of file system.C.
References libMesh::FEInterface::compute_data(), libMesh::Elem::contains_point(), libMesh::System::current_solution(), libMesh::Elem::dim(), libMesh::System::get_dof_map(), libMesh::System::get_equation_systems(), and libMesh::FEInterface::inverse_map().
|
inherited |
Calls the version of point_value() which takes a reference. This function exists only to prevent people from calling the version of point_value() that has a boolean third argument, which would result in unnecessary PointLocator calls.
Definition at line 2092 of file system.C.
References libMesh::System::point_value().
|
overridevirtualinherited |
Runs a postprocessing loop over all elements, and if postprocess_sides
is true over all sides.
Reimplemented from libMesh::DifferentiableSystem.
Definition at line 1101 of file fem_system.C.
References libMesh::MeshBase::active_local_elements_begin(), libMesh::MeshBase::active_local_elements_end(), libMesh::System::get_mesh(), libMesh::DifferentiableSystem::get_time_solver(), mesh, libMesh::Threads::parallel_for(), libMesh::StoredRange< iterator_type, object_type >::reset(), libMesh::TimeSolver::set_is_adjoint(), and libMesh::System::update().
|
staticinherited |
Prints the reference information, by default to libMesh::out
.
Definition at line 87 of file reference_counter.C.
References libMesh::ReferenceCounter::_enable_print_counter, and libMesh::ReferenceCounter::get_info().
|
inlineinherited |
Definition at line 101 of file parallel_object.h.
References libMesh::ParallelObject::_communicator, and libMesh::Parallel::Communicator::rank().
Referenced by libMesh::BoundaryInfo::_find_id_maps(), libMesh::EquationSystems::_read_impl(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DistributedMesh::add_elem(), libMesh::BoundaryInfo::add_elements(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::DistributedMesh::add_node(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::FEMSystem::assembly(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::DistributedMesh::clear(), libMesh::ExodusII_IO_Helper::close(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::compute_communication_map_parameters(), libMesh::Nemesis_IO_Helper::compute_internal_and_border_elems_and_internal_nodes(), libMesh::Nemesis_IO_Helper::compute_node_communication_maps(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::ExodusII_IO_Helper::create(), libMesh::DistributedMesh::delete_elem(), libMesh::DistributedMesh::delete_node(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DistributedMesh::DistributedMesh(), libMesh::DofMap::end_dof(), libMesh::DofMap::end_old_dof(), libMesh::EnsightIO::EnsightIO(), libMesh::MeshFunction::find_element(), libMesh::MeshFunction::find_elements(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::DofMap::first_dof(), libMesh::DofMap::first_old_dof(), libMesh::Nemesis_IO_Helper::get_cmap_params(), libMesh::Nemesis_IO_Helper::get_eb_info_global(), libMesh::Nemesis_IO_Helper::get_elem_cmap(), libMesh::Nemesis_IO_Helper::get_elem_map(), libMesh::MeshBase::get_info(), libMesh::DofMap::get_info(), libMesh::Nemesis_IO_Helper::get_init_global(), libMesh::Nemesis_IO_Helper::get_init_info(), libMesh::Nemesis_IO_Helper::get_loadbal_param(), libMesh::Nemesis_IO_Helper::get_node_cmap(), libMesh::Nemesis_IO_Helper::get_node_map(), libMesh::Nemesis_IO_Helper::get_ns_param_global(), libMesh::Nemesis_IO_Helper::get_ss_param_global(), libMesh::SparsityPattern::Build::handle_vi_vj(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_element_variables(), libMesh::ExodusII_IO_Helper::initialize_global_variables(), libMesh::ExodusII_IO_Helper::initialize_nodal_variables(), libMesh::DistributedMesh::insert_elem(), libMesh::DofMap::is_evaluable(), libMesh::SparsityPattern::Build::join(), libMesh::DofMap::last_dof(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), libMesh::DofMap::local_variable_indices(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshBase::n_active_local_elem(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::DofMap::n_local_dofs(), libMesh::System::n_local_dofs(), libMesh::MeshBase::n_local_elem(), libMesh::MeshBase::n_local_nodes(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::BoundaryInfo::n_shellface_conds(), libMesh::SparsityPattern::Build::operator()(), libMesh::DistributedMesh::own_node(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::Nemesis_IO_Helper::put_cmap_params(), libMesh::Nemesis_IO_Helper::put_elem_cmap(), libMesh::Nemesis_IO_Helper::put_elem_map(), libMesh::Nemesis_IO_Helper::put_loadbal_param(), libMesh::Nemesis_IO_Helper::put_node_cmap(), libMesh::Nemesis_IO_Helper::put_node_map(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::CheckpointIO::read(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::ExodusII_IO_Helper::read_global_values(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::ExodusII_IO_Helper::read_node_num_map(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs_helper(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::System::read_serialized_data(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), libMesh::System::read_serialized_vectors(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::CheckpointIO::select_split_config(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::MeshTools::total_weight(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::Parallel::Packing< T >::unpack(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::CheckpointIO::write(), libMesh::EquationSystems::write(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::ExodusII_IO::write_element_data(), libMesh::ExodusII_IO_Helper::write_element_values(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO::write_global_data(), libMesh::ExodusII_IO_Helper::write_global_values(), libMesh::System::write_header(), libMesh::ExodusII_IO::write_information_records(), libMesh::ExodusII_IO_Helper::write_information_records(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::UCDIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data_discontinuous(), libMesh::ExodusII_IO_Helper::write_nodal_values(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::ExodusII_IO_Helper::write_nodesets(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bc_names(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::System::write_serialized_data(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::XdrIO::write_serialized_subdomain_names(), libMesh::System::write_serialized_vector(), libMesh::System::write_serialized_vectors(), libMesh::Nemesis_IO_Helper::write_sidesets(), libMesh::ExodusII_IO_Helper::write_sidesets(), libMesh::ExodusII_IO::write_timestep(), libMesh::ExodusII_IO_Helper::write_timestep(), and libMesh::ExodusII_IO::write_timestep_discontinuous().
|
inherited |
Projects arbitrary functions onto the current solution. The function value f
and its gradient g
are user-provided cloneable functors. A gradient g
is only required/used for projecting onto finite element spaces with continuous derivatives. If non-default Parameters
are to be used, they can be provided in the parameters
argument.
This method projects an arbitrary function onto the solution via L2 projections and nodal interpolations on each element.
Definition at line 810 of file system_projection.C.
|
inherited |
Projects arbitrary functions onto the current solution. The function value f
and its gradient g
are user-provided cloneable functors. A gradient g
is only required/used for projecting onto finite element spaces with continuous derivatives. If non-default Parameters
are to be used, they can be provided in the parameters
argument.
This method projects an arbitrary function onto the solution via L2 projections and nodal interpolations on each element.
Definition at line 823 of file system_projection.C.
|
inherited |
This method projects an arbitrary function onto the solution via L2 projections and nodal interpolations on each element.
Definition at line 796 of file system_projection.C.
|
inlineinherited |
Tells the System whether or not to project the solution vector onto new grids when the system is reinitialized. The solution will be projected unless project_solution_on_reinit() = false is called.
Definition at line 794 of file system.h.
References libMesh::System::_solution_projection.
Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), and libMesh::MemorySolutionHistory::store().
|
inherited |
Projects arbitrary functions onto a vector of degree of freedom values for the current system. The function value f
and its gradient g
are user-provided cloneable functors. A gradient g
is only required/used for projecting onto finite element spaces with continuous derivatives. If non-default Parameters
are to be used, they can be provided in the parameters
argument.
Constrain the new vector using the requested adjoint rather than primal constraints if is_adjoint is non-negative.
This method projects an arbitrary function via L2 projections and nodal interpolations on each element.
Definition at line 851 of file system_projection.C.
Referenced by libMesh::NewmarkSolver::project_initial_accel(), libMesh::SecondOrderUnsteadySolver::project_initial_rate(), and libMesh::System::restrict_vectors().
|
inherited |
Projects arbitrary functions onto a vector of degree of freedom values for the current system. The function value f
and its gradient g
are user-provided cloneable functors. A gradient g
is only required/used for projecting onto finite element spaces with continuous derivatives. If non-default Parameters
are to be used, they can be provided in the parameters
argument.
Constrain the new vector using the requested adjoint rather than primal constraints if is_adjoint is non-negative.
This method projects an arbitrary function via L2 projections and nodal interpolations on each element.
Definition at line 877 of file system_projection.C.
References libMesh::NumericVector< T >::close(), libMesh::FEMFunctionBase< Output >::component(), libMesh::Utility::iota(), n_vars, libMesh::Threads::parallel_for(), libMesh::FEMContext::pre_fe_reinit(), libMesh::SCALAR, libMesh::DofMap::SCALAR_dof_indices(), and libMesh::NumericVector< T >::set().
|
inherited |
Projects arbitrary functions onto a vector of degree of freedom values for the current system. The function value fptr
and its gradient gptr
are represented by function pointers. A gradient gptr
is only required/used for projecting onto finite element spaces with continuous derivatives.
Constrain the new vector using the requested adjoint rather than primal constraints if is_adjoint is non-negative.
This method projects an arbitrary function via L2 projections and nodal interpolations on each element.
Definition at line 836 of file system_projection.C.
|
protectedinherited |
Projects the vector defined on the old mesh onto the new mesh.
Constrain the new vector using the requested adjoint rather than primal constraints if is_adjoint is non-negative.
Definition at line 212 of file system_projection.C.
References libMesh::NumericVector< T >::clone().
|
protectedinherited |
Projects the vector defined on the old mesh onto the new mesh. The original vector is unchanged and the new vector is passed through the second argument.
Constrain the new vector using the requested adjoint rather than primal constraints if is_adjoint is non-negative.
|
inherited |
This method creates a projection matrix which corresponds to the operation of project_vector between old and new solution spaces.
Heterogeneous Dirichlet boundary conditions are not taken into account here; if this matrix is used for prolongation (mesh refinement) on a side with a heterogeneous BC, the newly created degrees of freedom on that side will still match the coarse grid approximation of the BC, not the fine grid approximation.
This method creates a projection matrix which corresponds to the operation of project_vector between old and new solution spaces.
Definition at line 730 of file system_projection.C.
References libMesh::Utility::iota(), n_vars, libMesh::Threads::parallel_for(), libMesh::SCALAR, libMesh::DofMap::SCALAR_dof_indices(), and libMesh::SparseMatrix< T >::set().
|
virtualinherited |
Prolong vectors after the mesh has refined
Definition at line 380 of file system.C.
References libMesh::System::restrict_vectors().
Referenced by libMesh::EquationSystems::reinit_solutions().
|
overridevirtualinherited |
For each of the system's quantities of interest q in qoi
[qoi_indices], and for a vector of parameters p, the parameter sensitivity Hessian H_ij is defined as H_ij = (d^2 q)/(d p_i d p_j) This Hessian is the output of this method, where for each q_i, H_jk is stored in hessian.second_derivative(i,j,k)
.
Note that in some cases only current_local_solution is used during assembly, and, therefore, if solution has been altered without update() being called, then the user must call update() before calling this function.
Reimplemented from libMesh::System.
Definition at line 1102 of file implicit_system.C.
References libMesh::ImplicitSystem::adjoint_solve(), libMesh::SensitivityData::allocate_hessian_data(), libMesh::ExplicitSystem::assemble_qoi(), libMesh::ExplicitSystem::assemble_qoi_derivative(), libMesh::ImplicitSystem::assembly(), libMesh::NumericVector< T >::close(), libMesh::SparseMatrix< T >::close(), libMesh::NumericVector< T >::dot(), libMesh::System::get_adjoint_rhs(), libMesh::System::get_adjoint_solution(), libMesh::System::get_sensitivity_solution(), libMesh::QoISet::has_index(), libMesh::System::is_adjoint_already_solved(), libMesh::ImplicitSystem::matrix, libMesh::System::n_qois(), libMesh::System::qoi, libMesh::Real, libMesh::ExplicitSystem::rhs, libMesh::SensitivityData::second_derivative(), libMesh::ImplicitSystem::sensitivity_solve(), libMesh::ParameterVector::size(), libMesh::System::solution, libMesh::TOLERANCE, libMesh::System::update(), and libMesh::SparseMatrix< T >::vector_mult().
|
overridevirtualinherited |
For each of the system's quantities of interest q in qoi
[qoi_indices], and for a vector of parameters p, the parameter sensitivity Hessian H_ij is defined as H_ij = (d^2 q)/(d p_i d p_j) The Hessian-vector product, for a vector v_k in parameter space, is S_j = H_jk v_k This product is the output of this method, where for each q_i, S_j is stored in sensitivities
[i][j].
Reimplemented from libMesh::System.
Definition at line 897 of file implicit_system.C.
References libMesh::ImplicitSystem::adjoint_solve(), libMesh::SensitivityData::allocate_data(), libMesh::ExplicitSystem::assemble_qoi(), libMesh::ExplicitSystem::assemble_qoi_derivative(), libMesh::ImplicitSystem::assembly(), libMesh::NumericVector< T >::close(), libMesh::SparseMatrix< T >::close(), libMesh::ParameterVector::deep_copy(), libMesh::NumericVector< T >::dot(), libMesh::System::get_adjoint_rhs(), libMesh::System::get_adjoint_solution(), libMesh::System::get_weighted_sensitivity_adjoint_solution(), libMesh::System::get_weighted_sensitivity_solution(), libMesh::QoISet::has_index(), libMesh::System::is_adjoint_already_solved(), libMesh::ImplicitSystem::matrix, libMesh::System::n_qois(), libMesh::System::qoi, libMesh::Real, libMesh::ExplicitSystem::rhs, libMesh::ParameterVector::size(), libMesh::System::solution, libMesh::TOLERANCE, libMesh::ParameterVector::value_copy(), libMesh::SparseMatrix< T >::vector_mult(), libMesh::ImplicitSystem::weighted_sensitivity_adjoint_solve(), and libMesh::ImplicitSystem::weighted_sensitivity_solve().
|
virtualinherited |
Solves for the derivative of each of the system's quantities of interest q in qoi
[qoi_indices] with respect to each parameter in parameters
, placing the result for qoi i
and parameter j
into sensitivities
[i][j].
parameters
is a const vector, not a vector-of-const; parameter values in this vector need to be mutable for finite differencing to work.Automatically chooses the forward method for problems with more quantities of interest than parameters, or the adjoint method otherwise.
This method is only usable in derived classes which override an implementation.
Definition at line 498 of file system.C.
References libMesh::System::adjoint_qoi_parameter_sensitivity(), libMesh::System::forward_qoi_parameter_sensitivity(), libMesh::ParameterVector::size(), and libMesh::QoISet::size().
|
virtualinherited |
Re-update the local values when the mesh has changed. This method takes the data updated by update()
and makes it up-to-date on the current mesh.
Reimplemented in libMesh::TransientSystem< RBConstruction >.
Definition at line 429 of file system.C.
References libMesh::System::current_local_solution, libMesh::System::get_dof_map(), libMesh::DofMap::get_send_list(), libMesh::System::n_vars(), and libMesh::System::solution.
|
inherited |
Reads the basic data header for this System.
Definition at line 115 of file system_io.C.
References libMesh::System::_additional_data_written, libMesh::System::_written_var_indices, libMesh::System::add_variable(), libMesh::System::add_vector(), libMesh::Parallel::Communicator::broadcast(), libMesh::System::clear(), libMesh::ParallelObject::comm(), libMesh::Xdr::data(), libMesh::FEType::family, libMesh::System::get_mesh(), libMesh::OrderWrapper::get_order(), libMesh::FEType::inf_map, libMesh::MeshBase::mesh_dimension(), libMesh::MONOMIAL, libMesh::on_command_line(), libMesh::FEType::order, libMesh::out, libMesh::ParallelObject::processor_id(), libMesh::FEType::radial_family, libMesh::FEType::radial_order, libMesh::Xdr::reading(), libMesh::System::variable_number(), libMesh::Xdr::version(), and libMesh::XYZ.
Referenced by libMesh::EquationSystems::_read_impl().
|
inherited |
Reads additional data, namely vectors, for this System.
Definition at line 310 of file system_io.C.
References libMesh::System::_additional_data_written, libMesh::System::_vectors, libMesh::System::_written_var_indices, libMesh::Parallel::Communicator::broadcast(), libMesh::ParallelObject::comm(), libMesh::Xdr::data(), libMesh::System::get_mesh(), libMesh::DofObject::invalid_id, libMesh::System::n_dofs(), libMesh::System::n_vars(), libMesh::System::number(), libMesh::ParallelObject::processor_id(), libMesh::Xdr::reading(), libMesh::System::solution, and libMesh::zero.
|
inherited |
Reads additional data, namely vectors, for this System. This method may safely be called on a distributed-memory mesh. This method will read an individual file for each processor in the simulation where the local solution components for that processor are stored.
This method implements the output of the vectors contained in this System object, embedded in the output of an EquationSystems<T_sys>.
9.) The global solution vector, re-ordered to be node-major (More on this later.)
for each additional vector in the object
10.) The global additional vector, re-ordered to be node-major (More on this later.)
Note that the actual IO is handled through the Xdr class (to be renamed later?) which provides a uniform interface to both the XDR (eXternal Data Representation) interface and standard ASCII output. Thus this one section of code will read XDR or ASCII files with no changes.
Definition at line 493 of file system_io.C.
References libMesh::System::_additional_data_written, libMesh::System::_vectors, libMesh::System::_written_var_indices, libMesh::Xdr::data(), libMesh::FEType::family, libMesh::System::get_dof_map(), libMesh::System::get_mesh(), libMesh::DofObject::invalid_id, libMesh::Xdr::is_open(), libMesh::ParallelObject::n_processors(), libMesh::System::n_vars(), libMesh::System::number(), libMesh::ParallelObject::processor_id(), libMesh::Xdr::reading(), libMesh::SCALAR, libMesh::DofMap::SCALAR_dof_indices(), libMesh::System::solution, libMesh::Variable::type(), and libMesh::System::variable().
|
inlineinherited |
Non-templated version for backward compatibility.
Reads additional data, namely vectors, for this System. This method may safely be called on a distributed-memory mesh. This method will read an individual file for each processor in the simulation where the local solution components for that processor are stored.
|
inherited |
Reads additional data, namely vectors, for this System. This method may safely be called on a distributed-memory mesh.
Definition at line 725 of file system_io.C.
References libMesh::System::_additional_data_written, libMesh::System::_vectors, libMesh::ParallelObject::processor_id(), and libMesh::System::solution.
|
inherited |
Read a number of identically distributed vectors. This method allows for optimization for the multiple vector case by only communicating the metadata once.
Definition at line 2203 of file system_io.C.
References libMesh::Xdr::data(), libMesh::FEType::family, libMesh::System::get_mesh(), libMesh::MeshBase::n_elem(), libMesh::MeshTools::n_elem(), n_nodes, libMesh::MeshBase::n_nodes(), libMesh::System::n_vars(), libMesh::ParallelObject::processor_id(), libMesh::System::read_SCALAR_dofs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::Xdr::reading(), libMesh::SCALAR, libMesh::Variable::type(), and libMesh::System::variable().
|
inlineinherited |
Non-templated version for backward compatibility.
Read a number of identically distributed vectors. This method allows for optimization for the multiple vector case by only communicating the metadata once.
|
overridevirtualinherited |
Reinitializes the member data fields associated with the system, so that, e.g., assemble()
may be used.
Reimplemented from libMesh::ImplicitSystem.
Definition at line 96 of file diff_system.C.
References libMesh::ImplicitSystem::reinit(), and libMesh::DifferentiableSystem::time_solver.
|
virtualinherited |
Reinitializes the constraints for this system.
Definition at line 397 of file system.C.
References libMesh::System::_mesh, libMesh::DofMap::create_dof_constraints(), libMesh::System::get_dof_map(), libMesh::DofMap::prepare_send_list(), libMesh::DofMap::process_constraints(), libMesh::System::time, and libMesh::System::user_constrain().
Referenced by libMesh::EquationSystems::allgather(), libMesh::System::init_data(), and libMesh::EquationSystems::reinit_solutions().
|
overridevirtualinherited |
Releases a pointer to a linear solver acquired by this->get_linear_solver()
Reimplemented from libMesh::ImplicitSystem.
Definition at line 194 of file diff_system.C.
|
inherited |
Removes the additional matrix mat_name
from this system
Definition at line 222 of file implicit_system.C.
References libMesh::ImplicitSystem::_matrices.
Referenced by libMesh::ImplicitSystem::~ImplicitSystem().
|
inherited |
Removes the additional vector vec_name
from this system
Definition at line 699 of file system.C.
References libMesh::System::_vector_is_adjoint, libMesh::System::_vector_projections, libMesh::System::_vector_types, and libMesh::System::_vectors.
|
inherited |
mat_name
, or nullptr
if no matrix by that name exists. Definition at line 237 of file implicit_system.C.
References libMesh::ImplicitSystem::_matrices.
Referenced by libMesh::ImplicitSystem::sensitivity_solve(), libMesh::NewtonSolver::solve(), and libMesh::LinearImplicitSystem::solve().
|
inherited |
mat_name
, or nullptr
if no matrix by that name exists. Definition at line 250 of file implicit_system.C.
References libMesh::ImplicitSystem::_matrices.
|
inherited |
System
has a vector associated with the given name, nullptr
otherwise. Definition at line 716 of file system.C.
References libMesh::System::_vectors.
Referenced by libMesh::UniformRefinementEstimator::_estimate_error().
|
inherited |
System
has a vector associated with the given name, nullptr
otherwise. Definition at line 728 of file system.C.
References libMesh::System::_vectors.
|
inherited |
vec_num
(where the vectors are counted starting with 0), or nullptr
if the system has no such vector. Definition at line 740 of file system.C.
References libMesh::System::vectors_begin(), and libMesh::System::vectors_end().
|
inherited |
vec_num
(where the vectors are counted starting with 0), or nullptr
if the system has no such vector. Definition at line 757 of file system.C.
References libMesh::System::vectors_begin(), and libMesh::System::vectors_end().
|
virtualinherited |
After calling this method, any solve will be restricted to the given subdomain. To disable this mode, call this method with subset
being a nullptr
.
Reimplemented in libMesh::LinearImplicitSystem.
|
virtualinherited |
Restrict vectors after the mesh has coarsened
Definition at line 324 of file system.C.
References libMesh::System::_dof_map, libMesh::System::_solution_projection, libMesh::System::_vector_projections, libMesh::System::_vector_types, libMesh::System::_vectors, libMesh::System::current_local_solution, libMesh::GHOSTED, libMesh::System::n_dofs(), libMesh::System::n_local_dofs(), libMesh::PARALLEL, libMesh::System::project_vector(), libMesh::System::solution, and libMesh::System::vector_is_adjoint().
Referenced by libMesh::System::prolong_vectors(), and libMesh::EquationSystems::reinit_solutions().
void libMesh::ContinuationSystem::save_current_solution | ( | ) |
Stores the current solution and continuation parameter (as "previous_u" and "old_continuation_parameter") for later referral. You may need to call this e.g. after the first regular solve, in order to store the first solution, before computing a second solution and beginning arclength continuation.
Definition at line 1364 of file continuation_system.C.
References continuation_parameter, old_continuation_parameter, previous_u, and libMesh::System::solution.
Referenced by update_solution().
|
overridevirtualinherited |
Assembles & solves the linear system(s) (dR/du)*u_p = -dR/dp, for those parameters contained within parameters
.
Reimplemented from libMesh::System.
Definition at line 314 of file implicit_system.C.
References libMesh::System::add_sensitivity_solution(), libMesh::System::assemble_before_solve, libMesh::ImplicitSystem::assemble_residual_derivatives(), libMesh::ImplicitSystem::assembly(), libMesh::SparseMatrix< T >::close(), libMesh::DofMap::enforce_constraints_exactly(), libMesh::System::get_dof_map(), libMesh::ImplicitSystem::get_linear_solve_parameters(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::System::get_sensitivity_rhs(), libMesh::System::get_sensitivity_solution(), libMesh::ImplicitSystem::matrix, libMesh::ImplicitSystem::release_linear_solver(), libMesh::ImplicitSystem::request_matrix(), libMesh::ParameterVector::size(), and libMesh::LinearSolver< T >::solve().
Referenced by libMesh::ImplicitSystem::forward_qoi_parameter_sensitivity(), and libMesh::ImplicitSystem::qoi_parameter_hessian().
|
inlineinherited |
Setter for the adjoint_already_solved boolean
Definition at line 394 of file system.h.
References libMesh::System::adjoint_already_solved.
|
inlineinherited |
Sets the system to be "basic only": i.e. advanced system components such as ImplicitSystem matrices may not be initialized. This is useful for efficiency in certain utility programs that never use System::solve(). This method must be called after the System or derived class is created but before it is initialized; e.g. from within EquationSystems::read()
Definition at line 2097 of file system.h.
References libMesh::System::_basic_system_only.
Referenced by libMesh::EquationSystems::_read_impl().
|
inline |
Sets (initializes) the max-allowable ds value and the current ds value. Call this before beginning arclength continuation. The default max stepsize is 0.1
Definition at line 128 of file continuation_system.h.
References ds, and ds_current.
|
inlinevirtualinherited |
Tells the DifferentiablePhysics that system sys
contains the isoparametric Lagrangian variables which correspond to the coordinates of mesh nodes, in problems where the mesh itself is expected to move in time.
The system with mesh coordinate data (which may be this
system itself, for fully coupled moving mesh problems) is currently assumed to have new (end of time step) mesh coordinates stored in solution, old (beginning of time step) mesh coordinates stored in _old_nonlinear_solution, and constant velocity motion during each time step.
Activating this function ensures that local (but not neighbor!) element geometry is correctly repositioned when evaluating element residuals.
Currently sys
must be *this
for a tightly coupled moving mesh problem or nullptr to stop mesh movement; loosely coupled moving mesh problems are not implemented.
This code is experimental. "Trust but verify, and not in that order"
Definition at line 580 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_mesh_sys.
|
inlinevirtualinherited |
Tells the DifferentiablePhysics that variable var
from the mesh system should be used to update the x coordinate of mesh nodes, in problems where the mesh itself is expected to move in time.
The system with mesh coordinate data (which may be this system itself, for fully coupled moving mesh problems) is currently assumed to have new (end of time step) mesh coordinates stored in solution, old (beginning of time step) mesh coordinates stored in _old_nonlinear_solution, and constant velocity motion during each time step.
Activating this function ensures that local (but not neighbor!) element geometry is correctly repositioned when evaluating element residuals.
Definition at line 600 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_mesh_x_var.
|
inlinevirtualinherited |
Tells the DifferentiablePhysics that variable var
from the mesh system should be used to update the y coordinate of mesh nodes.
Definition at line 608 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_mesh_y_var.
|
inlinevirtualinherited |
Tells the DifferentiablePhysics that variable var
from the mesh system should be used to update the z coordinate of mesh nodes.
Definition at line 616 of file diff_physics.h.
References libMesh::DifferentiablePhysics::_mesh_z_var.
|
inlineinherited |
Definition at line 269 of file fem_system.h.
References libMesh::FEMSystem::_numerical_jacobian_h_for_var, and libMesh::Real.
|
private |
A centralized function for setting the normalization parameter theta
Definition at line 1065 of file continuation_system.C.
References libMesh::out, quiet, and Theta.
Referenced by initialize_tangent(), and update_solution().
|
private |
A centralized function for setting the other normalization parameter, i.e. the one suggested by the LOCA developers.
Definition at line 1135 of file continuation_system.C.
References std::abs(), dlambda_ds, libMesh::out, quiet, and Theta_LOCA.
Referenced by update_solution().
|
inlineinherited |
Sets the time_solver FIXME: This code is a little dangerous as it transfers ownership from the TimeSolver creator to this class. The user must no longer access his original TimeSolver object after calling this function.
Definition at line 242 of file diff_system.h.
References libMesh::DifferentiableSystem::time_solver.
|
inherited |
Allows one to set the QoI index controlling whether the vector identified by vec_name represents a solution from the adjoint (qoi_num >= 0) or primal (qoi_num == -1) space. This becomes significant if those spaces have differing heterogeneous Dirichlet constraints.
qoi_num == -2 can be used to indicate a vector which should not be affected by constraints during projection operations.
Definition at line 885 of file system.C.
References libMesh::System::_vector_is_adjoint.
Referenced by libMesh::System::add_adjoint_solution(), and libMesh::System::add_weighted_sensitivity_adjoint_solution().
|
inherited |
Allows one to set the boolean controlling whether the vector identified by vec_name should be "preserved": projected to new meshes, saved, etc.
Definition at line 867 of file system.C.
References libMesh::System::_vector_projections.
|
inlinevirtualinherited |
Adds the constraint contribution on side
of elem
to elem_residual. If this method receives request_jacobian = true, then it should compute elem_jacobian and return true if possible. If elem_jacobian has not been computed then the method should return false.
Users may need to reimplement this for their particular PDE depending on the boundary conditions.
To implement a weak form of the constraint 0 = G(u), the user should examine u = elem_solution and add (G(u), phi_i) boundary integral contributions to elem_residual in side_constraint().
Definition at line 191 of file diff_physics.h.
Referenced by libMesh::EulerSolver::side_residual(), libMesh::Euler2Solver::side_residual(), libMesh::SteadySolver::side_residual(), libMesh::EigenTimeSolver::side_residual(), and libMesh::NewmarkSolver::side_residual().
|
inlinevirtualinherited |
Subtracts a damping vector contribution on side
of elem
from elem_residual. If this method receives request_jacobian = true, then it should compute elem_jacobian and return true if possible. If elem_jacobian has not been computed then the method should return false.
For most problems, the default implementation of "do nothing" is correct; users with boundary conditions including first time derivatives may need to reimplement this themselves.
Definition at line 391 of file diff_physics.h.
Referenced by libMesh::EulerSolver::side_residual(), libMesh::Euler2Solver::side_residual(), and libMesh::NewmarkSolver::side_residual().
|
inlinevirtualinherited |
Subtracts a mass vector contribution on side
of elem
from elem_residual. If this method receives request_jacobian = true, then it should compute elem_jacobian and return true if possible. If elem_jacobian has not been computed then the method should return false.
For most problems, the default implementation of "do nothing" is correct; users with boundary conditions including time derivatives may need to reimplement this themselves.
Definition at line 335 of file diff_physics.h.
Referenced by libMesh::EulerSolver::side_residual(), libMesh::Euler2Solver::side_residual(), libMesh::EigenTimeSolver::side_residual(), and libMesh::NewmarkSolver::side_residual().
|
inlinevirtualinherited |
Does any work that needs to be done on side
of elem
in a postprocessing loop.
Definition at line 288 of file diff_system.h.
|
inlinevirtualinherited |
Does any work that needs to be done on side
of elem
in a quantity of interest assembly loop, outputting to elem_qoi.
Only qois included in the supplied QoISet
need to be assembled.
Definition at line 131 of file diff_qoi.h.
|
inlinevirtualinherited |
Does any work that needs to be done on side
of elem
in a quantity of interest derivative assembly loop, outputting to elem_qoi_derivative.
Only qois included in the supplied QoISet
need their derivatives assembled.
Definition at line 143 of file diff_qoi.h.
|
inlinevirtualinherited |
Adds the time derivative contribution on side
of elem
to elem_residual. If this method receives request_jacobian = true, then it should compute elem_jacobian and return true if possible. If elem_jacobian has not been computed then the method should return false.
Users may need to reimplement this for their particular PDE depending on the boundary conditions.
To implement a weak form of the source term du/dt = F(u) on sides, such as might arise in a flux boundary condition, the user should examine u = elem_solution and add (F(u), phi_i) boundary integral contributions to elem_residual in side_constraint().
Definition at line 171 of file diff_physics.h.
Referenced by libMesh::EulerSolver::side_residual(), libMesh::Euler2Solver::side_residual(), libMesh::SteadySolver::side_residual(), libMesh::EigenTimeSolver::side_residual(), and libMesh::NewmarkSolver::side_residual().
|
overridevirtual |
Perform a standard "solve" of the system, without doing continuation.
Reimplemented from libMesh::FEMSystem.
Definition at line 121 of file continuation_system.C.
References Residual, rhs_mode, and libMesh::DifferentiableSystem::solve().
|
private |
Special solve algorithm for solving the tangent system.
Definition at line 956 of file continuation_system.C.
References libMesh::NumericVector< T >::add(), libMesh::FEMSystem::assembly(), libMesh::NumericVector< T >::close(), continuation_parameter, delta_u, dlambda_ds, libMesh::NumericVector< T >::dot(), du_ds, G_Lambda, libMesh::NumericVector< T >::l2_norm(), libMesh::libmesh_real(), linear_solver, libMesh::ImplicitSystem::matrix, libMesh::DiffSolver::max_linear_iterations, newton_solver, old_continuation_parameter, libMesh::out, previous_dlambda_ds, previous_du_ds, previous_u, quiet, libMesh::Real, libMesh::ExplicitSystem::rhs, rhs_mode, libMesh::NumericVector< T >::scale(), libMesh::System::solution, tangent_initialized, Theta, Theta_LOCA, libMesh::DifferentiableSystem::time_solver, y, and libMesh::NumericVector< T >::zero().
Referenced by advance_arcstep(), and initialize_tangent().
|
inherited |
Swap current physics object with external object
Definition at line 349 of file diff_system.C.
References libMesh::DifferentiableSystem::_diff_physics, and swap().
|
inlineinherited |
|
inlineoverridevirtualinherited |
"Implicit"
. Helps in identifying the system type in an equation system file. Reimplemented from libMesh::ExplicitSystem.
Reimplemented in libMesh::OptimizationSystem, libMesh::NonlinearImplicitSystem, libMesh::LinearImplicitSystem, libMesh::RBConstruction, libMesh::FrequencySystem, libMesh::NewmarkSystem, and libMesh::TransientSystem< RBConstruction >.
Definition at line 117 of file implicit_system.h.
|
virtualinherited |
Method to combine thread-local qois. By default, simply sums thread qois.
|
inlinevirtualinherited |
Tells the DiffSystem that variable var is evolving with respect to time. In general, the user's init() function should call time_evolving() for any variables which behave like du/dt = F(u), and should not call time_evolving() for any variables which behave like 0 = G(u).
Most derived systems will not have to reimplement this function; however any system which reimplements mass_residual() may have to reimplement time_evolving() to prepare data structures.
Definition at line 249 of file diff_physics.h.
Referenced by libMesh::DifferentiableSystem::add_second_order_dot_vars().
|
virtualinherited |
Tells the DiffSystem that variable var is evolving with respect to time. In general, the user's init() function should call time_evolving() with order 1 for any variables which behave like du/dt = F(u), with order 2 for any variables that behave like d^2u/dt^2 = F(u), and should not call time_evolving() for any variables which behave like 0 = G(u).
Most derived systems will not have to reimplement this function; however any system which reimplements mass_residual() may have to reimplement time_evolving() to prepare data structures.
|
virtualinherited |
Update the local values to reflect the solution on neighboring processors.
Definition at line 408 of file system.C.
References libMesh::System::_dof_map, libMesh::System::current_local_solution, and libMesh::System::solution.
Referenced by libMesh::__libmesh_petsc_diff_solver_jacobian(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::FEMSystem::assemble_qoi(), libMesh::FEMSystem::assemble_qoi_derivative(), libMesh::NonlinearImplicitSystem::assembly(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::NewmarkSolver::compute_initial_accel(), libMesh::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::ExodusII_IO::copy_nodal_solution(), libMesh::GMVIO::copy_nodal_solution(), DMlibMeshFunction(), DMlibMeshJacobian(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::CondensedEigenSystem::get_eigenpair(), libMesh::libmesh_petsc_snes_jacobian(), libMesh::libmesh_petsc_snes_residual_helper(), libMesh::NewtonSolver::line_search(), libMesh::FEMSystem::mesh_position_get(), libMesh::FEMSystem::postprocess(), libMesh::ImplicitSystem::qoi_parameter_hessian(), libMesh::NewtonSolver::solve(), libMesh::ExplicitSystem::solve(), libMesh::LinearImplicitSystem::solve(), libMesh::NonlinearImplicitSystem::solve(), and libMesh::OptimizationSystem::solve().
|
inherited |
Fill the input vector global_soln
so that it contains the global solution on all processors. Requires communication with all other processors.
Definition at line 642 of file system.C.
References libMesh::System::solution.
Referenced by libMesh::ExactSolution::_compute_error(), libMesh::EquationSystems::build_discontinuous_solution_vector(), and libMesh::ExactErrorEstimator::estimate_error().
|
inherited |
Fill the input vector global_soln
so that it contains the global solution on processor dest_proc
. Requires communication with all other processors.
Definition at line 651 of file system.C.
References libMesh::System::solution.
|
private |
This function (which assumes the most recent tangent vector has been computed) updates the solution and the control parameter with the initial guess for the next point on the continuation path.
Definition at line 1192 of file continuation_system.C.
References std::abs(), libMesh::NumericVector< T >::add(), apply_predictor(), libMesh::NumericVector< T >::close(), continuation_parameter, delta_u, libMesh::NumericVector< T >::dot(), ds, ds_current, ds_min, libMesh::NumericVector< T >::l2_norm(), libMesh::DiffSolver::max_nonlinear_iterations, newton_solver, newton_step, newton_stepgrowth_aggressiveness, old_continuation_parameter, libMesh::out, libMesh::BasicOStreamProxy< charT, traits >::precision(), previous_ds, previous_u, quiet, libMesh::Real, save_current_solution(), set_Theta(), set_Theta_LOCA(), libMesh::BasicOStreamProxy< charT, traits >::setf(), libMesh::System::solution, tangent_initialized, Theta, Theta_LOCA, libMesh::BasicOStreamProxy< charT, traits >::unsetf(), y, and y_old.
Referenced by advance_arcstep(), and initialize_tangent().
|
virtualinherited |
Calls user's attached assembly function, or is overridden by the user in derived classes.
Definition at line 1932 of file system.C.
References libMesh::System::_assemble_system_function, libMesh::System::_assemble_system_object, libMesh::System::_equation_systems, libMesh::System::Assembly::assemble(), and libMesh::System::name().
Referenced by libMesh::System::assemble().
|
virtualinherited |
Calls user's attached constraint function, or is overridden by the user in derived classes.
Definition at line 1946 of file system.C.
References libMesh::System::_constrain_system_function, libMesh::System::_constrain_system_object, libMesh::System::_equation_systems, libMesh::System::Constraint::constrain(), and libMesh::System::name().
Referenced by libMesh::System::reinit_constraints().
|
virtualinherited |
Calls user's attached initialization function, or is overridden by the user in derived classes.
Definition at line 1918 of file system.C.
References libMesh::System::_equation_systems, libMesh::System::_init_system_function, libMesh::System::_init_system_object, libMesh::System::Initialization::initialize(), and libMesh::System::name().
Referenced by libMesh::System::init(), and libMesh::NewmarkSystem::initial_conditions().
|
virtualinherited |
Calls user's attached quantity of interest function, or is overridden by the user in derived classes.
Definition at line 1960 of file system.C.
References libMesh::System::_equation_systems, libMesh::System::_qoi_evaluate_function, libMesh::System::_qoi_evaluate_object, libMesh::System::name(), and libMesh::System::QOI::qoi().
Referenced by libMesh::System::assemble_qoi().
|
virtualinherited |
Calls user's attached quantity of interest derivative function, or is overridden by the user in derived classes.
Definition at line 1974 of file system.C.
References libMesh::System::_equation_systems, libMesh::System::_qoi_evaluate_derivative_function, libMesh::System::_qoi_evaluate_derivative_object, libMesh::System::name(), and libMesh::System::QOIDerivative::qoi_derivative().
Referenced by libMesh::System::assemble_qoi_derivative().
|
inlineinherited |
Return a constant reference to Variable
var
.
Definition at line 2133 of file system.h.
References libMesh::System::_variables.
Referenced by libMesh::ExactSolution::_compute_error(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DifferentiableSystem::add_second_order_dot_vars(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::FirstOrderUnsteadySolver::compute_second_order_eqns(), libMesh::DifferentiableSystem::have_first_order_scalar_vars(), libMesh::DifferentiableSystem::have_second_order_scalar_vars(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::System::read_serialized_vector(), libMesh::System::read_serialized_vectors(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::System::write_header(), libMesh::System::write_parallel_data(), libMesh::System::write_serialized_vector(), and libMesh::System::write_serialized_vectors().
|
inlineinherited |
Return a constant reference to VariableGroup
vg
.
Definition at line 2143 of file system.h.
References libMesh::System::_variable_groups.
Referenced by libMesh::FEMSystem::assembly(), and libMesh::System::get_info().
|
inlineinherited |
i
. Definition at line 2153 of file system.h.
References libMesh::System::_variables.
Referenced by libMesh::System::add_variable(), libMesh::System::add_variables(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::PetscDMWrapper::build_section(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::ExactSolution::ExactSolution(), libMesh::petsc_auto_fieldsplit(), and libMesh::System::write_header().
|
inherited |
var
. Definition at line 1243 of file system.C.
References libMesh::System::_variable_numbers, and libMesh::System::_variables.
Referenced by libMesh::ExactSolution::_compute_error(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::ExodusII_IO::copy_nodal_solution(), libMesh::GMVIO::copy_nodal_solution(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::ExactErrorEstimator::find_squared_element_error(), libMesh::System::read_header(), libMesh::System::variable_scalar_number(), libMesh::System::variable_type(), libMesh::EnsightIO::write_scalar_ascii(), and libMesh::EnsightIO::write_vector_ascii().
|
inlineinherited |
variable_number(var)
Irony: currently our only non-scalar-valued variable type is SCALAR.
Definition at line 2164 of file system.h.
References libMesh::System::variable_number().
Referenced by libMesh::ExactSolution::_compute_error(), and libMesh::ExactErrorEstimator::find_squared_element_error().
|
inlineinherited |
var_num
Irony: currently our only non-scalar-valued variable type is SCALAR.
Definition at line 2174 of file system.h.
References libMesh::System::_variables.
|
inlineinherited |
i
. Definition at line 2183 of file system.h.
References libMesh::System::_variables.
Referenced by libMesh::System::add_variable(), libMesh::System::add_variables(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::GMVIO::copy_nodal_solution(), libMesh::DGFEMContext::DGFEMContext(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::FEMSystem::init_context(), libMesh::FEMContext::init_internal_data(), libMesh::System::write_header(), libMesh::EnsightIO::write_scalar_ascii(), and libMesh::EnsightIO::write_vector_ascii().
|
inlineinherited |
var
. Definition at line 2193 of file system.h.
References libMesh::System::_variables, and libMesh::System::variable_number().
|
inherited |
Definition at line 896 of file system.C.
References libMesh::System::_vector_is_adjoint.
Referenced by libMesh::System::restrict_vectors().
|
inherited |
vec_num
(where the vectors are counted starting with 0). Definition at line 832 of file system.C.
References libMesh::System::vectors_begin(), and libMesh::System::vectors_end().
|
inherited |
Definition at line 846 of file system.C.
References libMesh::System::vectors_begin(), and libMesh::System::vectors_end().
|
inherited |
Definition at line 875 of file system.C.
References libMesh::System::_vector_projections.
Referenced by libMesh::MemorySolutionHistory::store().
|
inlineinherited |
Beginning of vectors container
Definition at line 2245 of file system.h.
References libMesh::System::_vectors.
Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::System::get_vector(), libMesh::System::request_vector(), libMesh::MemorySolutionHistory::store(), and libMesh::System::vector_name().
|
inlineinherited |
Beginning of vectors container
Definition at line 2251 of file system.h.
References libMesh::System::_vectors.
|
inlineinherited |
End of vectors container
Definition at line 2257 of file system.h.
References libMesh::System::_vectors.
Referenced by libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::System::get_vector(), libMesh::System::request_vector(), libMesh::MemorySolutionHistory::store(), and libMesh::System::vector_name().
|
inlineinherited |
End of vectors container
Definition at line 2263 of file system.h.
References libMesh::System::_vectors.
|
overridevirtualinherited |
Assembles & solves the linear system(s) (dR/du)^T*z_w = sum(w_p*(d^2q/dudp - d^2R/dudp*z)), for those parameters p contained within parameters
, weighted by the values w_p found within weights
.
Assumes that adjoint_solve has already calculated z for each qoi in qoi_indices
.
Reimplemented from libMesh::System.
Definition at line 425 of file implicit_system.C.
References libMesh::System::add_weighted_sensitivity_adjoint_solution(), libMesh::ExplicitSystem::assemble_qoi_derivative(), libMesh::ImplicitSystem::assembly(), libMesh::NumericVector< T >::close(), libMesh::SparseMatrix< T >::close(), libMesh::ParameterVector::deep_copy(), libMesh::DofMap::enforce_constraints_exactly(), libMesh::System::get_adjoint_rhs(), libMesh::System::get_adjoint_solution(), libMesh::System::get_dof_map(), libMesh::ImplicitSystem::get_linear_solve_parameters(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::SparseMatrix< T >::get_transpose(), libMesh::System::get_weighted_sensitivity_adjoint_solution(), libMesh::DofMap::has_adjoint_dirichlet_boundaries(), libMesh::QoISet::has_index(), libMesh::ImplicitSystem::matrix, libMesh::System::n_qois(), libMesh::Real, libMesh::ImplicitSystem::release_linear_solver(), libMesh::ExplicitSystem::rhs, libMesh::LinearSolver< T >::solve(), libMesh::TOLERANCE, libMesh::ParameterVector::value_copy(), libMesh::SparseMatrix< T >::vector_mult_add(), and libMesh::NumericVector< T >::zero_clone().
Referenced by libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product().
|
overridevirtualinherited |
Assembles & solves the linear system(s) (dR/du)*u_w = sum(w_p*-dR/dp), for those parameters p contained within parameters
weighted by the values w_p found within weights
.
Reimplemented from libMesh::System.
Definition at line 571 of file implicit_system.C.
References libMesh::System::add_weighted_sensitivity_solution(), libMesh::ImplicitSystem::assembly(), libMesh::NumericVector< T >::clone(), libMesh::NumericVector< T >::close(), libMesh::SparseMatrix< T >::close(), libMesh::ParameterVector::deep_copy(), libMesh::DofMap::enforce_constraints_exactly(), libMesh::System::get_dof_map(), libMesh::ImplicitSystem::get_linear_solve_parameters(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::System::get_weighted_sensitivity_solution(), libMesh::ImplicitSystem::matrix, libMesh::Real, libMesh::ImplicitSystem::release_linear_solver(), libMesh::ExplicitSystem::rhs, libMesh::LinearSolver< T >::solve(), libMesh::TOLERANCE, and libMesh::ParameterVector::value_copy().
Referenced by libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product().
|
inherited |
Writes the basic data header for this System.
This method implements the output of a System object, embedded in the output of an EquationSystems<T_sys>. This warrants some documentation. The output of this part consists of 5 sections:
for this system
5.) The number of variables in the system (unsigned int)
for each variable in the system
6.) The name of the variable (string)
6.1.) subdomain where the variable lives
7.) Combined in an FEType:
end variable loop
8.) The number of additional vectors (unsigned int),
for each additional vector in the system object
9.) the name of the additional vector (string)
end system
Definition at line 1299 of file system_io.C.
References libMesh::System::_vectors, libMesh::Variable::active_subdomains(), libMesh::Xdr::data(), libMesh::FEType::family, libMesh::System::get_mesh(), libMesh::FEType::inf_map, libMesh::System::n_vars(), libMesh::System::n_vectors(), libMesh::System::name(), libMesh::FEType::order, libMesh::ParallelObject::processor_id(), libMesh::FEType::radial_family, libMesh::FEType::radial_order, libMesh::System::variable(), libMesh::System::variable_name(), libMesh::System::variable_type(), and libMesh::Xdr::writing().
|
inherited |
Writes additional data, namely vectors, for this System. This method may safely be called on a distributed-memory mesh. This method will create an individual file for each processor in the simulation where the local solution components for that processor will be stored.
This method implements the output of the vectors contained in this System object, embedded in the output of an EquationSystems<T_sys>.
9.) The global solution vector, re-ordered to be node-major (More on this later.)
for each additional vector in the object
10.) The global additional vector, re-ordered to be node-major (More on this later.)
Note that the actual IO is handled through the Xdr class (to be renamed later?) which provides a uniform interface to both the XDR (eXternal Data Representation) interface and standard ASCII output. Thus this one section of code will read XDR or ASCII files with no changes.
Definition at line 1504 of file system_io.C.
References libMesh::System::_vectors, libMesh::Xdr::data(), libMesh::FEType::family, libMesh::System::get_dof_map(), libMesh::System::get_mesh(), libMesh::DofObject::invalid_id, libMesh::ParallelObject::n_processors(), libMesh::System::n_vars(), libMesh::System::name(), libMesh::System::number(), libMesh::ParallelObject::processor_id(), libMesh::SCALAR, libMesh::DofMap::SCALAR_dof_indices(), libMesh::System::solution, libMesh::Variable::type(), libMesh::System::variable(), and libMesh::Xdr::writing().
|
inherited |
Writes additional data, namely vectors, for this System. This method may safely be called on a distributed-memory mesh.
This method implements the output of the vectors contained in this System object, embedded in the output of an EquationSystems<T_sys>.
9.) The global solution vector, re-ordered to be node-major (More on this later.)
for each additional vector in the object
10.) The global additional vector, re-ordered to be node-major (More on this later.)
Definition at line 1704 of file system_io.C.
References libMesh::System::_vectors, libMesh::Xdr::comment(), libMesh::System::name(), libMesh::ParallelObject::processor_id(), libMesh::System::solution, and libMesh::System::write_serialized_vector().
|
inherited |
Serialize & write a number of identically distributed vectors. This method allows for optimization for the multiple vector case by only communicating the metadata once.
Definition at line 2297 of file system_io.C.
References libMesh::Xdr::data(), libMesh::FEType::family, libMesh::System::get_mesh(), libMesh::MeshBase::n_elem(), libMesh::MeshTools::n_elem(), n_nodes, libMesh::MeshBase::n_nodes(), libMesh::System::n_vars(), libMesh::ParallelObject::processor_id(), libMesh::SCALAR, libMesh::Variable::type(), libMesh::System::variable(), libMesh::System::write_SCALAR_dofs(), libMesh::System::write_serialized_blocked_dof_objects(), and libMesh::Xdr::writing().
|
inherited |
Zeroes all dofs in v
that correspond to variable number var_num
.
Definition at line 1322 of file system.C.
References libMesh::System::get_mesh(), mesh, libMesh::System::n_vars(), libMesh::System::number(), and libMesh::NumericVector< T >::set().
|
protectedinherited |
Definition at line 107 of file parallel_object.h.
Referenced by libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::ParallelObject::comm(), libMesh::ParallelObject::n_processors(), libMesh::ParallelObject::operator=(), and libMesh::ParallelObject::processor_id().
|
staticprotectedinherited |
Actually holds the data.
Definition at line 122 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::get_info(), libMesh::ReferenceCounter::increment_constructor_count(), and libMesh::ReferenceCounter::increment_destructor_count().
|
protectedinherited |
Pointer to object to use for physics assembly evaluations. Defaults to this
for backwards compatibility; in the future users should create separate physics objects.
Definition at line 371 of file diff_system.h.
Referenced by libMesh::DifferentiableSystem::attach_physics(), libMesh::DifferentiableSystem::clear(), libMesh::DifferentiableSystem::get_physics(), libMesh::DifferentiableSystem::init_data(), libMesh::DifferentiableSystem::swap_physics(), and libMesh::DifferentiableSystem::~DifferentiableSystem().
|
staticprotectedinherited |
Flag to control whether reference count information is printed when print_info is called.
Definition at line 141 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::disable_print_counter_info(), libMesh::ReferenceCounter::enable_print_counter_info(), and libMesh::ReferenceCounter::print_info().
|
protectedinherited |
Variable indices for those variables that are first order in time.
Definition at line 559 of file diff_physics.h.
Referenced by libMesh::DifferentiablePhysics::get_first_order_vars(), libMesh::DifferentiablePhysics::have_first_order_vars(), and libMesh::DifferentiablePhysics::is_first_order_var().
|
protectedinherited |
System from which to acquire moving mesh information
Definition at line 542 of file diff_physics.h.
Referenced by libMesh::DifferentiablePhysics::get_mesh_system(), libMesh::FEMSystem::mesh_position_get(), libMesh::FEMSystem::mesh_position_set(), libMesh::FEMSystem::numerical_jacobian(), and libMesh::DifferentiablePhysics::set_mesh_system().
|
protectedinherited |
Variables from which to acquire moving mesh information
Definition at line 547 of file diff_physics.h.
Referenced by libMesh::DifferentiablePhysics::get_mesh_x_var(), libMesh::FEMSystem::mesh_position_get(), libMesh::FEMSystem::numerical_jacobian(), and libMesh::DifferentiablePhysics::set_mesh_x_var().
|
protectedinherited |
Definition at line 547 of file diff_physics.h.
Referenced by libMesh::DifferentiablePhysics::get_mesh_y_var(), libMesh::FEMSystem::mesh_position_get(), libMesh::FEMSystem::numerical_jacobian(), and libMesh::DifferentiablePhysics::set_mesh_y_var().
|
protectedinherited |
Definition at line 547 of file diff_physics.h.
Referenced by libMesh::DifferentiablePhysics::get_mesh_z_var(), libMesh::FEMSystem::mesh_position_get(), libMesh::FEMSystem::numerical_jacobian(), and libMesh::DifferentiablePhysics::set_mesh_z_var().
|
staticprotectedinherited |
Mutual exclusion object to enable thread-safe reference counting.
Definition at line 135 of file reference_counter.h.
|
staticprotectedinherited |
The number of objects. Print the reference count information when the number returns to 0.
Definition at line 130 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::n_objects(), libMesh::ReferenceCounter::ReferenceCounter(), and libMesh::ReferenceCounter::~ReferenceCounter().
|
protectedinherited |
If the user adds any second order variables, then we need to also cache the map to their corresponding dot variable that will be added by this TimeSolver class.
Definition at line 571 of file diff_physics.h.
Referenced by libMesh::DifferentiableSystem::add_second_order_dot_vars(), and libMesh::DifferentiableSystem::get_second_order_dot_var().
|
protectedinherited |
Variable indices for those variables that are second order in time.
Definition at line 564 of file diff_physics.h.
Referenced by libMesh::DifferentiablePhysics::get_second_order_vars(), libMesh::DifferentiablePhysics::have_second_order_vars(), and libMesh::DifferentiablePhysics::is_second_order_var().
|
protectedinherited |
Stores unsigned int to tell us which variables are evolving as first order in time (1), second order in time (2), or are not time evolving (0).
Definition at line 554 of file diff_physics.h.
Referenced by libMesh::DifferentiablePhysics::is_time_evolving().
|
inherited |
Flag which tells the system to whether or not to call the user assembly function during each call to solve(). By default, every call to solve() begins with a call to the user assemble, so this flag is true. (For explicit systems, "solving" the system occurs during the assembly step, so this flag is always true for explicit systems.)
You will only want to set this to false if you need direct control over when the system is assembled, and are willing to track the state of its assembly yourself. An example of such a case is an implicit system with multiple right hand sides. In this instance, a single assembly would likely be followed with multiple calls to solve.
The frequency system and Newmark system have their own versions of this flag, called _finished_assemble, which might be able to be replaced with this more general concept.
Definition at line 1477 of file system.h.
Referenced by libMesh::ImplicitSystem::adjoint_solve(), libMesh::ImplicitSystem::disable_cache(), libMesh::System::disable_cache(), libMesh::ImplicitSystem::sensitivity_solve(), libMesh::CondensedEigenSystem::solve(), libMesh::EigenSystem::solve(), and libMesh::LinearImplicitSystem::solve().
|
inherited |
If assemble_qoi_elements
is false (it is true by default), the assembly loop for a quantity of interest or its derivatives will skip computing on mesh elements, and will only compute on mesh sides.
Definition at line 99 of file diff_qoi.h.
|
inherited |
If assemble_qoi_internal_sides
is true (it is false by default), the assembly loop for a quantity of interest or its derivatives will loop over element sides which do not fall on domain boundaries.
Definition at line 91 of file diff_qoi.h.
|
inherited |
If assemble_qoi_sides
is true (it is false by default), the assembly loop for a quantity of interest or its derivatives will loop over domain boundary sides. To add domain interior sides, also set assemble_qoi_internal_sides to true.
Definition at line 83 of file diff_qoi.h.
|
inherited |
compute_internal_sides
is false by default, indicating that side_* computations will only be done on boundary sides. If compute_internal_sides is true, computations will be done on sides between elements as well.
Definition at line 153 of file diff_physics.h.
Real* libMesh::ContinuationSystem::continuation_parameter |
The continuation parameter must be a member variable of the derived class, and the "continuation_parameter" pointer defined here must be a pointer to that variable. This is how the continuation system updates the derived class's continuation parameter.
Also sometimes referred to as "lambda" in the code comments.
Definition at line 115 of file continuation_system.h.
Referenced by apply_predictor(), continuation_solve(), initialize_tangent(), save_current_solution(), solve_tangent(), and update_solution().
Real libMesh::ContinuationSystem::continuation_parameter_tolerance |
How tightly should the Newton iterations attempt to converge delta_lambda. Defaults to 1.e-6.
Definition at line 134 of file continuation_system.h.
Referenced by continuation_solve().
|
inherited |
All the values I need to compute my contribution to the simulation at hand. Think of this as the current solution with any ghost values needed from other processors. This vector is necessarily larger than the solution
vector in the case of a parallel simulation. The update()
member is used to synchronize the contents of the solution
and current_local_solution
vectors.
Definition at line 1535 of file system.h.
Referenced by libMesh::__libmesh_petsc_diff_solver_jacobian(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::NonlinearImplicitSystem::assembly(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::System::clear(), libMesh::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), libMesh::System::current_solution(), DMlibMeshFunction(), DMlibMeshJacobian(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::System::init_data(), libMesh::libmesh_petsc_snes_fd_residual(), libMesh::libmesh_petsc_snes_jacobian(), libMesh::libmesh_petsc_snes_mffd_residual(), libMesh::libmesh_petsc_snes_residual(), libMesh::libmesh_petsc_snes_residual_helper(), libMesh::FEMContext::pre_fe_reinit(), libMesh::System::re_update(), libMesh::System::reinit(), libMesh::System::restrict_vectors(), and libMesh::System::update().
|
private |
Temporary vector "delta u" ... the Newton step update in our custom augmented PDE solve.
Definition at line 370 of file continuation_system.h.
Referenced by continuation_solve(), init_data(), solve_tangent(), and update_solution().
|
inherited |
For time-dependent problems, this is the amount delta t to advance the solution in time.
Definition at line 261 of file diff_system.h.
Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::NewmarkSolver::_general_residual(), libMesh::UnsteadySolver::adjoint_advance_timestep(), libMesh::NewmarkSolver::advance_timestep(), libMesh::UnsteadySolver::advance_timestep(), libMesh::FEMSystem::build_context(), libMesh::DifferentiableSystem::build_context(), libMesh::FEMSystem::init_context(), libMesh::TwostepTimeSolver::solve(), and libMesh::UnsteadySolver::solve().
|
protectedinherited |
Pointer to object to use for quantity of interest assembly evaluations. Defaults to this
for backwards compatibility; in the future users should create separate physics objects.
Definition at line 378 of file diff_system.h.
Referenced by libMesh::FEMSystem::assemble_qoi(), libMesh::FEMSystem::assemble_qoi_derivative(), libMesh::DifferentiableSystem::attach_qoi(), libMesh::DifferentiableSystem::clear(), libMesh::DifferentiableSystem::get_qoi(), and libMesh::DifferentiableSystem::~DifferentiableSystem().
|
private |
The most recent value of the derivative of the continuation parameter with respect to s. We use "lambda" here for shortness of notation, lambda always refers to the continuation parameter.
Definition at line 396 of file continuation_system.h.
Referenced by apply_predictor(), continuation_solve(), initialize_tangent(), set_Theta_LOCA(), and solve_tangent().
|
private |
The initial arclength stepsize, selected by the user. This is the max-allowable arclength stepsize, but the algorithm may frequently reduce ds near turning points.
Definition at line 403 of file continuation_system.h.
Referenced by set_max_arclength_stepsize(), and update_solution().
|
private |
Value of stepsize currently in use. Will not exceed user-provided maximum arclength stepsize ds.
Definition at line 409 of file continuation_system.h.
Referenced by apply_predictor(), continuation_solve(), initialize_tangent(), set_max_arclength_stepsize(), and update_solution().
Real libMesh::ContinuationSystem::ds_min |
The minimum-allowed steplength, defaults to 1.e-8.
Definition at line 214 of file continuation_system.h.
Referenced by update_solution().
|
private |
Extra work vectors used by the continuation algorithm. These are added to the system by the init_data() routine.
The "solution" tangent vector du/ds.
Definition at line 338 of file continuation_system.h.
Referenced by apply_predictor(), continuation_solve(), init_data(), initialize_tangent(), and solve_tangent().
|
inherited |
A member int that can be employed to indicate increased or reduced quadrature order.
|
inherited |
Real libMesh::ContinuationSystem::initial_newton_tolerance |
How much to try to reduce the residual by at the first (inexact) Newton step. This is frequently something large like 1/2 in an inexact Newton method, to prevent oversolving.
Definition at line 147 of file continuation_system.h.
Referenced by continuation_solve().
|
private |
We maintain our own linear solver interface, for solving custom systems of equations and/or things which do not require a full-blown NewtonSolver.
Definition at line 377 of file continuation_system.h.
Referenced by continuation_solve(), ContinuationSystem(), and solve_tangent().
|
inherited |
The system matrix. Implicit systems are characterized by the need to solve the linear system Ax=b. This is the system matrix A.
Definition at line 373 of file implicit_system.h.
Referenced by libMesh::__libmesh_petsc_diff_solver_jacobian(), libMesh::ImplicitSystem::add_system_matrix(), libMesh::ImplicitSystem::adjoint_solve(), libMesh::ImplicitSystem::assemble(), libMesh::FEMSystem::assembly(), libMesh::LinearImplicitSystem::assembly(), libMesh::NonlinearImplicitSystem::assembly(), libMesh::NewmarkSystem::compute_matrix(), continuation_solve(), DMlibMeshJacobian(), libMesh::ImplicitSystem::forward_qoi_parameter_sensitivity(), libMesh::ImplicitSystem::init_matrices(), libMesh::ImplicitSystem::qoi_parameter_hessian(), libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product(), libMesh::ImplicitSystem::sensitivity_solve(), libMesh::NewtonSolver::solve(), libMesh::PetscDiffSolver::solve(), libMesh::NoxNonlinearSolver< Number >::solve(), libMesh::EigenTimeSolver::solve(), libMesh::FrequencySystem::solve(), libMesh::LinearImplicitSystem::solve(), libMesh::NonlinearImplicitSystem::solve(), solve_tangent(), libMesh::ImplicitSystem::weighted_sensitivity_adjoint_solve(), and libMesh::ImplicitSystem::weighted_sensitivity_solve().
Real libMesh::ContinuationSystem::max_continuation_parameter |
The maximum-allowable value of the continuation parameter. The Newton iterations will quit if the continuation parameter goes above this value. If this value is zero, there is no maximum value for the continuation parameter.
Definition at line 174 of file continuation_system.h.
Referenced by continuation_solve().
Real libMesh::ContinuationSystem::min_continuation_parameter |
The minimum-allowable value of the continuation parameter. The Newton iterations will quit if the continuation parameter falls below this value.
Definition at line 167 of file continuation_system.h.
Referenced by continuation_solve().
unsigned int libMesh::ContinuationSystem::n_arclength_reductions |
Number of arclength reductions to try when Newton fails to reduce the residual. For each arclength reduction, the arcstep size is cut in half.
Definition at line 209 of file continuation_system.h.
Referenced by continuation_solve().
unsigned int libMesh::ContinuationSystem::n_backtrack_steps |
Another scaling parameter suggested by the LOCA people. This one attempts to shrink the stepsize ds whenever the angle between the previous two tangent vectors gets large. Number of (Newton) backtracking steps to attempt if a Newton step does not reduce the residual. This is backtracking within a single Newton step, if you want to try a smaller arcstep, set n_arclength_reductions > 0.
Definition at line 202 of file continuation_system.h.
Referenced by continuation_solve().
bool libMesh::ContinuationSystem::newton_progress_check |
True by default, the Newton progress check allows the Newton loop to exit if half the allowed iterations have elapsed without a reduction in the initial residual. In our experience this usually means the Newton steps are going to fail eventually and we could save some time by quitting early.
Definition at line 256 of file continuation_system.h.
Referenced by continuation_solve().
|
private |
A pointer to the underlying Newton solver used by the DiffSystem
. From this pointer, we can get access to all the parameters and options which are available to the "normal" Newton solver.
Definition at line 389 of file continuation_system.h.
Referenced by continuation_solve(), solve_tangent(), and update_solution().
|
private |
Loop counter for nonlinear (Newton) iteration loop.
Definition at line 424 of file continuation_system.h.
Referenced by continuation_solve(), and update_solution().
Real libMesh::ContinuationSystem::newton_stepgrowth_aggressiveness |
A measure of how rapidly one should attempt to grow the arclength stepsize based on the number of Newton iterations required to solve the problem. Default value is 1.0, if set to zero, will not try to grow or shrink the arclength stepsize based on the number of Newton iterations required.
Definition at line 247 of file continuation_system.h.
Referenced by update_solution().
|
inherited |
If calculating numeric jacobians is required, the FEMSystem will perturb each solution vector entry by numerical_jacobian_h when calculating finite differences. This defaults to the libMesh TOLERANCE but can be set manually.
For ALE terms, the FEMSystem will perturb each mesh point in an element by numerical_jacobian_h * Elem::hmin()
Definition at line 181 of file fem_system.h.
Referenced by libMesh::FEMSystem::numerical_jacobian(), and libMesh::FEMSystem::numerical_jacobian_h_for_var().
Real libMesh::ContinuationSystem::old_continuation_parameter |
The system also keeps track of the old value of the continuation parameter.
Definition at line 161 of file continuation_system.h.
Referenced by continuation_solve(), initialize_tangent(), save_current_solution(), solve_tangent(), and update_solution().
|
inherited |
If postprocess_sides
is true (it is false by default), the postprocessing loop will loop over all sides as well as all elements.
Definition at line 315 of file diff_system.h.
Predictor libMesh::ContinuationSystem::predictor |
Definition at line 238 of file continuation_system.h.
Referenced by apply_predictor().
|
private |
The old parameter tangent value.
Definition at line 414 of file continuation_system.h.
Referenced by apply_predictor(), and solve_tangent().
|
private |
The previous arcstep length used.
Definition at line 419 of file continuation_system.h.
Referenced by apply_predictor(), and update_solution().
|
private |
The value of du_ds from the previous solution
Definition at line 343 of file continuation_system.h.
Referenced by apply_predictor(), init_data(), and solve_tangent().
|
private |
The solution at the previous value of the continuation variable.
Definition at line 348 of file continuation_system.h.
Referenced by continuation_solve(), init_data(), initialize_tangent(), save_current_solution(), solve_tangent(), and update_solution().
|
inherited |
Set print_element_jacobians to true to print each J_elem contribution.
Definition at line 362 of file diff_system.h.
|
inherited |
Set print_element_residuals to true to print each R_elem contribution.
Definition at line 357 of file diff_system.h.
|
inherited |
Set print_element_solutions to true to print each U_elem input.
Definition at line 352 of file diff_system.h.
|
inherited |
Set print_jacobian_norms to true to print |J| whenever it is assembled.
Definition at line 342 of file diff_system.h.
Referenced by libMesh::FEMSystem::assembly().
|
inherited |
Set print_jacobians to true to print J whenever it is assembled.
Definition at line 347 of file diff_system.h.
Referenced by libMesh::FEMSystem::assembly().
|
inherited |
Set print_residual_norms to true to print |F| whenever it is assembled.
Definition at line 332 of file diff_system.h.
Referenced by libMesh::FEMSystem::assembly().
|
inherited |
Set print_residuals to true to print F whenever it is assembled.
Definition at line 337 of file diff_system.h.
Referenced by libMesh::FEMSystem::assembly().
|
inherited |
Set print_residual_norms to true to print |U| whenever it is used in an assembly() call
Definition at line 321 of file diff_system.h.
Referenced by libMesh::FEMSystem::assembly().
|
inherited |
Set print_solutions to true to print U whenever it is used in an assembly() call
Definition at line 327 of file diff_system.h.
Referenced by libMesh::FEMSystem::assembly().
|
inherited |
Values of the quantities of interest. This vector needs to be both resized and filled by the user before any quantity of interest assembly is done and before any sensitivities are calculated.
Definition at line 1558 of file system.h.
Referenced by libMesh::ImplicitSystem::adjoint_qoi_parameter_sensitivity(), libMesh::ExplicitSystem::assemble_qoi(), libMesh::FEMSystem::assemble_qoi(), libMesh::DifferentiableSystem::attach_qoi(), libMesh::DiffContext::DiffContext(), libMesh::ImplicitSystem::forward_qoi_parameter_sensitivity(), libMesh::System::n_qois(), libMesh::ImplicitSystem::qoi_parameter_hessian(), and libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product().
bool libMesh::ContinuationSystem::quiet |
If quiet==false, the System prints extra information about what it is doing.
Definition at line 121 of file continuation_system.h.
Referenced by continuation_solve(), initialize_tangent(), set_Theta(), set_Theta_LOCA(), solve_tangent(), and update_solution().
|
inherited |
The system matrix. Implicit systems are characterized by the need to solve the linear system Ax=b. This is the right-hand-side vector b.
Definition at line 114 of file explicit_system.h.
Referenced by libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::ExplicitSystem::add_system_rhs(), libMesh::ImplicitSystem::assemble(), libMesh::ImplicitSystem::assemble_residual_derivatives(), libMesh::FEMSystem::assembly(), libMesh::LinearImplicitSystem::assembly(), libMesh::NonlinearImplicitSystem::assembly(), libMesh::Problem_Interface::computeF(), continuation_solve(), DMlibMeshFunction(), libMesh::ImplicitSystem::forward_qoi_parameter_sensitivity(), libMesh::NewtonSolver::line_search(), libMesh::ImplicitSystem::qoi_parameter_hessian(), libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product(), libMesh::NewtonSolver::solve(), libMesh::PetscDiffSolver::solve(), libMesh::FrequencySystem::solve(), libMesh::LinearImplicitSystem::solve(), libMesh::NonlinearImplicitSystem::solve(), solve_tangent(), libMesh::NewmarkSystem::update_rhs(), libMesh::ImplicitSystem::weighted_sensitivity_adjoint_solve(), and libMesh::ImplicitSystem::weighted_sensitivity_solve().
|
protected |
Definition at line 289 of file continuation_system.h.
Referenced by continuation_solve(), solve(), and solve_tangent().
|
inherited |
Data structure to hold solution values.
Definition at line 1523 of file system.h.
Referenced by libMesh::__libmesh_petsc_diff_solver_jacobian(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::NewmarkSolver::advance_timestep(), libMesh::AdaptiveTimeSolver::advance_timestep(), libMesh::UnsteadySolver::advance_timestep(), apply_predictor(), libMesh::FEMSystem::assembly(), libMesh::LinearImplicitSystem::assembly(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::System::clear(), libMesh::System::compare(), libMesh::NewmarkSolver::compute_initial_accel(), libMesh::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), continuation_solve(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::ExodusII_IO::copy_nodal_solution(), libMesh::GMVIO::copy_nodal_solution(), DMCreateGlobalVector_libMesh(), DMlibMeshFunction(), DMlibMeshJacobian(), libMesh::UnsteadySolver::du(), libMesh::DofMap::enforce_constraints_exactly(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::AdjointResidualErrorEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::CondensedEigenSystem::get_eigenpair(), libMesh::EigenSystem::get_eigenpair(), libMesh::System::init_data(), initialize_tangent(), libMesh::libmesh_petsc_snes_jacobian(), libMesh::libmesh_petsc_snes_postcheck(), libMesh::libmesh_petsc_snes_residual_helper(), libMesh::DofMap::max_constraint_error(), libMesh::FEMSystem::mesh_position_get(), libMesh::ErrorVector::plot_error(), libMesh::ImplicitSystem::qoi_parameter_hessian(), libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product(), libMesh::System::re_update(), libMesh::System::read_legacy_data(), libMesh::System::read_parallel_data(), libMesh::System::read_serialized_data(), libMesh::System::reinit(), libMesh::System::restrict_vectors(), libMesh::MemorySolutionHistory::retrieve(), save_current_solution(), libMesh::TwostepTimeSolver::solve(), libMesh::NewtonSolver::solve(), libMesh::PetscDiffSolver::solve(), libMesh::FrequencySystem::solve(), libMesh::LinearImplicitSystem::solve(), libMesh::NonlinearImplicitSystem::solve(), solve_tangent(), libMesh::MemorySolutionHistory::store(), libMesh::System::update(), libMesh::System::update_global_solution(), update_solution(), libMesh::NewmarkSystem::update_u_v_a(), libMesh::System::write_parallel_data(), and libMesh::System::write_serialized_data().
Real libMesh::ContinuationSystem::solution_tolerance |
How tightly should the Newton iterations attempt to converge ||delta_u|| Defaults to 1.e-6.
Definition at line 140 of file continuation_system.h.
Referenced by continuation_solve().
|
private |
False until initialize_tangent() is called
Definition at line 382 of file continuation_system.h.
Referenced by continuation_solve(), initialize_tangent(), solve_tangent(), and update_solution().
Real libMesh::ContinuationSystem::Theta |
Arclength normalization parameter. Defaults to 1.0 (no normalization). Used to ensure that one term in the arclength constraint equation does not wash out all the others.
Definition at line 181 of file continuation_system.h.
Referenced by continuation_solve(), initialize_tangent(), set_Theta(), solve_tangent(), and update_solution().
Real libMesh::ContinuationSystem::Theta_LOCA |
Another normalization parameter, which is described in the LOCA manual. This one is designed to maintain a relatively "fixed" value of d(lambda)/ds. It is initially 1.0 and is updated after each solve.
Definition at line 188 of file continuation_system.h.
Referenced by continuation_solve(), initialize_tangent(), set_Theta_LOCA(), solve_tangent(), and update_solution().
|
inherited |
For time-dependent problems, this is the time t at the beginning of the current timestep.
Definition at line 1545 of file system.h.
Referenced by libMesh::UnsteadySolver::adjoint_advance_timestep(), libMesh::AdaptiveTimeSolver::advance_timestep(), libMesh::UnsteadySolver::advance_timestep(), libMesh::ExactErrorEstimator::find_squared_element_error(), libMesh::MemorySolutionHistory::find_stored_entry(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::System::reinit_constraints(), libMesh::MemorySolutionHistory::retrieve(), libMesh::TwostepTimeSolver::solve(), and libMesh::MemorySolutionHistory::store().
|
inherited |
A pointer to the solver object we're going to use. This must be instantiated by the user before solving!
Definition at line 234 of file diff_system.h.
Referenced by libMesh::FEMSystem::assembly(), continuation_solve(), libMesh::DifferentiableSystem::get_linear_solve_parameters(), libMesh::DifferentiableSystem::get_linear_solver(), libMesh::DifferentiableSystem::get_second_order_dot_var(), libMesh::DifferentiableSystem::get_time_solver(), libMesh::DifferentiableSystem::init_data(), libMesh::DifferentiableSystem::reinit(), libMesh::DifferentiableSystem::set_time_solver(), libMesh::DifferentiableSystem::solve(), and solve_tangent().
|
inherited |
A boolean to be set to true by systems using elem_fixed_solution, for optional use by e.g. stabilized methods. False by default.
Definition at line 1493 of file system.h.
Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::SteadySolver::_general_residual(), libMesh::NewmarkSolver::_general_residual(), libMesh::DifferentiableSystem::clear(), libMesh::DiffContext::DiffContext(), and libMesh::FEMContext::pre_fe_reinit().
|
inherited |
If verify_analytic_jacobian is equal to zero (as it is by default), no numeric jacobians will be calculated unless an overridden element_time_derivative(), element_constraint(), side_time_derivative(), or side_constraint() function cannot provide an analytic jacobian upon request.
If verify_analytic_jacobian is equal to the positive value tol, then any time a full analytic element jacobian can be calculated it will be tested against a numerical jacobian on the same element, and the program will abort if the relative error (in matrix l1 norms) exceeds tol.
Definition at line 209 of file fem_system.h.
Referenced by libMesh::FEMSystem::assembly().
|
private |
Temporary vector "y" ... stores -du/dlambda, the solution of .
Definition at line 353 of file continuation_system.h.
Referenced by continuation_solve(), init_data(), initialize_tangent(), solve_tangent(), and update_solution().
|
private |
Temporary vector "y_old" ... stores the previous value of -du/dlambda, which is the solution of .
Definition at line 359 of file continuation_system.h.
Referenced by continuation_solve(), init_data(), and update_solution().
|
private |
Temporary vector "z" ... the solution of
Definition at line 364 of file continuation_system.h.
Referenced by continuation_solve(), and init_data().
|
inherited |
By default, the system will zero out the matrix and the right hand side. If this flag is false, it is the responsibility of the client code to take care of setting these to zero before assembly begins
Definition at line 380 of file implicit_system.h.
Referenced by libMesh::ImplicitSystem::assemble().