Commit Graph

17013 Commits

Author SHA1 Message Date
77a5e574af COMP: fully qualify IListStream parameter (fixes #1521)
- stops clang-9 error of List being constrained by private inheritance
2019-12-15 12:53:28 +01:00
01b4519f27 ENH: added weightedFlux interpolation scheme (#1388)
- This scheme is useful to calculate the face interpolation values for
  the Gauss gradient when the diffussion coefficient is discontinuous
  across a face. This sheme is used for Gauss grad.
2019-09-24 10:52:01 +02:00
75ba4a07ef STYLE: consistent quoting for 'cd' 2019-12-14 13:34:48 +01:00
33e0c4ba88 ENH: improve expression string expansions
- reuse more of stringOps expansions to reduce code and improve the
  syntax flexiblity.

  We can now embed "pre-calculated" values into an expression.
  For example,

       angle       35;
       valueExpr   "vector(${{cos(degToRad($angle))}}, 2, 3)";

  and the ${{..}} will be evaluated with the regular string evaluation
  and used to build the entire expression for boundary condition
  evaluation.

  Could also use for fairly wild indirect referencing:

       axis1   (1 0 0);
       axis2   (0 1 0);
       axis3   (0 0 1);
       index   100;
       expr   "$[(vector) axis${{ ($index % 3) +1 }}] / ${{max(1,$index)}}";
2019-12-14 00:11:28 +01:00
b63721f8bc Merge branch 'feature-proudmann-fo' into 'develop'
ENH: Added new function object to compute the Proudman acoustic power

See merge request Development/openfoam!303
2019-12-13 20:04:26 +00:00
30fe28ee8e ENH: Added new function object to compute the Proudman acoustic power
Calculates the acoustic power due to the volume of isotropic turbulence
using Proudman's formula

The acoustic power \f$ P_A \f$ [W/m3] in terms of turbulence \f$ k \f$
and \f$ \epsilon \f$ is given as:

    \f[
        P_A = alpha_\epsilon \rho \epsilon M_t^5
    \f]

where \f$ alpha_\epsilon \f$ is a constant (0.1) and

    \f[
        M_t = \frac{\sqrt{2 k}}{a_0}
    \f]

with \f$ a_0 \f$ the speed of sound.  The acoustic power is also output in
dB using:

    \f[
        L_P = 10 \log \frac{P_A}{P_ref}
    \f]

where \f$ P_ref \f$ is a constant (1e-12 W/m3)

Usage
    Example of function object specification to calculate the Proudman acoustic
    power

    proudmanAcousticPower1
    {
        type        proudmanAcousticPower;
        libs        ("libfieldFunctionObjects.so");
        ...

        // Required additional entries for incompressible calculations
        rhoInf      1.225;
        aRef        340;
    }

    Where the entries comprise:
        Property     | Description                 | Required   | Default value
        type         | type name: proudmanAcousticPower         | yes        |
        rhoInf       | Freestream density for incompressible cases  | no |
        aRef         | Reference spped of sound for incompressible cases | no |
        alphaEps     | Model coefficient           | no         | 0.1

Note
- The freestream density and reference speed of sound are only necessary
  when a thermodynamics package is unavailable, typically for incompressible
  cases.
2019-12-11 21:37:39 +00:00
b87ea76fc1 ENH: relocate findMinData/findMaxData to FieldOps namespace 2019-12-13 17:04:20 +01:00
6ce3e0bd67 BUG: expression BCs missing their variables on output 2019-12-13 15:49:25 +01:00
db8a840459 COMP: BFGS and SR1 failed to compile with SP
- Failed due to double*Matrix<float> multiplication.

Style changes

- use SquareMatrix with Identity on construction

- use Zero in constructors

- remove trailing space and semi-colons
2019-12-12 11:40:01 -05:00
8ece5f7aae BUG: string expand swallowing '$(..)' construct
- this regression caused dynamic code with includes to fail since they
  often have -I$(LIB_SRC)/...  content
2019-12-13 14:17:32 +01:00
7aa2bf832f STYLE: header format 2019-12-13 12:33:23 +01:00
17d9969ae5 ENH: stringOps::findTrim helper
- finds beg/end indices of string trimmed of leading/trailing whitespace
2019-12-13 12:10:53 +01:00
b61d4ab488 STYLE: adjust deprecations for OSspecific
- skip processing OSspecific/MSwindows since this can cause duplicate
  doxygen entries

STYLE: adjust formatting in code templates

STYLE: use std::string methods without extra qualifications
2019-12-13 11:08:12 +01:00
370c8a39af ENH: additional feedback about controlled mesh motion update type
- ensure that the updateControl is "non-sticky" on re-read,
  even if we do not support runtime-modifiable here

STYLE: add syntax example (wingMotion), but with updateInterval 1
2019-12-13 10:53:56 +01:00
49ed79d537 ENH: improve some timeControl handling
- synchronize the scalar interval value with the integer version.
  This ensures that the interval() method returns the correct
  representative value.

- added clear() method to reset to 'always' (pass-through)
2019-12-13 10:53:56 +01:00
b502086a29 Revert "string trim"
This reverts commit 677e314279.
2019-12-13 10:53:40 +01:00
677e314279 string trim 2019-12-13 10:05:28 +01:00
373ad6df0e ENH: additional feedback about controlled mesh motion update type
- ensure that the updateControl is "non-sticky" on re-read,
  even if we do not support runtime-modifiable here

STYLE: add syntax example (wingMotion), but with updateInterval 1
2019-12-13 10:02:57 +01:00
e90de78cac ENH: add timeControl clear() method to reset to 'always' (pass-through) 2019-12-13 10:02:41 +01:00
042c529f9f Merge branch 'feature-adjoint-shapeOptimisation' into 'develop'
ENH: New adjont shape optimisation functionality

See merge request Development/openfoam!307
2019-12-12 14:18:20 +00:00
b863254308 ENH: New adjont shape optimisation functionality
The adjoint library is enhanced with new functionality enabling
automated shape optimisation loops.  A parameterisation scheme based on
volumetric B-Splines is introduced, the control points of which act as
the design variables in the optimisation loop [1, 2].  The control
points of the volumetric B-Splines boxes can be defined in either
Cartesian or cylindrical coordinates.

The entire loop (solution of the flow and adjoint equations, computation
of sensitivity derivatives, update of the design variables and mesh) is
run within adjointOptimisationFoam. A number of methods to update the
design variables are implemented, including popular Quasi-Newton methods
like BFGS and methods capable of handling constraints like loop using
the SQP or constraint projection.

The software was developed by PCOpt/NTUA and FOSS GP, with contributions from

Dr. Evangelos Papoutsis-Kiachagias,
Konstantinos Gkaragounis,
Professor Kyriakos Giannakoglou,
Andy Heather

[1] E.M. Papoutsis-Kiachagias, N. Magoulas, J. Mueller, C. Othmer,
K.C.  Giannakoglou: 'Noise Reduction in Car Aerodynamics using a
Surrogate Objective Function and the Continuous  Adjoint Method with
Wall Functions', Computers & Fluids, 122:223-232, 2015

[2] E. M. Papoutsis-Kiachagias, V. G. Asouti, K. C. Giannakoglou,
K.  Gkagkas, S. Shimokawa, E. Itakura: ‘Multi-point aerodynamic shape
optimization of cars based on continuous adjoint’, Structural and
Multidisciplinary Optimization, 59(2):675–694, 2019
2019-12-12 14:17:29 +00:00
a8ab9b8796 CONFIG: prefer use of ParaView_MESA_DIR in runTimePostProcessing
- when using VTK from ParaView sources it can better to tag them as
  such, but simultaneously not mask the ParaView with hardware
  rendering.

  The additional ParaView_MESA_DIR variable allows this.
  The balance of library and path setup is unaffected by this.

DOC: update doc/BuildIssues
2019-12-12 14:29:59 +01:00
455c619edc STYLE: typo in doc 2019-12-12 14:07:17 +01:00
ff995c5d53 COMP: Resolved compiler warning in evalEntry 2019-12-12 12:39:47 +00:00
8225733399 BUG: fix kkLOmega model - omegaWallFunction inconsistency (#1484)
- `Pkt` was directed to `GName` to allow wall functions
     are usable by kkLOmega model
  - `Pkt` was changed to a non-const object, so that omegaWallFunc
    can modify `Pkt` at the wall, if need be.
  - Elementwise backward compatibility was checked by
    pimpleFoam/RAS/ellipsekkLOmega
  - New implementation was checked by changing omega:hole boundary
    in pimpleFoam/RAS/ellipsekkLOmega to omegaWallFunction
2019-12-12 11:24:47 +00:00
af0e454ccf BUG: fix QRMatrix (#1261, #1240)
QRMatrix (i.e. QR decomposition, QR factorisation or orthogonal-triangular
    decomposition) decomposes a scalar/complex matrix \c A into the following
    matrix product:

    \verbatim
        A = Q*R,
    \endverbatim

    where
     \c Q is a unitary similarity matrix,
     \c R is an upper triangular matrix.

Usage
    Input types:
     - \c A can be a \c SquareMatrix<Type> or \c RectangularMatrix<Type>

    Output types:
     - \c Q is always of the type of the matrix \c A
     - \c R is always of the type of the matrix \c A

    Options for the output forms of \c QRMatrix (for an (m-by-n) input matrix
    \c A with k = min(m, n)):
     - outputTypes::FULL_R:     computes only \c R                   (m-by-n)
     - outputTypes::FULL_QR:    computes both \c R and \c Q          (m-by-m)
     - outputTypes::REDUCED_R:  computes only reduced \c R           (k-by-n)

    Options where to store \c R:
     - storeMethods::IN_PLACE:        replaces input matrix content with \c R
     - storeMethods::OUT_OF_PLACE:    creates new object of \c R

    Options for the computation of column pivoting:
     - colPivoting::FALSE:            switches off column pivoting
     - colPivoting::TRUE:             switches on column pivoting

    Direct solution of linear systems A x = b is possible by solve() alongside
    the following limitations:
     - \c A         = a scalar square matrix
     - output type  = outputTypes::FULL_QR
     - store method = storeMethods::IN_PLACE

Notes
    - QR decomposition is not unique if \c R is not positive diagonal \c R.
    - The option combination:
      - outputTypes::REDUCED_R
      - storeMethods::IN_PLACE
      will not modify the rows of input matrix \c A after its nth row.
    - Both FULL_R and REDUCED_R QR decompositions execute the same number of
      operations. Yet REDUCED_R QR decomposition returns only the first n rows
      of \c R if m > n for an input m-by-n matrix \c A.
    - For m <= n, FULL_R and REDUCED_R will produce the same matrices
2019-12-12 11:22:14 +00:00
3afc352757 ENH: add threshold for the number of warnings in MatrixTools::equal() 2019-12-12 11:22:14 +00:00
3a5ad7eed7 ENH: add identity matrix constructor to RectangularMatrix 2019-12-12 11:22:14 +00:00
64614cfce8 ENH: add new funcs into SquareMatrix
- query func `symmetric()`
    - query func `tridiagonal()`
    - `resize()`
    - `labelpair` identity constructor

    STYLE: add `#if(0 | RUNALL)` to improve test control in Test-Matrix
2019-12-12 11:22:13 +00:00
be235787cf DOC: add missing tags into Stokes.H (#1509)
STYLE: add missing comment dashes, DOI
  DOC: add DOI into WatersKing.C
2019-12-12 11:22:13 +00:00
fa57b4e45e ENH: adjust dynamicFvMesh to support controllable mesh motion updates 2019-12-11 20:12:49 +00:00
280be6312c ENH: update handling of "writeTime" in timeControl class
- handle zero or negative values as being identical to 1.
  As per timeStep control and what the comments suggested.

- drop old outputTime enumeration, since this is covered by the
  writeTime enumeration and a corresponding Enum name.

- support construction of a "pass-through" control object that always
  executes and add some method to test for these conditions and be able
  to output some meaning full information.
  Eg,

     if (ctrl.execute())
     {
         if (!ctrl.always())
         {
             Info<< "Sampling executed based on " << ctrl.type() << nl;
         }
         ...
     }

     To produce "Sampling executed based on runTime"
2019-12-12 09:09:50 +01:00
eb4fec371a ENH: unified some common parser static methods
COMP: delay evaluation of fieldToken enumeration types

- lazy evaluation at runTime instead of compile-time to make the code
  independent of initialization order.
  Otherwise triggers problems on gcc-4.8.5 on some systems where
  glibc is the same age, or older.
2019-12-11 13:32:36 +01:00
622808c7d0 ENH: add empty() member for Enum 2019-12-11 13:18:01 +01:00
e247e06381 ENH: ITstream single token append method
- remove/fully deprecated newElmt in next release
2019-12-11 10:21:22 +01:00
d1d567a90f STYLE: flush newline in blockMesh feedback 2019-12-11 09:43:47 +01:00
ef59289405 Merge branch 'feature-bcs-scaledFixedValue' into 'develop'
ENH: Added new scaledFixedValue boundary condition

See merge request Development/openfoam!302
2019-12-11 10:45:30 +00:00
6709f3ef6f ENH: Added new limitFields function object
Limits fields to user-specified min and max bounds

Usage
Example of function object specification:

    limitFields1
    {
        type        limitFields;
        libs        ("libfieldFunctionObjects.so");
        ...
        fields      (U);
        limit       max;
        max         100;
    }

Where the entries comprise:
    Property     | Description                 | Required | Default
    type         | type name: limitFields      | yes |
    fields       | list of fields to process   | yes |
    limit        | bound to limit - see below  | yes |
    min          | min limit value             | partly |
    max          | max limit value             | partly |

The "limit" entry can take the value:
- min : specify a minimum value
- max : specify a maximum value
- both : specify a minimum value and a maximum value
2019-12-10 11:04:20 +00:00
e1a7c0ed1d ENH: Particle PatchPostProcessing - enable users to filter particle property output
The optional 'fields' entry can be used to limit which particle fields are
written to file.  If empty/not specified, all properties are written to
maintain backwards compatibility.

    patchPostProcessing1
    {
        type            patchPostProcessing;
        maxStoredParcels 20;
        fields          (position "U.*" d T nParticle);
        patches
        (
            cycLeft_half0
            cycLeft_half1
        );
    }
2019-12-09 23:31:01 +00:00
6748f10d5d ENH: Lagrangian - added particle output to stream functions 2019-12-09 23:21:53 +00:00
deeb27896c ENH: Added option to write particle patch interactions to file
File writing is off by default; to activate, add to the patch interaction model
coeff dictionary

    writeToFile yes;
2019-12-09 22:31:09 +00:00
b576f9dcc7 ENH: subModelBase - added localPath() helper function for file writing 2019-12-06 22:05:02 +00:00
07ff2a2828 ENH: Added new scalarFixedValue boundary condition
This condition applies a scalar multiplier to the value of another
boundary condition.

Usage
    Property     | Description             | Required    | Default value
    scale        | Time varing scale       | yes         |
    patch        | patchField providing the raw patch value | yes |

Example of the boundary condition specification to scale a reference
velocity of (15 0 0)  supplied as a fixedValue by a table of values
that ramps the scale from 0 to 1 over 1 second:

    <patchName>
    {
        type            scaledFixedValue;

        scale table
        (
            (    0   0)
            (  1.0 1.0)
            (100.0 1.0)
        );

        patch
        {
            type            fixedValue;
            value           uniform (15 0 0);
        }
    }
2019-12-06 21:15:56 +00:00
5d7d24df94 GIT: Housekeeping 2019-12-06 17:43:08 +00:00
ae3a595b60 ENH: consistent and less ambiguous naming for fileStat 2019-12-06 17:43:04 +00:00
4030ed4543 ENH: strip C/C++ comments from expressions by default 2019-12-06 16:15:07 +01:00
ec2c014980 ENH: improve space handling for removeComments
- include the trailing newline for the "// comment" form, but also add
  in leading space removal. This ensure that we do not introduce odd
  indentation, while also eliminating lines that are solely C++
  comments.
2019-12-06 16:15:07 +01:00
7e8fb96d33 STYLE: output consistency for exprResult entry 2019-12-06 16:15:07 +01:00
68de05285a ENH: suppress keyword indentation when keyword is empty (List, Field)
- output the "uniform", "nonuniform" Field entry tags as words instead
  of raw character strings, which can help for direct tokenization or
  when sending/receiving via Pstreams.
2019-12-06 16:15:07 +01:00
dac0dd137e ENH: relocate/rename expression-related ops to exprOps 2019-12-06 16:15:07 +01:00