20#ifndef OPM_RESCOUP_PROXY_HPP
21#define OPM_RESCOUP_PROXY_HPP
24#ifdef RESERVOIR_COUPLING_ENABLED
34#ifndef RESERVOIR_COUPLING_ENABLED
36template <
class Scalar>
class ReservoirCouplingMaster;
37template <
class Scalar>
class ReservoirCouplingSlave;
40namespace ReservoirCoupling {
52template <
class Scalar>
63#ifdef RESERVOIR_COUPLING_ENABLED
67 bool isEnabled() const noexcept {
return master_ || slave_; }
70 bool isMaster() const noexcept {
return master_ !=
nullptr; }
73 bool isSlave() const noexcept {
return slave_ !=
nullptr; }
92 ReservoirCouplingMaster<Scalar>*
masterPtr() noexcept {
return master_; }
93 const ReservoirCouplingMaster<Scalar>*
masterPtr() const noexcept {
return master_; }
96 ReservoirCouplingSlave<Scalar>*
slavePtr() noexcept {
return slave_; }
97 const ReservoirCouplingSlave<Scalar>*
slavePtr() const noexcept {
return slave_; }
102 ReservoirCouplingMaster<Scalar>&
master() {
return *master_; }
103 const ReservoirCouplingMaster<Scalar>&
master()
const {
return *master_; }
106 ReservoirCouplingSlave<Scalar>&
slave() {
return *slave_; }
107 const ReservoirCouplingSlave<Scalar>&
slave()
const {
return *slave_; }
110 ReservoirCouplingMaster<Scalar>* master_ =
nullptr;
111 ReservoirCouplingSlave<Scalar>* slave_ =
nullptr;
119 bool isSlave() const noexcept {
return false; }
125 throw std::logic_error(
"ReservoirCoupling::Proxy::setMaster() called in non-MPI build");
129 throw std::logic_error(
"ReservoirCoupling::Proxy::setSlave() called in non-MPI build");
139 throw std::logic_error(
"ReservoirCoupling::Proxy::master() called in non-MPI build");
142 throw std::logic_error(
"ReservoirCoupling::Proxy::master() called in non-MPI build");
146 throw std::logic_error(
"ReservoirCoupling::Proxy::slave() called in non-MPI build");
149 throw std::logic_error(
"ReservoirCoupling::Proxy::slave() called in non-MPI build");
Thin proxy for reservoir coupling master/slave pointers.
Definition: RescoupProxy.hpp:53
ReservoirCouplingMaster< Scalar > * masterPtr() noexcept
Definition: RescoupProxy.hpp:132
Proxy(Proxy &&) noexcept=default
Proxy & operator=(const Proxy &)=default
void setMaster(ReservoirCouplingMaster< Scalar > *)
Definition: RescoupProxy.hpp:124
const ReservoirCouplingMaster< Scalar > & master() const
Definition: RescoupProxy.hpp:141
Proxy(const Proxy &)=default
void setSlave(ReservoirCouplingSlave< Scalar > *)
Definition: RescoupProxy.hpp:128
ReservoirCouplingSlave< Scalar > * slavePtr() noexcept
Definition: RescoupProxy.hpp:135
ReservoirCouplingSlave< Scalar > & slave()
Definition: RescoupProxy.hpp:145
bool isEnabled() const noexcept
Definition: RescoupProxy.hpp:117
ReservoirCouplingMaster< Scalar > & master()
Definition: RescoupProxy.hpp:138
bool isMaster() const noexcept
Definition: RescoupProxy.hpp:118
const ReservoirCouplingSlave< Scalar > & slave() const
Definition: RescoupProxy.hpp:148
const ReservoirCouplingSlave< Scalar > * slavePtr() const noexcept
Definition: RescoupProxy.hpp:136
const ReservoirCouplingMaster< Scalar > * masterPtr() const noexcept
Definition: RescoupProxy.hpp:133
bool isSlave() const noexcept
Definition: RescoupProxy.hpp:119
Definition: ReservoirCouplingMaster.hpp:38
Definition: ReservoirCouplingSlave.hpp:40
Definition: blackoilbioeffectsmodules.hh:43