はじめに
fvOptions リストの表示について。
使用バージョン
OpenFOAM 4.x (blueCFD)
モデルリスト
OpenFOAM に用意されている fvOptions とその説明のリストが必要な場合がある。各 fvOptions の説明はソースコードのコメントの Discription に書かれているので、それを並べられればよい。以下のようなスクリプトでリストが得られる (抜けや余分なものがあるかも)。
show_fvOptions
#!/bin/sh
COUNT=0
cd $FOAM_SRC
for OPTION_PATH in `find fvOptions | sort -f | grep -v lnInclude | grep "\.H$" | xargs -I {} dirname {} | sed -e "s%^./%%" | uniq` ; do
echo $OPTION_PATH
echo
cat $OPTION_PATH/*.H | awk '
/\\\*/ {exit}
/SourceFiles/ {exit}
a == 1 {print}
/Description/ {a = 1}
'
echo
COUNT=`expr $COUNT + 1`
done
echo Total $COUNT
実行結果
fvOptions/cellSetOption
Cell-set options abtract base class. Provides a base set of controls,
e.g.:
\verbatim
type scalarExplicitSource // Source type
active on; // on/off switch
scalarExplicitSourceCoeffs
{
timeStart 0.0; // Start time
duration 1000.0; // Duration
selectionMode cellSet; // cellSet, points, cellZone
.
.
.
}
\endverbatim
Note
Source/sink options are to be added to the equation R.H.S.
fvOptions/constraints/fixedTemperatureConstraint
Fixed temperature equation constraint
Usage
\verbatim
fixedTemperature
{
type fixedTemperatureConstraint;
active yes;
fixedTemperatureConstraintCoeffs
{
mode uniform; // uniform or lookup
// For uniform option
temperature constant 500; // fixed temperature with time [K]
// For lookup option
// T ; // optional temperature field name
}
}
\endverbatim
Note:
The 'uniform' option allows the use of a time-varying uniform temperature
by means of the Function1 type.
fvOptions/constraints/fixedValueConstraint
Constrain the field values within a specified region.
Usage
For example to set the turbulence properties within a porous region:
\verbatim
porosityTurbulence
{
type scalarFixedValueConstraint;
active yes;
scalarFixedValueConstraintCoeffs
{
selectionMode cellZone;
cellZone porosity;
fieldValues
{
k 1;
epsilon 150;
}
}
}
\endverbatim
See also
Foam::fvOption
fvOptions/corrections/limitTemperature
Correction for temperature to apply limits between minimum and maximum
values
Constraint described by:
limitTemperatureCoeffs
{
minimum 200;
maximum 500;
}
fvOptions/interRegionOption
Base class for inter-region exchange.
fvOptions/sources/derived/actuationDiskSource
Actuation disk source
Constant values for momentum source for actuation disk
\f[
T = 2 \rho A U_{o}^2 a (1-a)
\f]
and
\f[
U_1 = (1 - a)U_{o}
\f]
where:
\vartable
A | disk area
U_o | upstream velocity
a | 1 - Cp/Ct
U_1 | velocity at the disk
\endvartable
Usage
Example usage:
\verbatim
actuationDiskSourceCoeffs
{
fields (U); // names of fields to apply source
diskDir (-1 0 0); // disk direction
Cp 0.1; // power coefficient
Ct 0.5; // thrust coefficient
diskArea 5.0; // disk area
upstreamPoint (0 0 0); // upstream point
}
\endverbatim
fvOptions/sources/derived/buoyancyEnergy
Calculates and applies the buoyancy energy source rho*(U&g) to the energy
equation.
Usage
Example usage:
\verbatim
buoyancyEnergyCoeffs
{
fields (h); // Name of energy field
}
\endverbatim
fvOptions/sources/derived/buoyancyForce
Calculates and applies the buoyancy force rho*g to the momentum equation
corresponding to the specified velocity field.
Usage
Example usage:
\verbatim
buoyancyForceCoeffs
{
fields (U); // Name of velocity field
}
\endverbatim
fvOptions/sources/derived/effectivenessHeatExchangerSource
Heat exchanger source model, in which the heat exchanger is defined as a
selection of cells.
The total heat exchange source is given by:
\f[
Q_t = e(\phi, \dot{m}_2) (T_2 - T_1) \phi c_p
\f]
where:
\vartable
Q_t | total heat source
e(\phi,\dot{m}_2) | effectivenes table
\phi | net mass flux entering heat exchanger [kg/s]
\dot{m}_2 | secondary mass flow rate [kg/s]
T_1 | primary inlet temperature [K]
T_2 | secondary inlet temperature [K]
c_p | specific heat capacity [J/kg/K]
\endvartable
The distribution inside the hear exchanger is given by:
\f[
Q_c = \frac{V_c |U_c| (T_c - T_{ref})}{\sum(V_c |U_c| (T_c - T_{ref}))}
\f]
where:
\vartable
Q_c | source for cell
V_c | volume of the cell [m3]
U_c | local cell velocity [m/s]
T_c | local call temperature [K]
T_{ref} | min or max(T) in cell zone depending on the sign of Q_t [K]
\endvartable
Usage
Example usage:
\verbatim
effectivenessHeatExchangerSource1
{
type effectivenessHeatExchangerSource;
active yes;
effectivenessHeatExchangerSourceCoeffs
{
selectionMode cellZone;
cellZone porosity;
secondaryMassFlowRate 1.0;
secondaryInletT 336;
primaryInletT 293;
faceZone facesZoneInletOriented;
outOfBounds clamp;
fileName "effTable";
}
}
\endverbatim
The effectiveness table is described in terms of the primary and secondary
mass flow rates. For example, the table:
secondary MFR
| 0.1 0.2 0.3
-----+-----------------
0.02 | A B C
primary MFR 0.04 | D E F
0.06 | G H I
Is specified by the following:
(
0.02
(
(0.1 A)
(0.2 B)
(0.3 C)
),
0.04
(
(0.1 D)
(0.2 E)
(0.3 F)
),
0.06
(
(0.1 G)
(0.2 H)
(0.3 I)
)
);
Note
- the table with name "fileName" should have the same units as the
secondary mass flow rate and kg/s for phi
- faceZone is the faces at the inlet of the cellzone, it needs to be
created with flip map flags. It is used to integrate the net mass flow
rate into the heat exchanger
fvOptions/sources/derived/explicitPorositySource
Explicit porosity source
Usage
Example usage, here employing the Darcy-Forchheimer model:
\verbatim
explicitPorositySourceCoeffs
{
type DarcyForchheimer;
DarcyForchheimerCoeffs
{
d d [0 -2 0 0 0 0 0] (5e7 -1000 -1000);
f f [0 -1 0 0 0 0 0] (0 0 0);
coordinateSystem
{
type cartesian;
origin (0 0 0);
coordinateRotation
{
type axesRotation;
e1 (0.70710678 0.70710678 0);
e2 (0 0 1);
}
}
}
}
\endverbatim
Note:
The porous region must be selected as a cellZone.
fvOptions/sources/derived/meanVelocityForce
Calculates and applies the force necessary to maintain the specified mean
velocity.
Note: Currently only handles kinematic pressure (incompressible solvers).
Usage
Example usage:
\verbatim
meanVelocityForceCoeffs
{
selectionMode all; // Apply force to all cells
fields (U); // Name of velocity field
Ubar (10.0 0 0); // Desired mean velocity
relaxation 0.2; // Optional relaxation factor
}
\endverbatim
fvOptions/sources/derived/meanVelocityForce/patchMeanVelocityForce
Calculates and applies the force necessary to maintain the specified mean
velocity averaged over the specified patch.
Note: Currently only handles kinematic pressure (incompressible solvers).
Usage
Example usage:
\verbatim
patchMeanVelocityForceCoeffs
{
selectionMode all; // Apply force to all cells
fields (U); // Name of velocity field
patch inlet; // Name of the patch
Ubar (10.0 0 0); // Desired mean velocity
relaxation 0.2; // Optional relaxation factor
}
\endverbatim
fvOptions/sources/derived/radialActuationDiskSource
Actuation disk source including radial thrust
Constant values for momentum source for actuation disk
\f[
T = 2 \rho A U_{o}^2 a (1-a)
\f]
and
\f[
U_1 = (1 - a)U_{o}
\f]
where:
\vartable
A | disk area
U_o | upstream velocity
a | 1 - Cp/Ct
U_1 | velocity at the disk
\endvartable
The thrust is distributed by a radial function:
\f[
thrust(r) = T (C_0 + C_1 r^2 + C_2 r^4)
\f]
Usage
Example usage:
\verbatim
actuationDiskSourceCoeffs
{
fieldName U; // name of field to apply source
diskDir (-1 0 0); // disk direction
Cp 0.1; // power coefficient
Ct 0.5; // thrust coefficient
diskArea 5.0; // disk area
coeffs (0.1 0.5 0.01); // radial distribution coefficients
upstreamPoint (0 0 0); // upstream point
}
\endverbatim
fvOptions/sources/derived/rotorDiskSource/bladeModel
Blade model class calculates:
Linear interpolated blade twist and chord based on radial position
Interpolation factor (for interpolating profile performance)
Input in list format:
data
(
(profile1 (radius1 twist1 chord1))
(profile1 (radius2 twist2 chord2))
);
where:
radius [m]
twist [deg], converted to [rad] internally
chord [m]
fvOptions/sources/derived/rotorDiskSource/profileModel/lookup
Look-up based profile data - drag and lift coefficients are lineraly
interpolated based on the supplied angle of attack
Input in list format:
data
(
(AOA1 Cd1 Cl2)
(AOA2 Cd2 Cl2)
...
(AOAN CdN CdN)
);
where:
AOA = angle of attack [deg] converted to [rad] internally
Cd = drag coefficient
Cl = lift coefficient
fvOptions/sources/derived/rotorDiskSource/profileModel
Base class for profile models
fvOptions/sources/derived/rotorDiskSource/profileModel/series
Series-up based profile data - drag and lift coefficients computed as
sum of cosine series
Cd = sum_i(CdCoeff)*cos(i*AOA)
Cl = sum_i(ClCoeff)*sin(i*AOA)
where:
AOA = angle of attack [deg] converted to [rad] internally
Cd = drag coefficent
Cl = lift coefficent
Input in two (arbitrary length) lists:
CdCoeffs (coeff1 coeff2 ... coeffN);
ClCoeffs (coeff1 coeff2 ... coeffN);
fvOptions/sources/derived/rotorDiskSource
Rotor disk source
Cell based momemtum source which approximates the mean effects of
rotor forces on a cylindrical region within the domain.
Usage
Example usage:
\verbatim
rotorDiskSourceCoeffs
{
fields (U); // names of fields on which to apply source
nBlades 3; // number of blades
tipEffect 0.96; // normalised radius above which lift = 0
inletFlowType local; // inlet flow type specification
geometryMode auto; // geometry specification
refDirection (-1 0 0); // reference direction
// - used as reference for psi angle
trimModel fixed; // fixed || targetForce
flapCoeffs
{
beta0 0; // coning angle [deg]
beta1c 0; // lateral flapping coeff (cos coeff)
beta2s 0; // longitudinal flapping coeff (sin coeff)
}
blade
{
// see bladeModel.H for documentation
}
profiles
{
profile1
{
type lookup; // lookup || series
...
// see lookupProfile.H or seriesProfile.H for documentation
}
profile2
{
...
}
}
}
\endverbatim
Where:
Valid options for the \c geometryMode entry include:
- auto : determine rototor co-ord system from cells
- specified : specified co-ord system
Valid options for the \c inletFlowType entry include:
- fixed : specified velocity
- local : use local flow conditions
- surfaceNormal : specified normal velocity (positive towards rotor)
See also
Foam::bladeModel
Foam::lookupProfile
Foam::seriesProfile
fvOptions/sources/derived/rotorDiskSource/trimModel/fixed
Fixed trim coefficients
fvOptions/sources/derived/rotorDiskSource/trimModel/targetCoeff
Target trim forces/coefficients
Solves:
c^old + J.d(theta) = c^target
Where:
n = time level
c = coefficient vector (thrust force, roll moment, pitch moment)
theta = pitch angle vector (collective, roll, pitch)
J = Jacobian [3x3] matrix
The trimmed pitch angles are found via solving the above with a
Newton-Raphson iterative method. The solver tolerance can be user-input,
using the 'tol' entry.
If coefficients are requested (useCoeffs = true), the force and moments
are normalised using:
force
c = ---------------------------------
alpha*pi*rho*(omega^2)*(radius^4)
and
moment
c = ---------------------------------
alpha*pi*rho*(omega^2)*(radius^5)
Where:
alpha = user-input conversion coefficient (default = 1)
rho = desity
omega = rotor angulr velocity
pi = mathematical pi
fvOptions/sources/derived/rotorDiskSource/trimModel/trimModel
Trim model base class
fvOptions/sources/derived/solidificationMeltingSource
This source is designed to model the effect of solidification and melting
processes, e.g. windhield defrosting. The phase change occurs at the
melting temperature, \c Tmelt.
The presence of the solid phase in the flow field is incorporated into the
model as a momentum porosity contribution; the energy associated with the
phase change is added as an enthalpy contribution.
Based on the references:
1. V.R. Voller and C. Prakash, A fixed grid numerical modelling
methodology for convection-diffusion mushy phase-change problems,
Int. J. Heat Mass Transfer 30(8):17091719, 1987.
2. C.R. Swaminathan. and V.R. Voller, A general enthalpy model for
modeling solidification processes, Metallurgical Transactions
23B:651664, 1992.
The model generates a field \c \:alpha1 which can be visualised to
to show the melt distribution as a fraction [0-1]
Usage
Example usage:
\verbatim
solidificationMeltingSource1
{
type solidificationMeltingSource;
active yes;
solidificationMeltingSourceCoeffs
{
selectionMode cellZone;
cellZone iceZone;
Tmelt 273;
L 334000;
thermoMode thermo;
beta 50e-6;
rhoRef 800;
}
}
\endverbatim
Where:
\table
Property | Description | Required | Default value
Tmelt | Melting temperature [K] | yes |
L | Latent heat of fusion [J/kg] | yes |
relax | Relaxation coefficient [0-1] | no | 0.9
thermoMode | Thermo mode [thermo|lookup] | yes |
rhoRef | Reference (solid) density | yes |
rho | Name of density field | no | rho
T | Name of temperature field | no | T
Cp | Name of specific heat capacity field | no | Cp
U | Name of velocity field | no | U
phi | Name of flux field | no | phi
Cu | Model coefficient | no | 100000
q | Model coefficient | no | 0.001
beta | Thermal expansion coefficient [1/K] | yes |
g | Accelerartion due to gravity | no |
\endtable
fvOptions/sources/derived/tabulatedAccelerationSource/tabulated6DoFAcceleration
Tabulated 6DoF acceleration.
Obtained by interpolating tabulated data for linear acceleration,
angular velocity and angular acceleration.
fvOptions/sources/derived/tabulatedAccelerationSource
Solid-body 6-DoF acceleration source
Usage
Example usage:
\verbatim
SBM
{
type tabulatedAccelerationSource;
active yes;
tabulatedAccelerationSourceCoeffs
{
timeDataFileName "constant/acceleration-terms.dat";
}
}
\endverbatim
fvOptions/sources/general/codedSource
Constructs on-the-fly fvOption source
The hook functions take the following arguments:
codeCorrect
(
GeometricField& field
)
codeAddSup
(
fvMatrix& eqn,
const label fieldi
)
constrain
(
fvMatrix& eqn,
const label fieldi
)
where :
field is the field in fieldNames
eqn is the fvMatrix
Usage
Example usage in controlDict:
\verbatim
energySource
{
type scalarCodedSource;
active yes;
scalarCodedSourceCoeffs
{
selectionMode all;
fieldNames (h);
name sourceTime;
codeInclude
#{
#};
codeCorrect
#{
Pout<< "**codeCorrect**" << endl;
#};
codeAddSup
#{
const Time& time = mesh().time();
const scalarField& V = mesh_.V();
scalarField& heSource = eqn.source();
heSource -= 0.1*sqr(time.value())*V;
#};
codeSetValue
#{
Pout<< "**codeSetValue**" << endl;
#};
// Dummy entry. Make dependent on above to trigger recompilation
code
#{
$codeInclude
$codeCorrect
$codeAddSup
$codeSetValue
#};
}
sourceTimeCoeffs
{
// Dummy entry
}
}
\endverbatim
fvOptions/sources/general/semiImplicitSource
Semi-implicit source, described using an input dictionary. The injection
rate coefficients are specified as pairs of Su-Sp coefficients, i.e.
\f[
S(x) = S_u + S_p x
\f]
where
\vartable
S(x) | net source for field 'x'
S_u | explicit source contribution
S_p | linearised implicit contribution
\endvartable
Example of the source specification:
\verbatim
SemiImplicitSourceCoeffs
{
volumeMode absolute; // specific
injectionRateSuSp
{
k (30.7 0);
epsilon (1.5 0);
}
}
\endverbatim
Valid options for the \c volumeMode entry include:
- absolute: values are given as \
- specific: values are given as \/m3
See also
Foam::fvOption
fvOptions/sources/interRegion/interRegionExplicitPorositySource
Inter-region explicit porosity source.
Sources described by, for example using the DarcyForchheimer model:
\verbatim
interRegionExplicitPorositySourceCoeffs
{
type DarcyForchheimer;
DarcyForchheimerCoeffs
{
d d [0 -2 0 0 0 0 0] (5e7 -1000 -1000);
f f [0 -1 0 0 0 0 0] (0 0 0);
coordinateSystem
{
e1 (0.70710678 0.70710678 0);
e2 (0 0 1);
}
}
}
\endverbatim
Note
The porous region must be selected as a cellZone.
fvOptions/sources/interRegion/interRegionHeatTransfer/constantHeatTransfer
Constant heat transfer model. htcConst [W/m2/K] and area/volume [1/m]
must be provided.
fvOptions/sources/interRegion/interRegionHeatTransfer/interRegionHeatTransferModel
Base class for inter region heat exchange. The derived classes must
provide the heat transfer coeffisine (htc) which is used as follows
in the energy equation.
\f[
-htc*Tmapped + Sp(htc, T)
\f]
fvOptions/sources/interRegion/interRegionHeatTransfer/tabulatedHeatTransfer
Tabulated heat transfer model. The heat exchange area per unit volume
must be provided. The 2D table returns the heat transfer coefficient
by querying the local and neighbour region velocities
fvOptions/sources/interRegion/interRegionHeatTransfer/variableHeatTransfer
Variable heat transfer model depending on local values. The area of contact
between regions (area) must be provided. The Nu number is calculated as:
Nu = a*pow(Re, b)*pow(Pr, c)
and the heat transfer coefficient as:
htc = Nu*K/ds
where:
K is the heat conduction
ds is the strut diameter
Total 31
|