flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
Loading...
Searching...
No Matches
peclet::flow::vof::VofBlockExchangeBase Struct Referenceabstract

Gather / scatter / table replication. More...

#include <block_container.hpp>

Inheritance diagram for peclet::flow::vof::VofBlockExchangeBase:
peclet::flow::vof::VofBlockExchange

Public Member Functions

virtual ~VofBlockExchangeBase ()=default
 
virtual void gatherFaceVel (std::vector< VofBlock > &blocks, int ghost)=0
 Fill every MASTER block's faceU/V/W over its EXTENDED box, from the face velocity the ranks own.
 
virtual void scatterColourMax (std::vector< VofBlock > &blocks, SField cLocal)=0
 UNION the masters' inner colour into the caller's local colour patch: zero the inner region, then C = max(C, C_block) cell by cell (TBFsolver's UNPACK_MAX).
 
virtual void syncTable (std::vector< VofBlock > &blocks)=0
 Replicate the (possibly re-centred) boxes so every rank's table agrees again.
 
virtual void gatherColour (std::vector< VofBlock > &blocks, SField cLocal)=0
 Fill every MASTER block's INNER colour from the caller's colour patch (the mirror of scatterColourMax).
 
virtual void scatterForceSum (std::vector< VofBlock > &blocks, SField fx, SField fy, SField fz)=0
 SUM every master block's CSF face force into the caller's three face-force patches (TBFsolver's UNPACK_SUM, VOF.f90::computeSurfaceTension): overlapping markers ADD their forces, which is what makes two touching bubbles push on the fluid twice and not once.
 
virtual void scatterColourSum (std::vector< VofBlock > &, SField)
 SUM every master block's inner colour into the caller's colour patch: S = sum_k C_k, the overlap measure beside the MAX union (doc/vof_overlap_design.md §5.6).
 
virtual void migrateColour (std::vector< VofBlock > &blocks, const std::vector< int > &oldMaster)=0
 Move a block's state from oldMaster[i] to blocks[i].master after a re-assignment.
 
virtual long gatherBytes () const
 Bytes moved by the last gather / scatter on THIS rank (sent + received).
 
virtual long scatterBytes () const
 

Detailed Description

Gather / scatter / table replication.

Kept abstract so block_container.hpp stays MPI-free and the single-rank Python module builds it unchanged.

Definition at line 383 of file block_container.hpp.

Constructor & Destructor Documentation

◆ ~VofBlockExchangeBase()

virtual peclet::flow::vof::VofBlockExchangeBase::~VofBlockExchangeBase ( )
virtualdefault

Member Function Documentation

◆ gatherFaceVel()

virtual void peclet::flow::vof::VofBlockExchangeBase::gatherFaceVel ( std::vector< VofBlock > &  blocks,
int  ghost 
)
pure virtual

Fill every MASTER block's faceU/V/W over its EXTENDED box, from the face velocity the ranks own.

Cells outside a non-periodic domain come from the ghost layers of the rank whose box touches that domain face — the doubles the global-field advector consumes there. They are NOT a clamp fill: uf(i) is the HIGH face of cell i, so the LOW domain face (a wall's normal velocity, an inflow's datum) sits at global index -1. A zero-gradient copy of index 0 put the first interior face's velocity on a no-slip wall, and every marker with colour in the wall-adjacent layer then gained or lost volume through the wall (bubble column, 2026-09-25: up to 1e-5 of a marker per step).

Implemented in peclet::flow::vof::VofBlockExchange.

◆ scatterColourMax()

virtual void peclet::flow::vof::VofBlockExchangeBase::scatterColourMax ( std::vector< VofBlock > &  blocks,
SField  cLocal 
)
pure virtual

UNION the masters' inner colour into the caller's local colour patch: zero the inner region, then C = max(C, C_block) cell by cell (TBFsolver's UNPACK_MAX).

Implemented in peclet::flow::vof::VofBlockExchange.

◆ syncTable()

virtual void peclet::flow::vof::VofBlockExchangeBase::syncTable ( std::vector< VofBlock > &  blocks)
pure virtual

Replicate the (possibly re-centred) boxes so every rank's table agrees again.

Implemented in peclet::flow::vof::VofBlockExchange.

◆ gatherColour()

virtual void peclet::flow::vof::VofBlockExchangeBase::gatherColour ( std::vector< VofBlock > &  blocks,
SField  cLocal 
)
pure virtual

Fill every MASTER block's INNER colour from the caller's colour patch (the mirror of scatterColourMax).

Used to seed a block from an arbitrary global colour field — the general seeding path, which a sphere seed is only a convenience over.

Implemented in peclet::flow::vof::VofBlockExchange.

◆ scatterForceSum()

virtual void peclet::flow::vof::VofBlockExchangeBase::scatterForceSum ( std::vector< VofBlock > &  blocks,
SField  fx,
SField  fy,
SField  fz 
)
pure virtual

SUM every master block's CSF face force into the caller's three face-force patches (TBFsolver's UNPACK_SUM, VOF.f90::computeSurfaceTension): overlapping markers ADD their forces, which is what makes two touching bubbles push on the fluid twice and not once.

Implemented in peclet::flow::vof::VofBlockExchange.

◆ scatterColourSum()

virtual void peclet::flow::vof::VofBlockExchangeBase::scatterColourSum ( std::vector< VofBlock > &  ,
SField   
)
inlinevirtual

SUM every master block's inner colour into the caller's colour patch: S = sum_k C_k, the overlap measure beside the MAX union (doc/vof_overlap_design.md §5.6).

S > 1 exactly where two markers interpenetrate. Same machinery and block order as scatterForceSum.

Reimplemented in peclet::flow::vof::VofBlockExchange.

Definition at line 410 of file block_container.hpp.

◆ migrateColour()

virtual void peclet::flow::vof::VofBlockExchangeBase::migrateColour ( std::vector< VofBlock > &  blocks,
const std::vector< int > &  oldMaster 
)
pure virtual

Move a block's state from oldMaster[i] to blocks[i].master after a re-assignment.

The gaining rank has ALREADY allocated the (zeroed) advector; only the colour travels — everything else in a block is either replicated (the table) or recomputed per step.

Implemented in peclet::flow::vof::VofBlockExchange.

◆ gatherBytes()

virtual long peclet::flow::vof::VofBlockExchangeBase::gatherBytes ( ) const
inlinevirtual

Bytes moved by the last gather / scatter on THIS rank (sent + received).

Reimplemented in peclet::flow::vof::VofBlockExchange.

Definition at line 418 of file block_container.hpp.

◆ scatterBytes()

virtual long peclet::flow::vof::VofBlockExchangeBase::scatterBytes ( ) const
inlinevirtual

Reimplemented in peclet::flow::vof::VofBlockExchange.

Definition at line 419 of file block_container.hpp.


The documentation for this struct was generated from the following file: