33int main(
int argc,
char ** argv)
43 <<
" mesh oldsolution newsolution system1 variable1 [sys2 var2...]" << std::endl;
47 libmesh_assert (!(argc % 2));
51 libmesh_assert_greater_equal (argc, 6);
59 EquationSystems::READ_HEADER |
60 EquationSystems::READ_DATA |
61 EquationSystems::READ_ADDITIONAL_DATA |
62 EquationSystems::READ_BASIC_ONLY);
63 libMesh::out <<
"Loaded solution " << argv[2] << std::endl;
65 std::vector<unsigned int> old_sys_num((argc-4)/2),
66 new_sys_num((argc-4)/2),
67 old_var_num((argc-4)/2),
68 new_var_num((argc-4)/2);
70 std::vector<const System *> old_system((argc-4)/2);
71 std::vector<System *> new_system((argc-4)/2);
73 for (
int argi = 4; argi < argc; argi += 2)
75 const char * sysname = argv[argi];
76 const char * varname = argv[argi+1];
78 const unsigned int pairnum = (argi-4)/2;
83 old_system[pairnum] = &old_sys;
84 old_sys_num[pairnum] = old_sys.
number();
95 new_system[pairnum] = &new_sys;
96 new_sys_num[pairnum] = new_sys.
number();
98 new_var_num[pairnum] =
111 for (
const auto & old_node : mesh1.local_node_ptr_range())
113 const Node * new_node = *new_nit++;
116 libmesh_assert (*old_node == *new_node);
118 for (
int argi = 4; argi < argc; argi += 2)
120 const unsigned int pairnum = (argi-4)/2;
122 const System & old_sys = *old_system[pairnum];
123 System & new_sys = *new_system[pairnum];
125 const unsigned int n_comp =
126 old_node->n_comp(old_sys_num[pairnum],old_var_num[pairnum]);
127 libmesh_assert_equal_to(n_comp,
128 new_node->
n_comp(new_sys_num[pairnum],new_var_num[pairnum]));
130 for (
unsigned int i=0; i<n_comp; i++)
133 old_index = old_node->dof_number
134 (old_sys_num[pairnum], old_var_num[pairnum], i),
136 (new_sys_num[pairnum], new_var_num[pairnum], i);
146 for (
const auto & old_elem : mesh1.active_local_element_ptr_range())
148 const Elem * new_elem = *new_eit++;
151 libmesh_assert (*old_elem == *new_elem);
153 for (
int argi = 4; argi < argc; argi += 2)
155 const unsigned int pairnum = (argi-4)/2;
157 const System & old_sys = *old_system[pairnum];
158 System & new_sys = *new_system[pairnum];
160 const unsigned int n_comp =
161 old_elem->n_comp(old_sys_num[pairnum],old_var_num[pairnum]);
162 libmesh_assert_equal_to(n_comp,
163 new_elem->
n_comp(new_sys_num[pairnum],new_var_num[pairnum]));
165 for (
unsigned int i=0; i<n_comp; i++)
168 old_index = old_elem->dof_number
169 (old_sys_num[pairnum], old_var_num[pairnum], i),
171 (new_sys_num[pairnum], new_var_num[pairnum], i);
177 es2.
write(argv[3], EquationSystems::WRITE_DATA);
virtual void read(const std::string &name, void *mesh_data=nullptr, bool skip_renumber_nodes_and_elements=false, bool skip_find_neighbors=false, bool skip_detect_interior_parents=false) override
Reads the file specified by name.