Skip to content

Add support for pressure and outflow boundary conditions on all sides (GPU)

In !357 (merged) we limited the use of the pressure and outflow boundary conditions. The pressure and the outflow condition can currently only be used at the positive x side of the fluid domain (see issue #176 (closed)).

This merge adds support for pressure boundary conditions on all sides of the domain.

Details:

  • Add a struct for boundary conditions with an assigned direction
  • Use this struct to ass support for pressure boundary conditions on all sides of the domain
  • Remove outflow boundary condition from BoundaryConditionManager and Simulation.cpp, as it is unused.
  • Remove unnecessary consts from BoundaryConditionManager
  • Make BoundaryConditionFactory constant in a lot of places
  • Add app LaminarPipeFlow on GPU to check the correctness of the pressure boundary condition
  • Add an additional constructor for the Cylinder geometry. This constructor allows us to make the LaminarPipeFlow app more similar to the CPU version
  • Improve conditioning of density calculation in PressureNonEquilibriumCompressible and PressureNonEquilibriumIncompressible.
  • Fix bug in density calculation for in PressureNonEquilibriumCompressible (f_1[d000] instead of f[d000])

The pressure and the velocity in the app LaminarPipeFlow were incorrect before this merge. The pressure is fixed in this merge with the improved conditioning of the density calculation in PressureNonEquilibriumCompressible. The velocity depends on the grid resolution. For more information see issue #191 (closed).

Closes #176 (closed)

To do:

  • fix regression tests
  • Update regression tests after improved conditioning and bugfix in density calculation: SphereInChannel
  • Update regression tests after improved conditioning and bugfix in density calculation: SphereMultiGPU
  • Add regression test for LaminarPipeFlow
Edited by Anna Wellmann

Merge request reports