16 #include "libmesh/numeric_vector.h"
17 #include "libmesh/transient_system.h"
18 #include "libmesh/explicit_system.h"
23 _displaced_problem(displaced_problem),
24 _ref_mesh(_displaced_problem.refMesh()),
25 _nl_soln(*_displaced_problem._nl_solution),
26 _aux_soln(*_displaced_problem._aux_solution),
27 _nl_ghosted_soln(NumericVector<Number>::build(_nl_soln.
comm()).release()),
28 _aux_ghosted_soln(NumericVector<Number>::build(_aux_soln.
comm()).release()),
30 _var_nums_directions(0),
32 _aux_var_nums_directions(0),
35 _nonlinear_system_number(_displaced_problem._displaced_nl.sys().number()),
36 _aux_system_number(_displaced_problem._displaced_aux.sys().number())
44 _displaced_problem(
x._displaced_problem),
45 _ref_mesh(
x._ref_mesh),
47 _aux_soln(
x._aux_soln),
48 _nl_ghosted_soln(
x._nl_ghosted_soln),
49 _aux_ghosted_soln(
x._aux_ghosted_soln),
50 _var_nums(
x._var_nums),
51 _var_nums_directions(
x._var_nums_directions),
52 _aux_var_nums(
x._aux_var_nums),
53 _aux_var_nums_directions(
x._aux_var_nums_directions),
54 _num_var_nums(
x._num_var_nums),
55 _num_aux_var_nums(
x._num_aux_var_nums),
56 _nonlinear_system_number(
x._nonlinear_system_number),
57 _aux_system_number(
x._aux_system_number)
65 unsigned int num_displacements = displacement_variables.size();
73 for (
unsigned int i = 0; i < num_displacements; i++)
75 std::string displacement_name = displacement_variables[i];
90 mooseError(
"Undefined variable '", displacement_name,
"' used for displacements!");
101 Threads::parallel_reduce(node_range, nl_send_list);
102 nl_send_list.unique();
104 _nl_soln.size(),
_nl_soln.local_size(), nl_send_list.send_list(),
true, GHOSTED);
111 Threads::parallel_reduce(node_range, aux_send_list);
112 aux_send_list.unique();
122 Node & displaced_node = *(*nd);
130 displaced_node(direction) =
131 reference_node(direction) +
139 displaced_node(direction) =
140 reference_node(direction) +