Forked from
agnumpde / dune-tectonic
152 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
vtk-bodywriter.hh 2.01 KiB
#ifndef SRC_VTK_BODYWRITER_HH
#define SRC_VTK_BODYWRITER_HH
#include <dune/grid/io/file/vtk/vtkwriter.hh>
#include <dune/fufem/functions/vtkbasisgridfunction.hh>
#include "../utils/debugutils.hh"
template <class VertexBasis, class CellBasis> class VTKBodyWriter {
private:
CellBasis const &cellBasis_;
VertexBasis const &vertexBasis_;
std::string const prefix_;
public:
VTKBodyWriter(CellBasis const &cellBasis, VertexBasis const &vertexBasis, std::string prefix) :
cellBasis_(cellBasis), vertexBasis_(vertexBasis), prefix_(prefix)
{}
template <class Vector, class ScalarVector>
void write(size_t record, Vector const &u, Vector const &v,
ScalarVector const &alpha, ScalarVector const &stress) const {
Dune::VTKWriter<typename VertexBasis::GridView> writer(
vertexBasis_.getGridView());
auto const displacementPointer =
std::make_shared<VTKBasisGridFunction<VertexBasis, Vector> const>(
vertexBasis_, u, "displacement");
writer.addVertexData(displacementPointer);
auto const velocityPointer =
std::make_shared<VTKBasisGridFunction<VertexBasis, Vector> const>(
vertexBasis_, v, "velocity");
writer.addVertexData(velocityPointer);
auto const AlphaPointer =
std::make_shared<VTKBasisGridFunction<VertexBasis, ScalarVector> const>(
vertexBasis_, alpha, "Alpha");
writer.addVertexData(AlphaPointer);
auto const stressPointer =
std::make_shared<VTKBasisGridFunction<CellBasis, ScalarVector> const>(
cellBasis_, stress, "stress");
writer.addCellData(stressPointer);
std::string const filename = prefix_ + "_" + std::to_string(record);
writer.write(filename.c_str(), Dune::VTK::appendedraw);
}
void writeGrid() const {
Dune::VTKWriter<typename VertexBasis::GridView> writer(
vertexBasis_.getGridView());
std::string const filename = prefix_ + "_grid";
writer.write(filename.c_str(), Dune::VTK::appendedraw);
}
};
#endif