Hello!
I want to initialize my domain with specific velocities. Following is the class created to apply velocity
[code=“cpp”]
template
class ImposeVelocity{
public:
ImposeVelocity(MultiTensorField3D<T,3> velocity_)
:velocity(velocity_)
{ }
void operator()(plint iX, plint iY, plint iZ, T& rho, Array<T,3>& u) const {
rho = 0.0;
u[0] = velocity.get(iX,iY,iZ)[0];
u[1] = velocity.get(iX,iY,iZ)[1];
u[2] = velocity.get(iX,iY,iZ)[2];
}
private:
MultiTensorField3D<T,3> velocity;
};
Then I have used this in initializing :
[code="cpp"]
// Initializing with equilibrium values
initializeAtEquilibrium (a_lattice, a_lattice.getBoundingBox(),new BounceBackNodes<T>(ymixer), ImposeVelocity<T>(domainvelocity));
defineDynamics(a_lattice, a_lattice.getBoundingBox(), new BounceBackNodes<T>(ymixer), new BounceBack<T,DESCRIPTOR>);
a_lattice.initialize(); // Initializes the lattice with constant density and zero velocity
But I am getting following compilation error:
undefined reference to `void plb::initializeAtEquilibrium<double, plb::descriptors::D3Q19Descriptor, ImposeVelocity >(plb::MultiBlockLattice3D<double, plb::descriptors::D3Q19Descriptor>&, plb::Box3D, plb::DomainFunctional3D*, ImposeVelocity)’|
Can anyone suggest how I can impose velocity in whole domain?
Thanks in advance.