18 void stencil1( vector< double >& f,
int index,
unsigned int n,
20 const vector< vector< double > >& S,
21 const vector< double >& diffConst )
23 const vector< double >& t0 = S[ index ];
24 if ( index - static_cast< int >( n ) < 0 ) {
25 const vector< double >& temp = S[ index + n ];
26 for (
unsigned int i = 0; i < f.size(); ++i ) {
27 f[i] += 2 * diffConst[i] * ( temp[i] - t0[i] ) * invSq;
29 }
else if ( index + n >= S.size() ) {
30 const vector< double >& temp = S[ index - n ];
31 for (
unsigned int i = 0; i < f.size(); ++i ) {
32 f[i] += 2 * diffConst[i] * ( temp[i] - t0[i] ) * invSq;
35 const vector< double >& tminus = S[ index - n ];
36 const vector< double >& tplus = S[ index + n ];
37 for (
unsigned int i = 0; i < f.size(); ++i ) {
38 f[i] += diffConst[i] * ( tminus[i] + tplus[i] - 2 * t0[i] ) * invSq;
55 void stencilN( vector< double >& f,
int index,
unsigned int n,
int offset,
56 double invSq,
const vector< vector< double > >& S,
57 const vector< double >& diffConst )
59 const vector< double >& t0 = S[ index ];
62 const vector< double >& temp = S[ index + offset];
63 for (
unsigned int i = 0; i < f.size(); ++i ) {
64 f[i] += 2 * diffConst[i] * ( temp[i] - t0[i] ) * invSq;
66 }
else if ( rem >= static_cast< int >( n ) - offset ) {
67 const vector< double >& temp = S[ index - offset ];
68 for (
unsigned int i = 0; i < f.size(); ++i ) {
69 f[i] += 2 * diffConst[i] * ( temp[i] - t0[i] ) * invSq;
72 const vector< double >& tminus = S[ index - offset ];
73 const vector< double >& tplus = S[ index + offset ];
74 for (
unsigned int i = 0; i < f.size(); ++i ) {
75 f[i] += diffConst[i] * ( tminus[i] + tplus[i] - 2 * t0[i] ) * invSq;
100 const vector< vector< double > >& S,
101 const vector< double >& diffConst )
const
125 vector< double >& f,
const vector< vector< double > >& S,
126 const vector< double >& diffConst )
const
128 assert( f.size() <= S[0].size() );
131 assert( meshIndex < S.size() );
133 int index = meshIndex;
142 : dx_( dx ), dy_( dy ), nx_( nx )
164 vector< double >& f,
const vector< vector< double > >& S,
165 const vector< double >& diffConst )
const
167 assert( f.size() <= S[0].size() );
168 if ( S.size() < 2 *
nx_ )
170 assert( meshIndex < S.size() );
171 int index = meshIndex;
181 unsigned int nx,
unsigned int ny )
182 : dx_( dx ), dy_( dy ), nx_( nx ), ny_( ny )
212 vector< double >& f,
const vector< vector< double > >& S,
213 const vector< double >& diffConst )
const
215 assert( f.size() <= S[0].size() );
216 if ( S.size() < 2 *
nx_ )
218 assert( meshIndex < S.size() );
219 int index = meshIndex;
RectangleStencil(double dx, double dy, unsigned int nx)
void addFlux(unsigned int meshIndex, vector< double > &f, const vector< vector< double > > &S, const vector< double > &diffConst) const
void addFlux(unsigned int meshIndex, vector< double > &f, const vector< vector< double > > &S, const vector< double > &diffConst) const
CuboidStencil(double dx, double dy, double dz, unsigned int nx, unsigned int ny)
void addFlux(unsigned int meshIndex, vector< double > &f, const vector< vector< double > > &S, const vector< double > &diffConst) const
void stencil1(vector< double > &f, int index, unsigned int n, double invSq, const vector< vector< double > > &S, const vector< double > &diffConst)
void stencilN(vector< double > &f, int index, unsigned int n, int offset, double invSq, const vector< vector< double > > &S, const vector< double > &diffConst)
void addFlux(unsigned int meshIndex, vector< double > &f, const vector< vector< double > > &S, const vector< double > &diffConst) const