From 39426e88dd6e2bbe5792934204aebf43eecd4548 Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 28 Mar 2012 18:00:37 +0100 Subject: [PATCH 1/7] BUG: vtkUnstructuredReader: update faceMap consistent with faces. --- src/fileFormats/vtk/vtkUnstructuredReader.C | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fileFormats/vtk/vtkUnstructuredReader.C b/src/fileFormats/vtk/vtkUnstructuredReader.C index 3d80e1ccec..049f68f89b 100644 --- a/src/fileFormats/vtk/vtkUnstructuredReader.C +++ b/src/fileFormats/vtk/vtkUnstructuredReader.C @@ -704,6 +704,7 @@ void Foam::vtkUnstructuredReader::read(ISstream& inFile) labelList faceVerts; readBlock(inFile, nNumbers, faceVerts); faces_.setSize(nFaces); + faceMap_.setSize(nFaces); label elemI = 0; forAll(faces_, faceI) { From 6aecbac20f6cd8353959279365efe323fd55213c Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 28 Mar 2012 18:01:24 +0100 Subject: [PATCH 2/7] ENH: UniformDimensionedField: do READ_IF_PRESENT for 2 argument constructor --- .../UniformDimensionedField.C | 19 +++++++++++++++++-- .../UniformDimensionedField.H | 4 ++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.C b/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.C index 54db26a30c..2879e28f10 100644 --- a/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.C +++ b/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,7 +36,22 @@ Foam::UniformDimensionedField::UniformDimensionedField : regIOobject(io), dimensioned(dt) -{} +{ + // Read value + if + ( + ( + io.readOpt() == IOobject::MUST_READ + || io.readOpt() == IOobject::MUST_READ_IF_MODIFIED + ) + || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk()) + ) + { + dictionary dict(readStream(typeName)); + this->dimensions().reset(dict.lookup("dimensions")); + dict.lookup("value") >> this->value(); + } +} template diff --git a/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.H b/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.H index 62461df280..bab30a55ff 100644 --- a/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.H +++ b/src/OpenFOAM/fields/UniformDimensionedFields/UniformDimensionedField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -64,7 +64,7 @@ public: // Constructors - //- Construct from components + //- Construct from components. Either reads or uses supplied value. UniformDimensionedField(const IOobject&, const dimensioned&); //- Construct as copy From 9e017c724deee1bc15003e0b7d168ef486366a93 Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 28 Mar 2012 18:09:42 +0100 Subject: [PATCH 3/7] STYLE: sampleDict: improved comment --- .../utilities/postProcessing/sampling/sample/sampleDict | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/applications/utilities/postProcessing/sampling/sample/sampleDict b/applications/utilities/postProcessing/sampling/sample/sampleDict index b55b190bf7..7a9b6f7f0a 100644 --- a/applications/utilities/postProcessing/sampling/sample/sampleDict +++ b/applications/utilities/postProcessing/sampling/sample/sampleDict @@ -47,12 +47,14 @@ formatOptions } // interpolationScheme. choice of -// cell : use cell-centre value only; constant over cells (default) +// cell : use cell-centre value only; constant over cells +// (default) // cellPoint : use cell-centre and vertex values // cellPointFace : use cell-centre, vertex and face values. // pointMVC : use point values only (Mean Value Coordinates) -// cellPatchConstrained : use cell-centre except on boundary faces where -// it uses the boundary value. For use with e.g. patchCloudSet. +// cellPatchConstrained : like 'cell' but uses cell-centre except on +// boundary faces where it uses the boundary value. +// For use with e.g. patchCloudSet. // 1] vertex values determined from neighbouring cell-centre values // 2] face values determined using the current face interpolation scheme // for the field (linear, gamma, etc.) From 4d57d3c568e439cbff704b5ac983074731731c0d Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 28 Mar 2012 18:10:13 +0100 Subject: [PATCH 4/7] STYLE: extrudeToRegionMesh: comment --- .../generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C | 1 - 1 file changed, 1 deletion(-) diff --git a/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C index a0873ab4c9..b1bcf33d82 100644 --- a/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C +++ b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C @@ -36,7 +36,6 @@ Description (nonuniformTransform)cyclic \_\ - extrudes into master direction (i.e. away from the owner cell if flipMap is false) - - not parallel \verbatim From f9b7b4b445109650c06526f8691b13948f641b6c Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 28 Mar 2012 18:59:26 +0100 Subject: [PATCH 5/7] ENH: hexRef8: perfect restart --- .../polyTopoChange/polyTopoChange/hexRef8.C | 83 ++++++++++++++++--- .../polyTopoChange/polyTopoChange/hexRef8.H | 24 ++++-- .../meshRefinement/meshRefinement.C | 44 +--------- 3 files changed, 88 insertions(+), 63 deletions(-) diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C index 560010c31a..b577a17177 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -1745,6 +1745,7 @@ void Foam::hexRef8::setInstance(const fileName& inst) cellLevel_.instance() = inst; pointLevel_.instance() = inst; + level0Edge_.instance() = inst; history_.instance() = inst; } @@ -1752,7 +1753,7 @@ void Foam::hexRef8::setInstance(const fileName& inst) // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // Construct from mesh, read refinement data -Foam::hexRef8::hexRef8(const polyMesh& mesh) +Foam::hexRef8::hexRef8(const polyMesh& mesh, const bool readHistory) : mesh_(mesh), cellLevel_ @@ -1781,7 +1782,19 @@ Foam::hexRef8::hexRef8(const polyMesh& mesh) ), labelList(mesh_.nPoints(), 0) ), - level0Edge_(getLevel0EdgeLength()), + level0Edge_ + ( + IOobject + ( + "level0Edge", + mesh_.facesInstance(), + polyMesh::meshSubDir, + mesh_, + IOobject::READ_IF_PRESENT, + IOobject::AUTO_WRITE + ), + dimensionedScalar("level0Edge", dimLength, getLevel0EdgeLength()) + ), history_ ( IOobject @@ -1790,15 +1803,24 @@ Foam::hexRef8::hexRef8(const polyMesh& mesh) mesh_.facesInstance(), polyMesh::meshSubDir, mesh_, - IOobject::READ_IF_PRESENT, + IOobject::NO_READ, IOobject::AUTO_WRITE ), - mesh_.nCells() // All cells visible if could not be read + (readHistory ? mesh_.nCells() : 0) // All cells visible if not be read ), faceRemover_(mesh_, GREAT), // merge boundary faces wherever possible savedPointLevel_(0), savedCellLevel_(0) { + if (readHistory) + { + history_.readOpt() = IOobject::READ_IF_PRESENT; + if (history_.headerOk()) + { + history_.read(); + } + } + if (history_.active() && history_.visibleCells().size() != mesh_.nCells()) { FatalErrorIn @@ -1849,7 +1871,8 @@ Foam::hexRef8::hexRef8 const polyMesh& mesh, const labelList& cellLevel, const labelList& pointLevel, - const refinementHistory& history + const refinementHistory& history, + const scalar level0Edge ) : mesh_(mesh), @@ -1879,7 +1902,24 @@ Foam::hexRef8::hexRef8 ), pointLevel ), - level0Edge_(getLevel0EdgeLength()), + level0Edge_ + ( + IOobject + ( + "level0Edge", + mesh_.facesInstance(), + polyMesh::meshSubDir, + mesh_, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + dimensionedScalar + ( + "level0Edge", + dimLength, + (level0Edge >= 0 ? level0Edge : getLevel0EdgeLength()) + ) + ), history_ ( IOobject @@ -1945,7 +1985,8 @@ Foam::hexRef8::hexRef8 ( const polyMesh& mesh, const labelList& cellLevel, - const labelList& pointLevel + const labelList& pointLevel, + const scalar level0Edge ) : mesh_(mesh), @@ -1975,7 +2016,24 @@ Foam::hexRef8::hexRef8 ), pointLevel ), - level0Edge_(getLevel0EdgeLength()), + level0Edge_ + ( + IOobject + ( + "level0Edge", + mesh_.facesInstance(), + polyMesh::meshSubDir, + mesh_, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + dimensionedScalar + ( + "level0Edge", + dimLength, + (level0Edge >= 0 ? level0Edge : getLevel0EdgeLength()) + ) + ), history_ ( IOobject @@ -2621,7 +2679,7 @@ Foam::labelList Foam::hexRef8::consistentSlowRefinement2 << "Value should be >= 1" << exit(FatalError); } - const scalar level0Size = 2*maxFaceDiff*level0Edge_; + const scalar level0Size = 2*maxFaceDiff*level0EdgeLength(); // Bit tricky. Say we want a distance of three cells between two @@ -5514,7 +5572,10 @@ void Foam::hexRef8::setUnrefinement // Write refinement to polyMesh directory. bool Foam::hexRef8::write() const { - bool writeOk = cellLevel_.write() && pointLevel_.write(); + bool writeOk = + cellLevel_.write() + && pointLevel_.write() + && level0Edge_.write(); if (history_.active()) { diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.H b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.H index 36980f7320..503412dd38 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.H +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,6 +43,7 @@ SourceFiles #include "removeFaces.H" #include "refinementHistory.H" #include "PackedBoolList.H" +#include "uniformDimensionedFields.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -74,7 +75,7 @@ class hexRef8 labelIOList pointLevel_; //- Typical edge length between unrefined points - const scalar level0Edge_; + uniformDimensionedScalarField level0Edge_; //- Refinement history refinementHistory history_; @@ -319,24 +320,29 @@ public: // Constructors //- Construct from mesh, read_if_present refinement data - // (from write below) - hexRef8(const polyMesh& mesh); + // (from write below). If readHistory is true does read_if_present + // of refinement history. If false clears all history + hexRef8(const polyMesh& mesh, const bool readHistory = true); - //- Construct from mesh and un/refinement data. + //- Construct from mesh and un/refinement data and optional size of + // starting cells hexRef8 ( const polyMesh& mesh, const labelList& cellLevel, const labelList& pointLevel, - const refinementHistory& history + const refinementHistory& history, + const scalar level0Edge = -GREAT ); - //- Construct from mesh and refinement data. + //- Construct from mesh and refinement data and optional size of + // starting cells hexRef8 ( const polyMesh& mesh, const labelList& cellLevel, - const labelList& pointLevel + const labelList& pointLevel, + const scalar level0Edge = -GREAT ); @@ -367,7 +373,7 @@ public: //- Typical edge length between unrefined points scalar level0EdgeLength() const { - return level0Edge_; + return level0Edge_.value(); } // Refinement diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C index 5503e6d2a8..c2565fc670 100644 --- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C +++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C @@ -877,49 +877,7 @@ Foam::meshRefinement::meshRefinement meshCutter_ ( mesh, - labelIOList - ( - IOobject - ( - "cellLevel", - mesh_.facesInstance(), - fvMesh::meshSubDir, - mesh, - IOobject::READ_IF_PRESENT, - IOobject::NO_WRITE, - false - ), - labelList(mesh_.nCells(), 0) - ), - labelIOList - ( - IOobject - ( - "pointLevel", - mesh_.facesInstance(), - fvMesh::meshSubDir, - mesh, - IOobject::READ_IF_PRESENT, - IOobject::NO_WRITE, - false - ), - labelList(mesh_.nPoints(), 0) - ), - refinementHistory - ( - IOobject - ( - "refinementHistory", - mesh_.facesInstance(), - fvMesh::meshSubDir, - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - List(0), - labelList(0) - ) // no unrefinement + false // do not try to read history. ), surfaceIndex_ ( From e48b238c013dd8ae58b842aae37c9832b7eba3e8 Mon Sep 17 00:00:00 2001 From: sergio Date: Thu, 29 Mar 2012 15:17:52 +0100 Subject: [PATCH 6/7] ENH: Modifying eCont returning aCont form greyMeanAbsEmission and wideBandAbsorptionEmission models and tutorials --- .../greyMeanAbsorptionEmission.C | 19 +------ .../wideBandAbsorptionEmission.C | 19 +------ .../constant/radiationProperties | 55 ++++++++++++++++++ .../constant/radiationProperties | 57 ++++++++++++++++++- .../constant/radiationProperties | 55 ++++++++++++++++++ 5 files changed, 168 insertions(+), 37 deletions(-) diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C index 49d23cc84a..d1a924ad11 100644 --- a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C +++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/greyMeanAbsorptionEmission/greyMeanAbsorptionEmission.C @@ -284,24 +284,7 @@ Foam::radiation::greyMeanAbsorptionEmission::aCont(const label bandI) const Foam::tmp Foam::radiation::greyMeanAbsorptionEmission::eCont(const label bandI) const { - tmp e - ( - new volScalarField - ( - IOobject - ( - "eCont" + name(bandI), - mesh().time().timeName(), - mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh(), - dimensionedScalar("e", dimless/dimLength, 0.0) - ) - ); - - return e; + return aCont(bandI); } diff --git a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C index c2640f402a..dcaf7f01f6 100644 --- a/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C +++ b/src/thermophysicalModels/radiationModels/submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionEmission.C @@ -231,24 +231,7 @@ Foam::radiation::wideBandAbsorptionEmission::aCont(const label bandI) const Foam::tmp Foam::radiation::wideBandAbsorptionEmission::eCont(const label bandI) const { - tmp e - ( - new volScalarField - ( - IOobject - ( - "e", - mesh().time().timeName(), - mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh(), - dimensionedScalar("e", dimless/dimLength, 0.0) - ) - ); - - return e; + return aCont(bandI); } diff --git a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/radiationProperties b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/radiationProperties index 3282b1b075..ca98125036 100644 --- a/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/radiationProperties +++ b/tutorials/combustion/fireFoam/les/oppositeBurningPanels/constant/radiationProperties @@ -137,6 +137,61 @@ greyMeanAbsorptionEmissionCoeffs ); } + O2 + { + Tcommon 300; + invTemp true; + Tlow 200; + Thigh 2500; + + loTcoeffs + ( + 0 + 0 + 0 + 0 + 0 + 0 + ); + hiTcoeffs + ( + 0.1 + 0 + 0 + 0 + 0 + 0 + ); + } + + + N2 + { + Tcommon 300; + invTemp true; + Tlow 200; + Thigh 2500; + + loTcoeffs + ( + 0 + 0 + 0 + 0 + 0 + 0 + ); + hiTcoeffs + ( + 0.1 + 0 + 0 + 0 + 0 + 0 + ); + } + } scatterModel constantScatter; diff --git a/tutorials/combustion/fireFoam/les/smallPoolFire2D/constant/radiationProperties b/tutorials/combustion/fireFoam/les/smallPoolFire2D/constant/radiationProperties index 54fb40ca34..f9ff27414e 100644 --- a/tutorials/combustion/fireFoam/les/smallPoolFire2D/constant/radiationProperties +++ b/tutorials/combustion/fireFoam/les/smallPoolFire2D/constant/radiationProperties @@ -43,7 +43,7 @@ absorptionEmissionModel greyMeanAbsorptionEmission; constantAbsorptionEmissionCoeffs { a a [ 0 -1 0 0 0 0 0 ] 0.01; - e e [ 0 -1 0 0 0 0 0 ] 0; + e e [ 0 -1 0 0 0 0 0 ] 0.01; E E [ 1 -1 -3 0 0 0 0 ] 0; } @@ -134,6 +134,61 @@ greyMeanAbsorptionEmissionCoeffs 0 ); } + + O2 + { + Tcommon 300; + invTemp true; + Tlow 200; + Thigh 2500; + + loTcoeffs + ( + 0 + 0 + 0 + 0 + 0 + 0 + ); + hiTcoeffs + ( + 0.1 + 0 + 0 + 0 + 0 + 0 + ); + } + + + N2 + { + Tcommon 300; + invTemp true; + Tlow 200; + Thigh 2500; + + loTcoeffs + ( + 0 + 0 + 0 + 0 + 0 + 0 + ); + hiTcoeffs + ( + 0.1 + 0 + 0 + 0 + 0 + 0 + ); + } } scatterModel constantScatter; diff --git a/tutorials/combustion/fireFoam/les/smallPoolFire3D/constant/radiationProperties b/tutorials/combustion/fireFoam/les/smallPoolFire3D/constant/radiationProperties index 05fda138af..60bbcc81c4 100644 --- a/tutorials/combustion/fireFoam/les/smallPoolFire3D/constant/radiationProperties +++ b/tutorials/combustion/fireFoam/les/smallPoolFire3D/constant/radiationProperties @@ -135,6 +135,61 @@ greyMeanAbsorptionEmissionCoeffs 0 ); } + + O2 + { + Tcommon 300; + invTemp true; + Tlow 200; + Thigh 2500; + + loTcoeffs + ( + 0 + 0 + 0 + 0 + 0 + 0 + ); + hiTcoeffs + ( + 0.1 + 0 + 0 + 0 + 0 + 0 + ); + } + + + N2 + { + Tcommon 300; + invTemp true; + Tlow 200; + Thigh 2500; + + loTcoeffs + ( + 0 + 0 + 0 + 0 + 0 + 0 + ); + hiTcoeffs + ( + 0.1 + 0 + 0 + 0 + 0 + 0 + ); + } } scatterModel constantScatter; From 7c66d8a2a0341d09208d97f7442bb4818b276dd8 Mon Sep 17 00:00:00 2001 From: mattijs Date: Thu, 29 Mar 2012 18:07:24 +0100 Subject: [PATCH 7/7] STYLE: surfaceFeautreExtract: indentation and comment --- .../surfaceFeatureExtract.C | 2 +- .../surfaceFeatureExtractDict | 20 +++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C b/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C index b02c4c815d..2221fd5532 100644 --- a/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C +++ b/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtract.C @@ -486,7 +486,7 @@ int main(int argc, char *argv[]) ( "dict", "word", - "name of dictionary to provide feature extraction information" + "specify alternative dictionary for the feature extraction information" ); # include "setRootCase.H" diff --git a/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtractDict b/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtractDict index 3621d64a29..ef97d13889 100644 --- a/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtractDict +++ b/applications/utilities/surface/surfaceFeatureExtract/surfaceFeatureExtractDict @@ -24,40 +24,40 @@ surface1.stl // Load from an existing feature edge file featureEdgeFile "constant/triSurface/featureEdges.nas"; } - + trimFeatures { // Remove features with fewer than the specified number of edges minElem 0; - + // Remove features shorter than the specified cumulative length minLen 0.0; - } - + } + subsetFeatures - { + { // Use a plane to select feature edges // (normal)(basePoint) plane (1 0 0)(0 0 0); - + // Select feature edges using a box // (minPt)(maxPt) insideBox (0 0 0)(1 1 1); outsideBox (0 0 0)(1 1 1); - + // Remove any non-manifold (open or > 2 connected faces) edges manifoldEdges no; } - + // Output the curvature of the surface curvature no; - + // Output the proximity of feature points and edges to each other featureProximity no; // The maximum search distance to use when looking for other feature // points and edges maxFeatureProximity 1; - + // Out put the closeness of surface elements to other surface elements. closeness no;