Hello everybody, I am trying to simulate flow in .stl file using Darcy law. To do that, I try use class PressureGradient
from permability.cpp example and add it to aneurysm.cpp example. I add this class to palabos\src\offLatticeoff\LatticeBoundaryProfiles3D.h, it looks like this:
class PressureGradient: public BoundaryProfile3D<T, Array<T,3> >
{
public:
PressureGradient(T deltaP_, plint nx_);
virtual void setNormal(Array<T,3> const& normal_);
virtual void defineCircularShape(Array<T,3> const& center_, T radius_);
virtual void getData( Array<T,3> const& pos, plint id, AtomicBlock3D const* argument,
Array<T,3>& data, OffBoundary::Type& bdType ) const;
void operator() (plint iX, plint iY, plint iZ, T& density, Array<T,3>& velocity) const
{
velocity.resetToZero();
density = (T)1 - deltaP*3 / (T)(nx-1) * (T)iX;
}
virtual PressureGradient<T>* clone() const;
private:
T deltaP;
plint nx;
};
I call it in aneurysm example in setOpenings function:
void setOpenings(
std::vector<BoundaryProfile3D<T, Velocity>*>& inletOutlets,
TriangleBoundary3D<T>& boundary, T uLB, T dx, T dt, T deltaP, T nx){
for (pluint i = 0; i < openings.size(); ++i) {
Opening<T>& opening = openings[i];
opening.center = computeBaryCenter(
boundary.getMesh(),
boundary.getInletOutlet(openingSortDirection)[i]);
opening.innerRadius = computeInnerRadius(
boundary.getMesh(),
boundary.getInletOutlet(openingSortDirection)[i]);
if (opening.inlet) {
if (poiseuilleInlet) {
inletOutlets.push_back(
new PoiseuilleProfile3D<T>(uLB));
}
/*else {
inletOutlets.push_back(
new VelocityPlugProfile3D<T>(uLB));
}*/
else {
inletOutlets.push_back(
new PressureGradient<T>(deltaP,nx));
}
}
else {
inletOutlets.push_back(
new DensityNeumannBoundaryProfile3D<T>);
}
}}
Doing this like that I get following error:
allocating an object of abstract class type ‘PressureGradient’ (aka ‘PressureGradient’)
new PressureGradient(deltaP,(T)nx));
I am beginner Palabos user, so please help me solve that problem.