The Environment class characterizes the environment and manages interactions between the body its surroundings. More...

#include <Environment.h>

Inherits SEEnvironment, PulseEnvironmentSystem, and PulseSystem.

Public Member Functions

virtual ~Environment ()
 
void Clear ()
 
void Initialize ()
 Initializes system properties to valid homeostatic values. More...
 
void SetUp ()
 
void AtSteadyState ()
 Notify systems that steady state has been achieved. More...
 
void PreProcess ()
 Preprocess prepares the cardiovascular system for the circuit solver. More...
 
void Process ()
 There is nothing to do here. Processing the combined Energy-Environment circuit is handled by the Energy system. More...
 
void PostProcess ()
 There is nothing to do here. Postprocessing the combined Energy-Environment circuit is handled by the Energy system. More...
 
void StateChange ()
 Resets environment parameters. More...
 
void ProcessActions ()
 Apply environment specific actions. More...
 
void CalculateSupplementalValues ()
 Calculate intermediate values to be used later. More...
 
double AntoineEquation (double dTemperature_C)
 Apply the Antione Equation. More...
 
void CalculateRadiation ()
 Determine the effects of radiation. More...
 
void CalculateConvection ()
 Determine the effects of convection. More...
 
void CalculateEvaporation ()
 Determine the effects of evaporation. More...
 
void CalculateRespiration ()
 Determine the effects of respiration. More...
 
- Public Member Functions inherited from SEEnvironment
 SEEnvironment (SESubstanceManager &substances)
 
virtual ~SEEnvironment ()
 
virtual bool ProcessChange (const SEChangeEnvironmentConditions &action)
 
virtual bool ProcessChange (const SEInitialEnvironmentConditions &change)
 
virtual const SEScalarGetScalar (const std::string &name)
 
virtual bool HasActiveHeating () const
 
virtual SEActiveConditioningGetActiveHeating ()
 
virtual const SEActiveConditioningGetActiveHeating () const
 
virtual void RemoveActiveHeating ()
 
virtual bool HasActiveCooling () const
 
virtual SEActiveConditioningGetActiveCooling ()
 
virtual const SEActiveConditioningGetActiveCooling () const
 
virtual void RemoveActiveCooling ()
 
virtual bool HasAppliedTemperature () const
 
virtual SEAppliedTemperatureGetAppliedTemperature ()
 
virtual const SEAppliedTemperatureGetAppliedTemperature () const
 
virtual void RemoveAppliedTemperature ()
 
virtual bool HasConditions () const
 
virtual SEEnvironmentalConditionsGetConditions ()
 
virtual const SEEnvironmentalConditionsGetConditions () const
 
virtual void RemoveConditions ()
 
virtual bool HasConvectiveHeatLoss () const
 
virtual SEScalarPowerGetConvectiveHeatLoss ()
 
virtual double GetConvectiveHeatLoss (const PowerUnit &unit) const
 
virtual bool HasConvectiveHeatTranferCoefficient () const
 
virtual SEScalarHeatConductancePerAreaGetConvectiveHeatTranferCoefficient ()
 
virtual double GetConvectiveHeatTranferCoefficient (const HeatConductancePerAreaUnit &unit) const
 
virtual bool HasEvaporativeHeatLoss () const
 
virtual SEScalarPowerGetEvaporativeHeatLoss ()
 
virtual double GetEvaporativeHeatLoss (const PowerUnit &unit) const
 
virtual bool HasEvaporativeHeatTranferCoefficient () const
 
virtual SEScalarHeatConductancePerAreaGetEvaporativeHeatTranferCoefficient ()
 
virtual double GetEvaporativeHeatTranferCoefficient (const HeatConductancePerAreaUnit &unit) const
 
virtual bool HasRadiativeHeatLoss () const
 
virtual SEScalarPowerGetRadiativeHeatLoss ()
 
virtual double GetRadiativeHeatLoss (const PowerUnit &unit) const
 
virtual bool HasRadiativeHeatTranferCoefficient () const
 
virtual SEScalarHeatConductancePerAreaGetRadiativeHeatTranferCoefficient ()
 
virtual double GetRadiativeHeatTranferCoefficient (const HeatConductancePerAreaUnit &unit) const
 
virtual bool HasRespirationHeatLoss () const
 
virtual SEScalarPowerGetRespirationHeatLoss ()
 
virtual double GetRespirationHeatLoss (const PowerUnit &unit) const
 
virtual bool HasSkinHeatLoss () const
 
virtual SEScalarPowerGetSkinHeatLoss ()
 
virtual double GetSkinHeatLoss (const PowerUnit &unit) const
 
- Public Member Functions inherited from SESystem
 SESystem (Logger *logger)
 
virtual ~SESystem ()
 
- Public Member Functions inherited from Loggable
 Loggable ()
 
 Loggable (Logger *log)
 
virtual ~Loggable ()
 
virtual LoggerGetLogger () const
 
virtual void Debug (std::string const &msg, std::string const &origin=empty) const
 
virtual void Debug (std::stringstream &msg, std::string const &origin=empty) const
 
virtual void Debug (std::ostream &msg, std::string const &origin=empty) const
 
virtual void Info (std::string const &msg, std::string const &origin=empty) const
 
virtual void Info (std::stringstream &msg, std::string const &origin=empty) const
 
virtual void Info (const std::stringstream &msg, std::string const &origin=empty) const
 
virtual void Info (std::ostream &msg, std::string const &origin=empty) const
 
virtual void Warning (std::string const &msg, std::string const &origin=empty) const
 
virtual void Warning (std::stringstream &msg, std::string const &origin=empty) const
 
virtual void Warning (std::ostream &msg, std::string const &origin=empty) const
 
virtual void Error (std::string const &msg, std::string const &origin=empty) const
 
virtual void Error (std::stringstream &msg, std::string const &origin=empty) const
 
virtual void Error (std::ostream &msg, std::string const &origin=empty) const
 
virtual void Fatal (std::string const &msg, std::string const &origin=empty) const
 
virtual void Fatal (std::stringstream &msg, std::string const &origin=empty) const
 
virtual void Fatal (std::ostream &msg, std::string const &origin=empty) const
 

Public Attributes

double m_dLewisRelation
 
double m_dHeatOfVaporizationOfWater_J_Per_kg
 
double m_dWaterVaporPressureInAmbientAir_Pa
 
double m_dWaterVaporPressureAtSkin_Pa
 
double m_WaterSpecificHeat_J_Per_kg_K
 
double m_WaterViscosity_N_s_Per_m2
 
double m_WaterThermalConductivity_W_Per_m_K
 
double m_ThermalExpansion_Per_K
 
double m_PatientEquivalentDiameter_m
 
SEPatientm_Patient
 
SEGasCompartmentm_AmbientGases
 
SELiquidCompartmentm_AmbientAerosols
 
SEThermalCircuitm_EnvironmentCircuit
 
SEThermalCircuitNodem_ThermalEnvironment
 
SEThermalCircuitNodem_SkinNode
 
SEThermalCircuitNodem_ClothingNode
 
SEThermalCircuitNodem_EnclosureNode
 
SEThermalCircuitPathm_SkinToClothing
 
SEThermalCircuitPathm_ActiveHeatTransferRatePath
 
SEThermalCircuitPathm_ActiveTemperaturePath
 
SEThermalCircuitPathm_ActiveSwitchPath
 
SEThermalCircuitPathm_ClothingToEnclosurePath
 
SEThermalCircuitPathm_GroundToEnclosurePath
 
SEThermalCircuitPathm_ClothingToEnvironmentPath
 
SEThermalCircuitPathm_GroundToEnvironmentPath
 
SEThermalCircuitPathm_EnvironmentSkinToGroundPath
 
SEThermalCircuitPathm_EnvironmentCoreToGroundPath
 

Protected Member Functions

 Environment (PulseController &data)
 

Protected Attributes

PulseControllerm_data
 
- Protected Attributes inherited from SEEnvironment
SEScalarPowerm_ConvectiveHeatLoss
 
SEScalarHeatConductancePerAream_ConvectiveHeatTranferCoefficient
 
SEScalarPowerm_EvaporativeHeatLoss
 
SEScalarHeatConductancePerAream_EvaporativeHeatTranferCoefficient
 
SEScalarPowerm_RadiativeHeatLoss
 
SEScalarHeatConductancePerAream_RadiativeHeatTranferCoefficient
 
SEScalarPowerm_RespirationHeatLoss
 
SEScalarPowerm_SkinHeatLoss
 
SEActiveConditioningm_ActiveHeating
 
SEActiveConditioningm_ActiveCooling
 
SEAppliedTemperaturem_AppliedTemperature
 
SEEnvironmentalConditionsm_Conditions
 
SESubstanceManagerm_Substances
 
- Protected Attributes inherited from SESystem
std::stringstream m_ss
 
- Protected Attributes inherited from Loggable
Loggerm_Logger
 

Friends

class PBPulseEnvironment
 
class PulseController
 
class PulseEngineTest
 

Additional Inherited Members

- Static Public Member Functions inherited from SESystem
static const SEScalarGetScalar (const std::string &name, std::vector< SESystem *> *systems)
 
- Static Public Attributes inherited from Loggable
static const std::string empty
 

Detailed Description

The Environment class characterizes the environment and manages interactions between the body its surroundings.

Constructor & Destructor Documentation

◆ Environment()

Environment::Environment ( PulseController data)
protected

◆ ~Environment()

Environment::~Environment ( )
virtual

Member Function Documentation

◆ AntoineEquation()

double Environment::AntoineEquation ( double  dTemperature_C)

Apply the Antione Equation.

Parameters
dTemperature_CTemperature in degrees C.
Returns
Water vapor pressure in mmHg.

The water vapor pressure at the skin and in ambient air is determined using the piecewise Antoine Equation.

◆ AtSteadyState()

void Environment::AtSteadyState ( )
virtual

Notify systems that steady state has been achieved.

Reimplemented from PulseSystem.

◆ CalculateConvection()

void Environment::CalculateConvection ( )

Determine the effects of convection.

This determines the circuit element values and system data outputs associated with convection heat transfer based on feedback.

◆ CalculateEvaporation()

void Environment::CalculateEvaporation ( )

Determine the effects of evaporation.

This determines the circuit element values and system data outputs associated with evaporation heat transfer based on feedback.

◆ CalculateRadiation()

void Environment::CalculateRadiation ( )

Determine the effects of radiation.

This determines the circuit element values and system data outputs associated with radiation heat transfer based on feedback.

◆ CalculateRespiration()

void Environment::CalculateRespiration ( )

Determine the effects of respiration.

This determines the circuit element values and system data outputs associated with respiration heat transfer based on feedback.

◆ CalculateSupplementalValues()

void Environment::CalculateSupplementalValues ( )

Calculate intermediate values to be used later.

These computed values will be used in the other feedback methods.

◆ Clear()

void Environment::Clear ( )
virtual

Reimplemented from SEEnvironment.

◆ Initialize()

void Environment::Initialize ( )
virtual

Initializes system properties to valid homeostatic values.

Reimplemented from PulseSystem.

◆ PostProcess()

void Environment::PostProcess ( )
virtual

There is nothing to do here. Postprocessing the combined Energy-Environment circuit is handled by the Energy system.

Implements PulseSystem.

◆ PreProcess()

void Environment::PreProcess ( )
virtual

Preprocess prepares the cardiovascular system for the circuit solver.

This function uses feedback to calculate thermal properties and circuit element values for the next engine state.

Implements PulseSystem.

◆ Process()

void Environment::Process ( )
virtual

There is nothing to do here. Processing the combined Energy-Environment circuit is handled by the Energy system.

Implements PulseSystem.

◆ ProcessActions()

void Environment::ProcessActions ( )

Apply environment specific actions.

Handle active heating and/or cooling. This will set the active heat flow source and/or the active temperature source. The applied area or fraction is used to determine the average patient application, since we're using a one dimensional model. They can be called individually or will sum together if called in combination. Note that the action manager will handle removing the actions (i.e. will return false for has calls).

Error:
Warning: SurfaceArea and SurfaceAreaFraction are both set. The largest fraction will be used.
Error:
Warning: Neither SurfaceArea nor SurfaceAreaFraction are set. A fraction of 1 will be used.
Error:
Warning: Thermal application effective area exceeds the total skin surface area. A fraction of 1 will be used.
Error:
Warning: SurfaceArea and SurfaceAreaFraction are both set. The largest fraction will be used.
Error:
Warning: Neither SurfaceArea nor SurfaceAreaFraction are set. A fraction of 1 will be used.
Error:
Warning: Thermal application effective area exceeds the total skin surface area. A fraction of 1 will be used.
Error:
Warning: AppliedSurfaceArea and AppliedSurfaceAreaFraction are both set. The largest fraction will be used.
Error:
Warning: Neither AppliedSurfaceArea nor AppliedSurfaceAreaFraction are set. A fraction of 1 will be used.
Error:
Warning: Thermal application effective area exceeds the total skin surface area. A fraction of 1 will be used.

◆ SetUp()

void Environment::SetUp ( )
virtual

Implements PulseSystem.

◆ StateChange()

void Environment::StateChange ( )
virtual

Resets environment parameters.

This is called any time the environment change action/condition. It sets the ambient node values needed for the fluid systems.

Error:
Fatal: Total ambient/environment gas volume fractions must sum to 1.0.

Reimplemented from SEEnvironment.

Friends And Related Function Documentation

◆ PBPulseEnvironment

friend class PBPulseEnvironment
friend

◆ PulseController

friend class PulseController
friend

◆ PulseEngineTest

friend class PulseEngineTest
friend

Member Data Documentation

◆ m_ActiveHeatTransferRatePath

SEThermalCircuitPath* Environment::m_ActiveHeatTransferRatePath

◆ m_ActiveSwitchPath

SEThermalCircuitPath* Environment::m_ActiveSwitchPath

◆ m_ActiveTemperaturePath

SEThermalCircuitPath* Environment::m_ActiveTemperaturePath

◆ m_AmbientAerosols

SELiquidCompartment* Environment::m_AmbientAerosols

◆ m_AmbientGases

SEGasCompartment* Environment::m_AmbientGases

◆ m_ClothingNode

SEThermalCircuitNode* Environment::m_ClothingNode

◆ m_ClothingToEnclosurePath

SEThermalCircuitPath* Environment::m_ClothingToEnclosurePath

◆ m_ClothingToEnvironmentPath

SEThermalCircuitPath* Environment::m_ClothingToEnvironmentPath

◆ m_data

PulseController& Environment::m_data
protected

◆ m_dHeatOfVaporizationOfWater_J_Per_kg

double Environment::m_dHeatOfVaporizationOfWater_J_Per_kg

◆ m_dLewisRelation

double Environment::m_dLewisRelation

◆ m_dWaterVaporPressureAtSkin_Pa

double Environment::m_dWaterVaporPressureAtSkin_Pa

◆ m_dWaterVaporPressureInAmbientAir_Pa

double Environment::m_dWaterVaporPressureInAmbientAir_Pa

◆ m_EnclosureNode

SEThermalCircuitNode* Environment::m_EnclosureNode

◆ m_EnvironmentCircuit

SEThermalCircuit* Environment::m_EnvironmentCircuit

◆ m_EnvironmentCoreToGroundPath

SEThermalCircuitPath* Environment::m_EnvironmentCoreToGroundPath

◆ m_EnvironmentSkinToGroundPath

SEThermalCircuitPath* Environment::m_EnvironmentSkinToGroundPath

◆ m_GroundToEnclosurePath

SEThermalCircuitPath* Environment::m_GroundToEnclosurePath

◆ m_GroundToEnvironmentPath

SEThermalCircuitPath* Environment::m_GroundToEnvironmentPath

◆ m_Patient

SEPatient* Environment::m_Patient

◆ m_PatientEquivalentDiameter_m

double Environment::m_PatientEquivalentDiameter_m

◆ m_SkinNode

SEThermalCircuitNode* Environment::m_SkinNode

◆ m_SkinToClothing

SEThermalCircuitPath* Environment::m_SkinToClothing

◆ m_ThermalEnvironment

SEThermalCircuitNode* Environment::m_ThermalEnvironment

◆ m_ThermalExpansion_Per_K

double Environment::m_ThermalExpansion_Per_K

◆ m_WaterSpecificHeat_J_Per_kg_K

double Environment::m_WaterSpecificHeat_J_Per_kg_K

◆ m_WaterThermalConductivity_W_Per_m_K

double Environment::m_WaterThermalConductivity_W_Per_m_K

◆ m_WaterViscosity_N_s_Per_m2

double Environment::m_WaterViscosity_N_s_Per_m2