Commit Graph

6058 Commits

Author SHA1 Message Date
23b6ea4b85 ENH: provide iterators for IndirectList, UIndirectList
- consistency with other containers.
  Allows range-for, enables various std algorithms, and can be used
  with ListOp::create() with an iterator range.
2018-03-07 17:50:34 +01:00
77338c8bd0 ENH: reduce overhead for clockTime, cpuTime
- clockValue class for managing the clock values only, with a null
  constructor that does not query the system clock (can defer to later).
  Can also be used directly for +/- operations.

- refactor clockTime, cpuTime, clock to reduce storage.
2018-03-15 10:01:51 +01:00
fb4c99b698 STYLE: minor cleanup of contiguous (issue #769) 2018-03-14 21:01:44 +01:00
239c96bf28 ENH: checkMesh: minTetVolume field. Fixes #763. 2018-03-12 09:29:17 +00:00
69ebe127a8 ENH: shm: feature angle. See #699. 2018-03-08 15:14:42 +00:00
451f8e0357 Merge remote-tracking branch 'origin/master' into develop 2018-03-07 18:08:07 +01:00
3d608bf06a ENH: remove reliance on the Xfer class (issue #639)
This class is largely a pre-C++11 holdover. It is now possible to
simply use move construct/assignment directly.

In a few rare cases (eg, polyMesh::resetPrimitives) it has been
replaced by an autoPtr.
2018-03-05 13:28:53 +01:00
57291e8692 STYLE: use autoPtr::New and tmp::New for simple return types 2018-02-26 14:00:30 +01:00
52b36f84b5 ENH: cleanup tmp class (issue #639)
Improve alignment of its behaviour with std::shared_ptr

  - element_type typedef
  - swap, reset methods

* additional reference access methods:

cref()
    returns a const reference, synonymous with operator().
    This provides a more verbose alternative to using the '()' operator
    when that is desired.

        Mnemonic: a const form of 'ref()'

constCast()
    returns a non-const reference, regardless if the underlying object
    itself is a managed pointer or a const object.
    This is similar to ref(), but more permissive.

        Mnemonic: const_cast<>

    Using the constCast() method greatly reduces the amount of typing
    and reading. And since the data type is already defined via the tmp
    template parameter, the type deduction is automatically known.

    Previously,

        const tmp<volScalarField>& tfld;

        const_cast<volScalarField&>(tfld()).rename("name");
        volScalarField& fld = const_cast<volScalarField&>(tfld());

    Now,

        tfld.constCast().rename("name");
        auto& fld = tfld.constCast();

--

BUG: attempts to move tmp value that may still be shared.

- old code simply checked isTmp() to decide if the contents could be
  transfered. However, this means that the content of a shared tmp
  would be removed, leaving other instances without content.

* movable() method checks that for a non-null temporary that is
  unique (not shared).
2018-02-26 12:05:00 +01:00
660f3e5492 ENH: cleanup autoPtr class (issue #639)
Improve alignment of its behaviour with std::unique_ptr

  - element_type typedef
  - release() method - identical to ptr() method
  - get() method to get the pointer without checking and without releasing it.
  - operator*() for dereferencing

Method name changes

  - renamed rawPtr() to get()
  - renamed rawRef() to ref(), removed unused const version.

Removed methods/operators

  - assignment from a raw pointer was deleted (was rarely used).
    Can be convenient, but uncontrolled and potentially unsafe.
    Do allow assignment from a literal nullptr though, since this
    can never leak (and also corresponds to the unique_ptr API).

Additional methods

  - clone() method: forwards to the clone() method of the underlying
    data object with argument forwarding.

  - reset(autoPtr&&) as an alternative to operator=(autoPtr&&)

STYLE: avoid implicit conversion from autoPtr to object type in many places

- existing implementation has the following:

     operator const T&() const { return operator*(); }

  which means that the following code works:

       autoPtr<mapPolyMesh> map = ...;
       updateMesh(*map);    // OK: explicit dereferencing
       updateMesh(map());   // OK: explicit dereferencing
       updateMesh(map);     // OK: implicit dereferencing

  for clarity it may preferable to avoid the implicit dereferencing

- prefer operator* to operator() when deferenced a return value
  so it is clearer that a pointer is involve and not a function call
  etc    Eg,   return *meshPtr_;  vs.  return meshPtr_();
2018-02-26 12:00:00 +01:00
bcabe827f6 ENH: dedicated HashSetOps, HashTableOps namespaces
- relocated HashSetPlusEqOp and HashTablePlusEqOp to
  HashSetOps::plusEqOp and HashTableOps::plusEqOp, respectively

- additional functions for converting between a labelHashSet
  and a PackedBoolList or List<bool>:

  From lists selections to labelHashSet indices:

      HashSetOps::used(const PackedBoolList&);
      HashSetOps::used(const UList<bool>&);

  From labelHashSet to list forms:

      PackedBoolList bitset(const labelHashSet&);
      List<bool> bools(const labelHashSet&);
2018-03-06 11:41:34 +01:00
15f7260884 ENH: cleanup of ListOps, ListListOps. Adjustments to List, PackedList.
- relocated ListAppendEqOp and ListUniqueEqOp to ListOps::appendEqOp
  and ListOps::UniqueEqOp, respectively for better code isolation and
  documentation of purpose.

- relocated setValues to ListOps::setValue() with many more
  alternative selectors possible

- relocated createWithValues to ListOps::createWithValue
  for better code isolation. The default initialization value is itself
  now a default parameter, which allow for less typing.

  Negative indices in the locations to set are now silently ignored,
  which makes it possible to use an oldToNew mapping that includes
  negative indices.

- additional ListOps::createWithValue taking a single position to set,
  available both in copy assign and move assign versions.
  Since a negative index is ignored, it is possible to combine with
  the output of List::find() etc.

STYLE: changes for PackedList

- code simplication in the PackedList iterators, including dropping
  the unused operator() on iterators, which is not available in plain
  list versions either.

- improved sizing for PackedBoolList creation from a labelUList.

ENH: additional List constructors, for handling single element list.

- can assist in reducing constructor ambiguity, but can also helps
  memory optimization when creating a single element list.
  For example,

    labelListList labels(one(), identity(mesh.nFaces()));
2018-03-01 14:12:51 +01:00
ffd7b00ad5 ENH: fvMatrix::setReferences() single value variant 2018-03-02 13:27:34 +01:00
53ab527b45 ENH: added constexpr, noexcept for bool, Switch
- rationalized some method naming.
  Eg, c_str() instead of asText()
2018-03-03 20:32:49 +01:00
b4703f4a08 ENH: pre-cleanup of Xfer class (issue #639)
- This class is largely a pre-C++11 holdover, prior to having movable
  references.

- align internals with autoPtr instead of always unconditionally
  allocating memory. The valid() method can be used to check for a null
  pointer.

- Consolidate into a single file, in anticipation of future removal.
2018-03-04 21:38:33 +01:00
081783db6c ENH: add Xfer rvalue(), valid() methods
- rvalue() is a (transitional) means of converting Xfer content to a
  reference for move construct, move assign semantics.

- valid() method for consistency with autoPtr and tmp classes
2018-02-28 09:30:31 +01:00
ac3a8bc3cb BUG: simpleCoalParcelFoam - corrected dimensions of Qdot. Fixes #742 2018-02-23 09:04:16 +00:00
25339a5b49 ENH: minor cleanup of the Xfer class
- simplify structure, removed unused constuctors.

- transfer from base objects via '=' assignment removed as being too
  non-transparent

- add New factory method with perfect forwarding.
2018-01-26 15:53:57 +01:00
db1c1e89be ENH: avoid xfer on simple data types
- in many places can use move construcors or rely on RVO
2018-01-26 12:50:06 +01:00
fa3acc9955 ENH: make CompactListList swapable and move construct/assignable 2018-01-26 12:19:48 +01:00
d029f4c5c9 ENH: improved swap/transfer methods for FixedList
- the transfer method was previously a copy

- use std::reverse_iterator adaptors in FixedList
  This greatly reduces the amount of code and now avoids the array-bounds
  warning for FixedList::rend()

- use pointer arithmetic instead of dereferencing the internal array
2018-01-25 18:23:11 +01:00
8fc27e0ec8 ENH: make hashedWordList movable 2018-01-25 15:00:25 +01:00
915e8c9f35 ENH: remove Foam::Swap specializations for HashSet, HashTable
- without these will use the normal move construct + move assign.
  This is similarly efficient, but avoids the inadvertently having the
  incorrect Swap being used for derived classes.

STYLE: remove unused xfer methods for HashTable, HashSet

- unneeded since move construct and move assignment are possible
2018-01-25 12:13:16 +01:00
7ee93afe9e ENH: allow early completion in PackedBoolList::used()
- can stop producing content when the target number of entries has
  been reached.

- change return type to labelList instead an Xfer container.
  This allows return-value-optimization and avoids a surrounding
  allocation. This potentially breaks existing code.

- make PackedList and PackedBoolList moveable. Drop xfer wrappers.
2018-01-25 10:16:23 +01:00
294a3d05ba BUG: problems converting clouds to ensight or vtk format (closes #708)
- problems when the cloud was not available on all processors.

- NB: ensight measured data only allows a single cloud, but
  foamToEnsight writes all clouds.
2018-01-23 15:39:45 +01:00
2ebcb74dd2 BUG: reconstructPar ignores writeLagrangianPositions (fixes #702)
- The central InfoSwitch "writeLagrangianPositions" allows writing an
  additional Lagrangian "positions" file, but these were not being
  written by reconstructPar. These are now also written in reconstructPar
  if the central writeLagrangianPositions InfoSwitch is enabled.

NOTES

- "positions" are reconstructed from the processors "coordinates" file

- decomposePar will not attempt to create or redistribute any
  "positions" files
2018-01-17 13:38:24 +01:00
1510c0aeb5 ENH: interIsoFoam - added linkage against wave modelling library 2018-01-11 14:30:26 +00:00
2f32b586b5 ENH: PtrList, UPtrList cleanup
- rationalize iterators, reduce code duplication,
  improve assignment behaviour, moveable construct and assignment.
2018-01-09 13:15:50 +01: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
abb332df6d BUG: surfaceRedistributePar: hang in collated. See #686. 2017-12-28 12:45:49 +00:00
9eb00fde2c BUG: Fixing creating of turbulence after overset specific in createFields.H for overRhoPimpleDyMFoam 2017-12-22 12:53:40 -08: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
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
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
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
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
d20b981fef STYLE: add End markers to some tutorials and finiteArea utils (issue #671) 2017-12-19 14:59:24 +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