TwoPhaseInamuroIteration3D accessing negative index in rhoBar2_ field


I am setting up a two phase case using the immersed boundary capabilities in Palabos. My first attempt used the free-surface multi physics, as in the dam break tutorial, but failed because the two phase immersed boundary libraries do not seem to support the free-surface multi-physics at this time (correct me if I am wrong). My current code is using the multi-component model based on the “fallingDroplet” example, where both fluids are solved.

The error I am getting seems to indicate that the “TwoPhaseInamuroParam3D::rhoBar” function is being called with a negative x index, which fails the “PLB_PRECONDITION(iX>=0 && iXgetNx())” assertion method.

The call to the “get” method with a negative index is being made on line 817.

 813       template<typename T>
 814       T TwoPhaseInamuroParam3D<T>::rhoBar(plint iX, plint iY, plint iZ) const {
 815           int flag = getFlag(iX,iY,iZ);
 816           if (flag==twoPhaseFlag::empty) {
 817               return rhoBar2_->get(iX+ofsRhoBar2.x,iY+ofsRhoBar2.y,iZ+ofsRhoBar2.z);
 818           }
 819           else {
 820               return rhoBar_->get(iX,iY,iZ);
 821           }

I don’t know if this is a legitimate bug since I am not aware of any examples that use two phase with the immersed boundary. If anyone can provide such a case that works that would be a great help.


May have figured this out. Issue was due to not setting the “useImmersedWalls” argument in the TwoPhaseFields3d constructor. The argument has a default value of false.