Loading src/TNL/Functions/MeshFunction.hpp +9 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ #include <TNL/Functions/MeshFunctionNormGetter.h> #include <TNL/Functions/MeshFunctionGnuplotWriter.h> #include <TNL/Meshes/Writers/VTKWriter.h> #include <TNL/Meshes/Writers/VTUWriter.h> #pragma once Loading Loading @@ -413,6 +414,14 @@ write( const String& fileName, else writer.writeCellData( getData(), "pointFunctionValues", 1 ); } else if( format == "vtu" ) { Meshes::Writers::VTUWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *meshPointer ); if( MeshFunction::getEntitiesDimension() == 0 ) writer.writePointData( getData(), "cellFunctionValues", 1 ); else writer.writeCellData( getData(), "pointFunctionValues", 1 ); } else if( format == "gnuplot" ) return MeshFunctionGnuplotWriter< MeshFunction >::write( *this, file ); else { Loading src/TNL/Functions/MeshFunctionView.hpp +9 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ #include <TNL/Functions/MeshFunctionNormGetter.h> #include <TNL/Functions/MeshFunctionGnuplotWriter.h> #include <TNL/Meshes/Writers/VTKWriter.h> #include <TNL/Meshes/Writers/VTUWriter.h> #pragma once Loading Loading @@ -498,6 +499,14 @@ write( const String& fileName, else writer.writeCellData( getData(), "pointFunctionValues", 1 ); } else if( format == "vtu" ) { Meshes::Writers::VTUWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *meshPointer ); if( MeshFunctionView::getEntitiesDimension() == 0 ) writer.writePointData( getData(), "cellFunctionValues", 1 ); else writer.writeCellData( getData(), "pointFunctionValues", 1 ); } else if( format == "gnuplot" ) return MeshFunctionGnuplotWriter< MeshFunctionView >::write( *this, file ); else { Loading src/TNL/Functions/VectorField.h +42 −25 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #include <TNL/Functions/MeshFunctionView.h> #include <TNL/Functions/VectorFieldGnuplotWriter.h> #include <TNL/Meshes/Writers/VTKWriter.h> #include <TNL/Meshes/Writers/VTUWriter.h> namespace TNL { namespace Functions { Loading Loading @@ -259,10 +260,7 @@ class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > > std::cerr << "Unable to open a file " << fileName << "." << std::endl; return false; } if( format == "vtk" ) { Meshes::Writers::VTKWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() ); if( format == "vtk" || format == "vtu" ) { // copy all values from the vector field into a contiguous array using BufferType = Containers::Array< typename VectorField::RealType, Devices::Host, IndexType >; const IndexType entitiesCount = getMeshPointer()->template getEntitiesCount< getEntitiesDimension() >(); Loading @@ -270,17 +268,28 @@ class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > > IndexType k = 0; for( IndexType i = 0; i < entitiesCount; i++ ) { const VectorType vector = getElement( i ); static_assert( getVectorDimension() <= 3, "The VTK format supports only up to 3D vector fields." ); static_assert( getVectorDimension() <= 3, "VTK formats support only up to 3D vector fields." ); for( int j = 0; j < 3; j++ ) buffer[ k++ ] = ( j < vector.getSize() ? vector[ j ] : 0 ); } // write the buffer if( format == "vtk" ) { Meshes::Writers::VTKWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() ); if( getEntitiesDimension() == 0 ) writer.writePointData( buffer, "cellVectorFieldValues", 3 ); else writer.writeCellData( buffer, "pointVectorFieldValues", 3 ); } else if( format == "vtu" ) { Meshes::Writers::VTUWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() ); if( getEntitiesDimension() == 0 ) writer.writePointData( buffer, "cellVectorFieldValues", 3 ); else writer.writeCellData( buffer, "pointVectorFieldValues", 3 ); } } else if( format == "gnuplot" ) return VectorFieldGnuplotWriter< VectorField >::write( *this, file ); else { Loading Loading @@ -524,10 +533,7 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > > std::cerr << "Unable to open a file " << fileName << "." << std::endl; return false; } if( format == "vtk" ) { Meshes::Writers::VTKWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() ); if( format == "vtk" || format == "vtu" ) { // copy all values from the vector field into a contiguous array using BufferType = Containers::Array< typename VectorField::RealType, Devices::Host, IndexType >; const IndexType entitiesCount = getMeshPointer()->template getEntitiesCount< getEntitiesDimension() >(); Loading @@ -535,17 +541,28 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > > IndexType k = 0; for( IndexType i = 0; i < entitiesCount; i++ ) { const VectorType vector = getElement( i ); static_assert( getVectorDimension() <= 3, "The VTK format supports only up to 3D vector fields." ); static_assert( getVectorDimension() <= 3, "VTK formats support only up to 3D vector fields." ); for( int j = 0; j < 3; j++ ) buffer[ k++ ] = ( j < vector.getSize() ? vector[ j ] : 0 ); } // write the buffer if( format == "vtk" ) { Meshes::Writers::VTKWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() ); if( getEntitiesDimension() == 0 ) writer.writePointData( buffer, "cellVectorFieldValues", 3 ); else writer.writeCellData( buffer, "pointVectorFieldValues", 3 ); } else if( format == "vtu" ) { Meshes::Writers::VTUWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() ); if( getEntitiesDimension() == 0 ) writer.writePointData( buffer, "cellVectorFieldValues", 3 ); else writer.writeCellData( buffer, "pointVectorFieldValues", 3 ); } } else if( format == "gnuplot" ) return VectorFieldGnuplotWriter< VectorField >::write( *this, file ); else { Loading src/Tools/CMakeLists.txt +7 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,13 @@ if( DCMTK_FOUND ) target_link_libraries(tnl-dicom-reader ${DCMTK_LIBRARIES} ) endif() find_package( ZLIB ) if( ZLIB_FOUND ) target_compile_definitions(tnl-view PUBLIC "-DHAVE_ZLIB") target_include_directories(tnl-view PUBLIC ${ZLIB_INCLUDE_DIRS}) target_link_libraries(tnl-view ${ZLIB_LIBRARIES}) endif() IF( BUILD_CUDA ) CUDA_ADD_EXECUTABLE( tnl-cuda-arch tnl-cuda-arch.cu ) INSTALL( TARGETS tnl-cuda-arch Loading src/Tools/tnl-view.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ void setupConfig( Config::ConfigDescription& config ) config.addEntry < String >( "output-format", "Output file format.", "gnuplot" ); config.addEntryEnum< String > ( "gnuplot" ); config.addEntryEnum< String > ( "vtk" ); config.addEntryEnum< String > ( "vtu" ); config.addEntry < int > ( "verbose", "Set the verbosity of the program.", 1 ); } Loading Loading
src/TNL/Functions/MeshFunction.hpp +9 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ #include <TNL/Functions/MeshFunctionNormGetter.h> #include <TNL/Functions/MeshFunctionGnuplotWriter.h> #include <TNL/Meshes/Writers/VTKWriter.h> #include <TNL/Meshes/Writers/VTUWriter.h> #pragma once Loading Loading @@ -413,6 +414,14 @@ write( const String& fileName, else writer.writeCellData( getData(), "pointFunctionValues", 1 ); } else if( format == "vtu" ) { Meshes::Writers::VTUWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *meshPointer ); if( MeshFunction::getEntitiesDimension() == 0 ) writer.writePointData( getData(), "cellFunctionValues", 1 ); else writer.writeCellData( getData(), "pointFunctionValues", 1 ); } else if( format == "gnuplot" ) return MeshFunctionGnuplotWriter< MeshFunction >::write( *this, file ); else { Loading
src/TNL/Functions/MeshFunctionView.hpp +9 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ #include <TNL/Functions/MeshFunctionNormGetter.h> #include <TNL/Functions/MeshFunctionGnuplotWriter.h> #include <TNL/Meshes/Writers/VTKWriter.h> #include <TNL/Meshes/Writers/VTUWriter.h> #pragma once Loading Loading @@ -498,6 +499,14 @@ write( const String& fileName, else writer.writeCellData( getData(), "pointFunctionValues", 1 ); } else if( format == "vtu" ) { Meshes::Writers::VTUWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *meshPointer ); if( MeshFunctionView::getEntitiesDimension() == 0 ) writer.writePointData( getData(), "cellFunctionValues", 1 ); else writer.writeCellData( getData(), "pointFunctionValues", 1 ); } else if( format == "gnuplot" ) return MeshFunctionGnuplotWriter< MeshFunctionView >::write( *this, file ); else { Loading
src/TNL/Functions/VectorField.h +42 −25 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #include <TNL/Functions/MeshFunctionView.h> #include <TNL/Functions/VectorFieldGnuplotWriter.h> #include <TNL/Meshes/Writers/VTKWriter.h> #include <TNL/Meshes/Writers/VTUWriter.h> namespace TNL { namespace Functions { Loading Loading @@ -259,10 +260,7 @@ class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > > std::cerr << "Unable to open a file " << fileName << "." << std::endl; return false; } if( format == "vtk" ) { Meshes::Writers::VTKWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() ); if( format == "vtk" || format == "vtu" ) { // copy all values from the vector field into a contiguous array using BufferType = Containers::Array< typename VectorField::RealType, Devices::Host, IndexType >; const IndexType entitiesCount = getMeshPointer()->template getEntitiesCount< getEntitiesDimension() >(); Loading @@ -270,17 +268,28 @@ class VectorField< Size, MeshFunction< Mesh, MeshEntityDimension, Real > > IndexType k = 0; for( IndexType i = 0; i < entitiesCount; i++ ) { const VectorType vector = getElement( i ); static_assert( getVectorDimension() <= 3, "The VTK format supports only up to 3D vector fields." ); static_assert( getVectorDimension() <= 3, "VTK formats support only up to 3D vector fields." ); for( int j = 0; j < 3; j++ ) buffer[ k++ ] = ( j < vector.getSize() ? vector[ j ] : 0 ); } // write the buffer if( format == "vtk" ) { Meshes::Writers::VTKWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() ); if( getEntitiesDimension() == 0 ) writer.writePointData( buffer, "cellVectorFieldValues", 3 ); else writer.writeCellData( buffer, "pointVectorFieldValues", 3 ); } else if( format == "vtu" ) { Meshes::Writers::VTUWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() ); if( getEntitiesDimension() == 0 ) writer.writePointData( buffer, "cellVectorFieldValues", 3 ); else writer.writeCellData( buffer, "pointVectorFieldValues", 3 ); } } else if( format == "gnuplot" ) return VectorFieldGnuplotWriter< VectorField >::write( *this, file ); else { Loading Loading @@ -524,10 +533,7 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > > std::cerr << "Unable to open a file " << fileName << "." << std::endl; return false; } if( format == "vtk" ) { Meshes::Writers::VTKWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() ); if( format == "vtk" || format == "vtu" ) { // copy all values from the vector field into a contiguous array using BufferType = Containers::Array< typename VectorField::RealType, Devices::Host, IndexType >; const IndexType entitiesCount = getMeshPointer()->template getEntitiesCount< getEntitiesDimension() >(); Loading @@ -535,17 +541,28 @@ class VectorField< Size, MeshFunctionView< Mesh, MeshEntityDimension, Real > > IndexType k = 0; for( IndexType i = 0; i < entitiesCount; i++ ) { const VectorType vector = getElement( i ); static_assert( getVectorDimension() <= 3, "The VTK format supports only up to 3D vector fields." ); static_assert( getVectorDimension() <= 3, "VTK formats support only up to 3D vector fields." ); for( int j = 0; j < 3; j++ ) buffer[ k++ ] = ( j < vector.getSize() ? vector[ j ] : 0 ); } // write the buffer if( format == "vtk" ) { Meshes::Writers::VTKWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() ); if( getEntitiesDimension() == 0 ) writer.writePointData( buffer, "cellVectorFieldValues", 3 ); else writer.writeCellData( buffer, "pointVectorFieldValues", 3 ); } else if( format == "vtu" ) { Meshes::Writers::VTUWriter< Mesh > writer( file ); writer.template writeEntities< getEntitiesDimension() >( *getMeshPointer() ); if( getEntitiesDimension() == 0 ) writer.writePointData( buffer, "cellVectorFieldValues", 3 ); else writer.writeCellData( buffer, "pointVectorFieldValues", 3 ); } } else if( format == "gnuplot" ) return VectorFieldGnuplotWriter< VectorField >::write( *this, file ); else { Loading
src/Tools/CMakeLists.txt +7 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,13 @@ if( DCMTK_FOUND ) target_link_libraries(tnl-dicom-reader ${DCMTK_LIBRARIES} ) endif() find_package( ZLIB ) if( ZLIB_FOUND ) target_compile_definitions(tnl-view PUBLIC "-DHAVE_ZLIB") target_include_directories(tnl-view PUBLIC ${ZLIB_INCLUDE_DIRS}) target_link_libraries(tnl-view ${ZLIB_LIBRARIES}) endif() IF( BUILD_CUDA ) CUDA_ADD_EXECUTABLE( tnl-cuda-arch tnl-cuda-arch.cu ) INSTALL( TARGETS tnl-cuda-arch Loading
src/Tools/tnl-view.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ void setupConfig( Config::ConfigDescription& config ) config.addEntry < String >( "output-format", "Output file format.", "gnuplot" ); config.addEntryEnum< String > ( "gnuplot" ); config.addEntryEnum< String > ( "vtk" ); config.addEntryEnum< String > ( "vtu" ); config.addEntry < int > ( "verbose", "Set the verbosity of the program.", 1 ); } Loading