Skip to content
Snippets Groups Projects
boundary_writer.cc 1.29 KiB
Newer Older
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "boundary_writer.hh"

template <class ScalarVector, class Vector>
BoundaryWriter<ScalarVector, Vector>::BoundaryWriter(
    Vector const &vertexCoordinates,
    Dune::BitSetVector<1> const &_boundaryNodes)
    : displacementWriter("displacements", std::fstream::out),
      velocityWriter("velocities", std::fstream::out),
      boundaryNodes(_boundaryNodes) {
  std::fstream vertexCoordinateWriter("coordinates", std::fstream::out);
  for (size_t i = 0; i < boundaryNodes.size(); ++i)
    if (boundaryNodes[i][0])
      vertexCoordinateWriter << vertexCoordinates[i] << std::endl;
  vertexCoordinateWriter.close();
}

template <class ScalarVector, class Vector>
BoundaryWriter<ScalarVector, Vector>::~BoundaryWriter() {
  displacementWriter.close();
  velocityWriter.close();
}

template <class ScalarVector, class Vector>
void BoundaryWriter<ScalarVector, Vector>::writeKinetics(Vector const &u,
                                                         Vector const &v) {
  for (size_t i = 0; i < boundaryNodes.size(); ++i) {
    if (!boundaryNodes[i][0])
      continue;

    displacementWriter << u[i][0] << " ";
    velocityWriter << v[i][0] << " ";
  }

  displacementWriter << std::endl;
  velocityWriter << std::endl;
}

#include "boundary_writer_tmpl.cc"