Skip to content

Commit 08b8ce2

Browse files
authored
bug-fixes for ghosting of transient solution vectors (#37)
1 parent a83164d commit 08b8ce2

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/solver/transient_solver_base.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -110,29 +110,29 @@ set_elem_operation_object(MAST::TransientAssemblyElemOperations &assembly_ops) {
110110

111111
nm = "transient_solution_";
112112
nm += iter.str();
113-
sys.add_vector(nm);
113+
sys.add_vector(nm, true, libMesh::GHOSTED);
114114

115115
nm = "transient_solution_sensitivity_";
116116
nm += iter.str();
117-
sys.add_vector(nm);
117+
sys.add_vector(nm, true, libMesh::GHOSTED);
118118
}
119119

120120
// add the velocity
121121
nm = "transient_velocity_";
122122
nm += iter.str();
123-
sys.add_vector(nm);
123+
sys.add_vector(nm, true, libMesh::GHOSTED);
124124
nm = "transient_velocity_sensitivity_";
125125
nm += iter.str();
126-
sys.add_vector(nm);
126+
sys.add_vector(nm, true, libMesh::GHOSTED);
127127

128128
if (_ode_order > 1) {
129129
// add the acceleration
130130
nm = "transient_acceleration_";
131131
nm += iter.str();
132-
sys.add_vector(nm);
132+
sys.add_vector(nm, true, libMesh::GHOSTED);
133133
nm = "transient_acceleration_sensitivity_";
134134
nm += iter.str();
135-
sys.add_vector(nm);
135+
sys.add_vector(nm, true, libMesh::GHOSTED);
136136
}
137137
}
138138

@@ -211,7 +211,7 @@ MAST::TransientSolverBase::solution(unsigned int prev_iter) const {
211211
return _system->system().get_vector(nm);
212212
}
213213
else
214-
return *_system->system().solution;
214+
return *_system->system().current_local_solution;
215215
}
216216

217217

@@ -406,6 +406,8 @@ solve_highest_derivative_and_advance_time_step(MAST::AssemblyBase& assembly) {
406406
sys.get_dof_map().enforce_constraints_exactly(sys, vec, /* homogeneous = */ true);
407407
#endif
408408

409+
sys.update();
410+
409411
// next, move all the solutions and velocities into older
410412
// time step locations
411413
for (unsigned int i=_n_iters_to_store-1; i>0; i--) {
@@ -756,10 +758,11 @@ MAST::TransientSolverBase::advance_time_step() {
756758
&sys = _system->system();
757759

758760
// first ask the solver to update the velocity and acceleration vector
759-
update_velocity(this->velocity(), *sys.solution);
761+
sys.update();
762+
update_velocity(this->velocity(), *sys.current_local_solution);
760763

761764
if (_ode_order > 1)
762-
update_acceleration(this->acceleration(), *sys.solution);
765+
update_acceleration(this->acceleration(), *sys.current_local_solution);
763766

764767
// next, move all the solutions and velocities into older
765768
// time step locations

0 commit comments

Comments
 (0)