70{
71 std::size_t iT = vars.template get<fd::fdParams::Timestep>();
72 T f[MODEL::extent()*DESCRIPTOR::d], F[MODEL::extent()*DESCRIPTOR::d];
73 T u[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 );
83 }
84 cell.computeU(u);
85 MODEL::apply(fNew, f0, f, F, u, vars);
87}
void applySourceTerm(T *fNew, CELL &cell) any_platform