Skip to content
Snippets Groups Projects
Select Git revision
  • d0deb52798fbe23e77019eca54cf83d6fc7d24a3
  • 2016-PippingKornhuberRosenauOncken default
  • 2014-Dissertation-Pipping
  • 2013-PippingSanderKornhuber
4 results

boundary_writer.cc

Blame
  • user avatar
    Elias Pipping authored
    acfa70a5
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    boundary_writer.cc 1.47 KiB
    #ifdef HAVE_CONFIG_H
    #include "config.h"
    #endif
    
    #include "boundary_writer.hh"
    #include "tobool.hh"
    
    template <class ScalarVector, class Vector>
    BoundaryWriter<ScalarVector, Vector>::BoundaryWriter(
        Vector const &vertexCoordinates,
        Dune::BitSetVector<1> const &_boundaryNodes, std::string prefix,
        Projector projector)
        : displacementWriter(prefix + "Displacements", std::fstream::out),
          velocityWriter(prefix + "Velocities", std::fstream::out),
          boundaryNodes(_boundaryNodes),
          projector_(projector) {
      std::fstream vertexCoordinateWriter(prefix + "Coordinates",
                                          std::fstream::out);
      for (size_t i = 0; i < boundaryNodes.size(); ++i)
        if (toBool(boundaryNodes[i]))
          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 (!toBool(boundaryNodes[i]))
          continue;
    
        displacementWriter << projector_(u[i]) << " ";
        velocityWriter << projector_(v[i]) << " ";
      }
    
      displacementWriter << std::endl;
      velocityWriter << std::endl;
    }
    
    #include "boundary_writer_tmpl.cc"