#include <Diffusion.h>

Inheritance diagram for biogears::DiffusionCalculator:

Classes

struct  ConcentrationSet
 
struct  DiffusionCompartmentSet
 
struct  DiffusionMatrixSet
 

Public Member Functions

 ~DiffusionCalculator ()=default
 
void Initialize (SESubstanceManager &subMgr)
 
void SetDiffusionState ()
 
void CalculateLinearDiffusionMethods ()
 
void CalculateNonLinearDiffusionMethods ()
 
std::vector< DiffusionCompartmentSet > & GetDiffusionSets ()
 
std::vector< SESubstance * > & GetFacilitatedDiffusionSubstances ()
 
std::vector< SESubstance * > & GetInstantDiffusionSubstances ()
 
std::vector< SESubstance * > & GetSimpleDiffusionSubstances ()
 
- Public Member Functions inherited from biogears::Loggable
 Loggable ()
 
 Loggable (Logger *log)
 
virtual ~Loggable ()
 
virtual LoggerGetLogger () const
 

Protected Member Functions

 DiffusionCalculator (BioGears &bg)
 
void ClearConcentrations ()
 
void CalculateActiveIonDiffusion (DiffusionCompartmentSet &cmptSet)
 Calculates the mass transport of ionic species Na, K, Ca, Cl against their electrochemical gradient using active pumps and cotransport. More...
 
void CalculateMacromoleculeDiffusion (DiffusionCompartmentSet &cmptSet, const SESubstance &sub)
 
void CalculatePassiveLymphDiffusion (SELiquidCompartment &source, SELiquidCompartment &target, const SESubstance &sub)
 
void CalculateFacilitatedDiffusion (DiffusionCompartmentSet &cmptSet, const SESubstance &sub, double combinedCoefficient_g_Per_s)
 
void CalculatePerfusionLimitedDiffusion (DiffusionCompartmentSet &cmptSet, const SESubstance &sub, double partitionCoeff)
 
- 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
 

Static Protected Member Functions

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

Protected Attributes

BioGearsm_data
 
- Protected Attributes inherited from biogears::Loggable
Loggerm_Logger
 

Private Member Functions

void DistributeMassbyVolumeWeighted (SELiquidCompartment &cmpt, const SESubstance &sub, double mass, const MassUnit &unit)
 
void DistributeMassbyMassWeighted (SELiquidCompartment &cmpt, const SESubstance &sub, double mass, const MassUnit &unit)
 
double SodiumPotassiumPump (double intraNa_mM, double extraNa_mM, double extraK_mM, double potential_V)
 
double CalciumPump (double intraCa_M)
 

Private Attributes

double m_dt_s
 
std::vector< SESubstance * > m_SimpleDiffusionSubstances
 
std::vector< SESubstance * > m_InstantDiffusionSubstances
 
std::vector< SESubstance * > m_FacilitatedDiffusionSubstances
 
ConcentrationSet m_InstantSubConcentrations
 
ConcentrationSet m_SimpleSubConcentrations
 
DiffusionMatrixSet m_InstantSubMatrices
 
DiffusionMatrixSet m_SimpleSubMatrices
 
std::vector< DiffusionCompartmentSetm_DiffusionSets
 
Eigen::VectorXd m_PermeabilityCoefficients
 
Eigen::VectorXd m_TissueMasses_g
 
Eigen::VectorXd m_VolumeRatiosVascularExtra
 
Eigen::VectorXd m_VolumeRatiosExtraIntra
 

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
 

Constructor & Destructor Documentation

biogears::DiffusionCalculator::DiffusionCalculator ( BioGears bg)
protected
biogears::DiffusionCalculator::~DiffusionCalculator ( )
default

Member Function Documentation

double biogears::DiffusionCalculator::CalciumPump ( double  intraCa_M)
private
void biogears::DiffusionCalculator::CalculateActiveIonDiffusion ( DiffusionCompartmentSet cmptSet)
protected

Calculates the mass transport of ionic species Na, K, Ca, Cl against their electrochemical gradient using active pumps and cotransport.


Parameters
tissuetissue compartment
vascularvascular space adjoining tissue compartment
extraextracellular space in tissue compartment
intraintracellular space in tissue compartment
timestep_sthe time step

This active transport moves ions to maintain their resting intracellular and extracellular concentrations using the cell membrane potential and active transport. The current experience by each ion is calculated by comparing its nernst potential to the membrane potential. Active pumps are then called which have been tuned to drive ionic current to maintain homeostatic concentrations. Since this method replaces diffusion for Na, Ca, K, and Cl, transport from the extracellular space to the vascular space is also handled here and balancing of the ions is also performed.

\ [lindblad] 1996model

void biogears::DiffusionCalculator::CalculateFacilitatedDiffusion ( DiffusionCompartmentSet cmptSet,
const SESubstance sub,
double  combinedCoefficient_g_Per_s 
)
protected
void biogears::DiffusionCalculator::CalculateLinearDiffusionMethods ( )
void biogears::DiffusionCalculator::CalculateMacromoleculeDiffusion ( DiffusionCompartmentSet cmptSet,
const SESubstance sub 
)
protected
void biogears::DiffusionCalculator::CalculateNonLinearDiffusionMethods ( )
Todo:
Define relationship between tissue mass and membrane area.
void biogears::DiffusionCalculator::CalculatePassiveLymphDiffusion ( SELiquidCompartment source,
SELiquidCompartment target,
const SESubstance sub 
)
protected
void biogears::DiffusionCalculator::CalculatePerfusionLimitedDiffusion ( DiffusionCompartmentSet cmptSet,
const SESubstance sub,
double  partitionCoeff 
)
protected
void biogears::DiffusionCalculator::ClearConcentrations ( )
protected
void biogears::DiffusionCalculator::DistributeMassbyMassWeighted ( SELiquidCompartment cmpt,
const SESubstance sub,
double  mass,
const MassUnit unit 
)
private
void biogears::DiffusionCalculator::DistributeMassbyVolumeWeighted ( SELiquidCompartment cmpt,
const SESubstance sub,
double  mass,
const MassUnit unit 
)
private
std::vector<DiffusionCompartmentSet>& biogears::DiffusionCalculator::GetDiffusionSets ( )
inline
std::vector<SESubstance*>& biogears::DiffusionCalculator::GetFacilitatedDiffusionSubstances ( )
inline
std::vector<SESubstance*>& biogears::DiffusionCalculator::GetInstantDiffusionSubstances ( )
inline
std::vector<SESubstance*>& biogears::DiffusionCalculator::GetSimpleDiffusionSubstances ( )
inline
void biogears::DiffusionCalculator::Initialize ( SESubstanceManager subMgr)
auto biogears::DiffusionCalculator::make_unique ( BioGears bg) -> std::unique_ptr<DiffusionCalculator>
staticprotected
void biogears::DiffusionCalculator::SetDiffusionState ( )
double biogears::DiffusionCalculator::SodiumPotassiumPump ( double  intraNa_mM,
double  extraNa_mM,
double  extraK_mM,
double  potential_V 
)
private

Friends And Related Function Documentation

friend class BioGears
friend
friend class BioGearsEngineTest
friend

Member Data Documentation

BioGears& biogears::DiffusionCalculator::m_data
protected
std::vector<DiffusionCompartmentSet> biogears::DiffusionCalculator::m_DiffusionSets
private
double biogears::DiffusionCalculator::m_dt_s
private
std::vector<SESubstance*> biogears::DiffusionCalculator::m_FacilitatedDiffusionSubstances
private
std::vector<SESubstance*> biogears::DiffusionCalculator::m_InstantDiffusionSubstances
private
ConcentrationSet biogears::DiffusionCalculator::m_InstantSubConcentrations
private
DiffusionMatrixSet biogears::DiffusionCalculator::m_InstantSubMatrices
private
Eigen::VectorXd biogears::DiffusionCalculator::m_PermeabilityCoefficients
private
std::vector<SESubstance*> biogears::DiffusionCalculator::m_SimpleDiffusionSubstances
private
ConcentrationSet biogears::DiffusionCalculator::m_SimpleSubConcentrations
private
DiffusionMatrixSet biogears::DiffusionCalculator::m_SimpleSubMatrices
private
Eigen::VectorXd biogears::DiffusionCalculator::m_TissueMasses_g
private
Eigen::VectorXd biogears::DiffusionCalculator::m_VolumeRatiosExtraIntra
private
Eigen::VectorXd biogears::DiffusionCalculator::m_VolumeRatiosVascularExtra
private