Modifications to the interface may require minor changes in your code.
Palabos has undergone a few structural changes to make the code more general. In particular, it is now possible to couple Integer-value based fields (e.g. traditional Cellular Automata) with real-valued fields (e.g. Lattice Boltzmann).
Although most of the changes happen behind the scene, it is possible that some codes written for v0.6r0 won't compile with release 1. In these cases, it is sufficient to change just a few words to restore compatibility with the most recent version.
The most frequent modification required in end-user codes is a change from
void initializeGeometry(BlockLatticeBase3D<T,DESCRIPTOR>& lattice, ...)
void initializeGeometry(MultiBlockLattice3D<T,DESCRIPTOR>& lattice, ...)
This modification has been performed in all example codes. In case of doubt, double-check your codes with one of the official Palabos example programs.
For the first time, a tutorial has been submitted by a Palabos user. It's a tutorial for geophysicists, written by a geophysicist:
With release 1 it has become possible to write data processors which couple atomic- resp. multi-blocks of all data types (e.g. integer with double, or any other combination). This is for example useful when you read a integer-based flag matrix from a file and use this data to initialize a lattice Boltzmann simulation. Or, if you wish to couple the results of a Cellular Automaton with a lattice Boltzmann simulation.
Three force terms are implemented now (note that you must always use the descriptor
ForcedD2Q9Descriptor in combination with these forced dynamics). All three force terms are second-order accurate and can be used interchangeably:
|Force Term||Dynamics classes|
|Shan and Chen||
An important new feature is an XML parser, which offers the possibility to read structured configuration data in a clean, simple, and safe way. A detailed documentation is provided in the user's guide:
Similarly to the XML reader, a parser for command-line parameters is provided, which offers automatic type conversion and simple error handling. A detailed documentation is provided in the user's guide:
BlockLatticeBaseXD has, to a large extent, lost the ability to act generically for both the
AtomicBlockLatticeXD and the
MultiBlockLatticeXD. In many cases, you must explicitly use
MultiBlockLatticeXD now. Same business for the scalar-fields and vector-fields.
BlockStatisticsXD<T>, and some related functions, have become non-templates:
Data processors for two blocks or more have additional template parameters, so that the blocks can be based on a different data type. For example, the
DataProcessingFunctional2D_LS<T,Descriptor> has become
T1 is the underlying data type for the lattice, and
T2 for the scalar-field.