@@ -609,7 +609,7 @@ class OldSolutionBase
609609 }
610610 else
611611 {
612- if (!elem.old_dof_object )
612+ if (!elem.get_old_dof_object () )
613613 {
614614 libmesh_error ();
615615 }
@@ -659,7 +659,7 @@ class OldSolutionBase
659659 }
660660 else
661661 {
662- if (!elem.old_dof_object )
662+ if (!elem.get_old_dof_object () )
663663 return false ;
664664
665665 old_context.pre_fe_reinit (sys, &elem);
@@ -795,12 +795,13 @@ class OldSolutionValue : public OldSolutionBase<Output, point_output>
795795
796796 // Be sure to handle cases where the variable wasn't defined on
797797 // this node (e.g. due to changing subdomain support)
798- if (n.old_dof_object &&
799- n.old_dof_object ->n_vars (this ->sys .number ()) &&
800- n.old_dof_object ->n_comp (this ->sys .number (), var))
798+ const DofObject * old_dof_object = n.get_old_dof_object ();
799+ if (old_dof_object &&
800+ old_dof_object->n_vars (this ->sys .number ()) &&
801+ old_dof_object->n_comp (this ->sys .number (), var))
801802 {
802803 const dof_id_type first_old_id =
803- n. old_dof_object ->dof_number (this ->sys .number (), var, dim);
804+ old_dof_object->dof_number (this ->sys .number (), var, dim);
804805 std::vector<dof_id_type> old_ids (n_mixed);
805806 std::iota (old_ids.begin (), old_ids.end (), first_old_id);
806807 old_solution.get (old_ids, derivs);
@@ -887,24 +888,23 @@ class OldSolutionValue : public OldSolutionBase<Output, point_output>
887888 // zero.
888889 if (nc != 0 )
889890 {
890- const DofObject *old_dof_object = old_elem.old_dof_object ;
891- libmesh_assert (old_dof_object);
891+ const DofObject & old_dof_object = old_elem.get_old_dof_object_ref ();
892892 libmesh_assert_greater (elem.n_systems (), sys_num);
893893
894894 const std::pair<unsigned int , unsigned int >
895895 vg_and_offset = elem.var_to_vg_and_offset (sys_num,var_num);
896896 const unsigned int vg = vg_and_offset.first ;
897897 const unsigned int vig = vg_and_offset.second ;
898898
899- unsigned int n_comp = old_dof_object-> n_comp_group (sys_num,vg);
899+ unsigned int n_comp = old_dof_object. n_comp_group (sys_num,vg);
900900 n_comp = std::min (n_comp, nc);
901901
902902 std::vector<dof_id_type> old_dof_indices (n_comp);
903903
904904 for (unsigned int i=0 ; i != n_comp; ++i)
905905 {
906906 const dof_id_type d_old =
907- old_dof_object-> dof_number (sys_num, vg, vig, i, n_comp);
907+ old_dof_object. dof_number (sys_num, vg, vig, i, n_comp);
908908 const dof_id_type d_new =
909909 elem.dof_number (sys_num, vg, vig, i, n_comp);
910910 libmesh_assert_not_equal_to (d_old, DofObject::invalid_id);
@@ -1032,15 +1032,16 @@ eval_at_node(const FEMContext & c,
10321032
10331033 const Elem::RefinementState flag = c.get_elem ().refinement_flag ();
10341034
1035- if (n.old_dof_object &&
1035+ const DofObject * old_dof_object = n.get_old_dof_object ();
1036+ if (old_dof_object &&
10361037 (!extra_hanging_dofs ||
10371038 flag == Elem::JUST_COARSENED ||
10381039 flag == Elem::DO_NOTHING) &&
1039- n. old_dof_object ->n_vars (sys.number ()) &&
1040- n. old_dof_object ->n_comp (sys.number (), var))
1040+ old_dof_object->n_vars (sys.number ()) &&
1041+ old_dof_object->n_comp (sys.number (), var))
10411042 {
10421043 const dof_id_type old_id =
1043- n. old_dof_object ->dof_number (sys.number (), var, 0 );
1044+ old_dof_object->dof_number (sys.number (), var, 0 );
10441045 return old_solution (old_id);
10451046 }
10461047
@@ -1082,19 +1083,20 @@ eval_at_node(const FEMContext & c,
10821083
10831084 const Elem::RefinementState flag = elem.refinement_flag ();
10841085
1085- if (n.old_dof_object &&
1086+ const DofObject * old_dof_object = n.get_old_dof_object ();
1087+ if (old_dof_object &&
10861088 (!extra_hanging_dofs ||
10871089 flag == Elem::JUST_COARSENED ||
10881090 flag == Elem::DO_NOTHING) &&
1089- n. old_dof_object ->n_vars (sys.number ()) &&
1090- n. old_dof_object ->n_comp (sys.number (), var))
1091+ old_dof_object->n_vars (sys.number ()) &&
1092+ old_dof_object->n_comp (sys.number (), var))
10911093 {
10921094 Gradient return_val;
10931095
10941096 for (unsigned int dim = 0 ; dim < elem.dim (); ++dim)
10951097 {
10961098 const dof_id_type old_id =
1097- n. old_dof_object ->dof_number (sys.number (), var, dim);
1099+ old_dof_object->dof_number (sys.number (), var, dim);
10981100 return_val (dim) = old_solution (old_id);
10991101 }
11001102
@@ -1139,18 +1141,19 @@ eval_at_node(const FEMContext & c,
11391141
11401142 const Elem::RefinementState flag = c.get_elem ().refinement_flag ();
11411143
1142- if (n.old_dof_object &&
1144+ const DofObject * old_dof_object = n.get_old_dof_object ();
1145+ if (old_dof_object &&
11431146 (!extra_hanging_dofs ||
11441147 flag == Elem::JUST_COARSENED ||
11451148 flag == Elem::DO_NOTHING) &&
1146- n. old_dof_object ->n_vars (sys.number ()) &&
1147- n. old_dof_object ->n_comp (sys.number (), var))
1149+ old_dof_object->n_vars (sys.number ()) &&
1150+ old_dof_object->n_comp (sys.number (), var))
11481151 {
11491152 Gradient g;
11501153 for (unsigned int d = 0 ; d != elem_dim; ++d)
11511154 {
11521155 const dof_id_type old_id =
1153- n. old_dof_object ->dof_number (sys.number (), var, d+1 );
1156+ old_dof_object->dof_number (sys.number (), var, d+1 );
11541157 g (d) = old_solution (old_id);
11551158 }
11561159 return g;
@@ -1517,7 +1520,8 @@ void GenericProjector<FFunctor, GFunctor, FValue, ProjectionAction>::SortAndCopy
15171520 // wasn't just refined or just coarsened into activity, then
15181521 // it must be newly added, so the user is responsible for
15191522 // setting the new dofs on it during a grid projection.
1520- if (!elem->old_dof_object &&
1523+ const DofObject * old_dof_object = elem->get_old_dof_object ();
1524+ if (!old_dof_object &&
15211525 elem->refinement_flag () != Elem::JUST_REFINED &&
15221526 elem->refinement_flag () != Elem::JUST_COARSENED)
15231527 continue ;
0 commit comments