When running time parallel problems we still need to interact with the io. This PR is a start. The Ensemble is created first so that the spatial communicator can be passed to the mesh. The ensemble instance is then passed to the timestepper so that it can be passed as required to the io and (in future, or on other branches!) to the time discretisation classes.
Here I have sorted out the VTK output. Diagnostics also seem to work, but I have not verified that they are correct. I have not thought about netCDF output or the case where we pick up. I have implemented a test that doesn't check anything other than for hanging. I can see that it does hang if spatial_parallelism=True but this seems to be a pytest issue as it is creating multiple output directories, one for each process.
I know @JDBetteridge and @tommbendall have been looking at parallel tests and having issues - would be good to hear what you think!
When running time parallel problems we still need to interact with the io. This PR is a start. The
Ensemble
is created first so that the spatial communicator can be passed to the mesh. The ensemble instance is then passed to the timestepper so that it can be passed as required to the io and (in future, or on other branches!) to the time discretisation classes.Here I have sorted out the VTK output. Diagnostics also seem to work, but I have not verified that they are correct. I have not thought about netCDF output or the case where we pick up. I have implemented a test that doesn't check anything other than for hanging. I can see that it does hang if
spatial_parallelism=True
but this seems to be a pytest issue as it is creating multiple output directories, one for each process.I know @JDBetteridge and @tommbendall have been looking at parallel tests and having issues - would be good to hear what you think!