37struct MassConservationData
39 MassConservationData() : directory(
"output/"), filename(
"mass"), reference_length_scale(1.0)
44 print(dealii::ConditionalOStream & pcout,
const bool unsteady)
46 if(time_control_data.is_active)
48 pcout <<
" Analysis of divergence and mass error:" << std::endl;
49 time_control_data.print(pcout, unsteady);
50 print_parameter(pcout,
"Directory", directory);
51 print_parameter(pcout,
"Filename", filename);
57 std::string directory;
59 double reference_length_scale;
63class DivergenceAndMassErrorCalculator
66 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
68 typedef CellIntegrator<dim, dim, Number> CellIntegratorU;
69 typedef FaceIntegrator<dim, dim, Number> FaceIntegratorU;
71 typedef dealii::VectorizedArray<Number> scalar;
72 typedef dealii::Tensor<1, dim, dealii::VectorizedArray<Number>> vector;
74 typedef DivergenceAndMassErrorCalculator<dim, Number> This;
76 DivergenceAndMassErrorCalculator(MPI_Comm
const & comm);
79 setup(dealii::MatrixFree<dim, Number>
const & matrix_free_in,
80 unsigned int const dof_index_in,
81 unsigned int const quad_index_in,
85 evaluate(VectorType
const & velocity,
double const time,
bool const unsteady);
103 do_evaluate(dealii::MatrixFree<dim, Number>
const & matrix_free,
104 VectorType
const & velocity,
106 Number & div_error_reference,
108 Number & mass_error_reference);
111 local_compute_div(dealii::MatrixFree<dim, Number>
const & data,
112 std::vector<Number> & dst,
113 VectorType
const & source,
114 const std::pair<unsigned int, unsigned int> & cell_range);
117 local_compute_div_face(dealii::MatrixFree<dim, Number>
const & data,
118 std::vector<Number> & dst,
119 VectorType
const & source,
120 const std::pair<unsigned int, unsigned int> & face_range);
124 local_compute_div_boundary_face(dealii::MatrixFree<dim, Number>
const &,
125 std::vector<Number> &,
127 const std::pair<unsigned int, unsigned int> &);
130 analyze_div_and_mass_error_unsteady(VectorType
const & velocity,
double const time);
133 analyze_div_and_mass_error_steady(VectorType
const & velocity);
135 MPI_Comm
const mpi_comm;
137 bool clear_files_mass_error;
138 int number_of_samples;
139 Number divergence_sample;
142 dealii::MatrixFree<dim, Number>
const * matrix_free;
143 unsigned int dof_index, quad_index;