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/SELiquidCompartmentGraph.h"
39 class PULSE_DECL CardiovascularModel :
public CardiovascularSystem,
public Model
44 CardiovascularModel(Data& data);
45 virtual ~CardiovascularModel();
47 void Clear()
override;
50 void Initialize()
override;
52 void SetUp()
override;
54 void SetHeartRhythm(eHeartRhythm Rhythm)
override;
55 void SetHeartRhythm(eHeartRhythm Rhythm,
bool force);
57 void AtSteadyState()
override;
58 void PreProcess()
override;
59 void Process(
bool solve_and_transport=
true)
override;
60 void PostProcess(
bool solve_and_transport=
true)
override;
63 void ComputeExposedModelParameters()
override;
67 void TunePaths(
double systemicResistanceScale,
double systemicComplianceScale,
double aortaResistanceScale,
double aortaComplianceScale,
double rightHeartResistanceScale,
double venaCavaComplianceScale);
70 void ChronicRenalStenosis();
71 void ChronicHeartFailure();
72 void ChronicPericardialEffusion();
75 void ApplyAnemia(
double reductionFactor);
79 void AdjustVascularTone();
80void MetabolicToneResponse();
81void CutaneousVasomotorResponse();
82 void BeginDriverCycle();
83void RecordAndResetCardiacCycle();
84 void CalculateHeartElastance();
85 void ProcessActions();
88double CalculateDepthForce(
double compressionDepth_cm);
89double ShapeCPRForce(
double compressionForce_N);
90void ApplyCPRForce(
double compressionForce_N);
93 void PericardialEffusion();
94 void PericardialEffusionPressureApplication();
95 void TraumaticBrainInjury();
96 void UpdatePulmonaryCapillaries();
97 void CalculateHemothorax();
99 void CalculatePleuralCavityVenousEffects();
102 void CalculateVitalSigns();
107 bool m_HeartFlowDetected;
108 bool m_FullyCompressedHeart;
109 double m_StabilizedHeartRateBaseline_Per_min;
110 double m_StabilizedMeanArterialPressureBaseline_mmHg;
111 double m_StabilizedMeanPulmonaryArterialPressureBaseline_mmHg;
112 double m_CurrentDriverCycleTime_s;
113 double m_DriverCyclePeriod_s;
114 double m_LeftHeartElastanceModifier;
115 double m_LeftHeartElastance_mmHg_Per_mL;
116 double m_LeftHeartElastanceMax_mmHg_Per_mL;
117 double m_LeftHeartElastanceMin_mmHg_Per_mL;
118 double m_RightHeartElastance_mmHg_Per_mL;
119 double m_RightHeartElastanceMax_mmHg_Per_mL;
120 double m_RightHeartElastanceMin_mmHg_Per_mL;
122 eSwitch m_EnableFeedbackAfterArrhythmiaTrasition;
123 bool m_StartCardiacArrest;
124 bool m_TransitionArrhythmia;
125 double m_CardiacArrestVitalsUpdateTimer_s;
135 double m_CompressionFrequencyCurrentTime_s;
136 double m_CompressionFrequencyDuration_s;
137 double m_CompressionPeriod_s;
138 double m_CompressionPeriodCurrentTime_s;
140 double m_CardiacCycleDiastolicVolume_mL;
141 double m_CardiacCycleAortaPressureLow_mmHg;
142 double m_CardiacCycleAortaPressureHigh_mmHg;
143 double m_CardiacCycleLeftHeartPressureLow_mmHg;
144 double m_CardiacCycleLeftHeartPressureHigh_mmHg;
145 double m_CardiacCyclePulmonaryArteryPressureLow_mmHg;
146 double m_CardiacCyclePulmonaryArteryPressureHigh_mmHg;
147 double m_CardiacCycleRightHeartPressureLow_mmHg;
148 double m_CardiacCycleRightHeartPressureHigh_mmHg;
149 double m_LastCardiacCycleMeanArterialCO2PartialPressure_mmHg;
150 double m_LastCardiacCycleMeanArterialO2PartialPressure_mmHg;
151 double m_CardiacCycleStrokeVolume_mL;
152 double m_PeripheralVolumeHigh_mL;
153 double m_PeripheralVolumeLow_mL;
155 std::vector<double> m_LeftCardiacCyclePerfusionVolumes_mL;
156 std::vector<double> m_RightCardiacCyclePerfusionVolumes_mL;
172 struct HemorrhageTrack
175 std::map<SELiquidCompartment* , std::vector<SELiquidCompartmentLink*>> CmptHemorrhageLinks;
177 std::map<SEHemorrhage*, HemorrhageTrack*> m_HemorrhageTrack;
180 double m_MAPCollapse_mmHg;
181 double m_MinIndividialSystemicResistance_mmHg_s_Per_mL;
258 std::vector<SEFluidCircuitPath*> m_HeartCompliancePaths;
259 std::vector<SEFluidCircuitPath*> m_AortaCompliancePaths;
260 std::vector<SEFluidCircuitPath*> m_AortaResistancePaths;
261 std::vector<SEFluidCircuitPath*> m_VenaCavaCompliancePaths;
262 std::vector<SEFluidCircuitPath*> m_VenaCavaResistancePaths;
263 std::vector<SEFluidCircuitPath*> m_PulmonaryCompliancePaths;
264 std::vector<SEFluidCircuitPath*> m_PulmonaryResistancePaths;
265 std::vector<SEFluidCircuitPath*> m_SystemicCompliancePaths;
266 std::vector<SEFluidCircuitPath*> m_SystemicResistancePaths;
267 std::vector<SEFluidCircuitPath*> m_MuscleResistancePaths;
268 std::vector<SEFluidCircuitPath*> m_SkinPaths;
271 std::vector<SEFluidCircuitPath*> m_LeftPulmonaryArteriesToVeins;
272 std::vector<SEFluidCircuitPath*> m_LeftPulmonaryArteriesToCapillaries;
273 std::vector<SEFluidCircuitPath*> m_RightPulmonaryArteriesToVeins;
274 std::vector<SEFluidCircuitPath*> m_RightPulmonaryArteriesToCapillaries;
Definition: PBPhysiology.h:25
Definition: SECardiovascularMechanicsModifiers.h:9
Definition: SECircuitCalculator.h:24
Definition: SEFluidCircuit.h:12
Definition: SEFluidCircuitNode.h:10
Definition: SEFluidCircuitPath.h:9
Definition: SEGasCompartment.h:14
Definition: SEHemorrhage.h:35
Definition: SELiquidCompartmentGraph.h:16
Definition: SELiquidCompartment.h:11
Definition: SELiquidCompartmentLink.h:11
Definition: SELiquidSubstanceQuantity.h:12
Definition: SEPatient.h:13
Definition: SERunningAverage.h:8
Definition: SESubstanceTransport.h:86
Definition: SETemporalInterpolator.h:8