Commit Graph

24233 Commits

Author SHA1 Message Date
56b5234fbc ENH: store concrete sampled isoSurface faces/points as member data
- was previously via inheritance, but using member data instead
  supports a more flexible internal switching of the storage. It also
  ensures that data access remains safe, even in the absence of
  an isoSurface.
2020-12-08 13:31:23 +01:00
ccde68d410 ENH: cellZones support for isoSurface cell/topo sampling variants (#1678)
- better alignment of sampling Cell/Point/Topo inputs

- make exposedPatchName optional for isoSurface, cuttingPlane. This
  was a holdover requirement from an older version of fvMeshSubset
2020-12-08 13:31:23 +01:00
9da5215786 ENH: add sampledSurface::sampleOnPoints
- loop for interpolating volume elements to face points,
  which removes duplicate code in several other places
2020-12-08 13:31:22 +01:00
2f6082712e ENH: modernize some code constructs in isoSurface
- add debug field to isoSurfaceTopo
- don't need dynamic field for new points

- reduce code in sampledIsoSurfaceCell
2020-12-08 13:31:22 +01:00
811a83599e CONFIG: change default distanceSurface algorithm from 'cell' to 'topo'
- yields cleaner surfaces with few cuts.

  Can use isoMethod keyword to select cell/point/topo if they prove
  better for any particular case.

CONFIG: change default cuttingPlane algorithm from 'cell' to 'topo'
2020-12-08 13:31:22 +01:00
b1a27d3d00 ENH: rename 'classic' Foam::isoSurface as Foam::isoSurfacePoint
- better distinction between types of algorithms.
  Easier for future deprecation/replacement.
2020-12-08 13:31:22 +01:00
be783632f2 ENH: isoSurfaceParams
- bundles selection and control parameters used when creating
  iso-surfaces. This simplifies selection and specification

- drop old compatibility handling of "cell" as a bool

- harmonize filter/regularisation flags for iso-surface

- for dictionary input, accept "isoMethod" and "isoAlgorithm" as being
  synonymous. Using "isoMethod" is less subject to typing errors.
2020-12-08 13:31:22 +01:00
61dd6aa701 ENH: code consistency in sampling
TUT: dictionary form of surfaces instead of list
2020-12-08 13:18:38 +01:00
4421021e99 ENH: support use of bitSet for regionSplit 2020-12-08 13:18:38 +01:00
0b68f14f7d ENH: more explicit about handling empty matchers for index lookup
- for boundary meshes, zones etc. The behaviour with an empty matcher
  was either not properly documented, and looped through all
  names just to establish there was no match.

STYLE: removed redundant typedefs for point fields
2020-12-08 13:18:34 +01:00
df74e8448c ENH: robuster fileOperations splitProcessorPath
- robuster matching behaviour when encountering paths that themselves
  contain the word "processor" in them. For example,

    "/path/processor0generation2/case1/processor10/system"
    will now correctly match on processor10 instead of failing.

- use procRangeType for encapsulating the processor ranges

- provision for information of distributed vs non-distributed roots.
  The information is currently available from the initial setup, but
  can useful to access directly within fileOperation.

STYLE: modernize list iteration
2020-12-08 11:58:28 +01:00
a939042e1b ENH: add bitSet::null() and clarify some documentation
- the NullObject singleton can also be cast to a bitSet
  (sufficient size and bit-pattern). Useful for places that
  need to hold a reference on construction
2020-12-08 11:58:28 +01:00
08efeb1a03 ENH: define UPstream rangeType
- UPstream::rangeType as typedef for IntRange<int> for better use
  semantics
2020-12-08 11:58:27 +01:00
e697ac277f CONFIG: respect WM_QUIET=false as a logic value in wmake
- Makefile only checks set/unset, so handle 'false' within wmake
  itself
2020-12-08 11:58:27 +01:00
b966b7cd4b ENH: static test methods for matching simple cell shapes
- (tet, pyr, hex) can be identified from their number of faces
  and vertices. For these common shapes can use static `test()`
  method instead of the virtual isA() method.

  This is much cheaper for calling on an individual basis since
  it avoids the overhead of constructing an object.

ENH: tetCell edge/reverseEdge (already had tetEdge)
2020-12-08 11:58:27 +01:00
b7c8a45de2 STYLE: bracket instead of braces on List constructors
- avoid potential future mistakes if someone adds a sizing dimension
  and finds they have inadvertently called construct labelList with
  `{std::initializer_list<label>}` instead of `label`
2020-12-08 11:58:27 +01:00
7b5c6868dd BOT: Update contributors file 2020-12-08 11:58:27 +01:00
cb924ec3d2 Merge branch 'issue-1900-atmwallfunction-double-value-entry' into 'develop'
BUG:  atm wall functions: fix double "value" entry issue

See merge request Development/openfoam!395
2020-12-08 09:36:13 +00:00
1bc2ffad99 BUG: atm wall functions: fix double "value" entry issue (#1900)
STYLE: atm wall functions: use auto and bool types wherever possible
  TUT: atmosphericModels: changes for style consistency
2020-12-08 09:33:44 +00:00
14e86437ae Merge branch 'feature-recycle-particles' into 'develop'
Feature recycle particles

See merge request Development/openfoam!396
2020-12-07 09:37:32 +00:00
74ada2aa7f TUT: New recycleParticles tutorial case
Shows an example of the new recyclePatchInteraction model
- particles that escape from the outlet are recycled back into the
  domain via the second inlet

Signed-off-by: Kutalmis Bercin <kutalmis.bercin@esi-group.com>
2020-12-04 13:40:28 +00:00
5a71667f45 ENH: Lagrangian - new parcel recycle patch interaction model
Parcels that hit an 'outflow' patch are recycled to an 'inflow' patch, with
optional:
- recycle fraction < 1

Example usage:

    RecycleInteractionCoeffs
    {
        recyclePatches
        (
            (outlet1 inlet1)
            (outlet2 inlet2)
        );

        recycleFraction     0.8; // [0-1]
    }

Signed-off-by: Kutalmis Bercin <kutalmis.bercin@esi-group.com>
2020-12-04 13:40:28 +00:00
b25c4611cb ENH: Cloud patch interaction model updates
- MultiInteraction: updated to call info() function of child models
- PatchInteractionModel: added postEvolve hook
- KinematicCloud: call patchInteraction() postEvolve hook
2020-12-04 13:40:28 +00:00
7d897ee7a3 Merge branch 'issue-1871-refPtr-adjointTurbulence' into 'develop'
Issue 1871 - simplifies adjoint turbulence code by using refPtr instead of combined autoPtr/tmp

See merge request Development/openfoam!385
2020-12-04 07:33:40 +00:00
fcf3f8ec17 ENH: replace autoPtr/tmp combination with refPtr (issue #1871)
- reduces some code complexity.
2020-12-03 19:17:59 +00:00
5ad2fe621a Merge branch 'updated-surface-handling' into 'develop'
Updated surface handling

See merge request Development/openfoam!394
2020-11-30 17:13:39 +00:00
029b1373a3 DOC: document writeFile updateHeader flag (fixes #1942) 2020-11-30 13:59:10 +01:00
ab692caf7c ENH: support multiple weights on some field function objects (#1930)
- weight fields are combined by multiplication

  - volFieldValue:
    * 0-N scalar fields

  - surfaceFieldValue:
    * 0-N scalar fields
    * 0-1 vector fields

  In some cases this can be used to avoid creating additional
  fields.

      weightFields  (rho U);
  vs.
      derivedFields (rhoU);
      weightField   rhoU;
2020-11-30 13:59:10 +01:00
f8d08a805b ENH: additional handling for out-of-range sampling (#1891)
- when sampling onto a meshed surface, the sampling surface may be
  outside of the mesh region, or simply too far away to be considered
  reasonable.

  Can now specify a max search distance and default values for samples
  that are too distant.
  If a default value is not specified, uses Type(Zero).

  Eg,

      maxDistance     0.005;
      defaultValue
      {
          "p.*"   1e5;
          T       273.15;
          U       (-100 -100 -100);
      }
2020-11-30 13:59:10 +01:00
a947e9ddcf ENH: new sampled faceZones (#1874) 2020-11-30 13:59:10 +01:00
90fe49e8e5 ENH: adjust sampledPatch (#1874) for similarity with surfaceFieldValue 2020-11-30 13:59:10 +01:00
6cf8151817 ENH: support surfaceFieldValue on multiple faceZones or patches (#1874)
- additional "names" entry to specify a word/regex list of selections
  For example,
  {
      type    patch;
      name    inlets;
      names   ("inlet_[0-9].*" inlet);
  }

- if "names" exists AND contains a literal (non-regex) that can be used
  as a suitable value for "name", the "name" entry becomes optional.
  For example,
  {
      type    patch;
      names   ("inlet_[0-9].*" inlet);

      // inferred name = inlet
  }

- reduce some overhead in surfaceFieldValue

TUT: surfaceFieldValue on patches : reactingParcelFoam/verticalChannel
2020-11-30 13:59:10 +01:00
f82af7cb2a ENH: initial support for abaqus surface sampled output (#1600)
- supports geometry and field-specific scaling, separate geometry and
  fields. Beta-feature for suppressing geometry output entirely.
2020-11-30 13:59:10 +01:00
1d398d8cae ENH: handle abaqus SURFACE input (#1600)
- read surfaces which are defined in terms of solid element sides. Eg,

```
  *ELEMENT, TYPE=C3D4, ELSET=...
  1, ...
  2, ...

  *SURFACE, NAME=Things, TYPE=ELEMENT
  1, S1
  2, S1
```

  The element and side number are encoded as a synthetic face id
  according to

      -(10 * elemId + sideNum)

  but the underlying solid geometry is discarded, since there is no
  reasonable way to pass it through the surface sampling mechanism.
2020-11-30 13:59:10 +01:00
986199f897 ENH: align bitSet and FixedList methods names
- bitSet and PackedList fill() as per boost dynamic_bitset.
  Silently deprecate assign(val), which is potentially confusing
  with other forms of assign().

- FixedList fill() as per std::array.
  Add missing assignment from Foam::zero

- minor code simplication in bitSet and PackedList

STYLE: fix typo in comment, qualify Foam::zero
2020-11-30 13:59:07 +01:00
66c8607d5f CONFIG: trap -with-bear, but continue argument processing
- makes it easier to combine with -log options etc.
2020-11-30 10:21:57 +01:00
fc6a5a6dad GIT: correct submodule indices 2020-11-28 21:17:35 +01:00
7830cc503e BUG: Fix sign in Lee model. Fixes #1934. 2020-11-27 19:46:08 -08:00
c879c24412 ENH: redistributePar: suppress warning. Fixes #1937. 2020-11-26 13:46:50 +00:00
9c86b5d722 ENH: robustness improvements for wmakeFunctions
- relocated module-prefix handling to wmakeFunctions
2020-11-26 12:54:46 +01:00
a50047bbcc ENH: add hook for bear frontend to create json output (#1936)
Example usage,

   wmake -with-bear src/OpenFOAM
   src/Allwmake -with-bear -s -j

- bin/tools/vscode-settings

  Emit some json content suitable for setting up Visual Studio Code
  for use with OpenFOAM.

  For example,
      bin/tools/vscode-settings > .vscode/settings.json

Ideas from Volker Weissman
2020-11-26 12:54:46 +01:00
fb7afd5f96 TUT: fix missing line ending and wrong blockMeshDict vertex location 2020-11-26 02:15:20 +01:00
024d22cb64 BUG: missing nullptr check in Function1/PatchFunction1 fallback logic 2020-11-26 01:53:15 +01:00
b4eb214d56 BUG: transformPoints flagged zero or negative scaling as an error
- additional check was introduced by 51b2490258, but scaling with
  zero is useful for flattening a mesh
2020-11-26 01:04:55 +01:00
9fe09ad21d ENH: installation helpers
----
install-dirs: a general directory installer

  Copy installs non-binary (platform) directories.
  Eg,

      install-dirs -prefix=... -devel
      install-dirs -prefix=... -default -no-app

----
install-platform: a platform (binary) installer

  This is primarily driven by the need to install into system mpi
  directories. The problem noted in issue #1893 is caused by the
  rpm-mpi-hooks (fedora and redhat-8).

  For the additional mpi library qualifier (openmpi-x86_64) to be
  added to the requirements, the mpi-specific libraries (eg,
  libPstream.so) need to be installed in the mpi system directory
  (eg, /usr/lib64/openmpi).

  However, then need symlinks from the system locations back to our
  local directories to ensure that the libraries are correctly found
  via our LD_LIBRARY_PATH and we don't get dummy libraries.

----
update-mpi-links: a post-install update hook

  Expected paths are registered as persistent information into the
  hook during packaging. Triggering the hook after installation
  completes the creation of the symlinks.

Normal usage,
```
prefix="/tmp/local-install/openfoam"

bin/tools/install-dirs -prefix="$prefix" -common
bin/tools/install-platform -prefix="$prefix"
```
Installs
 - /tmp/local-install/openfoam/META-INFO
 - /tmp/local-install/openfoam/bin
 - /tmp/local-install/openfoam/etc
 - /tmp/local-install/openfoam/platforms/linux64GccDPInt32Opt/bin
 - /tmp/local-install/openfoam/platforms/linux64GccDPInt32Opt/lib

Can also place architecture-dependent bits elsewhere,
```
prefix="/tmp/local-install/openfoam"
multi_arch="$(dpkg-architecture -qDEB_TARGET_MULTIARCH)"

bin/tools/install-dirs -prefix="$prefix" -common
bin/tools/install-platform -exec-prefix="$prefix/$multi_arch"
```
Installs
 - /tmp/local-install/openfoam/META-INFO
 - /tmp/local-install/openfoam/bin
 - /tmp/local-install/openfoam/etc
 - /tmp/local-install/openfoam/x86_64-linux-gnu/bin
 - /tmp/local-install/openfoam/x86_64-linux-gnu/lib

Can use it to flatten out platforms entirely,
```
prefix="/tmp/local-install/openfoam"
bin/tools/install-dirs -prefix="$prefix" -common
bin/tools/install-platform -exec-prefix="$prefix"
```
Installs
 - /tmp/local-install/openfoam/META-INFO
 - /tmp/local-install/openfoam/bin
 - /tmp/local-install/openfoam/etc
 - /tmp/local-install/openfoam/lib
2020-11-25 21:31:22 +01:00
c2bf9e1cc8 CONFIG: bump API to 2011
- mostly to reflect changes in config prefs and output methods
2020-11-25 21:31:02 +01:00
52c6642a4c Merge remote-tracking branch 'origin/master' into develop 2020-11-25 21:30:49 +01:00
1fa4221bc8 COMP: fix label ambiguity 2020-11-25 19:53:03 +01:00
501cd35351 ENH: consistent naming for ZoneMesh lookup method
- findZone(), cfindZone() to return pointer to existing or nullptr if
  not found. This fits with methods such as findObject() etc for other
  classes and can simplify code without checks for '-1' as not found.

- use simpler constructors for empty cell/face/point zones
2020-11-25 19:53:03 +01:00
be7a3f21be ENH: add BitOps::set(), unset() functions for boolList, labelHashSet 2020-11-25 19:53:03 +01:00