diff --git a/python/sphinx_docs/docs/parallel-in-python.rst b/python/sphinx_docs/docs/parallel-in-python.rst index b2a6d73..9f3d35f 100644 --- a/python/sphinx_docs/docs/parallel-in-python.rst +++ b/python/sphinx_docs/docs/parallel-in-python.rst @@ -37,44 +37,44 @@ An example script for a parallel run .. code-block:: python - from opm.simulators import BlackOilSimulator + from mpi4py import MPI # noqa: E402 -- owns MPI_Init; must come before OPM + from opm.simulators import BlackOilSimulator # noqa: E402 + from opm.io.parser import Parser # noqa: E402 + from opm.io.ecl_state import EclipseState # noqa: E402 + from opm.io.schedule import Schedule # noqa: E402 + from opm.io.summary import SummaryConfig # noqa: E402 - # mpi4py owns MPI_Init/MPI_Finalize; importing it initializes MPI for the - # whole process, including the simulator underneath. - from mpi4py import MPI + CASE = "SPE1CASE1.DATA" - COMM = MPI.COMM_WORLD - RANK = COMM.Get_rank() + COMM = MPI.COMM_WORLD + RANK = COMM.Get_rank() - CASE = "SPE1CASE1.DATA" + def main(): + deck = Parser().parse(CASE) + state = EclipseState(deck) # needed to build the Schedule only + schedule = Schedule(deck, state) + summary_config = SummaryConfig(deck, state, schedule) - def main(): - sim = BlackOilSimulator(filename=CASE) + # The one change from the documented example: None instead of `state`. + sim = BlackOilSimulator(deck, None, schedule, summary_config) + sim.setup_mpi(init=False, finalize=False) - # init=False: MPI is already initialized by mpi4py. - # finalize=False: keep MPI alive until the script exits. - sim.setup_mpi(init=False, finalize=False) + sim.step_init() - sim.step_init() + poro = sim.get_porosity() + sim.set_porosity(poro * 0.95) - sim.step() + sim.step() - # The grid is distributed, so each rank sees only its own cells - # (owned + overlap). - poro = sim.get_porosity() - sim.set_porosity(poro * 0.95) + sim.step_cleanup() - sim.step() + if RANK == 0: + print("done -- results written to SPE1CASE1.PRT", flush=True) - sim.step_cleanup() + if __name__ == "__main__": + main() - if RANK == 0: - print("done -- results written to SPE1CASE1.PRT", flush=True) - - - if __name__ == "__main__": - main() Run it with: