TRUST 1.9.8
HPC thermohydraulic platform
Loading...
Searching...
No Matches
Introduction

In the TRUST code, different numerical schemes are available to the user: VDF, VEF and the PolyMAC family.

  • The VDF discretization is based on the Marker and Cell scheme [15].
  • The VEF discretization is based on the Crouzeix-Raviart element method [9].

The PolyMAC discretization family has been developed since 2018. Three PolyMAC variants are available in TRUST. They have been built using a Finite Volume (FV) framework on a staggered mesh so as to extend the MAC scheme [15] to complex grids:

  • PolyMAC: based on a Compatible Discrete Operator (CDO) approach [2] [24].
  • PolyMAC_MPFA: based on a Multi Point Flux Approximation (MPFA) approach [1] [7] [22].
  • PolyMAC_HFV: based on a Hybrid Finite Volume (HFV) approach [11] [6].

For each method the core ideas and the main steps for the discretization of the incompressible Navier-Stokes equations are presented. For now, the PolyMAC and PolyMAC_MPFA parts are completed; the others are a work in progress.

Notations

Let's consider a space \(\Omega\) and a certain grid \(\mathcal{M}\) of non-overlapping polyhedra that map \(\Omega\).

In the following:

  • A polyhedron of the grid will be called a cell: \(e\).
  • A face \(f\) is defined as the intersection of two cells or one cell and a boundary. Faces are supposed to be planar.
  • An edge \(\sigma\) is defined as the intersection of faces or faces and a boundary (3D only).
  • A vertex \(v\) is defined as the intersection of edges or edges and a boundary.

The set of cells is called \(E\). The set of faces of cell \(e\) is denoted \(F_e\). The set of edges of face \(f\) is \(\Sigma_f\) and the two vertices of edge \(\sigma\) are \(V_{\sigma}\).

When a face \(f\) separates two cells they are denoted \(e_1\) and \(e_2\) (the choice between the two is fixed by the orientation of \(f\)). The gravity centers (barycenters) of these entities are written \(x_e\), \(x_f\), \(x_\sigma\), \(x_v\).

The measure of an unknown \(x\) at a control volume \(cv\) is:

\[[x]_{cv} = \frac{1}{|cv|} \int_{cv} x \, \mathrm{d}(cv) \]

where \(|\cdot|\) is a global measure operator: \(|e|\) refers to the volume of cell \(e\), \(|f|\) to the surface of face \(f\), and \(|\sigma|\) to the length of edge \(\sigma\).

For face-based fluxes we use the outward unit normal \(\vec{n}_f\) together with the orientation sign

\[\sigma_{e,f} \;=\; \begin{cases} +1 & \text{if } \vec{n}_f \text{ points outward of cell } e, \\ -1 & \text{otherwise.} \end{cases} \]

(The symbol \(\sigma\) is overloaded with the edge index — this is consistent with both the FV and CDO literature, and the context always makes the meaning clear.)

The main unknowns are \(u\) (velocity) and \(p\) (pressure); for scalar transport we use \(T\) (temperature) and \(s\) for source terms. When porosities are used we write \(\varphi_e\) for the cell porosity and \(\varphi_f\) for the face porosity.

Vector typography. Scalars are typeset plain ( \(u, p, T\)). Vectors are decorated with an arrow when the distinction matters ( \(\vec{n}_f, \vec{x}_f, \vec{u}\)). The VEF page uses bold ( \(\boldsymbol{u}, \boldsymbol{F}\)) instead of arrows for legibility in operator-heavy formulas — this is the only place where the convention differs.