- the blockMesh interface is splineEdge.H, selectable as "spline"
The first tests look fine - it works as expected for the case with
buggy polySpline reported on the forum. Should of course do some more
extensive testing.
The advantages compared to the current B-Spline implementation:
- Doesn't need a matrix solver.
- The coding resembles something that can be found in the literature.
- In contrast to the B-Spline implementation, it is fairly clear what
is actually going on. I don't even know if the B-Spline are actually
B-Spline, Beta-Splines or something else.
- Catmull-Rom splines seem to be what all the graphics people have as
their stable workhorse.
We now have 3 different names for splines in blockMesh:
- "spline" - *new* Catmull-Rom for arbitrary segments.
- "simpleSpline" - B-Spline for a single segment
- "polySpline" - B-Spline for a multiple segments
Assuming the Catmull-Rom splines continue to behave nicely, there is
no reason to keep the other (broken) B-Splines. This would help clean
up the blockMesh interface too.
Placed the older ones under legacy/ for easier identification in the
future.
TODO:
- currently no handling of non-zero end tangents
- could be extended to handle closed loops, which might be useful
for feature edges from CAD (eg, for the cvm mesher)
- this builds on Mattijs' commit 968f0bbd57 but with a first()
as well.
- Added both to FixedList, IndirectList, UIndirectList and *PtrList and
since they can certainly be useful there. Did not add to BiIndirectList,
since I'm not sure what it should mean there. Did not add to PackedList,
since it's not clear how useful they'd be yet in these contexts (and I'm
not sure how it would interact with the iterator proxy implementation).
- Note: STL defines front() and back() for these methods.
- slightly better code isolation, dropped unneed variables, changed
vector -> point in the appropriate places
- the spline stuff is still horribly broken.
Needs a complete rewrite or needs to get chucked.
- 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.
- added asText() method to assist people with remembering what the
dimensions are in English
- minor short-circuit optimizations in dimensionless() and operator==