Skip to content
Snippets Groups Projects
NetgenWriter.h 2.14 KiB
Newer Older
  • Learn to ignore specific revisions
  • /***************************************************************************
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
                              MeshWriterNetgen.h  -  description
    
                                 -------------------
        begin                : Feb 22, 2014
    
        copyright            : (C) 2014 by Tomas Oberhuber et al.
    
        email                : tomas.oberhuber@fjfi.cvut.cz
     ***************************************************************************/
    
    
    /* See Copyright Notice in tnl/Copyright */
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    /***
     * Authors:
     * Oberhuber Tomas, tomas.oberhuber@fjfi.cvut.cz
     * Zabka Vitezslav, zabkav@gmail.com
     */
    
    
    #pragma once
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    #include <ostream>
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    #include <TNL/String.h>
    
    
    namespace TNL {
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    namespace Meshes {
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    namespace Writers {
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    template< typename Mesh >
    class NetgenWriter
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
       using GlobalIndexType = typename Mesh::GlobalIndexType;
       using PointType = typename Mesh::PointType;
       using Cell = typename Mesh::Cell;
       static constexpr int meshDimension = Mesh::getMeshDimension();
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    public:
       static void writeMesh( const Mesh& mesh, std::ostream& str )
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
          str << std::setprecision( 6 );
          str << std::fixed;
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
          const GlobalIndexType numberOfVertices = mesh.template getEntitiesCount< typename Mesh::Vertex >();
          str << numberOfVertices << std::endl;
          for( GlobalIndexType i = 0; i < numberOfVertices; i++ )
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
             const PointType& point = mesh.template getEntity< typename Mesh::Vertex >( i ).getPoint();
             str << " ";
    
             for( int d = 0; d < meshDimension; d++ )
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
                str << " " << point[ d ];
             str << std::endl;
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
          const GlobalIndexType numberOfCells = mesh.template getEntitiesCount< typename Mesh::Cell >();
          str << numberOfCells << std::endl;
          for( GlobalIndexType cellIdx = 0; cellIdx < numberOfCells; cellIdx++ )
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
             const Cell& cell = mesh.template getEntity< typename Mesh::Cell >( cellIdx );
             str << "   1";
             for( int cellVertexIdx = 0;
    
                  cellVertexIdx < meshDimension + 1;
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
                str << " " << cell.getVertexIndex( cellVertexIdx );
             str << "\n";
    
    Jakub Klinkovský's avatar
    Jakub Klinkovský committed
    } // namespace Writers
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    } // namespace Meshes
    
    } // namespace TNL