ENH: enumerations for known cell models in cellModel, ptr/ref lookups

- this provides a better typesafe means of locating predefined cell
  models than relying on strings. The lookup is now ptr() or ref()
  directly. The lookup functions behave like on-demand singletons when
  loading "etc/cellModels".

  Functionality is now located entirely in cellModel but a forwarding
  version of cellModeller is provided for API (but not ABI) compatibility
  with older existing user code.

STYLE: use constexpr for cellMatcher constants
This commit is contained in:
Mark Olesen
2017-11-18 11:05:05 +01:00
parent 810d090e34
commit 8730a7622a
106 changed files with 984 additions and 1035 deletions

View File

@ -26,7 +26,7 @@ License
#include "ensightCells.H"
#include "error.H"
#include "polyMesh.H"
#include "cellModeller.H"
#include "cellModel.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@ -162,10 +162,10 @@ void Foam::ensightCells::classify
)
{
// References to cell shape models
const cellModel& tet = *(cellModeller::lookup("tet"));
const cellModel& pyr = *(cellModeller::lookup("pyr"));
const cellModel& prism = *(cellModeller::lookup("prism"));
const cellModel& hex = *(cellModeller::lookup("hex"));
const cellModel& tet = cellModel::ref(cellModel::TET);
const cellModel& pyr = cellModel::ref(cellModel::PYR);
const cellModel& prism = cellModel::ref(cellModel::PRISM);
const cellModel& hex = cellModel::ref(cellModel::HEX);
const cellShapeList& shapes = mesh.cellShapes();

View File

@ -25,7 +25,7 @@ Class
Foam::fileFormats::STARCDCore
Description
Core routines used when reading/writing pro-STAR vrt/cel/bnd files.
Core routines used when reading/writing PROSTAR vrt/cel/bnd files.
SourceFiles
STARCDCore.C
@ -121,11 +121,11 @@ protected:
// Protected Member Functions
//- Face addressing from pro-STAR faces to OpenFOAM faces.
//- Face addressing from PROSTAR faces to OpenFOAM faces.
// For hex, prism, tet, pyr primitive shapes.
static const Map<FixedList<int, 6>> starToFoamFaceAddr;
//- Face addressing from OpenFOAM faces to pro-STAR faces.
//- Face addressing from OpenFOAM faces to PROSTAR faces.
// For hex, prism, tet, pyr primitive shapes.
static const Map<FixedList<int, 6>> foamToStarFaceAddr;

View File

@ -81,7 +81,7 @@ bool Foam::fileFormats::STLCore::isBinaryName
// this seems to work better than the old token-based method
// - using wordToken can cause an abort if non-word (binary) content
// is detected ... this is not exactly what we want.
// - some programs (eg, pro-STAR) have 'solid' as the first word in
// - some programs (eg, PROSTAR) have 'solid' as the first word in
// the binary header. This is just wrong and not our fault.
int Foam::fileFormats::STLCore::detectBinaryHeader
(

View File

@ -27,7 +27,7 @@ License
#include "labelIOField.H"
#include "scalarIOField.H"
#include "stringIOList.H"
#include "cellModeller.H"
#include "cellModel.H"
#include "vectorIOField.H"
/* * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * */
@ -104,10 +104,10 @@ void Foam::vtkUnstructuredReader::extractCells
const labelList& cellVertData
)
{
const cellModel& hex = *(cellModeller::lookup("hex"));
const cellModel& prism = *(cellModeller::lookup("prism"));
const cellModel& pyr = *(cellModeller::lookup("pyr"));
const cellModel& tet = *(cellModeller::lookup("tet"));
const cellModel& hex = cellModel::ref(cellModel::HEX);
const cellModel& prism = cellModel::ref(cellModel::PRISM);
const cellModel& pyr = cellModel::ref(cellModel::PYR);
const cellModel& tet = cellModel::ref(cellModel::TET);
labelList tetPoints(4);
labelList pyrPoints(5);

View File

@ -27,7 +27,7 @@ License
#include "labelIOField.H"
#include "scalarIOField.H"
#include "stringIOList.H"
#include "cellModeller.H"
#include "cellModel.H"
#include "vectorIOField.H"
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //