Commit Graph

3803 Commits

Author SHA1 Message Date
4e8fd19d3d ENH: Refactored creation of simplified meshes for -dry-run operation
TODO: migrate singleCellFvMesh into simplified mesh framework (?)
2018-06-11 12:42:09 +01:00
3bcbb1615b ENH: improve uniformity of Random::position<label>() (closes #865)
- start/end values were underrepresented due to rounding.
  Now extend the range to include -0.5 and +0.5 beyond the usual
  range to ensure the same number density.
2018-06-12 08:16:06 +02:00
dc521b95df STYLE: consistent use of '= delete' 2018-05-30 12:03:17 +02:00
6b15244de3 STYLE: Enum instead of NamedEnum for fileOperation 2018-06-11 11:40:40 +02:00
0a62fb4593 ENH: postProcess: Clear dictionary to avoid merge warning. See #807. 2018-06-06 09:07:32 +01:00
3530711219 ENH: Refactored the dummyFvMesh code 2018-06-05 16:10:04 +01:00
a3228f861a ENH: GAMG agglom - more robust treatment for small meshes 2018-06-05 15:13:13 +01:00
9b330a9e68 ENH: updated residuals function object field output
Fields now correspond to the initial residual for the first solver
iteration
2018-01-17 13:19:36 +00:00
6312f80918 ENH: residuals function object - extended to write residual fields
Residual fields can be written using the new 'writeFields' entry, e.g.

    functions
    {
        residual
        {
            type            residuals;
            libs            ("libutilityFunctionObjects.so");
            fields          (".*");
            writeControl    writeTime;
            writeFields     true;
        }
    }

Fields currently correspond to the initial residual for the last solver
iteration.
2018-01-16 12:13:11 +00:00
aec949d7cc ENH: Consistency improvement for setting postProcessing directory name 2018-02-27 14:37:05 +00:00
66ba2dd674 ENH: check case tool - updated command line arguments:
-dry-run : perform check only and no writing
-dry-run-write: perform check and write to the next time step.  This
also triggers function objects that fire on the call to write()
2018-02-26 11:46:03 +00:00
b50bbc7ef2 ENH: Added new dry-run options to solvers 2018-01-11 14:23:17 +00:00
a2762d16fa ENH: Field - read error if insufficient values provided, but allow if more are available 2018-01-12 14:19:46 +00:00
eedb266c72 ENH: polyBoundaryMeshEntries - respect IOobject read flags 2018-01-11 14:19:39 +00:00
27888bf7aa ENH: Updated mechanism to create empty sets and zones 2018-05-22 10:10:48 +01:00
f51ee9a0e2 Merge remote-tracking branch 'origin/develop' into develop-pre-release 2018-05-31 17:34:16 +01:00
e43ae3f23f ENH: detect excess tokens when looking up a dictionary value (issues #762) 2018-05-30 14:43:48 +02:00
2aaae74ee1 STYLE: consistent ordering of "inline explicit" vs. "explicit inline"
- resolve in favour of "inline explicit", which had marginally more
  uses and provides consistent prefixing for inline methods.
2018-05-30 12:11:13 +02:00
f9fe71815a STYLE: consistent use of '= delete' for removed constructors/assignments
- make the purpose more explicit, and reduces some work for the
  compiler as well.
2018-05-30 12:03:17 +02:00
6b6b36afd3 STYLE: revert bitSet/HashSet setMany() to set() method (issue #837)
- improves backward compatibility and more naming consistency.
  Retain setMany(iter1, iter2) to avoid ambiguity with the
  PackedList::set(index, value) method.
2018-05-29 17:38:02 +02:00
ec5d9cdf01 Merge remote-tracking branch 'origin/develop' into develop-pre-release 2018-05-29 12:13:58 +01:00
d703f09d11 BUG: fileOperation: avoid par syn in uncollated. Fixes #846. 2018-05-29 12:13:13 +01:00
bd33a382ee COMP: define additional UIndirectList iterator member types (closes #847)
- required for std::iterator_traits specialization, which is used by
  the std::max_element algorithm on Darwin.
2018-05-29 08:56:08 +02:00
9d5cb5751e ENH: additional methods for tmpNrc (as per tmp)
- move constructable
- factory methods: New, NewFrom
- reset methods
2018-05-28 17:01:03 +02:00
d318a630b6 ENH: add directive '#sinclude' (or '#includeIfPresent' as long name)
- consistency with make and more succinct.

- reduce code duplication in findEtcFiles.
2018-05-28 13:38:03 +02:00
f7fa618e8f Merge remote-tracking branch 'origin/develop' into develop-pre-release 2018-05-21 09:53:10 +01:00
7fe700a8dc COMP: HashPtrTableI.H: inlined functions 2018-05-21 09:50:22 +01:00
ad25e18c7f Merge remote-tracking branch 'origin/develop' into develop-pre-release 2018-05-18 12:18:13 +01:00
48d654cf19 ENH: avoid memory leaks for HashPtrTable, PtrMap insertion (issue #749)
- disallow insert() of raw pointers, since a failed insertion
  (ie, entry already existed) results in an unmanaged pointer.

  Either insert using an autoPtr, or set() with raw pointers or autoPtr.

- IOobjectList::add() now takes an autoPtr instead of an object reference

- IOobjectList::remove() now returns an autoPtr instead of a raw pointer
2018-05-17 09:56:36 +01:00
46b768628c STYLE: use FieldBase for template invariant parts
- use refCount instead of the tmp<...>::refCount alias
2018-05-16 18:03:14 +01:00
b0ddf92e78 ENH: polyMesh: fixed warning message. Fixes #828. 2018-05-16 10:14:45 +01:00
7c43b919c5 STYLE: eliminate a global reduction for field function (issue #816) 2018-05-15 18:10:03 +01:00
df3b406ef8 COMP: resolve faceZone constructor ambiguity for gcc 4.8.1 2018-05-11 17:18:52 +01:00
050628c7b1 COMP: Corrections for clang 3.7.1 2018-05-08 15:54:08 +01:00
0d7c582293 STYLE: Minor typo corrections 2018-05-08 13:24:38 +01:00
2f567e53de COMP: silence some compiler warnings/errors
- catch (value)
- forward declarations for operator<<()
- non-const access to Reaction name()
- spurious return statement
2018-05-07 17:21:56 +02:00
b0648f2ba0 ENH: improvements in the surface sampling infrastructure
- improvement documentation for surface sampling.

- can now specify alternative sampling scheme for obtaining the
  face values instead of just using the "cell" value. For example,

      sampleScheme    cellPoint;

  This can be useful for cases when the surface is close to a boundary
  cell and there are large gradients in the sampled field.

- distanceSurface now handles non-closed surfaces more robustly.
  Unknown regions (not inside or outside) are marked internally and
  excluded from consideration. This allows use of 'signed' surfaces
  where not previously possible.
2018-05-07 11:29:00 +02:00
ef882e542a ENH: zero initialize memory for Pstream send (issue #814)
- this avoids some valgrind messages

      "Uninitialised byte(s) found during client check request"
2018-05-02 14:02:55 +02:00
0ea44eda59 ENH: bitSet::find_first_not() method (issue #751)
- find the position of the first bit off - symmetrical with find_first()
2018-05-02 08:33:49 +02:00
5474d161f2 Merge branch 'develop-pre-release' of develop.openfoam.com:Development/OpenFOAM-plus into develop-pre-release 2018-05-17 17:11:57 +01:00
f700bce878 Merge remote-tracking branch 'origin/develop' into develop-pre-release 2018-05-17 12:14:27 +01:00
8959b8e00a ENH: Improvements to the fileHandler and collated IO
Improvements to existing functionality
--------------------------------------
  - MPI is initialised without thread support if it is not needed e.g. uncollated
  - Use native c++11 threading; avoids problem with static destruction order.
  - etc/cellModels now only read if needed.
  - etc/controlDict can now be read from the environment variable FOAM_CONTROLDICT
  - Uniform files (e.g. '0/uniform/time') are now read only once on the master only
    (with the masterUncollated or collated file handlers)
  - collated format writes to 'processorsNNN' instead of 'processors'.  The file
    format is unchanged.
  - Thread buffer and file buffer size are no longer limited to 2Gb.

The global controlDict file contains parameters for file handling.  Under some
circumstances, e.g. running in parallel on a system without NFS, the user may
need to set some parameters, e.g. fileHandler, before the global controlDict
file is read from file.  To support this, OpenFOAM now allows the global
controlDict to be read as a string set to the FOAM_CONTROLDICT environment
variable.

The FOAM_CONTROLDICT environment variable can be set to the content the global
controlDict file, e.g. from a sh/bash shell:

    export FOAM_CONTROLDICT=$(foamDictionary $FOAM_ETC/controlDict)

FOAM_CONTROLDICT can then be passed to mpirun using the -x option, e.g.:

    mpirun -np 2 -x FOAM_CONTROLDICT simpleFoam -parallel

Note that while this avoids the need for NFS to read the OpenFOAM configuration
the executable still needs to load shared libraries which must either be copied
locally or available via NFS or equivalent.

New: Multiple IO ranks
----------------------
The masterUncollated and collated fileHandlers can now use multiple ranks for
writing e.g.:

    mpirun -np 6 simpleFoam -parallel -ioRanks '(0 3)'

In this example ranks 0 ('processor0') and 3 ('processor3') now handle all the
I/O.  Rank 0 handles 0,1,2 and rank 3 handles 3,4,5.  The set of IO ranks should always
include 0 as first element and be sorted in increasing order.

The collated fileHandler uses the directory naming processorsNNN_XXX-YYY where
NNN is the total number of processors and XXX and YYY are first and last
processor in the rank, e.g. in above example the directories would be

    processors6_0-2
    processors6_3-5

and each of the collated files in these contains data of the local ranks
only. The same naming also applies when e.g. running decomposePar:

decomposePar -fileHandler collated -ioRanks '(0 3)'

New: Distributed data
---------------------

The individual root directories can be placed on different hosts with different
paths if necessary.  In the current framework it is necessary to specify the
root per slave process but this has been simplified with the option of specifying
the root per host with the -hostRoots command line option:

    mpirun -np 6 simpleFoam -parallel -ioRanks '(0 3)' \
        -hostRoots '("machineA" "/tmp/" "machineB" "/tmp")'

The hostRoots option is followed by a list of machine name + root directory, the
machine name can contain regular expressions.

New: hostCollated
-----------------

The new hostCollated fileHandler automatically sets the 'ioRanks' according to
the host name with the lowest rank e.g. to run simpleFoam on 6 processors with
ranks 0-2 on machineA and ranks 3-5 on machineB with the machines specified in
the hostfile:

    mpirun -np 6 --hostfile hostfile simpleFoam -parallel -fileHandler hostCollated

This is equivalent to

    mpirun -np 6 --hostfile hostfile simpleFoam -parallel -fileHandler collated -ioRanks '(0 3)'

This example will write directories:

    processors6_0-2/
    processors6_3-5/

A typical example would use distributed data e.g. no two nodes, machineA and
machineB, each with three processes:

    decomposePar -fileHandler collated -case cavity

    # Copy case (constant/*, system/*, processors6/) to master:
    rsync -a cavity machineA:/tmp/

    # Create root on slave:
    ssh machineB mkdir -p /tmp/cavity

    # Run
    mpirun --hostfile hostfile icoFoam \
        -case /tmp/cavity -parallel -fileHandler hostCollated \
        -hostRoots '("machineA" "/tmp" "machineB" "/tmp")'

Contributed by Mattijs Janssens
2018-03-21 12:42:22 +00:00
4fe8ed8245 STYLE: use direct iteration for HashSet
- The iterator for a HashSet dereferences directly to its key.

- Eg,

      for (const label patchi : patchSet)
      {
          ...
      }
  vs.
      forAllConstIter(labelHashSet, patchSet, iter)
      {
          const label patchi = iter.key();
          ...
      }
2018-03-06 00:29:03 +01:00
dd8341f659 ENH: make format of ExecutionTime = ... output configurable (issue #788)
- controlled by the the 'printExecutionFormat' InfoSwitch in
  etc/controlDict

      // Style for "ExecutionTime = " output
      // - 0 = seconds (with trailing 's')
      // - 1 = day-hh:mm:ss

   ExecutionTime = 112135.2 s  ClockTime = 113017 s

   ExecutionTime = 1-07:08:55.20  ClockTime = 1-07:23:37

- Callable via the new Time::printExecutionTime() method,
  which also helps to reduce clutter in the applications.
  Eg,

     runTime.printExecutionTime(Info);

  vs

     Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
         << "  ClockTime = " << runTime.elapsedClockTime() << " s"
         << nl << endl;

--

ENH: return elapsedClockTime() and clockTimeIncrement as double

- previously returned as time_t, which is less portable.
2018-04-27 15:00:34 +02:00
10b69fa2b4 ENH: ListOp::inplaceMapValue using a Map<label> for the mapping.
For example, with some HashTable or Map container of models

    { model0 => 1, model1 => 4, model2 => 5, model3 => 12, model4 => 15, }

specify the remapping

    Map<label> mapper({{1, 3}, {2, 6}, {3, 12}, {5, 8}});

inplaceMapValue(mapper, models) then yields

    { model0 => 3, model1 => 4, model2 => 8, model3 => 12, model4 => 15, }

--

ENH: extend bitSet::count() to optionally count unset bits instead.

--

ENH: BitOps compatibility methods for boolList.

- These ease coding that uses a boolList instead of bitSet and use
  short-circuit logic when possible.

  Eg, when 'bitset' and 'bools' contain the same information

      bitset.count()  <->  BitOps::count(bools)
      bitset.all()    <->  BitOps::all(bools)
      bitset.any()    <->  BitOps::any(bools)
      bitset.none()   <->  BitOps::none(bools)

  These methods can then be used directly in parameters or in logic.
  Eg,

      returnReduce(bitset.any(), orOp<bool>());
      returnReduce(BitOps::any(bools), orOp<bool>());

      if (BitOps::any(bools)) ...
2018-04-27 10:43:32 +02:00
c0766ce8ea STYLE: consistent '// End namespace' markers 2018-04-27 09:51:35 +02:00
0226485c77 BUG: extraneous '}' in FULLDEBUG 2018-04-26 14:49:49 +02:00
d3c2668cc6 STYLE: extraneous debug output in PackedList
- bitSet::used() method for compatibility with code using the
  PackedBoolList typedef, but marked as deprecated.
2018-04-26 14:10:16 +02:00
497dde2b2f CONFIG: bump API version number to 1804 to account for bitSet
- since PackedBoolList is now a compatibility typedef for bitSet,
  it is useful to have an additional means of distinction.

STYLE: simplify internal version tests and compiler defines.

- the API version is now conveyed via the OPENFOAM define directly.
  The older OPENFOAM_PLUS define is provided for existing code.
2018-04-26 09:28:42 +02:00
e6787bfa9a Merge branch 'feature-bitset' into 'develop'
ENH: new bitSet class and improved PackedList class (closes #751)

See merge request Development/OpenFOAM-plus!200
2018-04-25 11:39:59 +01:00