- Include Sets/Zones now scans immediately to refresh the list of available
mesh parts. Unfortunately, this also causes the object panel to be
modified, even although the selection doesn't acutally need to change.
This seems to be due to how the pqNamedWidgets are getting the information
from the proxy properties. I can't figure if it's possible to acheive what
I want, but we can probably live with the current implementation.
After IncludeZones, simply us 'Reset' to undo the spurious GUI changes.
Works fine - just looks a bit silly.
- Added 'Refresh' button to rescan for new times/fields. Good for
post-processing ongoing calculations without exiting the reader.
- Added 'Skip Zero Time' checkbox: many (some) calculations have
data missing at time=0 (eg, rho, lagrangian, etc). This provides
a convenient way to skip over this time.
- Future?:
We could probably pick up favourite default values for these switches from
~OpenFOAM/controlDict, from a case system/paraview, or simply by making
the casename.OpenFOAM also be an OpenFOAM dictionary with the settings.
- in preparation for adding an optional '-reconstruct' to a few utilities
re-use as -lreconstruct library
- move related stuff there too
src/decompositionMethods/decompositionMethods
-> src/parallel/decompositionMethods
- added missing namespace qualifiers
- Show Point Numbers as is_internal="1" and hook directly into a QT-checkbox
and thus bypass modifying the reader state.
- Same for Cache Mesh and Show Patch Names
- apply scaleFactor (eg, mm->m) in PV3 reader - this looks better when
overlaying with other objects
- stop segfault when paraview exits without deleting readers first
- remove patch/point text labels upon deletion
- combined client/server plugin instead of separate .so files
first experiment with adding panel decorations
- directory reorganization
- still using the same version of the reader API (2.03)
- this seems to solve strange issues with genericPatchField symbols,
but it still doesn't get the reader module working.
- added in the release information (the build string)
- using a filter such as clip-plane on a multi-port source causes
inconsistent UPDATE_TIME_STEPS() on each port. This looks like a
VTK/Paraview bug to me.
Workaround: check both ports and take the first one that has a value
different than the last time set.
- objectRegistry gets a rename() that also adjusts the dbDir
- cloud reworked to use static variables subInstance and defaultName.
This avoids writing "lagrangian" everywhere
string fixes
- avoid masking of std::string::replace in string.H
- avoid old strstream in PV3FoamReader
- OSspecific: chmod() -> chMod(), even although it's not used anywhere
- ListOps get subset() and inplaceSubset() templated on BoolListType
- added UList<bool>::operator[](..) const specialization.
Returns false (actually pTraits<bool>::zero) for out-of-range elements.
This lets us use List<bool> with lazy evaluation and no noticeable
change in performance.
- use rcIndex() and fcIndex() wherever possible.
Could check if branching or modulus is faster for fcIndex().
- UList and FixedList get 'const T* cdata() const' and 'T* data()' members.
Similar to the STL front() and std::string::data() methods, they return a
pointer to the first element without needing to write '&myList[0]', recast
begin() or violate const-ness.
- can use 'XX.empty()' instead of 'XX.size() == 0', 'XX.size() < 1' or
'XX.size() <= 0' or for simpler coding.
It also has the same number of characters as '!XX.size()' and /might/ be
more readable
- many size checking had 'XX.size() > 0', 'XX.size() != 0', or 'XX.size() >= 1'
when a simple 'XX.size()' suffices
Pro: Good delimitation. Good visual distinction. No confusion with normal
cases, since '{}' characters are excluded by !word::valid()
Con: Possible quoting issues when creating directly instead of via paraFoam,
but seemed to work fine with bash TAB completion.
- handling multiple regions require multiple readers
- a region is currently recognized by the file name, anything after the
'=' delimiter (eg, "case=region.OpenFOAM") is used to determine the
mesh region, but might be changed in the future
eg, 'case%region', 'case^region', 'case~region', 'case{region}' ...
Note:
- Having a separate reader for each region instead attempting to handle
all the mesh regions in a single reader is the better solution.
It is not only simpler, but allows distinct field selections for
each region
Todo:
- Haven't a test for Lagrangian and multi-regions.
- streamlined code somewhat, minor attempt to reclaim some memory
- now use "mesh parts" for patches/zones/sets/etc throughout to avoid
ambiguity with mesh regions
- collect superCells and addPointCellLabels in a class. The old version
actually seemed to have overwritten the addPointCellLabels with each
cellSet/cellZone. This means that part of the pointFields would be trashed
in the combination of polyhedral cells, cellSets/cellZones and internalMesh
- polyDecomp information for muitiple mesh regions, but not yet exploited
- pointFields now working for cellZones/cellSets
- extroplating fields onto walls also works as expected for interpolated
pointFields
- added tooltips to reader GUI
TODO:
- pointFields (real and interpolated) for faceSets/faceZones
- various GUI properties are now animateable="0"
(meaning they no longer show up on the time-line)
- move reader switches to the bottom of the GUI
- move Lagrangian fields above pointFields for better visibility
- basic support for multiple clouds
- filter fields based on selection before looping over all the geometry bits
- mesh conversion functions now return VTK mesh types for easier handling
- faceZones mesh conversion had points/faces allocation reversed
- updateInfo with every call to setTime() that changes the timeIndex
This seems to be the only way to notice Lagrangian fields
- restore displaying patchnames that got forgotten in the last commit
- misc reorganization
- normal mesh data on port0
- Lagrangian data on port1
- no fixed block numbers for dividing internalMesh, patches, zones etc.
This helps avoid ugly gaps in the multiblock output
- avoid segfault if Lagrangian fields are converted without positions
TODO:
- can we label the output ports?
- the selection of Lagrangian data and fields is wonky.
- added printMemory() method to aid debugging memory used
- call UpdateInformation() if the mesh has changed
- automatic activation of "internalMesh", "p", "U"
is suppressed if a fvMesh is cached. Otherwise,
appearing/disappearing volFields can cause a crash
Note:
The message "had to make up a selection value" that sometimes occurs
seems to be paraview related (see paraview mailing list),
- vtkPV3Foam get PrintSelf (reduces number of methods)
- move output data member from vtkPV3Foam -> PV3FoamReader
in preparation for rewriting output method
- roughed in code to track mesh/field changes in preparation for rewriting
output method
- progress bar with arbitrary values to give the user something to watch
- On the first call, select 'internalMesh' and the 'p', 'U' fields.
This corresponds to a fairly common default case without loading all
possible fields etc.
- Include zones should now work without issuing a FatalError when the
corresponding files are missing. I must have tried too many things
at once and didn't notice this before.
- Use ZoneMesh for zone names if the fvMesh is already cached
(skips re-reading the same files).
- Change reader description to "OpenFOAM Reader" to distinguish it a bit
from the vtkOpenFOAMReader built into paraview/vtk
- Misc. file and method names reorganized
- Remaining problem:
mixing internalMesh and cellZones is clunky since there aren't yet
interpolated point values for cellSets/cellZones. Paraview complains
about the mismatch, but extracting a block is still okay.
TODO:
- multi-port output for Lagrangian
- hold all the vtk mesh parts (including multiblock) and just pass the
reference. With this, the pipeline might notice that the geometry is
actually identical and skip the PVGeometryFilter that takes so long.
previous disabling of the TimeSelection arrays [commit c52b20b..]
resulted in the mesh caching being disabled :(
Simplified code is enabled/disabled by PV3FOAM_TIMESELECTION define.
Might be removed in the future.