Loading examples/navier-stokes/navier-stokes.cfg.desc +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ group Problem integer y-size(!) [Number of grid cells along y-axis.]; real max-inflow-velocity(1.0) []; real max-outflow-velocity(0.8) []; real start-up(1.0) [Start-up time of the riser.]; real start-up(0.0) [Start-up time of the riser.]; real mu(!) [Viscosity.]; real p0(!) [Pressure for the initial condition.]; real T(!) [Temperature.]; Loading examples/navier-stokes/navierStokesSetter_impl.h +8 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <mesh/tnlGrid.h> #include <schemes/euler/fvm/tnlLaxFridrichs.h> #include <schemes/gradient/tnlCentralFDMGradient.h> template< typename SolverStarter > template< typename RealType, Loading @@ -39,7 +40,13 @@ bool navierStokesSetter< SolverStarter > :: run( const tnlParameterContainer& pa { typedef tnlGrid< 2, RealType, DeviceType, IndexType > MeshType; if( schemeName == "lax-fridrichs" ) return solverStarter. run< navierStokesSolver< MeshType, tnlLaxFridrichs< MeshType > > >( parameters ); return solverStarter. run< navierStokesSolver< MeshType, tnlLaxFridrichs< MeshType, tnlCentralFDMGradient< MeshType :: Dimensions, typename MeshType :: RealType, typename MeshType :: DeviceType, typename MeshType :: IndexType > > > > ( parameters ); } } Loading examples/navier-stokes/navierStokesSolver.h +3 −1 Original line number Diff line number Diff line Loading @@ -27,8 +27,10 @@ #include <solvers/tnlSolverMonitor.h> #include "navierStokesSolverMonitor.h" #include <schemes/euler/fvm/tnlLaxFridrichs.h> #include <schemes/gradient/tnlCentralFDMGradient.h> template< typename Mesh, typename EulerScheme > template< typename Mesh, typename EulerScheme > class navierStokesSolver { public: Loading examples/navier-stokes/navierStokesSolver_impl.h +32 −9 Original line number Diff line number Diff line Loading @@ -222,6 +222,27 @@ bool navierStokesSolver< Mesh, EulerScheme > :: makeSnapshot( const RealType& t, FileNameBaseNumberEnding( "u-", step, 5, ".tnl", fileName ); if( ! u. save( fileName ) ) return false; FileNameBaseNumberEnding( "rho-t-", step, 5, ".tnl", fileName ); if( ! rho_t. save( fileName ) ) return false; FileNameBaseNumberEnding( "rho-u1-t-", step, 5, ".tnl", fileName ); if( ! rho_u1_t. save( fileName ) ) return false; FileNameBaseNumberEnding( "rho-u2-t-", step, 5, ".tnl", fileName ); if( ! rho_u2_t. save( fileName ) ) return false; FileNameBaseNumberEnding( "rho-", step, 5, ".tnl", fileName ); if( ! rho. save( fileName ) ) return false; FileNameBaseNumberEnding( "rho-u1-", step, 5, ".tnl", fileName ); if( ! rho_u1. save( fileName ) ) return false; FileNameBaseNumberEnding( "rho-u2-", step, 5, ".tnl", fileName ); if( ! rho_u2. save( fileName ) ) return false; return true; } Loading Loading @@ -300,10 +321,16 @@ void navierStokesSolver< Mesh, EulerScheme > :: GetExplicitRHS( const RealType& rho_u1. bind( & u. getData()[ dofs ], dofs ); rho_u2. bind( & u. getData()[ 2 * dofs ], dofs ); eulerScheme. setRho( rho ); eulerScheme. setRhoU1( rho_u1 ); eulerScheme. setRhoU2( rho_u2 ); rho_t. bind( & fu. getData()[ 0 ], dofs ); rho_u1_t. bind( & fu. getData()[ dofs ], dofs ); rho_u2_t. bind( & fu. getData()[ 2 * dofs ], dofs ); updatePhysicalQuantities( rho, rho_u1, rho_u2 ); /**** Loading Loading @@ -407,17 +434,13 @@ void navierStokesSolver< Mesh, EulerScheme > :: GetExplicitRHS( const RealType& const RealType u_sqr = u * u; const RealType v_sqr = v * v; eulerScheme. getExplicitRhs( c, rho, rho_u1, rho_u2, rho_t, rho_u1_t, rho_u2_t ); rho_u1_t[ c ] += -( p[ e ] - p[ w ] ) / ( 2.0 * hx ); rho_u2_t[ c ] += -( p[ n ] - p[ s ] ) / ( 2.0 * hy ); rho_t[ c ], rho_u1_t[ c ], rho_u2_t[ c ] ); //rho_u1_t[ c ] += -( p[ e ] - p[ w ] ) / ( 2.0 * hx ); rho_u2_t[ c ] += //-( p[ n ] - p[ s ] ) / ( 2.0 * hy ); - startUpCoefficient * this -> gravity * this -> rho[ c ]; break; /*** * Add the viscosity term Loading src/implementation/mesh/tnlGrid1D_impl.h +57 −38 Original line number Diff line number Diff line Loading @@ -26,16 +26,18 @@ using namespace std; template< typename Real, typename Device, typename Index > tnlGrid< 1, Real, Device, Index> :: tnlGrid() typename Index, template< int, typename, typename, typename > class Geometry > tnlGrid< 1, Real, Device, Index, Geometry > :: tnlGrid() : dofs( 0 ) { } template< typename Real, typename Device, typename Index > tnlString tnlGrid< 1, Real, Device, Index> :: getTypeStatic() typename Index, template< int, typename, typename, typename > class Geometry > tnlString tnlGrid< 1, Real, Device, Index, Geometry > :: getTypeStatic() { return tnlString( "tnlGrid< " ) + tnlString( Dimensions ) + ", " + Loading @@ -46,16 +48,18 @@ tnlString tnlGrid< 1, Real, Device, Index> :: getTypeStatic() template< typename Real, typename Device, typename Index > tnlString tnlGrid< 1, Real, Device, Index> :: getType() const typename Index, template< int, typename, typename, typename > class Geometry > tnlString tnlGrid< 1, Real, Device, Index, Geometry > :: getType() const { return this -> getTypeStatic(); } template< typename Real, typename Device, typename Index > void tnlGrid< 1, Real, Device, Index> :: setDimensions( const Index xSize ) typename Index, template< int, typename, typename, typename > class Geometry > void tnlGrid< 1, Real, Device, Index, Geometry > :: setDimensions( const Index xSize ) { tnlAssert( xSize > 1, cerr << "The number of Elements along x-axis must be larger than 1." ); Loading @@ -65,8 +69,9 @@ void tnlGrid< 1, Real, Device, Index> :: setDimensions( const Index xSize ) template< typename Real, typename Device, typename Index > void tnlGrid< 1, Real, Device, Index> :: setDimensions( const tnlTuple< 1, Index >& dimensions ) typename Index, template< int, typename, typename, typename > class Geometry > void tnlGrid< 1, Real, Device, Index, Geometry > :: setDimensions( const tnlTuple< 1, Index >& dimensions ) { tnlAssert( dimensions. x() > 1, cerr << "The number of Elements along x-axis must be larger than 1." ); Loading @@ -76,48 +81,54 @@ void tnlGrid< 1, Real, Device, Index> :: setDimensions( const tnlTuple< 1, Index template< typename Real, typename Device, typename Index > const tnlTuple< 1, Index >& tnlGrid< 1, Real, Device, Index> :: getDimensions() const typename Index, template< int, typename, typename, typename > class Geometry > const tnlTuple< 1, Index >& tnlGrid< 1, Real, Device, Index, Geometry > :: getDimensions() const { return this -> dimensions; } template< typename Real, typename Device, typename Index > void tnlGrid< 1, Real, Device, Index> :: setOrigin( const tnlTuple< 1, Real >& origin ) typename Index, template< int, typename, typename, typename > class Geometry > void tnlGrid< 1, Real, Device, Index, Geometry > :: setOrigin( const tnlTuple< 1, Real >& origin ) { this -> origin = origin; } template< typename Real, typename Device, typename Index > const tnlTuple< 1, Real >& tnlGrid< 1, Real, Device, Index> :: getOrigin() const typename Index, template< int, typename, typename, typename > class Geometry > const tnlTuple< 1, Real >& tnlGrid< 1, Real, Device, Index, Geometry > :: getOrigin() const { return this -> origin; } template< typename Real, typename Device, typename Index > void tnlGrid< 1, Real, Device, Index> :: setProportions( const tnlTuple< 1, Real >& proportions ) typename Index, template< int, typename, typename, typename > class Geometry > void tnlGrid< 1, Real, Device, Index, Geometry > :: setProportions( const tnlTuple< 1, Real >& proportions ) { this -> proportions = proportions; } template< typename Real, typename Device, typename Index > const tnlTuple< 1, Real >& tnlGrid< 1, Real, Device, Index> :: getProportions() const typename Index, template< int, typename, typename, typename > class Geometry > const tnlTuple< 1, Real >& tnlGrid< 1, Real, Device, Index, Geometry > :: getProportions() const { return this -> proportions; } template< typename Real, typename Device, typename Index > void tnlGrid< 1, Real, Device, Index> :: setSpaceStep( const tnlTuple< 1, Real >& spaceStep ) typename Index, template< int, typename, typename, typename > class Geometry > void tnlGrid< 1, Real, Device, Index, Geometry > :: setSpaceStep( const tnlTuple< 1, Real >& spaceStep ) { this -> proportions. x() = this -> dimensions. x() * spaceStep. x(); Loading @@ -125,8 +136,9 @@ void tnlGrid< 1, Real, Device, Index> :: setSpaceStep( const tnlTuple< 1, Real > template< typename Real, typename Device, typename Index > tnlTuple< 1, Real > tnlGrid< 1, Real, Device, Index> :: getSpaceStep() const typename Index, template< int, typename, typename, typename > class Geometry > tnlTuple< 1, Real > tnlGrid< 1, Real, Device, Index, Geometry > :: getSpaceStep() const { tnlAssert( dimensions. x() > 0, cerr << "Cannot get the space step hx since number of Elements along the x axis is not known in tnlGrid " Loading @@ -140,8 +152,9 @@ tnlTuple< 1, Real > tnlGrid< 1, Real, Device, Index> :: getSpaceStep() const template< typename Real, typename Device, typename Index > Index tnlGrid< 1, Real, Device, Index> :: getElementIndex( const Index i ) const typename Index, template< int, typename, typename, typename > class Geometry > Index tnlGrid< 1, Real, Device, Index, Geometry > :: getElementIndex( const Index i ) const { tnlAssert( i < dimensions. x(), cerr << "Index i ( " << i Loading @@ -152,16 +165,18 @@ Index tnlGrid< 1, Real, Device, Index> :: getElementIndex( const Index i ) const template< typename Real, typename Device, typename Index > Index tnlGrid< 1, Real, Device, Index> :: getDofs() const typename Index, template< int, typename, typename, typename > class Geometry > Index tnlGrid< 1, Real, Device, Index, Geometry > :: getDofs() const { return this -> dofs; }; template< typename Real, typename Device, typename Index > bool tnlGrid< 1, Real, Device, Index> :: save( tnlFile& file ) const typename Index, template< int, typename, typename, typename > class Geometry > bool tnlGrid< 1, Real, Device, Index, Geometry > :: save( tnlFile& file ) const { if( ! tnlObject :: save( file ) ) return false; Loading @@ -178,8 +193,9 @@ bool tnlGrid< 1, Real, Device, Index> :: save( tnlFile& file ) const template< typename Real, typename Device, typename Index > bool tnlGrid< 1, Real, Device, Index> :: load( tnlFile& file ) typename Index, template< int, typename, typename, typename > class Geometry > bool tnlGrid< 1, Real, Device, Index, Geometry > :: load( tnlFile& file ) { if( ! tnlObject :: load( file ) ) return false; Loading @@ -197,25 +213,28 @@ bool tnlGrid< 1, Real, Device, Index> :: load( tnlFile& file ) template< typename Real, typename Device, typename Index > bool tnlGrid< 1, Real, Device, Index> :: save( const tnlString& fileName ) const typename Index, template< int, typename, typename, typename > class Geometry > bool tnlGrid< 1, Real, Device, Index, Geometry > :: save( const tnlString& fileName ) const { return tnlObject :: save( fileName ); }; template< typename Real, typename Device, typename Index > bool tnlGrid< 1, Real, Device, Index> :: load( const tnlString& fileName ) typename Index, template< int, typename, typename, typename > class Geometry > bool tnlGrid< 1, Real, Device, Index, Geometry > :: load( const tnlString& fileName ) { return tnlObject :: load( fileName ); }; template< typename Real, typename Device, typename Index > typename Index, template< int, typename, typename, typename > class Geometry > template< typename MeshFunction > bool tnlGrid< 1, Real, Device, Index> :: write( const MeshFunction& function, bool tnlGrid< 1, Real, Device, Index, Geometry > :: write( const MeshFunction& function, const tnlString& fileName, const tnlString& format ) const { Loading Loading
examples/navier-stokes/navier-stokes.cfg.desc +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ group Problem integer y-size(!) [Number of grid cells along y-axis.]; real max-inflow-velocity(1.0) []; real max-outflow-velocity(0.8) []; real start-up(1.0) [Start-up time of the riser.]; real start-up(0.0) [Start-up time of the riser.]; real mu(!) [Viscosity.]; real p0(!) [Pressure for the initial condition.]; real T(!) [Temperature.]; Loading
examples/navier-stokes/navierStokesSetter_impl.h +8 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <mesh/tnlGrid.h> #include <schemes/euler/fvm/tnlLaxFridrichs.h> #include <schemes/gradient/tnlCentralFDMGradient.h> template< typename SolverStarter > template< typename RealType, Loading @@ -39,7 +40,13 @@ bool navierStokesSetter< SolverStarter > :: run( const tnlParameterContainer& pa { typedef tnlGrid< 2, RealType, DeviceType, IndexType > MeshType; if( schemeName == "lax-fridrichs" ) return solverStarter. run< navierStokesSolver< MeshType, tnlLaxFridrichs< MeshType > > >( parameters ); return solverStarter. run< navierStokesSolver< MeshType, tnlLaxFridrichs< MeshType, tnlCentralFDMGradient< MeshType :: Dimensions, typename MeshType :: RealType, typename MeshType :: DeviceType, typename MeshType :: IndexType > > > > ( parameters ); } } Loading
examples/navier-stokes/navierStokesSolver.h +3 −1 Original line number Diff line number Diff line Loading @@ -27,8 +27,10 @@ #include <solvers/tnlSolverMonitor.h> #include "navierStokesSolverMonitor.h" #include <schemes/euler/fvm/tnlLaxFridrichs.h> #include <schemes/gradient/tnlCentralFDMGradient.h> template< typename Mesh, typename EulerScheme > template< typename Mesh, typename EulerScheme > class navierStokesSolver { public: Loading
examples/navier-stokes/navierStokesSolver_impl.h +32 −9 Original line number Diff line number Diff line Loading @@ -222,6 +222,27 @@ bool navierStokesSolver< Mesh, EulerScheme > :: makeSnapshot( const RealType& t, FileNameBaseNumberEnding( "u-", step, 5, ".tnl", fileName ); if( ! u. save( fileName ) ) return false; FileNameBaseNumberEnding( "rho-t-", step, 5, ".tnl", fileName ); if( ! rho_t. save( fileName ) ) return false; FileNameBaseNumberEnding( "rho-u1-t-", step, 5, ".tnl", fileName ); if( ! rho_u1_t. save( fileName ) ) return false; FileNameBaseNumberEnding( "rho-u2-t-", step, 5, ".tnl", fileName ); if( ! rho_u2_t. save( fileName ) ) return false; FileNameBaseNumberEnding( "rho-", step, 5, ".tnl", fileName ); if( ! rho. save( fileName ) ) return false; FileNameBaseNumberEnding( "rho-u1-", step, 5, ".tnl", fileName ); if( ! rho_u1. save( fileName ) ) return false; FileNameBaseNumberEnding( "rho-u2-", step, 5, ".tnl", fileName ); if( ! rho_u2. save( fileName ) ) return false; return true; } Loading Loading @@ -300,10 +321,16 @@ void navierStokesSolver< Mesh, EulerScheme > :: GetExplicitRHS( const RealType& rho_u1. bind( & u. getData()[ dofs ], dofs ); rho_u2. bind( & u. getData()[ 2 * dofs ], dofs ); eulerScheme. setRho( rho ); eulerScheme. setRhoU1( rho_u1 ); eulerScheme. setRhoU2( rho_u2 ); rho_t. bind( & fu. getData()[ 0 ], dofs ); rho_u1_t. bind( & fu. getData()[ dofs ], dofs ); rho_u2_t. bind( & fu. getData()[ 2 * dofs ], dofs ); updatePhysicalQuantities( rho, rho_u1, rho_u2 ); /**** Loading Loading @@ -407,17 +434,13 @@ void navierStokesSolver< Mesh, EulerScheme > :: GetExplicitRHS( const RealType& const RealType u_sqr = u * u; const RealType v_sqr = v * v; eulerScheme. getExplicitRhs( c, rho, rho_u1, rho_u2, rho_t, rho_u1_t, rho_u2_t ); rho_u1_t[ c ] += -( p[ e ] - p[ w ] ) / ( 2.0 * hx ); rho_u2_t[ c ] += -( p[ n ] - p[ s ] ) / ( 2.0 * hy ); rho_t[ c ], rho_u1_t[ c ], rho_u2_t[ c ] ); //rho_u1_t[ c ] += -( p[ e ] - p[ w ] ) / ( 2.0 * hx ); rho_u2_t[ c ] += //-( p[ n ] - p[ s ] ) / ( 2.0 * hy ); - startUpCoefficient * this -> gravity * this -> rho[ c ]; break; /*** * Add the viscosity term Loading
src/implementation/mesh/tnlGrid1D_impl.h +57 −38 Original line number Diff line number Diff line Loading @@ -26,16 +26,18 @@ using namespace std; template< typename Real, typename Device, typename Index > tnlGrid< 1, Real, Device, Index> :: tnlGrid() typename Index, template< int, typename, typename, typename > class Geometry > tnlGrid< 1, Real, Device, Index, Geometry > :: tnlGrid() : dofs( 0 ) { } template< typename Real, typename Device, typename Index > tnlString tnlGrid< 1, Real, Device, Index> :: getTypeStatic() typename Index, template< int, typename, typename, typename > class Geometry > tnlString tnlGrid< 1, Real, Device, Index, Geometry > :: getTypeStatic() { return tnlString( "tnlGrid< " ) + tnlString( Dimensions ) + ", " + Loading @@ -46,16 +48,18 @@ tnlString tnlGrid< 1, Real, Device, Index> :: getTypeStatic() template< typename Real, typename Device, typename Index > tnlString tnlGrid< 1, Real, Device, Index> :: getType() const typename Index, template< int, typename, typename, typename > class Geometry > tnlString tnlGrid< 1, Real, Device, Index, Geometry > :: getType() const { return this -> getTypeStatic(); } template< typename Real, typename Device, typename Index > void tnlGrid< 1, Real, Device, Index> :: setDimensions( const Index xSize ) typename Index, template< int, typename, typename, typename > class Geometry > void tnlGrid< 1, Real, Device, Index, Geometry > :: setDimensions( const Index xSize ) { tnlAssert( xSize > 1, cerr << "The number of Elements along x-axis must be larger than 1." ); Loading @@ -65,8 +69,9 @@ void tnlGrid< 1, Real, Device, Index> :: setDimensions( const Index xSize ) template< typename Real, typename Device, typename Index > void tnlGrid< 1, Real, Device, Index> :: setDimensions( const tnlTuple< 1, Index >& dimensions ) typename Index, template< int, typename, typename, typename > class Geometry > void tnlGrid< 1, Real, Device, Index, Geometry > :: setDimensions( const tnlTuple< 1, Index >& dimensions ) { tnlAssert( dimensions. x() > 1, cerr << "The number of Elements along x-axis must be larger than 1." ); Loading @@ -76,48 +81,54 @@ void tnlGrid< 1, Real, Device, Index> :: setDimensions( const tnlTuple< 1, Index template< typename Real, typename Device, typename Index > const tnlTuple< 1, Index >& tnlGrid< 1, Real, Device, Index> :: getDimensions() const typename Index, template< int, typename, typename, typename > class Geometry > const tnlTuple< 1, Index >& tnlGrid< 1, Real, Device, Index, Geometry > :: getDimensions() const { return this -> dimensions; } template< typename Real, typename Device, typename Index > void tnlGrid< 1, Real, Device, Index> :: setOrigin( const tnlTuple< 1, Real >& origin ) typename Index, template< int, typename, typename, typename > class Geometry > void tnlGrid< 1, Real, Device, Index, Geometry > :: setOrigin( const tnlTuple< 1, Real >& origin ) { this -> origin = origin; } template< typename Real, typename Device, typename Index > const tnlTuple< 1, Real >& tnlGrid< 1, Real, Device, Index> :: getOrigin() const typename Index, template< int, typename, typename, typename > class Geometry > const tnlTuple< 1, Real >& tnlGrid< 1, Real, Device, Index, Geometry > :: getOrigin() const { return this -> origin; } template< typename Real, typename Device, typename Index > void tnlGrid< 1, Real, Device, Index> :: setProportions( const tnlTuple< 1, Real >& proportions ) typename Index, template< int, typename, typename, typename > class Geometry > void tnlGrid< 1, Real, Device, Index, Geometry > :: setProportions( const tnlTuple< 1, Real >& proportions ) { this -> proportions = proportions; } template< typename Real, typename Device, typename Index > const tnlTuple< 1, Real >& tnlGrid< 1, Real, Device, Index> :: getProportions() const typename Index, template< int, typename, typename, typename > class Geometry > const tnlTuple< 1, Real >& tnlGrid< 1, Real, Device, Index, Geometry > :: getProportions() const { return this -> proportions; } template< typename Real, typename Device, typename Index > void tnlGrid< 1, Real, Device, Index> :: setSpaceStep( const tnlTuple< 1, Real >& spaceStep ) typename Index, template< int, typename, typename, typename > class Geometry > void tnlGrid< 1, Real, Device, Index, Geometry > :: setSpaceStep( const tnlTuple< 1, Real >& spaceStep ) { this -> proportions. x() = this -> dimensions. x() * spaceStep. x(); Loading @@ -125,8 +136,9 @@ void tnlGrid< 1, Real, Device, Index> :: setSpaceStep( const tnlTuple< 1, Real > template< typename Real, typename Device, typename Index > tnlTuple< 1, Real > tnlGrid< 1, Real, Device, Index> :: getSpaceStep() const typename Index, template< int, typename, typename, typename > class Geometry > tnlTuple< 1, Real > tnlGrid< 1, Real, Device, Index, Geometry > :: getSpaceStep() const { tnlAssert( dimensions. x() > 0, cerr << "Cannot get the space step hx since number of Elements along the x axis is not known in tnlGrid " Loading @@ -140,8 +152,9 @@ tnlTuple< 1, Real > tnlGrid< 1, Real, Device, Index> :: getSpaceStep() const template< typename Real, typename Device, typename Index > Index tnlGrid< 1, Real, Device, Index> :: getElementIndex( const Index i ) const typename Index, template< int, typename, typename, typename > class Geometry > Index tnlGrid< 1, Real, Device, Index, Geometry > :: getElementIndex( const Index i ) const { tnlAssert( i < dimensions. x(), cerr << "Index i ( " << i Loading @@ -152,16 +165,18 @@ Index tnlGrid< 1, Real, Device, Index> :: getElementIndex( const Index i ) const template< typename Real, typename Device, typename Index > Index tnlGrid< 1, Real, Device, Index> :: getDofs() const typename Index, template< int, typename, typename, typename > class Geometry > Index tnlGrid< 1, Real, Device, Index, Geometry > :: getDofs() const { return this -> dofs; }; template< typename Real, typename Device, typename Index > bool tnlGrid< 1, Real, Device, Index> :: save( tnlFile& file ) const typename Index, template< int, typename, typename, typename > class Geometry > bool tnlGrid< 1, Real, Device, Index, Geometry > :: save( tnlFile& file ) const { if( ! tnlObject :: save( file ) ) return false; Loading @@ -178,8 +193,9 @@ bool tnlGrid< 1, Real, Device, Index> :: save( tnlFile& file ) const template< typename Real, typename Device, typename Index > bool tnlGrid< 1, Real, Device, Index> :: load( tnlFile& file ) typename Index, template< int, typename, typename, typename > class Geometry > bool tnlGrid< 1, Real, Device, Index, Geometry > :: load( tnlFile& file ) { if( ! tnlObject :: load( file ) ) return false; Loading @@ -197,25 +213,28 @@ bool tnlGrid< 1, Real, Device, Index> :: load( tnlFile& file ) template< typename Real, typename Device, typename Index > bool tnlGrid< 1, Real, Device, Index> :: save( const tnlString& fileName ) const typename Index, template< int, typename, typename, typename > class Geometry > bool tnlGrid< 1, Real, Device, Index, Geometry > :: save( const tnlString& fileName ) const { return tnlObject :: save( fileName ); }; template< typename Real, typename Device, typename Index > bool tnlGrid< 1, Real, Device, Index> :: load( const tnlString& fileName ) typename Index, template< int, typename, typename, typename > class Geometry > bool tnlGrid< 1, Real, Device, Index, Geometry > :: load( const tnlString& fileName ) { return tnlObject :: load( fileName ); }; template< typename Real, typename Device, typename Index > typename Index, template< int, typename, typename, typename > class Geometry > template< typename MeshFunction > bool tnlGrid< 1, Real, Device, Index> :: write( const MeshFunction& function, bool tnlGrid< 1, Real, Device, Index, Geometry > :: write( const MeshFunction& function, const tnlString& fileName, const tnlString& format ) const { Loading