Commit Graph

577 Commits

Author SHA1 Message Date
sergio
95f7ed0342 COM: Separate htc FO from general FO and reactingEuler solvers (#1714)
The phase systems tables for multiphase solvers create conflict
between each other as they are defined in the same namespace and using
similar class names.

Therefore a special htc function object for reactingEulerSolver was
added (reactingEulerHtcModel), located under
src/phaseSystemModels/reactingEulerFoam/functionObjects/

This commit includes the following:

- Relocate solvers/reactingEulerFoam functionObjects to
  src/phaseSystemModels
- Remove links for fieldFunctionObject to multiphase libs to avoid
  conflicts
- New FO for htc for reactingEulerFoam called reactingEulerHtcModel
2020-06-03 20:58:02 +02:00
Mark Olesen
1a9f067df9 TUT: use expression and/or step function in a few places 2020-05-23 18:42:47 +02:00
OpenFOAM bot
dc04980d5c STYLE: remove trailing space, tabs 2020-05-21 15:21:23 +01:00
sergio
8218923b8c ENH: Adding support for two phases Euler solver to heatTransferModel FO 2020-05-21 15:21:23 +01:00
Kutalmis Bercin
01514e4d43 TUT: clean up multiphase tutorials 2020-04-14 16:30:44 +01:00
sergio
0eed8fa829 ENH: Adding option to thermalBaffle to be used as external/internal baffle
Now the thermal baffle can be extrapolated from a patch which is
  coupled to the bottom patch of the solid region.

  The user can set the T bc on the 'top' patch of the solid.

  The new keyword is 'internal' and its default is true. Check new
  tutorial for an example:

  tutorials/heatTransfer/buoyantSimpleFoam/roomWithThickCeiling/
2020-04-06 15:29:07 -07:00
Mark Olesen
9b1c0786ce TUT: verificationAndValidation Allrun uses bash
STYLE: double-quote "$@" for isTest/notTest
2020-03-30 21:14:29 +02:00
OpenFOAM bot
596e4aef3f STYLE: remove trailing space, tabs 2020-01-22 10:00:03 +01:00
Kutalmis Bercin
152890d288 TUT: change residuals FO remnants to solverInfo FO (#1290) 2020-01-10 09:44:38 +00:00
Andrew Heather
ae2ab06312 REL: Release preparations 2019-12-23 09:49:23 +00:00
Mark Olesen
75ba4a07ef STYLE: consistent quoting for 'cd' 2019-12-14 13:34:48 +01:00
sergio
84095ef631 ENH: Adding solarBeamWithTrees tutorial 2019-12-13 16:40:32 -08:00
Mark Olesen
7aa2bf832f STYLE: header format 2019-12-13 12:33:23 +01:00
Mark Olesen
98467036b3 STYLE: regularize quoting and exit on failed 'cd' 2019-11-13 13:19:16 +01:00
Mark Olesen
e6dfb39c66 STYLE: remove unnecessary stdout, stderr /dev/null redirects
- no stderr redirect needed:
    * 'command -v'

- no stdout/stderr redirect needed:
    * 'rm -f'

STYLE: consistent spacing after redirects
2019-11-06 10:44:36 +01:00
Mark Olesen
ec7e3c88e4 ENH: test for WM_PROJECT_DIR being set/unset in scripts 2019-11-06 09:18:51 +01:00
Andrew Heather
fdf8d10ab4 Merge commit 'e9219558d7' into develop-v1906 2019-12-05 11:47:19 +00:00
OpenFOAM bot
e9219558d7 GIT: Header file updates 2019-10-31 14:48:44 +00:00
sergio ferraris
9f11d892f5 ENH: Update of alphaBoiling BC, Bromley and tutorial 2019-10-28 12:30:53 -07:00
Mark Olesen
0968408736 STYLE: correct executable permissions and shebang on tutorial files
- triggers rpmlint warnings
2019-10-01 15:47:29 +02:00
Mark Olesen
02914539f7 TUT: consistent use of scale in blockMeshDict 2019-10-01 09:33:38 +02:00
Mark Olesen
3625d0ecd1 TUT: remove duplicate ;; in dictionaries 2019-10-01 10:39:40 +02:00
Mark Olesen
fc461a1cc6 TUT: use writeControl "adjustable" (alias for "adjustableRunTime") 2019-09-27 15:50:06 +02:00
sergio
356995bf07 TUT: Update radiation tutorials radiation BC's for transmissivity 2019-09-16 10:05:55 -07:00
OpenFOAM bot
880d81475b TUT: use simpler syntax for libs entries 2019-08-30 16:45:45 +02:00
sergio
962e6f6318 ENH: Small editing to fvSchemes and alphatWallBoilingWallFunction 2019-07-30 08:49:15 -07:00
sergio
4631d3272f ENH: Adding multiband absorptivity and solar load working with FVDOM 2019-08-07 15:36:22 -07:00
sergio
09b91bbd97 ENH: Small editing to alphatWallBoilingWallFunction 2019-07-30 08:51:06 -07:00
Andrew Heather
be44dcaf1f RELEASE: Version clean-up for release 2019-06-25 11:51:19 +01:00
mattijs
8e3df10069 STYLE: overBuoyantPimpleDyMFoam: consistent directory naming 2019-06-20 10:26:24 +01:00
mattijs
cd36562d92 ENH: externalLoadSolar: cleanup - avoid multiple registrations 2019-06-17 17:03:23 +01:00
sergio
bb9225f3f7 Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2019-06-10 10:17:00 -07:00
sergio
fa61775768 ENH: Small changes on overBuoyantPimpleFoam tutorial 2019-06-10 10:16:08 -07:00
Sergio Ferraris
8170f2ad92 INT: Org integration of VOF, Euler phase solvers and models.
Integration of VOF MULES new interfaces. Update of VOF solvers and all instances
of MULES in the code.
Integration of reactingTwoPhaseEuler and reactingMultiphaseEuler solvers and sub-models
Updating reactingEuler tutorials accordingly (most of them tested)

New eRefConst thermo used in tutorials. Some modifications at thermo specie level
affecting mostly eThermo. hThermo mostly unaffected

New chtMultiRegionTwoPhaseEulerFoam solver for quenching and tutorial.

Phases sub-models for reactingTwoPhaseEuler and reactingMultiphaseEuler were moved
to src/phaseSystemModels/reactingEulerFoam in order to be used by BC for
chtMultiRegionTwoPhaseEulerFoam.

Update of interCondensatingEvaporatingFoam solver.
2019-06-07 09:38:35 +01:00
sergio
5c58b07f5a ENH: Adding overBuoyantPimpleFoam and tutorial 2019-06-04 12:18:13 -07:00
sergio
aaf5d7be6d Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop 2019-06-04 11:06:35 -07:00
sergio
d44a72a1dd ENH: Moving reactingHeterogenousParcelFoam tut 2019-05-13 13:13:18 -07:00
Andrew Heather
af9334631f INT: Updates for radiation modelling for integration into the develop branch 2019-05-02 10:40:16 +01:00
Mark Olesen
03de501310 STYLE: fix file permissions, inconsistent Test files 2019-06-04 17:50:18 +02:00
Mark Olesen
722ebdb151 STYLE: update of 'mode' to 'type' keyword for radiation properties 2019-05-17 09:53:25 +01:00
sergio
659526101a ENH: Adding reflection capability to solar load radiation model
ENH: Several modifycations to avoid erroneuos rays to be shot
from wrong faces.

ENH: Updating tutorials and avoiding registration of the
coarse singleCellFvMesh

Adding solarLoad tutorial case simpleCarSolarPanel

ENH: Changes needed for the merge
2019-01-21 16:29:58 -08:00
sergio
9893e62386 ENH:
Adding reflecting fluxes to Solar load radiation model.
Adding functionality to the boundary radiation models and new
place holder for basic wall types such as transparent, opaqueDiffusive,
opaqueReflective,etc.
Changing radiation wall models to run time selectable.
Adding multi-band capabilities to VF model and improving the set up
for using solar loads in VF and fvDOM radiation models.
2018-12-03 13:51:40 -08:00
Mark Olesen
eb0c35dc6a STYLE: drop use of objToVTK conversion in viewFactors 2019-04-08 12:20:56 +02:00
Mark Olesen
f0f4af16d2 Merge remote-tracking branch 'origin/master' into develop 2019-04-08 12:05:24 +02:00
Andrew Heather
5615d1f256 BUG: Corrected debug output for solarLoad. Fixes #1195 2019-02-11 12:19:39 +00:00
OpenFOAM bot
154029ddd0 BOT: Cleaned up header files 2019-02-06 12:28:23 +00:00
Andrew Heather
9231534efa STYLE: Updating version to v1812 2018-12-19 18:07:52 +00:00
Mark Olesen
db8ba80ae4 TUT: update old keywords 2018-12-14 11:20:31 +01:00
Mark Olesen
9103b199b9 TUT: remove unused default decomposition coeffs settings 2018-12-13 14:04:50 +01:00
Mark Olesen
98158f5409 TUT: add End marker for tutorials 2018-12-11 16:25:28 +01:00
sergio
942a7f8565 STY:
Reducing running time in controlDict
2018-12-03 16:06:20 -08:00
Mark Olesen
c5beee63f3 ENH: add isTrue function to RunFunctions
- check if the first argument corresponds to an OpenFOAM value for
  'true' (as per Switch).
  True == 't', 'y', 'true', 'yes', 'on'. Everything else is not true.

- when the first argument is '-dict', it initializes the value
  with a query via foamDictionary.
  Eg,
       isTrue -dict mydict -entry parallel

   ==> value=$(foamDictionary mydict -entry parallel -value)
       isTrue $value

   a missing entry is silently treated as false.

ENH: add getNumberOfPatchFaces function in RunFunctions

- simple extraction of nFaces from boundary file for given patch/region
2018-11-30 19:29:49 +01:00
Mark Olesen
f69f9f7ff6 TUT: adjustments in multiRegionHeater tutorials
- missing 'g' file, improve file consistency (fields, dictionaries)
2018-11-28 15:02:41 +01:00
Mark Olesen
38d3a36c2d TUT: update use of foamToVTK 2018-11-27 11:26:24 +01:00
Andrew Heather
32c174f349 TUT: Moved g files - see 9abe97bb7b 2018-11-27 11:46:49 +00:00
Andrew Heather
9abe97bb7b TUT: Updated location of gravity file. See #1094 2018-11-26 14:31:30 +00:00
Andrew Heather
aad4c607b5 TUT: Corrected tutorial name 2018-11-09 09:31:14 +00:00
Mark Olesen
42bb497084 ENH: improvements for vtkWrite function object (issue #926)
- parallel output.

  The output is now postProcessing/<name> for similar reasoning as
  mentioned in #866 - better alignment with other function objects, no
  collision with foamToVTK output.

- align the input parameters with those of vtkCloud so that we can
  specify the ASCII precision and the padding width for the output
  file names as well.

- emit TimeValue field, support file series generation

- support internal or boundary meshes, combining the result into a vtm
  file.

- can restrict conversion based on zone names, enclosing volumes,
  bounding box
2018-10-09 15:52:52 +02:00
mattijs
ba86d90ffc ENH: single precision: various small fixes. See #1086. 2018-11-21 11:12:25 +00:00
Mark Olesen
90dd4b30cd TUT: syntax typo (#1059) 2018-11-12 13:59:38 +01:00
mattijs
e9af742819 BUG: uniformFixedValue: do not evaluate upon reading. Fixes #1058. 2018-11-12 09:15:09 +00:00
Mark Olesen
5f556ffb4a ENH: make sourceInfo sub-dictionary optional for topoSet (#1060)
- helps reduce clutter in the topoSetDict files.

  Caveats when using this.

  The older specification styles using "name" will conflict with the
  set name. Eg,

    {
        name    f0
        type    faceSet;
        action  add;
        source  patchToFace;
        sourceInfo
        {
            name   inlet;
        }
    }

    would flattened to the following
    {
        name    f0
        type    faceSet;
        action  add;
        source  patchToFace;
        name   inlet;
    }
    which overwrites the "name" used for the faceSet.

    The solution is to use the updated syntax:

    {
        name    f0
        type    faceSet;
        action  add;
        source  patchToFace;
        patch   inlet;
    }
2018-11-07 10:33:36 +01:00
Mark Olesen
7325e3ac7d ENH: topoSetSource::SUBTRACT enum action (#1060)
- old 'DELETE' enum was easily confused with 'REMOVE', which removes
  the set, not the elements from the set.

- provide corresponding subtractSet() method

STYLE: HashSet set/unset instead of insert/erase methods in topoSetSource

- simplifies switching to/from bitSet storage
2018-10-30 15:09:44 +00:00
Mark Olesen
c2e58dca64 ENH: support multiple zones for topo set sources (#1060)
- uses the keywords 'zones' and 'zone' to avoid potential conflicts
  with a named topoSet action, but accepts 'name' for compatibility.
2018-10-29 12:54:30 +00:00
Mark Olesen
f865fb432f TUT: missing semi-colons 2018-10-19 21:48:31 +02:00
Mark Olesen
6697bb4735 ENH: improve, simplify, rationalize coordinate system handling (issue #863)
Previously the coordinate system functionality was split between
coordinateSystem and coordinateRotation. The coordinateRotation stored
the rotation tensor and handled all tensor transformations.

The functionality has now been revised and consolidated into the
coordinateSystem classes. The sole purpose of coordinateRotation
is now just to provide a selectable mechanism of how to define the
rotation tensor (eg, axis-angle, euler angles, local axes) for user
input, but after providing the appropriate rotation tensor it has
no further influence on the transformations.

--

The coordinateSystem class now contains an origin and a base rotation
tensor directly and various transformation methods.

  - The origin represents the "shift" for a local coordinate system.

  - The base rotation tensor represents the "tilt" or orientation
    of the local coordinate system in general (eg, for mapping
    positions), but may require position-dependent tensors when
    transforming vectors and tensors.

For some coordinate systems (currently the cylindrical coordinate system),
the rotation tensor required for rotating a vector or tensor is
position-dependent.

The new coordinateSystem and its derivates (cartesian, cylindrical,
indirect) now provide a uniform() method to define if the rotation
tensor is position dependent/independent.

The coordinateSystem transform and invTransform methods are now
available in two-parameter forms for obtaining position-dependent
rotation tensors. Eg,

      ... = cs.transform(globalPt, someVector);

In some cases it can be useful to use query uniform() to avoid
storage of redundant values.

      if (cs.uniform())
      {
          vector xx = cs.transform(someVector);
      }
      else
      {
          List<vector> xx = cs.transform(manyPoints, someVector);
      }

Support transform/invTransform for common data types:
   (scalar, vector, sphericalTensor, symmTensor, tensor).

====================
  Breaking Changes
====================

- These changes to coordinate systems and rotations may represent
  a breaking change for existing user coding.

- Relocating the rotation tensor into coordinateSystem itself means
  that the coordinate system 'R()' method now returns the rotation
  directly instead of the coordinateRotation. The method name 'R()'
  was chosen for consistency with other low-level entities (eg,
  quaternion).

  The following changes will be needed in coding:

      Old:  tensor rot = cs.R().R();
      New:  tensor rot = cs.R();

      Old:  cs.R().transform(...);
      New:  cs.transform(...);

  Accessing the runTime selectable coordinateRotation
  has moved to the rotation() method:

      Old:  Info<< "Rotation input: " << cs.R() << nl;
      New:  Info<< "Rotation input: " << cs.rotation() << nl;

- Naming consistency changes may also cause code to break.

      Old:  transformVector()
      New:  transformPrincipal()

  The old method name transformTensor() now simply becomes transform().

====================
  New methods
====================

For operations requiring caching of the coordinate rotations, the
'R()' method can be used with multiple input points:

       tensorField rots(cs.R(somePoints));

   and later

       Foam::transformList(rots, someVectors);

The rotation() method can also be used to change the rotation tensor
via a new coordinateRotation definition (issue #879).

The new methods transformPoint/invTransformPoint provide
transformations with an origin offset using Cartesian for both local
and global points. These can be used to determine the local position
based on the origin/rotation without interpreting it as a r-theta-z
value, for example.

================
  Input format
================

- Streamline dictionary input requirements

  * The default type is cartesian.
  * The default rotation type is the commonly used axes rotation
    specification (with e1/e2/3), which is assumed if the 'rotation'
    sub-dictionary does not exist.

    Example,

    Compact specification:

        coordinateSystem
        {
            origin  (0 0 0);
            e2      (0 1 0);
            e3      (0.5 0 0.866025);
        }

    Full specification (also accepts the longer 'coordinateRotation'
    sub-dictionary name):

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

            rotation
            {
                type    axes;
                e2      (0 1 0);
                e3      (0.5 0 0.866025);
            }
        }

   This simplifies the input for many cases.

- Additional rotation specification 'none' (an identity rotation):

      coordinateSystem
      {
          origin  (0 0 0);
          rotation { type none; }
      }

- Additional rotation specification 'axisAngle', which is similar
  to the -rotate-angle option for transforming points (issue #660).
  For some cases this can be more intuitive.

  For example,

      rotation
      {
          type    axisAngle;
          axis    (0 1 0);
          angle   30;
      }
  vs.
      rotation
      {
          type    axes;
          e2      (0 1 0);
          e3      (0.5 0 0.866025);
      }

- shorter names (or older longer names) for the coordinate rotation
  specification.

     euler         EulerRotation
     starcd        STARCDRotation
     axes          axesRotation

================
  Coding Style
================
- use Foam::coordSystem namespace for categories of coordinate systems
  (cartesian, cylindrical, indirect). This reduces potential name
  clashes and makes a clearer declaration. Eg,

      coordSystem::cartesian csys_;

  The older names (eg, cartesianCS, etc) remain available via typedefs.

- added coordinateRotations namespace for better organization and
  reduce potential name clashes.
2018-10-01 13:54:10 +02:00
Mark Olesen
b41d5ed523 STYLE: remove deprecated constraints format from tutorials 2018-07-11 17:02:40 +02:00
Mark Olesen
712f49758a TUT: update snappy dictionaries to use minMedialAxisAngle
- canonical parameter name changed from "minMedianAxisAngle" to
  "minMedialAxisAngle" (DEC-2013), but was never previously reported
  as having changed.
2018-07-18 16:47:34 +02:00
Mark Olesen
d530bc254a STYLE: code cleanup searchableSurface (issue #929)
- improve doxygen entries for searchable surfaces.

- support selection of searchable surfaces with shorter names.
  Eg,
      type   box | cylinder | ...;
  vs  type   searchableBox | searchableCylinder | ...;
2018-07-06 11:03:28 +02:00
Andrew Heather
6e35bcda70 ENH: Updated config for release v1806 2018-06-28 12:56:00 +01:00
Andrew Heather
16a6379183 TUT: Cleaned up headers 2018-06-26 17:37:38 +01:00
Mark Olesen
73fbed1c2c TUT: consistent use of scale and headers for blockMeshDict 2018-06-21 15:28:25 +02:00
Mark Olesen
8717f9936e TUT: consistency in Allclean Allrun scripts 2018-06-21 15:19:09 +02:00
Andrew Heather
f9dc9dbf5f TUT: updates 2018-06-21 08:31:22 +01:00
sergio
9d31ff4436 BUG: Update mixture type in tutorials 2018-06-05 10:44:41 -07:00
Andrew Heather
5162b9b2b3 TUT: Updated residuals FO usage for field output 2018-05-24 15:50:43 +01:00
Will Bainbridge
f37ec93404 ENH: chtMultiRegionFoam: Added support for reactions
chtMultiRegionFoam now supports reaction/combustion modelling in fluid
regions in the same way as reactingFoam.

TUT: chtMultiRegionFoam: Added reverseBurner tutorial

This tutorial demonstrates chtMultiRegionFoam's combustion capability
2017-12-13 08:37:25 +00:00
mattijs
af3f93c057 ENH: snappyHexMeshDict: changed 17x to 1.7.x 2018-04-18 11:32:59 +01:00
Andrew Heather
a230e8d408 STYLE: Correcting typos 2018-03-28 17:14:16 +01:00
Mark Olesen
a9741cea79 ENH: additional text expansion shortcuts (issue #792)
Support the following expansions when they occur at the start of a
string:

    Short-form       Equivalent
    =========       ===========
      <etc>/          ~OpenFOAM/   (as per foamEtcFile)
      <case>/         $FOAM_CASE/
      <constant>/     $FOAM_CASE/constant/
      <system>/       $FOAM_CASE/system/

These can be used in fileName expansions to improve clarity and reduce
some typing

     "<constant>/reactions"   vs  "$FOAM_CASE/constant/reactions"
2018-04-10 13:41:41 +02:00
Mark Olesen
fe140cd6c5 TUT: test mode not respected (closes #710)
- now replaced 'if ! isTest' with 'if notTest' for most cases.
2018-02-20 12:54:44 +01:00
Andrew Heather
e3c4696a6e TUT: Updated Allrun scripts for tests. Fixes #710 2018-01-17 15:30:49 +00:00
Mark Olesen
d20b981fef STYLE: add End markers to some tutorials and finiteArea utils (issue #671) 2017-12-19 14:59:24 +01:00
Mark Olesen
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
mattijs
445017c741 BUG: snappyMultiRegionHeater: missing decomposeParDict. See #652. 2017-12-14 16:31:49 +00:00
Mark Olesen
1e7b67fdcf TUT: relocate externalCoupled heater tutorial, add steady-state version 2017-12-05 12:00:00 +01:00
Mark Olesen
88423b2a6f TUT: snappyMultiRegionHeater with redistributePar 2017-12-08 16:06:30 +00:00
Mark Olesen
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
Mark Olesen
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
Mark Olesen
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
Mark Olesen
c792a9d7df TUT: script cleanup, provide cleanCase0 for commonly used operation 2017-10-12 19:20:56 +02:00
Mark Olesen
b29f2a61b6 BUG: missing parallel-aware for metis-like decomposition 2017-10-13 12:45:28 +02:00
Mark Olesen
85f5fb730f TUT: avoid backticks in scripts
- consistent versions in headers
2017-10-05 14:27:48 +02:00
Andrew Heather
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
Mark Olesen
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
Mark Olesen
7a408c713b ENH: refactor and combine externalFileCoupler (issue #529) 2017-07-17 12:54:02 +02:00
Mark Olesen
6afa62a6e4 STYLE: use shell 'command' instead of 'which' in tutorials 2017-07-07 16:00:57 +02:00
Mark Olesen
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
Andrew Heather
bd803d80c6 TUT: Removed unused nMoles entries 2017-06-27 15:51:34 +01:00
Andrew Heather
4abc7a92ed STYLE: Header updates 2017-06-26 11:03:00 +01:00