Roman Krylov wrote:
Tried to use CIC for interpolation - it complains about not enough
guardLayers size.
To reproduce the fault:
change 'NGP' to 'CIC' in <pooma>/examples/Particles/PIC2d/PIC2d.cpp
so the line will be:
> typedef CIC InterpolatorTag_t;
make clean && make
./<suite>/PIC2d
...
### POOMA Assertion Failure ###
### Minimum GuardLayer width of 1 required for CIC!
### File /usr/src/POOMA/pooma/src/Particles/InterpolatorCIC.h; Line
159.
Pooma::pAbort called.
In default abort handler.
Aborted
By the way SOMEFIELD.layout().internalGuards().lower(0) returns 0,
whereas GuardLayer initialized with width of 1.
Is the problem with GuardLayers ?
From a quick look it looks like the E-Field (EFD) is _not_ initialized
with guard layers:
// Create and initialize electrostatic potential and electric field.
DField_t phi(cell,flayoutGL,mesh);
VecField_t EFD(cell,flayout,mesh);
i.e. EFD should probably use flayoutGL, too, here, as we gather into it
with the CIC interpolator later:
// Gather the E field to the particle positions
out << "Gather E field ..." << std::endl;
gather( P.E, EFD, P.R, Particles_t::InterpolatorTag_t() );
Richard.