Compare commits

...

1528 Commits

Author SHA1 Message Date
a8c2e99dc4 CONFIG: updated completion_cache 2017-12-30 21:16:17 +00:00
f26eae84d5 Merge remote-tracking branch 'origin/develop' 2017-12-30 20:30:18 +00:00
c217800a74 TUT: minor update to div scheme test 2017-12-30 20:29:13 +00:00
85533e0d5b STYLE: Updated README 2017-12-30 20:04:26 +00:00
4287c91573 SUBMODULE: cfmesh update for v1712 2017-12-30 09:32:23 +00:00
23af7e435a ENH: FFT - removed power-of-2 constraint on number of samples 2017-12-29 23:57:22 +00:00
6f72f3452d BUG: foamToVTK - only convert finte area if -finiteAreaFields option is specified. Fixes #687 2017-12-29 23:50:10 +00:00
3b84004098 ENH: epsilonWallFunction - enable low-Re mode to be [de]activated on a
switch

The new lowReCorrection entry can be used to ensure that the low-Re
mode is only applied when its value is on/true, e.g.

    lowReCorrection      on;

When active, the low-Re mode is active when the local y+ is less than
the calculated y+_laminar.  When inactive, the high-Re form is employed
irrespectively of the local y+.

It has a defaulrt value of off/false for backwards compatibility with
OpenFOAM v1706
2017-12-29 20:48:32 +00:00
59caad90b9 BUG: decomposeParDict: missing coeffs 2017-12-28 13:49:58 +00:00
abb332df6d BUG: surfaceRedistributePar: hang in collated. See #686. 2017-12-28 12:45:49 +00:00
65833e6c22 BUG: pressure: generate calculated bcs early. Fixes #685. Ep 581. 2017-12-28 12:07:37 +00:00
08e6eca301 ENH: sampledTriSurfaceMesh: add warning about surface completely outside. Fixes #575. 2017-12-27 10:58:37 +00:00
fb152bd9c9 COMP: Added missing make/files entries. Fixes #682 2017-12-26 23:16:06 +00:00
9eb00fde2c BUG: Fixing creating of turbulence after overset specific in createFields.H for overRhoPimpleDyMFoam 2017-12-22 12:53:40 -08:00
8a5a50cac3 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-12-22 11:17:31 -08:00
737a05736d BUG: Following commit eeafddfb3b2e392a7 for bug repor`t https://bugs.openfoam.org/view.php?id=2777 2017-12-22 11:15:29 -08:00
5a5c286a8b ENH: Correcting fvSchemes/fvSolution for sloshingTank2D 2017-12-22 11:06:08 -08:00
38d13f41f3 ENH: Added new heat transfer coefficient function object
Computes the heat transfer coefficient [W/m2/K] using a run-time
selectable model:
- ReynoldsAnalogy
- fixedReferenceTemperature
- localReferenceTemperature
2017-12-22 19:00:25 +00:00
b85a38dc41 INT: streamFunction wave model updates 2017-12-22 17:06:42 +00:00
ac20f63cfc BUG: - continuation of commit 3b70a82bb 2017-12-22 15:27:37 +00:00
d1c80c59cc MODULE: update for avalanche 2017-12-22 16:26:09 +01:00
66f473b11c ENH: Updated extractEulerianParticles and deps after change to barycentric tracking 2017-12-22 13:19:41 +00:00
e60a77442c STYLE: less verbose output of available procs in redistributePar 2017-12-22 12:50:55 +01:00
3787d45c12 BUG: decomposePar -decomposeParDict fails for faMesh (closes #680)
- was using system/decomposeParDict and ignoring the command-line
  option.
2017-12-22 12:28:39 +01:00
1eaa024a08 BUG: Change the calculation of dgdt term in the pEq plus reverting compressible pEqComp until
further investigation on the consequences on dynamic mesh for compressibleInterDyMFoam.
alphaSuSp.H has to be added in the solver folder in order to make it compatible with the alpha Eq.
2017-12-21 17:08:33 -08:00
1d77b78418 ENH: changing endTime for sonicFoam/RAS/nacaAirfoil
Fixing fvOption in multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection
2017-12-21 12:53:10 -08:00
3951cca2b1 BUG: Changing sign for the radiative flux for the wallHeatFlux FO.
NOTE: The radiative flux (qr) is positive when the heat flux is going into the wall,
this is oposite the the he flux which is positive going out of the wall.
2017-12-21 09:33:45 -08:00
0b4a97bce5 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-12-21 09:15:21 -08:00
5a3dfc60b6 BUG: Adding cellMask to constrainHbyA in pEq.H 2017-12-21 09:13:54 -08:00
576a226dbe BUG: Correcting HbyA constrain with cellMask in pEq.H 2017-12-21 07:37:40 -08:00
cc2e9cb404 CONFIG: update submodules for 64-bit build 2017-12-21 16:34:24 +01:00
ab9c70c050 COMP: single-precision compilation with FFT (closes #678) 2017-12-21 16:04:13 +01:00
9c38ad6ae4 TUT: relocate tutorial log analysis as functions for reuse in modules
- removed some unneeded tutorial files
2017-12-21 14:17:20 +01:00
2fe7d0c00b STYLE: update BuildIssues with CGAL mpfr-none problem (issue #674)
- add some notes about 'git submodule' in modules/README.md
2017-12-21 10:38:57 +01:00
bd181f9a6c BUG: lagrangian - corrected references to position() 2017-12-19 21:25:12 +00:00
e97275cf12 ENH: collated support. Fixes createZeroDirectory in #675. 2017-12-21 15:05:10 +00:00
8931e443d8 ENH: collated support. Fixes lumpedPointMotion in #675. 2017-12-21 14:53:16 +00:00
2967be7d4d ENH: fileHandler support. Fixes channel395DFSEM in #675. 2017-12-21 14:25:13 +00:00
d259402e40 GIT: .foam: left over 2017-12-21 13:03:52 +00:00
774dcadb65 BUG: cellCuts: incorrect correspondence. Fixes #670. 2017-12-21 13:00:44 +00:00
351fa4f979 TUT: updated sonicFoam case (see #677) 2017-12-21 11:16:28 +00:00
e7b15d21dd Merge branch 'feature-noise-fft' into 'develop'
Updated noise fft handling via fftw

See merge request Development/OpenFOAM-plus!186
2017-12-21 10:19:53 +00:00
929ed3ca02 ENH: New deferred correction scheme
The characteristics of the base scheme are recovered by applying an
explicit correction to the upwind scheme weights.

Usage
    Example of the \c deferredCorrection scheme applied to the \c linear
    scheme:
    \verbatim
    divSchemes
    {
        .
        .
        div(phi,U)      Gauss deferredCorrection linear;
        .
        .
    }
    \endverbatim

Based on a generalised form of a deferred correction linear scheme
supplied by CFD Software E+F GmbH
2017-12-21 09:03:19 +00:00
90a9cd06c7 ENH: Constructing coeff volScalarField with 'calculated' Bc's for compressible flow to
avoid unphysical 'fixedValue' at boundaries
2017-12-20 10:58:42 -08:00
b14e7b794d COMP: Updated initialisation order 2017-12-20 17:16:22 +00:00
e7d9a1accf ENH: Changing BC for U to slip 2017-12-20 08:32:53 -08:00
feb11e4a39 BUG: UIPstream: sending zero sized string accesses beyond buffer. Fixes #676 2017-12-20 15:28:20 +00:00
276cef6aba ENH: kOmegaSST - added turbulence decay control terms
Based on the reference:
      Spalart, P. R. and Rumsey, C. L. (2007).
      Effective Inflow Conditions for Turbulence Models in Aerodynamic
      Calculations
      AIAA Journal, 45(10), 2544 - 2553.

The decay control default is off for backwards compatibility.  To enable
it, add the following to the coefficients dictionary

      // Optional decay control
      decayControl    yes;
      kInf            \<far-field k value\>;
      omegaInf        \<far-field omega value\>;
2017-12-20 08:48:32 +00:00
ef08bc56ba BUG: Removing finiteArea lib from option file for reconstructPar.
Modifying relaxation factors for the angledDuct for rhoPimpleFoam
2017-12-19 14:51:42 -08:00
7230b3dc62 ENH: Adding postProcessing option to solver overPimpleDyMFoam 2017-12-19 12:31:54 -08:00
985a18df75 Adding overPotentialFoam and overRhoSimpleFoam and tutorials 2017-12-19 11:33:43 -08:00
a6d88f2fe7 Adding turbulence to RAS-Tjunction and reducing MRF in mixerVessel2D to make it laminar 2017-12-19 11:02:31 -08:00
f97954b0b6 BUG: still require IStringStream for argList (closes #672)
- regression introduced by part of commit 2787a8664d.

  Specifically the way that scalarRanges is written, it parses through
  until it hits invalid input. This works fine with an IStringStream,
  but the ITstream is pickier and reports this as being an error.

  So revert to IStringStream and be less picky about argList parsing.
  in the longer-term, should fix scalarRanges instead.
2017-12-19 17:59:15 +01:00
f187dd8aa3 ENH: finiteArea - integration updates 2017-12-19 17:07:08 +00:00
995c55b60e CONFIG: add clang third-party lib to LD_LIBRARY_PATH
- required if there is no system openmp and libomp or libgomp are
  only found in the clang hierarchy

STYLE: add some notes in the openmp rules.

- the _OPENMP macro is now used in low-level testing files
2017-12-19 16:07:15 +01:00
1428310bac ENH: FFT - only create the fftw plan once 2017-12-19 14:45:58 +00:00
d20b981fef STYLE: add End markers to some tutorials and finiteArea utils (issue #671) 2017-12-19 14:59:24 +01:00
8bf98e74da TUT: added tutorial files (issue #671)
- also cleanup by using 0.orig/ directory.
- use foamListRegions to obtain region names
2017-12-19 14:40:33 +01:00
5713efede3 STYLE: use range-for in checkTopology.C
- remove odd spaces in checkMesh output
2017-12-19 12:44:10 +01:00
c9211b6170 BUG: incorrect cellZone boundBox reported by checkMesh (closes #663)
- also incorrect number of points per zone
2017-12-19 12:24:47 +01:00
00325db33b ENH: additional options for transforming points (closes #660)
- The -rotate-angle option allows convenient specification of a
  rotation about an arbitrary axis. Eg, -rotate-angle '((1 1 1) 45)'

- The -origin option can be used to temporarily shift the origin
  for the rotation operations. For example,

      -origin '(0 0 1)' -rotate-angle '((1 0 0) 180)'

  for mirroring.
2017-12-19 11:24:08 +01:00
95e357ede4 TUT: use uniform scaling short form
Eg,
    transformPoints -scaling 0.01
instead of
    transformPoints -scaling '(0.01 0.01 0.01)'
2017-12-19 09:41:54 +01:00
f38ad72ad0 ENH: add argList::optionCount method
- convenience for checking is any/all particular options have been
  specified. Eg,

  if (args.optionCount({"opt1", "opt2", "opt3"}) < 3) ...
2017-12-19 08:20:45 +01:00
4a6fc12469 BUG: finiteArea - corrected assignments to refs 2017-12-19 09:19:50 +00:00
ed183b7c30 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-12-18 16:12:56 -08:00
709d2f43b1 Addition of tutorial using energyTransport FO + ArrheniusBirdCarreau laminar transport 2017-12-18 16:12:48 -08:00
c6433e32c2 ENH: Extended the effectiveness heat exchanger source to enable target
heat rejection

The new optional entry targetQdot can be used to specify a target heat
rejection.  This is additionally controlled using the
targetQdotCalcInterval  and targetQdotRelax entries which default to
values of 5 and 0.5, respectively.
2017-12-18 19:41:33 +00:00
6b33d0ec6b Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-12-18 08:24:58 -08:00
19c3875a14 CONFIG: update tcsh completion_cache to include finiteArea and cfmesh
- include bash completion for paraFoam, and provision for using
  foamEtcFile as well.
2017-12-18 14:26:49 +01:00
b51b6e20fb Merge branch 'feature-finiteArea-postProcessing' into 'develop'
finite area integration

See merge request Development/OpenFOAM-plus!179
2017-12-18 11:44:02 +00:00
22e0a05e8b STYLE: finiteArea doc and style updates 2017-12-18 11:25:53 +00:00
00a8c8bc5f BUG: liquidFilmFoam - corrected double looping 2017-12-18 11:21:07 +00:00
2728a96b9c ENH: finiteArea - faMesh now derived from faSolution, faSchemes and data classes 2017-12-18 10:50:37 +00:00
4c81ee202d CONFIG: update for gcc-4.9.4, and cfmesh module 2017-12-18 10:51:53 +01:00
16db44b67d STYLE: add flex major version in '#if' conditional 2017-12-17 16:22:39 +01:00
8567ef594a STYLE: remove unneed DynamicList::reserve() call
- DynamicList now has SizeMin=16, which eliminates the need for reserve()
  in some cases

- remove unused enrichedPatch static variable
2017-12-17 13:47:12 +01:00
c70d7237e2 STYLE: more robust extraction of API number from wmake rules 2017-12-17 15:19:09 +01:00
22775693d5 STYLE: adjust comments, indentation 2017-12-17 13:14:05 +01:00
2795d64384 COMP: suppress clang warnings about unknown compiler warning option
- allows enabling new warnings without causing messy output with older
  clang versions
2017-12-15 20:02:26 +01:00
1f9bdb4b4f CONFIG: add foamConfigurePaths -kahip* options (closes #666) 2017-12-15 18:04:11 +01:00
db75d4fe8e ENH: vanDriestDelta - updated reading of coeffs from non-optional sub-dict 2017-12-15 17:30:55 +00:00
9ab7fe6b24 ENH: IDDESDelta - updated the hmax delta to be run-time selectable
The delta used for hmax can be set using the optional 'hmax' entry
- if not supplied, the maxDeltaxyz delta is used (backwards
  compatibility)
2017-12-15 17:26:22 +00:00
9c1bb8d707 ENH: maxDeltaxyz - simplified the delta calc and reset the default coeff to 2 2017-12-15 17:25:22 +00:00
627f312776 Merge branch 'config-thirdparty' into 'develop'
update for third-party versions

See merge request Development/OpenFOAM-plus!185
2017-12-15 12:28:37 +00:00
912b38fd9c ENH: applyBoundaryLayer - added -write-nut option to write nut|nuTilda (default=no) 2017-12-15 11:15:50 +00:00
5ba4e83f7a CONFIG: update versions of some ThirdParty software
- ADIOS 1.13.0
- fftw 3.3.7
- paraview 5.4.1

ENH: include ThirdParty QT libraries in LD_LIBRARY_PATH for paraview
2017-12-15 09:23:37 +01:00
445017c741 BUG: snappyMultiRegionHeater: missing decomposeParDict. See #652. 2017-12-14 16:31:49 +00:00
d523d0a634 Merge branch 'feature-overset-lsq' into 'develop'
ENH: overset: new solvers, new stencil

See merge request Development/OpenFOAM-plus!180
2017-12-14 15:43:59 +00:00
e18575bfcb Merge branch 'style-config' into 'develop'
Style config

See merge request Development/OpenFOAM-plus!184
2017-12-14 12:02:13 +00:00
5c607bb801 ENH: print paraFoam -help and -help-full to stdout
- this makes it possible to use "foamAddCompletion paraFoam" and have
  bash completions for paraFoam as well
2017-12-14 12:50:59 +01:00
a820e2d2b7 STYLE: add explicit note to bashrc,cshrc about using prefs.{sh,csh}
- adjust comment formatting to reduce clutter
2017-12-14 11:18:40 +01:00
dd2b3d4e9b STYLE: drop little-used, little-known 'foamSite' alias 2017-12-14 10:58:15 +01:00
3f853f031a STYLE: cleanup of compiler settings
- relocate WM_COMPILER_ARCH, WM_COMPILER_LIB_ARCH from
  etc/{bashrc,cshrc} to etc/config.{csh,sh}/settings since these
  should not be changed by the user anyhow.

- Use gcc/g++ as common base and specialize afterwards (to reduce
  duplication)

- adjust format of WM_PROJECT_SITE fallback to allow for easier
  automated edits
2017-12-14 10:22:30 +01:00
5d5ef73f74 COMP: adjust type for dummy postProcess fields 2017-12-14 01:17:21 +01:00
3da2aee4ef ENH: Updated wildcard handling for function object field entries 2017-12-13 20:57:56 +00:00
b37fc2d4b1 Merge branch 'feature-externalCoupled' into 'develop'
Feature external coupled

See merge request Development/OpenFOAM-plus!176
2017-12-13 19:58:09 +00:00
3999498eed Merge branch 'config-modules' into 'develop'
Support for additional modules

See merge request Development/OpenFOAM-plus!183
2017-12-13 19:43:09 +00:00
bc8420e14f STYLE: trailing whitespace, doxygen, error messages from fileOperation 2017-12-13 17:56:34 +01:00
ffc1c5aca0 CONFIG: add additional modules/ directory and Module namespace
- any code placed here should provide Allwmake and Allwclean scripts
  and normally have compilation targets into FOAM_APPBIN, FOAM_LIBBIN

  Since there is no standardize places for sources or applications,
  a simultaneous build of a module's doxygen documentation requires
  a minor bit of manual effort. Add (via symlink) the sources into
  the modules/doc/ directory to have them included in the normal
  OpenFOAM doxygen documentation generation.

  A makelink.example file is provided there as an example.
2017-12-13 17:36:35 +01:00
0af97856f1 ENH: Added new nutUBlendedWallFunction
This forms part of what is termed 'automatic wall treatment' in the
reference:

    Menter, F., Carregal Ferreira, J., Esch, T., Konno, B. (2003).
    The SST Turbulence Model with Improved Wall Treatment
    for Heat Transfer Predictions in Gas Turbines.
    Proceedings of the International Gas Turbine Congress 2003 Tokyo

Note
    The full 'automatic wall treatment' description also requires use of
    the  Foam::omegaWallFunction with the \c blended flag set to 'on'
2017-12-12 08:51:47 +00:00
3b70a82bb7 BUG: Partial revert of commit fd87d0af1
omegaWallFunction
- re-instated behaviour when not using 'blended'
- turbulence generation always included when using 'blended'
- 'blended' now true by default

epsilonWallFunction
- re-instated low-Re switching
2017-12-12 08:48:38 +00:00
4408ec20b4 ENH: collated: switch off threading by default. See also #659. 2017-12-11 13:50:31 +00:00
fd4782f754 COMP: adjustments for 64-bit label-size 2017-12-11 10:22:06 +01:00
2d76c49b94 BUG: OFstreamCollator: checking for threads. Fixes #659. 2017-12-11 10:25:37 +00:00
eabce47e0d Merge branch 'feature-domain-decomposition' into 'develop'
Minor improvements for redistributePar

See merge request Development/OpenFOAM-plus!181
2017-12-08 17:09:44 +00:00
88423b2a6f TUT: snappyMultiRegionHeater with redistributePar 2017-12-08 16:06:30 +00:00
ddde330884 ENH: overset: new solvers, new stencil 2017-12-08 16:00:02 +00:00
700e17bdb4 INT: Initial check-in of IH Cantabria streamFunction wave generation
model and test case

Code supplied by Gabriel BARAJAS OJEDA
2017-12-08 15:54:34 +00:00
03b8275a83 ENH: add foamListRegions utility
- list all regions from constant/regionProperties:
     * foamListRegions

- list specific region type from constant/regionProperties:
     * foamListRegions fluid
     * foamListRegions solid
2017-12-08 14:05:25 +00:00
74b557d5f2 STYLE: indentation: trailing whitespace 2017-12-08 12:26:16 +00:00
cf15d299cc ENH: remove old proc-addressing when redistributing (issue #656)
- after redistribution, the old cellProcAddressing etc files are incorrect
  and potentially troublesome.
2017-12-08 12:02:09 +00:00
22b133a52a Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-12-08 10:32:08 +00:00
bf49ae9bc4 ENH: readFields: suppress warning messages when reading surface fields. Fixes #654. 2017-12-08 09:55:00 +00:00
28d39110a8 ENH: readFields: suppress warning messages when reading surface fields 2017-12-08 09:55:00 +00:00
570e1ab0ba fixup CONFIG: update versions of ThirdParty software 2017-12-08 09:34:02 +00:00
405cf8129a CONFIG: update some wmake rules
- initial settings for ADIOS2, linuxARM64Gcc, linuxARM64Clang
2017-12-07 15:41:58 +00:00
f385e3b984 ENH: finiteArea support for paraview reader plugin (paraFoam) 2017-12-06 15:10:11 +00:00
1af512ae51 ENH: Added divergence scheme test case 2017-12-05 11:43:09 +00:00
1e7b67fdcf TUT: relocate externalCoupled heater tutorial, add steady-state version 2017-12-05 12:00:00 +01:00
0e2798399e ENH: add enthalpy sub-looping for chtMultiRegion* solvers 2017-12-05 12:00:00 +01:00
96ed3638e4 ENH: basic support for generic solution loop-control 2017-12-05 12:00:00 +01:00
e0f397d863 BUG: ensightSurfaceReader - corrected initial list sizing 2017-11-30 08:36:07 +00:00
610c290969 ENH: added functionObject::execute(int) method
- this is a provision for defining execute actions that can be called
  largely independently of the normal time-loop constraints. This can
  be useful to provide hooks for sub-cycling, or to define an action
  that can be triggered manually or on some other event.
2017-11-28 10:00:15 +01:00
c2ff8ea99e ENH: Added finiteArea support to foamToVTK 2017-11-21 16:33:33 +00:00
05a8fe5dd3 STYLE: compact license text in config files for easier reading/editing 2017-11-20 09:00:10 +01:00
d6b3595fe8 BUG: Correcting expression for adimensional pressure drop table for fanFvPatchField 2017-11-16 11:01:54 -08:00
b2f002ba45 ENH: FFT - updated for fft of real data 2017-11-16 18:05:56 +00:00
93587afefc ENH: Avoidding 0/0 conflict in externalCoupledTemperatureMixed increaging the zero order of denomitaror 2017-11-15 12:58:58 -08:00
37d92d0714 ENH: adding non-dimensional option to fanFvPatchField.C 2017-11-15 12:54:09 -08:00
9d7df50822 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-11-15 10:06:35 -08:00
0bb53ab6f3 BUG: ptscotch: truncate decomposition back to correct number of cells. Fixes #642. 2017-11-15 12:34:39 +00:00
a14eb71160 COMP: various compilation changes
- label-size 64 build, compiler warnings, unused template argument,
  faMatrix::clone() method

STYLE: faScalarMatrix - moved info message to within a debug scope
2017-11-14 08:41:20 +00:00
56232cdab0 Merge branch 'style-write-entry' into 'develop'
STYLE: use Ostream writeEntry when writing key/value entries

See merge request Development/OpenFOAM-plus!168
2017-11-14 08:32:13 +00:00
6b32f7b474 Merge remote-tracking branch 'origin/develop' into develop 2017-11-13 11:45:40 +00:00
6eaa143825 BUG: foamListTimes: reinstated. Fixes #638. 2017-11-13 11:44:19 +00:00
0ca0a6264b STYLE: use readLabel/readScalar (string) instead of via IStringStream 2017-11-13 11:23:17 +01:00
817b9a14ba BUG: missing space in ensight (surface format) case file (closes #637)
- occurred when variable name exceeded the 15-char alignment format
  and the name run into the previous field.
2017-11-13 11:06:26 +01:00
14d4484fae STYLE: single-string findStrings deprecated in favour of stringOps::match
- reduces ambiguity between matching a list of strings and a single string.
2017-11-13 10:37:38 +01:00
5a6b59d8b0 ENH: snappyHexMesh: added missing entry 2017-11-13 08:57:43 +00:00
1d925c736c STYLE: searchableSurfaces: typo in comment 2017-11-08 14:20:47 +00:00
7924f24b4a STYLE: overLaplacianFoam: removed unused entries 2017-11-08 09:09:41 +00:00
4039933b89 Merge branch 'feature-function-object-field-input' into 'develop'
Feature function object field input

See merge request Development/OpenFOAM-plus!167
2017-11-13 09:10:55 +00:00
4466daa008 Merge branch 'feature-token-passing' into 'develop'
ENH: support change of Pstream buffer format via flag modifier

See merge request Development/OpenFOAM-plus!166
2017-11-13 09:00:25 +00:00
073aca9115 Merge branch 'feature-fieldAverage-windowing' into 'develop'
Feature field average windowing

See merge request Development/OpenFOAM-plus!165
2017-11-13 08:59:36 +00:00
8f444b7164 ENH: support change of Pstream buffer format via flag modifier
- allows changing the format of the sending OPstream at an arbitrary
  point in the transmission. The information is passed through the
  buffer and the receiving IPstream changes its format accordingly.
  This allows a temporary toggling of ASCII/BINARY mid-stream.
2017-11-13 09:21:11 +01:00
24d8c891d7 ENH: add bin/tools/foamCreateModuleInclude
- support when creating modules for OpenFOAM.
  Original source from Ivan Spisso (CINECA) modified by OpenCFD
2017-11-13 07:46:17 +01:00
4f1e4aa59e ENH: add token type for stream flags (ASCII/BINARY) 2017-11-12 16:57:37 +01:00
5281dd4877 ENH: changed return value to bool for Ostream::write(const token&)
- the return value signals if this method handled this particular type
  of token. This minor change allows this method to be used as a succinct
  prefilter an output token stream. It also provides better encapsulation
  of what the particular output stream handles.

  Eg,

      bool ok = os.write(tok);
      if (!ok)   // or   if (!ok && os.good())
      {
          os << tok;
      }

  instead of

      if (tok.type() == typeA || tok.type() == typeB || ...)
      {
          os.write(tok);
      }
      else
      {
          os << tok;
      }
2017-11-12 15:25:14 +01:00
c51ee22101 STYLE: fix stray use of argList option() instead of [] 2017-11-09 18:59:55 +01:00
166f62f19d STYLE: spelling, doxygen 2017-11-09 11:04:34 +01:00
59e8c39747 ENH: static parse methods for ITstream 2017-11-09 08:39:36 +01:00
cea5ca147d Merge branch 'feature-dictionary-methods' into 'develop'
dictionary compatibility/migration methods

See merge request Development/OpenFOAM-plus!162
2017-11-08 19:55:07 +00:00
e289c78027 COMP: mismatch of inline some HashTable methods 2017-11-08 20:44:43 +01:00
c7392f7fb0 ENH: additional dictionary compatibility/migration methods
- when dictionary keywords change between versions, the programmer
  can use these compatibility methods to help with migration.

    * csearchCompat, foundCompat, lookupEntryPtrCompat, lookupEntryCompat,
      lookupCompat, lookupOrDefaultCompat, readIfPresentCompat, ...

  They behave like their similarly named base versions, but accept an
  additional list of older keyword names augmented by a version number.
  For example,

      dict.readIfPresentCompat
      (
          "key", {{"olderName", 1612}, {"veryOld", 240}},
          myscalar
      );

   where 1612=OpenFOAM-v1612, 240=OpenFOAM-v2.4.x, etc.
2017-11-08 19:08:10 +01:00
8d5f28bcc0 ENH: dictionary add/set methods now return a pointer to the entry
- If the entry could be directly inserted: a pointer to the inserted entry.
- If a dictionary merge was required: a pointer to the dictionary that
  received the entry.
- Return nullptr on any type of insertion failure.

This change is code compatible with existing code since it only alters
a bool return value to be a pointer return value.
2017-11-08 17:43:28 +01:00
9edc0c15fe ENH: add rmDir silent option for all fileOperations implementations 2017-11-08 14:54:57 +01:00
ba39777818 COMP: Resolved compiler warnings 2017-11-08 08:48:48 +00:00
ec9a7cc016 ENH: function objects - enabled 'fields' entry to use patterns for some objects 2017-11-07 17:33:09 +00:00
69238a9e14 BUG: steadyStateDdtSchems - corrected oriented state of return fields for *Corr functions. Fixes #634 2017-11-07 12:10:47 +00:00
3611f03914 COMP: Removed unused variable 2017-11-07 11:31:21 +00:00
c1b7854cf7 COMP: Removed unused variable 2017-11-07 11:31:21 +00:00
6aa7b6ac2a STYLE: Header clean-up 2017-11-07 11:22:58 +00:00
54a4cafa12 Merge branch 'feature-token-passing' into 'develop'
Improvements to token handling

See merge request Development/OpenFOAM-plus!160
2017-11-07 14:16:22 +00:00
2ae2783635 ENH: add a test dictionary token streaming class 2017-11-07 13:12:43 +01:00
b8d5880447 STYLE: Header clean-up 2017-11-07 11:22:58 +00:00
f42ed2fc9f Merge branch 'fix_gl_632' into 'develop'
STYLE: Corrected file name in surface noise, added README file

See merge request Development/OpenFOAM-plus!161
2017-11-07 10:50:02 +00:00
4bc9c98695 STYLE: Corrected file name in surface noise, added README file 2017-11-07 16:08:30 +05:30
a7095ceded Merge branch 'master' of develop.openfoam.com:Development/OpenFOAM-plus 2017-11-06 09:05:02 -08:00
07e662a0ef BUG: Correcting adimensional formulation for fanPressureFvPatchScalarField 2017-11-06 09:04:15 -08:00
454e609fbc ENH: Adding momemtum predictor to chtSimpleFoam 2017-11-06 09:03:42 -08:00
ad116ef7f2 ENH: use updated ITstream for parsing strings to token lists 2017-11-06 17:38:53 +01:00
9ac1fa417b BUG: finiteArea: corrected reference access to tmps 2017-11-06 11:54:20 +00:00
c0ba7bf05a STYLE: use Ostream writeEntry when writing key/value entries
- makes for clearer code

ENH: make writeIfDifferent part of Ostream
2017-11-06 00:49:24 +01:00
61534989df ENH: simplify primitiveEntry parsing code, move append new tokens
- simplify string output code
2017-11-05 22:07:17 +01:00
c4de3e0a4d ENH: enhancements to behaviour of token
- improved memory alignment reduces overhead for Int32 compilation

- added move/swap semantics

- made the type() readonly in favour of setVariant() to allow change
  of variant within a particular storage representation.
  Eg, STRING -> VERBATIMSTRING.
2017-11-05 20:05:28 +01:00
e1b71c028c ENH: add move/swap semantics to string types and regExp
- move append() single element to List and DynamicList

ENH: add stringOps::count to avoid unnecessary string conversions
2017-11-05 13:26:10 +01:00
cae8a894cd ENH: allow creation of ITstream by parsing string 2017-11-06 09:25:58 +01:00
061a85858f ENH: support method/spawn as mpirunDebug command-line options 2017-11-04 17:25:26 +01:00
3d13220df4 STYLE: relocate charList typedef to containers 2017-11-04 16:05:32 +01:00
507486194e ENH: improved parallel transfer of strings
- support send/receive with embedded '\0' characters
2017-11-04 15:51:52 +01:00
590b319a78 TUT: 'restore0Dir -processors' with filtering of #include files 2017-11-04 14:59:59 +01:00
dd838766be STYLE: make memorybuf naming more consistent with std iostreams 2017-11-04 14:30:14 +01:00
ebd922a32e ENH: support longer doxygen brief descriptions. 2017-11-04 14:26:38 +01:00
f7ff26bd2d ENH: fieldAverage - enable suppressing of intermediate field writing for the exact method
Also updated/corrected restart behaviour
2017-10-30 13:47:32 +00:00
7a41a9c9c3 collatedFileOperation: preferentially collect all data in the simulation thread
so the write thread does not have to do any parallel communication.  This avoids
the bugs in the threading support in OpenMPI.

Patch contributed by Mattijs Janssens
Resolves bug-report https://bugs.openfoam.org/view.php?id=2669
2017-10-27 17:13:43 +01:00
ec761da0be COMP: Corrected construction from tmp compiler error 2017-12-07 09:29:27 +00:00
ea5df84dc0 COMP: 64 bit labels 2017-12-06 15:52:07 +00:00
2cd84dd091 ENH: snappyHexMeshDict: description of missing switch 2017-12-04 15:30:42 +00:00
5a455dac34 TUT: tutorial updates 2017-12-06 12:53:10 +00:00
b137005449 Merge remote-tracking branch 'origin/master' into develop 2017-12-06 12:52:12 +00:00
6b97bf54ab TUT: Adding Alltest scripts 2017-12-05 12:19:47 +00:00
6c44f9b102 Merge branch 'feature-profiling-summary' into 'develop'
minor improvements in profiling

See merge request Development/OpenFOAM-plus!178
2017-12-01 14:52:56 +00:00
8fc6bd17c9 ENH: improvements in profiling (issue #648)
- include amount of free system memory in profiling, which can give an
  indication of when swapping is about to start

- profilingSummary utility to collect profiling from parallel
  calculations. Collects profiling information from processor
  directories and summarize the time spent and number of calls as (max
  avg min) values.
2017-12-01 15:44:20 +01:00
e83a9db2ea Merge branch 'feature-domain-decomp' into 'develop'
Feature domain decomp (wp05)

See merge request Development/OpenFOAM-plus!163
2017-11-30 19:58:20 +00:00
dc2177cc68 Merge branch 'feature-trisurface-cleanup' into 'develop'
consolidate surfaceFormats for reading/writing triSurface

See merge request Development/OpenFOAM-plus!174
2017-11-30 08:46:43 +00:00
cdb22d4476 Merge branch 'feature-externalCoupled' into 'develop'
preliminary improvements for externalCoupled

See merge request Development/OpenFOAM-plus!175
2017-11-28 16:54:06 +00:00
57f750cc55 ENH: add simple subLoopTime
- similar idea as subCycleTime but without sub-dividing the time
  interval or incrementing time itself
2017-11-28 09:57:18 +01:00
bb0fa65122 ENH: respond to externalCoupled lock file contents
- waitForSlave now return a Time::stopAtControls enumeration:

    unknown:     when lockfile has no specially recognized content.
    endTime:     when lockfile contains "status=done"
    writeNow:    when lockfile contains "action=writeNow"
    nextWrite:   when lockfile contains "action=nextWrite"
    noWriteNow:  when lockfile contains "action=noWriteNow"

These values can be used by the caller to terminate the master
(OpenFOAM) as desired in response to information placed there by the
slave process.
2017-11-28 12:02:18 +01:00
402e605391 ENH: expose solutionControl::maxResiduals as a static with simpler parameters
- use a Pair<scalar> with first() / last() residuals
2017-11-28 11:46:48 +01:00
ca5b0dcbaa ENH: improvements to Time
- expose the names of write and stopAt controls for reuse elsewhere and
  provide a stopAtControls enum for 'unknown'

- track the requested number of sub-cycles (was previously a bool)
2017-11-28 10:11:06 +01:00
fab9fb4332 STYLE: use readScalar(std::string) and readInt(std::string) wrappers 2017-11-28 10:08:36 +01:00
c0e86940b0 ENH: minor improvements for Enum
- found() method for consistency with other classes

- operator()(name, deflt) for similarity to lookupOrDefault,
  but without a dictionary
2017-11-28 09:15:04 +01:00
b53e5b7404 BUG: fieldMinMax: max cell 2017-11-27 17:41:38 +00:00
966a941a64 ENH: fix foamListTimes to work with -fileHandler collated 2017-11-26 15:23:02 +01:00
2787a8664d STYLE: relegate special purpose readList<T> function to points of use
- the readList<T>(Istream&) function was introduced to handle command
  -options with either a single or a list value, but was also used for
  the #remove dictionary directive. However, the parsing was fragile
  if the list did not start with a '('.
  Now handle command-line arg/option list directly (via ITstream)
  and #remove with special-purpose reading of a string or word list.

  This removes ambiguity and reduces potential future problems.

STYLE: use ITstream instead of IStringStream for command-line lookups

- parses directly to a tokenList without a string copy.
2017-11-26 12:45:49 +01:00
5947f9a337 ENH: more succinct output from command-line errors.
- unknown options or missing option values now emit a shorter message
  without the entire usage. This makes it easier to identify the errors
  and is better aligned with the behaviour of GNU system tools.

  ====
     $ simpleFoam -case
     Using: OpenFOAM-plus (see www.OpenFOAM.com)
     Build: plus-01234

     Error: option '-case' requires an argument

     See 'simpleFoam -help' for usage
  ====

- provide for reduced (-help) and full (-help-full) usage information.
  In many cases the reduced usage provided sufficient and easier
  to find the information.

- make -srcDoc an alias for -doc-source

- no warnings about option aliases for future dates.
2017-11-24 10:27:11 +01:00
9985b93cfc ENH: argList::optionReadList now uses ITstream directly
- stricter and robuster than previous solution using List::readList
  since the option input can be fully tokenized prior to list
  conversion.
2017-11-24 10:39:20 +01:00
d3d82b909e BUG: the -decomposeParDict option inadvertent triggers parallel run (fixes #645) 2017-11-24 10:36:34 +01:00
d49929b210 ENH: improvements to stringOps format and split functions
- split now optionally retains empty substrings.
  Added split on fixed field width.

- Foam::name() now formats directly into string buffer, which a
  removes one layer of copying and also avoids using a non-constexpr
  in the temporary.

STYLE: explicit type narrowing on zero-padded output for ensight
2017-11-23 20:17:33 +01:00
6e8586df5d DEFEATURE: remove ccm26ToFoam (issue #536)
- not maintained and less functionality than ccmToFoam.
2017-11-23 14:16:09 +01:00
63812aa110 Merge branch 'feature-arglist-option-aliases' into 'develop'
Feature arglist option aliases

See merge request Development/OpenFOAM-plus!172
2017-11-23 09:27:34 +00:00
416a3790ea STYLE: prefer autoPtr::reset() to autoPtr::set()
- in most cases already checked valid() so don't need additional check
  for setting an existing pointer
2017-11-22 19:11:11 +01:00
e96cbd9050 STYLE: remove deprecated non-const tmp() operator (deprecated since FEB-2016) 2017-11-22 18:10:25 +01:00
aa112c3f26 ENH: support option aliases with versioning
- can be used for adjusting option names between versions
2017-11-22 14:42:31 +01:00
f2ba618c19 STYLE: consistency in using argList::addArgument, argList::addOption 2017-11-22 12:54:28 +01:00
d8f31f6ded STYLE: use HashTable ternary-like lookup in argList 2017-11-22 12:04:45 +01:00
fd5cd9dc6f ENH: command-line -doc, -srcDoc display online documentation
- browser is spawned as a background process to avoid blocking the
  command-line
2017-11-22 11:50:44 +01:00
4023158497 ENH: provide system() command with CStringList
- allows (for example) splitting a user string on whitespace and
  passing this to system as a list of arguments, thus bypassing any
  implicit use of 'sh'.

- system() with optional background, for spawning processes.
2017-11-22 10:48:55 +01:00
a881204946 ENH: stringOps inplace methods now use a std::string parameter
- this makes them applicable to Foam::string, Foam::word etc

ENH: improvements to CStringList

- add strings() sublist variant which can be useful when handling
  command arguments separately

- add construct from SubStrings.
2017-11-22 08:03:52 +01:00
d65ca495d3 STYLE: minor changes in comments 2017-11-22 10:52:42 +01:00
3ef8906a66 ENH: consolidate surfaceFormats for reading/writing triSurface (issue #294)
- eliminates previous code duplication and improves maintainability
2017-11-20 14:55:36 +01:00
75933928de Merge branch 'feature-multiple-stitch-mesh' into 'develop'
Feature multiple stitch mesh (wp04)

See merge request Development/OpenFOAM-plus!164
2017-11-20 09:32:30 +00:00
d4b7fbe9a1 Merge branch 'style-list-typedefs' into 'develop'
Consistency update for list typedefs

See merge request Development/OpenFOAM-plus!171
2017-11-20 07:48:08 +00:00
7c1d8cb146 STYLE: more consistent use of labelUList and labelUIndList typedefs 2017-11-19 09:27:47 +01:00
a573e0e1aa STYLE: use fully-scoped names in meshTools, sampling 2017-11-19 11:34:41 +01:00
6fd27353e4 STYLE: improve formatting of doxygen filter output 2017-11-10 14:53:18 +01:00
834d46c64a ENH: add argList support for non-mandatory arguments
- in rare cases we may wish to have command-line arguments that are
  non-mandatory. This can now be reflected in the usage output, provided
  that the argList::nonMandatoryArgs() has been used.

- added setRootCaseNonMandatoryArgs.H that applies the
  argList::nonMandatoryArgs() settings and otherwise performs largely
  as per setRootCase.H, except that the check for mandatory arguments
  is deferred to later user code.
2017-11-18 13:36:56 +01:00
a59c87d5ac ENH: improved zone constructors
- constructor for empty cell/face/point Zones, with contents to be
  transferred in later.

- ZoneMesh::operator(const word&) to return existing zone or a new empty one.
2017-11-10 02:09:37 +01:00
ccc07d3234 Merge branch 'style-cellModel-enum' into 'develop'
cellModel enumerations

See merge request Development/OpenFOAM-plus!170
2017-11-18 13:14:39 +00:00
8730a7622a ENH: enumerations for known cell models in cellModel, ptr/ref lookups
- this provides a better typesafe means of locating predefined cell
  models than relying on strings. The lookup is now ptr() or ref()
  directly. The lookup functions behave like on-demand singletons when
  loading "etc/cellModels".

  Functionality is now located entirely in cellModel but a forwarding
  version of cellModeller is provided for API (but not ABI) compatibility
  with older existing user code.

STYLE: use constexpr for cellMatcher constants
2017-11-18 11:05:05 +01:00
810d090e34 ENH: add -case option for foamLog 2017-11-17 19:04:13 +01:00
9c3bef5a99 ENH: improve robustness of MPI start/stop
- warn or fatal if Pstream::init or Pstream::exit are called multiple
  times.

- additional Pstream::initNull method as failsafe to initialize MPI
  when the underlying OpenFOAM process is not running in parallel but
  the application still needs MPI.

- Pstream::exit() can now also be called without having used MPI::init(),
  which means it can be used to cleanup serial process or for
  applications that used the special purpose Pstream::initNull()
  mechanism.
2017-11-17 11:29:26 +01:00
00b1ecad60 ENH: add UPtrList swap() method 2017-11-13 21:39:30 +01:00
5a52dfa4f4 CONFIG: update ADIOS version 2017-11-17 08:46:19 +01:00
67265d2c35 BUG: missing space in ensight (surface format) case file (closes #637)
- now also fixed collated output format
2017-11-16 07:31:39 +01:00
3cafdccb4c ENH: add dictionary-driven multi-pass stitchMesh facility
- the dictionary-driven variant of stitchMesh allows sequential
  application of 'stitch' operation with requiring intermediate
  writing to disk.

- Without arguments:
  * stitchMesh uses a system/stitchMeshDict or -dict dict

- With arguments:
  * master/slave patches specified on the command-line as in previous
    versions.
2017-11-10 01:53:30 +01:00
a9ffcab5af ENH: region-wise decomposition specification for decomposeParDict
Within decomposeParDict, it is now possible to specify a different
  decomposition method, methods coefficients or number of subdomains
  for each region individually.

  The top-level numberOfSubdomains remains mandatory, since this
  specifies the number of domains for the entire simulation.
  The individual regions may use the same number or fewer domains.

  Any optional method coefficients can be specified in a general
  "coeffs" entry or a method-specific one, eg "metisCoeffs".

  For multiLevel, only the method-specific "multiLevelCoeffs" dictionary
  is used, and is also mandatory.

----

ENH: shortcut specification for multiLevel.

  In addition to the longer dictionary form, it is also possible to
  use a shorter notation for multiLevel decomposition when the same
  decomposition method applies to each level.
2017-11-09 12:30:24 +01:00
69ea4976ac ENH: reduced verbosity when decomposing/reconstructing empty meshes
- only warn about missing cells/points if the mesh is also missing
  boundary patches.
- reduce verbosity when decomposing to an empty mesh
- skip face matching when either mesh has no faces
2017-11-06 17:06:15 +01:00
52536b4b14 Merge branch 'bugfix-multiLevelDecomp' into 'master'
Bugfix multi level decomp

Closes #620 and #619

See merge request Development/OpenFOAM-plus!153
2017-10-11 11:18:59 +01:00
8acd80c54c BUG: multiLevelCoeffs entry not mandatory (closes #620) 2017-10-10 19:32:53 +02:00
e816d5cc80 BUG: label overflow in multiLevel decomposition (closes #619)
- previously when more than two levels were used.
  Now calculate the required final target domain segment directly.
2017-10-10 18:06:52 +02:00
13346ec5b1 BUG: incorrect xml format tag for VTK surface mesh writer (closes #611) 2017-10-06 11:36:40 +02:00
684aa6751c Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-09-29 10:16:01 -07:00
0cc4ab73b7 ENH: adjust doxygen wrapper to accept multiple input directories
- the -dir option was added in commit c1c6243c3e to allow quick
  testing of documentation for a set of classes.
  This was largely replicated in commit 843d83117, but accepting
  multiple directories.

  Apply some of the same ideas here and avoid creation of a tmp file.
2017-09-29 18:36:48 +02:00
a531168ae4 COMP: reinstate rules for various C++ suffixes (issue #607) 2017-09-29 18:07:42 +02:00
dfe464dd5b BUG: redistributePar: transfer particles correctly. Fixes #605. 2017-09-28 12:36:25 +01:00
ce8695d804 BUG: reachingParcelFoam: requires p_rgh 2017-09-27 17:58:24 +01:00
50d1ac15ef INT: Integration updates in preparation for merge into the develop branch 2017-09-27 09:30:59 +01:00
ffb0409942 TUT: Tutorial updates - see #600 2017-09-26 12:25:50 +01:00
ba331942be BUG: decomposePar - resolved error using -allRegions option 2017-09-26 11:58:38 +01:00
e48f3d6d52 BUG: Added missing #include. See #600 2017-09-26 09:29:45 +01:00
16649b3772 BUG: thermoFoam - corrected to enable restart and post-processing using thermoFoam -postProcess. Fixes #598 2017-09-25 13:25:34 +01:00
823ba60cae ENH: correcting new thermo type for reactingParcelFoam tutorials.
Correcting thermoSingleLayer.C mask field alpha to avoid heat sources where there is no film.
Tunning fvSolution for alpha for twoPhasePachuka tutorial
2017-09-22 16:45:45 -07:00
d86443cfd9 STYLE: Code refactoring 2017-09-22 14:01:25 +01:00
73fcd85460 ENH: class data now protected as opposed to private 2017-09-22 13:59:40 +01:00
99b67ba8db ENH: boundaryMesh - allow not found state in findPatchID 2017-09-22 13:58:47 +01:00
b55ab4b0c3 Merge branch 'integration-foundation' into 'develop'
Integration openfoam.org

See merge request !144
2017-09-22 13:56:38 +01:00
dd3be135de ENH: cuttingPlane: suppress excessive warning message. Fixes #596. 2017-09-21 09:14:58 +01:00
76c68c884f ENH: isoSurface: additional debug message 2017-09-21 09:12:16 +01:00
9aff74aaaf COMP: Updated to compile with Clang 3.7.1 2017-09-20 13:55:42 +01:00
af48c843f8 STYLE: Code clean-up 2017-09-18 13:39:37 +01:00
94cf702f69 BUG: kOmegaSSTLM - corrected writing of coefficients. Fixes #592 2017-09-18 10:48:39 +01:00
79f2466ca5 BUG: DESModelRegions - added missing field write() - see #591 2017-09-18 10:17:24 +01:00
e23999e5da Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-09-18 08:43:21 +01:00
404aa759ca ENH: mirrorMesh: run parallel. Fixes #587.
Note that now mirrorMesh does not delete empty patches anymore.
2017-09-18 08:42:33 +01:00
0c64622341 Finite area port, Hrvoje Jasak
- with sphereSurfactantFoam and sphereTransport test case
2017-09-15 12:02:25 +01:00
85877cb0f4 ENH: coordSet - added protection for the 'distance' option 2017-09-15 11:17:06 +01:00
4af3d6cb73 COMP: resolve merge conflict 2017-09-15 12:14:22 +02:00
fedf588245 STYLE: Minor code style updates 2017-09-15 10:38:10 +01:00
2efc0a6fb1 CONFIG: update completion_cache (csh) for new command-line options 2017-09-26 09:45:25 +02:00
4c45f6c6a1 MRG: OFstream name not being passed through to OSstream 2017-09-26 09:13:23 +02:00
e0baf040e2 STYLE: include .foam file as well in paraFoam -touch-all 2017-09-26 08:41:01 +02:00
e8ec236cdf Merge branch 'feature-string-parsing' into 'develop'
improve consistency in parsing primitives from strings

See merge request !146
2017-09-25 18:28:47 +01:00
610854af03 STYLE: minor cleanup after merge 2017-09-22 16:25:17 +02:00
66104f2569 ENH: improve input stringency for argList options
Previously:

  - bad command-line input such as -label 1234xyz would parse as a
    label (with value 1234) and the trailing junk would be silently
    ignored. This may or may not be appropriate. If the trailing junk
    looked like this '100E' or '1000E-' (ie, forgot to type the
    exponent), the incorrectly parsed values can be quite bad:

        label  = 32684
        scalar = 6.93556e-310

Now:

  - use the updated readLabel/readScalar routines that trigger a
    FatalIOError on bad input:

        --> FOAM FATAL IO ERROR:
        Trailing content found parsing '1234xyz'

        --> FOAM FATAL IO ERROR:
        Trailing content found parsing '100E'

   This traps erroneous command-line input immediately.
2017-09-21 16:53:46 +02:00
a4e63e2bfb STYLE: avoid IStringStream when parsing primitives 2017-09-21 16:10:33 +02:00
accebc74ee ENH: improve consistency in parsing primitives from strings (issue #590)
- Any trailing whitespace when parsing from strings or character buffers
  is ignored rather than being treated as an error. This is consistent
  with behaviour when reading from an Istream and with leading whitespace
  being ignored in the underlying atof/atod, strtof/strtod... functions.

- Allow parsing directly from a std::string instead of just from a 'char*'.
  This reflects the C++11 addition of std::stod to complement the C
  functions strtod. This also makes it easier to parse string directly
  without using an IStringStream.

- Two-parameter parsing methods return success/failure.
  Eg,

      if (readInt32(str, &int32Val)) ...

- One-parameter parsing methods return the value on success or
  emit a FatalIOError.
  Eg,

      const char* buf;
      int32Val = readInt32(buf, &);

- Improved consistency when parsing unsigned ints.
  Use strtoimax and strtoumax throughout.

- Rename readDoubleScalar -> readDouble, readFloatScalar -> readFloat.
  Using the primitive name directly instead of the Foam typedef for
  better consistency with readInt32 etc.

- Clean/improve parseNasScalar.
  Handle normal numbers directly, reduce some operations.
2017-09-18 10:47:07 +02:00
61c603f174 STYLE: typo in doxygen string 2017-09-15 14:35:51 +02:00
2a586dcbe2 Merge remote-tracking branch 'origin/master' into develop 2017-09-15 11:20:35 +02:00
071dfb36fd BUG: parse issues for nastran long format (closes #589) 2017-09-15 10:40:55 +02:00
953f6fbc75 Merge branch 'feature-paraview-clouds' into 'develop'
Feature paraview clouds

See merge request !145
2017-09-12 14:45:38 +01:00
2cfc88fa03 STYLE: paraview reader attempts to shallow copy nullptr (closes #586)
- Can occur if the selected geometry does not actually exist.
  A non-critical bug since paraview catches this anyhow and
  just emits a warning message.
2017-09-12 15:42:10 +02:00
05aa701c15 ENH: handle all lagrangian fields in pv reader (issue #585)
- previous only checked for clouds at the last instance and only
  detected lagrangian fields from the first cloud.

  Now check for clouds at all instances and detect all of their fields
  as well.
2017-09-12 11:38:05 +02:00
9238c90e6f Merge branch 'feature-surfacefield-value' into 'develop'
Feature surface field value operations

See merge request !141
2017-09-12 08:37:46 +01:00
eaebb8ee75 Merge branch 'feature-surface-scaling' into 'develop'
Feature surface scaling

See merge request !139
2017-09-12 08:36:12 +01:00
6ec186bada ENH: a weighted operation without a weightField is an error (issue #583)
- affects surfaceFieldValue, volFieldValue.

  Use 'none' (if desired) to explicitly suppress the weightField, but
  generally better to use a different operation.
2017-09-11 18:10:41 +02:00
c59c3af146 STYLE: relocate surfaceMeshConvertTesting to test/ (closes #584)
- relocate as Test-surfaceMeshConvert.
2017-09-11 14:50:51 +02:00
f80334415c sixDoFRigidBodyState: New functionObject which writes the rigid-body state
Based on code contributed by SeongMo Yeon
Resolves feature request https://bugs.openfoam.org/view.php?id=2656
2017-09-09 19:00:56 +01:00
0eeffc318b ENH: Adding required interpolation for alpha.water in fvSchemes for overInterDyMFoam floatingBody tutorial 2017-09-08 15:40:22 -07:00
cfeb2c9233 ENH: adding oversetAdjustPhi to overInterFoam plus reconstructing U from phi in pEq. 2017-09-08 15:35:27 -07:00
a129d6a146 ENH: isoCutCell - improved robustness. Patch provided by Johan Roenby - see #582 2017-09-08 17:22:49 +01:00
0430ad474f ENH: modifyMesh: added -dict argument 2017-09-07 15:02:39 +01:00
aad962a0e4 COMP: checkMesh: missing header 2017-09-07 09:42:03 +01:00
775f39960f Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-09-06 12:27:38 +01:00
dbc0bbc903 ENH: extrudeMesh: preserve hexRef8Data. Fixes #471. 2017-09-06 12:24:32 +01:00
92ce092e2b Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-08-31 14:08:26 +01:00
35090ebdc3 Merge branch 'master' into develop 2017-08-31 14:08:17 +01:00
6d8b6516b6 BUG: Corrected Curle analogy implementation. See #574 2017-08-31 14:05:05 +01:00
4684a13f42 Merge branch 'feature-zoneInformation' into 'develop'
ENH: Adds basic information for faceZone and cellZones during checkMesh (fixes #560)

See merge request !142
2017-08-31 13:16:32 +01:00
b5f96306ea ENH: checkMesh: output information about zones 2017-08-31 17:41:50 +05:30
2f2e0cf1a6 BUG: fluxSummary: incorrect handling of flipMap. Fixes #530. 2017-08-30 17:27:07 +01:00
5cfd343904 Merge branch 'bugfix-createZeroDirectory-template' into 'master'
BugFix: corrected keyword for flowRateInletVelocity BC fixes #577

Closes #577

See merge request !143
2017-08-30 09:49:49 +01:00
870a0a1d60 BugFix: keyword for caseDict also syncrhonized 2017-08-30 09:48:45 +05:30
ffed13435a BugFix: corrected keyword for flowRateInletVelocity BC fixes #577 2017-08-30 09:38:36 +05:30
0e7954c22b BUG: sampledTriSurfaceMesh: sampling outside of mesh. Fixes #575.
There are a few issues:
- error would only throw exceptions if not parallel
- if we change this we also need to make sure the functionObjectList
  construction is synchronised
- bounding box overlap was not returning the correct status so the code
  to avoid the issue of 'badly formed bounding box' was not triggered.
2017-08-29 14:41:22 +01:00
82a18e4cd9 ENH: Print info on zones only if present 2017-08-28 10:21:47 +05:30
81d4292855 ENH: Adds basic information for faceZone and cellZones during checkMesh
fixes #560
2017-08-18 17:04:51 +05:30
3392965aba ENH: scaling: added scaling to various sampling routines. See #514. 2017-08-17 12:47:45 +01:00
bd762c94d0 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-08-17 11:00:51 +01:00
cf0ffa1933 BUG: nearWallFields: point on the face is inside/outside any tet.
Now we directly releate the intersected face triangle to the tet of the
cell the point is on/in. We hope that the tracking handles this ok. Fixes #549.
2017-08-17 10:58:56 +01:00
50d7df41e0 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-08-15 11:02:33 +01:00
30941f28be Merge branch 'master' into develop 2017-08-15 11:02:16 +01:00
cf065aade0 BUG: Corrected construction of List from SLList. Fixes #571 2017-08-15 11:00:21 +01:00
fbdd16a293 ENH: add stringOps::splitAny, stringOps::splitSpace
- assists when building simple hand-rolled parsers.
  Also add string::split() taking a sub-string for the delimiter.
2017-08-14 10:36:12 +02:00
139edb2468 ENH: add input surface scaling (issue #514)
- surfaceFeatureExtract
  * dictionary "scale" entry

- triSurface
- triSurfaceLoader
  * optional scaleFactor on reading

- surfaceAdd
- surfaceBooleanFeatures
- surfaceClean
- surfaceCoarsen
  * scale option

- surfaceTransformPoints, transformPoints
  * scale option as scalar or vector quantity
2017-08-14 09:18:15 +02:00
3b16c365ee STYLE: make Switch construct from string explicit (issue #568)
- actually prevent this type of thing:

      Switch sw;
      sw = "none";

  without relinquishing automatic conversion to/from bool.
  Nonetheless, make construct from string explicit.

- Added some minor optimization for the lookup of the switch names.
2017-08-11 16:43:12 +02:00
3093b32702 ENH: support pTotal as a derived field for surfMeshSamplers (issue #567) 2017-08-11 16:40:08 +02:00
4588182352 ENH: add absolute weighting for surfaceFieldValue (issue #567)
- can be useful either for flow-rate weighting where backflow
  is to be ignored in the average, or for flow-rate weighting
  on surfaces with inconsistent orientation.

  Reworked to code to make better use of Enum (the NamedEnum
  replacement). Enum doesn't require contiguous enumeration values,
  which lets us use bitmasking of similar operations to reduce
  duplicate code.
2017-08-11 14:53:24 +02:00
b3128e6ced STYLE: replace file-local functions with the Ostream writeEntry() method
ENH: use std C++ for conversions instead of sscanf()
2017-08-11 08:39:45 +02:00
59b70b04d5 BUG: setSet: use of one-argument constructor. Fixes #566. 2017-08-10 18:41:22 +01:00
6d8a09fd63 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-08-10 14:43:18 +01:00
f73e5be2b8 ENH: overset: adjust fringe for interFoam 2017-08-10 14:42:39 +01:00
66c836e147 Merge branch 'bug-pstream-tokensending' into 'develop'
Bug pstream token sending

See merge request !140
2017-08-10 13:56:37 +01:00
c782b09322 ENH: Corrections to doxygen help 2017-08-10 11:14:10 +01:00
37e863521a ENH: make token constructors explicit (issue #563)
- access tokenType enum values more consistently.
2017-08-10 11:53:37 +02:00
a09125c3f9 STYLE: extraneous orientedWeightField in documentation (closes #565) 2017-08-10 10:15:55 +02:00
92d1d1f037 CONFIG: verify bash version for completion support
- the (global) associative array requires bash >= 4.2
2017-08-10 10:05:22 +02:00
c847d343af BUG: OPstream send of tokenType may swallow characters (fixes #563)
- the tokenType was being send via write(char), which includes
  isspace filtering. If the tokenType enumeration coincides
  with a whitespace character, it would be suppressed.

  Now add character directly to the buffer.

STYLE: some additional minor private methods to help refactoring

- readStringFromBuffer, writeStringToBuffer for common string
  operation.
2017-08-10 08:17:19 +02:00
4fc4f49cef ENH: Updated fieldAverage FO windowing. See #525
When specifying the averaging data, a new `windowType` option is
available, taking the values:

- none: no windowing
- approximate: past functionality (v1706 and earlier)
- exact: exact moving average - will store and write (for restart) all
  fields in the window
2017-08-09 16:52:03 +01:00
695716d5cc STYLE: use local variables in aliases/functions 2017-08-09 11:58:43 +02:00
18e96325ff Merge branch 'feature-mesh-stitching' into 'develop'
Feature mesh stitching

See merge request Development/OpenFOAM-plus!159
2017-11-04 11:39:11 +00:00
2ee1f73ff2 Merge branch 'feature-hash-table' into 'develop'
Improvements to HashTable internals

See merge request Development/OpenFOAM-plus!158
2017-11-03 17:40:33 +00:00
2ecfb3e986 CONFIG: update clang versions 2017-11-03 14:43:33 +01:00
c5344c3161 COMP: Resolved clang compiler error in transport model updates 2017-11-03 11:10:34 +00:00
f5795afaba STYLE: More use of constexpr for namespace variables 2017-11-03 11:09:17 +00:00
46e8543653 ENH: cell cutting: less verbose. Allow cutting single face. See #631. 2017-11-01 17:46:12 +00:00
053a648ee6 ENH: improvements to HashTable internals
- make single-parameter construct (label) explicit
- consolidate iterators
- slightly reduced overhead for some HashSet types
- improved resizing behaviour
- compact output for empty Ptr hashes
2017-10-31 08:46:47 +01:00
db552fb751 DEFEATURE: remove StaticHashTable
- unused, unmaintained and slower than the regular HashTable
2017-10-30 21:35:05 +01:00
930d6dcaf2 ENH: dummy I/O for nullObject, additional null subclass for zero/one
- the zero::null and one::null sub-classes add an additional null
  output adapter.

  The function of the nil class (special-purpose class only used for
  HashSet) is now taken by zero::null.
2017-10-31 10:54:17 +01:00
6f6029d0a6 COMP: LList: make constructor explicit. Fixes #630. 2017-10-30 16:58:42 +00:00
2851b885a1 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-10-30 11:44:51 +00:00
a79d2835f1 ENH: functionObjectList: format errors from FO reading. Fixes #575. 2017-10-30 11:43:12 +00:00
7e4f3a8237 STYLE: consistent rounding for float/double underflow (issue #625)
- use (value <= VSMALL) instead of (value < VSMALL) for consistency
  with what equal(value, 0) delivers.
2017-10-30 11:38:24 +01:00
ba8fdda5cc ENH: improve wcleanBuild, wcleanPlatform flexibility (issue #627)
- add -compiler=NAME option to remove a build or platforms directory
  corresponding to any specified compiler on the current arch.

- when -compiler or -compiler=NAME is specified, also clean related
  sub-directories as well. This will cleanup mpi-related directory.
2017-10-30 10:31:05 +01:00
cd46cb7041 ENH: consistent reverse iterator definitions for UList and FixedList
- consistent with C++ STL conventions, the reverse iterators should
  use operator++ to transit the list from rbegin() to rend().

  The previous implementation used raw pointers, which meant that they
  had the opposite behaviour: operator-- to transit from rbegin() to
  rend().

  The updated version only has operator++ defined, thus the compiler
  should catch any possible instances where people were using the old
  (incorrect) versions.

- updated forAllReverseIters() and forAllConstReverseIters() macros to
  be consistent with new implementation and with C++ STL conventions.
2017-10-29 20:57:43 +01:00
d6b32094e1 ENH: add reverse iteration macros
- forAllReverseIters and forAllReverseConstIters macros
- stdFoam::rbegin(), stdFoam::rend()
  stdFoam::crbegin(), stdFoam::crend()
2017-10-29 16:02:19 +01:00
15ac4e5c54 Merge branch 'feature-dictionary-scoping-lvalue' into 'develop'
Feature dictionary scoping lvalue

See merge request Development/OpenFOAM-plus!124
2017-10-29 15:36:07 +00:00
743e75b978 STYLE: code cleanup in stringOps 2017-10-29 13:53:34 +01:00
f76431c536 ENH: retain original FoamFile dictionary header when including files.
- previously using a top-level #include would inadvertently remove the
  original header
2017-10-29 12:37:47 +01:00
69786840af STYLE: code cleanup for includeEntry 2017-10-29 11:34:09 +01:00
b4b9303868 Merge branch 'style-list-methods' into 'develop'
Style list methods

See merge request Development/OpenFOAM-plus!157
2017-10-28 16:46:10 +01:00
9729edf293 STYLE: adjusted comments in natstrcmp 2017-10-28 17:38:42 +02:00
5b8b689a37 STYLE: split off HashTableCore into separate header 2017-10-27 16:13:45 +02:00
0a62fd2f87 ENH: allow passing of comparator to sortToc methods
- this increases the flexibility of the interface

- Add stringOps 'natural' string sorting comparison.
  Digits are sorted in their natural order, which means that
      (file10.txt file05.txt file2.txt)
  are sorted as
      (file2.txt file05.txt file10.txt)

STYLE: consistent naming of template parameters for comparators

  - Compare for normal binary predicates
  - ListComparePredicate for list compare binary predicates
2017-10-27 14:28:00 +02:00
8ec64d8128 STYLE: compilation of some unit tests 2017-10-26 23:59:18 +02:00
16e75d8475 ENH: add fileName::validate static method (issue #628)
- similar to word::validate to allow stripping of invalid characters
  without triggering a FatalError.

- use this validated fileName in Foam::readDir to avoid problems when
  a directory contains files with invalid characters in their names

- adjust rmDir to handle filenames with invalid characters

- fileName::equals() static method to compare strings while ignoring
  any differences that are solely due to duplicate slashes
2017-10-26 21:23:24 +02:00
4818b5808e ENH: snappyHexMesh: add different method for cellZone-faceZone consistency. Fixes #629. 2017-10-26 12:08:15 +01:00
2bd2f83f6e ENH: cleanup and rationalize memory-backed streams
- more consistent naming:
  * Versions that hold and manage their own memory:
      IListStream, OListStream

  * Versions that reference a fixed size external memory:
      UIListStream, UOListStream

- use List storage instead of DynamicList within OListStream.
  Avoids duplicate bookkeeping, more direct handling of resizing.
2017-10-26 12:09:47 +02:00
9d334e5601 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-10-26 09:11:24 +01:00
6fd6610b57 ENH: redistributePar: create dummy sets on non-existing processors 2017-10-26 09:10:21 +01:00
c1c4e91ffb ENH: handle underflow (rounding) of float/double as zero (issue #625)
- The problem occurs when using atof to parse values such as "1e-39"
  since this is out of range for a float and _can_ set errno to
  ERANGE.

  Similar to parsing of integers, now parse with the longest floating
  point representation "long double" via strtold (guaranteed to be
  part of C++11) and verify against the respective VGREAT values for
  overflow. Treat anything smaller than VSMALL to be zero.
2017-10-25 20:55:37 +02:00
9a7c236add Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-10-25 16:29:33 +01:00
49bcba2da7 ENH: snappyHexMesh: allow restart through suppression of refinement. Fixes #626. 2017-10-25 16:22:59 +01:00
f45832b537 COMP: finiteVolume: single precision build 2017-10-25 15:17:33 +01:00
5c1ec7ecb8 ENH: relocate protected List::size(label) to UList (issue #595)
- makes it accessible for containers that manage their own storage
  and derive directly from UList.

- DynamicList::min_size() method to access the corresponding
  SizeMin template parameter.

- ensure consistency in the reserve size for the constructor

      DynamicList<..> lst(N);

  now has identical sizing as

      DynamicList<..> lst();
      reserve(N);
2017-10-25 08:45:05 +02:00
88f6b8888c Merge branch 'feature-Arrhenius-viscocity-energyFO' into 'develop'
ENH: Arrhenius viscocity model for incompressible viscocity

See merge request Development/OpenFOAM-plus!155
2017-10-28 11:04:46 +01:00
ffabc42dbf ENH: Arrhenius viscocity model and energyTransport function-object
- Arrhenius viscocity model for incompressible viscocity.

- energyTransport FO for incompressible single and multiple phase
  flows and viscousDissipation fvOption source.

- Tutorial to show the use of energyTransport:
     multiphase/multiphaseInterFoam/laminar/mixerVessel2D

- Tutorial to show viscousDissipation:
     compressible/rhoPimpleFoam/RAS/TJunction
2017-10-25 10:17:55 -07:00
11da9bdc36 Merge branch 'feature-config-cray' into 'develop'
CONFIG: add settings for Cray compiler and cray mpich

See merge request Development/OpenFOAM-plus!138
2017-10-24 18:28:54 +01:00
7d7b0bfe84 STYLE: use list methods find/found instead of findIndex function 2017-10-24 19:07:34 +02:00
a6c918d6a3 Merge branch 'feature-io-streams' into 'develop'
low-level binary Ostream output, additional stream classes

See merge request Development/OpenFOAM-plus!156
2017-10-24 15:23:33 +01:00
2ab03f7abe STYLE: simplify stream types
- reduce coding clutter, avoiding allocated pointers when possible.
  IFstream and OFstream continue to use pointers since they handle
  compressed files, other streams can do without them.
2017-10-24 13:18:01 +02:00
88bb403fe0 ENH: new stream output: OListStream
- an output stream to a DynamicList
2017-10-24 11:59:11 +02:00
3cbf399470 BUG: failed swap/transfer for DynamicList with different sizing parameters
- now use public functions instead of direct access of private 'capacity_'
  information
2017-10-24 10:29:09 +02:00
7e8217fd17 ENH: include memory streams
- these provide a similar functionality to string-streams, but operate
  on a externally provided memory buffer which can be used to reduce
  the amount of copying.

- classes were previously staged as part of the ADIOS community
  repository.
2017-10-23 12:06:59 +02:00
2269294d36 ENH: use FixedList for dimensionSet storage
- makes it easier to transmit or stream as a list of scalars
2017-10-23 10:15:50 +02:00
0adf8d0a7e STYLE: use word methods to obtain IOobject member/group 2017-10-23 09:56:34 +02:00
e1167d9592 ENH: provide openmp compile and link flags.
- the USE_OMP preprocessor symbol is also defined with the openmp
  compile flag to allow conditional compilation of openmp-specific
  code.
2017-10-23 09:38:43 +02:00
953bd5bdca COMP: clang warnings 2017-10-23 09:09:59 +02:00
360ccea24e COMP: incorrect specialization for Swap(HashSet..) 2017-10-23 09:05:22 +02:00
af5f857618 ENH: add reset() method to IStringStream
- for convenience and symmetry with OStringStream

STYLE: void return value for stream rewind() methods

- this makes it easier to design bidirectional streams
2017-10-23 07:50:12 +02:00
f603e3e1de STYLE: pass through -test argument 2017-10-20 14:10:12 +02:00
74f667a85b ENH: additional low-level raw binary output for Ostream.
- low-level beginRaw(), writeRaw(), endRaw() methods.
  These can be used to directly add '()' decorators for serial output
  or prepare/cleanup parallel buffers.
  Used, for example, when outputting indirect lists in binary to avoid.
2017-10-20 10:26:55 +02:00
c792a9d7df TUT: script cleanup, provide cleanCase0 for commonly used operation 2017-10-12 19:20:56 +02:00
e16121af68 ENH: emit number of blocks for decomposedBlockData in header
- better documentation of the file contents.
- quicker to obtain number of blocks without reading an entire file.
2017-10-19 18:04:24 +02:00
10c512f9ef STYLE: note correct defaults for profiling 2017-10-19 17:25:53 +02:00
4cc8e9d4be Merge remote-tracking branch 'origin/master' into develop 2017-10-13 14:03:13 +01:00
b29f2a61b6 BUG: missing parallel-aware for metis-like decomposition 2017-10-13 12:45:28 +02:00
9b2a25516e ENH: make creation of streamline seeds demand-driven 2017-10-12 18:43:12 +02:00
f116217466 STYLE: remove FULLDEBUG output on readLabel, readScalar
- used in various places to test if the input can be parsed as a
  label/scalar, so warnings tend to flood the output.

- be more explicit when encountering range errors
2017-10-12 12:15:56 +02:00
9bb8f6aefc COMP: create lnInclude directory for kahip 2017-10-12 09:49:16 +02:00
5f98600b53 COMP: handle kahip .so version, and openmp dependency 2017-10-11 18:41:28 +02:00
c60627686a Merge branch 'feature-kahip-decompose' into 'develop'
add support for KaHIP decomposition

See merge request Development/OpenFOAM-plus!154
2017-10-11 16:36:48 +01:00
528bd95ae8 Merge branch 'feature-list-methods' into 'develop'
Feature list methods

See merge request Development/OpenFOAM-plus!152
2017-10-11 16:34:22 +01:00
27cd94e954 ENH: checkMesh: handle label overflow. Fixes #617. 2017-10-11 09:22:23 +01:00
874452717a ENH: add mergeMeshes -resultTime option (as per subsetMesh) 2017-10-10 12:46:40 +02:00
e9254eee58 ENH: support KaHIP decomposition
- refactor some common metis-like elements into the metisLikeDecomp
  abstract class.
2017-10-09 21:00:34 +02:00
051d1d661f ENH: surfaceFeatures: survive zero length edge. Fixes #616. 2017-10-09 15:34:10 +01:00
b5dc2a5e65 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-10-09 14:16:19 +01:00
caf4971261 BUG: rhoCentralFoam: correct/clean up oriented handling. Fixes #615. 2017-10-09 14:15:39 +01:00
37c6127338 COMP: Pstream: dummy version misses dependency of pthread (needed in OSspecific). Fixes #614. 2017-10-09 12:47:56 +01:00
e3d28272cf Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-10-09 09:57:19 +01:00
1a3a57f73d STYLE: CodedSource: remove space from description. Fixes #612. 2017-10-09 09:55:35 +01:00
4ba4899660 ENH: minor update of PackedList methods
- additional convenience constructors
2017-10-07 16:10:35 +02:00
f76552f7f9 STYLE: rebase edge on labelPair, additional methods in Pair
- use FixedList first/last in Pair first/second

- consistent first/second access for line
2017-10-06 20:10:49 +02:00
00b94c4a40 ENH: handle partially attached master/slave faces (issue #608)
- addresses problems if faces are already partly attached
  (eg, on a single vertex or along an edge).
2017-10-06 14:18:54 +02:00
85f5fb730f TUT: avoid backticks in scripts
- consistent versions in headers
2017-10-05 14:27:48 +02:00
c903c39763 BUG: Allrun: run in non-test mode. Handle ./Alltest correctly 2017-10-05 09:52:17 +01:00
b02623f974 STYLE: remove substring operator() (issue #554)
- duplicate functionality to the substr() method and more difficult to
  notice when it is being used.
2017-10-04 16:49:45 +02:00
8ae5b67a65 Merge branch 'feature-argList-report-host-subscription' into 'develop'
ENH: adjust infoSwitch to report host subscription (related to #531)

See merge request Development/OpenFOAM-plus!150
2017-10-04 10:33:10 +01:00
ff95b8446e BUG: index error when parsing integers from prefix_rayId_lambdaId 2017-10-04 11:16:29 +02:00
24577907a1 ENH: add faceZone::resetAddressing with constant flipMap
- remove unused static variable, use updated hashtable methods
2017-10-04 08:55:00 +02:00
44cfc93b82 STYLE: replace unused indirect{Cell,Face,Point}List typedefs
- provide shorter versions: pointIndList, pointUIndList, etc.
  and indirect versions of commonly used types:
     labelIndList, scalarIndList, vectorIndList
2017-10-04 08:50:30 +02:00
90c8c6d174 STYLE: add setHit/setMiss methods to objectHit
- consistency with PointHit and PointIndexHit
2017-10-04 08:50:00 +02:00
1cfb59fe1a ENH: add read-option for polyTopoChanger (issue #608)
- avoid meshModifier contents from being read immediately upon
  construction, since this recreates an existing modifier instead of
  allowing us to specify our own.
2017-10-04 08:19:39 +02:00
b9d97d96c1 ENH: expose null constructible dictionary searcher 2017-11-03 10:18:22 +01:00
a56a70b744 ENH: adjust infoSwitch to report host subscription (related to #531)
- this compact form shows the subscription per host in the unsorted
  mpi order

      nProcs : 18
      Hosts  :
      (
          (node1 6)
          (node2 8)
          (node3 4)
      )

  This provides a succinct overview of which hosts have been
  subscribed or oversubscribed.

- The longer list of "slave.pid" ... remains available on the
  InfoSwitch 'writeHosts'
2017-09-29 19:35:08 +02:00
049617d037 ENH: update List and DynamicList methods (issue #595)
- improve functional compatibility with DynList (remove methods)
  * eg, remove an element from any position in a DynamicList
  * reduce the number of template parameters
  * remove/subset regions of DynamicList

- propagate Swap template specializations for lists, hashtables

- move construct/assignment to various containers.

- add find/found methods for FixedList and UList for a more succinct
  (and clearer?) usage than the equivalent global findIndex() function.

- simplify List_FOR_ALL loops
2017-09-20 17:20:54 +02:00
68e7533847 STYLE: include <utility> in stdFoam, formatting of list loop macros 2017-09-20 17:01:56 +02:00
8b63772882 ENH: simplify parsing logic in ISstream 2017-08-09 13:45:30 +02:00
5da321b6e6 TUT: various blockMeshDict with convertToMeters instead of scale 2017-08-07 20:57:05 +02:00
49a5af48d6 Merge branch 'feature-robuster-ioobjectlist-construction' into 'develop'
Feature robuster IOobjectList construction

See merge request !134
2017-08-09 10:58:19 +01:00
dafb232e54 Merge branch 'feature-bash-completion' into 'develop'
Feature bash completion

See merge request !137
2017-08-09 10:57:14 +01:00
ce0868106a ENH: use bash associative array for on-the-fly completion (issue #551)
- this reduces the number of functions and allows lazy loading of
  completion options, which makes it easy to quickly add any other
  OpenFOAM application in completion.

  The generic '_of_complete_' function handles (bash) completion for
  any OpenFOAM application. On the first call for any particular
  application, it retrieves the available options from the application
  help output and adds this information to its environmental cache for
  subsequent use.

- Tcsh completion uses the same function via a bash wrapper.
  But since its wrapper is transient, the on-the-fly generation would
  be less efficient. For this case, a pre-generated completion_cache
  can be used, which is generated with

      bin/tools/foamCreateCompletionCache
2017-08-08 13:17:36 +02:00
5f538909fb Merge branch 'style-noiseDict-syntax' into 'develop'
STYLE: New syntax compatible with v1706 (Fixes #548)

See merge request !131
2017-08-08 09:53:28 +01:00
e0ebc8e973 Merge branch 'master' into develop 2017-08-07 11:54:44 +01:00
20267c68b4 BUG: Corrected false integer divisions. Fixes #557 2017-08-07 11:53:54 +01:00
e03ca4c466 CONFIG: add Cray compiler, cray mpich settings, wmake rules (fixes #558)
- the cray C/C++ compilers appear to be option-compatible with gcc.

- no wmake rules for 32bit builds (deemed to be unnecessary)
2017-08-04 11:09:32 +02:00
8682e04765 ENH: add forwards file for various hash table types 2017-08-03 17:24:32 +02:00
b7317e0916 CONFIG: unset tcsh completions when cleaninp up (issue #551) 2017-08-03 13:49:14 +02:00
78da7dbd7a CONFIG: additional filenames completion for bash_completion
- handles the case where we are currently completing something that
  does not appear to be an option. For example,

      foamDictionary -expanded someD[TAB]

  should complete the filename, not present more options.
2017-08-03 10:47:42 +02:00
41c103b769 STYLE: return const char* in CStringList::data()
- and other code style adjustments
2017-08-03 09:16:09 +02:00
5148e4f860 STYLE: manage dictionary inputMode directly within entry class
- The logic for switching input-mode was previously completely
  encapsulated within the #inputMode directive, but without any
  programming equivalent. Furthermore, the encapsulation in inputMode
  made the logic less clear in other places.

  Exposing the inputMode as an enum with direct access from entry
  simplifies things a fair bit.

- eliminate one level of else/if nesting in entryIO.C for clearer logic

- for dictionary function entries, simply use
  addNamedToMemberFunctionSelectionTable() and avoid defining a type()
  as a static. For most function entries the information is only used
  to get a name for the selection table lookup anyhow.
2017-08-03 07:14:17 +02:00
c2a0663cc7 TUT: use general 'scale' instead of 'convertToMeters' in blockMeshDict
- although this has been supported for many years, the tutorials
  continued to use "convertToMeters" entry, which is specific to blockMesh.
  The "scale" is more consistent with other dictionaries.

ENH:
- ignore "scale 0;" (treat as no scaling) for blockMeshDict,
  consistent with use elsewhere.
2017-08-03 06:38:30 +02:00
8e4f015253 Merge branch 'style-string-methods' into 'develop'
Style string methods

See merge request !136
2017-08-02 16:28:42 +01:00
5ca19c2934 ENH: add tcsh completion functionality (issue #551)
- currently no cleanup of completions when deactivating an OpenFOAM
  tcsh environment

- tab completion with directories adds a space after the slash, which
  makes navigation a bit annoying.
2017-08-02 16:54:47 +02:00
46a2a73611 ENH: static versions of fileName clean(), path(), name()
- useful operations for other string representations of fileName types.

  The return type is in general a std::string with any narrowing
  being done by the caller on the return value.
2017-08-02 13:44:37 +02:00
e70fc61660 ENH: consolidate, cleanup some string methods
- consolidate word::validated() into word::validate() and also allow
  as short form for string::validate<word>(). Also less confusing than
  having similarly named methods that essentially do the same thing.

- more consistent const access when iterating over strings

- add valid(char) for keyType and wordRe
2017-08-02 12:33:35 +02:00
3f6e130c91 STYLE: flatten PVReaders directory structure 2017-08-02 11:19:57 +02:00
cfcfd53b84 Merge remote-tracking branch 'origin/master' into develop 2017-07-31 16:45:32 +02:00
d581b7d7b8 ENH: ignore lone dash on the command-line (issue #553)
- can inadvertently arise from TAB-completion, but an option without a
  name doesn't make sense, we trap this and emit a warning.
2017-07-31 16:34:43 +02:00
c614110d46 ENH: improve bash completion functionality (issue #551)
- use complete -o filenames, dropped -o nospace to make it more responsive.

- restructure completion code to use a unified backend, which makes it easier
  understand, maintain and re-use.

- foamCreateBashCompletions now simply outputs to a stdout, and allows
  quick generation of completion of single applications.

- add -fileHandler completion in anticipation of future changes there.

- relocated as etc/config.s/bash_completion to prevent inadvertently
  having two versions (.com, .org) installed at the same time.
2017-07-31 15:35:40 +02:00
4e48beffd4 ENH: support "one-shot" changes to the dictionary inputMode (issue #429)
- Instead of relying on #inputMode to effect a global change it is now
  possible (and recommended) to a temporary change in the inputMode
  for the following entry.

     #default   : provide default value if entry is not already defined
     #overwrite : silently remove a previously existing entry
     #warn      : warn about duplicate entries
     #error     : error if any duplicate entries occur
     #merge     : merge sub-dictionaries when possible (the default mode)

  This is generally less cumbersome than the switching the global
  inputMode. For example to provide a set of fallback values.

      #includeIfPresent "user-files"
      ...
      #default value uniform 10;

  vs.

      #includeIfPresent "user-files"
      #inputMode protect
      ...
      value uniform 10;
      #inputMode merge    // _Assuming_ we actually had this before

  These directives can also be used to suppress the normal dictionary
  merge semantics:

     #overwrite dict { entry val; ... }
2017-07-29 17:44:22 +02:00
9923ec969b ENH: more graceful handling of invalid IOobject headers (issue #539)
- With special-purpose templating it is possible to have file contents
  that almost look like an OpenFOAM file, but which are not.
  The contents do not need to be deliberately tricky, even the simplest
  README:

      FoamFile is the first word parsed in OpenFOAM files

  will trigger problems.
  We now trap any IOerror on these and reject this type of file as invalid.
2017-07-29 13:22:24 +02:00
797155f862 ENH: additional method for switching error throwing on/off (issue #552)
- error::throwExceptions(bool) returning the previous state makes it
  easier to set and restore states.

- throwing() method to query the current handling (if required).

- the normal error::throwExceptions() and error::dontThrowExceptions()
  also return the previous state, to make it easier to restore later.
2017-07-29 12:25:30 +02:00
41eafeb020 Merge branch 'fix-motorbike-visc' into 'develop'
BUG: Correct viscosity in simpleFoam motorBike tutorial (fixes #550)

See merge request !132
2017-07-28 10:34:17 +01:00
9b05e43626 BUG: Fix viscosity in simpleFoam motorBike tutorial (fixes #550) 2017-07-27 19:55:12 -04:00
8f11aeabaf BUG: Fix viscosity in simpleFoam motorBike tutorial (fixes #550) 2017-07-27 19:55:12 -04:00
96edef9d5e STYLE: New syntax compatible with v1706 2017-07-26 11:28:26 +05:30
efff02bbb7 BUG: incorrect range check in foamHelp (closes #547) 2017-07-22 23:54:08 +02:00
fce9545781 BUG: incorrect range check in foamHelp (closes #547) 2017-07-22 23:54:08 +02:00
41b40c6c2a COMP: typo in entry.H causing regression - fixes #546 2017-07-22 23:25:03 +02:00
a1742e7ad6 Merge branch 'style-string-access' into 'develop'
Consistent use of string methods

See merge request !128
2017-07-21 16:04:35 +01:00
7b4226ac4b Merge branch 'regression-icc' into 'develop'
Regression icc

See merge request !129
2017-07-21 16:04:17 +01:00
b0b4c1aae5 COMP: intel compiler issues with operator ""_deg (fixes #544)
- this represents a partial revert for commit 6a0a8b99b3
2017-07-21 16:40:31 +02:00
c0c7c39031 ENH: provide direct pointer access to dictionaryEntry 2017-07-21 12:05:32 +02:00
2c69b7d7c4 STYLE: adjust some line lengths, doxygen comments 2017-07-20 13:50:35 +02:00
01292a9a76 BUG: failed check for scotch headers on ubuntu (closes #543)
- installed under /usr/include/scotch/scotch.h

ENH: obtain fallback value for SCOTCH_VERSION from the header

COMP: add support for metis, scotch static libraries (eg, EasyBuild)
2017-07-20 12:15:08 +02:00
2fdc6b161a ENH: support full-scoping for keywords as lvalue (issue #429)
- patterns only supported for the final element.

  To create an element as a pattern instead of a word, an embedded
  string quote (single or double) is used for that element.
  Any of the following examples:

      "/top/sub/dict/'(p|U).*"     100;
      "/top/sub/dict/'(p|U).*'"    100;
      "/top/sub/dict/\"(p|U).*"    100;
      "/top/sub/dict/\"(p|U).*\""  100;

  are equivalent to the longer form:

      top
      {
          sub
          {
              dict
              {
                  "(p|U).*"     100;
              }
          }
      }

  It is not currently possible to auto-vivify intermediate
  dictionaries with patterns.

    NOK   "/nonexistent.*/value"   100;
    OK    "/existing.*/value"      100;

- full scoping also works for the #remove directive

        #remove "/dict1/subdict2/entry1"
2017-07-20 10:58:05 +02:00
f304c7e830 ENH: no dictionary variable and function expansion when discarding entry
- the 'protect' inputMode is used to supply defaults.
  If an entry already exists, it should act as a no-op without any
  side-effects whatsoever.
2017-07-20 10:27:35 +02:00
6a62c6bd63 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-07-19 20:04:31 +01:00
5711061624 COMP: foamList: missing fallback library. Fixes #541. 2017-07-19 20:03:59 +01:00
922ea5667e BUG: IOobject interpretation of ./ in construct-from-fileName (closes #482)
- Resolve ambiguity by using the following rules:

  1) starts with '/'  =>  absolute file-system path
  2) starts with './' or '../'  =>  file-system path relative to CWD
  3) otherwise treat as relative to the case

STYLE: allow write access to headerClassName
2017-07-19 12:09:43 +02:00
cc290b7c02 ENH: improve dictionary parsing behaviour for ill-formed entries (closes #510)
- mostly associated with forgotten quotes around "(abd|def)" ...

- Address different potential problems:

      (key) { key1   entry1; }
      (key) { key1   entry1; };    // <- Note trailing ';'
      (key) entry2;
2017-07-19 11:00:44 +02:00
b85457fc35 STYLE: Updated directory names for interCondensatingEvaporatingFoam solver. Fixes #533 2017-07-19 08:24:17 +01:00
efe9b04adc Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-07-19 08:19:15 +01:00
67e6f54808 Merge branch 'feature-streams-cleanup' into 'develop'
Feature streams cleanup

See merge request !127
2017-07-18 12:48:31 +01:00
263d7efae2 Merge branch 'stylefix-checkMesh' into 'develop'
STYLE: checkMesh: remove duplicate writeSets entry from header (resolves #293)

See merge request !125
2017-07-18 12:17:01 +01:00
b0db30ba2f Merge branch 'feature-externalFileCoupler' into 'develop'
Feature external file coupler

See merge request !126
2017-07-18 11:12:05 +01:00
db376a412d ENH: improved behaviour of input stream rewind (issue #534)
- clear error flags. Special handling for igzstream.
2017-07-18 11:10:51 +02:00
6d2f870f83 STYLE: minor typos in comments 2017-07-18 09:01:43 +02:00
b4b50a3aa8 ENH: added OStringStream reset method (closes #534)
- resets the output buffer completely - implementing what rewind was
  likely meant to have accomplished for many use cases.

STYLE: OSHA1stream reset() for symmetry. Deprecate rewind().
2017-07-17 18:32:42 +02:00
86ef9e86dc ENH: make treatment of stream allocators more uniform (issue #532)
- use allocator class to wrap the stream pointers instead of passing
  them into ISstream, OSstream and using a dynamic cast to delete
  then. This is especially important if we will have a bidirectional
  stream (can't delete twice!).

STYLE:

- file stream constructors with std::string (C++11)

- for rewind, explicit about in|out direction. This is not currently
  important, but avoids surprises with any future bidirectional access.

- combined string streams in StringStream.H header.
  Similar to <sstream> include that has both input and output string
  streams.
2017-07-17 15:14:38 +02:00
8399277d7d STYLE: eliminate duplicate includes (issue #293) 2017-07-17 14:44:05 +02:00
da24358314 ENH: provide direct access to file-stat size 2017-07-17 13:49:08 +02:00
454ad5162c STYLE: Use C++11 and OpenFOAM-1706 methods in externalCoupled 2017-07-17 13:41:14 +02:00
7a408c713b ENH: refactor and combine externalFileCoupler (issue #529) 2017-07-17 12:54:02 +02:00
e082be566b STYLE: use Enum for #inputMode selection 2017-07-17 11:57:53 +02:00
751f11089a Merge remote-tracking branch 'origin/master' into develop 2017-07-20 12:17:26 +02:00
e045d6c03b ENH: limit file checks in the abort function object to the master process
- do not recheck the abort after it has been triggered once.
  This reduces the output clutter and file checks.
2017-07-17 10:47:10 +02:00
dd0c26568a STYLE: checkMesh: remove duplicate writeSets entry from header (resolves #293) 2017-07-16 10:31:33 -04:00
2fe3a62057 STYLE: use nullptr instead of 0 in autoPtr, tmp etc. 2017-07-14 16:50:21 +02:00
b287d1bddd CONFIG: cpu/sys information in profiling now OFF by default (issue #526)
- since the cpu/sys information is invariant, it doesn't make much
  sense to emit by default at every time-step.
2017-07-14 16:41:15 +02:00
7380f53efb ENH: add infoSwitch to control reporting of slaves/roots (closes #531)
- With many processors, the number of entries becomes quite large.

  New controlDict InfoSwitches: "writeSlaves", "writeRoots".
2017-07-14 16:22:23 +02:00
e6717b6e72 triSurfaceMesh: corrected parallel operation of 'file' specification
Patch contributed by Mattijs Janssens
Resolves bug-report https://bugs.openfoam.org/view.php?id=2614
2017-07-14 12:38:21 +01:00
d7ff97f490 lagrangian: Optimised reduced-dimension constraints
The 4.x tracking enforces reduced dimensionality on the parcels by
moving them to the centre of the mesh at the start of each track,
without considering the topology. This can leave the parcel outside it's
associated tetrahedron.

The barycentric algorithm isn't tolerant to incorrect topology, so
instead of changing position, it was written to track to the mesh
centre. This worked, but effectively doubled the number of tracking
calls. This additional cost has now been removed by absorbing the
constraint displacement into the existing motion track, so that the same
number of tracking steps are performed as before.

Partially resolves bug report https://bugs.openfoam.org/view.php?id=2688
2017-09-12 08:39:58 +01:00
094775ce7f COMP: Added support for gcc 7.2.0 2017-09-14 14:38:53 +01:00
0fdcb12759 Updated to avoid warnings from gcc-7.1.1 2017-07-31 13:46:42 +01:00
d7fd550e61 ENH: Reinstated the wallBoundedStreamline function object
Note: performs its own tracking and does not rely on the base
particle::trackXXX functions, and uses a local particle position.

Look to update to barycentric tracking in the future.
2017-09-14 12:02:03 +01:00
2defba00a9 ENH: Lagrangian - provided backwards compatibility for cases using the
old "positions" file form

The change to barycentric-based tracking changed the contents of the
cloud "positions" file to a new format comprising the barycentric
co-ordinates and other cell position-based info.  This broke
backwards compatibility, providing no option to restart old cases
(v1706 and earlier), and caused difficulties for dependent code, e.g.
for post-processing utilities that could only infer the contents only
after reading.

The barycentric position info is now written to a file called
"coordinates" with provision to restart old cases for which only the
"positions" file is available. Related utilities, e.g. for parallel
running and data conversion have been updated to be able to support both
file types.

To write the "positions" file by default, use set the following option
in the InfoSwitches section of the controlDict:

    writeLagrangianPositions 1;
2017-09-13 13:13:36 +01:00
87e3da80ec viewFactor: Average T^4 rather than T for consistent heat-flux
Resolves bug-report https://bugs.openfoam.org/view.php?id=2649
2017-08-07 10:56:44 +01:00
4b0ff45d40 externalWallHeatFluxTemperature: Allow manipulation of the boundary values
Provides support for the limitTemperature fvOption.

Resolves bug-report https://bugs.openfoam.org/view.php?id=2675
2017-08-29 16:47:21 +01:00
f8a8857cae limitTemperature: added support for multiphase solvers
Based on patch contributed by Juho Peltola, VTT

Resolves feature request https://bugs.openfoam.org/view.php?id=2572
2017-09-04 16:52:03 +01:00
9a1435ed9b Corrected correspondence between #ifdef .*_H and the class name
Resolves bug-report https://bugs.openfoam.org/view.php?id=2686
2017-09-04 17:09:21 +01:00
d5ce6f35e2 Corrected correspondence between #ifdef .*_H and the class name
Resolves bug-report https://bugs.openfoam.org/view.php?id=2686
2017-09-04 16:50:30 +01:00
c7660123ed ThermoSurfaceFilm: Corrected the splash kinetic energy
The splash kinetic energy has been changed to depend upon the velocity
of the parcel normal to the wall, rather than the absolute velocity, in
accordance with the original reference.

This patch was contributed by Stefan Hildenbrand at Pfinder
Resolves bug report https://bugs.openfoam.org/view.php?id=2682
2017-09-05 09:50:46 +01:00
95018c685d ThermoParcel, ReactingParcel: Removed continuous phase data 2017-08-29 15:44:55 +01:00
3e85a5ab4b INT: clean-up 2017-09-08 17:09:15 +01:00
402b86371c KinematicParcel: Removed continuous phase data
Interpolated continuous phase data is only needed during a track and
therefore shouldn't be stored on the parcel. The continuous velocity,
density and viscosity have been moved from the kinematic parcel to the
kinematic parcel tracking data. This reduces the memory usage of the
kinematic layer by about one third. The thermo and reacting layers still
require the same treatment.
2017-08-29 08:42:53 +01:00
30c2f8fa8d lagrangian: Removed unused wall impact distance methods 2017-08-24 16:09:08 +01:00
d0f39f96c4 lagrangian: Removed duplicate hit-processor handling 2017-08-23 16:31:13 +01:00
b8440c4232 lagrangian: Removed unnecessary patch argument from hit methods
The patch can be determined from the particle when it is needed. Most of
the time it is not.
2017-08-23 16:27:36 +01:00
d8782db651 INT: Re-instated escpaed mass 2017-09-08 16:40:14 +01:00
b78d844cf4 lagrangian: Removed duplicate data from method arguments
A lot of methods were taking argument data which could be referenced or
generated from the parcel class at little or no additional cost. This
was confusing and generated the possibility of inconsistent data states.
2017-08-23 15:14:32 +01:00
22bd391903 lagrangian: Simplification of parallel transfer 2017-08-22 17:57:11 +01:00
241879ecf4 INT: minor clean-up after after latest integrations 2017-09-08 16:07:15 +01:00
87c15bf1c6 lagrangian: Un-templated the tracking data
Tracking data classes are no longer templated on the derived cloud type.
The advantage of this is that they can now be passed to sub models. This
should allow continuous phase data to be removed from the parcel
classes. The disadvantage is that every function which once took a
templated TrackData argument now needs an additional TrackCloudType
argument in order to perform the necessary down-casting.
2017-08-22 15:28:04 +01:00
14d2a1efcf tmpNrc: Updated to use clone 2017-07-14 09:32:02 +01:00
68d879b5e4 GAMG: removed warnComm 2017-09-01 16:40:43 +01:00
e3baecec0b PairCollision: Removed unnecessary operations
Resolves bug report https://bugs.openfoam.org/view.php?id=2680
2017-09-01 13:42:33 +01:00
cf0d7a604f BUG: compressibleMultiphaseInterFoam: Corrected update of dgdt for multiple phases
Resolves bug-report https://bugs.openfoam.org/view.php?id=2677
2017-08-29 14:48:32 +01:00
791e1ca2d2 Merged reactingParcelFilmFoam into reactingParcelFoam
The combined solver includes the most advanced and general functionality from
each solver including:

    Continuous phase
    Lagrangian multiphase parcels
    Optional film
    Continuous and Lagrangian phase reactions
    Radiation
    Strong buoyancy force support by solving for p_rgh

The reactingParcelFoam and reactingParcelFilmFoam tutorials have been combined
and updated.
2017-08-29 09:33:45 +01:00
5cb3bb7bc6 reactingParcelFilmFoam: Added LTS support 2017-08-22 14:00:42 +01:00
fe3771f3d5 surfaceFilmModels::function1Viscosity: New viscosity modifier
Description
    The Foam::Function1 temperature-dependent viscosity model multiplies the
    viscosity of a base model by a Function1 temperature function.
2017-07-26 15:01:08 +01:00
151f641fee compressibleInterFilmFoam::VoFSolidificationMeltingSource: New VoF solidification fvOption 2017-07-20 18:15:27 +01:00
577593ea34 INT: Added missing #include statement 2017-09-08 13:19:50 +01:00
ecb2f03973 surfaceFilmModels::transferModelList: Resolve problem with the Intel C++ compiler 2017-07-25 12:19:37 +01:00
58cc6b8b82 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-07-13 14:47:54 +01:00
aa969ec157 BUG: IOobject: interpretation of ./ in construct-from-fileName. Fixes #482. 2017-07-13 14:47:20 +01:00
c880d7dc7d ENH: support '/' separators in foamDictionary
- convenience -diffEtc option that behaves like -diff, but invokes
  foamEtcFile searching

STYLE: modernize code.
2017-07-13 09:46:07 +02:00
9e88a8a21e ENH: enable profiling output for postProcess and -postProcess (closes #526)
- added an explicit print, but only report profiling to the log
  file from master process.

  We don't wish to overwrite any profiling that was conducted during
  the simulation. Besides which, we don't have a proper Time object
  for handling the write nicely either.
2017-07-12 15:48:25 +02:00
9161c228c3 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-07-12 10:58:53 +01:00
0a65b142cf BUG: snappyHexMesh: calculate surface normals if face splitting. Fixes #522. 2017-07-12 10:58:21 +01:00
a6ef10506d ENH: respect the I_MPI_ROOT setting for INTELMPI (issue #524)
- add note in BuildIssues about the I_MPI_CC variable, which is needed
  when building with Intel-MPI and gcc/clang.

  This additional setting is needed since the changes needed to solve
  the issue of building scotch with Intel-MPI and icc (issue #434)
  means that mpiicc is now being used as the wrapper when compiling
  scotch.

- have the FOAM_MPI short name for INTELMPI start with 'impi-' instead
  of just the version number.
  Intel-MPI is often installed as /opt/intel/impi/4.1.3.049, which
  results in 'FOAM_MPI=4.1.3.049' and the mpi flavour is lost.
  Prefix these cases with 'impi-'
2017-07-12 11:02:04 +02:00
2183907afe Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-07-12 09:19:01 +01:00
f932e25556 ENH: mergeOrSplitBaffles: fix header. See #468. 2017-07-12 09:17:48 +01:00
cce74d493b ENH: remove deprecated ensight output order (issue #523)
- Added for transition purposes only in 1612 but can now be removed.
2017-07-11 14:57:05 +02:00
ded09d6461 STYLE: relocate deprecated utilities into separate directory 2017-07-11 14:47:50 +02:00
ac0053b8b2 Merge branch 'feature-post-release-cleaning' into 'develop'
Feature post release cleaning

See merge request !123
2017-07-11 12:45:20 +01:00
c76ae7abb3 COMP: add support for metis, scotch static libraries (eg, EasyBuild) 2017-07-11 11:36:37 +02:00
2b249e1ad3 STYLE: avoid default copyright assignment when generating from code templates 2017-07-11 08:58:52 +02:00
9097801105 STYLE: additional divisions for code templates 2017-07-11 08:48:10 +02:00
971213eb55 ENH: add dictionary searcher methods
- csearch(), search(), csearchScoped(), searchScoped() methods
  can be used to find an entry and also retain the enclosing
  dictionary context.

- To avoid ambiguity between a dot (.) as a scoping character and
  legal part of a keyword, entries can now be accessed directly using
  slash-scoping semantics similar to file-names:

    * cfindScopedDictPtr, findScopedDictPtr

- To get or create a sub-dictionary entry:

    * makeScopedDictPtr, which behaves similarly to mkdirp in that it
      will create any intermediate dictionaries as required.
2017-07-10 14:06:45 +02:00
f26989d52e ENH: allow '/' in ${...} blocks for future entry scoping (issue #429)
- Eg, "${scope/name}" to be supported with this.
2017-07-10 13:25:10 +02:00
910967c070 ENH: add Foam::SubStrings container and stringOps::split
- generic means of holding ranges of substring iterators
2017-07-20 19:53:57 +02:00
8df433860f STYLE: use string substr instead of string::operator()
- makes the purpose clearer.
  In some places, string::resize() is even simpler.

- use C++11 string::back() in preference to str[str.size()-1]
2017-07-21 12:30:42 +02:00
72f242405a STYLE: word::validated without underscore prefix by default (issue #518)
- this now appears to be the more common use case.
2017-07-18 14:09:49 +02:00
0456c5976d STYLE: remove special treatment for 'include' keyword (closes #521)
- a holdover from OpenFOAM 1.4 (prior to the #include dictionary directive)
2017-07-10 10:30:15 +02:00
a107e9b229 thermoSingleLayer::q: Use a local "alpha" without hydrophilic/phobic adjustment
Resolves bug-report https://bugs.openfoam.org/view.php?id=2605
2017-07-10 08:25:09 +01:00
f304b70177 STYLE: simplify string handling for expansions in primitiveEntry 2017-07-07 19:42:57 +02:00
a09815fae2 Merge branch 'feature-post-release-cleaning' into 'develop'
Feature post release cleaning

See merge request !122
2017-07-07 17:29:06 +01:00
6afa62a6e4 STYLE: use shell 'command' instead of 'which' in tutorials 2017-07-07 16:00:57 +02:00
e7da4f0d07 TUT: adjust surfaceFeatureExtractDict to remove optional sub-dictionary
- as of v1706
  extractFromSurfaceCoeffs { ... } is an optional subdictionary
2017-07-07 15:41:18 +02:00
acb5d54e41 STYLE: initializer_list instead of IStringStream for static list construction 2017-07-07 12:54:54 +02:00
a47e0748c4 STYLE: Code tidying 2017-07-07 11:50:40 +01:00
91b6f37c73 ENH: wallHeatFlux FO - removed hard-coding of qr name 2017-07-07 11:49:14 +01:00
51d46079df ENH: consolidate table bounding (issue #520)
- replace duplicate code with global bounds enums and Enum
2017-07-07 12:37:25 +02:00
45dabbfe2b ENH: provide Enum failsafe lookup
- if the enum name is not found, then warn and return the default.
2017-07-07 12:33:41 +02:00
42bf91f3a5 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-07-06 13:46:15 +01:00
c55dc32501 BUG: triSurfaceMesh: construct-from-triSurface refers to original surface. Fixes #519. 2017-07-06 13:45:25 +01:00
84e47f2d2a ENH: cleanup dictionary code
- use typedefs and new features/methods
- file-scope template to avoid code duplication.
2017-07-06 12:58:04 +02:00
162e9126f3 STYLE: adjust internal coding for handing IOobject filename (related to #482)
- make the purpose of various parts clearer
2017-07-06 11:34:35 +02:00
5d282722c1 ENH: add optional parameter to word::validated (issue #518)
- can now suppress prefixing an underscore to leading digits.
2017-07-06 10:58:48 +02:00
818c9b2da3 STYLE: adjust coding style for C++11 features and OpenFOAM-1706 methods 2017-07-06 09:23:09 +02:00
c50368ecc6 ENH: add trapFpe and setNaN optimisationSwitch (issue #517)
- allows configuration without an environment variable.
  For compatibility still respect FOAM_SIGFPE and FOAM_SETNAN
  env-variables

- The env-variables are now treated as true/false switch values.
  Previously there was just a check for env exists or not, but this
  can be fairly fragile for a user's environment.
2017-07-05 17:49:37 +02:00
e54a930dcc ENH: add mpiBufferSize optimisationSwitch (issue #517)
- allows configuration without an environment variable.
  For compatibility still respect MPI_BUFFER_SIZE env-variable.
2017-07-05 15:52:44 +02:00
a4c81f5962 ENH: make streams name() methods virtual throughout (issue #479) 2017-07-04 17:17:09 +02:00
6a0a8b99b3 STYLE: use ""_deg user-literal for degrees to radians conversion
ENH: add degToRad() multiplier (useful for scalar fields)

- use degToRad() functions throughout instead of scattered local solutions
2017-07-04 15:36:46 +02:00
e62e34f0f0 ENH: add -cellZone option to foamToVTK 2017-07-04 14:16:18 +02:00
6dd5a5f35f BUG: foamToVTK -cellSet produces rubbish or segfault (closes #516)
- erroneous double logic for subset meshes.

  The underlying vtk::vtuCells uses a cellMap to map into a global
  field, which also allows handling of decomposed polyhedral cells.

  If a mesh subset is involved (eg, cellSet, cellZone), then the
  set/zone cellMap can be used to ensure that the original number is
  properly adjusted. For foamToVTK, the meshSubsetHelper already
  does the subsetting and is used when loading fields.

  Does not affect ParaView reader module since there we work on the
  full field and do the subsetting manually (using the cellMap).
2017-07-04 13:19:16 +02:00
c5bd5393df ENH: lazier field loading in foamToVTK
- avoid loading surface fields if there are no faceZones

- avoid pointMesh if there are no appropriate point fields
2017-07-04 11:57:54 +02:00
f55c568f13 ENH: upgrade from NamedEnum to Enum (issue #515) 2017-07-03 21:43:33 +02:00
575073890f STYLE: spacing of multi-level template parameters 2017-07-05 15:06:06 +02:00
1bcb454f6d STYLE: hash constructors with power-of-two
- use 1024 instead of 1000 since it will be changed internally to 1024 anyhow.
2017-07-05 10:46:50 +02:00
efc21270ea STYLE: regExp with explicit constructor
- use separate constructor for ignore-case option (cf. wordRe treatment)

- constructors/destructor now inline.
2017-07-05 09:15:52 +02:00
aefb739584 STYLE: fix permissions on files, remove unused files 2017-07-03 12:15:41 +02:00
1d56e9f136 STYLE: use auto with vtkSmartPointer 2017-07-03 13:33:53 +02:00
7ac55ac74a ENH: consolidate arch and version strings (issue #513)
- make some IOobject writing routines non-templated.

- relocate more IOobject methods into the IOobjectI.H
  (generally cleanup the main header).
2017-07-03 13:24:08 +02:00
bc1f2fa97e STYLE: use auto and cfind to simplify selector usage (issue #512) 2017-07-03 10:36:03 +02:00
2910240040 Merge branch 'develop' into 'master'
Merge develop into master for v1706 release

Closes #505, #509, #497, #502, #500, #498, #493, #492, #490, #485, #486, #484, #481, #480, #467, #473, #470, #466, #464, #463, #460, #462, #458, #418, #420, #391, #452, #454, #453, #439, #427, #415, #422, #414, #411, #400, #398, and #348

See merge request !121
2017-06-29 21:09:51 +01:00
c84bf48873 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-29 19:49:55 +01:00
4518004df4 TUT: Updated RutlandVortex case - Thanks to Thilo Knacke 2017-06-29 19:49:32 +01:00
31172408ee Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-29 17:34:23 +01:00
0e465e0f5d BUG: label64: write primitives consistent with label size. Fixes #505. 2017-06-29 17:33:40 +01:00
2f62d94e8b BUG: CollidingParcel: is not contiguous since have collisionRecords_ 2017-06-29 17:16:38 +01:00
07d9d3fc04 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-29 14:18:41 +01:00
a900153f57 ENH: Added new vortexShed tutorial to show vortex shedding and use of the Curle function object 2017-06-29 14:18:19 +01:00
7dbb3b657d ENH: argList - onlycheck for decomposeParDict when checkProcessorDirectories_ is true 2017-06-29 14:10:12 +01:00
a40798c71e STYLE: Updated copyright year 2017-06-29 14:09:34 +01:00
7ac88c13d9 ENH: Updated oriented flag for backwards compatibility 2017-06-29 13:37:08 +01:00
00a5b61bd2 ENH: making pcEqn.H similar to pEqn.H.
STY: Fixing syntax in rhoPimpleDyMFoam/pEqn.H
2017-06-28 14:36:25 -07:00
29d613dae4 BUG: Changing V0 not to be registered in order to avoid mapping. But writing it down
by fvMesh.writeObject().
2017-06-28 12:11:24 -07:00
e5f6d3166c Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-28 08:58:50 -07:00
cec7eb9518 ENH: add basic arch information to the output (issue #361)
- end user can easily see which arch (endian, label/scalar size) was
  used from the log output, or via -help usage
2017-06-28 17:41:15 +02:00
a2d8e6e4f5 STYLE: remove old references to 'dx' and 'foamFile' 2017-06-28 16:11:24 +02:00
15de34427c Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-28 15:07:04 +01:00
2355f1aa38 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-28 14:08:02 +01:00
bb2041ef69 BUG: reactionSensitivity - corrected integral calculations 2017-06-28 14:07:57 +01:00
367095f666 BUG: Correction for commit ead256f50 2017-06-28 14:07:26 +01:00
191c8534e7 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-28 12:46:24 +01:00
c5c48205fe BUG: pitzDaily: remove DebugSwitches 2017-06-28 12:46:01 +01:00
b39eece156 CONFIG: revert to openmpi-1.10.4
- this is the same version as OpenFOAM-1612 shipped with and seems to
  have fewer issues than the newer openmpi-2.1.1
2017-06-28 13:37:50 +02:00
0f547660ce TUT: make it easier to perform dry runs for lumpedPointMotion 2017-06-28 12:16:38 +02:00
1c05248249 Merge branch 'feature-rhoPimpleAdiabatic' into 'develop'
Feature rho pimple adiabatic

See merge request !118
2017-06-28 10:25:08 +01:00
e98214b0ad BUG: Updating rho at the end of the pEq for rhoPimpleDyMFoam and limiting is needed 2017-06-27 15:47:53 -07:00
50cc938677 ENH: Setting V0 to NO_WRITE, but registered in the database 2017-06-27 08:56:39 -07:00
ff2a811bdb Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-27 08:13:09 -07:00
708a887077 ENH: change of setting for tutorials 2017-06-27 08:05:15 -07:00
5bab287985 compressibleInterFilmFoam: Experimental VoF solver supporting VoF<->film transfer 2017-06-27 15:55:43 +01:00
aca6870580 TUT: Updated writeCompression flag entries 2017-06-27 15:55:20 +01:00
87680a06fa Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-27 15:51:47 +01:00
bd803d80c6 TUT: Removed unused nMoles entries 2017-06-27 15:51:34 +01:00
fb4a51cf16 CONFIG: update bashcompletions 2017-06-27 15:59:18 +02:00
e4bfefa396 STYLE: Minor tidying 2017-06-27 11:22:03 +01:00
9e0235cd2a Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-27 11:19:18 +01:00
bf2ed1abcf ENH: Updated pressure-work term creation for moving meshes 2017-06-27 11:18:55 +01:00
df403965ab ENH: suppress wmkdep 'No such file' warnings in wmake -silent mode 2017-06-27 09:29:56 +02:00
2582190820 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-26 20:13:19 +01:00
e84c788b03 ENH: Updated the maxwellSlipU BC to derive from the partialSlip BC 2017-06-26 20:12:11 +01:00
bd5c0a3036 ENH: Updated partialSlip BC to enable users to specify the value at zero
slip

The old behaviour assumed that the no-slip value was zero.  This has
been extended to enable the user to supply a refValue - the value at
zero slip.

This was similar to the mixedFixedValueSlipFvPatchField behaviour in the
rhoCentralFoam library - now deprecated in favour of the templated
partialSlip version.
2017-06-26 20:07:18 +01:00
36cd20c429 STY: Upadting thermo in sphereDrop tutorial case 2017-06-26 08:49:35 -07:00
e35d2e53c9 BUG: Fixing issue 505 in GL. Initializing switchProcessor and keepParticle in CollidingParcel and MPPICParcel 2017-06-26 08:47:46 -07:00
06b59ad9ce Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-26 16:25:23 +01:00
5b231ac7c7 BUG: molecularDynamics: reference to temporary. Fixes #509. 2017-06-26 16:24:58 +01:00
cc9ffdffbb reactingMultiphaseEulerFoam: Limited phase-fractions
for consistency with reactingTwoPhaseEulerFoam and to ensure correct operation
of models requiring formal boundedness of phase-fractions.

Resolves bug-report https://bugs.openfoam.org/view.php?id=2589
2017-06-26 16:24:57 +01:00
7b2d419157 INT: updated overInterDyMFoam and MPPICInterFoam following changes to multiphase solvers. Needs further testing 2017-09-08 11:20:21 +01:00
80d69c27b1 COMP: compilation with WM_SP
- STLpoint.H
- isoAdvection.C
- checkMesh/writeFields.C

STYLE: drop construct STLpoint(Istream&), since it doesn't make much sense

- No use case for reading via an OpenFOAM stream and tokenizer.
  Should always be parsing ASCII or reading binary directly.
2017-06-26 17:11:46 +02:00
d415bf77bf Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-26 13:33:19 +01:00
21716842fd ENH: Added new Curle function object
Calculates the acoustic pressure based on Curle's analogy.

Curle's analogy is implemented as:

    \f[
        p' = 4 \frac{\pi}{c_0}\frac{\vec d}{|\vec d|^2}\frac{d(F)}{d(t)}
    \f]

where
    p'          | Curle's acoustic pressure [Pa] or [Pa (m3/rho)]
    c_0         | Reference speed of sound [m/s]
    \vec d      | Distance vector to observer locations [m]
    F           | Force [N] or [N (m3/rho)]
2017-06-26 13:32:14 +01:00
0881052ce1 ENH: doxygen - re-added css for OpenFOAM tables 2017-06-26 13:27:58 +01:00
89e175958f ENH: function object: added helper function to return a local scope name 2017-06-26 13:23:45 +01:00
e0e457bd7d STYLE: Updated to read from parent instead of skipping to base class 2017-06-26 13:21:34 +01:00
02edc5b206 STYLE: tabs and line length in files, very dubious NULL in ensight reader.
- disable automatically upgrading copyrights in files since changes to
  not automatically imply a change in copyright. Eg, fixing a typo in
  comments, or changing a variable from 'loopI' to 'loopi' etc.
2017-06-26 13:43:05 +02:00
2dc8038092 ENH: timeControl: adds some more #423. 2017-06-26 11:51:14 +01:00
fea9b6c57d DOC: update BuildIssues.txt 2017-06-26 12:19:05 +02:00
4abc7a92ed STYLE: Header updates 2017-06-26 11:03:00 +01:00
4971cedc2a CONFIG: cleanup bash completions in unset 2017-06-26 11:09:05 +02:00
a22d9fe760 BUG: correctPhi: reference cells could become -1. Part fix for #507. 2017-06-26 09:52:26 +01:00
0d3ada09f5 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-23 17:39:40 -07:00
2b733dfed1 ENH: Changing BC for nut and omega for interDyMFoam/RAS/motorBike tutorial 2017-06-23 17:38:52 -07:00
5d5cc61bef ENH: Improving schemes for interDyMFoam/RAS/motorBike 2017-06-23 17:36:59 -07:00
a2ee408f0b Merge branch 'feature-lumpedPointMotion' into 'develop'
Feature lumped point motion

See merge request !120
2017-06-23 14:54:56 +01:00
491657047b TUT: simple tutorial demonstrating lumpedPointMotion 2017-06-23 14:52:27 +01:00
c0b38033ea ENH: integration of lumpedPointMotion
- This provides a mechanism for moving mesh patches based on external
  input (eg, from an external structures solver). The patch points are
  influenced by the position and rotation of the lumped points.

  BC:  lumpedPointDisplacementPointPatchVectorField

  Controlling mechanisms:
  - externalCoupler
    for coordinating the master/slave

  - lumpedPointMovement
    manages the patch-points motion, but also for extracting forces/moments

  - lumpedPointState
    represents the positions/rotations of the controlling points

  Utils:
  - lumpedPointZones
    diagnostic for visualizing the correspondence between controlling
    points and patch faces

  - lumpedPointMovement
    Test that the patch motion is as desired without invoking moveMesh.
    With the -slave option, return items from a precalculated table
    for the lumpedPointDisplacementPointPatchVectorField BC.
2017-06-23 14:43:09 +01:00
6779036af6 ENH: paraFoam -touch-proc option for processor directories
- Can be useful when investigating mesh topologies
2017-06-23 13:51:46 +01:00
fef4e493d4 STYLE: Updated messages to use pretty macros 2017-06-23 12:23:04 +01:00
34a1a5dec2 STYLE: Minor corrections to comments/fix typos 2017-06-23 12:13:46 +01:00
e6951da06f ENH: valueAverage FO - update window to use user time 2017-06-23 11:56:22 +01:00
ff9d2c3a9c ENH: Updated frozenFlow option for interFoam and interIsoFoam 2017-06-23 11:43:55 +01:00
3d854a683d ENH: solutionControl - added frozenFlow option 2017-06-23 11:42:51 +01:00
880c98757d ENH: Adding lookupAndCheckout in basic thermo destructor to check out p field.
This was needed for application like postProcess.H in order to force the reading of thermal p on
every time.
2017-06-22 09:23:27 -07:00
8005e2b4a2 ENH: add cloneParallelCase function into bin/tools/RunFunctions 2017-06-22 14:45:53 +01:00
3df71d18d0 compressibleInterFoam: Improved mass conservation
using the continuity error correction formulation developed for
twoPhaseEulerFoam and reactingEulerFoam.
2017-06-22 14:42:36 +01:00
092d4f4f0b foamJob: Updated to support collated parallel IO
Resolves bug-report https://bugs.openfoam.org/view.php?id=2632
2017-07-24 08:22:11 +01:00
1eb3f3b18d surfaceFilmModels: 0.333 -> 1.0/3.0 and 0.666 -> 2.0/3.0
Resolves bug-report https://bugs.openfoam.org/view.php?id=2629
2017-07-21 17:38:31 +01:00
e17e8e4e96 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop
Conflicts:
	tutorials/basic/overLaplacianDyMFoam/heatTransfer/0.orig/T
	tutorials/basic/overLaplacianDyMFoam/heatTransfer/0.orig/zoneID
2017-06-22 09:48:31 +01:00
57346f63e9 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-21 12:28:26 -07:00
fd87d0af17 Taking out the low-Re behaviour for epsilon and omega wall functions as they are not
reliable for medium yPlus and needs more verification for Low-Re cases. This option proved
to be overall the most robust for a range of yPlus
2017-06-21 12:26:40 -07:00
6ecddbe4a5 STYLE: use #includeEtc in tutorial cases
#includeEtc "caseDicts/setConstraintTypes"
 vs.
    #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes"
2017-06-21 16:42:57 +01:00
597bad0d86 STYLE: adjust doc for extractEulerianParticles 2017-06-21 16:31:42 +01:00
a995fcccb6 ENH: make "done" the default termination for externalCoupled
- simply removing the lock file on termination provides insufficient
  information for the external application to know if it should take
  over again or if OpenFOAM has terminated. Instead the "status=done"
  content is now used by default.
2017-06-21 15:21:29 +01:00
c73865de87 Merge branch 'integration-isoadvector' into 'develop'
INT: Integration of isoAdvector and supporting material

See merge request !119
2017-06-21 17:22:26 +01:00
00cbae5126 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-21 14:06:16 +01:00
c462d48196 ENH: wallBoundedStreamline: handle patches with zero faces. See #502. 2017-06-21 14:05:26 +01:00
f6cc84e675 Merge branch 'feature-secondOrderRestart' into 'develop'
Feature second order restart

See merge request !114
2017-06-21 14:03:31 +01:00
cbbf08dc0d STYLE: tutorials: fix headers 2017-06-21 12:49:28 +01:00
65071b9598 ENH: Updated dpdt and K field construction 2017-06-21 12:20:58 +01:00
feab8e94a8 ENH: restrict aliases, completions to interactive shells
- minor cleanup of bash completion script
2017-06-21 08:09:15 +01:00
81018090a6 CONFIG: bump openmpi version to latest (2.1.1)
- adjust mesa, vtk versions to the latest
2017-06-21 08:36:52 +01:00
9fa89e67c6 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-20 13:42:46 -07:00
4418c192c4 Deleting alphaEqn.H from overInterDyMFoam 2017-06-20 13:42:10 -07:00
f92ee22541 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-20 14:47:17 +01:00
45a8b92450 COMP: mergePoints - corrected erroneous commas 2017-06-20 14:46:31 +01:00
29f4e77299 ENH: wallBoundedStreamline: make sure to track across neg face; more testing 2017-06-20 14:46:12 +01:00
a6ef8b9027 INT: Integration of isoAdvector and supporting material
Community contribution from Johan Roenby, DHI

IsoAdvector is a geometric Volume-of-Fluid method for advection of a
sharp interface between two incompressible fluids. It works on both
structured and unstructured meshes with no requirements on cell shapes.
IsoAdvector is as an alternative choice for the interface compression
treatment with the MULES limiter implemented in the interFoam family
of solvers.

The isoAdvector concept and code was developed at DHI and was funded
by a Sapere Aude postdoc grant to Johan Roenby from The Danish Council
for Independent Research | Technology and Production Sciences (Grant-ID:
DFF - 1337-00118B - FTP).
Co-funding is also provided by the GTS grant to DHI from the Danish
Agency for Science, Technology and Innovation.

The ideas behind and performance of the isoAdvector scheme is
documented in:

    Roenby J, Bredmose H, Jasak H. 2016 A computational method for sharp
    interface  advection. R. Soc. open sci. 3: 160405.
    [http://dx.doi.org/10.1098/rsos.160405](http://dx.doi.org/10.1098/rsos.160405)

Videos showing isoAdvector's performance with a number of standard
test cases can be found in this youtube channel:

    https://www.youtube.com/channel/UCt6Idpv4C8TTgz1iUX0prAA

Project contributors:

* Johan Roenby <jro@dhigroup.com> (Inventor and main developer)
* Hrvoje Jasak <hrvoje.jasak@fsb.hr> (Consistent treatment of
  boundary faces including processor boundaries, parallelisation,
  code clean up
* Henrik Bredmose <hbre@dtu.dk> (Assisted in the conceptual
  development)
* Vuko Vukcevic <vuko.vukcevic@fsb.hr> (Code review, profiling,
  porting to foam-extend, bug fixing, testing)
* Tomislav Maric <tomislav@sourceflux.de> (Source file
  rearrangement)
* Andy Heather <a.heather@opencfd.co.uk> (Integration into OpenFOAM
  for v1706 release)

See the integration repository below to see the full set of changes
implemented for release into OpenFOAM v1706

    https://develop.openfoam.com/Community/Integration-isoAdvector
2017-06-20 14:36:15 +01:00
c194bbf765 STYLE: fieldToCell: added explanation 2017-06-20 11:06:24 +01:00
e0ae2c0b9f ENH: additional constructor and methods for axesRotation
- provide single parameter constructor for which the rotation direction
  is determined based on the size/sign of the axis components.
  The direction is aligned with one of the global axes.

- expose setTransform as a public method to allow the user to reset
  the axesRotation if desired.
2017-06-20 09:50:47 +01:00
614b33f3e1 pRef is not required (default 0.0) when calcTotal flag is true. 2017-06-19 12:42:03 -07:00
6ff341b5f5 Adding alphaEqn.H with interpolation method.
Adding special alphaCourantNo for overlaping
Adding bounded term to UEq.H for overInterDyMFoam
Changing to NO_WRITE for the cellMask field
Changing twoSimpleRotors tutorial to open domain
2017-06-19 11:10:19 -07:00
ad8dfd4ad8 Cleaning up different output messages 2017-06-19 08:00:10 -07:00
560c015821 Merge branch 'master' into develop 2017-06-16 10:38:30 +01:00
d06589b746 STYLE: Updated warning message output 2017-06-16 10:37:52 +01:00
2883311a23 ENH: rhoPimple[DyM]Foam - updated treatment for dpdt 2017-06-15 14:51:27 +01:00
bea9063bd3 COMP: writeVTK: label64 compilation 2017-06-15 12:31:37 +01:00
4a3ead4732 ENH: avoid reduce for MPI barrier in externalCoupled (issue #419)
- rationalized waiting logic

- timeout and wait are unsigned int (not label) since this is what
  the underlying sleep uses anyhow.
2017-06-14 14:40:59 +02:00
b5f091e74f BUG: incorrect indexing for surface baffles (fixes #497) 2017-06-16 09:37:43 +02:00
a17a04122e ENH: wallBoundedStreamline: survive neg-tet cells. Fixes #502. 2017-06-15 16:49:21 +01:00
9c740ffc21 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-15 12:32:03 +01:00
510b579dd6 COMP: writeVTK: label64 compilation 2017-06-15 12:31:37 +01:00
6c3f04d0d4 Merge branch 'integration-ihc-wavemodels' into 'develop'
Integration of ihc wavemodels

See merge request !117
2017-06-15 11:38:25 +01:00
e6572f56ae Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-15 11:19:14 +01:00
acdeb308be ENH: sampledTriSurfaceMeshNormal: variant of sampledTriSurfaceMesh. Fixes #500. 2017-06-15 11:18:38 +01:00
dd19c87f30 updating fvOptions from fileName to file in windshieldCondensation
Correcting header in tabulatedNTUHeatTransfer from fileName to file
2017-06-14 14:33:14 -07:00
45be9bcc44 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-14 14:00:39 -07:00
b083205d23 Fixing externalWallHeatFluxTemperature mapping scalarFields.
Fixing humidityTemperatureCoupled problem in parallel
Adding Allrun-parallel to externalSolarLoad and windshieldCondensation tutorials
2017-06-14 13:58:52 -07:00
7e6faf049c Squashed commit of the following:
commit 510b9353f8cb932a87f1588b17a4dea230c29d3c
Author: mattijs <mattijs>
Date:   Wed Jun 14 16:36:35 2017 +0100

    ENH: timeControl: propagate time-change logic from Time.C

commit 6dc57a8f1e0e7605ea819deb6f11dd4b7874ff30
Author: mattijs <mattijs>
Date:   Thu Jun 1 11:28:56 2017 +0100

    ENH: timeControl: cleanup; avoid division by zero

commit 5ac4bc2dd8c1f4676eef9d7a03215caba23a2e19
Author: mattijs <mattijs>
Date:   Wed May 31 12:04:52 2017 +0100

    ENH: timeControl: allow ramping down as well as up.

commit a6b2db9e791f29258f04f3a9cbd6354aa468977d
Author: mattijs <mattijs>
Date:   Wed May 17 15:29:22 2017 +0100

    ENH: timeControl: limit any timestep change if deltaTCoeff enabled.

commit 004115ee03a6637ae0d23cce303a30d1b3af046f
Author: mattijs <mattijs>
Date:   Wed May 17 11:40:26 2017 +0100

    ENH: setTimeStep: have timeStart, timeEnd controls on time step adjustment.

    Also added smoothly varying time step change (through optional deltaTCoeff)
2017-06-14 16:40:17 +01:00
8a8e5e8891 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-14 08:06:26 -07:00
d435b215e2 Updating solarLoad tutorial case for parallel running 2017-06-14 08:05:19 -07:00
7c88c694df STYLE: vtkWrite: added comment 2017-06-14 15:34:05 +01:00
2dfd01ac7b Merge branch 'feature-paraview-vtk' into 'develop'
Feature paraview vtk

See merge request !116
2017-06-14 14:16:18 +01:00
9bb6d896fa Merge remote-tracking branch 'origin/develop' into develop 2017-06-14 14:22:59 +02:00
7eec9f0dd6 STYLE: use standardized 0.orig/ for overset tutorials 2017-06-14 14:15:22 +02:00
518089e722 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-14 12:29:06 +01:00
e14ad6f1fc BUG: mixerVessel: replace foamInfoExec with foamListTimes 2017-06-14 12:28:33 +01:00
710f23aa35 COMP: hash-table size overflow with 64-bit labels (fixes #498)
- Requires (1L << N) instead of (1 << N), otherwise it overflows
  and the result is zero.
2017-06-14 12:54:38 +02:00
6d649ddf1f STYLE: prefix bash completion functions with '_of_' for easier removal 2017-06-14 11:46:10 +02:00
29fa7a9306 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-14 10:24:07 +01:00
685d6a0e72 CONFIG: avoid bash completions for non-bash shells (eg, dash, ksh, zsh) 2017-06-14 11:22:51 +02:00
fd665b4a3c ENH: overset: Initial release of overset capability.
Adds overset discretisation to selected physics:
- diffusion : overLaplacianDyMFoam
- incompressible steady : overSimpleFoam
- incompressible transient : overPimpleDyMFoam
- compressible transient: overRhoPimpleDyMFoam
- two-phase VOF: overInterDyMFoam

The overset method chosen is a parallel, fully implicit implementation
whereby the interpolation (from donor to acceptor) is inserted as an
adapted discretisation on the donor cells, such that the resulting matrix
can be solved using the standard linear solvers.

Above solvers come with a set of tutorials, showing how to create and set-up
simple simulations from scratch.
2017-06-14 09:51:02 +01:00
ba5f79a8e5 ENH: suppress unset -f warnings for bash completions 2017-06-14 10:22:39 +02:00
11e7728f8b Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-14 09:06:49 +01:00
2d530401fd ENH: add foamToVTK -name option
- as per foamToEnsight, foamToEnsightParts.
  Allows the user to specify different output directories.
2017-06-14 08:14:24 +02:00
49500b0194 STYLE: more meaningful variable name when using meshSubsetHelper 2017-06-14 07:56:57 +02:00
180788c453 STYLE: remove deprecatedOrder from ensightWrite function object
- this should not have been there in the first place
2017-06-14 07:52:26 +02:00
98cc0fc004 ENH: upgrade writeVTK function object -> vtkWrite function object
- user-selectable format (vtk or vtu, ascii or binary)
- dictionary syntax closer to ensightWrite
- tutorial example in windAroundBuildings
2017-06-14 01:48:32 +02:00
df5b009708 ENH: support direct writing of fields from vtk::patchWriter
- eliminates the PtrList requirement (more flexible)
2017-06-14 00:53:51 +02:00
2a72baf29f ENH: support direct writing of fields from vtk::internalWriter
- eliminates the PtrList requirement (more flexible)

COMP: use tmp intermediate for volPointInterpolation return value

- gcc 4.8.5 had some weird issue of otherwise not binding a const-ref.
  (in foamVtkInternalWriterTemplates.C)
2017-06-14 00:28:58 +02:00
8221111245 STYLE: pass legacy nCmpt as int 2017-06-13 23:59:11 +02:00
7ee1dba43a STYLE: adjust feedback comments in foamToVTK 2017-06-13 22:28:39 +02:00
69deec2e1c Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-13 09:41:45 -07:00
d661165759 Init processor_ variable for patchProbes in findElements function 2017-06-13 09:40:57 -07:00
cde12ad9e5 ENH: consolidate vtk classes into 'Foam::vtk' namespace
- elminate the foamVtkFormatter operator() in favour of xmlAttr.
  Improves readability and the purpose is clearer.
2017-06-13 14:10:07 +02:00
d764104730 externalWallHeatFluxTemperature: Changed Ta entry to Function1 to support time variation
Temporal variation of Ta is generally more useful than spatial variation but
a run-time switch between the two modes of operation could be implemented in
needed.
2017-06-13 09:00:48 +01:00
523008e85d STYLE: corrected file vs fileName for CSV files 2017-06-13 07:23:32 +02:00
206914ceae TUT: consistent indentation in controlDict 2017-06-13 07:17:37 +02:00
0ea219adf5 TUT: consistent writeCompression option
- Use on/off vs longer compressed/uncompressed.
  For consistency, replaced yes/no with on/off.

- Avoid the combination of binary/compressed,
  which is disallowed and provokes a warning anyhow
2017-06-13 06:50:16 +02:00
0735836302 Correcting header docu 2017-06-12 13:56:39 -07:00
852616ba88 interpolationTable: Correcting header documentation
fanPressureFvPatchScalarField.H:  Correcting header documentation
RAS/TJunctionFan/0.orig: Creating tutorial for fanPressure
Adding pRef and pValue for tutorial createZeroDirectory/snappyMultiRegionHeater
2017-06-12 13:53:52 -07:00
b6b61a4cf4 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-12 11:29:53 -07:00
e3701a47ae ENH: Adding non-dimensional table input to fanPressure BC
Adding intertial term switch to solarLoad chtMultiRegionFoam case
2017-06-12 11:28:57 -07:00
6e154d84b4 STYLE: use Enum instead of NamedEnum in fileFormats 2017-06-12 16:17:04 +02:00
0af1e0b722 BUG: minor regression. STL reading in double, not float (issue #491)
- By definition, binary STL uses float (not double) when reading.
  The ascii STL should be the same. This reduces memory overhead when
  loading files. The older triSurface reader had float, the surfMesh
  reader had double, but now has float.

- Inconsistency in the STL merge-tolerances between triSurface reader,
  surfMesh reader and WM_SP vs WM_DP. Now use consistent tolerances
  conrresponding to 10,100 * doubleSMALL.

- Similar float/double code adjustments for TRI format since this is
  very similar to the STL reader and had a similar inconsistency between
  the triSurface and surfMesh version. The AC3D reader still uses
  double when reading, but this can be revisited in the future (and can
  then remove the stichTriangles method too).
2017-06-12 15:47:01 +02:00
bf88d4ec99 ENH: reduce chance of false positives when generating bash completions
- only treat text as an option if it is preceded by 0-4 spaces.
  This prevents the description of an option from being accidentally
  detected as an option.
2017-06-12 14:58:13 +02:00
edc1bd2230 CONFIG: bump paraview version 2017-06-12 14:57:56 +02:00
951fbb6575 ENH: add construct from floatVector for STLpoint (issue #491) 2017-06-12 14:41:03 +02:00
4094e2c58f ENH: reduce memory overhead in mergePoints (issue #495)
- can avoid the intermediate point distance field in exchange for
  calculating a point subtraction twice.
2017-06-12 14:36:45 +02:00
39f0c4cf1a BUG: flex symbol conflict (issue #494) 2017-06-12 12:56:16 +02:00
ead256f506 INT: Integration of rhoPimpleAdiabaticFoam
Solver for low Mach no. flows with adiabatic thermodynamics and updated
pressure-velocity coupling given by the RCM interpolation procedure
described in

    \verbatim
        Knacke, T. (2013).
        Potential effects of Rhie & Chow type interpolations in airframe
        noise simulations. In: Schram, C., Dénos, R., Lecomte E. (ed):
        Accurate and efficient aeroacoustic prediction approaches for
        airframe noise, VKI LS 2013-03.
    \endverbatim

Original code supplied by Thilo Knacke, CFD E+F GmbH
contact: info@cfd-berlin.com

Integrated into OpenFOAM by OpenCFD Ltd.
2017-06-09 10:23:47 +01:00
3deccbedd7 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-08 16:59:09 +01:00
ca7dbabdcf ENH: probes: filter out points that cannot be found. Fixes #492. 2017-06-08 16:55:52 +01:00
257d2f04a4 Update rho = thermo.rho(), in the pEq for reactingFoam.
Updating fvSolution's for closed domains for chtMultiRegionFoam cases
2017-06-08 10:41:57 +01:00
4691ee4951 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-08 09:24:08 +01:00
d9b2de8f74 Adding rhoMin and rhoMax to rhoReactingFoam 2017-06-08 09:23:47 +01:00
6186f91fea Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-07 16:33:27 +01:00
74cfb1906f ENH: probes: filter out points that cannot be found. Fixes #492. 2017-06-07 16:33:06 +01:00
486a82fad6 Updating rho with thermo rho at the end of the pEq.H, independently of
simpleRho or limiting p.
2017-06-07 16:26:43 +01:00
f31d5cf217 STYLE: sampledSurface: added comment for interpolation 2017-06-07 15:19:51 +01:00
bac2c8cc30 GIT: Resolved conflict 2017-06-07 15:00:31 +01:00
68df61bebe BUG: set oriented flag when calculating the correction for rank > vector types 2017-06-07 13:16:51 +01:00
c44322ebb8 Adding correctRho plus rhoMin and rhoMax limiters to thermos.
Update pEq for close domains.
2017-06-07 12:11:01 +01:00
1a4bca3a59 BUG: Pair: non-commutative comparison operator. Fixes #490. 2017-06-05 10:13:32 +01:00
a83ee15462 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-05 08:34:09 +01:00
53d6eeacff Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-02 13:36:09 -07:00
40b0cbd8d1 1)Adding alphaEqn.H and alphaEqnSubCycle.H specialized version for MPPICInterFoam
2)Adapting divU in TEqn.H for compressibleInterDyMFoam and compressibleInterFoam
3)Re-instated sixDoFRigidBodyDisplacement as patch for pointFields. It allows to use a different fvDynamincMesh type
independently of the BC's
2017-06-02 13:33:33 -07:00
4cbbe3fd59 ENH: add VTP output support for surfMesh
- use proxy writer for triSurface writing
2017-06-02 12:07:43 +02:00
b538a9128c ENH: New wave model integration updates for McCowan and Grimshaw models 2017-06-02 10:23:32 +01:00
0f230ba35b ENH: Added new Grimshaw and McCowan wave models - initial commit for
integration
2017-06-02 09:47:31 +01:00
361398a64a COMP: make mathematical constants constexpr
- these are compile-time constants and can be marked as such in C++11.
2017-06-02 07:55:04 +02:00
d1b651533f Modification on rhoPimpleFoam pEq's for handling rho thermo and incompressible EoS. Adding rho limiters if p is limited.
This is important when LTS stepping or large Co number is used.

Updating rhoBuoyantPimpleFoam to handle closed domain for rho thermo and incompressible Eos.
Consolidating chtMultiRegionSimpleFoam and chtMultiRegionFoam pEqs to use the same formulation as rhoBuoyantPimpleFoam and
rhoBuoyantSimpleFoam
2017-06-01 12:39:28 -07:00
309a5d92f5 BUG: patchFields: set patchType() by hand if construct-from-parts. Related to #315. 2017-06-01 17:59:10 +01:00
9f04dc9151 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-01 17:53:10 +01:00
a2e978d43e ENH: add VTP, VTU output for most vtk writers (insitu only)
- with the xml append format it is possible to write raw binary
  (instead of base64), but the writer becomes more complicated.
  Either needs two passes to create, or need to allocate a block
  of space for the header information (like VTK itself does) and
  write later.

    * internalWriter
    * patchWriter
    * surfaceMeshWriter
    * lagrangianWriter

 Also these special purpose ones:
    * foamVtkWriteSurfFields
2017-06-01 18:28:40 +02:00
b80f24948d Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-01 17:28:21 +01:00
6a0b35bdc8 ENH: noiseModels - updated parallel usage (no longer needs proc dirs) and apply input data validation 2017-06-01 17:27:30 +01:00
f431a328d2 ENH: volRegion and volFieldValue - updated output name if operating on all cells 2017-06-01 17:26:12 +01:00
8aab4f1593 Revert "sixDoFRigidBodyDisplacementPointPatchVectorField, uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField: removed"
This reverts commit 942338b06c.
2017-06-01 17:17:50 +01:00
a4b826aa1e STYLE: fix comments 2017-06-01 16:38:48 +02:00
4faee1b3bf COMP: unitConversion - using M_PI instead of pi to avoid compiltion error due to pi not evaluating to a constexpr 2017-06-01 20:17:09 +01:00
b312f0ba40 ENH: documentation and input simplification for surfaceFeatureExtract 2017-06-01 15:46:42 +02:00
0a49f3efc7 ENH: writeOBJ faces - use face instead of lines 2017-06-01 12:55:23 +01:00
c4f1349496 ENH: construct VTK writers with the outputOptions and adjust internally
- this shifts responsibility away from caller to the individual writers
  for knowing which file formats are supported and which file ending is
  appropriate. When the writer receives the output format request,
  it can elect to downgrade or otherwise adjust it to what it can
  actually manage (eg, legacy vs xml vs xml-append).

  But currently still just with legacy format backends.
2017-05-31 22:08:54 +02:00
a335ba6b6b Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-31 17:45:07 +01:00
4bbc62bbb8 ENH: stringOps - getVariable function - make use of the allowEmpty flag 2017-05-31 17:44:44 +01:00
f89b770f21 Merge branch 'feature-surfaceFeatureExtract' into 'develop'
Feature surface feature extract

See merge request !110
2017-05-31 16:33:45 +01:00
79ea782301 Merge branch 'ccm-bugfixes' into 'develop'
ccm conversion bugfixes

See merge request !115
2017-05-31 11:51:09 +01:00
8da6e8eb74 DEFEATURE: remove CCM combine boundary code
- was generally somewhat fragile. The main problem stems from the fact
  that several interfaces may be attached to a boundary. No trivial
  means of solving this without too much work for a feature that is only
  "nice-to-have".
2017-05-31 12:34:07 +02:00
da5c5d15f7 GIT: Resolved conflict on cherry-pick 2017-05-31 10:35:05 +01:00
ca2811d50a Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-06-06 17:31:19 +01:00
854f607f93 STYLE: Updated heat power and flux names 2017-06-06 11:53:00 +01:00
c0763bf8d2 Merge branch 'master' into develop 2017-06-06 09:52:21 +01:00
62e7ddccdc ENH: add (C++11) user-literal for degrees to radians conversion
- Programming convenience.
  Eg, cos(45_deg) vs cos(degToRad(45))

STYLE: conversions marked as constexpr and noexcept
2017-05-31 10:16:19 +02:00
0be69605fd STYLE: incorrect namespace for doxygen 2017-05-31 10:02:55 +02:00
3fd1c47324 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-31 09:00:16 +01:00
8a52553b63 BUG: snappyHexMesh: extraneous debug printing. Fixes #485. 2017-05-31 08:59:36 +01:00
408b6c7e6b ENH: mergePoints now with template for list types
- makes it possible to use list types other than UList.
  For example, UIndirectList<point>
2017-05-30 18:21:01 +02:00
104f43583f CONFIG: bump baseline version to 1706
- not yet release, but some of the API and file locations are closer
  to 1706 than to 1612. Needed, for example, for swak4foam.
2017-05-30 15:09:06 +02:00
d9072f527c COMP: provide NamedEnum::found() method for third-party code
- eg, swak4Foam uses it for NumericAccumulationNamedEnum
2017-05-30 14:47:08 +02:00
49129ba88b COMP: using private data in HashPtrTableIO 2017-05-30 14:44:37 +02:00
111ec17cb5 GIT: Updated after cherry-picks from third party code 2017-05-30 12:53:59 +01:00
98ccc6ed50 ENH: add prune option for ListOps reorder, inplaceReorder
- allows simultaneously reordering and truncation of lists

STYLE: add const ref for UnaryPredicate parameter
2017-05-30 13:18:06 +02:00
6d26b40e8b STYLE: use newer forAll macros 2017-05-30 12:44:13 +02:00
03944c2a26 ENH: support enumerations for vtk xml file tags and some legacy text elements 2017-05-30 10:34:01 +02:00
5d60d7e15c BUG: incorrectly dimensioned edge directions in extendedEdgeMesh:add() 2017-05-29 22:26:14 +02:00
dfafe6075a ENH: region-wise self intersection for surfaceFeatureExtract (issue #450) 2017-05-29 18:57:25 +02:00
6563c98d6c ENH: support different triSurface loading options
- "single" = One region for all files
 - "file"   = One region for each file
 - "offset" = Offset regions per file
 - "merge"  = Merge regions by name

These specifications provide finer control when loading multiple
surfaces.
2017-05-29 18:25:23 +02:00
67237e9385 CONFIG: adjust boost,CGAL versions 2017-05-29 17:18:26 +02:00
0f83b3f04b BUG: incorrect fall-through in directionalPressureGradientExplicitSource (fixed #486) 2017-05-29 15:34:14 +02:00
33e0c95d2d BUG: incorrect fall-through in directionalPressureGradientExplicitSource (fixes #486) 2017-05-29 15:33:38 +02:00
76c39302dd CONFIG: add compiler config for Gcc 7.1.0 2017-05-29 15:20:56 +02:00
90a07ff4cc BUG: enum constant in boolean context 2017-05-29 15:18:35 +02:00
d7a4088caa COMP: explicit handling of fallthrough cases 2017-05-29 15:10:54 +02:00
8afc6cbd86 ENH: Enum class as drop-in alternative for NamedEnum
- the NamedEnum wrapper is somewhate too rigid.
  * All enumerated values are contiguous, starting as zero.
  * The implicit one-to-one mapping precludes using it for aliases.
  * For example, perhaps we want to support alternative lookup names for an
    enumeration, or manage an enumeration lookup for a sub-range.
2017-05-29 13:13:53 +02:00
77a5b99e92 COMP: Hash.H was not included with HashTable/HashSet
- was only included indirectly via FixedList.H
2017-05-29 11:20:49 +02:00
c6c79ab313 STYLE: use std::pair (not Tuple2) in conjunction with std::initializer_list
- no penalty compared to Tuple2, potential future benefits with C++
  constructor forwarding.
2017-05-29 11:07:39 +02:00
fb4971644f ENH: cleanup of NamedEnum
- Remove the unused enums() method since it delivers wholly unreliable
  results. It is not guaranteed to cover the full enumeration range,
  but only the listed names.

- Remove the unused strings() method.
  Duplicated functionality of the words(), but was never used.

- Change access of words() method from static to object.
  Better code isolation. Permits the constructor to take over
  as the single point of failure for bad input.

- Add values() method

- do not expose internal (HashTable) lookup since it makes it more
  difficult to enforce constness and the implementation detail should
  not be exposed. However leave toc() and sortedToc() for the interface.

STYLE: relocated NamedEnum under primitives (was containers)

- internal typedef as 'value_type' for some consistency with STL conventions
2017-05-29 10:30:55 +02:00
dd54aa3018 BUG: non-lazy PackedList (fixes #484)
- The unset() method never auto-vivifies, whereas the set() method
  always auto-vivifies. In the case where set() is called with a zero
  for its argument - eg, set(index, 0) - this should behave
  identically to an unset() and not auto-vivify out-of-range entries.
2017-05-26 21:02:28 +02:00
9bc87005ad Adding optional build of the thermo tpe per reaction. This thermo is not necessary for solid reactions.
NOTE: in Reaction.C constructors bool initReactionThermo is used by solidReaction where there is no
need of setting a lhs - rhs thermo type for each reaction. This is needed for mechanism with reversible reactions
2017-05-26 10:18:01 -07:00
4bc3c5f2ba Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-26 08:29:09 -07:00
8f1a4f792d ENH: include region counting in triSurface writeStats 2017-05-26 15:00:48 +02:00
26fef427ed ENH: provide lookupOrDefault for NamedEnum - makes for easier use. 2017-05-26 16:59:20 +02:00
b83007594a ENH: HashTable cfind() method returning a const_iterator
- This follows the same idea as cbegin/cend and is helpful when using
  C++11 auto to ensure we have unambiguous const-safe access.

  Previously:
  ====
    typename someLongClass::const_iterator iter = someTable.find(key);

    ... later on:
    *iter = value; // Oops, but caught by compiler.

  We can save some typing with auto, but it is uncertain what we get:
  ====
    auto iter = someTable.find(key);
        // iterator or const_iterator?
        // depends on someTable having const or non-const access.

    ... later on:
    *iter = value;  // Oops, but not caught by compiler.

  Using cfind instead, auto will deduce const_iterator as the type:
  ====
    auto iter = someTable.cfind(key);  // definitely const_iterator

    ... later on:
    *iter = value; // Oops, but caught by compiler.
2017-05-26 12:42:30 +02:00
2af602c2f4 STYLE: for Istream/Ostream check() use FUNCTION_NAME in messages 2017-05-26 10:59:16 +02:00
0564efb9e1 ENH: add basic support for file extensions to word
- when a plain word is used as a directory-local name for file.
  We don't have a full blown fileName, but still want to check/remove
  extensions etc.
2017-05-26 10:48:01 +02:00
ccc1ce4a25 ENH: avoid calling fileName::components twice in Foam::cp 2017-05-26 10:39:56 +02:00
5efe22c2f0 ENH: align constructors of geometricSurfacePatch with surfZoneIdentifier
- both classes are nearly identical and should be merged in the future.
2017-05-26 09:10:48 +02:00
8d3e106166 STYLE: remove redundant size check 2017-05-26 08:15:49 +02:00
15d5fca144 BUG: argList: -decomposeParDict handling in combination with -case.
Related to #482 but this one is the handling inside argList.
2017-05-25 12:12:43 +01:00
757cc7a15d BUG: cshrc: account for lsof printing mount point after files
Some versions of lsof print the mount point (if remote) after the
script path:
    /hosts/mymachine/OpenFOAM/OpenFOAM-plus.develop/etc/cshrc (mymachine:/home)
This now gets filtered out.
2017-05-25 10:43:57 +01:00
4b20991841 ENH: argEdge: order of member initialisation. Fixes #481. 2017-05-25 09:16:49 +01:00
a42c35f64b ENH: paraview reader module with internal caching of the vtk geometries
- The reader module allows two levels of caching.
  The OpenFOAM fvMesh can be cached in memory, for faster loading of
  fields. Additionally, the translated VTK geometries are held in a
  local cache. The cached VTK geometries should incur no additional
  overhead since they use the VTK reference counting for their storage
  management.
2017-05-24 17:12:49 +02:00
391a9c5fe2 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-24 16:11:33 +01:00
ce88aca9f7 Merge branch 'feature-oriented-fields' into 'develop'
Initial attempt to track oriented surface fields

See merge request !104
2017-05-24 14:30:51 +01:00
0215e330d5 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-24 14:30:46 +01:00
2838c4554c BUG: pointConstraints: resize all constraints arrays. Fixes #480. 2017-05-24 14:28:28 +01:00
e0a5537d3f Merge branch 'feature-oriented-fields' of develop.openfoam.com:Development/OpenFOAM-plus into feature-oriented-fields 2017-05-24 14:22:54 +01:00
9a864bdd85 GIT: Resolved merge conflict when merging develop branch 2017-05-24 12:30:09 +01:00
b5ed93a40a ENH: orientedFields - refectored and simplified usage 2017-05-24 12:26:12 +01:00
51b4c38987 STYLE: explicitly use iterator object() in ListOps
STYLE: adjust parameter names and template types in invertManyToMany

- more explicit about the acceptable list types
2017-05-24 07:51:38 +02:00
c4caef3a1b ENH: nicer indentation of inGroups patch entry (issue #474)
- The inGroups is a wordList.
  It can be flattened on output to make files more readable.
2017-05-24 07:40:48 +02:00
96d98cd2de ENH: paraFoam --help => immediate pass-through to paraview --help
ENH: Paraview modules.

- Update props with int, not bool (for more versatility)
- Set properties and tool-tips directly on widgets instead of buttons
2017-05-23 08:02:25 +02:00
9d7b0838ca Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-22 14:11:30 -07:00
f0fcfce6a3 ENH: avoid weird cast workarounds for edgeFaceCirculator
- holding a pointer instead of a reference for edgeFaceCirculator
  simplifies overall handling.
2017-05-22 18:12:25 +02:00
2495fcb42e ENH: replace foamToVTK routines with library-level equivalents 2017-05-22 16:13:53 +02:00
31d0f2c51c Merge branch 'integration-foundation' into 'develop'
Integration foundation

See merge request !99
2017-05-22 14:06:34 +01:00
5a528a7330 STYLE: additional cleanup of hashtable item found checks 2017-05-22 15:06:21 +02:00
9fef27cb7d ENH: relocate inplaceUniq (wordReList) into wordRes 2017-05-22 14:59:05 +02:00
6e72ceddd0 Merge branch 'enh-iter-cleanup' into 'develop'
Further hash table iter clean-up

See merge request !113
2017-05-19 12:44:05 +01:00
bb67ccd37d ENH: Cleaned up hash table item found checks 2017-05-19 11:15:35 +01:00
bd73ca26f2 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-18 12:45:12 -07:00
1f42c2a5ec Changing writing of thermal inerial flag 2017-05-18 12:44:25 -07:00
8255005e19 ENH: mapDistributePolyMesh: new test app 2017-05-18 16:57:22 +01:00
70bed0e8fe externalWallHeatFluxTemperatureFvPatchScalarField: Corrected decomposition mapping 2017-05-18 15:07:19 +01:00
f549e28fb8 INT: Updated code related to change in pos(x) function 2017-09-07 14:57:10 +01:00
56bfc75949 Rationalize the "pos" function
"pos" now returns 1 if the argument is greater than 0, otherwise it returns 0.
This is consistent with the common mathematical definition of the "pos" function:

https://en.wikipedia.org/wiki/Sign_(mathematics)

However the previous implementation in which 1 was also returned for a 0
argument is useful in many situations so the "pos0" has been added which returns
1 if the argument is greater or equal to 0.  Additionally the "neg0" has been
added which returns 1 if if the argument is less than or equal to 0.
2017-06-22 14:32:18 +01:00
639305e960 localEulerDdtScheme: Completed and tested support for moving meshes
Now the "localEuler" ddt scheme does not apply any corrections due to
mesh-motion; the old-time volumes are not used and the mesh-motion flux is set
to zero.  A consequence of these changes is that boundedness of transported
scalars is ensured but mesh-motion causes a conservation error which will
reduces to zero as steady-state is approached and the mesh becomes stationary.
2017-05-25 09:38:33 +01:00
328769b25d STYLE: Code clean-up 2017-09-07 14:30:28 +01:00
41e4d68ff8 MULES: Improve handling of very small geometries 2017-07-24 10:35:54 +01:00
d27457d41d refineMesh: Correct parallel operation
Patch contributed by Mattijs Janssens
Resolves bug-report https://bugs.openfoam.org/view.php?id=2621
2017-07-22 22:39:40 +01:00
e0f3963875 reactingOneDim: Correct reporting of temperature range in parallel
Patch Contributed by Karl Meredith, FM Global.
Resolves bug-report https://bugs.openfoam.org/view.php?id=2621
2017-07-19 12:45:23 +01:00
415d000db6 INT: Compatibility updates for Function1 related code 2017-09-07 10:47:54 +01:00
3b6eb380d0 Function1: Optimized field evaluations 2017-08-08 10:16:08 +01:00
2f431ffd3d made the clone function pure virtual
Avoids potential problems with derived classes which do not define a clone function.
2017-07-13 23:24:14 +01:00
5157be4bb3 Function1::ramp function: Added clone function 2017-07-13 17:04:33 +01:00
0ada640f84 Time::purgeWrite: Corrected handling of collated processors directory
Resolves bug-report https://bugs.openfoam.org/view.php?id=2667
2017-08-17 14:53:55 +01:00
bed8dd4bc7 fileOperation: Corrected processor counting for moving mesh cases 2017-08-11 00:07:48 +01:00
fdf08c401f INT: Removed deprecated utility 2017-09-07 09:00:41 +01:00
36b32d242b argList: addition of fileHandler option moved to argList.C
Patch contributed by Timo Niemi, VTT.
Resolves bug-report https://bugs.openfoam.org/view.php?id=2645
2017-08-03 10:42:24 +01:00
7cad29f7c8 BUG: argList: disable checking for exact path; rely on fileHandler instead 2017-09-06 21:58:08 +01:00
fb20bc107e INT: Updated dependent code following latest set of integrations 2017-09-06 16:05:12 +01:00
d8d6030ab6 INT: Integration of Mattijs' collocated parallel IO additions
Original commit message:
------------------------

Parallel IO: New collated file format

When an OpenFOAM simulation runs in parallel, the data for decomposed fields and
mesh(es) has historically been stored in multiple files within separate
directories for each processor.  Processor directories are named 'processorN',
where N is the processor number.

This commit introduces an alternative "collated" file format where the data for
each decomposed field (and mesh) is collated into a single file, which is
written and read on the master processor.  The files are stored in a single
directory named 'processors'.

The new format produces significantly fewer files - one per field, instead of N
per field.  For large parallel cases, this avoids the restriction on the number
of open files imposed by the operating system limits.

The file writing can be threaded allowing the simulation to continue running
while the data is being written to file.  NFS (Network File System) is not
needed when using the the collated format and additionally, there is an option
to run without NFS with the original uncollated approach, known as
"masterUncollated".

The controls for the file handling are in the OptimisationSwitches of
etc/controlDict:

OptimisationSwitches
{
    ...

    //- Parallel IO file handler
    //  uncollated (default), collated or masterUncollated
    fileHandler uncollated;

    //- collated: thread buffer size for queued file writes.
    //  If set to 0 or not sufficient for the file size threading is not used.
    //  Default: 2e9
    maxThreadFileBufferSize 2e9;

    //- masterUncollated: non-blocking buffer size.
    //  If the file exceeds this buffer size scheduled transfer is used.
    //  Default: 2e9
    maxMasterFileBufferSize 2e9;
}

When using the collated file handling, memory is allocated for the data in the
thread.  maxThreadFileBufferSize sets the maximum size of memory in bytes that
is allocated.  If the data exceeds this size, the write does not use threading.

When using the masterUncollated file handling, non-blocking MPI communication
requires a sufficiently large memory buffer on the master node.
maxMasterFileBufferSize sets the maximum size in bytes of the buffer.  If the
data exceeds this size, the system uses scheduled communication.

The installation defaults for the fileHandler choice, maxThreadFileBufferSize
and maxMasterFileBufferSize (set in etc/controlDict) can be over-ridden within
the case controlDict file, like other parameters.  Additionally the fileHandler
can be set by:
- the "-fileHandler" command line argument;
- a FOAM_FILEHANDLER environment variable.

A foamFormatConvert utility allows users to convert files between the collated
and uncollated formats, e.g.
    mpirun -np 2 foamFormatConvert -parallel -fileHandler uncollated

An example case demonstrating the file handling methods is provided in:
$FOAM_TUTORIALS/IO/fileHandling

The work was undertaken by Mattijs Janssens, in collaboration with Henry Weller.
2017-07-07 11:39:56 +01:00
03c114010f reactingEulerFoam: Bug fix to reactionsource terms
Fixed reaction source terms in the energy and species fraction equations
by multiplying by the phase fraction.

Resolves bug report https://bugs.openfoam.org/view.php?id=2591
2017-06-26 17:05:35 +01:00
8cd8f79329 TDACChemistryModel: improved reporting of CPU time
Added a grow time and better allocate the CPU time to either add or grow.  This
gives much more information to the user and helps changing the settings
accordingly.

Patch contributed by Francesco Contino
2017-06-26 14:09:12 +01:00
07a1240eba TDACChemistryModel::DRG: Corrected comments
Patch contributed by Francesco Contino
2017-06-23 08:17:45 +01:00
1f967d5cd8 reactingEulerFoam::IsothermalPhaseModel: Added support for isothermal compressible flow
Based on patch contributed by Ronald Oertel, HZDR
Resolves bug-report https://bugs.openfoam.org/view.php?id=2583
2017-06-15 16:43:04 +01:00
7e408dd242 vectorField: vector2DField: Added zip functions for stitching together a
vectorField or vector2DField from scalarField components. To do this
properly and have it work for field-type combinations would require some
new field function macros.
2017-05-22 12:58:25 +01:00
1f59360e55 fvOptions: limitVelocity: Fixed the correction factor
Resolves bug report https://bugs.openfoam.org/view.php?id=2634
2017-07-27 15:10:30 +01:00
3b8528440d foamDebugSwitches: Removed, no longer needed
Resolves bug-report https://bugs.openfoam.org/view.php?id=2590
2017-06-23 09:00:44 +01:00
5403e977f1 listSwitches: moved from argList to debug
Initially the listSwitches functions depended directly on argList functionality
but this has now been factored out so that the listSwitches functions are more
general and require only debug functionality.
2017-06-11 23:18:34 +01:00
02e33f4997 Replace foamList utility with -list.* options
Provides better context for the available boundary conditions, fvOptions,
functionObjects etc. and thus returns only those available to and compatible
with the particular application.

e.g.

pimpleFoam -help

Usage: pimpleFoam [OPTIONS]
options:
  -case <dir>       specify alternate case directory, default is the cwd
  -listFunctionObjects
                    List functionObjects
  -listFvOptions    List fvOptions
  -listRegisteredSwitches
                    List switches registered for run-time modification
  -listScalarBCs    List scalar field boundary conditions (fvPatchField<scalar>)
  -listSwitches     List switches declared in libraries but not set in
                    etc/controlDict
  -listTurbulenceModels
                    List turbulenceModels
  -listUnsetSwitches
                    List switches declared in libraries but not set in
                    etc/controlDict
  -listVectorBCs    List vector field boundary conditions (fvPatchField<vector>)
  -noFunctionObjects
                    do not execute functionObjects
  -parallel         run in parallel
  -postProcess      Execute functionObjects only
  -roots <(dir1 .. dirN)>
                    slave root directories for distributed running
  -srcDoc           display source code in browser
  -doc              display application documentation in browser
  -help             print the usage

pimpleFoam listTurbulenceModels

pimpleFoam -listTurbulenceModels
/*---------------------------------------------------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  dev                                   |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
Build  : dev-39c46019e44f
Exec   : pimpleFoam -listTurbulenceModels
Date   : Jun 10 2017
Time   : 21:37:49
Host   : "dm"
PID    : 675
Case   : /home/dm2/henry/OpenFOAM/OpenFOAM-dev
nProcs : 1
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
SetNaN : Initialising allocated memory to NaN (FOAM_SETNAN).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10)
allowSystemOperations : Allowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Turbulence models
3
(
LES
RAS
laminar
)

RAS models
18
(
LRR
LamBremhorstKE
LaunderSharmaKE
LienCubicKE
LienLeschziner
RNGkEpsilon
SSG
ShihQuadraticKE
SpalartAllmaras
kEpsilon
kOmega
kOmegaSST
kOmegaSSTLM
kOmegaSSTSAS
kkLOmega
qZeta
realizableKE
v2f
)

LES models
10
(
DeardorffDiffStress
Smagorinsky
SpalartAllmarasDDES
SpalartAllmarasDES
SpalartAllmarasIDDES
WALE
dynamicKEqn
dynamicLagrangian
kEqn
kOmegaSSTDES
)

Further work will be needed to support the -listTurbulenceModels option in
multiphase solvers.
2017-06-10 21:34:27 +01:00
5cc03052ff saturationModels::function1: New Function1 Tsat model
based on code contributed by Juho Peltola, VTT.

Resolves contribution request https://bugs.openfoam.org/view.php?id=2573
2017-06-26 17:36:10 +01:00
69c727bd53 pimpleControl: Corrected handling of finalInnerIter() 2017-06-06 10:18:02 +01:00
a1e0fe9582 compressibleInflowOutflow template case: added missing wallDist in fvSchemes 2017-06-04 12:33:22 +01:00
3c1982e205 surfaceFind: output region/zone number of found face 2017-06-02 21:02:01 +01:00
0bc9a459c8 CourantNo: Removed check for nInternalFaces which is not correct in general in parallel 2017-05-31 10:37:11 +01:00
ec6c0d7e0f cfdTools: Added a number of functions for performing volume averages of
discontinuous fields, with the discontinuity defined by a level set. The
functions do a proper integration of the discontinuous fields by tet-
and tri-cutting along the plane of the level set.
2017-05-22 12:29:27 +01:00
ad789e23bf BUG: sixDoFRigidBodyMotion: Corrected handling of acceleration update in first time-step
Resolves bug-report https://bugs.openfoam.org/view.php?id=2551
2017-05-18 16:30:08 +01:00
e4d15d874c Merge branch 'HashTable-method-enhancements' into 'develop'
Hash table method enhancements

See merge request !112
2017-05-18 12:54:36 +01:00
c1cbfe7a46 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-18 12:41:07 +01:00
99f31a75f0 COMP: Removed override directives to remove compiler warnings 2017-05-18 12:40:48 +01:00
15d0a918c5 COMP: use VTK_OVERRIDE on paraview methods
COMP: avoid undefined-var-template warning in runTimePostProcessing
2017-05-18 13:21:48 +02:00
20fd33e37c TUT: Moved laminar case from RAS->laminar directories 2017-05-18 11:44:52 +01:00
b6dec5860b ENH: histogram: output raw count, auto-range. Fixes #467 2017-05-18 10:54:45 +01:00
667b885116 STYLE: remove ununsed foamToVTK template functions 2017-05-17 18:59:51 +02:00
009f1ec85c ENH: only update meshSubset on topo change 2017-05-19 15:17:29 +02:00
69efba7348 STYLE: typos in comments 2017-05-19 15:16:54 +02:00
8a3915eb67 STYLE: Corrected header text 2017-05-17 17:35:27 +01:00
d6e721a9bd ENH: simplify subsetMesh using new IOobjectList methods 2017-05-17 18:35:08 +02:00
39476bde1c GIT: Resolve conflict associated with cherry-pick of Foundation commit 79ff91350
79ff91350 - rhoPimpleFoam: Improved support for compressible liquids
(2017-05-17 17:05:43 +0100) <Henry Weller>
2017-05-17 17:05:43 +01:00
aeae8e70de ENH: simplify sampling grouping using new IOobjectList methods 2017-05-17 16:25:20 +02:00
b2edd73881 ENH: simplify foamToEnsight using new IOobjectList methods
BUG: foamToEnsight fails with missing field at time 0 (fixes #473)
2017-05-17 14:41:21 +02:00
568570d2be Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-17 12:53:10 +01:00
77865d22dd ENH: histogram: 1) if max is not provided use field max. 2) output count. Fixes #467. 2017-05-17 12:52:13 +01:00
9761e9d81e ENH: added classes() method to objectRegistry/IOobjectList
- provides a summary hash of classes used and their associated object names.

  The HashTable representation allows us to leverage various HashTable
  methods. This hashed summary view can be useful when querying
  particular aspects, but is most useful when reducing the objects in
  consideration to a particular subset. For example,

      const wordHashSet interestingTypes
      {
          volScalarField::typeName,
          volVectorField::typeName
      };

      IOobjectList objects(runTime, runTime.timeName());
      HashTable<wordHashSet> classes = objects.classes();

      classes.retain(interestingTypes);

      // Or do just the opposite:
      classes.erase(unsupportedTypes);

  Can also use the underlying HashTable filter methods

STYLE: use templated internals to avoid findString() when matching subsets
2017-05-17 10:43:24 +02:00
cf889306d0 ENH: added HashTable count, filter and generalized toc methods
- Generalized means over filtering table entries based on their keys,
  values, or both.  Either filter (retain), or optionally prune elements
  that satisfy the specified predicate.

  filterKeys and filterValues:
  - Take a unary predicate with the signature

        bool operator()(const Key& k);

  - filterEntries:
    Takes a binary predicate with the signature

        bool operator()(const Key& k, const T& v);

==

  The predicates can be normal class methods, or provide on-the-fly
  using a C++ lambda. For example,

      wordRes goodFields = ...;
      allFieldNames.filterKeys
      (
          [&goodFields](const word& k){ return goodFields.match(k); }
      );

  Note that all classes that can match a string (eg, regExp, keyType,
  wordRe, wordRes) or that are derived from a Foam::string (eg, fileName,
  word) are provided with a corresponding

      bool operator()(const std::string&)

  that either performs a regular expression or a literal match.
  This allows such objects to be used directly as a unary predicate
  when filtering any string hash keys.

  Note that HashSet and hashedWordList both have the proper
  operator() methods that also allow them to be used as a unary
  predicate.

- Similar predicate selection with the following:
    * tocKeys, tocValues, tocEntries
    * countKeys, countValues, countEntries

  except that instead of pruning, there is a simple logic inversion.
2017-05-17 10:18:14 +02:00
8d018e7950 ENH: added constant predicates
- predicates::always and predicates::never returning true and false,
  respectively. These simple classes make it easier when writing
  templated code.

  As well as unary and binary predicate forms, they also contain a
  match(std::string) method for compatibility with regex-based classes.

STYLE: write bool and direction as primitive 'int' not as 'label'.
2017-05-17 10:18:14 +02:00
a8d2ebf298 ENH: cleanup wordRe interfaces etc.
- ensure that the string-related classes have consistently similar
  matching methods. Use operator()(const std::string) as an entry
  point for the match() method, which makes it easier to use for
  filters and predicates. In some cases this will also permit using
  a HashSet as a match predicate.

regExp
====
- the set method now returns a bool to signal that the requested
  pattern was compiled.

wordRe
====
- have separate constructors with the compilation option (was previously
  a default parameter). This leaves the single parameter constructor
  explicit, but the two parameter version is now non-explicit, which
  makes it easier to use when building lists.

- renamed compile-option from REGEX (to REGEXP) for consistency with
  with the <regex.h>, <regex> header names etc.

wordRes
====
- renamed from wordReListMatcher -> wordRes. For reduced typing and
  since it behaves as an entity only slightly related to its underlying
  list nature.

- Provide old name as typedef and include for code transition.

- pass through some list methods into wordRes

hashedWordList
====
- hashedWordList[const word& name] now returns a -1 if the name is is
  not found in the list of indices. That has been a pending change
  ever since hashedWordList was generalized out of speciesTable
  (Oct-2010).

- add operator()(const word& name) for easy use as a predicate

STYLE: adjust parameter names in stringListOps

- reflect if the parameter is being used as a primary matcher, or the
  matcher will be derived from the parameter.
  For example,
      (const char* re), which first creates a regExp
      versus (const regExp& matcher) which is used directly.
2017-05-16 23:54:43 +02:00
cb4bf9e6b7 BUG: foamToEnsight fails with missing field at time 0 (fixes #473) 2017-05-16 17:28:09 +02:00
c1c6243c3e ENH: pass through doc/Allwmake arguments, add -config, -dir options
- can run doxygen with an alternative Doxyfile, which is useful
  when verifying generated content for particular classes.
  Eg,
      PATH/doc/Allwmake -dir $PWD
2017-05-16 10:53:07 +02:00
acc048a2ce Merge branch 'consistency-updates' into 'develop'
Consistency updates

See merge request !111
2017-05-15 12:34:02 +01:00
8a66ec9975 ENH: replace paraview vtk conversion with library utilities
- this allows filling in the VTK structures without intermediate data
  and without sequencial insertion. Should be faster and smaller
  than the previous cell-wise insertion methods.
  Most importantly, it improves code reuse.
2017-05-15 13:01:38 +02:00
1f18a0f97f ENH: replace internal meshmaps with foamVtkMeshMaps 2017-05-15 12:57:36 +02:00
1889ea83e3 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-15 10:17:57 +01:00
3cf7820160 ENH: surfaceMeshTriangulate: handle time selection; handle moving meshes. Fixes #470. 2017-05-15 10:17:24 +01:00
d4041e7d36 ENH: consistent access to IOobjectList names.
- Previously matched name against the object->name() method
  but saved with iter.key().  Now use iter.key() more consistently.

STYLE: consistent parameter names (doxygen)
2017-05-15 08:47:35 +02:00
6933bc3021 ENH: HashPtrTable remove/erase now include safeguard against end-iterator
- This makes the following safe:

      auto iter = ptrTable.find(unknownKey);
      ptrTable.erase(iter);

- Unmask HashPtrTable::erase(const Key& key) method
2017-05-15 09:57:25 +02:00
2f288cfbef ENH: first pv reader version with delayed assembly of output blocks
- this greatly simplifies data management and opens the possibility of
  reusing converted vtk meshes instead of converting each time.
2017-05-15 02:06:53 +02:00
cf5ebd82db ENH: improve internal bookkeeping in paraview readers
- has the selected values directly and use these lookup names to store
  directly into a hash. This replaces several parallel lists of
  decomp information etc and makes it easier.
2017-05-14 21:42:59 +02:00
09f0cfd5c7 STYLE: reduce number of small methods in paraview reader
- improves the overview of the code
2017-05-14 21:38:15 +02:00
48bf71dd26 STYLE: avoid VTK InsertNextPoint if we already know the sizes
- avoids potentially issues if we reusing a vtkPoints array,
  and should be marginally faster without the additional
  range checking.
2017-05-14 21:24:06 +02:00
2e0337d024 ENH: use smart pointers for paraview readers
- adds flexiblity and reduces risk of memory leaks as we add/change
  features

STYLE: adjust naming for paraview internal polyDecomp
2017-05-14 21:04:11 +02:00
4b0d1632b6 BUG: hashtable key_iterator ++ operator returning incorrect type
ENH: ensure std::distance works with hashtable iterators
2017-05-14 16:58:47 +02:00
0c53a815ed ENH: avoid std::distance for std::initializer_list
- std::initializer_list has its own size() method, so no need to use
  std::distance.

STYLE/BUG: use separate iterator de-reference and increment in List

- avoids unnecessary copying of iterators, and avoids any potentially
  odd behaviour with the combination with incrementing.

ENH: support construct from iterator pair for DynamicList, SortableList
2017-05-14 16:28:21 +02:00
83669e284f ENH: improvements to labelRange const_iterator
- inherit from std::iterator to obtain the full STL typedefs, meaning
  that std::distance works and the following is now possible:

      labelRange range(100, 1500);
      scalarList list(range.begin(), range.end());

  --
  Note that this does not work (mismatched data-types):

      scalarList list = identity(12345);

  But this does, since the *iter promotes label to scalar:

      labelList ident = identity(12345);
      scalarList list(ident.begin(), ident.end());

  It is however more than slightly wasteful to create a labelList
  just for initializing a scalarList. An alternative could be a
  a labelRange for the same purpose.

      labelRange ident = labelRange::identity(12345);
      scalarList list(ident.begin(), ident.end());

  Or this
      scalarList list
      (
          labelRange::null.begin(),
          labelRange::identity(12345).end()
      );
2017-05-14 14:39:17 +02:00
b83af3b085 rhoPimpleDyMFoam: Updated transonic formulation for consistency with sonicFoam 2017-05-12 18:34:00 +01:00
71710e0798 ENH: use prefix when displaying group,patch names for paraview selection
- easier to detect the implicit grouping
2017-05-12 15:37:04 +02:00
e5cdee5dd9 STYLE: use labelRange and range-based-for in paraview readers
- also use updated forAll* macros
2017-05-12 15:36:44 +02:00
418ebe4a87 ENH: replace writeFuncs in setSet with foamVtk library utilities 2017-05-19 12:28:13 +02:00
c685f70c82 ENH: rationalize VTK output classes and structures
- relocated to dedicated foamVtkOutput namespace. Make it easier to
  obtain a formatter directly without a foamVtkOutput::outputOptions.
  Make the logic clear within outputOptions (avoid previous, cryptic
  bit masking). foamVtkOutput::legacy also becomes a namespace instead
  of a class. Relocate commonly used things into src/fileFormats, leave
  volField-related parts in src/conversion.
2017-05-19 12:11:49 +02:00
12353e71e7 ENH: provide OpenFOAM/VTK low-level transcription routines
- Zero-copy does not work for several reasons, but this uses the
  OpenFOAM structures to write VTK-compatible formats into external
  arrays.
2017-05-12 15:35:08 +02:00
0e7b135181 STYLE: adjust const access for linked-list iterators 'operator*'
- provides const/non-const access to the underlying list, but the
  iterator access itself is const.

- provide linked-list iterator 'found()' method for symmetry with
  hash-table iterators. Use nullptr for more clarity.
2017-05-12 12:26:28 +02:00
644779725d functionObjects::wallHeatFlux: Added support for solid regions
Patch contributed by Stephan Goeke
2017-05-12 11:05:45 +01:00
7b825d0817 rhoPimpleFoam: Updated transonic option to be consistent with sonicFoam
Improves stability on start-up and allows running at slightly larger time-steps.
2017-05-12 11:04:38 +01:00
f73b5b629f ENH: added HashTable 'lookup' and 'retain' methods
- lookup(): with a default value (const access)
  For example,
      Map<label> something;
      value = something.lookup(key, -1);

    being equivalent to the following:

      Map<label> something;
      value = -1;  // bad value
      if (something.found(key))
      {
          value = something[key];
      }

    except that lookup also makes it convenient to handle const references.
    Eg,

      const labelList& ids = someHash.lookup(key, labelList());

- For consistency, provide a two parameter HashTable '()' operator.
  The lookup() method is, however, normally preferable when
  const-only access is to be ensured.

- retain(): the counterpart to erase(), it only retains entries
  corresponding to the listed keys.

  For example,
      HashTable<someType> largeCache;
      wordHashSet preserve = ...;

      largeCache.retain(preserve);

    being roughly equivalent to the following two-stage process,
    but with reduced overhead and typing, and fewer potential mistakes.

      HashTable<someType> largeCache;
      wordHashSet preserve = ...;

      {
          wordHashSet cull(largeCache.toc()); // all keys
          cull.erase(preserve);               // except those to preserve
          largeCache.erase(cull);             //
      }

  The HashSet &= operator and retain() are functionally equivalent,
  but retain() also works with dissimilar value types.
2017-05-11 12:25:35 +02:00
034ddfa78f ENH: make coeffs dictionaries optional for surfaceFeatureExtract 2017-05-10 14:11:28 +02:00
8728e8353f STYLE: avoid explicit use of 'word' as HashTable template parameter
- less clutter and typing to use the default template parameter when
  the key is 'word' anyhow.

- use EdgeMap instead of the longhand HashTable version where
  appropriate
2017-05-10 13:44:27 +02:00
4d126bfe2d ENH: add dictionary optionalSubDict() method as per .org change (20-Apr) 2017-05-10 12:51:21 +02:00
d27d69e3f7 reconstructParMesh: Use tree method to improve speed and scaling
Based on development contributed by Paul Edwards, Intel.

Conflicts:
	applications/utilities/parallelProcessing/reconstructParMesh/reconstructParMesh.C
2017-05-09 09:32:25 +01:00
24d1e50f45 BUG: LimitedScheme - corrected oriented flag. Fixes #493 2017-06-12 09:18:22 +01:00
132c0e719a TUT: Added min/max(p) function object 2017-06-09 10:53:37 +01:00
2af8d38827 ENH: Added new Joule Heating fvOption and test case
Evolves an electrical potential equation

    \f[
        \grad \left( \sigma \grad V \right)
    \f]

    where \f$ V \f$ is electrical potential and \f$\sigma\f$ is the
    electrical current

    To provide a Joule heating contribution according to:

    Differential form of Joule heating - power per unit volume:

    \f[
        \frac{d(P)}{d(V)} = J \cdot E
    \f]

    where \f$ J \f$ is the current density and \f$ E \f$ the electric
field.
    If no magnetic field is present:

    \f[
        J = \sigma E
    \f]

    The electric field given by

    \f[
        E = \grad V
    \f]

    Therefore:

    \f[
        \frac{d(P)}{d(V)} = J \cdot E
                          = (sigma E) \cdot E
                          = (sigma \grad V) \cdot \grad V
    \f]

Usage
    Isotropic (scalar) electrical conductivity
    \verbatim
    jouleHeatingSourceCoeffs
    {
        anisotropicElectricalConductivity no;

        // Optionally specify the conductivity as a function of
        // temperature
        // Note: if not supplied, this will be read from the time
        // directory
        sigma           table
        (
            (273        1e5)
            (1000       1e5)
        );
    }
    \endverbatim

    Anisotropic (vectorial) electrical conductivity
    jouleHeatingSourceCoeffs
    {
        anisotropicElectricalConductivity yes;

        coordinateSystem
        {
            type        cartesian;
            origin      (0 0 0);

            coordinateRotation
            {
                type        axesRotation;
                e1          (1 0 0);
                e3          (0 0 1);
            }
        }

        // Optionally specify sigma as a function of temperature
        //sigma           (31900 63800 127600);
        //
        //sigma           table
        //(
        //    (0      (0 0 0))
        //    (1000   (127600 127600 127600))
        //);
    }

    Where:
    \table
        Property     | Description               | Required  | Default
value
        T            | Name of temperature field | no        | T
        sigma        | Electrical conductivity as a function of
temperature |no|
        anisotropicElectricalConductivity | Anisotropic flag | yes |
    \endtable

    The electrical conductivity can be specified using either:
    - If the \c sigma entry is present the electrical conductivity is
      specified
      as a function of temperature using a Function1 type
    - If not present the sigma field will be read from file
    - If the anisotropicElectricalConductivity flag is set to 'true',
      sigma
      should be specified as a vector quantity
2017-06-09 10:29:21 +01:00
caf9a0870d ENH: Added bash completion for OpenFOAM applications 2017-06-08 16:24:06 +01:00
b36491576d COMP: foamList - removed corruption error on exit 2017-06-08 16:14:51 +01:00
c187e9b523 ENH: foamHelp - minro refactoring to enable use of foamHelp -help option 2017-06-08 16:07:58 +01:00
40ddfb4277 COMP: renamed runtime selection table to avoid duplicate entry clashes 2017-06-08 16:06:16 +01:00
2b060155c3 ENH: Added script to create bash tab-completions 2017-06-08 16:05:31 +01:00
a1a6f25429 tutorials/multiphase/interDyMFoam/RAS/DTCHull: Resolve stability issue caused by improvements to MULES 2017-05-08 22:44:14 +01:00
7da065481a tutorials/combustion/reactingFoam/RAS/SandiaD_LTS/system/decomposeParDict: removed 2017-05-08 17:03:30 +01:00
9d07299117 fvOptions/radiation: Corrected documentation
Resolves bug-report https://bugs.openfoam.org/view.php?id=2545
2017-05-08 17:02:28 +01:00
0e7630feca ENH: improved handling of 'unresolved' surface intersections (issue #450)
- the heuristic for matching unresolved intersections is a relatively
  simple matching scheme that seems to be more robust than attempting to walk
  the geometry or the cuts.

- avoid false positives for self intersection
2017-05-08 14:57:47 +02:00
ede3a844e1 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-08 11:55:12 +01:00
91585fd32e STYLE: checkMesh: formatting help 2017-05-08 11:54:48 +01:00
cd8083eb95 Merge branch 'feature-consistency-face-access' into 'develop'
Feature consistency face access

See merge request !109
2017-05-08 10:58:42 +01:00
46a1fed97b Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-08 10:51:24 +01:00
134f7abd57 ENH: checkMesh: output vol fields of mesh quality. Fixes #466. 2017-05-08 10:50:59 +01:00
708c1b5c41 ENH: simplify ensightCells/ensightFaces with labelRange
- can avoid allocating/reallocating SubList

STYLE: don't need NamedEnum for ensightCells, ensightFaces lookup
2017-05-08 11:21:44 +02:00
b4f6484ddf ENH: use faceTraits for managing differences between face representations 2017-05-07 16:58:44 +02:00
0c4d2bcd76 ENH: improve consistency in access for face, triFace, edge.
- ensure that each have found() and which() methods

- add faceTraits for handling compile-time differences between
  'normal' and tri-faces

- provide line::unitVec method (complimentary to edge::unitVec)
2017-05-07 15:49:52 +02:00
50306c0bda flowRateFaceZone: faceZone configuration for the surfaceFieldValue functionObject 2017-05-05 18:29:14 +01:00
c872b0f13f Merge remote-tracking branch '1612/master' into develop 2017-05-05 10:20:02 +02:00
f895c934e7 COMP: skip compilation of plugins if include files are missing (fixes #464) 2017-05-05 10:14:48 +02:00
8006d64d74 COMP: skip compilation of plugins if include files are missing (fixes #464) 2017-05-05 10:02:34 +02:00
4059dbd6ce snappyHexMesh: Feature line tracking should end on AMI patches 2017-05-04 18:25:03 +01:00
f96db2d600 BUG: codedFvOptionTemplate: updated 'setValue' to 'constrain'
Resolves bug-report https://bugs.openfoam.org/view.php?id=2579
2017-06-13 16:52:16 +01:00
c38a0b1a4b codedFunctionObject.H: Removed spurious '"'
Resolves bug-report https://bugs.openfoam.org/view.php?id=2554
2017-05-18 12:39:34 +01:00
d27dbbf096 Euler-Euler: turbulentDispersionModels: Burns: Minor re-formulation to
improve stability.

Resolves bug report <https://bugs.openfoam.org/view.php?id=2544>
2017-05-09 08:48:38 +01:00
cd6221664f Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-05-04 17:50:33 +01:00
4b7c74f8eb BUG: sampledPlane: fix parallel running on subset. Fixes #463. 2017-05-04 17:50:07 +01:00
97b6475877 Merge branch 'feature-improved-container-classes' into 'develop'
improved container classes

See merge request !108
2017-05-04 16:48:57 +01:00
ff132ff5f6 ENH: orientedFields - updated mapping and parallel utils 2017-05-04 15:32:51 +01:00
6747d14dfa BUG: odd table size after shrink (issue #460)
- remove this unused method
2017-05-04 13:11:46 +02:00
7edd801c72 BUG: wall/patch distance and inverseDistanceDiffusivity - updated dimensions and use meshWave as a default method for backwards compatibility. Fixes #462 2017-05-04 11:33:00 +01:00
8dae01913c ENH: regex matching on std::string, not Foam::string
- avoids unneeded promotion of types.
  Easier to switch regex engines in the future.
2017-05-04 12:31:49 +02:00
3b2cd0b107 DPMDyMFoam, DPMDyMFoam: Corrected support for closed-domain simulations
Also added support for extrapolated pressure boundary conditions.
2017-05-04 09:39:23 +01:00
b39b90a9b5 CrankNicolsonDdtScheme: Corrected input of off-centering coefficient of 1 2017-05-11 19:33:01 +01:00
03d180724b ENH: improve HashTable iterator access and management
- provide key_iterator/const_key_iterator for all hashes,
  reuse directly for HashSet as iterator/const_iterator, respectively.

- additional keys() method for HashTable that returns a wrapped to
  a pair of begin/end const_iterators with additional size/empty
  information that allows these to be used directly by anything else
  expecting things with begin/end/size. Unfortunately does not yet
  work with std::distance().

  Example,
     for (auto& k : labelHashTable.keys())
     {
        ...
     }
2017-05-04 10:17:18 +02:00
759306a3e2 STYLE: more consistent typedefs in Map, PtrMap, HashPtrTable 2017-05-04 02:47:32 +02:00
e105e30bfb STYLE: add edge(labelPair) constructor, debug info etc. 2017-05-04 02:42:50 +02:00
f7e502d459 STYLE: relocate some friend operations to be global ones 2017-05-04 02:39:57 +02:00
5d541defe6 ENH: simplify and extend labelRange
- add increment/decrement, repositioning. Simplify const_iterator.

- this makes is much easier to use labelRange for constructing ranges of
  sub-lists. For symmetry with setSize() it has a setStart() instead of
  simply assigning to start() directly. This would also provide the
  future possibility to imbue the labelRange with a particular policy
  (eg, no negative starts, max size etc) and ensure that they are
  enforced.

  A simple use case:

    // initialize each to zero...
    List<labelRange> subListRanges = ...;

    // scan and categorize
    if (condition)
       subListRanges[categoryI]++;  // increment size for that category

    // finally, set the starting points
    start = 0;
    for (labelRange& range : subListRanges)
    {
        range.setStart(start);
        start += range.size();
    }
2017-05-04 02:19:01 +02:00
f2e4aac14c BUG: reactingEulerFoam: Corrected definition of Reynolds number in Beetstra and Tenneti drag laws
Patch contributed by Alberto Passalacqua, Iowa State University
2017-05-03 19:18:30 +01:00
bdc48f6f54 thermophysicalModels: Corrected alphah to be enthalpy based
in

solidSpecie/transport/const/constAnIsoSolidTransport
solidSpecie/transport/const/constIsoSolidTransport
solidSpecie/transport/exponential/exponentialSolidTransport
solidSpecie/transport/polynomial/polynomialSolidTransport
specie/transport/logPolynomial/logPolynomialTransport
specie/transport/polynomial/polynomialTransport
specie/transport/sutherland/sutherlandTransport

Resolves bug-report https://bugs.openfoam.org/view.php?id=2532
2017-05-03 14:59:07 +01:00
5db1694633 surfaceTensionModels: Resolved warning from Clang concerning virtual function overload 2017-05-03 19:17:43 +01:00
009f8df176 TUT: minor update 2017-05-22 13:37:51 +01:00
db5348880e MRG: resolved merge conflicts from merge from develop branch 2017-05-19 16:29:54 +01:00
79bfd7d7d9 TUT: Corrected execute permissions on run scripts 2017-05-19 11:46:58 +01:00
62ff00f860 COMP: specie - ensure if block is evaluated 2017-05-18 22:12:48 +01:00
0a4733acab ENH: Tutorial updates 2017-05-18 14:47:00 +01:00
28868f8d4d ENH: Updated reading of dimensioned types from transportProperties dictionary to avoid the need to provide the dimension set 2017-05-18 14:44:52 +01:00
9a6f0fdd37 COMP: Updated kOmegaSSTSato model to suppress compiler warning 2017-05-18 14:43:05 +01:00
9efd9ce061 BUG: TDACChemistryModel - corrected construction of tabulationResults_ field 2017-05-18 14:42:37 +01:00
776d87836b STYLE: corrected header comment 2017-05-18 12:49:09 +01:00
d71a7857bf Merge remote-tracking branch 'origin/develop' into integration-foundation 2017-05-18 12:43:15 +01:00
3814762785 ENH: relocate triSurface classes into surfMesh library (issue #294)
- simplifies organization, includes, linkage etc.
2017-05-18 10:42:05 +02:00
abe6121311 GIT: remove remnant edgeMesh Make/{files,options}
- missed by commit c085c5df25
2017-05-18 11:01:27 +02:00
2e9bead519 MRG: merged develop line back into integration branch 2017-05-18 11:11:12 +01:00
8ff163713d BUG: Lagrangian - corrected particle LocalInteraction behaviour on coupled patches. See reactingParcelFoam/filter tutorial example 2017-05-17 20:48:00 +01:00
f68896605e ENH: Clean-up after latest Foundation integrations 2017-05-17 17:33:47 +01:00
91b90da4f3 Integrated Foundation code to commit 104aac5 2017-05-17 16:35:18 +01:00
c9df5f9249 Merge branch 'dict-lookup' into 'develop'
Dict lookup

See merge request !105
2017-05-02 16:37:57 +01:00
a8e3482591 Merge branch 'edge-labelPair-containers' into 'develop'
Use updated edge and labelPair containers

See merge request !106
2017-05-02 16:35:54 +01:00
45c29be341 COMP: avoid clang compiler warnings 2017-05-02 13:33:40 +02:00
1dc3236825 BUG: fixed odd sizing for hash tables (fixes #460) 2017-05-02 12:31:52 +02:00
f8c58bdd5c ENH: HashSet iterators operator* now return Key.
- much more useful than returning nil. Can now use with a for range:

    for (auto i : myLabelHashSet)
    {
        ...
    }
2017-05-02 01:58:38 +02:00
8f75bfbed5 ENH: add HashTable::writeKeys and HashSet::writeList
- can use the hash-set writeList in combination with FlatOutput:

  Eg, flatOutput(myHashSet);
2017-05-02 00:51:04 +02:00
c0a50dc621 ENH: improve overall consistency of the HashTable and its iterators
- previously had a mismash of const/non-const attributes on iterators
  that were confused with the attributes of the object being accessed.

- use the iterator keys() and object() methods consistently for all
  internal access of the HashTable iterators. This makes the intention
  clearer, the code easier to maintain, and protects against any
  possible changes in the definition of the operators.

- 'operator*': The standard form expected by STL libraries.
  However, for the std::map, this dereferences to a <key,value> pair,
  whereas OpenFOAM dereferences simply to <value>.

- 'operator()': OpenFOAM treats this like the 'operator*'

- adjusted the values of end() and cend() to reinterpret from nullObject
  instead of returning a static iteratorEnd() object.
  This means that C++ templates can now correctly deduce and match
  the return types from begin() and end() consistently.
  So that range-based now works.

  Eg,
      HashTable<label> table1 = ...;
      for (auto i : table1)
      {
          Info<< i << endl;
      }

  Since the 'operator*' returns hash table values, this prints all the
  values in the table.
2017-05-02 00:15:12 +02:00
0298c02b2d ENH: ensure nullObject is large enough for reinterpret
- previously occupied 1 byte. Now occupies enough to hold a pointer,
  which helps if using reinterpret_cast to something that has some
  member content.
2017-05-01 22:39:36 +02:00
7cceda620d BUG: comparison to static end() for hashtable lookup.
- just use the iterator method found() as an alternative and
  convenient way to avoid the issue with less typing.
2017-05-01 21:28:41 +02:00
dc57c016ae BUG: comparison with incorrect construction tables
- previously hidden when hashtable used a static method and a
  different class for end()
2017-05-01 21:27:42 +02:00
805b76d4b9 ENH: support UList[labelRange] and SubList construction with labelRange
This uses a concept similar to what std::valarray and std::slice do.
A labelRange provides a convenient container for holding start/size
and lends itself to addressing 'sliced' views of lists.
For safety, the operations and constructors restricts the given input range
to a valid addressible region of the underlying list, while the labelRange
itself precludes negative sizes.

The SubList version is useful for patches or other things that have a
SubList as its parameter. Otherwise the UList [] operator will be the
more natural solution. The slices can be done with a labelRange, or
a {start,size} pair.

Examples,
     labelList list1 = identity(20);

     list1[labelRange(18,10)]  = -1;
     list1[{-20,25}] = -2;
     list1[{1000,5}] = -3;

     const labelList list2 = identity(20);
     list2[{5,10}] = -3;  // ERROR: cannot assign to const!
2017-05-01 14:01:09 +02:00
75ef6f4e50 ENH: add labelRange comparison operators and subset methods
- improve interface consistency.
2017-04-30 21:29:24 +02:00
9d1eb05bdc VoF solvers: New interfaceCompressionFvPatchScalarField BC and additional shear compression
Provides the additional compression necessary to ensure interface integrity
adjacent to a boundary at a low angle of incidence to the interface.  This is
particularly important when simulating planing hulls.
2017-04-30 19:38:47 +01:00
542151b1fa swirlFlowRateInletVelocityFvPatchVectorField: Avoid calculating origin and axis for patches with no faces
Resolves problem with reconstructPar
2017-08-16 14:14:24 +01:00
ef48fa1829 flowRateInletVelocity extrapolated: Removed reverse flow and correct only the normal component
Improved stability and convergence.
2017-07-17 12:18:47 +01:00
823d83b37b flowRateInletVelocity, flowRateOutletVelocity BCs: Updated docs 2017-07-16 22:59:30 +01:00
6d414f118b flowRateOutletVelocityFvPatchVectorField: Outlet equivalent of flowRateOutletVelocityFvPatchVectorField BC
Velocity outlet boundary condition which corrects the extrapolated velocity to
match the specified flow rate.
2017-07-16 21:36:32 +01:00
b3b124703d surfaceInterpolation::outletStabilised: Corrected typo
Resolves bug-report https://bugs.openfoam.org/view.php?id=2574
2017-06-13 16:50:02 +01:00
cfec338956 fixedShearStressFvPatchVectorField: Removed duplicate "value" entry
Resolves bug-report https://bugs.openfoam.org/view.php?id=2556
2017-05-18 19:56:16 +01:00
7f18c263bf matchedFlowRateOutletVelocity: New flow-rate outlet BC
Velocity outlet boundary condition which corrects the extrapolated velocity
to match the flow rate of the specified corresponding inlet patch.
2017-07-17 15:48:39 +01:00
77b7beb6af swirlFlowRateInletVelocity: Added support for specifying the origin and axis of rotation 2017-07-13 16:08:30 +01:00
065bfa264e INT: Compatibility updates followinglatest integrations 2017-09-05 10:19:09 +01:00
9976caa1c9 swirlInletVelocity: New general swirl inlet BC
which support the specification of the individual velocity components (axial,
radial and tangential) as Function1s.
2017-07-17 15:47:24 +01:00
1ae664e379 ENH: Reinstated local tet-based intersection 2017-09-05 09:32:21 +01:00
994b303ad7 tetrahedron: triangle: Improved barycentric handling on tets and tris
Updated the tetrahedron and triangle classes to use the barycentric
primitives. Removed duplicate code for generating random positions in
tets and tris, and fixed bug in tri random position.
2017-06-06 12:01:02 +01:00
7b427c382e ENH: add Tuple2 comparison operators, typedefs 2017-04-30 13:05:49 +02:00
5d6bf3e43d ENH: HashTable improvements
- optimize erasure using different HashTable based on its size.
  Eg, hashtable.erase(other);

  If 'other' is smaller than the hashtable, it is more efficient to
  use the keys from other to remove from the hashtable.

  Otherwise simply iterate over the hashtable and remove it if
  that key was found in other.
2017-04-30 10:21:10 +02:00
c65e2e580d ENH: add some standard templates and macros into stdFoam.H
- some functionality similar to what the standary library <iterator>
  provides.

  * stdFoam::begin() and stdFoam::end() do type deduction,
    which means that many cases it is possible to manage these types
    of changes.

    For example, when managing a number of indices:
       Map<labelHashSet> lookup;

    1) Longhand:

        for
        (
            Map<labelHashSet>::const_iterator iter = lookup.begin();
            iter != lookup.end();
            ++iter
        )
        { .... }

    1b) The same, but wrapped via a macro:

        forAllConstIter(Map<labelHashSet>, lookup, iter)
        { .... }

    2) Using stdFoam begin/end templates directly

        for
        (
            auto iter = stdFoam::begin(lookup);
            iter != stdFoam::end(lookup);
            ++iter
        )
        { .... }

    2b) The same, but wrapped via a macro:

        forAllConstIters(lookup, iter)
        { .... }

Note that in many cases it is possible to simply use a range-based for.
Eg,
     labelList myList;

     for (auto val : myList)
     { ... }

     for (const auto& val : myList)
     { ... }

These however will not work with any of the OpenFOAM hash-tables,
since the standard C++ concept of an iterator would return a key,value
pair when deferencing the *iter.

The deduction methods also exhibits some slightly odd behaviour with
some PtrLists (needs some more investigation).
2017-04-29 22:28:16 +02:00
6a5ea9a2bf ENH: improve HashSet construction and assignment
- make construct from UList explicit and provide corresponding
  assignment operator.

- add construct,insert,set,assignment from FixedList.
  This is convenient when dealing with things like edges or triFaces.
2017-04-29 15:19:47 +02:00
a2ddf7dd48 ENH: support HashTable erasure via a FixedList
- propagate common erasure methods as HashSet::unset() method,
  for symmetry with HashSet::set()
2017-04-29 14:50:46 +02:00
ded105c539 STYLE: HashTable documentation
- explicitly mention the value-initialized status for the operator().
  This means that the following code will properly use an initialized
  zero.

      HashTable<label> regionCount;

      if (...)
         regionCount("region1")++;

      ... and also this;

      if (regionCount("something") > 0)
      {
          ...
      }

  Note that the OpenFOAM HashTable uses operator[] to provide read and
  write access to *existing* entries and will provoke a FatalError if
  the entry does not exist.

  The operator() provides write access to *existing* entries or will
  create the new entry as required.
  The STL hashes use operator[] for this purpose.
2017-04-29 12:27:11 +02:00
1d9b311b82 ENH: further refinement to edge methods
- more hash-like methods.
  Eg, insert/erase via lists, clear(), empty(),...

- minVertex(), maxVertex() to return the smallest/largest label used

- improved documentation, more clarification about where/how negative
  point labels are treated.
2017-04-29 12:14:46 +02:00
643ef3318a tutorials/lagrangian: Added mixedVesselAMI2D
This tutorial demonstrates moving mesh and AMI with a Lagrangian cloud.
It is very slow, as interaction lists (required to compute collisions)
are not optimised for moving meshes. The simulation time has therefore
been made very short, so that it finishes in a reasonable time. The
mixer only completes a small fraction of a rotation in this time. This
is still sufficient to test tracking and collisions in the presence of
AMI and mesh motion.

In order to generate a convincing animation, however, the end time must
be increased and the simulation run for a number of days.
2017-04-28 11:00:31 +01:00
076cf421f3 cloudSolution: Check consistency between the transient option
and the continuous-phase simulation type

For LTS and steady-state simulations the transient option does not need to be
provided as only steady-state tracking is appropriate.  For transient running
the Lagrangian tracking may be steady or transient.
2017-08-22 13:58:25 +01:00
3f5103235e KinematicParcel: Apply in-cell updates before hitting the face
The evolution of a KinematicParcel happens in three stages; (1) tracking
across the cell, (2) interaction with the face or patch that has been
hit, and (3) clculation and and update of parcel and cell properties.
The KinematicParcel used to evolve in this order, as steps 1 and 2 were
part of the same lower level method. This meant that the update stage
was done after interacting with the face, meaning the parcel was not in
the cell that had just been tracked through, or, by means of a patch
interaction, had been modified such that it was no longer representative
of the track through the cell.

With the separation of stages 1 and 2 in the base class, it is now
possible to do the update stage before interacting with the face (i.e.,
proceeding in the order 1, 3, 2). This makes the state consistent for
the updates, and avoids the issues described.

Patch contributed by Timo Niemi, VTT.
This resolves bug report https://bugs.openfoam.org/view.php?id=2282
2017-08-16 09:56:04 +01:00
f021409db3 lagrangian: Made ACMI interactions insensitive to cell-face order 2017-08-11 10:22:03 +01:00
66349c60a1 lagrangian: Removed debugging message from particle::trackToFace 2017-08-11 08:34:42 +01:00
9b57ef06cf Lagrangian: Enabled tracking through ACMI patches and minor code improvements
Particle collisions with ACMI patches are now handled. The hit detects
whether the location is within the overlap or the coupled region and
recurses, calling the hit routine appropriate for the region.

The low level tracking methods are now more consistently named. There is
now a distinction between tracking to a face and hitting it. Function
object side effects have been moved out of the base layer and into the
parcels on which they are meaningful.
2017-08-09 15:52:33 +01:00
c0bc17ea50 ThermoParcel: Improved numerical stability of heat transfer term
Patch contributed by Timo Niemi, VTT.
Resolves bug-report https://bugs.openfoam.org/view.php?id=2655
2017-08-07 17:58:07 +01:00
0a97c3fc95 lagrangian: Always set switchProcessor flag
The TrackData::switchProcessor flag was not being set for some of the
tracking steps made by the more complicated parcels. In the case that a
parcel starts the step already on a processor boundary, this sometimes
lead to the particle being transferred back and forth indefinitely. The
flag is now explicitly set in all cases.
2017-08-02 10:17:38 +01:00
2a6b16f522 lagrangian: Fixed argument passing from Colliding to Kinematic parcel component constructor
Resolves bug report https://bugs.openfoam.org/view.php?id=2643
2017-07-31 16:55:24 +01:00
a4762ea6ea lagrangian: Fixed infinite loops
Tracking through an inverted region of the mesh happens in a reversed
direction relative to a non-inverted region. Usually, this allows the
tracking to propagate normally, regardless of the sign of the space.
However, in rare cases, it is possible for a straight trajectory to form
a closed loop through both positive and negative regions. This causes
the tracking to loop indefinitely.

To fix this, the displacement through inverted regions has been
artifically increased by a small amount (1% at the moment). This has the
effect that the change in track fraction over the negative part of the
loop no longer exactly cancels the change over the positive part, and
the track therefore terminates.
2017-07-18 09:19:32 +01:00
e274e08b1a lagrangian: Corrected patch data
The KinematicCloud::patchData method has been made consistent on moving
meshes and/or when the time-step is being sub-cycled.

It has also been altered to calculate the normal component of a moving
patch's velocity directly from the point motions. This prevents an
infinite loop occuring due to inconsistency between the velocity used to
calculate a rebound and that used when tracking.

Some minor style improvements to the particle class have also been made.
2017-07-13 09:11:03 +01:00
c9b3744637 ParticleCollector: Prevented missing and duplicate collections
The particle collector was collecting some particles twice due to a
tolerance extending the tracked path. This has been removed. The new
tracking algorithm does not generate the same sorts of spurious
tolerance-scale motions that the old one did, so this extension of the
tracking path is unnecessary.

Some particles were also not being collected at all as they were hitting
a diagonal of the collection polygon and registering as not having hit
either of the adjacent triangles. The hit criteria has been rewritten. A
hit now occurs when the normals of the triangles created by joining the
intersection point with the polygon edges are all in the same direction
as the overall polygon normal. This calculation is not affected by the
polygon's diagonals.

The issue was raised by, and resolved with support from, Karl Meredith
at FM Global.

This resolves bug-report https://bugs.openfoam.org/view.php?id=2595
2017-07-05 09:26:56 +01:00
6b316ba3a9 interpolation: Optimise by using particle local coordinates
This change changes the point-tetIndices-face interpolation function
method to take barycentric-tetIndices-face arguments instead. This
function is, at present, only used for interpolating Eulerian data to
Lagrangian particles.

This change prevents an inefficiency in cellPointInterpolation whereby
the position of the particle is calculated from it's barycentric
coordinates, before immediately being converted back to barycentric
coordinates to perform the interpolation.
2017-06-06 16:07:56 +01:00
7a02a507d5 MPPIC: Optimised the averaging methods
The averaging methods now take the particle barycentric coordinates as
inputs rather than global positions. This change significantly optimises
Dual averaging, which is the most commonly used method. The run time of
the lagrangian/MPPICFoam/Goldschmidt tutorial has been reduced by a
factor of about two.
2017-06-01 14:49:38 +01:00
e9fb8b8572 tetIndices: Removed duplicate logic
The logic for generating tetrahedra from a face base point and an offset
was duplicated in a few places. It is now confined to the tetIndices
class.
2017-06-01 09:59:38 +01:00
a28f84c3a2 lagrangian::InjectionModels: Corrected documentation 2017-06-27 08:24:18 +01:00
3620876a40 CollidingCloud: Allow instantiation of the NoCollision model for steady-state operation 2017-06-19 15:38:46 +01:00
62e3d37324 primitiveShapes: Generalised tetrahedron and triangle cutting. Cuts are
now possible with level-sets as well as planes. Removed tetPoints class
as this wasn't really used anywhere except for the old tet-cutting
routines. Restored tetPointRef.H to be consistent with other primitive
shapes. Re-wrote tet-overlap mapping in terms of the new cutting.
2017-05-22 11:40:37 +01:00
04c11064b3 particle: Corrected the direction of tracking when passing through an
AMI. Applied the transformation.
2017-05-04 18:25:41 +01:00
655741b804 KinematicParcel: Bug fix. Restored steady particle tracking coupling.
This was broken when the minimum-step-fraction tolerance was removed.
2017-05-03 12:46:19 +01:00
d75eb94404 particle: Avoid warning about uninitialized edge 2017-04-28 12:08:21 +01:00
1a24be6e54 Merge branch 'feature-random-numbers' into 'develop'
Updated random numbers

See merge request !107
2017-04-28 10:11:18 +01:00
0b42024c98 ENH: turbulentDFSEMInlet - ensure different procs initialise the random number generator with a different seed 2017-04-28 10:01:43 +01:00
7f0cc0045d ENH: Random numbers - updated dependent code from change cachedRandom->Random class 2017-04-28 09:15:52 +01:00
b07bc1f0b8 ENH: Random numbers - consolidated Random classes
- old Random class deprecated
- cachedRandom renamed Random
2017-04-28 09:07:42 +01:00
da8ea0f21a ENH: refactor code from surfaceFeatureExtract to triSurfaceTools (issue #450) 2017-04-28 09:12:33 +02:00
743dea87d2 Lagrangian: Rewrite of the particle tracking algorithm to function in
terms of the local barycentric coordinates of the current tetrahedron,
rather than the global coordinate system.

Barycentric tracking works on any mesh, irrespective of mesh quality.
Particles do not get "lost", and tracking does not require ad-hoc
"corrections" or "rescues" to function robustly, because the calculation
of particle-face intersections is unambiguous and reproducible, even at
small angles of incidence.

Each particle position is defined by topology (i.e. the decomposed tet
cell it is in) and geometry (i.e. where it is in the cell). No search
operations are needed on restart or reconstruct, unlike when particle
positions are stored in the global coordinate system.

The particle positions file now contains particles' local coordinates
and topology, rather than the global coordinates and cell. This change
to the output format is not backwards compatible. Existing cases with
Lagrangian data will not restart, but they will still run from time
zero without any modification. This change was necessary in order to
guarantee that the loaded particle is valid, and therefore
fundamentally prevent "loss" and "search-failure" type bugs (e.g.,
2517, 2442, 2286, 1836, 1461, 1341, 1097).

The tracking functions have also been converted to function in terms
of displacement, rather than end position. This helps remove floating
point error issues, particularly towards the end of a tracking step.

Wall bounded streamlines have been removed. The implementation proved
incompatible with the new tracking algorithm. ParaView has a surface
LIC plugin which provides equivalent, or better, functionality.

Additionally, bug report <https://bugs.openfoam.org/view.php?id=2517>
is resolved by this change.
2017-04-28 08:03:44 +01:00
11c5456628 ENH: improvements for surfaceIntersection (issue #450)
- adjust for updates in 'develop'

- change surfaceIntersection constructor to take a dictionary of
  options.

        tolerance      | Edge-length tolerance          | scalar | 1e-3
        allowEdgeHits  | Edge-end cuts another edge     | bool   | true
        avoidDuplicates | Reduce the number of duplicate points    | bool | true
        warnDegenerate | Number of warnings about degenerate edges | label | 0
2017-04-28 08:49:45 +02:00
88a03de238 ENH: Random numbers - updated dependent code from change to cachedRandom class 2017-04-27 15:24:52 +01:00
02205ef167 ENH: Random numbers - cachedRandom - updated to use the re-entrant random interface 2017-04-27 15:24:20 +01:00
9df578f412 ENH: Random numbers - added re-entrant random interface 2017-04-27 15:23:45 +01:00
72d39f1707 STYLE: Minor code formatting 2017-04-27 14:50:20 +01:00
b9379426c9 ENH: Oriented fields - updated dependent code 2017-04-27 14:47:48 +01:00
799490a3cf ENH: add edgeHashes.H with some useful hash types for edges. 2017-04-27 14:43:16 +02:00
357c2c3470 ENH: relocate labelPairLookup into OpenFOAM library (as labelPairHashes.H)
- simplifies organization, allows reuse.
  provide some other useful hash types.
2017-04-27 14:40:37 +02:00
29635ee0f4 ENH: provide triSurfaceLoader convenience class
- for loading single or multiple surface files from constant/triSurface
  (or other) directory.

- select based on word, wordRe, wordReList.
2017-04-27 14:15:36 +02:00
00800764f3 STYLE: provide forwarder for triadField 2017-04-27 14:08:38 +02:00
cda089569c ENH: add short-circuit (break) on various List operator==()
- performance improvement. Noticed while examining issue #458
2017-04-27 13:00:34 +02:00
633e4c9c7f ENH: Use edgeHashes.H and labelPairHashes.H
- avoids some duplicate code.
2017-04-27 10:15:56 +02:00
5514471c15 BUG: FixedList '<' operator using a template parameter (fixes #458)
- cannot use comparison of list sizes. Okay for UList, but not here.

STYLE:
- don't need two iterators for the '<' comparison, can just access
  internal storage directly
2017-04-27 01:30:50 +02:00
104aac5fca externalWallHeatFluxTemperature: Added optional support for radiative flux to the outside
By specifying the optional outside surface emissivity radiative heat transfer to
the ambient conditions is enabled.  The far-field is assumed to have an
emissivity of 1 but this could be made an optional input in the future if
needed.

Relaxation of the surface temperature is now provided via the optional
"relaxation" which aids stability of steady-state runs with strong radiative
coupling to the boundary.
2017-04-26 12:32:23 +01:00
4ce77f6843 Merge branch 'master' into develop 2017-04-25 12:31:22 +01:00
d26ed93389 BUG: writeFile - corrected write of output file at start time 2017-04-25 12:30:35 +01:00
ffe3e0e425 ENH: allow '^' as anchor for dictionary scoping (issue #429)
- The existing ':' anchor works for rvalue substitutions
  (Eg, ${:subdict.name}), but fails for lvalues, since it is
  a punctuation token and parse stops there.
2017-04-25 11:57:21 +02:00
f1ca89463f ENH: support DimensionedField construction with Xfer
- can be used to reduce copying
2017-04-25 09:28:34 +02:00
32a6c1d988 ENH: relocate randomPointInPlane as plane::somePointInPlane
- makes more sense to bundle it with plane.
2017-04-24 20:23:31 +02:00
b1be223a82 ENH: meshTools output for treeBoundBox, points.
ENH: OBJstream output for treeBoundBox
2017-04-24 16:04:05 +02:00
cc16d9dabe BUG: runTimePostProcessing - corrected clipBox behaviour (see #456) 2017-04-24 14:33:37 +01:00
8886e90870 ENH: Progagted oriented() flag through field mapping 2017-04-24 13:05:19 +01:00
f71e4ff5cb ENH: surfaceFieldValue - simplified by making use of new field.oriented() functionality 2017-04-24 11:43:13 +01:00
976ad36776 ENH: Initial attempt to track oriented surface fields 2017-04-24 10:34:05 +01:00
430d8e1c4b ENH: UList<point> instead of pointField for meshShapes methods
- improves flexibility.

STYLE: make longestEdge a face method and deprecate the global function
2017-04-23 19:53:05 +02:00
f2304f7c0b ENH: various enhancements for edge.
- support edge-ordering on construction, and additional methods:
  - sort(), sorted(), unitVec(), collapse()

- null constructor initializes with -1, for consistency with face,
  triFace and since it is generally much more useful that way.

- add some methods that allow edges to used somewhat more like hashes.
  - count(), found(), insert(), erase()

  Here is possible way to use that:

      edge someEdge;  // initializes with '-1' for both entries

      if (someEdge.insert(pt1))
      {
         // added a new point label
      }

      ... later

      // unmark point on edge
      someEdge.erase(pt2);

--

STYLE:

- use UList<point> instead of pointField for edge methods for flexibility.

  The pointField include is retained, however, since many other routines
  may be relying on it being included via edge.H
2017-04-23 19:25:35 +02:00
7ee39746ff turbulenceModels: The "<type>Coeffs" sub-dictionary is now optional 2017-04-21 18:22:46 +01:00
d548903826 surfaceLambdaMuSmooth: Added meshTools to link 2017-04-21 16:50:20 +01:00
c085c5df25 Merged the edgeMesh library into the meshTools library 2017-04-21 10:38:53 +01:00
32a2a23466 ENH: enhancements for edgeMesh mergeEdges(), mergePoints()
- filter out degenerate edges
- remove unused points

STYLE: remove unused mergePoints() parameter

STYLE: doxygen for edgeMesh
2017-04-21 02:34:37 +02:00
ccc1a89c8b motionSolver: Changed keyword to select the motionSolver type to "motionSolver"
with backward-compatibility so that the previous keyword "solver" is supported.
2017-04-20 15:59:34 +01:00
89f2eff565 STYLE: improve usage notes for transformPoints, surfaceTransformPoints 2017-04-20 16:27:44 +02:00
3b2ab88ffc tutorials/mesh/blockMesh/pipe: Corrected constant/triSurface -> constant/geometry 2017-04-20 12:51:23 +01:00
e520cb9ccc searchableExtrudedCircle: Relocated to the edgeMesh library
Corrected the geometry directory name from "triSurface" to "geometry".

Resolves bug-report https://bugs.openfoam.org/view.php?id=2529
2017-04-20 12:46:50 +01:00
65eb43fcb1 BUG: foamCleanPath not removing duplicate non-existent directories 2017-04-20 13:04:46 +02:00
53cfa782b3 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-04-20 11:34:55 +01:00
e4ac3fba77 SVD: Improved overflow/division protection.
Resolves bug report https://bugs.openfoam.org/view.php?id=2486
2017-04-20 10:54:08 +01:00
7f01a4beda CONFIG: address differences between shells
- suppress error messages that appear with zsh.
  According to unset(1p), 'unset -f' unsets a function.
  If the function was not previously defined, this is a no-op.
  This is similar for zsh, but there it emits a warning if the
  function was not previously defined.

- avoid 'local' in functions sources from etc/bashrc.
  ksh does not support this.

- use 'command' shell builtin instead of 'type'.
  Seems to be more consistent between shell flavours.
2017-04-20 11:02:54 +02:00
5c51836501 The "<type>Coeffs" sub-dictionary is now optional for most model parameters
except turbulence and lagrangian which will also be updated shortly.

For example in the nonNewtonianIcoFoam offsetCylinder tutorial the viscosity
model coefficients may be specified in the corresponding "<type>Coeffs"
sub-dictionary:

transportModel  CrossPowerLaw;

CrossPowerLawCoeffs
{
    nu0         [0 2 -1 0 0 0 0]  0.01;
    nuInf       [0 2 -1 0 0 0 0]  10;
    m           [0 0 1 0 0 0 0]   0.4;
    n           [0 0 0 0 0 0 0]   3;
}

BirdCarreauCoeffs
{
    nu0         [0 2 -1 0 0 0 0]  1e-06;
    nuInf       [0 2 -1 0 0 0 0]  1e-06;
    k           [0 0 1 0 0 0 0]   0;
    n           [0 0 0 0 0 0 0]   1;
}

which allows a quick change between models, or using the simpler

transportModel  CrossPowerLaw;

nu0         [0 2 -1 0 0 0 0]  0.01;
nuInf       [0 2 -1 0 0 0 0]  10;
m           [0 0 1 0 0 0 0]   0.4;
n           [0 0 0 0 0 0 0]   3;

if quick switching between models is not required.

To support this more convenient parameter specification the inconsistent
specification of seedSampleSet in the streamLine and wallBoundedStreamLine
functionObjects had to be corrected from

    // Seeding method.
    seedSampleSet   uniform;  //cloud; //triSurfaceMeshPointSet;

    uniformCoeffs
    {
        type        uniform;
        axis        x;  //distance;

        // Note: tracks slightly offset so as not to be on a face
        start       (-1.001 -0.05 0.0011);
        end         (-1.001 -0.05 1.0011);
        nPoints     20;
    }

to the simpler

    // Seeding method.
    seedSampleSet
    {
        type        uniform;
        axis        x;  //distance;

        // Note: tracks slightly offset so as not to be on a face
        start       (-1.001 -0.05 0.0011);
        end         (-1.001 -0.05 1.0011);
        nPoints     20;
    }

which also support the "<type>Coeffs" form

    // Seeding method.
    seedSampleSet
    {
        type        uniform;

        uniformCoeffs
        {
            axis        x;  //distance;

            // Note: tracks slightly offset so as not to be on a face
            start       (-1.001 -0.05 0.0011);
            end         (-1.001 -0.05 1.0011);
            nPoints     20;
        }
    }
2017-04-20 09:14:48 +01:00
765c430748 STYLE: only count processors if required
- POSIX specifies '-c' for counting the number of matching lines,
  so we can just use that instead of 'wc' in wmake
2017-04-19 19:13:23 +02:00
4d29c32e9b ENH: improve handling of wmakeLnIncludeAll default search directories
- if called from the top-level project directory ($WM_PROJECT_DIR)
  default to using {applications,src} directories. This avoids
  erroneous linking of etc/codeTemplates and avoids the lengthy
  scanning of the tutorials directory
2017-04-19 18:31:21 +02:00
d4c7d8c6e5 ENH: add possibility to enable/disable profiling globally (issue #441)
- use InfoSwitch to disable, or via static method.

- respect the state of the argList banner when deciding to emit
  initialization information. Can otherwise end up with unwanted
  output rubbish on things like foamDictionary and foamListTimes.
2017-04-19 17:04:37 +02:00
c072f911c9 BUG: Corrected compilation errors 2017-04-19 13:44:54 +01:00
5844d337a0 STYLE: remove unneeded includes from iso-surface 2017-04-19 11:29:43 +02:00
e55339d1e1 BUG: name collision on profiling (issue #440) 2017-04-19 11:04:32 +02:00
6a583851bc ENH: support profiling on Time loop (issue #441)
- patch from Bernhard Gschaider
2017-04-19 09:52:17 +02:00
1b5a56476c Merge branch 'BUG_GL_449' into 'master'
BUG: adding case path to support parallel execution (Fixes #449)

Closes #449

See merge request !101
2017-04-19 08:40:53 +01:00
fa10d97b76 COMP: avoid nested classes for profiling (related to issue #441)
- nested classes can't be forward declared and thus less flexible
  than desired
2017-04-19 01:08:39 +02:00
27776b09b0 ENH: support default profiling settings from etc/controlDict (issue #441)
- patch from Bernhard Gschaider
2017-04-19 01:20:51 +02:00
befb49af10 STYLE: add parameter names for Time.H (doxygen)
- consistent use of watchIndex vs watchFd
2017-04-19 09:34:27 +02:00
da6e90de63 Merge branch 'feature-readNow' into 'develop'
Feature read now

See merge request !102
2017-04-19 17:22:28 +01:00
1170eda7b4 COMP: snappyHexMesh: adding missing functions in .H file 2017-04-19 16:31:40 +01:00
6285afdade BUG: timeActivatedFileUpdate: fix setting of distributed from decomposeParDict.
Fixes #420.
2017-04-19 09:28:12 +01:00
969083fd55 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-04-19 09:07:57 +01:00
4fea83d198 BUG: snappyHexMesh: trying to extrude non-manifold patches fails.
The typical topology is the one where boundary faces share non-consecutive
points (checkMesh reports this as 'Number of faces with non-consecutive shared points')
This is handled by no-extruding any of the vertices of both faces. Fixes #391.
2017-04-19 09:03:10 +01:00
73460a2993 Test on second order restart using backward time scheme 2017-04-18 14:04:27 -07:00
bfd376a8fa COMP: cleanup linking of MGridGen
- use similar semantics as used for dealing with metis, scotch
2017-04-18 18:46:11 +02:00
0c8ea34b44 Merge branch 'master' of develop.openfoam.com:Development/OpenFOAM-plus 2017-04-18 11:37:45 +01:00
5f17b01998 TUT: Updated gamma value in sonicFoam tutorial - see #455 2017-04-18 11:37:34 +01:00
ea257737df codeTemplates: The copyright year is now set automatically 2017-04-18 11:01:41 +01:00
aec35ee51a BUG: paraFoam inside processor directory always looks for parent (fixes #452) 2017-04-18 09:40:17 +02:00
23d9e2e912 Admin: fixed file permissions from wall boiling model refinements 2017-04-16 18:27:19 +01:00
f95dbc2049 ENH: refineWallLayer: enable parallel operation. Fixes #454. 2017-04-13 16:30:46 +01:00
448561718c fvOption::radiation: New fvOption providing the radiation source to the energy equation
Radiative heat transfer may now be added to any solver in which an energy
equation is solved at run-time rather than having to change the solver code.

For example, radiative heat transfer is now enabled in the SandiaD_LTS
reactingFoam tutorial by providing a constant/fvOptions file containing

radiation
{
    type            radiation;
    libs ("libradiationModels.so");
}

and appropriate settings in the constant/radiationProperties file.
2017-04-13 14:03:58 +01:00
af2810149e porosityModel: The "<porosityModel>Coeffs" sub-dictionary is now optional
For example the porosity coefficients may now be specified thus:

porosity1
{
    type            DarcyForchheimer;

    cellZone        porosity;

    d   (5e7 -1000 -1000);
    f   (0 0 0);

    coordinateSystem
    {
        type    cartesian;
        origin  (0 0 0);
        coordinateRotation
        {
            type    axesRotation;
            e1      (0.70710678 0.70710678 0);
            e2      (0 0 1);
        }
    }
}

rather than

porosity1
{
    type            DarcyForchheimer;
    active          yes;
    cellZone        porosity;

    DarcyForchheimerCoeffs
    {
        d   (5e7 -1000 -1000);
        f   (0 0 0);

        coordinateSystem
        {
            type    cartesian;
            origin  (0 0 0);
            coordinateRotation
            {
                type    axesRotation;
                e1      (0.70710678 0.70710678 0);
                e2      (0 0 1);
            }
        }
    }
}

support for which is maintained for backward compatibility.
2017-04-13 14:00:00 +01:00
1805b3c98f radiationModel: Added "he" argument to the "Sh" function
for consistency with the other energy sources.
2017-04-13 13:57:33 +01:00
8b55ea4fb1 fvOptions: The "<type>Coeffs" sub-dictionary is now optional
For example the actuationDiskSource fvOption may now be specified

disk1
{
    type            actuationDiskSource;

    fields      (U);

    selectionMode   cellSet;
    cellSet         actuationDisk1;
    diskDir         (1 0 0);    // Orientation of the disk
    Cp              0.386;
    Ct              0.58;
    diskArea        40;
    upstreamPoint   (581849 4785810 1065);
}

rather than

disk1
{
    type            actuationDiskSource;
    active          on;

    actuationDiskSourceCoeffs
    {
        fields      (U);

        selectionMode   cellSet;
        cellSet         actuationDisk1;
        diskDir         (1 0 0);    // Orientation of the disk
        Cp              0.386;
        Ct              0.58;
        diskArea        40;
        upstreamPoint   (581849 4785810 1065);
    }
}

but this form is supported for backward compatibility.
2017-04-13 13:30:17 +01:00
dbc1e37a62 BUG: shm: layerSets gets removed. Fixes #453. 2017-04-13 11:26:35 +01:00
e9ba8242ca FieldFieldFunctionsM: Corrected macro names and order for binary functions 2017-04-12 14:33:45 +01:00
5fd814896a reactingtwoPhaseEulerFoam: Wall boiling model refinements
Patch contributed by Juho Peltola, VTT.

Resolves patch request https://bugs.openfoam.org/view.php?id=2521
2017-04-12 14:31:35 +01:00
aef09b8daf tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/steamInjection: Improved stability
Main changes in the tutorial:
  - General cleanup of the phaseProperties of unnecessary entries
  - sensibleEnthalpy is used for both phases
  - setTimeStep functionObject is used to set a sharp reduction in time step near the start of the injection
  - Monitoring of pressure minimum and maximum

Patch contributed by Juho Peltola, VTT.
2017-04-11 20:48:32 +01:00
88b65189d8 BUG: adding case path to support parallel execution (Fixes #449) 2017-04-11 17:47:35 +05:30
cd5ca147a7 ENH: multiple surfaces, self-intersection in surfaceFeatureExtract (issue #450)
- If the dictionary is named 'surfaces', a 'surfaces' entry is mandatory.
  This is a list of wordRe, which is used to load multiple surfaces from
  constant/triSurface directory.

- Other dictionaries may contain a 'surfaces' entry.
  In which case the behaviour is as above (loading multiple surfaces).
  The dictionary name will *NOT* be taken as a surface name itself.

- Regardless of how the surfaces are loaded or features extracted,
  an additional selfIntersection test may be used.

  Eg,

    surfaces
    {
        extractionMethod    extractFromSurface;

        surfaces            (surface1.stl surface2.nas);

        // Generate features from self-intersect
        selfIntersection    true;

        // Base output name (optiona)
        output              surfaces;

        // Tolerance for self-intersect
        planarTolerance     1e-3;

        extractFromSurfaceCoeffs
        {
            includedAngle   120;

            // Do not mark region edges
            geometricTestOnly       yes;
        }
    }
2017-04-11 11:46:00 +02:00
707abb910e DPMDyMFoam, MPPICDyMFoam: New dynamic mesh versions of DPMFoam and MPPICFoam
supporting both mesh morphing and topology change.
2017-04-11 10:33:34 +01:00
837cbafcf3 ENH: improve handling of surface self-intersection (issue #450)
- provide a dedicated constructor to handle this special case.

  Tolerancing when cutting between two surfaces likely needs some
  more attention.
2017-04-11 10:31:23 +02:00
f2e3c1c422 ENH: provide HashTable::iterator::found() method
- This can be used as a convenient alternative to comparing against end().
  Eg,

    dictionaryConstructorTable::iterator cstrIter =
        dictionaryConstructorTablePtr_->find(methodType);

    if (cstrIter.found())
    {
        ...
    }
  vs.
    if (cstrIter != dictionaryConstructorTablePtr_->end())
    {
        ...
    }
2017-04-11 09:55:54 +02:00
b56227ee2b ENH: simplify HashSet equality test
- reduce the amount of checking.
  Equivalent logic to what HashTable has.
2017-04-11 09:34:51 +02:00
31da01d1ea STYLE: cleanup doxygen for HashTable/HashSet
- remove stray canonicalSize declaration
2017-04-11 09:32:53 +02:00
ef88dd3e44 Merge remote-tracking branch 'origin/master' into develop 2017-04-11 10:18:41 +02:00
9f3e27e0aa BUG: indexing in extendedEdgeMesh::add fails (fixes #448)
- 1st problem arises when there are edges, but edgeNormals is empty.
  The UIndirectList fails (zero elements, non-zero addressing)

- further problem occurs if there is a mismatch in the number of edges
  and edges normals (incorrect indexing on loop).
2017-04-11 00:53:03 +02:00
96bc1191b7 ENH: make maxTreeDepth optional in triSurfaceSearch constructor
- makes it easier to construct with a tolerance only
2017-04-10 21:13:50 +02:00
140c5110fe STYLE: remove tabs from files and shorten line-length. 2017-04-10 16:11:33 +02:00
5c62d81880 radiation: Corrected the name of the radiative heat flux from Qr to qr
The standard naming convention for heat flux is "q" and this is used for the
conductive and convective heat fluxes is OpenFOAM.  The use of "Qr" for
radiative heat flux is an anomaly which causes confusion, particularly for
boundary conditions in which "Q" is used to denote power in Watts.  The name of
the radiative heat flux has now been corrected to "qr" and all models, boundary
conditions and tutorials updated.
2017-04-08 22:23:40 +01:00
861b273e56 externalWallHeatFluxTemperatureFvPatchScalarField: Added "power" heat source option
by combining with and rationalizing functionality from
turbulentHeatFluxTemperatureFvPatchScalarField.
externalWallHeatFluxTemperatureFvPatchScalarField now replaces
turbulentHeatFluxTemperatureFvPatchScalarField which is no longer needed and has
been removed.

Description
    This boundary condition applies a heat flux condition to temperature
    on an external wall in one of three modes:

      - fixed power: supply Q
      - fixed heat flux: supply q
      - fixed heat transfer coefficient: supply h and Ta

    where:
    \vartable
        Q  | Power [W]
        q  | Heat flux [W/m^2]
        h  | Heat transfer coefficient [W/m^2/K]
        Ta | Ambient temperature [K]
    \endvartable

    For heat transfer coefficient mode optional thin thermal layer resistances
    can be specified through thicknessLayers and kappaLayers entries.

    The thermal conductivity \c kappa can either be retrieved from various
    possible sources, as detailed in the class temperatureCoupledBase.

Usage
    \table
    Property     | Description                 | Required | Default value
    mode         | 'power', 'flux' or 'coefficient' | yes |
    Q            | Power [W]                   | for mode 'power'     |
    q            | Heat flux [W/m^2]           | for mode 'flux'     |
    h            | Heat transfer coefficient [W/m^2/K] | for mode 'coefficent' |
    Ta           | Ambient temperature [K]     | for mode 'coefficient' |
    thicknessLayers | Layer thicknesses [m] | no |
    kappaLayers  | Layer thermal conductivities [W/m/K] | no |
    qr           | Name of the radiative field | no | none
    qrRelaxation | Relaxation factor for radiative field | no | 1
    kappaMethod  | Inherited from temperatureCoupledBase | inherited |
    kappa        | Inherited from temperatureCoupledBase | inherited |
    \endtable

    Example of the boundary condition specification:
    \verbatim
    <patchName>
    {
        type            externalWallHeatFluxTemperature;

        mode            coefficient;

        Ta              uniform 300.0;
        h               uniform 10.0;
        thicknessLayers (0.1 0.2 0.3 0.4);
        kappaLayers     (1 2 3 4);

        kappaMethod     fluidThermo;

        value           $internalField;
    }
    \endverbatim
2017-04-08 22:06:41 +01:00
b257e80d9a Merge remote-tracking branch 'origin/master' into develop 2017-04-07 09:28:26 +02:00
d794f599d8 ENH: added bin/tools/ change-sitedir.sh, change-userdir.sh
- can be useful with compiling additional OpenFOAM programs
  that use FOAM_USER_APPBIN, FOAM_USER_LIBBIN for their build,
  to avoid conflicts with the normal user bin/lib files.

- or to force relocation of FOAM_SITE_APPBIN, FOAM_SITE_LIBBIN
  during packaging of OpenFOAM
2017-04-07 09:10:06 +02:00
30a49678d1 STYLE: add help to some thermophysical utilities and remove useless options 2017-04-07 08:32:36 +02:00
e1f64efdb1 STYLE: remove stray log files 2017-04-07 08:32:13 +02:00
5d15a13247 STYLE: use FOAM_UTILITIES in Make/options
- consistent with use of FOAM_SOLVERS, and reduces reliance on the FOAM_APP
  env variable
2017-04-07 08:17:43 +02:00
90eeafb43e BUG: typo in addProfiling0 macro (fixes #446) 2017-04-07 07:46:17 +02:00
96fd3c9367 STYLE: consistent use of LIB_SRC in Make/options
- had occasional remnant use of FOAM_SRC
2017-04-06 23:56:23 +02:00
498fa94cb3 ENH: timeActivatedFileUpdate: avoid copying on master; simplified logic; Fixes #420. 2017-04-06 14:45:16 +01:00
2da2970c7c BUG: timeActivatedFileUpdate: was potentially rereading itself!
Fixed by setting flag which then gets queried by Time. Fixes #420.
2017-04-06 10:26:16 +01:00
aecf9b9112 Test on re-start backward time scheme. 2017-04-05 18:17:30 -07:00
982c28d545 BUG: Gitlab issue 442. Resetting allLambda for phases in the alphaEqns.H for interMixingFoam 2017-04-05 13:58:45 -07:00
97d12d8b43 surfaceTensionModels::liquidProperties: New temperature-dependent surface tension model
Description
    Temperature-dependent surface tension model in which the surface tension
    function provided by the phase Foam::liquidProperties class is used.

Usage
    \table
        Property     | Description               | Required    | Default value
        phase        | Phase name                | yes         |
    \endtable

    Example of the surface tension specification:
    \verbatim
        sigma
        {
            type    liquidProperties;
            phase   water;
        }
    \endverbatim

for use with e.g. compressibleInterFoam, see
tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D
2017-04-05 14:36:11 +01:00
eb6fb7f7e3 ENH: make FOAM_EXT_LIBBIN optional in the configuration files
- useful for builds that don't use the ThirdParty directory at all
2017-04-04 17:11:36 +02:00
1bdb57985f COMP: drop FOAM_EXT_LIBBIN dependency for VTK-related items
- they don't use scotch/metis anyhow, which are the only things
  placed in FOAM_EXT_LIBBIN
2017-04-04 16:22:12 +02:00
dd78e042fe ENH: reduce reliance on FOAM_EXT_LIBBIN during builds
- just check WM_PROJECT_DIR instead.

- provide a fallback value when FOAM_EXT_LIBBIN might actually be needed.

Only strictly need FOAM_EXT_LIBBIN for scotch/metis decomposition, and
when these are actually supplied by ThirdParty.
All other ThirdParty dependencies are referenced by BOOST_ARCH_PATH etc.

Can therefore drop the FOAM_EXT_LIBBIN dependency for VTK-related
things, which do not use scotch/metis anyhow.
2017-04-04 15:28:42 +02:00
7d048c71be Merge remote-tracking branch 'origin/master' into develop 2017-04-04 16:15:10 +02:00
638aded7cc BUG: bad shell construct for building optional component 2017-04-04 14:13:55 +02:00
111c1d2d12 ENH: Added include file to calculate the mechanical energy 2017-04-04 12:51:35 +01:00
37b0d85dc4 ENH: Updated for setting of old time values 2017-04-04 12:50:42 +01:00
c13d59fa51 STYLE: updated debug message 2017-04-04 12:42:39 +01:00
95c37c0cbb ENH: Updated second-order restart for thermo fields 2017-04-04 12:41:35 +01:00
0a20a8177f template cases: added minor comment to blockMeshDict files 2017-04-04 12:36:50 +01:00
8bfaa34e24 template cases: added nCellsBetweenLevels to snappyHexMeshDict files 2017-04-04 12:33:17 +01:00
97e84f5880 template cases: added cylindrical background mesh in rotating geometry cases
snappyHexMesh produces a far better quality AMI interface using a cylindrical background mesh,
leading to much more robust performance, even on a relatively coarse mesh.  The min/max AMI
weights remain close to 1 as the mesh moves, giving better conservation.

The rotating geometry template cases are configured with a blockMeshDict file for a cylindrical
background mesh aligned along the z-axis.  The details of use are found in the README and
blockMeshDict files.
2017-04-04 12:24:01 +01:00
5617219185 template cases: minor edit to README files 2017-04-04 11:48:29 +01:00
ede46c3cae template cases: added pre-commented external patches to blockMeshDict
Uncommenting the patches provides a convenient way to use the patches in the background mesh
to define the external boundary of the final mesh.  Replaces previous setup with a separate
blockMeshDict.extPatches file.
2017-04-04 10:47:04 +01:00
c164e91b0a surfaceFilmModels::perturbedTemperatureDependentContactAngleForce: New contact angle model
Combining a Function1 temperature dependency with a distributionModel stochastic
perturbation.
2017-04-04 00:09:38 +01:00
91b0a9379b STYLE: mention clang-4.0 in the bashrc, cshrc files 2017-04-03 08:31:04 +02:00
ae0718a0f5 BUG: avoid absolute path for 'lsof'
- has different locations on different systems
  (eg, /usr/bin/lsof or /sbin/lsof)
2017-04-03 08:31:04 +02:00
af49eaf625 ENH: default jobControl now under the '~/.OpenFOAM/jobControl' directory
- this implies that jobControl is a user-resource for OpenFOAM.
  It was previously located under $WM_PROJECT_INST_DIR/jobControl,
  but few users will have write access there.

- an unset FOAM_JOB_DIR variable is treated as "~/.OpenFOAM/jobControl",
  which can partially reduce environment clutter.

- provide argList::noJobInfo() to conveniently suppress job-info on an
  individual basis for short-running utilities (eg, foamListTimes) to
  avoid unneeded clutter.
2017-04-03 08:28:15 +02:00
08f6f78471 chemistrySolver::EulerImplicit: Corrected thermodynamics update to mass basis
Resolves bug-report https://bugs.openfoam.org/view.php?id=2513
2017-03-31 22:34:47 +01:00
dd1ca3302e surfaceFilmModels::contactAngleForces: Provide empty list default value for zeroForcePatches 2017-03-31 22:33:41 +01:00
a067151810 surfaceFilmModels::contactAngleForce: Use of boundary values of surface tension and contact angle 2017-03-31 20:46:52 +01:00
2b31d91a78 functionObjects:functionObjects:: Corrected documentation 2017-03-31 20:46:03 +01:00
1f5b9dbbcf tutorials/multiphase: Removed unnecessary specification of name and dimensions for transport properties 2017-03-31 17:11:30 +01:00
332c8acdcd ENH: Clean-up after latest Foundation integrations 2017-03-31 15:36:28 +01:00
fb724ce113 MRG: Integrated Foundation code to commit 9f37c3c 2017-03-31 15:34:28 +01:00
dfd611aeac surfaceTensionModels: New class hierarchy for run-time selectable surface tension models
These models have been particularly designed for use in the VoF solvers, both
incompressible and compressible.  Currently constant and temperature dependent
surface tension models are provided but it easy to write models in which the
surface tension is evaluated from any fields held by the mesh database.
2017-03-31 14:32:38 +01:00
c341b22f9d STYLE: use hard-coded user resource directory name for foamEtcFile
- previously used the value of $WM_PROJECT, but this is potentially
  inconsistent with what Foam::etcFiles uses.
2017-03-31 09:54:20 +02:00
970da5aa75 BUG: waveModels - corrected reference water levels - thanks to Gabi Barajas 2017-03-30 14:57:36 +01:00
836d04ffc1 ENH: various general improvments to the POSIX functions
- ensure proper and sensible handling of empty names.
  Eg, isDir(""), isFile("") are no-ops, and avoid file-stat

- rmDir:
  * optional 'silent' option to suppress messages.
  * removes all possible sub-entries, instead of just giving up on
    the first problem encountered.

- reduced code duplication in etcFiles

ENH: provide WM_USER_RESOURCE_DIRNAME define (in foamVersion.H)

- this is still a hard-coded value, but at least centrally available
2017-03-30 11:45:25 +02:00
982300f0d8 faceOnlySet, uniformSet: Reset mesh.moving before returning
Resolves bug-report https://bugs.openfoam.org/view.php?id=2514
2017-03-29 23:15:32 +01:00
446b8e7188 STYLE: respect WM_DIR value when building wmake tools
- minor bug: 'wclean empty' may have had issues with logical vs physical path
2017-03-29 13:49:15 +02:00
3ece6e521a ENH: improve MPI configuration possibilities
- permit SYSTEMMPI user adjustments via
      etc/config.{csh,sh}/mpi-system
  This can be a convenient place for setting up SYSTEMMPI for OpenFOAM
  without adjusting bashrc, prefs.sh ...

- add a USERMPI type. This represents any generic mpi implementation.
  The user is responsible for supplying an appropriate
  wmake/rules/General/mplibUSERMPI file and managing all settings.

  This type of setup can be useful in combination with specific build
  systems (SPACK, EASYBUILD, etc) or module systems for which the MPI
  variant is part of the installed configuration.
2017-03-29 13:48:54 +02:00
e6b67f6790 ENH: Clean-up after latest Foundation integrations 2017-03-28 14:21:07 +01:00
45381b1085 MRG: Integrated Foundation code to commit 19e602b 2017-03-28 11:30:10 +01:00
07ce0a547a COMP: try harder to find/use zoltan library 2017-03-28 10:57:37 +02:00
c88e95436c Merge branch 'master' into develop 2017-03-30 14:58:05 +01:00
09620ce0ed regionModels: Renamed owner->region in regionModel and owner->film in surfaceFilmModel
This update does not change the operation or controls of the regionModels, it is
to aid understanding of the code.
2017-03-28 08:30:46 +01:00
1dd74551da Updated header 2017-03-28 08:30:06 +01:00
9f37c3c537 transportModels::interfaceProperties: simplified interface 2017-03-28 08:29:28 +01:00
ddc694e632 reactingParcelFilmFoam tutorials: Updated contact-angle specification 2017-03-28 08:27:48 +01:00
cbed107ce1 surfaceFilmModels::contactAngleForces: Corrected headers 2017-03-27 20:07:47 +01:00
054eec50ea surfaceFilmModels::contactAngleForce: Added temperatureDependentContactAngleForce
Created a base-class from contactAngleForce from which the
distributionContactAngleForce (for backward compatibility) and the new
temperatureDependentContactAngleForce are derived:

Description
    Temperature dependent contact angle force

    The contact angle in degrees is specified as a \c Function1 type, to
    enable the use of, e.g.  contant, polynomial, table values.

See also
    Foam::regionModels::surfaceFilmModels::contactAngleForce
    Foam::Function1Types

SourceFiles
    temperatureDependentContactAngleForce.C
2017-03-27 20:03:28 +01:00
b708c23cfc ENH: Clean-up after latest Foundation integrations 2017-03-27 14:34:01 +01:00
b3d4b836c8 ENH: readFields function object - added flag to read fields on construction 2017-03-27 09:10:01 +01:00
5efae4cadf reactingTwoPhaseEulerFoam: Small change to avoid warning from wmkdep 2017-03-24 17:27:43 +00:00
65a4a357b5 COMP: Corrected ambiguous construction from tmp errors 2017-03-24 15:50:27 +00:00
39977c64c3 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-03-24 14:59:06 +00:00
e14769f224 lagrangian::ThermoSurfaceFilm: Updated adhesion->splash transition Weber number
according to

        Bai et al, `Modelling of gasoline spray impingement', Atom. Sprays,
        vol 12, pp 1-27, 2002

Resolves bug-report https://bugs.openfoam.org/view.php?id=2478
2017-03-24 14:56:47 +00:00
4c52f8ff1d sloshingCylinder tutorial: sloshing in cylinder under zero gravity
Demonstrates meshing a cylinder with hemispehrical ends using snappyHexMesh with
a polar background mesh that uses the point and edge projection feature of blockMesh.
The case prescribes a multiMotion on the cylinder, combining an oscillatingLinearMotion
and transverse rotatingMotion.
2017-03-24 14:43:53 +00:00
f3feb1aa0a tutorials: moved laminar interDyMFoam examples into "laminar" directory 2017-03-24 12:33:37 +00:00
3b983739d2 postProcessing: changed isosurface to use isoSurfaceCell algorithm 2017-03-24 11:40:36 +00:00
dcb1a95e35 MRG: Integrated Foundation code to commit 7d6845d 2017-03-23 14:33:33 +00:00
436ec1cf1f MRG: Integrated Foundation code to commit ba4dbed 2017-03-23 12:11:49 +00:00
1fc82434ba CrankNicolsonDdtScheme: Reorganized the code to simplify maintenance 2017-03-23 12:11:24 +00:00
04c3d535b0 MRG: Integrated Foundation code to commit 47bd8e1 2017-03-23 10:12:38 +00:00
bad27c45fc ENH: several improvements to foamEtcFile
- lazier evaluation of project name and version based on the directory
  name. Avoids heuristics based on directory names unless really needed.

- cope with alternative directory locations.
  For example, OpenFOAM+VERSION etc.

The combination of the two above appears to be sufficient to open up
the directory naming possibilities.

- additional -list-test option (tests for existence of directory).
2017-03-23 10:31:05 +01:00
e6e617ed47 STYLE: suppress unalias warnings/errors
- cleanup variables last in etc/bashrc for a clean exit code
2017-03-23 10:16:05 +01:00
68851ce4f0 Merge branch 'foundation-github-tmp' into develop 2017-03-23 09:07:39 +00:00
92b6f3dcfa CrankNicolsonDdtScheme: Added option "ramp" function to smoothly transition from Euler
Off-centering is specified via the mandatory coefficient \c ocCoeff in the
    range [0,1] following the scheme name e.g.
    \verbatim
    ddtSchemes
    {
        default         CrankNicolson 0.9;
    }
    \endverbatim
    or with an optional "ramp" function to transition from the Euler scheme to
    Crank-Nicolson over a initial period to avoid start-up problems, e.g.
    \verbatim
    ddtSchemes
    {
        default         CrankNicolson
        ocCoeff
        {
            type scale;
            scale linearRamp;
            duration 0.01;
            value 0.9;
        };
    }
    \endverbatim

Note this functionality is experimental and the specification and implementation
may change if issues arise.
2017-03-22 22:27:47 +00:00
aae3705bdc functionObjects::fieldAverage: Initialize totalTime_ for new fields following restart
Patch contributed by Timo Niemi, VTT.
Resolves bug-report https://bugs.openfoam.org/view.php?id=2510
2017-03-22 18:30:51 +00:00
ad65ac255a Diffusion number: Corrected in chtMultiRegionFoam and pyrolysisModels::reactingOneDim
Resolves bug-report https://bugs.openfoam.org/view.php?id=2512
2017-03-22 17:13:53 +00:00
0be6269add Added robust primitive cubic/quadratic/linear equation solutions.
Applied to eigen-value calculations. Fixed repeated-eigen-value issues
in eigen-vector generation.
2017-03-22 15:11:54 +00:00
1be180b99f ENH: source 'other' prefs before user/group
- this allows the sys-admin to provide base values independent of any
  WM_PROJECT_SITE value.
2017-03-22 15:33:51 +01:00
406a2c5d20 applyBoundaryLayer: Ensure nut is up-to-date with the current turbulence fields
Resolves bug-report https://bugs.openfoam.org/view.php?id=2511
2017-03-22 10:08:37 +00:00
3d05295abd STYLE: Corrected typo 2017-03-22 09:11:47 +00:00
ace5565f96 ENH: improve foamEtcFile support for alternative naming conventions
- support names like openfoam-<VERSION> (eg, what spack uses).
- robustness improvements
2017-03-22 09:08:52 +01:00
399df1a20d ENH: also accept 'lib' for metis and scotch libraries
- this corresponds to what various module or build systems provide.
  ThirdParty builds are unaffected since they install into FOAM_EXT_LIBBIN
2017-03-21 16:55:27 +01:00
eaf1e6263f applyBoundaryLayer: Provide non-const access to nut, k and epsilon 2017-03-21 15:07:13 +00:00
6b3742c3f1 BUG: Missed change during fix for #437 2017-03-21 13:57:55 +00:00
bbe490506e STYLE: Minor documentation update 2017-03-21 13:35:22 +00:00
e6d9402e5a BUG: nacaAirfoil tutorial - updated patches used by forceCoeffs function object. Fixes #438 2017-03-21 13:34:57 +00:00
69bc13f300 BUG: Function objects - updated to enable user time emtries, e.g. if using engineTime. Fixes #437 2017-03-21 13:32:55 +00:00
6ebaa63d1c BUG: forceCoeffs - corrected handling of pDyn for compressible cases. Fixes #436 2017-03-21 13:27:47 +00:00
cf1df0542f BUG: wallHeatFlux FO - corrected output of header info tofile. Fixes #435 2017-03-21 13:23:52 +00:00
489ff68e6b Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-03-20 17:57:57 +00:00
bf43e16dca setTimeStepFunctionObject: Corrected typo
Resolves bug-report https://bugs.openfoam.org/view.php?id=2507
2017-03-20 17:57:06 +00:00
c9831529b3 Case templates: updated dynamicMeshDict for syntax change to solid body motion 2017-03-20 12:27:07 +00:00
e66e402976 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-03-18 17:19:35 +00:00
864fc239c8 tutorials/combustion/reactingFoam/RAS/DLR_A_LTS: Reduced the endTime 2017-03-18 17:15:58 +00:00
14601aa8c2 Function1::Scale: New function to scale a given function by a scalar function, e.g. a ramp
For example in the potentialFreeSurfaceFoam/oscillatingBox tutorial it is
cleaner to apply the "linearRamp" function to the "sine" function rather than
using an amplitude table:

    floatingObject
    {
        type            fixedNormalInletOutletVelocity;

        fixTangentialInflow false;

        normalVelocity
        {
            type            uniformFixedValue;

            uniformValue
            {
                type        scale;

                value
                {
                    type sine;

                    frequency   1;
                    amplitude   0.025;
                    scale       (0 1 0);
                    level       (0 0 0);
                }

                scale
                {
                    type linearRamp;

                    duration 10;
                }
            }
        }

        value           uniform (0 0 0);
    }
2017-03-18 17:11:11 +00:00
98de229365 Function1: Added "Ramp" to the names of the ramp functions to avoid conflict
with more general forms of those functions.
2017-03-18 17:10:48 +00:00
44ac4449f9 Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-dev 2017-03-17 17:37:31 +00:00
dc5a8671bd PatchInteractionModel: Skip application of patch interaction model for
coupled patches, to prevent rebound/stick/etc... on these patches. Also
added "none" interaction type to LocalInteraction, which reverts the
patch interaction to the fundamental behaviour. This is primarily useful
for non-coupled constraint types.

Resolves https://bugs.openfoam.org/view.php?id=2458
2017-03-17 17:26:39 +00:00
6f5caf28d5 pitzDaily tutorials: updated blockMeshDict files to use multi-grading
The pitzDaily case uses a lot of mesh grading close to walls and the shear layer.
Prior to v2.4, blockMesh only permitted grading in one direction within a single block,
so the pitzDaily mesh comprised of 13 blocks to accommodate the complex grading pattern.

blockMesh has multi-grading that allows users to divide a block in a given direction and
apply different grading within each division.  The mesh generated with blockMesh using
13 blocks has been replaced with a mesh of 5 blocks that use multi-grading.  The new
blockMeshDict configuration produces a mesh very similar to the original 13-block mesh.
2017-03-17 12:42:13 +00:00
29137345bf Merge branch 'master' of https://github.com/OpenFOAM/OpenFOAM-dev 2017-03-17 11:30:27 +00:00
d401f1cfb4 reactingMultiphaseEulerFoam: Ensure that an unordered phase pair gets
generated whenever a BlendedInterfacialModel is created.

Resolves bug-report https://bugs.openfoam.org/view.php?id=2472
2017-03-17 11:26:24 +00:00
dd15478158 combustionModels::EDC: New Eddy Dissipation Concept (EDC) turbulent combustion model
including support for TDAC and ISAT for efficient chemistry calculation.

Description
    Eddy Dissipation Concept (EDC) turbulent combustion model.

    This model considers that the reaction occurs in the regions of the flow
    where the dissipation of turbulence kinetic energy takes place (fine
    structures). The mass fraction of the fine structures and the mean residence
    time are provided by an energy cascade model.

    There are many versions and developments of the EDC model, 4 of which are
    currently supported in this implementation: v1981, v1996, v2005 and
    v2016.  The model variant is selected using the optional \c version entry in
    the \c EDCCoeffs dictionary, \eg

    \verbatim
        EDCCoeffs
        {
            version v2016;
        }
    \endverbatim

    The default version is \c v2015 if the \c version entry is not specified.

    Model versions and references:
    \verbatim
        Version v2005:

            Cgamma = 2.1377
            Ctau = 0.4083
            kappa = gammaL^exp1 / (1 - gammaL^exp2),

            where exp1 = 2, and exp2 = 2.

            Magnussen, B. F. (2005, June).
            The Eddy Dissipation Concept -
            A Bridge Between Science and Technology.
            In ECCOMAS thematic conference on computational combustion
            (pp. 21-24).

        Version v1981:

            Changes coefficients exp1 = 3 and exp2 = 3

            Magnussen, B. (1981, January).
            On the structure of turbulence and a generalized
            eddy dissipation concept for chemical reaction in turbulent flow.
            In 19th Aerospace Sciences Meeting (p. 42).

        Version v1996:

            Changes coefficients exp1 = 2 and exp2 = 3

            Gran, I. R., & Magnussen, B. F. (1996).
            A numerical study of a bluff-body stabilized diffusion flame.
            Part 2. Influence of combustion modeling and finite-rate chemistry.
            Combustion Science and Technology, 119(1-6), 191-217.

        Version v2016:

            Use local constants computed from the turbulent Da and Re numbers.

            Parente, A., Malik, M. R., Contino, F., Cuoci, A., & Dally, B. B.
            (2016).
            Extension of the Eddy Dissipation Concept for
            turbulence/chemistry interactions to MILD combustion.
            Fuel, 163, 98-111.
    \endverbatim

Tutorials cases provided: reactingFoam/RAS/DLR_A_LTS, reactingFoam/RAS/SandiaD_LTS.

This codes was developed and contributed by

    Zhiyi Li
    Alessandro Parente
    Francesco Contino
    from BURN Research Group

and updated and tested for release by

    Henry G. Weller
    CFD Direct Ltd.
2017-03-17 09:44:15 +00:00
b68043256c Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2017-03-17 09:04:09 +00:00
a384d76745 functionObjects::systemCall: Removed redundant Make directory 2017-03-17 09:02:59 +00:00
15aec3649e BUG: incorrect patch lookup in ensight conversion (fixes #430) 2017-03-17 09:09:31 +01:00
ab65533e8e rigidBodyMeshMotion: Added optional force damping ramp function
to provide smoother behavior on start-up when an acceleration impulse is
applied, e.g. if the body is suddenly released.  e.g.

dynamicFvMesh       dynamicMotionSolverFvMesh;

motionSolverLibs   ("librigidBodyMeshMotion.so");

solver             rigidBodyMotion;

rigidBodyMotionCoeffs
{
    report          on;

    solver
    {
        type    Newmark;
    }

    ramp
    {
        type     quadratic;
        start    0;
        duration 10;
    }
.
.
.

will quadratically ramp the forces from 0 to their full values over the first
10s of the run starting from 0.  If the 'ramp' entry is omitted no force ramping
is applied.
2017-03-16 21:01:45 +00:00
1e592a128a Function1::ramp: New set of scalar ramp functions
Description
    Ramp function base class for the set of scalar functions starting from 0 and
    increasing monotonically to 1 from \c start over the \c duration and
    remaining at 1 thereafter.

    Usage:
    \verbatim
        <entryName> <rampFunction>;
        <entryName>Coeffs
        {
            start     10;
            duration  20;
        }
    \endverbatim
    or
    \verbatim
        <entryName>
        {
            type      <rampFunction>;
            start     10;
            duration  20;
        }
    \endverbatim

    Where:
    \table
        Property | Description  | Required | Default value
        start    | Start time   | no       | 0
        duration | Duration     | yes      |
    \endtable

The following common ramp functions are provided: linear, quadratic, halfCosine,
quarterCosine and quaterSine, others can easily be added and registered to the run-time
selection system.
2017-03-16 20:56:57 +00:00
32052dce23 postProcessing/noise: Updated for changes to Function1 2017-03-16 20:56:09 +00:00
2e2bfd237a Function1: Rationalized construction to support the simpler sub-dictionary format
e.g.
    ramp
    {
        type     quadratic;
        start    200;
        duration 1.6;
    }

but the old format is supported for backward compatibility:

    ramp linear;
    rampCoeffs
    {
        start    200;
        duration 1.6;
    }
2017-03-16 20:53:08 +00:00
b1199f6559 Updated header 2017-03-16 20:51:14 +00:00
19e602b065 dictionary: Added lookupType function for convenient lookup and setting of value
of the specified type
2017-03-16 20:50:11 +00:00
2c31e665ba autoPtr: Added assignment to pointer 2017-03-16 20:49:21 +00:00
9d2ba29710 Function1: Added zero and one constant functions for convenience 2017-03-16 20:48:26 +00:00
78eba84ee3 BernardCells: tutorial demonstrating Bernard cells
2D buoyancy-driven flow between flat plates with small temperature difference
2017-03-15 19:18:37 +00:00
7276dbd38d foamCreateVideo: avoid dropping frames for some color depths 2017-03-15 19:10:10 +00:00
1fea6fee98 postProcess: Added support for dsmcFields
e.g. postProcess -time 0.001 -func dsmcFields

Resolves bug-report https://bugs.openfoam.org/view.php?id=2499
2017-03-14 15:22:59 +00:00
dc328945b1 reactingEulerFoam: Added fvOption support for incompressible phases 2017-03-14 11:56:01 +00:00
502c9ceb71 etc/bashrc: Updated to better support zsh
Resolves patch request https://bugs.openfoam.org/view.php?id=2490
2017-03-13 19:41:38 +00:00
47d7240412 turbulenceModels::RAS: Corrected sign of "C3" dilatation term
Set default value of C3 to 0
Set C3 to -0.33 in the engineFoam/kivaTest tutorial.

Resolves bug-report https://bugs.openfoam.org/view.php?id=2496
2017-03-13 18:01:39 +00:00
d40363079c laplacianFoam: added fvOptions library
Resolves bug-report https://bugs.openfoam.org/view.php?id=2492
2017-03-13 08:50:17 +00:00
96ad725a0b Updated UPstream::commsTypes to use the C++11 enum class 2017-03-10 19:54:55 +00:00
812a9a53ed Upgraded to OpenMPI-2.0.2 2017-03-10 17:08:16 +00:00
215349aa69 BUG: in wordRe::operator=(const keyType&)
- the regex was not being unset on assignment.
- drop unused recompile() method as being dubious
2017-03-10 13:05:35 +01:00
11a2ea7c61 CrankNicolsonDdtScheme: Corrected fvcDdtUfCorr for compressible flow
Resolves bug-report https://bugs.openfoam.org/view.php?id=2491
2017-03-10 11:08:10 +00:00
af088a5c78 turbulenceModels::LES::dynamicLagrangian: Converted advection to compressible convection form
Formally this is equivalent to the previous formulation but more convenient to
use given that for compressible flow the mass flux rather than the volume flux
is available.
2017-03-10 11:07:41 +00:00
942338b06c sixDoFRigidBodyDisplacementPointPatchVectorField, uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField: removed
These legacy boundary conditions are no longer needed and have been superseded
by the more flexible sixDoFRigidBodyMotion and rigidBodyMotion solvers.  See tutorials:

incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam
multiphase/interDyMFoam/RAS/DTCHull
multiphase/interDyMFoam/RAS/floatingObject

Resolves bug-report https://bugs.openfoam.org/view.php?id=2487
2017-03-09 23:12:06 +00:00
7f5c135020 wingMotion tutorial: Corrected fvSolution file 2017-03-09 23:11:30 +00:00
c4e63c4c24 functionObjects::functionObjects: Corrected initial totalTime for cases with variable time-step
Resolves bug-report https://bugs.openfoam.org/view.php?id=2459
2017-03-09 17:39:27 +00:00
f5e88d6eb3 LES::dynamicLagrangian: Corrected access to the volumetric flux for compressible flow
Resolves bug-report https://bugs.openfoam.org/view.php?id=2489
2017-03-09 09:37:59 +00:00
14da5d4ee2 Updated header 2017-03-08 11:51:36 +00:00
1be5f699e5 decomposePar: Added 'copyZero' option
Using

decomposePar -copyZero

The mesh is decomposed as usual but the '0' directory is recursively copied to
the 'processor.*' directories rather than decomposing the fields.  This is a
convenient option to handle cases where the initial field files are generic and
can be used for serial or parallel running.  See for example the
incompressible/simpleFoam/motorBike tutorial case.
2017-03-08 11:48:06 +00:00
7a99465d2a verticalChannel tutorial: removed 'bounded' from the 'div(phid,p)' scheme. 2017-03-08 11:34:08 +00:00
7aed8c2904 tutorials: Updated pcorr settings in fvSolution to provide pcorrFinal if required 2017-03-07 11:48:20 +00:00
55e7a77ac6 tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/Allrun: Remove previous 0 directories
Patch contributed by Mattijs Janssens
2017-03-06 23:18:13 +00:00
b535c05fa6 CrankNicolsonDdtScheme, backwardDdtScheme: Ensure V00 is available for moving meshes 2017-03-06 23:15:54 +00:00
86dc955605 interFoam family of solvers: Improved Crank-Nicolson implementation
Fewer limiter iterations are now required to obtain sufficient boundedness and
restart is more consistent.
2017-03-06 17:34:10 +00:00
c6bcd65dfd STYLE: minor simplification of coding in dictionary 2017-03-06 18:32:48 +01:00
093ede5d32 CorrectPhi: only use the "Final" tolerance for the last non-orthogonal iteration 2017-03-03 22:05:24 +00:00
9b7a4accda GAMGSolverScale: minor update 2017-03-03 22:04:41 +00:00
94c209c6d6 CrankNicolsonDdtScheme, backwardDdtScheme: Ensure the V00 field is cached 2017-03-03 22:03:29 +00:00
f05be160e2 BUG: dictionary entries not being properly merged/overwritten (closes #418)
STYLE: update dictionary documentation
2017-03-03 11:36:24 +01:00
2853678a60 ENH: support operations on surfFields in surfaceFieldValue
- this makes it possible to perform additional operations
  on surface values that have been previously sampled.

- support vectorField for weighting operations.

- reduce overhead by avoiding creation of weight fields, Sf fields
  and combined surface geometries unless they are actually required.

- extend some similar concepts and operations to volFieldValue
2017-03-02 14:50:36 +01:00
b3bfdd0bb8 Merge branch 'Fix_GL_416' into 'master'
Fixes #416

Closes #416

See merge request !96
2017-03-02 08:57:49 +00:00
6253452dcf Fixes #416 2017-03-02 10:22:24 +05:30
0723800d75 PBiCGStab: Instantiate for symmetric and asymmetric matrices
PBiCGStab has proved more reliable than PCG for solving the pressure equation in
compressible systems.
2017-02-28 20:08:38 +00:00
05de53d086 ENH: Minor modification to the description 2017-02-28 10:37:43 -08:00
62197e9ccd ENH: Correcting coefficient description in solarCalculator.H header 2017-02-28 10:35:55 -08:00
fe548839c5 tutorials/incompressible/pisoFoam/LES/motorBike: Removed unused $1 arguments to xargs
Resolves bug-report https://bugs.openfoam.org/view.php?id=2475
2017-02-28 11:27:28 +00:00
50516486a4 rhoPimpleFoam: Added support for transonic flow of liquids and real gases
Both stardard SIMPLE and the SIMPLEC (using the 'consistent' option in
fvSolution) are now supported for both subsonic and transonic flow of all
fluid types.

rhoPimpleFoam now instantiates the lower-level fluidThermo which instantiates
either a psiThermo or rhoThermo according to the 'type' specification in
thermophysicalProperties, see also commit a1c8cde310
2017-02-28 11:14:59 +00:00
09c9e1a89a ENH: Adding skyCloudCoverFraction to SunLoadFairWeatherConditions mode in the solarCalculator.
This scalar allows to introduce a factor for cloudy sky between 0 (clear) and 1 (fully cloudy)
2017-02-27 16:46:12 -08:00
7515ea7550 reactingTwoPhaseEulerFoam::Lavieville: Corrected fLiquid function
Resolves bug-report https://bugs.openfoam.org/view.php?id=2477
2017-02-27 09:39:46 +00:00
5fc6c3ca34 ENH: provide FOAM_EXECUTABLE as environment variable in argList
- can be used directly from within an application or function-object.
  Makes it available for dictionaries.
2017-02-24 17:48:13 +01:00
7d6845defa rhoSimpleFoam: Added support for transonic flow of liquids and real gases
Both stardard SIMPLE and the SIMPLEC (using the 'consistent' option in
fvSolution) are now supported for both subsonic and transonic flow of all
fluid types.
2017-02-24 16:20:06 +00:00
3f1c72356f STYLE: clear names of selected fields when re-reading 2017-02-24 14:51:26 +01:00
a203d0a344 STYLE: relocate deprecated utilities into separate directory
- makes it easier to identify at a later stage
2017-03-20 15:16:06 +01:00
b970ba0901 ENH: minor improvements to environment
- handle sourcing bashrc with a relative path (issue #383)
- handle sourcing from bash and zsh.
  Still need manual intervention when sourcing dash, sh, or ksh.
- replace grep in etc/cshrc with sed only
- logical instead of physical path for WM_PROJECT_DIR (issue #431).
  Doesn't seem to be possible for csh/tcsh.

  * Continue using physical locations when comparing directories,
    but not for the top-level FOAM_INST_DIR, WM_PROJECT_DIR.

- relocate WM_CC, WM_CXX overrides from etc/config.*/compiler
  to etc/config.*/settings to ensure that they are left untouched
  when etc/config.sh/compiler is sourced while making third-party
  packages (eg, gcc, llvm, CGAL).

- provide fallback FOAM_TUTORIALS setting in RunFunctions

STYLE: remove "~OpenFOAM" fallback as being too rare, non-obvious
2017-03-20 08:57:12 +01:00
5d62a7430d GIT: adjust gitignore
- ignore top-level /build and /platforms directories
2017-03-15 15:10:05 +01:00
249f334f83 ENH: respect '-silent' option for cmake builds
- minor cleanup of wmake sources
2017-03-15 13:06:45 +01:00
4339d93c8e STYLE: drop _foamSource definition (unneeded). 2017-03-14 17:24:23 +01:00
f1112fc357 CONFIG: update paraview 5.3.0, openmpi 2.0.2, mpich 3.2, fftw 3.3.6-pl1 2017-03-14 10:38:54 +01:00
7848953b21 ENH: equationInitialResidualCondition - updated to support user-time, e.g. engineTime 2017-03-21 16:56:21 +00:00
eed3b77060 ENH: Function objects - updated logic to determine whether or not to instantiate a time-based function object. Fixes #439 2017-03-21 16:55:24 +00:00
694a03dfeb Merge branch 'master' into develop 2017-03-21 13:58:06 +00:00
2f41df18e3 Merge branch 'master' into develop 2017-03-21 13:36:26 +00:00
2b03d9615e ENH: perfectGasI - added #include "thermodynamicConstants.H" to enable builds for derived classes 2017-03-21 13:00:05 +00:00
cbf793fca2 ENH: Updated header file documentation 2017-03-21 09:40:35 +00:00
e9355df198 ENH: [surface|vol]FieldValue - added name of weight field to output file header if used 2017-03-21 09:38:36 +00:00
2271bd4ca4 ENH: timeActivatedFileUpdate: early reading of changed files. Fixes #420. 2017-03-15 13:15:36 +00:00
1abcdcc58a Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-03-15 12:01:55 +00:00
986e4656ae BUG: topoSet: nearestToCell/Point return nearest on all processors. Fixes #427. 2017-03-15 12:01:23 +00:00
de3f38da3d Merge branch 'feature-noise-additions' into 'develop'
ENH: Feature noise additions

See merge request !98
2017-03-15 11:08:56 +00:00
a7a3126a76 ENH: noiseModels - re-worked output directories to avoid clashes. Fixes
Both point- and surfaceNoise utilities can operate on multiple input
files.  However, if the files had the same name, the output would be
overwritten.  To avoid this, the output files are now written to a
sub-directory including the path '/input<input-file-index>/', e.g.

  postProcessing/noise/surfaceNoise/input0/nearWall/[fft|oneThirdOctave]

An optional 'outputPrefix' can be included (defaults to empty), e.g.
when set to 'test1':

  postProcessing/noise/test1/surfaceNoise/input0/nearWall/[fft|oneThirdOctave]
2017-03-14 13:15:39 +00:00
a886410d16 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-03-13 12:02:22 +00:00
f6cc25f5eb ENH: cellSetOption: suppress printing of excess messages. Fixes #415. 2017-03-13 12:01:05 +00:00
8db517bfbb CONFIG: provide Clang38, Clang39 compiler settings
- easier to test or use different versions

- change WM_CXXFLAGS to -std=c++11 instead of -std=c++0x
2017-03-10 18:13:49 +01:00
f760352c8f COMP: avoid null reference in FieldMapper.H (issue #405) 2017-03-10 17:58:45 +01:00
39e81ce5ec BUG: subsequent command options are ignored (issue #424)
- adjust so that the final -option is taken. This is consistent with
  other Unix tools.

ENH: short-circuit to avoid directory check on non-master node
2017-03-10 14:52:39 +01:00
b21242c14c Merge branch 'feature-noise-additions' of develop.openfoam.com:Development/OpenFOAM-plus into feature-noise-additions 2017-03-10 13:08:17 +00:00
f8e0231672 STYLE: removed mutable variable/methods from regExp
- tends to obscure what is going on and isn't needed either.

STYLE: adjust documentation. Accept std::string as parameter in more places.
2017-03-10 12:42:59 +01:00
aa6b835104 ENH: use fileName::nameLessExt() instead of fileName::name(bool)
- the purpose is more explicit, without needing to check documentation
  about what the bool parameter means.

STYLE: improve formatting of fileName documentation
2017-03-10 11:49:56 +01:00
9077098935 ENH: provide string removeStart, removeEnd convenience methods 2017-03-10 11:39:40 +01:00
4bc957cc3e ENH: surfaceNoise - updated surface output 2017-03-10 09:08:46 +00:00
518bb6e8fc ENH: surfaceNoise - updated surface output 2017-03-10 09:08:46 +00:00
a2f54aef3c ENH: surfaceNoise - warn if no data available to process 2017-03-06 12:09:05 +00:00
f3abf405a8 ENH: noiseModels - updated frequency bounds handling 2017-03-03 14:24:56 +00:00
9741ce6e0d ENH: noise models - expand input file name before check for isAbsolute 2017-03-02 12:39:03 +00:00
34bc14a53d ENH: noiseModel updates
- Limit output to frequency range given by fLower and fUpper (if supplied)
- Enable noise models to be run outside of $FOAM_CASE directory
  - if relative paths are used, $FOAM_CASE is prepended to the noise
    dict and input file names
- Enable output to be customised, e.g.

    // Optional write options dictionary (all default to 'yes')
    writeOptions
    {
        writePrmsf  no;
        writeSPL    yes;
        writePSD    yes;
        writePSDf   no;
        writeOctaves yes;
    }
2017-03-01 13:55:05 +00:00
2ce0aaddd4 ENH: splitMeshRegions: correct header. 2017-03-01 11:48:00 +00:00
4401c0ee87 BUG: Time: time step adjustment not robust. Fixes #414. 2017-03-01 11:43:00 +00:00
bcde59e646 STYLE: Minor typo corrections 2017-03-01 10:53:18 +00:00
cf4ff7b381 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-02-27 11:50:20 +00:00
b71c4676ce ENH: cyclicACMI: report number of blended faces. Fixes #411. 2017-02-27 11:49:19 +00:00
f9599010ca Merge branch 'build' into 'develop'
Improvements, adjustments for build scripts and infrastructure

See merge request !94
2017-02-24 18:31:57 +00:00
9810c68e76 ENH: support default/alternate values for env-vars in dictionary lookup
- was previously only within string expansions, but cover dictionaries
  as well for consistency

ENH: replace the never-used fileName::caseName() functionality

- stringOps::inplaceReplaceVar() is more general

     stringOps::inplaceReplaceVar(myfile, "FOAM_CASE");

STYLE: relax parameter passing when calling some POSIX 'query' functions.

- A std::string is sufficient since the functions use a plain C-string.
  Eg, getEnv("SOMETHING").
  Retain more stringent Foam::word for things like setEnv, since this
  could be useful.
2017-02-24 17:37:48 +01:00
49d0b7552e STYLE: use initializer_list syntax when building system command 2017-03-10 10:34:37 +01:00
383fdb04ae COMP: suppress warnings about MPI old-style cast (GCC only) 2017-03-10 10:27:17 +01:00
31555346cc Merge remote-tracking branch 'origin/master' into develop 2017-03-10 13:30:39 +01:00
9faf186b9f ENH: provide xferFaces mechanism for triSurface for symmetry with MeshedSurface 2017-03-09 13:56:54 +01:00
10fc0646fb BUG: 'make clean' failed for wmake/src
- caused by the typo '@E' instead of '$E' (commit 997f1713cb)

ENH: minor improvements for wmake/src makefile

- 'make clean' now also tries to remove the parent platforms/
  directory if possible.

- the flex intermediate build target is placed into the platforms/
  directory to avoid touching the src/ directory at all.

- suppress warnings about unused functions (GCC only)
2017-03-09 11:48:52 +01:00
2bfd17cf8d ENH: add 'wmkdep' to warnings and error messages from wmkdep
- makes it possible to filter out or highlight messages originating
  from wmkdep in the build process.
2017-03-09 10:20:14 +01:00
89ac2e551a Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-03-08 08:47:04 -08:00
42ebb30c0c ENH: Re-formatting the inertia trem in turbulentTemperatureRadCoupledMixedFvPatchScalarField.C
And correcting bool entry from dictionary in fanFvPatchField BC
2017-03-08 08:45:50 -08:00
37e7fca9dc BUG: STL ASCII being incorrectly detected as BINARY (fixes #422)
- now explicitly check for "SOLID" or "solid" in the header

- does not affect triSurface in the master branch, since that used a
  different parser.
2017-03-08 13:30:43 +01:00
8060792b92 ENH: provide canRead, canWrite tests for triSurface
- for symmetry with MeshedSurface etc.
2017-03-08 13:15:28 +01:00
7d3eb76f75 Merge branch 'subset-list' into 'develop'
Subset list

See merge request !97
2017-03-08 12:31:26 +00:00
3d3c14cbff ENH: add inplaceUniqueSort function
- determines a unique sort order (as per uniqueOrder) and uses that to
  reorder the list and possibly truncate it.
2017-03-08 11:10:16 +01:00
b7dc6d0441 ENH: add subsetList/inplaceSubsetList functions with unary predicate
- these are suitable for use with lambda functions.

- Deprecate the unused 3-parameter version of subset/inplaceSubset.

- Deprecate initList and initListList in favour of initializer_list

STYLE: adjust some comments, remove dead code in regionSizeDistribution.C
2017-03-07 17:00:30 +01:00
865f09e623 STYLE: comments in codedFvOptionTemplate 2017-03-07 18:48:57 +01:00
4b93333292 ENH: improve handling of noFunctionObjects / withFunctionObjects (issue #352)
- do not enable function objects by default if there is no means of
  disabling them.
2017-03-07 10:53:40 +01:00
cb38533096 ENH: Adding thermal inertia to coupled BC.
This helps on bounding Twall on cases where large inertia is found in the first cell
next to the fluid (i.e large cell, rho or Cp)
2017-03-06 09:43:10 -08:00
6057479926 ENH: provide wcleanBuild and improve wcleanPlatform
- new behaviour is to do nothing if no platform was specified.
  This helps avoid inadvertently removing files.

- support special platforms for compatibility with wmake/wclean targets.
  Eg, "wcleanPlatform all"

- allow use from ThirdParty top-level as well, since the directory
  structure is similar.

BUG: fix regression in wcleanLnIncludeAll introduced by 9e2e111518
2017-02-24 12:20:45 +01:00
a1c8cde310 rhoSimpleFoam: added support for compressible liquid flows
rhoSimpleFoam now instantiates the lower-level fluidThermo which instantiates
either a psiThermo or rhoThermo according to the 'type' specification in
thermophysicalProperties, e.g.

thermoType
{
    type            hePsiThermo;
    mixture         pureMixture;
    transport       sutherland;
    thermo          janaf;
    equationOfState perfectGas;
    specie          specie;
    energy          sensibleInternalEnergy;
}

instantiates a psiThermo for a perfect gas with JANAF thermodynamics, whereas

thermoType
{
    type            heRhoThermo;
    mixture         pureMixture;
    properties      liquid;
    energy          sensibleInternalEnergy;
}

mixture
{
    H2O;
}

instantiates a rhoThermo for water, see new tutorial
compressible/rhoSimpleFoam/squareBendLiq.

In order to support complex equations of state the pressure can no longer be
unlimited and rhoSimpleFoam now limits the pressure rather than the density to
handle start-up more robustly.

For backward compatibility 'rhoMin' and 'rhoMax' can still be used in the SIMPLE
sub-dictionary of fvSolution which are converted into 'pMax' and 'pMin' but it
is better to set either 'pMax' and 'pMin' directly or use the more convenient
'pMinFactor' and 'pMinFactor' from which 'pMax' and 'pMin' are calculated using
the fixed boundary pressure or reference pressure e.g.

SIMPLE
{
    nNonOrthogonalCorrectors 0;

    pMinFactor      0.1;
    pMaxFactor      1.5;

    transonic       yes;
    consistent      yes;

    residualControl
    {
        p               1e-3;
        U               1e-4;
        e               1e-3;
        "(k|epsilon|omega)" 1e-3;
    }
}
2017-02-24 11:18:01 +00:00
a748ce1eaf STYLE: resolve COMP_FLAGS, COMPILE_FLAGS mismash in favour of COMP_FLAGS 2017-02-23 16:25:38 +01:00
c84b9aaac6 ENH: use new foamEtcFile options to simplify syntax when sourcing files
Can now use this:
    _foamSourceEtc config.sh/scotch
    _foamSourceEtc config.csh/scotch

instead of this:
    _foamSource $($WM_PROJECT_DIR/bin/foamEtcFile config.sh/scotch)
    _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/scotch`

In the bash/sh version, leave the _foamSource function for now, since
ThirdParty is still relying on it.

STYLE: elminate while-loop for _foamAddPath etc since this type of
construct isn't readily possible for csh and isn't being used anywhere.
2017-02-23 15:55:38 +01:00
c393b268a5 MULES: Adjust limiter only at boundaries for which the field value is fixed
Resolves bug-report https://bugs.openfoam.org/view.php?id=2470
2017-02-23 12:03:50 +00:00
c9e4fd77fd ENH: add options for foamEtcFile and shell evaluation
- Eg, instead

      if file=$(foamEtcFile filename)
      then
          . $file
      fi

  can write

      eval "$(foamEtcFile -sh filename)"

  Also supports -verbose reporting, which is especially useful for csh,
  since it allows simplification of aliases and allows the message to
  land on stderr instead of stdout.

      eval `foamEtcFile -csh -verbose filename`
2017-02-23 12:48:43 +01:00
e9bce5c331 Merge branch 'Fix_GL_409' into 'master'
Use subDict for changeDictionary, Fixes #409

Closes #409

See merge request !95
2017-02-23 11:02:21 +00:00
07ec2b3abd STYLE: eliminate most use of _foamSource outside of the etc/ hierarchy 2017-02-23 10:58:55 +01:00
cc51def1fd STYLE: minor cleanup of foamEtcFile 2017-02-23 09:17:46 +01:00
a3ff45d50a Use subDict for changeDictionary, Fixes #409 2017-02-23 11:33:29 +05:30
c1ca2f4a38 BUG: missing chdir in Allwclean for wallFunctionTable
STYLE: improve consistency in Allwclean scripts
2017-02-23 01:07:10 +01:00
e5cc374d8e MULES: Adjust limiter only at boundaries for which the field value is fixed
Resolves bug-report https://bugs.openfoam.org/view.php?id=2470
2017-02-22 15:34:13 +00:00
12dd3c9c6b GeometricField: corrected assignment to tmp which wraps a non-tmp 2017-02-22 13:20:49 +00:00
5991e30fc1 functionObjects::fieldCoordinateSystemTransform: added coordinateSystem sub-dict and updated the description
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2454
2017-02-22 13:20:15 +00:00
32a78d12e2 ENH: wclean all now finds Allwclean files too (issue #408)
- this may still need more testing, but the basic idea is to find
  directories with 'Allwclean' or 'Make' and process them (once!)
2017-02-21 19:40:35 +01:00
9e2e111518 STYLE: adjust ordering of 'find' command arguments
- use -name test before -type test to avoid calling stat(2) on every file.
- use -delete instead of -exec rm to avoid forking
2017-02-21 19:19:04 +01:00
bec7091e21 chemkinToFoam: Increase the precision of the thermophysical coefficient written 2017-02-21 11:59:49 +00:00
a6d37e5728 COMP: silence some compiler warnings
- remove some spurious regExp includes
2017-02-21 12:56:27 +01:00
c1795a30b8 Merge branch 'listoutput' into 'develop'
Flat list output

See merge request !93
2017-02-20 18:47:24 +00:00
3deb5f4d19 Merge branch 'master' of develop.openfoam.com:Development/OpenFOAM-plus 2017-02-20 10:37:28 -08:00
a37dffad4f ENH:Delete 'not Implemented' function updateCoeffs() in slicedFvPatchField. ACMI patch is used with mesh.C() in isoSurface
which uses slicedFvPatch.
2017-02-20 10:34:01 -08:00
a06cd912d8 solidMixtureProperties: Updated documentation, removed unused functions and corrected remaining 2017-02-20 15:30:25 +00:00
e5ecc28891 liquidMixtureProperties: Updated documentation 2017-02-20 15:30:07 +00:00
403520cee5 ENH: add tags marking user configuration sections
- as per bashrc,cshrc delimit with
      "# USER EDITABLE PART"
      "# END OF (NORMAL) USER EDITABLE PART"

  this can help simplify any patching for system-building scripts etc.
2017-02-20 10:57:30 +01:00
1ed5b35049 CONFIG: pass-through icc compiler choice for KNL, add gcc 6.3.0
- bump ADIOS version to 1.11.1
2017-02-20 10:47:45 +01:00
28a8e5a61b STYLE: use flatOutput when reporting known file-extensions 2017-02-20 10:32:40 +01:00
a843d84f80 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-02-20 09:31:38 +00:00
a7eaf8199b BUG: shm: fast bounding box - triangle intersection disabled. Works around #404.
For certain combinations of rays and triangles the fast bb-triangle intersection
routine is not correct. For now revert to slow edge-by-edge intersection.
2017-02-20 09:29:45 +00:00
d3911dd167 STYLE: avoid old-style shell backticks in various places 2017-02-20 09:30:58 +01:00
f6dacfb484 liquidThermo: rhoThermo instantiated on liquidProperties
This allows single, multi-phase and VoF compressible simulations to be performed
with the accurate thermophysical property functions for liquids provided by the
liquidProperty classes.  e.g. in the
multiphase/compressibleInterFoam/laminar/depthCharge2D tutorial water can now be
specified by

thermoType
{
    type            heRhoThermo;
    mixture         pureMixture;
    properties      liquid;
    energy          sensibleInternalEnergy;
}

mixture
{
    H2O;
}

as an alternative to the previous less accurate representation defined by

thermoType
{
    type            heRhoThermo;
    mixture         pureMixture;
    transport       const;
    thermo          hConst;
    equationOfState perfectFluid;
    specie          specie;
    energy          sensibleInternalEnergy;
}

mixture
{
    specie
    {
        molWeight   18.0;
    }
    equationOfState
    {
        R           3000;
        rho0        1027;
    }
    thermodynamics
    {
        Cp          4195;
        Hf          0;
    }
    transport
    {
        mu          3.645e-4;
        Pr          2.289;
    }
}

However the increase in accuracy of the new simpler and more convenient
specification and representation comes at a cost: the NSRDS functions used by
the liquidProperties classes are relatively expensive to evaluate and the
depthCharge2D case takes ~14% longer to run.
2017-02-19 16:44:00 +00:00
d2be645483 thermophysicalProperties: New base-class for liquidProperties and in the future gasProperties
Description
    Base-class for thermophysical properties of solids, liquids and gases
    providing an interface compatible with the templated thermodynamics
    packages.

liquidProperties, solidProperties and thermophysicalFunction libraries have been
combined with the new thermophysicalProperties class into a single
thermophysicalProperties library to simplify compilation and linkage of models,
libraries and applications dependent on these classes.
2017-02-18 21:53:20 +00:00
de44d09ad9 liquidProperties, solidProperties: Simplified input
The entries for liquid and solid species can now be simply be the name unless
property coefficients are overridden in which are specified in a dictionary as
before e.g. in the tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek case
the water is simply specified

liquids
{
    H2O;
}

and solid ash uses standard coefficients but the coefficients for carbon are
overridden thus

solids
{
    C
    {
        rho             2010;
        Cp              710;
        kappa           0.04;
        Hf              0;
        emissivity      1.0;
    }

    ash;
}
2017-02-18 12:43:10 +00:00
9b4f327e2b liquidProperties: Simplified dictionary format
The defaultCoeffs entry is now redundant and supported only for backward
compatibility.  To specify a liquid with default coefficients simply leave the
coefficients dictionary empty:

    liquids
    {
        H2O {}
    }

Any or all of the coefficients may be overridden by specifying the properties in
the coefficients dictionary, e.g.

    liquids
    {
        H2O
        {
            rho
            {
                a 1000;
                b 0;
                c 0;
                d 0;
            }
        }
    }
2017-02-17 22:08:42 +00:00
a6fd99b874 liquidProperties: simplified and generalized the IO
When liquids are constructed from dictionary the coefficients are now first
initialized to their standard values and overridden by the now optional entries
provided in the dictionary.  For example to specify water with all the standard
temperature varying properties but override only the density with a constant
value of 1000 specify in thermophysicalProperties

liquids
{
    H2O
    {
        defaultCoeffs   no;

        H2OCoeffs
        {
            rho
            {
                a 1000;
                b 0;
                c 0;
                d 0;
            }
        }
    }
}
2017-02-17 20:29:58 +00:00
ba9d58a26f thermophysicalModels: Ostream operator calls write(os) for consistent IO 2017-02-17 16:35:43 +00:00
72b705edbd thermophysicalModels: Removed unused and unmaintained Istream constructors 2017-02-17 15:50:00 +00:00
3e4d253cc1 liquidProperties: Removed unused construction from Istream 2017-02-17 13:41:05 +00:00
c52e4b58a1 thermophysicalModels: Changed specie thermodynamics from mole to mass basis
The fundamental properties provided by the specie class hierarchy were
mole-based, i.e. provide the properties per mole whereas the fundamental
properties provided by the liquidProperties and solidProperties classes are
mass-based, i.e. per unit mass.  This inconsistency made it impossible to
instantiate the thermodynamics packages (rhoThermo, psiThermo) used by the FV
transport solvers on liquidProperties.  In order to combine VoF with film and/or
Lagrangian models it is essential that the physical propertied of the three
representations of the liquid are consistent which means that it is necessary to
instantiate the thermodynamics packages on liquidProperties.  This requires
either liquidProperties to be rewritten mole-based or the specie classes to be
rewritten mass-based.  Given that most of OpenFOAM solvers operate
mass-based (solve for mass-fractions and provide mass-fractions to sub-models it
is more consistent and efficient if the low-level thermodynamics is also
mass-based.

This commit includes all of the changes necessary for all of the thermodynamics
in OpenFOAM to operate mass-based and supports the instantiation of
thermodynamics packages on liquidProperties.

Note that most users, developers and contributors to OpenFOAM will not notice
any difference in the operation of the code except that the confusing

    nMoles     1;

entries in the thermophysicalProperties files are no longer needed or used and
have been removed in this commet.  The only substantial change to the internals
is that species thermodynamics are now "mixed" with mass rather than mole
fractions.  This is more convenient except for defining reaction equilibrium
thermodynamics for which the molar rather than mass composition is usually know.
The consequence of this can be seen in the adiabaticFlameT, equilibriumCO and
equilibriumFlameT utilities in which the species thermodynamics are
pre-multiplied by their molecular mass to effectively convert them to mole-basis
to simplify the definition of the reaction equilibrium thermodynamics, e.g. in
equilibriumCO

    // Reactants (mole-based)
    thermo FUEL(thermoData.subDict(fuelName)); FUEL *= FUEL.W();

    // Oxidant (mole-based)
    thermo O2(thermoData.subDict("O2")); O2 *= O2.W();
    thermo N2(thermoData.subDict("N2")); N2 *= N2.W();

    // Intermediates (mole-based)
    thermo H2(thermoData.subDict("H2")); H2 *= H2.W();

    // Products (mole-based)
    thermo CO2(thermoData.subDict("CO2")); CO2 *= CO2.W();
    thermo H2O(thermoData.subDict("H2O")); H2O *= H2O.W();
    thermo CO(thermoData.subDict("CO")); CO *= CO.W();

    // Product dissociation reactions

    thermo CO2BreakUp
    (
        CO2 == CO + 0.5*O2
    );

    thermo H2OBreakUp
    (
        H2O == H2 + 0.5*O2
    );

Please report any problems with this substantial but necessary rewrite of the
thermodynamic at https://bugs.openfoam.org

Henry G. Weller
CFD Direct Ltd.
2017-02-17 11:22:14 +00:00
973cf0397d CONFIG: provide foamConfigurePaths -mpi option
- makes it easier to switch between mpi implementations (eg, openmpi, intelmpi etc)

- add comment about compiler setting for KNL
2017-02-16 09:14:17 +01:00
48eb1aee84 ENH: treeDataPrimitivePatch: skip surplus test 2017-02-15 12:58:53 +00:00
376912eff2 ENH: adding runTime selectable wallDist calculation to inverseDistanceDiffusivity 2017-02-14 08:30:53 -08:00
2f5185a048 functionObjects::scalarTransport: Corrected typo 2017-02-13 18:25:33 +00:00
ae9522f017 functionObjects::scalarTransport: Added support for optional laminar and turbulent diffusion coefficients
Description
    Evolves a passive scalar transport equation.

    - To specify the field name set the \c field entry
    - To employ the same numerical schemes as another field set
      the \c schemesField entry,
    - A constant diffusivity may be specified with the \c D entry,

    - Alternatively if a turbulence model is available a turbulent diffusivity
      may be constructed from the laminar and turbulent viscosities using the
      optional diffusivity coefficients \c alphaD and \c alphaDt (which default
      to 1):
      \verbatim
          D = alphaD*nu + alphaDt*nut
      \endverbatim

Resolves feature request https://bugs.openfoam.org/view.php?id=2453
2017-02-12 17:19:27 +00:00
689ee6e0ea Merge branch 'master' of develop.openfoam.com:Development/OpenFOAM-plus 2017-02-10 11:41:53 -08:00
4f736b5c41 temperatureCoupledBase: alphaAni set to none by default
boundaryRadiationProperties: updating to new format
dynamicMeshDict and snappyHexMeshDict in utorials/multiphase/interDyMFoam/RAS/motorBike to follow Mattijs Git lab id 381
2017-02-10 11:40:15 -08:00
957635200a ENH: build into build/ directory instead of platforms/ (issue #312)
- makes it slightly easier when packaging various binaries, or when
  building packages for installation via modules etc.
2017-02-10 20:30:15 +01:00
3d02c8a530 ENH: improve isolation of shell variables in wmake scripts
- reduces unexpected interactions between various make elements
2017-02-10 16:13:54 +01:00
cf501ffa0f Merge branch 'master' into develop 2017-02-10 14:00:26 +00:00
f77bbf4179 Merge branch 'master' of develop.openfoam.com:Development/OpenFOAM-plus 2017-02-10 13:57:55 +00:00
84aa391403 BUG: noise - updated creation of control dictionary to allow -case option and env variables. Fixes #402 2017-02-10 13:57:36 +00:00
7e20157d95 ENH: setSystem*Dictionary - expand file names to enable the use of 2017-02-10 13:56:42 +00:00
e82a029453 ENH: add help/usage for dirToString, wmkdep. Add dirToString -strip option.
- The dirToString -strip option is simple, but reduces effort for the caller.
2017-02-10 14:10:00 +01:00
46ecad8f7a STYLE: make wmake scripts look more POSIX-like
- also add some comments about the side-effects
2017-02-10 11:38:12 +01:00
6343e1e3b3 ENH: have wmake and wclean do something sensible with a filename as target
- For convenience, let "wmake some/path/filename.C"
  behave similar to    "wmake some/path"
  and trace back for the Make directory.
2017-02-10 10:33:50 +01:00
e3d9084c62 ENH: support ASCII List output on a single-line
- Introduce writeList(Ostream&, label) method in various List classes to
  provide more flexibility and avoid hard-coded limits when deciding if a
  list is too long and should be broken up into multiple lines (ASCII only).

- The old hard-code limit (10) is retained in the operator<< versions

- This functionality is wrapped in the FlatOutput output adapter class
  and directly accessible via the 'flatOutput()' function.

Eg,
    #include "ListOps.H"
    Info<< "methods: " << flatOutput(myLongList) << endl;

    // OR

    Info<< "methods: ";
    myLongList.writeList(os) << endl;
2017-02-10 09:55:37 +01:00
53502f79b8 BUG: Correcting calculation of azimuth angle in the solar direction 2017-02-09 13:13:45 -08:00
dd8b8bceac csvSetWriter: Corrected axis header
Resolves bug-report https://bugs.openfoam.org/view.php?id=2455
2017-02-09 17:47:56 +00:00
b167c95f19 compressibleInterFoam: Completed LTS and semi-implicit MULES support
Now the interFoam and compressibleInterFoam families of solvers use the same
alphaEqn formulation and supporting all of the MULES options without
code-duplication.

The semi-implicit MULES support allows running with significantly larger
time-steps but this does reduce the interface sharpness.
2017-02-09 17:31:57 +00:00
2049c5c2a4 BUG: using tmp() instead of tmp.ref() in combineFields (closes #400)
- templated code that is not actually be used yet.

ENH: avoid combineFields for serial case

Note: a 'master-only' variant with combineList only on the master and
without scatter can be pursued later.
2017-02-09 15:19:47 +01:00
0067c9e369 STYLE: avoid spurious messages when cloning cases
- either (or both) of 0/, 0.orig/ may exist, so error messages about
  one of them being missing is a bit misleading
2017-02-09 13:41:48 +01:00
ff2a335310 ENH: add tutorials/Allrun -collect option
- collects the log information only, without running any cases.
  This can be useful if the user has terminated the test prematurely
  but nonetheless wishes to summarize the log output.
2017-02-09 13:07:48 +01:00
26cd9ae174 STYLE: update foam comment template 2017-02-09 11:52:32 +01:00
6fc2a3dc58 compressibleInterFoam: More consistent with interFoam and added partial support for LTS 2017-02-08 20:50:07 +00:00
ba4eefae1d interFoam, interDyMFoam: Removed duplicate include 2017-02-08 20:47:59 +00:00
3879cf48fb interMixingFoam: Renamed alphaEqns.H and alphaEqnsSubCycle.H for consistency with interFoam 2017-02-08 20:46:31 +00:00
285442776c STYLE: minor code adjustments
- constness on local variables, pre-increment on loops, parameter names
2017-02-08 19:32:38 +01:00
9d85d34f3a functionObjects::scalarTransport: Corrected FatalError 2017-02-08 16:57:30 +00:00
2f091ae6c7 STYLE: make UList::writeEntry(Ostream&) protected
- outputs compound tags etc.
  Should only be called by itself or by a derived class.
2017-02-08 14:22:19 +01:00
160efd89a6 porosityModels::solidification: Added optional phase-fraction for VoF solvers etc.
Description
    Simple solidification porosity model

    This is a simple approximation to solidification where the solid phase
    is represented as a porous blockage with the drag-coefficient evaluated from

        \f[
            S = - \alpha \rho D(T) U
        \f]

    where
    \vartable
        \alpha  | Optional phase-fraction of solidifying phase
        D(T)    | User-defined drag-coefficient as function of temperature
    \endvartable

    Note that the latent heat of solidification is not included and the
    temperature is unchanged by the modelled change of phase.

    Example of the solidification model specification:
    \verbatim
        type            solidification;

        solidificationCoeffs
        {
            // Solidify between 330K and 330.5K
            D table
            (
                (330.0     10000) // Solid below 330K
                (330.5     0)     // Liquid above 330.5K
            );

            // Optional phase-fraction of solidifying phase
            alpha alpha.liquid;

            // Solidification porosity is isotropic
            // use the global coordinate system
            coordinateSystem
            {
                type    cartesian;
                origin  (0 0 0);
                coordinateRotation
                {
                    type    axesRotation;
                    e1      (1 0 0);
                    e2      (0 1 0);
                }
            }
        }
    \endverbatim
2017-02-08 10:40:14 +00:00
47b48217ba Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-02-08 08:46:23 +00:00
63b2ab8069 ENH: surfaceMeshTriangulate: handle absolute paths. Fixes #398. 2017-02-08 08:45:40 +00:00
974624766f porosityModels::solidification: New porosity model to simulate solidification
Description
    Simple solidification porosity model

    This is a simple approximation to solidification where the solid phase
    is represented as a porous blockage with the drag-coefficient evaluated from

        \f[
            S = - \rho D(T) U
        \f]

    where
    \vartable
        D(T) | User-defined drag-coefficient as function of temperature
    \endvartable

    Note that the latent heat of solidification is not included and the
    temperature is unchanged by the modelled change of phase.

    Example of the solidification model specification:
    \verbatim
        type            solidification;

        solidificationCoeffs
        {
            // Solidify between 330K and 330.5K
            D table
            (
                (330.0     10000) // Solid below 330K
                (330.5     0)     // Liquid above 330.5K
            );

            // Solidification porosity is isotropic
            // use the global coordinate system
            coordinateSystem
            {
                type    cartesian;
                origin  (0 0 0);
                coordinateRotation
                {
                    type    axesRotation;
                    e1      (1 0 0);
                    e2      (0 1 0);
                }
            }
        }
    \endverbatim
2017-02-07 19:02:30 +00:00
c5e7f356c9 porosityModel::powerLaw: Added groupName to rho lookup to support multiphase 2017-02-07 19:01:34 +00:00
5f25843392 porosityModels: Corrected documentation 2017-02-07 19:00:58 +00:00
29e83f3958 compressibleInterFoam: Added support for fvOptions in both the U and T equations 2017-02-07 18:59:40 +00:00
8264c3b988 interDyMFoam: Reinstate alphaPhiCorr0 for moving meshes without topology change 2017-02-07 09:59:19 +00:00
ddf1268e73 functionObjects:surfaceFieldValue, volFieldValue: Added weightedSum and weighted[Area|Vol]Integrate
Patch contributed by Timo Niemi, VTT.
Resolves patch request https://bugs.openfoam.org/view.php?id=2452
2017-02-06 15:48:11 +00:00
7b09bab34f DOC: adjust doxygen tag for 4-digit release tags 2017-02-06 09:15:18 +01:00
3e5307111c STYLE: unify cd, check for the cwd and error message 2017-02-06 09:13:59 +01:00
aaeab42691 ENH: provide -git option for Alltest
- fast means of ensuring we are only testing what is contained in the
  repository
2017-02-06 08:49:04 +01:00
23809f7ae7 PBiCG: Suggest changing to the more robust PBiCGStab solver
if convergence is not achieved within the maximum number of iterations.

Sometimes, particularly running in parallel, PBiCG fails to converge or diverges
without warning or obvious cause leaving a solution field containing significant
errors which can cause divergence of the application.  PBiCGStab is more robust
and does not suffer from the problems encountered with PBiCG.
2017-02-03 18:36:40 +00:00
9f91084eef ENH: provide word::validated() static method
- Constructs a validated word, in which all invalid characters have
  been stripped out and any leading digit is '_'-prefixed.
  Words with leading digits cause parse issues when read back later.

- Replaces previous functionally identical code from src/conversion

--
COMP: test against nullObject instead of checking address for null pointer.
2017-02-03 15:13:13 +00:00
7a7fa4350d Time: when "writeFormat" is set to "binary" disallow compression
Compressing and decompressing binary files introduces a significant IO overhead
without a providing significant reduction in file-size.
2017-02-03 14:51:04 +00:00
f532a99dc3 ENH: logFiles - minor change to suppress compiler warning 2017-02-03 14:34:19 +00:00
7612b51828 lagrangian::NonInertialFrameForce: Use field references rather than copies
Patch contributed by Mattijs Janssens
2017-02-03 14:29:07 +00:00
78ee6c2abb Time: When increasing precision check if the time name is unchanged
Patch contributed by Mattijs Janssens
2017-02-03 14:27:38 +00:00
83787036a9 functionObjects::streamLine: Reinstated default "U" 2017-02-03 14:25:02 +00:00
d62e301b4b Merge branch 'master' into develop 2017-02-03 12:29:49 +00:00
21636f241a Merge branch 'master' of develop.openfoam.com:Development/OpenFOAM-plus 2017-02-03 12:28:12 +00:00
9e8031f285 BUG: RunFunctions - updated retrieval of nProcs to suppress warning when no system/deomposeParDict 2017-02-03 12:27:50 +00:00
417ff3bc2a BUG: waveModels - corrected wavelength calculation for StokesV model; code clean-up 2017-02-03 12:17:42 +00:00
b4f0b2930d STYLE: Minor code tidying 2017-02-03 12:20:58 +00:00
74f38251f8 kOmegaSSTSato: removed debug message 2017-02-03 11:37:56 +00:00
1e9e164be0 Merge branch 'feature-bbox-improvements' into 'develop'
Feature bbox improvements

See merge request !92
2017-02-03 10:56:51 +00:00
93fbd41785 kOmegaSSTBase: make correctNut(S2, F2) virtual
kOmegaSSTSato: Change correctNut() to correctNut(S2, F2)

Resolves bug-report https://bugs.openfoam.org/view.php?id=2450
2017-02-03 10:52:35 +00:00
ec94c078e3 BUG: STL patch names not being passed through
- regression introduced by a719528832

STYLE: add meaningful solid names for some stl files
2017-02-03 09:33:22 +00:00
ba4dbeda77 NamedEnum: Updated to support C++11 scoped enumerations 2017-02-02 17:02:59 +00:00
e76d5ce567 ENH: use invertedBox instead of greatBox for signalling no clipping
- more stable/predictable to check for a bounding box !empty() rather
  than comparing to greatBox directly.
2017-02-01 14:31:09 +00:00
0ffae6461a ENH: creating a bounding box without points yields an inverted box
- The code create a box with a (0,0,0) point.
  The new definition is more logical and makes it very easy to grow
  the bounding box to include new points. It also simplifies much of
  the logic in the constructors.

- Use ROOTVGREAT instead of VGREAT for sizing greatBox and invertedBox.
  Avoids some overflow issues reported by Mattijs (thus GREAT has been
  used in treeBoundBox), but might still need further revision.
2017-02-01 12:15:00 +00:00
d29420817d ENH: Modification of the start point for ray shooting to avoid self-hit in distorted meshes 2017-01-31 16:06:44 -08:00
3d315f09f9 alphatWallBoilingWallFunctionFvPatchScalarField: Resolve restart issue
Patch contributed by Juho Peltola, VTT
Resolves patch request https://bugs.openfoam.org/view.php?id=2446
2017-01-30 16:39:36 +00:00
d951f7aaaf movingConeTopoFvMesh: M_PI -> Foam::constant::mathematical::pi 2017-01-30 16:38:58 +00:00
9812d957c9 ThermalPhaseChangePhaseSystem: Improved robustness
Patch contributed by Juho Peltola, VTT.
Resolves patch request https://bugs.openfoam.org/view.php?id=2443
2017-01-30 16:37:27 +00:00
70ac064f21 codedFunctionObject: Updated documentation
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2441
2017-01-28 18:01:11 +00:00
1d211874aa functionObjects::streamLine,wallBoundedStreamLine: Removed outdated check for 'UName'
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2444
2017-01-28 17:59:34 +00:00
f92862a42c Allwmake: Provides clearer message when OpenFOAM environment is not loaded
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2424
2017-01-28 17:57:13 +00:00
7a2eb63824 Corrected spelling mistake 2017-01-26 20:18:50 +00:00
d4aba02652 combustionModels: Minor cleanup 2017-01-26 17:48:31 +00:00
5dd24f4968 Removed unhelpful clutter 2017-01-26 17:47:24 +00:00
de5688e095 ENH: expose HashTable iterator object() methods
- to the referenced object via a method name, which may be clearer
  than deferencing the iterator

     [key, value] =>  iter.key(), *iter
     [key, value] =>  iter.key(), iter()
     [key, value] =>  iter.key(), iter.object()
2017-01-26 18:11:02 +01:00
2b9b2dd865 BUG: HashPtrTable has problems with null pointers (issue #395)
- print and copy operations should not be allowed to dereference a
  nullptr.
2017-01-26 18:00:33 +01:00
1c1a69cabc patchInjectionBase: Improved particle positioning
Patch contributed by Timo Niemi, VTT.
Resolves bug-report https://bugs.openfoam.org/view.php?id=2442
2017-01-26 15:34:51 +00:00
af4429f94c STYLE: reduce bounding box list via list-combine-gather/scatter 2017-01-25 23:03:41 +01:00
722d23f59c ENH: additional methods/operators for boundBox (related to #196)
- Constructor for bounding box of a single point.

- add(boundBox), add(point) ...
  -> Extend box to enclose the second box or point(s).

  Eg,
      bb.add(pt);
  vs.
      bb.min() = Foam::min(bb.min(), pt);
      bb.max() = Foam::max(bb.max(), pt);

Also works with other bounding boxes.
  Eg,
      bb.add(bb2);
      // OR
      bb += bb2;
  vs.
      bb.min() = Foam::min(bb.min(), bb2.min());
      bb.max() = Foam::max(bb.max(), bb2.max());

'+=' operator allows the reduction to be used in parallel
gather/scatter operations.

A global '+' operator is not currently needed.

Note: may be useful in the future to have a 'clear()' method
that resets to a zero-sized (inverted) box.

STYLE: make many bounding box constructors explicit
2017-01-25 19:26:50 +01:00
17d76e6261 ENH: boundBox 'reduce' method (related to #196)
reduce()
- parallel reduction of min/max values.
  Reduces coding for the callers.

  Eg,
      bb.reduce();

  instead of the previous method:
      reduce(bb.min(), minOp<point>());
      reduce(bb.max(), maxOp<point>());

STYLE:

- use initializer list for creating static content
- use point::min/point::max when defining standard boxes
2017-01-25 18:52:37 +01:00
1cb2966722 ENH: add blockMesh -sets option to write cellZones as cellSets (closes #348) 2017-01-25 13:16:49 +01:00
8f7228d6f3 interDyMFoam: delete alphaPhiCorr0 if the mesh changes
The previous time-step compression flux is not valid/accurate on the new mesh
and it is better to re-calculate it rather than map it from the previous mesh to
the new mesh.
2017-01-25 11:54:12 +00:00
a719528832 ENH: use STL reader from surfMesh library for triSurface as well (issue #294)
- initial step in reducing duplicate IO for triSurface.

- write STL triangle using common core routines from fileFormats
2017-01-25 11:58:55 +01:00
14d8f6cb17 DEFEATURE: remove writers for OpenDX format (issue #294)
- last OpenDX release/news was from 2007.
  Cannot maintain or verify if the writers are correct.
2017-01-25 11:51:14 +01:00
4e5dc43418 snappyHexMesh: Added "noRefinement" writeFlag to control the writing of cellLevel, pointLevel etc. files
By default snappyHexMesh writes files relating to the hex-splitting process into
the polyMesh directory: cellLevel level0Edge pointLevel surfaceIndex

but by setting the noRefinement flag:

writeFlags
(
    noRefinement
    .
    .
    .
);

these optional files which are generally not needed are not written.

If you run the three stages of snappyHexMesh separately or run a dynamic mesh
solver supporting refinement and unrefinement these files are needed
and "noRefinement" should not be set.
2017-01-24 22:28:36 +00:00
9b319dab61 blockMesh: Delete the polyMesh directory before meshing
unless the blockMeshDict is in the polyMesh directory or the "-noClean" option
is specified.

This avoids problems running snappyHexMesh without first clearing files from
polyMesh which interfere with the operation of snappyHexMesh.
2017-01-24 16:18:20 +00:00
192b5d91a0 snappyHexMesh: Write correct refinement files once only
The files relating to the hex refinement are written out explicitly both by
snappyHexMesh and dynamicRefineFvMesh and hence should be set "NO_WRITE" rather
than "AUTO_WRITE" to avoid writing them twice.  This change corrects the
handling of the "refinementHistory" file which should not be written by
snappyHexMesh.
2017-01-24 08:15:43 +00:00
9d63cc5ca8 ENH: add versioning for VTK library to runTimePostProcessing (issue #370)
Eg,
    librunTimePostProcessing.so
    librunTimePostProcessing.so.7 -> librunTimePostProcessing.so.7.1.0
    librunTimePostProcessing.so.7.1.0

- centralize handling of paraview/vtk versioning into wmake/cmakeFunctions
2017-01-23 13:37:42 +01:00
77a3022c43 BUG: boundaryDataTemplates - make dir before writing to stream. Fixes #390 2017-01-23 08:41:43 +00:00
1c26f6a457 chemistryModel: General cleanup 2017-01-20 18:22:48 +00:00
1e36c99588 PaSR: Removed deprecated "turbulentReaction" switch
To run with laminar reaction rates choose the "laminar" combustion model rather
than setting "turbulentReaction no;" in the "PaSR" model.
2017-01-20 17:17:14 +00:00
3ca17d43a2 meshSearch: Add support for cell decomposition mode CELL_TETS
Resolves bug-report https://bugs.openfoam.org/view.php?id=2428
2017-01-20 10:47:15 +00:00
8632583934 Removed trailing blank lines
Resolves bug-report https://bugs.openfoam.org/view.php?id=2438
2017-01-19 20:17:47 +00:00
2c388220aa Merge branch 'master' into develop 2017-01-19 13:31:11 +00:00
f1e415266d BUG: wave models - corrected setting of U for shallowWaterAbsorption. Fixes #388 2017-01-19 13:30:59 +00:00
e1730cf1f1 setsToZones: Add support for multi-region cases
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2437
2017-01-19 08:17:54 +00:00
c7300716f6 Updates for clang++-3.9 2017-01-18 21:45:26 +00:00
1d8b31d390 Updates for clang++-3.9 2017-01-18 18:12:45 +00:00
8112172e5b eConstThermo: Corrected entropy function
Resolves bug-report https://bugs.openfoam.org/view.php?id=2436
2017-01-18 10:10:30 +00:00
1c2093c8b3 Multi-phase solvers: Improved handling of inflow/outflow BCs in MULES
Avoids slight phase-fraction unboundedness at entertainment BCs and improved
robustness.

Additionally the phase-fractions in the multi-phase (rather than two-phase)
solvers are adjusted to avoid the slow growth of inconsistency ("drift") caused
by solving for all of the phase-fractions rather than deriving one from the
others.
2017-01-17 22:43:47 +00:00
1abec0652d tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC: Added deltaT to TDAC controls 2017-01-17 22:41:30 +00:00
740dbc4a37 Merge branch 'bugFix_GL_384' into 'develop'
adding viewFactorWall to inGroups fixes #384

@Sergio

See merge request !91
2017-01-17 12:45:59 +00:00
eeb486c38d adding viewFactorWall to inGroups fixes #384 2017-01-17 11:27:42 +00:00
2cc23a23e7 BUG: missing specializations in foamVtkPTraits header 2017-01-17 08:54:07 +01:00
f265b0484c BUG: extra newline in foamVtkAppendBase64Formatter flush()
Enhancements

- introduce intermediate layer for base64 foamVtk formatting
- add encodedLength() method, which is useful for xml appended output
2017-01-17 08:42:05 +01:00
d404ef954b BUG: incorrect super-cells for foamVtkCells decomposition (fixes #385) 2017-01-16 18:25:03 +01:00
a99143506d BUG: not incrementing when reading via singly-linked list 2017-01-24 12:59:13 +01:00
7af6fa7b67 ENH: freshen code in labelRange classes
- misc improvements in functionality.
2017-01-23 17:09:26 +01:00
2fa6ae6f62 STYLE: use pre-increment and cbegin/cend form for forAll* macros
- no reason to use post-increment in forAll() macro.

- use C++11 cbegin()/cend() method names for forAll*Iter() macros.
  These method names have been in OpenFOAM since 2009 and are also
  used by C++11 containers.

STYLE: nullptr instead of 0 in UList
2017-01-20 21:13:38 +01:00
fe0bb227ae STYLE: adjust documentation for scalarTransport FO 2017-01-18 11:31:15 +01:00
1ddaec3fc0 CodedSource: Corrected documentation
Patch contributed by zhulianhua
Resolves bug-report https://bugs.openfoam.org/view.php?id=2427
2017-01-13 14:14:06 +00:00
237c90820b species::thermo<Thermo, Type>::T: Check for negative initial temperature
Starting from an negative initial temperature causes non-convergence and a
misleading error, now a specific message is generated.
2017-01-13 14:11:28 +00:00
e0b157c0c0 fieldMinMax: Added cell index to output
e.g.

fieldMinMax fieldMinMax write:
    min(T) = 291 in cell 255535 at location (-0.262546 -0.538933 1.00574) on processor 9
    max(T) = 336.298 in cell 419031 at location (1.7468 0.758405 8.10989) on processor 1
    min(mag(U)) = 0 in cell 14990 at location (-0.0824383 1.68479 1.5349) on processor 0
    max(mag(U)) = 652.341 in cell 218284 at location (0.609849 0.167247 1.00091) on processor 12
2017-01-13 14:10:04 +00:00
5649bda951 realizableKE: Removed unused Cmu coefficient
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2431
2017-01-13 14:08:41 +00:00
512bfcfd6b CloudFunctionObjects::ParticleCollector: Corrected handling of "concentricCircle" mode
Patch contributed by Karl Meredith, FM Global.
2017-01-13 14:06:45 +00:00
f47e8513d7 ENH: avoid deprecated paraview method SetImmediateUpdate()
- add support for patch names in block mesh reader.
2017-01-12 11:41:15 +01:00
23d24a511e ENH: command-line query for the OPENFOAM_PLUS wmake value (issue #378)
Examples,

    wmakePrintBuild -plus

Check if value is known
(ie, everything configured and also OpenFOAM+):

    if wmakePrintBuild -plus >/dev/null 2>&1
    then
        echo YES
    else
        echo NO
    fi

Check if version is new enough

    if ofver=$(wmakePrintBuild -plus 2>/dev/null) && [ "$ofver" -ge 1612 ]
    then
        echo YES
    else
        echo NO
    fi

Conditionals

    ofver=$(wmakePrintBuild -plus 2>/dev/null)
    case "${ofver:=0}" in
    1612)
        echo "something for 1612
        ;;
    1706)
        echo "something for 1706
        ;;
    esac
2017-01-12 11:25:37 +01:00
ecb80a2ee8 ENH: refactor paraview readers code to avoid duplication
- as originally intended years ago, but never actually done.

- use 'foamPvCore' instead of 'vtkPVReaders' to avoid potential name
  collisions with any 'vtk*' files and since we may reuse these
  functions in other foam-paraview modules (not just readers).

STYLE: use same font size/colour for patch-names as for point-numbers

BUG: repair issue with single time-step

- paraview time-selector returns '0' as the requested time if there is
  only one time step. However, if we have skipped the 0/ directory,
  this single time step is likely a non-zero value.
2017-01-12 06:40:58 +01:00
46c644fa89 ENH: GAMGSolver: use raw pointers in critical loops. Fixes #379. 2017-01-11 17:23:10 +00:00
fbc02a9172 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-01-11 10:46:29 +00:00
aca1aa0b57 ENH: polyMeshGeometry: normalise cellDeterminant calculation. Fixes #380. 2017-01-11 10:46:06 +00:00
8233fa8f50 Merge branch 'master' into develop 2017-01-10 17:03:25 +00:00
084963143c BUG: meshToMesh - corrected indexing of cutting patches. Fixes #376 2017-01-10 17:02:58 +00:00
934764d700 ENH: optionally eliminate duplicates on hashedWordList construction (issue #375)
- makes it easier to use as a wordHashSet replacement for situations
  where we want to avoid duplicates but retain the input order.

- support construction from HashTable, which means it works like the
  HashTable::sortedToc but with its own hashing for these keys.

- expose rehash() method for the user. There is normally no need for
  using it directly, but also no reason to lock it away as private.
2017-01-10 12:42:40 +01:00
47bd8e13f7 TDACChemistryModel: simplified, rationalized and automated the handling of variableTimeStep 2017-01-09 21:40:39 +00:00
d08a5193fb stressComponents, wallGradU: Additional backward-compatibility info scripts
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2423
2017-01-09 14:33:47 +00:00
f53293441b Corrected spelling mistake existance -> existence
Patch provided by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2425
2017-01-08 23:08:41 +00:00
1b34f84298 TDACChemistryModel: resolved issue with single-precision build 2017-01-07 18:12:38 +00:00
7e22440dc5 TDACChemistryModel: Added support for variable time-step and LTS in ISAT
New reactingFoam tutorial counterFlowFlame2DLTS_GRI_TDAC demonstrates this new
functionality.

Additionally the ISAT table growth algorithm has been further optimized
providing an overall speedup of between 15% and 38% for the tests run so far.

Updates to TDAC and ISAT provided by Francesco Contino.

Implementation updated and integrated into OpenFOAM-dev by
Henry G. Weller, CFD Direct Ltd with the help of Francesco Contino.

Original code providing all algorithms for chemistry reduction and
tabulation contributed by Francesco Contino, Tommaso Lucchini, Gianluca
D’Errico, Hervé Jeanmart, Nicolas Bourgeois and Stéphane Backaert.
2017-01-07 16:29:15 +00:00
126125c185 Rationalized the keyword to specify a file name in a dictionary to 'file'
e.g. in tutorials/heatTransfer/buoyantSimpleFoam/externalCoupledCavity/0/T

    hot
    {
        type            externalCoupledTemperature;
        commsDir        "${FOAM_CASE}/comms";
        file            "data";
        initByExternal  yes;
        log             true;
        value           uniform 307.75; // 34.6 degC
    }

Previously both 'file' and 'fileName' were used inconsistently in different
classes and given that there is no confusion or ambiguity introduced by using
the simpler 'file' rather than 'fileName' this change simplifies the use and
maintenance of OpenFOAM.
2017-01-07 09:38:54 +00:00
c0900fcdb4 triSurfaceMesh: Added support for specifying the tri-surface file name:
e.g.

motorBike
{
    type triSurfaceMesh;
    file "motorBike.obj";
}

Based on patch provided by Mattijs Janssens
Resolves part of bug-report https://bugs.openfoam.org/view.php?id=2396
2017-01-07 09:23:43 +00:00
3eb706a380 BUG: turbulentDFSEMInlet BC - corrected singleProc usage for parallel runs. Fixes #374 2017-01-06 10:55:46 +00:00
7f2104c9a7 foamDictionary: Removed unnecessary spaces and blank lines from output
Resolves bug-report https://bugs.openfoam.org/view.php?id=2422
2017-01-05 20:19:30 +00:00
f8e9a0dbf5 fluentMeshToFoam: Added '-2D' option consistent with plot3dToFoam
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2238
2017-01-05 15:59:42 +00:00
7a90f5e6fb ENH: add versioning to paraview plugin support libraries (issue #370)
- use "-pvMAJ.MIN" suffix for similarity with the paraview convention

- use sentinel file to ensure clean change of intermediate targets

- ensure all library files are being properly removed
2017-01-05 16:22:07 +01:00
2c96ec7550 ENH: update QT interface code for ParaView reader (issue #337)
- remove old (ParaView-3) files

- Works in 4.4.0, 5.0.1, 5.2.0 etc

STYLE:
- slots now use SM properties directly without a second lookup.
  This reduces exposure of the QT elements and simplifies the coding.

- avoid focus borders on the Qt elements

- place the "use Polyhedron" checkbox into a column

- move "Cache Mesh" down in the GUI (an advanced feature and thus
  should be less prominent)

- obtain button labels/tooltip directly from the XML content
2017-01-05 11:31:11 +01:00
24610c7c0a STYLE: Updated README text 2017-01-04 16:09:00 +00:00
7655304b5e STYLE: Documentation updates - fixes #371 2017-01-04 16:05:47 +00:00
59dacd3145 BUG: ISLList - did not close #ifdef with #endif 2017-01-04 16:00:37 +00:00
fbeaad7e58 BUG: test-mesh updated to test polyMesh constructor. Fixes #372 2017-01-04 15:59:49 +00:00
4eb679614c ENH: update blockMesh reader (issue #337)
- use property group customization instead of individual pqPropertyWidget
2017-01-04 12:27:36 +01:00
7feca8497b Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2017-01-04 11:17:58 +00:00
680ba0f214 BUG: timeControl: add tolerance to timeStart, timeEnd. Fixes #367. 2017-01-04 11:17:12 +00:00
71ea6bec62 ENH: update blockMesh reader for paraview 5.2 (issue #337)
- although this is not the final desired form, since it uses
  individual pqPropertyWidget customizations (ie, ugly layout, too
  many bits of code), but is an interesting intermediate solution
  that may be useful in other contexts.
2017-01-04 10:48:13 +01:00
801076f8d0 ENH: adjust header management for foamVtk output
- provide headerType typedef in foamVtkFormatter, foamVtkOutput

- remove byteOrder and headerType constants from foamVtkFormatter
  since the same strings can also be obtained from foamVtkPTraits

- additional convenience methods in foamVtkFormatter
2017-01-17 10:14:15 +01:00
0761974aa1 BUG: Incomplete cleanup of paraview environment (fixes #369)
- LD_LIBRARY_PATH was not being cleaned at all when switching between
  paraview versions.

- PATH was cleaned against the third-party paraview-*, although 3rd
  party paraview is installed as ParaView-*.
  The additional cleanup for ParaView_DIR may not catch this (if it
  was unset elsewhere).
2017-01-03 17:12:02 +01:00
fa6320d93a Updated tutorial scripts 'createGraphs' and 'patchifyObstacles' for clearer messages
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2411
2016-12-27 15:44:30 +00:00
c21d0d3642 Make/options: Added -lscotchDecomp where appropriate
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2410
2016-12-27 15:26:53 +00:00
dfaf90301e Documentation updates
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=2409
2016-12-27 14:35:39 +00:00
2a95bdc2a4 wmake: Corrected comments
Patch contributed by Bruno Santos
Resolves bug-report https://bugs.openfoam.org/view.php?id=2408
2016-12-27 14:15:32 +00:00
83a874cdba functionObjects::volRegion: Improved parallel efficiency
Based on patch contributed by Kevin Nordin-Bates
Resolves bug-report https://bugs.openfoam.org/view.php?id=2401
2016-12-19 19:20:09 +00:00
6cae0fdacb reactingFoam::setRDeltaT: Add support for limiting the local time-step by the reaction rates
e.g. in the reactingFoam/laminar/counterFlowFlame2DLTS tutorial:

PIMPLE
{
    momentumPredictor no;
    nOuterCorrectors  1;
    nCorrectors     1;
    nNonOrthogonalCorrectors 0;

    maxDeltaT       1e-2;
    maxCo           1;
    alphaTemp       0.05;
    alphaY          0.05;
    Yref
    {
        O2          0.1;
        ".*"        1;
    }
    rDeltaTSmoothingCoeff 1;
    rDeltaTDampingCoeff 1;
}

will limit the LTS time-step according to the rate of consumption of 'O2'
normalized by the reference mass-fraction of 0.1 and all other species
normalized by the reference mass-fraction of 1.  Additionally the time-step
factor of 'alphaY' is applied to all species.  Only the species specified in the
'Yref' sub-dictionary are included in the LTS limiter and if 'alphaY' is omitted
or set to 1 the reaction rates are not included in the LTS limiter.
2016-12-19 14:19:31 +00:00
0087bb8027 foamList: removed '-lreactingMultiphaseSystem' to avoid duplicate name conflict
Resolves bug-report https://bugs.openfoam.org/view.php?id=2398
2016-12-16 10:12:09 +00:00
b99817d924 Rationalized heat release rate functions
Combined 'dQ()' and 'Sh()' into 'Qdot()' which returns the heat-release rate in
the normal units [kg/m/s3] and used as the heat release rate source term in
the energy equations, to set the field 'Qdot' in several combustion solvers
and for the evaluation of the local time-step when running LTS.
2016-12-15 17:10:21 +00:00
8b5516abd9 Template function objects: added read rhoInf entry 2016-12-14 15:30:04 +00:00
4de91b22d8 Template function objects: forces and forceCoeffs correction/tidy 2016-12-14 14:38:04 +00:00
0256c5de51 Template function objects: corrected forces and forceCoeffs for code correction
See bug-report https://bugs.openfoam.org/view.php?id=2387
2016-12-14 14:10:24 +00:00
62fb508c63 functionObjects::forceCoeffs: Corrected setting of rhoRef for compressible flow
Resolves bug-report https://bugs.openfoam.org/view.php?id=2387
2016-12-14 10:39:32 +00:00
6fc22debc8 reactingTwoPhaseEulerFoam: Removed temporary debug option 2016-12-14 09:00:14 +00:00
ab1fc22398 reactingTwoPhaseEulerFoam: Updated LTS support in the cell-based momentum algorithm 2016-12-13 15:47:24 +00:00
164e2d4c53 Removed blank-line 2016-12-13 15:46:39 +00:00
5514b74922 sprayFoam: Explicitly write cloud when not solving flow 2016-12-13 13:19:22 +00:00
eefddbc8a8 reactingTwoPhaseEulerFoam::partitioningModels::cosine: Corrected slope
Patch contributed by Juho Peltola, VTT.
2016-12-13 12:03:56 +00:00
141a1df59b wallBoilingSubModels: Corrected references
Patch contributed by Juho Peltola, VTT
2016-12-12 16:58:52 +00:00
f31623d337 pimpleControl: Added optional 'solveFlow' control
sprayFoam: Added support for the optional 'solveFlow' control to allow
           simulation of the spray evolution with all sub-models in a 'frozen'
           flow-field.
2016-12-12 14:35:21 +00:00
8ddfe86d1d functionObjects::writeLocalObjects: Provides support for controlled writing of field
defined by functionObjects, e.g. wallHeatFlux, wallShearStress and yPlus.

Patch contributed by Bruno Santos
Resolves bug-report http://bugs.openfoam.org/view.php?id=2353
2016-12-09 21:54:13 +00:00
8044 changed files with 539283 additions and 146846 deletions

10
.gitignore vendored
View File

@ -39,8 +39,12 @@ solaris*Gcc*/
SunOS*Gcc*/
platforms/
# Reinstate wmake/rules that might look like build directories
!wmake/rules/*/
# Top-level build directories
/build/
/platforms/
# Reinstate wmake rules that might look like build directories
!/wmake/rules/*/
# doxygen generated documentation
doc/Doxygen/html
@ -58,10 +62,12 @@ doc/Doxygen/DTAGS
/etc/prefs.sh
/etc/config.csh/prefs.csh
/etc/config.sh/prefs.sh
/wmake/rules/General/mplibUSER*
# Source packages - anywhere
*.tar.bz2
*.tar.gz
*.tar.xz
*.tar
*.tgz
*.gtgz

6
.gitmodules vendored Normal file
View File

@ -0,0 +1,6 @@
[submodule "cfmesh"]
path = modules/cfmesh
url = https://develop.openfoam.com/Community/integration-cfmesh.git
[submodule "avalanche"]
path = modules/avalanche
url = https://develop.openfoam.com/Community/avalanche.git

View File

@ -1,24 +1,29 @@
#!/bin/sh
cd ${0%/*} || exit 1 # Run from this directory
# Run from OPENFOAM top-level directory only
cd ${0%/*} && wmakeCheckPwd "$WM_PROJECT_DIR" 2>/dev/null || {
echo "Error (${0##*/}) : not located in \$WM_PROJECT_DIR"
echo " Check your OpenFOAM environment and installation"
exit 1
}
[ -d "$WM_PROJECT_DIR" -a -f "$WM_PROJECT_DIR/etc/bashrc" ] || {
echo "Error (${0##*/}) : WM_PROJECT_DIR appears to be incorrect"
echo " Check your OpenFOAM environment and installation"
exit 1
}
# Parse arguments for library compilation
. $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
wmakeCheckPwd "$WM_PROJECT_DIR" || {
echo "Allwmake error: Current directory is not \$WM_PROJECT_DIR"
echo " The environment variables are inconsistent with the installation."
echo " Check the OpenFOAM entries in your dot-files and source them."
exit 1
}
#------------------------------------------------------------------------------
echo "========================================"
date "+%Y-%m-%d %H:%M:%S %z" 2>/dev/null || echo "date is unknown"
echo "Starting ${WM_PROJECT_DIR##*/} ${0##*}"
echo " $WM_COMPILER $WM_COMPILER_TYPE compiler"
echo " ${WM_OPTIONS}, with ${WM_MPLIB} ${FOAM_MPI}"
echo
[ -n "$FOAM_EXT_LIBBIN" ] || {
echo "Allwmake error: FOAM_EXT_LIBBIN not set"
echo " Check the OpenFOAM entries in your dot-files and source them."
exit 1
}
# Compile wmake support applications
(cd wmake/src && make)
# Compile wmake tools
(cd "${WM_DIR:-wmake}/src" && make)
# Compile ThirdParty libraries and applications
if [ -d "$WM_THIRD_PARTY_DIR" ]
@ -38,6 +43,15 @@ echo "Compile OpenFOAM applications"
echo
applications/Allwmake $targetType $*
# Additional components/modules
if [ -d "$WM_PROJECT_DIR/modules" ]
then
echo "========================================"
echo "Compile OpenFOAM modules"
echo
(cd $WM_PROJECT_DIR/modules 2>/dev/null && wmake -all)
fi
# Some summary information
echo
date "+%Y-%m-%d %H:%M:%S %z" 2>/dev/null || echo "date is unknown"

View File

@ -1,8 +1,23 @@
OpenFOAM-v1612+
OpenFOAM-1712
==================
Known Build Issues
==================
---------------------
Intel MPI (Gcc/Clang)
---------------------
Either I_MPI_ROOT or MPI_ROOT can be used to specify the Intel-MPI
installation directory path.
The ThirdParty build of ptscotch uses `mpiicc` for Intel-MPI
instead of the usual `mpicc`.
When gcc or clang are used, it is highly likely that the
I_MPI_CC environment variable also needs to be set accordingly.
See `mpiicc -help` for more information about environment variables.
--------------
Intel Compiler
--------------
@ -22,16 +37,15 @@ VTK
---
If using the runTimePostProcessing to create on-the-fly images, you
can either simply just compile ParaView-5.0.1 and these libraries will
be used.
can simply just compile ParaView and these libraries will be used.
If you elect to use a separate VTK compilation (for example for
off-screen rendering), it is advisable to reuse the VTK libraries that
are provided with ParaView-5.0.1, by making an appropriate symlink
are provided with ParaView by making an appropriate symlink
prior to using makeVTK. This doesn't just reduce disk-space, but works
much better than using the VTK-7.1.0.tar file.
much better than using the VTK tar file.
Using runTimePostProcessing with the 'plain' VTK-7.1.0 libraries does
Using runTimePostProcessing with the 'plain' VTK libraries does
generally work, but does not exit cleanly:
symbol lookup error: .../linux64Gcc/VTK-7.1.0/lib/libvtkCommonExecutionModel-7.1.so.1:
@ -60,4 +74,48 @@ there are also minimum gcc/g++ requirements there:
If your system compiler is too old to build the minimum required gcc or
clang/llvm, it is just simply too old.
---------------------------------
ThirdParty clang without gmp/mpfr
---------------------------------
If using ThirdParty clang without gmp/mpfr, the ThirdParty makeCGAL
script will need to be run manually and specify that there is no
gmp/mpfr. Eg,
cd $WM_THIRD_PARTY_DIR
./makeCGAL gmp-none mpfr-none
Subequent compilation with Allwmake will now run largely without any
problems, except that the components linking against CGAL
(foamyMesh and surfaceBooleanFeatures) will also try to link against
a nonexistent mpfr library. As a workaround, the link-dependency can
be removed in wmake/rules/General/CGAL :
CGAL_LIBS = \
-L$(BOOST_ARCH_PATH)/lib \
-L$(BOOST_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
-L$(CGAL_ARCH_PATH)/lib \
-L$(CGAL_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \
-lCGAL
This is a temporary inconvenience until a more robust solution is found.
-------------------------
Building with spack
-------------------------
If you are building with spack, note that the depends_on for paraview
resolves poorly. The +qt dependency (for building the reader module)
may need to be specified as a preference by including the following in
your `~/.spack/packages.yaml` file:
packages:
paraview:
variants: +qt
It appears that spack will otherwise ignore any paraview+qt version
and attempt to install a paraview~qt version instead.
--

View File

@ -1,7 +1,8 @@
# About OpenFOAM
OpenFOAM is a free, open source CFD software [released and developed primarily by OpenCFD Ltd](http://www.openfoam.com) since 2004released and developed primarily by. It has a large user base across most areas of engineering and science, from both commercial and academic organisations. OpenFOAM has an extensive range of features to solve anything from complex fluid flows involving chemical reactions, turbulence and heat transfer, to acoustics, solid mechanics and electromagnetics. [More...](http://www.openfoam.com/documentation)
OpenFOAM is a free, open source CFD software [released and developed primarily by OpenCFD Ltd](http://www.openfoam.com) since 2004. It has a large user base across most areas of engineering and science, from both commercial and academic organisations. OpenFOAM has an extensive range of features to solve anything from complex fluid flows involving chemical reactions, turbulence and heat transfer, to acoustics, solid mechanics and electromagnetics. [More...](http://www.openfoam.com/documentation)
OpenFOAM+ is professionally released every six months to include customer sponsored developments and contributions from the community, including the OpenFOAM Foundation. Releases designated OpenFOAM+ contain several man years of client-sponsored developments of which much has been transferred to, but not released in the OpenFOAM Foundation branch.
OpenFOAM is professionally released every six months to include customer sponsored developments and contributions from the community - individual and group contributors, fork re-integrations including from FOAM-extend and OpenFOAM Foundation Ltd - in this Official Release sanctioned by the OpenFOAM Worldwide Trademark Owner aiming towards one OpenFOAM.
# Copyright
@ -9,11 +10,11 @@ OpenFOAM is free software: you can redistribute it and/or modify it under the te
# OpenFOAM Trademark
OpenCFD Ltd grants use of the OpenFOAM trademark by Third Parties on a licence basis. ESI Group and the OpenFOAM Foundation Ltd are currently permitted to use the trademark. For information on trademark use, please refer to the [trademark policy guidelines](http://www.openfoam.com/legal/trademark-policy.php).
OpenCFD Ltd grants use of its OpenFOAM trademark by Third Parties on a licence basis. ESI Group and OpenFOAM Foundation Ltd are currently permitted to use the Name and agreed Domain Name. For information on trademark use, please refer to the [trademark policy guidelines](http://www.openfoam.com/legal/trademark-policy.php).
Please [contact OpenCFD](http://www.openfoam.com/contact) if you have any questions on the use of the OpenFOAM trademark.
Violations of the Trademark are continuously monitored, and will be duly prosecuted.
Violations of the Trademark are continuously monitored, and will be duly prosecuted.
# Useful Links
@ -23,4 +24,4 @@ Violations of the Trademark are continuously monitored, and will be duly prosecu
- [OpenFOAM Community](http://www.openfoam.com/community/)
- [Contacting OpenCFD](http://www.openfoam.com/contact/)
Copyright 2016 OpenCFD Ltd
Copyright 2016-2017 OpenCFD Ltd

View File

@ -1,21 +1,20 @@
#!/bin/sh
cd ${0%/*} || exit 1 # Run from this directory
# Run from OPENFOAM applications/ directory only
cd ${0%/*} && wmakeCheckPwd "$WM_PROJECT_DIR/applications" 2>/dev/null || {
echo "Error (${0##*/}) : not located in \$WM_PROJECT_DIR/applications"
echo " Check your OpenFOAM environment and installation"
exit 1
}
[ -d "$WM_PROJECT_DIR" -a -f "$WM_PROJECT_DIR/etc/bashrc" ] || {
echo "Error (${0##*/}) : WM_PROJECT_DIR appears to be incorrect"
echo " Check your OpenFOAM environment and installation"
exit 1
}
# Parse arguments for library compilation
. $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
wmakeCheckPwd "$WM_PROJECT_DIR/applications" || {
echo "Allwmake error: Current directory is not \$WM_PROJECT_DIR/applications"
echo " The environment variables are inconsistent with the installation."
echo " Check the OpenFOAM entries in your dot-files and source them."
exit 1
}
[ -n "$FOAM_EXT_LIBBIN" ] || {
echo "Allwmake error: FOAM_EXT_LIBBIN not set"
echo " Check the OpenFOAM entries in your dot-files and source them."
exit 1
}
#------------------------------------------------------------------------------
wmake -all $targetType solvers
wmake -all $targetType utilities

View File

@ -4,4 +4,5 @@ EXE_INC = \
EXE_LIBS = \
-lfiniteVolume \
-lfvOptions \
-lmeshTools

View File

@ -1,37 +1,39 @@
Info<< "Reading field T\n" << endl;
Info<< "Reading field T\n" << endl;
volScalarField T
volScalarField T
(
IOobject
(
IOobject
(
"T",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
"T",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
Info<< "Reading transportProperties\n" << endl;
Info<< "Reading transportProperties\n" << endl;
IOdictionary transportProperties
IOdictionary transportProperties
(
IOobject
(
IOobject
(
"transportProperties",
runTime.constant(),
mesh,
IOobject::MUST_READ_IF_MODIFIED,
IOobject::NO_WRITE
)
);
"transportProperties",
runTime.constant(),
mesh,
IOobject::MUST_READ_IF_MODIFIED,
IOobject::NO_WRITE
)
);
Info<< "Reading diffusivity DT\n" << endl;
Info<< "Reading diffusivity DT\n" << endl;
dimensionedScalar DT
(
transportProperties.lookup("DT")
);
dimensionedScalar DT
(
"DT",
dimArea/dimTime,
transportProperties
);

View File

@ -0,0 +1,3 @@
laplacianDyMFoam.C
EXE = $(FOAM_APPBIN)/overLaplacianDyMFoam

View File

@ -0,0 +1,8 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/overset/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude
EXE_LIBS = \
-loverset

View File

@ -0,0 +1,53 @@
Info<< "Reading field T\n" << endl;
volScalarField T
(
IOobject
(
"T",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
// Add overset specific interpolations
{
dictionary oversetDict;
oversetDict.add("T", true);
const_cast<dictionary&>
(
mesh.schemesDict()
).add
(
"oversetInterpolationRequired",
oversetDict,
true
);
}
Info<< "Reading transportProperties\n" << endl;
IOdictionary transportProperties
(
IOobject
(
"transportProperties",
runTime.constant(),
mesh,
IOobject::MUST_READ_IF_MODIFIED,
IOobject::NO_WRITE
)
);
Info<< "Reading diffusivity DT\n" << endl;
dimensionedScalar DT
(
transportProperties.lookup("DT")
);

View File

@ -0,0 +1,110 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
laplacianFoam
Group
grpBasicSolvers
Description
Laplace equation solver for a scalar quantity.
\heading Solver details
The solver is applicable to, e.g. for thermal diffusion in a solid. The
equation is given by:
\f[
\ddt{T} = \div \left( D_T \grad T \right)
\f]
Where:
\vartable
T | Scalar field which is solved for, e.g. temperature
D_T | Diffusion coefficient
\endvartable
\heading Required fields
\plaintable
T | Scalar field which is solved for, e.g. temperature
\endplaintable
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "fvOptions.H"
#include "simpleControl.H"
#include "dynamicFvMesh.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
#include "setRootCase.H"
#include "createTime.H"
#include "createNamedDynamicFvMesh.H"
simpleControl simple(mesh);
#include "createFields.H"
#include "createFvOptions.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nCalculating temperature distribution\n" << endl;
while (simple.loop())
{
Info<< "Time = " << runTime.timeName() << nl << endl;
mesh.update();
while (simple.correctNonOrthogonal())
{
fvScalarMatrix TEqn
(
fvm::ddt(T) - fvm::laplacian(DT, T)
==
fvOptions(T)
);
fvOptions.constrain(TEqn);
TEqn.solve();
fvOptions.correct(T);
}
#include "write.H"
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
}
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -0,0 +1,46 @@
if (runTime.outputTime())
{
volVectorField gradT(fvc::grad(T));
volScalarField gradTx
(
IOobject
(
"gradTx",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
gradT.component(vector::X)
);
volScalarField gradTy
(
IOobject
(
"gradTy",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
gradT.component(vector::Y)
);
volScalarField gradTz
(
IOobject
(
"gradTz",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
gradT.component(vector::Z)
);
runTime.write();
}

View File

@ -0,0 +1,3 @@
potentialFoam.C
EXE = $(FOAM_APPBIN)/overPotentialFoam

View File

@ -0,0 +1,12 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/overset/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \
-lfiniteVolume \
-lmeshTools \
-lsampling \
-loverset

View File

@ -0,0 +1,9 @@
const dictionary& potentialFlow
(
mesh.solutionDict().subDict("potentialFlow")
);
const int nNonOrthCorr
(
potentialFlow.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0)
);

View File

@ -0,0 +1,146 @@
Info<< "Reading velocity field U\n" << endl;
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
// Initialise the velocity internal field to zero
U = dimensionedVector("0", U.dimensions(), Zero);
surfaceScalarField phi
(
IOobject
(
"phi",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
fvc::flux(U)
);
if (args.optionFound("initialiseUBCs"))
{
U.correctBoundaryConditions();
phi = fvc::flux(U);
}
// Construct a pressure field
// If it is available read it otherwise construct from the velocity BCs
// converting fixed-value BCs to zero-gradient and vice versa.
word pName("p");
// Update name of the pressure field from the command-line option
args.optionReadIfPresent("pName", pName);
// Infer the pressure BCs from the velocity
wordList pBCTypes
(
U.boundaryField().size(),
fixedValueFvPatchScalarField::typeName
);
forAll(U.boundaryField(), patchi)
{
if (U.boundaryField()[patchi].fixesValue())
{
pBCTypes[patchi] = zeroGradientFvPatchScalarField::typeName;
}
}
// Note that registerObject is false for the pressure field. The pressure
// field in this solver doesn't have a physical value during the solution.
// It shouldn't be looked up and used by sub models or boundary conditions.
Info<< "Constructing pressure field " << pName << nl << endl;
volScalarField p
(
IOobject
(
pName,
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::NO_WRITE,
false
),
mesh,
dimensionedScalar(pName, sqr(dimVelocity), 0),
pBCTypes
);
// Infer the velocity potential BCs from the pressure
wordList PhiBCTypes
(
p.boundaryField().size(),
zeroGradientFvPatchScalarField::typeName
);
forAll(p.boundaryField(), patchi)
{
if (p.boundaryField()[patchi].fixesValue())
{
PhiBCTypes[patchi] = fixedValueFvPatchScalarField::typeName;
}
}
Info<< "Constructing velocity potential field Phi\n" << endl;
volScalarField Phi
(
IOobject
(
"Phi",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::NO_WRITE
),
mesh,
dimensionedScalar("Phi", dimLength*dimVelocity, 0),
PhiBCTypes
);
label PhiRefCell = 0;
scalar PhiRefValue = 0;
setRefCell
(
Phi,
potentialFlow.dict(),
PhiRefCell,
PhiRefValue
);
mesh.setFluxRequired(Phi.name());
#include "createMRF.H"
// Add overset specific interpolations
{
dictionary oversetDict;
oversetDict.add("Phi", true);
oversetDict.add("U", true);
const_cast<dictionary&>
(
mesh.schemesDict()
).add
(
"oversetInterpolationRequired",
oversetDict,
true
);
}
// Mask field for zeroing out contributions on hole cells
#include "createCellMask.H"
// Create bool field with interpolated cells
#include "createInterpolatedCells.H"

View File

@ -0,0 +1,260 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2017 OpenCFD Ltd
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
potentialFoam
Group
grpBasicSolvers
Description
Potential flow solver which solves for the velocity potential, to
calculate the flux-field, from which the velocity field is obtained by
reconstructing the flux.
\heading Solver details
The potential flow solution is typically employed to generate initial fields
for full Navier-Stokes codes. The flow is evolved using the equation:
\f[
\laplacian \Phi = \div(\vec{U})
\f]
Where:
\vartable
\Phi | Velocity potential [m2/s]
\vec{U} | Velocity [m/s]
\endvartable
The corresponding pressure field could be calculated from the divergence
of the Euler equation:
\f[
\laplacian p + \div(\div(\vec{U}\otimes\vec{U})) = 0
\f]
but this generates excessive pressure variation in regions of large
velocity gradient normal to the flow direction. A better option is to
calculate the pressure field corresponding to velocity variation along the
stream-lines:
\f[
\laplacian p + \div(\vec{F}\cdot\div(\vec{U}\otimes\vec{U})) = 0
\f]
where the flow direction tensor \f$\vec{F}\f$ is obtained from
\f[
\vec{F} = \hat{\vec{U}}\otimes\hat{\vec{U}}
\f]
\heading Required fields
\plaintable
U | Velocity [m/s]
\endplaintable
\heading Optional fields
\plaintable
p | Kinematic pressure [m2/s2]
Phi | Velocity potential [m2/s]
| Generated from p (if present) or U if not present
\endplaintable
\heading Options
\plaintable
-writep | write the Euler pressure
-writePhi | Write the final velocity potential
-initialiseUBCs | Update the velocity boundaries before solving for Phi
\endplaintable
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "pisoControl.H"
#include "dynamicFvMesh.H"
#include "cellCellStencilObject.H"
#include "localMin.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
argList::addOption
(
"pName",
"pName",
"Name of the pressure field"
);
argList::addBoolOption
(
"initialiseUBCs",
"Initialise U boundary conditions"
);
argList::addBoolOption
(
"writePhi",
"Write the final velocity potential field"
);
argList::addBoolOption
(
"writep",
"Calculate and write the Euler pressure field"
);
argList::addBoolOption
(
"withFunctionObjects",
"execute functionObjects"
);
#include "setRootCase.H"
#include "createTime.H"
#include "createNamedDynamicFvMesh.H"
pisoControl potentialFlow(mesh, "potentialFlow");
#include "createFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< nl << "Calculating potential flow" << endl;
mesh.update();
surfaceScalarField faceMask(localMin<scalar>(mesh).interpolate(cellMask));
// Since solver contains no time loop it would never execute
// function objects so do it ourselves
runTime.functionObjects().start();
MRF.makeRelative(phi);
adjustPhi(phi, U, p);
// Non-orthogonal velocity potential corrector loop
while (potentialFlow.correct())
{
phi = fvc::flux(U);
while (potentialFlow.correctNonOrthogonal())
{
fvScalarMatrix PhiEqn
(
fvm::laplacian(faceMask, Phi)
==
fvc::div(phi)
);
PhiEqn.setReference(PhiRefCell, PhiRefValue);
PhiEqn.solve();
if (potentialFlow.finalNonOrthogonalIter())
{
phi -= PhiEqn.flux();
}
}
MRF.makeAbsolute(phi);
Info<< "Continuity error = "
<< mag(fvc::div(phi))().weightedAverage(mesh.V()).value()
<< endl;
U = fvc::reconstruct(phi);
U.correctBoundaryConditions();
Info<< "Interpolated velocity error = "
<< (sqrt(sum(sqr(fvc::flux(U) - phi)))/sum(mesh.magSf())).value()
<< endl;
}
// Write U and phi
U.write();
phi.write();
// Optionally write Phi
if (args.optionFound("writePhi"))
{
Phi.write();
}
// Calculate the pressure field from the Euler equation
if (args.optionFound("writep"))
{
Info<< nl << "Calculating approximate pressure field" << endl;
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell
(
p,
potentialFlow.dict(),
pRefCell,
pRefValue
);
// Calculate the flow-direction filter tensor
volScalarField magSqrU(magSqr(U));
volSymmTensorField F(sqr(U)/(magSqrU + SMALL*average(magSqrU)));
// Calculate the divergence of the flow-direction filtered div(U*U)
// Filtering with the flow-direction generates a more reasonable
// pressure distribution in regions of high velocity gradient in the
// direction of the flow
volScalarField divDivUU
(
fvc::div
(
F & fvc::div(phi, U),
"div(div(phi,U))"
)
);
// Solve a Poisson equation for the approximate pressure
while (potentialFlow.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::laplacian(p) + divDivUU
);
pEqn.setReference(pRefCell, pRefValue);
pEqn.solve();
}
p.write();
}
runTime.functionObjects().end();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -1,55 +1,57 @@
Info<< "Reading field T\n" << endl;
Info<< "Reading field T\n" << endl;
volScalarField T
volScalarField T
(
IOobject
(
IOobject
(
"T",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
"T",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
Info<< "Reading field U\n" << endl;
Info<< "Reading field U\n" << endl;
volVectorField U
volVectorField U
(
IOobject
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
Info<< "Reading transportProperties\n" << endl;
Info<< "Reading transportProperties\n" << endl;
IOdictionary transportProperties
IOdictionary transportProperties
(
IOobject
(
IOobject
(
"transportProperties",
runTime.constant(),
mesh,
IOobject::MUST_READ_IF_MODIFIED,
IOobject::NO_WRITE
)
);
"transportProperties",
runTime.constant(),
mesh,
IOobject::MUST_READ_IF_MODIFIED,
IOobject::NO_WRITE
)
);
Info<< "Reading diffusivity DT\n" << endl;
Info<< "Reading diffusivity DT\n" << endl;
dimensionedScalar DT
(
transportProperties.lookup("DT")
);
dimensionedScalar DT
(
"DT",
dimArea/dimTime,
transportProperties
);
#include "createPhi.H"
#include "createPhi.H"

View File

@ -15,8 +15,8 @@ EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/triSurface/lnInclude \
-I$(LIB_SRC)/surfMesh/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude
EXE_LIBS = \
-lengine \

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -79,7 +79,7 @@ Foam::PDRDragModel::~PDRDragModel()
bool Foam::PDRDragModel::read(const dictionary& PDRProperties)
{
PDRDragModelCoeffs_ = PDRProperties.subDict(type() + "Coeffs");
PDRDragModelCoeffs_ = PDRProperties.optionalSubDict(type() + "Coeffs");
PDRDragModelCoeffs_.lookup("drag") >> on_;

View File

@ -40,15 +40,14 @@ Foam::autoPtr<Foam::PDRDragModel> Foam::PDRDragModel::New
Info<< "Selecting flame-wrinkling model " << modelType << endl;
dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find(modelType);
auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
if (cstrIter == dictionaryConstructorTablePtr_->end())
if (!cstrIter.found())
{
FatalErrorInFunction
<< "Unknown PDRDragModel type "
<< modelType << nl << nl
<< "Valid PDRDragModels are : " << endl
<< "Valid PDRDragModel types :" << endl
<< dictionaryConstructorTablePtr_->sortedToc()
<< exit(FatalError);
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -67,7 +67,7 @@ Foam::XiEqModel::~XiEqModel()
bool Foam::XiEqModel::read(const dictionary& XiEqProperties)
{
XiEqModelCoeffs_ = XiEqProperties.subDict(type() + "Coeffs");
XiEqModelCoeffs_ = XiEqProperties.optionalSubDict(type() + "Coeffs");
return true;
}

View File

@ -39,15 +39,14 @@ Foam::autoPtr<Foam::XiEqModel> Foam::XiEqModel::New
Info<< "Selecting flame-wrinkling model " << modelType << endl;
dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find(modelType);
auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
if (cstrIter == dictionaryConstructorTablePtr_->end())
if (!cstrIter.found())
{
FatalErrorInFunction
<< "Unknown XiEqModel type "
<< modelType << nl << nl
<< "Valid XiEqModels are : " << endl
<< "Valid XiEqModel types :" << endl
<< dictionaryConstructorTablePtr_->sortedToc()
<< exit(FatalError);
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -67,7 +67,7 @@ Foam::XiGModel::~XiGModel()
bool Foam::XiGModel::read(const dictionary& XiGProperties)
{
XiGModelCoeffs_ = XiGProperties.subDict(type() + "Coeffs");
XiGModelCoeffs_ = XiGProperties.optionalSubDict(type() + "Coeffs");
return true;
}

View File

@ -39,15 +39,14 @@ Foam::autoPtr<Foam::XiGModel> Foam::XiGModel::New
Info<< "Selecting flame-wrinkling model " << modelType << endl;
dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find(modelType);
auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
if (cstrIter == dictionaryConstructorTablePtr_->end())
if (!cstrIter.found())
{
FatalErrorInFunction
<< "Unknown XiGModel type "
<< modelType << nl << nl
<< "Valid XiGModels are : " << endl
<< "Valid XiGModel types :" << endl
<< dictionaryConstructorTablePtr_->sortedToc()
<< exit(FatalError);
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -85,7 +85,7 @@ Foam::XiModel::~XiModel()
bool Foam::XiModel::read(const dictionary& XiProperties)
{
XiModelCoeffs_ = XiProperties.subDict(type() + "Coeffs");
XiModelCoeffs_ = XiProperties.optionalSubDict(type() + "Coeffs");
return true;
}

View File

@ -42,15 +42,14 @@ Foam::autoPtr<Foam::XiModel> Foam::XiModel::New
Info<< "Selecting flame-wrinkling model " << modelType << endl;
dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find(modelType);
auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
if (cstrIter == dictionaryConstructorTablePtr_->end())
if (!cstrIter.found())
{
FatalErrorInFunction
<< "Unknown XiModel type "
<< modelType << nl << nl
<< "Valid XiModels are : " << endl
<< "Valid XiModel types :" << endl
<< dictionaryConstructorTablePtr_->sortedToc()
<< exit(FatalError);
}

View File

@ -58,23 +58,6 @@ autoPtr<compressible::RASModel> turbulence
);
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt
(
IOobject
(
"dpdt",
runTime.timeName(),
mesh
),
mesh,
dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
);
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
Info<< "Creating the unstrained laminar flame speed\n" << endl;
autoPtr<laminarFlameSpeed> unstrainedLaminarFlameSpeed
(
@ -227,4 +210,8 @@ fields.add(thermo.he());
fields.add(thermo.heu());
flameWrinkling->addXi(fields);
#include "createDpdt.H"
#include "createK.H"
#include "createMRF.H"

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -80,7 +80,7 @@ Foam::laminarFlameSpeedModels::SCOPE::SCOPE
dict.lookup("fuelFile")
)
)()
).subDict(typeName + "Coeffs")
).optionalSubDict(typeName + "Coeffs")
),
LFL_(readScalar(coeffsDict_.lookup("lowerFlamabilityLimit"))),
UFL_(readScalar(coeffsDict_.lookup("upperFlamabilityLimit"))),

View File

@ -58,21 +58,6 @@ autoPtr<compressible::turbulenceModel> turbulence
)
);
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt
(
IOobject
(
"dpdt",
runTime.timeName(),
mesh
),
mesh,
dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
);
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
Info<< "Creating field Xi\n" << endl;
volScalarField Xi
@ -139,4 +124,8 @@ fields.add(b);
fields.add(thermo.he());
fields.add(thermo.heu());
#include "createDpdt.H"
#include "createK.H"
#include "createMRF.H"

View File

@ -42,7 +42,7 @@ Description
#include "OFstream.H"
#include "thermoPhysicsTypes.H"
#include "basicMultiComponentMixture.H"
#include "cellModeller.H"
#include "cellModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -54,4 +54,3 @@ Info<< "Creating base fields for time " << runTime.timeName() << endl;
T.write();
}

View File

@ -13,8 +13,7 @@ points[5] = vector(1, 0, 1);
points[6] = vector(1, 1, 1);
points[7] = vector(0, 1, 1);
const cellModel& hexa = *(cellModeller::lookup("hex"));
faceList faces = hexa.modelFaces();
faceList faces = cellModel::ref(cellModel::HEX).modelFaces();
fvMesh mesh
(
@ -25,7 +24,7 @@ fvMesh mesh
runTime,
IOobject::READ_IF_PRESENT
),
xferMove<Field<vector>>(points),
xferMove<pointField>(points),
faces.xfer(),
owner.xfer(),
neighbour.xfer()

View File

@ -1,6 +1,6 @@
runTime.write();
Info<< "Sh = " << Sh
Info<< "Qdot = " << Qdot
<< ", T = " << thermo.T()[0]
<< ", p = " << thermo.p()[0]
<< ", " << Y[0].name() << " = " << Y[0][0]
@ -8,4 +8,3 @@
post<< runTime.value() << token::TAB << thermo.T()[0] << token::TAB
<< thermo.p()[0] << endl;

View File

@ -3,4 +3,3 @@ if (adjustTimeStep)
runTime.setDeltaT(min(dtChem, maxDeltaT));
Info<< "deltaT = " << runTime.deltaT().value() << endl;
}

View File

@ -1,3 +1,3 @@
dtChem = chemistry.solve(runTime.deltaT().value());
scalar Sh = chemistry.Sh()()[0]/rho[0];
integratedHeat += Sh*runTime.deltaT().value();
dtChem = chemistry.solve(runTime.deltaT().value());
scalar Qdot = chemistry.Qdot()()[0]/rho[0];
integratedHeat += Qdot*runTime.deltaT().value();

View File

@ -51,20 +51,8 @@ autoPtr<compressible::turbulenceModel> turbulence
)
);
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt
(
IOobject
(
"dpdt",
runTime.timeName(),
mesh
),
mesh,
dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
);
#include "createDpdt.H"
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
#include "createK.H"
#include "createMRF.H"

View File

@ -13,10 +13,7 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/solidChemistryModel/lnInclude \
-I$(LIB_SRC)/combustionModels/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/thermophysicalProperties/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \
@ -38,9 +35,6 @@ EXE_LIBS = \
-lspecie \
-lcompressibleTransportModels \
-lfluidThermophysicalModels \
-lsolidProperties \
-lsolidMixtureProperties \
-lthermophysicalFunctions \
-lreactionThermophysicalModels \
-lSLGThermo \
-lchemistryModel \

View File

@ -10,7 +10,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
);
{
combustion->correct();
dQ = combustion->dQ();
Qdot = combustion->Qdot();
volScalarField Yt(0.0*Y[0]);
forAll(Y, i)
@ -67,8 +67,8 @@ tmp<fv::convectionScheme<scalar>> mvConvection
)
- fvm::laplacian(turbulence->alphaEff(), he)
==
combustion->Sh()
+ radiation->Sh(thermo)
Qdot
+ radiation->Sh(thermo, he)
+ parcels.Sh(he)
+ surfaceFilm.Sh()
+ fvOptions(rho, he)

View File

@ -1,4 +1,4 @@
const volScalarField& psi = thermo.psi();
const volScalarField& T = thermo.T();
filmModelType& surfaceFilm = tsurfaceFilm();
regionModels::surfaceFilmModel& surfaceFilm = tsurfaceFilm();
const label inertIndex(composition.species()[inertSpecie]);

View File

@ -131,36 +131,23 @@ Switch solvePyrolysisRegion
additionalControlsDict.lookupOrDefault<bool>("solvePyrolysisRegion", true)
);
volScalarField dQ
volScalarField Qdot
(
IOobject
(
"dQ",
"Qdot",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0)
);
#include "createDpdt.H"
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt
(
IOobject
(
"dpdt",
runTime.timeName(),
mesh
),
mesh,
dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
);
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
#include "createK.H"
#include "createClouds.H"
#include "createSurfaceFilmModel.H"

View File

@ -1,5 +1,6 @@
Info<< "\nConstructing surface film model" << endl;
typedef regionModels::surfaceFilmModels::surfaceFilmModel filmModelType;
autoPtr<filmModelType> tsurfaceFilm(filmModelType::New(mesh, g));
autoPtr<regionModels::surfaceFilmModel> tsurfaceFilm
(
regionModels::surfaceFilmModel::New(mesh, g)
);

View File

@ -17,7 +17,7 @@
)
- fvm::laplacian(turbulence->alphaEff(), he)
==
reaction->Sh()
Qdot
+ fvOptions(rho, he)
);

View File

@ -11,7 +11,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
{
reaction->correct();
dQ = reaction->dQ();
Qdot = reaction->Qdot();
volScalarField Yt(0.0*Y[0]);
forAll(Y, i)

View File

@ -52,27 +52,7 @@ volScalarField& p = thermo.p();
#include "compressibleCreatePhi.H"
dimensionedScalar rhoMax
(
dimensionedScalar::lookupOrDefault
(
"rhoMax",
pimple.dict(),
dimDensity,
GREAT
)
);
dimensionedScalar rhoMin
(
dimensionedScalar::lookupOrDefault
(
"rhoMin",
pimple.dict(),
dimDensity,
0
)
);
pressureControl pressureControl(p, rho, pimple.dict(), false);
mesh.setFluxRequired(p.name());
@ -91,24 +71,6 @@ autoPtr<compressible::turbulenceModel> turbulence
// Set the turbulence into the reaction model
reaction->setTurbulence(turbulence());
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt
(
IOobject
(
"dpdt",
runTime.timeName(),
mesh
),
mesh,
dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
);
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
forAll(Y, i)
@ -117,18 +79,22 @@ forAll(Y, i)
}
fields.add(thermo.he());
volScalarField dQ
volScalarField Qdot
(
IOobject
(
"dQ",
"Qdot",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0)
);
#include "createDpdt.H"
#include "createK.H"
#include "createMRF.H"

View File

@ -1,7 +1,4 @@
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
@ -87,19 +84,18 @@ else
// Explicitly relax pressure for momentum corrector
p.relax();
// Recalculate density from the relaxed pressure
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
Info<< "rho max/min : " << max(rho).value()
<< " " << min(rho).value() << endl;
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
if (pressureControl.limit(p))
{
p.correctBoundaryConditions();
}
rho = thermo.rho();
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);

View File

@ -1,7 +1,4 @@
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
volScalarField rAU(1.0/UEqn.A());
volScalarField rAtU(1.0/(1.0/rAU - UEqn.H1()));
@ -109,19 +106,13 @@ U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
if (pressureControl.limit(p))
{
p.correctBoundaryConditions();
rho = thermo.rho();
}
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
// Recalculate density from the relaxed pressure
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
if (!pimple.transonic())
{
rho.relax();
}
Info<< "rho max/min : " << max(rho).value() << " " << min(rho).value() << endl;

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -37,6 +37,7 @@ Description
#include "psiCombustionModel.H"
#include "multivariateScheme.H"
#include "pimpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
@ -114,6 +115,8 @@ int main(int argc, char *argv[])
}
}
rho = thermo.rho();
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"

View File

@ -92,23 +92,6 @@ volScalarField p_rgh
// Force p_rgh to be consistent with p
p_rgh = p - rho*gh;
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt
(
IOobject
(
"dpdt",
runTime.timeName(),
mesh
),
mesh,
dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
);
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
forAll(Y, i)
@ -117,18 +100,22 @@ forAll(Y, i)
}
fields.add(thermo.he());
volScalarField dQ
volScalarField Qdot
(
IOobject
(
"dQ",
"Qdot",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0)
);
#include "createDpdt.H"
#include "createK.H"
#include "createMRF.H"

View File

@ -1,76 +1,74 @@
rho = thermo.rho();
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution
const volScalarField psip0(psi*p);
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
surfaceScalarField phiHbyA
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
)
+ phig
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p_rgh, rho, U, phiHbyA, rhorAUf, MRF);
fvScalarMatrix p_rghDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
+ fvc::div(phiHbyA)
==
fvOptions(psi, p_rgh, rho.name())
);
while (pimple.correctNonOrthogonal())
{
rho = thermo.rho();
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution - done in 2 parts. Part 1:
thermo.rho() -= psi*p;
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());
surfaceScalarField phiHbyA
fvScalarMatrix p_rghEqn
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
)
+ phig
p_rghDDtEqn
- fvm::laplacian(rhorAUf, p_rgh)
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
// Update the pressure BCs to ensure flux consistency
constrainPressure(p_rgh, rho, U, phiHbyA, rhorAUf, MRF);
fvScalarMatrix p_rghDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
+ fvc::div(phiHbyA)
==
fvOptions(psi, p_rgh, rho.name())
);
while (pimple.correctNonOrthogonal())
if (pimple.finalNonOrthogonalIter())
{
fvScalarMatrix p_rghEqn
(
p_rghDDtEqn
- fvm::laplacian(rhorAUf, p_rgh)
);
// Calculate the conservative fluxes
phi = phiHbyA + p_rghEqn.flux();
p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
// Explicitly relax pressure for momentum corrector
p_rgh.relax();
if (pimple.finalNonOrthogonalIter())
{
// Calculate the conservative fluxes
phi = phiHbyA + p_rghEqn.flux();
// Explicitly relax pressure for momentum corrector
p_rgh.relax();
// Correct the momentum source with the pressure gradient flux
// calculated from the relaxed pressure
U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rhorAUf);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
}
// Correct the momentum source with the pressure gradient flux
// calculated from the relaxed pressure
U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rhorAUf);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
}
p = p_rgh + rho*gh;
// Second part of thermodynamic density update
thermo.rho() += psi*p;
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"
}
p = p_rgh + rho*gh;
// Thermodynamic density update
thermo.correctRho(psi*p - psip0);
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"

View File

@ -52,6 +52,8 @@ volScalarField& p = thermo.p();
#include "compressibleCreatePhi.H"
pressureControl pressureControl(p, rho, pimple.dict(), false);
mesh.setFluxRequired(p.name());
@ -70,24 +72,6 @@ autoPtr<compressible::turbulenceModel> turbulence
// Set the turbulence into the reaction model
reaction->setTurbulence(turbulence());
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt
(
IOobject
(
"dpdt",
runTime.timeName(),
mesh
),
mesh,
dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
);
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
forAll(Y, i)
@ -96,18 +80,45 @@ forAll(Y, i)
}
fields.add(thermo.he());
volScalarField dQ
volScalarField Qdot
(
IOobject
(
"dQ",
"Qdot",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
dimensionedScalar("Qdot", dimEnergy/dimVolume/dimTime, 0.0)
);
#include "createDpdt.H"
#include "createK.H"
#include "createMRF.H"
dimensionedScalar rhoMax
(
dimensionedScalar::lookupOrDefault
(
"rhoMax",
pimple.dict(),
dimDensity,
GREAT
)
);
dimensionedScalar rhoMin
(
dimensionedScalar::lookupOrDefault
(
"rhoMin",
pimple.dict(),
dimDensity,
0
)
);

View File

@ -1,109 +0,0 @@
{
rho = thermo.rho();
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution - done in 2 parts. Part 1:
thermo.rho() -= psi*p;
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
if (pimple.transonic())
{
surfaceScalarField phiHbyA
(
"phiHbyA",
(
fvc::flux(HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho)
)
);
MRF.makeRelative(phiHbyA);
surfaceScalarField phid("phid", fvc::interpolate(thermo.psi())*phiHbyA);
phiHbyA *= fvc::interpolate(rho);
fvScalarMatrix pDDtEqn
(
fvc::ddt(rho) + fvc::div(phiHbyA)
+ correction(psi*fvm::ddt(p) + fvm::div(phid, p))
);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
pDDtEqn
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
else
{
surfaceScalarField phiHbyA
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
)
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
fvScalarMatrix pDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA)
==
fvOptions(psi, p, rho.name())
);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
pDDtEqn
- fvm::laplacian(rhorAUf, p)
);
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
// Second part of thermodynamic density update
thermo.rho() += psi*p;
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -38,6 +38,7 @@ Description
#include "turbulentFluidThermoModel.H"
#include "multivariateScheme.H"
#include "pimpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
@ -100,7 +101,14 @@ int main(int argc, char *argv[])
// --- Pressure corrector loop
while (pimple.correct())
{
#include "pEqn.H"
if (pimple.consistent())
{
#include "../../../compressible/rhoPimpleFoam/pcEqn.H"
}
else
{
#include "../../../compressible/rhoPimpleFoam/pEqn.H"
}
}
if (pimple.turbCorr())

View File

@ -43,13 +43,16 @@ License
// Damping coefficient (1-0)
scalar rDeltaTDampingCoeff
(
pimpleDict.lookupOrDefault<scalar>("rDeltaTDampingCoeff", 1)
pimpleDict.lookupOrDefault<scalar>("rDeltaTDampingCoeff", 1.0)
);
// Maximum change in cell temperature per iteration
// (relative to previous value)
scalar alphaTemp(pimpleDict.lookupOrDefault("alphaTemp", 0.05));
// Maximum change in cell concentration per iteration
// (relative to reference value)
scalar alphaY(pimpleDict.lookupOrDefault("alphaY", 1.0));
Info<< "Time scales min/max:" << endl;
@ -68,34 +71,89 @@ License
rDeltaT.max(1/maxDeltaT);
Info<< " Flow = "
<< gMin(1/rDeltaT.primitiveField()) << ", "
<< gMax(1/rDeltaT.primitiveField()) << endl;
<< 1/gMax(rDeltaT.primitiveField()) << ", "
<< 1/gMin(rDeltaT.primitiveField()) << endl;
}
// Reaction source time scale
if (alphaTemp < 1.0)
// Heat release rate time scale
if (alphaTemp < 1)
{
volScalarField::Internal rDeltaTT
(
mag(reaction->Sh())/(alphaTemp*rho*thermo.Cp()*T)
mag(Qdot)/(alphaTemp*rho*thermo.Cp()*T)
);
Info<< " Temperature = "
<< gMin(1/(rDeltaTT.field() + VSMALL)) << ", "
<< gMax(1/(rDeltaTT.field() + VSMALL)) << endl;
<< 1/(gMax(rDeltaTT.field()) + VSMALL) << ", "
<< 1/(gMin(rDeltaTT.field()) + VSMALL) << endl;
rDeltaT.ref() = max
rDeltaT.ref() = max(rDeltaT(), rDeltaTT);
}
// Reaction rate time scale
if (alphaY < 1)
{
dictionary Yref(pimpleDict.subDict("Yref"));
volScalarField::Internal rDeltaTY
(
rDeltaT(),
rDeltaTT
IOobject
(
"rDeltaTY",
runTime.timeName(),
mesh
),
mesh,
dimensionedScalar("rDeltaTY", rDeltaT.dimensions(), 0)
);
bool foundY = false;
forAll(Y, i)
{
if (i != inertIndex && composition.active(i))
{
volScalarField& Yi = Y[i];
if (Yref.found(Yi.name()))
{
foundY = true;
scalar Yrefi = readScalar(Yref.lookup(Yi.name()));
rDeltaTY.field() = max
(
mag
(
reaction->R(Yi)().source()
/((Yrefi*alphaY)*(rho*mesh.V()))
),
rDeltaTY
);
}
}
}
if (foundY)
{
Info<< " Composition = "
<< 1/(gMax(rDeltaTY.field()) + VSMALL) << ", "
<< 1/(gMin(rDeltaTY.field()) + VSMALL) << endl;
rDeltaT.ref() = max(rDeltaT(), rDeltaTY);
}
else
{
IOWarningIn(args.executable().c_str(), Yref)
<< "Cannot find any active species in Yref " << Yref
<< endl;
}
}
// Update tho boundary values of the reciprocal time-step
rDeltaT.correctBoundaryConditions();
// Spatially smooth the time scale field
if (rDeltaTSmoothingCoeff < 1.0)
if (rDeltaTSmoothingCoeff < 1)
{
fvc::smooth(rDeltaT, rDeltaTSmoothingCoeff);
}
@ -105,7 +163,7 @@ License
// - only increase at a fraction of old time scale
if
(
rDeltaTDampingCoeff < 1.0
rDeltaTDampingCoeff < 1
&& runTime.timeIndex() > runTime.startTimeIndex() + 1
)
{
@ -120,8 +178,8 @@ License
rDeltaT.correctBoundaryConditions();
Info<< " Overall = "
<< gMin(1/rDeltaT.primitiveField())
<< ", " << gMax(1/rDeltaT.primitiveField()) << endl;
<< 1/gMax(rDeltaT.primitiveField())
<< ", " << 1/gMin(rDeltaT.primitiveField()) << endl;
}

View File

@ -1,4 +1,3 @@
mixedFixedValueSlip/mixedFixedValueSlipFvPatchFields.C
U/maxwellSlipUFvPatchVectorField.C
T/smoluchowskiJumpTFvPatchScalarField.C
rho/fixedRhoFvPatchScalarField.C

View File

@ -209,16 +209,14 @@ void Foam::smoluchowskiJumpTFvPatchScalarField::write(Ostream& os) const
{
fvPatchScalarField::write(os);
writeEntryIfDifferent<word>(os, "U", "U", UName_);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "psi", "thermo:psi", psiName_);
writeEntryIfDifferent<word>(os, "mu", "thermo:mu", muName_);
os.writeEntryIfDifferent<word>("U", "U", UName_);
os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
os.writeEntryIfDifferent<word>("psi", "thermo:psi", psiName_);
os.writeEntryIfDifferent<word>("mu", "thermo:mu", muName_);
os.writeKeyword("accommodationCoeff")
<< accommodationCoeff_ << token::END_STATEMENT << nl;
os.writeEntry("accommodationCoeff", accommodationCoeff_);
Twall_.writeEntry("Twall", os);
os.writeKeyword("gamma")
<< gamma_ << token::END_STATEMENT << nl;
os.writeEntry("gamma", gamma_);
writeEntry("value", os);
}

View File

@ -32,8 +32,8 @@ SourceFiles
\*---------------------------------------------------------------------------*/
#ifndef smoluchowskiJumpTFvPatchScalarFields_H
#define smoluchowskiJumpTFvPatchScalarFields_H
#ifndef smoluchowskiJumpTFvPatchScalarField_H
#define smoluchowskiJumpTFvPatchScalarField_H
#include "mixedFvPatchFields.H"
@ -43,7 +43,7 @@ namespace Foam
{
/*---------------------------------------------------------------------------*\
Class smoluchowskiJumpTFvPatch Declaration
Class smoluchowskiJumpTFvPatchScalarField Declaration
\*---------------------------------------------------------------------------*/
class smoluchowskiJumpTFvPatchScalarField
@ -74,6 +74,7 @@ class smoluchowskiJumpTFvPatchScalarField
//- Heat capacity ratio (default 1.4)
scalar gamma_;
public:
//- Runtime type information

View File

@ -38,7 +38,7 @@ Foam::maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField
const DimensionedField<vector, volMesh>& iF
)
:
mixedFixedValueSlipFvPatchVectorField(p, iF),
partialSlipFvPatchVectorField(p, iF),
TName_("T"),
rhoName_("rho"),
psiName_("thermo:psi"),
@ -59,7 +59,7 @@ Foam::maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField
const fvPatchFieldMapper& mapper
)
:
mixedFixedValueSlipFvPatchVectorField(mspvf, p, iF, mapper),
partialSlipFvPatchVectorField(mspvf, p, iF, mapper),
TName_(mspvf.TName_),
rhoName_(mspvf.rhoName_),
psiName_(mspvf.psiName_),
@ -79,7 +79,7 @@ Foam::maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField
const dictionary& dict
)
:
mixedFixedValueSlipFvPatchVectorField(p, iF),
partialSlipFvPatchVectorField(p, iF),
TName_(dict.lookupOrDefault<word>("T", "T")),
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
psiName_(dict.lookupOrDefault<word>("psi", "thermo:psi")),
@ -132,7 +132,7 @@ Foam::maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField
const DimensionedField<vector, volMesh>& iF
)
:
mixedFixedValueSlipFvPatchVectorField(mspvf, iF),
partialSlipFvPatchVectorField(mspvf, iF),
TName_(mspvf.TName_),
rhoName_(mspvf.rhoName_),
psiName_(mspvf.psiName_),
@ -193,25 +193,23 @@ void Foam::maxwellSlipUFvPatchVectorField::updateCoeffs()
refValue() -= C1/prho*transform(I - n*n, (n & ptauMC));
}
mixedFixedValueSlipFvPatchVectorField::updateCoeffs();
partialSlipFvPatchVectorField::updateCoeffs();
}
void Foam::maxwellSlipUFvPatchVectorField::write(Ostream& os) const
{
fvPatchVectorField::write(os);
writeEntryIfDifferent<word>(os, "T", "T", TName_);
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
writeEntryIfDifferent<word>(os, "psi", "thermo:psi", psiName_);
writeEntryIfDifferent<word>(os, "mu", "thermo:mu", muName_);
writeEntryIfDifferent<word>(os, "tauMC", "tauMC", tauMCName_);
os.writeEntryIfDifferent<word>("T", "T", TName_);
os.writeEntryIfDifferent<word>("rho", "rho", rhoName_);
os.writeEntryIfDifferent<word>("psi", "thermo:psi", psiName_);
os.writeEntryIfDifferent<word>("mu", "thermo:mu", muName_);
os.writeEntryIfDifferent<word>("tauMC", "tauMC", tauMCName_);
os.writeKeyword("accommodationCoeff")
<< accommodationCoeff_ << token::END_STATEMENT << nl;
os.writeEntry("accommodationCoeff", accommodationCoeff_);
Uwall_.writeEntry("Uwall", os);
os.writeKeyword("thermalCreep")
<< thermalCreep_ << token::END_STATEMENT << nl;
os.writeKeyword("curvature") << curvature_ << token::END_STATEMENT << nl;
os.writeEntry("thermalCreep", thermalCreep_);
os.writeEntry("curvature", curvature_);
refValue().writeEntry("refValue", os);
valueFraction().writeEntry("valueFraction", os);

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -36,7 +36,7 @@ SourceFiles
#ifndef maxwellSlipUFvPatchVectorField_H
#define maxwellSlipUFvPatchVectorField_H
#include "mixedFixedValueSlipFvPatchFields.H"
#include "partialSlipFvPatchFields.H"
#include "Switch.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -50,7 +50,7 @@ namespace Foam
class maxwellSlipUFvPatchVectorField
:
public mixedFixedValueSlipFvPatchVectorField
public partialSlipFvPatchVectorField
{
// Private data

View File

@ -1,196 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "mixedFixedValueSlipFvPatchField.H"
#include "symmTransformField.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
template<class Type>
Foam::mixedFixedValueSlipFvPatchField<Type>::mixedFixedValueSlipFvPatchField
(
const fvPatch& p,
const DimensionedField<Type, volMesh>& iF
)
:
transformFvPatchField<Type>(p, iF),
refValue_(p.size()),
valueFraction_(p.size(), 1.0)
{}
template<class Type>
Foam::mixedFixedValueSlipFvPatchField<Type>::mixedFixedValueSlipFvPatchField
(
const fvPatch& p,
const DimensionedField<Type, volMesh>& iF,
const dictionary& dict
)
:
transformFvPatchField<Type>(p, iF),
refValue_("refValue", dict, p.size()),
valueFraction_("valueFraction", dict, p.size())
{}
template<class Type>
Foam::mixedFixedValueSlipFvPatchField<Type>::mixedFixedValueSlipFvPatchField
(
const mixedFixedValueSlipFvPatchField<Type>& ptf,
const fvPatch& p,
const DimensionedField<Type, volMesh>& iF,
const fvPatchFieldMapper& mapper
)
:
transformFvPatchField<Type>(ptf, p, iF, mapper),
refValue_(ptf.refValue_, mapper),
valueFraction_(ptf.valueFraction_, mapper)
{}
template<class Type>
Foam::mixedFixedValueSlipFvPatchField<Type>::mixedFixedValueSlipFvPatchField
(
const mixedFixedValueSlipFvPatchField<Type>& ptf
)
:
transformFvPatchField<Type>(ptf),
refValue_(ptf.refValue_),
valueFraction_(ptf.valueFraction_)
{}
template<class Type>
Foam::mixedFixedValueSlipFvPatchField<Type>::mixedFixedValueSlipFvPatchField
(
const mixedFixedValueSlipFvPatchField<Type>& ptf,
const DimensionedField<Type, volMesh>& iF
)
:
transformFvPatchField<Type>(ptf, iF),
refValue_(ptf.refValue_),
valueFraction_(ptf.valueFraction_)
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class Type>
void Foam::mixedFixedValueSlipFvPatchField<Type>::autoMap
(
const fvPatchFieldMapper& m
)
{
Field<Type>::autoMap(m);
refValue_.autoMap(m);
valueFraction_.autoMap(m);
}
template<class Type>
void Foam::mixedFixedValueSlipFvPatchField<Type>::rmap
(
const fvPatchField<Type>& ptf,
const labelList& addr
)
{
transformFvPatchField<Type>::rmap(ptf, addr);
const mixedFixedValueSlipFvPatchField<Type>& dmptf =
refCast<const mixedFixedValueSlipFvPatchField<Type>>(ptf);
refValue_.rmap(dmptf.refValue_, addr);
valueFraction_.rmap(dmptf.valueFraction_, addr);
}
template<class Type>
Foam::tmp<Foam::Field<Type>>
Foam::mixedFixedValueSlipFvPatchField<Type>::snGrad() const
{
tmp<vectorField> nHat = this->patch().nf();
Field<Type> pif(this->patchInternalField());
return
(
valueFraction_*refValue_
+ (1.0 - valueFraction_)*transform(I - sqr(nHat), pif) - pif
)*this->patch().deltaCoeffs();
}
template<class Type>
void Foam::mixedFixedValueSlipFvPatchField<Type>::evaluate
(
const Pstream::commsTypes
)
{
if (!this->updated())
{
this->updateCoeffs();
}
vectorField nHat(this->patch().nf());
Field<Type>::operator=
(
valueFraction_*refValue_
+
(1.0 - valueFraction_)
*transform(I - nHat*nHat, this->patchInternalField())
);
transformFvPatchField<Type>::evaluate();
}
template<class Type>
Foam::tmp<Foam::Field<Type>>
Foam::mixedFixedValueSlipFvPatchField<Type>::snGradTransformDiag() const
{
vectorField nHat(this->patch().nf());
vectorField diag(nHat.size());
diag.replace(vector::X, mag(nHat.component(vector::X)));
diag.replace(vector::Y, mag(nHat.component(vector::Y)));
diag.replace(vector::Z, mag(nHat.component(vector::Z)));
return
valueFraction_*Type(pTraits<Type>::one)
+ (1.0 - valueFraction_)
*transformFieldMask<Type>(pow<vector, pTraits<Type>::rank>(diag));
}
template<class Type>
void Foam::mixedFixedValueSlipFvPatchField<Type>::write(Ostream& os) const
{
transformFvPatchField<Type>::write(os);
refValue_.writeEntry("refValue", os);
valueFraction_.writeEntry("valueFraction", os);
}
// ************************************************************************* //

View File

@ -117,8 +117,8 @@ void Foam::fixedRhoFvPatchScalarField::write(Ostream& os) const
{
fvPatchScalarField::write(os);
writeEntryIfDifferent<word>(os, "p", "p", this->pName_);
writeEntryIfDifferent<word>(os, "psi", "thermo:psi", psiName_);
os.writeEntryIfDifferent<word>("p", "p", pName_);
os.writeEntryIfDifferent<word>("psi", "thermo:psi", psiName_);
writeEntry("value", os);
}

View File

@ -113,6 +113,9 @@ int main(int argc, char *argv[])
phiv_pos -= mesh.phi();
phiv_neg -= mesh.phi();
}
// Note: extracted out the orientation so becomes unoriented
phiv_pos.setOriented(false);
phiv_neg.setOriented(false);
volScalarField c("c", sqrt(thermo.Cp()/thermo.Cv()*rPsi));
surfaceScalarField cSf_pos
@ -165,11 +168,12 @@ int main(int argc, char *argv[])
phi = aphiv_pos*rho_pos + aphiv_neg*rho_neg;
surfaceVectorField phiUp
(
(aphiv_pos*rhoU_pos + aphiv_neg*rhoU_neg)
+ (a_pos*p_pos + a_neg*p_neg)*mesh.Sf()
);
surfaceVectorField phiU(aphiv_pos*rhoU_pos + aphiv_neg*rhoU_neg);
// Note: reassembled orientation from the pos and neg parts so becomes
// oriented
phiU.setOriented(true);
surfaceVectorField phiUp(phiU + (a_pos*p_pos + a_neg*p_neg)*mesh.Sf());
surfaceScalarField phiEp
(
@ -182,7 +186,10 @@ int main(int argc, char *argv[])
// Make flux for pressure-work absolute
if (mesh.moving())
{
phiEp += mesh.phi()*(a_pos*p_pos + a_neg*p_neg);
surfaceScalarField phia(a_pos*p_pos + a_neg*p_neg);
phia.setOriented(true);
phiEp += mesh.phi()*phia;
}
volScalarField muEff("muEff", turbulence->muEff());
@ -219,7 +226,7 @@ int main(int argc, char *argv[])
fvc::interpolate(muEff)*mesh.magSf()*fvc::snGrad(U)
+ fvc::dotInterpolate(mesh.Sf(), tauMC)
)
& (a_pos*U_pos + a_neg*U_neg)
& (a_pos*U_pos + a_neg*U_neg)
);
solve
@ -269,4 +276,5 @@ int main(int argc, char *argv[])
return 0;
}
// ************************************************************************* //

View File

@ -93,7 +93,10 @@ int main(int argc, char *argv[])
surfaceScalarField p_neg("p_neg", rho_neg*rPsi_neg);
surfaceScalarField phiv_pos("phiv_pos", U_pos & mesh.Sf());
// Note: extracted out the orientation so becomes unoriented
phiv_pos.setOriented(false);
surfaceScalarField phiv_neg("phiv_neg", U_neg & mesh.Sf());
phiv_neg.setOriented(false);
volScalarField c("c", sqrt(thermo.Cp()/thermo.Cv()*rPsi));
surfaceScalarField cSf_pos
@ -101,6 +104,7 @@ int main(int argc, char *argv[])
"cSf_pos",
interpolate(c, pos, T.name())*mesh.magSf()
);
surfaceScalarField cSf_neg
(
"cSf_neg",
@ -112,6 +116,7 @@ int main(int argc, char *argv[])
"ap",
max(max(phiv_pos + cSf_pos, phiv_neg + cSf_neg), v_zero)
);
surfaceScalarField am
(
"am",
@ -160,11 +165,12 @@ int main(int argc, char *argv[])
phi = aphiv_pos*rho_pos + aphiv_neg*rho_neg;
surfaceVectorField phiUp
(
(aphiv_pos*rhoU_pos + aphiv_neg*rhoU_neg)
+ (a_pos*p_pos + a_neg*p_neg)*mesh.Sf()
);
surfaceVectorField phiU(aphiv_pos*rhoU_pos + aphiv_neg*rhoU_neg);
// Note: reassembled orientation from the pos and neg parts so becomes
// oriented
phiU.setOriented(true);
surfaceVectorField phiUp(phiU + (a_pos*p_pos + a_neg*p_neg)*mesh.Sf());
surfaceScalarField phiEp
(

View File

@ -0,0 +1,50 @@
{
volScalarField& he = thermo.he();
const tmp<volScalarField>& tCp = thermo.Cp();
const tmp<volScalarField>& tCv = thermo.Cv();
const volScalarField& Cp = tCp();
const volScalarField& Cv = tCv();
const scalar gamma = max(Cp/Cv).value();
if (mag(gamma - min(Cp/Cv).value()) > VSMALL)
{
notImplemented("gamma not constant in space");
}
const dictionary& thermoDict = thermo.subDict("mixture");
const dictionary& eosDict = thermoDict.subDict("equationOfState");
bool local = eosDict.lookupOrDefault<bool>("local", false);
// Evolve T as:
//
// T_1 = T_0 \frac{p}{p_0}^{\frac{\gamma - 1}{\gamma}}
if (!local)
{
const scalar T0 = readScalar(eosDict.lookup("T0"));
const scalar p0 = readScalar(eosDict.lookup("p0"));
he = thermo.he(p, pow(p/p0, (gamma - scalar(1))/gamma)*T0);
}
else
{
const volScalarField& T0 = T.oldTime();
const volScalarField& p0 = p.oldTime();
he = thermo.he(p, pow(p/p0, (gamma - scalar(1))/gamma)*T0);
}
thermo.correct();
psi = 1.0/((Cp - Cv)*T);
rho = thermo.rho();
rho.relax();
rho.writeMinMax(Info);
}

View File

@ -0,0 +1,3 @@
rhoPimpleAdiabaticFoam.C
EXE = $(FOAM_APPBIN)/rhoPimpleAdiabaticFoam

View File

@ -0,0 +1,20 @@
EXE_INC = \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/finiteVolume/cfdTools \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
EXE_LIBS = \
-lcompressibleTransportModels \
-lfluidThermophysicalModels \
-lspecie \
-lturbulenceModels \
-lcompressibleTurbulenceModels \
-lfiniteVolume \
-lmeshTools \
-lsampling \
-lfvOptions

View File

@ -0,0 +1,24 @@
// Solve the Momentum equation
MRF.correctBoundaryVelocity(U);
tmp<fvVectorMatrix> tUEqn
(
fvm::ddt(rho, U) + fvm::div(phi, U)
+ MRF.DDt(rho, U)
+ turbulence->divDevRhoReff(U)
==
fvOptions(rho, U)
);
fvVectorMatrix& UEqn = tUEqn.ref();
UEqn.relax();
fvOptions.constrain(UEqn);
if (pimple.momentumPredictor())
{
solve(UEqn == -fvc::grad(p));
fvOptions.correct(U);
}

View File

@ -0,0 +1,102 @@
Info<< "Reading thermophysical properties\n" << endl;
autoPtr<fluidThermo> pThermo
(
fluidThermo::New(mesh)
);
fluidThermo& thermo = pThermo();
thermo.validate(args.executable(), "h", "e");
volScalarField& p = thermo.p();
volScalarField& T = thermo.T();
volScalarField rho
(
IOobject
(
"rho",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
thermo.rho()
);
Info<< "Reading field U\n" << endl;
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
Info<< "Calculating face flux field phi\n" << endl;
surfaceScalarField phi
(
IOobject
(
"phi",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
linearInterpolate(rho)*linearInterpolate(U) & mesh.Sf()
);
Info<< "Calculating face flux field phiByRho\n" << endl;
surfaceScalarField phiByRho
(
IOobject
(
"phiByRho",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
phi/linearInterpolate(rho)
);
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence
(
compressible::turbulenceModel::New
(
rho,
U,
phi,
thermo
)
);
mesh.setFluxRequired(p.name());
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt
(
IOobject
(
"dpdt",
runTime.timeName(),
mesh
),
mesh,
dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
);
#include "createMRF.H"
Info<< "Creating compressibility field psi\n" << endl;
volScalarField psi("psi", 1.0/((thermo.Cp() - thermo.Cv())*T));
psi.oldTime() = 1.0/((thermo.Cp() - thermo.Cv())*T.oldTime());
psi.oldTime().oldTime() = 1.0/((thermo.Cp()-thermo.Cv())*T.oldTime().oldTime());

View File

@ -0,0 +1,95 @@
{
volScalarField rAU(1.0/UEqn.A());
volVectorField HbyA("HbyA", U);
HbyA = rAU*UEqn.H();
// Define coefficients and pseudo-velocities for RCM interpolation
// M[U] = AU - H = -grad(p)
// U = H/A - 1/A grad(p)
// H/A = U + 1/A grad(p)
surfaceScalarField rhorAUf
(
"rhorAUf",
fvc::interpolate(rho)/fvc::interpolate(UEqn.A())
);
surfaceVectorField rhoHbyAf
(
"rhoHbyAf",
fvc::interpolate(rho)*fvc::interpolate(U)
+ rhorAUf*fvc::interpolate(fvc::grad(p))
);
#include "resetBoundaries.H"
if (pimple.nCorrPISO() <= 1)
{
tUEqn.clear();
}
if (pimple.transonic())
{
FatalError
<< "\nTransonic option not available for " << args.executable()
<< exit(FatalError);
}
else
{
// Rhie & Chow interpolation (part 1)
surfaceScalarField phiHbyA
(
"phiHbyA",
(
(rhoHbyAf & mesh.Sf())
+ rhorAUf*fvc::interpolate(rho)*fvc::ddtCorr(U, phiByRho)
+ fvc::interpolate(rho)
* fvc::alphaCorr(U, phiByRho, pimple.finalInnerIter())
)
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Non-orthogonal pressure corrector loop
while (pimple.correctNonOrthogonal())
{
// Pressure corrector
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ fvc::div(phiHbyA)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
// Rhie & Chow interpolation (part 2)
if (pimple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
phiByRho = phi/fvc::interpolate(rho);
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"
// Explicitly relax pressure for momentum corrector
p.relax();
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
}
rho = thermo.rho();
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}

View File

@ -0,0 +1,25 @@
{
// Keep standard formulation on domain boundaries to ensure compatibility
// with existing boundary conditions
const Foam::FieldField<Foam::fvsPatchField, scalar> rhorAUf_orig
(
fvc::interpolate(rho.boundaryField()*rAU.boundaryField())
);
const Foam::FieldField<Foam::fvsPatchField, vector> rhoHbyA_orig
(
fvc::interpolate(rho.boundaryField()*HbyA.boundaryField())
);
surfaceScalarField::Boundary& rhorAUfbf = rhorAUf.boundaryFieldRef();
surfaceVectorField::Boundary& rhoHbyAfbf = rhoHbyAf.boundaryFieldRef();
forAll(U.boundaryField(), patchi)
{
if (!U.boundaryField()[patchi].coupled())
{
rhorAUfbf[patchi] = rhorAUf_orig[patchi];
rhoHbyAfbf[patchi] = rhoHbyA_orig[patchi];
}
}
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2017 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -22,26 +22,37 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
reactingParcelFilmFoam
Group
grpLagrangianSolvers
rhoPimpleAdiabaticFoam
Description
Transient solver for compressible, turbulent flow with a reacting,
multiphase particle cloud, and surface film modelling.
Transient solver for laminar or turbulent flow of weakly compressible
fluids for low Mach number aeroacoustic applications.
Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
pseudo-transient simulations. The RCM interpolation is used as in
\verbatim
Knacke, T. (2013).
Potential effects of Rhie & Chow type interpolations in airframe
noise simulations. In: Schram, C., Dénos, R., Lecomte E. (ed):
Accurate and efficient aeroacoustic prediction approaches for
airframe noise, VKI LS 2013-03.
\endverbatim
Contact: info@cfd-berlin.com
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "fluidThermo.H"
#include "turbulentFluidThermoModel.H"
#include "basicReactingCloud.H"
#include "surfaceFilmModel.H"
#include "psiCombustionModel.H"
#include "radiationModel.H"
#include "SLGThermo.H"
#include "fvOptions.H"
#include "bound.H"
#include "pimpleControl.H"
#include "fvOptions.H"
#include "ddtScheme.H"
#include "fvcCorrectAlpha.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -54,14 +65,10 @@ int main(int argc, char *argv[])
#include "createMesh.H"
#include "createControl.H"
#include "createTimeControls.H"
#include "createFields.H"
#include "createFieldRefs.H"
#include "createFvOptions.H"
#include "compressibleCourantNo.H"
#include "setInitialDeltaT.H"
#include "initContinuityErrs.H"
turbulence->validate();
#include "createFields.H"
#include "createFvOptions.H"
#include "initContinuityErrs.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -71,41 +78,39 @@ int main(int argc, char *argv[])
{
#include "readTimeControls.H"
#include "compressibleCourantNo.H"
#include "setMultiRegionDeltaT.H"
#include "setDeltaT.H"
runTime++;
Info<< "Time = " << runTime.timeName() << nl << endl;
parcels.evolve();
surfaceFilm.evolve();
if (solvePrimaryRegion)
if (pimple.nCorrPIMPLE() <= 1)
{
#include "rhoEqn.H"
}
// --- PIMPLE loop
while (pimple.loop())
// --- Pressure-velocity PIMPLE corrector loop
while (pimple.loop())
{
U.storePrevIter();
rho.storePrevIter();
phi.storePrevIter();
phiByRho.storePrevIter();
#include "UEqn.H"
// --- Pressure corrector loop
while (pimple.correct())
{
#include "UEqn.H"
#include "YEqn.H"
#include "EEqn.H"
// --- Pressure corrector loop
while (pimple.correct())
{
#include "pEqn.H"
}
if (pimple.turbCorr())
{
turbulence->correct();
}
#include "pEqn.H"
}
rho = thermo.rho();
#include "EEqn.H"
if (pimple.turbCorr())
{
turbulence->correct();
}
}
runTime.write();
@ -115,7 +120,7 @@ int main(int argc, char *argv[])
<< nl << endl;
}
Info<< "End" << endl;
Info<< "End\n" << endl;
return 0;
}

View File

@ -2,11 +2,11 @@
Info<< "Reading thermophysical properties\n" << endl;
autoPtr<psiThermo> pThermo
autoPtr<fluidThermo> pThermo
(
psiThermo::New(mesh)
fluidThermo::New(mesh)
);
psiThermo& thermo = pThermo();
fluidThermo& thermo = pThermo();
thermo.validate(args.executable(), "h", "e");
volScalarField& p = thermo.p();
@ -40,6 +40,29 @@ volVectorField U
#include "compressibleCreatePhi.H"
pressureControl pressureControl(p, rho, pimple.dict(), false);
mesh.setFluxRequired(p.name());
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence
(
compressible::turbulenceModel::New
(
rho,
U,
phi,
thermo
)
);
#include "createDpdt.H"
#include "createK.H"
#include "createMRF.H"
dimensionedScalar rhoMax
(
dimensionedScalar::lookupOrDefault
@ -61,35 +84,3 @@ dimensionedScalar rhoMin
0
)
);
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence
(
compressible::turbulenceModel::New
(
rho,
U,
phi,
thermo
)
);
mesh.setFluxRequired(p.name());
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt
(
IOobject
(
"dpdt",
runTime.timeName(),
mesh
),
mesh,
dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
);
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
#include "createMRF.H"

View File

@ -0,0 +1,3 @@
rhoPimpleDyMFoam.C
EXE = $(FOAM_APPBIN)/overRhoPimpleDyMFoam

View File

@ -0,0 +1,25 @@
EXE_INC = \
-I.. \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/finiteVolume/cfdTools \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/overset/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
EXE_LIBS = \
-lcompressibleTransportModels \
-lfluidThermophysicalModels \
-lspecie \
-lturbulenceModels \
-lcompressibleTurbulenceModels \
-loverset \
-lfvOptions \
-ldynamicFvMesh \
-ltopoChangerFvMesh

View File

@ -0,0 +1,11 @@
CorrectPhi
(
U,
phi,
p,
rho,
psi,
dimensionedScalar("rAUf", dimTime, 1),
divrhoU,
pimple
);

View File

@ -0,0 +1,11 @@
#include "createTimeControls.H"
bool correctPhi
(
pimple.dict().lookupOrDefault<Switch>("correctPhi", true)
);
bool checkMeshCourantNo
(
pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false)
);

View File

@ -0,0 +1,117 @@
Info<< "Reading thermophysical properties\n" << endl;
autoPtr<psiThermo> pThermo
(
psiThermo::New(mesh)
);
psiThermo& thermo = pThermo();
thermo.validate(args.executable(), "h", "e");
volScalarField& p = thermo.p();
const volScalarField& psi = thermo.psi();
volScalarField rho
(
IOobject
(
"rho",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
thermo.rho()
);
Info<< "Reading field U\n" << endl;
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
#include "compressibleCreatePhi.H"
dimensionedScalar rhoMax
(
dimensionedScalar::lookupOrDefault
(
"rhoMax",
pimple.dict(),
dimDensity,
GREAT
)
);
dimensionedScalar rhoMin
(
dimensionedScalar::lookupOrDefault
(
"rhoMin",
pimple.dict(),
dimDensity,
0
)
);
mesh.setFluxRequired(p.name());
Info<< "Creating field dpdt\n" << endl;
volScalarField dpdt
(
IOobject
(
"dpdt",
runTime.timeName(),
mesh
),
mesh,
dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
);
Info<< "Creating field kinetic energy K\n" << endl;
volScalarField K("K", 0.5*magSqr(U));
//- Overset specific
// Add solver-specific interpolations
{
dictionary oversetDict;
oversetDict.add("U", true);
oversetDict.add("p", true);
oversetDict.add("HbyA", true);
oversetDict.add("grad(p)", true);
const_cast<dictionary&>
(
mesh.schemesDict()
).add
(
"oversetInterpolationRequired",
oversetDict,
true
);
}
// Mask field for zeroing out contributions on hole cells
#include "createCellMask.H"
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence
(
compressible::turbulenceModel::New
(
rho,
U,
phi,
thermo
)
);

View File

@ -0,0 +1,123 @@
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
surfaceScalarField faceMask(localMin<scalar>(mesh).interpolate(cellMask));
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", faceMask*fvc::interpolate(rho*rAU));
volVectorField HbyA("HbyA", U);
HbyA = constrainHbyA(cellMask*rAU*UEqn.H(), U, p);
if (pimple.nCorrPISO() <= 1)
{
tUEqn.clear();
}
if (pimple.transonic())
{
surfaceScalarField phid
(
"phid",
fvc::interpolate(psi)
*(
fvc::flux(HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, rhoUf)/fvc::interpolate(rho)
)
);
fvc::makeRelative(phid, psi, U);
MRF.makeRelative(fvc::interpolate(psi), phid);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ fvm::div(phid, p)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi == pEqn.flux();
}
}
}
else
{
surfaceScalarField phiHbyA
(
"phiHbyA",
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, rhoUf)
);
fvc::makeRelative(phiHbyA, rho, U);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
while (pimple.correctNonOrthogonal())
{
// Pressure corrector
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ fvc::div(phiHbyA)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"
// Explicitly relax pressure for momentum corrector
p.relax();
// Recalculate density from the relaxed pressure
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
Info<< "rho max/min : " << max(rho).value()
<< " " << min(rho).value() << endl;
volVectorField gradP(fvc::grad(p));
//mesh.interpolate(gradP);
U = HbyA - rAU*cellMask*gradP;
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
{
rhoUf = fvc::interpolate(rho*U);
surfaceVectorField n(mesh.Sf()/mesh.magSf());
rhoUf += n*(fvc::absolute(phi, rho, U)/mesh.magSf() - (n & rhoUf));
}
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
if (mesh.moving())
{
dpdt -= fvc::div(fvc::meshPhi(rho, U), p);
}
}

View File

@ -0,0 +1,6 @@
#include "readTimeControls.H"
correctPhi = pimple.dict().lookupOrDefault<Switch>("correctPhi", true);
checkMeshCourantNo =
pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false);

View File

@ -0,0 +1,171 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
rhoPimpleFoam
Group
grpCompressibleSolvers grpMovingMeshSolvers
Description
Transient solver for laminar or turbulent flow of compressible fluids
for HVAC and similar applications.
Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
pseudo-transient simulations.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "psiThermo.H"
#include "turbulentFluidThermoModel.H"
#include "bound.H"
#include "pimpleControl.H"
#include "CorrectPhi.H"
#include "fvOptions.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
#include "cellCellStencilObject.H"
#include "localMin.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
#include "setRootCase.H"
#include "createTime.H"
#include "createDynamicFvMesh.H"
#include "createControl.H"
#include "createRDeltaT.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createMRF.H"
#include "createFvOptions.H"
#include "createRhoUf.H"
#include "createControls.H"
turbulence->validate();
if (!LTS)
{
#include "compressibleCourantNo.H"
#include "setInitialDeltaT.H"
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl;
while (runTime.run())
{
#include "readControls.H"
{
// Store divrhoU from the previous mesh so that it can be mapped
// and used in correctPhi to ensure the corrected phi has the
// same divergence
volScalarField divrhoU
(
"divrhoU",
fvc::div(fvc::absolute(phi, rho, U))
);
if (LTS)
{
#include "setRDeltaT.H"
}
else
{
#include "compressibleCourantNo.H"
#include "setDeltaT.H"
}
runTime++;
Info<< "Time = " << runTime.timeName() << nl << endl;
// Store momentum to set rhoUf for introduced faces.
volVectorField rhoU("rhoU", rho*U);
// Do any mesh changes
mesh.update();
if (mesh.changing())
{
#include "setCellMask.H"
}
if (mesh.changing() && correctPhi)
{
// Calculate absolute flux from the mapped surface velocity
phi = mesh.Sf() & rhoUf;
#include "correctPhi.H"
// Make the fluxes relative to the mesh-motion
fvc::makeRelative(phi, rho, U);
}
}
if (mesh.changing() && checkMeshCourantNo)
{
#include "meshCourantNo.H"
}
#include "rhoEqn.H"
Info<< "rhoEqn max/min : " << max(rho).value()
<< " " << min(rho).value() << endl;
// --- Pressure-velocity PIMPLE corrector loop
while (pimple.loop())
{
#include "UEqn.H"
#include "EEqn.H"
// --- Pressure corrector loop
while (pimple.correct())
{
#include "pEqn.H"
}
if (pimple.turbCorr())
{
turbulence->correct();
}
}
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
}
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -1,7 +1,11 @@
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
if (!pimple.SIMPLErho())
{
rho = thermo.rho();
}
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution
const volScalarField psip0(psi*p);
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
@ -12,65 +16,64 @@ if (pimple.nCorrPISO() <= 1)
tUEqn.clear();
}
surfaceScalarField phiHbyA
(
"phiHbyA",
fvc::interpolate(rho)*fvc::flux(HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
if (pimple.transonic())
{
surfaceScalarField phid
(
"phid",
fvc::interpolate(psi)
*(
fvc::flux(HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho)
)
(fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
);
MRF.makeRelative(fvc::interpolate(psi), phid);
phiHbyA -= fvc::interpolate(psi*p)*phiHbyA/fvc::interpolate(rho);
fvScalarMatrix pDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA) + fvm::div(phid, p)
==
fvOptions(psi, p, rho.name())
);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ fvm::div(phid, p)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAUf, p));
// Relax the pressure equation to ensure diagonal-dominance
pEqn.relax();
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi == pEqn.flux();
phi = phiHbyA + pEqn.flux();
}
}
}
else
{
surfaceScalarField phiHbyA
fvScalarMatrix pDDtEqn
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, phi)
)
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA)
==
fvOptions(psi, p, rho.name())
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ fvc::div(phiHbyA)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAUf, p));
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
@ -87,19 +90,19 @@ else
// Explicitly relax pressure for momentum corrector
p.relax();
// Recalculate density from the relaxed pressure
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
Info<< "rho max/min : " << max(rho).value()
<< " " << min(rho).value() << endl;
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
if (pressureControl.limit(p))
{
p.correctBoundaryConditions();
}
thermo.correctRho(psi*p - psip0, rhoMin, rhoMax) ;
rho = thermo.rho();
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);

View File

@ -1,7 +1,11 @@
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
if (!pimple.SIMPLErho())
{
rho = thermo.rho();
}
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution
const volScalarField psip0(psi*p);
volScalarField rAU(1.0/UEqn.A());
volScalarField rAtU(1.0/(1.0/rAU - UEqn.H1()));
@ -12,82 +16,75 @@ if (pimple.nCorrPISO() <= 1)
tUEqn.clear();
}
surfaceScalarField phiHbyA
(
"phiHbyA",
(
fvc::interpolate(rho)*fvc::flux(HbyA)
+ fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi)
)
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
volScalarField rhorAtU("rhorAtU", rho*rAtU);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF);
if (pimple.transonic())
{
surfaceScalarField phid
(
"phid",
fvc::interpolate(psi)
*(
fvc::flux(HbyA)
+ fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi)
/fvc::interpolate(rho)
)
(fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
);
MRF.makeRelative(fvc::interpolate(psi), phid);
surfaceScalarField phic
(
"phic",
phiHbyA +=
fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf()
);
- fvc::interpolate(psi*p)*phiHbyA/fvc::interpolate(rho);
HbyA -= (rAU - rAtU)*fvc::grad(p);
volScalarField rhorAtU("rhorAtU", rho*rAtU);
fvScalarMatrix pDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA) + fvm::div(phid, p)
==
fvOptions(psi, p, rho.name())
);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ fvm::div(phid, p)
+ fvc::div(phic)
- fvm::laplacian(rhorAtU, p)
==
fvOptions(psi, p, rho.name())
);
fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAtU, p));
// Relax the pressure equation to ensure diagonal-dominance
pEqn.relax();
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi == phic + pEqn.flux();
phi = phiHbyA + pEqn.flux();
}
}
}
else
{
surfaceScalarField phiHbyA
(
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi)
)
);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
phiHbyA += fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf();
HbyA -= (rAU - rAtU)*fvc::grad(p);
volScalarField rhorAtU("rhorAtU", rho*rAtU);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF);
fvScalarMatrix pDDtEqn
(
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA)
==
fvOptions(psi, p, rho.name())
);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ fvc::div(phiHbyA)
- fvm::laplacian(rhorAtU, p)
==
fvOptions(psi, p, rho.name())
);
fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAtU, p));
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
@ -109,19 +106,15 @@ U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
if (pressureControl.limit(p))
{
p.correctBoundaryConditions();
}
thermo.correctRho(psi*p - psip0, rhoMin, rhoMax) ;
rho = thermo.rho();
if (thermo.dpdt())
{
dpdt = fvc::ddt(p);
}
// Recalculate density from the relaxed pressure
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
if (!pimple.transonic())
{
rho.relax();
}
Info<< "rho max/min : " << max(rho).value() << " " << min(rho).value() << endl;

View File

@ -1,7 +1,11 @@
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
if (!pimple.SIMPLErho())
{
rho = thermo.rho();
}
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution
const volScalarField psip0(psi*p);
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
@ -12,61 +16,60 @@ if (pimple.nCorrPISO() <= 1)
tUEqn.clear();
}
surfaceScalarField phiHbyA
(
"phiHbyA",
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, rhoUf)
);
fvc::makeRelative(phiHbyA, rho, U);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
if (pimple.transonic())
{
surfaceScalarField phid
(
"phid",
fvc::interpolate(psi)
*(
fvc::flux(HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, rhoUf)/fvc::interpolate(rho)
)
(fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
);
fvc::makeRelative(phid, psi, U);
MRF.makeRelative(fvc::interpolate(psi), phid);
phiHbyA -= fvc::interpolate(psi*p)*phiHbyA/fvc::interpolate(rho);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA)
+ fvm::div(phid, p)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
// Relax the pressure equation to ensure diagonal-dominance
pEqn.relax();
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi == pEqn.flux();
phi = phiHbyA + pEqn.flux();
}
}
}
else
{
surfaceScalarField phiHbyA
(
"phiHbyA",
fvc::flux(rho*HbyA)
+ rhorAUf*fvc::ddtCorr(rho, U, rhoUf)
);
fvc::makeRelative(phiHbyA, rho, U);
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
while (pimple.correctNonOrthogonal())
{
// Pressure corrector
fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
+ fvc::div(phiHbyA)
- fvm::laplacian(rhorAUf, p)
==
@ -88,19 +91,19 @@ else
// Explicitly relax pressure for momentum corrector
p.relax();
// Recalculate density from the relaxed pressure
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
rho.relax();
Info<< "rho max/min : " << max(rho).value()
<< " " << min(rho).value() << endl;
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
K = 0.5*magSqr(U);
if (pressureControl.limit(p))
{
p.correctBoundaryConditions();
}
thermo.correctRho(psi*p - psip0, rhoMin, rhoMax);
rho = thermo.rho();
{
rhoUf = fvc::interpolate(rho*U);
surfaceVectorField n(mesh.Sf()/mesh.magSf());

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -22,7 +22,7 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
rhoPimpleFoam
rhoPimpleDyMFoam
Group
grpCompressibleSolvers grpMovingMeshSolvers
@ -38,10 +38,11 @@ Description
#include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "psiThermo.H"
#include "fluidThermo.H"
#include "turbulentFluidThermoModel.H"
#include "bound.H"
#include "pimpleControl.H"
#include "pressureControl.H"
#include "CorrectPhi.H"
#include "fvOptions.H"
#include "localEulerDdtScheme.H"

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -37,10 +37,11 @@ Description
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "psiThermo.H"
#include "fluidThermo.H"
#include "turbulentFluidThermoModel.H"
#include "bound.H"
#include "pimpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
@ -121,6 +122,8 @@ int main(int argc, char *argv[])
}
}
rho = thermo.rho();
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"

View File

@ -1,11 +1,14 @@
Info<< "Reading thermophysical properties\n" << endl;
autoPtr<rhoThermo> pThermo
autoPtr<fluidThermo> pThermo
(
rhoThermo::New(mesh)
fluidThermo::New(mesh)
);
rhoThermo& thermo = pThermo();
fluidThermo& thermo = pThermo();
thermo.validate(args.executable(), "h", "e");
volScalarField& p = thermo.p();
volScalarField rho
(
IOobject
@ -19,8 +22,6 @@ volScalarField rho
thermo.rho()
);
volScalarField& p = thermo.p();
Info<< "Reading field U\n" << endl;
volVectorField U
(
@ -37,35 +38,10 @@ volVectorField U
#include "compressibleCreatePhi.H"
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, simple.dict(), pRefCell, pRefValue);
pressureControl pressureControl(p, rho, simple.dict());
mesh.setFluxRequired(p.name());
dimensionedScalar rhoMax
(
dimensionedScalar::lookupOrDefault
(
"rhoMax",
simple.dict(),
dimDensity,
GREAT
)
);
dimensionedScalar rhoMin
(
dimensionedScalar::lookupOrDefault
(
"rhoMin",
simple.dict(),
dimDensity,
0
)
);
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence
(

View File

@ -0,0 +1,3 @@
rhoSimpleFoam.C
EXE = $(FOAM_APPBIN)/overRhoSimpleFoam

View File

@ -0,0 +1,27 @@
EXE_INC = \
-I.. \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/finiteVolume/cfdTools \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/overset/lnInclude
EXE_LIBS = \
-lcompressibleTransportModels \
-lfluidThermophysicalModels \
-lspecie \
-lturbulenceModels \
-lcompressibleTurbulenceModels \
-lfiniteVolume \
-lsampling \
-lmeshTools \
-lfvOptions \
-loverset \
-ldynamicFvMesh \
-ltopoChangerFvMesh

View File

@ -0,0 +1,23 @@
// Solve the Momentum equation
MRF.correctBoundaryVelocity(U);
tmp<fvVectorMatrix> tUEqn
(
fvm::div(phi, U)
+ MRF.DDt(rho, U)
+ turbulence->divDevRhoReff(U)
==
fvOptions(rho, U)
);
fvVectorMatrix& UEqn = tUEqn.ref();
UEqn.relax();
fvOptions.constrain(UEqn);
if (simple.momentumPredictor())
{
solve(UEqn == -cellMask*fvc::grad(p));
}
fvOptions.correct(U);

View File

@ -0,0 +1 @@
const volScalarField& psi = thermo.psi();

View File

@ -1,12 +1,14 @@
Info<< "Reading thermophysical properties\n" << endl;
autoPtr<rhoThermo> pThermo
autoPtr<fluidThermo> pThermo
(
rhoThermo::New(mesh)
fluidThermo::New(mesh)
);
rhoThermo& thermo = pThermo();
fluidThermo& thermo = pThermo();
thermo.validate(args.executable(), "h", "e");
volScalarField& p = thermo.p();
volScalarField rho
(
IOobject
@ -20,8 +22,6 @@ volScalarField rho
thermo.rho()
);
volScalarField& p = thermo.p();
Info<< "Reading field U\n" << endl;
volVectorField U
(
@ -38,35 +38,10 @@ volVectorField U
#include "compressibleCreatePhi.H"
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, simple.dict(), pRefCell, pRefValue);
pressureControl pressureControl(p, rho, simple.dict());
mesh.setFluxRequired(p.name());
dimensionedScalar rhoMax
(
dimensionedScalar::lookupOrDefault
(
"rhoMax",
simple.dict(),
dimDensity,
GREAT
)
);
dimensionedScalar rhoMin
(
dimensionedScalar::lookupOrDefault
(
"rhoMin",
simple.dict(),
dimDensity,
0
)
);
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence
(
@ -82,3 +57,35 @@ autoPtr<compressible::turbulenceModel> turbulence
dimensionedScalar initialMass = fvc::domainIntegrate(rho);
#include "createMRF.H"
//- Overset specific
// Add solver-specific interpolations
{
dictionary oversetDict;
oversetDict.add("U", true);
oversetDict.add("p", true);
oversetDict.add("HbyA", true);
oversetDict.add("grad(p)", true);
oversetDict.add("rho", true);
const_cast<dictionary&>
(
mesh.schemesDict()
).add
(
"oversetInterpolationRequired",
oversetDict,
true
);
}
// Mask field for zeroing out contributions on hole cells
#include "createCellMask.H"
#include "createInterpolatedCells.H"
bool adjustFringe
(
simple.dict().lookupOrDefault("oversetAdjustPhi", false)
);

View File

@ -0,0 +1,22 @@
Info<< "Create dynamic mesh for time = "
<< runTime.timeName() << nl << endl;
autoPtr<dynamicFvMesh> meshPtr
(
dynamicFvMesh::New
(
IOobject
(
dynamicFvMesh::defaultRegion,
runTime.timeName(),
runTime,
IOobject::MUST_READ
)
)
);
dynamicFvMesh& mesh = meshPtr();
// Calculate initial mesh-to-mesh mapping. Note that this should be
// done under the hood, e.g. as a MeshObject
mesh.update();

View File

@ -0,0 +1,123 @@
{
surfaceScalarField faceMask(localMin<scalar>(mesh).interpolate(cellMask));
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", faceMask*fvc::interpolate(rho*rAU));
volVectorField HbyA("HbyA", U);
HbyA = constrainHbyA(cellMask*rAU*UEqn.H(), U, p);
tUEqn.clear();
bool closedVolume = false;
surfaceScalarField phiHbyA("phiHbyA", fvc::interpolate(rho)*fvc::flux(HbyA));
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
if (simple.transonic())
{
surfaceScalarField phid
(
"phid",
(fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
);
phiHbyA -= fvc::interpolate(psi*p)*phiHbyA/fvc::interpolate(rho);
while (simple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvc::div(phiHbyA)
+ fvm::div(phid, p)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
// Relax the pressure equation to ensure diagonal-dominance
pEqn.relax();
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
else
{
closedVolume = adjustPhi(phiHbyA, U, p);
if (adjustFringe)
{
oversetAdjustPhi(phiHbyA, U);
}
while (simple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvc::div(phiHbyA)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
#include "incompressible/continuityErrs.H"
// Explicitly relax pressure for momentum corrector
p.relax();
volVectorField gradP(fvc::grad(p));
U = HbyA - rAU*cellMask*gradP;
U.correctBoundaryConditions();
fvOptions.correct(U);
bool pLimited = pressureControl.limit(p);
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if (closedVolume)
{
p += (initialMass - fvc::domainIntegrate(psi*p))
/fvc::domainIntegrate(psi);
}
if (pLimited || closedVolume)
{
p.correctBoundaryConditions();
}
rho = thermo.rho();
if (!simple.transonic())
{
rho.relax();
}
}

View File

@ -0,0 +1,92 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2017 OpenCFD Ltd
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
overRhoSimpleFoam
Group
grpCompressibleSolvers
Description
Overset steady-state solver for turbulent flow of compressible fluids.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "fluidThermo.H"
#include "turbulentFluidThermoModel.H"
#include "simpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
#include "cellCellStencilObject.H"
#include "localMin.H"
#include "oversetAdjustPhi.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
#define CREATE_MESH createUpdatedDynamicFvMesh.H
#include "postProcess.H"
#include "setRootCase.H"
#include "createTime.H"
#include "createUpdatedDynamicFvMesh.H"
#include "createControl.H"
#include "createFields.H"
#include "createFieldRefs.H"
#include "createFvOptions.H"
#include "initContinuityErrs.H"
turbulence->validate();
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl;
while (simple.loop())
{
Info<< "Time = " << runTime.timeName() << nl << endl;
// Pressure-velocity SIMPLE corrector
#include "UEqn.H"
#include "EEqn.H"
#include "pEqn.H"
turbulence->correct();
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
}
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -1,109 +1,110 @@
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
tUEqn.clear();
bool closedVolume = false;
surfaceScalarField phiHbyA("phiHbyA", fvc::interpolate(rho)*fvc::flux(HbyA));
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
if (simple.transonic())
{
//const volScalarField& psi = thermo.psi();
surfaceScalarField phid
(
"phid",
(fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
);
volScalarField rAU(1.0/UEqn.A());
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
tUEqn.clear();
phiHbyA -= fvc::interpolate(psi*p)*phiHbyA/fvc::interpolate(rho);
bool closedVolume = false;
if (simple.transonic())
while (simple.correctNonOrthogonal())
{
surfaceScalarField phid
fvScalarMatrix pEqn
(
"phid",
fvc::interpolate(psi)
*fvc::flux(HbyA)
fvc::div(phiHbyA)
+ fvm::div(phid, p)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
MRF.makeRelative(fvc::interpolate(psi), phid);
// Relax the pressure equation to ensure diagonal-dominance
pEqn.relax();
while (simple.correctNonOrthogonal())
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
fvScalarMatrix pEqn
(
fvm::div(phid, p)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
// Relax the pressure equation to ensure diagonal-dominance
pEqn.relax();
pEqn.setReference(pRefCell, pRefValue);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
phi == pEqn.flux();
}
phi = phiHbyA + pEqn.flux();
}
}
else
{
surfaceScalarField phiHbyA("phiHbyA", fvc::flux(rho*HbyA));
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
closedVolume = adjustPhi(phiHbyA, U, p);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
while (simple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvc::div(phiHbyA)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
pEqn.setReference(pRefCell, pRefValue);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
#include "incompressible/continuityErrs.H"
// Explicitly relax pressure for momentum corrector
p.relax();
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if (closedVolume)
{
p += (initialMass - fvc::domainIntegrate(psi*p))
/fvc::domainIntegrate(psi);
}
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
thermo.rho() = max(thermo.rho(), rhoMin);
thermo.rho() = min(thermo.rho(), rhoMax);
if (!simple.transonic())
{
rho.relax();
}
Info<< "rho max/min : "
<< max(rho).value() << " "
<< min(rho).value() << endl;
}
else
{
closedVolume = adjustPhi(phiHbyA, U, p);
while (simple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvc::div(phiHbyA)
- fvm::laplacian(rhorAUf, p)
==
fvOptions(psi, p, rho.name())
);
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
phi = phiHbyA + pEqn.flux();
}
}
}
#include "incompressible/continuityErrs.H"
// Explicitly relax pressure for momentum corrector
p.relax();
U = HbyA - rAU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
bool pLimited = pressureControl.limit(p);
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if (closedVolume)
{
p += (initialMass - fvc::domainIntegrate(psi*p))
/fvc::domainIntegrate(psi);
}
if (pLimited || closedVolume)
{
p.correctBoundaryConditions();
}
rho = thermo.rho();
if (!simple.transonic())
{
rho.relax();
}

View File

@ -1,3 +1,5 @@
rho = thermo.rho();
volScalarField rAU(1.0/UEqn.A());
volScalarField rAtU(1.0/(1.0/rAU - UEqn.H1()));
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
@ -5,33 +7,34 @@ tUEqn.clear();
bool closedVolume = false;
surfaceScalarField phiHbyA("phiHbyA", fvc::interpolate(rho)*fvc::flux(HbyA));
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
volScalarField rhorAtU("rhorAtU", rho*rAtU);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF);
if (simple.transonic())
{
surfaceScalarField phid
(
"phid",
fvc::interpolate(psi)
*fvc::flux(HbyA)
(fvc::interpolate(psi)/fvc::interpolate(rho))*phiHbyA
);
MRF.makeRelative(fvc::interpolate(psi), phid);
surfaceScalarField phic
(
"phic",
phiHbyA +=
fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf()
);
- fvc::interpolate(psi*p)*phiHbyA/fvc::interpolate(rho);
HbyA -= (rAU - rAtU)*fvc::grad(p);
volScalarField rhorAtU("rhorAtU", rho*rAtU);
while (simple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
(
fvm::div(phid, p)
+ fvc::div(phic)
fvc::div(phiHbyA)
+ fvm::div(phid, p)
- fvm::laplacian(rhorAtU, p)
==
fvOptions(psi, p, rho.name())
@ -40,31 +43,27 @@ if (simple.transonic())
// Relax the pressure equation to maintain diagonal dominance
pEqn.relax();
pEqn.setReference(pRefCell, pRefValue);
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
if (simple.finalNonOrthogonalIter())
{
phi == phic + pEqn.flux();
phi = phiHbyA + pEqn.flux();
}
}
}
else
{
surfaceScalarField phiHbyA("phiHbyA", fvc::flux(rho*HbyA));
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
closedVolume = adjustPhi(phiHbyA, U, p);
phiHbyA += fvc::interpolate(rho*(rAtU - rAU))*fvc::snGrad(p)*mesh.magSf();
HbyA -= (rAU - rAtU)*fvc::grad(p);
volScalarField rhorAtU("rhorAtU", rho*rAtU);
// Update the pressure BCs to ensure flux consistency
constrainPressure(p, rho, U, phiHbyA, rhorAtU, MRF);
while (simple.correctNonOrthogonal())
{
fvScalarMatrix pEqn
@ -75,7 +74,11 @@ else
fvOptions(psi, p, rho.name())
);
pEqn.setReference(pRefCell, pRefValue);
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
@ -97,6 +100,8 @@ U = HbyA - rAtU*fvc::grad(p);
U.correctBoundaryConditions();
fvOptions.correct(U);
bool pLimited = pressureControl.limit(p);
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if (closedVolume)
@ -105,16 +110,14 @@ if (closedVolume)
/fvc::domainIntegrate(psi);
}
// Recalculate density from the relaxed pressure
if (pLimited || closedVolume)
{
p.correctBoundaryConditions();
}
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
thermo.rho() = max(thermo.rho(), rhoMin);
thermo.rho() = min(thermo.rho(), rhoMax);
if (!simple.transonic())
{
rho.relax();
}
Info<< "rho max/min : " << max(rho).value() << " " << min(rho).value() << endl;

View File

@ -1,26 +0,0 @@
{
volScalarField& he = thermo.he();
fvScalarMatrix EEqn
(
fvm::div(phi, he)
+ (
he.name() == "e"
? fvc::div(phi, volScalarField("Ekp", 0.5*magSqr(U) + p/rho))
: fvc::div(phi, volScalarField("K", 0.5*magSqr(U)))
)
- fvm::laplacian(turbulence->alphaEff(), he)
==
fvOptions(rho, he)
);
EEqn.relax();
fvOptions.constrain(EEqn);
EEqn.solve();
fvOptions.correct(he);
thermo.correct();
}

View File

@ -48,7 +48,11 @@
fvScalarMatrix& pEqn = tpEqn.ref();
pEqn.setReference(pRefCell, pRefValue);
pEqn.setReference
(
pressureControl.refCell(),
pressureControl.refValue()
);
pEqn.solve();
@ -75,6 +79,8 @@
U.correctBoundaryConditions();
fvOptions.correct(U);
pressureControl.limit(p);
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if (closedVolume)
@ -84,14 +90,5 @@
}
rho = thermo.rho();
rho = max(rho, rhoMin);
rho = min(rho, rhoMax);
thermo.rho() = max(thermo.rho(), rhoMin);
thermo.rho() = min(thermo.rho(), rhoMax);
rho.relax();
Info<< "rho max/min : "
<< max(rho).value() << " "
<< min(rho).value() << endl;
}

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -34,11 +34,12 @@ Description
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "rhoThermo.H"
#include "fluidThermo.H"
#include "turbulentFluidThermoModel.H"
#include "simpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
#include "IOporosityModelList.H"
#include "simpleControl.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

Some files were not shown because too many files have changed in this diff Show More