Public Member Functions | List of all members
meshCutter Class Reference

Cuts (splits) cells. More...

Inheritance diagram for meshCutter:
Inheritance graph
[legend]
Collaboration diagram for meshCutter:
Collaboration graph
[legend]

Public Member Functions

 ClassName ("meshCutter")
 
 meshCutter (const polyMesh &mesh)
 
 ~meshCutter ()=default
 
void setRefinement (const cellCuts &cuts, polyTopoChange &meshMod)
 
void updateMesh (const mapPolyMesh &)
 
const Map< label > & addedCells () const
 
const Map< label > & addedFaces () const
 
const EdgeMap< label > & addedPoints () const
 
- Public Member Functions inherited from edgeVertex
 edgeVertex (const polyMesh &mesh)
 
const polyMeshmesh () const
 
bool isEdge (const label eVert) const
 
label getEdge (const label eVert) const
 
label getVertex (const label eVert) const
 
label vertToEVert (const label vertI) const
 
label edgeToEVert (const label edgeI) const
 
point coord (const label cut, const scalar weight) const
 
label cutPairToEdge (const label cut0, const label cut1) const
 
OstreamwriteCut (Ostream &os, const label cut, const scalar) const
 
OstreamwriteCuts (Ostream &os, const labelList &, const scalarField &) const
 

Additional Inherited Members

- Static Public Member Functions inherited from edgeVertex
static void updateLabels (const labelList &map, List< refineCell > &)
 
static void updateLabels (const labelList &map, Map< label > &)
 
static void updateLabels (const labelList &map, labelHashSet &)
 
static bool isEdge (const primitiveMesh &mesh, const label eVert)
 
static label getEdge (const primitiveMesh &mesh, const label eVert)
 
static label getVertex (const primitiveMesh &mesh, const label eVert)
 
static label vertToEVert (const primitiveMesh &mesh, const label vertI)
 
static label edgeToEVert (const primitiveMesh &mesh, const label edgeI)
 
static point coord (const primitiveMesh &, const label cut, const scalar weight)
 
static label cutPairToEdge (const primitiveMesh &, const label cut0, const label cut1)
 

Detailed Description

Cuts (splits) cells.

Description of cut is given as a loop of 'cuts' per cell (see cellCuts). setRefinement() takes this cut description and inserts the necessary topoActions (add points/faces/cells) into the polyTopoChange.

Stores added cells/faces/points.

Cut description gives orientation to cut by calculating 'anchorPoints'. The side of the cell that contains the anchorPoints is the master cell. Likewise the cells' edges will have the split added as a duplicate of the master (anchor) point. Think of it as the cell with the anchor points at the bottom. Add a face at the bottom to split the cell and then sweep this face up to be through the middle of the cell (inflation).

  1. Start: cell with anchor points at bottom
    +-------+
    |       +
    |       +
    |       +
    |       +
    |       +
    |       +
    |       +
    +-------+
    anchor  anchor
    
  2. Topo change: splitface introduced at bottom of cell, introducing a new cell and splitting the side faces into two.
    +-------+
    |       +
    |       +
    |       + <- addedCell
    |       +
    |       +
    |       +
    +-------+ <- splitFace
    +-------+ <- original cell
    anchor  anchor
    
  3. Inflation: splitface shifted up to middle of cell (or wherever cut was)
    +-------+
    |       +
    |       + <- addedCell
    |       +
    +-------+ <- splitFace
    |       +
    |       + <- original cell
    |       +
    +-------+
    anchor  anchor
    

Anyway this was the original idea. Inflation was meant to handle conservative properties distribution without interpolation. (just face sweeping through space). But problem was that only if the introduced splitface was exactly the same shape as bottom face (so same 2D topo or perfectly flat) the volume between them was 0.

This meshCutting still uses anchorPoints though:

Source files

Definition at line 134 of file meshCutter.H.

Constructor & Destructor Documentation

◆ meshCutter()

meshCutter ( const polyMesh mesh)
explicit

Definition at line 502 of file meshCutter.C.

◆ ~meshCutter()

~meshCutter ( )
default

Member Function Documentation

◆ ClassName()

ClassName ( "meshCutter"  )

◆ setRefinement()

void setRefinement ( const cellCuts cuts,
polyTopoChange meshMod 
)

◆ updateMesh()

void updateMesh ( const mapPolyMesh morphMap)

◆ addedCells()

const Map<label>& addedCells ( ) const
inline

Definition at line 297 of file meshCutter.H.

◆ addedFaces()

const Map<label>& addedFaces ( ) const
inline

Definition at line 303 of file meshCutter.H.

◆ addedPoints()

const EdgeMap<label>& addedPoints ( ) const
inline

Definition at line 309 of file meshCutter.H.


The documentation for this class was generated from the following files: