13 #ifndef eli_mutil_fd_d1o3_hpp
14 #define eli_mutil_fd_d1o3_hpp
18 #include "eli/code_eli.hpp"
26 template<
typename data__>
44 template<
typename itc__,
typename itphi__> data__
calculate_dot(itc__ a, itphi__ itphi)
const
46 data__ d(static_cast<data__>(0));
90 template<
typename iti__> std::ptrdiff_t
index(iti__ iti)
const
143 template<
typename itphi__>
int evaluate(data__ &d, itphi__ itphi,
const data__ &dx)
const
155 template<
typename itphi__,
typename itx__>
int evaluate(data__ &d, itphi__ itphi, itx__ itx)
const
167 template<
typename itc__>
int coefficients(itc__ itc,
const data__ &dx)
const
173 (*itc)=(
static_cast<data__
>(-1.0)/
static_cast<data__
>(3.0))/dx;++itc;
174 (*itc)=
static_cast<data__
>( 1.5)/dx;++itc;
175 (*itc)=
static_cast<data__
>(-3.0)/dx;++itc;
176 (*itc)=(
static_cast<data__
>( 11)/static_cast<data__>(6.0))/dx;
182 (*itc)=(
static_cast<data__
>( 1.0)/
static_cast<data__
>(6.0))/dx;++itc;
183 (*itc)=
static_cast<data__
>(-1.0)/dx;++itc;
184 (*itc)=
static_cast<data__
>(0.5)/dx;++itc;
185 (*itc)=(
static_cast<data__
>( 1.0)/
static_cast<data__
>(3.0))/dx;
191 (*itc)=(
static_cast<data__
>(-1.0)/
static_cast<data__
>(3.0))/dx;++itc;
192 (*itc)=
static_cast<data__
>(-0.5)/dx;++itc;
193 (*itc)=
static_cast<data__
>(1.0)/dx;++itc;
194 (*itc)=(
static_cast<data__
>(-1.0)/
static_cast<data__
>(6.0))/dx;
200 (*itc)=(
static_cast<data__
>(-11)/static_cast<data__>(6.0))/dx;++itc;
201 (*itc)=
static_cast<data__
>( 3.0)/dx;++itc;
202 (*itc)=
static_cast<data__
>(-1.5)/dx;++itc;
203 (*itc)=(
static_cast<data__
>( 1.0)/
static_cast<data__
>(3.0))/dx;
217 template<
typename itc__,
typename itx__>
int coefficients(itc__ itc, itx__ itx)
const
229 data__ alphaim1, betaim2, gammaim3;
234 (*itc)=-(alphaim1*betaim2)/(gammaim3*(gammaim3-betaim2)*(gammaim3-alphaim1));++itc;
235 (*itc)=+(alphaim1*gammaim3)/(betaim2*(gammaim3-betaim2)*(betaim2-alphaim1));++itc;
236 (*itc)=-(gammaim3*betaim2)/(alphaim1*(betaim2-alphaim1)*(gammaim3-alphaim1));++itc;
237 (*itc)=+(1/alphaim1+1/betaim2+1/gammaim3);
243 data__ alphai, alphaim1, betaim2;
248 (*itc)=+(alphai*alphaim1)/(betaim2*(alphai+betaim2)*(betaim2-alphaim1));++itc;
249 (*itc)=-(betaim2*alphai)/(alphaim1*(alphai+alphaim1)*(betaim2-alphaim1));++itc;
250 (*itc)=+(1/alphaim1-1/alphai+1/betaim2);++itc;
251 (*itc)=+(alphaim1*betaim2)/(alphai*(alphai+alphaim1)*(alphai+betaim2));
257 data__ alphai, alphaim1, betai;
262 (*itc)=-(alphai*betai)/(alphaim1*(alphaim1+betai)*(alphai+alphaim1));++itc;
263 (*itc)=-(1/alphai-1/alphaim1+1/betai);++itc;
264 (*itc)=+(alphaim1*betai)/(alphai*(alphai+alphaim1)*(betai-alphai));++itc;
265 (*itc)=-(alphai*alphaim1)/(betai*(alphaim1+betai)*(betai-alphai));
271 data__ alphai, betai, gammai;
276 (*itc)=-(1/alphai+1/betai+1/gammai);++itc;
277 (*itc)=+(betai*gammai)/(alphai*(gammai-alphai)*(betai-alphai));++itc;
278 (*itc)=-(alphai*gammai)/(betai*(gammai-betai)*(betai-alphai));++itc;
279 (*itc)=+(alphai*betai)/(gammai*(gammai-alphai)*(gammai-betai));
304 te=-phi4*dx*dx*dx/12;
327 template<
typename itx__>
int truncation_error(data__ &te,
const data__ &phi4, itx__ itx)
const
339 data__ alphaim1, betaim2, gammaim3;
344 te=phi4*alphaim1*betaim2*gammaim3/
static_cast<data__
>(24);
349 data__ alphai, alphaim1, betaim2;
354 te=-phi4*alphai*alphaim1*betaim2/
static_cast<data__
>(24);
359 data__ alphai, alphaim1, betai;
364 te=phi4*alphai*alphaim1*betai/
static_cast<data__
>(24);
369 data__ alphai, betai, gammai;
374 te=-phi4*alphai*betai*gammai/
static_cast<data__
>(24);
int order(bool) const
Definition: d1o3.hpp:80
stencil
Definition: d1o3.hpp:30
const stencil & get_stencil() const
Definition: d1o3.hpp:75
~d1o3()
Definition: d1o3.hpp:67
size_t number_nodes() const
Definition: d1o3.hpp:85
void set_stencil(const stencil &s)
Definition: d1o3.hpp:71
int coefficients(itc__ itc, const data__ &dx) const
Definition: d1o3.hpp:167
int truncation_error(data__ &te, const data__ &phi4, const data__ &dx) const
Definition: d1o3.hpp:293
data__ calculate_dot(itc__ a, itphi__ itphi) const
Definition: d1o3.hpp:44
d1o3(const stencil &s)
Definition: d1o3.hpp:59
d1o3(const d1o3< data__ > &d)
Definition: d1o3.hpp:63
std::ptrdiff_t index(iti__ iti) const
Definition: d1o3.hpp:90
const size_t nnodes
Definition: d1o3.hpp:39
stencil st
Definition: d1o3.hpp:41
int truncation_error(data__ &te, const data__ &phi4, itx__ itx) const
Definition: d1o3.hpp:327
int coefficients(itc__ itc, itx__ itx) const
Definition: d1o3.hpp:217
int evaluate(data__ &d, itphi__ itphi, itx__ itx) const
Definition: d1o3.hpp:155
int evaluate(data__ &d, itphi__ itphi, const data__ &dx) const
Definition: d1o3.hpp:143
d1o3()
Definition: d1o3.hpp:55
const int n_order
Definition: d1o3.hpp:40