71 std::size_t iT = vars.template get<fd::fdParams::Timestep>();
72 T f[MODEL::extent()*DESCRIPTOR::d], F[MODEL::extent()*DESCRIPTOR::d];
74 T* fNew = fd::accessNew<T,FIELD>(cell, iT);
75 T* f0 = fd::accessOld<T,FIELD>(cell, iT);
76 for (
int iN=1; iN<=MODEL::extent(); ++iN) {
77 f[fd::getArrayPos<MODEL::extent()>(iN-1,0)] = *fd::accessOld<T,FIELD>( cell.neighbor({-iN, 0, 0}), iT );
78 F[fd::getArrayPos<MODEL::extent()>(iN-1,0)] = *fd::accessOld<T,FIELD>( cell.neighbor({+iN, 0, 0}), iT );
79 f[fd::getArrayPos<MODEL::extent()>(iN-1,1)] = *fd::accessOld<T,FIELD>( cell.neighbor({ 0, -iN, 0}), iT );
80 F[fd::getArrayPos<MODEL::extent()>(iN-1,1)] = *fd::accessOld<T,FIELD>( cell.neighbor({ 0, +iN, 0}), iT );
81 f[fd::getArrayPos<MODEL::extent()>(iN-1,2)] = *fd::accessOld<T,FIELD>( cell.neighbor({ 0, 0, -iN}), iT );
82 F[fd::getArrayPos<MODEL::extent()>(iN-1,2)] = *fd::accessOld<T,FIELD>( cell.neighbor({ 0, 0, +iN}), iT );
85 MODEL::apply(fNew, f0, f, F, u, vars);
86 this->applySourceTerm(fNew, cell);