Skip to content
Snippets Groups Projects
tnlDirichletBoundaryConditions_impl.h 7.37 KiB
Newer Older
  • Learn to ignore specific revisions
  • #ifndef TNLDIRICHLETBOUNDARYCONDITIONS_IMPL_H
    #define	TNLDIRICHLETBOUNDARYCONDITIONS_IMPL_H
    
    
    
    template< typename MeshReal,
              typename Device,
              typename MeshIndex,
    
              typename Function,
              typename Real,
              typename Index >
    bool
    
    tnlDirichletBoundaryConditions< tnlGrid< 1, MeshReal, Device, MeshIndex >, Function, Real, Index >::
    
    setup( const tnlParameterContainer& parameters,
    
          const tnlString& prefix )
    
       return function.setup( parameters, prefix );
    
    }
    
    template< typename MeshReal,
              typename Device,
              typename MeshIndex,
              typename Function,
    
              typename Real,
              typename Index >
    
    #ifdef HAVE_CUDA
       __device__ __host__
    #endif
    
    tnlDirichletBoundaryConditions< tnlGrid< 1, MeshReal, Device, MeshIndex >, Function, Real, Index >::
    
    setBoundaryConditions( const RealType& time,
                           const MeshType& mesh,
                           const IndexType index,
                           const CoordinatesType& coordinates,
                           DofVectorType& u,
                           DofVectorType& fu )
    {
       fu[ index ] = 0;
    
       u[ index ] = function.getValue( mesh.getCellCenter( coordinates ), time );
    
    template< typename MeshReal,
              typename Device,
              typename MeshIndex,
              typename Function,
              typename Real,
              typename Index >
    #ifdef HAVE_CUDA
       __device__ __host__
    #endif
    Index
    tnlDirichletBoundaryConditions< tnlGrid< 1, MeshReal, Device, MeshIndex >, Function, Real, Index >::
    getLinearSystemRowLength( const MeshType& mesh,
                              const IndexType& index,
                              const CoordinatesType& coordinates ) const
    {
       return 1;
    }
    
    
    template< typename MeshReal,
              typename Device,
              typename MeshIndex,
              typename Function,
              typename Real,
              typename Index >
    #ifdef HAVE_CUDA
    __device__ __host__
    #endif
    void
    tnlDirichletBoundaryConditions< tnlGrid< 1, MeshReal, Device, MeshIndex >, Function, Real, Index >::
    updateLinearSystem( const RealType& time,
                        const MeshType& mesh,
                        const IndexType& index,
                        const CoordinatesType& coordinates,
                        DofVectorType& u,
                        DofVectorType& b,
                        IndexType* columns,
                        RealType* values,
                        IndexType& rowLength ) const
    {
       columns[ 0 ] = index;
       values[ 0 ] = 1.0;
    
       b[ index ] = function.getValue( mesh.getCellCenter( coordinates ), time );
    
    template< typename MeshReal,
              typename Device,
              typename MeshIndex,
    
              typename Function,
              typename Real,
              typename Index >
    bool
    
    tnlDirichletBoundaryConditions< tnlGrid< 2, MeshReal, Device, MeshIndex >, Function, Real, Index >::
    
    setup( const tnlParameterContainer& parameters,
    
          const tnlString& prefix )
    
       return function.setup( parameters, prefix );
    
    }
    
    
    template< typename MeshReal,
              typename Device,
              typename MeshIndex,
              typename Function,
    
              typename Real,
              typename Index >
    
    #ifdef HAVE_CUDA
       __device__ __host__
    #endif
    
    tnlDirichletBoundaryConditions< tnlGrid< 2, MeshReal, Device, MeshIndex >, Function, Real, Index >::
    
    setBoundaryConditions( const RealType& time,
                           const MeshType& mesh,
                           const IndexType index,
                           const CoordinatesType& coordinates,
                           DofVectorType& u,
                           DofVectorType& fu )
    {
       fu[ index ] = 0;
    
       u[ index ] = function.getValue( mesh.getCellCenter( coordinates ), time );
    
    template< typename MeshReal,
              typename Device,
              typename MeshIndex,
              typename Function,
              typename Real,
              typename Index >
    #ifdef HAVE_CUDA
       __device__ __host__
    #endif
    Index
    tnlDirichletBoundaryConditions< tnlGrid< 2, MeshReal, Device, MeshIndex >, Function, Real, Index >::
    getLinearSystemRowLength( const MeshType& mesh,
                              const IndexType& index,
                              const CoordinatesType& coordinates ) const
    {
       return 1;
    }
    
    
    template< typename MeshReal,
              typename Device,
              typename MeshIndex,
              typename Function,
              typename Real,
              typename Index >
    #ifdef HAVE_CUDA
    __device__ __host__
    #endif
    void
    tnlDirichletBoundaryConditions< tnlGrid< 2, MeshReal, Device, MeshIndex >, Function, Real, Index >::
    updateLinearSystem( const RealType& time,
                        const MeshType& mesh,
                        const IndexType& index,
                        const CoordinatesType& coordinates,
                        DofVectorType& u,
                        DofVectorType& b,
                        IndexType* columns,
                        RealType* values,
                        IndexType& rowLength ) const
    {
       columns[ 0 ] = index;
       values[ 0 ] = 1.0;
    
       b[ index ] = function.getValue( mesh.getCellCenter( coordinates ), time );
    
    template< typename MeshReal,
              typename Device,
              typename MeshIndex,
              typename Function,
              typename Real,
              typename Index >
    bool
    
    tnlDirichletBoundaryConditions< tnlGrid< 3, MeshReal, Device, MeshIndex >, Function, Real, Index >::
    
    setup( const tnlParameterContainer& parameters,
    
          const tnlString& prefix )
    
       return function.setup( parameters, prefix );
    
    }
    
    template< typename MeshReal,
              typename Device,
              typename MeshIndex,
    
              typename Function,
    
              typename Real,
              typename Index >
    
    #ifdef HAVE_CUDA
       __device__ __host__
    #endif
    
    tnlDirichletBoundaryConditions< tnlGrid< 3, MeshReal, Device, MeshIndex >, Function, Real, Index >::
    
    setBoundaryConditions( const RealType& time,
                           const MeshType& mesh,
                           const IndexType index,
                           const CoordinatesType& coordinates,
                           DofVectorType& u,
                           DofVectorType& fu )
    {
       fu[ index ] = 0;
    
       u[ index ] = function.getValue( mesh.getCellCenter( coordinates ), time );;
    
    template< typename MeshReal,
              typename Device,
              typename MeshIndex,
              typename Function,
              typename Real,
              typename Index >
    #ifdef HAVE_CUDA
       __device__ __host__
    #endif
    Index
    tnlDirichletBoundaryConditions< tnlGrid< 3, MeshReal, Device, MeshIndex >, Function, Real, Index >::
    getLinearSystemRowLength( const MeshType& mesh,
                              const IndexType& index,
                              const CoordinatesType& coordinates ) const
    {
       return 1;
    }
    
    template< typename MeshReal,
              typename Device,
              typename MeshIndex,
              typename Function,
              typename Real,
              typename Index >
    #ifdef HAVE_CUDA
    __device__ __host__
    #endif
    void
    tnlDirichletBoundaryConditions< tnlGrid< 3, MeshReal, Device, MeshIndex >, Function, Real, Index >::
    updateLinearSystem( const RealType& time,
                        const MeshType& mesh,
                        const IndexType& index,
                        const CoordinatesType& coordinates,
                        DofVectorType& u,
                        DofVectorType& b,
                        IndexType* columns,
                        RealType* values,
                        IndexType& rowLength ) const
    {
       columns[ 0 ] = index;
       values[ 0 ] = 1.0;
    
       b[ index ] = function.getValue( mesh.getCellCenter( coordinates ), time );
    
    #endif	/* TNLDIRICHLETBOUNDARYCONDITIONS_IMPL_H */