13 #ifndef eli_mutil_fd_d2o1_hpp
14 #define eli_mutil_fd_d2o1_hpp
18 #include "eli/code_eli.hpp"
26 template<
typename data__>
43 template<
typename itc__,
typename itphi__> data__
calculate_dot(itc__ a, itphi__ itphi)
const
45 data__ d(static_cast<data__>(0));
82 if (uniform && (st==
CENTER))
93 template<
typename iti__> std::ptrdiff_t
index(iti__ iti)
const
134 template<
typename itphi__>
int evaluate(data__ &d, itphi__ itphi,
const data__ &dx)
const
146 template<
typename itphi__,
typename itx__>
int evaluate(data__ &d, itphi__ itphi, itx__ itx)
const
158 template<
typename itc__>
int coefficients(itc__ itc,
const data__ &dx)
const
164 (*itc)=
static_cast<data__
>( 1)/dx/dx;++itc;
165 (*itc)=
static_cast<data__
>(-2)/dx/dx;++itc;
166 (*itc)=
static_cast<data__
>( 1)/dx/dx;
172 (*itc)=
static_cast<data__
>( 1)/dx/dx;++itc;
173 (*itc)=
static_cast<data__
>(-2)/dx/dx;++itc;
174 (*itc)=
static_cast<data__
>( 1)/dx/dx;
180 (*itc)=
static_cast<data__
>( 1)/dx/dx;++itc;
181 (*itc)=
static_cast<data__
>(-2)/dx/dx;++itc;
182 (*itc)=
static_cast<data__
>( 1)/dx/dx;
196 template<
typename itc__,
typename itx__>
int coefficients(itc__ itc, itx__ itx)
const
209 data__ alphaim1, betaim2;
213 (*itc)= 2/(betaim2*(betaim2-alphaim1));++itc;
214 (*itc)=-2/(alphaim1*(betaim2-alphaim1));++itc;
215 (*itc)= 2/(alphaim1*betaim2);
221 data__ alphai, alphaim1;
225 (*itc)= 2/(alphaim1*(alphai+alphaim1));++itc;
226 (*itc)=-2/(alphai*alphaim1);++itc;
227 (*itc)= 2/(alphai*(alphai+alphaim1));
233 data__ alphai, betai;
237 (*itc)= 2/(alphai*betai);++itc;
238 (*itc)=-2/(alphai*(betai-alphai));++itc;
239 (*itc)= 2/(betai*(betai-alphai));
282 template<
typename itx__>
int truncation_error(data__ &te,
const data__ &phi3, itx__ itx)
const
295 data__ alphaim1, betaim2;
299 te=phi3*(alphaim1+betaim2)/3;
304 data__ alphai, alphaim1;
308 if (alphai==alphaim1)
309 te=-alphai*alphaim1/12;
311 te=-phi3*(alphai-alphaim1)/3;
316 data__ alphai, betai;
320 te=-phi3*(alphai+betai)/3;
const stencil & get_stencil() const
Definition: d2o1.hpp:75
size_t number_nodes() const
Definition: d2o1.hpp:88
data__ calculate_dot(itc__ a, itphi__ itphi) const
Definition: d2o1.hpp:43
int coefficients(itc__ itc, itx__ itx) const
Definition: d2o1.hpp:196
const int n_order
Definition: d2o1.hpp:39
d2o1()
Definition: d2o1.hpp:54
void set_stencil(const stencil &s)
Definition: d2o1.hpp:70
d2o1(const d2o1< data__ > &d)
Definition: d2o1.hpp:62
int truncation_error(data__ &te, const data__ &phi3, itx__ itx) const
Definition: d2o1.hpp:282
~d2o1()
Definition: d2o1.hpp:66
int evaluate(data__ &d, itphi__ itphi, const data__ &dx) const
Definition: d2o1.hpp:134
d2o1(const stencil &s)
Definition: d2o1.hpp:58
stencil st
Definition: d2o1.hpp:40
int evaluate(data__ &d, itphi__ itphi, itx__ itx) const
Definition: d2o1.hpp:146
int order(bool uniform) const
Definition: d2o1.hpp:80
int coefficients(itc__ itc, const data__ &dx) const
Definition: d2o1.hpp:158
const size_t nnodes
Definition: d2o1.hpp:38
int truncation_error(data__ &te, const data__ &phi3, const data__ &dx) const
Definition: d2o1.hpp:253
std::ptrdiff_t index(iti__ iti) const
Definition: d2o1.hpp:93
stencil
Definition: d2o1.hpp:30