1. 15 Dec, 2019 1 commit
  2. 14 Dec, 2019 3 commits
  3. 13 Dec, 2019 6 commits
  4. 12 Dec, 2019 1 commit
  5. 13 Dec, 2019 10 commits
  6. 12 Dec, 2019 16 commits
    • Andrew Heather's avatar
      Merge branch 'feature-adjoint-shapeOptimisation' into 'develop' · 042c529f
      Andrew Heather authored
      ENH: New adjont shape optimisation functionality
      See merge request !307
    • Vaggelis Papoutsis's avatar
      ENH: New adjont shape optimisation functionality · b8632543
      Vaggelis Papoutsis authored
      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
    • Mark Olesen's avatar
      CONFIG: prefer use of ParaView_MESA_DIR in runTimePostProcessing · a8ab9b87
      Mark Olesen authored
      - when using VTK from ParaView sources it can better to tag them as
        such, but simultaneously not mask the ParaView with hardware
        The additional ParaView_MESA_DIR variable allows this.
        The balance of library and path setup is unaffected by this.
      DOC: update doc/BuildIssues
    • Mark Olesen's avatar
      STYLE: typo in doc · 455c619e
      Mark Olesen authored
    • Andrew Heather's avatar
    • Andrew Heather's avatar
      Merge branch 'misc-kbc' into 'develop' · 58b02969
      Andrew Heather authored
      ENH|BUG: Misc
      See merge request !305
    • Kutalmis Bercin's avatar
      BUG: fix kkLOmega model - omegaWallFunction inconsistency (#1484) · 82257333
      Kutalmis Bercin authored
        - `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
        - New implementation was checked by changing omega:hole boundary
          in pimpleFoam/RAS/ellipsekkLOmega to omegaWallFunction
    • Kutalmis Bercin's avatar
      BUG: fix QRMatrix (#1261, #1240) · af0e454c
      Kutalmis Bercin authored
          QRMatrix (i.e. QR decomposition, QR factorisation or orthogonal-triangular
          decomposition) decomposes a scalar/complex matrix \c A into the following
          matrix product:
              A = Q*R,
           \c Q is a unitary similarity matrix,
           \c R is an upper triangular matrix.
          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
          - 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
    • Kutalmis Bercin's avatar
    • Kutalmis Bercin's avatar
    • Kutalmis Bercin's avatar
      ENH: add new funcs into `SquareMatrix` · 64614cfc
      Kutalmis Bercin authored
          - query func `symmetric()`
          - query func `tridiagonal()`
          - `resize()`
          - `labelpair` identity constructor
          STYLE: add `#if(0 | RUNALL)` to improve test control in Test-Matrix
    • Kutalmis Bercin's avatar
    • Kutalmis Bercin's avatar
    • Kutalmis Bercin's avatar
      DOC: add missing tags into Stokes.H (#1509) · be235787
      Kutalmis Bercin authored
        STYLE: add missing comment dashes, DOI
        DOC: add DOI into WatersKing.C
    • Mark Olesen's avatar
      Merge branch 'feature-mesh-update-controls' into 'develop' · 55c880b7
      Mark Olesen authored
      Feature mesh update controls
      See merge request !306
    • Mark Olesen's avatar
      ENH: update handling of "writeTime" in timeControl class · 280be631
      Mark Olesen authored
      - 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.
           if (ctrl.execute())
               if (!ctrl.always())
                   Info<< "Sampling executed based on " << ctrl.type() << nl;
           To produce "Sampling executed based on runTime"
  7. 11 Dec, 2019 3 commits
    • Andrew Heather's avatar
      ENH: Added new function object to compute the Proudman acoustic power · 30fe28ee
      Andrew Heather authored
      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:
              P_A = alpha_\epsilon \rho \epsilon M_t^5
      where \f$ alpha_\epsilon \f$ is a constant (0.1) and
              M_t = \frac{\sqrt{2 k}}{a_0}
      with \f$ a_0 \f$ the speed of sound.  The acoustic power is also output in
      dB using:
              L_P = 10 \log \frac{P_A}{P_ref}
      where \f$ P_ref \f$ is a constant (1e-12 W/m3)
          Example of function object specification to calculate the Proudman acoustic
              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
      - The freestream density and reference speed of sound are only necessary
        when a thermodynamics package is unavailable, typically for incompressible
    • Andrew Heather's avatar
      ENH: add selectable update control/interval to pimpleFoam, rhoPimpleFoam · 87bba9ae
      Andrew Heather authored
      - Allows user-defined control of when the mesh motion occurs,
        which can be especially useful in situations where the mesh motion
        is much slower than any of the fluid physics.
        For example, in constant/dynamicMeshDict:
            updateControl   runTime;
            updateInterval  0.5;
        to have mesh motion triggered every 1/2 second.
        Note that the _exact_ time that the mesh motion actually occurs may
        be slightly differently since the "runTime" triggering is fuzzy in
        nature. It will trigger when the threshold has been crossed, which
        will depend on the current time-step size.
    • Andrew Heather's avatar