fvOptions リスト

2016年12月10日

はじめに

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