The compact ASCII format is a block of index/value tuples for the
non-zero entries:
{ (index1 value1) (index2 value2) (index3 value3) }
For PackedList<1>, and thus PackedBoolList, the compact ASCII format is
a block of indices for the non-zero entries:
{ index1 index2 index3 }
Thus either of the following could be used - for PackedList<2>:
- a list of all values:
16(0 3 0 2 0 0 3 1 0 0 0 0 0 0 0 1)
- a block of index/value tuples:
{(1 3) (3 2) (7 3) (8 1) (15 1)}
For PackedList<1> and PackedBoolList, either of the following could be
used:
- a list of all values, using any valid bool representation:
16(0 1 0 true 0 0 t 1 0 n n 0 0 0 0 yes)
- a block of the indices for non-zero entries:
{1 3 7 8 15}
ENH: adjust internal storage of PackedList to ensure that all unused
internal storage elements are guaranteed to always be bit-wise
zero. This makes the PackedBoolList implementation easier, and
also greatly eases much of the book-keeping.
Bits are now also zeroed on PackedList::clear()
Note: in PackedList, require packing at least 2 items otherwise it is
more efficient to use a normal list.
Relaxation and solution parameters for the final iteration in PIMPLE loops are
now selected according to the value of the "finalIteration" entry in the
mesh::data dictionary.
rhoPimpleFoam significantly updates and now replaces rhoPisoFoam.
before:
- 'new' prefixed to camel-cased class name: eg, someClass -> newSomeClass
- 'New' prefixed to templated class name: eg, TmplClass -> NewTmplClass
- 'New' suffixed to class name: eg, someClass -> someClassNew
after:
- consistent 'New' suffixed to class name, no change of case
eg, someClass -> someClassNew
eg, TmplClass -> TmplClassNew
- handles basic operations, references to other dictionary entries
(with '$name' syntax) and assorted mathematical functions:
pi(), degToRad, radToDeg, asin, acos, atan, sin, cos, tan, log,
log10, mag, atan2, pow
The basic syntax: #calc{ ... };
NOTE the trailing ';' is required for the primitiveEntry to be
properly defined.
- don't let automatic resize into integer overflow
- avoid possible overflow in increment()
StaticHashTable - fix erase()/++ as per HashTbl
- might still be worth dropping it, but at least it'll be in better
condition when it gets chucked!
- the end iterators and canonicalSize are independent of the templated
parameters, so move them to HashTblCore
- this avoid allocating separate end iterator at all.
end(), cend() return a iteratorEnd.
iterator == iteratorEnd just checks for non-NULL pointer on iterator.
The compiler should optimize most of it away.
- removed/renamed one level of directories, not all constants are dimensioned
global/dimensionedConstants -> global/constants/
global/dimensionedConstants/constants/* -> global/constants/
- formatting and doxygen cleanup
- added degToRad() and radToDeg() inline functions (in mathematicalConstants)
removed equivalent degToRad() from engineTime
- similar to the #include directive, but does not generate an error if the
file does not exist.
Note: opted for an explicit naming #includeIfPresent rather than #cinclude
- If the underlying type is contiguous, FixedList hashes its storage directly.
- Drop labelPairHash (non-commutative) from fvMeshDistribute since
FixedList::Hash does the right thing anyhow.
- Hash<edge> specialization is commutative, without multiplication.
- Hash<triFace> specialization kept multiplication (but now uLabel).
There's not much point optimizing it, since it's not used much anyhow.
Misc. changes
- added StaticAssert to NamedEnum.H
- label.H / uLabel.H : define FOAM_LABEL_MAX, FOAM_ULABEL_MAX with the
values finally used for the storage. These can be useful for pre-processor
checks elsewhere (although I stopped needing them in the meantime).
- not much speed difference between SuperFastHash and Jenkin's lookup3 but
both are 5-10% faster than what is currently implemented in Foam::string,
albeit inlining probably helps there.
- TODO: integration with existing infrastructure