#include <diff_context.h>
DiffContext (const DifferentiableSystem &)
virtual ~DiffContext ()
virtual void elem_reinit (Real)
virtual void elem_side_reinit (Real)
bool postprocess_sides
Real time
DenseVector< Number > elem_solution
std::vector< DenseSubVector< Number > * > elem_subsolutions
DenseVector< Number > elem_fixed_solution
std::vector< DenseSubVector< Number > * > elem_fixed_subsolutions
bool request_jacobian
Real elem_solution_derivative
Real fixed_solution_derivative
DenseVector< Number > elem_residual
DenseMatrix< Number > elem_jacobian
std::vector< DenseSubVector< Number > * > elem_subresiduals
std::vector< std::vector< DenseSubMatrix< Number > * > > elem_subjacobians
std::vector< unsigned int > dof_indices
std::vector< std::vector< unsigned int > > dof_indices_var
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:
Definition at line 52 of file diff_context.h.
Definition at line 26 of file diff_context.C.
References elem_fixed_solution, elem_fixed_subsolutions, elem_jacobian, elem_residual, elem_solution, elem_subjacobians, elem_subresiduals, elem_subsolutions, System::n_vars(), and DifferentiableSystem::use_fixed_solution.
:
time(sys.time),
elem_solution_derivative(1.),
fixed_solution_derivative(0.),
dof_indices_var(sys.n_vars())
{
// Finally initialize solution/residual/jacobian data structures
unsigned int n_vars = sys.n_vars();
elem_subsolutions.reserve(n_vars);
elem_subresiduals.reserve(n_vars);
elem_subjacobians.resize(n_vars);
if (sys.use_fixed_solution)
elem_fixed_subsolutions.reserve(n_vars);
for (unsigned int i=0; i != n_vars; ++i)
{
elem_subsolutions.push_back(new DenseSubVector<Number>(elem_solution));
elem_subresiduals.push_back(new DenseSubVector<Number>(elem_residual));
elem_subjacobians[i].reserve(n_vars);
if (sys.use_fixed_solution)
elem_fixed_subsolutions.push_back
(new DenseSubVector<Number>(elem_fixed_solution));
for (unsigned int j=0; j != n_vars; ++j)
elem_subjacobians[i].push_back
(new DenseSubMatrix<Number>(elem_jacobian));
}
}
Definition at line 59 of file diff_context.C.
References elem_fixed_subsolutions, elem_subjacobians, elem_subresiduals, and elem_subsolutions.
{
for (unsigned int i=0; i != elem_subsolutions.size(); ++i)
{
delete elem_subsolutions[i];
delete elem_subresiduals[i];
if (!elem_fixed_subsolutions.empty())
delete elem_fixed_subsolutions[i];
for (unsigned int j=0; j != elem_subjacobians[i].size(); ++j)
delete elem_subjacobians[i][j];
}
}
Reimplemented in FEMContext.
Definition at line 78 of file diff_context.h.
Referenced by EulerSolver::element_residual(), and Euler2Solver::element_residual().
{}
Reimplemented in FEMContext.
Definition at line 84 of file diff_context.h.
Referenced by EulerSolver::side_residual(), and Euler2Solver::side_residual().
{}
Definition at line 148 of file diff_context.h.
Referenced by FEMSystem::assemble_qoi_derivative(), FEMSystem::assembly(), EulerSolver::element_residual(), Euler2Solver::element_residual(), FEMContext::fixed_interior_gradient(), FEMContext::fixed_interior_hessian(), FEMContext::fixed_interior_value(), FEMContext::fixed_point_value(), FEMContext::fixed_side_gradient(), FEMContext::fixed_side_hessian(), FEMContext::fixed_side_value(), FEMContext::interior_gradient(), FEMContext::interior_hessian(), FEMContext::interior_value(), FEMSystem::numerical_jacobian(), FEMContext::point_value(), FEMContext::reinit(), FEMContext::side_gradient(), FEMContext::side_hessian(), EulerSolver::side_residual(), Euler2Solver::side_residual(), and FEMContext::side_value().
Definition at line 149 of file diff_context.h.
Referenced by FEMSystem::eulerian_residual(), FEMContext::fixed_interior_gradient(), FEMContext::fixed_interior_hessian(), FEMContext::fixed_interior_value(), FEMContext::fixed_point_value(), FEMContext::fixed_side_gradient(), FEMContext::fixed_side_hessian(), FEMContext::fixed_side_value(), FEMContext::interior_gradient(), FEMContext::interior_hessian(), FEMContext::interior_value(), FEMSystem::mass_residual(), FEMSystem::mesh_position_get(), FEMSystem::numerical_jacobian(), FEMContext::point_value(), FEMContext::reinit(), FEMContext::side_gradient(), FEMContext::side_hessian(), and FEMContext::side_value().
Definition at line 105 of file diff_context.h.
Referenced by DiffContext(), SteadySolver::element_residual(), EulerSolver::element_residual(), Euler2Solver::element_residual(), FEMContext::reinit(), SteadySolver::side_residual(), EulerSolver::side_residual(), and Euler2Solver::side_residual().
Definition at line 106 of file diff_context.h.
Referenced by DiffContext(), FEMContext::fixed_interior_gradient(), FEMContext::fixed_interior_hessian(), FEMContext::fixed_interior_value(), FEMContext::fixed_point_value(), FEMContext::fixed_side_gradient(), FEMContext::fixed_side_hessian(), FEMContext::fixed_side_value(), FEMContext::reinit(), and ~DiffContext().
Definition at line 137 of file diff_context.h.
Referenced by FEMSystem::assembly(), DiffContext(), EulerSolver::element_residual(), Euler2Solver::element_residual(), FEMSystem::numerical_jacobian(), FEMContext::reinit(), EulerSolver::side_residual(), and Euler2Solver::side_residual().
Definition at line 131 of file diff_context.h.
Referenced by FEMSystem::assemble_qoi_derivative(), FEMSystem::assembly(), DiffContext(), EulerSolver::element_residual(), Euler2Solver::element_residual(), FEMSystem::numerical_jacobian(), FEMContext::reinit(), EulerSolver::side_residual(), and Euler2Solver::side_residual().
Definition at line 97 of file diff_context.h.
Referenced by DiffContext(), SteadySolver::element_residual(), EulerSolver::element_residual(), Euler2Solver::element_residual(), FEMSystem::numerical_jacobian(), FEMContext::reinit(), SteadySolver::side_residual(), EulerSolver::side_residual(), and Euler2Solver::side_residual().
Definition at line 119 of file diff_context.h.
Referenced by EulerSolver::element_residual(), Euler2Solver::element_residual(), FEMSystem::mass_residual(), EulerSolver::side_residual(), and Euler2Solver::side_residual().
Definition at line 143 of file diff_context.h.
Referenced by DiffContext(), FEMSystem::eulerian_residual(), FEMSystem::mass_residual(), FEMContext::reinit(), and ~DiffContext().
Definition at line 142 of file diff_context.h.
Referenced by DiffContext(), FEMSystem::eulerian_residual(), FEMSystem::mass_residual(), FEMContext::reinit(), and ~DiffContext().
Definition at line 98 of file diff_context.h.
Referenced by DiffContext(), FEMContext::elem_position_get(), FEMContext::elem_position_set(), FEMContext::interior_gradient(), FEMContext::interior_hessian(), FEMContext::interior_value(), FEMSystem::mesh_position_get(), FEMContext::point_value(), FEMContext::reinit(), FEMContext::side_gradient(), FEMContext::side_hessian(), FEMContext::side_value(), and ~DiffContext().
Definition at line 126 of file diff_context.h.
Referenced by SteadySolver::element_residual(), EulerSolver::element_residual(), Euler2Solver::element_residual(), SteadySolver::side_residual(), EulerSolver::side_residual(), and Euler2Solver::side_residual().
Definition at line 71 of file diff_context.h.
Definition at line 112 of file diff_context.h.
Definition at line 91 of file diff_context.h.
Generated automatically by Doxygen for libMesh from the source code.