44 Utility::string_to_enum<ElemType>(
"TRI6"));
54 equation_systems.init();
58 std::vector<Real> initial_vector({10, 0, 12, 8, 4, 2, 16, 6, 14});
64 if (node->n_comp(0,0))
66 dof_id = node->dof_number(0,0,0);
70 CPPUNIT_ASSERT(node->n_comp(0,1));
71 dof_id = node->dof_number(0,1,0);
73 if (dof_id >= sys_solution.first_local_index() &&
74 dof_id < sys_solution.last_local_index())
75 sys_solution.
set(dof_id, initial_vector[node->id()]);
77 CPPUNIT_ASSERT_EQUAL(initial_vector[node->id()], dof_id*
Real(2));
81 #ifdef LIBMESH_HAVE_EXODUS_API
94 read_mesh.prepare_for_use();
98 const std::vector<std::string> & nodal_vars(exio.get_nodal_var_names());
100 for (
const auto & var_name : nodal_vars)
105 for (
const auto & var_name : nodal_vars)
106 exio.copy_nodal_solution(sys2, var_name, var_name, 1);
112 const std::vector<Real> gold_vector = {-1, 3, 10,
124 const std::vector<dof_id_type>
125 node_reordering({0, 3, 1, 8, 5, 4, 6, 7, 2});
129 for (
const auto & node : read_mesh.node_ptr_range())
136 #ifdef LIBMESH_USE_COMPLEX_NUMBERS
137 const unsigned int v2 = 3;
139 const unsigned int v2 = 1;
141 CPPUNIT_ASSERT_EQUAL(node->n_vars(0), 3*v2);
143 const dof_id_type gold_i_ux = node_reordering[node->id()] * 3;
147 LIBMESH_ASSERT_FP_EQUAL(
libmesh_real(sys2_soln(node->dof_number(0,0,0))),
148 gold_vector[gold_i_ux], tol);
149 LIBMESH_ASSERT_FP_EQUAL(
libmesh_real(sys2_soln(node->dof_number(0,v2,0))),
150 gold_vector[gold_i_uy], tol);
151 LIBMESH_ASSERT_FP_EQUAL(
libmesh_real(sys2_soln(node->dof_number(0,2*v2,0))),
152 gold_vector[gold_i_v], tol);
155 #ifdef LIBMESH_USE_COMPLEX_NUMBERS
156 LIBMESH_ASSERT_FP_EQUAL(
libmesh_real(sys2_soln(node->dof_number(0,1,0))),
158 LIBMESH_ASSERT_FP_EQUAL(
libmesh_real(sys2_soln(node->dof_number(0,2,0))),
159 std::abs(gold_vector[gold_i_ux]), tol);
160 LIBMESH_ASSERT_FP_EQUAL(
libmesh_real(sys2_soln(node->dof_number(0,4,0))),
162 LIBMESH_ASSERT_FP_EQUAL(
libmesh_real(sys2_soln(node->dof_number(0,5,0))),
163 std::abs(gold_vector[gold_i_uy]), tol);
164 LIBMESH_ASSERT_FP_EQUAL(
libmesh_real(sys2_soln(node->dof_number(0,7,0))),
166 LIBMESH_ASSERT_FP_EQUAL(
libmesh_real(sys2_soln(node->dof_number(0,8,0))),
167 std::abs(gold_vector[gold_i_v]), tol);
170 #endif // #ifdef LIBMESH_HAVE_EXODUS_API