|
Opm::ReservoirCouplingMaster< Scalar > Class Template Reference
Member Typedef Documentation◆ InjectionGroupTarget
template<class Scalar >
◆ MasterGroupNodePressure
template<class Scalar >
◆ MessageTag
template<class Scalar >
◆ Potentials
template<class Scalar >
◆ ProductionGroupConstraints
template<class Scalar >
◆ Seconds
template<class Scalar >
◆ SlaveGroupProductionData
template<class Scalar >
Constructor & Destructor Documentation◆ ReservoirCouplingMaster()
template<class Scalar >
Member Function Documentation◆ activated()
template<class Scalar >
◆ addSlaveActivationDate()
template<class Scalar >
◆ addSlaveCommunicator()
template<class Scalar >
◆ addSlaveName()
template<class Scalar >
◆ addSlaveStartDate()
template<class Scalar >
◆ clearDeferredLogger()
template<class Scalar >
◆ collectGroupRatesForSummary()
template<class Scalar >
Collect production/injection rates for all master groups. Returns a ReservoirCouplingGroupRates struct that can be passed through DynamicSimulatorState to Summary::eval(). ◆ effectiveGCW()
template<class Scalar >
Effective group-controlled-wells (GCW) count for a master group, used by guide-rate distribution independently of the group's production control mode. Set by RescoupConstraintsCalculator during master-group constraint calculation. A participating master group (GCONPROD item 8 RESPOND_TO_PARENT = YES) defaults to 1 so it is counted in the parent's guide-rate sum even while on individual control; it is set to 0 when capped at its slave's potential or when its slave is inactive. See GroupStateHelper::updateGroupControlledWellsRecursive_ for the reader.
◆ getActivationDate()
template<class Scalar >
◆ getArgc()
template<class Scalar >
◆ getArgv() [1/2]
template<class Scalar >
◆ getArgv() [2/2]
template<class Scalar >
◆ getComm()
template<class Scalar >
◆ getMasterGroupCanonicalIdx()
template<class Scalar >
Get the canonical index of the master group for a given slave name and master group name. The index is used to map slave group data sent from the slaves, like potentials to the corresponding master group.
◆ getMasterGroupNamesForSlave()
template<class Scalar >
Get the master group names associated with a slave reservoir by index. This method retrieves the list of master group names that are associated with a specific slave reservoir identified by its index.
◆ getMasterGroupRate()
template<class Scalar >
◆ getMasterGroupToSlaveNameMap()
template<class Scalar >
◆ getSimulationStartDate()
template<class Scalar >
◆ getSlaveActivationDate()
template<class Scalar >
◆ getSlaveActivationDates()
template<class Scalar >
◆ getSlaveComm()
template<class Scalar >
◆ getSlaveGroupPotentials()
template<class Scalar >
◆ getSlaveIdx()
template<class Scalar >
◆ getSlaveName()
template<class Scalar >
◆ getSlaveNameToMasterGroupsMap()
template<class Scalar >
◆ getSlaveStartDate()
template<class Scalar >
◆ getSlaveStartDates()
template<class Scalar >
◆ initStartOfReportStep()
template<class Scalar >
◆ initTimeStepping()
template<class Scalar >
◆ isFirstSubstepOfSyncTimestep()
template<class Scalar >
◆ isMasterGroup()
template<class Scalar >
◆ logger() [1/2]
template<class Scalar >
◆ logger() [2/2]
template<class Scalar >
◆ markSlaveEndedAndDisconnect()
template<class Scalar >
Record that a slave has ended, and close its intercommunicator. Must be called on every master rank, because MPI_Comm_disconnect() is collective over the whole intercommunicator. Rank 0 additionally sends the acknowledging terminate signal the slave is waiting for. After this call slaveIsCoupled() returns false for the slave and no further message may be sent to it or received from it.
◆ maybeActivate()
template<class Scalar >
◆ maybeChopSubStep()
template<class Scalar >
◆ maybeReceiveActivationHandshakeFromSlaves()
template<class Scalar >
◆ maybeSpawnSlaveProcesses()
template<class Scalar >
◆ needsSlaveDataReceive()
template<class Scalar >
Check if the master needs to receive production data from the slaves. This flag is used to control reservoir coupling synchronization of summary data sent from the slaves to the master process. The master blocks in timeStepSucceeded() until all slaves have sent their production data.
◆ numCoupledSlaves()
template<class Scalar >
Number of slaves that currently take part in the coupling. Counts the slaves for which slaveIsCoupled() holds, i.e. activated and not yet ended. ◆ numSlaveGroups()
template<class Scalar >
◆ numSlaves()
template<class Scalar >
◆ numSlavesStarted()
template<class Scalar >
Referenced by Opm::ReservoirCouplingMaster< Scalar >::numSlaves(). ◆ rebuildSlaveIdxToMasterGroupsVector()
template<class Scalar >
◆ receiveInjectionDataFromSlaves()
template<class Scalar >
◆ receiveNextReportDateFromSlaves()
template<class Scalar >
◆ receiveProductionDataFromSlaves()
template<class Scalar >
◆ resetEffectiveGCW()
template<class Scalar >
Clear all effective-GCW entries. Call at the start of each master-group constraint calculation before any entries are set, so stale caps from a previous sync step do not leak in. ◆ resizeNextReportDates()
template<class Scalar >
◆ resizeSlaveActivationDates()
template<class Scalar >
◆ resizeSlaveStartDates()
template<class Scalar >
◆ schedule()
template<class Scalar >
◆ sendCoupledNetworkActiveStatusToSlave()
template<class Scalar >
Send a single boolean to a slave telling it whether the master will iterate the cross-rescoup network exchange this sync timestep. ◆ sendDontTerminateSignalToSlaves()
template<class Scalar >
Send "don't terminate" signal (value=0) to all active slaves. This method is called at the start of each iteration in the master's substep loop, before receiving the next report date from slaves. The slave waits for this signal at the start of each iteration - if it receives 0, it continues; if it receives 1 (from sendTerminateAndDisconnect()), it terminates. ◆ sendInjectionTargetsToSlave()
template<class Scalar >
◆ sendMasterGroupNodePressuresToSlave()
template<class Scalar >
Send master-computed network-leaf node pressures to a slave. ◆ sendNextTimeStepToSlaves()
template<class Scalar >
◆ sendNumGroupConstraintsToSlave()
template<class Scalar >
◆ sendNumMasterGroupNodePressuresToSlave()
template<class Scalar >
Send the count of master-computed network-leaf node pressures plus the master's ◆ sendProductionConstraintsToSlave()
template<class Scalar >
◆ sendTerminateAndDisconnect()
template<class Scalar >
Send terminate signal to all active slaves and disconnect intercommunicators. This method must be called at the end of the simulation to cleanly shut down the MPI intercommunicators created by MPI_Comm_spawn(). It performs two steps:
Both master and slaves must call their respective disconnect methods for MPI_Comm_disconnect() to complete - it is a collective operation. ◆ setDeferredLogger()
template<class Scalar >
◆ setEffectiveGCW()
template<class Scalar >
◆ setFirstSubstepOfSyncTimestep()
template<class Scalar >
◆ setNeedsSlaveDataReceive()
template<class Scalar >
Set whether the master needs to receive production data from the slaves. See needsSlaveDataReceive() for details.
◆ setSlaveActivationDate()
template<class Scalar >
◆ setSlaveNextReportTimeOffset()
template<class Scalar >
◆ setSlaveStartDate()
template<class Scalar >
◆ slaveHasEnded()
template<class Scalar >
Whether the slave has reached the end of its own schedule and left the coupling. A slave whose deck runs out of report steps before the master's does notifies the master, and the two disconnect their intercommunicator. From that point on the master must not communicate with the slave, and must treat the slave's master groups as producing and injecting nothing.
Referenced by Opm::ReservoirCouplingMaster< Scalar >::slaveIsCoupled(). ◆ slaveIsActivated()
template<class Scalar >
Whether the slave has completed its activation handshake with the master. Monotonic: once true it never becomes false again, not even when the slave later reaches the end of its own schedule. Callers that ask "does this slave take part in the coupling right now?" want slaveIsCoupled() instead. Referenced by Opm::ReservoirCouplingMaster< Scalar >::slaveIsCoupled(). ◆ slaveIsCoupled()
template<class Scalar >
Whether the slave currently takes part in the coupling. True only for a slave that has activated and has not ended. This is the predicate to use before any master-slave message exchange, and before letting a master group contribute rates, potentials or guide rates: a slave that is not coupled contributes zeros. References Opm::ReservoirCouplingMaster< Scalar >::slaveHasEnded(), and Opm::ReservoirCouplingMaster< Scalar >::slaveIsActivated(). ◆ syncAtReportSteps()
template<class Scalar >
Whether the master syncs with slaves at slave report-step boundaries (true) or at every master actual time step (false, default CLI flag value). Set from the –rescoup-sync-at-report-steps CLI flag in the constructor. See ◆ updateMasterGroupNameOrderMap()
template<class Scalar >
The documentation for this class was generated from the following files: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||