The OldSolutionValue input functor class can be used with GenericProjector to read values from a solution on a just-refined-and-coarsened mesh.
More...
#include <generic_projector.h>
|
| OldSolutionValue (const libMesh::System &sys_in, const NumericVector< Number > &old_sol) |
|
| OldSolutionValue (const OldSolutionValue &in) |
|
Output | eval_at_node (const FEMContext &c, unsigned int i, unsigned int elem_dim, const Node &n, bool, Real=0.) |
|
Output | eval_at_point (const FEMContext &c, unsigned int i, const Point &p, Real=0.) |
|
void | eval_old_dofs (const Elem &elem, unsigned int node_num, unsigned int var_num, std::vector< dof_id_type > &indices, std::vector< Output > &values) |
|
void | eval_old_dofs (const Elem &elem, const FEType &fe_type, unsigned int sys_num, unsigned int var_num, std::vector< dof_id_type > &indices, std::vector< Output > &values) |
|
template<> |
Number | eval_at_node (const FEMContext &c, unsigned int i, unsigned int, const Node &n, bool extra_hanging_dofs, Real) |
|
template<> |
Gradient | eval_at_node (const FEMContext &c, unsigned int i, unsigned int elem_dim, const Node &n, bool extra_hanging_dofs, Real) |
|
template<> |
void | get_shape_outputs (FEBase &fe) |
|
template<> |
void | get_shape_outputs (FEBase &fe) |
|
template<> |
void | get_shape_outputs (FEBase &fe) |
|
template<> |
void | get_shape_outputs (FEBase &fe) |
|
void | init_context (FEMContext &c) |
|
bool | is_grid_projection () |
|
template<typename Output, void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
class libMesh::OldSolutionValue< Output, point_output >
The OldSolutionValue input functor class can be used with GenericProjector to read values from a solution on a just-refined-and-coarsened mesh.
- Author
- Roy H. Stogner
- Date
- 2016
Definition at line 655 of file generic_projector.h.
◆ OldSolutionValue() [1/2]
template<typename Output, void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ OldSolutionValue() [2/2]
template<typename Output, void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ check_old_context() [1/2]
template<typename Output , void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ check_old_context() [2/2]
template<typename Output , void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
Definition at line 565 of file generic_projector.h.
567 LOG_SCOPE (
"check_old_context(c,p)",
"OldSolutionBase");
568 const Elem & elem = c.get_elem();
586 for (
auto & child : elem.child_ref_range())
587 if (child.close_to_point(p, master_tol))
598 if (!elem.old_dof_object)
614 libmesh_assert_equal_to
617 for (
auto & child : elem.child_ref_range())
618 if (child.close_to_point(p, master_tol))
References libMesh::Elem::child_ref_range(), libMesh::FEMContext::get_elem(), libMesh::Elem::hmax(), libMesh::Elem::JUST_COARSENED, libMesh::Elem::JUST_REFINED, libMesh::libmesh_assert(), libMesh::DofObject::old_dof_object, libMesh::Elem::parent(), libMesh::Real, and libMesh::Elem::refinement_flag().
◆ eval_at_node() [1/3]
Definition at line 875 of file generic_projector.h.
882 LOG_SCOPE (
"Gradient eval_at_node()",
"OldSolutionValue");
885 libmesh_assert_less(c.get_elem().get_node_index(&n),
886 c.get_elem().n_vertices());
904 if (n.old_dof_object &&
905 (!extra_hanging_dofs ||
908 n.old_dof_object->n_vars(
sys.
number()) &&
909 n.old_dof_object->n_comp(
sys.
number(), var))
912 for (
unsigned int d = 0; d != elem_dim; ++d)
915 n.old_dof_object->dof_number(
sys.
number(), var, d+1);
References libMesh::Elem::DO_NOTHING, libMesh::DofObject::dof_number(), libMesh::FEMContext::get_elem(), libMesh::Elem::get_node_index(), libMesh::Elem::JUST_COARSENED, libMesh::DofObject::n_comp(), libMesh::DofObject::n_vars(), libMesh::Elem::n_vertices(), libMesh::DofObject::old_dof_object, and libMesh::Elem::refinement_flag().
◆ eval_at_node() [2/3]
template<typename Output, void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ eval_at_node() [3/3]
Definition at line 825 of file generic_projector.h.
832 LOG_SCOPE (
"Number eval_at_node()",
"OldSolutionValue");
835 libmesh_assert_less(c.get_elem().get_node_index(&n),
836 c.get_elem().n_vertices());
854 if (n.old_dof_object &&
855 (!extra_hanging_dofs ||
858 n.old_dof_object->n_vars(
sys.
number()) &&
859 n.old_dof_object->n_comp(
sys.
number(), var))
862 n.old_dof_object->dof_number(
sys.
number(), var, 0);
References libMesh::Elem::DO_NOTHING, libMesh::DofObject::dof_number(), libMesh::FEMContext::get_elem(), libMesh::Elem::get_node_index(), libMesh::Elem::JUST_COARSENED, libMesh::DofObject::n_comp(), libMesh::DofObject::n_vars(), libMesh::Elem::n_vertices(), libMesh::DofObject::old_dof_object, and libMesh::Elem::refinement_flag().
◆ eval_at_point()
template<typename Output, void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ eval_old_dofs() [1/2]
template<typename Output, void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
Definition at line 724 of file generic_projector.h.
731 LOG_SCOPE (
"eval_old_dofs(elem)",
"OldSolutionValue");
735 const Elem & old_elem =
737 *elem.parent() : elem;
744 std::vector<dof_id_type> old_dof_indices(nc);
754 const std::pair<unsigned int, unsigned int>
755 vg_and_offset = elem.var_to_vg_and_offset(sys_num,var_num);
756 const unsigned int vg = vg_and_offset.first;
757 const unsigned int vig = vg_and_offset.second;
759 const unsigned int n_comp = elem.n_comp_group(sys_num,vg);
760 libmesh_assert_greater(elem.n_systems(), sys_num);
761 libmesh_assert_greater_equal(n_comp, nc);
763 for (
unsigned int i=0; i<nc; i++)
766 old_elem.old_dof_object->dof_number(sys_num, vg, vig, i, n_comp);
768 elem.dof_number(sys_num, vg, vig, i, n_comp);
772 old_dof_indices[i] = d_old;
References libMesh::Elem::dim(), libMesh::DofObject::dof_number(), libMesh::DofObject::invalid_id, libMesh::Elem::JUST_REFINED, libMesh::libmesh_assert(), libMesh::DofObject::n_comp_group(), libMesh::FEInterface::n_dofs_per_elem(), libMesh::DofObject::n_systems(), libMesh::DofObject::old_dof_object, libMesh::Elem::parent(), libMesh::Elem::refinement_flag(), libMesh::Elem::type(), and libMesh::DofObject::var_to_vg_and_offset().
◆ eval_old_dofs() [2/2]
template<typename Output, void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
Definition at line 702 of file generic_projector.h.
708 LOG_SCOPE (
"eval_old_dofs(node)",
"OldSolutionValue");
712 std::vector<dof_id_type> old_indices;
716 libmesh_assert_equal_to (old_indices.size(), indices.size());
718 values.resize(old_indices.size());
◆ get_shape_outputs() [1/5]
template<typename Output , void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ get_shape_outputs() [2/5]
◆ get_shape_outputs() [3/5]
◆ get_shape_outputs() [4/5]
◆ get_shape_outputs() [5/5]
◆ init_context()
template<typename Output , void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ is_grid_projection()
template<typename Output , void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ out_of_elem_tol() [1/4]
◆ out_of_elem_tol() [2/4]
◆ out_of_elem_tol() [3/4]
◆ out_of_elem_tol() [4/4]
◆ component_to_var
template<typename Output , void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ last_elem
template<typename Output , void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ old_context
template<typename Output , void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ old_solution
template<typename Output, void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ out_of_elem_tol
template<typename Output , void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
◆ sys
template<typename Output , void(FEMContext::*)(unsigned int, const Point &, Output &, const Real) const point_output>
The documentation for this class was generated from the following file:
const NumericVector< Number > & old_solution
unsigned int n_vars() const
Output eval_at_point(const FEMContext &c, unsigned int i, const Point &p, Real=0.)
virtual bool close_to_point(const Point &p, Real tol) const
void dof_indices(const Elem *const elem, std::vector< dof_id_type > &di) const
Fills the vector di with the global degree of freedom indices for the element.
virtual void pre_fe_reinit(const System &, const Elem *e)
Reinitializes local data vectors/matrices on the current geometric element.
const Elem & get_elem() const
Accessor for current Elem object.
unsigned int number() const
RefinementState
Enumeration of possible element refinement states.
void set_custom_solution(const NumericVector< Number > *custom_sol)
Set a NumericVector to be used in place of current_local_solution for calculating elem_solution.
std::vector< unsigned int > component_to_var
void old_dof_indices(const Elem &elem, unsigned int n, std::vector< dof_id_type > &di, const unsigned int vn) const
Appends to the vector di the old global degree of freedom indices for elem.node_ref(n),...
static unsigned int n_dofs_per_elem(const unsigned int dim, const FEType &fe_t, const ElemType t)
bool has_elem() const
Test for current Elem object.
FEGenericBase< Real > FEBase
void check_old_context(const FEMContext &c)
static const dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
NumberVectorValue Gradient
void get_element_fe(unsigned int var, FEGenericBase< OutputShape > *&fe) const
Accessor for interior finite element object for variable var for the largest dimension in the mesh.
const Real out_of_elem_tol
void set_algebraic_type(const AlgebraicType atype)
Setting which determines whether to initialize algebraic structures (elem_*) on each element and set ...
virtual void get(const std::vector< numeric_index_type > &index, T *values) const
Access multiple components at once.
const DofMap & get_dof_map() const
const std::set< unsigned char > & elem_dimensions() const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static void get_shape_outputs(FEBase &fe)