mirror of
https://github.com/OPM/opm-simulators.git
synced 2026-10-31 17:47:45 -05:00
When a reservoir coupling slave fails during deck parsing, the master hangs on MPI_Recv waiting for initial data that never arrives. Fix by adding a status handshake after MPI_Comm_spawn: the slave sends OK/FAILED status before any data exchange, and the master checks it, disconnects, and throws on failure. Key changes: - Add SlaveStatus message tag and status handshake protocol - Slave: in readDeck(), override PARSE_MISSING_INCLUDE to throw instead of std::exit(), enabling cooperative MPI shutdown - Slave: send status to master in sendAndReceiveInitialData() - Master: receiveSlaveStatus_() checks status, disconnects all slave communicators and throws on failure - Main: notifyMasterSlaveInitFailed_() sends failure status from the readDeck() catch handler