Commit Graph

14446 Commits

Author SHA1 Message Date
3ab5dec91f STYLE: consistent polyMesh owner/neighbour note
- had different spacing depending if defined from faces or shapes

- reinstates commit f7413b27b7 from history repository
2019-02-25 13:11:33 +01:00
b4938cec59 ENH: basic i-j-k Field container (#1216)
- this is a simple container for fields with i-j-k addressing.

  It does not support field operations directly, but is primarily
  intended to be used when assembling field information with i-j-k
  logic. After assembly, the field can be transferred to a regular
  field for normal operations.  Eg,

      IjkField<scalar> assemble({15, 16, 200});

      // .. fill in i-j-k fields

      Field<scalar> final(std::move(assemble));
      assemble.clear();   // be pedantic
      ...
2019-02-24 18:16:17 +01:00
2d26655a19 ENH: new PDRblockMesh mesh generation utility (issue #1216)
- While a rectilinear mesh can be created with blockMesh, not every mesh
  created with blockMesh will satisfy the requirements for being a
  rectilinear mesh.

  This alternative to blockMesh uses a single block that is aligned
  with the xy-z directions and specifications of the control points,
  mesh divisions and expansion ratios. For example,

    x
    {
        points  ( -13.28 -0.10 6.0 19.19 );
        nCells  (  10  12 10 );
        ratios  ( 0.2   1  5 );
    }

    y { ... }
    z { ... }

  With only one block, the boundary patch definition is simple and the
  canonical face number is used directly. For example,

    inlet
    {
        type    patch;
        faces   ( 0 );
    }
    outlet
    {
        type    patch;
        faces   ( 1 );
    }

    sides
    {
        type    patch;
        faces   ( 2 3 );
    }

    ...

- After a mesh is defined, it is trivial to retrieve mesh-related
  information such as cell-volume, cell-centres for any i-j-k location
  without an actual polyMesh.

STYLE: remove -noFunctionObjects from blockMesh

- no time loop, so function objects cannot be triggered anyhow.
2019-02-23 15:45:32 +01:00
9d5edd161c STYLE: mention -doc-source option under -help-full instead of under -help 2019-02-24 11:40:09 +01:00
36fa4b546f ENH: add labelVector2D definition
- can be useful for 2D mesh dimensioning or possibly for matrices
2019-02-22 18:11:00 +01:00
cd31a868ff ENH: support addPatches with PtrList 2019-02-22 18:11:00 +01:00
b5e4924eec ENH: additional PtrList constructor and memory management method
- PtrList::release() method.

  Similar to autoPtr and unique_ptr and clearer in purpose than
  using set(i,nullptr)

- Construct from List of pointers, taking ownership.

  Useful when upgrading code. Eg,

     List<polyPatch*> oldList = ...;
     PtrList<polyPatch> newList(oldList);
     ...

BUG: incorrect resizing method names (PtrDynList) in previously unused code
2019-02-22 15:55:17 +01:00
f0ff7627b1 BUG: incorrect increment introduced by c508da8f37 2019-02-22 13:36:39 +01:00
4f3e88c164 DEFEATURE: remove surfMesh samplers - superseded by sampledSurfaces
- this functionality was originally added to allow sampling of volume
  fields onto a surface in order to perform calculations on them.

  However, the sampling framework essentially mirrored the
  sampledSurface, but was less complete.

  It is now possible to store sampled surfaces on a registry and
  do calculation with their fields. This is the preferred method,
  and thus removing the surfMeshSample duplicate code.
2019-02-22 13:06:34 +01:00
9703e195da ENH: avoid updating sampled surfaces unless necessary 2019-02-22 12:51:23 +01:00
7844f3ffad ENH: avoid references to temporaries in surfaceWriter
- previously wrapped raw points/faces with a meshedSurfRef on input,
  but now handle the raw -> meshedSurf logic directly within
  surfaceWriter to avoid holding references to temporaries

  Since the updated meshedSurfRef is now modifiable, it can be used
  directly as a redirection mechanism within surfaceWriter.

- add explicit close() in destructor
2019-02-22 11:40:58 +01:00
a6e4e4b8f4 ENH: additional constructors and methods for meshedSurfRef
- construct null, clear() and reset() methods
2019-02-22 11:10:53 +01:00
4f18978f02 STYLE: pass points, faces instead of meshedSurfRef in surfaceFieldValue
- removes a layer of opacity and may help with future restructuring
2019-02-22 11:08:07 +01:00
3390103285 BUG: new surface writer loses serial/parallel preference (fixes #1214) 2019-02-22 10:21:01 +01:00
b1679a4081 STYLE: improved layout and bool vs Switch for some CloudFunctionObjects
- add output verbosity in debug mode
2019-02-22 09:29:08 +01:00
54b5afa385 ENH: minor improvements to fvMeshDistribute (#1211)
- sorted field names for consistency, remove some local variables
2019-02-20 15:02:59 +01:00
9d3f936311 ENH: trap negative blockMesh expansions and treat as their inverse
- A negative expansion ratio is geometrically invalid and will
  normally cause issues (FatalError).
  However, we can trap this type of input and interpret it as the
  inverse expansion ratio - ie, the expansion ratio in the opposite
  direction. This can be especially convenient when generating a blockMesh
  with a symmetrical expansion. It permits using the same expansion
  ratio (with a sign change) instead of providing the reciprocal values
  manually.

COMP: revert demand-driven point creation in blockMesh (db9b35b50d)

- appears to have caused a dangling reference on some systems

ENH: add a lightweight ijkAddressing class

- it can be used for an i-j-k to linear lookup of meshes or fields,
  where applicable.
2019-02-21 19:04:22 +01:00
c8e44e69b8 BUG: Fixing entry consistency in PhaseMixtureEThermo.C
and reading dpdt in one basicThermo constructor
2019-02-20 16:45:12 -08:00
7390849652 ENH: extended runTimePostProcessing (#1206)
- Extended runTimePostProcessing to include access to "live"
  simulation objects such a geometry patches and sampled surfaces
  stored on the "functionObjectObjects" registry.

- Add 'live' runTimePostProcessing of cloud data.
  Extracts position and fields from the cloud via its objectRegistry writer

- For the "live" simulation objects, there are two new volume filters
  that work directly with the OpenFOAM volume fields:
      * iso-surface
      * cutting planes
  Both use the VTK algorithms directly and support multiple values.
  Eg, can make multiple iso-levels or multiple planes parallel to each
  other.

- When VTK has been compiled with MPI-support, parallel rendering will
  be used.

- Additional title text properties (shadow, italic etc)

- Simplified handling of scalar-bar and visibility switches

- Support multiple text positions. Eg, for adding watermark text.
2019-02-13 11:22:46 +01:00
4eb35f7ba5 ENH: replace surfMesh/fields support with polySurface/fields support (#1206)
- fits better into the general sampling framework, improves flexibilty
  and allows code reduction.

ENH: include surface fields on sampledSurfaces that support it
2019-02-12 13:54:02 +01:00
005f2e8918 ENH: improved sample surfaces and surface writers (#1206)
- The writers have changed from being a generic state-less set of
  routines to more properly conforming to the normal notion of a writer.
  These changes allow us to combine output fields (eg, in a single
  VTK/vtp file for each timestep).

  Parallel data reduction and any associated bookkeeping is now part
  of the surface writers.
  This improves their re-usability and avoids unnecessary
  and premature data reduction at the sampling stage.

  It is now possible to have different output formats on a per-surface
  basis.

- A new feature of the surface sampling is the ability to "store" the
  sampled surfaces and fields onto a registry for reuse by other
  function objects.

  Additionally, the "store" can be triggered at the execution phase
  as well
2019-02-07 18:11:34 +01:00
edcef2390d ENH: added polySurface storage with fields (#1206)
- This simple container provides a means of storing faces/points
  (ie, surfaces) with registered dimensioned fields.

  The main registry is used to hold face-based data, a secondary
  sub-registry is used to hold point-based data. This allows the same
  name for CellData and PointData fields without name collisions.
2019-01-24 00:03:26 +01:00
db9b35b50d ENH: minor blockMesh improvements
- avoid potential ambiguities in naming of mesh faces/edges
  vs. block faces/edges

- additional methods characterizing the number of faces
  (internal, boundary, total) associated with a blockDescriptor

- cellLabel() accessor and checkIndex() methods

- restore demand-driven behaviour of block, cache the calculated cells
  and refactor generation of block boundary faces to improve potential
  reuse.
2019-02-17 19:29:22 +01:00
448310ea83 ENH: support VTK output of point ids
- can be useful for diagnosing mesh internals and the locations of
  decomposed cells.
2019-02-17 15:09:36 +01:00
5e286a85eb STYLE: declare edge::operator[]
- already available from the FixedList inheritance, but provide
  explicitly in edge to allow future adjustment of the inheritance
  (#1205)
2019-02-16 16:21:59 +01:00
d5edd174b2 ENH: improvements to label/scalar ranges
- construct from MinMax, optional start index for identity factory
  method to match Foam::identity()

- use GREAT instead of VGREAT in inverted scalarRange.
  Consistent with boundBox - to reduce the potential of overflow
  if calculating the span.

- add min()/max() methods to labelRange
2019-02-16 16:08:43 +01:00
69b55bf26d ENH: exact: new patchDistMethod 2019-02-18 15:31:42 +00:00
77e51249c7 ENH: distributedTriSurfaceMesh: auto-decomposition; inside/outside support 2019-02-18 13:29:01 +00:00
c3a4648452 COMP: Removed unused variable 2019-02-18 12:42:38 +00:00
e3786b888b COMP: Updated for 64 bit labels 2019-02-18 11:20:40 +00:00
833a8c130b COMP: Added randomProcesses-based function objects to build 2019-02-18 11:20:18 +00:00
7f6fed681d ENH: for-range, forAllIters() ... in genericPatchFields/
- reduced clutter when iterating over containers
2019-01-07 09:20:51 +01:00
efe448504e ENH: for-range, forAllIters() ... in lagrangian/molecularDynamics/
- reduced clutter when iterating over containers
2019-01-07 09:20:51 +01:00
c508da8f37 ENH: for-range, forAllIters() ... in lagrangian/intermediate/
- reduced clutter when iterating over containers
2019-01-07 09:20:51 +01:00
0fadde13ff ENH: for-range, forAllIters() ... in lagrangian/ basic
- reduced clutter when iterating over containers
2019-01-07 09:20:51 +01:00
d06177c256 ENH: for-range, forAllIters() ... in thermophysicalModels/
- reduced clutter when iterating over containers
2019-01-07 09:20:51 +01:00
c90cc36d61 ENH: for-range, forAllIters() ... in OpenFOAM/
- reduced clutter when iterating over containers
2019-01-07 09:20:51 +01:00
405afd25af ENH: for-range, forAllIters() ... in finiteVolume/
- reduced clutter when iterating over containers
2019-01-07 09:20:51 +01:00
6a82faa911 ENH: for-range, forAllIters() ... in mesh/
- reduced clutter when iterating over containers
2019-01-07 09:20:51 +01:00
608b2607f3 ENH: for-range, forAllIters() ... in sampling/, surfMesh/
- reduced clutter when iterating over containers
2019-01-07 09:20:51 +01:00
622aebeecd STYLE: remove static from functions in vtk::Tools namespace
- a leftover from the change from class to namespace
2019-02-14 16:58:28 +01:00
288015eb12 ENH: additional vtk::Tools methods for cloud-related meshes
- the Tools::Vertices() method for creating a vtkPolyData with the
  given points and a corresponding Verts for the points.
2019-02-14 14:42:56 +01:00
c782877768 ENH: HashSet::test() for method name compatibility with bitSet, boolList 2019-02-14 13:15:10 +01:00
0f54e99f38 ENH: wordRes::uniq() removes all duplicates
- previously just removed duplicate literals, but now remove any
  duplicates.

- Replace previous wordHashSet implementation with a linear search
  instead. The lists are normally fairly small and mostly just have
  unique entries anyhow. This reduces the overall overhead.
2019-02-14 11:03:04 +01:00
142e159fec ENH: ensure self-assignment and self-swapping are a no-op for string types
- simplifies their use when reordering lists etc.
  (word, fileName, keyType, wordRe)

- "unfriend" IO operators for string types. They require no internal access

- add compile/uncompile methods to keyType for symmetry with wordRe

- when outputting keyType/wordRe, be more explicit about them using
  writeQuoted()
2019-02-14 09:06:43 +01:00
e08e23aff4 ENH: scotchDecomp: check validity of processorWeights. Fixes #1207. 2019-02-14 12:40:25 +00:00
de79c6377b ENH: for-range, forAllIters() ... in meshTools/
- reduced clutter when iterating over containers
2019-01-07 09:20:51 +01:00
a9ff5cf922 ENH: for-range, forAllIters() ... in functionObjects/
- reduced clutter when iterating over containers
2019-01-07 09:20:51 +01:00
6c68c4fe13 STYLE: reduced nesting on return branching 2019-02-13 08:06:36 +01:00
f3d9c8e2be STYLE: minor adjustments for code formatting and comments 2019-02-12 20:18:06 +01:00