Pressure Boundary with ShanChenD2Q9 descriptor

Hi,

I tried to solve liquid intrusion into vapor phase in porous media with ShanChan single component processor2D.
As mentioned in LBMethod.org,
setBoundaryDensity did not work for my code, too. Part of code for setup BCs is below:


void porousMediaSetup( MultiBlockLattice2D<T,DESCRIPTOR>& lattice,
                       OnLatticeBoundaryCondition2D<T,DESCRIPTOR>* boundaryCondition,
                       MultiScalarField2D<int>& geometry, T rhol_inlet, T rhov, T virt_density, plint nx_inlet)
{
        const plint nx = lattice.getNx();
        const plint ny = lattice.getNy();
//        const plint nz = lattice.getNz();

        pcout << "Definition of inlet/outlet." << endl;
//        Box3D inlet (0,0, 1,ny-2, 1,nz-2);
        Box2D inlet(0,0, 0,ny-1);
		boundaryCondition->addPressureBoundary0N(inlet, lattice);
        setBoundaryDensity(lattice, inlet, rhol_inlet);

//        Box3D outlet(nx-1,nx-1, 1,ny-2, 1,nz-2);
        Box2D outlet(nx-1,nx-1, 0,ny-1);
        boundaryCondition->addPressureBoundary0P(outlet, lattice);
        setBoundaryDensity(lattice, outlet, rhov);


		pcout << "Define Bounce-back" << endl;
        // Where "geometry" evaluates to 1, use bounce-back.
        defineDynamics(lattice, geometry, new BounceBack<T, DESCRIPTOR>(virt_density), 1);
        // Where "geometry" evaluates to 2, use no-dynamics (which does nothing).
        defineDynamics(lattice, geometry, new NoDynamics<T, DESCRIPTOR>(), 2);

	    pcout << "Initilization of rho and u." << endl;

		initializeAtEquilibrium (lattice, Box2D(0, nx_inlet-1, 0, ny-1), rhol_inlet, Array<T,2>(0.0,0.0) );
		initializeAtEquilibrium (lattice, Box2D(nx_inlet, nx-1, 0,ny-1), rhov, Array<T,2>(0.0, 0.0) );
//		initializeAtEquilibrium (lattice, Box2D(0, nx-1, 0, ny-1),  rhov, Array<T,2>(0.0,0.0) );

        lattice.initialize();
        delete boundaryCondition;

At x=0, density reads as a low value, not as a high value which is setup as rhol_inlet. So,
initially higher density (initializeAtEquilibrium (lattice, Box2D(0, nx_inlet-1, 0, ny-1), rhol_inlet, Array<T,2>(0.0,0.0) ):wink: dissipates quickly, and then becomes non-physical.

I wonder if this boundary setup is supported with ShanChen single component processor. I am digging out actual links, but it seems to me it should work.

Thank you,

hyoon