Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge branch 'master' of github.com:OpenCFD/OpenFOAM-1.7.x

  • Loading branch information...
commit 9b4c5b5cf359a7b278752abc7fb5380321ba754e 2 parents 1e7d927 + fe108c0
Henry authored
Showing with 651 additions and 46 deletions.
  1. +2 −2 src/OpenFOAM/containers/Lists/SortableList/ParSortableList.C
  2. +1 −1  src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduSchedule/lduSchedule.H
  3. +2 −2 src/OpenFOAM/meshes/meshTools/matchPoints.C
  4. +1 −1  src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchToolsSortEdges.C
  5. +42 −0 src/dynamicFvMesh/dynamicFvMesh/dynamicFvMesh.C
  6. +23 −0 src/dynamicFvMesh/dynamicFvMesh/dynamicFvMesh.H
  7. +1 −1  src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/explicitSource.H
  8. +16 −13 src/finiteVolume/fields/fvPatchFields/constraint/empty/emptyFvPatchField.C
  9. +1 −1  src/meshTools/coordinateSystems/coordinateSystem.C
  10. +5 −3 src/meshTools/octree/octree.C
  11. +1 −1  src/meshTools/sets/cellSources/rotatedBoxToCell/rotatedBoxToCell.C
  12. +3 −0  src/postProcessing/functionObjects/IO/Make/files
  13. +88 −0 src/postProcessing/functionObjects/IO/controlDict
  14. +49 −0 src/postProcessing/functionObjects/IO/partialWrite/IOpartialWrite.H
  15. +142 −0 src/postProcessing/functionObjects/IO/partialWrite/partialWrite.C
  16. +156 −0 src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H
  17. +46 −0 src/postProcessing/functionObjects/IO/partialWrite/partialWriteFunctionObject.C
  18. +54 −0 src/postProcessing/functionObjects/IO/partialWrite/partialWriteFunctionObject.H
  19. +18 −21 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/snappyHexMeshDict
4 src/OpenFOAM/containers/Lists/SortableList/ParSortableList.C
View
@@ -113,7 +113,7 @@ void Foam::ParSortableList<Type>::checkAndSend
}
{
- OPstream toSlave(destProcI);
+ OPstream toSlave(Pstream::blocking, destProcI);
toSlave << values << indices;
}
}
@@ -310,7 +310,7 @@ void Foam::ParSortableList<Type>::sort()
Pout<< "Receiving from " << procI << endl;
}
- IPstream fromSlave(procI);
+ IPstream fromSlave(Pstream::blocking, procI);
fromSlave >> recValues >> recIndices;
2  src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduSchedule/lduSchedule.H
View
@@ -42,7 +42,7 @@ namespace Foam
// Forward declaration of friend functions and operators
-class lduScheduleEntry;
+struct lduScheduleEntry;
Ostream& operator<<(Ostream& os, const lduScheduleEntry& lb);
4 src/OpenFOAM/meshes/meshTools/matchPoints.C
View
@@ -77,7 +77,7 @@ bool Foam::matchPoints
// Go through range of equal mag and find nearest vector.
scalar minDistSqr = VGREAT;
label minFaceI = -1;
-
+
for
(
label j = startI;
@@ -124,7 +124,7 @@ bool Foam::matchPoints
{
label faceI = pts1MagSqr.indices()[j];
- Pout<< "Compared coord:" << pts1[faceI]
+ Pout<< " Compared coord:" << pts1[faceI]
<< " with difference to point "
<< mag(pts1[faceI] - pts0[face0I]) << endl;
}
2  src/OpenFOAM/meshes/primitiveMesh/PatchTools/PatchToolsSortEdges.C
View
@@ -49,7 +49,7 @@ Foam::PatchTools::sortedEdgeFaces
const Field<PointType>& localPoints = p.localPoints();
// create the lists for the various results. (resized on completion)
- labelListList& sortedEdgeFaces = labelListList(edgeFaces.size());
+ labelListList sortedEdgeFaces = labelListList(edgeFaces.size());
forAll(edgeFaces, edgeI)
{
42 src/dynamicFvMesh/dynamicFvMesh/dynamicFvMesh.C
View
@@ -40,6 +40,48 @@ Foam::dynamicFvMesh::dynamicFvMesh(const IOobject& io)
{}
+Foam::dynamicFvMesh::dynamicFvMesh
+(
+ const IOobject& io,
+ const Xfer<pointField>& points,
+ const Xfer<faceList>& faces,
+ const Xfer<labelList>& allOwner,
+ const Xfer<labelList>& allNeighbour,
+ const bool syncPar
+)
+:
+ fvMesh
+ (
+ io,
+ points,
+ faces,
+ allOwner,
+ allNeighbour,
+ syncPar
+ )
+{}
+
+
+Foam::dynamicFvMesh::dynamicFvMesh
+(
+ const IOobject& io,
+ const Xfer<pointField>& points,
+ const Xfer<faceList>& faces,
+ const Xfer<cellList>& cells,
+ const bool syncPar
+)
+:
+ fvMesh
+ (
+ io,
+ points,
+ faces,
+ cells,
+ syncPar
+ )
+{}
+
+
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::dynamicFvMesh::~dynamicFvMesh()
23 src/dynamicFvMesh/dynamicFvMesh/dynamicFvMesh.H
View
@@ -85,6 +85,29 @@ public:
//- Construct from objectRegistry, and read/write options
explicit dynamicFvMesh(const IOobject& io);
+ //- Construct from components without boundary.
+ // Boundary is added using addFvPatches() member function
+ dynamicFvMesh
+ (
+ const IOobject& io,
+ const Xfer<pointField>& points,
+ const Xfer<faceList>& faces,
+ const Xfer<labelList>& allOwner,
+ const Xfer<labelList>& allNeighbour,
+ const bool syncPar = true
+ );
+
+ //- Construct without boundary from cells rather than owner/neighbour.
+ // Boundary is added using addPatches() member function
+ dynamicFvMesh
+ (
+ const IOobject& io,
+ const Xfer<pointField>& points,
+ const Xfer<faceList>& faces,
+ const Xfer<cellList>& cells,
+ const bool syncPar = true
+ );
+
// Selectors
2  src/finiteVolume/cfdTools/general/fieldSources/basicSource/explicitSource/explicitSource.H
View
@@ -86,7 +86,7 @@ class explicitSource
fieldList()
:
HashTable<Type>(0),
- OwnerPtr_()
+ OwnerPtr_(*this)
{}
29 src/finiteVolume/fields/fvPatchFields/constraint/empty/emptyFvPatchField.C
View
@@ -138,20 +138,23 @@ emptyFvPatchField<Type>::emptyFvPatchField
template<class Type>
void emptyFvPatchField<Type>::updateCoeffs()
{
- if
- (
- this->dimensionedInternalField().mesh().nCells() > 0
- && (
- this->patch().patch().size()
- % this->dimensionedInternalField().mesh().nCells()
- )
- )
+ if (debug)
{
- FatalErrorIn("emptyFvPatchField<Type>::updateCoeffs()")
- << "This mesh contains patches of type empty but is not 1D or 2D\n"
- " by virtue of the fact that the number of faces of this\n"
- " empty patch is not divisible by the number of cells."
- << exit(FatalError);
+ if
+ (
+ this->dimensionedInternalField().mesh().nCells() > 0
+ && (
+ this->patch().patch().size()
+ % this->dimensionedInternalField().mesh().nCells()
+ )
+ )
+ {
+ WarningIn("emptyFvPatchField<Type>::updateCoeffs()")
+ << "This mesh contains patches of type empty but is not 1D or 2D\n"
+ " by virtue of the fact that the number of faces of this\n"
+ " empty patch is not divisible by the number of cells."
+ << endl;
+ }
}
}
2  src/meshTools/coordinateSystems/coordinateSystem.C
View
@@ -59,7 +59,7 @@ Foam::coordinateSystem::coordinateSystem
note_(),
origin_(cs.origin_),
R_(cs.R_),
- Rtr_(Rtr_)
+ Rtr_(cs.Rtr_)
{}
8 src/meshTools/octree/octree.C
View
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
+ \\ / A nd | Copyright (C) 1991-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -151,6 +151,7 @@ Foam::octree<Type>::octree
// - has some guaranteed maximum size (maxShapeRatio)
label oldNLeaves = -1; // make test below pass first time.
+ label oldNNodes = -1;
deepestLevel_ = 1;
while
(
@@ -171,11 +172,11 @@ Foam::octree<Type>::octree
break;
}
- if (oldNLeaves == nLeaves())
+ if ((oldNLeaves == nLeaves()) && (oldNNodes == nNodes()))
{
if (debug & 1)
{
- Pout<< "octree : exiting since nLeaves does not change"
+ Pout<< "octree : exiting since nLeaves and nNodes do not change"
<< endl;
}
break;
@@ -187,6 +188,7 @@ Foam::octree<Type>::octree
}
oldNLeaves = nLeaves();
+ oldNNodes = nNodes();
topNode_->redistribute
(
2  src/meshTools/sets/cellSources/rotatedBoxToCell/rotatedBoxToCell.C
View
@@ -128,7 +128,7 @@ Foam::rotatedBoxToCell::rotatedBoxToCell
)
:
topoSetSource(mesh),
- origin_(origin_),
+ origin_(origin),
i_(i),
j_(j),
k_(k)
3  src/postProcessing/functionObjects/IO/Make/files
View
@@ -1,3 +1,6 @@
+partialWrite/partialWrite.C
+partialWrite/partialWriteFunctionObject.C
+
writeRegisteredObject/writeRegisteredObject.C
writeRegisteredObject/writeRegisteredObjectFunctionObject.C
88 src/postProcessing/functionObjects/IO/controlDict
View
@@ -0,0 +1,88 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: 1.7.1 |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "system";
+ object controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application icoFoam;
+
+startFrom startTime;
+
+startTime 0;
+
+stopAt endTime;
+
+endTime 0.5;
+
+deltaT 0.005;
+
+writeControl timeStep;
+
+writeInterval 20;
+
+purgeWrite 0;
+
+writeFormat ascii;
+
+writePrecision 6;
+
+writeCompression uncompressed;
+
+timeFormat general;
+
+timePrecision 6;
+
+runTimeModifiable yes;
+
+functions
+{
+ partialWrite
+ {
+ // Write some registered objects more often than others.
+ // Above writeControl determines most frequent dump.
+
+ type partialWrite;
+
+ // Where to load it from
+ functionObjectLibs ("libIOFunctionObjects.so");
+
+ // Execute upon outputTime
+ outputControl outputTime;
+
+ // Objects to write every outputTime
+ objectNames (p);
+ // Write as normal every writeInterval'th outputTime.
+ writeInterval 3;
+ }
+
+ dumpObjects
+ {
+ // Forcibly write registered objects. E.g. fields that have been
+ // created with NO_READ.
+
+ type writeRegisteredObject;
+
+ // Where to load it from
+ functionObjectLibs ("libIOFunctionObjects.so");
+
+ // Execute upon outputTime
+ outputControl outputTime;
+
+ // Objects to write
+ objectNames ();
+ }
+}
+
+
+// ************************************************************************* //
49 src/postProcessing/functionObjects/IO/partialWrite/IOpartialWrite.H
View
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+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/>.
+
+Typedef
+ Foam::IOpartialWrite
+
+Description
+ Instance of the generic IOOutputFilter for partialWrite.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IOpartialWrite_H
+#define IOpartialWrite_H
+
+#include "partialWrite.H"
+#include "IOOutputFilter.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ typedef IOOutputFilter<partialWrite> IOpartialWrite;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
142 src/postProcessing/functionObjects/IO/partialWrite/partialWrite.C
View
@@ -0,0 +1,142 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+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 "partialWrite.H"
+#include "dictionary.H"
+#include "Time.H"
+#include "IOobjectList.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ defineTypeNameAndDebug(partialWrite, 0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::partialWrite::partialWrite
+(
+ const word& name,
+ const objectRegistry& obr,
+ const dictionary& dict,
+ const bool loadFromFiles
+)
+:
+ name_(name),
+ obr_(obr)
+{
+ read(dict);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::partialWrite::~partialWrite()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+void Foam::partialWrite::read(const dictionary& dict)
+{
+ dict.lookup("objectNames") >> objectNames_;
+ dict.lookup("writeInterval") >> writeInterval_;
+ writeInstance_ = 0;
+
+ Info<< type() << " " << name() << ":" << nl
+ << " dumping every outputTime :";
+ forAllConstIter(HashSet<word>, objectNames_, iter)
+ {
+ Info<< ' ' << iter.key();
+ }
+ Info<< nl
+ << " dumping all other fields every "
+ << writeInterval_ << "th outputTime" << nl
+ << endl;
+
+ if (writeInterval_ < 1)
+ {
+ FatalIOErrorIn("partialWrite::read(const dictionary&)", dict)
+ << "Illegal value for writeInterval " << writeInterval_
+ << ". It should be >= 1."
+ << exit(FatalIOError);
+ }
+}
+
+
+void Foam::partialWrite::execute()
+{
+ //Pout<< "execute at time " << obr_.time().timeName()
+ // << " index:" << obr_.time().timeIndex() << endl;
+}
+
+
+void Foam::partialWrite::end()
+{
+ //Pout<< "end at time " << obr_.time().timeName() << endl;
+ // Do nothing - only valid on write
+}
+
+
+void Foam::partialWrite::write()
+{
+ //Pout<< "write at time " << obr_.time().timeName() << endl;
+ if (obr_.time().outputTime())
+ {
+ // Above check so it can be used both with
+ // outputControl timeStep;
+ // outputInterval 1;
+ // or with
+ // outputControl outputTime;
+
+ writeInstance_++;
+
+ if (writeInstance_ == writeInterval_)
+ {
+ // Normal dump
+ writeInstance_ = 0;
+ }
+ else
+ {
+ // Delete all but marked objects
+ IOobjectList objects(obr_, obr_.time().timeName());
+
+ forAllConstIter(HashPtrTable<IOobject>, objects, iter)
+ {
+ if (!objectNames_.found(iter()->name()))
+ {
+ const fileName f = obr_.time().timePath()/iter()->name();
+ //Pout<< " rm " << f << endl;
+ rm(f);
+ }
+ }
+ }
+ }
+}
+
+
+// ************************************************************************* //
156 src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H
View
@@ -0,0 +1,156 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+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/>.
+
+Class
+ Foam::partialWrite
+
+Description
+ Allows some fields/registered objects to be written more often than others.
+
+ Works in the opposite way: deletes at intermediate times all
+ but selected fields.
+
+SourceFiles
+ partialWrite.C
+ IOpartialWrite.H
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef partialWrite_H
+#define partialWrite_H
+
+#include "pointFieldFwd.H"
+#include "HashSet.H"
+#include "DynamicList.H"
+#include "runTimeSelectionTables.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class objectRegistry;
+class dictionary;
+class mapPolyMesh;
+
+/*---------------------------------------------------------------------------*\
+ Class partialWrite Declaration
+\*---------------------------------------------------------------------------*/
+
+class partialWrite
+{
+protected:
+
+ // Private data
+
+ //- Name of this set of partialWrite
+ word name_;
+
+ const objectRegistry& obr_;
+
+
+ // Read from dictionary
+
+ //- Names of objects to dump always
+ HashSet<word> objectNames_;
+
+ //- Write interval for restart dump
+ label writeInterval_;
+
+
+ //- Current dump instance. If reaches writeInterval do a full write.
+ label writeInstance_;
+
+
+ // Private Member Functions
+
+ //- Disallow default bitwise copy construct
+ partialWrite(const partialWrite&);
+
+ //- Disallow default bitwise assignment
+ void operator=(const partialWrite&);
+
+
+public:
+
+ //- Runtime type information
+ TypeName("partialWrite");
+
+
+ // Constructors
+
+ //- Construct for given objectRegistry and dictionary.
+ // Allow the possibility to load fields from files
+ partialWrite
+ (
+ const word& name,
+ const objectRegistry&,
+ const dictionary&,
+ const bool loadFromFiles = false
+ );
+
+
+ //- Destructor
+ virtual ~partialWrite();
+
+
+ // Member Functions
+
+ //- Return name of the partialWrite
+ virtual const word& name() const
+ {
+ return name_;
+ }
+
+ //- Read the partialWrite data
+ virtual void read(const dictionary&);
+
+ //- Execute, currently does nothing
+ virtual void execute();
+
+ //- Execute at the final time-loop, currently does nothing
+ virtual void end();
+
+ //- Write the partialWrite
+ virtual void write();
+
+ //- Update for changes of mesh
+ virtual void updateMesh(const mapPolyMesh&)
+ {}
+
+ //- Update for changes of mesh
+ virtual void movePoints(const pointField&)
+ {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
46 src/postProcessing/functionObjects/IO/partialWrite/partialWriteFunctionObject.C
View
@@ -0,0 +1,46 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+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 "partialWriteFunctionObject.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ defineNamedTemplateTypeNameAndDebug
+ (
+ partialWriteFunctionObject,
+ 0
+ );
+
+ addToRunTimeSelectionTable
+ (
+ functionObject,
+ partialWriteFunctionObject,
+ dictionary
+ );
+}
+
+// ************************************************************************* //
54 src/postProcessing/functionObjects/IO/partialWrite/partialWriteFunctionObject.H
View
@@ -0,0 +1,54 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+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/>.
+
+Typedef
+ Foam::partialWriteFunctionObject
+
+Description
+ FunctionObject wrapper around partialWrite to allow them to be
+ created via the functions list within controlDict.
+
+SourceFiles
+ partialWriteFunctionObject.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef partialWriteFunctionObject_H
+#define partialWriteFunctionObject_H
+
+#include "partialWrite.H"
+#include "OutputFilterFunctionObject.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ typedef OutputFilterFunctionObject<partialWrite>
+ partialWriteFunctionObject;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
39 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/snappyHexMeshDict
View
@@ -251,28 +251,20 @@ addLayersControls
// Per final patch (so not geometry!) the layer information
layers
{
- //flowAirDuctReagent_flowAirDuctReagent
- //{
- // nSurfaceLayers 1;
- //}
- //flowAirDuctReagent_inlet1
- //{
- // nSurfaceLayers 1;
- //}
- //flowAirDuctReagent_inlet2
- //{
- // nSurfaceLayers 1;
- //}
+ maxY
+ {
+ nSurfaceLayers 3;
+ }
}
// Expansion factor for layer mesh
- expansionRatio 1.0;
+ expansionRatio 1.3;
//- Wanted thickness of final added cell layer. If multiple layers
// is the
// thickness of the layer furthest away from the wall.
// Relative to undistorted size of cell outside layer.
- finalLayerThickness 0.3;
+ finalLayerThickness 1;
//- Minimum thickness of cell layer. If for any reason layer
// cannot be above minThickness do not add layer.
@@ -295,27 +287,32 @@ addLayersControls
// before upon reaching a correct mesh.
nRelaxIter 3;
- // Number of smoothing iterations of surface normals
+ // Number of smoothing iterations of surface normals
nSmoothSurfaceNormals 1;
- // Number of smoothing iterations of interior mesh movement direction
+ // Number of smoothing iterations of interior mesh movement direction
nSmoothNormals 3;
// Smooth layer thickness over surface patches
- nSmoothThickness 10;
+ nSmoothThickness 2;
- // Stop layer growth on highly warped cells
+ // Stop layer growth on highly warped cells
maxFaceThicknessRatio 0.5;
- // Reduce layer growth where ratio thickness to medial
- // distance is large
- maxThicknessToMedialRatio 0.3;
+ // Reduce layer growth where ratio thickness to medial
+ // distance is large
+ maxThicknessToMedialRatio 1;
// Angle used to pick up medial axis points
minMedianAxisAngle 130;
// Create buffer region for new layer terminations
nBufferCellsNoExtrude 0;
+
+ // Overall max number of layer addition iterations. The mesher will exit
+ // if it reaches this number of iterations; possibly with an illegal
+ // mesh.
+ nLayerIter 50;
}
Please sign in to comment.
Something went wrong with that request. Please try again.