NGen
Loading...
Searching...
No Matches
models::bmi::protocols::NgenBmiProtocols Class Reference

#include <protocols.hpp>

+ Collaboration diagram for models::bmi::protocols::NgenBmiProtocols:

Public Member Functions

 NgenBmiProtocols ()
 Container and management interface for BMI protocols for use in ngen.
 
 NgenBmiProtocols (std::shared_ptr< models::bmi::Bmi_Adapter > model, const geojson::PropertyMap &properties)
 Construct a new Ngen Bmi Protocols object for use with a known model.
 
auto run (const Protocol &protocol_name, const Context &ctx) const -> expected< void, ProtocolError >
 Run a specific BMI protocol by name with a given context.
 

Private Attributes

std::shared_ptr< models::bmi::Bmi_Adaptermodel
 All protocols managed by this container will utilize the same model.
 
std::unordered_map< Protocol, std::unique_ptr< NgenBmiProtocol > > protocols
 Map of protocol name to protocol instance.
 

Constructor & Destructor Documentation

◆ NgenBmiProtocols() [1/2]

models::bmi::protocols::NgenBmiProtocols::NgenBmiProtocols ( )

Container and management interface for BMI protocols for use in ngen.

Construct a new Ngen Bmi Protocols object with a null model

References models::bmi::protocols::MASS_BALANCE, and protocols.

◆ NgenBmiProtocols() [2/2]

models::bmi::protocols::NgenBmiProtocols::NgenBmiProtocols ( std::shared_ptr< models::bmi::Bmi_Adapter > model,
const geojson::PropertyMap & properties )

Construct a new Ngen Bmi Protocols object for use with a known model.

Parameters
modelAn initialized BMI model
propertiesProperties for each protocol being initialized

References models::bmi::protocols::MASS_BALANCE, model, and protocols.

Member Function Documentation

◆ run()

auto models::bmi::protocols::NgenBmiProtocols::run ( const Protocol & protocol_name,
const Context & ctx ) const -> expected<void, ProtocolError>

Run a specific BMI protocol by name with a given context.

Parameters
protocol_nameThe name of the protocol to run
ctxThe context of the current protocol run
Returns
expected<void, ProtocolError> May contain a ProtocolError if the protocol fails for any reason.

References models::bmi::protocols::NgenBmiProtocol::error_or_warning(), models::bmi::protocols::MASS_BALANCE, and models::bmi::protocols::UNSUPPORTED_PROTOCOL.

Referenced by realization::Bmi_Module_Formulation::check_mass_balance().

Member Data Documentation

◆ model

std::shared_ptr<models::bmi::Bmi_Adapter> models::bmi::protocols::NgenBmiProtocols::model
private

All protocols managed by this container will utilize the same model.

This reduces the amount of pointer copying and references across a large simulation and it ensures that all protocols see the same model state.

Referenced by NgenBmiProtocols().

◆ protocols

std::unordered_map<Protocol, std::unique_ptr<NgenBmiProtocol> > models::bmi::protocols::NgenBmiProtocols::protocols
private

Map of protocol name to protocol instance.

Referenced by NgenBmiProtocols(), and NgenBmiProtocols().


The documentation for this class was generated from the following files: