- 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.
Note: classes are prefixed with 'foamVtk' instead of 'vtk' to avoid potential
conflicts with VTK itself.
foamVtkCore
~~~~~~~~~~~
- General very low-level functionality.
foamVtkPTraits
~~~~~~~~~~~~~~
- Traits type of functionality for VTK
foamVtkOutputOptions
~~~~~~~~~~~~~~~~~~~~
- The various format output options as a class that can be passed to
formatters etc.
foamVtkCells
~~~~~~~~~~~~
- Intended for unifying vtkTopo and PV-Reader code in the future.
- Handles polyhedron decompose internally etc
foamVtkOutput, foamVtkFormatter
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Output helpers.
- Selector for individual formatters.
Currently write all scalar data a 'float' (not 'double'). Can
revisit this in the future.
Now the functionality to write single graph files or log files (vs time)
may be used in the creation of any form of functionObject, not just
those relating to a mesh region.
- Follow similar pattern as per boost/CGAL with the '*-none' to disable,
and '*-system' for system installations.
Also support central non-ThirdParty installations by specifying the
version as "*-system", but also providing the fully qualified
*_ARCH_PATH too.
--
ENH: Verify label and scalar sizes used in the metis header.
- ensure they match with expected values, which can be obtained via
the OpenFOAM definitions for WM_LABEL_SIZE and WM_PRECISION_OPTION
- For merging meshedSurf content from parallel sources.
Ensures zoneIds are properly preserved for sampling in parallel.
Current state
~~~~~~~~~~~~~
Current producers of the region information:
* sampledTriSurfaceMesh
Current consumers of the region information:
* nastran writer. The zone ids passed through as PSHELL Ids (with offset 1).
Limitations
The per-face region association is preserved, but the face/element
sort order gets lost in reconstruction. Would need to attach
additional information to the sampled surface and use that for
sorting, but this would also imply that sampled values be written
indirectly (or resorted) too to match the order. Zone ids are passed
through, but not their names. After reconstruction, zone ids are no
longer contiguous. Re-sorting (as mentioned above) would solve this
too, but again at the cost of more complexity when writing.
- Allows passing of additional information (per-face zone ids) or possibly
other things, while reducing the number of arguments to pass.
- In sampledTriSurfaceMesh, preserve the region information that was
read in, passing it onwards via the UnsortedMeshSurface content.
The Nastran surface writer is currently the only writer making use
of this per-face zone information.
Passing it through as a PSHELL attribute, which should retain the
distinction for parts. (issue #204)
- use surfFaces() to return the templated list of faces.
This frees up the method 'faces()' to be used as a virtual method,
which will be needed at a later stage.
The diameter of the drops formed are obtained from the local capillary
length multiplied by the \c dCoeff coefficient which defaults to 3.3.
Reference:
Lefebvre, A. (1988).
Atomization and sprays
(Vol. 1040, No. 2756). CRC press.