Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
fe808e24
Commit
fe808e24
authored
Jul 23, 2018
by
Mark Olesen
Browse files
ENH: add rpmToRads() convenience functions
- simplifies conversion of RPM to radians/sec for const variables
parent
ec318a95
Changes
10
Hide whitespace changes
Inline
Side-by-side
applications/test/unitConversion/Test-unitConversion.C
View file @
fe808e24
...
...
@@ -42,6 +42,8 @@ int main(int argc, char *argv[])
Info
<<
"degToRad(30): "
<<
degToRad
(
30
)
<<
nl
;
Info
<<
"cos(30_deg): "
<<
::
cos
(
30
_deg
)
<<
nl
;
Info
<<
"1000 rpm = "
<<
rpmToRads
(
1000
)
<<
" 1/s"
<<
nl
;
Info
<<
"100 1/s = "
<<
radsToRpm
(
100
)
<<
" rpm"
<<
nl
;
return
0
;
}
...
...
applications/utilities/preProcessing/engineSwirl/engineSwirl.C
View file @
fe808e24
...
...
@@ -33,7 +33,7 @@ Description
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "
mathematicalConstants
.H"
#include "
unitConversion
.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
...
...
@@ -47,7 +47,7 @@ int main(int argc, char *argv[])
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
scalar
Vphi
=
(
constant
::
mathematical
::
pi
*
swirlRPMRatio
*
rpm
/
30
).
value
();
scalar
Vphi
=
(
swirlRPMRatio
*
rpm
*
rpmToRads
()
).
value
();
scalar
b1
=
j1
(
swirlProfile
).
value
();
scalar
b2
=
2
.
0
*
b1
/
swirlProfile
.
value
()
-
j0
(
swirlProfile
).
value
();
...
...
src/OpenFOAM/global/unitConversion/unitConversion.H
View file @
fe808e24
...
...
@@ -65,6 +65,32 @@ inline constexpr scalar radToDeg() noexcept
return
(
180.0
/
M_PI
);
}
//- Conversion from revolutions/minute to radians/sec
inline
constexpr
scalar
rpmToRads
(
const
scalar
rpm
)
noexcept
{
return
(
rpm
*
M_PI
/
30.0
);
}
//- Conversion from radians/sec to revolutions/minute
inline
constexpr
scalar
radsToRpm
(
const
scalar
rads
)
noexcept
{
return
(
rads
*
30.0
/
M_PI
);
}
//- Multiplication factor for revolutions/minute to radians/sec
inline
constexpr
scalar
rpmToRads
()
noexcept
{
return
(
M_PI
/
30.0
);
}
//- Multiplication factor for radians/sec to revolutions/minute
inline
constexpr
scalar
radsToRpm
()
noexcept
{
return
(
30.0
/
M_PI
);
}
//- Conversion from atm to Pa
inline
constexpr
scalar
atmToPa
(
const
scalar
atm
)
noexcept
{
...
...
src/finiteVolume/cfdTools/general/SRF/SRFModel/rpm/rpm.C
View file @
fe808e24
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation |
Copyright (C) 2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -25,7 +25,7 @@ License
#include "rpm.H"
#include "addToRunTimeSelectionTable.H"
#include "
mathematicalConstants
.H"
#include "
unitConversion
.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
...
...
@@ -46,43 +46,30 @@ namespace Foam
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam
::
SRF
::
rpm
::
rpm
(
const
volVectorField
&
U
)
Foam
::
SRF
::
rpm
::
rpm
(
const
volVectorField
&
U
)
:
SRFModel
(
typeName
,
U
),
rpm_
(
readScalar
(
SRFModelCoeffs_
.
lookup
(
"rpm"
))
)
rpm_
(
SRFModelCoeffs_
.
get
<
scalar
>
(
"rpm"
))
{
//
Initialise t
he angular velocity
omega_
.
value
()
=
axis_
*
rpm
_
*
constant
::
mathematical
::
twoPi
/
60
.
0
;
//
T
he angular velocity
omega_
.
value
()
=
axis_
*
rpm
ToRads
(
rpm_
)
;
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam
::
SRF
::
rpm
::~
rpm
()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool
Foam
::
SRF
::
rpm
::
read
()
{
if
(
SRFModel
::
read
())
{
// Re-read rpm
SRFModelCoeffs_
.
lookup
(
"rpm"
)
>>
rpm_
;
rpm_
=
SRFModelCoeffs_
.
get
<
scalar
>
(
"rpm"
);
// Update angular velocity
omega_
.
value
()
=
axis_
*
rpm_
*
(
constant
::
mathematical
::
twoPi
/
60
.
0
);
omega_
.
value
()
=
axis_
*
rpmToRads
(
rpm_
);
return
true
;
}
else
{
return
false
;
}
return
false
;
}
...
...
src/finiteVolume/cfdTools/general/SRF/SRFModel/rpm/rpm.H
View file @
fe808e24
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation |
Copyright (C) 2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -82,14 +82,13 @@ public:
//- Destructor
~
rpm
();
~
rpm
()
=
default
;
// Member functions
//
I-O
//
Member functions
//- Read
bool
read
();
//- Read
coefficients
bool
read
();
};
...
...
src/finiteVolume/fields/fvPatchFields/derived/cylindricalInletVelocity/cylindricalInletVelocityFvPatchVectorField.C
View file @
fe808e24
...
...
@@ -28,7 +28,7 @@ License
#include "addToRunTimeSelectionTable.H"
#include "fvPatchFieldMapper.H"
#include "surfaceFields.H"
#include "
mathematicalConstants
.H"
#include "
unitConversion
.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
...
...
@@ -126,7 +126,7 @@ void Foam::cylindricalInletVelocityFvPatchVectorField::updateCoeffs()
const
scalar
t
=
this
->
db
().
time
().
timeOutputValue
();
const
scalar
axialVelocity
=
axialVelocity_
->
value
(
t
);
const
scalar
radialVelocity
=
radialVelocity_
->
value
(
t
);
const
scalar
rpm
=
rpm_
->
value
(
t
);
const
scalar
omega
=
rpmToRads
(
rpm_
->
value
(
t
)
)
;
const
vector
axisHat
=
axis_
/
mag
(
axis_
);
...
...
@@ -135,7 +135,7 @@ void Foam::cylindricalInletVelocityFvPatchVectorField::updateCoeffs()
tmp
<
vectorField
>
tangVel
(
(
rpm
*
constant
::
mathematical
::
pi
/
30
.
0
)
*
(
axisHat
)
^
d
(
omega
*
axisHat
)
^
d
);
operator
==
(
tangVel
+
axisHat
*
axialVelocity
+
radialVelocity
*
d
/
mag
(
d
));
...
...
src/finiteVolume/fields/fvPatchFields/derived/swirlFanVelocity/swirlFanVelocityFvPatchField.C
View file @
fe808e24
...
...
@@ -28,6 +28,7 @@ License
#include "fvPatchFieldMapper.H"
#include "volFields.H"
#include "surfaceFields.H"
#include "unitConversion.H"
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
...
...
@@ -79,10 +80,7 @@ void Foam::swirlFanVelocityFvPatchField::calcFanJump()
if
(
rMag
>
rInner_
&&
rMag
<
rOuter_
)
{
magTangU
[
i
]
=
deltaP
[
i
]
/
rMag
/
fanEff_
/
(
rpm_
*
constant
::
mathematical
::
pi
/
30
.
0
);
deltaP
[
i
]
/
rMag
/
fanEff_
/
rpmToRads
(
rpm_
);
}
}
}
...
...
@@ -96,7 +94,7 @@ void Foam::swirlFanVelocityFvPatchField::calcFanJump()
<<
exit
(
FatalError
);
}
magTangU
=
deltaP
/
rEff_
/
fanEff_
/
(
rpm
_
*
constant
::
mathematical
::
pi
/
30
.
0
);
deltaP
/
rEff_
/
fanEff_
/
rpm
ToRads
(
rpm_
);
}
// Calculate the tangential velocity
...
...
src/finiteVolume/fields/fvPatchFields/derived/swirlFlowRateInletVelocity/swirlFlowRateInletVelocityFvPatchVectorField.C
View file @
fe808e24
...
...
@@ -28,7 +28,7 @@ License
#include "addToRunTimeSelectionTable.H"
#include "fvPatchFieldMapper.H"
#include "surfaceFields.H"
#include "
mathematicalConstants
.H"
#include "
unitConversion
.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
...
...
@@ -151,18 +151,16 @@ void Foam::swirlFlowRateInletVelocityFvPatchVectorField::updateCoeffs()
{
const
scalar
t
=
this
->
db
().
time
().
timeOutputValue
();
const
scalar
flowRate
=
flowRate_
->
value
(
t
);
const
scalar
rpm
=
rpm_
->
value
(
t
);
const
scalar
omega
=
rpmToRads
(
rpm_
->
value
(
t
)
)
;
const
scalar
avgU
=
-
flowRate
/
totArea
;
const
vector
axisHat
=
axis_
/
mag
(
axis_
);
// Update angular velocity
- convert [rpm] to [rad/s]
// Update angular velocity
tmp
<
vectorField
>
tangentialVelocity
(
axisHat
^
(
rpm
*
constant
::
mathematical
::
pi
/
30
.
0
)
*
(
patch
().
Cf
()
-
origin_
)
axisHat
^
omega
*
(
patch
().
Cf
()
-
origin_
)
);
tmp
<
vectorField
>
n
=
patch
().
nf
();
...
...
src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.C
View file @
fe808e24
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation |
Copyright (C) 2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -29,6 +29,7 @@ License
#include "fvMatrices.H"
#include "geometricOneField.H"
#include "syncTools.H"
#include "unitConversion.H"
using
namespace
Foam
::
constant
;
...
...
@@ -84,15 +85,12 @@ void Foam::fv::rotorDiskSource::checkData()
{
case
ifFixed
:
{
coeffs_
.
lookup
(
"inletVelocity"
)
>>
inletVelocity_
;
coeffs_
.
read
(
"inletVelocity"
,
inletVelocity_
)
;
break
;
}
case
ifSurfaceNormal
:
{
scalar
UIn
(
readScalar
(
coeffs_
.
lookup
(
"inletNormalVelocity"
))
);
scalar
UIn
(
coeffs_
.
get
<
scalar
>
(
"inletNormalVelocity"
));
inletVelocity_
=
-
coordSys_
.
R
().
e3
()
*
UIn
;
break
;
}
...
...
@@ -263,7 +261,7 @@ void Foam::fv::rotorDiskSource::setFaceArea(vector& axis, const bool correct)
void
Foam
::
fv
::
rotorDiskSource
::
createCoordinateSystem
()
{
// Construct the local rotor co
-
ordinate system
// Construct the local rotor coordinate system
vector
origin
(
Zero
);
vector
axis
(
Zero
);
vector
refDir
(
Zero
);
...
...
@@ -324,7 +322,7 @@ void Foam::fv::rotorDiskSource::createCoordinateSystem()
// Correct the axis direction using a point above the rotor
{
vector
pointAbove
(
coeffs_
.
lookup
(
"pointAbove"
));
vector
pointAbove
(
coeffs_
.
get
<
vector
>
(
"pointAbove"
));
vector
dir
=
pointAbove
-
origin
;
dir
/=
mag
(
dir
);
if
((
dir
&
axis
)
<
0
)
...
...
@@ -333,7 +331,7 @@ void Foam::fv::rotorDiskSource::createCoordinateSystem()
}
}
coeffs_
.
lookup
(
"refDirection"
)
>>
refDir
;
coeffs_
.
read
(
"refDirection"
,
refDir
)
;
cylindrical_
.
reset
(
...
...
@@ -354,9 +352,9 @@ void Foam::fv::rotorDiskSource::createCoordinateSystem()
}
case
gmSpecified
:
{
coeffs_
.
lookup
(
"origin"
)
>>
origin
;
coeffs_
.
lookup
(
"axis"
)
>>
axis
;
coeffs_
.
lookup
(
"refDirection"
)
>>
refDir
;
coeffs_
.
read
(
"origin"
,
origin
)
;
coeffs_
.
read
(
"axis"
,
axis
)
;
coeffs_
.
read
(
"refDirection"
,
refDir
)
;
cylindrical_
.
reset
(
...
...
@@ -407,7 +405,7 @@ void Foam::fv::rotorDiskSource::constructGeometry()
{
const
label
celli
=
cells_
[
i
];
// Position in (planar) rotor co
-
ordinate system
// Position in (planar) rotor coordinate system
x_
[
i
]
=
coordSys_
.
localPosition
(
C
[
celli
]);
// Cache max radius
...
...
@@ -523,7 +521,7 @@ void Foam::fv::rotorDiskSource::addSup
);
// Read the reference density for incompressible flow
coeffs_
.
lookup
(
"rhoRef"
)
>>
rhoRef_
;
coeffs_
.
read
(
"rhoRef"
,
rhoRef_
)
;
const
vectorField
Uin
(
inflowVelocity
(
eqn
.
psi
()));
trim_
->
correct
(
Uin
,
force
);
...
...
@@ -576,32 +574,28 @@ bool Foam::fv::rotorDiskSource::read(const dictionary& dict)
{
if
(
cellSetOption
::
read
(
dict
))
{
coeffs_
.
lookup
(
"fields"
)
>>
fieldNames_
;
coeffs_
.
read
(
"fields"
,
fieldNames_
)
;
applied_
.
setSize
(
fieldNames_
.
size
(),
false
);
// Read co-ordinate system/geometry invariant properties
scalar
rpm
(
readScalar
(
coeffs_
.
lookup
(
"rpm"
)));
omega_
=
rpm
/
60
.
0
*
mathematical
::
twoPi
;
// Read coordinate system/geometry invariant properties
omega_
=
rpmToRads
(
coeffs_
.
get
<
scalar
>
(
"rpm"
));
coeffs_
.
lookup
(
"nBlades"
)
>>
nBlades_
;
coeffs_
.
read
(
"nBlades"
,
nBlades_
)
;
inletFlow_
=
inletFlowTypeNames_
.
lookup
(
"inletFlowType"
,
coeffs_
);
coeffs_
.
lookup
(
"tipEffect"
)
>>
tipEffect_
;
coeffs_
.
read
(
"tipEffect"
,
tipEffect_
)
;
const
dictionary
&
flapCoeffs
(
coeffs_
.
subDict
(
"flapCoeffs"
));
flapCoeffs
.
lookup
(
"beta0"
)
>>
flap_
.
beta0
;
flapCoeffs
.
lookup
(
"beta1c"
)
>>
flap_
.
beta1c
;
flapCoeffs
.
lookup
(
"beta2s"
)
>>
flap_
.
beta2s
;
flap_
.
beta0
=
degToRad
(
flap_
.
beta0
);
flap_
.
beta1c
=
degToRad
(
flap_
.
beta1c
);
flap_
.
beta2s
=
degToRad
(
flap_
.
beta2s
);
flap_
.
beta0
=
degToRad
(
flapCoeffs
.
get
<
scalar
>
(
"beta0"
));
flap_
.
beta1c
=
degToRad
(
flapCoeffs
.
get
<
scalar
>
(
"beta1c"
));
flap_
.
beta2s
=
degToRad
(
flapCoeffs
.
get
<
scalar
>
(
"beta2s"
));
// Create co
-
ordinate system
// Create coordinate system
createCoordinateSystem
();
// Read co
-
ordinate system dependent properties
// Read coordinate system dependent properties
checkData
();
constructGeometry
();
...
...
@@ -616,10 +610,8 @@ bool Foam::fv::rotorDiskSource::read(const dictionary& dict)
return
true
;
}
else
{
return
false
;
}
return
false
;
}
...
...
src/fvOptions/sources/derived/rotorDiskSource/rotorDiskSource.H
View file @
fe808e24
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation |
Copyright (C) 2018 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -78,8 +78,8 @@ Usage
Where:
Valid options for the \c geometryMode entry include:
- auto : determine roto
to
r co
-
ord system from cells
- specified : specified co
-
ord system
- auto : determine rotor coord
inate
system from cells
- specified : specified coord
inate
system
Valid options for the \c inletFlowType entry include:
- fixed : specified velocity
...
...
@@ -113,7 +113,7 @@ SourceFiles
namespace
Foam
{
// Forward declaration
of classe
s
// Forward declarations
class
trimModel
;
namespace
fv
...
...
@@ -196,7 +196,7 @@ protected:
//- Area [m2]
List
<
scalar
>
area_
;
//- Rotor local cylindrical co
-
ordinate system (r, theta, z)
//- Rotor local cylindrical coordinate system (r, theta, z)
cylindricalCS
coordSys_
;
//- Rotor transformation co-ordinate system
...
...
@@ -223,7 +223,7 @@ protected:
//- Set the face areas per cell, and optionally correct the rotor axis
void
setFaceArea
(
vector
&
axis
,
const
bool
correct
);
//- Create the co
-
ordinate system
//- Create the coordinate system
void
createCoordinateSystem
();
//- Construct geometry
...
...
@@ -250,7 +250,6 @@ public:
// Constructors
//- Construct from components
rotorDiskSource
(
...
...
@@ -280,7 +279,7 @@ public:
// (Cylindrical r, theta, z)
inline
const
List
<
point
>&
x
()
const
;
//- Return the rotor co
-
ordinate system (r, theta, z)
//- Return the rotor coordinate system (r, theta, z)
inline
const
cylindricalCS
&
coordSys
()
const
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment