Hi everyone;

I am trying to capture the pressure difference between inlet and outlet under increasing inlet velocity, something looks like the below image. I apply the velocity at the inlet by using the following command:

boundaryCondition.setVelocityConditionOnBlockBoundaries ( lattice, inlet );

setBoundaryVelocity(lattice, inlet, Array<T,3>((T)0.0,(T)0.0,(T)0.00733));

And pressure values are obtained by pressure = ComputeDensity * cs^2 . And I used periodic boundary in the z-direction.

However, my velocity and pressure at the outlet just keep changing. And the physical pressure is much smaller than expected. At each interation, the average rho at inlet and outlet just keep increasing.

Does anyone have any idea how I can stable the outlet variables to achieve the pressure difference corresponding with the inlet velocity?

Thank you

Can anyone help me with this problem? I have tried several method . For example, set the outlet density to 1, apply the initialEquilibrium condition. But nothing worked. My average density just keeps increasing.

Thank you

Hello,

I’m not sure what you are trying to do here. You are imposing a fixed velocity on the inlet. Where is this inlet located? Where are you computing the pressure difference?

It is in general very difficult to relate a pressure drop with an inlet velocity (it is possible only for very simple geometries such as the poiseuille flow).

Hi Orestis;

Thank you for replying. I am modelling D3Q19 model which the velocity flows upward (z direction). And yes, I want to apply a fixed velocity at the bottom of the channel (inlet) and then obtain the pressure difference between the inlet and outlet. Is it possible to do it ? My problem is when I fix the density at outlet, the average density just keep increasing until 2 and then the code stop working.

Following is my code:

Box3D wall1 (0,nx-1,0,0,1,nz-2) , wall2 (0,0,0,ny-0,1,nz-2) , wall3 (nx-1,nx-1,0,ny-1,1,nz-2), wall4 (0,nx-1,ny-1,ny-1,1,nz-2);

Box3D inlet(0,nx-1,0,ny-1,-2,-2), outlet(0,nx-1,0,ny-1,nz-1,nz-1);

```
boundaryCondition.setVelocityConditionOnBlockBoundaries ( lattice, inlet, boundary::dirichlet);
boundaryCondition.setPressureConditionOnBlockBoundaries ( lattice, outlet, boundary::neumann);
boundaryCondition.setVelocityConditionOnBlockBoundaries (
lattice, wall1, boundary::freeslip );
boundaryCondition.setVelocityConditionOnBlockBoundaries (
lattice, wall2, boundary::freeslip );
boundaryCondition.setVelocityConditionOnBlockBoundaries (
lattice, wall3, boundary::freeslip );
boundaryCondition.setVelocityConditionOnBlockBoundaries (
lattice, wall4, boundary::freeslip );
setBoundaryDensity(lattice, outlet, (T) 1.0);
setBoundaryVelocity(lattice, inlet, Array<T,3>((T)0.0,(T)0.0,(T)0.00733));
```

Hi,

I then corrected my code to the Poiseuille flow as you mention. However, the problem this time is the average density at the inlet is constant (1) but the average density at outlet kept decreasing to 0.98 and then the code stop running.

Here is my code

T poiseuilleVelocity(plint iY, plint iZ, IncomprFlowParam const& parameters) {

T y = (T)iY / parameters.getResolution();

T z = (T)iZ / parameters.getResolution();

return 4.*parameters.getLatticeU() * (y-y*y) * (z-z*z);

}

template

class PoiseuilleVelocity {

public:

PoiseuilleVelocity(IncomprFlowParam parameters_)

: parameters(parameters_)

{ }

void operator()(plint iX, plint iY, plint iZ, Array<T,3>& u) const {

u[0] = T();

u[1] = T();

u[2] = poiseuilleVelocity(iX, iY, parameters);

}

private:

IncomprFlowParam parameters;

};

void channelSetup( MultiBlockLattice3D<T,DESCRIPTOR>& lattice,

IncomprFlowParam const& parameters,

```
OnLatticeBoundaryCondition3D<T,DESCRIPTOR>& boundaryCondition )
{
plint nx = parameters.getNx(), ny = parameters.getNy(), nz = parameters.getNz();
Box3D wall1 (1,nx-2,1,1,0,nz-1) , wall2 (1,1,1,ny-2,0,nz-1) , wall3 (nx-2,nx-2,1,ny-2,0,nz-1), wall4 (1,nx-2,ny-2,ny-2,0,nz-1);
Box3D inlet(0,nx-1,0,ny-1,-2,-2), outlet(0,nx-1,0,ny-1,nz-1,nz-1);
```

boundaryCondition.setVelocityConditionOnBlockBoundaries(lattice);

```
setBoundaryVelocity (
lattice, lattice.getBoundingBox(),
PoiseuilleVelocity<T>(parameters) );
```

}

I am not sure where I did it wrong.

I still cannot figure out my issue. I saw many previous study using the conventional CFD to obtain this phenomenon ( apply the velocity inlet and get the pressure difference). I am not sure how to do so in LBM. Can anyone help me with this problem? I have to submit my master thesis in March but until now my model still have many problem.

Thank you