$extrastylesheet
#include <diff_context.h>

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.
Definition at line 57 of file diff_context.h.
| typedef std::map<const NumericVector<Number>*, std::pair<DenseVector<Number>, std::vector<DenseSubVector<Number>*> > >::iterator libMesh::DiffContext::localized_vectors_iterator |
Typedef for the localized_vectors iterator
Definition at line 480 of file diff_context.h.
| libMesh::DiffContext::DiffContext | ( | const System & | sys | ) | [explicit] |
Constructor. Optionally initializes required data structures.
Definition at line 27 of file diff_context.C.
References _elem_fixed_solution, _elem_fixed_subsolutions, _elem_jacobian, _elem_qoi, _elem_qoi_derivative, _elem_qoi_subderivatives, _elem_residual, _elem_solution, _elem_solution_rate, _elem_subjacobians, _elem_subresiduals, _elem_subsolution_rates, _elem_subsolutions, libMesh::System::n_vars(), libMesh::System::qoi, and libMesh::System::use_fixed_solution.
: time(sys.time), system_time(sys.time), elem_solution_derivative(1.), elem_solution_rate_derivative(1.), fixed_solution_derivative(0.), _dof_indices_var(sys.n_vars()), _deltat(NULL), _system(sys), _is_adjoint(false) { // Finally initialize solution/residual/jacobian data structures unsigned int nv = sys.n_vars(); _elem_subsolutions.reserve(nv); _elem_subresiduals.reserve(nv); _elem_subjacobians.resize(nv); _elem_subsolution_rates.reserve(nv); if (sys.use_fixed_solution) _elem_fixed_subsolutions.reserve(nv); // If the user resizes sys.qoi, it will invalidate us std::size_t n_qoi = sys.qoi.size(); _elem_qoi.resize(n_qoi); _elem_qoi_derivative.resize(n_qoi); _elem_qoi_subderivatives.resize(n_qoi); for (std::size_t q=0; q != n_qoi; ++q) _elem_qoi_subderivatives[q].reserve(nv); for (unsigned int i=0; i != nv; ++i) { _elem_subsolutions.push_back(new DenseSubVector<Number>(_elem_solution)); _elem_subresiduals.push_back(new DenseSubVector<Number>(_elem_residual)); for (std::size_t q=0; q != n_qoi; ++q) _elem_qoi_subderivatives[q].push_back(new DenseSubVector<Number>(_elem_qoi_derivative[q])); _elem_subjacobians[i].reserve(nv); _elem_subsolution_rates.push_back(new DenseSubVector<Number>(_elem_solution_rate)); if (sys.use_fixed_solution) _elem_fixed_subsolutions.push_back (new DenseSubVector<Number>(_elem_fixed_solution)); for (unsigned int j=0; j != nv; ++j) { _elem_subjacobians[i].push_back (new DenseSubMatrix<Number>(_elem_jacobian)); } } }
| libMesh::DiffContext::~DiffContext | ( | ) | [virtual] |
Destructor.
Definition at line 79 of file diff_context.C.
References _elem_fixed_subsolutions, _elem_qoi_subderivatives, _elem_subjacobians, _elem_subresiduals, _elem_subsolution_rates, _elem_subsolutions, and _localized_vectors.
{
for (std::size_t i=0; i != _elem_subsolutions.size(); ++i)
{
delete _elem_subsolutions[i];
delete _elem_subresiduals[i];
for (std::size_t q=0; q != _elem_qoi_subderivatives.size(); ++q)
delete _elem_qoi_subderivatives[q][i];
delete _elem_subsolution_rates[i];
if (!_elem_fixed_subsolutions.empty())
delete _elem_fixed_subsolutions[i];
for (std::size_t j=0; j != _elem_subjacobians[i].size(); ++j)
delete _elem_subjacobians[i][j];
}
// We also need to delete all the DenseSubVectors from the localized_vectors map
// localized_vectors iterators
std::map<const NumericVector<Number>*, std::pair<DenseVector<Number>, std::vector<DenseSubVector<Number>*> > >::iterator localized_vectors_it = _localized_vectors.begin();
std::map<const NumericVector<Number>*, std::pair<DenseVector<Number>, std::vector<DenseSubVector<Number>*> > >::iterator localized_vectors_end = _localized_vectors.end();
// Loop over every localized_vector
for(; localized_vectors_it != localized_vectors_end; ++localized_vectors_it)
{
// Grab the DenseSubVector to be deleted
std::vector<DenseSubVector<Number>* >& localized_vector_dsv = localized_vectors_it->second.second;
// Loop over that vector and delete each entry
for(std::size_t i=0; i != localized_vector_dsv.size(); ++i)
delete localized_vector_dsv[i];
}
}
| 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 129 of file diff_context.C.
References _localized_vectors, and libMesh::System::n_vars().
{
// Make an empty pair keyed with a reference to this _localized_vector
_localized_vectors[&localized_vector] = std::make_pair(DenseVector<Number>(), std::vector<DenseSubVector<Number>*>());
unsigned int nv = sys.n_vars();
_localized_vectors[&localized_vector].second.reserve(nv);
// Fill the DenseSubVector with nv copies of DenseVector
for(unsigned int i=0; i != nv; ++i)
_localized_vectors[&localized_vector].second.push_back(new DenseSubVector<Number>(_localized_vectors[&localized_vector].first));
}
| virtual void libMesh::DiffContext::elem_edge_reinit | ( | Real | ) | [inline, virtual] |
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 90 of file diff_context.h.
{}
| virtual void libMesh::DiffContext::elem_reinit | ( | Real | ) | [inline, virtual] |
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 78 of file diff_context.h.
Referenced by libMesh::EulerSolver::element_residual(), and libMesh::Euler2Solver::element_residual().
{}
| virtual void libMesh::DiffContext::elem_side_reinit | ( | Real | ) | [inline, virtual] |
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 84 of file diff_context.h.
Referenced by libMesh::EulerSolver::side_residual(), and libMesh::Euler2Solver::side_residual().
{}
Returns the value currently pointed to by this class's _deltat member
Definition at line 121 of file diff_context.C.
References _deltat, and libMesh::libmesh_assert().
Referenced by libMesh::FEMContext::_update_time_from_system().
{
libmesh_assert(_deltat);
return *_deltat;
}
| const std::vector<dof_id_type>& libMesh::DiffContext::get_dof_indices | ( | ) | const [inline] |
Accessor for element dof indices
Definition at line 335 of file diff_context.h.
References _dof_indices.
Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::FEMContext::fixed_point_gradient(), libMesh::FEMContext::fixed_point_hessian(), libMesh::FEMContext::fixed_point_value(), libMesh::FEMContext::fixed_side_gradient(), libMesh::FEMContext::fixed_side_hessian(), libMesh::FEMContext::fixed_side_value(), libMesh::FEMContext::interior_curl(), libMesh::FEMContext::interior_div(), libMesh::FEMContext::interior_values(), libMesh::FEMSystem::mesh_position_get(), libMesh::DGFEMContext::neighbor_side_fe_reinit(), 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(), libMesh::FEMContext::side_gradient(), libMesh::FEMContext::side_hessian(), libMesh::FEMContext::side_value(), libMesh::FEMContext::some_interior_gradient(), libMesh::FEMContext::some_interior_hessian(), libMesh::FEMContext::some_interior_value(), and libMesh::FEMContext::some_side_value().
{ return _dof_indices; }
| std::vector<dof_id_type>& libMesh::DiffContext::get_dof_indices | ( | ) | [inline] |
Non-const accessor for element dof indices
Definition at line 341 of file diff_context.h.
References _dof_indices.
{ return _dof_indices; }
| 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 348 of file diff_context.h.
References _dof_indices_var.
{
libmesh_assert_greater(_dof_indices_var.size(), var);
return _dof_indices_var[var];
}
| 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 358 of file diff_context.h.
References _dof_indices_var.
{
libmesh_assert_greater(_dof_indices_var.size(), var);
return _dof_indices_var[var];
}
| const DenseVector<Number>& libMesh::DiffContext::get_elem_fixed_solution | ( | ) | const [inline] |
Accessor for element fixed solution.
Definition at line 183 of file diff_context.h.
References _elem_fixed_solution.
Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::SteadySolver::_general_residual(), libMesh::FEMContext::fixed_point_gradient(), libMesh::FEMContext::fixed_point_hessian(), libMesh::FEMContext::fixed_point_value(), libMesh::FEMContext::fixed_side_gradient(), libMesh::FEMContext::fixed_side_hessian(), libMesh::FEMContext::fixed_side_value(), and libMesh::FEMContext::pre_fe_reinit().
{ return _elem_fixed_solution; }
| DenseVector<Number>& libMesh::DiffContext::get_elem_fixed_solution | ( | ) | [inline] |
Non-const accessor for element fixed solution.
Definition at line 189 of file diff_context.h.
References _elem_fixed_solution.
{ return _elem_fixed_solution; }
| 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 196 of file diff_context.h.
References _elem_fixed_subsolutions, and libMesh::libmesh_assert().
{
libmesh_assert_greater(_elem_fixed_subsolutions.size(), var);
libmesh_assert(_elem_fixed_subsolutions[var]);
return *(_elem_fixed_subsolutions[var]);
}
| 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 207 of file diff_context.h.
References _elem_fixed_subsolutions, and libMesh::libmesh_assert().
{
libmesh_assert_greater(_elem_fixed_subsolutions.size(), var);
libmesh_assert(_elem_fixed_subsolutions[var]);
return *(_elem_fixed_subsolutions[var]);
}
| const DenseMatrix<Number>& libMesh::DiffContext::get_elem_jacobian | ( | ) | const [inline] |
Const accessor for element Jacobian.
Definition at line 251 of file diff_context.h.
References _elem_jacobian.
Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::FEMSystem::assembly(), libMesh::EigenTimeSolver::element_residual(), libMesh::EigenTimeSolver::nonlocal_residual(), libMesh::FEMSystem::numerical_jacobian(), libMesh::FEMContext::pre_fe_reinit(), and libMesh::EigenTimeSolver::side_residual().
{ return _elem_jacobian; }
| DenseMatrix<Number>& libMesh::DiffContext::get_elem_jacobian | ( | ) | [inline] |
Non-const accessor for element Jacobian.
Definition at line 257 of file diff_context.h.
References _elem_jacobian.
{ return _elem_jacobian; }
| 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 264 of file diff_context.h.
References _elem_subjacobians, and libMesh::libmesh_assert().
{
libmesh_assert_greater(_elem_subjacobians.size(), var1);
libmesh_assert_greater(_elem_subjacobians[var1].size(), var2);
libmesh_assert(_elem_subjacobians[var1][var2]);
return *(_elem_subjacobians[var1][var2]);
}
| 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 276 of file diff_context.h.
References _elem_subjacobians, and libMesh::libmesh_assert().
{
libmesh_assert_greater(_elem_subjacobians.size(), var1);
libmesh_assert_greater(_elem_subjacobians[var1].size(), var2);
libmesh_assert(_elem_subjacobians[var1][var2]);
return *(_elem_subjacobians[var1][var2]);
}
| const DenseVector<Number>& libMesh::DiffContext::get_elem_residual | ( | ) | const [inline] |
Const accessor for element residual.
Definition at line 217 of file diff_context.h.
References _elem_residual.
Referenced by libMesh::Euler2Solver::_general_residual(), libMesh::FEMSystem::assembly(), libMesh::FEMSystem::numerical_jacobian(), and libMesh::FEMContext::pre_fe_reinit().
{ return _elem_residual; }
| DenseVector<Number>& libMesh::DiffContext::get_elem_residual | ( | ) | [inline] |
Non-const accessor for element residual.
Definition at line 223 of file diff_context.h.
References _elem_residual.
{ return _elem_residual; }
| 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 230 of file diff_context.h.
References _elem_subresiduals, and libMesh::libmesh_assert().
{
libmesh_assert_greater(_elem_subresiduals.size(), var);
libmesh_assert(_elem_subresiduals[var]);
return *(_elem_subresiduals[var]);
}
| 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 241 of file diff_context.h.
References _elem_subresiduals, and libMesh::libmesh_assert().
{
libmesh_assert_greater(_elem_subresiduals.size(), var);
libmesh_assert(_elem_subresiduals[var]);
return *(_elem_subresiduals[var]);
}
| const DenseVector<Number>& libMesh::DiffContext::get_elem_solution | ( | ) | const [inline] |
Accessor for element solution.
Definition at line 113 of file diff_context.h.
References _elem_solution.
Referenced by libMesh::FEMContext::_do_elem_position_set(), libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::SteadySolver::_general_residual(), libMesh::FEMContext::elem_position_get(), libMesh::FEMContext::interior_curl(), libMesh::FEMContext::interior_div(), libMesh::FEMSystem::mesh_position_get(), 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(), libMesh::FEMContext::side_gradient(), libMesh::FEMContext::side_hessian(), and libMesh::FEMContext::side_value().
{ return _elem_solution; }
| DenseVector<Number>& libMesh::DiffContext::get_elem_solution | ( | ) | [inline] |
Non-const accessor for element solution.
Definition at line 119 of file diff_context.h.
References _elem_solution.
{ return _elem_solution; }
| 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 126 of file diff_context.h.
References _elem_subsolutions, and libMesh::libmesh_assert().
{
libmesh_assert_greater(_elem_subsolutions.size(), var);
libmesh_assert(_elem_subsolutions[var]);
return *(_elem_subsolutions[var]);
}
| 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 137 of file diff_context.h.
References _elem_subsolutions, and libMesh::libmesh_assert().
{
libmesh_assert_greater(_elem_subsolutions.size(), var);
libmesh_assert(_elem_subsolutions[var]);
return *(_elem_subsolutions[var]);
}
| 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 388 of file diff_context.h.
References elem_solution_derivative.
{ return elem_solution_derivative; }
| const DenseVector<Number>& libMesh::DiffContext::get_elem_solution_rate | ( | ) | const [inline] |
Accessor for element solution rate of change w.r.t. time.
Definition at line 147 of file diff_context.h.
References _elem_solution_rate.
Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), and libMesh::FEMContext::pre_fe_reinit().
{ return _elem_solution_rate; }
| 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 154 of file diff_context.h.
References _elem_solution_rate.
{ return _elem_solution_rate; }
| 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 161 of file diff_context.h.
References _elem_subsolution_rates, and libMesh::libmesh_assert().
{
libmesh_assert_greater(_elem_subsolution_rates.size(), var);
libmesh_assert(_elem_subsolution_rates[var]);
return *(_elem_subsolution_rates[var]);
}
| 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 172 of file diff_context.h.
References _elem_subsolution_rates, and libMesh::libmesh_assert().
{
libmesh_assert_greater(_elem_subsolution_rates.size(), var);
libmesh_assert(_elem_subsolution_rates[var]);
return *(_elem_subsolution_rates[var]);
}
| 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 397 of file diff_context.h.
References elem_solution_rate_derivative.
{ return elem_solution_rate_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 406 of file diff_context.h.
References fixed_solution_derivative.
{ return fixed_solution_derivative; }
| 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 159 of file diff_context.C.
References _localized_vectors.
Referenced by libMesh::FEMContext::interior_values().
{
return *_localized_vectors[&localized_vector].second[var];
}
| 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 165 of file diff_context.C.
References _localized_vectors, and libMesh::libmesh_assert().
{
std::map<const NumericVector<Number>*, std::pair<DenseVector<Number>, std::vector<DenseSubVector<Number>*> > >::const_iterator
localized_vectors_it = _localized_vectors.find(&localized_vector);
libmesh_assert(localized_vectors_it != _localized_vectors.end());
return *localized_vectors_it->second.second[var];
}
| 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 144 of file diff_context.C.
References _localized_vectors.
{
return _localized_vectors[&localized_vector].first;
}
| 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 150 of file diff_context.C.
References _localized_vectors, and libMesh::libmesh_assert().
{
std::map<const NumericVector<Number>*, std::pair<DenseVector<Number>, std::vector<DenseSubVector<Number>*> > >::const_iterator
localized_vectors_it = _localized_vectors.find(&localized_vector);
libmesh_assert(localized_vectors_it != _localized_vectors.end());
return localized_vectors_it->second.first;
}
| const std::vector<DenseVector<Number> >& libMesh::DiffContext::get_qoi_derivatives | ( | ) | const [inline] |
Const accessor for QoI derivatives.
Definition at line 299 of file diff_context.h.
References _elem_qoi_derivative.
Referenced by libMesh::FEMContext::pre_fe_reinit().
{ return _elem_qoi_derivative; }
| std::vector<DenseVector<Number> >& libMesh::DiffContext::get_qoi_derivatives | ( | ) | [inline] |
Non-const accessor for QoI derivatives.
Definition at line 305 of file diff_context.h.
References _elem_qoi_derivative.
{ return _elem_qoi_derivative; }
| const DenseSubVector<Number>& libMesh::DiffContext::get_qoi_derivatives | ( | unsigned int | 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 312 of file diff_context.h.
References _elem_qoi_subderivatives, and libMesh::libmesh_assert().
{
libmesh_assert_greater(_elem_qoi_subderivatives.size(), qoi);
libmesh_assert_greater(_elem_qoi_subderivatives[qoi].size(), var);
libmesh_assert(_elem_qoi_subderivatives[qoi][var]);
return *(_elem_qoi_subderivatives[qoi][var]);
}
| DenseSubVector<Number>& libMesh::DiffContext::get_qoi_derivatives | ( | unsigned int | 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 324 of file diff_context.h.
References _elem_qoi_subderivatives, and libMesh::libmesh_assert().
{
libmesh_assert_greater(_elem_qoi_subderivatives.size(), qoi);
libmesh_assert_greater(_elem_qoi_subderivatives[qoi].size(), var);
libmesh_assert(_elem_qoi_subderivatives[qoi][var]);
return *(_elem_qoi_subderivatives[qoi][var]);
}
| const std::vector<Number>& libMesh::DiffContext::get_qois | ( | ) | const [inline] |
Const accessor for QoI vector.
Definition at line 287 of file diff_context.h.
References _elem_qoi.
{ return _elem_qoi; }
| std::vector<Number>& libMesh::DiffContext::get_qois | ( | ) | [inline] |
Non-const accessor for QoI vector.
Definition at line 293 of file diff_context.h.
References _elem_qoi.
{ return _elem_qoi; }
| const System& libMesh::DiffContext::get_system | ( | ) | const [inline] |
Accessor for associated system.
Definition at line 107 of file diff_context.h.
References _system.
Referenced by libMesh::DGFEMContext::neighbor_side_fe_reinit().
{ return _system; }
| Real libMesh::DiffContext::get_system_time | ( | ) | const [inline] |
Accessor for the time variable stored in the system class.
Definition at line 367 of file diff_context.h.
References system_time.
Referenced by libMesh::FEMContext::_update_time_from_system().
{ return system_time; }
| Real libMesh::DiffContext::get_time | ( | ) | const [inline] |
Accessor for the time for which the current nonlinear_solution is defined.
Definition at line 373 of file diff_context.h.
References time.
{ return time; }
| bool libMesh::DiffContext::is_adjoint | ( | ) | const [inline] |
Accessor for querying whether we need to do a primal or adjoint solve
Definition at line 413 of file diff_context.h.
References _is_adjoint.
Referenced by libMesh::FEMSystem::build_context().
{ return _is_adjoint; }
| bool& libMesh::DiffContext::is_adjoint | ( | ) | [inline] |
Accessor for setting whether we need to do a primal or adjoint solve
Definition at line 420 of file diff_context.h.
References _is_adjoint.
{ return _is_adjoint; }
| unsigned int libMesh::DiffContext::n_vars | ( | ) | const [inline] |
Number of variables in solution.
Definition at line 101 of file diff_context.h.
References _dof_indices_var.
{ return cast_int<unsigned int>(_dof_indices_var.size()); }
| virtual void libMesh::DiffContext::nonlocal_reinit | ( | Real | ) | [inline, virtual] |
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 96 of file diff_context.h.
Referenced by libMesh::EulerSolver::nonlocal_residual(), and libMesh::Euler2Solver::nonlocal_residual().
{}
| 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 113 of file diff_context.C.
References _deltat.
Referenced by libMesh::FEMSystem::build_context(), libMesh::DifferentiableSystem::build_context(), and libMesh::FEMSystem::init_context().
{
// We may actually want to be able to set this pointer to NULL, so
// don't report an error for that.
_deltat = dt;
}
| void libMesh::DiffContext::set_time | ( | Real | time_in | ) | [inline] |
Set the time for which the current nonlinear_solution is defined.
Definition at line 379 of file diff_context.h.
References time.
Referenced by libMesh::FEMContext::_update_time_from_system().
{ time = time_in; }
Real* libMesh::DiffContext::_deltat [private] |
Default NULL, 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 NULL before using!
Definition at line 582 of file diff_context.h.
Referenced by get_deltat_value(), and set_deltat_pointer().
std::vector<dof_id_type> libMesh::DiffContext::_dof_indices [protected] |
Global Degree of freedom index lists
Definition at line 566 of file diff_context.h.
Referenced by get_dof_indices().
std::vector<std::vector<dof_id_type> > libMesh::DiffContext::_dof_indices_var [protected] |
Definition at line 567 of file diff_context.h.
Referenced by get_dof_indices(), and n_vars().
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 532 of file diff_context.h.
Referenced by DiffContext(), and get_elem_fixed_solution().
std::vector<DenseSubVector<Number> *> libMesh::DiffContext::_elem_fixed_subsolutions [protected] |
Definition at line 533 of file diff_context.h.
Referenced by DiffContext(), libMesh::FEMContext::fixed_point_gradient(), libMesh::FEMContext::fixed_point_hessian(), libMesh::FEMContext::fixed_point_value(), libMesh::FEMContext::fixed_side_gradient(), libMesh::FEMContext::fixed_side_hessian(), libMesh::FEMContext::fixed_side_value(), get_elem_fixed_solution(), and ~DiffContext().
DenseMatrix<Number> libMesh::DiffContext::_elem_jacobian [protected] |
Element jacobian: derivatives of elem_residual with respect to elem_solution
Definition at line 544 of file diff_context.h.
Referenced by DiffContext(), and get_elem_jacobian().
std::vector<Number> libMesh::DiffContext::_elem_qoi [protected] |
Element quantity of interest contributions
Definition at line 549 of file diff_context.h.
Referenced by DiffContext(), and get_qois().
std::vector<DenseVector<Number> > libMesh::DiffContext::_elem_qoi_derivative [protected] |
Element quantity of interest derivative contributions
Definition at line 554 of file diff_context.h.
Referenced by DiffContext(), and get_qoi_derivatives().
std::vector<std::vector<DenseSubVector<Number> *> > libMesh::DiffContext::_elem_qoi_subderivatives [protected] |
Definition at line 555 of file diff_context.h.
Referenced by DiffContext(), get_qoi_derivatives(), libMesh::FEMContext::pre_fe_reinit(), and ~DiffContext().
DenseVector<Number> libMesh::DiffContext::_elem_residual [protected] |
Element residual vector
Definition at line 538 of file diff_context.h.
Referenced by DiffContext(), and get_elem_residual().
DenseVector<Number> libMesh::DiffContext::_elem_solution [protected] |
Element by element components of nonlinear_solution as adjusted by a time_solver
Definition at line 517 of file diff_context.h.
Referenced by DiffContext(), and get_elem_solution().
DenseVector<Number> libMesh::DiffContext::_elem_solution_rate [protected] |
Element by element components of du/dt as adjusted by a time_solver
Definition at line 524 of file diff_context.h.
Referenced by DiffContext(), and get_elem_solution_rate().
std::vector<std::vector<DenseSubMatrix<Number> *> > libMesh::DiffContext::_elem_subjacobians [protected] |
Definition at line 561 of file diff_context.h.
Referenced by DiffContext(), get_elem_jacobian(), and ~DiffContext().
std::vector<DenseSubVector<Number> *> libMesh::DiffContext::_elem_subresiduals [protected] |
Element residual subvectors and Jacobian submatrices
Definition at line 560 of file diff_context.h.
Referenced by DiffContext(), get_elem_residual(), and ~DiffContext().
std::vector<DenseSubVector<Number> *> libMesh::DiffContext::_elem_subsolution_rates [protected] |
Definition at line 525 of file diff_context.h.
Referenced by DiffContext(), get_elem_solution_rate(), and ~DiffContext().
std::vector<DenseSubVector<Number> *> libMesh::DiffContext::_elem_subsolutions [protected] |
Definition at line 518 of file diff_context.h.
Referenced by DiffContext(), get_elem_solution(), libMesh::FEMContext::interior_curl(), libMesh::FEMContext::interior_div(), libMesh::FEMContext::point_curl(), libMesh::FEMContext::point_gradient(), libMesh::FEMContext::point_hessian(), libMesh::FEMContext::point_value(), libMesh::FEMContext::side_gradient(), libMesh::FEMContext::side_hessian(), libMesh::FEMContext::side_value(), and ~DiffContext().
bool libMesh::DiffContext::_is_adjoint [private] |
Is this context to be used for a primal or adjoint solve?
Definition at line 592 of file diff_context.h.
Referenced by is_adjoint().
std::map<const NumericVector<Number>*, std::pair<DenseVector<Number>, std::vector<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 511 of file diff_context.h.
Referenced by add_localized_vector(), get_localized_subvector(), get_localized_vector(), libMesh::FEMContext::pre_fe_reinit(), and ~DiffContext().
const System& libMesh::DiffContext::_system [private] |
A reference to the system this context is constructed with
Definition at line 587 of file diff_context.h.
Referenced by get_system().
The derivative of elem_solution with respect to the current nonlinear solution.
Definition at line 443 of file diff_context.h.
Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::EigenTimeSolver::element_residual(), get_elem_solution_derivative(), and libMesh::EigenTimeSolver::side_residual().
The derivative of elem_solution_rate with respect to the current nonlinear solution, for use by systems with non default mass_residual terms.
Definition at line 450 of file diff_context.h.
Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::EigenTimeSolver::element_residual(), get_elem_solution_rate_derivative(), and libMesh::EigenTimeSolver::side_residual().
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 457 of file diff_context.h.
Referenced by libMesh::EulerSolver::_general_residual(), libMesh::Euler2Solver::_general_residual(), libMesh::SteadySolver::_general_residual(), and get_fixed_solution_derivative().
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 437 of file diff_context.h.
Referenced by get_system_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 428 of file diff_context.h.
Referenced by get_time(), and set_time().