8#include <compile_time_options.h>
12#include <deal.II/lac/la_parallel_block_vector.h>
18 template <
int dim,
typename Number>
32 template <
typename Number>
33 using ScalarVector = dealii::LinearAlgebra::distributed::Vector<Number>;
38 template <
typename Number>
39 using BlockVector = dealii::LinearAlgebra::distributed::BlockVector<Number>;
49 template <
typename Number,
unsigned int problem_dim,
unsigned int prec_dim>
62 int problem_dimension = View::problem_dimension,
63 int prec_dimension = View::n_precomputed_values>
70 auto &[U, precomputed, V] = state_vector;
72 const unsigned int n_owned = offline_data.n_locally_owned();
73 const auto &partitioner = offline_data.scalar_partitioner();
75 for (
unsigned int i = 0; i < n_owned; ++i) {
76 if (!offline_data.affine_constraints().is_constrained(
77 partitioner->local_to_global(i)))
79 constexpr auto nan = std::numeric_limits<Number>::signaling_NaN();
80 U.write_tensor(dealii::Tensor<1, problem_dimension, Number>() * nan, i);
92 int problem_dimension = View::problem_dimension,
93 int prec_dimension = View::n_precomputed_values>
100 auto &[U, precomputed, V] = state_vector;
102 constexpr auto nan = std::numeric_limits<Number>::signaling_NaN();
103 const unsigned int n_owned = offline_data.n_locally_owned();
104 const auto block_size = offline_data.n_parabolic_state_vectors();
106 for (
unsigned int i = 0; i < n_owned; ++i) {
107 precomputed.write_tensor(
108 dealii::Tensor<1, prec_dimension, Number>() * nan, i);
109 for (
unsigned int b = 0; b < block_size; ++b) {
110 V.block(b).local_element(i) = nan;
127 int problem_dimension = View::problem_dimension,
128 int prec_dimension = View::n_precomputed_values>
133 auto &[U, precomputed, V] = state_vector;
138 V.reinit(block_size);
139 for (
unsigned int i = 0; i < block_size; ++i) {
145 using state_type =
typename View::state_type;
147 constexpr auto nan = std::numeric_limits<Number>::signaling_NaN();
150 for (
unsigned int i = 0; i < n_owned; ++i) {
151 U.write_tensor(state_type{} * nan, i);
152 precomputed.write_tensor(
153 dealii::Tensor<1, prec_dimension, Number>() * nan, i);
154 for (
unsigned int b = 0; b < block_size; ++b) {
155 V.block(b).local_element(i) = nan;
const auto & n_parabolic_state_vectors() const
const auto & scalar_partitioner() const
const auto & n_locally_owned() const
const auto & hyperbolic_vector_partitioner() const
const auto & precomputed_vector_partitioner() const
void reinit_state_vector(StateVector< Number, problem_dimension, prec_dimension > &state_vector, const OfflineData< dim, Number > &offline_data)
dealii::LinearAlgebra::distributed::Vector< Number > ScalarVector
void debug_poison_constrained_dofs(StateVector< Number, problem_dimension, prec_dimension > &state_vector, const OfflineData< dim, Number > &offline_data)
dealii::LinearAlgebra::distributed::BlockVector< Number > BlockVector
void debug_poison_precomputed_values(StateVector< Number, problem_dimension, prec_dimension > &state_vector, const OfflineData< dim, Number > &offline_data)
std::tuple< MultiComponentVector< Number, problem_dim >, MultiComponentVector< Number, prec_dim >, BlockVector< Number > > StateVector
Euler::Description Description