2 #include "libmesh/equation_systems.h"
3 #include "libmesh/exodusII_io.h"
4 #include "libmesh/mesh.h"
5 #include "libmesh/mesh_generation.h"
6 #include "libmesh/node.h"
7 #include "libmesh/string_to_enum.h"
8 #include "libmesh/exodusII_io.h"
9 #include "libmesh/explicit_system.h"
10 #include "libmesh/numeric_vector.h"
28 CPPUNIT_TEST(testWrite);
31 CPPUNIT_TEST_SUITE_END();
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
100 for (
const auto & var_name : nodal_vars)
105 for (
const auto & var_name : nodal_vars)
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});
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