extrudeModels::cylindricalRadial: New cylindrical radial extrusion model
Renamed extrudeModels::radial -> extrudeModels::sphericalRadial as this specifically extrudes spherically.
This commit is contained in:
@ -57,7 +57,7 @@ extrudeModel wedge;
|
|||||||
//extrudeModel linearRadial;
|
//extrudeModel linearRadial;
|
||||||
|
|
||||||
//- Extrudes into sphere around (0 0 0) with specified radii
|
//- Extrudes into sphere around (0 0 0) with specified radii
|
||||||
//extrudeModel radial;
|
//extrudeModel sphericalRadial;
|
||||||
|
|
||||||
//- Extrudes into sphere with grading according to pressure (atmospherics)
|
//- Extrudes into sphere with grading according to pressure (atmospherics)
|
||||||
//extrudeModel sigmaRadial;
|
//extrudeModel sigmaRadial;
|
||||||
@ -91,7 +91,7 @@ linearRadialCoeffs
|
|||||||
Rsurface 0.01;
|
Rsurface 0.01;
|
||||||
}
|
}
|
||||||
|
|
||||||
radialCoeffs
|
sphericalRadialCoeffs
|
||||||
{
|
{
|
||||||
// Radii specified through interpolation table
|
// Radii specified through interpolation table
|
||||||
R table ((0 0.01)(3 0.03)(10 0.1));
|
R table ((0 0.01)(3 0.03)(10 0.1));
|
||||||
|
|||||||
@ -47,7 +47,7 @@ extrudeModel linearNormal;
|
|||||||
// extrudeModel linearDirection;
|
// extrudeModel linearDirection;
|
||||||
// extrudeModel wedge;
|
// extrudeModel wedge;
|
||||||
// extrudeModel linearRadial;
|
// extrudeModel linearRadial;
|
||||||
// extrudeModel radial;
|
// extrudeModel sphericalRadial;
|
||||||
// extrudeModel sigmaRadial;
|
// extrudeModel sigmaRadial;
|
||||||
|
|
||||||
nLayers 10;
|
nLayers 10;
|
||||||
@ -79,7 +79,7 @@ linearRadialCoeffs
|
|||||||
Rsurface 0.01;
|
Rsurface 0.01;
|
||||||
}
|
}
|
||||||
|
|
||||||
radialCoeffs
|
sphericalRadialCoeffs
|
||||||
{
|
{
|
||||||
// Radii specified through interpolation table
|
// Radii specified through interpolation table
|
||||||
R table ((0 0.01)(3 0.03)(10 0.1));
|
R table ((0 0.01)(3 0.03)(10 0.1));
|
||||||
|
|||||||
@ -37,7 +37,7 @@ linearDirection: linear extrusion in specified direction
|
|||||||
wedge: single-layer, wedge extrusion with wedge type (axisymmetric)
|
wedge: single-layer, wedge extrusion with wedge type (axisymmetric)
|
||||||
sector: sector extrusion about specified axis
|
sector: sector extrusion about specified axis
|
||||||
linearRadial: linear extrusion in radial direction
|
linearRadial: linear extrusion in radial direction
|
||||||
radial: linear extrusion in radial direction with multiple radii
|
sphericalRadial: spherical radial extrusion with radii function
|
||||||
*/
|
*/
|
||||||
|
|
||||||
thickness 0.5; // used by plane extrusion
|
thickness 0.5; // used by plane extrusion
|
||||||
@ -73,7 +73,7 @@ linearRadialCoeffs
|
|||||||
Rsurface 0.1;
|
Rsurface 0.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
radialCoeffs
|
sphericalRadialCoeffs
|
||||||
{
|
{
|
||||||
R table ((0 0.01) (3 0.03) (10 0.1));
|
R table ((0 0.01) (3 0.03) (10 0.1));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,8 @@ linearNormal/linearNormal.C
|
|||||||
planeExtrusion/planeExtrusion.C
|
planeExtrusion/planeExtrusion.C
|
||||||
linearDirection/linearDirection.C
|
linearDirection/linearDirection.C
|
||||||
linearRadial/linearRadial.C
|
linearRadial/linearRadial.C
|
||||||
radial/radial.C
|
sphericalRadial/sphericalRadial.C
|
||||||
|
cylindricalRadial/cylindricalRadial.C
|
||||||
sigmaRadial/sigmaRadial.C
|
sigmaRadial/sigmaRadial.C
|
||||||
sector/sector.C
|
sector/sector.C
|
||||||
cyclicSector/cyclicSector.C
|
cyclicSector/cyclicSector.C
|
||||||
|
|||||||
93
src/mesh/extrudeModel/cylindricalRadial/cylindricalRadial.C
Normal file
93
src/mesh/extrudeModel/cylindricalRadial/cylindricalRadial.C
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration | Website: https://openfoam.org
|
||||||
|
\\ / A nd | Copyright (C) 2013-2023 OpenFOAM Foundation
|
||||||
|
\\/ 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 "cylindricalRadial.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace extrudeModels
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
defineTypeNameAndDebug(cylindricalRadial, 0);
|
||||||
|
|
||||||
|
addToRunTimeSelectionTable(extrudeModel, cylindricalRadial, dictionary);
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
cylindricalRadial::cylindricalRadial(const dictionary& dict)
|
||||||
|
:
|
||||||
|
extrudeModel(typeName, dict),
|
||||||
|
axisPt_(coeffDict_.lookup("axisPt")),
|
||||||
|
axis_(coeffDict_.lookup("axis")),
|
||||||
|
R_(Function1<scalar>::New("R", coeffDict_))
|
||||||
|
{
|
||||||
|
axis_ /= mag(axis_);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
cylindricalRadial::~cylindricalRadial()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
point cylindricalRadial::operator()
|
||||||
|
(
|
||||||
|
const point& surfacePoint,
|
||||||
|
const vector& surfaceNormal,
|
||||||
|
const label layer
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
// Axial offset of surfacePoint
|
||||||
|
const vector axisOffset = axis_*(axis_ & (surfacePoint - axisPt_));
|
||||||
|
|
||||||
|
// Radial offset of surfacePoint
|
||||||
|
const vector rs = (surfacePoint - axisPt_) - axisOffset;
|
||||||
|
|
||||||
|
// Radial direction of surfacePoint
|
||||||
|
const vector rsHat = rs/mag(rs);
|
||||||
|
|
||||||
|
// Radius of layer
|
||||||
|
const scalar r = R_->value(layer);
|
||||||
|
|
||||||
|
// Return new point
|
||||||
|
return axisPt_ + axisOffset + r*rsHat;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace extrudeModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
106
src/mesh/extrudeModel/cylindricalRadial/cylindricalRadial.H
Normal file
106
src/mesh/extrudeModel/cylindricalRadial/cylindricalRadial.H
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration | Website: https://openfoam.org
|
||||||
|
\\ / A nd | Copyright (C) 2013-2023 OpenFOAM Foundation
|
||||||
|
\\/ 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::extrudeModels::cylindricalRadial
|
||||||
|
|
||||||
|
Description
|
||||||
|
Extrudes by transforming points in the cylindrical radial direction
|
||||||
|
|
||||||
|
Generates layers at radii specified by a Foam::Function1
|
||||||
|
of the layer index.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef cylindricalRadial_H
|
||||||
|
#define cylindricalRadial_H
|
||||||
|
|
||||||
|
#include "extrudeModel.H"
|
||||||
|
#include "Function1.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace extrudeModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class cylindricalRadial Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class cylindricalRadial
|
||||||
|
:
|
||||||
|
public extrudeModel
|
||||||
|
{
|
||||||
|
// Private Data
|
||||||
|
|
||||||
|
//- Point on axis
|
||||||
|
const point axisPt_;
|
||||||
|
|
||||||
|
//- Normalised axis
|
||||||
|
vector axis_;
|
||||||
|
|
||||||
|
//- Radial distribution of layers
|
||||||
|
autoPtr<Function1<scalar>> R_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("cylindricalRadial");
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
cylindricalRadial(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//-Destructor
|
||||||
|
virtual ~cylindricalRadial();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Operators
|
||||||
|
|
||||||
|
//- Return the new point corresponding to the surfacePoint
|
||||||
|
// on the specified layer.
|
||||||
|
// The surfaceNormal is not used.
|
||||||
|
point operator()
|
||||||
|
(
|
||||||
|
const point& surfacePoint,
|
||||||
|
const vector& surfaceNormal,
|
||||||
|
const label layer
|
||||||
|
) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace extrudeModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration | Website: https://openfoam.org
|
\\ / O peration | Website: https://openfoam.org
|
||||||
\\ / A nd | Copyright (C) 2013-2018 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2013-2023 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -23,7 +23,7 @@ License
|
|||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "radial.H"
|
#include "sphericalRadial.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
@ -35,14 +35,14 @@ namespace extrudeModels
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
defineTypeNameAndDebug(radial, 0);
|
defineTypeNameAndDebug(sphericalRadial, 0);
|
||||||
|
|
||||||
addToRunTimeSelectionTable(extrudeModel, radial, dictionary);
|
addToRunTimeSelectionTable(extrudeModel, sphericalRadial, dictionary);
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
radial::radial(const dictionary& dict)
|
sphericalRadial::sphericalRadial(const dictionary& dict)
|
||||||
:
|
:
|
||||||
extrudeModel(typeName, dict),
|
extrudeModel(typeName, dict),
|
||||||
R_(Function1<scalar>::New("R", coeffDict_))
|
R_(Function1<scalar>::New("R", coeffDict_))
|
||||||
@ -51,27 +51,29 @@ radial::radial(const dictionary& dict)
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
radial::~radial()
|
sphericalRadial::~sphericalRadial()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Operators * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
point radial::operator()
|
point sphericalRadial::operator()
|
||||||
(
|
(
|
||||||
const point& surfacePoint,
|
const point& surfacePoint,
|
||||||
const vector& surfaceNormal,
|
const vector& surfaceNormal,
|
||||||
const label layer
|
const label layer
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
// radius of the surface
|
// Radius of the surface
|
||||||
scalar rs = mag(surfacePoint);
|
const scalar rs = mag(surfacePoint);
|
||||||
vector rsHat = surfacePoint/rs;
|
|
||||||
|
|
||||||
scalar r = R_->value(layer);
|
// Radial direction of surfacePoint
|
||||||
|
const vector rsHat = surfacePoint/rs;
|
||||||
|
|
||||||
Pout<< "** for layer " << layer << " r:" << r << endl;
|
// Radius of layer
|
||||||
|
const scalar r = R_->value(layer);
|
||||||
|
|
||||||
|
// Return new point
|
||||||
return r*rsHat;
|
return r*rsHat;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration | Website: https://openfoam.org
|
\\ / O peration | Website: https://openfoam.org
|
||||||
\\ / A nd | Copyright (C) 2013-2019 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2013-2023 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -22,14 +22,18 @@ License
|
|||||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
Class
|
Class
|
||||||
Foam::extrudeModels::radial
|
Foam::extrudeModels::sphericalRadial
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
Extrudes by transforming points in the spherical radial direction
|
||||||
|
|
||||||
|
Generates layers at radii specified by a Foam::Function1
|
||||||
|
of the layer index.
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef radial_H
|
#ifndef sphericalRadial_H
|
||||||
#define radial_H
|
#define sphericalRadial_H
|
||||||
|
|
||||||
#include "extrudeModel.H"
|
#include "extrudeModel.H"
|
||||||
#include "Function1.H"
|
#include "Function1.H"
|
||||||
@ -42,35 +46,39 @@ namespace extrudeModels
|
|||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class radial Declaration
|
Class sphericalRadial Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class radial
|
class sphericalRadial
|
||||||
:
|
:
|
||||||
public extrudeModel
|
public extrudeModel
|
||||||
{
|
{
|
||||||
// Private Data
|
// Private Data
|
||||||
|
|
||||||
|
//- Radial distribution of layers
|
||||||
autoPtr<Function1<scalar>> R_;
|
autoPtr<Function1<scalar>> R_;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
TypeName("radial");
|
TypeName("sphericalRadial");
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from dictionary
|
//- Construct from dictionary
|
||||||
radial(const dictionary& dict);
|
sphericalRadial(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
//-Destructor
|
//-Destructor
|
||||||
virtual ~radial();
|
virtual ~sphericalRadial();
|
||||||
|
|
||||||
|
|
||||||
// Member Operators
|
// Member Operators
|
||||||
|
|
||||||
|
//- Return the new point corresponding to the surfacePoint
|
||||||
|
// on the specified layer.
|
||||||
|
// The surfaceNormal is not used.
|
||||||
point operator()
|
point operator()
|
||||||
(
|
(
|
||||||
const point& surfacePoint,
|
const point& surfacePoint,
|
||||||
Reference in New Issue
Block a user