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 void UpdateInspiratoryExpiratoryRatio();
75 void UpdateDiffusion();
76 void UpdatePulmonaryCapillary();
77 void UpdatePulmonaryShunt();
78 SESegment* GetSegement(
const std::vector<SESegment*>& segments,
double volume_L);
80 void SetRespiratoryResistance();
81 void SetRespiratoryCompliance();
86 void MechanicalVentilation();
87 void SupplementalOxygen();
89 void CalculateDriver();
91 void SetBreathCycleFractions();
92 void ConsciousRespiration();
93 double VolumeToDriverPressure(
double TargetVolume);
94 void UpdateDriverPressure();
95 void CalculateMechanoreceptors();
96 void UpdateDriverPeriod();
97 double UpdateTargetVentilation(
double targetAlveolarVentilation_L_Per_min);
99 void ProcessAerosolSubstances();
102 void CalculateVitalSigns();
108 bool m_BreathingCycle;
110 double m_TopBreathTotalVolume_L;
111 double m_TopCarinaO2;
112 double m_TopBreathElapsedTime_min;
113 double m_BottomBreathElapsedTime_min;
114 double m_BottomBreathTotalVolume_L;
115 double m_BottomBreathAlveoliPressure_cmH2O;
116 double m_BottomBreathAirwayPressure_cmH2O;
117 double m_PeakAlveolarPressure_cmH2O;
118 double m_MaximalAlveolarPressure_cmH2O;
119 double m_LastCardiacCycleBloodPH;
123 double m_PreviousLeftLungPressureDiff_cmH2O;
124 double m_PreviousRightLungPressureDiff_cmH2O;
125 double m_PreviousLeftLungVolume_L;
126 double m_PreviousRightLungVolume_L;
127 double m_PreviousLeftPleuralPressureDiff_cmH2O;
128 double m_PreviousRightPleuralPressureDiff_cmH2O;
129 double m_PreviousLeftPleuralVolume_L;
130 double m_PreviousRightPleuralVolume_L;
133 std::vector<double> m_AlveoliVolumeIncrement_L;
134 std::vector<double> m_TopBreathAcinarZoneVolumes_L;
135 std::vector<double> m_BottomBreathAcinarZoneVolumes_L;
136 std::vector<double> m_PreviousShuntScalingFactor;
139 double m_ArterialO2PartialPressure_mmHg;
140 double m_ArterialCO2PartialPressure_mmHg;
141 double m_BreathingCycleTime_s;
142 double m_DriverPressure_cmH2O;
143 double m_ElapsedBreathingCycleTime_min;
144 double m_IERatioScaleFactor;
145 double m_PeakInspiratoryPressure_cmH2O;
146 double m_PeakExpiratoryPressure_cmH2O;
147 double m_PreviousTargetAlveolarVentilation_L_Per_min;
148 double m_VentilationFrequency_Per_min;
149 double m_VentilationPeriod_s;
150 double m_VentilationToTidalVolumeSlope;
156 double m_ExpiratoryHoldFraction;
157 double m_ExpiratoryReleaseFraction;
158 double m_ExpiratoryRiseFraction;
159 double m_InspiratoryHoldFraction;
160 double m_InspiratoryReleaseFraction;
161 double m_InspiratoryRiseFraction;
162 double m_InspiratoryToExpiratoryPauseFraction;
163 double m_ResidueFraction;
164 double m_PreviousDyspneaSeverity;
165 double m_MechanoreceptorsDyspneaFactor;
166 double m_AppliedMechanoreceptorsDyspneaFactor;
169 bool m_PositivePressureVentilation;
172 bool m_ActiveConsciousRespirationCommand;
175 double m_LeftAlveoliDecrease_L;
176 double m_RightAlveoliDecrease_L;
179 double m_RespiratoryResistanceOverride_cmH2O_s_Per_L;
180 double m_RespiratoryComplianceOverride_L_Per_cmH2O;
185 double m_MaxDriverPressure_cmH2O;
187 double m_CentralControlGainConstant;
188 double m_DefaultOpenResistance_cmH2O_s_Per_L;
189 double m_DefaultClosedResistance_cmH2O_s_Per_L;
190 double m_PeripheralControlGainConstant;
191 double m_RespOpenResistance_cmH2O_s_Per_L;
192 double m_RespClosedResistance_cmH2O_s_Per_L;
193 double m_VentilationTidalVolumeIntercept;
194 double m_VentilatoryOcclusionPressure_cmH2O;
195 double m_MinimumAllowableTidalVolume_L;
196 double m_MinimumAllowableInpiratoryAndExpiratoryPeriod_s;
198 double m_AverageLocalTissueBronchodilationEffects;
234 std::vector<SELiquidCompartment*> m_AerosolEffects;
263 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