libMesh
Public Types | Public Member Functions | Public Attributes | Protected Attributes | Private Attributes | List of all members
libMesh::DiffContext Class Reference

This class provides all data required for a physics package (e.g. More...

#include <diff_context.h>

Inheritance diagram for libMesh::DiffContext:
[legend]

Public Types

typedef std::map< const NumericVector< Number > *, std::pair< DenseVector< Number >, std::vector< std::unique_ptr< DenseSubVector< Number > > > > >::iterator localized_vectors_iterator
 Typedef for the localized_vectors iterator. More...
 

Public Member Functions

 DiffContext (const System &)
 Constructor. More...
 
virtual ~DiffContext ()
 Destructor. More...
 
virtual void elem_reinit (Real)
 Gives derived classes the opportunity to reinitialize data (FE objects in FEMSystem, for example) needed for an interior integration at a new point within a timestep. More...
 
virtual void elem_side_reinit (Real)
 Gives derived classes the opportunity to reinitialize data needed for a side integration at a new point within a timestep. More...
 
virtual void elem_edge_reinit (Real)
 Gives derived classes the opportunity to reinitialize data needed for an edge integration at a new point within a timestep. More...
 
virtual void nonlocal_reinit (Real)
 Gives derived classes the opportunity to reinitialize data needed for nonlocal calculations at a new point within a timestep. More...
 
unsigned int n_vars () const
 Number of variables in solution. More...
 
const Systemget_system () const
 Accessor for associated system. More...
 
const DenseVector< Number > & get_elem_solution () const
 Accessor for element solution. More...
 
DenseVector< Number > & get_elem_solution ()
 Non-const accessor for element solution. More...
 
const DenseSubVector< Number > & get_elem_solution (unsigned int var) const
 Accessor for element solution of a particular variable corresponding to the variable index argument. More...
 
DenseSubVector< Number > & get_elem_solution (unsigned int var)
 Accessor for element solution of a particular variable corresponding to the variable index argument. More...
 
const DenseVector< Number > & get_elem_solution_rate () const
 Accessor for element solution rate of change w.r.t. More...
 
DenseVector< Number > & get_elem_solution_rate ()
 Non-const accessor for element solution rate of change w.r.t. More...
 
const DenseSubVector< Number > & get_elem_solution_rate (unsigned int var) const
 Accessor for element solution rate for a particular variable corresponding to the variable index argument. More...
 
DenseSubVector< Number > & get_elem_solution_rate (unsigned int var)
 Accessor for element solution rate for a particular variable corresponding to the variable index argument. More...
 
const DenseVector< Number > & get_elem_solution_accel () const
 Accessor for element solution accel of change w.r.t. More...
 
DenseVector< Number > & get_elem_solution_accel ()
 Non-const accessor for element solution accel of change w.r.t. More...
 
const DenseSubVector< Number > & get_elem_solution_accel (unsigned int var) const
 Accessor for element solution accel for a particular variable corresponding to the variable index argument. More...
 
DenseSubVector< Number > & get_elem_solution_accel (unsigned int var)
 Accessor for element solution accel for a particular variable corresponding to the variable index argument. More...
 
const DenseVector< Number > & get_elem_fixed_solution () const
 Accessor for element fixed solution. More...
 
DenseVector< Number > & get_elem_fixed_solution ()
 Non-const accessor for element fixed solution. More...
 
const DenseSubVector< Number > & get_elem_fixed_solution (unsigned int var) const
 Accessor for element fixed solution of a particular variable corresponding to the variable index argument. More...
 
DenseSubVector< Number > & get_elem_fixed_solution (unsigned int var)
 Accessor for element fixed solution of a particular variable corresponding to the variable index argument. More...
 
const DenseVector< Number > & get_elem_residual () const
 Const accessor for element residual. More...
 
DenseVector< Number > & get_elem_residual ()
 Non-const accessor for element residual. More...
 
const DenseSubVector< Number > & get_elem_residual (unsigned int var) const
 Const accessor for element residual of a particular variable corresponding to the variable index argument. More...
 
DenseSubVector< Number > & get_elem_residual (unsigned int var)
 Non-const accessor for element residual of a particular variable corresponding to the variable index argument. More...
 
const DenseMatrix< Number > & get_elem_jacobian () const
 Const accessor for element Jacobian. More...
 
DenseMatrix< Number > & get_elem_jacobian ()
 Non-const accessor for element Jacobian. More...
 
const DenseSubMatrix< Number > & get_elem_jacobian (unsigned int var1, unsigned int var2) const
 Const accessor for element Jacobian of particular variables corresponding to the variable index arguments. More...
 
DenseSubMatrix< Number > & get_elem_jacobian (unsigned int var1, unsigned int var2)
 Non-const accessor for element Jacobian of particular variables corresponding to the variable index arguments. More...
 
const std::vector< Number > & get_qois () const
 Const accessor for QoI vector. More...
 
std::vector< Number > & get_qois ()
 Non-const accessor for QoI vector. More...
 
const std::vector< DenseVector< Number > > & get_qoi_derivatives () const
 Const accessor for QoI derivatives. More...
 
std::vector< DenseVector< Number > > & get_qoi_derivatives ()
 Non-const accessor for QoI derivatives. More...
 
const DenseSubVector< Number > & get_qoi_derivatives (std::size_t qoi, unsigned int var) const
 Const accessor for QoI derivative of a particular qoi and variable corresponding to the index arguments. More...
 
DenseSubVector< Number > & get_qoi_derivatives (std::size_t qoi, unsigned int var)
 Non-const accessor for QoI derivative of a particular qoi and variable corresponding to the index arguments. More...
 
const std::vector< dof_id_type > & get_dof_indices () const
 Accessor for element dof indices. More...
 
std::vector< dof_id_type > & get_dof_indices ()
 Non-const accessor for element dof indices. More...
 
const std::vector< dof_id_type > & get_dof_indices (unsigned int var) const
 Accessor for element dof indices of a particular variable corresponding to the index argument. More...
 
std::vector< dof_id_type > & get_dof_indices (unsigned int var)
 Accessor for element dof indices of a particular variable corresponding to the index argument. More...
 
unsigned int n_dof_indices () const
 Total number of dof indices on the element. More...
 
unsigned int n_dof_indices (unsigned int var) const
 Total number of dof indices of the particular variable corresponding to the index argument. More...
 
Real get_system_time () const
 Accessor for the time variable stored in the system class. More...
 
Real get_time () const
 Accessor for the time for which the current nonlinear_solution is defined. More...
 
void set_time (Real time_in)
 Set the time for which the current nonlinear_solution is defined. More...
 
Real get_elem_solution_derivative () const
 The derivative of the current elem_solution w.r.t. More...
 
Real get_elem_solution_rate_derivative () const
 The derivative of the current elem_solution_rate w.r.t. More...
 
Real get_elem_solution_accel_derivative () const
 The derivative of the current elem_solution_accel w.r.t. More...
 
Real get_fixed_solution_derivative () const
 The derivative of the current fixed_elem_solution w.r.t. More...
 
bool is_adjoint () const
 Accessor for querying whether we need to do a primal or adjoint solve. More...
 
bool & is_adjoint ()
 Accessor for setting whether we need to do a primal or adjoint solve. More...
 
void set_deltat_pointer (Real *dt)
 Points the _deltat member of this class at a timestep value stored in the creating System, for example DiffSystem::deltat. More...
 
Real get_deltat_value ()
 
void add_localized_vector (NumericVector< Number > &localized_vector, const System &sys)
 Adds a vector to the map of localized vectors. More...
 
DenseVector< Number > & get_localized_vector (const NumericVector< Number > &localized_vector)
 Return a reference to DenseVector localization of localized_vector contained in the _localized_vectors map. More...
 
const DenseVector< Number > & get_localized_vector (const NumericVector< Number > &localized_vector) const
 const accessible version of get_localized_vector function More...
 
DenseSubVector< Number > & get_localized_subvector (const NumericVector< Number > &localized_vector, unsigned int var)
 Return a reference to DenseSubVector localization of localized_vector at variable var contained in the _localized_vectors map. More...
 
const DenseSubVector< Number > & get_localized_subvector (const NumericVector< Number > &localized_vector, unsigned int var) const
 const accessible version of get_localized_subvector function More...
 

Public Attributes

Real time
 For time-dependent problems, this is the time t for which the current nonlinear_solution is defined. More...
 
const Real system_time
 This is the time stored in the System class at the time this context was created, i.e. More...
 
Real elem_solution_derivative
 The derivative of elem_solution with respect to the current nonlinear solution. More...
 
Real elem_solution_rate_derivative
 The derivative of elem_solution_rate with respect to the current nonlinear solution, for use by systems with non default mass_residual terms. More...
 
Real elem_solution_accel_derivative
 The derivative of elem_solution_accel with respect to the current nonlinear solution, for use by systems with non default mass_residual terms. More...
 
Real fixed_solution_derivative
 The derivative of elem_fixed_solution with respect to the nonlinear solution, for use by systems constructing jacobians with elem_fixed_solution based methods. More...
 

Protected Attributes

std::map< const NumericVector< Number > *, std::pair< DenseVector< Number >, std::vector< std::unique_ptr< DenseSubVector< Number > > > > > _localized_vectors
 Contains pointers to vectors the user has asked to be localized, keyed with pairs of element localized versions of that vector and per variable views. More...
 
DenseVector< Number_elem_solution
 Element by element components of nonlinear_solution as adjusted by a time_solver. More...
 
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_subsolutions
 
DenseVector< Number_elem_solution_rate
 Element by element components of du/dt as adjusted by a time_solver. More...
 
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_subsolution_rates
 
DenseVector< Number_elem_solution_accel
 Element by element components of du/dt as adjusted by a time_solver. More...
 
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_subsolution_accels
 
DenseVector< Number_elem_fixed_solution
 Element by element components of nonlinear_solution at a fixed point in a timestep, for optional use by e.g. More...
 
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_fixed_subsolutions
 
DenseVector< Number_elem_residual
 Element residual vector. More...
 
DenseMatrix< Number_elem_jacobian
 Element jacobian: derivatives of elem_residual with respect to elem_solution. More...
 
std::vector< Number_elem_qoi
 Element quantity of interest contributions. More...
 
std::vector< DenseVector< Number > > _elem_qoi_derivative
 Element quantity of interest derivative contributions. More...
 
std::vector< std::vector< std::unique_ptr< DenseSubVector< Number > > > > _elem_qoi_subderivatives
 
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_subresiduals
 Element residual subvectors and Jacobian submatrices. More...
 
std::vector< std::vector< std::unique_ptr< DenseSubMatrix< Number > > > > _elem_subjacobians
 
std::vector< dof_id_type_dof_indices
 Global Degree of freedom index lists. More...
 
std::vector< std::vector< dof_id_type > > _dof_indices_var
 

Private Attributes

Real_deltat
 Defaults to nullptr, can optionally be used to point to a timestep value in the System-derived class responsible for creating this DiffContext. More...
 
const System_system
 A reference to the system this context is constructed with. More...
 
bool _is_adjoint
 Is this context to be used for a primal or adjoint solve? More...
 

Detailed Description

This class provides all data required for a physics package (e.g.

a DifferentiableSystem subclass) to perform local element residual and jacobian integrations.

This class is part of the new DifferentiableSystem framework, which is still experimental. Users of this framework should beware of bugs and future API changes.

Author
Roy H. Stogner
Date
2009

Definition at line 55 of file diff_context.h.

Member Typedef Documentation

◆ localized_vectors_iterator

typedef std::map<const NumericVector<Number> *, std::pair<DenseVector<Number>, std::vector<std::unique_ptr<DenseSubVector<Number> > > > >::iterator libMesh::DiffContext::localized_vectors_iterator

Typedef for the localized_vectors iterator.

Definition at line 544 of file diff_context.h.

Constructor & Destructor Documentation

◆ DiffContext()

libMesh::DiffContext::DiffContext ( const System sys)
explicit

Constructor.

Optionally initializes required data structures.

Definition at line 30 of file diff_context.C.

30  :
31  time(sys.time),
32  system_time(sys.time),
37  _dof_indices_var(sys.n_vars()),
38  _deltat(nullptr),
39  _system(sys),
40  _is_adjoint(false)
41 {
42  // Finally initialize solution/residual/jacobian data structures
43  unsigned int nv = sys.n_vars();
44 
45  _elem_subsolutions.reserve(nv);
46  _elem_subresiduals.reserve(nv);
47  _elem_subjacobians.resize(nv);
48  _elem_subsolution_rates.reserve(nv);
49  _elem_subsolution_accels.reserve(nv);
50  if (sys.use_fixed_solution)
51  _elem_fixed_subsolutions.reserve(nv);
52 
53  // If the user resizes sys.qoi, it will invalidate us
54 
55  std::size_t n_qoi = sys.qoi.size();
56  _elem_qoi.resize(n_qoi);
57  _elem_qoi_derivative.resize(n_qoi);
58  _elem_qoi_subderivatives.resize(n_qoi);
59  for (std::size_t q=0; q != n_qoi; ++q)
60  _elem_qoi_subderivatives[q].reserve(nv);
61 
62  for (unsigned int i=0; i != nv; ++i)
63  {
64  _elem_subsolutions.emplace_back(libmesh_make_unique<DenseSubVector<Number>>(_elem_solution));
65  _elem_subresiduals.emplace_back(libmesh_make_unique<DenseSubVector<Number>>(_elem_residual));
66  for (std::size_t q=0; q != n_qoi; ++q)
67  _elem_qoi_subderivatives[q].emplace_back(libmesh_make_unique<DenseSubVector<Number>>(_elem_qoi_derivative[q]));
68  _elem_subjacobians[i].reserve(nv);
69 
70  // Only make space for these if we're using DiffSystem
71  // This is assuming *only* DiffSystem is using elem_solution_rate/accel
72  const DifferentiableSystem * diff_system = dynamic_cast<const DifferentiableSystem *>(&sys);
73  if (diff_system)
74  {
75  // Now, we only need these if the solver is unsteady
76  if (!diff_system->get_time_solver().is_steady())
77  {
78  _elem_subsolution_rates.emplace_back(libmesh_make_unique<DenseSubVector<Number>>(_elem_solution_rate));
79 
80  // We only need accel space if the TimeSolver is second order
81  const UnsteadySolver & time_solver = cast_ref<const UnsteadySolver &>(diff_system->get_time_solver());
82 
83  if (time_solver.time_order() >= 2 || !diff_system->get_second_order_vars().empty())
84  _elem_subsolution_accels.emplace_back(libmesh_make_unique<DenseSubVector<Number>>(_elem_solution_accel));
85  }
86  }
87 
88  if (sys.use_fixed_solution)
89  _elem_fixed_subsolutions.emplace_back(libmesh_make_unique<DenseSubVector<Number>>(_elem_fixed_solution));
90 
91  for (unsigned int j=0; j != nv; ++j)
92  _elem_subjacobians[i].emplace_back(libmesh_make_unique<DenseSubMatrix<Number>>(_elem_jacobian));
93  }
94 }

References _elem_fixed_solution, _elem_fixed_subsolutions, _elem_jacobian, _elem_qoi, _elem_qoi_derivative, _elem_qoi_subderivatives, _elem_residual, _elem_solution, _elem_solution_accel, _elem_solution_rate, _elem_subjacobians, _elem_subresiduals, _elem_subsolution_accels, _elem_subsolution_rates, _elem_subsolutions, libMesh::DifferentiablePhysics::get_second_order_vars(), libMesh::DifferentiableSystem::get_time_solver(), libMesh::TimeSolver::is_steady(), libMesh::System::n_vars(), libMesh::System::qoi, libMesh::UnsteadySolver::time_order(), and libMesh::System::use_fixed_solution.

◆ ~DiffContext()

libMesh::DiffContext::~DiffContext ( )
virtual

Destructor.

Definition at line 98 of file diff_context.C.

99 {
100 }

Member Function Documentation

◆ add_localized_vector()

void libMesh::DiffContext::add_localized_vector ( NumericVector< Number > &  localized_vector,
const System sys 
)

Adds a vector to the map of localized vectors.

We can later evaluate interior_values, interior_gradients and side_values for these fields these vectors represent.

Definition at line 119 of file diff_context.C.

120 {
121  // Make an empty pair keyed with a reference to this _localized_vector
122  _localized_vectors[&localized_vector] = std::make_pair(DenseVector<Number>(), std::vector<std::unique_ptr<DenseSubVector<Number>>>());
123 
124  unsigned int nv = sys.n_vars();
125 
126  _localized_vectors[&localized_vector].second.reserve(nv);
127 
128  // Fill the DenseSubVector with nv copies of DenseVector
129  for (unsigned int i=0; i != nv; ++i)
130  _localized_vectors[&localized_vector].second.emplace_back(libmesh_make_unique<DenseSubVector<Number>>(_localized_vectors[&localized_vector].first));
131 }

References _localized_vectors, and libMesh::System::n_vars().

◆ elem_edge_reinit()

virtual void libMesh::DiffContext::elem_edge_reinit ( Real  )
inlinevirtual

Gives derived classes the opportunity to reinitialize data needed for an edge integration at a new point within a timestep.

Reimplemented in libMesh::FEMContext.

Definition at line 88 of file diff_context.h.

88 {}

◆ elem_reinit()

virtual void libMesh::DiffContext::elem_reinit ( Real  )
inlinevirtual

Gives derived classes the opportunity to reinitialize data (FE objects in FEMSystem, for example) needed for an interior integration at a new point within a timestep.

Reimplemented in libMesh::FEMContext.

Definition at line 76 of file diff_context.h.

76 {}

Referenced by libMesh::EulerSolver::element_residual(), libMesh::Euler2Solver::element_residual(), and libMesh::NewmarkSolver::element_residual().

◆ elem_side_reinit()

virtual void libMesh::DiffContext::elem_side_reinit ( Real  )
inlinevirtual

Gives derived classes the opportunity to reinitialize data needed for a side integration at a new point within a timestep.

Reimplemented in libMesh::FEMContext.

Definition at line 82 of file diff_context.h.

82 {}

Referenced by libMesh::EulerSolver::side_residual(), libMesh::Euler2Solver::side_residual(), and libMesh::NewmarkSolver::side_residual().

◆ get_deltat_value()

Real libMesh::DiffContext::get_deltat_value ( )
Returns
The value currently pointed to by this class's _deltat member

Definition at line 111 of file diff_context.C.

112 {
114 
115  return *_deltat;
116 }

References _deltat, and libMesh::libmesh_assert().

Referenced by libMesh::FEMContext::_update_time_from_system().

◆ get_dof_indices() [1/4]

std::vector<dof_id_type>& libMesh::DiffContext::get_dof_indices ( )
inline

Non-const accessor for element dof indices.

Definition at line 373 of file diff_context.h.

374  { return _dof_indices; }

References _dof_indices.

◆ get_dof_indices() [2/4]

const std::vector<dof_id_type>& libMesh::DiffContext::get_dof_indices ( ) const
inline

Accessor for element dof indices.

Definition at line 367 of file diff_context.h.

368  { return _dof_indices; }

References _dof_indices.

Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::NewmarkSolver::_general_residual(), libMesh::RBConstruction::add_scaled_matrix_and_vector(), assembly_with_dg_fem_context(), AssemblyA0::boundary_assembly(), AssemblyF0::boundary_assembly(), AssemblyA1::boundary_assembly(), AssemblyF1::boundary_assembly(), AssemblyF2::boundary_assembly(), A2::boundary_assembly(), AssemblyA2::boundary_assembly(), A3::boundary_assembly(), F0::boundary_assembly(), Output0::boundary_assembly(), libMesh::FirstOrderUnsteadySolver::compute_second_order_eqns(), SecondOrderScalarSystemSecondOrderTimeSolverBase::damping_residual(), SecondOrderScalarSystemFirstOrderTimeSolverBase::damping_residual(), FirstOrderScalarSystemBase::element_time_derivative(), SecondOrderScalarSystemFirstOrderTimeSolverBase::element_time_derivative(), libMesh::FEMContext::fixed_point_gradient(), libMesh::FEMContext::fixed_point_hessian(), libMesh::FEMContext::fixed_point_value(), A0::interior_assembly(), B::interior_assembly(), M0::interior_assembly(), A1::interior_assembly(), AssemblyA0::interior_assembly(), EIM_IP_assembly::interior_assembly(), AcousticsInnerProduct::interior_assembly(), AssemblyA1::interior_assembly(), A2::interior_assembly(), AssemblyA2::interior_assembly(), EIM_F::interior_assembly(), F0::interior_assembly(), OutputAssembly::interior_assembly(), InnerProductAssembly::interior_assembly(), AssemblyEIM::interior_assembly(), AssemblyF0::interior_assembly(), AssemblyF1::interior_assembly(), Ex6InnerProduct::interior_assembly(), Ex6EIMInnerProduct::interior_assembly(), libMesh::FEMContext::interior_curl(), libMesh::FEMContext::interior_div(), libMesh::FEMContext::interior_gradients(), libMesh::FEMContext::interior_hessians(), libMesh::FEMContext::interior_values(), libMesh::FEMPhysics::mass_residual(), FirstOrderScalarSystemBase::mass_residual(), SecondOrderScalarSystemSecondOrderTimeSolverBase::mass_residual(), SecondOrderScalarSystemFirstOrderTimeSolverBase::mass_residual(), libMesh::FEMSystem::mesh_position_get(), libMesh::DGFEMContext::neighbor_side_fe_reinit(), libMesh::DifferentiablePhysics::nonlocal_mass_residual(), libMesh::FEMSystem::numerical_jacobian(), libMesh::FEMContext::point_curl(), libMesh::FEMContext::point_gradient(), libMesh::FEMContext::point_hessian(), libMesh::FEMContext::point_value(), libMesh::FEMContext::pre_fe_reinit(), OverlappingCouplingGhostingTest::run_sparsity_pattern_test(), libMesh::FEMContext::side_gradient(), libMesh::FEMContext::side_gradients(), libMesh::FEMContext::side_hessians(), libMesh::FEMContext::side_values(), libMesh::FEMContext::some_gradient(), libMesh::FEMContext::some_hessian(), libMesh::FEMContext::some_value(), and libMesh::RBEIMConstruction::truth_solve().

◆ get_dof_indices() [3/4]

std::vector<dof_id_type>& libMesh::DiffContext::get_dof_indices ( unsigned int  var)
inline

Accessor for element dof indices of a particular variable corresponding to the index argument.

Definition at line 390 of file diff_context.h.

391  {
392  libmesh_assert_greater(_dof_indices_var.size(), var);
393  return _dof_indices_var[var];
394  }

References _dof_indices_var.

◆ get_dof_indices() [4/4]

const std::vector<dof_id_type>& libMesh::DiffContext::get_dof_indices ( unsigned int  var) const
inline

Accessor for element dof indices of a particular variable corresponding to the index argument.

Definition at line 380 of file diff_context.h.

381  {
382  libmesh_assert_greater(_dof_indices_var.size(), var);
383  return _dof_indices_var[var];
384  }

References _dof_indices_var.

◆ get_elem_fixed_solution() [1/4]

DenseVector<Number>& libMesh::DiffContext::get_elem_fixed_solution ( )
inline

Non-const accessor for element fixed solution.

Definition at line 221 of file diff_context.h.

222  { return _elem_fixed_solution; }

References _elem_fixed_solution.

◆ get_elem_fixed_solution() [2/4]

const DenseVector<Number>& libMesh::DiffContext::get_elem_fixed_solution ( ) const
inline

◆ get_elem_fixed_solution() [3/4]

DenseSubVector<Number>& libMesh::DiffContext::get_elem_fixed_solution ( unsigned int  var)
inline

Accessor for element fixed solution of a particular variable corresponding to the variable index argument.

Definition at line 239 of file diff_context.h.

240  {
241  libmesh_assert_greater(_elem_fixed_subsolutions.size(), var);
243  return *(_elem_fixed_subsolutions[var]);
244  }

References _elem_fixed_subsolutions, and libMesh::libmesh_assert().

◆ get_elem_fixed_solution() [4/4]

const DenseSubVector<Number>& libMesh::DiffContext::get_elem_fixed_solution ( unsigned int  var) const
inline

Accessor for element fixed solution of a particular variable corresponding to the variable index argument.

Definition at line 228 of file diff_context.h.

229  {
230  libmesh_assert_greater(_elem_fixed_subsolutions.size(), var);
232  return *(_elem_fixed_subsolutions[var]);
233  }

References _elem_fixed_subsolutions, and libMesh::libmesh_assert().

◆ get_elem_jacobian() [1/4]

DenseMatrix<Number>& libMesh::DiffContext::get_elem_jacobian ( )
inline

Non-const accessor for element Jacobian.

Definition at line 289 of file diff_context.h.

290  { return _elem_jacobian; }

References _elem_jacobian.

◆ get_elem_jacobian() [2/4]

const DenseMatrix<Number>& libMesh::DiffContext::get_elem_jacobian ( ) const
inline

Const accessor for element Jacobian.

Definition at line 283 of file diff_context.h.

284  { return _elem_jacobian; }

References _elem_jacobian.

Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::NewmarkSolver::_general_residual(), libMesh::RBConstruction::add_scaled_matrix_and_vector(), libMesh::FEMSystem::assembly(), assembly_with_dg_fem_context(), AssemblyA0::boundary_assembly(), AssemblyA1::boundary_assembly(), A2::boundary_assembly(), AssemblyA2::boundary_assembly(), A3::boundary_assembly(), libMesh::FirstOrderUnsteadySolver::compute_second_order_eqns(), SecondOrderScalarSystemSecondOrderTimeSolverBase::damping_residual(), SecondOrderScalarSystemFirstOrderTimeSolverBase::damping_residual(), NavierSystem::element_constraint(), CoupledSystem::element_constraint(), libMesh::EigenTimeSolver::element_residual(), NavierSystem::element_time_derivative(), SolidSystem::element_time_derivative(), PoissonSystem::element_time_derivative(), LaplaceSystem::element_time_derivative(), CurlCurlSystem::element_time_derivative(), ElasticitySystem::element_time_derivative(), L2System::element_time_derivative(), CoupledSystem::element_time_derivative(), B::interior_assembly(), A0::interior_assembly(), M0::interior_assembly(), A1::interior_assembly(), AssemblyA0::interior_assembly(), EIM_IP_assembly::interior_assembly(), AcousticsInnerProduct::interior_assembly(), AssemblyA1::interior_assembly(), A2::interior_assembly(), AssemblyA2::interior_assembly(), InnerProductAssembly::interior_assembly(), AssemblyEIM::interior_assembly(), Ex6InnerProduct::interior_assembly(), Ex6EIMInnerProduct::interior_assembly(), NavierSystem::mass_residual(), ElasticitySystem::mass_residual(), libMesh::FEMPhysics::mass_residual(), FirstOrderScalarSystemBase::mass_residual(), SecondOrderScalarSystemSecondOrderTimeSolverBase::mass_residual(), SecondOrderScalarSystemFirstOrderTimeSolverBase::mass_residual(), libMesh::DifferentiablePhysics::nonlocal_mass_residual(), libMesh::EigenTimeSolver::nonlocal_residual(), libMesh::FEMSystem::numerical_jacobian(), libMesh::FEMContext::pre_fe_reinit(), OverlappingCouplingGhostingTest::run_sparsity_pattern_test(), NavierSystem::side_constraint(), LaplaceSystem::side_constraint(), libMesh::EigenTimeSolver::side_residual(), SolidSystem::side_time_derivative(), and CurlCurlSystem::side_time_derivative().

◆ get_elem_jacobian() [3/4]

DenseSubMatrix<Number>& libMesh::DiffContext::get_elem_jacobian ( unsigned int  var1,
unsigned int  var2 
)
inline

Non-const accessor for element Jacobian of particular variables corresponding to the variable index arguments.

Definition at line 308 of file diff_context.h.

309  {
310  libmesh_assert_greater(_elem_subjacobians.size(), var1);
311  libmesh_assert_greater(_elem_subjacobians[var1].size(), var2);
312  libmesh_assert(_elem_subjacobians[var1][var2]);
313  return *(_elem_subjacobians[var1][var2]);
314  }

References _elem_subjacobians, and libMesh::libmesh_assert().

◆ get_elem_jacobian() [4/4]

const DenseSubMatrix<Number>& libMesh::DiffContext::get_elem_jacobian ( unsigned int  var1,
unsigned int  var2 
) const
inline

Const accessor for element Jacobian of particular variables corresponding to the variable index arguments.

Definition at line 296 of file diff_context.h.

297  {
298  libmesh_assert_greater(_elem_subjacobians.size(), var1);
299  libmesh_assert_greater(_elem_subjacobians[var1].size(), var2);
300  libmesh_assert(_elem_subjacobians[var1][var2]);
301  return *(_elem_subjacobians[var1][var2]);
302  }

References _elem_subjacobians, and libMesh::libmesh_assert().

◆ get_elem_residual() [1/4]

DenseVector<Number>& libMesh::DiffContext::get_elem_residual ( )
inline

Non-const accessor for element residual.

Definition at line 255 of file diff_context.h.

256  { return _elem_residual; }

References _elem_residual.

◆ get_elem_residual() [2/4]

const DenseVector<Number>& libMesh::DiffContext::get_elem_residual ( ) const
inline

Const accessor for element residual.

Definition at line 249 of file diff_context.h.

250  { return _elem_residual; }

References _elem_residual.

Referenced by libMesh::Euler2Solver::_general_residual(), libMesh::RBConstruction::add_scaled_matrix_and_vector(), libMesh::FEMSystem::assembly(), assembly_with_dg_fem_context(), AssemblyF0::boundary_assembly(), AssemblyF1::boundary_assembly(), AssemblyF2::boundary_assembly(), F0::boundary_assembly(), Output0::boundary_assembly(), libMesh::FirstOrderUnsteadySolver::compute_second_order_eqns(), SecondOrderScalarSystemSecondOrderTimeSolverBase::damping_residual(), SecondOrderScalarSystemFirstOrderTimeSolverBase::damping_residual(), NavierSystem::element_constraint(), CoupledSystem::element_constraint(), NavierSystem::element_time_derivative(), SolidSystem::element_time_derivative(), LaplaceSystem::element_time_derivative(), PoissonSystem::element_time_derivative(), CurlCurlSystem::element_time_derivative(), ElasticitySystem::element_time_derivative(), L2System::element_time_derivative(), CoupledSystem::element_time_derivative(), FirstOrderScalarSystemBase::element_time_derivative(), SecondOrderScalarSystemFirstOrderTimeSolverBase::element_time_derivative(), EIM_F::interior_assembly(), F0::interior_assembly(), OutputAssembly::interior_assembly(), AssemblyF0::interior_assembly(), AssemblyF1::interior_assembly(), NavierSystem::mass_residual(), ElasticitySystem::mass_residual(), libMesh::FEMPhysics::mass_residual(), FirstOrderScalarSystemBase::mass_residual(), SecondOrderScalarSystemSecondOrderTimeSolverBase::mass_residual(), SecondOrderScalarSystemFirstOrderTimeSolverBase::mass_residual(), libMesh::DifferentiablePhysics::nonlocal_mass_residual(), libMesh::FEMSystem::numerical_jacobian(), libMesh::FEMContext::pre_fe_reinit(), NavierSystem::side_constraint(), LaplaceSystem::side_constraint(), SolidSystem::side_time_derivative(), CurlCurlSystem::side_time_derivative(), ElasticitySystem::side_time_derivative(), and libMesh::RBEIMConstruction::truth_solve().

◆ get_elem_residual() [3/4]

DenseSubVector<Number>& libMesh::DiffContext::get_elem_residual ( unsigned int  var)
inline

Non-const accessor for element residual of a particular variable corresponding to the variable index argument.

Definition at line 273 of file diff_context.h.

274  {
275  libmesh_assert_greater(_elem_subresiduals.size(), var);
277  return *(_elem_subresiduals[var]);
278  }

References _elem_subresiduals, and libMesh::libmesh_assert().

◆ get_elem_residual() [4/4]

const DenseSubVector<Number>& libMesh::DiffContext::get_elem_residual ( unsigned int  var) const
inline

Const accessor for element residual of a particular variable corresponding to the variable index argument.

Definition at line 262 of file diff_context.h.

263  {
264  libmesh_assert_greater(_elem_subresiduals.size(), var);
266  return *(_elem_subresiduals[var]);
267  }

References _elem_subresiduals, and libMesh::libmesh_assert().

◆ get_elem_solution() [1/4]

DenseVector<Number>& libMesh::DiffContext::get_elem_solution ( )
inline

Non-const accessor for element solution.

Definition at line 117 of file diff_context.h.

118  { return _elem_solution; }

References _elem_solution.

◆ get_elem_solution() [2/4]

const DenseVector<Number>& libMesh::DiffContext::get_elem_solution ( ) const
inline

◆ get_elem_solution() [3/4]

DenseSubVector<Number>& libMesh::DiffContext::get_elem_solution ( unsigned int  var)
inline

Accessor for element solution of a particular variable corresponding to the variable index argument.

Definition at line 135 of file diff_context.h.

136  {
137  libmesh_assert_greater(_elem_subsolutions.size(), var);
139  return *(_elem_subsolutions[var]);
140  }

References _elem_subsolutions, and libMesh::libmesh_assert().

◆ get_elem_solution() [4/4]

const DenseSubVector<Number>& libMesh::DiffContext::get_elem_solution ( unsigned int  var) const
inline

Accessor for element solution of a particular variable corresponding to the variable index argument.

Definition at line 124 of file diff_context.h.

125  {
126  libmesh_assert_greater(_elem_subsolutions.size(), var);
128  return *(_elem_subsolutions[var]);
129  }

References _elem_subsolutions, and libMesh::libmesh_assert().

◆ get_elem_solution_accel() [1/4]

DenseVector<Number>& libMesh::DiffContext::get_elem_solution_accel ( )
inline

Non-const accessor for element solution accel of change w.r.t.

time.

Definition at line 187 of file diff_context.h.

188  { return _elem_solution_accel; }

References _elem_solution_accel.

◆ get_elem_solution_accel() [2/4]

const DenseVector<Number>& libMesh::DiffContext::get_elem_solution_accel ( ) const
inline

◆ get_elem_solution_accel() [3/4]

DenseSubVector<Number>& libMesh::DiffContext::get_elem_solution_accel ( unsigned int  var)
inline

Accessor for element solution accel for a particular variable corresponding to the variable index argument.

Definition at line 205 of file diff_context.h.

206  {
207  libmesh_assert_greater(_elem_subsolution_accels.size(), var);
209  return *(_elem_subsolution_accels[var]);
210  }

References _elem_subsolution_accels, and libMesh::libmesh_assert().

◆ get_elem_solution_accel() [4/4]

const DenseSubVector<Number>& libMesh::DiffContext::get_elem_solution_accel ( unsigned int  var) const
inline

Accessor for element solution accel for a particular variable corresponding to the variable index argument.

Definition at line 194 of file diff_context.h.

195  {
196  libmesh_assert_greater(_elem_subsolution_accels.size(), var);
198  return *(_elem_subsolution_accels[var]);
199  }

References _elem_subsolution_accels, and libMesh::libmesh_assert().

◆ get_elem_solution_accel_derivative()

Real libMesh::DiffContext::get_elem_solution_accel_derivative ( ) const
inline

The derivative of the current elem_solution_accel w.r.t.

the unknown solution. Corresponding Jacobian contributions should be multiplied by this amount, or may be skipped if get_elem_solution_accel_derivative() is 0.

Definition at line 454 of file diff_context.h.

References elem_solution_accel_derivative.

Referenced by ElasticitySystem::mass_residual(), SecondOrderScalarSystemSecondOrderTimeSolverBase::mass_residual(), and SecondOrderScalarSystemFirstOrderTimeSolverBase::mass_residual().

◆ get_elem_solution_derivative()

Real libMesh::DiffContext::get_elem_solution_derivative ( ) const
inline

The derivative of the current elem_solution w.r.t.

the unknown solution. Corresponding Jacobian contributions should be multiplied by this amount, or may be skipped if get_elem_solution_derivative() is 0.

Definition at line 436 of file diff_context.h.

437  { return elem_solution_derivative; }

References elem_solution_derivative.

Referenced by libMesh::FirstOrderUnsteadySolver::compute_second_order_eqns(), NavierSystem::element_constraint(), ElasticitySystem::element_time_derivative(), L2System::element_time_derivative(), NavierSystem::mass_residual(), and NavierSystem::side_constraint().

◆ get_elem_solution_rate() [1/4]

DenseVector<Number>& libMesh::DiffContext::get_elem_solution_rate ( )
inline

Non-const accessor for element solution rate of change w.r.t.

time.

Definition at line 152 of file diff_context.h.

153  { return _elem_solution_rate; }

References _elem_solution_rate.

◆ get_elem_solution_rate() [2/4]

const DenseVector<Number>& libMesh::DiffContext::get_elem_solution_rate ( ) const
inline

◆ get_elem_solution_rate() [3/4]

DenseSubVector<Number>& libMesh::DiffContext::get_elem_solution_rate ( unsigned int  var)
inline

Accessor for element solution rate for a particular variable corresponding to the variable index argument.

Definition at line 170 of file diff_context.h.

171  {
172  libmesh_assert_greater(_elem_subsolution_rates.size(), var);
174  return *(_elem_subsolution_rates[var]);
175  }

References _elem_subsolution_rates, and libMesh::libmesh_assert().

◆ get_elem_solution_rate() [4/4]

const DenseSubVector<Number>& libMesh::DiffContext::get_elem_solution_rate ( unsigned int  var) const
inline

Accessor for element solution rate for a particular variable corresponding to the variable index argument.

Definition at line 159 of file diff_context.h.

160  {
161  libmesh_assert_greater(_elem_subsolution_rates.size(), var);
163  return *(_elem_subsolution_rates[var]);
164  }

References _elem_subsolution_rates, and libMesh::libmesh_assert().

◆ get_elem_solution_rate_derivative()

Real libMesh::DiffContext::get_elem_solution_rate_derivative ( ) const
inline

The derivative of the current elem_solution_rate w.r.t.

the unknown solution. Corresponding Jacobian contributions should be multiplied by this amount, or may be skipped if get_elem_solution_rate_derivative() is 0.

Definition at line 445 of file diff_context.h.

References elem_solution_rate_derivative.

Referenced by libMesh::FirstOrderUnsteadySolver::compute_second_order_eqns(), SecondOrderScalarSystemSecondOrderTimeSolverBase::damping_residual(), SecondOrderScalarSystemFirstOrderTimeSolverBase::damping_residual(), FirstOrderScalarSystemBase::mass_residual(), and libMesh::FirstOrderUnsteadySolver::prepare_accel().

◆ get_fixed_solution_derivative()

Real libMesh::DiffContext::get_fixed_solution_derivative ( ) const
inline

The derivative of the current fixed_elem_solution w.r.t.

the unknown solution. Corresponding Jacobian contributions should be multiplied by this amount, or may be skipped if get_fixed_elem_solution_derivative() is 0.

Definition at line 463 of file diff_context.h.

464  { return fixed_solution_derivative; }

References fixed_solution_derivative.

◆ get_localized_subvector() [1/2]

DenseSubVector< Number > & libMesh::DiffContext::get_localized_subvector ( const NumericVector< Number > &  localized_vector,
unsigned int  var 
)

Return a reference to DenseSubVector localization of localized_vector at variable var contained in the _localized_vectors map.

Definition at line 148 of file diff_context.C.

149 {
150  return *_localized_vectors[&localized_vector].second[var];
151 }

References _localized_vectors.

Referenced by libMesh::FEMContext::interior_gradients(), libMesh::FEMContext::interior_hessians(), libMesh::FEMContext::interior_values(), libMesh::FEMContext::side_gradients(), libMesh::FEMContext::side_hessians(), and libMesh::FEMContext::side_values().

◆ get_localized_subvector() [2/2]

const DenseSubVector< Number > & libMesh::DiffContext::get_localized_subvector ( const NumericVector< Number > &  localized_vector,
unsigned int  var 
) const

const accessible version of get_localized_subvector function

Definition at line 154 of file diff_context.C.

155 {
156  auto localized_vectors_it = _localized_vectors.find(&localized_vector);
157  libmesh_assert(localized_vectors_it != _localized_vectors.end());
158  return *localized_vectors_it->second.second[var];
159 }

References _localized_vectors, and libMesh::libmesh_assert().

◆ get_localized_vector() [1/2]

DenseVector< Number > & libMesh::DiffContext::get_localized_vector ( const NumericVector< Number > &  localized_vector)

Return a reference to DenseVector localization of localized_vector contained in the _localized_vectors map.

Definition at line 134 of file diff_context.C.

135 {
136  return _localized_vectors[&localized_vector].first;
137 }

References _localized_vectors.

◆ get_localized_vector() [2/2]

const DenseVector< Number > & libMesh::DiffContext::get_localized_vector ( const NumericVector< Number > &  localized_vector) const

const accessible version of get_localized_vector function

Definition at line 140 of file diff_context.C.

141 {
142  auto localized_vectors_it = _localized_vectors.find(&localized_vector);
143  libmesh_assert(localized_vectors_it != _localized_vectors.end());
144  return localized_vectors_it->second.first;
145 }

References _localized_vectors, and libMesh::libmesh_assert().

◆ get_qoi_derivatives() [1/4]

std::vector<DenseVector<Number> >& libMesh::DiffContext::get_qoi_derivatives ( )
inline

Non-const accessor for QoI derivatives.

Definition at line 337 of file diff_context.h.

338  { return _elem_qoi_derivative; }

References _elem_qoi_derivative.

◆ get_qoi_derivatives() [2/4]

const std::vector<DenseVector<Number> >& libMesh::DiffContext::get_qoi_derivatives ( ) const
inline

◆ get_qoi_derivatives() [3/4]

DenseSubVector<Number>& libMesh::DiffContext::get_qoi_derivatives ( std::size_t  qoi,
unsigned int  var 
)
inline

Non-const accessor for QoI derivative of a particular qoi and variable corresponding to the index arguments.

Definition at line 356 of file diff_context.h.

357  {
358  libmesh_assert_greater(_elem_qoi_subderivatives.size(), qoi);
359  libmesh_assert_greater(_elem_qoi_subderivatives[qoi].size(), var);
361  return *(_elem_qoi_subderivatives[qoi][var]);
362  }

References _elem_qoi_subderivatives, and libMesh::libmesh_assert().

◆ get_qoi_derivatives() [4/4]

const DenseSubVector<Number>& libMesh::DiffContext::get_qoi_derivatives ( std::size_t  qoi,
unsigned int  var 
) const
inline

Const accessor for QoI derivative of a particular qoi and variable corresponding to the index arguments.

Definition at line 344 of file diff_context.h.

345  {
346  libmesh_assert_greater(_elem_qoi_subderivatives.size(), qoi);
347  libmesh_assert_greater(_elem_qoi_subderivatives[qoi].size(), var);
349  return *(_elem_qoi_subderivatives[qoi][var]);
350  }

References _elem_qoi_subderivatives, and libMesh::libmesh_assert().

◆ get_qois() [1/2]

std::vector<Number>& libMesh::DiffContext::get_qois ( )
inline

Non-const accessor for QoI vector.

Definition at line 325 of file diff_context.h.

326  { return _elem_qoi; }

References _elem_qoi.

◆ get_qois() [2/2]

const std::vector<Number>& libMesh::DiffContext::get_qois ( ) const
inline

Const accessor for QoI vector.

Definition at line 319 of file diff_context.h.

320  { return _elem_qoi; }

References _elem_qoi.

Referenced by LaplaceQoI::element_qoi(), and CoupledSystemQoI::side_qoi().

◆ get_system()

const System& libMesh::DiffContext::get_system ( ) const
inline

◆ get_system_time()

Real libMesh::DiffContext::get_system_time ( ) const
inline

Accessor for the time variable stored in the system class.

Definition at line 415 of file diff_context.h.

416  { return system_time; }

References system_time.

Referenced by libMesh::FEMContext::_update_time_from_system().

◆ get_time()

Real libMesh::DiffContext::get_time ( ) const
inline

Accessor for the time for which the current nonlinear_solution is defined.

Definition at line 421 of file diff_context.h.

422  { return time; }

References time.

◆ is_adjoint() [1/2]

bool& libMesh::DiffContext::is_adjoint ( )
inline

Accessor for setting whether we need to do a primal or adjoint solve.

Definition at line 477 of file diff_context.h.

478  { return _is_adjoint; }

References _is_adjoint.

◆ is_adjoint() [2/2]

bool libMesh::DiffContext::is_adjoint ( ) const
inline

Accessor for querying whether we need to do a primal or adjoint solve.

Definition at line 470 of file diff_context.h.

471  { return _is_adjoint; }

References _is_adjoint.

Referenced by libMesh::FEMSystem::build_context().

◆ n_dof_indices() [1/2]

unsigned int libMesh::DiffContext::n_dof_indices ( ) const
inline

◆ n_dof_indices() [2/2]

unsigned int libMesh::DiffContext::n_dof_indices ( unsigned int  var) const
inline

Total number of dof indices of the particular variable corresponding to the index argument.

Definition at line 406 of file diff_context.h.

407  {
408  libmesh_assert_greater(_dof_indices_var.size(), var);
409  return cast_int<unsigned int>(_dof_indices_var[var].size());
410  }

References _dof_indices_var.

◆ n_vars()

unsigned int libMesh::DiffContext::n_vars ( ) const
inline

◆ nonlocal_reinit()

virtual void libMesh::DiffContext::nonlocal_reinit ( Real  )
inlinevirtual

Gives derived classes the opportunity to reinitialize data needed for nonlocal calculations at a new point within a timestep.

Reimplemented in libMesh::FEMContext.

Definition at line 94 of file diff_context.h.

94 {}

Referenced by libMesh::EulerSolver::nonlocal_residual(), libMesh::Euler2Solver::nonlocal_residual(), and libMesh::NewmarkSolver::nonlocal_residual().

◆ set_deltat_pointer()

void libMesh::DiffContext::set_deltat_pointer ( Real dt)

Points the _deltat member of this class at a timestep value stored in the creating System, for example DiffSystem::deltat.

Definition at line 103 of file diff_context.C.

104 {
105  // We may actually want to be able to set this pointer to nullptr, so
106  // don't report an error for that.
107  _deltat = dt;
108 }

References _deltat.

Referenced by libMesh::FEMSystem::build_context(), libMesh::DifferentiableSystem::build_context(), and libMesh::FEMSystem::init_context().

◆ set_time()

void libMesh::DiffContext::set_time ( Real  time_in)
inline

Set the time for which the current nonlinear_solution is defined.

Definition at line 427 of file diff_context.h.

428  { time = time_in; }

References time.

Referenced by libMesh::FEMContext::_update_time_from_system().

Member Data Documentation

◆ _deltat

Real* libMesh::DiffContext::_deltat
private

Defaults to nullptr, can optionally be used to point to a timestep value in the System-derived class responsible for creating this DiffContext.

In DiffSystem's build_context() function, is assigned to point to the deltat member of that class.

Accessible via public get_deltat()/set_deltat() methods of this class.

Always test for nullptr before using!

Definition at line 653 of file diff_context.h.

Referenced by get_deltat_value(), and set_deltat_pointer().

◆ _dof_indices

std::vector<dof_id_type> libMesh::DiffContext::_dof_indices
protected

Global Degree of freedom index lists.

Definition at line 637 of file diff_context.h.

Referenced by get_dof_indices(), and n_dof_indices().

◆ _dof_indices_var

std::vector<std::vector<dof_id_type> > libMesh::DiffContext::_dof_indices_var
protected

Definition at line 638 of file diff_context.h.

Referenced by get_dof_indices(), n_dof_indices(), and n_vars().

◆ _elem_fixed_solution

DenseVector<Number> libMesh::DiffContext::_elem_fixed_solution
protected

Element by element components of nonlinear_solution at a fixed point in a timestep, for optional use by e.g.

stabilized methods

Definition at line 603 of file diff_context.h.

Referenced by DiffContext(), and get_elem_fixed_solution().

◆ _elem_fixed_subsolutions

std::vector<std::unique_ptr<DenseSubVector<Number> > > libMesh::DiffContext::_elem_fixed_subsolutions
protected

◆ _elem_jacobian

DenseMatrix<Number> libMesh::DiffContext::_elem_jacobian
protected

Element jacobian: derivatives of elem_residual with respect to elem_solution.

Definition at line 615 of file diff_context.h.

Referenced by DiffContext(), and get_elem_jacobian().

◆ _elem_qoi

std::vector<Number> libMesh::DiffContext::_elem_qoi
protected

Element quantity of interest contributions.

Definition at line 620 of file diff_context.h.

Referenced by DiffContext(), and get_qois().

◆ _elem_qoi_derivative

std::vector<DenseVector<Number> > libMesh::DiffContext::_elem_qoi_derivative
protected

Element quantity of interest derivative contributions.

Definition at line 625 of file diff_context.h.

Referenced by DiffContext(), and get_qoi_derivatives().

◆ _elem_qoi_subderivatives

std::vector<std::vector<std::unique_ptr<DenseSubVector<Number> > > > libMesh::DiffContext::_elem_qoi_subderivatives
protected

◆ _elem_residual

DenseVector<Number> libMesh::DiffContext::_elem_residual
protected

Element residual vector.

Definition at line 609 of file diff_context.h.

Referenced by DiffContext(), and get_elem_residual().

◆ _elem_solution

DenseVector<Number> libMesh::DiffContext::_elem_solution
protected

Element by element components of nonlinear_solution as adjusted by a time_solver.

Definition at line 581 of file diff_context.h.

Referenced by DiffContext(), and get_elem_solution().

◆ _elem_solution_accel

DenseVector<Number> libMesh::DiffContext::_elem_solution_accel
protected

Element by element components of du/dt as adjusted by a time_solver.

Definition at line 595 of file diff_context.h.

Referenced by DiffContext(), and get_elem_solution_accel().

◆ _elem_solution_rate

DenseVector<Number> libMesh::DiffContext::_elem_solution_rate
protected

Element by element components of du/dt as adjusted by a time_solver.

Definition at line 588 of file diff_context.h.

Referenced by DiffContext(), and get_elem_solution_rate().

◆ _elem_subjacobians

std::vector<std::vector<std::unique_ptr<DenseSubMatrix<Number> > > > libMesh::DiffContext::_elem_subjacobians
protected

Definition at line 632 of file diff_context.h.

Referenced by DiffContext(), and get_elem_jacobian().

◆ _elem_subresiduals

std::vector<std::unique_ptr<DenseSubVector<Number> > > libMesh::DiffContext::_elem_subresiduals
protected

Element residual subvectors and Jacobian submatrices.

Definition at line 631 of file diff_context.h.

Referenced by DiffContext(), and get_elem_residual().

◆ _elem_subsolution_accels

std::vector<std::unique_ptr<DenseSubVector<Number> > > libMesh::DiffContext::_elem_subsolution_accels
protected

Definition at line 596 of file diff_context.h.

Referenced by DiffContext(), and get_elem_solution_accel().

◆ _elem_subsolution_rates

std::vector<std::unique_ptr<DenseSubVector<Number> > > libMesh::DiffContext::_elem_subsolution_rates
protected

Definition at line 589 of file diff_context.h.

Referenced by DiffContext(), and get_elem_solution_rate().

◆ _elem_subsolutions

std::vector<std::unique_ptr<DenseSubVector<Number> > > libMesh::DiffContext::_elem_subsolutions
protected

◆ _is_adjoint

bool libMesh::DiffContext::_is_adjoint
private

Is this context to be used for a primal or adjoint solve?

Definition at line 663 of file diff_context.h.

Referenced by is_adjoint().

◆ _localized_vectors

std::map<const NumericVector<Number> *, std::pair<DenseVector<Number>, std::vector<std::unique_ptr<DenseSubVector<Number> > > > > libMesh::DiffContext::_localized_vectors
protected

Contains pointers to vectors the user has asked to be localized, keyed with pairs of element localized versions of that vector and per variable views.

Definition at line 575 of file diff_context.h.

Referenced by add_localized_vector(), get_localized_subvector(), get_localized_vector(), and libMesh::FEMContext::pre_fe_reinit().

◆ _system

const System& libMesh::DiffContext::_system
private

A reference to the system this context is constructed with.

Definition at line 658 of file diff_context.h.

Referenced by get_system().

◆ elem_solution_accel_derivative

Real libMesh::DiffContext::elem_solution_accel_derivative

The derivative of elem_solution_accel with respect to the current nonlinear solution, for use by systems with non default mass_residual terms.

Definition at line 514 of file diff_context.h.

Referenced by libMesh::NewmarkSolver::_general_residual(), get_elem_solution_accel_derivative(), and libMesh::FirstOrderUnsteadySolver::prepare_accel().

◆ elem_solution_derivative

Real libMesh::DiffContext::elem_solution_derivative

◆ elem_solution_rate_derivative

Real libMesh::DiffContext::elem_solution_rate_derivative

◆ fixed_solution_derivative

Real libMesh::DiffContext::fixed_solution_derivative

The derivative of elem_fixed_solution with respect to the nonlinear solution, for use by systems constructing jacobians with elem_fixed_solution based methods.

Definition at line 521 of file diff_context.h.

Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::SteadySolver::_general_residual(), and get_fixed_solution_derivative().

◆ system_time

const Real libMesh::DiffContext::system_time

This is the time stored in the System class at the time this context was created, i.e.

the time at the beginning of the current timestep. This value gets set in the constructor and unlike DiffContext::time, is not tweaked mid-timestep by transient solvers: it remains equal to the value it was assigned at construction.

Definition at line 494 of file diff_context.h.

Referenced by get_system_time().

◆ time

Real libMesh::DiffContext::time

For time-dependent problems, this is the time t for which the current nonlinear_solution is defined.

FIXME - this needs to be tweaked mid-timestep by all transient solvers!

Definition at line 485 of file diff_context.h.

Referenced by get_time(), and set_time().


The documentation for this class was generated from the following files:
libMesh::DiffContext::_system
const System & _system
A reference to the system this context is constructed with.
Definition: diff_context.h:658
libMesh::DiffContext::system_time
const Real system_time
This is the time stored in the System class at the time this context was created, i....
Definition: diff_context.h:494
libMesh::DiffContext::_elem_qoi_subderivatives
std::vector< std::vector< std::unique_ptr< DenseSubVector< Number > > > > _elem_qoi_subderivatives
Definition: diff_context.h:626
libMesh::DiffContext::_deltat
Real * _deltat
Defaults to nullptr, can optionally be used to point to a timestep value in the System-derived class ...
Definition: diff_context.h:653
libMesh::DiffContext::_elem_solution_accel
DenseVector< Number > _elem_solution_accel
Element by element components of du/dt as adjusted by a time_solver.
Definition: diff_context.h:595
libMesh::DiffContext::time
Real time
For time-dependent problems, this is the time t for which the current nonlinear_solution is defined.
Definition: diff_context.h:485
libMesh::DiffContext::_elem_residual
DenseVector< Number > _elem_residual
Element residual vector.
Definition: diff_context.h:609
libMesh::DiffContext::_elem_subsolutions
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_subsolutions
Definition: diff_context.h:582
libMesh::DiffContext::_dof_indices_var
std::vector< std::vector< dof_id_type > > _dof_indices_var
Definition: diff_context.h:638
libMesh::DiffContext::_localized_vectors
std::map< const NumericVector< Number > *, std::pair< DenseVector< Number >, std::vector< std::unique_ptr< DenseSubVector< Number > > > > > _localized_vectors
Contains pointers to vectors the user has asked to be localized, keyed with pairs of element localize...
Definition: diff_context.h:575
libMesh::DiffContext::_elem_solution
DenseVector< Number > _elem_solution
Element by element components of nonlinear_solution as adjusted by a time_solver.
Definition: diff_context.h:581
libMesh::DiffContext::_elem_subsolution_rates
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_subsolution_rates
Definition: diff_context.h:589
libMesh::DiffContext::elem_solution_accel_derivative
Real elem_solution_accel_derivative
The derivative of elem_solution_accel with respect to the current nonlinear solution,...
Definition: diff_context.h:514
libMesh::libmesh_assert
libmesh_assert(ctx)
libMesh::DiffContext::_is_adjoint
bool _is_adjoint
Is this context to be used for a primal or adjoint solve?
Definition: diff_context.h:663
libMesh::DiffContext::_elem_fixed_subsolutions
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_fixed_subsolutions
Definition: diff_context.h:604
libMesh::DiffContext::fixed_solution_derivative
Real fixed_solution_derivative
The derivative of elem_fixed_solution with respect to the nonlinear solution, for use by systems cons...
Definition: diff_context.h:521
libMesh::DiffContext::_elem_fixed_solution
DenseVector< Number > _elem_fixed_solution
Element by element components of nonlinear_solution at a fixed point in a timestep,...
Definition: diff_context.h:603
libMesh::DiffContext::_elem_qoi_derivative
std::vector< DenseVector< Number > > _elem_qoi_derivative
Element quantity of interest derivative contributions.
Definition: diff_context.h:625
libMesh::DiffContext::elem_solution_derivative
Real elem_solution_derivative
The derivative of elem_solution with respect to the current nonlinear solution.
Definition: diff_context.h:500
libMesh::DiffContext::_dof_indices
std::vector< dof_id_type > _dof_indices
Global Degree of freedom index lists.
Definition: diff_context.h:637
libMesh::DiffContext::_elem_qoi
std::vector< Number > _elem_qoi
Element quantity of interest contributions.
Definition: diff_context.h:620
libMesh::DiffContext::_elem_solution_rate
DenseVector< Number > _elem_solution_rate
Element by element components of du/dt as adjusted by a time_solver.
Definition: diff_context.h:588
libMesh::DiffContext::_elem_subresiduals
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_subresiduals
Element residual subvectors and Jacobian submatrices.
Definition: diff_context.h:631
libMesh::DiffContext::elem_solution_rate_derivative
Real elem_solution_rate_derivative
The derivative of elem_solution_rate with respect to the current nonlinear solution,...
Definition: diff_context.h:507
libMesh::DiffContext::_elem_subjacobians
std::vector< std::vector< std::unique_ptr< DenseSubMatrix< Number > > > > _elem_subjacobians
Definition: diff_context.h:632
libMesh::DiffContext::_elem_jacobian
DenseMatrix< Number > _elem_jacobian
Element jacobian: derivatives of elem_residual with respect to elem_solution.
Definition: diff_context.h:615
libMesh::DiffContext::_elem_subsolution_accels
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_subsolution_accels
Definition: diff_context.h:596