6 #include "engine/common/system/Model.h"
7 #include "engine/common/system/Systems.h"
8 #include "cdm/circuit/fluid/SEFluidCircuitCalculator.h"
9 #include "cdm/compartment/fluid/SEGasCompartmentGraph.h"
10 #include "cdm/compartment/fluid/SELiquidCompartmentGraph.h"
39 class PULSE_DECL RespiratoryModel :
public RespiratorySystem,
public Model
44 RespiratoryModel(Data& data);
45 virtual ~RespiratoryModel();
47 virtual void Clear()
override;
50 virtual void Initialize()
override;
52 virtual void SetUp()
override;
54 virtual void AtSteadyState()
override;
55 virtual void PreProcess()
override;
56 virtual void Process(
bool solve_and_transport=
true)
override;
57 virtual void PostProcess(
bool solve_and_transport=
true)
override;
60 void ComputeExposedModelParameters()
override;
61 eLungCompartment GetLungCompartment(
const std::string& cmpt);
62 std::string GetCompartmentName(eLungCompartment m);
69 void CalculateFatigue();
70 void UpdateChestWallCompliances();
72 void UpdateResistances();
73 void UpdateAlveolarCompliances();
74 double CalculateSuctioningPattern(
double baseResistance_cmH2O_s_Per_L,
double flow_L_Per_s);
75 void UpdateInspiratoryExpiratoryRatio();
76 void UpdateDiffusion();
77 void UpdatePulmonaryCapillary();
78 void UpdatePulmonaryShunt();
79 SESegment* GetSegement(
const std::vector<SESegment*>& segments,
double volume_L);
81 void SetRespiratoryResistance();
82 void SetRespiratoryCompliance();
87 void MechanicalVentilation();
88 void SupplementalOxygen();
90 void CalculateDriver();
92 void SetBreathCycleFractions();
93 void ConsciousRespiration();
94 double VolumeToDriverPressure(
double TargetVolume);
95 void UpdateDriverPressure();
96 void CalculateMechanoreceptors();
97 void UpdateDriverPeriod();
98 double UpdateTargetVentilation(
double targetAlveolarVentilation_L_Per_min);
100 void ProcessAerosolSubstances();
103 void CalculateVitalSigns();
109 bool m_BreathingCycle;
111 double m_TopBreathTotalVolume_L;
112 double m_TopCarinaO2;
113 double m_TopBreathElapsedTime_min;
114 double m_BottomBreathElapsedTime_min;
115 double m_BottomBreathTotalVolume_L;
116 double m_BottomBreathAlveoliPressure_cmH2O;
117 double m_BottomBreathAirwayPressure_cmH2O;
118 double m_PeakAlveolarPressure_cmH2O;
119 double m_MaximalAlveolarPressure_cmH2O;
120 double m_LastCardiacCycleBloodPH;
124 double m_PreviousLeftLungPressureDiff_cmH2O;
125 double m_PreviousRightLungPressureDiff_cmH2O;
126 double m_PreviousLeftLungVolume_L;
127 double m_PreviousRightLungVolume_L;
128 double m_PreviousLeftPleuralPressureDiff_cmH2O;
129 double m_PreviousRightPleuralPressureDiff_cmH2O;
130 double m_PreviousLeftPleuralVolume_L;
131 double m_PreviousRightPleuralVolume_L;
134 std::vector<double> m_AlveoliVolumeIncrement_L;
135 std::vector<double> m_TopBreathAcinarZoneVolumes_L;
136 std::vector<double> m_BottomBreathAcinarZoneVolumes_L;
137 std::vector<double> m_PreviousShuntScalingFactor;
140 double m_ArterialO2PartialPressure_mmHg;
141 double m_ArterialCO2PartialPressure_mmHg;
142 double m_BreathingCycleTime_s;
143 double m_DriverPressure_cmH2O;
144 double m_ElapsedBreathingCycleTime_min;
145 double m_IERatioScaleFactor;
146 double m_PeakInspiratoryPressure_cmH2O;
147 double m_PeakExpiratoryPressure_cmH2O;
148 double m_PreviousTargetAlveolarVentilation_L_Per_min;
149 double m_VentilationFrequency_Per_min;
150 double m_VentilationPeriod_s;
151 double m_VentilationToTidalVolumeSlope;
157 double m_ExpiratoryHoldFraction;
158 double m_ExpiratoryReleaseFraction;
159 double m_ExpiratoryRiseFraction;
160 double m_InspiratoryHoldFraction;
161 double m_InspiratoryReleaseFraction;
162 double m_InspiratoryRiseFraction;
163 double m_InspiratoryToExpiratoryPauseFraction;
164 double m_ResidueFraction;
165 double m_PreviousDyspneaSeverity;
166 double m_MechanoreceptorsDyspneaFactor;
167 double m_AppliedMechanoreceptorsDyspneaFactor;
170 bool m_PositivePressureVentilation;
173 bool m_ActiveConsciousRespirationCommand;
176 double m_LeftAlveoliDecrease_L;
177 double m_RightAlveoliDecrease_L;
180 double m_RespiratoryResistanceOverride_cmH2O_s_Per_L;
181 double m_RespiratoryComplianceOverride_L_Per_cmH2O;
186 double m_MaxDriverPressure_cmH2O;
188 double m_CentralControlGainConstant;
189 double m_DefaultOpenResistance_cmH2O_s_Per_L;
190 double m_DefaultClosedResistance_cmH2O_s_Per_L;
191 double m_PeripheralControlGainConstant;
192 double m_RespOpenResistance_cmH2O_s_Per_L;
193 double m_RespClosedResistance_cmH2O_s_Per_L;
194 double m_VentilationTidalVolumeIntercept;
195 double m_VentilatoryOcclusionPressure_cmH2O;
196 double m_MinimumAllowableTidalVolume_L;
197 double m_MinimumAllowableInpiratoryAndExpiratoryPeriod_s;
199 double m_AverageLocalTissueBronchodilationEffects;
235 std::vector<SELiquidCompartment*> m_AerosolEffects;
264 std::map<eLungCompartment, LungComponent> m_LungComponents;
Definition: PBPhysiology.h:24
Definition: SECircuitCalculator.h:24
Definition: SEConsciousRespirationCommand.h:8
Definition: SEFluidCircuit.h:12
Definition: SEFluidCircuitNode.h:10
Definition: SEFluidCircuitPath.h:9
Definition: SEGasCompartment.h:14
Definition: SEGasSubstanceQuantity.h:10
Definition: SELiquidCompartment.h:11
Definition: SELiquidCompartmentLink.h:11
Definition: SELiquidSubstanceQuantity.h:12
Definition: SEPatientActionCollection.h:50
Definition: SEPatient.h:13
Definition: SERespiratoryMechanicsModifiers.h:9
Definition: SERunningAverage.h:8
Definition: SESegment.h:7
Definition: SESubstance.h:15
Definition: SESubstanceTransport.h:86