Commit Graph

25190 Commits

Author SHA1 Message Date
ae708e67b5 Merge branch 'feature-lagrangian-additions' into 'develop'
Lagrangian modelling updates/new features

See merge request Development/openfoam!521
2021-12-15 10:46:57 +00:00
c4cc33b748 ENH: Added new FaceInteraction cloudFunctionObject
Enables particles to interact with mesh faces (decsribed using faceZones).

    faceInteraction1
    {
        type            faceInteraction;
        faceZones
        (
            (blockageFaces    stick)
//            (blockageFaces    escape)
//            (blockageFaces    rebound) // not applicable for this test case (!)
        );

        dMin            0;
        dMax            1;
    }

The faceZones entry is a list of (faceZoneName interactionType), where
interaction type is either stick, escape or rebound.
2021-12-15 10:46:34 +00:00
f64e2864f7 TUT: Lagrangian - added example showing moving injector 2021-12-15 10:46:34 +00:00
c754c1ccbf ENH: ConeNozzleInjection - enabled direction to change as f(time)
- Now only has the options 'point' and 'disk' (deprecated movingPoint)
  - moving state is based on the type of Function1

- The position and direction entries are Function1-types, e.g. for the 'table'
  type the entries could be:

        position        table
        (
            (  0 (0.1 0.5 0.5))
            (0.2 (0.5 0.9 0.5))
            (0.4 (0.9 0.5 0.5))
            (0.6 (0.5 0.1 0.5))

            (0.8 (0.5 0.5 0.9))
            (1.0 (0.5 0.9 0.5))
            (1.2 (0.5 0.5 0.1))
            (1.4 (0.5 0.1 0.5))

            (1.6 (0.1 0.5 0.5))
            (1.8 (0.5 0.5 0.9))
            (2.0 (0.9 0.5 0.5))
            (2.2 (0.5 0.5 0.1))
        );

        direction       table
        (
            (  0 ( 1  0  0))
            (0.2 ( 0 -1  0))
            (0.4 (-1  0  0))
            (0.6 ( 0  1  0))

            (0.8 ( 0  0 -1))
            (1.0 ( 0 -1  0))
            (1.2 ( 0  0  1))
            (1.4 ( 0  1  0))

            (1.6 ( 1  0  0))
            (1.8 ( 0  0 -1))
            (2.0 (-1  0  0))
            (2.2 ( 0  0  1))
        );
2021-12-15 10:46:34 +00:00
0260643c67 ENH: PatchInjectionModel - added new parcel initial velocity options
The parcel initial velocity can now be set using the new `velocityType`
entry, taking one of the following options:

- fixedValue   : (default) same as earlier versions, requires U0
- patchValue   : velocity set to seed patch face value
- zeroGradient : velocity set to seed patch face adjacent cell value

Example usage:

        model1
        {
            type            patchInjection;
            massTotal       1;
            SOI             0;
            parcelBasisType mass;
            patch           cylinder;
            duration        10;
            parcelsPerSecond 100;
            velocityType    patchValue;
            //velocityType    zeroGradient;
            //U0              (-10 0 0);
            flowRateProfile constant 1;
            sizeDistribution
            {
                type        normal;
                normalDistribution
                {
                    expectation 1e-3;
                    variance 1e-4;
                    minValue 1e-5;
                    maxValue 2e-3;
                }
            }
        }

See the new $FOAM_TUTORIALS/lagrangian/kinematicParcelFoam/spinningDisk tutorial
2021-12-15 10:46:34 +00:00
0e7920efc3 Merge branch 'feature-acceleration-relaxation' into 'develop'
ENH: rigidBodyMotion: new Function1-type accelerationRelaxation

See merge request Development/openfoam!520
2021-12-15 10:17:11 +00:00
208aee14af TUT: liquidFilmStepWithSprinkles: add shearStress entry 2021-12-15 10:17:04 +00:00
c47eb2fe80 TUT: replace turbulentTemperatureCoupledBaffleMixed boundary condition
The turbulentTemperatureCoupledBaffleMixed boundary condition
has been superseded by the turbulentTemperatureRadCoupledMixed condition

TUT: injectorPipe: remove an unused entry

TUT: waveMakerFlap: remove uncompressed entry
2021-12-15 10:17:04 +00:00
beea7ba62f TUT: nonOrthogonalChannel/skewnessCavity: migrate under verificationAndValidation
TUT: nonOrthogonalChannel: refactor productionRate computation (fixes #2285)
2021-12-15 10:17:04 +00:00
4c2728a45c ENH: rigidBodyMotion: new Function1-type accelerationRelaxation
TUT: floatingObject: add Function1-type accelerationRelaxation example
2021-12-15 10:17:04 +00:00
18dd013e22 Merge branch 'feature-sub-cooling-ext' into 'develop'
Additional sub-cooling heat transfer correlations for liquid H2

See merge request Development/openfoam!509
2021-12-15 10:16:49 +00:00
cd2e69923e STY: Function names and arguments order 2021-12-15 10:16:20 +00:00
e5b64f7740 ENH: Calculating L from saturation states. 2021-12-15 10:16:20 +00:00
43f904ba9c STYLE: phaseSystemModels: modernise code style
BUG: LemmertChawla: add missing write function

BUG: alphatPhaseChangeJayatillekeWallFunction:
     remove unused maxExp, Tw, and Tp objects

BUG: alphatFixedDmdtWallBoilingWallFunction: add missing ctor entries
2021-12-15 10:16:20 +00:00
50137a483d DOC: phaseSystemModels: improve header-file documentation 2021-12-15 10:16:20 +00:00
94b3e5b406 ENH: alphatBoilingWallFunction: add nucleating model
ENH: Copying alphatLiquid value to alphatVapour for boiling regimes.

When using correlations for boiling regimes the phases next to the
wall are not relevant to these. Therefore the alphat is copied
accordingly from the alphat for liquid.
Only in the sub-cooling RPI model the partition of heat flux
between vapour and liquid is considered.
2021-12-15 10:16:20 +00:00
29f2eddf80 ENH: Shirai: new TDNB model 2021-12-15 10:16:20 +00:00
63e294c55c ENH: Tatsumoto: new CHF sub-cooling model 2021-12-15 10:16:20 +00:00
c51fc0175e ENH: exponential: new nucleate flux model 2021-12-15 10:16:20 +00:00
1f0671694f ENH: Kutaledze: new nucleate flux model 2021-12-15 10:16:20 +00:00
6615699801 ENH: BreenWestwater: new film boiling model 2021-12-15 10:16:20 +00:00
17657673b2 ENH: Updating wall boiling models for new rho and Cp functions 2021-12-15 10:16:20 +00:00
f309319c06 BUG: Fixing Href for hPolynomialThermo.
Tref, Href , Sref and Pref are optional inputs to set the enthalpy
at Href for Tref. Pref is needed for the departure function EoS::H
2021-12-15 10:16:20 +00:00
13b1417710 ENH: Adding new access to basic thermo for rho and Cp 2021-12-15 10:16:20 +00:00
b18dd0cb43 Merge branch 'feature-dynamic-solvers' into 'develop'
ENH: Adding dynamic-mesh motion capabilities to various solvers

See merge request Development/openfoam!505
2021-12-15 10:16:08 +00:00
18bc876c93 ENH: rhoCentralFoam: add dynamic-mesh motion capabilities
ENH: discard rhoCentralDyMFoam by merging it with rhoCentralFoam
2021-12-15 10:15:37 +00:00
445baaf277 ENH: buoyantPimpleFoam: add dynamic-mesh motion capabilities 2021-12-15 10:15:37 +00:00
19705bdd64 ENH: buoyantBoussinesqPimpleFoam: add dynamic-mesh motion capabilities 2021-12-15 10:15:37 +00:00
ee36fe8c0f ENH: Adding optional output fields for Tdew and HR 2021-12-14 10:32:48 -08:00
bc192e249c Merge branch 'feature-propeller-info' into 'develop'
Added new propellerInfo function object

See merge request Development/openfoam!519
2021-12-14 16:45:31 +00:00
fd257cb011 TUT: propeller - added example use of propellerInfo function object 2021-12-14 16:45:03 +00:00
734a3143dc ENH: Added new propellerInfo function object
Calculates propeller performance and wake field properties.

Controlled by executeControl:
- Propeller performance
  - Thrust coefficient, Kt
  - Torque coefficient, 10*Kq
  - Advance coefficient, J
  - Open water efficiency, etaO
  - Written to postProcessing/<name>/<time>/propellerPerformance.dat

Controlled by writeControl:
- Wake field text file
  - Wake: 1 - UzMean/URef
  - Velocity in cylindrical coordinates at xyz locations
  - Written to postProcessing/<name>/<time>/wake.dat
- Axial wake field text file
  - 1 - Uz/URef at r/R and angle
  - Written to postProcessing/<name>/<time>/axialWake.dat
- Velocity surface
  - Written to postProcessing/<name>/surfaces/time>/disk.<fileType>

Usage

    Example of function object specification:
    \verbatim
    propellerInfo1
    {
        type            propellerInfo;
        libs            (forces);
        writeControl    writeTime;

        patches         ("propeller.*");

        URef            5; // Function1 type; 'constant' form shown here
        rho             rhoInf; // incompressible
        rhoInf          1.2;

        // Optionally write propeller performance data
        writePropellerPerformance yes;

        // Propeller data:

        // Radius
        radius          0.1;

        rotationMode    specified; // specified | MRF

        // rotationMode = specified:
        origin          (0 -0.1 0);
        n               25.15;
        axis            (0 1 0);

        // Optional reference direction for angle (alpha) = 0
        alphaAxis       (1 0 0);

        //// rotationMode = mrf
        //// MRF             MRFZoneName;
        //// (origin, n and axis retrieved from MRF model)

        // Optionally write wake text files
        // Note: controlled by writeControl
        writeWakeFields yes;

        // Sample plane (disk) properties
        // Note: controlled by writeControl
        sampleDisk
        {
            surfaceWriter   vtk;
            r1              0.05;
            r2              0.2;
            nTheta          36;
            nRadial         10;
            interpolationScheme cellPoint;
            errorOnPointNotFound false;
        }
    }
    \endverbatim

    Where the entries comprise:
    \table
        Property        | Description                   | Required | Deflt value
        type            | Type name: propellerInfo      | yes      |
        log             | Write to standard output      | no       | no
        patches         | Patches included in the forces calculation | yes |
        p               | Pressure field name           | no       | p
        U               | Velocity field name           | no       | U
        rho             | Density field name            | no       | rho
        URef            | Reference velocity            | yes      |
        rotationMode    | Rotation mode (see below)     | yes      |
        origin          | Sample disk centre            | no*      |
        n               | Revolutions per second        | no*      |
        axis            | Propeller axis                | no*      |
        alphaAxis       | Axis that defines alpha=0 dir | no       |
        MRF             | Name of MRF zone              | no*      |
        originOffset    | Origin offset for MRF mode    | no       | (0 0 0)
        writePropellerPerformance| Write propeller performance text file | yes |
        writeWakeFields | Write wake field text files   | yes      |
        surfaceWriter   | Sample disk surface writer    | no*      |
        r1              | Sample disk inner radius      | no       | 0
        r2              | Sample disk outer radius      | no*      |
        nTheta          | Divisions in theta direction  | no*      |
        nRadial         | Divisions in radial direction | no*      |
        interpolationScheme | Sampling interpolation scheme | no* | cell
    \endtable

Note
- URef is a scalar Function1 type, i.e. supports constant, table, lookup values
- rotationMode is used to set the origin, axis and revolutions per second
  - if set to 'specified' all 3 entries are required
    - note: origin is the sample disk origin
  - if set to 'MRF' only the MRF entry is required
    - to move the sample disk away from the MRF origin, use the originOffset
- if writePropellerPerformance is set to on|true:
  - propellerPerformance text file will be written
- if writeWakeFields is set to on|true:
  - wake and axialWake text files will be written
- if the surfaceWriter entry is set, the sample disk surface will be written
  - extents set according to the r1 and r2 entries
  - discretised according to the nTheta and nRadial entries
2021-12-14 16:45:03 +00:00
692734bc69 BUG: Consistent addition of coefficients on mappedPAtch. Fixes #2294 2021-12-13 14:04:40 -08:00
7438aa6c01 Merge branch 'feature-interIsoFoam-update' into 'develop'
Update of interIsoFoam and isoAdvection extending to work with porous media

See merge request Development/openfoam!511
2021-12-13 17:11:34 +00:00
7b6572b483 ENH: geometricVoF: added profiling 2021-12-13 17:09:10 +00:00
5fa2bc030d TUT: discInConstantPorousFlow/porousDamBreak: new tutorials for interIsoFoam
TUT: create verificationAndValidation/multiphase
     directory and migrate StefanProblem into this
2021-12-13 17:09:10 +00:00
b7af3ff891 TUT: interIsoFoam: remove redundant entries 2021-12-13 17:09:10 +00:00
0bf7758dd4 ENH: interIsoFoam/isoAdvection: new porosity extension
Co-authored-by: Niels Gjøl Jacobsen <>
Co-authored-by: Konstantinos Missios <>
Co-authored-by: Henning Scheufler <henning.scheufler@dlr.de>
Co-authored-by: Johan Roenby <johan.roenby@gmail.com>
2021-12-13 17:09:10 +00:00
d2c1eac501 Merge branch 'feature-age-comfort' into 'develop'
INT: age/comfort: New field function objects

See merge request Development/openfoam!512
2021-12-13 17:07:00 +00:00
97081969b4 INT: comfortHotRoom: new tutorial for age and comfort function objects 2021-12-13 17:04:53 +00:00
923e8103dc INT: age/comfort: add new field function objects 2021-12-13 17:04:53 +00:00
7419b0bf98 ENH: heatTransferCoeff function object - use ::he(p,T) instead of ::he() 2021-12-13 14:37:47 +00:00
644bd11a93 BUG: GAMG: manual processorAgglomerator incorrect input. See #2281. 2021-12-13 14:24:53 +00:00
eb3c806ff9 COMP: dynamicCode: add missing default constructor
Used copy constructor for dictionary. Probably not
necessary.
2021-12-13 13:20:04 +00:00
818a5c3dc2 BUG: swirlFanVelocity: incorrect writing. Fixes #2298. 2021-12-13 09:26:48 +00:00
c46216e645 COMP: Added missed file 2021-12-10 15:43:22 +00:00
7da2a5e096 ENH: redistributePar: reconstruct mode in collated. Fixes #2194 2021-12-10 15:24:04 +00:00
33b2e0df3d Merge branch 'feature-fvExpressionField' into 'develop'
New "exprField" function object

See merge request Development/openfoam!516
2021-12-10 14:46:33 +00:00
8d4ad0438d ENH: add exprField function object
- provides a simple means of defining/modifying fields. For example,

  ```
  <name1>
  {
      type    exprField;
      libs    (fieldFunctionObjects);
      field   pTotal;

      expression  "p + 0.5*(rho*magSqr(U))";
      dimensions  [ Pa ];
  }
  ```
  It is is also possible to modify an existing field.
  For example, to modify the previous one.
  ```
  <name2>
  {
      type    exprField;
      libs    (fieldFunctionObjects);
      field   pTotal;
      action  modify;

      // Static pressure only in these regions
      fieldMask
      #{
          (mag(pos()) < 0.05) && (pos().y() > 0)
       || cellZone(inlet)
      #};
      expression  "p";
  }
  ```

  To use as a simple post-process calculator, simply avoid storing the
  result and only generate on write:
  ```
  <name2>
  {
      store            false;
      executionControl none;
      writeControl     writeTime;
      ...
  }
  ```
2021-12-10 14:46:21 +00:00
a6cbfcb9ba STYLE: qualify expression debug flags
- for debug/tracing handle the following keywords:

   * debug.driver   (was "debugBaseDriver")
   * debug.scanner  (was "debugScanner")
   * debug.parser   (was "debugParser")
2021-12-10 14:46:21 +00:00