Data Processor for local operation

Dear all,

after a geometry has been imported into the sim domain via boolMask I need to check the particle density of each cell and exchange it, if it deviates from a certain value.
For this purpose I wrote a data processor:

[code=“cpp”]
template<typename T, template class Descriptor>
class ChangeDensity3D : public BoxProcessingFunctional3D_LS<T,Descriptor,bool>
{
public:
virtual void process(Box3D domain, BlockLattice3D<T,Descriptor>& lattice, ScalarField3D& mask)
{
//typedef Descriptor D;
Dot3D offset=computeRelativeDisplacement(lattice, mask);
for (plint iX=domain.x0; iX<=domain.x1; ++iX)
{
for (plint iY=domain.y0; iY<=domain.y1; ++iY)
{
for(plint iZ=domain.z0; iZ<=domain.z1; ++iZ)
{
bool flag = mask.get(iX+offset.x, iY+offset.y, iZ=offset.z);
if (flag==false)
{
Cell<T,Descriptor>& cell = lattice.get(iX,iY,iZ);
T density;
density = cell.computeDensity();
if (density < 1)
{
density = 1;
Array<T,3> velocity;
cell.computeVelocity(velocity);
iniCellAtEquilibrium(cell, density, velocity);

                        }
                    }
                }

            }
        }
    }
virtual ChangeDensity3D<T,Descriptor,bool>* clone() const
{
return new ChangeDensity3D<T,Descriptor>(*this);
}

void getTypeOfModification(std::vector<modif::ModifT>& modified) const
{
modified[0] = modif::staticVariables;
}
virtual BlockDomain::DomainT appliesTo() const
{
return BlockDomain::bulkAndEnvelope;
}

};



which is called by:

[code="cpp"]

applyProcessingFunctional(new ChangeDensity3D<T,DESCRIPTOR>, lattice.getBoundingBox(), lattice, boolMask);


after the collideAndStream-Step.

However, I get an error message: ‘ChangeDensity3D’ does not name a type.
But I can’t see the reason for the error.

Thank you in advance!
Hanseato