129 int flag_observables) {
131 auto const unit_conversion = FloatType_c(units.at(
"density"));
132 auto const blocks = m_lattice->get_blocks();
133 WALBERLA_ASSERT_NOT_NULLPTR(blocks);
134 auto density_writer = std::make_shared<DensityVTKWriter<FloatType, float>>(
135 m_pdf_field_id,
"density", unit_conversion);
136 auto before_function = [
this, blocks, density_writer]() {
137 for (
auto &
block : *blocks) {
138 auto *pdf_field =
block.template getData<PdfField>(m_pdf_field_id);
139 auto const bci = pdf_field->xyzSize();
140 density_writer->set_content(
142 density_writer->set_dims(Vector3<uint_t>(
143 uint_c(bci.xSize()), uint_c(bci.ySize()), uint_c(bci.zSize())));
146 vtk_obj.addBeforeFunction(std::move(before_function));
147 vtk_obj.addCellDataWriter(density_writer);
150 auto const unit_conversion = FloatType_c(units.at(
"velocity"));
151 auto const blocks = m_lattice->get_blocks();
152 WALBERLA_ASSERT_NOT_NULLPTR(blocks);
153 auto velocity_writer =
154 std::make_shared<VelocityVTKWriter<FloatType, float>>(
155 m_pdf_field_id,
"velocity_vector", unit_conversion);
156 auto before_function = [
this, blocks, velocity_writer]() {
157 for (
auto &
block : *blocks) {
158 auto *velocity_field =
159 block.template getData<VectorField>(m_velocity_field_id);
160 auto const bci = velocity_field->xyzSize();
161 velocity_writer->set_content(
163 velocity_writer->set_dims(Vector3<uint_t>(
164 uint_c(bci.xSize()), uint_c(bci.ySize()), uint_c(bci.zSize())));
167 vtk_obj.addBeforeFunction(std::move(before_function));
168 vtk_obj.addCellDataWriter(velocity_writer);
171 auto const unit_conversion = FloatType_c(units.at(
"pressure"));
172 auto const blocks = m_lattice->get_blocks();
173 WALBERLA_ASSERT_NOT_NULLPTR(blocks);
174 auto pressure_writer =
175 std::make_shared<PressureTensorVTKWriter<FloatType, float>>(
176 m_pdf_field_id,
"pressure_tensor", unit_conversion);
177 auto before_function = [
this, blocks, pressure_writer]() {
178 for (
auto &
block : *blocks) {
179 auto *pdf_field =
block.template getData<PdfField>(m_pdf_field_id);
180 auto const bci = pdf_field->xyzSize();
183 for (std::size_t n = 0u; n < values.size(); n += 9u) {
184 pressure_tensor_correction(
185 std::span<FloatType, 9ul>(&values[n], 9ul));
187 pressure_writer->set_content(std::move(values));
188 pressure_writer->set_dims(Vector3<uint_t>(
189 uint_c(bci.xSize()), uint_c(bci.ySize()), uint_c(bci.zSize())));
192 vtk_obj.addBeforeFunction(std::move(before_function));
193 vtk_obj.addCellDataWriter(pressure_writer);