From 46ec7d65d5dda9c350ad579db5a47f0e59478ad8 Mon Sep 17 00:00:00 2001 From: mattijs Date: Thu, 16 Dec 2010 18:46:26 +0000 Subject: [PATCH] ENH: extrudeMesh : reorganisation. Added layers. --- .../{extrudeMesh => extrude}/Allwclean | 0 .../{extrudeMesh => extrude}/Allwmake | 0 .../{ => extrude}/extrudeMesh/Make/files | 0 .../{ => extrude}/extrudeMesh/Make/options | 0 .../extrudeMesh/createTimeExtruded.H | 0 .../{ => extrude}/extrudeMesh/extrudeMesh.C | 0 .../extrudeMesh/extrudeMeshDict} | 0 .../extrudeMesh/extrudeModel/Make/files | 0 .../extrudeMesh/extrudeModel/Make/options | 0 .../extrudeModel/extrudeModel/extrudeModel.C | 0 .../extrudeModel/extrudeModel/extrudeModel.H | 0 .../extrudeModel/extrudeModelNew.C | 0 .../linearDirection/linearDirection.C | 0 .../linearDirection/linearDirection.H | 0 .../extrudeModel/linearNormal/linearNormal.C | 0 .../extrudeModel/linearNormal/linearNormal.H | 0 .../extrudeModel/linearRadial/linearRadial.C | 0 .../extrudeModel/linearRadial/linearRadial.H | 0 .../extrudeModel/sigmaRadial/sigmaRadial.C | 0 .../extrudeModel/sigmaRadial/sigmaRadial.H | 0 .../extrudeMesh/extrudeModel/wedge/wedge.C | 0 .../extrudeMesh/extrudeModel/wedge/wedge.H | 0 .../extrudeMesh/extrudedMesh/extrudedMesh.C | 0 .../extrudeMesh/extrudedMesh/extrudedMesh.H | 0 .../extrude/extrudeModel/Make/files | 10 ++ .../extrude/extrudeModel/Make/options | 8 + .../extrudeModel/extrudeModel/extrudeModel.C | 89 +++++++++++ .../extrudeModel/extrudeModel/extrudeModel.H | 143 ++++++++++++++++++ .../extrudeModel/extrudeModelNew.C | 58 +++++++ .../linearDirection/linearDirection.C | 89 +++++++++++ .../linearDirection/linearDirection.H | 98 ++++++++++++ .../extrudeModel/linearNormal/linearNormal.C | 86 +++++++++++ .../extrudeModel/linearNormal/linearNormal.H | 95 ++++++++++++ .../extrudeModel/linearRadial/linearRadial.C | 82 ++++++++++ .../extrudeModel/linearRadial/linearRadial.H | 93 ++++++++++++ .../extrudeModel/sigmaRadial/sigmaRadial.C | 92 +++++++++++ .../extrudeModel/sigmaRadial/sigmaRadial.H | 94 ++++++++++++ .../extrude/extrudeModel/wedge/wedge.C | 125 +++++++++++++++ .../extrude/extrudeModel/wedge/wedge.H | 107 +++++++++++++ .../extrudeToRegionMesh/Make/files | 0 .../extrudeToRegionMesh/Make/options | 0 .../extrudeToRegionMesh/createShellMesh.C | 0 .../extrudeToRegionMesh/createShellMesh.H | 0 .../extrudeToRegionMesh/extrudeToRegionMesh.C | 0 .../extrudeToRegionMeshDict | 78 ++++++++++ .../patchPointEdgeCirculator.C | 0 .../patchPointEdgeCirculator.H | 0 .../patchPointEdgeCirculatorI.H | 0 48 files changed, 1347 insertions(+) rename applications/utilities/mesh/generation/{extrudeMesh => extrude}/Allwclean (100%) rename applications/utilities/mesh/generation/{extrudeMesh => extrude}/Allwmake (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/Make/files (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/Make/options (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/createTimeExtruded.H (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeMesh.C (100%) rename applications/utilities/mesh/generation/{extrudeMesh/extrudeProperties => extrude/extrudeMesh/extrudeMeshDict} (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/Make/files (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/Make/options (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.C (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.H (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/extrudeModel/extrudeModelNew.C (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/linearDirection/linearDirection.C (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/linearDirection/linearDirection.H (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/linearNormal/linearNormal.C (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/linearNormal/linearNormal.H (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/linearRadial/linearRadial.C (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/linearRadial/linearRadial.H (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.C (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.H (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/wedge/wedge.C (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudeModel/wedge/wedge.H (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudedMesh/extrudedMesh.C (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeMesh/extrudedMesh/extrudedMesh.H (100%) create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/Make/files create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/Make/options create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.C create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.H create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModelNew.C create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.C create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.H create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.C create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.H create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.C create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.H create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.C create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.H create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.C create mode 100644 applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.H rename applications/utilities/mesh/generation/{ => extrude}/extrudeToRegionMesh/Make/files (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeToRegionMesh/Make/options (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeToRegionMesh/createShellMesh.C (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeToRegionMesh/createShellMesh.H (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeToRegionMesh/extrudeToRegionMesh.C (100%) create mode 100644 applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMeshDict rename applications/utilities/mesh/generation/{ => extrude}/extrudeToRegionMesh/patchPointEdgeCirculator.C (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeToRegionMesh/patchPointEdgeCirculator.H (100%) rename applications/utilities/mesh/generation/{ => extrude}/extrudeToRegionMesh/patchPointEdgeCirculatorI.H (100%) diff --git a/applications/utilities/mesh/generation/extrudeMesh/Allwclean b/applications/utilities/mesh/generation/extrude/Allwclean similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/Allwclean rename to applications/utilities/mesh/generation/extrude/Allwclean diff --git a/applications/utilities/mesh/generation/extrudeMesh/Allwmake b/applications/utilities/mesh/generation/extrude/Allwmake similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/Allwmake rename to applications/utilities/mesh/generation/extrude/Allwmake diff --git a/applications/utilities/mesh/generation/extrudeMesh/Make/files b/applications/utilities/mesh/generation/extrude/extrudeMesh/Make/files similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/Make/files rename to applications/utilities/mesh/generation/extrude/extrudeMesh/Make/files diff --git a/applications/utilities/mesh/generation/extrudeMesh/Make/options b/applications/utilities/mesh/generation/extrude/extrudeMesh/Make/options similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/Make/options rename to applications/utilities/mesh/generation/extrude/extrudeMesh/Make/options diff --git a/applications/utilities/mesh/generation/extrudeMesh/createTimeExtruded.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/createTimeExtruded.H similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/createTimeExtruded.H rename to applications/utilities/mesh/generation/extrude/extrudeMesh/createTimeExtruded.H diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeMesh.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMesh.C similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeMesh.C rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMesh.C diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeProperties b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMeshDict similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeProperties rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMeshDict diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/Make/files b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/Make/files similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/Make/files rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/Make/files diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/Make/options b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/Make/options similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/Make/options rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/Make/options diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.C similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.C rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.C diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.H similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.H rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/extrudeModel/extrudeModel.H diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/extrudeModel/extrudeModelNew.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/extrudeModel/extrudeModelNew.C similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/extrudeModel/extrudeModelNew.C rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/extrudeModel/extrudeModelNew.C diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearDirection/linearDirection.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearDirection/linearDirection.C similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearDirection/linearDirection.C rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearDirection/linearDirection.C diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearDirection/linearDirection.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearDirection/linearDirection.H similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearDirection/linearDirection.H rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearDirection/linearDirection.H diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearNormal/linearNormal.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearNormal/linearNormal.C similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearNormal/linearNormal.C rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearNormal/linearNormal.C diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearNormal/linearNormal.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearNormal/linearNormal.H similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearNormal/linearNormal.H rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearNormal/linearNormal.H diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearRadial/linearRadial.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearRadial/linearRadial.C similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearRadial/linearRadial.C rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearRadial/linearRadial.C diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearRadial/linearRadial.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearRadial/linearRadial.H similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/linearRadial/linearRadial.H rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/linearRadial/linearRadial.H diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.C similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.C rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.C diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.H similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.H rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/sigmaRadial/sigmaRadial.H diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/wedge/wedge.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/wedge/wedge.C similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/wedge/wedge.C rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/wedge/wedge.C diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudeModel/wedge/wedge.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/wedge/wedge.H similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudeModel/wedge/wedge.H rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeModel/wedge/wedge.H diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudedMesh/extrudedMesh.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.C similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudedMesh/extrudedMesh.C rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.C diff --git a/applications/utilities/mesh/generation/extrudeMesh/extrudedMesh/extrudedMesh.H b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.H similarity index 100% rename from applications/utilities/mesh/generation/extrudeMesh/extrudedMesh/extrudedMesh.H rename to applications/utilities/mesh/generation/extrude/extrudeMesh/extrudedMesh/extrudedMesh.H diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/Make/files b/applications/utilities/mesh/generation/extrude/extrudeModel/Make/files new file mode 100644 index 0000000000..fdd7c3e7b7 --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/Make/files @@ -0,0 +1,10 @@ +extrudeModel/extrudeModel.C +extrudeModel/extrudeModelNew.C +linearNormal/linearNormal.C +linearDirection/linearDirection.C +linearRadial/linearRadial.C +sigmaRadial/sigmaRadial.C +wedge/wedge.C + +LIB = $(FOAM_LIBBIN)/libextrudeModel + diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/Make/options b/applications/utilities/mesh/generation/extrude/extrudeModel/Make/options new file mode 100644 index 0000000000..3c57befe4f --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/Make/options @@ -0,0 +1,8 @@ +EXE_INC = \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/dynamicMesh/lnInclude + +EXE_LIBS = \ + -lmeshTools \ + -ldynamicMesh + diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.C b/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.C new file mode 100644 index 0000000000..b7b47bd6f2 --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.C @@ -0,0 +1,89 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +\*---------------------------------------------------------------------------*/ + +#include "extrudeModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(extrudeModel, 0); + defineRunTimeSelectionTable(extrudeModel, dictionary); +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::extrudeModel::extrudeModel +( + const word& modelType, + const dictionary& dict +) +: + nLayers_(readLabel(dict.lookup("nLayers"))), + expansionRatio_(readScalar(dict.lookup("expansionRatio"))), + dict_(dict), + coeffDict_(dict.subDict(modelType + "Coeffs")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::extrudeModel::~extrudeModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::label Foam::extrudeModel::nLayers() const +{ + return nLayers_; +} + + +Foam::scalar Foam::extrudeModel::expansionRatio() const +{ + return expansionRatio_; +} + + +Foam::scalar Foam::extrudeModel::sumThickness(const label layer) const +{ + // 1+r+r^2+ .. +r^(n-1) = (1-r^n)/(1-r) + + if (mag(1.0-expansionRatio_) < SMALL) + { + return scalar(layer)/nLayers_; + } + else + { + return + (1.0-pow(expansionRatio_, layer)) + / (1.0-pow(expansionRatio_, nLayers_)); + } +} + + +// ************************************************************************* // + diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.H b/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.H new file mode 100644 index 0000000000..ceeb2975d7 --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModel.H @@ -0,0 +1,143 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +Class + Foam::extrudeModel + +Description + Top level extrusion model class + +SourceFiles + extrudeModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef extrudeModel_H +#define extrudeModel_H + +#include "dictionary.H" +#include "point.H" +#include "autoPtr.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class extrudeModel Declaration +\*---------------------------------------------------------------------------*/ + +class extrudeModel +{ +protected: + + // Protected data + + const label nLayers_; + + const scalar expansionRatio_; + + const dictionary& dict_; + + const dictionary& coeffDict_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + extrudeModel(const extrudeModel&); + + //- Disallow default bitwise assignment + void operator=(const extrudeModel&); + + +public: + + //- Runtime type information + TypeName("extrudeModel"); + + //- Declare runtime constructor selection table + + declareRunTimeSelectionTable + ( + autoPtr, + extrudeModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct from dictionary + extrudeModel(const word& modelType, const dictionary&); + + + // Selectors + + //- Select null constructed + static autoPtr New(const dictionary&); + + + //- Destructor + virtual ~extrudeModel(); + + + // Member Functions + + // Access + + label nLayers() const; + + scalar expansionRatio() const; + + + // Member Operators + + //- Helper: calculate cumulative relative thickness for layer. + // (layer=0 -> 0; layer=nLayers -> 1) + scalar sumThickness(const label layer) const; + + virtual point operator() + ( + const point& surfacePoint, + const vector& surfaceNormal, + const label layer + ) const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModelNew.C b/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModelNew.C new file mode 100644 index 0000000000..b2a243d83c --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/extrudeModel/extrudeModelNew.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +\*---------------------------------------------------------------------------*/ + +#include "extrudeModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +Foam::autoPtr Foam::extrudeModel::New +( + const dictionary& dict +) +{ + const word modelType(dict.lookup("extrudeModel")); + + Info<< "Selecting extrudeModel " << modelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(modelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "extrudeModel::New(const dictionary&)" + ) << "Unknown extrudeModel type " + << modelType << nl << nl + << "Valid extrudeModel types are :" << nl + << dictionaryConstructorTablePtr_->sortedToc() << nl + << exit(FatalError); + } + + return autoPtr(cstrIter()(dict)); +} + + +// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.C b/applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.C new file mode 100644 index 0000000000..d3d3d24382 --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.C @@ -0,0 +1,89 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +\*---------------------------------------------------------------------------*/ + +#include "linearDirection.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace extrudeModels +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(linearDirection, 0); + +addToRunTimeSelectionTable(extrudeModel, linearDirection, dictionary); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +linearDirection::linearDirection(const dictionary& dict) +: + extrudeModel(typeName, dict), + direction_(coeffDict_.lookup("direction")), + thickness_(readScalar(coeffDict_.lookup("thickness"))) +{ + direction_ /= mag(direction_); + + if (thickness_ <= 0) + { + FatalErrorIn("linearDirection(const dictionary&)") + << "thickness should be positive : " << thickness_ + << exit(FatalError); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +linearDirection::~linearDirection() +{} + + +// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * // + +point linearDirection::operator() +( + const point& surfacePoint, + const vector& surfaceNormal, + const label layer +) const +{ + //scalar d = thickness_*layer/nLayers_; + scalar d = thickness_*sumThickness(layer); + return surfacePoint + d*direction_; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace extrudeModels +} // End namespace Foam + +// ************************************************************************* // + diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.H b/applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.H new file mode 100644 index 0000000000..4d26ee56f5 --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/linearDirection/linearDirection.H @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +Class + Foam::extrudeModels::linearDirection + +Description + Extrudes by transforming points in a specified direction by a given distance + +\*---------------------------------------------------------------------------*/ + +#ifndef linearDirection_H +#define linearDirection_H + +#include "point.H" +#include "extrudeModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace extrudeModels +{ + +/*---------------------------------------------------------------------------*\ + Class linearDirection Declaration +\*---------------------------------------------------------------------------*/ + +class linearDirection +: + public extrudeModel +{ + // Private data + + //- Extrude direction + vector direction_; + + //- layer thickness + scalar thickness_; + + +public: + + //- Runtime type information + TypeName("linearDirection"); + + // Constructors + + //- Construct from dictionary + linearDirection(const dictionary& dict); + + + //- Destructor + ~linearDirection(); + + + // Member Operators + + point operator() + ( + const point& surfacePoint, + const vector& surfaceNormal, + const label layer + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace extrudeModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // + diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.C b/applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.C new file mode 100644 index 0000000000..34e0ba81cd --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.C @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +\*---------------------------------------------------------------------------*/ + +#include "linearNormal.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace extrudeModels +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(linearNormal, 0); + +addToRunTimeSelectionTable(extrudeModel, linearNormal, dictionary); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +linearNormal::linearNormal(const dictionary& dict) +: + extrudeModel(typeName, dict), + thickness_(readScalar(coeffDict_.lookup("thickness"))) +{ + if (thickness_ <= 0) + { + FatalErrorIn("linearNormal(const dictionary&)") + << "thickness should be positive : " << thickness_ + << exit(FatalError); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +linearNormal::~linearNormal() +{} + + +// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * // + +point linearNormal::operator() +( + const point& surfacePoint, + const vector& surfaceNormal, + const label layer +) const +{ + //scalar d = thickness_*layer/nLayers_; + scalar d = thickness_*sumThickness(layer); + return surfacePoint + d*surfaceNormal; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace extrudeModels +} // End namespace Foam + +// ************************************************************************* // + diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.H b/applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.H new file mode 100644 index 0000000000..62ae81bffb --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/linearNormal/linearNormal.H @@ -0,0 +1,95 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +Class + Foam::extrudeModels::linearNormal + +Description + Extrudes by transforming points normal to the surface by a given distance + +\*---------------------------------------------------------------------------*/ + +#ifndef linearNormal_H +#define linearNormal_H + +#include "point.H" +#include "extrudeModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace extrudeModels +{ + +/*---------------------------------------------------------------------------*\ + Class linearNormal Declaration +\*---------------------------------------------------------------------------*/ + +class linearNormal +: + public extrudeModel +{ + // Private data + + //- layer thickness + scalar thickness_; + + +public: + + //- Runtime type information + TypeName("linearNormal"); + + // Constructors + + //- Construct from dictionary + linearNormal(const dictionary& dict); + + + //- Destructor + ~linearNormal(); + + + // Member Operators + + point operator() + ( + const point& surfacePoint, + const vector& surfaceNormal, + const label layer + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace extrudeModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // + diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.C b/applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.C new file mode 100644 index 0000000000..b3a8c1298a --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.C @@ -0,0 +1,82 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +\*---------------------------------------------------------------------------*/ + +#include "linearRadial.H" +#include "addToRunTimeSelectionTable.H" + +namespace Foam +{ +namespace extrudeModels +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(linearRadial, 0); + +addToRunTimeSelectionTable(extrudeModel, linearRadial, dictionary); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +linearRadial::linearRadial(const dictionary& dict) +: + extrudeModel(typeName, dict), + R_(readScalar(coeffDict_.lookup("R"))), + Rsurface_(coeffDict_.lookupOrDefault("Rsurface", -1)) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +linearRadial::~linearRadial() +{} + + +// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * // + +point linearRadial::operator() +( + const point& surfacePoint, + const vector& surfaceNormal, + const label layer +) const +{ + // radius of the surface + scalar rs = mag(surfacePoint); + vector rsHat = surfacePoint/rs; + if (Rsurface_ >= 0) rs = Rsurface_; + + scalar r = rs + (R_ - rs)*sumThickness(layer); + return r*rsHat; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace extrudeModels +} // End namespace Foam + +// ************************************************************************* // + diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.H b/applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.H new file mode 100644 index 0000000000..04f19764ba --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/linearRadial/linearRadial.H @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +Class + Foam::extrudeModels::linearRadial + +Description + +\*---------------------------------------------------------------------------*/ + +#ifndef linearRadial_H +#define linearRadial_H + +#include "extrudeModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace extrudeModels +{ + +/*---------------------------------------------------------------------------*\ + Class linearRadial Declaration +\*---------------------------------------------------------------------------*/ + +class linearRadial +: + public extrudeModel +{ + // Private data + + scalar R_; + scalar Rsurface_; + + +public: + + //- Runtime type information + TypeName("linearRadial"); + + // Constructors + + //- Construct from dictionary + linearRadial(const dictionary& dict); + + + //- Destructor + ~linearRadial(); + + + // Member Operators + + point operator() + ( + const point& surfacePoint, + const vector& surfaceNormal, + const label layer + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace extrudeModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // + diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.C b/applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.C new file mode 100644 index 0000000000..c8a8ffe6fb --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.C @@ -0,0 +1,92 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +\*---------------------------------------------------------------------------*/ + +#include "sigmaRadial.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace extrudeModels +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(sigmaRadial, 0); + +addToRunTimeSelectionTable(extrudeModel, sigmaRadial, dictionary); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +sigmaRadial::sigmaRadial(const dictionary& dict) +: + extrudeModel(typeName, dict), + RTbyg_(readScalar(coeffDict_.lookup("RTbyg"))), + pRef_(readScalar(coeffDict_.lookup("pRef"))), + pStrat_(readScalar(coeffDict_.lookup("pStrat"))) +{ + if (mag(expansionRatio() - 1.0) > SMALL) + { + WarningIn("sigmaRadial::sigmaRadial(const dictionary&)") + << "Ignoring expansionRatio setting." << endl; + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +sigmaRadial::~sigmaRadial() +{} + + +// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * // + +point sigmaRadial::operator() +( + const point& surfacePoint, + const vector& surfaceNormal, + const label layer +) const +{ + // radius of the surface + scalar rs = mag(surfacePoint); + vector rsHat = surfacePoint/rs; + + scalar p = pRef_ - layer*(pRef_ - pStrat_)/nLayers_; + scalar r = rs - RTbyg_*log(p/pRef_); + + return r*rsHat; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace extrudeModels +} // End namespace Foam + +// ************************************************************************* // + diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.H b/applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.H new file mode 100644 index 0000000000..e55c81bfe4 --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/sigmaRadial/sigmaRadial.H @@ -0,0 +1,94 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +Class + Foam::extrudeModels::sigmaRadial + +Description + +\*---------------------------------------------------------------------------*/ + +#ifndef sigmaRadial_H +#define sigmaRadial_H + +#include "extrudeModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace extrudeModels +{ + +/*---------------------------------------------------------------------------*\ + Class sigmaRadial Declaration +\*---------------------------------------------------------------------------*/ + +class sigmaRadial +: + public extrudeModel +{ + // Private data + + scalar RTbyg_; + scalar pRef_; + scalar pStrat_; + + +public: + + //- Runtime type information + TypeName("sigmaRadial"); + + // Constructors + + //- Construct from dictionary + sigmaRadial(const dictionary& dict); + + + //-Destructor + ~sigmaRadial(); + + + // Member Operators + + point operator() + ( + const point& surfacePoint, + const vector& surfaceNormal, + const label layer + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace extrudeModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // + diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.C b/applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.C new file mode 100644 index 0000000000..02154ffa67 --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.C @@ -0,0 +1,125 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +\*---------------------------------------------------------------------------*/ + +#include "wedge.H" +#include "addToRunTimeSelectionTable.H" +#include "unitConversion.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace extrudeModels +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(wedge, 0); + +addToRunTimeSelectionTable(extrudeModel, wedge, dictionary); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +wedge::wedge(const dictionary& dict) +: + extrudeModel(typeName, dict), + axisPt_(coeffDict_.lookup("axisPt")), + axis_(coeffDict_.lookup("axis")), + angle_ + ( + degToRad(readScalar(coeffDict_.lookup("angle"))) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +wedge::~wedge() +{} + + +// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * // + +point wedge::operator() +( + const point& surfacePoint, + const vector& surfaceNormal, + const label layer +) const +{ + scalar sliceAngle; + // For the case of a single layer extrusion assume a + // symmetric wedge about the reference plane is required + if (nLayers_ == 1) + { + if (layer == 0) + { + sliceAngle = -angle_/2.0; + } + else + { + sliceAngle = angle_/2.0; + } + } + else + { + //sliceAngle = angle_*layer/nLayers_; + sliceAngle = angle_*sumThickness(layer); + } + + // Find projection onto axis (or rather decompose surfacePoint + // into vector along edge (proj), vector normal to edge in plane + // of surface point and surface normal. + point d = surfacePoint - axisPt_; + + d -= (axis_ & d)*axis_; + + scalar dMag = mag(d); + + point edgePt = surfacePoint - d; + + // Rotate point around sliceAngle. + point rotatedPoint = edgePt; + + if (dMag > VSMALL) + { + vector n = (d/dMag) ^ axis_; + + rotatedPoint += + + cos(sliceAngle)*d + - sin(sliceAngle)*mag(d)*n; // Use either n or surfaceNormal + } + + return rotatedPoint; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace extrudeModels +} // End namespace Foam + +// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.H b/applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.H new file mode 100644 index 0000000000..a936e798e4 --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeModel/wedge/wedge.H @@ -0,0 +1,107 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2010 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 . + +Class + Foam::extrudeModels::wedge + +Description + Extrudes by rotating a surface around an axis + - extrusion is opposite the surface/patch normal so inwards the source + mesh + - axis direction has to be consistent with this. + - use -mergeFaces option if doing full 360 and want to merge front and back + - note direction of axis. This should be consistent with rotating against + the patch normal direction. If you get it wrong you'll see all cells + with extreme aspect ratio and internal faces wrong way around in + checkMesh + +\*---------------------------------------------------------------------------*/ + +#ifndef wedge_H +#define wedge_H + +#include "extrudeModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace extrudeModels +{ + +/*---------------------------------------------------------------------------*\ + Class wedge Declaration +\*---------------------------------------------------------------------------*/ + +class wedge +: + public extrudeModel +{ + // Private data + + //- Point on axis + const point axisPt_; + + //- Normalized direction of axis + const vector axis_; + + //- Overall angle (radians) + const scalar angle_; + + +public: + + //- Runtime type information + TypeName("wedge"); + + // Constructors + + //- Construct from dictionary + wedge(const dictionary& dict); + + + //- Destrcuctor + ~wedge(); + + + // Member Operators + + point operator() + ( + const point& surfacePoint, + const vector& surfaceNormal, + const label layer + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace extrudeModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/Make/files b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/Make/files similarity index 100% rename from applications/utilities/mesh/generation/extrudeToRegionMesh/Make/files rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/Make/files diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/Make/options b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/Make/options similarity index 100% rename from applications/utilities/mesh/generation/extrudeToRegionMesh/Make/options rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/Make/options diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/createShellMesh.C b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/createShellMesh.C similarity index 100% rename from applications/utilities/mesh/generation/extrudeToRegionMesh/createShellMesh.C rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/createShellMesh.C diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/createShellMesh.H b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/createShellMesh.H similarity index 100% rename from applications/utilities/mesh/generation/extrudeToRegionMesh/createShellMesh.H rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/createShellMesh.H diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/extrudeToRegionMesh.C b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C similarity index 100% rename from applications/utilities/mesh/generation/extrudeToRegionMesh/extrudeToRegionMesh.C rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C diff --git a/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMeshDict b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMeshDict new file mode 100644 index 0000000000..6f6fc40f17 --- /dev/null +++ b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMeshDict @@ -0,0 +1,78 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object extrudeToRegionMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Name of region to create +region liquidFilm; + +// faceZones to extrude +faceZones (f0); + +// Extrude 1D-columns of cells? +oneD false; + +//- Extrusion model to use. The only logical choice is linearNormal? + +//- Linear extrusion in normal direction +extrudeModel linearNormal; + +//- Linear extrusion in specified direction +//extrudeModel linearDirection; + +//- Wedge extrusion. If nLayers is 1 assumes symmetry around plane. +// extrudeModel wedge; + +//- Extrudes into sphere around (0 0 0) +//extrudeModel linearRadial; + +//- Extrudes into sphere with grading according to pressure (atmospherics) +//extrudeModel sigmaRadial; + +nLayers 10; + +expansionRatio 0.9; + +linearNormalCoeffs +{ + thickness 0.05; +} + +wedgeCoeffs +{ + axisPt (0 0.1 -0.05); + axis (-1 0 0); + angle 360; // For nLayers=1 assume symmetry so angle/2 on each side +} + +linearDirectionCoeffs +{ + direction (0 1 0); + thickness 0.05; +} + +linearRadialCoeffs +{ + R 0.1; +} + +sigmaRadialCoeffs +{ + RTbyg 1; + pRef 1; + pStrat 1; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/patchPointEdgeCirculator.C b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/patchPointEdgeCirculator.C similarity index 100% rename from applications/utilities/mesh/generation/extrudeToRegionMesh/patchPointEdgeCirculator.C rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/patchPointEdgeCirculator.C diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/patchPointEdgeCirculator.H b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/patchPointEdgeCirculator.H similarity index 100% rename from applications/utilities/mesh/generation/extrudeToRegionMesh/patchPointEdgeCirculator.H rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/patchPointEdgeCirculator.H diff --git a/applications/utilities/mesh/generation/extrudeToRegionMesh/patchPointEdgeCirculatorI.H b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/patchPointEdgeCirculatorI.H similarity index 100% rename from applications/utilities/mesh/generation/extrudeToRegionMesh/patchPointEdgeCirculatorI.H rename to applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/patchPointEdgeCirculatorI.H