How to get a pressure boundary condition as triangle distribution by FlowEngine

Asked by Huang peilun on 2021-03-24

Hello all,

As we know, water pressure increases with depth. (Pressure=denstiy*g*depth)
I want to use FlowEngine to get a pressure boundary that the pressure is increasing with depth. However, I find that by setting "bndCondValue"[1] can only get a uniform pressure at the boundary, which doesn't change with depth. I've read through the FlowEngine class reference [2] to get some ideas. I think I can search for the cells which are outermost and use "setCellPressure" [3] to get a boundary that the pressure increases with depth. But this is too complicated. Is there any better idea?

Thank you for any suggestions.

[1] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.FlowEngine.bndCondValue
[2] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.FlowEngine
[3] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.FlowEngine.setCellPressure

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Robert Caulk
Solved:
2021-03-24
Last query:
2021-03-24
Last reply:
2021-03-24
Best Robert Caulk (rcaulk) said : #1

Hello,

>> I think I can search for the cells which are outermost and use "setCellPressure" [3] to get a boundary that the pressure increases with depth. But this is too complicated. Is there any better idea?

That would be the solution, or use imposePressureFromId if you know the IDs of the cells you want to impose. So assuming the cells you want to set are already the boundaries:

 for i in range(0,flow.nCells()):
  coords = flow.getCellCenter(i)
  pressure_imposed = flow.getCellPImposed(i)
  if not pressure_imposed: continue
  zcoord = coords[0]
  pressure = density*g*zcoord
  flow.imposePressureFromId(i,pressure)

Cheers,

Robert

Huang peilun (hpl16) said : #2

Thanks Robert Caulk, that solved my question.

> As we know, water pressure increases with depth. (Pressure=denstiy*g*depth)

True, but the pressure in PFV implementation is not the absolute pressure, it is the piezometric pressure (water "head" given in Pa).
And as we know water head is constant with depth in equilibrium states. So you don't have to worry about a linear boundary condition, it should be just constant - much easier.

The downside is that Archimede buoyancy is not included automatically. PFV only cares about drag due to relative phases motion. So you need to add buoyancy as additional external forces if your problem is gravitational.

Regards

Bruno