multiple grids with multiple pipelines produces failure in coprocessing.py
While using catalyst, assume you are creating two independent pipelines, pipe1 and pipe2, which will be fed two differently named grids, gridname1 and gridname2. This situation produces a failure in coprocessor.py.
The problem is that the __ProducersMap keeps track of all grid names for all datadescriptions, whereas the datadescription associated with gridname1 does not have gridname2 and the datadescription associated with gridname2 does not have gridname1. So when we go into the call in LoadRequestedData(self, datadescription) in coprocessor.py, we hit a section of code like this:
for key in self.__ProducersMap:
datadescription.GetInputDescriptionByName(key).AllFieldsOn()
datadescription.GetInputDescriptionByName(key).GenerateMeshOn()
When, for example, this gets called with the datadescription associated with grid1, datadescription.GetInputDescriptionByName(gridname2) returns None and then we try to call AllFieldsOn() on the None return.
__InitialFrequencies can have problems too if it has the wrong name in it.
My workaround has simply been to change the code to get the result of datadescription.GetInputdescriptionByName(kY) into a variable, and if that variable is None then we don't call any methods on it.
One possible fix would be to make __ProducersMap a two-level map (a map of maps), with the datadescription the key for the first level and the name the key for the second. But maybe __producersMap should be associated with datadescription instead? Not sure right thing to do...