template class xf::hpc::rtm::Stencil2D¶
#include "stencil2d.hpp"
Overview¶
Stencil2D class defines isotrophic laplacian operation and time iterations function.
Parameters:
| t_DataType | the basic wavefield datatype | 
| t_Order | the spatial discretization order | 
| t_MaxDim | the maximum height this kernel can process | 
| t_PE | the number of processing elements | 
template < typename t_DataType, int t_Order, int t_MaxDim = 1024, int t_PE = 1 > class Stencil2D // direct descendants template < typename t_DataType, int t_Order, int t_MaxDim = 1024, int t_MaxB = 40, int t_PE = t_Order / 2 > class xf::hpc::rtm::RTM2D // typedefs typedef blas::WideType <t_DataType, t_PE> t_WideType typedef t_WideType::t_TypeInt t_InType typedef blas::WideType <t_InType, t_NumData, t_WideType::t_TypeWidth> t_PairType typedef t_PairType::t_TypeInt t_PairInType // fields static const unsigned int t_NumData static const unsigned int t_HalfOrder static const unsigned int t_FifoDepth
Methods¶
setCoef¶
void setCoef ( const t_DataType* p_coefz, const t_DataType* p_coefx )
setCoef set the coefficients for stencil kernel
Parameters:
| p_coefz | the coefficents along z-direction | 
| p_coefx | the coefficents along x-direction | 
setDim¶
void setDim ( const unsigned int p_z, const unsigned int p_x )
setDim set the dimension of the wavefields
Parameters:
| p_z | the dimension of z-direction | 
| p_x | the dimension of x-direction | 
laplacian¶
propagate¶
void propagate ( hls::stream <t_InType>& p_v2dt2, hls::stream <t_InType>& p_cpvt, hls::stream <t_PairInType>& p_in, hls::stream <t_PairInType>& p_out, bool p_sw = false )
propagate computes the time iteration for FDTD
Parameters:
| p_v2dt2 | the pow(v * dt, 2) | 
| p_cpvt | a copy of p_v2dt2 | 
| p_in | a stream of input wavefield | 
| p_out | a stream of output wavefield | 
| p_sw | a switch to swap outptu streams |