libMesh
diff_context.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2019 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 
20 #ifndef LIBMESH_DIFF_CONTEXT_H
21 #define LIBMESH_DIFF_CONTEXT_H
22 
23 // Local Includes
24 #include "libmesh/dense_matrix.h"
25 #include "libmesh/dense_submatrix.h"
26 #include "libmesh/dense_subvector.h"
27 #include "libmesh/dense_vector.h"
28 #include "libmesh/id_types.h"
29 
30 // C++ includes
31 #include <cstddef>
32 #include <map>
33 #include <vector>
34 #include <memory>
35 
36 namespace libMesh
37 {
38 
39 // Forward declarations
40 template <typename T> class NumericVector;
41 class System;
42 
56 {
57 public:
58 
63  explicit
64  DiffContext (const System &);
65 
69  virtual ~DiffContext ();
70 
76  virtual void elem_reinit(Real /* theta */) {}
77 
82  virtual void elem_side_reinit(Real /* theta */) {}
83 
88  virtual void elem_edge_reinit(Real /* theta */) {}
89 
94  virtual void nonlocal_reinit(Real /* theta */) {}
95 
99  unsigned int n_vars() const
100  { return cast_int<unsigned int>(_dof_indices_var.size()); }
101 
105  const System & get_system() const
106  { return _system; }
107 
112  { return _elem_solution; }
113 
118  { return _elem_solution; }
119 
124  const DenseSubVector<Number> & get_elem_solution( unsigned int var ) const
125  {
126  libmesh_assert_greater(_elem_subsolutions.size(), var);
128  return *(_elem_subsolutions[var]);
129  }
130 
136  {
137  libmesh_assert_greater(_elem_subsolutions.size(), var);
139  return *(_elem_subsolutions[var]);
140  }
141 
146  { return _elem_solution_rate; }
147 
153  { return _elem_solution_rate; }
154 
159  const DenseSubVector<Number> & get_elem_solution_rate( unsigned int var ) const
160  {
161  libmesh_assert_greater(_elem_subsolution_rates.size(), var);
163  return *(_elem_subsolution_rates[var]);
164  }
165 
171  {
172  libmesh_assert_greater(_elem_subsolution_rates.size(), var);
174  return *(_elem_subsolution_rates[var]);
175  }
176 
181  { return _elem_solution_accel; }
182 
188  { return _elem_solution_accel; }
189 
194  const DenseSubVector<Number> & get_elem_solution_accel( unsigned int var ) const
195  {
196  libmesh_assert_greater(_elem_subsolution_accels.size(), var);
198  return *(_elem_subsolution_accels[var]);
199  }
200 
206  {
207  libmesh_assert_greater(_elem_subsolution_accels.size(), var);
209  return *(_elem_subsolution_accels[var]);
210  }
211 
216  { return _elem_fixed_solution; }
217 
222  { return _elem_fixed_solution; }
223 
228  const DenseSubVector<Number> & get_elem_fixed_solution( unsigned int var ) const
229  {
230  libmesh_assert_greater(_elem_fixed_subsolutions.size(), var);
232  return *(_elem_fixed_subsolutions[var]);
233  }
234 
240  {
241  libmesh_assert_greater(_elem_fixed_subsolutions.size(), var);
243  return *(_elem_fixed_subsolutions[var]);
244  }
245 
250  { return _elem_residual; }
251 
256  { return _elem_residual; }
257 
262  const DenseSubVector<Number> & get_elem_residual( unsigned int var ) const
263  {
264  libmesh_assert_greater(_elem_subresiduals.size(), var);
266  return *(_elem_subresiduals[var]);
267  }
268 
274  {
275  libmesh_assert_greater(_elem_subresiduals.size(), var);
277  return *(_elem_subresiduals[var]);
278  }
279 
284  { return _elem_jacobian; }
285 
290  { return _elem_jacobian; }
291 
296  const DenseSubMatrix<Number> & get_elem_jacobian( unsigned int var1, unsigned int var2 ) const
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  }
303 
308  DenseSubMatrix<Number> & get_elem_jacobian( unsigned int var1, unsigned int var2 )
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  }
315 
319  const std::vector<Number> & get_qois() const
320  { return _elem_qoi; }
321 
325  std::vector<Number> & get_qois()
326  { return _elem_qoi; }
327 
331  const std::vector<DenseVector<Number>> & get_qoi_derivatives() const
332  { return _elem_qoi_derivative; }
333 
337  std::vector<DenseVector<Number>> & get_qoi_derivatives()
338  { return _elem_qoi_derivative; }
339 
344  const DenseSubVector<Number> & get_qoi_derivatives( std::size_t qoi, unsigned int var ) const
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  }
351 
356  DenseSubVector<Number> & get_qoi_derivatives( std::size_t qoi, unsigned int var )
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  }
363 
367  const std::vector<dof_id_type> & get_dof_indices() const
368  { return _dof_indices; }
369 
373  std::vector<dof_id_type> & get_dof_indices()
374  { return _dof_indices; }
375 
380  const std::vector<dof_id_type> & get_dof_indices( unsigned int var ) const
381  {
382  libmesh_assert_greater(_dof_indices_var.size(), var);
383  return _dof_indices_var[var];
384  }
385 
390  std::vector<dof_id_type> & get_dof_indices( unsigned int var )
391  {
392  libmesh_assert_greater(_dof_indices_var.size(), var);
393  return _dof_indices_var[var];
394  }
395 
399  unsigned int n_dof_indices() const
400  { return cast_int<unsigned int>(_dof_indices.size()); }
401 
406  unsigned int n_dof_indices( unsigned int var ) const
407  {
408  libmesh_assert_greater(_dof_indices_var.size(), var);
409  return cast_int<unsigned int>(_dof_indices_var[var].size());
410  }
411 
416  { return system_time; }
417 
421  Real get_time() const
422  { return time; }
423 
427  void set_time( Real time_in )
428  { time = time_in; }
429 
437  { return elem_solution_derivative; }
438 
447 
456 
464  { return fixed_solution_derivative; }
465 
470  bool is_adjoint() const
471  { return _is_adjoint; }
472 
477  bool & is_adjoint()
478  { return _is_adjoint; }
479 
486 
495 
501 
508 
515 
522 
527  void set_deltat_pointer(Real * dt);
528 
534 
539  void add_localized_vector (NumericVector<Number> & localized_vector, const System & sys);
540 
544  typedef std::map<const NumericVector<Number> *, std::pair<DenseVector<Number>, std::vector<std::unique_ptr<DenseSubVector<Number>>>>>::iterator localized_vectors_iterator;
545 
551 
555  const DenseVector<Number> & get_localized_vector (const NumericVector<Number> & localized_vector) const;
556 
561  DenseSubVector<Number> & get_localized_subvector (const NumericVector<Number> & localized_vector, unsigned int var);
562 
566  const DenseSubVector<Number> & get_localized_subvector (const NumericVector<Number> & localized_vector, unsigned int var) const;
567 
568 protected:
569 
575  std::map<const NumericVector<Number> *, std::pair<DenseVector<Number>, std::vector<std::unique_ptr<DenseSubVector<Number>>>>> _localized_vectors;
576 
582  std::vector<std::unique_ptr<DenseSubVector<Number>>> _elem_subsolutions;
583 
589  std::vector<std::unique_ptr<DenseSubVector<Number>>> _elem_subsolution_rates;
590 
596  std::vector<std::unique_ptr<DenseSubVector<Number>>> _elem_subsolution_accels;
597 
604  std::vector<std::unique_ptr<DenseSubVector<Number>>> _elem_fixed_subsolutions;
605 
610 
616 
620  std::vector<Number> _elem_qoi;
621 
625  std::vector<DenseVector<Number>> _elem_qoi_derivative;
626  std::vector<std::vector<std::unique_ptr<DenseSubVector<Number>>>> _elem_qoi_subderivatives;
627 
631  std::vector<std::unique_ptr<DenseSubVector<Number>>> _elem_subresiduals;
632  std::vector<std::vector<std::unique_ptr<DenseSubMatrix<Number>>>> _elem_subjacobians;
633 
637  std::vector<dof_id_type> _dof_indices;
638  std::vector<std::vector<dof_id_type>> _dof_indices_var;
639 
640 private:
641 
654 
658  const System & _system;
659 
664 
665 };
666 
667 } // namespace libMesh
668 
669 
670 #endif // LIBMESH_DIFF_CONTEXT_H
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::System
Manages consistently variables, degrees of freedom, and coefficient vectors.
Definition: system.h:100
libMesh::DiffContext::_elem_qoi_subderivatives
std::vector< std::vector< std::unique_ptr< DenseSubVector< Number > > > > _elem_qoi_subderivatives
Definition: diff_context.h:626
libMesh::DiffContext::get_elem_residual
const DenseVector< Number > & get_elem_residual() const
Const accessor for element residual.
Definition: diff_context.h:249
libMesh::DiffContext::get_localized_subvector
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 th...
Definition: diff_context.C:148
libMesh::DiffContext::DiffContext
DiffContext(const System &)
Constructor.
Definition: diff_context.C:30
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::get_dof_indices
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.
Definition: diff_context.h:380
libMesh::DiffContext::get_dof_indices
const std::vector< dof_id_type > & get_dof_indices() const
Accessor for element dof indices.
Definition: diff_context.h:367
libMesh::DiffContext::get_qoi_derivatives
std::vector< DenseVector< Number > > & get_qoi_derivatives()
Non-const accessor for QoI derivatives.
Definition: diff_context.h:337
libMesh::DiffContext::set_time
void set_time(Real time_in)
Set the time for which the current nonlinear_solution is defined.
Definition: diff_context.h:427
libMesh::DiffContext::elem_reinit
virtual void elem_reinit(Real)
Gives derived classes the opportunity to reinitialize data (FE objects in FEMSystem,...
Definition: diff_context.h:76
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::DenseSubMatrix
Defines a dense submatrix for use in Finite Element-type computations.
Definition: dense_submatrix.h:45
libMesh::DiffContext::get_elem_jacobian
DenseMatrix< Number > & get_elem_jacobian()
Non-const accessor for element Jacobian.
Definition: diff_context.h:289
libMesh::DiffContext::get_elem_residual
const DenseSubVector< Number > & get_elem_residual(unsigned int var) const
Const accessor for element residual of a particular variable corresponding to the variable index argu...
Definition: diff_context.h:262
libMesh
The libMesh namespace provides an interface to certain functionality in the library.
Definition: factoryfunction.C:55
libMesh::DiffContext::n_vars
unsigned int n_vars() const
Number of variables in solution.
Definition: diff_context.h:99
libMesh::DiffContext::get_elem_solution_derivative
Real get_elem_solution_derivative() const
The derivative of the current elem_solution w.r.t.
Definition: diff_context.h:436
libMesh::DiffContext::is_adjoint
bool is_adjoint() const
Accessor for querying whether we need to do a primal or adjoint solve.
Definition: diff_context.h:470
libMesh::DiffContext::get_system
const System & get_system() const
Accessor for associated system.
Definition: diff_context.h:105
libMesh::DiffContext::get_elem_residual
DenseSubVector< Number > & get_elem_residual(unsigned int var)
Non-const accessor for element residual of a particular variable corresponding to the variable index ...
Definition: diff_context.h:273
libMesh::DiffContext::get_elem_fixed_solution
DenseVector< Number > & get_elem_fixed_solution()
Non-const accessor for element fixed solution.
Definition: diff_context.h:221
libMesh::DiffContext::_elem_residual
DenseVector< Number > _elem_residual
Element residual vector.
Definition: diff_context.h:609
libMesh::DenseMatrix< Number >
libMesh::DiffContext::get_localized_vector
DenseVector< Number > & get_localized_vector(const NumericVector< Number > &localized_vector)
Return a reference to DenseVector localization of localized_vector contained in the _localized_vector...
Definition: diff_context.C:134
libMesh::DiffContext::_elem_subsolutions
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_subsolutions
Definition: diff_context.h:582
libMesh::DiffContext::get_elem_residual
DenseVector< Number > & get_elem_residual()
Non-const accessor for element residual.
Definition: diff_context.h:255
libMesh::DiffContext::nonlocal_reinit
virtual void nonlocal_reinit(Real)
Gives derived classes the opportunity to reinitialize data needed for nonlocal calculations at a new ...
Definition: diff_context.h:94
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::n_dof_indices
unsigned int n_dof_indices(unsigned int var) const
Total number of dof indices of the particular variable corresponding to the index argument.
Definition: diff_context.h:406
libMesh::DiffContext::get_qois
const std::vector< Number > & get_qois() const
Const accessor for QoI vector.
Definition: diff_context.h:319
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::get_elem_solution_rate
DenseVector< Number > & get_elem_solution_rate()
Non-const accessor for element solution rate of change w.r.t.
Definition: diff_context.h:152
libMesh::NumericVector< Number >
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::get_elem_solution
const DenseSubVector< Number > & get_elem_solution(unsigned int var) const
Accessor for element solution of a particular variable corresponding to the variable index argument.
Definition: diff_context.h:124
libMesh::DiffContext::get_qoi_derivatives
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 arg...
Definition: diff_context.h:356
libMesh::DiffContext::localized_vectors_iterator
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.
Definition: diff_context.h:544
libMesh::DiffContext::get_qoi_derivatives
const std::vector< DenseVector< Number > > & get_qoi_derivatives() const
Const accessor for QoI derivatives.
Definition: diff_context.h:331
libMesh::DiffContext::get_elem_solution_accel
DenseVector< Number > & get_elem_solution_accel()
Non-const accessor for element solution accel of change w.r.t.
Definition: diff_context.h:187
libMesh::DiffContext::get_elem_solution_accel
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 arg...
Definition: diff_context.h:194
libMesh::DiffContext::get_system_time
Real get_system_time() const
Accessor for the time variable stored in the system class.
Definition: diff_context.h:415
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::set_deltat_pointer
void set_deltat_pointer(Real *dt)
Points the _deltat member of this class at a timestep value stored in the creating System,...
Definition: diff_context.C:103
libMesh::DiffContext::_elem_fixed_subsolutions
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_fixed_subsolutions
Definition: diff_context.h:604
libMesh::DiffContext::get_elem_jacobian
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 a...
Definition: diff_context.h:308
libMesh::DiffContext::get_elem_solution_rate
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 argu...
Definition: diff_context.h:159
libMesh::DiffContext::n_dof_indices
unsigned int n_dof_indices() const
Total number of dof indices on the element.
Definition: diff_context.h:399
libMesh::DiffContext::get_dof_indices
std::vector< dof_id_type > & get_dof_indices()
Non-const accessor for element dof indices.
Definition: diff_context.h:373
libMesh::DiffContext::get_elem_jacobian
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 argum...
Definition: diff_context.h:296
libMesh::DiffContext::is_adjoint
bool & is_adjoint()
Accessor for setting whether we need to do a primal or adjoint solve.
Definition: diff_context.h:477
libMesh::DiffContext::get_elem_solution_accel
DenseSubVector< Number > & get_elem_solution_accel(unsigned int var)
Accessor for element solution accel for a particular variable corresponding to the variable index arg...
Definition: diff_context.h:205
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::get_elem_solution_rate_derivative
Real get_elem_solution_rate_derivative() const
The derivative of the current elem_solution_rate w.r.t.
Definition: diff_context.h:445
libMesh::DiffContext
This class provides all data required for a physics package (e.g.
Definition: diff_context.h:55
libMesh::DiffContext::get_qoi_derivatives
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 argumen...
Definition: diff_context.h:344
libMesh::DiffContext::get_elem_fixed_solution
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 argu...
Definition: diff_context.h:228
libMesh::DenseSubVector< Number >
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::get_fixed_solution_derivative
Real get_fixed_solution_derivative() const
The derivative of the current fixed_elem_solution w.r.t.
Definition: diff_context.h:463
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::get_elem_jacobian
const DenseMatrix< Number > & get_elem_jacobian() const
Const accessor for element Jacobian.
Definition: diff_context.h:283
libMesh::DiffContext::get_elem_solution
const DenseVector< Number > & get_elem_solution() const
Accessor for element solution.
Definition: diff_context.h:111
libMesh::DiffContext::get_elem_solution
DenseSubVector< Number > & get_elem_solution(unsigned int var)
Accessor for element solution of a particular variable corresponding to the variable index argument.
Definition: diff_context.h:135
libMesh::DiffContext::get_elem_solution
DenseVector< Number > & get_elem_solution()
Non-const accessor for element solution.
Definition: diff_context.h:117
libMesh::DiffContext::get_elem_fixed_solution
const DenseVector< Number > & get_elem_fixed_solution() const
Accessor for element fixed solution.
Definition: diff_context.h:215
libMesh::DiffContext::get_dof_indices
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.
Definition: diff_context.h:390
libMesh::DiffContext::elem_edge_reinit
virtual void elem_edge_reinit(Real)
Gives derived classes the opportunity to reinitialize data needed for an edge integration at a new po...
Definition: diff_context.h:88
libMesh::DiffContext::get_elem_solution_rate
const DenseVector< Number > & get_elem_solution_rate() const
Accessor for element solution rate of change w.r.t.
Definition: diff_context.h:145
libMesh::Real
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Definition: libmesh_common.h:121
libMesh::DiffContext::_elem_subjacobians
std::vector< std::vector< std::unique_ptr< DenseSubMatrix< Number > > > > _elem_subjacobians
Definition: diff_context.h:632
libMesh::DiffContext::get_deltat_value
Real get_deltat_value()
Definition: diff_context.C:111
libMesh::DiffContext::~DiffContext
virtual ~DiffContext()
Destructor.
Definition: diff_context.C:98
libMesh::DiffContext::get_time
Real get_time() const
Accessor for the time for which the current nonlinear_solution is defined.
Definition: diff_context.h:421
libMesh::DiffContext::get_elem_solution_accel_derivative
Real get_elem_solution_accel_derivative() const
The derivative of the current elem_solution_accel w.r.t.
Definition: diff_context.h:454
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::add_localized_vector
void add_localized_vector(NumericVector< Number > &localized_vector, const System &sys)
Adds a vector to the map of localized vectors.
Definition: diff_context.C:119
libMesh::DiffContext::get_qois
std::vector< Number > & get_qois()
Non-const accessor for QoI vector.
Definition: diff_context.h:325
libMesh::DiffContext::get_elem_solution_accel
const DenseVector< Number > & get_elem_solution_accel() const
Accessor for element solution accel of change w.r.t.
Definition: diff_context.h:180
libMesh::DiffContext::_elem_subsolution_accels
std::vector< std::unique_ptr< DenseSubVector< Number > > > _elem_subsolution_accels
Definition: diff_context.h:596
libMesh::DiffContext::elem_side_reinit
virtual void elem_side_reinit(Real)
Gives derived classes the opportunity to reinitialize data needed for a side integration at a new poi...
Definition: diff_context.h:82
libMesh::DenseVector< Number >
libMesh::DiffContext::get_elem_fixed_solution
DenseSubVector< Number > & get_elem_fixed_solution(unsigned int var)
Accessor for element fixed solution of a particular variable corresponding to the variable index argu...
Definition: diff_context.h:239
libMesh::DiffContext::get_elem_solution_rate
DenseSubVector< Number > & get_elem_solution_rate(unsigned int var)
Accessor for element solution rate for a particular variable corresponding to the variable index argu...
Definition: diff_context.h:170