190 copy_to_memory_space<MemorySpace>(
192 move_to_memory_space<MemorySpace>(
195 auto &dst_U = dst.
U.template deal_ii_vector<MemorySpace>();
196 const auto &src_U = src.
U.template deal_ii_vector<MemorySpace>();
197 dst_U.zero_out_ghost_values();
198 dst_U.sadd(s, b, src_U);
200 AssertDimension(dst.
V.size(), src.
V.size());
202 for (std::size_t k = 0; k < dst.
V.size(); ++k) {
203 auto &dst_V_k = dst.
V[k].template deal_ii_vector<MemorySpace>();
204 const auto &src_V_k = src.
V[k].template deal_ii_vector<MemorySpace>();
205 dst_V_k.zero_out_ghost_values();
206 dst_V_k.sadd(s, b, src_V_k);
227 move_to_memory_space<dealii::MemorySpace::Host>(
232 auto &[U, prec, V] = state_vector;
234 constexpr auto nan = std::numeric_limits<Number>::signaling_NaN();
236 const unsigned int n_owned = offline_data.n_locally_owned();
237 const unsigned int n_relevant = offline_data.n_locally_relevant();
238 const auto &partitioner = offline_data.scalar_partitioner();
244 const unsigned int prob_dim = U.n_comp();
245 const unsigned int prec_dim = prec.n_comp();
246 Number *
const U_data = U.deal_ii_vector().begin();
247 Number *
const prec_data = prec.deal_ii_vector().begin();
249 for (
unsigned int i = 0; i < n_owned; ++i) {
250 std::fill_n(prec_data + i * prec_dim, prec_dim, nan);
252 if (!offline_data.affine_constraints().is_constrained(
253 partitioner->local_to_global(i)))
255 std::fill_n(U_data + i * prob_dim, prob_dim, nan);
258 for (
unsigned int i = n_owned; i < n_relevant; ++i) {
259 std::fill_n(prec_data + i * prec_dim, prec_dim, nan);
261 std::fill_n(U_data + i * prob_dim, prob_dim, nan);