Skip to content

InitialisationOfBcComms

Sebastian Schmieschek edited this page Aug 12, 2015 · 2 revisions

Initialisation of Boundary Condition Communications

Currently this is done by 3 functions in LatticeData, which make a list of the coordinates and directions of distributions they're sending and send that to the neighbouring core which then initialises lookup arrays with the info.

We could instead change this to a request model where each core collects a list for each neighbour of sets of coordinates + data type + data index. The data index is an in integer between 0 and 26 and data type is one of an enumerated values for the distributions, velocity directions, equilibrium distributions or non-equilibrium distributions.

To do this, the eqm and non-eqm distributions would have to be added to the macroscopic property cache. This data is used to tell the macroscopic property cache whether to obtain each bit of data. Sending is performed via the Net in the usual way (NB. the sending of this info will not be contiguous as it is currently, where the sending core dictates the data ordering). The data is received into separate f, velocity and non-eqm / eqm f arrays on the receiving side before being copied where it needs to be. The received data won't be copied into the macroscopic property cache (which would have to have arbitrarily large vectors to support this). Instead a wrapper is put around the macroscopic property cache containing hashmaps for the received data. Whenever the local macroscopic property cache has a miss, the data is returned from the hashmap instead.

Clone this wiki locally