|
Peano
|
In Peano, cells, vertices and facets can hold data. At the moment, we have no support for data on edges in 3d, as noone as ever requested them.
In principle, you can model your data type with whatever tool you like. You can notably write them as plain old C++ classes. However, it is very reasonable to use the package DaStGen 2. Every Peano data object has to to provide certain routines (e.g. for data exchange). Life is easier if those are auto-generated.
Historically, DaStGen (data structure generator) had been a Java tool which injected all kinds of semantics into the generated code such as automatic packing of bits or MPI data types as well as floating point compression. With DaStGen 2, we have rewritten everything in Python, and most of the functionality is gradually moving into the compiler. It is not the job of the data generation anymore to inject such functionality. What still is in there however is that the generator can inject certain code snippets (aspects in OO terminology) which add some core functionality.
The DaStGen data model is automatically lowered into plain C++ if it is attached to a Peano 4 project.
Adding data to your project with DaStGen always follows certain steps:
In theory, not every observer has to handle all data. You can use A,B,C,D in a first sweep, and then only A,B in the second. Howevever, due to the data management algorithms in use (cmp the SISC Peano paper by Weinzierl and Mehl), we always need an even number of "left-out" mesh traversals, i.e.
works but one more injected mesh traversal with only A,B will certainly mess up things. Even in this case, it is not clear how MPI boundary exchange is actually modelled, so I generally do not recommend that you implement such patterns. Make every observer use all data.