Loading src/functions/tnlMeshFunctionGnuplotWriter.h +74 −1 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Device, MeshIndex >, 1, Real > class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Device, MeshIndex >, 1, Real > > { public: typedef tnlGrid< 1, MeshReal, Device, MeshIndex > MeshType; Loading @@ -49,6 +49,79 @@ class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Devic ostream& str ); }; /*** * 1D grids vertices */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Device, MeshIndex >, 0, Real > > { public: typedef tnlGrid< 1, MeshReal, Device, MeshIndex > MeshType; typedef Real RealType; typedef tnlMeshFunction< MeshType, 0, RealType > MeshFunctionType; static bool write( const MeshFunctionType& function, ostream& str ); }; /*** * 2D grids cells */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 2, MeshReal, Device, MeshIndex >, 2, Real > > { public: typedef tnlGrid< 2, MeshReal, Device, MeshIndex > MeshType; typedef Real RealType; typedef tnlMeshFunction< MeshType, 2, RealType > MeshFunctionType; static bool write( const MeshFunctionType& function, ostream& str ); }; /*** * 2D grids faces */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 2, MeshReal, Device, MeshIndex >, 1, Real > > { public: typedef tnlGrid< 2, MeshReal, Device, MeshIndex > MeshType; typedef Real RealType; typedef tnlMeshFunction< MeshType, 1, RealType > MeshFunctionType; static bool write( const MeshFunctionType& function, ostream& str ); }; /*** * 2D grids vertices */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 2, MeshReal, Device, MeshIndex >, 0, Real > > { public: typedef tnlGrid< 2, MeshReal, Device, MeshIndex > MeshType; typedef Real RealType; typedef tnlMeshFunction< MeshType, 0, RealType > MeshFunctionType; static bool write( const MeshFunctionType& function, ostream& str ); }; #endif /* TNLMESHFUNCTIONGNUPLOTWRITER_H */ src/functions/tnlMeshFunctionGnuplotWriter_impl.h +150 −2 Original line number Diff line number Diff line Loading @@ -19,8 +19,8 @@ #define TNLMESHFUNCTIONGNUPLOTWRITER_IMPL_H template< typename MeshFunction > tnlMeshFunctionGnuplotWriter< MeshFunction >:: bool tnlMeshFunctionGnuplotWriter< MeshFunction >:: write( const MeshFunction& function, ostream& str ) { Loading @@ -28,17 +28,165 @@ write( const MeshFunction& function, return false; } /**** * 1D grid, cells */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > bool tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Device, MeshIndex >, 1, Real >:: tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Device, MeshIndex >, 1, Real > >:: write( const MeshFunctionType& function, ostream& str ) { const MeshType& mesh = function.getMesh(); typename MeshType::Cell entity( mesh ); for( entity.getCoordinates().x() = 0; entity.getCoordinates().x() < mesh.getDimensions().x(); entity.getCoordinates().x() ++ ) { typename MeshType::VertexType v = entity.getCenter(); str << v << " " << function.getElement( entity.getIndex() ) << std::endl; } } /**** * 1D grid, vertices */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > bool tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Device, MeshIndex >, 0, Real > >:: write( const MeshFunctionType& function, ostream& str ) { const MeshType& mesh = function.getMesh(); typename MeshType::Vertex entity( mesh ); for( entity.getCoordinates().x() = 0; entity.getCoordinates().x() <= mesh.getDimensions().x(); entity.getCoordinates().x() ++ ) { typename MeshType::VertexType v = entity.getCenter(); str << v << " " << function.getElement( entity.getIndex() ) << std::endl; } } /**** * 2D grid, cells */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > bool tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 2, MeshReal, Device, MeshIndex >, 2, Real > >:: write( const MeshFunctionType& function, ostream& str ) { const MeshType& mesh = function.getMesh(); typename MeshType::Cell entity( mesh ); for( entity.getCoordinates().y() = 0; entity.getCoordinates().y() < mesh.getDimensions().y(); entity.getCoordinates().y() ++ ) { for( entity.getCoordinates().x() = 0; entity.getCoordinates().x() < mesh.getDimensions().x(); entity.getCoordinates().x() ++ ) { typename MeshType::VertexType v = entity.getCenter(); str << v.x() << " " << v.y() << " " << function.getElement( entity.getIndex() ) << std::endl; } str << std::endl; } } /**** * 2D grid, faces */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > bool tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 2, MeshReal, Device, MeshIndex >, 1, Real > >:: write( const MeshFunctionType& function, ostream& str ) { const MeshType& mesh = function.getMesh(); typedef typename MeshType::Face EntityType; typedef typename EntityType::EntityOrientation EntityOrientation; EntityType entity( mesh ); entity.setOrientation( EntityOrientation( 1.0, 0.0 ) ); for( entity.getCoordinates().y() = 0; entity.getCoordinates().y() < mesh.getDimensions().y(); entity.getCoordinates().y() ++ ) { for( entity.getCoordinates().x() = 0; entity.getCoordinates().x() <= mesh.getDimensions().x(); entity.getCoordinates().x() ++ ) { typename MeshType::VertexType v = entity.getCenter(); str << v.x() << " " << v.y() << " " << function.getElement( entity.getIndex() ) << std::endl; } str << std::endl; } entity.setOrientation( EntityOrientation( 0.0, 1.0 ) ); for( entity.getCoordinates().y() = 0; entity.getCoordinates().y() <= mesh.getDimensions().y(); entity.getCoordinates().y() ++ ) { for( entity.getCoordinates().x() = 0; entity.getCoordinates().x() < mesh.getDimensions().x(); entity.getCoordinates().x() ++ ) { typename MeshType::VertexType v = entity.getCenter(); str << v.x() << " " << v.y() << " " << function.getElement( entity.getIndex() ) << std::endl; } str << std::endl; } } /**** * 2D grid, vertices */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > bool tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 2, MeshReal, Device, MeshIndex >, 0, Real > >:: write( const MeshFunctionType& function, ostream& str ) { const MeshType& mesh = function.getMesh(); typename MeshType::Vertex entity( mesh ); for( entity.getCoordinates().y() = 0; entity.getCoordinates().y() <= mesh.getDimensions().y(); entity.getCoordinates().y() ++ ) { for( entity.getCoordinates().x() = 0; entity.getCoordinates().x() <= mesh.getDimensions().x(); entity.getCoordinates().x() ++ ) { typename MeshType::VertexType v = entity.getCenter(); str << v.x() << " " << v.y() << " " << function.getElement( entity.getIndex() ) << std::endl; } str << std::endl; } } #endif /* TNLMESHFUNCTIONGNUPLOTWRITER_IMPL_H */ src/functions/tnlMeshFunctionVTKWriter.h +2 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,8 @@ class tnlMeshFunctionVTKWriter { public: bool write( const MeshFunction& function ) bool write( const MeshFunction& function, ostream& str ) { std::cerr << "VTK writer for mesh functions defined on mesh type " << MeshFunction::Mesh::getType() << " is not (yet) implmeneted." << std::endl; return false; Loading src/functions/tnlMeshFunction_impl.h +8 −2 Original line number Diff line number Diff line Loading @@ -362,10 +362,16 @@ tnlMeshFunction< Mesh, MeshEntityDimensions, Real >:: write( const tnlString& fileName, const tnlString& format ) const { fstream file; if( file.open( fileName.getString(), ios::out ) ) { std::cerr << "Unbable to open a file " << fileName << "." << std::endl; return false; } if( format == "vtk" ) return tnlMeshFunctionVTKWriter< ThisType >::write( *this, fileName ); return tnlMeshFunctionVTKWriter< ThisType >::write( *this, file ); if( format == "gnuplot" ) return tnlMeshFunctionGnuplotWriter< ThisType >::write( *this, fileName ); return tnlMeshFunctionGnuplotWriter< ThisType >::write( *this, file ); return true; } Loading Loading
src/functions/tnlMeshFunctionGnuplotWriter.h +74 −1 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Device, MeshIndex >, 1, Real > class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Device, MeshIndex >, 1, Real > > { public: typedef tnlGrid< 1, MeshReal, Device, MeshIndex > MeshType; Loading @@ -49,6 +49,79 @@ class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Devic ostream& str ); }; /*** * 1D grids vertices */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Device, MeshIndex >, 0, Real > > { public: typedef tnlGrid< 1, MeshReal, Device, MeshIndex > MeshType; typedef Real RealType; typedef tnlMeshFunction< MeshType, 0, RealType > MeshFunctionType; static bool write( const MeshFunctionType& function, ostream& str ); }; /*** * 2D grids cells */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 2, MeshReal, Device, MeshIndex >, 2, Real > > { public: typedef tnlGrid< 2, MeshReal, Device, MeshIndex > MeshType; typedef Real RealType; typedef tnlMeshFunction< MeshType, 2, RealType > MeshFunctionType; static bool write( const MeshFunctionType& function, ostream& str ); }; /*** * 2D grids faces */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 2, MeshReal, Device, MeshIndex >, 1, Real > > { public: typedef tnlGrid< 2, MeshReal, Device, MeshIndex > MeshType; typedef Real RealType; typedef tnlMeshFunction< MeshType, 1, RealType > MeshFunctionType; static bool write( const MeshFunctionType& function, ostream& str ); }; /*** * 2D grids vertices */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > class tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 2, MeshReal, Device, MeshIndex >, 0, Real > > { public: typedef tnlGrid< 2, MeshReal, Device, MeshIndex > MeshType; typedef Real RealType; typedef tnlMeshFunction< MeshType, 0, RealType > MeshFunctionType; static bool write( const MeshFunctionType& function, ostream& str ); }; #endif /* TNLMESHFUNCTIONGNUPLOTWRITER_H */
src/functions/tnlMeshFunctionGnuplotWriter_impl.h +150 −2 Original line number Diff line number Diff line Loading @@ -19,8 +19,8 @@ #define TNLMESHFUNCTIONGNUPLOTWRITER_IMPL_H template< typename MeshFunction > tnlMeshFunctionGnuplotWriter< MeshFunction >:: bool tnlMeshFunctionGnuplotWriter< MeshFunction >:: write( const MeshFunction& function, ostream& str ) { Loading @@ -28,17 +28,165 @@ write( const MeshFunction& function, return false; } /**** * 1D grid, cells */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > bool tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Device, MeshIndex >, 1, Real >:: tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Device, MeshIndex >, 1, Real > >:: write( const MeshFunctionType& function, ostream& str ) { const MeshType& mesh = function.getMesh(); typename MeshType::Cell entity( mesh ); for( entity.getCoordinates().x() = 0; entity.getCoordinates().x() < mesh.getDimensions().x(); entity.getCoordinates().x() ++ ) { typename MeshType::VertexType v = entity.getCenter(); str << v << " " << function.getElement( entity.getIndex() ) << std::endl; } } /**** * 1D grid, vertices */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > bool tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 1, MeshReal, Device, MeshIndex >, 0, Real > >:: write( const MeshFunctionType& function, ostream& str ) { const MeshType& mesh = function.getMesh(); typename MeshType::Vertex entity( mesh ); for( entity.getCoordinates().x() = 0; entity.getCoordinates().x() <= mesh.getDimensions().x(); entity.getCoordinates().x() ++ ) { typename MeshType::VertexType v = entity.getCenter(); str << v << " " << function.getElement( entity.getIndex() ) << std::endl; } } /**** * 2D grid, cells */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > bool tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 2, MeshReal, Device, MeshIndex >, 2, Real > >:: write( const MeshFunctionType& function, ostream& str ) { const MeshType& mesh = function.getMesh(); typename MeshType::Cell entity( mesh ); for( entity.getCoordinates().y() = 0; entity.getCoordinates().y() < mesh.getDimensions().y(); entity.getCoordinates().y() ++ ) { for( entity.getCoordinates().x() = 0; entity.getCoordinates().x() < mesh.getDimensions().x(); entity.getCoordinates().x() ++ ) { typename MeshType::VertexType v = entity.getCenter(); str << v.x() << " " << v.y() << " " << function.getElement( entity.getIndex() ) << std::endl; } str << std::endl; } } /**** * 2D grid, faces */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > bool tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 2, MeshReal, Device, MeshIndex >, 1, Real > >:: write( const MeshFunctionType& function, ostream& str ) { const MeshType& mesh = function.getMesh(); typedef typename MeshType::Face EntityType; typedef typename EntityType::EntityOrientation EntityOrientation; EntityType entity( mesh ); entity.setOrientation( EntityOrientation( 1.0, 0.0 ) ); for( entity.getCoordinates().y() = 0; entity.getCoordinates().y() < mesh.getDimensions().y(); entity.getCoordinates().y() ++ ) { for( entity.getCoordinates().x() = 0; entity.getCoordinates().x() <= mesh.getDimensions().x(); entity.getCoordinates().x() ++ ) { typename MeshType::VertexType v = entity.getCenter(); str << v.x() << " " << v.y() << " " << function.getElement( entity.getIndex() ) << std::endl; } str << std::endl; } entity.setOrientation( EntityOrientation( 0.0, 1.0 ) ); for( entity.getCoordinates().y() = 0; entity.getCoordinates().y() <= mesh.getDimensions().y(); entity.getCoordinates().y() ++ ) { for( entity.getCoordinates().x() = 0; entity.getCoordinates().x() < mesh.getDimensions().x(); entity.getCoordinates().x() ++ ) { typename MeshType::VertexType v = entity.getCenter(); str << v.x() << " " << v.y() << " " << function.getElement( entity.getIndex() ) << std::endl; } str << std::endl; } } /**** * 2D grid, vertices */ template< typename MeshReal, typename Device, typename MeshIndex, typename Real > bool tnlMeshFunctionGnuplotWriter< tnlMeshFunction< tnlGrid< 2, MeshReal, Device, MeshIndex >, 0, Real > >:: write( const MeshFunctionType& function, ostream& str ) { const MeshType& mesh = function.getMesh(); typename MeshType::Vertex entity( mesh ); for( entity.getCoordinates().y() = 0; entity.getCoordinates().y() <= mesh.getDimensions().y(); entity.getCoordinates().y() ++ ) { for( entity.getCoordinates().x() = 0; entity.getCoordinates().x() <= mesh.getDimensions().x(); entity.getCoordinates().x() ++ ) { typename MeshType::VertexType v = entity.getCenter(); str << v.x() << " " << v.y() << " " << function.getElement( entity.getIndex() ) << std::endl; } str << std::endl; } } #endif /* TNLMESHFUNCTIONGNUPLOTWRITER_IMPL_H */
src/functions/tnlMeshFunctionVTKWriter.h +2 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,8 @@ class tnlMeshFunctionVTKWriter { public: bool write( const MeshFunction& function ) bool write( const MeshFunction& function, ostream& str ) { std::cerr << "VTK writer for mesh functions defined on mesh type " << MeshFunction::Mesh::getType() << " is not (yet) implmeneted." << std::endl; return false; Loading
src/functions/tnlMeshFunction_impl.h +8 −2 Original line number Diff line number Diff line Loading @@ -362,10 +362,16 @@ tnlMeshFunction< Mesh, MeshEntityDimensions, Real >:: write( const tnlString& fileName, const tnlString& format ) const { fstream file; if( file.open( fileName.getString(), ios::out ) ) { std::cerr << "Unbable to open a file " << fileName << "." << std::endl; return false; } if( format == "vtk" ) return tnlMeshFunctionVTKWriter< ThisType >::write( *this, fileName ); return tnlMeshFunctionVTKWriter< ThisType >::write( *this, file ); if( format == "gnuplot" ) return tnlMeshFunctionGnuplotWriter< ThisType >::write( *this, fileName ); return tnlMeshFunctionGnuplotWriter< ThisType >::write( *this, file ); return true; } Loading