diff --git a/src/meshTools/sets/cellSources/boundaryToCell/boundaryToCell.H b/src/meshTools/sets/cellSources/boundaryToCell/boundaryToCell.H index b703447e1bf537975c3877cb462651ea4ae05751..f9ebfbde268b6b1857ff3244153afb75ff7227e6 100644 --- a/src/meshTools/sets/cellSources/boundaryToCell/boundaryToCell.H +++ b/src/meshTools/sets/cellSources/boundaryToCell/boundaryToCell.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -27,10 +27,49 @@ Class Foam::boundaryToCell Description - A topoSetCellSource to select all external (boundary) faces. - - \heading Dictionary parameters - None + A \c topoSetCellSource to select all cells possessing + at least a single face on all external boundaries. + + Operands: + \table + Operand | Type | Location + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + \endtable + +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source boundaryToCell; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: boundaryToCell | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + - Foam::patchToCell SourceFiles boundaryToCell.C @@ -55,7 +94,7 @@ class boundaryToCell : public topoSetCellSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -71,6 +110,7 @@ public: //- Runtime type information TypeName("boundaryToCell"); + // Constructors //- Construct from components @@ -94,7 +134,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/boxToCell/boxToCell.H b/src/meshTools/sets/cellSources/boxToCell/boxToCell.H index c6ee8e19726be4230f3016a10a8be1c3a73ec87c..a83a8db09013318ae6ea0cb733ed1cd7cccd3c84 100644 --- a/src/meshTools/sets/cellSources/boxToCell/boxToCell.H +++ b/src/meshTools/sets/cellSources/boxToCell/boxToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,20 +28,80 @@ Class Foam::boxToCell Description - A topoSetCellSource to select cells based on cell centres inside box(es). + A \c topoSetCellSource to select all cells + whose cell centre inside given bounding box(es). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - boxes | Multiple bounding boxes | partly | - box | A single bounding box | partly | - min | Minimum point for a single box | partly | - max | Maximum point for a single box | partly | + Operand | Type | Location + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source boxToCell; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + boxes + ( + (<minX> <minY> <minZ>) (<maxX> <maxY> <maxZ>) // box-1 + (<minX> <minY> <minZ>) (<maxX> <maxY> <maxZ>) // box-2 + ... + ); + + // Option-2 + box (<minX> <minY> <minZ>) (<maxX> <maxY> <maxZ>); + + // Option-3 + min (<minX> <minY> <minZ>); + max (<maxX> <maxY> <maxZ>); + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: boxToCell | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + boxes | Multiple bounding boxes | vectorList | cond'l | - + box | A single bounding box | vector | cond'l | - + min | Minimum point for a single box | vector | cond'l | - + max | Maximum point for a single box | vector | cond'l | - + \verbatim + Note - Must specify "boxes", "box" or a "min/max" pair - (compatibility with searchable box) - highest to lowest precedence. + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c boxes, \c box or a \c min-max pair + (compatibility with \c searchableBox). + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource SourceFiles boxToCell.C @@ -67,7 +127,7 @@ class boxToCell : public topoSetCellSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -86,6 +146,7 @@ public: //- Runtime type information TypeName("boxToCell"); + // Constructors //- Construct from components, copying bounding boxes diff --git a/src/meshTools/sets/cellSources/cellToCell/cellToCell.H b/src/meshTools/sets/cellSources/cellToCell/cellToCell.H index dc52f334fc4b05c5cb8a9b6b35e6af9405f9d172..52ae643ddedc0616c3291cc1c93635c9ecf0f87b 100644 --- a/src/meshTools/sets/cellSources/cellToCell/cellToCell.H +++ b/src/meshTools/sets/cellSources/cellToCell/cellToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,17 +28,73 @@ Class Foam::cellToCell Description - A topoSetCellSource to select the cells from another cellSet. + A \c topoSetCellSource to select all the cells from given \c cellSet(s). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - sets | The input cellSet names | possibly | - set | The input cellSet name | possibly | + Operand | Type | Location + input | cellSet(s) | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source cellToCell; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + sets + ( + <cellSetName1> + <cellSetName2> + ... + ); + + // Option-2 + set <cellSetName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: cellToCell | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + sets | Names of input cellSets | wordList | cond'l | - + set | Name of input cellSet | word | cond'l | - + \verbatim + Note - Must specify "sets" or "set" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c sets, and \c set. + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource SourceFiles cellToCell.C @@ -63,7 +119,7 @@ class cellToCell : public topoSetCellSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -77,6 +133,7 @@ public: //- Runtime type information TypeName("cellToCell"); + // Constructors //- Construct from components @@ -100,7 +157,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/cylinderAnnulusToCell/cylinderAnnulusToCell.C b/src/meshTools/sets/cellSources/cylinderAnnulusToCell/cylinderAnnulusToCell.C index c233045bf9f91cf7ca2f3b785bc5ebec00dc3569..54b4bf1903ce73aeffafa226fcf9825ffd066cbb 100644 --- a/src/meshTools/sets/cellSources/cylinderAnnulusToCell/cylinderAnnulusToCell.C +++ b/src/meshTools/sets/cellSources/cylinderAnnulusToCell/cylinderAnnulusToCell.C @@ -121,7 +121,15 @@ Foam::cylinderAnnulusToCell::cylinderAnnulusToCell point2_(point2), radius_(radius), innerRadius_(innerRadius) -{} +{ + if (innerRadius_ > radius_) + { + FatalErrorInFunction + << "inner radius = " << innerRadius_ << "cannot be larger than " + << "outer radius = " << radius_ + << exit(FatalIOError); + } +} Foam::cylinderAnnulusToCell::cylinderAnnulusToCell @@ -135,8 +143,8 @@ Foam::cylinderAnnulusToCell::cylinderAnnulusToCell mesh, dict.get<point>("p1"), dict.get<point>("p2"), - dict.get<scalar>("outerRadius"), - dict.get<scalar>("innerRadius") + dict.getCheck<scalar>("outerRadius", scalarMinMax::ge(SMALL)), + dict.getCheck<scalar>("innerRadius", scalarMinMax::ge(0)) ) {} diff --git a/src/meshTools/sets/cellSources/cylinderAnnulusToCell/cylinderAnnulusToCell.H b/src/meshTools/sets/cellSources/cylinderAnnulusToCell/cylinderAnnulusToCell.H index fa8314b0133fcf4e4a46b0917b8fdf0a9eed8f90..7a449fb2a15497d03835453a771ccbaf70e4b5f7 100644 --- a/src/meshTools/sets/cellSources/cylinderAnnulusToCell/cylinderAnnulusToCell.H +++ b/src/meshTools/sets/cellSources/cylinderAnnulusToCell/cylinderAnnulusToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -27,19 +27,64 @@ License Class Foam::cylinderAnnulusToCell +Group + grpCellSources + Description - A topoSetCellSource to select cells based on cell centres inside a - cylinder annulus. + A \c topoSetCellSource to select all cells whose cell + centre inside a given bounding cylinder annulus. + + Operands: + \table + Operand | Type | Location + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + \endtable - \heading Dictionary parameters +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source cylinderAnnulusToCell; + p1 (<p1X> <p1Y> <p1Z>); + p2 (<p2X> <p2Y> <p2Z>); + outerRadius <radius1>; + + // Optional entries + innerRadius <radius2>; + } + \endverbatim + + where the entries mean: \table - Property | Description | Required | Default - p1 | Coordinate of endpoint | yes | - p2 | Coordinate of endpoint | yes | - outerRadius | Cylinder outer radius | yes | - innerRadius | Cylinder inner radius | yes | + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: cylinderAnnulusToCell | word | yes | - + p1 | Coordinate of one of the endpoints | vector | yes | - + p2 | Coordinate of the other endpoint | vector | yes | - + outerRadius | Cylinder outer radius | scalar | yes | - + innerRadius | Cylinder inner radius | scalar | no | 0 \endtable + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + - Foam::cylinderToCell + SourceFiles cylinderAnnulusToCell.C @@ -63,8 +108,7 @@ class cylinderAnnulusToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -123,7 +167,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/cylinderToCell/cylinderToCell.C b/src/meshTools/sets/cellSources/cylinderToCell/cylinderToCell.C index 3114d74cf04ff8030dee4798624ffa5c9946d01e..1856b4184dce0b79823949e5a7ea6b121d6609a9 100644 --- a/src/meshTools/sets/cellSources/cylinderToCell/cylinderToCell.C +++ b/src/meshTools/sets/cellSources/cylinderToCell/cylinderToCell.C @@ -110,7 +110,15 @@ Foam::cylinderToCell::cylinderToCell point2_(point2), radius_(radius), innerRadius_(innerRadius) -{} +{ + if (innerRadius_ > radius_) + { + FatalErrorInFunction + << "inner radius = " << innerRadius_ << "cannot be larger than " + << "outer radius = " << radius_ + << exit(FatalIOError); + } +} Foam::cylinderToCell::cylinderToCell @@ -124,8 +132,8 @@ Foam::cylinderToCell::cylinderToCell mesh, dict.get<point>("p1"), dict.get<point>("p2"), - dict.get<scalar>("radius"), - dict.getOrDefault<scalar>("innerRadius", 0) + dict.getCheck<scalar>("radius", scalarMinMax::ge(SMALL)), + dict.getCheckOrDefault<scalar>("innerRadius", 0, scalarMinMax::ge(0)) ) {} diff --git a/src/meshTools/sets/cellSources/cylinderToCell/cylinderToCell.H b/src/meshTools/sets/cellSources/cylinderToCell/cylinderToCell.H index d98015ac8cba7fd8a6a0462bf71f87c93ae13a55..035fe2283d388acb42ec411feec25926219ec9f1 100644 --- a/src/meshTools/sets/cellSources/cylinderToCell/cylinderToCell.H +++ b/src/meshTools/sets/cellSources/cylinderToCell/cylinderToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,17 +28,60 @@ Class Foam::cylinderToCell Description - A topoSetCellSource to select cells with their centres inside a cylinder. + A \c topoSetCellSource to select all cells whose cell centre + inside a given bounding cylinder or cylinder annulus. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - p1 | Coordinate of endpoint | yes | - p2 | Coordinate of endpoint | yes | - radius | Cylinder (outer) radius | yes | - innerRadius | Cylinder inner radius | no | 0 + Operand | Type | Location + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source cylinderToCell; + p1 (<p1X> <p1Y> <p1Z>); + p2 (<p2X> <p2Y> <p2Z>); + radius <radius1>; + + // Optional entries + innerRadius <radius2>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: cylinderToCell | word | yes | - + p1 | Coordinate of one of the endpoints | vector | yes | - + p2 | Coordinate of the other endpoint | vector | yes | - + radius | Cylinder outer radius | scalar | yes | - + innerRadius | Cylinder inner radius | scalar | no | 0 + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + - Foam::cylinderAnnulusToCell + SourceFiles cylinderToCell.C @@ -62,8 +105,7 @@ class cylinderToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -122,7 +164,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/faceToCell/faceToCell.H b/src/meshTools/sets/cellSources/faceToCell/faceToCell.H index 68652e4cfb388d06f0f5ee123b4c7ec19470cbf8..8e39500ba386d875ed2d0c05b35f34ecb6301811 100644 --- a/src/meshTools/sets/cellSources/faceToCell/faceToCell.H +++ b/src/meshTools/sets/cellSources/faceToCell/faceToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,18 +28,86 @@ Class Foam::faceToCell Description - A topoSetCellSource to select cells based on usage in a face set. + A \c topoSetCellSource to select all cells based on usage in given + \c faceSet(s), e.g. select cells that are the \c owner/neighbour/any + of the faces in a given \c faceSet. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - sets | The faceSet names to use | possibly | - set | The faceSet name to use | possibly | - option | Selection type (all/any/owner/neighbour) | yes | + Operand | Type | Location + input | faceSet(s) | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source faceToCell; + option <option>; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + sets + ( + <faceSetName0> + <faceSetName1> + ... + ); + + // Option-2 + set <faceSetName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: faceToCell | word | yes | - + option | Selection type - see below | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + + Options for the \c option entry: + \verbatim + all | Cells that are either owner or neighbour of given faces + any | Cells that are either owner or neighbour of given faces + owner | Cells that are owner of given faces + neighbour | Cells that are neighbour of given faces + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + sets | Names of input faceSets | wordList | cond'l | - + set | Name of input faceSet | word | cond'l | - + \verbatim + Note - Must specify "sets" or "set" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c sets, and \c set. + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + - Foam::faceZoneToCell SourceFiles faceToCell.C @@ -75,10 +143,12 @@ public: NEIGHBOUR }; + private: - static const Enum<faceAction> faceActionNames_; + // Private Data + static const Enum<faceAction> faceActionNames_; //- Add usage string static addToUsageTable usage_; @@ -130,7 +200,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.H b/src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.H index fb9b3eba6e6cd488ad30a8ce92174b99a6b2fa2c..c667a0b76a0a31ab49fa7fdfa0f13990577b37e8 100644 --- a/src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.H +++ b/src/meshTools/sets/cellSources/faceZoneToCell/faceZoneToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,19 +28,83 @@ Class Foam::faceZoneToCell Description - A topoSetCellSource to select cells based on side of faceZone. + A \c topoSetCellSource to select cells based on \c master + or \c slave side of given \c faceZone(s). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - option | Selection type (master / slave) | yes | - zones | The face zone names or regexs | possibly | - zone | The face zone name or regex | possibly | - name | Older specification for 'zone' | no | + Operand | Type | Location + input | faceZone(s) | $FOAM_CASE/constant/polyMesh/faceZones + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source faceZoneToCell; + option <option>; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + zones + ( + <faceZoneName1> + <faceZoneName2> + ... + ); + + // Option-2 + set <faceZoneName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: faceZoneToCell | word | yes | - + option | Selection type - see below | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + + Options for the \c option entry: + \verbatim + master | Master side of the faceZone + slave | Slave side of the faceZone + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + zones | Names of input faceZones | wordList | cond'l | - + zone | Name of input faceZone | word | cond'l | - + \verbatim + Note - Must specify "zones", "zone" or "name" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c zones, and \c zone. + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + - Foam::faceToCell SourceFiles faceZoneToCell.C @@ -74,9 +138,10 @@ public: SLAVE }; + private: - // Private data + // Private Data static const Enum<faceAction> faceActionNames_; @@ -86,7 +151,7 @@ private: //- Matcher for face zones wordRes selectedZones_; - //- Option + //- Selection type faceAction option_; @@ -100,6 +165,7 @@ public: //- Runtime type information TypeName("faceZoneToCell"); + // Constructors //- Construct from components @@ -128,7 +194,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/fieldToCell/fieldDictionary.H b/src/meshTools/sets/cellSources/fieldToCell/fieldDictionary.H index 702d3c75f85299156ae5ad2e57d8860ba78fe397..999f5a8862c5f2bd8e2a9354a68fb2dedb517c01 100644 --- a/src/meshTools/sets/cellSources/fieldToCell/fieldDictionary.H +++ b/src/meshTools/sets/cellSources/fieldToCell/fieldDictionary.H @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2015 OpenFOAM Foundation + Copyright (C) 2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -51,16 +52,13 @@ class fieldDictionary public regIOobject, public dictionary { - const word type_; -public: + // Private Data + + const word type_; - // Redefine type name to be of the instantiated type - virtual const word& type() const - { - return type_; - } +public: // Constructors @@ -75,8 +73,13 @@ public: } + // Member Functions - // Member functions + //- Redefine type name to be of the instantiated type + virtual const word& type() const + { + return type_; + } bool writeData(Ostream& os) const { diff --git a/src/meshTools/sets/cellSources/fieldToCell/fieldToCell.C b/src/meshTools/sets/cellSources/fieldToCell/fieldToCell.C index 2f388678babc947e318da29e841bb4cc4d2d65e2..fec9f9ee46b74660525e12f13d0eec7a1d5406d5 100644 --- a/src/meshTools/sets/cellSources/fieldToCell/fieldToCell.C +++ b/src/meshTools/sets/cellSources/fieldToCell/fieldToCell.C @@ -131,7 +131,15 @@ Foam::fieldToCell::fieldToCell fieldName_(fieldName), min_(min), max_(max) -{} +{ + if (min_ > max_) + { + WarningInFunction + << "Input min value = " << min_ << " is larger than " + << "input max value = " << max_ << " for field = " << fieldName_ + << endl; + } +} Foam::fieldToCell::fieldToCell diff --git a/src/meshTools/sets/cellSources/fieldToCell/fieldToCell.H b/src/meshTools/sets/cellSources/fieldToCell/fieldToCell.H index 187727341c3e4cf49436396e377cb34d16452993..c7a9df184987e280a383d1ff5bf6a3c229d6c16b 100644 --- a/src/meshTools/sets/cellSources/fieldToCell/fieldToCell.H +++ b/src/meshTools/sets/cellSources/fieldToCell/fieldToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2015 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,16 +28,56 @@ Class Foam::fieldToCell Description - A topoSetCellSource to select cells based on field values. + A \c topoSetCellSource to select cells based on \c volScalarField values, + i.e. select cells with given field value of >= min and <= max. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - field | The (scalar, vector) field to use | yes | - min | The min value for the subset | yes | - max | The max value for the subset | yes | + Operand | Type | Location + input | volScalarField | $FOAM_CASE/\<time\>/\<inpField\> + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source fieldToCell; + field <fieldName>; + min <minFieldValue>; + max <maxFieldValue>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: fieldToCell | word | yes | - + field | Name of volScalarField to use | word | yes | - + min | The min value for the subset | scalar | yes | - + max | The max value for the subset | scalar | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + SourceFiles fieldToCell.C @@ -62,13 +102,11 @@ class fieldToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; - //- Name of volScalarField, volVectorField word fieldName_; @@ -89,11 +127,13 @@ class fieldToCell topoSet& set ) const; + public: //- Runtime type information TypeName("fieldToCell"); + // Constructors //- Construct from components @@ -123,7 +163,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/haloToCell/haloToCell.C b/src/meshTools/sets/cellSources/haloToCell/haloToCell.C index 0ed54a9152edff5e5f956ec6ceaeb34fce4a0721..69f8143d47002bb8e58ed6e398043245ebb0927d 100644 --- a/src/meshTools/sets/cellSources/haloToCell/haloToCell.C +++ b/src/meshTools/sets/cellSources/haloToCell/haloToCell.C @@ -208,7 +208,8 @@ void Foam::haloToCell::applyToSet { if (verbose_) { - Info<< " Cannot create new of halo (needs a starting set)" + Info<< " action=new option is not available for haloToCell" << nl + << " Cannot create new of halo (needs a starting set)" << endl; } diff --git a/src/meshTools/sets/cellSources/haloToCell/haloToCell.H b/src/meshTools/sets/cellSources/haloToCell/haloToCell.H index 27b5810b315deacf55b7275f08472fe606d40c2b..1995f94ee8dafb7f5d00ac6a059fe782c51c6270 100644 --- a/src/meshTools/sets/cellSources/haloToCell/haloToCell.H +++ b/src/meshTools/sets/cellSources/haloToCell/haloToCell.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2019 OpenCFD Ltd. + Copyright (C) 2019-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -27,17 +27,58 @@ Class Foam::haloToCell Description - A topoSetCellSource to add/remove halo cells (cells attached to - the outside of the current cellSet). - When removing halo cells, this strips off any cells on the boundary - of the set. + A \c topoSetCellSource to select cells attached to the outside + of this \c cellSet, and add into/remove from this \c cellSet. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - steps | Number of grow/shrink steps to use | no | 1 + Operand | Type | Location + input | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source haloToCell; + + // Optional entries + steps 1; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: haloToCell | word | yes | - + steps | Number of grow/shrink steps to use | label | no | 1 + \endtable + + Options for the \c action entry: + \verbatim + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +Note + - \c action=new is not available for \c haloToCell. + - When removing halo cells, this strips off + any cells on the boundary of the cellSet. + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + SourceFiles haloToCell.C @@ -61,8 +102,7 @@ class haloToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -105,7 +145,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/labelToCell/labelToCell.H b/src/meshTools/sets/cellSources/labelToCell/labelToCell.H index 4078e92b458dce052de915c7e9728a2bf8ffdc98..e100f3761549edaf1835e0d1ec86f35e473378f0 100644 --- a/src/meshTools/sets/cellSources/labelToCell/labelToCell.H +++ b/src/meshTools/sets/cellSources/labelToCell/labelToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2015 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,14 +28,56 @@ Class Foam::labelToCell Description - A topoSetCellSource to select cells based on explicitly given labels. + A \c topoSetCellSource to select cells + based on explicitly given cell labels. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - value | The cell labels | yes | + Operand | Type | Location + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source labelToCell; + value + ( + <cellLabel1> + <cellLabel2> + ... + ); + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: labelToCell | word | yes | - + value | Input cell labels | labelList | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + SourceFiles labelToCell.C @@ -59,8 +101,7 @@ class labelToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -74,6 +115,7 @@ public: //- Runtime type information TypeName("labelToCell"); + // Constructors //- Construct from components, copying labels @@ -100,7 +142,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/nbrToCell/nbrToCell.C b/src/meshTools/sets/cellSources/nbrToCell/nbrToCell.C index c8a2ef8bb5b4c0436f8df64690d78e8f2a87807f..72feb94d00add79d9e366c106f38a3405b2bb401 100644 --- a/src/meshTools/sets/cellSources/nbrToCell/nbrToCell.C +++ b/src/meshTools/sets/cellSources/nbrToCell/nbrToCell.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -131,7 +131,7 @@ Foam::nbrToCell::nbrToCell const dictionary& dict ) : - nbrToCell(mesh, dict.get<label>("neighbours")) + nbrToCell(mesh, dict.getCheck<label>("neighbours", labelMinMax::ge(1))) {} diff --git a/src/meshTools/sets/cellSources/nbrToCell/nbrToCell.H b/src/meshTools/sets/cellSources/nbrToCell/nbrToCell.H index f9d43e361f4f147bf0fd9d69b1e48e6126f3c3a0..9969af11e844d661a152f7027130520fa3760c6b 100644 --- a/src/meshTools/sets/cellSources/nbrToCell/nbrToCell.H +++ b/src/meshTools/sets/cellSources/nbrToCell/nbrToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,15 +28,52 @@ Class Foam::nbrToCell Description - A topoSetCellSource to select cells based on number of neighbouring cells - (i.e. number of internal or coupled faces) + A \c topoSetCellSource to select cells with \c N or less number + of neighbouring cells (i.e. number of internal or coupled faces). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - neighbours | Number of neighbours | yes | + Operand | Type | Location + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source nbrToCell; + neighbours <number>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: nbrToCell | word | yes | - + neighbours | Maximum number of neighbour cells | label | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + - Foam::haloToCell + SourceFiles nbrToCell.C @@ -60,8 +97,7 @@ class nbrToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -104,7 +140,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/nearestToCell/nearestToCell.H b/src/meshTools/sets/cellSources/nearestToCell/nearestToCell.H index f70fa5c6dd42f5886922e0235291f47e61c6469f..dc2e46b398f66ed1900afef665707580ad67a983 100644 --- a/src/meshTools/sets/cellSources/nearestToCell/nearestToCell.H +++ b/src/meshTools/sets/cellSources/nearestToCell/nearestToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2015 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,14 +28,56 @@ Class Foam::nearestToCell Description - A topoSetCellSource to select cells nearest to points. + A \c topoSetCellSource to select cells + whose cell centre nearest to given points. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - points | List of selection points | yes | + Operand | Type | Location + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source nearestToCell; + points + ( + (<p1x> <p1y> <p1z>) + (<p2x> <p2y> <p2z>) + ... + ); + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: nearestToCell | word | yes | - + points | List of selection points | vectorList | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + SourceFiles nearestToCell.C @@ -59,8 +101,7 @@ class nearestToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -79,6 +120,7 @@ public: //- Runtime type information TypeName("nearestToCell"); + // Constructors //- Construct from components, copying points @@ -105,7 +147,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/patchToCell/patchToCell.H b/src/meshTools/sets/cellSources/patchToCell/patchToCell.H index e0d88396448c659de77f4b909f9c9c20b70a012a..307e3f0703899dcc98251f9c2ee63131413d31c7 100644 --- a/src/meshTools/sets/cellSources/patchToCell/patchToCell.H +++ b/src/meshTools/sets/cellSources/patchToCell/patchToCell.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -27,17 +27,73 @@ Class Foam::patchToCell Description - A topoSetCellSource to select cells associated with patches. + A \c topoSetCellSource to select cells associated with given patch(es). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - patches | The patch names or regexs | possibly | - patch | The patch name or regex | possibly | + Operand | Type | Location + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source patchToCell; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + patches + ( + <patchName1> + <patchName2> + ... + ); + + // Option-2 + patch <patchName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: patchToCell | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + patches | Names of patches or wildcards | wordList | cond'l | - + patch | Name of patch or wildcard | word | cond'l | - + \verbatim + Note - Must specify "patches" or "patch" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c patches, and \c patch. + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + - Foam::boundaryToCell SourceFiles patchToCell.C @@ -105,7 +161,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/pointToCell/pointToCell.H b/src/meshTools/sets/cellSources/pointToCell/pointToCell.H index d4e0eff1b87ee7c9b382c1f78618dfaa31a99740..dd99adedbc65026ba6a9049f80ee2ed50b8d46e6 100644 --- a/src/meshTools/sets/cellSources/pointToCell/pointToCell.H +++ b/src/meshTools/sets/cellSources/pointToCell/pointToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2012 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,18 +28,82 @@ Class Foam::pointToCell Description - A topoSetCellSource to select cells based on usage of points. + A \c topoSetCellSource to select cells with any + point or any edge within a given \c pointSet(s). - \heading Dictionary parameters + Operands \table - Property | Description | Required | Default - sets | The pointSet names to use | possibly | - set | The pointSet name to use | possibly | - option | Selection type (any/edge) | yes | + Operand | Type | Location + input | pointSeti(s) | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source pointToCell; + option <option>; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + sets + ( + <pointSetName1> + <pointSetName2> + ... + ); + + // Option-2 + set <pointSetName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: pointToCell | word | yes | - + option | Selection type - see below | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + + Options for the \c option entry: + \verbatim + any | Cells using any point in pointSet + edge | Cells using an edge with both points in pointSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + sets | Names of input pointSets | wordList | cond'l | - + set | Name of input pointSet | word | cond'l | - + \verbatim + Note - Must specify "sets" or "set" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c sets, and \c set. + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource SourceFiles pointToCell.C @@ -74,8 +138,11 @@ public: //ALL // Possible extension: cells whose all points are in set }; + private: + //Private Data + //- Add usage string static addToUsageTable usage_; @@ -84,7 +151,7 @@ private: //- Names of sets to use wordList names_; - //- Option + //- Selection type pointAction option_; @@ -99,6 +166,7 @@ public: //- Runtime type information TypeName("pointToCell"); + // Constructors //- Construct from components @@ -127,7 +195,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/regionToCell/regionToCell.C b/src/meshTools/sets/cellSources/regionToCell/regionToCell.C index d6c83eb0cca3ba737d153deec5a7f3d36a7e2de1..45d6c987096195f96d5566a09553d52a3ead7d63 100644 --- a/src/meshTools/sets/cellSources/regionToCell/regionToCell.C +++ b/src/meshTools/sets/cellSources/regionToCell/regionToCell.C @@ -410,7 +410,7 @@ Foam::regionToCell::regionToCell ( dict.getCompat<pointField>("insidePoints", {{ "insidePoint", 0 }}) ), - nErode_(dict.getOrDefault<label>("nErode", 0)) + nErode_(dict.getCheckOrDefault<label>("nErode", 0, labelMinMax::ge(0))) {} diff --git a/src/meshTools/sets/cellSources/regionToCell/regionToCell.H b/src/meshTools/sets/cellSources/regionToCell/regionToCell.H index debdf95da9f6693095fb35acbb68a1618879d875..4d273ffa5b71bb751cc4105beeae50018d45e2dc 100644 --- a/src/meshTools/sets/cellSources/regionToCell/regionToCell.H +++ b/src/meshTools/sets/cellSources/regionToCell/regionToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2012 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,31 +28,66 @@ Class Foam::regionToCell Description - A topoSetCellSource to select cells belonging to a topological connected - region (that contains given points) + A \c topoSetCellSource to select cells belonging to a topologically + connected region (that contains given points). If started inside + a given \c subCellSet keeps to it; if started outside stays outside. + + Operands: + \table + Operand | Type | Location + input | region | $FOAM_CASE/constant/\{\<region\>, polyMesh\} + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + \endtable Usage - In dictionary input: + Minimal example by using \c system/topoSetDict.actions: \verbatim - // optional name of cellSet delimiting search - set c0; - - //- Number of cell layers to erode mesh to detect holes in the mesh - // Set to 0 if not used. - nErode 3; + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source regionToCell; + insidePoints + ( + (<p1x> <p1y> <p1z>) + (<p2x> <p2y> <p2z>) + ... + ); - // points inside region to select - insidePoints ((1 2 3)); + // Optional entries + set <cellSetName>; + nErode <label>; + } \endverbatim - Dictionary parameters: + where the entries mean: \table - Property | Description | Required | Default - insidePoints | Points inside regions | yes | - nErode | Cell layers to erode to detect holes | no | 0 - set | Restrict to named cellSet | no | "" + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: regionToCell | word | yes | - + insidePoints | Coordinate(s) that is inside connected region <!-- + --> | vectorList | yes | - + set | Name of cellSet giving mesh subset | word | no | none + nErode | Number of cell layers to erode mesh to detect holes <!-- + --> in the mesh - set to 0 if not used | label | no | 0 \endtable + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + SourceFiles regionToCell.C @@ -79,8 +114,7 @@ class regionToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -105,7 +139,7 @@ class regionToCell ) const; //- Determine for every disconnected region in the mesh whether - // it contains a locationInMesh + //- it contains a locationInMesh boolList findRegions(const bool verbose, const regionSplit&) const; //- Unselect regions not containing a locationInMesh @@ -115,7 +149,7 @@ class regionToCell void shrinkRegions(boolList& selectedCell) const; //- Erode a given number of layers from selectedCell. Remove any - // region that gets disconnected that way. + //- region that gets disconnected that way. void erode(boolList& selectedCell) const; void combine(topoSet& set, const bool add) const; @@ -126,6 +160,7 @@ public: //- Runtime type information TypeName("regionToCell"); + // Constructors //- Construct from components diff --git a/src/meshTools/sets/cellSources/rotatedBoxToCell/rotatedBoxToCell.H b/src/meshTools/sets/cellSources/rotatedBoxToCell/rotatedBoxToCell.H index 8f723cc9292e1d86232abd57000f79d10aed3419..04e3f3fa944f868453902c73cfc633c25bf3b1c1 100644 --- a/src/meshTools/sets/cellSources/rotatedBoxToCell/rotatedBoxToCell.H +++ b/src/meshTools/sets/cellSources/rotatedBoxToCell/rotatedBoxToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2015 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,28 +28,67 @@ Class Foam::rotatedBoxToCell Description - A topoSetCellSource to select cells based on cell centres inside - rotated/skewed box (parallelopiped?). + A \c topoSetCellSource to select cells based on cell centres + inside a given parallopiped (i.e. rotated/skewed box). - Box defined as origin and i,j,k vectors. - E.g. box rotated 45 degrees around z-axis with sizes sqrt(0.2^2+0.2^2) - (and extra large, 200 in z direction): + Operands: + \table + Operand | Type | Location + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + \endtable + +Usage + Minimal example by using \c system/topoSetDict.actions: \verbatim - origin ( 0.4 0.4 -100); - i ( 0.2 0.2 0); - j (-0.2 0.2 0); - k ( 0.0 0.0 100); + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source rotatedBoxToCell; + origin (<o1> <o2> <o3>); + i (<i1> <i2> <i3>); + j (<j1> <j2> <j3>); + k (<k1> <k2> <k3>); + } \endverbatim - \heading Dictionary parameters + where the entries mean: \table - Property | Description | Required | Default - origin | The box centre | yes | - i | | yes | - j | | yes | - k | | yes | + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: rotateTedBoxToCell | word | yes | - + origin | Origin of the box | vector | yes | - + i | x1-axis | vector | yes | - + j | x2-axis | vector | yes | - + k | x3-axis | vector | yes | - \endtable + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + + Box defined as origin and i,j,k vectors. + For example, box rotated 45 degrees around z-axis with + sizes sqrt(0.2^2+0.2^2) (and extra large, 200 in z direction): + \verbatim + origin ( 0.4 0.4 -100); + i ( 0.2 0.2 0); + j (-0.2 0.2 0); + k ( 0.0 0.0 200); + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + SourceFiles rotatedBoxToCell.C @@ -74,14 +113,12 @@ class rotatedBoxToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; - - //- Skewed box + //- Definition of the parallelopiped (i.e. rotated/skewed box) const point origin_; const vector i_; const vector j_; @@ -98,6 +135,7 @@ public: //- Runtime type information TypeName("rotatedBoxToCell"); + // Constructors //- Construct from components @@ -128,7 +166,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/searchableSurfaceToCell/searchableSurfaceToCell.H b/src/meshTools/sets/cellSources/searchableSurfaceToCell/searchableSurfaceToCell.H index 8e9d83d58f9076bce33ffb33910201ca151beba5..139b8c1a4da599ebaa40d338ca0ded2734c8d034 100644 --- a/src/meshTools/sets/cellSources/searchableSurfaceToCell/searchableSurfaceToCell.H +++ b/src/meshTools/sets/cellSources/searchableSurfaceToCell/searchableSurfaceToCell.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -27,17 +27,56 @@ Class Foam::searchableSurfaceToCell Description - A topoSetCellSource to select cells with centres within a - searchableSurface. + A \c topoSetCellSource to select cells whose cell + centre enclosed by a given \c searchableSurface. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - surfaceType | The searchable surface type | yes | - surfaceName | Name for the IOobject | no | mesh-name - surface | Same as 'surfaceType' | no | + Operand | Type | Location + input | triSurface | $FOAM_CASE/constant/triSurface/\<file\> + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source searchableSurfaceToCell; + surfaceType <surfaceTypeName>; + + // Optional entries + surfaceName <surfaceName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: searchableSurfaceToCell | word | yes | - + surfaceType | The searchable surface type | word | yes | - + surfaceName | Name for the IOobject | word | no | mesh-name + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + SourceFiles searchableSurfaceToCell.C diff --git a/src/meshTools/sets/cellSources/shapeToCell/shapeToCell.H b/src/meshTools/sets/cellSources/shapeToCell/shapeToCell.H index e1da94ac668bf683f72f04c8998ba39044eb9983..07aadc5557b56d127730f5c7a3d9c35573046989 100644 --- a/src/meshTools/sets/cellSources/shapeToCell/shapeToCell.H +++ b/src/meshTools/sets/cellSources/shapeToCell/shapeToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2015 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,18 +28,69 @@ Class Foam::shapeToCell Description - A topoSetCellSource to select cells based on cell shape. + A \c topoSetCellSource to select cells + based on the type of their cell shapes. - Handles all known ones from static collection in cellModel - and splitHex with 10 degrees feature angle. + Handles all types of cell shapes known from static collection + in the \c cellModel (as shown below) and \c splitHex with + 10 degrees feature angle. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - shape | The cell model (hex, ..) | yes | - type | Older specification for 'shape' | no | + Operand | Type | Location + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source shapeToCell; + shape <shapeTypeName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: shapeToCell | word | yes | - + shape | Type of cell shape - see below | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + + Options for the \c shape entry: + \verbatim + splitHex | Split-hexahedra cells + hex | Hexahedra cells + wedge | Wedge cells + tetWedge | Tetrahedra-wedge cells + prism | Prism cells + pyr | Pyramid cells + tet | Tetrahedra cells + \endverbatim + +Note + \c splitHex hardcoded with internal angle < 10 degrees. + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + SourceFiles shapeToCell.C @@ -63,8 +114,7 @@ class shapeToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -75,7 +125,6 @@ class shapeToCell // Private Member Functions - //- Depending on cell type add to or delete from cellSet. void combine(topoSet& set, const bool add) const; @@ -85,7 +134,7 @@ public: TypeName("shapeToCell"); - // Static data + // Static Data //- Cos of feature angle for polyHedral to be splitHex static scalar featureCos; @@ -114,7 +163,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/sphereToCell/sphereToCell.C b/src/meshTools/sets/cellSources/sphereToCell/sphereToCell.C index 918576c7fbb6a4ab8d871f12dbe35af034bcc5c2..f4b7012d71f3cf357ee540d8774ced090367987d 100644 --- a/src/meshTools/sets/cellSources/sphereToCell/sphereToCell.C +++ b/src/meshTools/sets/cellSources/sphereToCell/sphereToCell.C @@ -114,8 +114,8 @@ Foam::sphereToCell::sphereToCell ( mesh, dict.getCompat<vector>("origin", {{"centre", -1806}}), - dict.get<scalar>("radius"), - dict.getOrDefault<scalar>("innerRadius", 0) + dict.getCheck<scalar>("radius", scalarMinMax::ge(0)), + dict.getCheckOrDefault<scalar>("innerRadius", 0, scalarMinMax::ge(0)) ) {} diff --git a/src/meshTools/sets/cellSources/sphereToCell/sphereToCell.H b/src/meshTools/sets/cellSources/sphereToCell/sphereToCell.H index 2307c0a55360bd39c9d58b5c4d5063450f310ae0..1a524ef5ee16d1e3c0e20040d1a35dde8886f402 100644 --- a/src/meshTools/sets/cellSources/sphereToCell/sphereToCell.H +++ b/src/meshTools/sets/cellSources/sphereToCell/sphereToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,17 +28,57 @@ Class Foam::sphereToCell Description - A topoSetCellSource to select cells based on cell centres inside sphere. + A \c topoSetCellSource to select cells based + on cell centres inside a given bounding sphere. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - origin | The origin (centre) of the sphere | yes | - radius | The (outer) radius of sphere | yes | - innerRadius | The inner radius of sphere | no | 0 - centre | Alternative for 'origin' | no | + Operand | Type | Location + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source sphereToCell; + origin (0 0 0); + radius 0.5; + + // Optional entries + innerRadius 0; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: sphereToCell | word | yes | - + origin | The origin (centre) of the sphere | vector | yes | - + radius | The (outer) radius of sphere | scalar | yes | - + innerRadius | The inner radius of sphere | scalar | no | 0 + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + SourceFiles sphereToCell.C @@ -62,8 +102,7 @@ class sphereToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -118,7 +157,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/surfaceToCell/surfaceToCell.H b/src/meshTools/sets/cellSources/surfaceToCell/surfaceToCell.H index 460cd74c1fe523a91aa2a201b989602cda2edb99..6c3d9b0fd93a3925a6d0adf08db7e8057df32d82 100644 --- a/src/meshTools/sets/cellSources/surfaceToCell/surfaceToCell.H +++ b/src/meshTools/sets/cellSources/surfaceToCell/surfaceToCell.H @@ -28,32 +28,88 @@ Class Foam::surfaceToCell Description - A topoSetCellSource to select cells based on relation to surface. + A \c topoSetCellSource to select cells based on + relation to a surface given by an external file. - Selects: - - all cells inside/outside/cut by surface - - all cells inside/outside surface ('useSurfaceOrientation', requires closed - surface) + \c surfaceToCell can select: + - all cells inside/outside/cut by a surface + - all cells inside/outside surface (\c useSurfaceOrientation, + requires closed surface) - cells with centre nearer than XXX to surface - cells with centre nearer than XXX to surface \b and with normal at nearest point to centre and cell-corners differing by - more than YYY (i.e., point of high curvature) + more than YYY (i.e. point of high curvature) - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - file | The surface "filename" | yes | - fileType | The surface format | no | - scale | Surface scaling factor | no | -1 - nearDistance | Near distance to the surface | yes | - curvature | surface curvature selection | yes | - outsidePoints| Points outside of surface | yes | - includeCut | Include cut cells (bool) | yes | - includeInside | Include inside cells (bool) | yes | - includeOutside | Include outside cells (bool) | yes | - useSurfaceOrientation | useSurfaceOrientation | no | false + Operand | Type | Location + input | triSurface | $FOAM_CASE/constant/triSurface/\<file\> + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source surfaceToCell; + file <surfaceFileName>; + outsidePoints + ( + (<p1x> <p1y> <p1z>) + (<p2x> <p2y> <p2z>) + ... + ); + includeCut false; + includeInside false; + includeOutside true; + nearDistance 0.5; + curvature 1.0; + + // Optional entries + useSurfaceOrientation false; + fileType stl; + scale 2.0; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: surfaceToCell | word | yes | - + file | The surface "filename" | word | yes | - + outsidePoints | List of points that define outside of the surface <!-- + --> | vectorList | yes | - + includeCut | Flag to include cut cells | bool | yes | - + includeInside | Flag to include inside cells | bool | yes | - + includeOutside | Flag to include outside cells | bool | yes | - + useSurfaceOrientation | Flag to use inherently the orientation of <!-- + --> the surface | bool | no | false + nearDistance | Near distance to the surface | scalar | yes | - + curvature | Surface curvature | scalar | yes | - + fileType | The format of the surface file | word | no | "" + scale | Surface scaling factor | scalar | no | -1 + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + SourceFiles surfaceToCell.C diff --git a/src/meshTools/sets/cellSources/targetVolumeToCell/targetVolumeToCell.C b/src/meshTools/sets/cellSources/targetVolumeToCell/targetVolumeToCell.C index e3611b8e450000001cf07d7512de210899e2f795..e222c5d481790cf5b544c52c60573866c293716b 100644 --- a/src/meshTools/sets/cellSources/targetVolumeToCell/targetVolumeToCell.C +++ b/src/meshTools/sets/cellSources/targetVolumeToCell/targetVolumeToCell.C @@ -304,7 +304,7 @@ Foam::targetVolumeToCell::targetVolumeToCell targetVolumeToCell ( mesh, - dict.get<scalar>("volume"), + dict.getCheck<scalar>("volume", scalarMinMax::ge(0)), dict.get<vector>("normal"), dict.getOrDefault<word>("set", "") ) diff --git a/src/meshTools/sets/cellSources/targetVolumeToCell/targetVolumeToCell.H b/src/meshTools/sets/cellSources/targetVolumeToCell/targetVolumeToCell.H index d63b13e4df4d8dca5d04bf7d73fe2b289ebeef83..288f375f5464f71f467c4e4c199bc59198e29455 100644 --- a/src/meshTools/sets/cellSources/targetVolumeToCell/targetVolumeToCell.H +++ b/src/meshTools/sets/cellSources/targetVolumeToCell/targetVolumeToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2012 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,17 +28,57 @@ Class Foam::targetVolumeToCell Description - A topoSetCellSource to select cells based on the wanted volume of selected - cells. Adapts a plane until it has enough. + A \c topoSetCellSource to select cells based on a target + volume of cells. Adapts a plane until it has enough. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - volume | The target volume (m^3) | yes | - normal | The plane normal | yes | - set | Restrict to named cellSet | no | "" + Operand | Type | Location + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source targetVolumeToCell; + volume 10; + normal (1 0 0); + + // Optional entries + set <cellSetName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: targetVolumeToCell | word | yes | - + volume | The target volume [m3] | scalar | yes | - + normal | The plane normal | vector | yes | - + set | Restrict to named cellSet | word | no | "" + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellSet + subtract | Remove selected cells from this cellSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource + SourceFiles targetVolumeToCell.C @@ -65,13 +105,12 @@ class targetVolumeToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; - //- Wanted volume + //- Target volume const scalar vol_; //- Normal of plane to sweep @@ -101,6 +140,7 @@ public: //- Runtime type information TypeName("targetVolumeToCell"); + // Constructors //- Construct from components @@ -130,7 +170,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellSources/topoSetCellSource/topoSetCellSource.H b/src/meshTools/sets/cellSources/topoSetCellSource/topoSetCellSource.H index 2b2276d8f92869da6b47ce6197b0270f7a8b4d9d..ac658a10fc160596da86b55b93af311d8b577fc6 100644 --- a/src/meshTools/sets/cellSources/topoSetCellSource/topoSetCellSource.H +++ b/src/meshTools/sets/cellSources/topoSetCellSource/topoSetCellSource.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2018-2019 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -27,7 +27,11 @@ Class Foam::topoSetCellSource Description - Base class of a topoSet source for selecting cells. + The \c topoSetCellSource is a intermediate class + for handling \c topoSet sources for selecting cells. + + The class is not an executable \c topoSet itself, + yet a provider for common entries to its derived \c topoSet. SourceFiles topoSetCellSource.C diff --git a/src/meshTools/sets/cellSources/zoneToCell/zoneToCell.H b/src/meshTools/sets/cellSources/zoneToCell/zoneToCell.H index cbbe0dc14f5b21ee077c415d1aa4d50cc01b9e8a..89901dfb2aa4defceaa9a02f7ceb4a1238246098 100644 --- a/src/meshTools/sets/cellSources/zoneToCell/zoneToCell.H +++ b/src/meshTools/sets/cellSources/zoneToCell/zoneToCell.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,18 +28,73 @@ Class Foam::zoneToCell Description - A topoSetCellSource to select cells based on one or more cellZones. + A \c topoSetCellSource to convert \c cellZone(s) to a \c cellSet. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - zones | The cell zone names or regexs | possibly | - zone | The cell zone name or regex | possibly | - name | Older specification for 'zone' | no | + Operand | Type | Location + input | cellZone(s) | $FOAM_CASE/constant/polyMesh/cellZones + output | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellSet; + action <action>; + + // Mandatory entries + source zoneToCell; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + zones + ( + <cellZoneName0> + <cellZoneName1> + ... + ); + + // Option-2 + zone <cellZoneName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellSet | word | yes | - + type | Type name: cellSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: zoneToCell | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellSet from selected cells + add | Add selected cells into this cellsSet + subtract | Remove selected cells from this cellSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + zones | Names of input cellZones | wordList | cond'l | - + zone | Name of input cellZone | word | cond'l | - + \verbatim + Note - Must specify "zones", "zone" or "name" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c zones, and \c zone. + +See also + - Foam::topoSetSource + - Foam::topoSetCellSource SourceFiles zoneToCell.C @@ -65,8 +120,7 @@ class zoneToCell : public topoSetCellSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -85,6 +139,7 @@ public: //- Runtime type information TypeName("zoneToCell"); + // Constructors //- Construct from components @@ -108,7 +163,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/cellZoneSources/setToCellZone/setToCellZone.H b/src/meshTools/sets/cellZoneSources/setToCellZone/setToCellZone.H index 6104b10888d6948b341943182acfd5207c1738d0..8ae418164d90b4628ea4cebb7e630540dafdcd92 100644 --- a/src/meshTools/sets/cellZoneSources/setToCellZone/setToCellZone.H +++ b/src/meshTools/sets/cellZoneSources/setToCellZone/setToCellZone.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018-2019 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,14 +28,52 @@ Class Foam::setToCellZone Description - A topoSetSource to select cells based on usage in a cellSet. + A \c topoSetSource to convert a \c cellSet + to a \c cellZone (and associated \c cellSet). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - set | The cell set name | yes | + Operand | Type | Location + input | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output 1 | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output 2 | cellZone | $FOAM_CASE/constant/polyMesh/cellZones \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type cellZoneSet; + action <action>; + + // Mandatory entries + source setToCellZone; + set <cellSetName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of cellZone | word | yes | - + type | Type name: cellZoneSet | word | yes | - + action | Action applied on cells - see below | word | yes | - + source | Source name: setToCellZone | word | yes | - + set | Name of input cellSet | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new cellZone from selected cells of a cellSet + add | Add selected cells of a cellSet into this cellZone + subtract | Remove selected cells of a cellSet from this cellZone + \endverbatim + +See also + - Foam::topoSetSource + SourceFiles setToCellZone.C @@ -59,19 +97,21 @@ class setToCellZone : public topoSetSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; - //- Name of set to use + //- Name of cellSet to use word setName_; + public: //- Runtime type information TypeName("setToCellZone"); + // Constructors //- Construct from components diff --git a/src/meshTools/sets/faceSources/boundaryToFace/boundaryToFace.H b/src/meshTools/sets/faceSources/boundaryToFace/boundaryToFace.H index 048bcef184739353b84561735b828e49c47e9c06..8ced58cc117fdbf8f59440d8249a5307b89f80da 100644 --- a/src/meshTools/sets/faceSources/boundaryToFace/boundaryToFace.H +++ b/src/meshTools/sets/faceSources/boundaryToFace/boundaryToFace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,10 +28,48 @@ Class Foam::boundaryToFace Description - A topoSetFaceSource to select all external (boundary) faces. - - \heading Dictionary parameters - None + A \c topoSetFaceSource to select faces on all external boundaries. + + Operands: + \table + Operand | Type | Location + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + \endtable + +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source boundaryToFace; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: boundaryToFace | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected faces + add | Add selected faces into this faceSet + subtract | Remove selected faces from this faceSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource + - Foam::patchToFace SourceFiles boundaryToFace.C @@ -56,7 +94,7 @@ class boundaryToFace : public topoSetFaceSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -72,6 +110,7 @@ public: //- Runtime type information TypeName("boundaryToFace"); + // Constructors //- Construct from components @@ -95,7 +134,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/faceSources/boxToFace/boxToFace.H b/src/meshTools/sets/faceSources/boxToFace/boxToFace.H index 7d91d0c7f5f265b70632882004734a9f3ce7fa29..a305af82a00cf8e30ebb55961e8695f9289ec772 100644 --- a/src/meshTools/sets/faceSources/boxToFace/boxToFace.H +++ b/src/meshTools/sets/faceSources/boxToFace/boxToFace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,20 +28,80 @@ Class Foam::boxToFace Description - A topoSetFaceSource to select faces based on face centres inside box. + A \c topoSetFaceSource to select all faces + whose face centre inside given bounding box(es). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - boxes | Multiple bounding boxes | partly | - box | A single bounding box | partly | - min | Minimum point for a single box | partly | - max | Maximum point for a single box | partly | + Operand | Type | Location + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source boxToFace; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + boxes + ( + (<minX> <minY> <minZ>) (<maxX> <maxY> <maxZ>) // box-1 + (<minX> <minY> <minZ>) (<maxX> <maxY> <maxZ>) // box-2 + ... + ); + + // Option-2 + box (<minX> <minY> <minZ>) (<maxX> <maxY> <maxZ>); + + // Option-3 + min (<minX> <minY> <minZ>); + max (<maxX> <maxY> <maxZ>); + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: boxToFace | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected cells + add | Add selected cells into this faceSet + subtract | Remove selected cells from this faceSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + boxes | Multiple bounding boxes | vectorList | cond'l | - + box | A single bounding box | vector | cond'l | - + min | Minimum point for a single box | vector | cond'l | - + max | Maximum point for a single box | vector | cond'l | - + \verbatim + Note - Must specify "boxes", "box" or a "min/max" pair - (compatibility with searchable box) - highest to lowest precedence. + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c boxes, \c box or a \c min-max pair + (compatibility with \c searchableBox). + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource SourceFiles boxToFace.C @@ -67,7 +127,7 @@ class boxToFace : public topoSetFaceSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -86,6 +146,7 @@ public: //- Runtime type information TypeName("boxToFace"); + // Constructors //- Construct from components, copying bounding boxes diff --git a/src/meshTools/sets/faceSources/cellToFace/cellToFace.H b/src/meshTools/sets/faceSources/cellToFace/cellToFace.H index acf054070f1798f4f7031789fb8e067fe1f7db1b..66fb9eaba81870348e5813db077fd766d987853f 100644 --- a/src/meshTools/sets/faceSources/cellToFace/cellToFace.H +++ b/src/meshTools/sets/faceSources/cellToFace/cellToFace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,22 +28,81 @@ Class Foam::cellToFace Description - A topoSetFaceSource to select a faceSet from a cellSet. + A \c topoSetFaceSource to select all the faces from given \c cellSet(s). - Either use 'all' cell faces, or only faces that have cells - on 'both' sides. + Operands: + \table + Operand | Type | Location + input | cellSet(s) | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + \endtable + +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source cellToFace; + option <option>; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + sets + ( + <cellSetName1> + <cellSetName2> + ... + ); + + // Option-2 + set <cellSetName>; + } + \endverbatim - \heading Dictionary parameters + where the entries mean: \table - Property | Description | Required | Default - sets | The cellSet names to use | possibly | - set | The cellSet name to use | possibly | - option | Selection (all/both) | yes | + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: cellToFace | word | yes | - + option | Selection type - see below | word | yes | - \endtable + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected cells of cellSet(s) + add | Add selected faces of cellSet(s) into this faceSet + subtract | Remove selected faces of cellSet(s) from this faceSet + \endverbatim + + Options for the \c option entry: + \verbatim + all | All faces of cells in the cellSet + both | Faces where both neighbours are in the cellSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + sets | Names of input cellSets | wordList | cond'l | - + set | Name of input cellSet | word | cond'l | - + \verbatim + Note - Must specify "sets" or "set" (highest to lowest precedence). - When picking up coupled faces, it uses cells on neighbouring processors. + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c sets, and \c set. + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource SourceFiles cellToFace.C @@ -80,15 +139,17 @@ public: private: + // Private Data + //- Add usage string static addToUsageTable usage_; static const Enum<cellAction> cellActionNames_; - //- Names of sets to use + //- Names of cellSets to use wordList names_; - //- Option + //- Selection type cellAction option_; @@ -103,6 +164,7 @@ public: //- Runtime type information TypeName("cellToFace"); + // Constructors //- Construct from components @@ -131,7 +193,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/faceSources/cylinderAnnulusToFace/cylinderAnnulusToFace.C b/src/meshTools/sets/faceSources/cylinderAnnulusToFace/cylinderAnnulusToFace.C index 1aed329f71c4d6f240f5d56b4b824a880334afd6..844b8928c1a5aaa30cb26f8505e20bd281fc7a6f 100644 --- a/src/meshTools/sets/faceSources/cylinderAnnulusToFace/cylinderAnnulusToFace.C +++ b/src/meshTools/sets/faceSources/cylinderAnnulusToFace/cylinderAnnulusToFace.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2017 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -121,7 +121,15 @@ Foam::cylinderAnnulusToFace::cylinderAnnulusToFace point2_(point2), radius_(radius), innerRadius_(innerRadius) -{} +{ + if (innerRadius_ > radius_) + { + FatalErrorInFunction + << "inner radius = " << innerRadius_ << "cannot be larger than " + << "outer radius = " << radius_ + << exit(FatalIOError); + } +} Foam::cylinderAnnulusToFace::cylinderAnnulusToFace @@ -135,8 +143,8 @@ Foam::cylinderAnnulusToFace::cylinderAnnulusToFace mesh, dict.get<point>("p1"), dict.get<point>("p2"), - dict.get<scalar>("outerRadius"), - dict.get<scalar>("innerRadius") + dict.getCheck<scalar>("outerRadius", scalarMinMax::ge(SMALL)), + dict.getCheck<scalar>("innerRadius", scalarMinMax::ge(0)) ) {} diff --git a/src/meshTools/sets/faceSources/cylinderAnnulusToFace/cylinderAnnulusToFace.H b/src/meshTools/sets/faceSources/cylinderAnnulusToFace/cylinderAnnulusToFace.H index 6242871530f21a5861bf89e41d9002bcd79ba13e..cbbd5b676f0bd05012b42abb11508dd40606add2 100644 --- a/src/meshTools/sets/faceSources/cylinderAnnulusToFace/cylinderAnnulusToFace.H +++ b/src/meshTools/sets/faceSources/cylinderAnnulusToFace/cylinderAnnulusToFace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2017 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,18 +28,60 @@ Class Foam::cylinderAnnulusToFace Description - A topoSetFaceSource to select faces based on face centres inside a - cylinder annulus. + A \c topoSetFaceSource to select all faces whose face + centre inside a given bounding cylinder annulus. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - p1 | Coordinate of endpoint | yes | - p2 | Coordinate of endpoint | yes | - outerRadius | Cylinder outer radius | yes | - innerRadius | Cylinder inner radius | yes | + Operand | Type | Location + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source cylinderAnnulusToFace; + p1 (<p1X> <p1Y> <p1Z>); + p2 (<p2X> <p2Y> <p2Z>); + outerRadius <radius1>; + + // Optional entries + innerRadius <radius2>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: cylinderAnnulusToFace | word | yes | - + p1 | Coordinate of one of the endpoints | vector | yes | - + p2 | Coordinate of the other endpoint | vector | yes | - + outerRadius | Cylinder outer radius | scalar | yes | - + innerRadius | Cylinder inner radius | scalar | no | 0 + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected faces + add | Add selected faces into this faceSet + subtract | Remove selected faces from this faceSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource + - Foam::cylinderToFace + SourceFiles cylinderAnnulusToFace.C @@ -63,8 +105,7 @@ class cylinderAnnulusToFace : public topoSetFaceSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; diff --git a/src/meshTools/sets/faceSources/cylinderToFace/cylinderToFace.C b/src/meshTools/sets/faceSources/cylinderToFace/cylinderToFace.C index c36418ca458a5bf533e115e42ce54d786d80299e..5a50c0cf11ceb31e422f69bcae77880f7a811049 100644 --- a/src/meshTools/sets/faceSources/cylinderToFace/cylinderToFace.C +++ b/src/meshTools/sets/faceSources/cylinderToFace/cylinderToFace.C @@ -110,7 +110,15 @@ Foam::cylinderToFace::cylinderToFace point2_(point2), radius_(radius), innerRadius_(innerRadius) -{} +{ + if (innerRadius_ > radius_) + { + FatalErrorInFunction + << "inner radius = " << innerRadius_ << "cannot be larger than " + << "outer radius = " << radius_ + << exit(FatalIOError); + } +} Foam::cylinderToFace::cylinderToFace @@ -124,8 +132,8 @@ Foam::cylinderToFace::cylinderToFace mesh, dict.get<point>("p1"), dict.get<point>("p2"), - dict.get<scalar>("radius"), - dict.getOrDefault<scalar>("innerRadius", 0) + dict.getCheck<scalar>("radius", scalarMinMax::ge(SMALL)), + dict.getCheckOrDefault<scalar>("innerRadius", 0, scalarMinMax::ge(0)) ) {} diff --git a/src/meshTools/sets/faceSources/cylinderToFace/cylinderToFace.H b/src/meshTools/sets/faceSources/cylinderToFace/cylinderToFace.H index 3b67dd96f5422640085835de234f833d06767c0d..b757eb6f753b23796296975c405d8e89b26bfbfc 100644 --- a/src/meshTools/sets/faceSources/cylinderToFace/cylinderToFace.H +++ b/src/meshTools/sets/faceSources/cylinderToFace/cylinderToFace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2017 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,17 +28,60 @@ Class Foam::cylinderToFace Description - A topoSetFaceSource to select faces based on face centres inside a cylinder. + A \c topoSetFaceSource to select all faces whose face centre + inside a given bounding cylinder or cylinder annulus. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - p1 | Coordinate of endpoint | yes | - p2 | Coordinate of endpoint | yes | - radius | Cylinder (outer) radius | yes | - innerRadius | Cylinder inner radius | no | 0 + Operand | Type | Location + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source cylinderToFace; + p1 (<p1X> <p1Y> <p1Z>); + p2 (<p2X> <p2Y> <p2Z>); + radius <radius1>; + + // Optional entries + innerRadius <radius2>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: cylinderToFace | word | yes | - + p1 | Coordinate of one of the endpoints | vector | yes | - + p2 | Coordinate of the other endpoint | vector | yes | - + radius | Cylinder outer radius | scalar | yes | - + innerRadius | Cylinder inner radius | scalar | no | 0 + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected faces + add | Add selected faces into this faceSet + subtract | Remove selected faces from this faceSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource + - Foam::cylinderAnnulusToFace + SourceFiles cylinderToFace.C @@ -62,8 +105,7 @@ class cylinderToFace : public topoSetFaceSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; diff --git a/src/meshTools/sets/faceSources/faceToFace/faceToFace.H b/src/meshTools/sets/faceSources/faceToFace/faceToFace.H index 992ca20087754f4cbd81acac69a47b853c216694..f2f432a80eed749e43eb6f079c296008a0bb98e8 100644 --- a/src/meshTools/sets/faceSources/faceToFace/faceToFace.H +++ b/src/meshTools/sets/faceSources/faceToFace/faceToFace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,17 +28,73 @@ Class Foam::faceToFace Description - A topoSetFaceSource to select faces based on usage in another faceSet. + A \c topoSetFaceSource to select faces based on usage in another \c faceSet. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - sets | The input faceSet names | possibly | - set | The input faceSet name | possibly | + Operand | Type | Location + input | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source faceToFace; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + sets + ( + <faceSetName0> + <faceSetName1> + ... + ); + + // Option-2 + set <faceSetName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: faceToFace | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected faces + add | Add selected faces into this faceSet + subtract | Remove selected faces from this faceSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + sets | Names of input faceSets | wordList | cond'l | - + set | Name of input faceSet | word | cond'l | - + \verbatim + Note - Must specify "sets" or "set" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c sets, and \c set. + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource SourceFiles faceToFace.C @@ -63,12 +119,12 @@ class faceToFace : public topoSetFaceSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; - //- Names of sets to use + //- Names of faceSets to use wordList names_; @@ -77,6 +133,7 @@ public: //- Runtime type information TypeName("faceToFace"); + // Constructors //- Construct from components @@ -100,7 +157,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/faceSources/labelToFace/labelToFace.H b/src/meshTools/sets/faceSources/labelToFace/labelToFace.H index da6e04fa8bd8e2129bc137b109b46c8c894aead2..63eda36a99aaae2009f65b35bfe83212973c5cc6 100644 --- a/src/meshTools/sets/faceSources/labelToFace/labelToFace.H +++ b/src/meshTools/sets/faceSources/labelToFace/labelToFace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2015 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,15 +28,56 @@ Class Foam::labelToFace Description - A topoSetFaceSource to select faces given explicitly provided face labels. + A \c topoSetFaceSource to select faces + based on explicitly given face labels. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - normal | The normal for selecting faces | yes | - cos | Tolerance angle (range -1, +1) | yes | + Operand | Type | Location + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source labelToFace; + value + ( + <faceLabel1> + <faceLabel2> + ... + ); + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: labelToFace | word | yes | - + value | Input face labels | labelList | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected faces + add | Add selected faces into this faceSet + subtract | Remove selected faces from this faceSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource + SourceFiles labelToFace.C @@ -60,8 +101,7 @@ class labelToFace : public topoSetFaceSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -75,6 +115,7 @@ public: //- Runtime type information TypeName("labelToFace"); + // Constructors //- Construct from components, copying labels @@ -101,7 +142,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/faceSources/normalToFace/normalToFace.H b/src/meshTools/sets/faceSources/normalToFace/normalToFace.H index 421b3c77c07b177e7f91040abab6affa733da7a8..da02e83078b0dca8a1ad953973d08969ea5c5907 100644 --- a/src/meshTools/sets/faceSources/normalToFace/normalToFace.H +++ b/src/meshTools/sets/faceSources/normalToFace/normalToFace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,15 +28,54 @@ Class Foam::normalToFace Description - A topoSetFaceSource to select faces based on normal. + A \c topoSetFaceSource to select faces whose surface normal aligned + with a given direction. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - normal | The normal for selecting faces | yes | - cos | Tolerance angle (range -1, +1) | yes | + Operand | Type | Location + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source normalToFace; + normal (1 0 0); + cos 0.01; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: normalToFace | word | yes | - + normal | The surface normal direction | vector | yes | - + cos | Tolerance angle (range -1, +1), i.e. cosine of angle <!-- + --> between the input normal and face normal | scalar | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected faces + add | Add selected faces into this faceSet + subtract | Remove selected faces from this faceSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource + SourceFiles normalToFace.C @@ -60,13 +99,12 @@ class normalToFace : public topoSetFaceSource { - -private: + // Private Data //- Add usage string static addToUsageTable usage_; - //- (unit)vector to compare to + //- The surface normal direction vector normal_; //- Tolerance (i.e. cos of angle between normal_ and faceNormal) @@ -84,6 +122,7 @@ public: //- Runtime type information TypeName("normalToFace"); + // Constructors //- Construct from components @@ -112,7 +151,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/faceSources/patchToFace/patchToFace.H b/src/meshTools/sets/faceSources/patchToFace/patchToFace.H index e4beac574e8efbff973f7a68db4a2b259c0c57a5..79ffc44e6a5c9310a56a60bac8ca7992d900ddda 100644 --- a/src/meshTools/sets/faceSources/patchToFace/patchToFace.H +++ b/src/meshTools/sets/faceSources/patchToFace/patchToFace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,18 +28,73 @@ Class Foam::patchToFace Description - A topoSetFaceSource to select faces based on usage in patches. + A \c topoSetFaceSource to select cells associated with given patch(es). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - patches | The patch names or regexs | possibly | - patch | The patch name or regex | possibly | - name | Older specification for 'patch' | no | + Operand | Type | Location + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source patchToFace; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + patches + ( + <patchName1> + <patchName2> + ... + ); + + // Option-2 + patch <patchName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: patchToFace | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected faces + add | Add selected faces into this faceSet + subtract | Remove selected faces from this faceSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + patches | Names of patches | wordList | cond'l | - + patch | Name of patch | word | cond'l | - + \verbatim + Note - Must specify "patches", "patch" or "name" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c patches, and \c patch. + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource + - Foam::boundaryToFace SourceFiles patchToFace.C @@ -65,8 +120,7 @@ class patchToFace : public topoSetFaceSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -85,6 +139,7 @@ public: //- Runtime type information TypeName("patchToFace"); + // Constructors //- Construct from components @@ -108,7 +163,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/faceSources/pointToFace/pointToFace.C b/src/meshTools/sets/faceSources/pointToFace/pointToFace.C index 8cfdb2f88aab57a337f2d6fe3b80cf88d30bd9e9..584a32d660aaa71e6ba707dcbc7be55796fdd03e 100644 --- a/src/meshTools/sets/faceSources/pointToFace/pointToFace.C +++ b/src/meshTools/sets/faceSources/pointToFace/pointToFace.C @@ -67,6 +67,7 @@ Foam::topoSetSource::addToUsageTable Foam::pointToFace::usage_ " -two consecutive points (an edge) in the pointSet\n\n" ); + const Foam::Enum < Foam::pointToFace::pointAction diff --git a/src/meshTools/sets/faceSources/pointToFace/pointToFace.H b/src/meshTools/sets/faceSources/pointToFace/pointToFace.H index 605a61dde0882b553d4c6a659cef819995b73f5d..170ccfd1a2286af7c485d49cd92b045c8cea8532 100644 --- a/src/meshTools/sets/faceSources/pointToFace/pointToFace.H +++ b/src/meshTools/sets/faceSources/pointToFace/pointToFace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2012 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,18 +28,83 @@ Class Foam::pointToFace Description - A topoSetFaceSource to select faces based on use of points. + A \c topoSetFaceSource to select faces with any + point or any edge within a given \c pointSet(s). - \heading Dictionary parameters + Operands \table - Property | Description | Required | Default - sets | The pointSet names to use | possibly | - set | The pointSet name to use | possibly | - option | Selection type (all/any/edge) | yes | + Operand | Type | Location + input | pointSet(s) | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source pointToFace; + option <option>; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + sets + ( + <pointSetName1> + <pointSetName2> + ... + ); + + // Option-2 + set <pointSetName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: pointToFace | word | yes | - + option | Selection type - see below | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected faces + add | Add selected faces into this faceSet + subtract | Remove selected faces from this faceSet + \endverbatim + + Options for the \c option entry: + \verbatim + any | Any point in the pointSet + edge | Two consecutive points (an edge) in the pointSet + all | All points in the pointSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + sets | Names of input pointSets | wordList | cond'l | - + set | Name of input pointSet | word | cond'l | - + \verbatim + Note - Must specify "sets" or "set" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c sets, and \c set. + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource SourceFiles pointToFace.C @@ -93,7 +158,7 @@ private: // Private Member Functions - //- Depending on face to cell option add to or delete from cellSet. + //- Depending on face to cell option add to or delete from faceSet. void combine(topoSet& set, const bool add, const word& setName) const; @@ -102,6 +167,7 @@ public: //- Runtime type information TypeName("pointToFace"); + // Constructors //- Construct from components @@ -130,7 +196,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/faceSources/regionToFace/regionToFace.H b/src/meshTools/sets/faceSources/regionToFace/regionToFace.H index 67c6cb40fc927016964643d094ffef3f740e3c9d..9fafcb87e970070c8153eb85231d66e0a60d054e 100644 --- a/src/meshTools/sets/faceSources/regionToFace/regionToFace.H +++ b/src/meshTools/sets/faceSources/regionToFace/regionToFace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2012-2016 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,16 +28,54 @@ Class Foam::regionToFace Description - A topoSetFaceSource to select faces belonging to a topological connected - region (that contains given point) + A \c topoSetFaceSource to select cells belonging to a topologically + connected region (that contains given points). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - set | The face set name to use | yes | - nearPoint | The point on/near to the region | yes | + Operand | Type | Location + input | region | $FOAM_CASE/constant/\{\<region\>, polyMesh\} + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source regionToFace; + set <faceSetName>; + nearPoint <point>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: regionToFace | word | yes | - + set | Name of faceSet restricting search | word | yes | - + nearPoint | The point on/near to the region | vector | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected faces + add | Add selected faces into this faceSet + subtract | Remove selected faces from this faceSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource + SourceFiles regionToFace.C @@ -62,7 +100,7 @@ class regionToFace : public topoSetFaceSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -88,11 +126,13 @@ class regionToFace void combine(topoSet& set, const bool add) const; + public: //- Runtime type information TypeName("regionToFace"); + // Constructors //- Construct from components @@ -121,7 +161,6 @@ public: const topoSetSource::setAction action, topoSet& ) const; - }; diff --git a/src/meshTools/sets/faceSources/searchableSurfaceToFace/searchableSurfaceToFace.C b/src/meshTools/sets/faceSources/searchableSurfaceToFace/searchableSurfaceToFace.C index c4f0c8214d7da0f0fd5f0bed0b8591ab2c594de6..23738b47cb93cd9dbaaf76a1a0f9b76eefa767ad 100644 --- a/src/meshTools/sets/faceSources/searchableSurfaceToFace/searchableSurfaceToFace.C +++ b/src/meshTools/sets/faceSources/searchableSurfaceToFace/searchableSurfaceToFace.C @@ -102,7 +102,7 @@ void Foam::searchableSurfaceToFace::combine(topoSet& set, const bool add) const s.getVolumeType(ctrs, volTypes); const label len = volTypes.size(); - for (label elemi=0; elemi < len; ++elemi) + for (label elemi = 0; elemi < len; ++elemi) { if (volTypes[elemi] == volumeType::INSIDE) { diff --git a/src/meshTools/sets/faceSources/searchableSurfaceToFace/searchableSurfaceToFace.H b/src/meshTools/sets/faceSources/searchableSurfaceToFace/searchableSurfaceToFace.H index adcae2ca18ca29c6f16458294c7b9e29292680e8..20da3532651e183d57a3c34a68c162541ca3345c 100644 --- a/src/meshTools/sets/faceSources/searchableSurfaceToFace/searchableSurfaceToFace.H +++ b/src/meshTools/sets/faceSources/searchableSurfaceToFace/searchableSurfaceToFace.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -27,17 +27,56 @@ Class Foam::searchableSurfaceToFace Description - A topoSetFaceSource to select faces with centres within a - searchableSurface. + A \c topoSetFaceSource to select faces whose face + centre enclosed by a given \c searchableSurface. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - surfaceType | The searchable surface type | yes | - surfaceName | Name for the IOobject | no | mesh-name - surface | Same as 'surfaceType' | no | + Operand | Type | Location + input | triSurface | $FOAM_CASE/constant/triSurface/\<file\> + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source searchableSurfaceToFace; + surfaceType <surfaceTypeName>; + + // Optional entries + surfaceName <surfaceName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: searchableSurfaceToFace | word | yes | - + surfaceType | The searchable surface type | word | yes | - + surfaceName | Name for the IOobject | word | no | mesh-name + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected faces + add | Add selected faces into this faceSet + subtract | Remove selected faces from this faceSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource + SourceFiles searchableSurfaceToFace.C diff --git a/src/meshTools/sets/faceSources/sphereToFace/sphereToFace.C b/src/meshTools/sets/faceSources/sphereToFace/sphereToFace.C index bd51664665ce7ab1a3a161584bb0b81700474533..f7b0079c089464745bf75d0435930514bbae2e6f 100644 --- a/src/meshTools/sets/faceSources/sphereToFace/sphereToFace.C +++ b/src/meshTools/sets/faceSources/sphereToFace/sphereToFace.C @@ -113,8 +113,8 @@ Foam::sphereToFace::sphereToFace ( mesh, dict.getCompat<vector>("origin", {{"centre", -1806}}), - dict.get<scalar>("radius"), - dict.getOrDefault<scalar>("innerRadius", 0) + dict.getCheck<scalar>("radius", scalarMinMax::ge(0)), + dict.getCheckOrDefault<scalar>("innerRadius", 0, scalarMinMax::ge(0)) ) {} diff --git a/src/meshTools/sets/faceSources/sphereToFace/sphereToFace.H b/src/meshTools/sets/faceSources/sphereToFace/sphereToFace.H index 80dbdc1599c999be5c8508edd846438c7aece11f..07ddc2e575e9bc7dd6ac1f4f8c04ea7a6d450a4a 100644 --- a/src/meshTools/sets/faceSources/sphereToFace/sphereToFace.H +++ b/src/meshTools/sets/faceSources/sphereToFace/sphereToFace.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -27,17 +27,57 @@ Class Foam::sphereToFace Description - A topoSetFaceSource to select faces based on faces centres inside sphere. + A \c topoSetFaceSource to select faces based + on face centres inside a given bounding sphere. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - origin | The origin (centre) of the sphere | yes | - radius | The (outer) radius of sphere | yes | - innerRadius | The inner radius of sphere | no | 0 - centre | Alternative for 'origin' | no | + Operand | Type | Location + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source sphereToFace; + origin (0 0 0); + radius 0.5; + + // Optional entries + innerRadius 0; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: sphereToFace | word | yes | - + origin | The origin (centre) of the sphere | vector | yes | - + radius | The (outer) radius of sphere | scalar | yes | - + innerRadius | The inner radius of sphere | scalar | no | 0 + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected faces + add | Add selected faces into this faceSet + subtract | Remove selected faces from this faceSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource + SourceFiles sphereToFace.C @@ -61,8 +101,7 @@ class sphereToFace : public topoSetFaceSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -117,7 +156,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/faceSources/topoSetFaceSource/topoSetFaceSource.H b/src/meshTools/sets/faceSources/topoSetFaceSource/topoSetFaceSource.H index ff7021ba963a33180f541e2635cee248d5bd2b58..10455d5032ad9144c842f1ad06935de50885efa9 100644 --- a/src/meshTools/sets/faceSources/topoSetFaceSource/topoSetFaceSource.H +++ b/src/meshTools/sets/faceSources/topoSetFaceSource/topoSetFaceSource.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2018-2019 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -27,7 +27,11 @@ Class Foam::topoSetFaceSource Description - Base class of a topoSet source for selecting faces. + The \c topoSetFaceSource is a intermediate class + for handling \c topoSet sources for selecting faces. + + The class is not an executable \c topoSet itself, + yet a provider for common entries to its derived \c topoSet. SourceFiles topoSetFaceSource.C diff --git a/src/meshTools/sets/faceSources/zoneToFace/zoneToFace.H b/src/meshTools/sets/faceSources/zoneToFace/zoneToFace.H index 163e9706baa24a9d3b397d40aec249335151f7d1..7e30c342835cf165b24ecca47f43148106a5a4a7 100644 --- a/src/meshTools/sets/faceSources/zoneToFace/zoneToFace.H +++ b/src/meshTools/sets/faceSources/zoneToFace/zoneToFace.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,18 +28,73 @@ Class Foam::zoneToFace Description - A topoSetFaceSource to select faces based on one of more faceZones. + A \c topoSetFaceSource to convert \c faceZone(s) to a \c faceSet. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - zones | The face zone names or regexs | possibly | - zone | The face zone name or regex | possibly | - name | Older specification for 'zone' | no | + Operand | Type | Location + input | faceZone(s) | $FOAM_CASE/constant/polyMesh/faceZones + output | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceSet; + action <action>; + + // Mandatory entries + source zoneToFace; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + zones + ( + <faceZoneName0> + <faceZoneName1> + ... + ); + + // Option-2 + zone <faceZoneName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceSet | word | yes | - + type | Type name: faceSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: zoneToFace | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceSet from selected faces + add | Add selected faces into this faceSet + subtract | Remove selected faces from this faceSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + zones | Names of input faceZones | wordList | cond'l | - + zone | Name of input faceZone | word | cond'l | - + \verbatim + Note - Must specify "zones", "zone" or "name" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c zones, and \c zone. + +See also + - Foam::topoSetSource + - Foam::topoSetFaceSource SourceFiles zoneToFace.C @@ -65,8 +120,7 @@ class zoneToFace : public topoSetFaceSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -85,6 +139,7 @@ public: //- Runtime type information TypeName("zoneToFace"); + // Constructors //- Construct from components @@ -108,7 +163,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/faceZoneSources/faceZoneToFaceZone/faceZoneToFaceZone.H b/src/meshTools/sets/faceZoneSources/faceZoneToFaceZone/faceZoneToFaceZone.H index bac4cf627b4badb3c2567310e2497e80b487dd8f..afbcaf086ae6e3643a7368b613915c23fb7b3cb4 100644 --- a/src/meshTools/sets/faceZoneSources/faceZoneToFaceZone/faceZoneToFaceZone.H +++ b/src/meshTools/sets/faceZoneSources/faceZoneToFaceZone/faceZoneToFaceZone.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018-2019 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,14 +28,51 @@ Class Foam::faceZoneToFaceZone Description - A topoSetSource to select faces based on usage in another faceSet. + A \c topoSetSource to select faces of a given \c faceZone. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - zone | Name of input face zone (no regex) | yes | + Operand | Type | Location + input | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output 1 | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output 2 | faceZone | $FOAM_CASE/constant/polyMesh/faceZones \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceZoneSet; + action <action>; + + // Mandatory entries + source faceZoneToFaceZone; + zone <faceZoneName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceZone | word | yes | - + type | Type name: faceZoneSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: faceZoneToFaceZone | word | yes | - + zone | Name of input faceZone | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceZone from selected faces of a faceZone + add | Add selected faces of a faceZone into this faceZone + subtract | Remove selected faces of a faceZone from this faceZone + \endverbatim + +See also + - Foam::topoSetSource + SourceFiles faceZoneToFaceZone.C @@ -59,7 +96,7 @@ class faceZoneToFaceZone : public topoSetSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -67,11 +104,13 @@ class faceZoneToFaceZone //- Name of set to use word setName_; + public: //- Runtime type information TypeName("faceZoneToFaceZone"); + // Constructors //- Construct from components diff --git a/src/meshTools/sets/faceZoneSources/planeToFaceZone/planeToFaceZone.C b/src/meshTools/sets/faceZoneSources/planeToFaceZone/planeToFaceZone.C new file mode 100644 index 0000000000000000000000000000000000000000..e316ba0cc396fd4aee486797e4c8f1bc4c699861 --- /dev/null +++ b/src/meshTools/sets/faceZoneSources/planeToFaceZone/planeToFaceZone.C @@ -0,0 +1,413 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2020 OpenFOAM Foundation + Copyright (C) 2020 OpenCFD Ltd. +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "planeToFaceZone.H" +#include "polyMesh.H" +#include "faceZoneSet.H" +#include "uindirectPrimitivePatch.H" +#include "PatchTools.H" +#include "syncTools.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(planeToFaceZone, 0); + addToRunTimeSelectionTable(topoSetSource, planeToFaceZone, word); + addToRunTimeSelectionTable(topoSetSource, planeToFaceZone, istream); +} + + +Foam::topoSetSource::addToUsageTable Foam::planeToFaceZone::usage_ +( + planeToFaceZone::typeName, + "\n Usage: planeToFaceZone (px py pz) (nx ny nz) include\n\n" + " Select faces for which the adjacent cell centres lie on opposite " + " of a plane\n\n" +); + + +const Foam::Enum +< + Foam::planeToFaceZone::faceZoneAction +> +Foam::planeToFaceZone::faceZoneActionNames_ +({ + { faceZoneAction::ALL, "all" }, + { faceZoneAction::CLOSEST, "closest" }, +}); + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void Foam::planeToFaceZone::combine(faceZoneSet& fzSet, const bool add) const +{ + // Mark all cells with centres above the plane + boolList cellIsAbovePlane(mesh_.nCells()); + forAll(mesh_.cells(), celli) + { + cellIsAbovePlane[celli] = + ((mesh_.cellCentres()[celli] - point_) & normal_) > 0; + } + + // Mark all faces that sit between cells above and below the plane + boolList faceIsOnPlane(mesh_.nFaces()); + forAll(mesh_.faceNeighbour(), facei) + { + faceIsOnPlane[facei] = + cellIsAbovePlane[mesh_.faceOwner()[facei]] + != cellIsAbovePlane[mesh_.faceNeighbour()[facei]]; + } + forAll(mesh_.boundaryMesh(), patchi) + { + const polyPatch& patch = mesh_.boundaryMesh()[patchi]; + forAll(patch, patchFacei) + { + const label facei = patch.start() + patchFacei; + faceIsOnPlane[facei] = + patch.coupled() && cellIsAbovePlane[mesh_.faceOwner()[facei]]; + } + } + syncTools::syncFaceList(mesh_, faceIsOnPlane, notEqOp<bool>()); + + // Convert marked faces to a list of indices + labelList newSetFaces(findIndices(faceIsOnPlane, true)); + + // If constructing a single contiguous set, remove all faces except those + // connected to the contiguous region closest to the specified point + if (option_ == faceZoneAction::CLOSEST) + { + // Step 1: Get locally contiguous regions for the new face set and the + // total number of regions across all processors. + labelList newSetFaceRegions(newSetFaces.size(), -1); + label nRegions = -1; + { + // Create a patch of the set faces + const uindirectPrimitivePatch newSetPatch + ( + UIndirectList<face>(mesh_.faces(), newSetFaces), + mesh_.points() + ); + + // Get the region ID-s and store the total number of regions on + // each processor + labelList procNRegions(Pstream::nProcs(), -1); + procNRegions[Pstream::myProcNo()] = + PatchTools::markZones + ( + newSetPatch, + boolList(newSetPatch.nEdges(), false), + newSetFaceRegions + ); + Pstream::gatherList(procNRegions); + Pstream::scatterList(procNRegions); + + // Cumulative sum the number of regions on each processor to get an + // offset which makes the local region ID-s globally unique + labelList procRegionOffset(Pstream::nProcs(), 0); + for (label proci = 1; proci < Pstream::nProcs(); ++ proci) + { + procRegionOffset[proci] += + procRegionOffset[proci - 1] + + procNRegions[proci - 1]; + } + + // Apply the offset + forAll(newSetFaces, newSetFacei) + { + newSetFaceRegions[newSetFacei] += + procRegionOffset[Pstream::myProcNo()]; + } + + // Store the total number of regions across all processors + nRegions = procRegionOffset.last() + procNRegions.last(); + } + + // Step 2: Create a region map which combines regions which are + // connected across coupled interfaces + labelList regionMap(identity(nRegions)); + { + // Put region labels on connected boundary edges and synchronise to + // create a list of all regions connected to a given edge + labelListList meshEdgeRegions(mesh_.nEdges(), labelList()); + forAll(newSetFaces, newSetFacei) + { + const label facei = newSetFaces[newSetFacei]; + const label regioni = newSetFaceRegions[newSetFacei]; + forAll(mesh_.faceEdges()[facei], faceEdgei) + { + const label edgei = mesh_.faceEdges()[facei][faceEdgei]; + meshEdgeRegions[edgei] = labelList(1, regioni); + } + } + syncTools::syncEdgeList + ( + mesh_, + meshEdgeRegions, + globalMeshData::ListPlusEqOp<labelList>(), + labelList() + ); + + // Combine edge regions to create a list of what regions a given + // region is connected to + List<labelHashSet> regionRegions(nRegions); + forAll(newSetFaces, newSetFacei) + { + const label facei = newSetFaces[newSetFacei]; + const label regioni = newSetFaceRegions[newSetFacei]; + forAll(mesh_.faceEdges()[facei], faceEdgei) + { + const label edgei = mesh_.faceEdges()[facei][faceEdgei]; + forAll(meshEdgeRegions[edgei], edgeRegioni) + { + if (meshEdgeRegions[edgei][edgeRegioni] != regioni) + { + regionRegions[regioni].insert + ( + meshEdgeRegions[edgei][edgeRegioni] + ); + } + } + } + } + Pstream::listCombineGather(regionRegions, plusEqOp<labelHashSet>()); + Pstream::listCombineScatter(regionRegions); + + // Collapse the region connections into a map between each region + // and the lowest numbered region that it connects to + forAll(regionRegions, regioni) + { + forAllConstIter(labelHashSet, regionRegions[regioni], iter) + { + regionMap[iter.key()] = + min(regionMap[iter.key()], regionMap[regioni]); + } + } + } + + // Step 3: Combine connected regions + labelList regionNFaces; + { + // Remove duplicates from the region map + label regioni0 = 0; + forAll(regionMap, regioni) + { + if (regionMap[regioni] > regioni0) + { + ++ regioni0; + regionMap[regioni] = regioni0; + } + } + + // Recompute the number of regions + nRegions = regioni0 + 1; + + // Renumber the face region ID-s + newSetFaceRegions = + IndirectList<label>(regionMap, newSetFaceRegions); + + // Report the final number and size of the regions + regionNFaces = labelList(nRegions, 0); + forAll(newSetFaces, newSetFacei) + { + regionNFaces[newSetFaceRegions[newSetFacei]] ++; + } + Pstream::listCombineGather(regionNFaces, plusEqOp<label>()); + Pstream::listCombineScatter(regionNFaces); + Info<< " Found " << nRegions << " contiguous regions with " + << regionNFaces << " faces" << endl; + } + + // Step 4: Choose the closest region to output + label selectedRegioni = -1; + { + // Compute the region centres + scalarField regionMagAreas(nRegions, 0); + pointField regionCentres(nRegions, Zero); + forAll(newSetFaces, newSetFacei) + { + const label facei = newSetFaces[newSetFacei]; + const label regioni = newSetFaceRegions[newSetFacei]; + + const vector& a = mesh_.faceAreas()[facei]; + const point& c = mesh_.faceCentres()[facei]; + + regionMagAreas[regioni] += mag(a); + regionCentres[regioni] += mag(a)*c; + } + Pstream::listCombineGather(regionMagAreas, plusEqOp<scalar>()); + Pstream::listCombineGather(regionCentres, plusEqOp<point>()); + Pstream::listCombineScatter(regionMagAreas); + Pstream::listCombineScatter(regionCentres); + regionCentres /= regionMagAreas; + + // Find the region centroid closest to the reference point + selectedRegioni = + returnReduce + ( + findMin(mag(regionCentres - point_)()), + minOp<label>() + ); + + // Report the selection + Info<< " Selecting region " << selectedRegioni << " with " + << regionNFaces[selectedRegioni] + << " faces as the closest to point " << point_ << endl; + } + + // Step 5: Remove any faces from the set list not in the selected region + { + // Remove faces from the list by shuffling up and resizing + label newSetFacei0 = 0; + forAll(newSetFaces, newSetFacei) + { + newSetFaces[newSetFacei0] = newSetFaces[newSetFacei]; + + if (newSetFaceRegions[newSetFacei] == selectedRegioni) + { + ++ newSetFacei0; + } + } + newSetFaces.resize(newSetFacei0); + } + } + + // Modify the face zone set + DynamicList<label> newAddressing; + DynamicList<bool> newFlipMap; + if (add) + { + // Start from copy + newAddressing = DynamicList<label>(fzSet.addressing()); + newFlipMap = DynamicList<bool>(fzSet.flipMap()); + + // Add anything from the new set that is not already in the zone set + forAll(newSetFaces, newSetFacei) + { + const label facei = newSetFaces[newSetFacei]; + + if (!fzSet.found(facei)) + { + newAddressing.append(facei); + newFlipMap.append(cellIsAbovePlane[mesh_.faceOwner()[facei]]); + } + } + } + else + { + // Start from empty + newAddressing = DynamicList<label>(fzSet.addressing().size()); + newFlipMap = DynamicList<bool>(fzSet.flipMap().size()); + + // Add everything from the zone set that is not also in the new set + labelHashSet newSet(newSetFaces); + forAll(fzSet.addressing(), i) + { + const label facei = fzSet.addressing()[i]; + + if (!newSet.found(facei)) + { + newAddressing.append(facei); + newFlipMap.append(cellIsAbovePlane[mesh_.faceOwner()[facei]]); + } + } + } + fzSet.addressing().transfer(newAddressing); + fzSet.flipMap().transfer(newFlipMap); + fzSet.updateSet(); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::planeToFaceZone::planeToFaceZone +( + const polyMesh& mesh, + const dictionary& dict +) +: + topoSetSource(mesh), + point_(dict.get<vector>("point")), + normal_(dict.get<vector>("normal")), + option_ + ( + faceZoneActionNames_.getOrDefault("option", dict, faceZoneAction::ALL) + ) +{} + + +Foam::planeToFaceZone::planeToFaceZone +( + const polyMesh& mesh, + Istream& is +) +: + topoSetSource(mesh), + point_(checkIs(is)), + normal_(checkIs(is)), + option_(faceZoneActionNames_.read(checkIs(is))) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::planeToFaceZone::applyToSet +( + const topoSetSource::setAction action, + topoSet& set +) const +{ + if (!isA<faceZoneSet>(set)) + { + WarningInFunction + << "Operation only allowed on a faceZoneSet." << endl; + } + else + { + faceZoneSet& fzSet = refCast<faceZoneSet>(set); + + if ((action == topoSetSource::NEW) || (action == topoSetSource::ADD)) + { + Info<< " Adding faces which form a plane at " << point_ + << " with normal " << normal_ << endl; + + combine(fzSet, true); + } + else if (action == topoSetSource::DELETE) + { + Info<< " Removing faces which form a plane at " << point_ + << " with normal " << normal_ << endl; + + combine(fzSet, false); + } + } +} + + +// ************************************************************************* // diff --git a/src/meshTools/sets/faceZoneSources/searchableSurfaceToFaceZone/searchableSurfaceToFaceZone.H b/src/meshTools/sets/faceZoneSources/searchableSurfaceToFaceZone/searchableSurfaceToFaceZone.H index 5db0d4ef05a5e75feaeeb7008f70324b3a9fd089..15bdae2d2126f08efe4bd25ca2ed0c09637eb591 100644 --- a/src/meshTools/sets/faceZoneSources/searchableSurfaceToFaceZone/searchableSurfaceToFaceZone.H +++ b/src/meshTools/sets/faceZoneSources/searchableSurfaceToFaceZone/searchableSurfaceToFaceZone.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2012 OpenFOAM Foundation - Copyright (C) 2018-2019 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,18 +28,56 @@ Class Foam::searchableSurfaceToFaceZone Description - A topoSetSource to select faces based on intersection (of cell-cell - vector) with a surface. + A \c topoSetSource to select all faces whose cell-cell centre vector + intersects with a given \c searchableSurface. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - surfaceType | The searchable surface type | yes | - surfaceName | Name for the IOobject | no | mesh-name - surface | Same as 'surfaceType' | no | - name | Older specification for 'surfaceName' | no | + Operand | Type | Location + input | triSurface | $FOAM_CASE/constant/triSurface/\<file\> + output 1 | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output 2 | faceZone | $FOAM_CASE/constant/polyMesh/faceZones \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceZoneSet; + action <action>; + + // Mandatory entries + source searchableSurfaceToFaceZone; + surfaceType <surfaceTypeName>; + + // Optional entries + surfaceName <surfaceName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceZone | word | yes | - + type | Type name: faceZone | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: searchableSurfaceToFaceZone | word | yes | - + surfaceType | The searchable surface type | word | yes | - + surfaceName | Name for the IOobject | word | no | mesh-name + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceZone from selected faces + add | Add selected faces into this faceZone + subtract | Remove selected faces from this faceZone + \endverbatim + +See also + - Foam::topoSetSource + SourceFiles searchableSurfaceToFaceZone.C @@ -65,7 +103,7 @@ class searchableSurfaceToFaceZone : public topoSetSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -91,6 +129,7 @@ public: //- Runtime type information TypeName("searchableSurfaceToFaceZone"); + // Constructors //- Construct surface-type from dictionary diff --git a/src/meshTools/sets/faceZoneSources/setAndNormalToFaceZone/setAndNormalToFaceZone.H b/src/meshTools/sets/faceZoneSources/setAndNormalToFaceZone/setAndNormalToFaceZone.H index de59e08ff19293e6e2fcc5ca8961814564d51deb..784e00338b495bd6ec865e685d616d88b4ce2669 100644 --- a/src/meshTools/sets/faceZoneSources/setAndNormalToFaceZone/setAndNormalToFaceZone.H +++ b/src/meshTools/sets/faceZoneSources/setAndNormalToFaceZone/setAndNormalToFaceZone.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2013 OpenFOAM Foundation - Copyright (C) 2018-2019 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,16 +28,50 @@ Class Foam::setAndNormalToFaceZone Description - A topoSetSource to select faces based on usage in a faceSet, where the - normal vector is used to orient the faces. + A \c topoSetSource to select faces based on usage in a \c faceSet, + where the normal vector is used to orient the faces. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - faceSet | Name of input faceSet | yes | - normal | The normal vector for orientation | yes | + Operand | Type | Location + input | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output | faceZone | $FOAM_CASE/constant/polyMesh/faceZones \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceZoneSet; + action <action>; + + // Mandatory entries + source setAndNormalToFaceZone; + faceSet <faceSetName>; + normal (1 0 0); + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceZoneSet | word | yes | - + type | Type name: faceZoneSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: setAndNormalToFaceZone | word | yes | - + faceSet | Name of input faceSet | word | yes | - + normal | The normal vector for orientation | vector | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceZoneSet from selected faces + add | Add selected faces into this faceZoneSet + subtract | Remove selected faces from this faceZoneSet + \endverbatim + SourceFiles setAndNormalToFaceZone.C @@ -61,7 +95,7 @@ class setAndNormalToFaceZone : public topoSetSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; diff --git a/src/meshTools/sets/faceZoneSources/setToFaceZone/setToFaceZone.H b/src/meshTools/sets/faceZoneSources/setToFaceZone/setToFaceZone.H index f0151f37357d4ef7ef8e254a53c76f3eb7b75d62..bf072d4f0166fe512e957922b8aebceefd4fc22b 100644 --- a/src/meshTools/sets/faceZoneSources/setToFaceZone/setToFaceZone.H +++ b/src/meshTools/sets/faceZoneSources/setToFaceZone/setToFaceZone.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018-2019 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,20 +28,57 @@ Class Foam::setToFaceZone Description - A topoSetSource to select faces based on usage in a faceSet. - Sets flipMap to true. + A \c topoSetSource to convert a \c faceSet + to a \c faceZone (and associated \c faceSet). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - faceSet | Name of input faceSet | yes | + Operand | Type | Location + input | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output 1 | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output 2 | faceZone | $FOAM_CASE/constant/polyMesh/faceZones \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceZoneSet; + action <action>; + + // Mandatory entries + source setToFaceZone; + faceSet <faceSetName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceZone | word | yes | - + type | Type name: faceZoneSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: setToFaceZone | word | yes | - + faceSet | Name of input faceSet | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceZone from selected faces of a faceSet + add | Add selected faces of a faceSet into this faceZone + subtract | Remove selected faces of a faceSet from this faceZone + \endverbatim + Note - The use of keyword \c faceSet is consistent with the setsToFaceZone, - but inconsistent with setToCellZone and setToPointZone. + The use of keyword \c faceSet is consistent with the \c setsToFaceZone, + but inconsistent with \c setToCellZone and \c setToPointZone. Both of which use \c set instead. +See also + - Foam::topoSetSource + SourceFiles setToFaceZone.C @@ -65,7 +102,7 @@ class setToFaceZone : public topoSetSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -73,11 +110,13 @@ class setToFaceZone //- Name of set to use word setName_; + public: //- Runtime type information TypeName("setToFaceZone"); + // Constructors //- Construct from components diff --git a/src/meshTools/sets/faceZoneSources/setsToFaceZone/setsToFaceZone.H b/src/meshTools/sets/faceZoneSources/setsToFaceZone/setsToFaceZone.H index 0cb09e7f1f4b5419c81145f0100ebef8ecfc13f1..6c4aec63a050ba2bdcd201da6813c89214c9030d 100644 --- a/src/meshTools/sets/faceZoneSources/setsToFaceZone/setsToFaceZone.H +++ b/src/meshTools/sets/faceZoneSources/setsToFaceZone/setsToFaceZone.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2013 OpenFOAM Foundation - Copyright (C) 2018-2019 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,16 +28,59 @@ Class Foam::setsToFaceZone Description - A topoSetSource to select faces based on usage in a faceSet and cellSet + A \c topoSetSource to select all faces in a given \c faceSet, + which are oriented in slave cells of a given \c cellSet. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - cellSet | Name of input cellSet | yes | - faceSet | Name of input faceSet | yes | - flip | Force flip of faces | no | false + Operand | Type | Location + input 1 | faceSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + input 2 | cellSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output | faceZone | $FOAM_CASE/constant/polyMesh/faceZones \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type faceZoneSet; + action <action>; + + // Mandatory entries + source setToFaceZone; + faceSet <faceSetName>; + cellSet <cellSetName>; + + // Optional entries + flip false; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of faceZone | word | yes | - + type | Type name: faceZoneSet | word | yes | - + action | Action applied on faces - see below | word | yes | - + source | Source name: setsToFaceZone | word | yes | - + faceSet | Name of input faceSet | word | yes | - + cellSet | Name of input cellSet containing the slave cells <!-- + --> | word | yes | - + flip | Flag to select master/slave cells | bool | no | false + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new faceZone from selected faces + add | Add selected faces of a faceZoneSet into this faceZone + subtract | Remove selected faces of a faceZoneSet from this faceZone + \endverbatim + +See also + - Foam::topoSetSource + SourceFiles setsToFaceZone.C @@ -61,7 +104,7 @@ class setsToFaceZone : public topoSetSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -75,11 +118,13 @@ class setsToFaceZone //- Whether cellSet is slave cells or master cells const bool flip_; + public: //- Runtime type information TypeName("setsToFaceZone"); + // Constructors //- Construct from components diff --git a/src/meshTools/sets/pointSources/boxToPoint/boxToPoint.H b/src/meshTools/sets/pointSources/boxToPoint/boxToPoint.H index 7a5a16fb4515b8505e6eabbc925abaf712a88a51..cd138b393c25c9d0e88434acd050e6c95a7c8991 100644 --- a/src/meshTools/sets/pointSources/boxToPoint/boxToPoint.H +++ b/src/meshTools/sets/pointSources/boxToPoint/boxToPoint.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2015 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,20 +28,80 @@ Class Foam::boxToPoint Description - A topoSetPointSource to select points based on whether they are inside box. + A \c topoSetPointSource to select all points based + on whether they are inside given bounding box(es). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - boxes | Multiple bounding boxes | partly | - box | A single bounding box | partly | - min | Minimum point for a single box | partly | - max | Maximum point for a single box | partly | + Operand | Type | Location + output | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type pointSet; + action <action>; + + // Mandatory entries + source boxToPoint; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + boxes + ( + (<minX> <minY> <minZ>) (<maxX> <maxY> <maxZ>) // box-1 + (<minX> <minY> <minZ>) (<maxX> <maxY> <maxZ>) // box-2 + ... + ); + + // Option-2 + box (<minX> <minY> <minZ>) (<maxX> <maxY> <maxZ>); + + // Option-3 + min (<minX> <minY> <minZ>); + max (<maxX> <maxY> <maxZ>); + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of pointSet | word | yes | - + type | Type name: pointSet | word | yes | - + action | Action applied on points - see below | word | yes | - + source | Source name: boxToPoint | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new pointSet from selected points + add | Add selected points into this pointSet + subtract | Remove selected points from this pointSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + boxes | Multiple bounding boxes | vectorList | cond'l | - + box | A single bounding box | vector | cond'l | - + min | Minimum point for a single box | vector | cond'l | - + max | Maximum point for a single box | vector | cond'l | - + \verbatim + Note - Must specify "boxes", "box" or a "min/max" pair - (compatibility with searchable box) - highest to lowest precedence. + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c boxes, \c box or a \c min-max pair + (compatibility with \c searchableBox). + +See also + - Foam::topoSetSource + - Foam::topoSetPointSource SourceFiles boxToPoint.C @@ -67,8 +127,7 @@ class boxToPoint : public topoSetPointSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -87,6 +146,7 @@ public: //- Runtime type information TypeName("boxToPoint"); + // Constructors //- Construct from components, copying bounding boxes @@ -113,7 +173,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/pointSources/cellToPoint/cellToPoint.H b/src/meshTools/sets/pointSources/cellToPoint/cellToPoint.H index 0bb885d7ff2d1838975d5be22816514c73ce758b..b2c7bb54ea4d41b691ec7f3c1e2cf2814b78c627 100644 --- a/src/meshTools/sets/pointSources/cellToPoint/cellToPoint.H +++ b/src/meshTools/sets/pointSources/cellToPoint/cellToPoint.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,18 +28,80 @@ Class Foam::cellToPoint Description - A topoSetPointSource to select points based on usage in cells. + A \c topoSetPointSource to select all the points from given \c cellSet(s). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - sets | The cellSet names to use | possibly | - set | The cellSet name to use | possibly | - option | Selection type (all) | yes | + Operand | Type | Location + input | cellSet(s) | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type pointSet; + action <action>; + + // Mandatory entries + source cellToPoint; + option <option>; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + sets + ( + <pointSetName1> + <pointSetName2> + ... + ); + + // Option-2 + set <pointSetName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of pointSet | word | yes | - + type | Type name: pointSet | word | yes | - + action | Action applied on points - see below | word | yes | - + source | Source name: cellToPoint | word | yes | - + option | Selection type - see below | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new pointSet from selected points + add | Add selected points into this pointSet + subtract | Remove selected points from this pointSet + \endverbatim + + Options for the \c option entry: + \verbatim + all | Select all points of cells in the cellSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + sets | Names of input cellSets | wordList | cond'l | - + set | Name of input cellSet | word | cond'l | - + \verbatim + Note - Must specify "sets" or "set" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c sets, and \c set. + +See also + - Foam::topoSetSource + - Foam::topoSetPointSource SourceFiles cellToPoint.C @@ -73,8 +135,11 @@ public: ALL }; + private: + // Private Data + //- Add usage string static addToUsageTable usage_; @@ -89,7 +154,6 @@ private: // Private Member Functions - //- Depending on face to cell option add to or delete from cellSet. void combine(topoSet& set, const bool add, const word& setName) const; @@ -98,6 +162,7 @@ public: //- Runtime type information TypeName("cellToPoint"); + // Constructors //- Construct from components @@ -126,7 +191,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/pointSources/cylinderToPoint/cylinderToPoint.C b/src/meshTools/sets/pointSources/cylinderToPoint/cylinderToPoint.C index 12886bebf5890cca705b0e7b962bad0e79a88c67..9f2063b4ebbda0ea614d264c5ccd4318e40651cb 100644 --- a/src/meshTools/sets/pointSources/cylinderToPoint/cylinderToPoint.C +++ b/src/meshTools/sets/pointSources/cylinderToPoint/cylinderToPoint.C @@ -124,8 +124,8 @@ Foam::cylinderToPoint::cylinderToPoint mesh, dict.get<point>("p1"), dict.get<point>("p2"), - dict.get<scalar>("radius"), - dict.getOrDefault<scalar>("innerRadius", 0) + dict.getCheck<scalar>("radius", scalarMinMax::ge(0)), + dict.getCheckOrDefault<scalar>("innerRadius", 0, scalarMinMax::ge(0)) ) {} diff --git a/src/meshTools/sets/pointSources/cylinderToPoint/cylinderToPoint.H b/src/meshTools/sets/pointSources/cylinderToPoint/cylinderToPoint.H index 783055b219f93e77969222e1dae30a0792e33eef..1d9f7b6fc6856a1b914a24c697a7f0ceea7c77b6 100644 --- a/src/meshTools/sets/pointSources/cylinderToPoint/cylinderToPoint.H +++ b/src/meshTools/sets/pointSources/cylinderToPoint/cylinderToPoint.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2017 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,17 +28,59 @@ Class Foam::cylinderToPoint Description - A topoSetPointSource to select points inside a cylinder. + A \c topoSetPointSource to select all points which are + inside a given bounding cylinder or cylinder annulus. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - p1 | Coordinate of endpoint | yes | - p2 | Coordinate of endpoint | yes | - radius | Cylinder (outer) radius | yes | - innerRadius | Cylinder inner radius | no | 0 + Operand | Type | Location + output | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type pointSet; + action <action>; + + // Mandatory entries + source cylinderToPoint; + p1 (<p1X> <p1Y> <p1Z>); + p2 (<p2X> <p2Y> <p2Z>); + radius <radius1>; + + // Optional entries + innerRadius <radius2>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of pointSet | word | yes | - + type | Type name: pointSet | word | yes | - + action | Action applied on points - see below | word | yes | - + source | Source name: cylinderToPoint | word | yes | - + p1 | Coordinate of one of the endpoints | vector | yes | - + p2 | Coordinate of the other endpoint | vector | yes | - + radius | Cylinder outer radius | scalar | yes | - + innerRadius | Cylinder inner radius | scalar | no | 0 + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new pointSet from selected points + add | Add selected points into this pointSet + subtract | Remove selected points from this pointSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetPointSource + SourceFiles cylinderToPoint.C @@ -62,8 +104,7 @@ class cylinderToPoint : public topoSetPointSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; diff --git a/src/meshTools/sets/pointSources/faceToPoint/faceToPoint.H b/src/meshTools/sets/pointSources/faceToPoint/faceToPoint.H index a2fdc61eb56b389e1db04314833787bfb4e52ec9..7d0a58f22a2a1d8ec58361363899cde2740d0314 100644 --- a/src/meshTools/sets/pointSources/faceToPoint/faceToPoint.H +++ b/src/meshTools/sets/pointSources/faceToPoint/faceToPoint.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,18 +28,81 @@ Class Foam::faceToPoint Description - A topoSetPointSource to select points based on usage in faces. + A \c topoSetPointSource to select all + points based on usage in given \c faceSet(s). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - sets | The faceSet names to use | possibly | - set | The faceSet name to use | possibly | - option | Selection type (all) | yes | + Operand | Type | Location + input | faceSet(s) | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type pointSet; + action <action>; + + // Mandatory entries + source faceToPoint; + option <option>; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + sets + ( + <faceSetName0> + <faceSetName1> + ... + ); + + // Option-2 + set <faceSetName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of pointSet | word | yes | - + type | Type name: pointSet | word | yes | - + action | Action applied on points - see below | word | yes | - + source | Source name: faceToPoint | word | yes | - + option | Selection type - see below | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new pointSet from selected points + add | Add selected points into this pointSet + subtract | Remove selected points from this pointSet + \endverbatim + + Options for the \c option entry: + \verbatim + all | Select all points of faces in the faceSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + sets | Names of input faceSets | wordList | cond'l | - + set | Name of input faceSet | word | cond'l | - + \verbatim + Note - Must specify "sets" or "set" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c sets, and \c set. + +See also + - Foam::topoSetSource + - Foam::topoSetPointSource SourceFiles faceToPoint.C @@ -73,8 +136,11 @@ public: ALL }; + private: + // Private Data + //- Add usage string static addToUsageTable usage_; @@ -89,7 +155,6 @@ private: // Private Member Functions - //- Depending on face to cell option add to or delete from cellSet. void combine(topoSet& set, const bool add, const word& setName) const; @@ -98,6 +163,7 @@ public: //- Runtime type information TypeName("faceToPoint"); + // Constructors //- Construct from components @@ -126,7 +192,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/pointSources/labelToPoint/labelToPoint.H b/src/meshTools/sets/pointSources/labelToPoint/labelToPoint.H index 0df678b9902df46002b2b0aae1e26cb7bc272abc..e26ac9410de6627215b0414820aab0eceb80f4f3 100644 --- a/src/meshTools/sets/pointSources/labelToPoint/labelToPoint.H +++ b/src/meshTools/sets/pointSources/labelToPoint/labelToPoint.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2015 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,14 +28,56 @@ Class Foam::labelToPoint Description - A topoSetPointSource to select points given explicitly provided labels. + A \c topoSetPointSource to select points + based on explicitly given point labels. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - value | The point labels | yes | + Operand | Type | Location + output | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type pointSet; + action <action>; + + // Mandatory entries + source labelToPoint; + value + ( + <pointLabel1> + <pointLabel2> + ... + ); + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of pointSet | word | yes | - + type | Type name: pointSet | word | yes | - + action | Action applied on points - see below | word | yes | - + source | Source name: labelToPoint | word | yes | - + value | Input point labels | labelList | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new pointSet from selected points + add | Add selected points into this pointSet + subtract | Remove selected points from this pointSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetPointSource + SourceFiles labelToPoint.C @@ -59,8 +101,7 @@ class labelToPoint : public topoSetPointSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -74,6 +115,7 @@ public: //- Runtime type information TypeName("labelToPoint"); + // Constructors //- Construct from components, copying labels @@ -100,7 +142,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/pointSources/nearestToPoint/nearestToPoint.H b/src/meshTools/sets/pointSources/nearestToPoint/nearestToPoint.H index 229ac0a361bb1623e4a0ead6ecaf11b1b16d4d02..aca69e8fa20b7399e6fddb1f7df34a1b173b8fa6 100644 --- a/src/meshTools/sets/pointSources/nearestToPoint/nearestToPoint.H +++ b/src/meshTools/sets/pointSources/nearestToPoint/nearestToPoint.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2015 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,14 +28,55 @@ Class Foam::nearestToPoint Description - A topoSetPointSource to select points nearest to points. + A \c topoSetPointSource to select points nearest to given points. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - points | List of selection points | yes | + Operand | Type | Location + output | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type pointSet; + action <action>; + + // Mandatory entries + source nearestToPoint; + points + ( + (<p1x> <p1y> <p1z>) + (<p2x> <p2y> <p2z>) + ... + ); + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of pointSet | word | yes | - + type | Type name: pointSet | word | yes | - + action | Action applied on points - see below | word | yes | - + source | Source name: nearestToPoint | word | yes | - + points | List of selection points | vectorList | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new pointSet from selected points + add | Add selected points into this pointSet + subtract | Remove selected points from this pointSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetPointSource + SourceFiles nearestToPoint.C @@ -59,8 +100,7 @@ class nearestToPoint : public topoSetPointSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -79,6 +119,7 @@ public: //- Runtime type information TypeName("nearestToPoint"); + // Constructors //- Construct from components, copying points @@ -105,7 +146,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/pointSources/pointToPoint/pointToPoint.H b/src/meshTools/sets/pointSources/pointToPoint/pointToPoint.H index 9bde744826a15ddaa38923243a1904f45ac84ac1..261181a079067b9191a561dbb873a3106494b298 100644 --- a/src/meshTools/sets/pointSources/pointToPoint/pointToPoint.H +++ b/src/meshTools/sets/pointSources/pointToPoint/pointToPoint.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,17 +28,73 @@ Class Foam::pointToPoint Description - A topoSetPointSource to select the points from another pointSet. + A \c topoSetPointSource to select all points from given \c pointSet(s). - \heading Dictionary parameters + Operands \table - Property | Description | Required | Default - sets | The input pointSet names | possibly | - set | The input pointSet name | possibly | + Operand | Type | Location + input | pointSet(s) | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type pointSet; + action <action>; + + // Mandatory entries + source pointToPoint; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + sets + ( + <pointSetName1> + <pointSetName2> + ... + ); + + // Option-2 + set <pointSetName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of pointSet | word | yes | - + type | Type name: pointSet | word | yes | - + action | Action applied on points - see below | word | yes | - + source | Source name: pointToPoint | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new pointSet from selected points + add | Add selected points into this pointSet + subtract | Remove selected points from this pointSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + sets | Names of input pointSets | wordList | cond'l | - + set | Name of input pointSet | word | cond'l | - + \verbatim + Note - Must specify "sets" or "set" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c sets, and \c set. + +See also + - Foam::topoSetSource + - Foam::topoSetPointSource SourceFiles pointToPoint.C @@ -63,7 +119,7 @@ class pointToPoint : public topoSetPointSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -77,6 +133,7 @@ public: //- Runtime type information TypeName("pointToPoint"); + // Constructors //- Construct from components @@ -100,7 +157,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/pointSources/searchableSurfaceToPoint/searchableSurfaceToPoint.H b/src/meshTools/sets/pointSources/searchableSurfaceToPoint/searchableSurfaceToPoint.H index 5018efdc724451233d22108b6c0ca7c694a7d3f4..e11ced764a6ca14502e44d731dd037d65f5e147f 100644 --- a/src/meshTools/sets/pointSources/searchableSurfaceToPoint/searchableSurfaceToPoint.H +++ b/src/meshTools/sets/pointSources/searchableSurfaceToPoint/searchableSurfaceToPoint.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -27,16 +27,56 @@ Class Foam::searchableSurfaceToPoint Description - A topoSetPointSource to select mesh points within a searchableSurface. + A \c topoSetPointSource to select points which are + centre enclosed by a given \c searchableSurface. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - surfaceType | The searchable surface type | yes | - surfaceName | Name for the IOobject | no | mesh-name - surface | Same as 'surfaceType' | no | + Operand | Type | Location + input | triSurface | $FOAM_CASE/constant/triSurface/\<file\> + output | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type pointSet; + action <action>; + + // Mandatory entries + source searchableSurfaceToPoint; + surfaceType <surfaceTypeName>; + + // Optional entries + surfaceName <surfaceName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of pointSet | word | yes | - + type | Type name: pointSet | word | yes | - + action | Action applied on points - see below | word | yes | - + source | Source name: searchableSurfaceToPoint | word | yes | - + surfaceType | The searchable surface type | word | yes | - + surfaceName | Name for the IOobject | word | no | mesh-name + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new pointSet from selected points + add | Add selected points into this pointSet + subtract | Remove selected points from this pointSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetPointSource + SourceFiles searchableSurfaceToPoint.C diff --git a/src/meshTools/sets/pointSources/sphereToPoint/sphereToPoint.C b/src/meshTools/sets/pointSources/sphereToPoint/sphereToPoint.C index 80067c43ab1a1c20d9d6b0e0863a8ca4a5b9ca45..e564b7892550889d2fe24a036debd0d27343daf4 100644 --- a/src/meshTools/sets/pointSources/sphereToPoint/sphereToPoint.C +++ b/src/meshTools/sets/pointSources/sphereToPoint/sphereToPoint.C @@ -113,8 +113,8 @@ Foam::sphereToPoint::sphereToPoint ( mesh, dict.getCompat<vector>("origin", {{"centre", -1806}}), - dict.get<scalar>("radius"), - dict.getOrDefault<scalar>("innerRadius", 0) + dict.getCheck<scalar>("radius", scalarMinMax::ge(0)), + dict.getCheckOrDefault<scalar>("innerRadius", 0, scalarMinMax::ge(0)) ) {} diff --git a/src/meshTools/sets/pointSources/sphereToPoint/sphereToPoint.H b/src/meshTools/sets/pointSources/sphereToPoint/sphereToPoint.H index f81393c730f7f447a18c88f9a21b282a39a8a9d5..2d989af20aae9e472d097c7e2a39f0ad3233b347 100644 --- a/src/meshTools/sets/pointSources/sphereToPoint/sphereToPoint.H +++ b/src/meshTools/sets/pointSources/sphereToPoint/sphereToPoint.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -27,17 +27,57 @@ Class Foam::sphereToPoint Description - A topoSetPointSource to select based on mesh points inside sphere. + A \c topoSetPointSource to select points + which are inside a given bounding sphere. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - origin | The origin (centre) of the sphere | yes | - radius | The (outer) radius of sphere | yes | - innerRadius | The inner radius of sphere | no | 0 - centre | Alternative for 'origin' | no | + Operand | Type | Location + output | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type pointSet; + action <action>; + + // Mandatory entries + source sphereToPoint; + origin (0 0 0); + radius 0.5; + + // Optional entries + innerRadius 0; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of pointSet | word | yes | - + type | Type name: pointSet | word | yes | - + action | Action applied on points - see below | word | yes | - + source | Source name: sphereToPoint | word | yes | - + origin | The origin (centre) of the sphere | vector | yes | - + radius | The (outer) radius of sphere | scalar | yes | - + innerRadius | The inner radius of sphere | scalar | no | 0 + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new pointSet from selected points + add | Add selected points into this pointSet + subtract | Remove selected points from this pointSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetPointSource + SourceFiles sphereToPoint.C @@ -61,8 +101,7 @@ class sphereToPoint : public topoSetPointSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -117,7 +156,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/pointSources/surfaceToPoint/surfaceToPoint.H b/src/meshTools/sets/pointSources/surfaceToPoint/surfaceToPoint.H index 4e7c0342321a650dcce6ad67620dfe75dc03c396..9e6b44d84de51b0e874101d299b2d4f89b070cc9 100644 --- a/src/meshTools/sets/pointSources/surfaceToPoint/surfaceToPoint.H +++ b/src/meshTools/sets/pointSources/surfaceToPoint/surfaceToPoint.H @@ -28,25 +28,70 @@ Class Foam::surfaceToPoint Description - A topoSetPointSource to select points based on relation to surface. + A \c topoSetPointSource to select points based on + relation to a surface given by an external file. - Select based on: + \c surfaceToPoint can select based on: - distance to surface - inside/outside status to surface (Uses normal of nearest surface triangle so requires valid surface - topology!) + topology.) - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - file | The surface "filename" | yes | - fileType | The surface format | no | - scale | Surface scaling factor | no | -1 - nearDistance | Near distance to the surface | yes | - includeInside | Include inside cells (bool) | yes | - includeOutside | Include outside cells (bool) | yes | + Operand | Type | Location + input | triSurface | $FOAM_CASE/constant/triSurface/\<file\> + output | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type pointSet; + action <action>; + + // Mandatory entries + source surfaceToPoint; + file <surfaceFileName>; + includeInside false; + includeOutside true; + nearDistance 0.5; + + // Optional entries + fileType stl; + scale 2.0; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of pointSet | word | yes | - + type | Type name: pointSet | word | yes | - + action | Action applied on points - see below | word | yes | - + source | Source name: surfaceToPoint | word | yes | - + file | The surface "filename" | word | yes | - + fileType | The format of the surface file | word | no | "" + nearDistance | Near distance to the surface | scalar | yes | - + includeInside | Flag to include inside cells | bool | yes | - + includeOutside | Flag to include outside cells | bool | yes | - + scale | Surface scaling factor | scalar | no | -1 + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new pointSet from selected points + add | Add selected points into this pointSet + subtract | Remove selected points from this pointSet + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetPointSource + SourceFiles surfaceToPoint.C @@ -102,11 +147,13 @@ class surfaceToPoint //- Check settings at construction time. void checkSettings() const; + public: //- Runtime type information TypeName("surfaceToPoint"); + // Constructors //- Construct from components @@ -137,7 +184,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/pointSources/topoSetPointSource/topoSetPointSource.H b/src/meshTools/sets/pointSources/topoSetPointSource/topoSetPointSource.H index 2d938c9a0174a1be611828f110b9536b43959e11..a0af5cd906b2159bccd651beea6b257d8dcc75d8 100644 --- a/src/meshTools/sets/pointSources/topoSetPointSource/topoSetPointSource.H +++ b/src/meshTools/sets/pointSources/topoSetPointSource/topoSetPointSource.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2018-2019 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -27,7 +27,11 @@ Class Foam::topoSetPointSource Description - Base class of a topoSet source for selecting points. + The \c topoSetPointSource is a intermediate class + for handling \c topoSet sources for selecting points. + + The class is not an executable \c topoSet itself, + yet a provider for common entries to its derived \c topoSet. SourceFiles topoSetPointSource.C diff --git a/src/meshTools/sets/pointSources/zoneToPoint/zoneToPoint.H b/src/meshTools/sets/pointSources/zoneToPoint/zoneToPoint.H index a72c56f45f70e609bc7d1c143bfd46e49ce74c14..9cdec8297bd0aa66e8e4a570d6cbcd3997980f7e 100644 --- a/src/meshTools/sets/pointSources/zoneToPoint/zoneToPoint.H +++ b/src/meshTools/sets/pointSources/zoneToPoint/zoneToPoint.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,18 +28,73 @@ Class Foam::zoneToPoint Description - A topoSetPointSource to select points based on one or more pointZones. + A \c topoSetPointSource to convert \c pointZone(s) to a \c pointSet. - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - zones | The point zone names or regexs | possibly | - zone | The point zone name or regex | possibly | - name | Older specification for 'zone' | no | + Operand | Type | Location + input | pointZone(s) | $FOAM_CASE/constant/polyMesh/pointZones + output | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type pointSet; + action <action>; + + // Mandatory entries + source zoneToPoint; + + // Conditional mandatory entries + // Select either of the below + + // Option-1 + zones + ( + <pointZoneName0> + <pointZoneName1> + ... + ); + + // Option-2 + zone <pointZoneName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of pointSet | word | yes | - + type | Type name: pointSet | word | yes | - + action | Action applied on points - see below | word | yes | - + source | Source name: zoneToPoint | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new pointSet from selected points + add | Add selected points into this pointSet + subtract | Remove selected points from this pointSet + \endverbatim + + Options for the conditional mandatory entries: + \verbatim + Entry | Description | Type | Req'd | Dflt + zones | Names of input pointZones | wordList | cond'l | - + zone | Name of input pointZone | word | cond'l | - + \verbatim + Note - Must specify "zones", "zone" or "name" (highest to lowest precedence). + The order of precedence among the conditional mandatory entries from the + highest to the lowest is \c zones, and \c zone. + +See also + - Foam::topoSetSource + - Foam::topoSetPointSource SourceFiles zoneToPoint.C @@ -65,8 +120,7 @@ class zoneToPoint : public topoSetPointSource { - - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -85,6 +139,7 @@ public: //- Runtime type information TypeName("zoneToPoint"); + // Constructors //- Construct from components @@ -108,7 +163,6 @@ public: const topoSetSource::setAction action, topoSet& set ) const; - }; diff --git a/src/meshTools/sets/pointZoneSources/setToPointZone/setToPointZone.H b/src/meshTools/sets/pointZoneSources/setToPointZone/setToPointZone.H index 0f6d1ef329c396b5bcd248ce15d5969bf180bb1a..7110a417492d841ea4456d35772f8312a95e5c38 100644 --- a/src/meshTools/sets/pointZoneSources/setToPointZone/setToPointZone.H +++ b/src/meshTools/sets/pointZoneSources/setToPointZone/setToPointZone.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011 OpenFOAM Foundation - Copyright (C) 2018-2019 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,14 +28,53 @@ Class Foam::setToPointZone Description - A topoSetSource to select points based on usage in a pointSet. + A \c topoSetSource to convert a \c pointSet + to a \c pointZone (and associated \c pointSet). - \heading Dictionary parameters + Operands: \table - Property | Description | Required | Default - set | Name of input pointSet | yes | + Operand | Type | Location + input | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output 1 | pointSet | $FOAM_CASE/constant/polyMesh/sets/\<set\> + output 2 | pointZone | $FOAM_CASE/constant/polyMesh/pointZones \endtable +Usage + Minimal example by using \c system/topoSetDict.actions: + \verbatim + { + // Mandatory (inherited) entries + name <name>; + type pointZoneSet; + action <action>; + + // Mandatory entries + source setToCellZone; + set <pointSetName>; + } + \endverbatim + + where the entries mean: + \table + Property | Description | Type | Req'd | Dflt + name | Name of pointZone | word | yes | - + type | Type name: pointZoneSet | word | yes | - + action | Action applied on points - see below | word | yes | - + source | Source name: setToPointZone | word | yes | - + set | Name of input pointSet | word | yes | - + \endtable + + Options for the \c action entry: + \verbatim + new | Create a new pointZone from selected points of a pointSet + add | Add selected points of a pointSet into this pointZone + subtract | Remove selected points of a pointSet from this pointZone + \endverbatim + +See also + - Foam::topoSetSource + - Foam::topoSetPointSource + SourceFiles setToPointZone.C @@ -59,7 +98,7 @@ class setToPointZone : public topoSetSource { - // Private data + // Private Data //- Add usage string static addToUsageTable usage_; @@ -67,11 +106,13 @@ class setToPointZone //- Name of set to use word setName_; + public: //- Runtime type information TypeName("setToPointZone"); + // Constructors //- Construct from components diff --git a/src/meshTools/sets/topoSetSource/topoSetSource.H b/src/meshTools/sets/topoSetSource/topoSetSource.H index a48121871f9c6496063344d8e34e30353a986b1f..e338e1d71d3d8d3a966f3aba46c3a8353197d227 100644 --- a/src/meshTools/sets/topoSetSource/topoSetSource.H +++ b/src/meshTools/sets/topoSetSource/topoSetSource.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2018-2019 OpenCFD Ltd. + Copyright (C) 2018-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,10 +28,10 @@ Class Foam::topoSetSource Description - Base class of a source for a topoSet. + Base class of a source for a \c topoSet. - Implementer must modify the given set (see applyToSet) according to - its function and the setAction (one of add/delete/new) + Implementer must modify the given set (see \c applyToSet) according to + its function and the \c setAction (one of add/delete/new). SourceFiles topoSetSource.C diff --git a/src/meshTools/sets/topoSets/cellZoneSet.H b/src/meshTools/sets/topoSets/cellZoneSet.H index 4dd1e15f63a2a46f1558e2e0acafd5448c89bac3..cfc0ca64a3f068ed8de61f759ee39654196d3cdb 100644 --- a/src/meshTools/sets/topoSets/cellZoneSet.H +++ b/src/meshTools/sets/topoSets/cellZoneSet.H @@ -53,7 +53,7 @@ class cellZoneSet : public cellSet { - // Private data + // Private Data const polyMesh& mesh_; diff --git a/src/meshTools/sets/topoSets/faceSet.H b/src/meshTools/sets/topoSets/faceSet.H index 3a22a4958a09128cc85bee3fff3658f896252f8b..5965ed75fb982ae74eb39cbea1577f003147de88 100644 --- a/src/meshTools/sets/topoSets/faceSet.H +++ b/src/meshTools/sets/topoSets/faceSet.H @@ -53,7 +53,6 @@ class faceSet : public topoSet { - public: //- Runtime type information @@ -145,7 +144,6 @@ public: const primitiveMesh&, const label maxLen ) const; - }; diff --git a/src/meshTools/sets/topoSets/faceZoneSet.H b/src/meshTools/sets/topoSets/faceZoneSet.H index dbdbd74adbbf02ed5c21ff4ea2436e7d57ee593d..8df6e623c6506e17b1effcdd11aefcfabe549d18 100644 --- a/src/meshTools/sets/topoSets/faceZoneSet.H +++ b/src/meshTools/sets/topoSets/faceZoneSet.H @@ -54,7 +54,7 @@ class faceZoneSet : public faceSet { - // Private data + // Private Data const polyMesh& mesh_; diff --git a/src/meshTools/sets/topoSets/pointSet.H b/src/meshTools/sets/topoSets/pointSet.H index 13e18e8603892a18e5ea0b66349844eb23937ae0..3a0d0124c9780b367114feff7f5b21414eb37f40 100644 --- a/src/meshTools/sets/topoSets/pointSet.H +++ b/src/meshTools/sets/topoSets/pointSet.H @@ -144,7 +144,6 @@ public: const primitiveMesh&, const label maxLen ) const; - }; diff --git a/src/meshTools/sets/topoSets/pointZoneSet.H b/src/meshTools/sets/topoSets/pointZoneSet.H index 37282b99f263e66aaa8f8b425768ba89299524aa..e08ea6f789a5ff77e002501a0b8c51b2eefb98ee 100644 --- a/src/meshTools/sets/topoSets/pointZoneSet.H +++ b/src/meshTools/sets/topoSets/pointZoneSet.H @@ -54,7 +54,7 @@ class pointZoneSet : public pointSet { - // Private data + // Private Data const polyMesh& mesh_; diff --git a/src/meshTools/sets/topoSets/topoBitSet.H b/src/meshTools/sets/topoSets/topoBitSet.H index f7b5bf35ba4b26ed38036268f33804692626bbf7..6fdc551b77ce5c11dc50fc1a08def5815452546c 100644 --- a/src/meshTools/sets/topoSets/topoBitSet.H +++ b/src/meshTools/sets/topoSets/topoBitSet.H @@ -55,7 +55,7 @@ class topoBitSet { protected: - // Protected data + // Protected Data bitSet selected_; @@ -154,7 +154,6 @@ public: //- Subtract elements present in set. virtual void subtractSet(const topoSet& set); - }; diff --git a/src/meshTools/sets/topoSets/topoBoolSet.H b/src/meshTools/sets/topoSets/topoBoolSet.H index 8bd9f6d461807abb23b222c2eb03900024520168..39b11652871033e8d4cfdffac162c43d93b348c3 100644 --- a/src/meshTools/sets/topoSets/topoBoolSet.H +++ b/src/meshTools/sets/topoSets/topoBoolSet.H @@ -55,7 +55,7 @@ class topoBoolSet { protected: - // Protected data + // Protected Data boolList selected_; @@ -154,7 +154,6 @@ public: //- Subtract elements present in set. virtual void subtractSet(const topoSet& set); - }; diff --git a/src/meshTools/sets/topoSets/topoSet.H b/src/meshTools/sets/topoSets/topoSet.H index 975320c9424130d78ae2007dff612133debdbc71..8465548d3975015e703360c8816b9069ff49a508 100644 --- a/src/meshTools/sets/topoSets/topoSet.H +++ b/src/meshTools/sets/topoSets/topoSet.H @@ -30,9 +30,6 @@ Class Description General set of labels of mesh quantity (points, cells, faces). - Contains various 'notImplemented' functions, but I do not want to make - this class abstract since it is quite handy to work on topoSets. - SourceFiles topoSet.C topoSetTemplates.C diff --git a/tutorials/incompressible/pisoFoam/RAS/cavity/system/topoSetDict b/tutorials/incompressible/pisoFoam/RAS/cavity/system/topoSetDict new file mode 100644 index 0000000000000000000000000000000000000000..b13ede66dee333f25d7a680c62cb8e57c10b9290 --- /dev/null +++ b/tutorials/incompressible/pisoFoam/RAS/cavity/system/topoSetDict @@ -0,0 +1,691 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v1912 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object topoSetDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +actions +( + { + name boundary1; + type cellSet; + action new; + source boundaryToCell; + } + + { + name box1a; + type cellSet; + action new; + source boxToCell; + boxes + ( + (0 0 0) (0.05 0.05 0.01) + (0.1 0.1 0) (0.02 0.02 0.01) + ); + } + + { + name box1b; + type cellSet; + action new; + source boxToCell; + box (0 0 0) (0.05 0.05 0.01); + } + + { + name box1c; + type cellSet; + action new; + source boxToCell; + min (0 0 0); + max (0.05 0.05 0.01); + } + + { + name box1c; + type cellSet; + action add; + source boxToCell; + min (0.05 0.05 0); + max (0.1 0.1 0.01); + } + + { + name box1c; + type cellSet; + action subtract; + source boxToCell; + min (0 0 0); + max (0.05 0.05 0.01); + } + + { + name cell1a; + type cellSet; + action new; + source cellToCell; + sets + ( + box1a + box1b + box1c + ); + } + + { + name cell1b; + type cellSet; + action new; + source cellToCell; + set boundary1; + } + + { + name cylinderAnnulus1; + type cellSet; + action new; + source cylinderAnnulusToCell; + p1 (0.05 0.05 0); + p2 (0.05 0.05 0.01); + outerRadius 0.06; + innerRadius 0.01; + } + + { + name cylinder1; + type cellSet; + action new; + source cylinderToCell; + p1 (0.05 0.05 0); + p2 (0.05 0.05 0.01); + radius 0.06; + innerRadius 0.01; + } + + { + name field1; + type cellSet; + action new; + source fieldToCell; + field p; + min 0; + max 10; + } + + { + name cylinder1; + type cellSet; + action add; + source haloToCell; + steps 2; + } + + { + name label1; + type cellSet; + action new; + source labelToCell; + value + ( + 21 + 10 + 2 + ); + } + + { + name nbr1; + type cellSet; + action new; + source nbrToCell; + neighbours 2; + } + + { + name nearest1; + type cellSet; + action new; + source nearestToCell; + points + ( + (0 0 0) + (0 0 1) + ); + } + + { + name patch1a; + type cellSet; + action new; + source patchToCell; + patches + ( + movingWall + fixedWalls + ); + } + + { + name patch1b; + type cellSet; + action new; + source patchToCell; + patch movingWall; + } + + { + name rotatedBox1; + type cellSet; + action new; + source rotatedBoxToCell; + origin (0 0 0); + i (0.02 0.02 0); + j (-0.02 0.02 0); + k (0 0 100); + } + + // { + // name searchableSurface1; + // type cellSet; // faceSet; // faceZoneSet; // pointSet; + // action new; + // source searchableSurfaceToCell; // searchableSurfaceToFace; + // // searchableSurfaceToFaceZone; + // // searchableSurfaceToPoint; + // surfaceType triSurfaceMesh; + // surfaceName blob.obj; + // } + + { + name shape1; + type cellSet; + action new; + source shapeToCell; + shape hex; + } + + { + name sphere1; + type cellSet; + action new; + source sphereToCell; + origin (0 0 0); + radius 0.05; + innerRadius 0.01; + } + + // { + // name surface1; + // type cellSet; // pointSet; + // action new; + // source surfaceToCell; // surfaceToPoint; + // file "geometry.stl"; + // outsidePoints ((-99 -99 -59)); + // includeCut false; + // includeInside false; + // includeOutside false; + // nearDistance -1; + // curvature 0.9; + // useSurfaceOrientation false; + // } + + { + name targetVolume1; + type cellSet; + action new; + source targetVolumeToCell; + volume 0.00001; + normal (1 0 0); + } + + { + name zone1; + type cellZoneSet; + action new; + source setToCellZone; + set targetVolume1; + } + + { + name faceBoundary1; + type faceSet; + action new; + source boundaryToFace; + } + + { + name faceBox1a; + type faceSet; + action new; + source boxToFace; + boxes + ( + (0 0 0) (0.05 0.05 0.01) + (0.1 0.1 0) (0.02 0.02 0.01) + ); + } + + { + name faceBox1b; + type faceSet; + action new; + source boxToFace; + box (0 0 0) (0.05 0.05 0.01); + } + + { + name faceBox1c; + type faceSet; + action new; + source boxToFace; + min (0 0 0); + max (0.05 0.05 0.01); + } + + { + name faceCell1a; + type faceSet; + action new; + source cellToFace; + option all; + sets + ( + sphere1 + box1a + ); + } + + { + name faceCell1b; + type faceSet; + action new; + source cellToFace; + option both; + set cylinder1; + } + + { + name faceCylinderAnnulus1; + type faceSet; + action new; + source cylinderAnnulusToFace; + p1 (0.05 0.05 0); + p2 (0.05 0.05 0.01); + outerRadius 0.06; + innerRadius 0.01; + } + + { + name faceCylinder1; + type faceSet; + action new; + source cylinderToFace; + p1 (0.05 0.05 0); + p2 (0.05 0.05 0.01); + radius 0.06; + innerRadius 0.01; + } + + { + name faceFace1a; + type faceSet; + action new; + source faceToFace; + sets + ( + faceCylinderAnnulus1 + faceCylinder1 + ); + } + + { + name faceFace1b; + type faceSet; + action new; + source faceToFace; + set faceCylinder1; + } + + { + name faceLabel1; + type faceSet; + action new; + source labelToFace; + value + ( + 21 + 10 + 2 + ); + } + + { + name faceNormal1; + type faceSet; + action new; + source normalToFace; + normal (0 0 1); + cos 0.01; + } + + { + name facePatch1; + type faceSet; + action new; + source patchToFace; + patches + ( + fixedWalls + movingWall + ); + } + + { + name facePatch1; + type faceSet; + action subtract; + source patchToFace; + patch fixedWalls; + } + + { + name faceSphere1; + type faceSet; + action new; + source sphereToFace; + origin (0 0 0); + radius 0.05; + innerRadius 0.01; + } + + { + name faceZone1; + type faceZoneSet; + action new; + source setToFaceZone; + faceSet faceSphere1; + } + + { + name faceZoneToFaceZone1; + type faceZoneSet; + action new; + source faceZoneToFaceZone; + zone faceZone1; + } + + { + name setAndNormalToFaceZone1; + type faceZoneSet; + action new; + source setAndNormalToFaceZone; + faceSet faceSphere1; + normal (1 0 0); + } + + // { + // name faceZone1; + // type faceZoneSet; + // action new; + // source setsToFaceZone; + // faceSet faceBox1a; + // cellSet box1a; + // flip true; + // } + + { + name pointBox1; + type pointSet; + action new; + source boxToPoint; + boxes + ( + (0 0 0) (0.05 0.05 0.01) + (0.1 0.1 0) (0.02 0.02 0.01) + ); + } + + { + name pointCell1; + type pointSet; + action new; + source cellToPoint; + option all; + sets + ( + box1a + box1b + box1c + ); + } + + { + name pointCylinder1; + type pointSet; + action new; + source cylinderToPoint; + p1 (0.05 0.05 0); + p2 (0.05 0.05 0.01); + radius 0.06; + innerRadius 0.01; + } + + { + name pointFace1; + type pointSet; + action new; + source faceToPoint; + option all; + set faceSphere1; + } + + { + name pointLabel1; + type pointSet; + action new; + source labelToPoint; + value + ( + 21 + 10 + 2 + ); + } + + { + name pointNearest1; + type pointSet; + action new; + source nearestToPoint; + points + ( + (0 0 0) + (0 0 1) + ); + } + + { + name pointPoint1; + type pointSet; + action new; + source pointToPoint; + option any; + sets + ( + pointNearest1 + ); + } + + { + name pointSphere1; + type pointSet; + action new; + source sphereToPoint; + origin (0 0 0); + radius 0.05; + innerRadius 0.01; + } + + { + name pointZone1; + type pointZoneSet; + action new; + source setToPointZone; + set pointSphere1; + } + + { + name pointPoint1; + type pointSet; + action new; + source zoneToPoint; + zones + ( + pointZone1 + ); + } + + + // Mixed sets + { + name faceCell1; + type faceSet; + action new; + source faceToCell; + option all; + sets + ( + faceSphere1 + faceLabel1 + ); + } + + { + name faceCell2; + type faceSet; + action new; + source faceToCell; + option owner; + set faceSphere1; + } + + { + name faceZoneCell1; + type cellSet; + action new; + source faceZoneToCell; + option slave; + zones + ( + faceZone1 + ); + } + + { + name faceZoneCell2; + type cellSet; + action new; + source faceZoneToCell; + option master; + zone faceZone1; + } + + { + name pointCell2; + type pointSet; + action new; + source pointToCell; + option any; + sets + ( + pointSphere1 + pointNearest1 + ); + } + + { + name pointCell2; + type pointSet; + action new; + source pointToCell; + option edge; + set pointNearest1; + } + + { + name region1; + type cellSet; + action new; + source regionToCell; + insidePoints + ( + (0.025 0.025 0.005) + ); + set box1c; + nErode 0; + } + + { + name zone2; + type cellSet; + action new; + source zoneToCell; + zones + ( + zone1 + ); + } + + { + name zone2; + type cellSet; + action subtract; + source zoneToCell; + zone zone1; + } + + { + name pointFace1; + type pointSet; + action new; + source pointToFace; + option all; + sets + ( + pointNearest1 + ); + } + + { + name regionFace1; + type faceSet; + action new; + source regionToFace; + set faceSphere1; + nearPoint (1 0 0); + } + + { + name faceZone2; + type faceSet; + action new; + source zoneToFace; + zones + ( + faceZone1 + ); + } +); + + +// ************************************************************************* //