More...

#include <Endocrine.h>

Inheritance diagram for biogears::Endocrine:

Public Member Functions

virtual ~Endocrine () override
 
const char * classname () const override
 
size_t hash_code () const override
 
void Clear () override
 
void Initialize () override
 Initializes system properties to valid homeostatic values. More...
 
virtual bool Load (const CDM::BioGearsEndocrineSystemData &in)
 
virtual CDM::BioGearsEndocrineSystemDataUnload () const override
 
void AtSteadyState () override
 Notify systems that steady state has been achieved. More...
 
void PreProcess () override
 Endocrine Preprocess function. More...
 
void Process () override
 Endocrine process function. More...
 
void PostProcess () override
 Endocrine PostProcess function. More...
 
- Public Member Functions inherited from biogears::SEEndocrineSystem
 SEEndocrineSystem (Logger *logger)
 
 ~SEEndocrineSystem () override
 
const SEScalarGetScalar (const char *name) override
 
const SEScalarGetScalar (const std::string &name) override
 
bool Load (const CDM::EndocrineSystemData &in)
 
Tree< const char * > GetPhysiologyRequestGraph () const override
 
bool HasInsulinSynthesisRate () const
 
SEScalarAmountPerTimeGetInsulinSynthesisRate ()
 
double GetInsulinSynthesisRate (const AmountPerTimeUnit &unit) const
 
bool HasGlucagonSynthesisRate () const
 
SEScalarAmountPerTimeGetGlucagonSynthesisRate ()
 
double GetGlucagonSynthesisRate (const AmountPerTimeUnit &unit) const
 
- Public Member Functions inherited from biogears::SESystem
 SESystem (Logger *logger)
 
virtual ~SESystem ()
 
bool Load (const CDM::SystemData &in)
 
- Public Member Functions inherited from biogears::Loggable
 Loggable ()
 
 Loggable (Logger *log)
 
virtual ~Loggable ()
 
virtual LoggerGetLogger () const
 

Static Public Member Functions

static size_t TypeHash ()
 
static constexpr char const *const TypeTag ()
 
- Static Public Member Functions inherited from biogears::SEEndocrineSystem
static size_t TypeHash ()
 
static constexpr char const *const TypeTag ()
 
- Static Public Member Functions inherited from biogears::SESystem
static const SEScalarGetScalar (const char *name, std::vector< SESystem * > *systems)
 
static const SEScalarGetScalar (const std::string &name, std::vector< SESystem * > *systems)
 

Protected Member Functions

 Endocrine (BioGears &bg)
 
virtual void Unload (CDM::BioGearsEndocrineSystemData &data) const
 
void SetUp () override
 
void ProcessOverride ()
 determine override requirements from user defined inputs More...
 
void OverrideControlLoop ()
 
- Protected Member Functions inherited from biogears::SEEndocrineSystem
void Unload (CDM::EndocrineSystemData &data) const
 
- Protected Member Functions inherited from biogears::SESystem
void Unload (CDM::SystemData &data) const
 
- Protected Member Functions inherited from biogears::Loggable
virtual void Debug (const char *msg, const char *origin="") const
 
virtual void Debug (const std::string &msg, const std::string &origin=empty) const
 
virtual void Debug (std::ostream &msg, const std::string &origin=empty) const
 
virtual void Info (const char *msg, const char *origin="") const
 
virtual void Info (const std::string &msg, const std::string &origin=empty) const
 
virtual void Info (std::ostream &msg, const std::string &origin=empty) const
 
virtual void Warning (const char *msg, const char *origin="") const
 
virtual void Warning (const std::string &msg, const std::string &origin=empty) const
 
virtual void Warning (std::ostream &msg, const std::string &origin=empty) const
 
virtual void Error (const char *msg, const char *origin="") const
 
virtual void Error (const std::string msg, const std::string origin=empty) const
 
virtual void Error (std::ostream &msg, const std::string &origin=empty) const
 
virtual void Fatal (const char *msg, const char *origin="") const
 
virtual void Fatal (const std::string &msg, const std::string &origin=empty) const
 
virtual void Fatal (std::ostream &msg, const std::string &origin=empty) const
 
- Protected Member Functions inherited from biogears::BioGearsSystem
virtual void LoadState ()
 

Static Protected Member Functions

static auto make_unique (BioGears &bg) -> std::unique_ptr< Endocrine >
 

Protected Attributes

BioGearsm_data
 
- Protected Attributes inherited from biogears::SEEndocrineSystem
SEScalarAmountPerTimem_InsulinSynthesisRate
 
SEScalarAmountPerTimem_GlucagonSynthesisRate
 
- Protected Attributes inherited from biogears::SESystem
std::stringstream m_ss
 
- Protected Attributes inherited from biogears::Loggable
Loggerm_Logger
 

Private Member Functions

void SynthesizeInsulin ()
 Calculate the rate of insulin production. More...
 
void SynthesizeGlucagon ()
 Calculate the rate of glucagon production. More...
 
void ReleaseEpinephrine ()
 Release epinephrine into the bloodstream and handle sympathetic responses. More...
 

Private Attributes

double m_dt_s
 
double m_InsulinMolarMass_g_Per_mol
 
double m_AverageBiologicalDebt
 
double m_GlucagonMolarMass_g_Per_mol
 
SELiquidSubstanceQuantitym_AortaGlucose = nullptr
 
SELiquidSubstanceQuantitym_AortaEpinephrine = nullptr
 
SELiquidSubstanceQuantitym_rKidneyEpinephrine = nullptr
 
SELiquidSubstanceQuantitym_lKidneyEpinephrine = nullptr
 
SELiquidSubstanceQuantitym_SplanchnicInsulin = nullptr
 
SELiquidSubstanceQuantitym_SplanchnicGlucagon = nullptr
 

Friends

class BioGears
 
class BioGearsEngineTest
 

Additional Inherited Members

- Static Public Attributes inherited from biogears::Loggable
static const std::string empty
 
static const char * empty_cStr
 

Detailed Description

The BioGears® endocrine system is a rudimentary system with only one stimulus (increased carbon dioxide partial pressure in the blood stream) and two hormones (epinephrine and norepinephrine). The release of the hormones in response to the stimuli to represent the response of the sympathetic nervous system. In the future, additional stimuli and additional hormones will be added.

Constructor & Destructor Documentation

biogears::Endocrine::Endocrine ( BioGears bg)
protected
biogears::Endocrine::~Endocrine ( )
overridevirtual

Member Function Documentation

void biogears::Endocrine::AtSteadyState ( )
overridevirtual

Notify systems that steady state has been achieved.

Reimplemented from biogears::BioGearsSystem.

const char* biogears::Endocrine::classname ( ) const
inlineoverridevirtual

Reimplemented from biogears::SEEndocrineSystem.

void biogears::Endocrine::Clear ( )
overridevirtual

Reimplemented from biogears::SEEndocrineSystem.

size_t biogears::Endocrine::hash_code ( ) const
inlineoverridevirtual

Reimplemented from biogears::SEEndocrineSystem.

void biogears::Endocrine::Initialize ( )
overridevirtual

Initializes system properties to valid homeostatic values.

Reimplemented from biogears::BioGearsSystem.

bool biogears::Endocrine::Load ( const CDM::BioGearsEndocrineSystemData in)
virtual
auto biogears::Endocrine::make_unique ( BioGears bg) -> std::unique_ptr<Endocrine>
staticprotected
void biogears::Endocrine::OverrideControlLoop ( )
protected
void biogears::Endocrine::PostProcess ( )
overridevirtual

Endocrine PostProcess function.

The Endocrine system does not currently have any PostProcess functionality.

Implements biogears::BioGearsSystem.

void biogears::Endocrine::PreProcess ( )
overridevirtual

Endocrine Preprocess function.

Currently, only three hormones exist in the BioGears system: epinephrine, insulin, and glucagon. These functions determine the release of these hormones. The hormones will then circulate using the transport and substances methodologies.

Implements biogears::BioGearsSystem.

void biogears::Endocrine::Process ( )
overridevirtual

Endocrine process function.

The Endocrine system does not currently have any Process functionality.

Implements biogears::BioGearsSystem.

void biogears::Endocrine::ProcessOverride ( )
protected

determine override requirements from user defined inputs

User specified override outputs that are specific to the cardiovascular system are implemented here. If overrides aren't present for this system then this function will not be called during preprocess.

void biogears::Endocrine::ReleaseEpinephrine ( )
private

Release epinephrine into the bloodstream and handle sympathetic responses.

Epinephrine is released at a basal rate of .18 ug/min [22] from the kidneys. During certain events, the release rate of epinephrine increases. This is sympathetic response.

void biogears::Endocrine::SetUp ( )
overrideprotectedvirtual
void biogears::Endocrine::SynthesizeGlucagon ( )
private

Calculate the rate of glucagon production.

The glucagon production rate is set based on the aorta glucose concentration to values that allow it to have stable concentrations when paired with the clearance rate of 9 mL/min kg from https://www.ncbi.nlm.nih.gov/pubmed/773949

void biogears::Endocrine::SynthesizeInsulin ( )
private

Calculate the rate of insulin production.

The insulin production rate is calculated based on the relevant range of glucose and instantaneous concentration of glucose in the aorta (representative of the body). The equation for insulin production is from [tolic2000insulin] Patients with diabetes mellitus may have a reduced capacity for insulin production or insulin resistance, based on severity.

static size_t biogears::Endocrine::TypeHash ( )
inlinestatic
static constexpr char const* const biogears::Endocrine::TypeTag ( )
inlinestatic
CDM::BioGearsEndocrineSystemData * biogears::Endocrine::Unload ( ) const
overridevirtual

Reimplemented from biogears::SEEndocrineSystem.

void biogears::Endocrine::Unload ( CDM::BioGearsEndocrineSystemData data) const
protectedvirtual

Friends And Related Function Documentation

friend class BioGears
friend
friend class BioGearsEngineTest
friend

Member Data Documentation

SELiquidSubstanceQuantity* biogears::Endocrine::m_AortaEpinephrine = nullptr
private
SELiquidSubstanceQuantity* biogears::Endocrine::m_AortaGlucose = nullptr
private
double biogears::Endocrine::m_AverageBiologicalDebt
private
BioGears& biogears::Endocrine::m_data
protected
double biogears::Endocrine::m_dt_s
private
double biogears::Endocrine::m_GlucagonMolarMass_g_Per_mol
private
double biogears::Endocrine::m_InsulinMolarMass_g_Per_mol
private
SELiquidSubstanceQuantity* biogears::Endocrine::m_lKidneyEpinephrine = nullptr
private
SELiquidSubstanceQuantity* biogears::Endocrine::m_rKidneyEpinephrine = nullptr
private
SELiquidSubstanceQuantity* biogears::Endocrine::m_SplanchnicGlucagon = nullptr
private
SELiquidSubstanceQuantity* biogears::Endocrine::m_SplanchnicInsulin = nullptr
private