- in specific cases it can be useful to suppress searching the instances.
For example, if one only wishes to check if a "points" is available at
the given time instance, without searching backwards through all
times.
- Avoids possible discrepancy when the user selects non-coincidental
values for executeInterval and writeInterval.
- zeroGradient and ddt2 function objects
BUG: resolve some decomposeParDict problems (issues #60, #265).
- Cleanup/centralize handling of -decomposeParDict by relocating
common code into argList. Ensures that all processes receive
identical information about the -decomposeParDict opton.
- Only use alternative decomposeParDict for simpleFoam/motorBike
tutorial so that this will be included in the test loop for snappy.
- Added Mattijs' fix for surfaceRedistributePar.
See merge request !73
Surface declutter - issue #294
Removing various clutter from surfMesh and triSurface
- unused classes/files (backup copies on non-release repo)
- relocate some triSurface-related classes to where they make more sense, and where they can be reused.
- improve handling of various face types in MeshedSurface and UnsortedMeshedSurface (to bridge the gap to triSurface)
- improve transfer methods for reclaiming/reusing surface allocations
See merge request !77
- A special purpose MeshedSurface that exposes the stored values
for direct modification.
- Its usage should be restricted to special cases where the surface
needs modifications as an atomic operation.
- Now that the metisDecomp uses the metis definition for float/double,
do not need to verify the scalar sizes.
Note:
- could drop precision qualifier for metis, scotch installation
(include, lib) as being unneeded, but it is simpler to keep them
and continue to use the FOAM_EXT_LIBBIN path
(in case other ThirdParty software is compiled with different
precisions).
- the surfMesh classes where originally designed with limited
(protected) access to the underlying components. This is to
avoid unintentional direct changes, since these can quickly
lead to inconsistencies with the topology addressing etc.
However, if we wish to efficiently adjust surfaces, it is useful
to modify the components directly.
The compromise is to provide 'xfer' methods:
- xferFaces()
- xferPoints()
- xferZones()
These transfer the contents to an Xfer container for reuse, while
also resetting the topology addressing. To apply the changes,
the reset() method is used.
- ensure that MeshedSurface and UnsortedMeshedSurface can also work
with labelledTri faces.
- nTriangles() convenience method for meshed surfaces
- MeshedSurface::addZonesToFaces() method to copy zone information
into the labelledTri per-face region storage.
The goal is to replace the triSurface reading routines with
run-time selectable ones from surfMesh.
- triFace() now initialized with '-1', which makes it behave
equivalently to face(label).
- supply default region=0 for some labelledTri constructors.
This allows labelledTri to work more like a triFace and makes it
easier to use in templated methods and eases conversion from
triFace to a labelledTri.
- labelledTri(const labelUList&) can now be used when converting
from a face. It can have 3 values (use default region)
or 4 values (with region).
- face, triFace, labelledTri now all support construction with
initializer lists. This can be useful for certain types of code.
Eg,
triFace f1{a, b, c};
face f2{a, b, c};
labelledTri f3{a, b, c};
Work without ambiguity.
Also useful for templated methods:
FaceType f{remap[a], remap[b], remap[c]};
- Cannot pass through to underlying list constructor directly.
- As this constructor was broken, there seem to be a number of
workarounds scattered in the code. Could revisit them in the future
as part of code-style:
edgeMesh(const Xfer<pointField>&, const Xfer<edgeList>&);
CompactIOField(const IOobject&, const Xfer<Field<T>>&);
GlobalIOField(const IOobject&, const Xfer<Field<Type>>&);
IOField(const IOobject&, const Xfer<Field<Type>>&);
- Condition is there to catch cases where the vtkSurfaceFormat returns
no zones (which should never be the case), but assigns a fallback
value without first resizing.
- This format is fortunately little-used (or never used) since its
inception.
Using raw stream operators to write zones, points and faces in a
single file was not well thought out - the output content varies
with the Face template type (face, triFace, labelledFace), which
makes it not very robust at all.
The static read in OFSsurfaceFormat also has a bug - keeping
transcribed faces from being passed through.
Conclusion: removing it makes more sense that repairing and still
not having something good.
Do retain stream operators for MeshedSurface and UnsortedMeshedSurface,
since they are useful for passing around data
(eg, between processors), but they shouldn't be used for files.
- Cannot test if these older reader modules actually build,
owning largely to build issues since with paraview 3.14 (Feb 2012)
and paraview 3.98 (Dec 2012) themselves.