From f514008b10b656388afa467b173c0189511ddf5b Mon Sep 17 00:00:00 2001 From: Jeff Webb Date: Mon, 14 Aug 2023 13:47:13 -0400 Subject: [PATCH 01/35] =?UTF-8?q?=EF=BB=BFIntegrate=20expanded=20lung=20de?= =?UTF-8?q?finitions.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/config/ScenarioVerification.config | 1 + .../HeterogeneousARDSExacerbation.json | 85 + .../system/physiology/SERespiratorySystem.h | 21 +- src/cpp/engine/PulseEngine.h | 474 ++- .../engine/common/controller/CircuitManager.h | 275 ++ .../SetupCircuitsAndCompartments.cpp | 184 +- .../controller/SetupExpandedRespiratory.cpp | 2964 ++++++++++++++++- .../common/controller/SubstanceManager.cpp | 8 +- .../system/physiology/CardiovascularModel.cpp | 74 +- .../system/physiology/RespiratoryModel.cpp | 240 +- .../common/system/physiology/TissueModel.cpp | 8 +- .../whole_body/test/CardiovascularCircuit.cpp | 2 + .../whole_body/test/RespiratoryCircuit.cpp | 2 + .../system/physiology/SERespiratorySystem.cs | 21 +- src/schema/pulse/cdm/bind/Physiology.proto | 35 +- 15 files changed, 4275 insertions(+), 119 deletions(-) create mode 100644 data/human/adult/scenarios/patient/HeterogeneousARDSExacerbation.json diff --git a/data/config/ScenarioVerification.config b/data/config/ScenarioVerification.config index 336cfb332..93ebf4920 100644 --- a/data/config/ScenarioVerification.config +++ b/data/config/ScenarioVerification.config @@ -106,6 +106,7 @@ patient/DyspneaVaried.json = ScenarioTest patient/EffusionCondition.json = ScenarioTest patient/EffusionConditionPlus.json = ScenarioTest patient/HemothoraxVaried.json = ScenarioTest +patient/HeterogeneousARDSExacerbation.json = ScenarioTest patient/PneumoniaExacerbation.json = ScenarioTest patient/PneumoniaModerateBothLungs.json = ScenarioTest patient/PneumoniaSevereLeftLobe.json = ScenarioTest diff --git a/data/human/adult/scenarios/patient/HeterogeneousARDSExacerbation.json b/data/human/adult/scenarios/patient/HeterogeneousARDSExacerbation.json new file mode 100644 index 000000000..b11d78ca8 --- /dev/null +++ b/data/human/adult/scenarios/patient/HeterogeneousARDSExacerbation.json @@ -0,0 +1,85 @@ +{ + "Name": "HeterogeneousARDSExacerbation", + "Description": "Increasing severities of ARDS.", + "PatientConfiguration": { "PatientFile": "StandardMale.json" }, + "DataRequestFile": [ + "StandardDataRequests.json", + "RespiratoryDataRequests.json" + ], + "AnyAction": + [ + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 2.0, "Unit": "min" }}}}, + { "PatientAction": { "AcuteRespiratoryDistressSyndromeExacerbation": + { + "Severity": [ + { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}] + }} + }, + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}}, + { "PatientAction": { "AcuteRespiratoryDistressSyndromeExacerbation": + { + "Severity": [ + { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}] + }} + }, + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}}, + { "PatientAction": { "AcuteRespiratoryDistressSyndromeExacerbation": + { + "Severity": [ + { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}] + }} + }, + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}} + ] +} diff --git a/src/cpp/cdm/system/physiology/SERespiratorySystem.h b/src/cpp/cdm/system/physiology/SERespiratorySystem.h index 674936575..d60609a51 100644 --- a/src/cpp/cdm/system/physiology/SERespiratorySystem.h +++ b/src/cpp/cdm/system/physiology/SERespiratorySystem.h @@ -13,7 +13,26 @@ enum class eLungCompartment LeftInferiorLobe, RightSuperiorLobe, RightMiddleLobe, - RightInferiorLobe + RightInferiorLobe, + + RightSuperiorLobeApical, + RightSuperiorLobePosterior, + RightSuperiorLobeAnterior, + RightMiddleLobeLateral, + RightMiddleLobeMedial, + RightInferiorLobeSuperior, + RightInferiorLobeMedialBasal, + RightInferiorLobeAnteriorBasal, + RightInferiorLobeLateralBasal, + RightInferiorLobePosteriorBasal, + LeftInferiorLobePosteriorBasal, + LeftInferiorLobeLateralBasal, + LeftInferiorLobeAnteromedialBasal, + LeftInferiorLobeSuperior, + LeftSuperiorLobeInferiorLingula, + LeftSuperiorLobeSuperiorLingula, + LeftSuperiorLobeAnterior, + LeftSuperiorLobeApicoposterior }; extern CDM_DECL const std::string& eLungCompartment_Name(eLungCompartment cmpt); using LungImpairmentMap = std::map; diff --git a/src/cpp/engine/PulseEngine.h b/src/cpp/engine/PulseEngine.h index e8218f6dd..803f72cea 100644 --- a/src/cpp/engine/PulseEngine.h +++ b/src/cpp/engine/PulseEngine.h @@ -340,13 +340,170 @@ namespace pulse class ExpandedPulmonaryCompartment { public: + DEFINE_STATIC_STRING(RightBranches); + DEFINE_STATIC_STRING(LeftBranches); + + DEFINE_STATIC_STRING(RightMainBronchus); + DEFINE_STATIC_STRING(LeftMainBronchus); + DEFINE_STATIC_STRING(RightIntermediateBronchus); + DEFINE_STATIC_STRING(RightSuperiorLobarBronchus); + DEFINE_STATIC_STRING(RightMiddleLobarBronchus); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus1); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus1); + DEFINE_STATIC_STRING(LeftSuperiorLobarBronchus); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus2); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus2); + DEFINE_STATIC_STRING(RightSuperiorApicoposteriorBronchus); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus3); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus3); + DEFINE_STATIC_STRING(LeftLingularBonchus); + DEFINE_STATIC_STRING(LeftSuperiorApicoposteriorBronchus); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus4); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalBronchiole); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorBronchiole); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorBronchiole); + DEFINE_STATIC_STRING(RightMiddleLobeLateralBronchiole); + DEFINE_STATIC_STRING(RightMiddleLobeMedialBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalBronchiole); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalBronchiole); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalBronchiole); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalBronchiole); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorBronchiole); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaBronchiole); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaBronchiole); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorBronchiole); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorBronchiole); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightMiddleLobeLateralAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightMiddleLobeMedialAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalAlveolarDeadSpace); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalAlveoli); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorAlveoli); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorAlveoli); + DEFINE_STATIC_STRING(RightMiddleLobeLateralAlveoli); + DEFINE_STATIC_STRING(RightMiddleLobeMedialAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalAlveoli); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalAlveoli); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalAlveoli); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalAlveoli); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorAlveoli); static const std::vector& GetValues() { ScopedMutex lock; if (_values.empty()) { - + _values.push_back(RightBranches); + _values.push_back(LeftBranches); + + _values.push_back(RightMainBronchus); + _values.push_back(LeftMainBronchus); + _values.push_back(RightIntermediateBronchus); + _values.push_back(RightSuperiorLobarBronchus); + _values.push_back(RightMiddleLobarBronchus); + _values.push_back(RightInferiorLobarBronchus1); + _values.push_back(LeftInferiorLobarBronchus1); + _values.push_back(LeftSuperiorLobarBronchus); + _values.push_back(RightInferiorLobarBronchus2); + _values.push_back(LeftInferiorLobarBronchus2); + _values.push_back(RightSuperiorApicoposteriorBronchus); + _values.push_back(RightInferiorLobarBronchus3); + _values.push_back(LeftInferiorLobarBronchus3); + _values.push_back(LeftLingularBonchus); + _values.push_back(LeftSuperiorApicoposteriorBronchus); + _values.push_back(RightInferiorLobarBronchus4); + + _values.push_back(RightSuperiorLobeApicalBronchiole); + _values.push_back(RightSuperiorLobePosteriorBronchiole); + _values.push_back(RightSuperiorLobeAnteriorBronchiole); + _values.push_back(RightMiddleLobeLateralBronchiole); + _values.push_back(RightMiddleLobeMedialBronchiole); + _values.push_back(RightInferiorLobeSuperiorBronchiole); + _values.push_back(RightInferiorLobeMedialBasalBronchiole); + _values.push_back(RightInferiorLobeAnteriorBasalBronchiole); + _values.push_back(RightInferiorLobeLateralBasalBronchiole); + _values.push_back(RightInferiorLobePosteriorBasalBronchiole); + + _values.push_back(LeftInferiorLobePosteriorBasalBronchiole); + _values.push_back(LeftInferiorLobeLateralBasalBronchiole); + _values.push_back(LeftInferiorLobeAnteromedialBasalBronchiole); + _values.push_back(LeftInferiorLobeSuperiorBronchiole); + _values.push_back(LeftSuperiorLobeInferiorLingulaBronchiole); + _values.push_back(LeftSuperiorLobeSuperiorLingulaBronchiole); + _values.push_back(LeftSuperiorLobeAnteriorBronchiole); + _values.push_back(LeftSuperiorLobeApicoposteriorBronchiole); + + _values.push_back(RightSuperiorLobeApicalAlveolarDeadSpace); + _values.push_back(RightSuperiorLobePosteriorAlveolarDeadSpace); + _values.push_back(RightSuperiorLobeAnteriorAlveolarDeadSpace); + _values.push_back(RightMiddleLobeLateralAlveolarDeadSpace); + _values.push_back(RightMiddleLobeMedialAlveolarDeadSpace); + _values.push_back(RightInferiorLobeSuperiorAlveolarDeadSpace); + _values.push_back(RightInferiorLobeMedialBasalAlveolarDeadSpace); + _values.push_back(RightInferiorLobeAnteriorBasalAlveolarDeadSpace); + _values.push_back(RightInferiorLobeLateralBasalAlveolarDeadSpace); + _values.push_back(RightInferiorLobePosteriorBasalAlveolarDeadSpace); + + _values.push_back(LeftInferiorLobePosteriorBasalAlveolarDeadSpace); + _values.push_back(LeftInferiorLobeLateralBasalAlveolarDeadSpace); + _values.push_back(LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + _values.push_back(LeftInferiorLobeSuperiorAlveolarDeadSpace); + _values.push_back(LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + _values.push_back(LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + _values.push_back(LeftSuperiorLobeAnteriorAlveolarDeadSpace); + _values.push_back(LeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + _values.push_back(RightSuperiorLobeApicalAlveoli); + _values.push_back(RightSuperiorLobePosteriorAlveoli); + _values.push_back(RightSuperiorLobeAnteriorAlveoli); + _values.push_back(RightMiddleLobeLateralAlveoli); + _values.push_back(RightMiddleLobeMedialAlveoli); + _values.push_back(RightInferiorLobeSuperiorAlveoli); + _values.push_back(RightInferiorLobeMedialBasalAlveoli); + _values.push_back(RightInferiorLobeAnteriorBasalAlveoli); + _values.push_back(RightInferiorLobeLateralBasalAlveoli); + _values.push_back(RightInferiorLobePosteriorBasalAlveoli); + + _values.push_back(LeftInferiorLobePosteriorBasalAlveoli); + _values.push_back(LeftInferiorLobeLateralBasalAlveoli); + _values.push_back(LeftInferiorLobeAnteromedialBasalAlveoli); + _values.push_back(LeftInferiorLobeSuperiorAlveoli); + _values.push_back(LeftSuperiorLobeInferiorLingulaAlveoli); + _values.push_back(LeftSuperiorLobeSuperiorLingulaAlveoli); + _values.push_back(LeftSuperiorLobeAnteriorAlveoli); + _values.push_back(LeftSuperiorLobeApicoposteriorAlveoli); } return _values; } @@ -369,13 +526,166 @@ namespace pulse class ExpandedPulmonaryLink { public: + DEFINE_STATIC_STRING(CarinaToRightMainBronchus); + DEFINE_STATIC_STRING(RightMainBronchusToRightIntermediateBronchus); + DEFINE_STATIC_STRING(RightMainBronchusToRightSuperiorLobarBronchus); + DEFINE_STATIC_STRING(RightIntermediateBronchusToRightMiddleLobarBronchus); + DEFINE_STATIC_STRING(RightIntermediateBronchusToRightInferiorLobarBronchus1); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2); + DEFINE_STATIC_STRING(RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4); + + DEFINE_STATIC_STRING(CarinaToLeftMainBronchus); + DEFINE_STATIC_STRING(LeftMainBronchusToLeftInferiorLobarBronchus1); + DEFINE_STATIC_STRING(LeftMainBronchusToLeftSuperiorLobarBronchus); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3); + DEFINE_STATIC_STRING(LeftSuperiorLobarBronchusToLeftLingularBonchus); + DEFINE_STATIC_STRING(LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus); + + DEFINE_STATIC_STRING(RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole); + DEFINE_STATIC_STRING(RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole); + DEFINE_STATIC_STRING(RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole); + DEFINE_STATIC_STRING(RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole); + DEFINE_STATIC_STRING(RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole); + + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole); + DEFINE_STATIC_STRING(LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole); + DEFINE_STATIC_STRING(LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole); + DEFINE_STATIC_STRING(LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole); + DEFINE_STATIC_STRING(LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli); + DEFINE_STATIC_STRING(RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli); + DEFINE_STATIC_STRING(RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli); static const std::vector& GetValues() { ScopedMutex lock; if (_values.empty()) { - + _values.push_back(CarinaToRightMainBronchus); + _values.push_back(RightMainBronchusToRightIntermediateBronchus); + _values.push_back(RightMainBronchusToRightSuperiorLobarBronchus); + _values.push_back(RightIntermediateBronchusToRightMiddleLobarBronchus); + _values.push_back(RightIntermediateBronchusToRightInferiorLobarBronchus1); + _values.push_back(RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2); + _values.push_back(RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus); + _values.push_back(RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3); + _values.push_back(RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4); + + _values.push_back(CarinaToLeftMainBronchus); + _values.push_back(LeftMainBronchusToLeftInferiorLobarBronchus1); + _values.push_back(LeftMainBronchusToLeftSuperiorLobarBronchus); + _values.push_back(LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2); + _values.push_back(LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3); + _values.push_back(LeftSuperiorLobarBronchusToLeftLingularBonchus); + _values.push_back(LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus); + + _values.push_back(RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole); + _values.push_back(RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole); + _values.push_back(RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole); + _values.push_back(RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole); + _values.push_back(RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole); + _values.push_back(RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole); + _values.push_back(RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole); + _values.push_back(RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole); + _values.push_back(RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole); + _values.push_back(RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole); + + _values.push_back(LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole); + _values.push_back(LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole); + _values.push_back(LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole); + _values.push_back(LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole); + _values.push_back(LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole); + _values.push_back(LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole); + _values.push_back(LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole); + _values.push_back(LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole); + + _values.push_back(RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace); + _values.push_back(RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace); + _values.push_back(RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace); + _values.push_back(RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace); + _values.push_back(RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace); + _values.push_back(RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace); + _values.push_back(RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace); + _values.push_back(RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace); + _values.push_back(RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace); + _values.push_back(RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace); + + _values.push_back(LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace); + _values.push_back(LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace); + _values.push_back(LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + _values.push_back(LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace); + _values.push_back(LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + _values.push_back(LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + _values.push_back(LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace); + _values.push_back(LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + _values.push_back(RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli); + _values.push_back(RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli); + _values.push_back(RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli); + _values.push_back(RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli); + _values.push_back(RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli); + _values.push_back(RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli); + _values.push_back(RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli); + _values.push_back(RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli); + _values.push_back(RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli); + _values.push_back(RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli); + + _values.push_back(LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli); + _values.push_back(LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli); + _values.push_back(LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli); + _values.push_back(LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli); + _values.push_back(LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli); + _values.push_back(LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli); + _values.push_back(LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli); + _values.push_back(LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli); } return _values; } @@ -598,6 +908,26 @@ namespace pulse DEFINE_STATIC_STRING(Ground); + DEFINE_STATIC_STRING(RightSuperiorLobeApicalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightMiddleLobeLateralPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightMiddleLobeMedialPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalPulmonaryCapillaries); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + static const std::vector& GetValues() { @@ -661,6 +991,26 @@ namespace pulse _values.push_back(RightArm); _values.push_back(RightLeg); //_values.push_back(Ground); + + _values.push_back(RightSuperiorLobeApicalPulmonaryCapillaries); + _values.push_back(RightSuperiorLobePosteriorPulmonaryCapillaries); + _values.push_back(RightSuperiorLobeAnteriorPulmonaryCapillaries); + _values.push_back(RightMiddleLobeLateralPulmonaryCapillaries); + _values.push_back(RightMiddleLobeMedialPulmonaryCapillaries); + _values.push_back(RightInferiorLobeSuperiorPulmonaryCapillaries); + _values.push_back(RightInferiorLobeMedialBasalPulmonaryCapillaries); + _values.push_back(RightInferiorLobeAnteriorBasalPulmonaryCapillaries); + _values.push_back(RightInferiorLobeLateralBasalPulmonaryCapillaries); + _values.push_back(RightInferiorLobePosteriorBasalPulmonaryCapillaries); + + _values.push_back(LeftInferiorLobePosteriorBasalPulmonaryCapillaries); + _values.push_back(LeftInferiorLobeLateralBasalPulmonaryCapillaries); + _values.push_back(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + _values.push_back(LeftInferiorLobeSuperiorPulmonaryCapillaries); + _values.push_back(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + _values.push_back(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + _values.push_back(LeftSuperiorLobeAnteriorPulmonaryCapillaries); + _values.push_back(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); } return _values; } @@ -793,6 +1143,66 @@ namespace pulse DEFINE_STATIC_STRING(RightPeritubularCapillariesToRenalVein); // Reusing 'RightKidneyToVenaCava' to connect the Right Renal Vein To Vena Cava); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries); + + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalShunt); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorShunt); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorShunt); + DEFINE_STATIC_STRING(RightMiddleLobeLateralShunt); + DEFINE_STATIC_STRING(RightMiddleLobeMedialShunt); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorShunt); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalShunt); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalShunt); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalShunt); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalShunt); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalShunt); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalShunt); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalShunt); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorShunt); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaShunt); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaShunt); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorShunt); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorShunt); + static const std::vector& GetValues() { @@ -880,6 +1290,66 @@ namespace pulse _values.push_back(RightTubulesToPeritubularCapillaries); _values.push_back(RightEfferentArterioleToPeritubularCapillaries); _values.push_back(RightPeritubularCapillariesToRenalVein); + + _values.push_back(RightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries); + _values.push_back(RightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries); + _values.push_back(RightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries); + _values.push_back(RightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries); + _values.push_back(RightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries); + _values.push_back(RightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries); + _values.push_back(RightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries); + _values.push_back(RightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); + _values.push_back(RightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries); + _values.push_back(RightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries); + + _values.push_back(LeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); + _values.push_back(LeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries); + _values.push_back(LeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + _values.push_back(LeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries); + _values.push_back(LeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + _values.push_back(LeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + _values.push_back(LeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries); + _values.push_back(LeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + _values.push_back(RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins); + _values.push_back(RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins); + _values.push_back(RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins); + _values.push_back(RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins); + _values.push_back(RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins); + _values.push_back(RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins); + _values.push_back(RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins); + _values.push_back(RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); + _values.push_back(RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins); + _values.push_back(RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); + + _values.push_back(LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins); + _values.push_back(LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins); + _values.push_back(LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins); + _values.push_back(LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins); + _values.push_back(LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); + _values.push_back(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); + _values.push_back(LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins); + _values.push_back(LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins); + + _values.push_back(RightSuperiorLobeApicalShunt); + _values.push_back(RightSuperiorLobePosteriorShunt); + _values.push_back(RightSuperiorLobeAnteriorShunt); + _values.push_back(RightMiddleLobeLateralShunt); + _values.push_back(RightMiddleLobeMedialShunt); + _values.push_back(RightInferiorLobeSuperiorShunt); + _values.push_back(RightInferiorLobeMedialBasalShunt); + _values.push_back(RightInferiorLobeAnteriorBasalShunt); + _values.push_back(RightInferiorLobeLateralBasalShunt); + _values.push_back(RightInferiorLobePosteriorBasalShunt); + + _values.push_back(LeftInferiorLobePosteriorBasalShunt); + _values.push_back(LeftInferiorLobeLateralBasalShunt); + _values.push_back(LeftInferiorLobeAnteromedialBasalShunt); + _values.push_back(LeftInferiorLobeSuperiorShunt); + _values.push_back(LeftSuperiorLobeInferiorLingulaShunt); + _values.push_back(LeftSuperiorLobeSuperiorLingulaShunt); + _values.push_back(LeftSuperiorLobeAnteriorShunt); + _values.push_back(LeftSuperiorLobeApicoposteriorShunt); } return _values; } diff --git a/src/cpp/engine/common/controller/CircuitManager.h b/src/cpp/engine/common/controller/CircuitManager.h index b874f2f16..37c72cd41 100644 --- a/src/cpp/engine/common/controller/CircuitManager.h +++ b/src/cpp/engine/common/controller/CircuitManager.h @@ -220,10 +220,185 @@ namespace pulse class ExpandedRespiratoryNode { + public: + DEFINE_STATIC_STRING(RightMainBronchus); + DEFINE_STATIC_STRING(LeftMainBronchus); + DEFINE_STATIC_STRING(RightIntermediateBronchus); + DEFINE_STATIC_STRING(RightSuperiorLobarBronchus); + DEFINE_STATIC_STRING(RightMiddleLobarBronchus); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus1); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus1); + DEFINE_STATIC_STRING(LeftSuperiorLobarBronchus); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus2); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus2); + DEFINE_STATIC_STRING(RightSuperiorApicoposteriorBronchus); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus3); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus3); + DEFINE_STATIC_STRING(LeftLingularBonchus); + DEFINE_STATIC_STRING(LeftSuperiorApicoposteriorBronchus); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus4); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalBronchiole); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorBronchiole); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorBronchiole); + DEFINE_STATIC_STRING(RightMiddleLobeLateralBronchiole); + DEFINE_STATIC_STRING(RightMiddleLobeMedialBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalBronchiole); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalBronchiole); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalBronchiole); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalBronchiole); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorBronchiole); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaBronchiole); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaBronchiole); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorBronchiole); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorBronchiole); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightMiddleLobeLateralAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightMiddleLobeMedialAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalAlveolarDeadSpace); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalAlveoli); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorAlveoli); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorAlveoli); + DEFINE_STATIC_STRING(RightMiddleLobeLateralAlveoli); + DEFINE_STATIC_STRING(RightMiddleLobeMedialAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalAlveoli); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalAlveoli); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalAlveoli); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalAlveoli); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorAlveoli); }; class ExpandedRespiratoryPath { + public: + DEFINE_STATIC_STRING(CarinaToRightMainBronchus); + DEFINE_STATIC_STRING(RightMainBronchusToRightIntermediateBronchus); + DEFINE_STATIC_STRING(RightMainBronchusToRightSuperiorLobarBronchus); + DEFINE_STATIC_STRING(RightIntermediateBronchusToRightMiddleLobarBronchus); + DEFINE_STATIC_STRING(RightIntermediateBronchusToRightInferiorLobarBronchus1); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2); + DEFINE_STATIC_STRING(RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4); + + DEFINE_STATIC_STRING(CarinaToLeftMainBronchus); + DEFINE_STATIC_STRING(LeftMainBronchusToLeftInferiorLobarBronchus1); + DEFINE_STATIC_STRING(LeftMainBronchusToLeftSuperiorLobarBronchus); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3); + DEFINE_STATIC_STRING(LeftSuperiorLobarBronchusToLeftLingularBonchus); + DEFINE_STATIC_STRING(LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus); + + DEFINE_STATIC_STRING(RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole); + DEFINE_STATIC_STRING(RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole); + DEFINE_STATIC_STRING(RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole); + DEFINE_STATIC_STRING(RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole); + DEFINE_STATIC_STRING(RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole); + DEFINE_STATIC_STRING(RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole); + + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole); + DEFINE_STATIC_STRING(LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole); + DEFINE_STATIC_STRING(LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole); + DEFINE_STATIC_STRING(LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole); + DEFINE_STATIC_STRING(LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole); + DEFINE_STATIC_STRING(LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli); + DEFINE_STATIC_STRING(RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli); + DEFINE_STATIC_STRING(RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalAlveoliToRightPleuralConnection); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorAlveoliToRightPleuralConnection); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection); + DEFINE_STATIC_STRING(RightMiddleLobeLateralAlveoliToRightPleuralConnection); + DEFINE_STATIC_STRING(RightMiddleLobeMedialAlveoliToRightPleuralConnection); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorAlveoliToRightPleuralConnection); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection); }; ////////////////////////////////////// @@ -603,6 +778,26 @@ namespace pulse DEFINE_STATIC_STRING(VenaCava1); DEFINE_STATIC_STRING(Ground); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightMiddleLobeLateralPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightMiddleLobeMedialPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalPulmonaryCapillaries); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); }; class CardiovascularPath @@ -739,6 +934,86 @@ namespace pulse // Vena Cava DEFINE_STATIC_STRING(VenaCava1ToGround); DEFINE_STATIC_STRING(IVToVenaCava1); + + DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries); + + DEFINE_STATIC_STRING(LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1); + DEFINE_STATIC_STRING(RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1); + DEFINE_STATIC_STRING(RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(RightMiddleLobeLateralPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(RightMiddleLobeMedialPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalShunt); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorShunt); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorShunt); + DEFINE_STATIC_STRING(RightMiddleLobeLateralShunt); + DEFINE_STATIC_STRING(RightMiddleLobeMedialShunt); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorShunt); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalShunt); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalShunt); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalShunt); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalShunt); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalShunt); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalShunt); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalShunt); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorShunt); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaShunt); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaShunt); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorShunt); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorShunt); }; class ExpandedCardiovascularNode diff --git a/src/cpp/engine/common/controller/SetupCircuitsAndCompartments.cpp b/src/cpp/engine/common/controller/SetupCircuitsAndCompartments.cpp index 954483483..a900db0cd 100644 --- a/src/cpp/engine/common/controller/SetupCircuitsAndCompartments.cpp +++ b/src/cpp/engine/common/controller/SetupCircuitsAndCompartments.cpp @@ -2476,50 +2476,54 @@ namespace pulse /////////////// // Left Lung // - SEFluidCircuitNode* LeftLung1 = cCardiovascular.GetNode(pulse::CardiovascularNode::LeftPulmonaryCapillaries1); - SEFluidCircuitNode& LeftLungT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftLungT1); - SEFluidCircuitNode& LeftLungT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftLungT2); - SEFluidCircuitNode& LeftLungT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftLungT3); - LeftLungT1.GetPressure().Set(LeftLung1->GetPressure()); - LeftLungT3.GetPressure().Set(Ground->GetPressure()); - LeftLungT1.GetVolumeBaseline().SetValue(LLungEWFraction * LLungTissueVolume * 1000.0, VolumeUnit::mL); - - SEFluidCircuitPath& LeftLung1ToLeftLungT2 = cCombinedCardiovascular.CreatePath(*LeftLung1, LeftLungT2, pulse::TissuePath::LeftLung1ToLeftLungT2); - LeftLung1ToLeftLungT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftLungT2ToLeftLungT1 = cCombinedCardiovascular.CreatePath(LeftLungT2, LeftLungT1, pulse::TissuePath::LeftLungT2ToLeftLungT1); - LeftLungT2ToLeftLungT1.GetResistanceBaseline().SetValue((1 / LLungTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftLungT1ToLeftLungT3 = cCombinedCardiovascular.CreatePath(LeftLungT1, LeftLungT3, pulse::TissuePath::LeftLungT1ToLeftLungT3); - LeftLungT1ToLeftLungT3.GetComplianceBaseline().SetValue(LeftLungT1.GetVolumeBaseline(VolumeUnit::mL) / LeftLungT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToLeftLungT3 = cCombinedCardiovascular.CreatePath(*Ground, LeftLungT3, pulse::TissuePath::GroundToLeftLungT3); - GroundToLeftLungT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - - SEFluidCircuitPath& LeftLungT1ToLymph = cCombinedCardiovascular.CreatePath(LeftLungT1, Lymph, pulse::TissuePath::LeftLungT1ToLymph); - LeftLungT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); - - SETissueCompartment& LeftLungTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::LeftLung); - SELiquidCompartment& LeftLungExtracellular = LeftLungTissue.GetExtracellular(); - SELiquidCompartment& LeftLungIntracellular = LeftLungTissue.GetIntracellular(); - LeftLungTissue.GetMatrixVolume().SetValue((1 - LLungEWFraction - LLungIWFraction) * LLungTissueVolume * 1000.0, VolumeUnit::mL); - LeftLungExtracellular.MapNode(LeftLungT1); - LeftLungExtracellular.MapNode(LeftLungT2); - LeftLungExtracellular.MapNode(LeftLungT3); - LeftLungExtracellular.GetWaterVolumeFraction().SetValue(LLungEWFraction); - LeftLungIntracellular.GetVolume().SetValue(LLungIWFraction * LLungTissueVolume * 1000.0, VolumeUnit::mL); - LeftLungIntracellular.GetWaterVolumeFraction().SetValue(LLungIWFraction); - LeftLungTissue.GetAcidicPhospohlipidConcentration().SetValue(LLungAPL, MassPerMassUnit::mg_Per_g); - LeftLungTissue.GetNeutralLipidsVolumeFraction().SetValue(LLungNLFraction); - LeftLungTissue.GetNeutralPhospholipidsVolumeFraction().SetValue(LLungNPFraction); - LeftLungTissue.GetTissueToPlasmaAlbuminRatio().SetValue(LLungARatio); - LeftLungTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(LLungLRatio); - LeftLungTissue.GetTissueToPlasmaAlphaAcidGlycoproteinRatio().SetValue(LLungAAGRatio); - LeftLungTissue.GetTotalMass().SetValue(LLungTissueMass, MassUnit::kg); - - SELiquidCompartmentLink& LeftLungVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::LeftLung), - LeftLungExtracellular, pulse::VascularLink::LeftLungVascularToTissue); - LeftLungVascularToTissue.MapPath(LeftLung1ToLeftLungT2); - - SELiquidCompartmentLink& LeftLungTissueToLymph = m_Compartments->CreateLiquidLink(LeftLungExtracellular, cLymph, pulse::LymphLink::LeftLungTissueToLymph); - LeftLungTissueToLymph.MapPath(LeftLungT1ToLymph); + //jbw - Fix + if (m_Config->UseExpandedRespiratory() == eSwitch::Off) + { + SEFluidCircuitNode* LeftLung1 = cCardiovascular.GetNode(pulse::CardiovascularNode::LeftPulmonaryCapillaries1); + SEFluidCircuitNode& LeftLungT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftLungT1); + SEFluidCircuitNode& LeftLungT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftLungT2); + SEFluidCircuitNode& LeftLungT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftLungT3); + LeftLungT1.GetPressure().Set(LeftLung1->GetPressure()); + LeftLungT3.GetPressure().Set(Ground->GetPressure()); + LeftLungT1.GetVolumeBaseline().SetValue(LLungEWFraction * LLungTissueVolume * 1000.0, VolumeUnit::mL); + + SEFluidCircuitPath& LeftLung1ToLeftLungT2 = cCombinedCardiovascular.CreatePath(*LeftLung1, LeftLungT2, pulse::TissuePath::LeftLung1ToLeftLungT2); + LeftLung1ToLeftLungT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); + SEFluidCircuitPath& LeftLungT2ToLeftLungT1 = cCombinedCardiovascular.CreatePath(LeftLungT2, LeftLungT1, pulse::TissuePath::LeftLungT2ToLeftLungT1); + LeftLungT2ToLeftLungT1.GetResistanceBaseline().SetValue((1 / LLungTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& LeftLungT1ToLeftLungT3 = cCombinedCardiovascular.CreatePath(LeftLungT1, LeftLungT3, pulse::TissuePath::LeftLungT1ToLeftLungT3); + LeftLungT1ToLeftLungT3.GetComplianceBaseline().SetValue(LeftLungT1.GetVolumeBaseline(VolumeUnit::mL) / LeftLungT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& GroundToLeftLungT3 = cCombinedCardiovascular.CreatePath(*Ground, LeftLungT3, pulse::TissuePath::GroundToLeftLungT3); + GroundToLeftLungT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); + + SEFluidCircuitPath& LeftLungT1ToLymph = cCombinedCardiovascular.CreatePath(LeftLungT1, Lymph, pulse::TissuePath::LeftLungT1ToLymph); + LeftLungT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); + + SETissueCompartment& LeftLungTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::LeftLung); + SELiquidCompartment& LeftLungExtracellular = LeftLungTissue.GetExtracellular(); + SELiquidCompartment& LeftLungIntracellular = LeftLungTissue.GetIntracellular(); + LeftLungTissue.GetMatrixVolume().SetValue((1 - LLungEWFraction - LLungIWFraction) * LLungTissueVolume * 1000.0, VolumeUnit::mL); + LeftLungExtracellular.MapNode(LeftLungT1); + LeftLungExtracellular.MapNode(LeftLungT2); + LeftLungExtracellular.MapNode(LeftLungT3); + LeftLungExtracellular.GetWaterVolumeFraction().SetValue(LLungEWFraction); + LeftLungIntracellular.GetVolume().SetValue(LLungIWFraction * LLungTissueVolume * 1000.0, VolumeUnit::mL); + LeftLungIntracellular.GetWaterVolumeFraction().SetValue(LLungIWFraction); + LeftLungTissue.GetAcidicPhospohlipidConcentration().SetValue(LLungAPL, MassPerMassUnit::mg_Per_g); + LeftLungTissue.GetNeutralLipidsVolumeFraction().SetValue(LLungNLFraction); + LeftLungTissue.GetNeutralPhospholipidsVolumeFraction().SetValue(LLungNPFraction); + LeftLungTissue.GetTissueToPlasmaAlbuminRatio().SetValue(LLungARatio); + LeftLungTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(LLungLRatio); + LeftLungTissue.GetTissueToPlasmaAlphaAcidGlycoproteinRatio().SetValue(LLungAAGRatio); + LeftLungTissue.GetTotalMass().SetValue(LLungTissueMass, MassUnit::kg); + + SELiquidCompartmentLink& LeftLungVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::LeftLung), + LeftLungExtracellular, pulse::VascularLink::LeftLungVascularToTissue); + LeftLungVascularToTissue.MapPath(LeftLung1ToLeftLungT2); + + SELiquidCompartmentLink& LeftLungTissueToLymph = m_Compartments->CreateLiquidLink(LeftLungExtracellular, cLymph, pulse::LymphLink::LeftLungTissueToLymph); + LeftLungTissueToLymph.MapPath(LeftLungT1ToLymph); + } /////////// // Liver // @@ -2716,50 +2720,54 @@ namespace pulse //////////////// // Right Lung // - SEFluidCircuitNode* RightLung1 = cCardiovascular.GetNode(pulse::CardiovascularNode::RightPulmonaryCapillaries1); - SEFluidCircuitNode& RightLungT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightLungT1); - SEFluidCircuitNode& RightLungT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightLungT2); - SEFluidCircuitNode& RightLungT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightLungT3); - RightLungT1.GetPressure().Set(RightLung1->GetPressure()); - RightLungT3.GetPressure().Set(Ground->GetPressure()); - RightLungT1.GetVolumeBaseline().SetValue(RLungEWFraction * RLungTissueVolume * 1000.0, VolumeUnit::mL); - - SEFluidCircuitPath& RightLung1ToRightLungT2 = cCombinedCardiovascular.CreatePath(*RightLung1, RightLungT2, pulse::TissuePath::RightLung1ToRightLungT2); - RightLung1ToRightLungT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightLungT2ToRightLungT1 = cCombinedCardiovascular.CreatePath(RightLungT2, RightLungT1, pulse::TissuePath::RightLungT2ToRightLungT1); - RightLungT2ToRightLungT1.GetResistanceBaseline().SetValue((1 / RLungTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightLungT1ToRightLungT3 = cCombinedCardiovascular.CreatePath(RightLungT1, RightLungT3, pulse::TissuePath::RightLungT1ToRightLungT3); - RightLungT1ToRightLungT3.GetComplianceBaseline().SetValue(RightLungT1.GetVolumeBaseline(VolumeUnit::mL) / RightLungT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToRightLungT3 = cCombinedCardiovascular.CreatePath(*Ground, RightLungT3, pulse::TissuePath::GroundToRightLungT3); - GroundToRightLungT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - - SEFluidCircuitPath& RightLungT1ToLymph = cCombinedCardiovascular.CreatePath(RightLungT1, Lymph, pulse::TissuePath::RightLungT1ToLymph); - RightLungT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); - - SETissueCompartment& RightLungTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::RightLung); - SELiquidCompartment& RightLungExtracellular = RightLungTissue.GetExtracellular(); - SELiquidCompartment& RightLungIntracellular = RightLungTissue.GetIntracellular(); - RightLungTissue.GetMatrixVolume().SetValue((1 - RLungEWFraction - RLungIWFraction) * RLungTissueVolume * 1000.0, VolumeUnit::mL); - RightLungExtracellular.MapNode(RightLungT1); - RightLungExtracellular.MapNode(RightLungT2); - RightLungExtracellular.MapNode(RightLungT3); - RightLungExtracellular.GetWaterVolumeFraction().SetValue(RLungEWFraction); - RightLungIntracellular.GetVolume().SetValue(RLungIWFraction * RLungTissueVolume * 1000.0, VolumeUnit::mL); - RightLungIntracellular.GetWaterVolumeFraction().SetValue(RLungIWFraction); - RightLungTissue.GetAcidicPhospohlipidConcentration().SetValue(RLungAPL, MassPerMassUnit::mg_Per_g); - RightLungTissue.GetNeutralLipidsVolumeFraction().SetValue(RLungNLFraction); - RightLungTissue.GetNeutralPhospholipidsVolumeFraction().SetValue(RLungNPFraction); - RightLungTissue.GetTissueToPlasmaAlphaAcidGlycoproteinRatio().SetValue(RLungAAGRatio); - RightLungTissue.GetTissueToPlasmaAlbuminRatio().SetValue(RLungARatio); - RightLungTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(RLungLRatio); - RightLungTissue.GetTotalMass().SetValue(RLungTissueMass, MassUnit::kg); - - SELiquidCompartmentLink& RightLungVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::RightLung), - RightLungExtracellular, pulse::VascularLink::RightLungVascularToTissue); - RightLungVascularToTissue.MapPath(RightLung1ToRightLungT2); - - SELiquidCompartmentLink& RightLungTissueToLymph = m_Compartments->CreateLiquidLink(RightLungExtracellular, cLymph, pulse::LymphLink::RightLungTissueToLymph); - RightLungTissueToLymph.MapPath(RightLungT1ToLymph); + //jbw - Fix + if (m_Config->UseExpandedRespiratory() == eSwitch::Off) + { + SEFluidCircuitNode* RightLung1 = cCardiovascular.GetNode(pulse::CardiovascularNode::RightPulmonaryCapillaries1); + SEFluidCircuitNode& RightLungT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightLungT1); + SEFluidCircuitNode& RightLungT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightLungT2); + SEFluidCircuitNode& RightLungT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightLungT3); + RightLungT1.GetPressure().Set(RightLung1->GetPressure()); + RightLungT3.GetPressure().Set(Ground->GetPressure()); + RightLungT1.GetVolumeBaseline().SetValue(RLungEWFraction * RLungTissueVolume * 1000.0, VolumeUnit::mL); + + SEFluidCircuitPath& RightLung1ToRightLungT2 = cCombinedCardiovascular.CreatePath(*RightLung1, RightLungT2, pulse::TissuePath::RightLung1ToRightLungT2); + RightLung1ToRightLungT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); + SEFluidCircuitPath& RightLungT2ToRightLungT1 = cCombinedCardiovascular.CreatePath(RightLungT2, RightLungT1, pulse::TissuePath::RightLungT2ToRightLungT1); + RightLungT2ToRightLungT1.GetResistanceBaseline().SetValue((1 / RLungTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& RightLungT1ToRightLungT3 = cCombinedCardiovascular.CreatePath(RightLungT1, RightLungT3, pulse::TissuePath::RightLungT1ToRightLungT3); + RightLungT1ToRightLungT3.GetComplianceBaseline().SetValue(RightLungT1.GetVolumeBaseline(VolumeUnit::mL) / RightLungT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& GroundToRightLungT3 = cCombinedCardiovascular.CreatePath(*Ground, RightLungT3, pulse::TissuePath::GroundToRightLungT3); + GroundToRightLungT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); + + SEFluidCircuitPath& RightLungT1ToLymph = cCombinedCardiovascular.CreatePath(RightLungT1, Lymph, pulse::TissuePath::RightLungT1ToLymph); + RightLungT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); + + SETissueCompartment& RightLungTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::RightLung); + SELiquidCompartment& RightLungExtracellular = RightLungTissue.GetExtracellular(); + SELiquidCompartment& RightLungIntracellular = RightLungTissue.GetIntracellular(); + RightLungTissue.GetMatrixVolume().SetValue((1 - RLungEWFraction - RLungIWFraction) * RLungTissueVolume * 1000.0, VolumeUnit::mL); + RightLungExtracellular.MapNode(RightLungT1); + RightLungExtracellular.MapNode(RightLungT2); + RightLungExtracellular.MapNode(RightLungT3); + RightLungExtracellular.GetWaterVolumeFraction().SetValue(RLungEWFraction); + RightLungIntracellular.GetVolume().SetValue(RLungIWFraction * RLungTissueVolume * 1000.0, VolumeUnit::mL); + RightLungIntracellular.GetWaterVolumeFraction().SetValue(RLungIWFraction); + RightLungTissue.GetAcidicPhospohlipidConcentration().SetValue(RLungAPL, MassPerMassUnit::mg_Per_g); + RightLungTissue.GetNeutralLipidsVolumeFraction().SetValue(RLungNLFraction); + RightLungTissue.GetNeutralPhospholipidsVolumeFraction().SetValue(RLungNPFraction); + RightLungTissue.GetTissueToPlasmaAlphaAcidGlycoproteinRatio().SetValue(RLungAAGRatio); + RightLungTissue.GetTissueToPlasmaAlbuminRatio().SetValue(RLungARatio); + RightLungTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(RLungLRatio); + RightLungTissue.GetTotalMass().SetValue(RLungTissueMass, MassUnit::kg); + + SELiquidCompartmentLink& RightLungVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::RightLung), + RightLungExtracellular, pulse::VascularLink::RightLungVascularToTissue); + RightLungVascularToTissue.MapPath(RightLung1ToRightLungT2); + + SELiquidCompartmentLink& RightLungTissueToLymph = m_Compartments->CreateLiquidLink(RightLungExtracellular, cLymph, pulse::LymphLink::RightLungTissueToLymph); + RightLungTissueToLymph.MapPath(RightLungT1ToLymph); + } ////////// // Skin // diff --git a/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp b/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp index 276afbe8f..eb077b6d8 100644 --- a/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp +++ b/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp @@ -28,11 +28,2971 @@ namespace pulse { void Controller::SetupExpandedPulmonaryRespiratory() { - Fatal("Expanded respiratory circuit not yet implemented."); + Info("Setting Up Expanded Respiratory"); + double RightLungRatio = m_InitialPatient->GetRightLungRatio().GetValue(); + double LeftLungRatio = 1 - RightLungRatio; + + SEFluidCircuit& cRespiratory = m_Circuits->GetRespiratoryCircuit(); + SEFluidCircuitNode& Ambient = *m_Circuits->GetFluidNode(pulse::EnvironmentNode::Ambient); + cRespiratory.AddNode(Ambient); + + //Input parameters + const double RespiratorySystemCompliance_L_Per_cmH20 = 0.1; /// \cite Levitzky2013pulmonary + const double RespiratorySideCompliance_L_Per_cmH2O = RespiratorySystemCompliance_L_Per_cmH20 / 2.0; //compliances in parallel sum, so divide by 2 for each lung + const double LungCompliance_L_Per_cmH2O = 2.0 * RespiratorySideCompliance_L_Per_cmH2O; //compliances in series, so multiply by 2 for equal split + const double ChestWallCompliance_L_Per_cmH2O = LungCompliance_L_Per_cmH2O; // =0.1 L/cmH2O each /// \cite kacmarek2016egan p233 + const double IntrapleuralPressure_cmH2O = -5.0; /// \cite Levitzky2013pulmonary + //const double TotalAirwayResistance_cmH2O_s_Per_L = 1.5; /// \cite Levitzky2013pulmonary + + //Should add up to 100% of total airway resistance + /// \cite kacmarek2016egan + // const double TracheaResistanceFraction = 0.5; + // TracheaResistanceFraction is implied + //const double BronchiResistanceFraction = 0.3; + //const double AlveoliDuctResistanceFraction = 0.2; + + double functionalResidualCapacity_L = m_InitialPatient->GetFunctionalResidualCapacity(VolumeUnit::L); + double anatomicDeadSpaceVolume_L = 0.002 * m_InitialPatient->GetWeight(MassUnit::kg); //Should not change with diseases /// \cite Levitzky2013pulmonary + double alveolarDeadSpaceVolume_L = 0.001; //Should change with certain diseases /// \cite Levitzky2013pulmonary + double physiologicDeadSpaceVolume_L = anatomicDeadSpaceVolume_L + alveolarDeadSpaceVolume_L; + //double pleuralVolume_L = 20.0 / 1000.0; //this is a liquid volume /// \cite Levitzky2013pulmonary + double pleuralVolume_L = functionalResidualCapacity_L; //Make this a gas volume to mimic the liquid volume + double alveoliVolume_L = functionalResidualCapacity_L - physiologicDeadSpaceVolume_L; + + double openResistance_cmH2O_s_Per_L = m_Config->GetDefaultOpenFlowResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); + + SEFluidCircuitNode& RightMainBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMainBronchus); + SEFluidCircuitNode& LeftMainBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftMainBronchus); + SEFluidCircuitNode& RightIntermediateBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightIntermediateBronchus); + SEFluidCircuitNode& RightSuperiorLobarBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobarBronchus); + SEFluidCircuitNode& RightMiddleLobarBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobarBronchus); + SEFluidCircuitNode& RightInferiorLobarBronchus1 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobarBronchus1); + SEFluidCircuitNode& LeftInferiorLobarBronchus1 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobarBronchus1); + SEFluidCircuitNode& LeftSuperiorLobarBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobarBronchus); + SEFluidCircuitNode& RightInferiorLobarBronchus2 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobarBronchus2); + SEFluidCircuitNode& LeftInferiorLobarBronchus2 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobarBronchus2); + SEFluidCircuitNode& RightSuperiorApicoposteriorBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorApicoposteriorBronchus); + SEFluidCircuitNode& RightInferiorLobarBronchus3 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobarBronchus3); + SEFluidCircuitNode& LeftInferiorLobarBronchus3 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobarBronchus3); + SEFluidCircuitNode& LeftLingularBonchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftLingularBonchus); + SEFluidCircuitNode& LeftSuperiorApicoposteriorBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorApicoposteriorBronchus); + SEFluidCircuitNode& RightInferiorLobarBronchus4 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobarBronchus4); + + SEFluidCircuitNode& RightSuperiorLobeApicalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeApicalBronchiole); + SEFluidCircuitNode& RightSuperiorLobePosteriorBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobePosteriorBronchiole); + SEFluidCircuitNode& RightSuperiorLobeAnteriorBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeAnteriorBronchiole); + SEFluidCircuitNode& RightMiddleLobeLateralBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeLateralBronchiole); + SEFluidCircuitNode& RightMiddleLobeMedialBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeMedialBronchiole); + SEFluidCircuitNode& RightInferiorLobeSuperiorBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeSuperiorBronchiole); + SEFluidCircuitNode& RightInferiorLobeMedialBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeMedialBasalBronchiole); + SEFluidCircuitNode& RightInferiorLobeAnteriorBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeAnteriorBasalBronchiole); + SEFluidCircuitNode& RightInferiorLobeLateralBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeLateralBasalBronchiole); + SEFluidCircuitNode& RightInferiorLobePosteriorBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobePosteriorBasalBronchiole); + SEFluidCircuitNode& LeftInferiorLobePosteriorBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobePosteriorBasalBronchiole); + SEFluidCircuitNode& LeftInferiorLobeLateralBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeLateralBasalBronchiole); + SEFluidCircuitNode& LeftInferiorLobeAnteromedialBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeAnteromedialBasalBronchiole); + SEFluidCircuitNode& LeftInferiorLobeSuperiorBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeSuperiorBronchiole); + SEFluidCircuitNode& LeftSuperiorLobeInferiorLingulaBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeInferiorLingulaBronchiole); + SEFluidCircuitNode& LeftSuperiorLobeSuperiorLingulaBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeSuperiorLingulaBronchiole); + SEFluidCircuitNode& LeftSuperiorLobeAnteriorBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeAnteriorBronchiole); + SEFluidCircuitNode& LeftSuperiorLobeApicoposteriorBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeApicoposteriorBronchiole); + + SEFluidCircuitNode& RightSuperiorLobeApicalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeApicalAlveolarDeadSpace); + SEFluidCircuitNode& RightSuperiorLobePosteriorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobePosteriorAlveolarDeadSpace); + SEFluidCircuitNode& RightSuperiorLobeAnteriorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeAnteriorAlveolarDeadSpace); + SEFluidCircuitNode& RightMiddleLobeLateralAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeLateralAlveolarDeadSpace); + SEFluidCircuitNode& RightMiddleLobeMedialAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeMedialAlveolarDeadSpace); + SEFluidCircuitNode& RightInferiorLobeSuperiorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeSuperiorAlveolarDeadSpace); + SEFluidCircuitNode& RightInferiorLobeMedialBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeMedialBasalAlveolarDeadSpace); + SEFluidCircuitNode& RightInferiorLobeAnteriorBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeAnteriorBasalAlveolarDeadSpace); + SEFluidCircuitNode& RightInferiorLobeLateralBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeLateralBasalAlveolarDeadSpace); + SEFluidCircuitNode& RightInferiorLobePosteriorBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobePosteriorBasalAlveolarDeadSpace); + SEFluidCircuitNode& LeftInferiorLobePosteriorBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobePosteriorBasalAlveolarDeadSpace); + SEFluidCircuitNode& LeftInferiorLobeLateralBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeLateralBasalAlveolarDeadSpace); + SEFluidCircuitNode& LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + SEFluidCircuitNode& LeftInferiorLobeSuperiorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeSuperiorAlveolarDeadSpace); + SEFluidCircuitNode& LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + SEFluidCircuitNode& LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + SEFluidCircuitNode& LeftSuperiorLobeAnteriorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeAnteriorAlveolarDeadSpace); + SEFluidCircuitNode& LeftSuperiorLobeApicoposteriorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + SEFluidCircuitNode& RightSuperiorLobeApicalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeApicalAlveoli); + SEFluidCircuitNode& RightSuperiorLobePosteriorAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobePosteriorAlveoli); + SEFluidCircuitNode& RightSuperiorLobeAnteriorAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeAnteriorAlveoli); + SEFluidCircuitNode& RightMiddleLobeLateralAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeLateralAlveoli); + SEFluidCircuitNode& RightMiddleLobeMedialAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeMedialAlveoli); + SEFluidCircuitNode& RightInferiorLobeSuperiorAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeSuperiorAlveoli); + SEFluidCircuitNode& RightInferiorLobeMedialBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeMedialBasalAlveoli); + SEFluidCircuitNode& RightInferiorLobeAnteriorBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeAnteriorBasalAlveoli); + SEFluidCircuitNode& RightInferiorLobeLateralBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeLateralBasalAlveoli); + SEFluidCircuitNode& RightInferiorLobePosteriorBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobePosteriorBasalAlveoli); + SEFluidCircuitNode& LeftInferiorLobePosteriorBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobePosteriorBasalAlveoli); + SEFluidCircuitNode& LeftInferiorLobeLateralBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeLateralBasalAlveoli); + SEFluidCircuitNode& LeftInferiorLobeAnteromedialBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveoli); + SEFluidCircuitNode& LeftInferiorLobeSuperiorAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeSuperiorAlveoli); + SEFluidCircuitNode& LeftSuperiorLobeInferiorLingulaAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveoli); + SEFluidCircuitNode& LeftSuperiorLobeSuperiorLingulaAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveoli); + SEFluidCircuitNode& LeftSuperiorLobeAnteriorAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeAnteriorAlveoli); + SEFluidCircuitNode& LeftSuperiorLobeApicoposteriorAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveoli); + + RightMainBronchus.GetPressure().Set(Ambient.GetNextPressure()); + LeftMainBronchus.GetPressure().Set(Ambient.GetNextPressure()); + RightIntermediateBronchus.GetPressure().Set(Ambient.GetNextPressure()); + RightSuperiorLobarBronchus.GetPressure().Set(Ambient.GetNextPressure()); + RightMiddleLobarBronchus.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobarBronchus1.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobarBronchus1.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobarBronchus.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobarBronchus2.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobarBronchus2.GetPressure().Set(Ambient.GetNextPressure()); + RightSuperiorApicoposteriorBronchus.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobarBronchus3.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobarBronchus3.GetPressure().Set(Ambient.GetNextPressure()); + LeftLingularBonchus.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorApicoposteriorBronchus.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobarBronchus4.GetPressure().Set(Ambient.GetNextPressure()); + + RightSuperiorLobeApicalBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + RightSuperiorLobePosteriorBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + RightSuperiorLobeAnteriorBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + RightMiddleLobeLateralBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + RightMiddleLobeMedialBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobeSuperiorBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobeMedialBasalBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobeAnteriorBasalBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobeLateralBasalBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobePosteriorBasalBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobePosteriorBasalBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobeLateralBasalBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobeAnteromedialBasalBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobeSuperiorBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobeInferiorLingulaBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobeSuperiorLingulaBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobeAnteriorBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobeApicoposteriorBronchiole.GetPressure().Set(Ambient.GetNextPressure()); + + RightSuperiorLobeApicalAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + RightSuperiorLobePosteriorAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + RightSuperiorLobeAnteriorAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + RightMiddleLobeLateralAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + RightMiddleLobeMedialAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobeSuperiorAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobeMedialBasalAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobeAnteriorBasalAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobeLateralBasalAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobePosteriorBasalAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobePosteriorBasalAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobeLateralBasalAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobeSuperiorAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobeAnteriorAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobeApicoposteriorAlveolarDeadSpace.GetPressure().Set(Ambient.GetNextPressure()); + + RightSuperiorLobeApicalAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + RightSuperiorLobePosteriorAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + RightSuperiorLobeAnteriorAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + RightMiddleLobeLateralAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + RightMiddleLobeMedialAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobeSuperiorAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobeMedialBasalAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobeAnteriorBasalAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobeLateralBasalAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + RightInferiorLobePosteriorBasalAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobePosteriorBasalAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobeLateralBasalAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobeAnteromedialBasalAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + LeftInferiorLobeSuperiorAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobeInferiorLingulaAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobeSuperiorLingulaAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobeAnteriorAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + LeftSuperiorLobeApicoposteriorAlveoli.GetPressure().Set(Ambient.GetNextPressure()); + + double TracheaVolume_Percent = 13.40; + double RightMainBronchusVolume_Percent = 1.42; + double LeftMainBronchusVolume_Percent = 3.77; + double RightIntermediateBronchusVolume_Percent = 1.08; + double RightSuperiorLobarBronchusVolume_Percent = 0.44; + double RightMiddleLobarBronchusVolume_Percent = 0.30; + double RightInferiorLobarBronchus1Volume_Percent = 0.17; + double LeftInferiorLobarBronchus1Volume_Percent = 0.37; + double LeftSuperiorLobarBronchusVolume_Percent = 0.47; + double RightInferiorLobarBronchus2Volume_Percent = 0.16; + double LeftInferiorLobarBronchus2Volume_Percent = 0.40; + double RightSuperiorApicoposteriorBronchusVolume_Percent = 0.24; + double RightInferiorLobarBronchus3Volume_Percent = 0.30; + double LeftInferiorLobarBronchus3Volume_Percent = 0.12; + double LeftLingularBonchusVolume_Percent = 0.17; + double LeftSuperiorApicoposteriorBronchusVolume_Percent = 0.39; + double RightInferiorLobarBronchus4Volume_Percent = 0.19; + + double RightSuperiorLobeApicalBronchioleVolume_Percent = 7.10; + double RightSuperiorLobePosteriorBronchioleVolume_Percent = 2.67; + double RightSuperiorLobeAnteriorBronchioleVolume_Percent = 5.73; + double RightMiddleLobeLateralBronchioleVolume_Percent = 2.22; + double RightMiddleLobeMedialBronchioleVolume_Percent = 4.81; + double RightInferiorLobeSuperiorBronchioleVolume_Percent = 4.74; + double RightInferiorLobeMedialBasalBronchioleVolume_Percent = 1.30; + double RightInferiorLobeAnteriorBasalBronchioleVolume_Percent = 4.20; + double RightInferiorLobeLateralBasalBronchioleVolume_Percent = 3.67; + double RightInferiorLobePosteriorBasalBronchioleVolume_Percent = 5.27; + double LeftInferiorLobePosteriorBasalBronchioleVolume_Percent = 4.28; + double LeftInferiorLobeLateralBasalBronchioleVolume_Percent = 4.89; + double LeftInferiorLobeAnteromedialBasalBronchioleVolume_Percent = 3.21; + double LeftInferiorLobeSuperiorBronchioleVolume_Percent = 3.90; + double LeftSuperiorLobeInferiorLingulaBronchioleVolume_Percent = 3.67; + double LeftSuperiorLobeSuperiorLingulaBronchioleVolume_Percent = 3.06; + double LeftSuperiorLobeAnteriorBronchioleVolume_Percent = 5.73; + double LeftSuperiorLobeApicoposteriorBronchioleVolume_Percent = 6.19; + + double RightSuperiorLobeApicalAlveoliVolume_Percent = 9.3; + double RightSuperiorLobePosteriorAlveoliVolume_Percent = 3.5; + double RightSuperiorLobeAnteriorAlveoliVolume_Percent = 7.5; + double RightMiddleLobeLateralAlveoliVolume_Percent = 2.9; + double RightMiddleLobeMedialAlveoliVolume_Percent = 6.3; + double RightInferiorLobeSuperiorAlveoliVolume_Percent = 6.2; + double RightInferiorLobeMedialBasalAlveoliVolume_Percent = 1.7; + double RightInferiorLobeAnteriorBasalAlveoliVolume_Percent = 5.5; + double RightInferiorLobeLateralBasalAlveoliVolume_Percent = 4.8; + double RightInferiorLobePosteriorBasalAlveoliVolume_Percent = 6.9; + double LeftInferiorLobePosteriorBasalAlveoliVolume_Percent = 5.6; + double LeftInferiorLobeLateralBasalAlveoliVolume_Percent = 6.4; + double LeftInferiorLobeAnteromedialBasalAlveoliVolume_Percent = 4.2; + double LeftInferiorLobeSuperiorAlveoliVolume_Percent = 5.1; + double LeftSuperiorLobeInferiorLingulaAlveoliVolume_Percent = 4.8; + double LeftSuperiorLobeSuperiorLingulaAlveoliVolume_Percent = 4.0; + double LeftSuperiorLobeAnteriorAlveoliVolume_Percent = 7.5; + double LeftSuperiorLobeApicoposteriorAlveoliVolume_Percent = 8.1; + + double remainingVolume_Percent = 100.0 - TracheaVolume_Percent; + RightMainBronchus.GetVolumeBaseline().SetValue(RightMainBronchusVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftMainBronchus.GetVolumeBaseline().SetValue(LeftMainBronchusVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightIntermediateBronchus.GetVolumeBaseline().SetValue(RightIntermediateBronchusVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightSuperiorLobarBronchus.GetVolumeBaseline().SetValue(RightSuperiorLobarBronchusVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightMiddleLobarBronchus.GetVolumeBaseline().SetValue(RightMiddleLobarBronchusVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightInferiorLobarBronchus1.GetVolumeBaseline().SetValue(RightInferiorLobarBronchus1Volume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftInferiorLobarBronchus1.GetVolumeBaseline().SetValue(LeftInferiorLobarBronchus1Volume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftSuperiorLobarBronchus.GetVolumeBaseline().SetValue(LeftSuperiorLobarBronchusVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightInferiorLobarBronchus2.GetVolumeBaseline().SetValue(RightInferiorLobarBronchus2Volume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftInferiorLobarBronchus2.GetVolumeBaseline().SetValue(LeftInferiorLobarBronchus2Volume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightSuperiorApicoposteriorBronchus.GetVolumeBaseline().SetValue(RightSuperiorApicoposteriorBronchusVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightInferiorLobarBronchus3.GetVolumeBaseline().SetValue(RightInferiorLobarBronchus3Volume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftInferiorLobarBronchus3.GetVolumeBaseline().SetValue(LeftInferiorLobarBronchus3Volume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftLingularBonchus.GetVolumeBaseline().SetValue(LeftLingularBonchusVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftSuperiorApicoposteriorBronchus.GetVolumeBaseline().SetValue(LeftSuperiorApicoposteriorBronchusVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightInferiorLobarBronchus4.GetVolumeBaseline().SetValue(RightInferiorLobarBronchus4Volume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + + RightSuperiorLobeApicalBronchiole.GetVolumeBaseline().SetValue(RightSuperiorLobeApicalBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightSuperiorLobePosteriorBronchiole.GetVolumeBaseline().SetValue(RightSuperiorLobePosteriorBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightSuperiorLobeAnteriorBronchiole.GetVolumeBaseline().SetValue(RightSuperiorLobeAnteriorBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightMiddleLobeLateralBronchiole.GetVolumeBaseline().SetValue(RightMiddleLobeLateralBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightMiddleLobeMedialBronchiole.GetVolumeBaseline().SetValue(RightMiddleLobeMedialBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightInferiorLobeSuperiorBronchiole.GetVolumeBaseline().SetValue(RightInferiorLobeSuperiorBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightInferiorLobeMedialBasalBronchiole.GetVolumeBaseline().SetValue(RightInferiorLobeMedialBasalBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightInferiorLobeAnteriorBasalBronchiole.GetVolumeBaseline().SetValue(RightInferiorLobeAnteriorBasalBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightInferiorLobeLateralBasalBronchiole.GetVolumeBaseline().SetValue(RightInferiorLobeLateralBasalBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + RightInferiorLobePosteriorBasalBronchiole.GetVolumeBaseline().SetValue(RightInferiorLobePosteriorBasalBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftInferiorLobePosteriorBasalBronchiole.GetVolumeBaseline().SetValue(LeftInferiorLobePosteriorBasalBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftInferiorLobeLateralBasalBronchiole.GetVolumeBaseline().SetValue(LeftInferiorLobeLateralBasalBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftInferiorLobeAnteromedialBasalBronchiole.GetVolumeBaseline().SetValue(LeftInferiorLobeAnteromedialBasalBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftInferiorLobeSuperiorBronchiole.GetVolumeBaseline().SetValue(LeftInferiorLobeSuperiorBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftSuperiorLobeInferiorLingulaBronchiole.GetVolumeBaseline().SetValue(LeftSuperiorLobeInferiorLingulaBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftSuperiorLobeSuperiorLingulaBronchiole.GetVolumeBaseline().SetValue(LeftSuperiorLobeSuperiorLingulaBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftSuperiorLobeAnteriorBronchiole.GetVolumeBaseline().SetValue(LeftSuperiorLobeAnteriorBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + LeftSuperiorLobeApicoposteriorBronchiole.GetVolumeBaseline().SetValue(LeftSuperiorLobeApicoposteriorBronchioleVolume_Percent / remainingVolume_Percent * anatomicDeadSpaceVolume_L, VolumeUnit::L); + + RightSuperiorLobeApicalAlveoli.GetVolumeBaseline().SetValue(RightSuperiorLobeApicalAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + RightSuperiorLobePosteriorAlveoli.GetVolumeBaseline().SetValue(RightSuperiorLobePosteriorAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + RightSuperiorLobeAnteriorAlveoli.GetVolumeBaseline().SetValue(RightSuperiorLobeAnteriorAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + RightMiddleLobeLateralAlveoli.GetVolumeBaseline().SetValue(RightMiddleLobeLateralAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + RightMiddleLobeMedialAlveoli.GetVolumeBaseline().SetValue(RightMiddleLobeMedialAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + RightInferiorLobeSuperiorAlveoli.GetVolumeBaseline().SetValue(RightInferiorLobeSuperiorAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + RightInferiorLobeMedialBasalAlveoli.GetVolumeBaseline().SetValue(RightInferiorLobeMedialBasalAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + RightInferiorLobeAnteriorBasalAlveoli.GetVolumeBaseline().SetValue(RightInferiorLobeAnteriorBasalAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + RightInferiorLobeLateralBasalAlveoli.GetVolumeBaseline().SetValue(RightInferiorLobeLateralBasalAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + RightInferiorLobePosteriorBasalAlveoli.GetVolumeBaseline().SetValue(RightInferiorLobePosteriorBasalAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + LeftInferiorLobePosteriorBasalAlveoli.GetVolumeBaseline().SetValue(LeftInferiorLobePosteriorBasalAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + LeftInferiorLobeLateralBasalAlveoli.GetVolumeBaseline().SetValue(LeftInferiorLobeLateralBasalAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + LeftInferiorLobeAnteromedialBasalAlveoli.GetVolumeBaseline().SetValue(LeftInferiorLobeAnteromedialBasalAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + LeftInferiorLobeSuperiorAlveoli.GetVolumeBaseline().SetValue(LeftInferiorLobeSuperiorAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + LeftSuperiorLobeInferiorLingulaAlveoli.GetVolumeBaseline().SetValue(LeftSuperiorLobeInferiorLingulaAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + LeftSuperiorLobeSuperiorLingulaAlveoli.GetVolumeBaseline().SetValue(LeftSuperiorLobeSuperiorLingulaAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + LeftSuperiorLobeAnteriorAlveoli.GetVolumeBaseline().SetValue(LeftSuperiorLobeAnteriorAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + LeftSuperiorLobeApicoposteriorAlveoli.GetVolumeBaseline().SetValue(LeftSuperiorLobeApicoposteriorAlveoliVolume_Percent / 100.0 * alveoliVolume_L, VolumeUnit::L); + + RightSuperiorLobeApicalAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + RightSuperiorLobePosteriorAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + RightSuperiorLobeAnteriorAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + RightMiddleLobeLateralAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + RightMiddleLobeMedialAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + RightInferiorLobeSuperiorAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + RightInferiorLobeMedialBasalAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + RightInferiorLobeAnteriorBasalAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + RightInferiorLobeLateralBasalAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + RightInferiorLobePosteriorBasalAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + LeftInferiorLobePosteriorBasalAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + LeftInferiorLobeLateralBasalAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + LeftInferiorLobeSuperiorAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + LeftSuperiorLobeAnteriorAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + LeftSuperiorLobeApicoposteriorAlveolarDeadSpace.GetVolumeBaseline().SetValue(alveolarDeadSpaceVolume_L / 18.0, VolumeUnit::L); + + // Airway + SEFluidCircuitNode& Airway = cRespiratory.CreateNode(pulse::RespiratoryNode::Airway); + Airway.GetPressure().Set(Ambient.GetNextPressure()); + Airway.GetVolumeBaseline().SetValue(0.0206, VolumeUnit::L); + // Pharynx + SEFluidCircuitNode& Pharynx = cRespiratory.CreateNode(pulse::RespiratoryNode::Pharynx); + Pharynx.GetPressure().Set(Ambient.GetNextPressure()); + Pharynx.GetVolumeBaseline().SetValue(0.001, VolumeUnit::L); + // Carina + SEFluidCircuitNode& Carina = cRespiratory.CreateNode(pulse::RespiratoryNode::Carina); + Carina.GetPressure().Set(Ambient.GetNextPressure()); + Carina.GetVolumeBaseline().SetValue(TracheaVolume_Percent / 100.0 * anatomicDeadSpaceVolume_L, VolumeUnit::L); //Trachea Volume + + // Right Pleural Connection - no volume, so it doesn't get modified by compliances + SEFluidCircuitNode& RightPleuralConnection = cRespiratory.CreateNode(pulse::RespiratoryNode::RightPleuralConnection); + RightPleuralConnection.GetPressure().SetValue(Ambient.GetNextPressure(PressureUnit::cmH2O) + IntrapleuralPressure_cmH2O, PressureUnit::cmH2O); + // Left Pleural Connection - no volume, so it doesn't get modified by compliances + SEFluidCircuitNode& LeftPleuralConnection = cRespiratory.CreateNode(pulse::RespiratoryNode::LeftPleuralConnection); + LeftPleuralConnection.GetPressure().SetValue(Ambient.GetNextPressure(PressureUnit::cmH2O) + IntrapleuralPressure_cmH2O, PressureUnit::cmH2O); + // Right Pleural + SEFluidCircuitNode& RightPleural = cRespiratory.CreateNode(pulse::RespiratoryNode::RightPleural); + RightPleural.GetPressure().SetValue(Ambient.GetNextPressure(PressureUnit::cmH2O) + IntrapleuralPressure_cmH2O, PressureUnit::cmH2O); + RightPleural.GetVolumeBaseline().SetValue(RightLungRatio * pleuralVolume_L, VolumeUnit::L); + // Left Pleural + SEFluidCircuitNode& LeftPleural = cRespiratory.CreateNode(pulse::RespiratoryNode::LeftPleural); + LeftPleural.GetPressure().SetValue(Ambient.GetNextPressure(PressureUnit::cmH2O) + IntrapleuralPressure_cmH2O, PressureUnit::cmH2O); + LeftPleural.GetVolumeBaseline().SetValue(LeftLungRatio * pleuralVolume_L, VolumeUnit::L); + // Respiratory Muscle - corresponds to a node representing the inspiratory muscles, particularly diaphragm + SEFluidCircuitNode& RespiratoryMuscle = cRespiratory.CreateNode(pulse::RespiratoryNode::RespiratoryMuscle); + RespiratoryMuscle.GetPressure().Set(Ambient.GetNextPressure()); + // Stomach + SEFluidCircuitNode& Stomach = cRespiratory.CreateNode(pulse::RespiratoryNode::Stomach); + Stomach.GetPressure().Set(Ambient.GetNextPressure()); + Stomach.GetVolumeBaseline().SetValue(0.1, VolumeUnit::L); + + //------------------------------------------------------------------------------------------------------------------------------------- + // Environment to Airway connections, the path has no element. + double TracheaResistance_cmH2O_s_Per_L = 0.8;// Tuned from 1.125; + SEFluidCircuitPath& EnvironmentToAirway = cRespiratory.CreatePath(Ambient, Airway, pulse::RespiratoryPath::EnvironmentToAirway); + SEFluidCircuitPath& AirwayToPharynx = cRespiratory.CreatePath(Airway, Pharynx, pulse::RespiratoryPath::AirwayToPharynx); + SEFluidCircuitPath& PharynxToCarina = cRespiratory.CreatePath(Pharynx, Carina, pulse::RespiratoryPath::PharynxToCarina); + PharynxToCarina.GetResistanceBaseline().SetValue(TracheaResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + + SEFluidCircuitPath& CarinaToRightMainBronchus = cRespiratory.CreatePath(Carina, RightMainBronchus, pulse::ExpandedRespiratoryPath::CarinaToRightMainBronchus); + SEFluidCircuitPath& RightMainBronchusToRightIntermediateBronchus = cRespiratory.CreatePath(RightMainBronchus, RightIntermediateBronchus, pulse::ExpandedRespiratoryPath::RightMainBronchusToRightIntermediateBronchus); + SEFluidCircuitPath& RightMainBronchusToRightSuperiorLobarBronchus = cRespiratory.CreatePath(RightMainBronchus, RightSuperiorLobarBronchus, pulse::ExpandedRespiratoryPath::RightMainBronchusToRightSuperiorLobarBronchus); + SEFluidCircuitPath& RightIntermediateBronchusToRightMiddleLobarBronchus = cRespiratory.CreatePath(RightIntermediateBronchus, RightMiddleLobarBronchus, pulse::ExpandedRespiratoryPath::RightIntermediateBronchusToRightMiddleLobarBronchus); + SEFluidCircuitPath& RightIntermediateBronchusToRightInferiorLobarBronchus1 = cRespiratory.CreatePath(RightIntermediateBronchus, RightInferiorLobarBronchus1, pulse::ExpandedRespiratoryPath::RightIntermediateBronchusToRightInferiorLobarBronchus1); + SEFluidCircuitPath& RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2 = cRespiratory.CreatePath(RightInferiorLobarBronchus1, RightInferiorLobarBronchus2, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2); + SEFluidCircuitPath& RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus = cRespiratory.CreatePath(RightSuperiorLobarBronchus, RightSuperiorApicoposteriorBronchus, pulse::ExpandedRespiratoryPath::RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus); + SEFluidCircuitPath& RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3 = cRespiratory.CreatePath(RightInferiorLobarBronchus2, RightInferiorLobarBronchus3, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3); + SEFluidCircuitPath& RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4 = cRespiratory.CreatePath(RightInferiorLobarBronchus2, RightInferiorLobarBronchus4, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4); + + SEFluidCircuitPath& CarinaToLeftMainBronchus = cRespiratory.CreatePath(Carina, LeftMainBronchus, pulse::ExpandedRespiratoryPath::CarinaToLeftMainBronchus); + SEFluidCircuitPath& LeftMainBronchusToLeftInferiorLobarBronchus1 = cRespiratory.CreatePath(LeftMainBronchus, LeftInferiorLobarBronchus1, pulse::ExpandedRespiratoryPath::LeftMainBronchusToLeftInferiorLobarBronchus1); + SEFluidCircuitPath& LeftMainBronchusToLeftSuperiorLobarBronchus = cRespiratory.CreatePath(LeftMainBronchus, LeftSuperiorLobarBronchus, pulse::ExpandedRespiratoryPath::LeftMainBronchusToLeftSuperiorLobarBronchus); + SEFluidCircuitPath& LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2 = cRespiratory.CreatePath(LeftInferiorLobarBronchus1, LeftInferiorLobarBronchus2, pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2); + SEFluidCircuitPath& LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3 = cRespiratory.CreatePath(LeftInferiorLobarBronchus2, LeftInferiorLobarBronchus3, pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3); + SEFluidCircuitPath& LeftSuperiorLobarBronchusToLeftLingularBonchus = cRespiratory.CreatePath(LeftSuperiorLobarBronchus, LeftLingularBonchus, pulse::ExpandedRespiratoryPath::LeftSuperiorLobarBronchusToLeftLingularBonchus); + SEFluidCircuitPath& LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus = cRespiratory.CreatePath(LeftSuperiorLobarBronchus, LeftSuperiorApicoposteriorBronchus, pulse::ExpandedRespiratoryPath::LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus); + + SEFluidCircuitPath& RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole = cRespiratory.CreatePath(RightSuperiorApicoposteriorBronchus, RightSuperiorLobeApicalBronchiole, pulse::ExpandedRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole); + SEFluidCircuitPath& RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole = cRespiratory.CreatePath(RightSuperiorApicoposteriorBronchus, RightSuperiorLobePosteriorBronchiole, pulse::ExpandedRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole); + SEFluidCircuitPath& RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole = cRespiratory.CreatePath(RightSuperiorLobarBronchus, RightSuperiorLobeAnteriorBronchiole, pulse::ExpandedRespiratoryPath::RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole); + SEFluidCircuitPath& RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole = cRespiratory.CreatePath(RightMiddleLobarBronchus, RightMiddleLobeLateralBronchiole, pulse::ExpandedRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole); + SEFluidCircuitPath& RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole = cRespiratory.CreatePath(RightMiddleLobarBronchus, RightMiddleLobeMedialBronchiole, pulse::ExpandedRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole); + SEFluidCircuitPath& RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus1, RightInferiorLobeSuperiorBronchiole, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole); + SEFluidCircuitPath& RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus2, RightInferiorLobeMedialBasalBronchiole, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole); + SEFluidCircuitPath& RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus3, RightInferiorLobeAnteriorBasalBronchiole, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole); + SEFluidCircuitPath& RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus4, RightInferiorLobeLateralBasalBronchiole, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole); + SEFluidCircuitPath& RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus4, RightInferiorLobePosteriorBasalBronchiole, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole); + + SEFluidCircuitPath& LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole = cRespiratory.CreatePath(LeftInferiorLobarBronchus3, LeftInferiorLobeLateralBasalBronchiole, pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole); + SEFluidCircuitPath& LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole = cRespiratory.CreatePath(LeftInferiorLobarBronchus3, LeftInferiorLobePosteriorBasalBronchiole, pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole); + SEFluidCircuitPath& LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole = cRespiratory.CreatePath(LeftInferiorLobarBronchus2, LeftInferiorLobeAnteromedialBasalBronchiole, pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole); + SEFluidCircuitPath& LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole = cRespiratory.CreatePath(LeftInferiorLobarBronchus1, LeftInferiorLobeSuperiorBronchiole, pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole); + SEFluidCircuitPath& LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole = cRespiratory.CreatePath(LeftLingularBonchus, LeftSuperiorLobeInferiorLingulaBronchiole, pulse::ExpandedRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole); + SEFluidCircuitPath& LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole = cRespiratory.CreatePath(LeftLingularBonchus, LeftSuperiorLobeSuperiorLingulaBronchiole, pulse::ExpandedRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole); + SEFluidCircuitPath& LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole = cRespiratory.CreatePath(LeftSuperiorApicoposteriorBronchus, LeftSuperiorLobeAnteriorBronchiole, pulse::ExpandedRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole); + SEFluidCircuitPath& LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole = cRespiratory.CreatePath(LeftSuperiorApicoposteriorBronchus, LeftSuperiorLobeApicoposteriorBronchiole, pulse::ExpandedRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole); + + SEFluidCircuitPath& RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace = cRespiratory.CreatePath(RightSuperiorLobeApicalBronchiole, RightSuperiorLobeApicalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace); + SEFluidCircuitPath& RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace = cRespiratory.CreatePath(RightSuperiorLobePosteriorBronchiole, RightSuperiorLobePosteriorAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace); + SEFluidCircuitPath& RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace = cRespiratory.CreatePath(RightSuperiorLobeAnteriorBronchiole, RightSuperiorLobeAnteriorAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace); + SEFluidCircuitPath& RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace = cRespiratory.CreatePath(RightMiddleLobeLateralBronchiole, RightMiddleLobeLateralAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace); + SEFluidCircuitPath& RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace = cRespiratory.CreatePath(RightMiddleLobeMedialBronchiole, RightMiddleLobeMedialAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace); + SEFluidCircuitPath& RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobeSuperiorBronchiole, RightInferiorLobeSuperiorAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace); + SEFluidCircuitPath& RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobeMedialBasalBronchiole, RightInferiorLobeMedialBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace); + SEFluidCircuitPath& RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobeAnteriorBasalBronchiole, RightInferiorLobeAnteriorBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace); + SEFluidCircuitPath& RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobeLateralBasalBronchiole, RightInferiorLobeLateralBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace); + SEFluidCircuitPath& RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobePosteriorBasalBronchiole, RightInferiorLobePosteriorBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace); + + SEFluidCircuitPath& LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace = cRespiratory.CreatePath(LeftInferiorLobePosteriorBasalBronchiole, LeftInferiorLobePosteriorBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace); + SEFluidCircuitPath& LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace = cRespiratory.CreatePath(LeftInferiorLobeLateralBasalBronchiole, LeftInferiorLobeLateralBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace); + SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace = cRespiratory.CreatePath(LeftInferiorLobeAnteromedialBasalBronchiole, LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + SEFluidCircuitPath& LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace = cRespiratory.CreatePath(LeftInferiorLobeSuperiorBronchiole, LeftInferiorLobeSuperiorAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace); + SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace = cRespiratory.CreatePath(LeftSuperiorLobeInferiorLingulaBronchiole, LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace = cRespiratory.CreatePath(LeftSuperiorLobeSuperiorLingulaBronchiole, LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + SEFluidCircuitPath& LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace = cRespiratory.CreatePath(LeftSuperiorLobeAnteriorBronchiole, LeftSuperiorLobeAnteriorAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace); + SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace = cRespiratory.CreatePath(LeftSuperiorLobeApicoposteriorBronchiole, LeftSuperiorLobeApicoposteriorAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + SEFluidCircuitPath& RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli = cRespiratory.CreatePath(RightSuperiorLobeApicalAlveolarDeadSpace, RightSuperiorLobeApicalAlveoli, pulse::ExpandedRespiratoryPath::RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli); + SEFluidCircuitPath& RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli = cRespiratory.CreatePath(RightSuperiorLobePosteriorAlveolarDeadSpace, RightSuperiorLobePosteriorAlveoli, pulse::ExpandedRespiratoryPath::RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli); + SEFluidCircuitPath& RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli = cRespiratory.CreatePath(RightSuperiorLobeAnteriorAlveolarDeadSpace, RightSuperiorLobeAnteriorAlveoli, pulse::ExpandedRespiratoryPath::RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli); + SEFluidCircuitPath& RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli = cRespiratory.CreatePath(RightMiddleLobeLateralAlveolarDeadSpace, RightMiddleLobeLateralAlveoli, pulse::ExpandedRespiratoryPath::RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli); + SEFluidCircuitPath& RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli = cRespiratory.CreatePath(RightMiddleLobeMedialAlveolarDeadSpace, RightMiddleLobeMedialAlveoli, pulse::ExpandedRespiratoryPath::RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli); + SEFluidCircuitPath& RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli = cRespiratory.CreatePath(RightInferiorLobeSuperiorAlveolarDeadSpace, RightInferiorLobeSuperiorAlveoli, pulse::ExpandedRespiratoryPath::RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli); + SEFluidCircuitPath& RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli = cRespiratory.CreatePath(RightInferiorLobeMedialBasalAlveolarDeadSpace, RightInferiorLobeMedialBasalAlveoli, pulse::ExpandedRespiratoryPath::RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli); + SEFluidCircuitPath& RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli = cRespiratory.CreatePath(RightInferiorLobeAnteriorBasalAlveolarDeadSpace, RightInferiorLobeAnteriorBasalAlveoli, pulse::ExpandedRespiratoryPath::RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli); + SEFluidCircuitPath& RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli = cRespiratory.CreatePath(RightInferiorLobeLateralBasalAlveolarDeadSpace, RightInferiorLobeLateralBasalAlveoli, pulse::ExpandedRespiratoryPath::RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli); + SEFluidCircuitPath& RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli = cRespiratory.CreatePath(RightInferiorLobePosteriorBasalAlveolarDeadSpace, RightInferiorLobePosteriorBasalAlveoli, pulse::ExpandedRespiratoryPath::RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli); + + SEFluidCircuitPath& LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli = cRespiratory.CreatePath(LeftInferiorLobePosteriorBasalAlveolarDeadSpace, LeftInferiorLobePosteriorBasalAlveoli, pulse::ExpandedRespiratoryPath::LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli); + SEFluidCircuitPath& LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli = cRespiratory.CreatePath(LeftInferiorLobeLateralBasalAlveolarDeadSpace, LeftInferiorLobeLateralBasalAlveoli, pulse::ExpandedRespiratoryPath::LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli); + SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli = cRespiratory.CreatePath(LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace, LeftInferiorLobeAnteromedialBasalAlveoli, pulse::ExpandedRespiratoryPath::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli); + SEFluidCircuitPath& LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli = cRespiratory.CreatePath(LeftInferiorLobeSuperiorAlveolarDeadSpace, LeftInferiorLobeSuperiorAlveoli, pulse::ExpandedRespiratoryPath::LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli); + SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli = cRespiratory.CreatePath(LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace, LeftSuperiorLobeInferiorLingulaAlveoli, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli); + SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli = cRespiratory.CreatePath(LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace, LeftSuperiorLobeSuperiorLingulaAlveoli, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli); + SEFluidCircuitPath& LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli = cRespiratory.CreatePath(LeftSuperiorLobeAnteriorAlveolarDeadSpace, LeftSuperiorLobeAnteriorAlveoli, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli); + SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli = cRespiratory.CreatePath(LeftSuperiorLobeApicoposteriorAlveolarDeadSpace, LeftSuperiorLobeApicoposteriorAlveoli, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli); + + SEFluidCircuitPath& RightSuperiorLobeApicalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightSuperiorLobeApicalAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightSuperiorLobeApicalAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightSuperiorLobePosteriorAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightSuperiorLobePosteriorAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightSuperiorLobePosteriorAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightSuperiorLobeAnteriorAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightMiddleLobeLateralAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightMiddleLobeLateralAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightMiddleLobeLateralAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightMiddleLobeMedialAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightMiddleLobeMedialAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightMiddleLobeMedialAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightInferiorLobeSuperiorAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobeSuperiorAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightInferiorLobeSuperiorAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobeMedialBasalAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobeAnteriorBasalAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobeLateralBasalAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobePosteriorBasalAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection); + + SEFluidCircuitPath& LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftInferiorLobePosteriorBasalAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftInferiorLobeLateralBasalAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftInferiorLobeAnteromedialBasalAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftInferiorLobeSuperiorAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeInferiorLingulaAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeSuperiorLingulaAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeAnteriorAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeApicoposteriorAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection); + + double CarinaToRightMainBronchusResistance_cmH2O_s_Per_L = 1.125; + double RightMainBronchusToRightIntermediateBronchusResistance_cmH2O_s_Per_L = 0.150; + double RightMainBronchusToRightSuperiorLobarBronchusResistance_cmH2O_s_Per_L = 0.387; + double RightIntermediateBronchusToRightMiddleLobarBronchusResistance_cmH2O_s_Per_L = 0.877; + double RightIntermediateBronchusToRightInferiorLobarBronchus1Resistance_cmH2O_s_Per_L = 0.150; + double RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2Resistance_cmH2O_s_Per_L = 0.186; + double RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchusResistance_cmH2O_s_Per_L = 0.449; + double RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3Resistance_cmH2O_s_Per_L = 0.150; + double RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4Resistance_cmH2O_s_Per_L = 0.578; + + double CarinaToLeftMainBronchusResistance_cmH2O_s_Per_L = 0.276; + double LeftMainBronchusToLeftInferiorLobarBronchus1Resistance_cmH2O_s_Per_L = 0.337; + double LeftMainBronchusToLeftSuperiorLobarBronchusResistance_cmH2O_s_Per_L = 0.410; + double LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2Resistance_cmH2O_s_Per_L = 0.150; + double LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3Resistance_cmH2O_s_Per_L = 0.150; + double LeftSuperiorLobarBronchusToLeftLingularBonchusResistance_cmH2O_s_Per_L = 0.771; + double LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchusResistance_cmH2O_s_Per_L = 0.350; + + double RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchioleResistance_cmH2O_s_Per_L = 1.486; + double RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchioleResistance_cmH2O_s_Per_L = 3.621; + double RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchioleResistance_cmH2O_s_Per_L = 1.544; + double RightMiddleLobarBronchusToRightMiddleLobeLateralBronchioleResistance_cmH2O_s_Per_L = 2.414; + double RightMiddleLobarBronchusToRightMiddleLobeMedialBronchioleResistance_cmH2O_s_Per_L = 2.414; + double RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchioleResistance_cmH2O_s_Per_L = 2.395; + double RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchioleResistance_cmH2O_s_Per_L = 3.748; + double RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchioleResistance_cmH2O_s_Per_L = 1.811; + double RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchioleResistance_cmH2O_s_Per_L = 2.465; + double RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchioleResistance_cmH2O_s_Per_L = 2.465; + + double LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchioleResistance_cmH2O_s_Per_L = 1.486; + double LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchioleResistance_cmH2O_s_Per_L = 2.465; + double LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchioleResistance_cmH2O_s_Per_L = 1.730; + double LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchioleResistance_cmH2O_s_Per_L = 3.515; + double LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchioleResistance_cmH2O_s_Per_L = 4.292; + double LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchioleResistance_cmH2O_s_Per_L = 3.219; + double LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchioleResistance_cmH2O_s_Per_L = 1.811; + double LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchioleResistance_cmH2O_s_Per_L = 1.486; + + CarinaToRightMainBronchus.GetResistanceBaseline().SetValue(CarinaToRightMainBronchusResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightMainBronchusToRightIntermediateBronchus.GetResistanceBaseline().SetValue(RightMainBronchusToRightIntermediateBronchusResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightMainBronchusToRightSuperiorLobarBronchus.GetResistanceBaseline().SetValue(RightMainBronchusToRightSuperiorLobarBronchusResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightIntermediateBronchusToRightMiddleLobarBronchus.GetResistanceBaseline().SetValue(RightIntermediateBronchusToRightMiddleLobarBronchusResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightIntermediateBronchusToRightInferiorLobarBronchus1.GetResistanceBaseline().SetValue(RightIntermediateBronchusToRightInferiorLobarBronchus1Resistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2.GetResistanceBaseline().SetValue(RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2Resistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus.GetResistanceBaseline().SetValue(RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchusResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3.GetResistanceBaseline().SetValue(RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3Resistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4.GetResistanceBaseline().SetValue(RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4Resistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + + CarinaToLeftMainBronchus.GetResistanceBaseline().SetValue(CarinaToLeftMainBronchusResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftMainBronchusToLeftInferiorLobarBronchus1.GetResistanceBaseline().SetValue(LeftMainBronchusToLeftInferiorLobarBronchus1Resistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftMainBronchusToLeftSuperiorLobarBronchus.GetResistanceBaseline().SetValue(LeftMainBronchusToLeftSuperiorLobarBronchusResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2.GetResistanceBaseline().SetValue(LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2Resistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3.GetResistanceBaseline().SetValue(LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3Resistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftSuperiorLobarBronchusToLeftLingularBonchus.GetResistanceBaseline().SetValue(LeftSuperiorLobarBronchusToLeftLingularBonchusResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus.GetResistanceBaseline().SetValue(LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchusResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + + RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole.GetResistanceBaseline().SetValue(RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole.GetResistanceBaseline().SetValue(RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole.GetResistanceBaseline().SetValue(RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole.GetResistanceBaseline().SetValue(RightMiddleLobarBronchusToRightMiddleLobeLateralBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole.GetResistanceBaseline().SetValue(RightMiddleLobarBronchusToRightMiddleLobeMedialBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole.GetResistanceBaseline().SetValue(RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole.GetResistanceBaseline().SetValue(RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole.GetResistanceBaseline().SetValue(RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole.GetResistanceBaseline().SetValue(RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole.GetResistanceBaseline().SetValue(RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + + LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole.GetResistanceBaseline().SetValue(LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole.GetResistanceBaseline().SetValue(LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole.GetResistanceBaseline().SetValue(LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole.GetResistanceBaseline().SetValue(LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole.GetResistanceBaseline().SetValue(LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole.GetResistanceBaseline().SetValue(LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole.GetResistanceBaseline().SetValue(LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole.GetResistanceBaseline().SetValue(LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchioleResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + + double RightSuperiorLobeApicalCompliance_Percent = 4.0; + double RightSuperiorLobePosteriorCompliance_Percent = 4.4; + double RightSuperiorLobeAnteriorCompliance_Percent = 5.0; + double RightMiddleLobeLateralCompliance_Percent = 5.9; + double RightMiddleLobeMedialCompliance_Percent = 5.8; + double RightInferiorLobeSuperiorCompliance_Percent = 5.3; + double RightInferiorLobeMedialBasalCompliance_Percent = 6.0; + double RightInferiorLobeAnteriorBasalCompliance_Percent = 6.3; + double RightInferiorLobeLateralBasalCompliance_Percent = 6.5; + double RightInferiorLobePosteriorBasalCompliance_Percent = 6.2; + + double LeftInferiorLobePosteriorBasalCompliance_Percent = 6.2; + double LeftInferiorLobeLateralBasalCompliance_Percent = 6.4; + double LeftInferiorLobeAnteromedialBasalCompliance_Percent = 6.1; + double LeftInferiorLobeSuperiorCompliance_Percent = 5.3; + double LeftSuperiorLobeInferiorLingulaCompliance_Percent = 6.0; + double LeftSuperiorLobeSuperiorLingulaCompliance_Percent = 5.6; + double LeftSuperiorLobeAnteriorCompliance_Percent = 4.9; + double LeftSuperiorLobeApicoposteriorCompliance_Percent = 4.2; + + //Both lungs in parallel + double LungsCompliance_L_Per_cmH2O = LungCompliance_L_Per_cmH2O * 2.0; + + RightSuperiorLobeApicalAlveoliToRightPleuralConnection.GetComplianceBaseline().SetValue(RightSuperiorLobeApicalCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + RightSuperiorLobePosteriorAlveoliToRightPleuralConnection.GetComplianceBaseline().SetValue(RightSuperiorLobePosteriorCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection.GetComplianceBaseline().SetValue(RightSuperiorLobeAnteriorCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + RightMiddleLobeLateralAlveoliToRightPleuralConnection.GetComplianceBaseline().SetValue(RightMiddleLobeLateralCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + RightMiddleLobeMedialAlveoliToRightPleuralConnection.GetComplianceBaseline().SetValue(RightMiddleLobeMedialCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + RightInferiorLobeSuperiorAlveoliToRightPleuralConnection.GetComplianceBaseline().SetValue(RightInferiorLobeSuperiorCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection.GetComplianceBaseline().SetValue(RightInferiorLobeMedialBasalCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection.GetComplianceBaseline().SetValue(RightInferiorLobeAnteriorBasalCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection.GetComplianceBaseline().SetValue(RightInferiorLobeLateralBasalCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection.GetComplianceBaseline().SetValue(RightInferiorLobePosteriorBasalCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + + LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection.GetComplianceBaseline().SetValue(LeftInferiorLobePosteriorBasalCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection.GetComplianceBaseline().SetValue(LeftInferiorLobeLateralBasalCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection.GetComplianceBaseline().SetValue(LeftInferiorLobeAnteromedialBasalCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection.GetComplianceBaseline().SetValue(LeftInferiorLobeSuperiorCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection.GetComplianceBaseline().SetValue(LeftSuperiorLobeInferiorLingulaCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection.GetComplianceBaseline().SetValue(LeftSuperiorLobeSuperiorLingulaCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection.GetComplianceBaseline().SetValue(LeftSuperiorLobeAnteriorCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection.GetComplianceBaseline().SetValue(LeftSuperiorLobeApicoposteriorCompliance_Percent / 100.0 * LungsCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + + //Need a no element path to be able to include a node with no volume, so it doesn't get modified by compliances + cRespiratory.CreatePath(RightPleuralConnection, RightPleural, pulse::RespiratoryPath::RightPleuralConnectionToRightPleural); + cRespiratory.CreatePath(LeftPleuralConnection, LeftPleural, pulse::RespiratoryPath::LeftPleuralConnectionToLeftPleural); + // Paths for the Driver + SEFluidCircuitPath& EnvironmentToRespiratoryMuscle = cRespiratory.CreatePath(Ambient, RespiratoryMuscle, pulse::RespiratoryPath::EnvironmentToRespiratoryMuscle); + EnvironmentToRespiratoryMuscle.GetPressureSourceBaseline().SetValue(RespiratoryMuscle.GetPressure(PressureUnit::cmH2O) - Ambient.GetNextPressure(PressureUnit::cmH2O), PressureUnit::cmH2O); + // Esophageal (Stomach) path + SEFluidCircuitPath& AirwayToStomach = cRespiratory.CreatePath(Airway, Stomach, pulse::RespiratoryPath::AirwayToStomach); + AirwayToStomach.GetResistanceBaseline().SetValue(openResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + SEFluidCircuitPath& StomachToEnvironment = cRespiratory.CreatePath(Stomach, Ambient, pulse::RespiratoryPath::StomachToEnvironment); + StomachToEnvironment.GetComplianceBaseline().SetValue(0.05, VolumePerPressureUnit::L_Per_cmH2O); + StomachToEnvironment.SetNextPolarizedState(eGate::Closed); + // Paths to RespiratoryMuscle + SEFluidCircuitPath& RightPleuralToRespiratoryMuscle = cRespiratory.CreatePath(RightPleural, RespiratoryMuscle, pulse::RespiratoryPath::RightPleuralToRespiratoryMuscle); + RightPleuralToRespiratoryMuscle.GetComplianceBaseline().SetValue(ChestWallCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + SEFluidCircuitPath& LeftPleuralToRespiratoryMuscle = cRespiratory.CreatePath(LeftPleural, RespiratoryMuscle, pulse::RespiratoryPath::LeftPleuralToRespiratoryMuscle); + LeftPleuralToRespiratoryMuscle.GetComplianceBaseline().SetValue(ChestWallCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + + cRespiratory.SetNextAndCurrentFromBaselines(); + cRespiratory.StateChange(); + + // Setup Compartments // + + // Pulmonary Compartments + SEGasCompartment& pAirway = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::Airway); + pAirway.MapNode(Airway); + SEGasCompartment& pStomach = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::Stomach); + pStomach.MapNode(Stomach); + SEGasCompartment& pPharynx = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::Pharynx); + pPharynx.MapNode(Pharynx); + SEGasCompartment& pCarina = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::Carina); + pCarina.MapNode(Carina); + SEGasCompartment& pLeftPleural = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::LeftPleuralCavity); + pLeftPleural.MapNode(LeftPleural); + SEGasCompartment& pRightPleural = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::RightPleuralCavity); + pRightPleural.MapNode(RightPleural); + + SEGasCompartment& pRightMainBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMainBronchus); + SEGasCompartment& pLeftMainBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftMainBronchus); + SEGasCompartment& pRightIntermediateBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightIntermediateBronchus); + SEGasCompartment& pRightSuperiorLobarBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobarBronchus); + SEGasCompartment& pRightMiddleLobarBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobarBronchus); + SEGasCompartment& pRightInferiorLobarBronchus1 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobarBronchus1); + SEGasCompartment& pLeftInferiorLobarBronchus1 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobarBronchus1); + SEGasCompartment& pLeftSuperiorLobarBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobarBronchus); + SEGasCompartment& pRightInferiorLobarBronchus2 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobarBronchus2); + SEGasCompartment& pLeftInferiorLobarBronchus2 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobarBronchus2); + SEGasCompartment& pRightSuperiorApicoposteriorBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorApicoposteriorBronchus); + SEGasCompartment& pRightInferiorLobarBronchus3 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobarBronchus3); + SEGasCompartment& pLeftInferiorLobarBronchus3 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobarBronchus3); + SEGasCompartment& pLeftLingularBonchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftLingularBonchus); + SEGasCompartment& pLeftSuperiorApicoposteriorBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorApicoposteriorBronchus); + SEGasCompartment& pRightInferiorLobarBronchus4 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobarBronchus4); + + SEGasCompartment& pRightSuperiorLobeApicalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeApicalBronchiole); + SEGasCompartment& pRightSuperiorLobePosteriorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobePosteriorBronchiole); + SEGasCompartment& pRightSuperiorLobeAnteriorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeAnteriorBronchiole); + SEGasCompartment& pRightMiddleLobeLateralBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeLateralBronchiole); + SEGasCompartment& pRightMiddleLobeMedialBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeMedialBronchiole); + SEGasCompartment& pRightInferiorLobeSuperiorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeSuperiorBronchiole); + SEGasCompartment& pRightInferiorLobeMedialBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeMedialBasalBronchiole); + SEGasCompartment& pRightInferiorLobeAnteriorBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeAnteriorBasalBronchiole); + SEGasCompartment& pRightInferiorLobeLateralBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeLateralBasalBronchiole); + SEGasCompartment& pRightInferiorLobePosteriorBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobePosteriorBasalBronchiole); + + SEGasCompartment& pLeftInferiorLobePosteriorBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobePosteriorBasalBronchiole); + SEGasCompartment& pLeftInferiorLobeLateralBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeLateralBasalBronchiole); + SEGasCompartment& pLeftInferiorLobeAnteromedialBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalBronchiole); + SEGasCompartment& pLeftInferiorLobeSuperiorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeSuperiorBronchiole); + SEGasCompartment& pLeftSuperiorLobeInferiorLingulaBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaBronchiole); + SEGasCompartment& pLeftSuperiorLobeSuperiorLingulaBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaBronchiole); + SEGasCompartment& pLeftSuperiorLobeAnteriorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeAnteriorBronchiole); + SEGasCompartment& pLeftSuperiorLobeApicoposteriorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeApicoposteriorBronchiole); + + SEGasCompartment& pRightSuperiorLobeApicalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeApicalAlveoli); + SEGasCompartment& pRightSuperiorLobePosteriorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobePosteriorAlveoli); + SEGasCompartment& pRightSuperiorLobeAnteriorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeAnteriorAlveoli); + SEGasCompartment& pRightMiddleLobeLateralAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeLateralAlveoli); + SEGasCompartment& pRightMiddleLobeMedialAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeMedialAlveoli); + SEGasCompartment& pRightInferiorLobeSuperiorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeSuperiorAlveoli); + SEGasCompartment& pRightInferiorLobeMedialBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeMedialBasalAlveoli); + SEGasCompartment& pRightInferiorLobeAnteriorBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeAnteriorBasalAlveoli); + SEGasCompartment& pRightInferiorLobeLateralBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeLateralBasalAlveoli); + SEGasCompartment& pRightInferiorLobePosteriorBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobePosteriorBasalAlveoli); + + SEGasCompartment& pLeftInferiorLobePosteriorBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobePosteriorBasalAlveoli); + SEGasCompartment& pLeftInferiorLobeLateralBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeLateralBasalAlveoli); + SEGasCompartment& pLeftInferiorLobeAnteromedialBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalAlveoli); + SEGasCompartment& pLeftInferiorLobeSuperiorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeSuperiorAlveoli); + SEGasCompartment& pLeftSuperiorLobeInferiorLingulaAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaAlveoli); + SEGasCompartment& pLeftSuperiorLobeSuperiorLingulaAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaAlveoli); + SEGasCompartment& pLeftSuperiorLobeAnteriorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeAnteriorAlveoli); + SEGasCompartment& pLeftSuperiorLobeApicoposteriorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeApicoposteriorAlveoli); + + SEGasCompartment& pRightSuperiorLobeApicalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeApicalAlveolarDeadSpace); + SEGasCompartment& pRightSuperiorLobePosteriorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobePosteriorAlveolarDeadSpace); + SEGasCompartment& pRightSuperiorLobeAnteriorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeAnteriorAlveolarDeadSpace); + SEGasCompartment& pRightMiddleLobeLateralAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeLateralAlveolarDeadSpace); + SEGasCompartment& pRightMiddleLobeMedialAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeMedialAlveolarDeadSpace); + SEGasCompartment& pRightInferiorLobeSuperiorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeSuperiorAlveolarDeadSpace); + SEGasCompartment& pRightInferiorLobeMedialBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeMedialBasalAlveolarDeadSpace); + SEGasCompartment& pRightInferiorLobeAnteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeAnteriorBasalAlveolarDeadSpace); + SEGasCompartment& pRightInferiorLobeLateralBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeLateralBasalAlveolarDeadSpace); + SEGasCompartment& pRightInferiorLobePosteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobePosteriorBasalAlveolarDeadSpace); + + SEGasCompartment& pLeftInferiorLobePosteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobePosteriorBasalAlveolarDeadSpace); + SEGasCompartment& pLeftInferiorLobeLateralBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeLateralBasalAlveolarDeadSpace); + SEGasCompartment& pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + SEGasCompartment& pLeftInferiorLobeSuperiorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeSuperiorAlveolarDeadSpace); + SEGasCompartment& pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + SEGasCompartment& pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + SEGasCompartment& pLeftSuperiorLobeAnteriorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeAnteriorAlveolarDeadSpace); + SEGasCompartment& pLeftSuperiorLobeApicoposteriorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + pRightMainBronchus.MapNode(RightMainBronchus); + pLeftMainBronchus.MapNode(LeftMainBronchus); + pRightIntermediateBronchus.MapNode(RightIntermediateBronchus); + pRightSuperiorLobarBronchus.MapNode(RightSuperiorLobarBronchus); + pRightMiddleLobarBronchus.MapNode(RightMiddleLobarBronchus); + pRightInferiorLobarBronchus1.MapNode(RightInferiorLobarBronchus1); + pLeftInferiorLobarBronchus1.MapNode(LeftInferiorLobarBronchus1); + pLeftSuperiorLobarBronchus.MapNode(LeftSuperiorLobarBronchus); + pRightInferiorLobarBronchus2.MapNode(RightInferiorLobarBronchus2); + pLeftInferiorLobarBronchus2.MapNode(LeftInferiorLobarBronchus2); + pRightSuperiorApicoposteriorBronchus.MapNode(RightSuperiorApicoposteriorBronchus); + pRightInferiorLobarBronchus3.MapNode(RightInferiorLobarBronchus3); + pLeftInferiorLobarBronchus3.MapNode(LeftInferiorLobarBronchus3); + pLeftLingularBonchus.MapNode(LeftLingularBonchus); + pLeftSuperiorApicoposteriorBronchus.MapNode(LeftSuperiorApicoposteriorBronchus); + pRightInferiorLobarBronchus4.MapNode(RightInferiorLobarBronchus4); + + pRightSuperiorLobeApicalBronchiole.MapNode(RightSuperiorLobeApicalBronchiole); + pRightSuperiorLobePosteriorBronchiole.MapNode(RightSuperiorLobePosteriorBronchiole); + pRightSuperiorLobeAnteriorBronchiole.MapNode(RightSuperiorLobeAnteriorBronchiole); + pRightMiddleLobeLateralBronchiole.MapNode(RightMiddleLobeLateralBronchiole); + pRightMiddleLobeMedialBronchiole.MapNode(RightMiddleLobeMedialBronchiole); + pRightInferiorLobeSuperiorBronchiole.MapNode(RightInferiorLobeSuperiorBronchiole); + pRightInferiorLobeMedialBasalBronchiole.MapNode(RightInferiorLobeMedialBasalBronchiole); + pRightInferiorLobeAnteriorBasalBronchiole.MapNode(RightInferiorLobeAnteriorBasalBronchiole); + pRightInferiorLobeLateralBasalBronchiole.MapNode(RightInferiorLobeLateralBasalBronchiole); + pRightInferiorLobePosteriorBasalBronchiole.MapNode(RightInferiorLobePosteriorBasalBronchiole); + + pLeftInferiorLobePosteriorBasalBronchiole.MapNode(LeftInferiorLobePosteriorBasalBronchiole); + pLeftInferiorLobeLateralBasalBronchiole.MapNode(LeftInferiorLobeLateralBasalBronchiole); + pLeftInferiorLobeAnteromedialBasalBronchiole.MapNode(LeftInferiorLobeAnteromedialBasalBronchiole); + pLeftInferiorLobeSuperiorBronchiole.MapNode(LeftInferiorLobeSuperiorBronchiole); + pLeftSuperiorLobeInferiorLingulaBronchiole.MapNode(LeftSuperiorLobeInferiorLingulaBronchiole); + pLeftSuperiorLobeSuperiorLingulaBronchiole.MapNode(LeftSuperiorLobeSuperiorLingulaBronchiole); + pLeftSuperiorLobeAnteriorBronchiole.MapNode(LeftSuperiorLobeAnteriorBronchiole); + pLeftSuperiorLobeApicoposteriorBronchiole.MapNode(LeftSuperiorLobeApicoposteriorBronchiole); + + pRightSuperiorLobeApicalAlveolarDeadSpace.MapNode(RightSuperiorLobeApicalAlveolarDeadSpace); + pRightSuperiorLobePosteriorAlveolarDeadSpace.MapNode(RightSuperiorLobePosteriorAlveolarDeadSpace); + pRightSuperiorLobeAnteriorAlveolarDeadSpace.MapNode(RightSuperiorLobeAnteriorAlveolarDeadSpace); + pRightMiddleLobeLateralAlveolarDeadSpace.MapNode(RightMiddleLobeLateralAlveolarDeadSpace); + pRightMiddleLobeMedialAlveolarDeadSpace.MapNode(RightMiddleLobeMedialAlveolarDeadSpace); + pRightInferiorLobeSuperiorAlveolarDeadSpace.MapNode(RightInferiorLobeSuperiorAlveolarDeadSpace); + pRightInferiorLobeMedialBasalAlveolarDeadSpace.MapNode(RightInferiorLobeMedialBasalAlveolarDeadSpace); + pRightInferiorLobeAnteriorBasalAlveolarDeadSpace.MapNode(RightInferiorLobeAnteriorBasalAlveolarDeadSpace); + pRightInferiorLobeLateralBasalAlveolarDeadSpace.MapNode(RightInferiorLobeLateralBasalAlveolarDeadSpace); + pRightInferiorLobePosteriorBasalAlveolarDeadSpace.MapNode(RightInferiorLobePosteriorBasalAlveolarDeadSpace); + + pLeftInferiorLobePosteriorBasalAlveolarDeadSpace.MapNode(LeftInferiorLobePosteriorBasalAlveolarDeadSpace); + pLeftInferiorLobeLateralBasalAlveolarDeadSpace.MapNode(LeftInferiorLobeLateralBasalAlveolarDeadSpace); + pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace.MapNode(LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + pLeftInferiorLobeSuperiorAlveolarDeadSpace.MapNode(LeftInferiorLobeSuperiorAlveolarDeadSpace); + pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace.MapNode(LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace.MapNode(LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + pLeftSuperiorLobeAnteriorAlveolarDeadSpace.MapNode(LeftSuperiorLobeAnteriorAlveolarDeadSpace); + pLeftSuperiorLobeApicoposteriorAlveolarDeadSpace.MapNode(LeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + pRightSuperiorLobeApicalAlveoli.MapNode(RightSuperiorLobeApicalAlveoli); + pRightSuperiorLobePosteriorAlveoli.MapNode(RightSuperiorLobePosteriorAlveoli); + pRightSuperiorLobeAnteriorAlveoli.MapNode(RightSuperiorLobeAnteriorAlveoli); + pRightMiddleLobeLateralAlveoli.MapNode(RightMiddleLobeLateralAlveoli); + pRightMiddleLobeMedialAlveoli.MapNode(RightMiddleLobeMedialAlveoli); + pRightInferiorLobeSuperiorAlveoli.MapNode(RightInferiorLobeSuperiorAlveoli); + pRightInferiorLobeMedialBasalAlveoli.MapNode(RightInferiorLobeMedialBasalAlveoli); + pRightInferiorLobeAnteriorBasalAlveoli.MapNode(RightInferiorLobeAnteriorBasalAlveoli); + pRightInferiorLobeLateralBasalAlveoli.MapNode(RightInferiorLobeLateralBasalAlveoli); + pRightInferiorLobePosteriorBasalAlveoli.MapNode(RightInferiorLobePosteriorBasalAlveoli); + + pLeftInferiorLobePosteriorBasalAlveoli.MapNode(LeftInferiorLobePosteriorBasalAlveoli); + pLeftInferiorLobeLateralBasalAlveoli.MapNode(LeftInferiorLobeLateralBasalAlveoli); + pLeftInferiorLobeAnteromedialBasalAlveoli.MapNode(LeftInferiorLobeAnteromedialBasalAlveoli); + pLeftInferiorLobeSuperiorAlveoli.MapNode(LeftInferiorLobeSuperiorAlveoli); + pLeftSuperiorLobeInferiorLingulaAlveoli.MapNode(LeftSuperiorLobeInferiorLingulaAlveoli); + pLeftSuperiorLobeSuperiorLingulaAlveoli.MapNode(LeftSuperiorLobeSuperiorLingulaAlveoli); + pLeftSuperiorLobeAnteriorAlveoli.MapNode(LeftSuperiorLobeAnteriorAlveoli); + pLeftSuperiorLobeApicoposteriorAlveoli.MapNode(LeftSuperiorLobeApicoposteriorAlveoli); + + // Set up hierarchy + SEGasCompartment& pLeftBranches = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftBranches); + pLeftBranches.AddChild(pLeftMainBronchus); + pLeftBranches.AddChild(pLeftInferiorLobarBronchus1); + pLeftBranches.AddChild(pLeftSuperiorLobarBronchus); + pLeftBranches.AddChild(pLeftInferiorLobarBronchus2); + pLeftBranches.AddChild(pLeftInferiorLobarBronchus3); + pLeftBranches.AddChild(pLeftLingularBonchus); + pLeftBranches.AddChild(pLeftSuperiorApicoposteriorBronchus); + + pLeftBranches.AddChild(pLeftInferiorLobePosteriorBasalBronchiole); + pLeftBranches.AddChild(pLeftInferiorLobeLateralBasalBronchiole); + pLeftBranches.AddChild(pLeftInferiorLobeAnteromedialBasalBronchiole); + pLeftBranches.AddChild(pLeftInferiorLobeSuperiorBronchiole); + pLeftBranches.AddChild(pLeftSuperiorLobeInferiorLingulaBronchiole); + pLeftBranches.AddChild(pLeftSuperiorLobeSuperiorLingulaBronchiole); + pLeftBranches.AddChild(pLeftSuperiorLobeAnteriorBronchiole); + pLeftBranches.AddChild(pLeftSuperiorLobeApicoposteriorBronchiole); + + SEGasCompartment& pRightBranches = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightBranches); + pRightBranches.AddChild(pRightMainBronchus); + pRightBranches.AddChild(pRightIntermediateBronchus); + pRightBranches.AddChild(pRightSuperiorLobarBronchus); + pRightBranches.AddChild(pRightMiddleLobarBronchus); + pRightBranches.AddChild(pRightInferiorLobarBronchus1); + pRightBranches.AddChild(pRightInferiorLobarBronchus2); + pRightBranches.AddChild(pRightSuperiorApicoposteriorBronchus); + pRightBranches.AddChild(pRightInferiorLobarBronchus3); + pRightBranches.AddChild(pRightInferiorLobarBronchus4); + + pRightBranches.AddChild(pRightSuperiorLobeApicalBronchiole); + pRightBranches.AddChild(pRightSuperiorLobePosteriorBronchiole); + pRightBranches.AddChild(pRightSuperiorLobeAnteriorBronchiole); + pRightBranches.AddChild(pRightMiddleLobeLateralBronchiole); + pRightBranches.AddChild(pRightMiddleLobeMedialBronchiole); + pRightBranches.AddChild(pRightInferiorLobeSuperiorBronchiole); + pRightBranches.AddChild(pRightInferiorLobeMedialBasalBronchiole); + pRightBranches.AddChild(pRightInferiorLobeAnteriorBasalBronchiole); + pRightBranches.AddChild(pRightInferiorLobeLateralBasalBronchiole); + pRightBranches.AddChild(pRightInferiorLobePosteriorBasalBronchiole); + + SEGasCompartment& pLeftAnatomicDeadSpace = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::LeftAnatomicDeadSpace); + pLeftAnatomicDeadSpace.AddChild(pLeftBranches); + + SEGasCompartment& pRightAnatomicDeadSpace = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::RightAnatomicDeadSpace); + pRightAnatomicDeadSpace.AddChild(pRightBranches); + + SEGasCompartment& pLeftAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::LeftAlveolarDeadSpace); + pLeftAlveolarDeadSpace.AddChild(pLeftInferiorLobePosteriorBasalAlveolarDeadSpace); + pLeftAlveolarDeadSpace.AddChild(pLeftInferiorLobeLateralBasalAlveolarDeadSpace); + pLeftAlveolarDeadSpace.AddChild(pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + pLeftAlveolarDeadSpace.AddChild(pLeftInferiorLobeSuperiorAlveolarDeadSpace); + pLeftAlveolarDeadSpace.AddChild(pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + pLeftAlveolarDeadSpace.AddChild(pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + pLeftAlveolarDeadSpace.AddChild(pLeftSuperiorLobeAnteriorAlveolarDeadSpace); + pLeftAlveolarDeadSpace.AddChild(pLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + SEGasCompartment& pRightAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::RightAlveolarDeadSpace); + pRightAlveolarDeadSpace.AddChild(pRightSuperiorLobeApicalAlveolarDeadSpace); + pRightAlveolarDeadSpace.AddChild(pRightSuperiorLobePosteriorAlveolarDeadSpace); + pRightAlveolarDeadSpace.AddChild(pRightSuperiorLobeAnteriorAlveolarDeadSpace); + pRightAlveolarDeadSpace.AddChild(pRightMiddleLobeLateralAlveolarDeadSpace); + pRightAlveolarDeadSpace.AddChild(pRightMiddleLobeMedialAlveolarDeadSpace); + pRightAlveolarDeadSpace.AddChild(pRightInferiorLobeSuperiorAlveolarDeadSpace); + pRightAlveolarDeadSpace.AddChild(pRightInferiorLobeMedialBasalAlveolarDeadSpace); + pRightAlveolarDeadSpace.AddChild(pRightInferiorLobeAnteriorBasalAlveolarDeadSpace); + pRightAlveolarDeadSpace.AddChild(pRightInferiorLobeLateralBasalAlveolarDeadSpace); + pRightAlveolarDeadSpace.AddChild(pRightInferiorLobePosteriorBasalAlveolarDeadSpace); + + SEGasCompartment& pLeftAlveoli = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::LeftAlveoli); + pLeftAlveoli.AddChild(pLeftInferiorLobePosteriorBasalAlveoli); + pLeftAlveoli.AddChild(pLeftInferiorLobeLateralBasalAlveoli); + pLeftAlveoli.AddChild(pLeftInferiorLobeAnteromedialBasalAlveoli); + pLeftAlveoli.AddChild(pLeftInferiorLobeSuperiorAlveoli); + pLeftAlveoli.AddChild(pLeftSuperiorLobeInferiorLingulaAlveoli); + pLeftAlveoli.AddChild(pLeftSuperiorLobeSuperiorLingulaAlveoli); + pLeftAlveoli.AddChild(pLeftSuperiorLobeAnteriorAlveoli); + pLeftAlveoli.AddChild(pLeftSuperiorLobeApicoposteriorAlveoli); + + SEGasCompartment& pRightAlveoli = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::RightAlveoli); + pRightAlveoli.AddChild(pRightSuperiorLobeApicalAlveoli); + pRightAlveoli.AddChild(pRightSuperiorLobePosteriorAlveoli); + pRightAlveoli.AddChild(pRightSuperiorLobeAnteriorAlveoli); + pRightAlveoli.AddChild(pRightMiddleLobeLateralAlveoli); + pRightAlveoli.AddChild(pRightMiddleLobeMedialAlveoli); + pRightAlveoli.AddChild(pRightInferiorLobeSuperiorAlveoli); + pRightAlveoli.AddChild(pRightInferiorLobeMedialBasalAlveoli); + pRightAlveoli.AddChild(pRightInferiorLobeAnteriorBasalAlveoli); + pRightAlveoli.AddChild(pRightInferiorLobeLateralBasalAlveoli); + pRightAlveoli.AddChild(pRightInferiorLobePosteriorBasalAlveoli); + + // Set up hierarchy + SEGasCompartment& pLeftLung = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::LeftLung); + pLeftLung.AddChild(pLeftBranches); + pLeftLung.AddChild(pLeftAlveoli); + SEGasCompartment& pRightLung = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::RightLung); + pRightLung.AddChild(pRightBranches); + pRightLung.AddChild(pRightAlveoli); + SEGasCompartment& pLungs = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::Lungs); + pLungs.AddChild(pLeftLung); + pLungs.AddChild(pRightLung); + SEGasCompartment& pPleuralCavity = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::PleuralCavity); + pPleuralCavity.AddChild(pLeftPleural); + pPleuralCavity.AddChild(pRightPleural); + + // Set up other groupings + SEGasCompartment& pAlveoli = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::Alveoli); + pAlveoli.AddChild(pLeftAlveoli); + pAlveoli.AddChild(pRightAlveoli); + SEGasCompartment& pAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::AlveolarDeadSpace); + pAlveolarDeadSpace.AddChild(pLeftAlveolarDeadSpace); + pAlveolarDeadSpace.AddChild(pRightAlveolarDeadSpace); + SEGasCompartment& pAnatomicDeadSpace = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::AnatomicDeadSpace); + /// \TODO: Add these to the dead space, and make sure to account for it in node volume + //pAnatomicDeadSpace.AddChild(pAirway); + //pAnatomicDeadSpace.AddChild(pPharynx); + //pAnatomicDeadSpace.AddChild(pCarina); + pAnatomicDeadSpace.AddChild(pLeftAnatomicDeadSpace); + pAnatomicDeadSpace.AddChild(pRightAnatomicDeadSpace); + + //// Setup Links // + SEGasCompartment* gEnvironment = m_Compartments->GetGasCompartment(pulse::EnvironmentCompartment::Ambient); + SEGasCompartmentLink& pEnvironmentToAirway = m_Compartments->CreateGasLink(*gEnvironment, pAirway, pulse::PulmonaryLink::EnvironmentToAirway); + pEnvironmentToAirway.MapPath(EnvironmentToAirway); + SEGasCompartmentLink& pAirwayToPharynx = m_Compartments->CreateGasLink(pAirway, pPharynx, pulse::PulmonaryLink::AirwayToPharynx); + pAirwayToPharynx.MapPath(AirwayToPharynx); + SEGasCompartmentLink& pPharynxToCarina = m_Compartments->CreateGasLink(pPharynx, pCarina, pulse::PulmonaryLink::PharynxToCarina); + pPharynxToCarina.MapPath(PharynxToCarina); + SEGasCompartmentLink& pAirwayToStomach = m_Compartments->CreateGasLink(pAirway, pStomach, pulse::PulmonaryLink::AirwayToStomach); + pAirwayToStomach.MapPath(AirwayToStomach); + + SEGasCompartmentLink& pCarinaToRightMainBronchus = m_Compartments->CreateGasLink(pCarina, pRightMainBronchus, pulse::ExpandedPulmonaryLink::CarinaToRightMainBronchus); + SEGasCompartmentLink& pRightMainBronchusToRightIntermediateBronchus = m_Compartments->CreateGasLink(pRightMainBronchus, pRightIntermediateBronchus, pulse::ExpandedPulmonaryLink::RightMainBronchusToRightIntermediateBronchus); + SEGasCompartmentLink& pRightMainBronchusToRightSuperiorLobarBronchus = m_Compartments->CreateGasLink(pRightMainBronchus, pRightSuperiorLobarBronchus, pulse::ExpandedPulmonaryLink::RightMainBronchusToRightSuperiorLobarBronchus); + SEGasCompartmentLink& pRightIntermediateBronchusToRightMiddleLobarBronchus = m_Compartments->CreateGasLink(pRightIntermediateBronchus, pRightMiddleLobarBronchus, pulse::ExpandedPulmonaryLink::RightIntermediateBronchusToRightMiddleLobarBronchus); + SEGasCompartmentLink& pRightIntermediateBronchusToRightInferiorLobarBronchus1 = m_Compartments->CreateGasLink(pRightIntermediateBronchus, pRightInferiorLobarBronchus1, pulse::ExpandedPulmonaryLink::RightIntermediateBronchusToRightInferiorLobarBronchus1); + SEGasCompartmentLink& pRightInferiorLobarBronchus1ToRightInferiorLobarBronchus2 = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus1, pRightInferiorLobarBronchus2, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2); + SEGasCompartmentLink& pRightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus = m_Compartments->CreateGasLink(pRightSuperiorLobarBronchus, pRightSuperiorApicoposteriorBronchus, pulse::ExpandedPulmonaryLink::RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus); + SEGasCompartmentLink& pRightInferiorLobarBronchus2ToRightInferiorLobarBronchus3 = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus2, pRightInferiorLobarBronchus3, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3); + SEGasCompartmentLink& pRightInferiorLobarBronchus2ToRightInferiorLobarBronchus4 = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus2, pRightInferiorLobarBronchus4, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4); + + SEGasCompartmentLink& pCarinaToLeftMainBronchus = m_Compartments->CreateGasLink(pCarina, pLeftMainBronchus, pulse::ExpandedPulmonaryLink::CarinaToLeftMainBronchus); + SEGasCompartmentLink& pLeftMainBronchusToLeftInferiorLobarBronchus1 = m_Compartments->CreateGasLink(pLeftMainBronchus, pLeftInferiorLobarBronchus1, pulse::ExpandedPulmonaryLink::LeftMainBronchusToLeftInferiorLobarBronchus1); + SEGasCompartmentLink& pLeftMainBronchusToLeftSuperiorLobarBronchus = m_Compartments->CreateGasLink(pLeftMainBronchus, pLeftSuperiorLobarBronchus, pulse::ExpandedPulmonaryLink::LeftMainBronchusToLeftSuperiorLobarBronchus); + SEGasCompartmentLink& pLeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2 = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus1, pLeftInferiorLobarBronchus2, pulse::ExpandedPulmonaryLink::LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2); + SEGasCompartmentLink& pLeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3 = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus2, pLeftInferiorLobarBronchus3, pulse::ExpandedPulmonaryLink::LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3); + SEGasCompartmentLink& pLeftSuperiorLobarBronchusToLeftLingularBonchus = m_Compartments->CreateGasLink(pLeftSuperiorLobarBronchus, pLeftLingularBonchus, pulse::ExpandedPulmonaryLink::LeftSuperiorLobarBronchusToLeftLingularBonchus); + SEGasCompartmentLink& pLeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus = m_Compartments->CreateGasLink(pLeftSuperiorLobarBronchus, pLeftSuperiorApicoposteriorBronchus, pulse::ExpandedPulmonaryLink::LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus); + + SEGasCompartmentLink& pRightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole = m_Compartments->CreateGasLink(pRightSuperiorApicoposteriorBronchus, pRightSuperiorLobeApicalBronchiole, pulse::ExpandedPulmonaryLink::RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole); + SEGasCompartmentLink& pRightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole = m_Compartments->CreateGasLink(pRightSuperiorApicoposteriorBronchus, pRightSuperiorLobePosteriorBronchiole, pulse::ExpandedPulmonaryLink::RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole); + SEGasCompartmentLink& pRightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole = m_Compartments->CreateGasLink(pRightSuperiorLobarBronchus, pRightSuperiorLobeAnteriorBronchiole, pulse::ExpandedPulmonaryLink::RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole); + SEGasCompartmentLink& pRightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole = m_Compartments->CreateGasLink(pRightMiddleLobarBronchus, pRightMiddleLobeLateralBronchiole, pulse::ExpandedPulmonaryLink::RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole); + SEGasCompartmentLink& pRightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole = m_Compartments->CreateGasLink(pRightMiddleLobarBronchus, pRightMiddleLobeMedialBronchiole, pulse::ExpandedPulmonaryLink::RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole); + SEGasCompartmentLink& pRightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus1, pRightInferiorLobeSuperiorBronchiole, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole); + SEGasCompartmentLink& pRightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus2, pRightInferiorLobeMedialBasalBronchiole, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole); + SEGasCompartmentLink& pRightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus3, pRightInferiorLobeAnteriorBasalBronchiole, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole); + SEGasCompartmentLink& pRightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus4, pRightInferiorLobeLateralBasalBronchiole, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole); + SEGasCompartmentLink& pRightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus4, pRightInferiorLobePosteriorBasalBronchiole, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole); + + SEGasCompartmentLink& pLeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus3, pLeftInferiorLobeLateralBasalBronchiole, pulse::ExpandedPulmonaryLink::LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole); + SEGasCompartmentLink& pLeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus3, pLeftInferiorLobePosteriorBasalBronchiole, pulse::ExpandedPulmonaryLink::LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole); + SEGasCompartmentLink& pLeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus2, pLeftInferiorLobeAnteromedialBasalBronchiole, pulse::ExpandedPulmonaryLink::LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole); + SEGasCompartmentLink& pLeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus1, pLeftInferiorLobeSuperiorBronchiole, pulse::ExpandedPulmonaryLink::LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole); + SEGasCompartmentLink& pLeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole = m_Compartments->CreateGasLink(pLeftLingularBonchus, pLeftSuperiorLobeInferiorLingulaBronchiole, pulse::ExpandedPulmonaryLink::LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole); + SEGasCompartmentLink& pLeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole = m_Compartments->CreateGasLink(pLeftLingularBonchus, pLeftSuperiorLobeSuperiorLingulaBronchiole, pulse::ExpandedPulmonaryLink::LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole); + SEGasCompartmentLink& pLeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole = m_Compartments->CreateGasLink(pLeftSuperiorApicoposteriorBronchus, pLeftSuperiorLobeAnteriorBronchiole, pulse::ExpandedPulmonaryLink::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole); + SEGasCompartmentLink& pLeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole = m_Compartments->CreateGasLink(pLeftSuperiorApicoposteriorBronchus, pLeftSuperiorLobeApicoposteriorBronchiole, pulse::ExpandedPulmonaryLink::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole); + + SEGasCompartmentLink& pRightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightSuperiorLobeApicalBronchiole, pRightSuperiorLobeApicalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace); + SEGasCompartmentLink& pRightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightSuperiorLobePosteriorBronchiole, pRightSuperiorLobePosteriorAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace); + SEGasCompartmentLink& pRightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightSuperiorLobeAnteriorBronchiole, pRightSuperiorLobeAnteriorAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace); + SEGasCompartmentLink& pRightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightMiddleLobeLateralBronchiole, pRightMiddleLobeLateralAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace); + SEGasCompartmentLink& pRightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightMiddleLobeMedialBronchiole, pRightMiddleLobeMedialAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace); + SEGasCompartmentLink& pRightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobeSuperiorBronchiole, pRightInferiorLobeSuperiorAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace); + SEGasCompartmentLink& pRightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobeMedialBasalBronchiole, pRightInferiorLobeMedialBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace); + SEGasCompartmentLink& pRightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobeAnteriorBasalBronchiole, pRightInferiorLobeAnteriorBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace); + SEGasCompartmentLink& pRightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobeLateralBasalBronchiole, pRightInferiorLobeLateralBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace); + SEGasCompartmentLink& pRightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobePosteriorBasalBronchiole, pRightInferiorLobePosteriorBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace); + + SEGasCompartmentLink& pLeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftInferiorLobePosteriorBasalBronchiole, pLeftInferiorLobePosteriorBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace); + SEGasCompartmentLink& pLeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftInferiorLobeLateralBasalBronchiole, pLeftInferiorLobeLateralBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace); + SEGasCompartmentLink& pLeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftInferiorLobeAnteromedialBasalBronchiole, pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + SEGasCompartmentLink& pLeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftInferiorLobeSuperiorBronchiole, pLeftInferiorLobeSuperiorAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace); + SEGasCompartmentLink& pLeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftSuperiorLobeInferiorLingulaBronchiole, pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + SEGasCompartmentLink& pLeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftSuperiorLobeSuperiorLingulaBronchiole, pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + SEGasCompartmentLink& pLeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftSuperiorLobeAnteriorBronchiole, pLeftSuperiorLobeAnteriorAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace); + SEGasCompartmentLink& pLeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftSuperiorLobeApicoposteriorBronchiole, pLeftSuperiorLobeApicoposteriorAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + SEGasCompartmentLink& pRightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli = m_Compartments->CreateGasLink(pRightSuperiorLobeApicalAlveolarDeadSpace, pRightSuperiorLobeApicalAlveoli, pulse::ExpandedPulmonaryLink::RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli); + SEGasCompartmentLink& pRightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli = m_Compartments->CreateGasLink(pRightSuperiorLobePosteriorAlveolarDeadSpace, pRightSuperiorLobePosteriorAlveoli, pulse::ExpandedPulmonaryLink::RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli); + SEGasCompartmentLink& pRightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli = m_Compartments->CreateGasLink(pRightSuperiorLobeAnteriorAlveolarDeadSpace, pRightSuperiorLobeAnteriorAlveoli, pulse::ExpandedPulmonaryLink::RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli); + SEGasCompartmentLink& pRightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli = m_Compartments->CreateGasLink(pRightMiddleLobeLateralAlveolarDeadSpace, pRightMiddleLobeLateralAlveoli, pulse::ExpandedPulmonaryLink::RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli); + SEGasCompartmentLink& pRightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli = m_Compartments->CreateGasLink(pRightMiddleLobeMedialAlveolarDeadSpace, pRightMiddleLobeMedialAlveoli, pulse::ExpandedPulmonaryLink::RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli); + SEGasCompartmentLink& pRightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobeSuperiorAlveolarDeadSpace, pRightInferiorLobeSuperiorAlveoli, pulse::ExpandedPulmonaryLink::RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli); + SEGasCompartmentLink& pRightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobeMedialBasalAlveolarDeadSpace, pRightInferiorLobeMedialBasalAlveoli, pulse::ExpandedPulmonaryLink::RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli); + SEGasCompartmentLink& pRightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobeAnteriorBasalAlveolarDeadSpace, pRightInferiorLobeAnteriorBasalAlveoli, pulse::ExpandedPulmonaryLink::RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli); + SEGasCompartmentLink& pRightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobeLateralBasalAlveolarDeadSpace, pRightInferiorLobeLateralBasalAlveoli, pulse::ExpandedPulmonaryLink::RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli); + SEGasCompartmentLink& pRightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobePosteriorBasalAlveolarDeadSpace, pRightInferiorLobePosteriorBasalAlveoli, pulse::ExpandedPulmonaryLink::RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli); + + SEGasCompartmentLink& pLeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli = m_Compartments->CreateGasLink(pLeftInferiorLobePosteriorBasalAlveolarDeadSpace, pLeftInferiorLobePosteriorBasalAlveoli, pulse::ExpandedPulmonaryLink::LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli); + SEGasCompartmentLink& pLeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli = m_Compartments->CreateGasLink(pLeftInferiorLobeLateralBasalAlveolarDeadSpace, pLeftInferiorLobeLateralBasalAlveoli, pulse::ExpandedPulmonaryLink::LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli); + SEGasCompartmentLink& pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli = m_Compartments->CreateGasLink(pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace, pLeftInferiorLobeAnteromedialBasalAlveoli, pulse::ExpandedPulmonaryLink::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli); + SEGasCompartmentLink& pLeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli = m_Compartments->CreateGasLink(pLeftInferiorLobeSuperiorAlveolarDeadSpace, pLeftInferiorLobeSuperiorAlveoli, pulse::ExpandedPulmonaryLink::LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli); + SEGasCompartmentLink& pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli = m_Compartments->CreateGasLink(pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace, pLeftSuperiorLobeInferiorLingulaAlveoli, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli); + SEGasCompartmentLink& pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli = m_Compartments->CreateGasLink(pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace, pLeftSuperiorLobeSuperiorLingulaAlveoli, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli); + SEGasCompartmentLink& pLeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli = m_Compartments->CreateGasLink(pLeftSuperiorLobeAnteriorAlveolarDeadSpace, pLeftSuperiorLobeAnteriorAlveoli, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli); + SEGasCompartmentLink& pLeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli = m_Compartments->CreateGasLink(pLeftSuperiorLobeApicoposteriorAlveolarDeadSpace, pLeftSuperiorLobeApicoposteriorAlveoli, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli); + + pCarinaToRightMainBronchus.MapPath(CarinaToRightMainBronchus); + pRightMainBronchusToRightIntermediateBronchus.MapPath(RightMainBronchusToRightIntermediateBronchus); + pRightMainBronchusToRightSuperiorLobarBronchus.MapPath(RightMainBronchusToRightSuperiorLobarBronchus); + pRightIntermediateBronchusToRightMiddleLobarBronchus.MapPath(RightIntermediateBronchusToRightMiddleLobarBronchus); + pRightIntermediateBronchusToRightInferiorLobarBronchus1.MapPath(RightIntermediateBronchusToRightInferiorLobarBronchus1); + pRightInferiorLobarBronchus1ToRightInferiorLobarBronchus2.MapPath(RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2); + pRightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus.MapPath(RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus); + pRightInferiorLobarBronchus2ToRightInferiorLobarBronchus3.MapPath(RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3); + pRightInferiorLobarBronchus2ToRightInferiorLobarBronchus4.MapPath(RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4); + + pCarinaToLeftMainBronchus.MapPath(CarinaToLeftMainBronchus); + pLeftMainBronchusToLeftInferiorLobarBronchus1.MapPath(LeftMainBronchusToLeftInferiorLobarBronchus1); + pLeftMainBronchusToLeftSuperiorLobarBronchus.MapPath(LeftMainBronchusToLeftSuperiorLobarBronchus); + pLeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2.MapPath(LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2); + pLeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3.MapPath(LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3); + pLeftSuperiorLobarBronchusToLeftLingularBonchus.MapPath(LeftSuperiorLobarBronchusToLeftLingularBonchus); + pLeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus.MapPath(LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus); + + pRightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole.MapPath(RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole); + pRightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole.MapPath(RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole); + pRightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole.MapPath(RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole); + pRightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole.MapPath(RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole); + pRightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole.MapPath(RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole); + pRightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole.MapPath(RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole); + pRightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole.MapPath(RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole); + pRightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole.MapPath(RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole); + pRightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole.MapPath(RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole); + pRightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole.MapPath(RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole); + + pLeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole.MapPath(LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole); + pLeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole.MapPath(LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole); + pLeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole.MapPath(LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole); + pLeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole.MapPath(LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole); + pLeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole.MapPath(LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole); + pLeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole.MapPath(LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole); + pLeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole.MapPath(LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole); + pLeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole.MapPath(LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole); + + pRightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace.MapPath(RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace); + pRightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace.MapPath(RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace); + pRightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace.MapPath(RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace); + pRightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace.MapPath(RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace); + pRightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace.MapPath(RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace); + pRightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace.MapPath(RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace); + pRightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace.MapPath(RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace); + pRightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace.MapPath(RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace); + pRightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace.MapPath(RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace); + pRightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace.MapPath(RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace); + + pLeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace.MapPath(LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace); + pLeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace.MapPath(LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace); + pLeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace.MapPath(LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + pLeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace.MapPath(LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace); + pLeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace.MapPath(LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + pLeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace.MapPath(LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + pLeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace.MapPath(LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace); + pLeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace.MapPath(LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + pRightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli.MapPath(RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli); + pRightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli.MapPath(RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli); + pRightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli.MapPath(RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli); + pRightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli.MapPath(RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli); + pRightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli.MapPath(RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli); + pRightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli.MapPath(RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli); + pRightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli.MapPath(RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli); + pRightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli.MapPath(RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli); + pRightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli.MapPath(RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli); + pRightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli.MapPath(RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli); + + pLeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli.MapPath(LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli); + pLeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli.MapPath(LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli); + pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli.MapPath(LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli); + pLeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli.MapPath(LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli); + pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli.MapPath(LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli); + pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli.MapPath(LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli); + pLeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli.MapPath(LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli); + pLeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli.MapPath(LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli); + + // Create the respiratory graph for transport // + SEGasCompartmentGraph& gRespiratory = m_Compartments->GetRespiratoryGraph(); + + gRespiratory.AddCompartment(*gEnvironment); + + gRespiratory.AddCompartment(pAirway); + gRespiratory.AddCompartment(pPharynx); + gRespiratory.AddCompartment(pCarina); + + gRespiratory.AddCompartment(pStomach); + + gRespiratory.AddCompartment(pRightMainBronchus); + gRespiratory.AddCompartment(pLeftMainBronchus); + gRespiratory.AddCompartment(pRightIntermediateBronchus); + gRespiratory.AddCompartment(pRightSuperiorLobarBronchus); + gRespiratory.AddCompartment(pRightMiddleLobarBronchus); + gRespiratory.AddCompartment(pRightInferiorLobarBronchus1); + gRespiratory.AddCompartment(pLeftInferiorLobarBronchus1); + gRespiratory.AddCompartment(pLeftSuperiorLobarBronchus); + gRespiratory.AddCompartment(pRightInferiorLobarBronchus2); + gRespiratory.AddCompartment(pLeftInferiorLobarBronchus2); + gRespiratory.AddCompartment(pRightSuperiorApicoposteriorBronchus); + gRespiratory.AddCompartment(pRightInferiorLobarBronchus3); + gRespiratory.AddCompartment(pLeftInferiorLobarBronchus3); + gRespiratory.AddCompartment(pLeftLingularBonchus); + gRespiratory.AddCompartment(pLeftSuperiorApicoposteriorBronchus); + gRespiratory.AddCompartment(pRightInferiorLobarBronchus4); + + gRespiratory.AddCompartment(pRightSuperiorLobeApicalBronchiole); + gRespiratory.AddCompartment(pRightSuperiorLobePosteriorBronchiole); + gRespiratory.AddCompartment(pRightSuperiorLobeAnteriorBronchiole); + gRespiratory.AddCompartment(pRightMiddleLobeLateralBronchiole); + gRespiratory.AddCompartment(pRightMiddleLobeMedialBronchiole); + gRespiratory.AddCompartment(pRightInferiorLobeSuperiorBronchiole); + gRespiratory.AddCompartment(pRightInferiorLobeMedialBasalBronchiole); + gRespiratory.AddCompartment(pRightInferiorLobeAnteriorBasalBronchiole); + gRespiratory.AddCompartment(pRightInferiorLobeLateralBasalBronchiole); + gRespiratory.AddCompartment(pRightInferiorLobePosteriorBasalBronchiole); + + gRespiratory.AddCompartment(pLeftInferiorLobePosteriorBasalBronchiole); + gRespiratory.AddCompartment(pLeftInferiorLobeLateralBasalBronchiole); + gRespiratory.AddCompartment(pLeftInferiorLobeAnteromedialBasalBronchiole); + gRespiratory.AddCompartment(pLeftInferiorLobeSuperiorBronchiole); + gRespiratory.AddCompartment(pLeftSuperiorLobeInferiorLingulaBronchiole); + gRespiratory.AddCompartment(pLeftSuperiorLobeSuperiorLingulaBronchiole); + gRespiratory.AddCompartment(pLeftSuperiorLobeAnteriorBronchiole); + gRespiratory.AddCompartment(pLeftSuperiorLobeApicoposteriorBronchiole); + + gRespiratory.AddCompartment(pRightSuperiorLobeApicalAlveolarDeadSpace); + gRespiratory.AddCompartment(pRightSuperiorLobePosteriorAlveolarDeadSpace); + gRespiratory.AddCompartment(pRightSuperiorLobeAnteriorAlveolarDeadSpace); + gRespiratory.AddCompartment(pRightMiddleLobeLateralAlveolarDeadSpace); + gRespiratory.AddCompartment(pRightMiddleLobeMedialAlveolarDeadSpace); + gRespiratory.AddCompartment(pRightInferiorLobeSuperiorAlveolarDeadSpace); + gRespiratory.AddCompartment(pRightInferiorLobeMedialBasalAlveolarDeadSpace); + gRespiratory.AddCompartment(pRightInferiorLobeAnteriorBasalAlveolarDeadSpace); + gRespiratory.AddCompartment(pRightInferiorLobeLateralBasalAlveolarDeadSpace); + gRespiratory.AddCompartment(pRightInferiorLobePosteriorBasalAlveolarDeadSpace); + + gRespiratory.AddCompartment(pLeftInferiorLobePosteriorBasalAlveolarDeadSpace); + gRespiratory.AddCompartment(pLeftInferiorLobeLateralBasalAlveolarDeadSpace); + gRespiratory.AddCompartment(pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + gRespiratory.AddCompartment(pLeftInferiorLobeSuperiorAlveolarDeadSpace); + gRespiratory.AddCompartment(pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + gRespiratory.AddCompartment(pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + gRespiratory.AddCompartment(pLeftSuperiorLobeAnteriorAlveolarDeadSpace); + gRespiratory.AddCompartment(pLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + gRespiratory.AddCompartment(pRightSuperiorLobeApicalAlveoli); + gRespiratory.AddCompartment(pRightSuperiorLobePosteriorAlveoli); + gRespiratory.AddCompartment(pRightSuperiorLobeAnteriorAlveoli); + gRespiratory.AddCompartment(pRightMiddleLobeLateralAlveoli); + gRespiratory.AddCompartment(pRightMiddleLobeMedialAlveoli); + gRespiratory.AddCompartment(pRightInferiorLobeSuperiorAlveoli); + gRespiratory.AddCompartment(pRightInferiorLobeMedialBasalAlveoli); + gRespiratory.AddCompartment(pRightInferiorLobeAnteriorBasalAlveoli); + gRespiratory.AddCompartment(pRightInferiorLobeLateralBasalAlveoli); + gRespiratory.AddCompartment(pRightInferiorLobePosteriorBasalAlveoli); + + gRespiratory.AddCompartment(pLeftInferiorLobePosteriorBasalAlveoli); + gRespiratory.AddCompartment(pLeftInferiorLobeLateralBasalAlveoli); + gRespiratory.AddCompartment(pLeftInferiorLobeAnteromedialBasalAlveoli); + gRespiratory.AddCompartment(pLeftInferiorLobeSuperiorAlveoli); + gRespiratory.AddCompartment(pLeftSuperiorLobeInferiorLingulaAlveoli); + gRespiratory.AddCompartment(pLeftSuperiorLobeSuperiorLingulaAlveoli); + gRespiratory.AddCompartment(pLeftSuperiorLobeAnteriorAlveoli); + gRespiratory.AddCompartment(pLeftSuperiorLobeApicoposteriorAlveoli); + + gRespiratory.AddLink(pEnvironmentToAirway); + gRespiratory.AddLink(pAirwayToPharynx); + gRespiratory.AddLink(pAirwayToStomach); + gRespiratory.AddLink(pPharynxToCarina); + + gRespiratory.AddLink(pCarinaToRightMainBronchus); + gRespiratory.AddLink(pRightMainBronchusToRightIntermediateBronchus); + gRespiratory.AddLink(pRightMainBronchusToRightSuperiorLobarBronchus); + gRespiratory.AddLink(pRightIntermediateBronchusToRightMiddleLobarBronchus); + gRespiratory.AddLink(pRightIntermediateBronchusToRightInferiorLobarBronchus1); + gRespiratory.AddLink(pRightInferiorLobarBronchus1ToRightInferiorLobarBronchus2); + gRespiratory.AddLink(pRightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus); + gRespiratory.AddLink(pRightInferiorLobarBronchus2ToRightInferiorLobarBronchus3); + gRespiratory.AddLink(pRightInferiorLobarBronchus2ToRightInferiorLobarBronchus4); + + gRespiratory.AddLink(pCarinaToLeftMainBronchus); + gRespiratory.AddLink(pLeftMainBronchusToLeftInferiorLobarBronchus1); + gRespiratory.AddLink(pLeftMainBronchusToLeftSuperiorLobarBronchus); + gRespiratory.AddLink(pLeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2); + gRespiratory.AddLink(pLeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3); + gRespiratory.AddLink(pLeftSuperiorLobarBronchusToLeftLingularBonchus); + gRespiratory.AddLink(pLeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus); + + gRespiratory.AddLink(pRightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole); + gRespiratory.AddLink(pRightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole); + gRespiratory.AddLink(pRightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole); + gRespiratory.AddLink(pRightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole); + gRespiratory.AddLink(pRightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole); + gRespiratory.AddLink(pRightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole); + gRespiratory.AddLink(pRightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole); + gRespiratory.AddLink(pRightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole); + gRespiratory.AddLink(pRightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole); + gRespiratory.AddLink(pRightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole); + + gRespiratory.AddLink(pLeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole); + gRespiratory.AddLink(pLeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole); + gRespiratory.AddLink(pLeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole); + gRespiratory.AddLink(pLeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole); + gRespiratory.AddLink(pLeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole); + gRespiratory.AddLink(pLeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole); + gRespiratory.AddLink(pLeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole); + gRespiratory.AddLink(pLeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole); + + gRespiratory.AddLink(pRightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace); + gRespiratory.AddLink(pRightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace); + gRespiratory.AddLink(pRightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace); + gRespiratory.AddLink(pRightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace); + gRespiratory.AddLink(pRightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace); + gRespiratory.AddLink(pRightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace); + gRespiratory.AddLink(pRightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace); + gRespiratory.AddLink(pRightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace); + gRespiratory.AddLink(pRightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace); + gRespiratory.AddLink(pRightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace); + + gRespiratory.AddLink(pLeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace); + gRespiratory.AddLink(pLeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace); + gRespiratory.AddLink(pLeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + gRespiratory.AddLink(pLeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace); + gRespiratory.AddLink(pLeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + gRespiratory.AddLink(pLeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + gRespiratory.AddLink(pLeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace); + gRespiratory.AddLink(pLeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + gRespiratory.AddLink(pRightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli); + gRespiratory.AddLink(pRightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli); + gRespiratory.AddLink(pRightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli); + gRespiratory.AddLink(pRightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli); + gRespiratory.AddLink(pRightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli); + gRespiratory.AddLink(pRightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli); + gRespiratory.AddLink(pRightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli); + gRespiratory.AddLink(pRightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli); + gRespiratory.AddLink(pRightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli); + gRespiratory.AddLink(pRightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli); + + gRespiratory.AddLink(pLeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli); + gRespiratory.AddLink(pLeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli); + gRespiratory.AddLink(pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli); + gRespiratory.AddLink(pLeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli); + gRespiratory.AddLink(pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli); + gRespiratory.AddLink(pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli); + gRespiratory.AddLink(pLeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli); + gRespiratory.AddLink(pLeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli); + + gRespiratory.StateChange(); + + // Generically set up the Aerosol Graph, this is a mirror of the Respiratory Gas Graph, only it's a liquid graph + SELiquidCompartmentGraph& lAerosol = m_Compartments->GetAerosolGraph(); + SELiquidCompartment* lEnvironment = m_Compartments->GetLiquidCompartment(pulse::EnvironmentCompartment::Ambient); + lAerosol.AddCompartment(*lEnvironment); + // First Create the compartments and map the same nodes + for (auto gasCmpt : gRespiratory.GetCompartments()) + { + std::string name = gasCmpt->GetName(); + SELiquidCompartment& liquidCmpt = m_Compartments->CreateLiquidCompartment(name); + if (gasCmpt->HasNodeMapping()) + { + for (auto node : gasCmpt->GetNodeMapping().GetNodes()) + liquidCmpt.MapNode(*node); + } + } + // Hook up any hierarchies + for (auto gasCmpt : gRespiratory.GetCompartments()) + { + std::string name = gasCmpt->GetName(); + SELiquidCompartment* liquidCmpt = m_Compartments->GetLiquidCompartment(name); + if (gasCmpt->HasChildren()) + { + for (auto child : gasCmpt->GetChildren()) + liquidCmpt->AddChild(*m_Compartments->GetLiquidCompartment(child->GetName())); + } + } + // Add leaf compartments to the graph + for (auto gasCmpt : gRespiratory.GetCompartments()) + { + std::string name = gasCmpt->GetName(); + SELiquidCompartment* liquidCmpt = m_Compartments->GetLiquidCompartment(name); + if (!liquidCmpt->HasChildren()) + lAerosol.AddCompartment(*liquidCmpt); + } + // Create Links + for (auto gasLink : gRespiratory.GetLinks()) + { + std::string name = gasLink->GetName(); + SELiquidCompartment* src = m_Compartments->GetLiquidCompartment(gasLink->GetSourceCompartment().GetName()); + SELiquidCompartment* tgt = m_Compartments->GetLiquidCompartment(gasLink->GetTargetCompartment().GetName()); + SELiquidCompartmentLink& liquidLink = m_Compartments->CreateLiquidLink(*src, *tgt, name); + if (gasLink->HasPath()) + liquidLink.MapPath(*gasLink->GetPath()); + lAerosol.AddLink(liquidLink); + } + + SEGasCompartment* gasCmpt = m_Compartments->GetGasCompartment(pulse::PulmonaryCompartment::Airway); + SELiquidCompartment& liquidCmpt = m_Compartments->CreateLiquidCompartment(pulse::PulmonaryCompartment::Airway); + if (gasCmpt->HasNodeMapping()) + { + for (auto node : gasCmpt->GetNodeMapping().GetNodes()) + liquidCmpt.MapNode(*node); + } + lAerosol.StateChange(); } void Controller::SetupExpandedPulmonaryCardiovascular() { - Fatal("Expanded cardiovascular pulmonary subcircuit not yet implemented."); + Info("Setting Up Cardiovascular"); + bool male = m_InitialPatient->GetSex() == ePatient_Sex::Male ? true : false; + double RightLungRatio = m_InitialPatient->GetRightLungRatio().GetValue(); + double LeftLungRatio = 1 - RightLungRatio; + double bloodVolume_mL = m_InitialPatient->GetBloodVolumeBaseline(VolumeUnit::mL); + + double systolicPressureTarget_mmHg = m_InitialPatient->GetSystolicArterialPressureBaseline(PressureUnit::mmHg); + + const double cardiacOutputTarget_mL_Per_min = male ? 5600.0 : 4900.0; + const double cardiacOutputTarget_mL_Per_s = cardiacOutputTarget_mL_Per_min / 60; + + const double pulmonaryShuntFractionFactor = 0.009; // Used to set the pulmonary shunt fraction. Actual shunt will be roughly double this value (two lungs). + // The way this works is we compute resistances and compliances based on the hemodynamic variables above that are either in the patient + // file or we use the defaults if nothing is there. Because the actual impedance depends on the frequency, the computations assume a resting heart rate. + // So if a user needs to put pressures in the patient file assuming that the pts baseline hr is in the normal range (around 72). + // If someone wants a patient with a high hr because s/he is exercising or something, then they need to use the action. + // If a user wants a patient with a ridiculously high resting hr, then they will need to estimate what the pressures and CO would be if the pt had a normal resting hr. + + // Our configuration can apply a modifier to adjust any of these targets to get closer to the target systolic and diastolic pressures from the patient file + // The tuning method in cardiovascular will do the fine tuning, but modifiers can speed up the process. + /// \todo Make these a function of the systolic and diastolic pressure by fitting a curve to the data from the variations test + const double systemicResistanceModifier = 1.0; // 0.849; + const double largeArteriesComplianceModifier = 1.0;//0.4333; + const double expandedPulmonaryCapillariesComplianceModifier = 1.0; + const double expandedPulmonaryLeftCapillariesVolumeModifier = 0.83; + const double expandedPulmonaryRightCapillariesVolumeModifier = 0.66; + //const double expandedPulmonaryLeftCapillariesVolumeModifier = 1.0; + //const double expandedPulmonaryRightCapillariesVolumeModifier = 1.0; + + //Flow rates from \cite valentin2002icrp + double VascularFlowTargetAorta = 1.0 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetArm = 0.015 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetBone = 0.05 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetBrain = 0.12 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetFat = male ? 0.05 * cardiacOutputTarget_mL_Per_s : 0.085 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetKidney = male ? 0.085 * cardiacOutputTarget_mL_Per_s : 0.075 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetLargeIntestine = male ? 0.04 * cardiacOutputTarget_mL_Per_s : 0.05 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetLeg = 0.0525 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetMuscle = male ? 0.17 * cardiacOutputTarget_mL_Per_s : 0.12 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetMyocardium = male ? 0.04 * cardiacOutputTarget_mL_Per_s : 0.05 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetPulmCapRight = RightLungRatio * cardiacOutputTarget_mL_Per_s * (1 - pulmonaryShuntFractionFactor); + double VascularFlowTargetPulmVeinsRight = RightLungRatio * cardiacOutputTarget_mL_Per_s * (1 - pulmonaryShuntFractionFactor); + double VascularFlowTargetPulmArtLeft = LeftLungRatio * cardiacOutputTarget_mL_Per_s * (1 - pulmonaryShuntFractionFactor); + double VascularFlowTargetPulmCapLeft = LeftLungRatio * cardiacOutputTarget_mL_Per_s * (1 - pulmonaryShuntFractionFactor); + double VascularFlowTargetPulmVeinsLeft = LeftLungRatio * cardiacOutputTarget_mL_Per_s * (1 - pulmonaryShuntFractionFactor); + double VascularFlowTargetSkin = 0.05 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetSmallIntestine = male ? 0.1 * cardiacOutputTarget_mL_Per_s : 0.11 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetSplanchnic = 0.01 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetSpleen = 0.03 * cardiacOutputTarget_mL_Per_s; + double VascularFlowTargetPortalVein = VascularFlowTargetLargeIntestine + VascularFlowTargetSmallIntestine + VascularFlowTargetSplanchnic + VascularFlowTargetSpleen; + double VascularFlowTargetLiver = (male ? 0.255 * cardiacOutputTarget_mL_Per_s : 0.27 * cardiacOutputTarget_mL_Per_s) - VascularFlowTargetPortalVein; + + double VascularFlowTargetPulmCapTotal = VascularFlowTargetPulmCapRight + VascularFlowTargetPulmCapLeft; + + double VascularFlowTargetRightSuperiorLobeApicalPulmonaryCapillaries = 2.04 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetRightSuperiorLobePosteriorPulmonaryCapillaries = 2.95 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetRightSuperiorLobeAnteriorPulmonaryCapillaries = 4.23 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetRightMiddleLobeLateralPulmonaryCapillaries = 6.34 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetRightMiddleLobeMedialPulmonaryCapillaries = 6.19 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetRightInferiorLobeSuperiorPulmonaryCapillaries = 4.91 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetRightInferiorLobeMedialBasalPulmonaryCapillaries = 6.64 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetRightInferiorLobeAnteriorBasalPulmonaryCapillaries = 7.32 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetRightInferiorLobeLateralBasalPulmonaryCapillaries = 7.62 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetRightInferiorLobePosteriorBasalPulmonaryCapillaries = 6.94 / 100.0 * VascularFlowTargetPulmCapTotal; + + double VascularFlowTargetLeftInferiorLobePosteriorBasalPulmonaryCapillaries = 7.02 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetLeftInferiorLobeLateralBasalPulmonaryCapillaries = 7.47 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = 6.79 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetLeftInferiorLobeSuperiorPulmonaryCapillaries = 4.91 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = 6.49 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = 5.58 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetLeftSuperiorLobeAnteriorPulmonaryCapillaries = 4.08 / 100.0 * VascularFlowTargetPulmCapTotal; + double VascularFlowTargetLeftSuperiorLobeApicoposteriorPulmonaryCapillaries = 2.50 / 100.0 * VascularFlowTargetPulmCapTotal; + + // Pressure targets derived from information available in \cite guyton2006medical and \cite van2013davis + double VascularPressureTargetAorta = 1.0 * systolicPressureTarget_mmHg; + double VascularPressureTargetArm = 0.33 * systolicPressureTarget_mmHg; + double VascularPressureTargetBone = 0.33 * systolicPressureTarget_mmHg; + double VascularPressureTargetBrain = 0.08 * systolicPressureTarget_mmHg; + double VascularPressureTargetFat = 0.33 * systolicPressureTarget_mmHg; + double VascularPressureTargetHeartLeft = 1.06667 * systolicPressureTarget_mmHg; + double VascularPressureTargetHeartRight = 0.16667 * systolicPressureTarget_mmHg; + double VascularPressureTargetKidney = 0.33 * systolicPressureTarget_mmHg; + double VascularPressureTargetLargeIntestine = 0.33 * systolicPressureTarget_mmHg; + double VascularPressureTargetLeg = 0.33 * systolicPressureTarget_mmHg; + double VascularPressureTargetLiver = 0.25 * systolicPressureTarget_mmHg; + double VascularPressureTargetMuscle = 0.33 * systolicPressureTarget_mmHg; + double VascularPressureTargetMyocardium = 0.33 * systolicPressureTarget_mmHg; + double VascularPressureTargetPulmArtRight = 0.13333 * systolicPressureTarget_mmHg; + double VascularPressureTargetPulmCapRight = 0.0650 * systolicPressureTarget_mmHg; + double VascularPressureTargetPulmVeinsRight = 0.03846 * systolicPressureTarget_mmHg; + double VascularPressureTargetPulmArtLeft = 0.13333 * systolicPressureTarget_mmHg; + double VascularPressureTargetPulmCapLeft = 0.0650 * systolicPressureTarget_mmHg; + double VascularPressureTargetPulmVeinsLeft = 0.03846 * systolicPressureTarget_mmHg; + double VascularPressureTargetSkin = 0.0833 * systolicPressureTarget_mmHg; + double VascularPressureTargetSmallIntestine = 0.33 * systolicPressureTarget_mmHg; + double VascularPressureTargetSplanchnic = 0.33 * systolicPressureTarget_mmHg; + double VascularPressureTargetSpleen = 0.33 * systolicPressureTarget_mmHg; + double VascularPressureTargetVenaCava = 0.0333 * systolicPressureTarget_mmHg; + + // Volume fractions from \cite valentin2002icrp + double VolumeFractionAorta = 0.05; + double VolumeFractionArm = 0.02; + double VolumeFractionBone = 0.07; + double VolumeFractionBrain = 0.012; + double VolumeFractionFat = male ? 0.05 : 0.085; + double VolumeFractionHeartLeft = 0.0025; + double VolumeFractionHeartRight = 0.0025; + double VolumeFractionKidney = 0.02; + double VolumeFractionLargeIntestine = 0.022; + double VolumeFractionLeg = 0.04; + double VolumeFractionLiver = 0.1; + double VolumeFractionMuscle = male ? 0.14 : 0.105; + double VolumeFractionMyocardium = 0.01; + double VolumeFractionPulmArtRight = 0.03 * RightLungRatio; + double VolumeFractionPulmCapRight = 0.02 * RightLungRatio; + double VolumeFractionPulmVeinsRight = 0.055 * RightLungRatio; + double VolumeFractionPulmArtLeft = 0.03 * LeftLungRatio; + double VolumeFractionPulmCapLeft = 0.02 * LeftLungRatio; + double VolumeFractionPulmVeinsLeft = 0.055 * LeftLungRatio; + double VolumeFractionSkin = 0.03; + double VolumeFractionSmallIntestine = 0.038; + double VolumeFractionSplanchnic = 0.01; + double VolumeFractionSpleen = 0.014; + double VolumeFractionVenaCava = 0.175; + + double VolumeFractionPulmCapTotal = VolumeFractionPulmCapRight + VolumeFractionPulmCapLeft; + + double VolumeFractionRightSuperiorLobeApicalPulmonaryCapillaries = 9.3 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionRightSuperiorLobePosteriorPulmonaryCapillaries = 3.5 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionRightSuperiorLobeAnteriorPulmonaryCapillaries = 7.5 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionRightMiddleLobeLateralPulmonaryCapillaries = 2.9 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionRightMiddleLobeMedialPulmonaryCapillaries = 6.3 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionRightInferiorLobeSuperiorPulmonaryCapillaries = 6.2 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionRightInferiorLobeMedialBasalPulmonaryCapillaries = 1.7 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionRightInferiorLobeAnteriorBasalPulmonaryCapillaries = 5.5 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionRightInferiorLobeLateralBasalPulmonaryCapillaries = 4.8 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionRightInferiorLobePosteriorBasalPulmonaryCapillaries = 6.9 / 100.0 * VolumeFractionPulmCapTotal; + + double VolumeFractionLeftInferiorLobePosteriorBasalPulmonaryCapillaries = 5.6 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionLeftInferiorLobeLateralBasalPulmonaryCapillaries = 6.4 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = 4.2 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionLeftInferiorLobeSuperiorPulmonaryCapillaries = 5.1 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = 4.8 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = 4.0 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionLeftSuperiorLobeAnteriorPulmonaryCapillaries = 7.5 / 100.0 * VolumeFractionPulmCapTotal; + double VolumeFractionLeftSuperiorLobeApicoposteriorPulmonaryCapillaries = 8.1 / 100.0 * VolumeFractionPulmCapTotal; + + // Compute resistances from mean flow rates and pressure targets + double ResistanceAorta = (VascularPressureTargetHeartLeft - systolicPressureTarget_mmHg) / VascularFlowTargetAorta; + double ResistanceArm = (systolicPressureTarget_mmHg - VascularPressureTargetArm) / VascularFlowTargetArm; + double ResistanceArmVenous = (VascularPressureTargetArm - VascularPressureTargetVenaCava) / VascularFlowTargetArm; + double ResistanceBone = (systolicPressureTarget_mmHg - VascularPressureTargetBone) / VascularFlowTargetBone; + double ResistanceBoneVenous = (VascularPressureTargetBone - VascularPressureTargetVenaCava) / VascularFlowTargetBone; + double ResistanceBrain = (systolicPressureTarget_mmHg - VascularPressureTargetBrain) / VascularFlowTargetBrain; + double ResistanceBrainVenous = (VascularPressureTargetBrain - VascularPressureTargetVenaCava) / VascularFlowTargetBrain; + double ResistanceFat = (systolicPressureTarget_mmHg - VascularPressureTargetFat) / VascularFlowTargetFat; + double ResistanceFatVenous = (VascularPressureTargetFat - VascularPressureTargetVenaCava) / VascularFlowTargetFat; + double ResistanceHeartLeft = 0.0008; + double ResistanceHeartRight = (systolicPressureTarget_mmHg - VascularPressureTargetVenaCava) / cardiacOutputTarget_mL_Per_s; + double ResistanceKidney = (systolicPressureTarget_mmHg - VascularPressureTargetKidney) / VascularFlowTargetKidney; + double ResistanceKidneyVenous = (VascularPressureTargetKidney - VascularPressureTargetVenaCava) / VascularFlowTargetKidney; + double ResistanceLargeIntestine = (systolicPressureTarget_mmHg - VascularPressureTargetLargeIntestine) / VascularFlowTargetLargeIntestine; + double ResistanceLargeIntestineVenous = (VascularPressureTargetLargeIntestine - VascularPressureTargetLiver) / VascularFlowTargetLargeIntestine; + double ResistanceLeg = (systolicPressureTarget_mmHg - VascularPressureTargetLeg) / VascularFlowTargetLeg; + double ResistanceLegVenous = (VascularPressureTargetLeg - VascularPressureTargetVenaCava) / VascularFlowTargetLeg; + double ResistanceLiver = (systolicPressureTarget_mmHg - VascularPressureTargetLiver) / VascularFlowTargetLiver; + double ResistanceLiverVenous = (VascularPressureTargetLiver - VascularPressureTargetVenaCava) / (VascularFlowTargetLiver + VascularFlowTargetPortalVein); + double ResistanceMuscle = (systolicPressureTarget_mmHg - VascularPressureTargetMuscle) / VascularFlowTargetMuscle; + double ResistanceMuscleVenous = (VascularPressureTargetMuscle - VascularPressureTargetVenaCava) / VascularFlowTargetMuscle; + double ResistanceMyocardium = (systolicPressureTarget_mmHg - VascularPressureTargetMyocardium) / VascularFlowTargetMyocardium; + double ResistanceMyocardiumVenous = (VascularPressureTargetMyocardium - VascularPressureTargetVenaCava) / VascularFlowTargetMyocardium; + //double ResistancePulmCapRight = (VascularPressureTargetPulmArtRight - VascularPressureTargetPulmCapRight) / VascularFlowTargetPulmCapRight; + double ResistancePulmVeinsRight = (VascularPressureTargetPulmCapRight - VascularPressureTargetPulmVeinsRight) / VascularFlowTargetPulmVeinsRight; + double ResistancePulmArt = (VascularPressureTargetHeartRight - VascularPressureTargetPulmArtLeft) / VascularFlowTargetPulmArtLeft; + //double ResistancePulmCapLeft = (VascularPressureTargetPulmArtLeft - VascularPressureTargetPulmCapLeft) / VascularFlowTargetPulmCapLeft; + double ResistancePulmVeinsLeft = (VascularPressureTargetPulmCapLeft - VascularPressureTargetPulmVeinsLeft) / VascularFlowTargetPulmVeinsLeft; + double ResistanceSkin = (systolicPressureTarget_mmHg - VascularPressureTargetSkin) / VascularFlowTargetSkin; + double ResistanceSkinVenous = (VascularPressureTargetSkin - VascularPressureTargetVenaCava) / VascularFlowTargetSkin; + double ResistanceSmallIntestine = (systolicPressureTarget_mmHg - VascularPressureTargetSmallIntestine) / VascularFlowTargetSmallIntestine; + double ResistanceSmallIntestineVenous = (VascularPressureTargetSmallIntestine - VascularPressureTargetLiver) / VascularFlowTargetSmallIntestine; + double ResistanceSplanchnic = (systolicPressureTarget_mmHg - VascularPressureTargetSplanchnic) / VascularFlowTargetSplanchnic; + double ResistanceSplanchnicVenous = (VascularPressureTargetSplanchnic - VascularPressureTargetLiver) / VascularFlowTargetSplanchnic; + double ResistanceSpleen = (systolicPressureTarget_mmHg - VascularPressureTargetSpleen) / VascularFlowTargetSpleen; + double ResistanceSpleenVenous = (VascularPressureTargetSpleen - VascularPressureTargetLiver) / VascularFlowTargetSpleen; + + double ResistanceRightSuperiorLobeApicalPulmonaryCapillaries = (VascularPressureTargetPulmArtRight - VascularPressureTargetPulmCapRight) / VascularFlowTargetRightSuperiorLobeApicalPulmonaryCapillaries; + double ResistanceRightSuperiorLobePosteriorPulmonaryCapillaries = (VascularPressureTargetPulmArtRight - VascularPressureTargetPulmCapRight) / VascularFlowTargetRightSuperiorLobePosteriorPulmonaryCapillaries; + double ResistanceRightSuperiorLobeAnteriorPulmonaryCapillaries = (VascularPressureTargetPulmArtRight - VascularPressureTargetPulmCapRight) / VascularFlowTargetRightSuperiorLobeAnteriorPulmonaryCapillaries; + double ResistanceRightMiddleLobeLateralPulmonaryCapillaries = (VascularPressureTargetPulmArtRight - VascularPressureTargetPulmCapRight) / VascularFlowTargetRightMiddleLobeLateralPulmonaryCapillaries; + double ResistanceRightMiddleLobeMedialPulmonaryCapillaries = (VascularPressureTargetPulmArtRight - VascularPressureTargetPulmCapRight) / VascularFlowTargetRightMiddleLobeMedialPulmonaryCapillaries; + double ResistanceRightInferiorLobeSuperiorPulmonaryCapillaries = (VascularPressureTargetPulmArtRight - VascularPressureTargetPulmCapRight) / VascularFlowTargetRightInferiorLobeSuperiorPulmonaryCapillaries; + double ResistanceRightInferiorLobeMedialBasalPulmonaryCapillaries = (VascularPressureTargetPulmArtRight - VascularPressureTargetPulmCapRight) / VascularFlowTargetRightInferiorLobeMedialBasalPulmonaryCapillaries; + double ResistanceRightInferiorLobeAnteriorBasalPulmonaryCapillaries = (VascularPressureTargetPulmArtRight - VascularPressureTargetPulmCapRight) / VascularFlowTargetRightInferiorLobeAnteriorBasalPulmonaryCapillaries; + double ResistanceRightInferiorLobeLateralBasalPulmonaryCapillaries = (VascularPressureTargetPulmArtRight - VascularPressureTargetPulmCapRight) / VascularFlowTargetRightInferiorLobeLateralBasalPulmonaryCapillaries; + double ResistanceRightInferiorLobePosteriorBasalPulmonaryCapillaries = (VascularPressureTargetPulmArtRight - VascularPressureTargetPulmCapRight) / VascularFlowTargetRightInferiorLobePosteriorBasalPulmonaryCapillaries; + + double ResistanceLeftInferiorLobePosteriorBasalPulmonaryCapillaries = (VascularPressureTargetPulmArtLeft - VascularPressureTargetPulmCapLeft) / VascularFlowTargetLeftInferiorLobePosteriorBasalPulmonaryCapillaries; + double ResistanceLeftInferiorLobeLateralBasalPulmonaryCapillaries = (VascularPressureTargetPulmArtLeft - VascularPressureTargetPulmCapLeft) / VascularFlowTargetLeftInferiorLobeLateralBasalPulmonaryCapillaries; + double ResistanceLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = (VascularPressureTargetPulmArtLeft - VascularPressureTargetPulmCapLeft) / VascularFlowTargetLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries; + double ResistanceLeftInferiorLobeSuperiorPulmonaryCapillaries = (VascularPressureTargetPulmArtLeft - VascularPressureTargetPulmCapLeft) / VascularFlowTargetLeftInferiorLobeSuperiorPulmonaryCapillaries; + double ResistanceLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = (VascularPressureTargetPulmArtLeft - VascularPressureTargetPulmCapLeft) / VascularFlowTargetLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries; + double ResistanceLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = (VascularPressureTargetPulmArtLeft - VascularPressureTargetPulmCapLeft) / VascularFlowTargetLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries; + double ResistanceLeftSuperiorLobeAnteriorPulmonaryCapillaries = (VascularPressureTargetPulmArtLeft - VascularPressureTargetPulmCapLeft) / VascularFlowTargetLeftSuperiorLobeAnteriorPulmonaryCapillaries; + double ResistanceLeftSuperiorLobeApicoposteriorPulmonaryCapillaries = (VascularPressureTargetPulmArtLeft - VascularPressureTargetPulmCapLeft) / VascularFlowTargetLeftSuperiorLobeApicoposteriorPulmonaryCapillaries; + + double ResistanceRightSuperiorLobeApicalPulmonaryVeins = (VascularPressureTargetPulmCapRight - VascularPressureTargetPulmVeinsRight) / VascularFlowTargetRightSuperiorLobeApicalPulmonaryCapillaries; + double ResistanceRightSuperiorLobePosteriorPulmonaryVeins = (VascularPressureTargetPulmCapRight - VascularPressureTargetPulmVeinsRight) / VascularFlowTargetRightSuperiorLobePosteriorPulmonaryCapillaries; + double ResistanceRightSuperiorLobeAnteriorPulmonaryVeins = (VascularPressureTargetPulmCapRight - VascularPressureTargetPulmVeinsRight) / VascularFlowTargetRightSuperiorLobeAnteriorPulmonaryCapillaries; + double ResistanceRightMiddleLobeLateralPulmonaryVeins = (VascularPressureTargetPulmCapRight - VascularPressureTargetPulmVeinsRight) / VascularFlowTargetRightMiddleLobeLateralPulmonaryCapillaries; + double ResistanceRightMiddleLobeMedialPulmonaryVeins = (VascularPressureTargetPulmCapRight - VascularPressureTargetPulmVeinsRight) / VascularFlowTargetRightMiddleLobeMedialPulmonaryCapillaries; + double ResistanceRightInferiorLobeSuperiorPulmonaryVeins = (VascularPressureTargetPulmCapRight - VascularPressureTargetPulmVeinsRight) / VascularFlowTargetRightInferiorLobeSuperiorPulmonaryCapillaries; + double ResistanceRightInferiorLobeMedialBasalPulmonaryVeins = (VascularPressureTargetPulmCapRight - VascularPressureTargetPulmVeinsRight) / VascularFlowTargetRightInferiorLobeMedialBasalPulmonaryCapillaries; + double ResistanceRightInferiorLobeAnteriorBasalPulmonaryVeins = (VascularPressureTargetPulmCapRight - VascularPressureTargetPulmVeinsRight) / VascularFlowTargetRightInferiorLobeAnteriorBasalPulmonaryCapillaries; + double ResistanceRightInferiorLobeLateralBasalPulmonaryVeins = (VascularPressureTargetPulmCapRight - VascularPressureTargetPulmVeinsRight) / VascularFlowTargetRightInferiorLobeLateralBasalPulmonaryCapillaries; + double ResistanceRightInferiorLobePosteriorBasalPulmonaryVeins = (VascularPressureTargetPulmCapRight - VascularPressureTargetPulmVeinsRight) / VascularFlowTargetRightInferiorLobePosteriorBasalPulmonaryCapillaries; + + double ResistanceLeftInferiorLobePosteriorBasalPulmonaryVeins = (VascularPressureTargetPulmCapLeft - VascularPressureTargetPulmVeinsLeft) / VascularFlowTargetLeftInferiorLobePosteriorBasalPulmonaryCapillaries; + double ResistanceLeftInferiorLobeLateralBasalPulmonaryVeins = (VascularPressureTargetPulmCapLeft - VascularPressureTargetPulmVeinsLeft) / VascularFlowTargetLeftInferiorLobeLateralBasalPulmonaryCapillaries; + double ResistanceLeftInferiorLobeAnteromedialBasalPulmonaryVeins = (VascularPressureTargetPulmCapLeft - VascularPressureTargetPulmVeinsLeft) / VascularFlowTargetLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries; + double ResistanceLeftInferiorLobeSuperiorPulmonaryVeins = (VascularPressureTargetPulmCapLeft - VascularPressureTargetPulmVeinsLeft) / VascularFlowTargetLeftInferiorLobeSuperiorPulmonaryCapillaries; + double ResistanceLeftSuperiorLobeInferiorLingulaPulmonaryVeins = (VascularPressureTargetPulmCapLeft - VascularPressureTargetPulmVeinsLeft) / VascularFlowTargetLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries; + double ResistanceLeftSuperiorLobeSuperiorLingulaPulmonaryVeins = (VascularPressureTargetPulmCapLeft - VascularPressureTargetPulmVeinsLeft) / VascularFlowTargetLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries; + double ResistanceLeftSuperiorLobeAnteriorPulmonaryVeins = (VascularPressureTargetPulmCapLeft - VascularPressureTargetPulmVeinsLeft) / VascularFlowTargetLeftSuperiorLobeAnteriorPulmonaryCapillaries; + double ResistanceLeftSuperiorLobeApicoposteriorPulmonaryVeins = (VascularPressureTargetPulmCapLeft - VascularPressureTargetPulmVeinsLeft) / VascularFlowTargetLeftSuperiorLobeApicoposteriorPulmonaryCapillaries; + + // Portal vein and shunt are just paths - only have resistance + double ResistancePortalVein = 0.001; // The portal vein is just a pathway in Pulse. The pressure across this path does not represent portal vein pressure (if it did our patient would always be portal hypertensive) + double ResistanceShuntRight = (VascularPressureTargetPulmArtRight - VascularPressureTargetPulmCapRight) / (cardiacOutputTarget_mL_Per_s * pulmonaryShuntFractionFactor); + double ResistanceShuntLeft = (VascularPressureTargetPulmArtLeft - VascularPressureTargetPulmCapLeft) / (cardiacOutputTarget_mL_Per_s * pulmonaryShuntFractionFactor); + + // Make a circuit + SEFluidCircuit& cCardiovascular = m_Circuits->GetCardiovascularCircuit(); + + // Create Nodes, set volume baselines and pressures where appropriate + SEFluidCircuitNode& RightHeart1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightHeart1); + RightHeart1.GetPressure().SetValue(0.0, PressureUnit::mmHg); + SEFluidCircuitNode& RightHeart2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightHeart2); + SEFluidCircuitNode& RightHeart3 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightHeart3); + RightHeart3.GetPressure().SetValue(0.0, PressureUnit::mmHg); + RightHeart1.GetVolumeBaseline().SetValue(VolumeFractionHeartRight * bloodVolume_mL, VolumeUnit::mL); + + SEFluidCircuitNode& MainPulmonaryArteries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::MainPulmonaryArteries1); + + SEFluidCircuitNode& RightIntermediatePulmonaryArteries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightIntermediatePulmonaryArteries1); + SEFluidCircuitNode& RightPulmonaryArteries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightPulmonaryArteries1); + RightPulmonaryArteries1.GetVolumeBaseline().SetValue(VolumeFractionPulmArtRight * bloodVolume_mL, VolumeUnit::mL); + RightPulmonaryArteries1.GetPressure().SetValue(VascularPressureTargetPulmArtRight, PressureUnit::mmHg); + + SEFluidCircuitNode& LeftIntermediatePulmonaryArteries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftIntermediatePulmonaryArteries1); + SEFluidCircuitNode& LeftPulmonaryArteries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftPulmonaryArteries1); + LeftPulmonaryArteries1.GetVolumeBaseline().SetValue(VolumeFractionPulmArtLeft * bloodVolume_mL, VolumeUnit::mL); + LeftPulmonaryArteries1.GetPressure().SetValue(VascularPressureTargetPulmArtLeft, PressureUnit::mmHg); + + //SEFluidCircuitNode& RightPulmonaryCapillaries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightPulmonaryCapillaries1); + //RightPulmonaryCapillaries1.GetVolumeBaseline().SetValue(VolumeFractionPulmCapRight * bloodVolume_mL, VolumeUnit::mL); + //RightPulmonaryCapillaries1.GetPressure().SetValue(VascularPressureTargetPulmCapRight, PressureUnit::mmHg); + + //SEFluidCircuitNode& LeftPulmonaryCapillaries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftPulmonaryCapillaries1); + //LeftPulmonaryCapillaries1.GetVolumeBaseline().SetValue(VolumeFractionPulmCapLeft * bloodVolume_mL, VolumeUnit::mL); + //LeftPulmonaryCapillaries1.GetPressure().SetValue(VascularPressureTargetPulmCapLeft, PressureUnit::mmHg); + + SEFluidCircuitNode& RightIntermediatePulmonaryVeins1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightIntermediatePulmonaryVeins1); + SEFluidCircuitNode& RightPulmonaryVeins1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightPulmonaryVeins1); + RightPulmonaryVeins1.GetVolumeBaseline().SetValue(VolumeFractionPulmVeinsRight * bloodVolume_mL, VolumeUnit::mL); + RightPulmonaryVeins1.GetPressure().SetValue(VascularPressureTargetPulmVeinsRight, PressureUnit::mmHg); + + SEFluidCircuitNode& LeftIntermediatePulmonaryVeins1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftIntermediatePulmonaryVeins1); + SEFluidCircuitNode& LeftPulmonaryVeins1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftPulmonaryVeins1); + LeftPulmonaryVeins1.GetVolumeBaseline().SetValue(VolumeFractionPulmVeinsLeft * bloodVolume_mL, VolumeUnit::mL); + LeftPulmonaryVeins1.GetPressure().SetValue(VascularPressureTargetPulmVeinsLeft, PressureUnit::mmHg); + + SEFluidCircuitNode& LeftHeart1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftHeart1); + LeftHeart1.GetPressure().SetValue(0.0, PressureUnit::mmHg); + SEFluidCircuitNode& LeftHeart2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftHeart2); + SEFluidCircuitNode& LeftHeart3 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftHeart3); + LeftHeart3.GetPressure().SetValue(0.0, PressureUnit::mmHg); + LeftHeart1.GetVolumeBaseline().SetValue(VolumeFractionHeartLeft * bloodVolume_mL, VolumeUnit::mL); + + SEFluidCircuitNode& Aorta1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Aorta1); + SEFluidCircuitNode& Aorta2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Aorta2); + SEFluidCircuitNode& Aorta3 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Aorta3); + SEFluidCircuitNode& Aorta4 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Aorta4); + Aorta4.GetPressure().SetValue(0.0, PressureUnit::mmHg); + Aorta1.GetVolumeBaseline().SetValue(VolumeFractionAorta * bloodVolume_mL, VolumeUnit::mL); + Aorta1.GetPressure().SetValue(VascularPressureTargetAorta, PressureUnit::mmHg); + + SEFluidCircuitNode& Brain1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Brain1); + SEFluidCircuitNode& Brain2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Brain2); + Brain1.GetVolumeBaseline().SetValue(VolumeFractionBrain * bloodVolume_mL, VolumeUnit::mL); + Brain1.GetPressure().SetValue(0.0, PressureUnit::mmHg); + Brain1.GetPressure().SetValue(VascularPressureTargetBrain, PressureUnit::mmHg); + + SEFluidCircuitNode& Bone1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Bone1); + SEFluidCircuitNode& Bone2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Bone2); + Bone1.GetVolumeBaseline().SetValue(VolumeFractionBone * bloodVolume_mL, VolumeUnit::mL); + Bone1.GetPressure().SetValue(VascularPressureTargetBone, PressureUnit::mmHg); + + SEFluidCircuitNode& Fat1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Fat1); + SEFluidCircuitNode& Fat2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Fat2); + Fat1.GetVolumeBaseline().SetValue(VolumeFractionFat * bloodVolume_mL, VolumeUnit::mL); + Fat1.GetPressure().SetValue(VascularPressureTargetFat, PressureUnit::mmHg); + + SEFluidCircuitNode& LargeIntestine1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LargeIntestine1); + LargeIntestine1.GetVolumeBaseline().SetValue(VolumeFractionLargeIntestine * bloodVolume_mL, VolumeUnit::mL); + LargeIntestine1.GetPressure().SetValue(VascularPressureTargetLargeIntestine, PressureUnit::mmHg); + + SEFluidCircuitNode& Liver1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Liver1); + SEFluidCircuitNode& Liver2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Liver2); + Liver1.GetVolumeBaseline().SetValue(VolumeFractionLiver * bloodVolume_mL, VolumeUnit::mL); + Liver1.GetPressure().SetValue(VascularPressureTargetLiver, PressureUnit::mmHg); + + SEFluidCircuitNode& LeftArm1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftArm1); + SEFluidCircuitNode& LeftArm2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftArm2); + LeftArm1.GetVolumeBaseline().SetValue(VolumeFractionArm * bloodVolume_mL, VolumeUnit::mL); + LeftArm1.GetPressure().SetValue(VascularPressureTargetArm, PressureUnit::mmHg); + + SEFluidCircuitNode& LeftKidney1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftKidney1); + SEFluidCircuitNode& LeftKidney2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftKidney2); + LeftKidney1.GetVolumeBaseline().SetValue(0.5 * VolumeFractionKidney * bloodVolume_mL, VolumeUnit::mL); + LeftKidney1.GetPressure().SetValue(VascularPressureTargetKidney, PressureUnit::mmHg); + + SEFluidCircuitNode& LeftLeg1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftLeg1); + SEFluidCircuitNode& LeftLeg2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftLeg2); + LeftLeg1.GetVolumeBaseline().SetValue(VolumeFractionLeg * bloodVolume_mL, VolumeUnit::mL); + LeftLeg1.GetPressure().SetValue(VascularPressureTargetLeg, PressureUnit::mmHg); + + SEFluidCircuitNode& Muscle1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Muscle1); + SEFluidCircuitNode& Muscle2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Muscle2); + Muscle1.GetVolumeBaseline().SetValue(VolumeFractionMuscle * bloodVolume_mL, VolumeUnit::mL); + Muscle1.GetPressure().SetValue(VascularPressureTargetMuscle, PressureUnit::mmHg); + + SEFluidCircuitNode& Myocardium1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Myocardium1); + SEFluidCircuitNode& Myocardium2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Myocardium2); + Myocardium1.GetVolumeBaseline().SetValue(VolumeFractionMyocardium * bloodVolume_mL, VolumeUnit::mL); + Myocardium1.GetPressure().SetValue(VascularPressureTargetMyocardium, PressureUnit::mmHg); + + SEFluidCircuitNode& PortalVein1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::PortalVein1); + + SEFluidCircuitNode& RightArm1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightArm1); + SEFluidCircuitNode& RightArm2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightArm2); + RightArm1.GetVolumeBaseline().SetValue(VolumeFractionArm * bloodVolume_mL, VolumeUnit::mL); + RightArm1.GetPressure().SetValue(VascularPressureTargetArm, PressureUnit::mmHg); + + SEFluidCircuitNode& RightKidney1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightKidney1); + SEFluidCircuitNode& RightKidney2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightKidney2); + RightKidney1.GetVolumeBaseline().SetValue(0.5 * VolumeFractionKidney * bloodVolume_mL, VolumeUnit::mL); + RightKidney1.GetPressure().SetValue(VascularPressureTargetKidney, PressureUnit::mmHg); + + SEFluidCircuitNode& RightLeg1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightLeg1); + SEFluidCircuitNode& RightLeg2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightLeg2); + RightLeg1.GetVolumeBaseline().SetValue(VolumeFractionLeg * bloodVolume_mL, VolumeUnit::mL); + RightLeg1.GetPressure().SetValue(VascularPressureTargetLeg, PressureUnit::mmHg); + + SEFluidCircuitNode& Skin1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Skin1); + SEFluidCircuitNode& Skin2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Skin2); + Skin1.GetVolumeBaseline().SetValue(VolumeFractionSkin * bloodVolume_mL, VolumeUnit::mL); + Skin1.GetPressure().SetValue(VascularPressureTargetSkin, PressureUnit::mmHg); + + SEFluidCircuitNode& SmallIntestine1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::SmallIntestine1); + SmallIntestine1.GetVolumeBaseline().SetValue(VolumeFractionSmallIntestine * bloodVolume_mL, VolumeUnit::mL); + SmallIntestine1.GetPressure().SetValue(VascularPressureTargetSmallIntestine, PressureUnit::mmHg); + + SEFluidCircuitNode& Splanchnic1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Splanchnic1); + Splanchnic1.GetVolumeBaseline().SetValue(VolumeFractionSplanchnic * bloodVolume_mL, VolumeUnit::mL); + Splanchnic1.GetPressure().SetValue(VascularPressureTargetSplanchnic, PressureUnit::mmHg); + + SEFluidCircuitNode& Spleen1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Spleen1); + Spleen1.GetVolumeBaseline().SetValue(VolumeFractionSpleen * bloodVolume_mL, VolumeUnit::mL); + Spleen1.GetPressure().SetValue(VascularPressureTargetSpleen, PressureUnit::mmHg); + + SEFluidCircuitNode& VenaCava1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::VenaCava1); + VenaCava1.GetVolumeBaseline().SetValue(VolumeFractionVenaCava * bloodVolume_mL, VolumeUnit::mL); + VenaCava1.GetPressure().SetValue(VascularPressureTargetVenaCava, PressureUnit::mmHg); + + SEFluidCircuitNode& Ground = cCardiovascular.CreateNode(pulse::CardiovascularNode::Ground); + Ground.SetAsReferenceNode(); + Ground.GetPressure().SetValue(0.0, PressureUnit::mmHg); + + double blood_mL = 0; + for (SEFluidCircuitNode* n : cCardiovascular.GetNodes()) + { + if (n->HasVolumeBaseline()) + blood_mL += n->GetVolumeBaseline(VolumeUnit::mL); + } + if (blood_mL > bloodVolume_mL) + Error("Blood volume greater than total blood volume"); + + SEFluidCircuitNode& Pericardium = cCardiovascular.CreateNode(pulse::CardiovascularNode::Pericardium1); + Pericardium.GetVolumeBaseline().SetValue(15.0, VolumeUnit::mL); + Pericardium.GetPressure().SetValue(1.0, PressureUnit::mmHg); + + SEFluidCircuitNode& AbdominalCavity = cCardiovascular.CreateNode(pulse::CardiovascularNode::AbdominalCavity1); + AbdominalCavity.GetVolumeBaseline().SetValue(10.0, VolumeUnit::mL); + AbdominalCavity.GetPressure().SetValue(0.0, PressureUnit::mmHg); + + SEFluidCircuitNode& RightSuperiorLobeApicalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightSuperiorLobeApicalPulmonaryCapillaries); + SEFluidCircuitNode& RightSuperiorLobePosteriorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightSuperiorLobePosteriorPulmonaryCapillaries); + SEFluidCircuitNode& RightSuperiorLobeAnteriorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightSuperiorLobeAnteriorPulmonaryCapillaries); + SEFluidCircuitNode& RightMiddleLobeLateralPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightMiddleLobeLateralPulmonaryCapillaries); + SEFluidCircuitNode& RightMiddleLobeMedialPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightMiddleLobeMedialPulmonaryCapillaries); + SEFluidCircuitNode& RightInferiorLobeSuperiorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightInferiorLobeSuperiorPulmonaryCapillaries); + SEFluidCircuitNode& RightInferiorLobeMedialBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightInferiorLobeMedialBasalPulmonaryCapillaries); + SEFluidCircuitNode& RightInferiorLobeAnteriorBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightInferiorLobeAnteriorBasalPulmonaryCapillaries); + SEFluidCircuitNode& RightInferiorLobeLateralBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightInferiorLobeLateralBasalPulmonaryCapillaries); + SEFluidCircuitNode& RightInferiorLobePosteriorBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightInferiorLobePosteriorBasalPulmonaryCapillaries); + + SEFluidCircuitNode& LeftInferiorLobePosteriorBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftInferiorLobePosteriorBasalPulmonaryCapillaries); + SEFluidCircuitNode& LeftInferiorLobeLateralBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftInferiorLobeLateralBasalPulmonaryCapillaries); + SEFluidCircuitNode& LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + SEFluidCircuitNode& LeftInferiorLobeSuperiorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftInferiorLobeSuperiorPulmonaryCapillaries); + SEFluidCircuitNode& LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + SEFluidCircuitNode& LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + SEFluidCircuitNode& LeftSuperiorLobeAnteriorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftSuperiorLobeAnteriorPulmonaryCapillaries); + SEFluidCircuitNode& LeftSuperiorLobeApicoposteriorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + RightSuperiorLobeApicalPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionRightSuperiorLobeApicalPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + RightSuperiorLobePosteriorPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionRightSuperiorLobePosteriorPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + RightSuperiorLobeAnteriorPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionRightSuperiorLobeAnteriorPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + RightMiddleLobeLateralPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionRightMiddleLobeLateralPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + RightMiddleLobeMedialPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionRightMiddleLobeMedialPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + RightInferiorLobeSuperiorPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionRightInferiorLobeSuperiorPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + RightInferiorLobeMedialBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionRightInferiorLobeMedialBasalPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + RightInferiorLobeAnteriorBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionRightInferiorLobeAnteriorBasalPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + RightInferiorLobeLateralBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionRightInferiorLobeLateralBasalPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + RightInferiorLobePosteriorBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionRightInferiorLobePosteriorBasalPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + + LeftInferiorLobePosteriorBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionLeftInferiorLobePosteriorBasalPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + LeftInferiorLobeLateralBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionLeftInferiorLobeLateralBasalPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + LeftInferiorLobeSuperiorPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionLeftInferiorLobeSuperiorPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + LeftSuperiorLobeAnteriorPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionLeftSuperiorLobeAnteriorPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + LeftSuperiorLobeApicoposteriorPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionLeftSuperiorLobeApicoposteriorPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); + + double totalRightVolume_mL = + RightSuperiorLobeApicalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + RightSuperiorLobePosteriorPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + RightSuperiorLobeAnteriorPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + RightMiddleLobeLateralPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + RightMiddleLobeMedialPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + RightInferiorLobeSuperiorPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + RightInferiorLobeMedialBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + RightInferiorLobeAnteriorBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + RightInferiorLobeLateralBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + RightInferiorLobePosteriorBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL); + + double totalLeftVolume_mL = + LeftInferiorLobePosteriorBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + LeftInferiorLobeLateralBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + LeftInferiorLobeSuperiorPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + LeftSuperiorLobeAnteriorPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) + + LeftSuperiorLobeApicoposteriorPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL); + + double totalVolume_mL = totalRightVolume_mL + totalLeftVolume_mL; + + RightSuperiorLobeApicalPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapRight, PressureUnit::mmHg); + RightSuperiorLobePosteriorPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapRight, PressureUnit::mmHg); + RightSuperiorLobeAnteriorPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapRight, PressureUnit::mmHg); + RightMiddleLobeLateralPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapRight, PressureUnit::mmHg); + RightMiddleLobeMedialPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapRight, PressureUnit::mmHg); + RightInferiorLobeSuperiorPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapRight, PressureUnit::mmHg); + RightInferiorLobeMedialBasalPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapRight, PressureUnit::mmHg); + RightInferiorLobeAnteriorBasalPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapRight, PressureUnit::mmHg); + RightInferiorLobeLateralBasalPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapRight, PressureUnit::mmHg); + RightInferiorLobePosteriorBasalPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapRight, PressureUnit::mmHg); + + LeftInferiorLobePosteriorBasalPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapLeft, PressureUnit::mmHg); + LeftInferiorLobeLateralBasalPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapLeft, PressureUnit::mmHg); + LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapLeft, PressureUnit::mmHg); + LeftInferiorLobeSuperiorPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapLeft, PressureUnit::mmHg); + LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapLeft, PressureUnit::mmHg); + LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapLeft, PressureUnit::mmHg); + LeftSuperiorLobeAnteriorPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapLeft, PressureUnit::mmHg); + LeftSuperiorLobeApicoposteriorPulmonaryCapillaries.GetPressure().SetValue(VascularPressureTargetPulmCapLeft, PressureUnit::mmHg); + + // Create Paths, set switch (diodes), compliances, and resistances where appropriate + SEFluidCircuitPath& VenaCava1ToRightHeart2 = cCardiovascular.CreatePath(VenaCava1, RightHeart2, pulse::CardiovascularPath::VenaCava1ToRightHeart2); + VenaCava1ToRightHeart2.GetResistanceBaseline().SetValue(ResistanceHeartRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& RightHeart2ToRightHeart1 = cCardiovascular.CreatePath(RightHeart2, RightHeart1, pulse::CardiovascularPath::RightHeart2ToRightHeart1); + RightHeart2ToRightHeart1.SetNextValve(eGate::Closed); + SEFluidCircuitPath& RightHeart1ToRightHeart3 = cCardiovascular.CreatePath(RightHeart1, RightHeart3, pulse::CardiovascularPath::RightHeart1ToRightHeart3); + SEFluidCircuitPath& RightHeart3ToGround = cCardiovascular.CreatePath(Ground, RightHeart3, pulse::CardiovascularPath::RightHeart3ToGround); + RightHeart3ToGround.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); + + SEFluidCircuitPath& RightHeart1ToMainPulmonaryArteries1 = cCardiovascular.CreatePath(RightHeart1, MainPulmonaryArteries1, pulse::CardiovascularPath::RightHeart1ToMainPulmonaryArteries1); + RightHeart1ToMainPulmonaryArteries1.SetNextValve(eGate::Closed); + + SEFluidCircuitPath& MainPulmonaryArteries1ToRightIntermediatePulmonaryArteries1 = cCardiovascular.CreatePath(MainPulmonaryArteries1, RightIntermediatePulmonaryArteries1, pulse::CardiovascularPath::MainPulmonaryArteries1ToRightIntermediatePulmonaryArteries1); + //MainPulmonaryArteries1ToRightIntermediatePulmonaryArteries1.SetNextValve(eGate::Closed); + SEFluidCircuitPath& RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1 = cCardiovascular.CreatePath(RightIntermediatePulmonaryArteries1, RightPulmonaryArteries1, pulse::CardiovascularPath::RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1); + RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1.GetResistanceBaseline().SetValue(ResistancePulmArt, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + //SEFluidCircuitPath& RightPulmonaryArteries1ToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryVeins1); + //RightPulmonaryArteries1ToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + //SEFluidCircuitPath& RightPulmonaryArteries1ToRightPulmonaryCapillaries1 = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryCapillaries1, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryCapillaries1); + //RightPulmonaryArteries1ToRightPulmonaryCapillaries1.GetResistanceBaseline().SetValue(ResistancePulmCapRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& RightPulmonaryArteries1ToGround = cCardiovascular.CreatePath(RightPulmonaryArteries1, Ground, pulse::CardiovascularPath::RightPulmonaryArteries1ToGround); + RightPulmonaryArteries1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + //SEFluidCircuitPath& RightPulmonaryCapillaries1ToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightPulmonaryCapillaries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightPulmonaryCapillaries1ToRightPulmonaryVeins1); + //RightPulmonaryCapillaries1ToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistancePulmVeinsRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + //SEFluidCircuitPath& RightPulmonaryCapillaries1ToGround = cCardiovascular.CreatePath(RightPulmonaryCapillaries1, Ground, pulse::CardiovascularPath::RightPulmonaryCapillaries1ToGround); + //RightPulmonaryCapillaries1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + + SEFluidCircuitPath& RightPulmonaryVeins1ToRightIntermediatePulmonaryVeins1 = cCardiovascular.CreatePath(RightPulmonaryVeins1, RightIntermediatePulmonaryVeins1, pulse::CardiovascularPath::RightPulmonaryVeins1ToRightIntermediatePulmonaryVeins1); + RightPulmonaryVeins1ToRightIntermediatePulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceHeartLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& RightPulmonaryVeins1ToGround = cCardiovascular.CreatePath(RightPulmonaryVeins1, Ground, pulse::CardiovascularPath::RightPulmonaryVeins1ToGround); + RightPulmonaryVeins1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& RightIntermediatePulmonaryVeins1ToLeftHeart2 = cCardiovascular.CreatePath(RightIntermediatePulmonaryVeins1, LeftHeart2, pulse::CardiovascularPath::RightIntermediatePulmonaryVeins1ToLeftHeart2); + //RightIntermediatePulmonaryVeins1ToLeftHeart2.SetNextValve(eGate::Closed); + + SEFluidCircuitPath& MainPulmonaryArteries1ToLeftIntermediatePulmonaryArteries1 = cCardiovascular.CreatePath(MainPulmonaryArteries1, LeftIntermediatePulmonaryArteries1, pulse::CardiovascularPath::MainPulmonaryArteries1ToLeftIntermediatePulmonaryArteries1); + //MainPulmonaryArteries1ToLeftIntermediatePulmonaryArteries1.SetNextValve(eGate::Closed); + SEFluidCircuitPath& LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1 = cCardiovascular.CreatePath(LeftIntermediatePulmonaryArteries1, LeftPulmonaryArteries1, pulse::CardiovascularPath::LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1); + LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1.GetResistanceBaseline().SetValue(ResistancePulmArt, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + //SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryVeins1); + //LeftPulmonaryArteries1ToLeftPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceShuntLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + //SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1 = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryCapillaries1, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1); + //LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1.GetResistanceBaseline().SetValue(ResistancePulmCapLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& LeftPulmonaryArteries1ToGround = cCardiovascular.CreatePath(LeftPulmonaryArteries1, Ground, pulse::CardiovascularPath::LeftPulmonaryArteries1ToGround); + LeftPulmonaryArteries1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + //SEFluidCircuitPath& LeftPulmonaryCapillaries1ToGround = cCardiovascular.CreatePath(LeftPulmonaryCapillaries1, Ground, pulse::CardiovascularPath::LeftPulmonaryCapillaries1ToGround); + //LeftPulmonaryCapillaries1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + //SEFluidCircuitPath& LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftPulmonaryCapillaries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1); + //LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistancePulmVeinsLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + SEFluidCircuitPath& LeftPulmonaryVeins1ToLeftIntermediatePulmonaryVeins1 = cCardiovascular.CreatePath(LeftPulmonaryVeins1, LeftIntermediatePulmonaryVeins1, pulse::CardiovascularPath::LeftPulmonaryVeins1ToLeftIntermediatePulmonaryVeins1); + LeftPulmonaryVeins1ToLeftIntermediatePulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceHeartLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& LeftPulmonaryVeins1ToGround = cCardiovascular.CreatePath(LeftPulmonaryVeins1, Ground, pulse::CardiovascularPath::LeftPulmonaryVeins1ToGround); + LeftPulmonaryVeins1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& LeftIntermediatePulmonaryVeins1ToLeftHeart2 = cCardiovascular.CreatePath(LeftIntermediatePulmonaryVeins1, LeftHeart2, pulse::CardiovascularPath::LeftIntermediatePulmonaryVeins1ToLeftHeart2); + //LeftIntermediatePulmonaryVeins1ToLeftHeart2.SetNextValve(eGate::Closed); + SEFluidCircuitPath& LeftHeart2ToLeftHeart1 = cCardiovascular.CreatePath(LeftHeart2, LeftHeart1, pulse::CardiovascularPath::LeftHeart2ToLeftHeart1); + LeftHeart2ToLeftHeart1.SetNextValve(eGate::Closed); + SEFluidCircuitPath& LeftHeart1ToLeftHeart3 = cCardiovascular.CreatePath(LeftHeart1, LeftHeart3, pulse::CardiovascularPath::LeftHeart1ToLeftHeart3); + + SEFluidCircuitPath& LeftHeart3ToGround = cCardiovascular.CreatePath(Ground, LeftHeart3, pulse::CardiovascularPath::LeftHeart3ToGround); + LeftHeart3ToGround.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); + SEFluidCircuitPath& LeftHeart1ToAorta2 = cCardiovascular.CreatePath(LeftHeart1, Aorta2, pulse::CardiovascularPath::LeftHeart1ToAorta2); + LeftHeart1ToAorta2.SetNextValve(eGate::Closed); + cCardiovascular.CreatePath(Aorta2, Aorta3, pulse::CardiovascularPath::Aorta2ToAorta3); + SEFluidCircuitPath& Aorta3ToAorta1 = cCardiovascular.CreatePath(Aorta3, Aorta1, pulse::CardiovascularPath::Aorta3ToAorta1); + Aorta3ToAorta1.GetResistanceBaseline().SetValue(ResistanceAorta, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Aorta1ToAorta4 = cCardiovascular.CreatePath(Aorta1, Aorta4, pulse::CardiovascularPath::Aorta1ToAorta4); + Aorta1ToAorta4.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + + SEFluidCircuitPath& Aorta1ToBrain1 = cCardiovascular.CreatePath(Aorta1, Brain1, pulse::CardiovascularPath::Aorta1ToBrain1); + Aorta1ToBrain1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceBrain, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Brain1ToGround = cCardiovascular.CreatePath(Brain1, Ground, pulse::CardiovascularPath::Brain1ToGround); + Brain1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + /*SEFluidCircuitPath& GroundToBrain1 = cCardiovascular.CreatePath(Ground, Brain1, pulse::CardiovascularPath::GroundToBrain1); + GroundToBrain1.GetPressureSourceBaseline().SetValue(1.0, PressureUnit::mmHg);*/ + SEFluidCircuitPath& Brain1ToBrain2 = cCardiovascular.CreatePath(Brain1, Brain2, pulse::CardiovascularPath::Brain1ToBrain2); + Brain1ToBrain2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceBrainVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Brain2ToVenaCava1 = cCardiovascular.CreatePath(Brain2, VenaCava1, pulse::CardiovascularPath::Brain2ToVenaCava1); + + SEFluidCircuitPath& Aorta1ToBone1 = cCardiovascular.CreatePath(Aorta1, Bone1, pulse::CardiovascularPath::Aorta1ToBone1); + Aorta1ToBone1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceBone, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Bone1ToGround = cCardiovascular.CreatePath(Bone1, Ground, pulse::CardiovascularPath::Bone1ToGround); + Bone1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& Bone1ToBone2 = cCardiovascular.CreatePath(Bone1, Bone2, pulse::CardiovascularPath::Bone1ToBone2); + Bone1ToBone2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceBoneVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Bone2ToVenaCava1 = cCardiovascular.CreatePath(Bone2, VenaCava1, pulse::CardiovascularPath::Bone2ToVenaCava1); + + SEFluidCircuitPath& Aorta1ToFat1 = cCardiovascular.CreatePath(Aorta1, Fat1, pulse::CardiovascularPath::Aorta1ToFat1); + Aorta1ToFat1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceFat, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Fat1ToGround = cCardiovascular.CreatePath(Fat1, Ground, pulse::CardiovascularPath::Fat1ToGround); + Fat1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& Fat1ToFat2 = cCardiovascular.CreatePath(Fat1, Fat2, pulse::CardiovascularPath::Fat1ToFat2); + Fat1ToFat2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceFatVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Fat2ToVenaCava1 = cCardiovascular.CreatePath(Fat2, VenaCava1, pulse::CardiovascularPath::Fat2ToVenaCava1); + + SEFluidCircuitPath& Aorta1ToLargeIntestine1 = cCardiovascular.CreatePath(Aorta1, LargeIntestine1, pulse::CardiovascularPath::Aorta1ToLargeIntestine1); + Aorta1ToLargeIntestine1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLargeIntestine, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& LargeIntestine1ToGround = cCardiovascular.CreatePath(LargeIntestine1, Ground, pulse::CardiovascularPath::LargeIntestine1ToGround); + LargeIntestine1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& LargeIntestine1ToPortalVein1 = cCardiovascular.CreatePath(LargeIntestine1, PortalVein1, pulse::CardiovascularPath::LargeIntestine1ToPortalVein1); + LargeIntestine1ToPortalVein1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLargeIntestineVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + SEFluidCircuitPath& Aorta1ToLeftArm1 = cCardiovascular.CreatePath(Aorta1, LeftArm1, pulse::CardiovascularPath::Aorta1ToLeftArm1); + Aorta1ToLeftArm1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArm, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& LeftArm1ToGround = cCardiovascular.CreatePath(LeftArm1, Ground, pulse::CardiovascularPath::LeftArm1ToGround); + LeftArm1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& LeftArm1ToLeftArm2 = cCardiovascular.CreatePath(LeftArm1, LeftArm2, pulse::CardiovascularPath::LeftArm1ToLeftArm2); + LeftArm1ToLeftArm2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& LeftArm2ToVenaCava1 = cCardiovascular.CreatePath(LeftArm2, VenaCava1, pulse::CardiovascularPath::LeftArm2ToVenaCava1); + + SEFluidCircuitPath& Aorta1ToLeftKidney1 = cCardiovascular.CreatePath(Aorta1, LeftKidney1, pulse::CardiovascularPath::Aorta1ToLeftKidney1); + Aorta1ToLeftKidney1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceKidney, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& LeftKidney1ToGround = cCardiovascular.CreatePath(LeftKidney1, Ground, pulse::CardiovascularPath::LeftKidney1ToGround); + LeftKidney1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& LeftKidney1ToLeftKidney2 = cCardiovascular.CreatePath(LeftKidney1, LeftKidney2, pulse::CardiovascularPath::LeftKidney1ToLeftKidney2); + LeftKidney1ToLeftKidney2.GetResistanceBaseline().SetValue(ResistanceKidneyVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& LeftKidney2ToVenaCava1 = cCardiovascular.CreatePath(LeftKidney2, VenaCava1, pulse::CardiovascularPath::LeftKidney2ToVenaCava1); + + SEFluidCircuitPath& Aorta1ToLeftLeg1 = cCardiovascular.CreatePath(Aorta1, LeftLeg1, pulse::CardiovascularPath::Aorta1ToLeftLeg1); + Aorta1ToLeftLeg1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLeg, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& LeftLeg1ToGround = cCardiovascular.CreatePath(LeftLeg1, Ground, pulse::CardiovascularPath::LeftLeg1ToGround); + LeftLeg1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& LeftLeg1ToLeftLeg2 = cCardiovascular.CreatePath(LeftLeg1, LeftLeg2, pulse::CardiovascularPath::LeftLeg1ToLeftLeg2); + LeftLeg1ToLeftLeg2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& LeftLeg2ToVenaCava1 = cCardiovascular.CreatePath(LeftLeg2, VenaCava1, pulse::CardiovascularPath::LeftLeg2ToVenaCava1); + + SEFluidCircuitPath& Aorta1ToLiver1 = cCardiovascular.CreatePath(Aorta1, Liver1, pulse::CardiovascularPath::Aorta1ToLiver1); + Aorta1ToLiver1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLiver, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Liver1ToGround = cCardiovascular.CreatePath(Liver1, Ground, pulse::CardiovascularPath::Liver1ToGround); + Liver1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& PortalVein1ToLiver1 = cCardiovascular.CreatePath(PortalVein1, Liver1, pulse::CardiovascularPath::PortalVein1ToLiver1); + PortalVein1ToLiver1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistancePortalVein, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Liver1ToLiver2 = cCardiovascular.CreatePath(Liver1, Liver2, pulse::CardiovascularPath::Liver1ToLiver2); + Liver1ToLiver2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLiverVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Liver2ToVenaCava1 = cCardiovascular.CreatePath(Liver2, VenaCava1, pulse::CardiovascularPath::Liver2ToVenaCava1); + + SEFluidCircuitPath& Aorta1ToMuscle1 = cCardiovascular.CreatePath(Aorta1, Muscle1, pulse::CardiovascularPath::Aorta1ToMuscle1); + Aorta1ToMuscle1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceMuscle, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Muscle1ToGround = cCardiovascular.CreatePath(Muscle1, Ground, pulse::CardiovascularPath::Muscle1ToGround); + Muscle1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& Muscle1ToMuscle2 = cCardiovascular.CreatePath(Muscle1, Muscle2, pulse::CardiovascularPath::Muscle1ToMuscle2); + Muscle1ToMuscle2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceMuscleVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Muscle2ToVenaCava1 = cCardiovascular.CreatePath(Muscle2, VenaCava1, pulse::CardiovascularPath::Muscle2ToVenaCava1); + + SEFluidCircuitPath& Aorta1ToMyocardium1 = cCardiovascular.CreatePath(Aorta1, Myocardium1, pulse::CardiovascularPath::Aorta1ToMyocardium1); + Aorta1ToMyocardium1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceMyocardium, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Myocardium1ToGround = cCardiovascular.CreatePath(Myocardium1, Ground, pulse::CardiovascularPath::Myocardium1ToGround); + Myocardium1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& Myocardium1ToMyocardium2 = cCardiovascular.CreatePath(Myocardium1, Myocardium2, pulse::CardiovascularPath::Myocardium1ToMyocardium2); + Myocardium1ToMyocardium2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceMyocardiumVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Myocardium2ToVenaCava1 = cCardiovascular.CreatePath(Myocardium2, VenaCava1, pulse::CardiovascularPath::Myocardium2ToVenaCava1); + + SEFluidCircuitPath& PericardiumToGround = cCardiovascular.CreatePath(Pericardium, Ground, pulse::CardiovascularPath::Pericardium1ToGround); + SEFluidCircuitPath& GroundToPericardium = cCardiovascular.CreatePath(Ground, Pericardium, pulse::CardiovascularPath::GroundToPericardium1); + GroundToPericardium.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); + + SEFluidCircuitPath& Aorta1ToRightArm1 = cCardiovascular.CreatePath(Aorta1, RightArm1, pulse::CardiovascularPath::Aorta1ToRightArm1); + Aorta1ToRightArm1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArm, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& RightArm1ToGround = cCardiovascular.CreatePath(RightArm1, Ground, pulse::CardiovascularPath::RightArm1ToGround); + RightArm1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& RightArm1ToRightArm2 = cCardiovascular.CreatePath(RightArm1, RightArm2, pulse::CardiovascularPath::RightArm1ToRightArm2); + RightArm1ToRightArm2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& RightArm2ToVenaCava1 = cCardiovascular.CreatePath(RightArm2, VenaCava1, pulse::CardiovascularPath::RightArm2ToVenaCava1); + + SEFluidCircuitPath& Aorta1ToRightKidney1 = cCardiovascular.CreatePath(Aorta1, RightKidney1, pulse::CardiovascularPath::Aorta1ToRightKidney1); + Aorta1ToRightKidney1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceKidney, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& RightKidney1ToGround = cCardiovascular.CreatePath(RightKidney1, Ground, pulse::CardiovascularPath::RightKidney1ToGround); + RightKidney1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& RightKidney1ToRightKidney2 = cCardiovascular.CreatePath(RightKidney1, RightKidney2, pulse::CardiovascularPath::RightKidney1ToRightKidney2); + RightKidney1ToRightKidney2.GetResistanceBaseline().SetValue(ResistanceKidneyVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& RightKidney2ToVenaCava1 = cCardiovascular.CreatePath(RightKidney2, VenaCava1, pulse::CardiovascularPath::RightKidney2ToVenaCava1); + + SEFluidCircuitPath& Aorta1ToRightLeg1 = cCardiovascular.CreatePath(Aorta1, RightLeg1, pulse::CardiovascularPath::Aorta1ToRightLeg1); + Aorta1ToRightLeg1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLeg, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& RightLeg1ToGround = cCardiovascular.CreatePath(RightLeg1, Ground, pulse::CardiovascularPath::RightLeg1ToGround); + RightLeg1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& RightLeg1ToRightLeg2 = cCardiovascular.CreatePath(RightLeg1, RightLeg2, pulse::CardiovascularPath::RightLeg1ToRightLeg2); + RightLeg1ToRightLeg2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& RightLeg2ToVenaCava1 = cCardiovascular.CreatePath(RightLeg2, VenaCava1, pulse::CardiovascularPath::RightLeg2ToVenaCava1); + + SEFluidCircuitPath& Aorta1ToSkin1 = cCardiovascular.CreatePath(Aorta1, Skin1, pulse::CardiovascularPath::Aorta1ToSkin1); + Aorta1ToSkin1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSkin, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Skin1ToGround = cCardiovascular.CreatePath(Skin1, Ground, pulse::CardiovascularPath::Skin1ToGround); + Skin1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& Skin1ToSkin2 = cCardiovascular.CreatePath(Skin1, Skin2, pulse::CardiovascularPath::Skin1ToSkin2); + Skin1ToSkin2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSkinVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Skin2ToVenaCava1 = cCardiovascular.CreatePath(Skin2, VenaCava1, pulse::CardiovascularPath::Skin2ToVenaCava1); + + SEFluidCircuitPath& Aorta1ToSmallIntestine1 = cCardiovascular.CreatePath(Aorta1, SmallIntestine1, pulse::CardiovascularPath::Aorta1ToSmallIntestine1); + Aorta1ToSmallIntestine1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSmallIntestine, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& SmallIntestine1ToGround = cCardiovascular.CreatePath(SmallIntestine1, Ground, pulse::CardiovascularPath::SmallIntestine1ToGround); + SmallIntestine1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& SmallIntestine1ToPortalVein1 = cCardiovascular.CreatePath(SmallIntestine1, PortalVein1, pulse::CardiovascularPath::SmallIntestine1ToPortalVein1); + SmallIntestine1ToPortalVein1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSmallIntestineVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + SEFluidCircuitPath& Aorta1ToSplanchnic1 = cCardiovascular.CreatePath(Aorta1, Splanchnic1, pulse::CardiovascularPath::Aorta1ToSplanchnic1); + Aorta1ToSplanchnic1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSplanchnic, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Splanchnic1ToGround = cCardiovascular.CreatePath(Splanchnic1, Ground, pulse::CardiovascularPath::Splanchnic1ToGround); + Splanchnic1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& SplanchnicToPortalVein = cCardiovascular.CreatePath(Splanchnic1, PortalVein1, pulse::CardiovascularPath::Splanchnic1ToPortalVein1); + SplanchnicToPortalVein.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSplanchnicVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + SEFluidCircuitPath& Aorta1ToSpleen1 = cCardiovascular.CreatePath(Aorta1, Spleen1, pulse::CardiovascularPath::Aorta1ToSpleen1); + Aorta1ToSpleen1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSpleen, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + SEFluidCircuitPath& Spleen1ToGround = cCardiovascular.CreatePath(Spleen1, Ground, pulse::CardiovascularPath::Spleen1ToGround); + Spleen1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& Spleen1ToPortalVein1 = cCardiovascular.CreatePath(Spleen1, PortalVein1, pulse::CardiovascularPath::Spleen1ToPortalVein1); + Spleen1ToPortalVein1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSpleenVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + SEFluidCircuitPath& AbdominalCavityToGround = cCardiovascular.CreatePath(AbdominalCavity, Ground, pulse::CardiovascularPath::AbdominalCavity1ToGround); + SEFluidCircuitPath& GroundToAbdominalCavity = cCardiovascular.CreatePath(Ground, AbdominalCavity, pulse::CardiovascularPath::GroundToAbdominalCavity1); + GroundToAbdominalCavity.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); + + SEFluidCircuitPath& GroundToAorta4 = cCardiovascular.CreatePath(Ground, Aorta4, pulse::CardiovascularPath::GroundToAorta4); + GroundToAorta4.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); + + SEFluidCircuitPath& VenaCava1ToGround = cCardiovascular.CreatePath(VenaCava1, Ground, pulse::CardiovascularPath::VenaCava1ToGround); + VenaCava1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + SEFluidCircuitPath& IVToVenaCava1 = cCardiovascular.CreatePath(Ground, VenaCava1, pulse::CardiovascularPath::IVToVenaCava1); + IVToVenaCava1.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); + + SEFluidCircuitPath& RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightSuperiorLobeApicalPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightSuperiorLobePosteriorPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightSuperiorLobeAnteriorPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightMiddleLobeLateralPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightMiddleLobeMedialPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobeSuperiorPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobeMedialBasalPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobeAnteriorBasalPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobeLateralBasalPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobePosteriorBasalPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries); + + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftInferiorLobePosteriorBasalPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftInferiorLobeLateralBasalPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftInferiorLobeSuperiorPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftSuperiorLobeAnteriorPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftSuperiorLobeApicoposteriorPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + SEFluidCircuitPath& RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightSuperiorLobeApicalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightSuperiorLobePosteriorPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightSuperiorLobeAnteriorPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightMiddleLobeLateralPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightMiddleLobeMedialPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobeSuperiorPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobeMedialBasalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobeAnteriorBasalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobeLateralBasalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobePosteriorBasalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1); + + SEFluidCircuitPath& LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftInferiorLobePosteriorBasalPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftInferiorLobeLateralBasalPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftInferiorLobeSuperiorPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftSuperiorLobeAnteriorPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1); + + SEFluidCircuitPath& RightSuperiorLobeApicalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightSuperiorLobeApicalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightSuperiorLobePosteriorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightSuperiorLobePosteriorPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightSuperiorLobeAnteriorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightSuperiorLobeAnteriorPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightMiddleLobeLateralPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightMiddleLobeLateralPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightMiddleLobeMedialPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightMiddleLobeMedialPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightInferiorLobeSuperiorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobeSuperiorPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightInferiorLobeMedialBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobeMedialBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobeAnteriorBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightInferiorLobeLateralBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobeLateralBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobePosteriorBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround); + + SEFluidCircuitPath& LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftInferiorLobePosteriorBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftInferiorLobeLateralBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftInferiorLobeSuperiorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftInferiorLobeSuperiorPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftSuperiorLobeAnteriorPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround); + + RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceRightSuperiorLobeApicalPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceRightSuperiorLobePosteriorPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceRightSuperiorLobeAnteriorPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceRightMiddleLobeLateralPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceRightMiddleLobeMedialPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceRightInferiorLobeSuperiorPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceRightInferiorLobeMedialBasalPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceRightInferiorLobeAnteriorBasalPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceRightInferiorLobeLateralBasalPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceRightInferiorLobePosteriorBasalPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceLeftInferiorLobePosteriorBasalPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceLeftInferiorLobeLateralBasalPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceLeftInferiorLobeSuperiorPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceLeftSuperiorLobeAnteriorPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceLeftSuperiorLobeApicoposteriorPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceRightSuperiorLobeApicalPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceRightSuperiorLobePosteriorPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceRightSuperiorLobeAnteriorPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceRightMiddleLobeLateralPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceRightMiddleLobeMedialPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceRightInferiorLobeSuperiorPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceRightInferiorLobeMedialBasalPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceRightInferiorLobeAnteriorBasalPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceRightInferiorLobeLateralBasalPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceRightInferiorLobePosteriorBasalPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceLeftInferiorLobePosteriorBasalPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceLeftInferiorLobeLateralBasalPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceLeftInferiorLobeAnteromedialBasalPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceLeftInferiorLobeSuperiorPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceLeftSuperiorLobeInferiorLingulaPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceLeftSuperiorLobeSuperiorLingulaPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceLeftSuperiorLobeAnteriorPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceLeftSuperiorLobeApicoposteriorPulmonaryVeins, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + RightSuperiorLobeApicalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + RightSuperiorLobePosteriorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + RightSuperiorLobeAnteriorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + RightMiddleLobeLateralPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + RightMiddleLobeMedialPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + RightInferiorLobeSuperiorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + RightInferiorLobeMedialBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + RightInferiorLobeLateralBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + + LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + LeftInferiorLobeSuperiorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); + + //Shunts + SEFluidCircuitPath& RightSuperiorLobeApicalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightSuperiorLobeApicalShunt); + SEFluidCircuitPath& RightSuperiorLobePosteriorShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightSuperiorLobePosteriorShunt); + SEFluidCircuitPath& RightSuperiorLobeAnteriorShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightSuperiorLobeAnteriorShunt); + SEFluidCircuitPath& RightMiddleLobeLateralShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightMiddleLobeLateralShunt); + SEFluidCircuitPath& RightMiddleLobeMedialShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightMiddleLobeMedialShunt); + SEFluidCircuitPath& RightInferiorLobeSuperiorShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeSuperiorShunt); + SEFluidCircuitPath& RightInferiorLobeMedialBasalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeMedialBasalShunt); + SEFluidCircuitPath& RightInferiorLobeAnteriorBasalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalShunt); + SEFluidCircuitPath& RightInferiorLobeLateralBasalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeLateralBasalShunt); + SEFluidCircuitPath& RightInferiorLobePosteriorBasalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobePosteriorBasalShunt); + + SEFluidCircuitPath& LeftInferiorLobePosteriorBasalShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalShunt); + SEFluidCircuitPath& LeftInferiorLobeLateralBasalShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobeLateralBasalShunt); + SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt); + SEFluidCircuitPath& LeftInferiorLobeSuperiorShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobeSuperiorShunt); + SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt); + SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt); + SEFluidCircuitPath& LeftSuperiorLobeAnteriorShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeAnteriorShunt); + SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorShunt); + + RightSuperiorLobeApicalShunt.GetResistanceBaseline().SetValue(10.0 * ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightSuperiorLobePosteriorShunt.GetResistanceBaseline().SetValue(10.0 * ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightSuperiorLobeAnteriorShunt.GetResistanceBaseline().SetValue(10.0 * ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightMiddleLobeLateralShunt.GetResistanceBaseline().SetValue(10.0 * ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightMiddleLobeMedialShunt.GetResistanceBaseline().SetValue(10.0 * ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightInferiorLobeSuperiorShunt.GetResistanceBaseline().SetValue(10.0 * ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightInferiorLobeMedialBasalShunt.GetResistanceBaseline().SetValue(10.0 * ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightInferiorLobeAnteriorBasalShunt.GetResistanceBaseline().SetValue(10.0 * ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightInferiorLobeLateralBasalShunt.GetResistanceBaseline().SetValue(10.0 * ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + RightInferiorLobePosteriorBasalShunt.GetResistanceBaseline().SetValue(10.0 * ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + LeftInferiorLobePosteriorBasalShunt.GetResistanceBaseline().SetValue(8.0 * ResistanceShuntLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftInferiorLobeLateralBasalShunt.GetResistanceBaseline().SetValue(8.0 * ResistanceShuntLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftInferiorLobeAnteromedialBasalShunt.GetResistanceBaseline().SetValue(8.0 * ResistanceShuntLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftInferiorLobeSuperiorShunt.GetResistanceBaseline().SetValue(8.0 * ResistanceShuntLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftSuperiorLobeInferiorLingulaShunt.GetResistanceBaseline().SetValue(8.0 * ResistanceShuntLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftSuperiorLobeSuperiorLingulaShunt.GetResistanceBaseline().SetValue(8.0 * ResistanceShuntLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftSuperiorLobeAnteriorShunt.GetResistanceBaseline().SetValue(8.0 * ResistanceShuntLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + LeftSuperiorLobeApicoposteriorShunt.GetResistanceBaseline().SetValue(8.0 * ResistanceShuntLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); + + // Compute compliances from target pressures and baseline volumes + for (SEFluidCircuitPath* p : cCardiovascular.GetPaths()) + { + if (p->HasComplianceBaseline()) + { + SEFluidCircuitNode& src = p->GetSourceNode(); + if (!src.HasVolumeBaseline()) + Fatal("Compliance paths must have a volume baseline."); + double pressure = src.GetPressure(PressureUnit::mmHg); + double volume = src.GetVolumeBaseline(VolumeUnit::mL); + p->GetComplianceBaseline().SetValue(volume / pressure, VolumePerPressureUnit::mL_Per_mmHg); + } + } + + // Calibrate compliance for expanded components + RightSuperiorLobeApicalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(RightSuperiorLobeApicalPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + RightSuperiorLobePosteriorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(RightSuperiorLobePosteriorPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + RightSuperiorLobeAnteriorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(RightSuperiorLobeAnteriorPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + RightMiddleLobeLateralPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(RightMiddleLobeLateralPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + RightMiddleLobeMedialPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(RightMiddleLobeMedialPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + RightInferiorLobeSuperiorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(RightInferiorLobeSuperiorPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + RightInferiorLobeMedialBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(RightInferiorLobeMedialBasalPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + RightInferiorLobeLateralBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(RightInferiorLobeLateralBasalPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + + LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + LeftInferiorLobeSuperiorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(LeftInferiorLobeSuperiorPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg) * expandedPulmonaryCapillariesComplianceModifier, VolumePerPressureUnit::mL_Per_mmHg); + + // Calibrate volume for expanded components + RightSuperiorLobeApicalPulmonaryCapillaries.GetVolumeBaseline().SetValue(RightSuperiorLobeApicalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryRightCapillariesVolumeModifier, VolumeUnit::mL); + RightSuperiorLobePosteriorPulmonaryCapillaries.GetVolumeBaseline().SetValue(RightSuperiorLobePosteriorPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryRightCapillariesVolumeModifier, VolumeUnit::mL); + RightSuperiorLobeAnteriorPulmonaryCapillaries.GetVolumeBaseline().SetValue(RightSuperiorLobeAnteriorPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryRightCapillariesVolumeModifier, VolumeUnit::mL); + RightMiddleLobeLateralPulmonaryCapillaries.GetVolumeBaseline().SetValue(RightMiddleLobeLateralPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryRightCapillariesVolumeModifier, VolumeUnit::mL); + RightMiddleLobeMedialPulmonaryCapillaries.GetVolumeBaseline().SetValue(RightMiddleLobeMedialPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryRightCapillariesVolumeModifier, VolumeUnit::mL); + RightInferiorLobeSuperiorPulmonaryCapillaries.GetVolumeBaseline().SetValue(RightInferiorLobeSuperiorPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryRightCapillariesVolumeModifier, VolumeUnit::mL); + RightInferiorLobeMedialBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(RightInferiorLobeMedialBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryRightCapillariesVolumeModifier, VolumeUnit::mL); + RightInferiorLobeAnteriorBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(RightInferiorLobeAnteriorBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryRightCapillariesVolumeModifier, VolumeUnit::mL); + RightInferiorLobeLateralBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(RightInferiorLobeLateralBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryRightCapillariesVolumeModifier, VolumeUnit::mL); + RightInferiorLobePosteriorBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(RightInferiorLobePosteriorBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryRightCapillariesVolumeModifier, VolumeUnit::mL); + + LeftInferiorLobePosteriorBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(LeftInferiorLobePosteriorBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryLeftCapillariesVolumeModifier, VolumeUnit::mL); + LeftInferiorLobeLateralBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(LeftInferiorLobeLateralBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryLeftCapillariesVolumeModifier, VolumeUnit::mL); + LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries.GetVolumeBaseline().SetValue(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryLeftCapillariesVolumeModifier, VolumeUnit::mL); + LeftInferiorLobeSuperiorPulmonaryCapillaries.GetVolumeBaseline().SetValue(LeftInferiorLobeSuperiorPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryLeftCapillariesVolumeModifier, VolumeUnit::mL); + LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries.GetVolumeBaseline().SetValue(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryLeftCapillariesVolumeModifier, VolumeUnit::mL); + LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries.GetVolumeBaseline().SetValue(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryLeftCapillariesVolumeModifier, VolumeUnit::mL); + LeftSuperiorLobeAnteriorPulmonaryCapillaries.GetVolumeBaseline().SetValue(LeftSuperiorLobeAnteriorPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryLeftCapillariesVolumeModifier, VolumeUnit::mL); + LeftSuperiorLobeApicoposteriorPulmonaryCapillaries.GetVolumeBaseline().SetValue(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries.GetVolumeBaseline(VolumeUnit::mL) * expandedPulmonaryLeftCapillariesVolumeModifier, VolumeUnit::mL); + + // Hearts and pericardium have special compliance computations + double InitialComplianceHeartRight = 1.0 / 0.0243; + double InitialComplianceHeartLeft = 1.0 / 0.049; + // Volumes are initialized from the volume baselines. The heart volume initialization is a little tricky. To much prime and the + // initial pressure wave will be devastating to the rest of the CV system during the first contraction phase. Too little prime + // and there will be issues with available flow as the elastance decreases during the first relaxation phase. + // The 1/4 full initialization gives decent results. + RightHeart1ToRightHeart3.GetComplianceBaseline().SetValue(InitialComplianceHeartRight, VolumePerPressureUnit::mL_Per_mmHg); + LeftHeart1ToLeftHeart3.GetComplianceBaseline().SetValue(InitialComplianceHeartLeft, VolumePerPressureUnit::mL_Per_mmHg); + PericardiumToGround.GetComplianceBaseline().SetValue(100.0, VolumePerPressureUnit::mL_Per_mmHg); + + //Make these polarized, so chest compression can't give a negative volume + RightHeart1ToRightHeart3.SetNextPolarizedState(eGate::Closed); + LeftHeart1ToLeftHeart3.SetNextPolarizedState(eGate::Closed); + + double VolumeModifierAorta = 1.16722 * 1.018749, VolumeModifierBrain = 0.998011 * 1.038409, VolumeModifierBone = 1.175574 * 0.985629, VolumeModifierFat = 1.175573 * 0.986527; + double VolumeModifierLargeIntestine = 1.17528 * 0.985609, VolumeModifierArmL = 1.175573 * 0.986529, VolumeModifierKidneyL = 0.737649 * 0.954339, VolumeModifierLegL = 1.175573 * 0.986529; + double VolumeModifierPulmArtL = 0.855566 * 1.095697, VolumeModifierPulmCapL = 0.724704 * 1.079139, VolumeModifierPulmVeinL = 0.548452 * 1.056844 * 1.062, VolumeModifierLiver = 1.157475 * 0.991848; + double VolumeModifierMuscle = 1.175573 * 0.986529, VolumeModifierMyocard = 1.175564 * 0.986531, VolumeModifierArmR = 1.175573 * 0.986529, VolumeModifierKidneyR = 0.737649 * 0.954339; + double VolumeModifierLegR = 1.175573 * 0.986529, VolumeModifierPulmArtR = 0.756158 * 1.121167, VolumeModifierPulmCapR = 0.602545 * 1.118213, VolumeModifierPulmVeinR = 0.395656 * 1.11424 * 1.11; + double VolumeModifierSkin = 1.007306 * 1.035695, VolumeModifierSmallIntestine = 1.17528 * 0.986509, VolumeModifierSplanchnic = 1.17528 * 0.986509, VolumeModifierSpleen = 1.17528 * 0.986509; + double VolumeModifierVenaCava = 0.66932 * 1.134447; + + //And also modify the compliances + Aorta1ToAorta4.GetComplianceBaseline().SetValue(largeArteriesComplianceModifier * Aorta1ToAorta4.GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg), VolumePerPressureUnit::mL_Per_mmHg); + + //For Internal Hemorrhage + AbdominalCavityToGround.GetComplianceBaseline().SetValue(100.0, VolumePerPressureUnit::mL_Per_mmHg); + + RightPulmonaryArteries1.GetVolumeBaseline().SetValue(VolumeModifierPulmArtR * RightPulmonaryArteries1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + LeftPulmonaryArteries1.GetVolumeBaseline().SetValue(VolumeModifierPulmArtL * LeftPulmonaryArteries1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + //RightPulmonaryCapillaries1.GetVolumeBaseline().SetValue(VolumeModifierPulmCapR * RightPulmonaryCapillaries1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + //LeftPulmonaryCapillaries1.GetVolumeBaseline().SetValue(VolumeModifierPulmCapL * LeftPulmonaryCapillaries1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + RightPulmonaryVeins1.GetVolumeBaseline().SetValue(VolumeModifierPulmVeinR * RightPulmonaryVeins1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + LeftPulmonaryVeins1.GetVolumeBaseline().SetValue(VolumeModifierPulmVeinL * LeftPulmonaryVeins1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + Aorta1.GetVolumeBaseline().SetValue(VolumeModifierAorta * Aorta1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + Brain1.GetVolumeBaseline().SetValue(VolumeModifierBrain * Brain1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + Bone1.GetVolumeBaseline().SetValue(VolumeModifierBone * Bone1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + Fat1.GetVolumeBaseline().SetValue(VolumeModifierFat * Fat1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + LargeIntestine1.GetVolumeBaseline().SetValue(VolumeModifierLargeIntestine * LargeIntestine1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + Liver1.GetVolumeBaseline().SetValue(VolumeModifierLiver * Liver1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + LeftArm1.GetVolumeBaseline().SetValue(VolumeModifierArmL * LeftArm1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + LeftKidney1.GetVolumeBaseline().SetValue(VolumeModifierKidneyL * LeftKidney1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + LeftLeg1.GetVolumeBaseline().SetValue(VolumeModifierLegL * LeftLeg1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + Muscle1.GetVolumeBaseline().SetValue(VolumeModifierMuscle * Muscle1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + Myocardium1.GetVolumeBaseline().SetValue(VolumeModifierMyocard * Myocardium1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + RightArm1.GetVolumeBaseline().SetValue(VolumeModifierArmR * RightArm1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + RightKidney1.GetVolumeBaseline().SetValue(VolumeModifierKidneyR * RightKidney1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + RightLeg1.GetVolumeBaseline().SetValue(VolumeModifierLegR * RightLeg1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + Skin1.GetVolumeBaseline().SetValue(VolumeModifierSkin * Skin1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + SmallIntestine1.GetVolumeBaseline().SetValue(VolumeModifierSmallIntestine * SmallIntestine1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + Splanchnic1.GetVolumeBaseline().SetValue(VolumeModifierSplanchnic * Splanchnic1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + Spleen1.GetVolumeBaseline().SetValue(VolumeModifierSpleen * Spleen1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + VenaCava1.GetVolumeBaseline().SetValue(VolumeModifierVenaCava * VenaCava1.GetVolumeBaseline(VolumeUnit::mL), VolumeUnit::mL); + + // Prepare circuit for compartment creation + cCardiovascular.SetNextAndCurrentFromBaselines(); + cCardiovascular.StateChange(); + + SEFluidCircuit& cCombinedCardiovascular = m_Circuits->GetActiveCardiovascularCircuit(); + cCombinedCardiovascular.AddCircuit(cCardiovascular); + cCombinedCardiovascular.SetNextAndCurrentFromBaselines(); + cCombinedCardiovascular.StateChange(); + + ///////////////////////// + // Create Compartments // + ///////////////////////// + + ///////////////// + // Right Heart // + SELiquidCompartment& vRightHeart = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightHeart); + vRightHeart.MapNode(RightHeart1); + vRightHeart.MapNode(RightHeart2); + vRightHeart.MapNode(RightHeart3); + vRightHeart.MapNode(MainPulmonaryArteries1); + ////////////////////////////// + // Right Pulmonary Arteries // + SELiquidCompartment& vRightPulmonaryArteries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightPulmonaryArteries); + vRightPulmonaryArteries.MapNode(RightPulmonaryArteries1); + vRightPulmonaryArteries.MapNode(RightIntermediatePulmonaryArteries1); + ///////////////////////////// + // Left Pulmonary Arteries // + SELiquidCompartment& vLeftPulmonaryArteries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryArteries); + vLeftPulmonaryArteries.MapNode(LeftPulmonaryArteries1); + vLeftPulmonaryArteries.MapNode(LeftIntermediatePulmonaryArteries1); + //////////////////////// + // Pulmonary Arteries // + SELiquidCompartment& vPulmonaryArteries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::PulmonaryArteries); + vPulmonaryArteries.AddChild(vRightPulmonaryArteries); + vPulmonaryArteries.AddChild(vLeftPulmonaryArteries); + ///////////////////////////////// + // Right Pulmonary Capillaries // + //SELiquidCompartment& vRightPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightPulmonaryCapillaries); + //vRightPulmonaryCapillaries.MapNode(RightPulmonaryCapillaries1); + //////////////////////////////// + // Left Pulmonary Capillaries // + //SELiquidCompartment& vLeftPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryCapillaries); + //vLeftPulmonaryCapillaries.MapNode(LeftPulmonaryCapillaries1); + /////////////////////////// + // Pulmonary Capillaries // + //SELiquidCompartment& vPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::PulmonaryCapillaries); + //vPulmonaryCapillaries.AddChild(vRightPulmonaryCapillaries); + //vPulmonaryCapillaries.AddChild(vLeftPulmonaryCapillaries); + /////////////////////////// + // Right Pulmonary Veins // + SELiquidCompartment& vRightPulmonaryVeins = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightPulmonaryVeins); + vRightPulmonaryVeins.MapNode(RightPulmonaryVeins1); + ////////////////////////// + // Left Pulmonary Veins // + SELiquidCompartment& vLeftPulmonaryVeins = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryVeins); + vLeftPulmonaryVeins.MapNode(LeftPulmonaryVeins1); + ///////////////////// + // Pulmonary Veins // + SELiquidCompartment& vPulmonaryVeins = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::PulmonaryVeins); + vPulmonaryVeins.AddChild(vRightPulmonaryVeins); + vPulmonaryVeins.AddChild(vLeftPulmonaryVeins); + //////////////// + // Left Heart // + SELiquidCompartment& vLeftHeart = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftHeart); + vLeftHeart.MapNode(LeftHeart1); + vLeftHeart.MapNode(LeftHeart2); + vLeftHeart.MapNode(LeftHeart3); + /////////// + // Aorta // + SELiquidCompartment& vAorta = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Aorta); + vAorta.MapNode(Aorta1); + vAorta.MapNode(Aorta2); + vAorta.MapNode(Aorta3); + vAorta.MapNode(Aorta4); + /////////// + // Abdominal Cavity // + SELiquidCompartment& vAbdominalCavity = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::AbdominalCavity); + vAbdominalCavity.MapNode(AbdominalCavity); + // Brain // + SELiquidCompartment& vBrain = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Brain); + vBrain.MapNode(Brain1); + vBrain.MapNode(Brain2); + ////////// + // Bone // + SELiquidCompartment& vBone = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Bone); + vBone.MapNode(Bone1); + vBone.MapNode(Bone2); + ///////// + // Fat // + SELiquidCompartment& vFat = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Fat); + vFat.MapNode(Fat1); + vFat.MapNode(Fat2); + ///////////////////// + // Large Intestine // + SELiquidCompartment& vLargeIntestine = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LargeIntestine); + vLargeIntestine.MapNode(LargeIntestine1); + /////////// + // Liver // + SELiquidCompartment& vLiver = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Liver); + vLiver.MapNode(Liver1); + vLiver.MapNode(Liver2); + vLiver.MapNode(PortalVein1); + ////////////// + // Left Arm // + SELiquidCompartment& vLeftArm = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftArm); + vLeftArm.MapNode(LeftArm1); + vLeftArm.MapNode(LeftArm2); + ///////////////// + // Left Kidney // + SELiquidCompartment& vLeftKidney = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftKidney); + vLeftKidney.MapNode(LeftKidney1); + vLeftKidney.MapNode(LeftKidney2); + ////////////// + // Left Leg // + SELiquidCompartment& vLeftLeg = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftLeg); + vLeftLeg.MapNode(LeftLeg1); + vLeftLeg.MapNode(LeftLeg2); + //////////// + // Muscle // + SELiquidCompartment& vMuscle = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Muscle); + vMuscle.MapNode(Muscle1); + vMuscle.MapNode(Muscle2); + //////////////// + // Myocardium // + SELiquidCompartment& vMyocardium = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Myocardium); + vMyocardium.MapNode(Myocardium1); + vMyocardium.MapNode(Myocardium2); + ///////////////// + // Pericardium // + SELiquidCompartment& vPericardium = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Pericardium); + vPericardium.MapNode(Pericardium); + /////////////// + // Right Arm // + SELiquidCompartment& vRightArm = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightArm); + vRightArm.MapNode(RightArm1); + vRightArm.MapNode(RightArm2); + ////////////////// + // Right Kidney // + SELiquidCompartment& vRightKidney = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightKidney); + vRightKidney.MapNode(RightKidney1); + vRightKidney.MapNode(RightKidney2); + /////////////// + // Right Leg // + SELiquidCompartment& vRightLeg = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightLeg); + vRightLeg.MapNode(RightLeg1); + vRightLeg.MapNode(RightLeg2); + ////////// + // Skin // + SELiquidCompartment& vSkin = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Skin); + vSkin.MapNode(Skin1); + vSkin.MapNode(Skin2); + ///////////////////// + // Small Intestine // + SELiquidCompartment& vSmallIntestine = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::SmallIntestine); + vSmallIntestine.MapNode(SmallIntestine1); + //////////////// + // Splanchnic // + SELiquidCompartment& vSplanchnic = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Splanchnic); + vSplanchnic.MapNode(Splanchnic1); + //////////// + // Spleen // + SELiquidCompartment& vSpleen = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Spleen); + vSpleen.MapNode(Spleen1); + ////////////// + // VenaCava // + SELiquidCompartment& vVenaCava = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::VenaCava); + vVenaCava.MapNode(VenaCava1); + //////////// + // Ground // + SELiquidCompartment& vGround = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Ground); + vGround.MapNode(Ground); + + SELiquidCompartment& vRightSuperiorLobeApicalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightSuperiorLobeApicalPulmonaryCapillaries); + SELiquidCompartment& vRightSuperiorLobePosteriorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightSuperiorLobePosteriorPulmonaryCapillaries); + SELiquidCompartment& vRightSuperiorLobeAnteriorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightSuperiorLobeAnteriorPulmonaryCapillaries); + SELiquidCompartment& vRightMiddleLobeLateralPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightMiddleLobeLateralPulmonaryCapillaries); + SELiquidCompartment& vRightMiddleLobeMedialPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightMiddleLobeMedialPulmonaryCapillaries); + SELiquidCompartment& vRightInferiorLobeSuperiorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeSuperiorPulmonaryCapillaries); + SELiquidCompartment& vRightInferiorLobeMedialBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeMedialBasalPulmonaryCapillaries); + SELiquidCompartment& vRightInferiorLobeAnteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeAnteriorBasalPulmonaryCapillaries); + SELiquidCompartment& vRightInferiorLobeLateralBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeLateralBasalPulmonaryCapillaries); + SELiquidCompartment& vRightInferiorLobePosteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightInferiorLobePosteriorBasalPulmonaryCapillaries); + + SELiquidCompartment& vLeftInferiorLobePosteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobePosteriorBasalPulmonaryCapillaries); + SELiquidCompartment& vLeftInferiorLobeLateralBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobeLateralBasalPulmonaryCapillaries); + SELiquidCompartment& vLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + SELiquidCompartment& vLeftInferiorLobeSuperiorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobeSuperiorPulmonaryCapillaries); + SELiquidCompartment& vLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + SELiquidCompartment& vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + SELiquidCompartment& vLeftSuperiorLobeAnteriorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeAnteriorPulmonaryCapillaries); + SELiquidCompartment& vLeftSuperiorLobeApicoposteriorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + vRightSuperiorLobeApicalPulmonaryCapillaries.MapNode(RightSuperiorLobeApicalPulmonaryCapillaries); + vRightSuperiorLobePosteriorPulmonaryCapillaries.MapNode(RightSuperiorLobePosteriorPulmonaryCapillaries); + vRightSuperiorLobeAnteriorPulmonaryCapillaries.MapNode(RightSuperiorLobeAnteriorPulmonaryCapillaries); + vRightMiddleLobeLateralPulmonaryCapillaries.MapNode(RightMiddleLobeLateralPulmonaryCapillaries); + vRightMiddleLobeMedialPulmonaryCapillaries.MapNode(RightMiddleLobeMedialPulmonaryCapillaries); + vRightInferiorLobeSuperiorPulmonaryCapillaries.MapNode(RightInferiorLobeSuperiorPulmonaryCapillaries); + vRightInferiorLobeMedialBasalPulmonaryCapillaries.MapNode(RightInferiorLobeMedialBasalPulmonaryCapillaries); + vRightInferiorLobeAnteriorBasalPulmonaryCapillaries.MapNode(RightInferiorLobeAnteriorBasalPulmonaryCapillaries); + vRightInferiorLobeLateralBasalPulmonaryCapillaries.MapNode(RightInferiorLobeLateralBasalPulmonaryCapillaries); + vRightInferiorLobePosteriorBasalPulmonaryCapillaries.MapNode(RightInferiorLobePosteriorBasalPulmonaryCapillaries); + + vLeftInferiorLobePosteriorBasalPulmonaryCapillaries.MapNode(LeftInferiorLobePosteriorBasalPulmonaryCapillaries); + vLeftInferiorLobeLateralBasalPulmonaryCapillaries.MapNode(LeftInferiorLobeLateralBasalPulmonaryCapillaries); + vLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries.MapNode(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + vLeftInferiorLobeSuperiorPulmonaryCapillaries.MapNode(LeftInferiorLobeSuperiorPulmonaryCapillaries); + vLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries.MapNode(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries.MapNode(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + vLeftSuperiorLobeAnteriorPulmonaryCapillaries.MapNode(LeftSuperiorLobeAnteriorPulmonaryCapillaries); + vLeftSuperiorLobeApicoposteriorPulmonaryCapillaries.MapNode(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + ////////////////////////// + // Set up our hierarchy // + ////////////////////////// + SELiquidCompartment& vRightPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightPulmonaryCapillaries); + SELiquidCompartment& vLeftPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryCapillaries); + + vRightPulmonaryCapillaries.AddChild(vRightSuperiorLobeApicalPulmonaryCapillaries); + vRightPulmonaryCapillaries.AddChild(vRightSuperiorLobePosteriorPulmonaryCapillaries); + vRightPulmonaryCapillaries.AddChild(vRightSuperiorLobeAnteriorPulmonaryCapillaries); + vRightPulmonaryCapillaries.AddChild(vRightMiddleLobeLateralPulmonaryCapillaries); + vRightPulmonaryCapillaries.AddChild(vRightMiddleLobeMedialPulmonaryCapillaries); + vRightPulmonaryCapillaries.AddChild(vRightInferiorLobeSuperiorPulmonaryCapillaries); + vRightPulmonaryCapillaries.AddChild(vRightInferiorLobeMedialBasalPulmonaryCapillaries); + vRightPulmonaryCapillaries.AddChild(vRightInferiorLobeAnteriorBasalPulmonaryCapillaries); + vRightPulmonaryCapillaries.AddChild(vRightInferiorLobeLateralBasalPulmonaryCapillaries); + vRightPulmonaryCapillaries.AddChild(vRightInferiorLobePosteriorBasalPulmonaryCapillaries); + + vLeftPulmonaryCapillaries.AddChild(vLeftInferiorLobePosteriorBasalPulmonaryCapillaries); + vLeftPulmonaryCapillaries.AddChild(vLeftInferiorLobeLateralBasalPulmonaryCapillaries); + vLeftPulmonaryCapillaries.AddChild(vLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + vLeftPulmonaryCapillaries.AddChild(vLeftInferiorLobeSuperiorPulmonaryCapillaries); + vLeftPulmonaryCapillaries.AddChild(vLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + vLeftPulmonaryCapillaries.AddChild(vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + vLeftPulmonaryCapillaries.AddChild(vLeftSuperiorLobeAnteriorPulmonaryCapillaries); + vLeftPulmonaryCapillaries.AddChild(vLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + SELiquidCompartment& vPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::PulmonaryCapillaries); + vPulmonaryCapillaries.AddChild(vRightPulmonaryCapillaries); + vPulmonaryCapillaries.AddChild(vLeftPulmonaryCapillaries); + + SELiquidCompartment& vKidneys = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Kidneys); + vKidneys.AddChild(vLeftKidney); + vKidneys.AddChild(vRightKidney); + SELiquidCompartment& vHeart = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Heart); + vHeart.AddChild(vMyocardium); + vHeart.AddChild(vLeftHeart); + vHeart.AddChild(vRightHeart); + vHeart.AddChild(vPericardium); + SELiquidCompartment& vLeftLung = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftLung); + vLeftLung.AddChild(vLeftPulmonaryArteries); + vLeftLung.AddChild(vLeftPulmonaryCapillaries); + vLeftLung.AddChild(vLeftPulmonaryVeins); + SELiquidCompartment& vRightLung = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightLung); + vRightLung.AddChild(vRightPulmonaryArteries); + vRightLung.AddChild(vRightPulmonaryCapillaries); + vRightLung.AddChild(vRightPulmonaryVeins); + SELiquidCompartment& vLungs = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Lungs); + vLungs.AddChild(vLeftLung); + vLungs.AddChild(vRightLung); + SELiquidCompartment& vGut = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Gut); + vGut.AddChild(vSplanchnic); + vGut.AddChild(vSmallIntestine); + vGut.AddChild(vLargeIntestine); + SELiquidCompartment& vAbdomen = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Abdomen); + vAbdomen.AddChild(vSplanchnic); + vAbdomen.AddChild(vSmallIntestine); + vAbdomen.AddChild(vLargeIntestine); + vAbdomen.AddChild(vLeftKidney); + vAbdomen.AddChild(vRightKidney); + vAbdomen.AddChild(vSpleen); + vAbdomen.AddChild(vLiver); + vAbdomen.AddChild(vVenaCava); + vAbdomen.AddChild(vAorta); + vAbdomen.AddChild(vAbdominalCavity); + + + ////////////////// + // Create Links // + ////////////////// + + ///////////////////// + // Heart and Lungs // + SELiquidCompartmentLink& vVenaCavaToRightHeart = m_Compartments->CreateLiquidLink(vVenaCava, vRightHeart, pulse::VascularLink::VenaCavaToRightHeart); + vVenaCavaToRightHeart.MapPath(VenaCava1ToRightHeart2); + SELiquidCompartmentLink& vRightHeartToLeftPulmonaryArteries = m_Compartments->CreateLiquidLink(vRightHeart, vLeftPulmonaryArteries, pulse::VascularLink::RightHeartToLeftPulmonaryArteries); + vRightHeartToLeftPulmonaryArteries.MapPath(MainPulmonaryArteries1ToLeftIntermediatePulmonaryArteries1); + //SELiquidCompartmentLink& vLeftPulmonaryArteriesToCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToCapillaries); + //vLeftPulmonaryArteriesToCapillaries.MapPath(LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1); + //SELiquidCompartmentLink& vLeftPulmonaryArteriesToVeins = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftPulmonaryArteriesToVeins); + //vLeftPulmonaryArteriesToVeins.MapPath(LeftPulmonaryArteries1ToLeftPulmonaryVeins1); + //SELiquidCompartmentLink& vLeftPulmonaryCapillariesToVeins = m_Compartments->CreateLiquidLink(vLeftPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftPulmonaryCapillariesToVeins); + //vLeftPulmonaryCapillariesToVeins.MapPath(LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1); + SELiquidCompartmentLink& vLeftPulmonaryVeinsToLeftHeart = m_Compartments->CreateLiquidLink(vLeftPulmonaryVeins, vLeftHeart, pulse::VascularLink::LeftPulmonaryVeinsToLeftHeart); + vLeftPulmonaryVeinsToLeftHeart.MapPath(LeftIntermediatePulmonaryVeins1ToLeftHeart2); + SELiquidCompartmentLink& vRightHeartToRightPulmonaryArteries = m_Compartments->CreateLiquidLink(vRightHeart, vRightPulmonaryArteries, pulse::VascularLink::RightHeartToRightPulmonaryArteries); + vRightHeartToRightPulmonaryArteries.MapPath(MainPulmonaryArteries1ToRightIntermediatePulmonaryArteries1); + //SELiquidCompartmentLink& vRightPulmonaryArteriesToCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToCapillaries); + //vRightPulmonaryArteriesToCapillaries.MapPath(RightPulmonaryArteries1ToRightPulmonaryCapillaries1); + //SELiquidCompartmentLink& vRightPulmonaryArteriesToVeins = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightPulmonaryVeins, pulse::VascularLink::RightPulmonaryArteriesToVeins); + //vRightPulmonaryArteriesToVeins.MapPath(RightPulmonaryArteries1ToRightPulmonaryVeins1); + //SELiquidCompartmentLink& vRightPulmonaryCapillariesToVeins = m_Compartments->CreateLiquidLink(vRightPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightPulmonaryCapillariesToVeins); + //vRightPulmonaryCapillariesToVeins.MapPath(RightPulmonaryCapillaries1ToRightPulmonaryVeins1); + SELiquidCompartmentLink& vRightPulmonaryVeinsToLeftHeart = m_Compartments->CreateLiquidLink(vRightPulmonaryVeins, vLeftHeart, pulse::VascularLink::RightPulmonaryVeinsToLeftHeart); + vRightPulmonaryVeinsToLeftHeart.MapPath(RightIntermediatePulmonaryVeins1ToLeftHeart2); + SELiquidCompartmentLink& vLeftHeartToAorta = m_Compartments->CreateLiquidLink(vLeftHeart, vAorta, pulse::VascularLink::LeftHeartToAorta); + vLeftHeartToAorta.MapPath(LeftHeart1ToAorta2); + ////////// + // Bone // + SELiquidCompartmentLink& vAortaToBone = m_Compartments->CreateLiquidLink(vAorta, vBone, pulse::VascularLink::AortaToBone); + vAortaToBone.MapPath(Aorta1ToBone1); + SELiquidCompartmentLink& vBoneToVenaCava = m_Compartments->CreateLiquidLink(vBone, vVenaCava, pulse::VascularLink::BoneToVenaCava); + vBoneToVenaCava.MapPath(Bone2ToVenaCava1); + /////////// + // Brain // + SELiquidCompartmentLink& vAortaToBrain = m_Compartments->CreateLiquidLink(vAorta, vBrain, pulse::VascularLink::AortaToBrain); + vAortaToBrain.MapPath(Aorta1ToBrain1); + SELiquidCompartmentLink& vBrainToVenaCava = m_Compartments->CreateLiquidLink(vBrain, vVenaCava, pulse::VascularLink::BrainToVenaCava); + vBrainToVenaCava.MapPath(Brain2ToVenaCava1); + ///////// + // Fat // + SELiquidCompartmentLink& vAortaToFat = m_Compartments->CreateLiquidLink(vAorta, vFat, pulse::VascularLink::AortaToFat); + vAortaToFat.MapPath(Aorta1ToFat1); + SELiquidCompartmentLink& vFatToVenaCava = m_Compartments->CreateLiquidLink(vFat, vVenaCava, pulse::VascularLink::FatToVenaCava); + vFatToVenaCava.MapPath(Fat2ToVenaCava1); + ///////////////////// + // Large Intestine // + SELiquidCompartmentLink& vAortaToLargeIntestine = m_Compartments->CreateLiquidLink(vAorta, vLargeIntestine, pulse::VascularLink::AortaToLargeIntestine); + vAortaToLargeIntestine.MapPath(Aorta1ToLargeIntestine1); + SELiquidCompartmentLink& vLargeIntestineToLiver = m_Compartments->CreateLiquidLink(vLargeIntestine, vLiver, pulse::VascularLink::LargeIntestineToLiver); + vLargeIntestineToLiver.MapPath(LargeIntestine1ToPortalVein1); + /////////// + // Liver // + SELiquidCompartmentLink& vAortaToLiver = m_Compartments->CreateLiquidLink(vAorta, vLiver, pulse::VascularLink::AortaToLiver); + vAortaToLiver.MapPath(Aorta1ToLiver1); + SELiquidCompartmentLink& vLiverToVenaCava = m_Compartments->CreateLiquidLink(vLiver, vVenaCava, pulse::VascularLink::LiverToVenaCava); + vLiverToVenaCava.MapPath(Liver2ToVenaCava1); + ////////////// + // Left Arm // + SELiquidCompartmentLink& vAortaToLeftArm = m_Compartments->CreateLiquidLink(vAorta, vLeftArm, pulse::VascularLink::AortaToLeftArm); + vAortaToLeftArm.MapPath(Aorta1ToLeftArm1); + SELiquidCompartmentLink& vLeftArmToVenaCava = m_Compartments->CreateLiquidLink(vLeftArm, vVenaCava, pulse::VascularLink::LeftArmToVenaCava); + vLeftArmToVenaCava.MapPath(LeftArm2ToVenaCava1); + ///////////////// + // Left Kidney // + SELiquidCompartmentLink& vAortaToLeftKidney = m_Compartments->CreateLiquidLink(vAorta, vLeftKidney, pulse::VascularLink::AortaToLeftKidney); + vAortaToLeftKidney.MapPath(Aorta1ToLeftKidney1); + SELiquidCompartmentLink& vLeftKidneyToVenaCava = m_Compartments->CreateLiquidLink(vLeftKidney, vVenaCava, pulse::VascularLink::LeftKidneyToVenaCava); + vLeftKidneyToVenaCava.MapPath(LeftKidney2ToVenaCava1); + ////////////// + // Left Leg // + SELiquidCompartmentLink& vAortaToLeftLeg = m_Compartments->CreateLiquidLink(vAorta, vLeftLeg, pulse::VascularLink::AortaToLeftLeg); + vAortaToLeftLeg.MapPath(Aorta1ToLeftLeg1); + SELiquidCompartmentLink& vLeftLegToVenaCava = m_Compartments->CreateLiquidLink(vLeftLeg, vVenaCava, pulse::VascularLink::LeftLegToVenaCava); + vLeftLegToVenaCava.MapPath(LeftLeg2ToVenaCava1); + //////////// + // Muscle // + SELiquidCompartmentLink& vAortaToMuscle = m_Compartments->CreateLiquidLink(vAorta, vMuscle, pulse::VascularLink::AortaToMuscle); + vAortaToMuscle.MapPath(Aorta1ToMuscle1); + SELiquidCompartmentLink& vMuscleToVenaCava = m_Compartments->CreateLiquidLink(vMuscle, vVenaCava, pulse::VascularLink::MuscleToVenaCava); + vMuscleToVenaCava.MapPath(Muscle2ToVenaCava1); + //////////////// + // Myocardium // + SELiquidCompartmentLink& vAortaToMyocardium = m_Compartments->CreateLiquidLink(vAorta, vMyocardium, pulse::VascularLink::AortaToMyocardium); + vAortaToMyocardium.MapPath(Aorta1ToMyocardium1); + SELiquidCompartmentLink& vMyocardiumToVenaCava = m_Compartments->CreateLiquidLink(vMyocardium, vVenaCava, pulse::VascularLink::MyocardiumToVenaCava); + vMyocardiumToVenaCava.MapPath(Myocardium2ToVenaCava1); + /////////////// + // Right Arm // + SELiquidCompartmentLink& vAortaToRightArm = m_Compartments->CreateLiquidLink(vAorta, vRightArm, pulse::VascularLink::AortaToRightArm); + vAortaToRightArm.MapPath(Aorta1ToRightArm1); + SELiquidCompartmentLink& vRightArmToVenaCava = m_Compartments->CreateLiquidLink(vRightArm, vVenaCava, pulse::VascularLink::RightArmToVenaCava); + vRightArmToVenaCava.MapPath(RightArm2ToVenaCava1); + ////////////////// + // Right Kidney // + SELiquidCompartmentLink& vAortaToRightKidney = m_Compartments->CreateLiquidLink(vAorta, vRightKidney, pulse::VascularLink::AortaToRightKidney); + vAortaToRightKidney.MapPath(Aorta1ToRightKidney1); + SELiquidCompartmentLink& vRightKidneyToVenaCava = m_Compartments->CreateLiquidLink(vRightKidney, vVenaCava, pulse::VascularLink::RightKidneyToVenaCava); + vRightKidneyToVenaCava.MapPath(RightKidney2ToVenaCava1); + /////////////// + // Right Leg // + SELiquidCompartmentLink& vAortaToRightLeg = m_Compartments->CreateLiquidLink(vAorta, vRightLeg, pulse::VascularLink::AortaToRightLeg); + vAortaToRightLeg.MapPath(Aorta1ToRightLeg1); + SELiquidCompartmentLink& vRightLegToVenaCava = m_Compartments->CreateLiquidLink(vRightLeg, vVenaCava, pulse::VascularLink::RightLegToVenaCava); + vRightLegToVenaCava.MapPath(RightLeg2ToVenaCava1); + ////////// + // Skin // + SELiquidCompartmentLink& vAortaToSkin = m_Compartments->CreateLiquidLink(vAorta, vSkin, pulse::VascularLink::AortaToSkin); + vAortaToSkin.MapPath(Aorta1ToSkin1); + SELiquidCompartmentLink& vSkinToVenaCava = m_Compartments->CreateLiquidLink(vSkin, vVenaCava, pulse::VascularLink::SkinToVenaCava); + vSkinToVenaCava.MapPath(Skin2ToVenaCava1); + ///////////////////// + // Small Intestine // + SELiquidCompartmentLink& vAortaToSmallIntestine = m_Compartments->CreateLiquidLink(vAorta, vSmallIntestine, pulse::VascularLink::AortaToSmallIntestine); + vAortaToSmallIntestine.MapPath(Aorta1ToSmallIntestine1); + SELiquidCompartmentLink& vSmallIntestineToLiver = m_Compartments->CreateLiquidLink(vSmallIntestine, vLiver, pulse::VascularLink::SmallIntestineToLiver); + vSmallIntestineToLiver.MapPath(SmallIntestine1ToPortalVein1); + //////////////// + // Splanchnic // + SELiquidCompartmentLink& vAortaToSplanchnic = m_Compartments->CreateLiquidLink(vAorta, vSplanchnic, pulse::VascularLink::AortaToSplanchnic); + vAortaToSplanchnic.MapPath(Aorta1ToSplanchnic1); + SELiquidCompartmentLink& vSplanchnicToLiver = m_Compartments->CreateLiquidLink(vSplanchnic, vLiver, pulse::VascularLink::SplanchnicToLiver); + vSplanchnicToLiver.MapPath(SplanchnicToPortalVein); + //////////// + // Spleen // + SELiquidCompartmentLink& vAortaToSpleen = m_Compartments->CreateLiquidLink(vAorta, vSpleen, pulse::VascularLink::AortaToSpleen); + vAortaToSpleen.MapPath(Aorta1ToSpleen1); + SELiquidCompartmentLink& vSpleenToLiver = m_Compartments->CreateLiquidLink(vSpleen, vLiver, pulse::VascularLink::SpleenToLiver); + vSpleenToLiver.MapPath(Spleen1ToPortalVein1); + + ///////////////////// + // Bleeds and IV's // + SELiquidCompartmentLink& vVenaCavaIV = m_Compartments->CreateLiquidLink(vGround, vVenaCava, pulse::VascularLink::VenaCavaIV); + vVenaCavaIV.MapPath(IVToVenaCava1); + + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightSuperiorLobeApicalPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightSuperiorLobePosteriorPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightSuperiorLobeAnteriorPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightMiddleLobeLateralPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightMiddleLobeMedialPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobeSuperiorPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobeMedialBasalPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobeAnteriorBasalPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobeLateralBasalPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobePosteriorBasalPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries); + + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftInferiorLobePosteriorBasalPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftInferiorLobeLateralBasalPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftInferiorLobeSuperiorPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftSuperiorLobeAnteriorPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftSuperiorLobeApicoposteriorPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + SELiquidCompartmentLink& vRightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightSuperiorLobeApicalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightSuperiorLobePosteriorPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightSuperiorLobeAnteriorPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightMiddleLobeLateralPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightMiddleLobeMedialPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobeSuperiorPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobeMedialBasalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobeAnteriorBasalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobeLateralBasalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobePosteriorBasalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); + + SELiquidCompartmentLink& vLeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftInferiorLobePosteriorBasalPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftInferiorLobeLateralBasalPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftInferiorLobeSuperiorPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftSuperiorLobeAnteriorPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftSuperiorLobeApicoposteriorPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins); + + SELiquidCompartmentLink& vRightSuperiorLobeApicalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightSuperiorLobeApicalShunt); + SELiquidCompartmentLink& vRightSuperiorLobePosteriorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightSuperiorLobePosteriorShunt); + SELiquidCompartmentLink& vRightSuperiorLobeAnteriorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightSuperiorLobeAnteriorShunt); + SELiquidCompartmentLink& vRightMiddleLobeLateralShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightMiddleLobeLateralShunt); + SELiquidCompartmentLink& vRightMiddleLobeMedialShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightMiddleLobeMedialShunt); + SELiquidCompartmentLink& vRightInferiorLobeSuperiorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightInferiorLobeSuperiorShunt); + SELiquidCompartmentLink& vRightInferiorLobeMedialBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightInferiorLobeMedialBasalShunt); + SELiquidCompartmentLink& vRightInferiorLobeAnteriorBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightInferiorLobeAnteriorBasalShunt); + SELiquidCompartmentLink& vRightInferiorLobeLateralBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightInferiorLobeLateralBasalShunt); + SELiquidCompartmentLink& vRightInferiorLobePosteriorBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightInferiorLobePosteriorBasalShunt); + + SELiquidCompartmentLink& vLeftInferiorLobePosteriorBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobePosteriorBasalShunt); + SELiquidCompartmentLink& vLeftInferiorLobeLateralBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobeLateralBasalShunt); + SELiquidCompartmentLink& vLeftInferiorLobeAnteromedialBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobeAnteromedialBasalShunt); + SELiquidCompartmentLink& vLeftInferiorLobeSuperiorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobeSuperiorShunt); + SELiquidCompartmentLink& vLeftSuperiorLobeInferiorLingulaShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeInferiorLingulaShunt); + SELiquidCompartmentLink& vLeftSuperiorLobeSuperiorLingulaShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeSuperiorLingulaShunt); + SELiquidCompartmentLink& vLeftSuperiorLobeAnteriorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeAnteriorShunt); + SELiquidCompartmentLink& vLeftSuperiorLobeApicoposteriorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeApicoposteriorShunt); + + vRightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries.MapPath( RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries); + vRightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries.MapPath( RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries); + vRightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries.MapPath( RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries); + vRightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries.MapPath( RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries); + vRightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries.MapPath( RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries); + vRightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries.MapPath( RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries); + vRightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries.MapPath( RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries); + vRightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries.MapPath( RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); + vRightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries.MapPath( RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries); + vRightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries.MapPath( RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries); + + vLeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries.MapPath( LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); + vLeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries.MapPath( LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries); + vLeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries.MapPath(LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + vLeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries.MapPath( LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries); + vLeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries.MapPath( LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + vLeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries.MapPath( LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + vLeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries.MapPath( LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries); + vLeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries.MapPath( LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + vRightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins.MapPath( RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1); + vRightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins.MapPath( RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1); + vRightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins.MapPath( RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1); + vRightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins.MapPath( RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1); + vRightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins.MapPath( RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1); + vRightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins.MapPath( RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1); + vRightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins.MapPath( RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1); + vRightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins.MapPath( RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1); + vRightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins.MapPath( RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1); + vRightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins.MapPath( RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1); + + vLeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins.MapPath( LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1); + vLeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins.MapPath( LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1); + vLeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins.MapPath( LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1); + vLeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins.MapPath( LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1); + vLeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins.MapPath( LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1); + vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins.MapPath( LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1); + vLeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins.MapPath( LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1); + vLeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins.MapPath( LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1); + + vRightSuperiorLobeApicalShunt.MapPath(RightSuperiorLobeApicalShunt); + vRightSuperiorLobePosteriorShunt.MapPath(RightSuperiorLobePosteriorShunt); + vRightSuperiorLobeAnteriorShunt.MapPath(RightSuperiorLobeAnteriorShunt); + vRightMiddleLobeLateralShunt.MapPath(RightMiddleLobeLateralShunt); + vRightMiddleLobeMedialShunt.MapPath(RightMiddleLobeMedialShunt); + vRightInferiorLobeSuperiorShunt.MapPath(RightInferiorLobeSuperiorShunt); + vRightInferiorLobeMedialBasalShunt.MapPath(RightInferiorLobeMedialBasalShunt); + vRightInferiorLobeAnteriorBasalShunt.MapPath(RightInferiorLobeAnteriorBasalShunt); + vRightInferiorLobeLateralBasalShunt.MapPath(RightInferiorLobeLateralBasalShunt); + vRightInferiorLobePosteriorBasalShunt.MapPath(RightInferiorLobePosteriorBasalShunt); + + vLeftInferiorLobePosteriorBasalShunt.MapPath(LeftInferiorLobePosteriorBasalShunt); + vLeftInferiorLobeLateralBasalShunt.MapPath(LeftInferiorLobeLateralBasalShunt); + vLeftInferiorLobeAnteromedialBasalShunt.MapPath(LeftInferiorLobeAnteromedialBasalShunt); + vLeftInferiorLobeSuperiorShunt.MapPath(LeftInferiorLobeSuperiorShunt); + vLeftSuperiorLobeInferiorLingulaShunt.MapPath(LeftSuperiorLobeInferiorLingulaShunt); + vLeftSuperiorLobeSuperiorLingulaShunt.MapPath(LeftSuperiorLobeSuperiorLingulaShunt); + vLeftSuperiorLobeAnteriorShunt.MapPath(LeftSuperiorLobeAnteriorShunt); + vLeftSuperiorLobeApicoposteriorShunt.MapPath(LeftSuperiorLobeApicoposteriorShunt); + + SELiquidCompartmentGraph& gCardiovascular = m_Compartments->GetCardiovascularGraph(); + gCardiovascular.AddCompartment(vRightHeart); + gCardiovascular.AddCompartment(vRightPulmonaryArteries); + gCardiovascular.AddCompartment(vLeftPulmonaryArteries); + //gCardiovascular.AddCompartment(vRightPulmonaryCapillaries); + //gCardiovascular.AddCompartment(vLeftPulmonaryCapillaries); + gCardiovascular.AddCompartment(vRightPulmonaryVeins); + gCardiovascular.AddCompartment(vLeftPulmonaryVeins); + gCardiovascular.AddCompartment(vLeftHeart); + gCardiovascular.AddCompartment(vAorta); + gCardiovascular.AddCompartment(vBrain); + gCardiovascular.AddCompartment(vBone); + gCardiovascular.AddCompartment(vFat); + gCardiovascular.AddCompartment(vLargeIntestine); + gCardiovascular.AddCompartment(vLiver); + gCardiovascular.AddCompartment(vLeftArm); + gCardiovascular.AddCompartment(vLeftKidney); + gCardiovascular.AddCompartment(vLeftLeg); + gCardiovascular.AddCompartment(vMuscle); + gCardiovascular.AddCompartment(vMyocardium); + gCardiovascular.AddCompartment(vRightArm); + gCardiovascular.AddCompartment(vRightKidney); + gCardiovascular.AddCompartment(vRightLeg); + gCardiovascular.AddCompartment(vSkin); + gCardiovascular.AddCompartment(vSmallIntestine); + gCardiovascular.AddCompartment(vSplanchnic); + gCardiovascular.AddCompartment(vSpleen); + gCardiovascular.AddCompartment(vVenaCava); + + gCardiovascular.AddCompartment(vRightSuperiorLobeApicalPulmonaryCapillaries); + gCardiovascular.AddCompartment(vRightSuperiorLobePosteriorPulmonaryCapillaries); + gCardiovascular.AddCompartment(vRightSuperiorLobeAnteriorPulmonaryCapillaries); + gCardiovascular.AddCompartment(vRightMiddleLobeLateralPulmonaryCapillaries); + gCardiovascular.AddCompartment(vRightMiddleLobeMedialPulmonaryCapillaries); + gCardiovascular.AddCompartment(vRightInferiorLobeSuperiorPulmonaryCapillaries); + gCardiovascular.AddCompartment(vRightInferiorLobeMedialBasalPulmonaryCapillaries); + gCardiovascular.AddCompartment(vRightInferiorLobeAnteriorBasalPulmonaryCapillaries); + gCardiovascular.AddCompartment(vRightInferiorLobeLateralBasalPulmonaryCapillaries); + gCardiovascular.AddCompartment(vRightInferiorLobePosteriorBasalPulmonaryCapillaries); + + gCardiovascular.AddCompartment(vLeftInferiorLobePosteriorBasalPulmonaryCapillaries); + gCardiovascular.AddCompartment(vLeftInferiorLobeLateralBasalPulmonaryCapillaries); + gCardiovascular.AddCompartment(vLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + gCardiovascular.AddCompartment(vLeftInferiorLobeSuperiorPulmonaryCapillaries); + gCardiovascular.AddCompartment(vLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + gCardiovascular.AddCompartment(vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + gCardiovascular.AddCompartment(vLeftSuperiorLobeAnteriorPulmonaryCapillaries); + gCardiovascular.AddCompartment(vLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + gCardiovascular.AddLink(vVenaCavaToRightHeart); + gCardiovascular.AddLink(vRightHeartToLeftPulmonaryArteries); + //gCardiovascular.AddLink(vLeftPulmonaryArteriesToCapillaries); + //gCardiovascular.AddLink(vLeftPulmonaryArteriesToVeins); + //gCardiovascular.AddLink(vLeftPulmonaryCapillariesToVeins); + gCardiovascular.AddLink(vLeftPulmonaryVeinsToLeftHeart); + gCardiovascular.AddLink(vRightHeartToRightPulmonaryArteries); + //gCardiovascular.AddLink(vRightPulmonaryArteriesToCapillaries); + //gCardiovascular.AddLink(vRightPulmonaryArteriesToVeins); + //gCardiovascular.AddLink(vRightPulmonaryCapillariesToVeins); + gCardiovascular.AddLink(vRightPulmonaryVeinsToLeftHeart); + gCardiovascular.AddLink(vLeftHeartToAorta); + gCardiovascular.AddLink(vAortaToBone); + gCardiovascular.AddLink(vBoneToVenaCava); + gCardiovascular.AddLink(vAortaToBrain); + gCardiovascular.AddLink(vBrainToVenaCava); + gCardiovascular.AddLink(vAortaToFat); + gCardiovascular.AddLink(vFatToVenaCava); + gCardiovascular.AddLink(vAortaToLargeIntestine); + gCardiovascular.AddLink(vLargeIntestineToLiver); + gCardiovascular.AddLink(vAortaToLeftArm); + gCardiovascular.AddLink(vLeftArmToVenaCava); + gCardiovascular.AddLink(vAortaToLeftKidney); + gCardiovascular.AddLink(vLeftKidneyToVenaCava); + gCardiovascular.AddLink(vAortaToLeftLeg); + gCardiovascular.AddLink(vLeftLegToVenaCava); + gCardiovascular.AddLink(vAortaToLiver); + gCardiovascular.AddLink(vLiverToVenaCava); + gCardiovascular.AddLink(vAortaToMuscle); + gCardiovascular.AddLink(vMuscleToVenaCava); + gCardiovascular.AddLink(vAortaToMyocardium); + gCardiovascular.AddLink(vMyocardiumToVenaCava); + gCardiovascular.AddLink(vAortaToRightArm); + gCardiovascular.AddLink(vRightArmToVenaCava); + gCardiovascular.AddLink(vAortaToRightKidney); + gCardiovascular.AddLink(vRightKidneyToVenaCava); + gCardiovascular.AddLink(vAortaToRightLeg); + gCardiovascular.AddLink(vRightLegToVenaCava); + gCardiovascular.AddLink(vAortaToSkin); + gCardiovascular.AddLink(vSkinToVenaCava); + gCardiovascular.AddLink(vAortaToSmallIntestine); + gCardiovascular.AddLink(vSmallIntestineToLiver); + gCardiovascular.AddLink(vAortaToSplanchnic); + gCardiovascular.AddLink(vSplanchnicToLiver); + gCardiovascular.AddLink(vAortaToSpleen); + gCardiovascular.AddLink(vSpleenToLiver); + gCardiovascular.AddLink(vVenaCavaIV); + + gCardiovascular.AddLink(vRightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries); + gCardiovascular.AddLink(vRightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries); + gCardiovascular.AddLink(vRightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries); + gCardiovascular.AddLink(vRightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries); + gCardiovascular.AddLink(vRightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries); + gCardiovascular.AddLink(vRightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries); + gCardiovascular.AddLink(vRightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries); + gCardiovascular.AddLink(vRightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); + gCardiovascular.AddLink(vRightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries); + gCardiovascular.AddLink(vRightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries); + + gCardiovascular.AddLink(vLeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); + gCardiovascular.AddLink(vLeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries); + gCardiovascular.AddLink(vLeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + gCardiovascular.AddLink(vLeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries); + gCardiovascular.AddLink(vLeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + gCardiovascular.AddLink(vLeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + gCardiovascular.AddLink(vLeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries); + gCardiovascular.AddLink(vLeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + gCardiovascular.AddLink(vRightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins); + gCardiovascular.AddLink(vRightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins); + gCardiovascular.AddLink(vRightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins); + gCardiovascular.AddLink(vRightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins); + gCardiovascular.AddLink(vRightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins); + gCardiovascular.AddLink(vRightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins); + gCardiovascular.AddLink(vRightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins); + gCardiovascular.AddLink(vRightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); + gCardiovascular.AddLink(vRightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins); + gCardiovascular.AddLink(vRightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); + + gCardiovascular.AddLink(vLeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins); + gCardiovascular.AddLink(vLeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins); + gCardiovascular.AddLink(vLeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins); + gCardiovascular.AddLink(vLeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins); + gCardiovascular.AddLink(vLeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); + gCardiovascular.AddLink(vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); + gCardiovascular.AddLink(vLeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins); + gCardiovascular.AddLink(vLeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins); + + gCardiovascular.AddLink(vRightSuperiorLobeApicalShunt); + gCardiovascular.AddLink(vRightSuperiorLobePosteriorShunt); + gCardiovascular.AddLink(vRightSuperiorLobeAnteriorShunt); + gCardiovascular.AddLink(vRightMiddleLobeLateralShunt); + gCardiovascular.AddLink(vRightMiddleLobeMedialShunt); + gCardiovascular.AddLink(vRightInferiorLobeSuperiorShunt); + gCardiovascular.AddLink(vRightInferiorLobeMedialBasalShunt); + gCardiovascular.AddLink(vRightInferiorLobeAnteriorBasalShunt); + gCardiovascular.AddLink(vRightInferiorLobeLateralBasalShunt); + gCardiovascular.AddLink(vRightInferiorLobePosteriorBasalShunt); + + gCardiovascular.AddLink(vLeftInferiorLobePosteriorBasalShunt); + gCardiovascular.AddLink(vLeftInferiorLobeLateralBasalShunt); + gCardiovascular.AddLink(vLeftInferiorLobeAnteromedialBasalShunt); + gCardiovascular.AddLink(vLeftInferiorLobeSuperiorShunt); + gCardiovascular.AddLink(vLeftSuperiorLobeInferiorLingulaShunt); + gCardiovascular.AddLink(vLeftSuperiorLobeSuperiorLingulaShunt); + gCardiovascular.AddLink(vLeftSuperiorLobeAnteriorShunt); + gCardiovascular.AddLink(vLeftSuperiorLobeApicoposteriorShunt); + + // jbw - What do we do here? + // Remove modifiers of paths we removed + m_Config->GetModifiers().erase(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryCapillaries1); + m_Config->GetModifiers().erase(pulse::CardiovascularPath::RightPulmonaryCapillaries1ToRightPulmonaryVeins1); + m_Config->GetModifiers().erase(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryVeins1); + m_Config->GetModifiers().erase(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1); + m_Config->GetModifiers().erase(pulse::CardiovascularPath::LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1); + m_Config->GetModifiers().erase(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryVeins1); + + gCardiovascular.StateChange(); + + SELiquidCompartmentGraph& gCombinedCardiovascular = m_Compartments->GetActiveCardiovascularGraph(); + gCombinedCardiovascular.AddGraph(gCardiovascular); + gCombinedCardiovascular.StateChange(); + + totalLeftVolume_mL = m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryCapillaries)->GetVolume(VolumeUnit::mL); + totalRightVolume_mL = m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::RightPulmonaryCapillaries)->GetVolume(VolumeUnit::mL); } } \ No newline at end of file diff --git a/src/cpp/engine/common/controller/SubstanceManager.cpp b/src/cpp/engine/common/controller/SubstanceManager.cpp index 6d6ac4bde..d8abad959 100644 --- a/src/cpp/engine/common/controller/SubstanceManager.cpp +++ b/src/cpp/engine/common/controller/SubstanceManager.cpp @@ -499,12 +499,16 @@ namespace pulse InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Fat), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Fat)); InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Gut), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Gut)); InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::LeftKidney), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftKidney)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::LeftLung), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftLung)); + //jbw - Fix and make work for all CV setups + if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) + { + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::LeftLung), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftLung)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::RightLung), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightLung)); + } InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Liver), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Liver)); InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Muscle), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Muscle)); InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Myocardium), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Myocardium)); InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::RightKidney), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightKidney)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::RightLung), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightLung)); InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Skin), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Skin)); InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Spleen), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Spleen)); } diff --git a/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp b/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp index f0ecebce5..a8e77d60d 100644 --- a/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp +++ b/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp @@ -386,7 +386,45 @@ namespace pulse //Paths if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) { - //Not yet implemented + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalShunt)); + + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorShunt)); + + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries)); + + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries)); } else { @@ -687,7 +725,25 @@ namespace pulse if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) { - //Not yet implemented + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround)); + + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround)); + m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround)); } else { @@ -3517,8 +3573,15 @@ namespace pulse tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::RightKidneyT2ToRightKidneyT1)); } - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::LeftPulmonaryCapillaries1)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::LeftLungT2ToLeftLungT1)); + //jbw - Fix and make work for all CV setups + if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) + { + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::LeftPulmonaryCapillaries1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::LeftLungT2ToLeftLungT1)); + + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::RightPulmonaryCapillaries1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::RightLungT2ToRightLungT1)); + } tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::Muscle1)); tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::MuscleT2ToMuscleT1)); @@ -3526,9 +3589,6 @@ namespace pulse tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::Myocardium1)); tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::MyocardiumT2ToMyocardiumT1)); - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::RightPulmonaryCapillaries1)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::RightLungT2ToRightLungT1)); - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::Skin1)); tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::SkinT2ToSkinT1)); diff --git a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp index c196a8d7a..c00804aab 100644 --- a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp +++ b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp @@ -491,6 +491,14 @@ namespace pulse m_AmbientNode = m_RespiratoryCircuit->GetNode(pulse::EnvironmentNode::Ambient); m_StomachNode = m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::Stomach); + // Side + // Alveoli Node + // Dead Space Node + // Compliance Path + // Shunt Path + // Capillary Path + // Alveoli Compartment + // Capillary Compartment if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) { // Side @@ -539,7 +547,204 @@ namespace pulse } else { - // TODO Expansion Support + m_LungComponents[eLungCompartment::RightSuperiorLobeApical] = + { + eSide::Right, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeApicalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeApicalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorLobeApicalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeApicalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightSuperiorLobeApicalPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::RightSuperiorLobePosterior] = + { + eSide::Right, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobePosteriorAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobePosteriorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorLobePosteriorAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobePosteriorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightSuperiorLobePosteriorPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::RightSuperiorLobeAnterior] = + { + eSide::Right, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeAnteriorAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeAnteriorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeAnteriorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightSuperiorLobeAnteriorPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::RightMiddleLobeLateral] = + { + eSide::Right, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeLateralAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeLateralAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightMiddleLobeLateralAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeLateralAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightMiddleLobeLateralPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::RightMiddleLobeMedial] = + { + eSide::Right, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeMedialAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeMedialAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightMiddleLobeMedialAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeMedialAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightMiddleLobeMedialPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::RightInferiorLobeSuperior] = + { + eSide::Right, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeSuperiorAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeSuperiorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobeSuperiorAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeSuperiorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeSuperiorPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::RightInferiorLobeMedialBasal] = + { + eSide::Right, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeMedialBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeMedialBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeMedialBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeMedialBasalPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::RightInferiorLobeAnteriorBasal] = + { + eSide::Right, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeAnteriorBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeAnteriorBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeAnteriorBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeAnteriorBasalPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::RightInferiorLobeLateralBasal] = + { + eSide::Right, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeLateralBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeLateralBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeLateralBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeLateralBasalPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::RightInferiorLobePosteriorBasal] = + { + eSide::Right, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobePosteriorBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobePosteriorBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobePosteriorBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightInferiorLobePosteriorBasalPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::LeftInferiorLobePosteriorBasal] = + { + eSide::Left, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobePosteriorBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobePosteriorBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobePosteriorBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobePosteriorBasalPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::LeftInferiorLobeLateralBasal] = + { + eSide::Left, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeLateralBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeLateralBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeLateralBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobeLateralBasalPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::LeftInferiorLobeAnteromedialBasal] = + { + eSide::Left, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::LeftInferiorLobeSuperior] = + { + eSide::Left, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeSuperiorAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeSuperiorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeSuperiorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobeSuperiorPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::LeftSuperiorLobeInferiorLingula] = + { + eSide::Left, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::LeftSuperiorLobeSuperiorLingula] = + { + eSide::Left, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::LeftSuperiorLobeAnterior] = + { + eSide::Left, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeAnteriorAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeAnteriorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeAnteriorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeAnteriorPulmonaryCapillaries) + }; + m_LungComponents[eLungCompartment::LeftSuperiorLobeApicoposterior] = + { + eSide::Left, + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeApicoposteriorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeApicoposteriorPulmonaryCapillaries) + }; } //Paths @@ -688,7 +893,11 @@ namespace pulse UpdateChestWallCompliances(); UpdateAlveolarCompliances(); UpdateVolumes(); - UpdateResistances(); + if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) + { + //jbw - Fix + UpdateResistances(); + } UpdateInspiratoryExpiratoryRatio(); UpdateDiffusion(); if (m_data.HasCardiovascular()) @@ -751,7 +960,11 @@ namespace pulse //Update system data CalculateVitalSigns(); - ComputeExposedModelParameters(); + if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) + { + //jbw - Fix + ComputeExposedModelParameters(); + } } void RespiratoryModel::ComputeExposedModelParameters() { @@ -2828,8 +3041,14 @@ namespace pulse double RespiratoryModel::VolumeToDriverPressure(double TargetVolume_L) { //Calculate as if constant compliances - double leftHealthyLungCompliance_L_Per_cmH2O = m_LeftAlveoliToLeftPleuralConnection->GetComplianceBaseline(VolumePerPressureUnit::L_Per_cmH2O); - double rightHealthyLungCompliance_L_Per_cmH2O = m_RightAlveoliToRightPleuralConnection->GetComplianceBaseline(VolumePerPressureUnit::L_Per_cmH2O); + //jbw - Either sum all paths or add a configuration value + double leftHealthyLungCompliance_L_Per_cmH2O = 0.1; + double rightHealthyLungCompliance_L_Per_cmH2O = 0.1; + if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) + { + leftHealthyLungCompliance_L_Per_cmH2O = m_LeftAlveoliToLeftPleuralConnection->GetComplianceBaseline(VolumePerPressureUnit::L_Per_cmH2O); + rightHealthyLungCompliance_L_Per_cmH2O = m_RightAlveoliToRightPleuralConnection->GetComplianceBaseline(VolumePerPressureUnit::L_Per_cmH2O); + } double leftHealthyChestWallCompliance_L_Per_cmH2O = m_LeftPleuralToRespiratoryMuscle->GetComplianceBaseline(VolumePerPressureUnit::L_Per_cmH2O); double rightHealthyChestWallCompliance_L_Per_cmH2O = m_RightPleuralToRespiratoryMuscle->GetComplianceBaseline(VolumePerPressureUnit::L_Per_cmH2O); @@ -2936,7 +3155,16 @@ namespace pulse double functionalResidualCapacity_L = m_data.GetInitialPatient().GetFunctionalResidualCapacity(VolumeUnit::L) * lungRatio; - healthyLungCompliance_L_Per_cmH2O = lungPath->GetComplianceBaseline(VolumePerPressureUnit::L_Per_cmH2O); + if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) + { + //jbw - Either sum all paths or add a configuration value + healthyLungCompliance_L_Per_cmH2O = 0.1; + } + else + { + healthyLungCompliance_L_Per_cmH2O = lungPath->GetComplianceBaseline(VolumePerPressureUnit::L_Per_cmH2O); + } + double baselineCompliance_L_Per_cmH2O = 0.0; double lowerCorner_cmH2O = 0.0; double upperCorner_cmH2O = 0.0; diff --git a/src/cpp/engine/common/system/physiology/TissueModel.cpp b/src/cpp/engine/common/system/physiology/TissueModel.cpp index b8b615984..82889b71d 100644 --- a/src/cpp/engine/common/system/physiology/TissueModel.cpp +++ b/src/cpp/engine/common/system/physiology/TissueModel.cpp @@ -226,8 +226,12 @@ namespace pulse m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::LeftKidney)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftKidney); m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::RightKidney)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightKidney); m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::Liver)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::Liver); - m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::LeftLung)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftLung); - m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::RightLung)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightLung); + //jbw - Fix and make work for all CV setups + if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) + { + m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::LeftLung)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftLung); + m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::RightLung)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightLung); + } m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::Muscle)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::Muscle); m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::Myocardium)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::Myocardium); m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::Skin)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::Skin); diff --git a/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp index a3eb91c73..ec81c84c5 100644 --- a/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp @@ -226,6 +226,8 @@ namespace pulse { namespace human_adult_whole_body pc.m_Config->EnableCerebrospinalFluid(connectCSF ? eSwitch::On : eSwitch::Off); pc.m_Config->TuneCardiovascularCircuit(eSwitch::On);// Run the circuit as constructed //pc.m_Config->CardiovascularTuningFile("./test_results/unit_tests/Pulse/"+ sTestName+"Tuning.csv"); + //jbw - Make a seperate test that turns this on + pc.m_Config->UseExpandedRespiratory(eSwitch::On); pc.CreateCircuitsAndCompartments(); std::vector subs2Track; diff --git a/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp index 826459c8d..e76e8aa7e 100644 --- a/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp @@ -55,6 +55,8 @@ namespace pulse { namespace human_adult_whole_body pc.m_Config->Initialize("./", &pc.GetSubstances()); pc.m_Config->EnableRenal(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); + //jbw - Make a seperate test that turns this on + pc.m_Config->UseExpandedRespiratory(eSwitch::On); pc.CreateCircuitsAndCompartments(); pc.GetSubstances().InitializeGasCompartments(); SEEnvironmentalConditions& env = pc.GetEnvironment().GetEnvironmentalConditions(); diff --git a/src/csharp/pulse/cdm/system/physiology/SERespiratorySystem.cs b/src/csharp/pulse/cdm/system/physiology/SERespiratorySystem.cs index 0dcec48ec..cbf489b76 100644 --- a/src/csharp/pulse/cdm/system/physiology/SERespiratorySystem.cs +++ b/src/csharp/pulse/cdm/system/physiology/SERespiratorySystem.cs @@ -12,6 +12,25 @@ namespace Pulse.CDM LeftInferiorLobe, RightSuperiorLobe, RightMiddleLobe, - RightInferiorLobe + RightInferiorLobe, + + RightSuperiorLobeApical, + RightSuperiorLobePosterior, + RightSuperiorLobeAnterior, + RightMiddleLobeLateral, + RightMiddleLobeMedial, + RightInferiorLobeSuperior, + RightInferiorLobeMedialBasal, + RightInferiorLobeAnteriorBasal, + RightInferiorLobeLateralBasal, + RightInferiorLobePosteriorBasal, + LeftInferiorLobePosteriorBasal, + LeftInferiorLobeLateralBasal, + LeftInferiorLobeAnteromedialBasal, + LeftInferiorLobeSuperior, + LeftSuperiorLobeInferiorLingula, + LeftSuperiorLobeSuperiorLingula, + LeftSuperiorLobeAnterior, + LeftSuperiorLobeApicoposterior }; } \ No newline at end of file diff --git a/src/schema/pulse/cdm/bind/Physiology.proto b/src/schema/pulse/cdm/bind/Physiology.proto index ade3cc2b7..8e776d116 100644 --- a/src/schema/pulse/cdm/bind/Physiology.proto +++ b/src/schema/pulse/cdm/bind/Physiology.proto @@ -335,14 +335,33 @@ message RespiratoryMechanicsModifiersData enum eLungCompartment { - LeftLung = 0; - RightLung = 1; - - LeftSuperiorLobe = 2; - LeftInferiorLobe = 3; - RightSuperiorLobe = 4; - RightMiddleLobe = 5; - RightInferiorLobe = 6; + LeftLung = 0; + RightLung = 1; + + LeftSuperiorLobe = 2; + LeftInferiorLobe = 3; + RightSuperiorLobe = 4; + RightMiddleLobe = 5; + RightInferiorLobe = 6; + + RightSuperiorLobeApical = 7; + RightSuperiorLobePosterior = 8; + RightSuperiorLobeAnterior = 9; + RightMiddleLobeLateral = 10; + RightMiddleLobeMedial = 11; + RightInferiorLobeSuperior = 12; + RightInferiorLobeMedialBasal = 13; + RightInferiorLobeAnteriorBasal = 14; + RightInferiorLobeLateralBasal = 15; + RightInferiorLobePosteriorBasal = 16; + LeftInferiorLobePosteriorBasal = 17; + LeftInferiorLobeLateralBasal = 18; + LeftInferiorLobeAnteromedialBasal = 19; + LeftInferiorLobeSuperior = 20; + LeftSuperiorLobeInferiorLingula = 21; + LeftSuperiorLobeSuperiorLingula = 22; + LeftSuperiorLobeAnterior = 23; + LeftSuperiorLobeApicoposterior = 24; } // Protobuf does not support enum's as map keys -- GitLab From f45bfd3a661821521d38b15c2d82f2c5729c62b7 Mon Sep 17 00:00:00 2001 From: Jeff Webb Date: Wed, 16 Aug 2023 09:55:04 -0400 Subject: [PATCH 02/35] Switch "jbw" comments to "Aaron" --- .../human_adult/whole_body/test/CardiovascularCircuit.cpp | 2 +- .../engine/human_adult/whole_body/test/RespiratoryCircuit.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp index ec81c84c5..bc5bbca12 100644 --- a/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp @@ -226,7 +226,7 @@ namespace pulse { namespace human_adult_whole_body pc.m_Config->EnableCerebrospinalFluid(connectCSF ? eSwitch::On : eSwitch::Off); pc.m_Config->TuneCardiovascularCircuit(eSwitch::On);// Run the circuit as constructed //pc.m_Config->CardiovascularTuningFile("./test_results/unit_tests/Pulse/"+ sTestName+"Tuning.csv"); - //jbw - Make a seperate test that turns this on + //Aaron - Make a seperate test that turns this on pc.m_Config->UseExpandedRespiratory(eSwitch::On); pc.CreateCircuitsAndCompartments(); diff --git a/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp index e76e8aa7e..aaa4390df 100644 --- a/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp @@ -55,7 +55,7 @@ namespace pulse { namespace human_adult_whole_body pc.m_Config->Initialize("./", &pc.GetSubstances()); pc.m_Config->EnableRenal(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); - //jbw - Make a seperate test that turns this on + //Aaron - Make a seperate test that turns this on pc.m_Config->UseExpandedRespiratory(eSwitch::On); pc.CreateCircuitsAndCompartments(); pc.GetSubstances().InitializeGasCompartments(); -- GitLab From b55bf5827fcf57e75bab920e5ac76c3c1800daf5 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Sun, 26 Nov 2023 13:36:19 -0500 Subject: [PATCH 03/35] =?UTF-8?q?=EF=BB=BFAdd=20support=20for=20setting=20?= =?UTF-8?q?configuration=20to=20our=20thunk=20layer=20class=20(python,=20j?= =?UTF-8?q?ava,=20c#)=20Also=20removed=20config=20params=20for=20serializi?= =?UTF-8?q?ng=20out=20the=20initial=20patient,=20as=20that=20is=20all=20in?= =?UTF-8?q?=20the=20log=20now?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/python/pulse/engine/PulseConfiguration.py | 14 +++++++++++++- src/python/pulse/engine/io/PulseConfiguration.py | 3 +++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/python/pulse/engine/PulseConfiguration.py b/src/python/pulse/engine/PulseConfiguration.py index 507163c3a..5450bdf83 100644 --- a/src/python/pulse/engine/PulseConfiguration.py +++ b/src/python/pulse/engine/PulseConfiguration.py @@ -6,16 +6,21 @@ from pulse.cdm.scalars import SEScalarTime class PulseConfiguration: - __slots__ = ["_time_step", "_allow_dynamic_timestep"] + __slots__ = ["_time_step", "_allow_dynamic_timestep", + "_use_expanded_respiratory"] def __init__(self): self._allow_dynamic_timestep = eSwitch.NullSwitch self._time_step = None + self._use_expanded_respiratory = eSwitch.NullSwitch + def clear(self): self._allow_dynamic_timestep = eSwitch.NullSwitch if self._time_step is not None: self._time_step.invalidate() + self._use_expanded_respiratory = eSwitch.NullSwitch + def set_allow_dynamic_timestep(self, s: eSwitch): self._allow_dynamic_timestep = s def allow_dynamic_timestep(self): @@ -28,3 +33,10 @@ class PulseConfiguration: self._time_step = SEScalarTime() return self._time_step + def set_expanded_respiratory(self, s: eSwitch): + self._use_expanded_respiratory = s + def use_expanded_respiratory(self): + return self._use_expanded_respiratory + + + diff --git a/src/python/pulse/engine/io/PulseConfiguration.py b/src/python/pulse/engine/io/PulseConfiguration.py index b98dd200d..2df22dbd7 100644 --- a/src/python/pulse/engine/io/PulseConfiguration.py +++ b/src/python/pulse/engine/io/PulseConfiguration.py @@ -39,6 +39,9 @@ def serialize_pulse_configuration_to_bind(src: PulseConfiguration, dst: Configur if src.has_time_step(): serialize_scalar_time_to_bind(src.get_time_step(), dst.TimeStep) + if src.use_expanded_respiratory() is not eSwitch.NullSwitch: + dst.RespiratoryConfiguration.UseExpandedRespiratory = src.use_expanded_respiratory().value + def serialize_pulse_configuration_from_bind(src: ConfigurationData, dst: PulseConfiguration): raise Exception("serialize_pulse_configuration_from_bind not implemented") \ No newline at end of file -- GitLab From f37aad2fe48f413aec8af6417eeea6d765a696b1 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Sun, 26 Nov 2023 13:38:12 -0500 Subject: [PATCH 04/35] Add python howto for using expanded respiratory system --- .../controller/SetupExpandedRespiratory.cpp | 2 +- src/python/pulse/cdm/physiology.py | 20 ++++ .../pulse/howto/HowTo_ExpandedRespiratory.py | 104 ++++++++++++++++++ 3 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 src/python/pulse/howto/HowTo_ExpandedRespiratory.py diff --git a/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp b/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp index eb077b6d8..9aceaa577 100644 --- a/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp +++ b/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp @@ -1309,7 +1309,7 @@ namespace pulse void Controller::SetupExpandedPulmonaryCardiovascular() { - Info("Setting Up Cardiovascular"); + Info("Setting Up Expanded Pulmonary Cardiovascular"); bool male = m_InitialPatient->GetSex() == ePatient_Sex::Male ? true : false; double RightLungRatio = m_InitialPatient->GetRightLungRatio().GetValue(); double LeftLungRatio = 1 - RightLungRatio; diff --git a/src/python/pulse/cdm/physiology.py b/src/python/pulse/cdm/physiology.py index 75755fa12..c46653507 100644 --- a/src/python/pulse/cdm/physiology.py +++ b/src/python/pulse/cdm/physiology.py @@ -34,6 +34,26 @@ class eLungCompartment(int, Enum): RightSuperiorLobe = 4 RightMiddleLobe = 5 RightInferiorLobe = 6 + # Expanded Respiratory + RightSuperiorLobeApical = 7 + RightSuperiorLobePosterior = 8 + RightSuperiorLobeAnterior = 9 + RightMiddleLobeLateral = 10 + RightMiddleLobeMedial = 11 + RightInferiorLobeSuperior = 12 + RightInferiorLobeMedialBasal = 13 + RightInferiorLobeAnteriorBasal = 14 + RightInferiorLobeLateralBasal = 15 + RightInferiorLobePosteriorBasal = 16 + LeftInferiorLobePosteriorBasal = 17 + LeftInferiorLobeLateralBasal = 18 + LeftInferiorLobeAnteromedialBasal = 19 + LeftInferiorLobeSuperior = 20 + LeftSuperiorLobeInferiorLingula = 21 + LeftSuperiorLobeSuperiorLingula = 22 + LeftSuperiorLobeAnterior = 23 + LeftSuperiorLobeApicoposterior = 24 + class SECardiovascularMechanicsModifiers: diff --git a/src/python/pulse/howto/HowTo_ExpandedRespiratory.py b/src/python/pulse/howto/HowTo_ExpandedRespiratory.py new file mode 100644 index 000000000..ee10b1364 --- /dev/null +++ b/src/python/pulse/howto/HowTo_ExpandedRespiratory.py @@ -0,0 +1,104 @@ +# Distributed under the Apache License, Version 2.0. +# See accompanying NOTICE file for details. + +from pathlib import Path + +from pulse.cdm.engine import eSwitch, eSerializationFormat +from pulse.cdm.engine import SEDataRequestManager, SEDataRequest +from pulse.cdm.patient import SEPatientConfiguration +from pulse.cdm.patient_actions import SEAcuteRespiratoryDistressSyndromeExacerbation +from pulse.cdm.physiology import eLungCompartment +from pulse.cdm.scalars import FrequencyUnit, LengthUnit, MassUnit, PressureUnit, \ + TimeUnit, VolumeUnit + +from pulse.engine.PulseEngine import PulseEngine +from pulse.engine.PulseConfiguration import PulseConfiguration + + +def HowTo_ExpandedRespiratory(): + pulse = PulseEngine() + pulse.set_log_filename("./test_results/howto/HowTo_ExpandedRespiratory.py.log") + pulse.log_to_console(True) + + cfg = PulseConfiguration() + cfg.set_expanded_respiratory(eSwitch.On) + pulse.set_configuration_override(cfg) + + data_requests = [ + SEDataRequest.create_physiology_request("HeartRate", unit=FrequencyUnit.Per_min), + SEDataRequest.create_physiology_request("ArterialPressure", unit=PressureUnit.mmHg), + SEDataRequest.create_physiology_request("MeanArterialPressure", unit=PressureUnit.mmHg), + SEDataRequest.create_physiology_request("SystolicArterialPressure", unit=PressureUnit.mmHg), + SEDataRequest.create_physiology_request("DiastolicArterialPressure", unit=PressureUnit.mmHg), + + SEDataRequest.create_physiology_request("EndTidalCarbonDioxidePressure", unit=PressureUnit.mmHg), + SEDataRequest.create_physiology_request("HorowitzIndex", unit=PressureUnit.mmHg), + SEDataRequest.create_physiology_request("OxygenSaturation"), + SEDataRequest.create_physiology_request("RespirationRate", unit=FrequencyUnit.Per_min), + SEDataRequest.create_physiology_request("TidalVolume", unit=VolumeUnit.mL), + SEDataRequest.create_physiology_request("TotalLungVolume", unit=VolumeUnit.mL), + SEDataRequest.create_gas_compartment_request("LeftLungPulmonary", "Volume", unit=VolumeUnit.mL), + SEDataRequest.create_gas_compartment_request("RightLungPulmonary", "Volume", unit=VolumeUnit.L), + ] + data_req_mgr = SEDataRequestManager(data_requests) + # NOTE: If No data requests are being provided, Pulse will return the default vitals data + # In addition to getting this data back via this API + # You can have Pulse write the data you have requested to a CSV file + data_req_mgr.set_results_filename("./test_results/howto/HowTo_ExpandedRespiratory.py.csv") + + state_filename = Path("./test_results/howto/Satish.json") + if state_filename.exists(): + # If you have run the patient configuration code below and have a state file, you can load it like this + # If you want to stabilize again, just delete that file + pulse.serialize_from_file(str(state_filename), data_req_mgr) + else: + pc = SEPatientConfiguration() + p = pc.get_patient() + p.set_name("Satish") + p.get_age().set_value(22, TimeUnit.yr) + p.get_height().set_value(72, LengthUnit.inch) + p.get_weight().set_value(180, MassUnit.lb) + if not pulse.initialize_engine(pc, data_req_mgr): + print("Unable to load stabilize engine") + return + # Save out the initial stabilized state, we can use it later and start up quicker + pulse.serialize_to_file(str(state_filename)) + + # Get default data at time 0s from the engine + results = pulse.pull_data() + pulse.print_results() + + + # Advance some time and print out the vitals + pulse.advance_time_s(30) + results = pulse.pull_data() + pulse.print_results() + + ards = SEAcuteRespiratoryDistressSyndromeExacerbation() + ards.get_severity(eLungCompartment.RightSuperiorLobe).set_value(0.3) + ards.get_severity(eLungCompartment.RightSuperiorLobePosterior).set_value(0.3) + ards.get_severity(eLungCompartment.RightSuperiorLobeAnterior).set_value(0.3) + ards.get_severity(eLungCompartment.RightMiddleLobeLateral).set_value(0.3) + ards.get_severity(eLungCompartment.RightMiddleLobeMedial).set_value(0.3) + ards.get_severity(eLungCompartment.RightInferiorLobeSuperior).set_value(0.3) + ards.get_severity(eLungCompartment.RightInferiorLobeMedialBasal).set_value(0.3) + ards.get_severity(eLungCompartment.RightInferiorLobeAnteriorBasal).set_value(0.3) + ards.get_severity(eLungCompartment.RightInferiorLobeLateralBasal).set_value(0.3) + ards.get_severity(eLungCompartment.RightInferiorLobePosteriorBasal).set_value(0.3) + ards.get_severity(eLungCompartment.LeftInferiorLobePosteriorBasal).set_value(0.3) + ards.get_severity(eLungCompartment.LeftInferiorLobeLateralBasal).set_value(0.3) + ards.get_severity(eLungCompartment.LeftInferiorLobeAnteromedialBasal).set_value(0.3) + ards.get_severity(eLungCompartment.LeftInferiorLobeSuperior).set_value(0.3) + ards.get_severity(eLungCompartment.LeftSuperiorLobeInferiorLingula).set_value(0.3) + ards.get_severity(eLungCompartment.LeftSuperiorLobeSuperiorLingula).set_value(0.3) + ards.get_severity(eLungCompartment.LeftSuperiorLobeAnterior).set_value(0.3) + ards.get_severity(eLungCompartment.LeftSuperiorLobeApicoposterior).set_value(0.3) + pulse.process_action(ards) + + # Advance some time and print out the vitals + pulse.advance_time_s(300) + results = pulse.pull_data() + pulse.print_results() + +HowTo_ExpandedRespiratory() + -- GitLab From 210363167ba2605c01dbdc6f8014cb2deca4d158 Mon Sep 17 00:00:00 2001 From: Jeff Webb Date: Mon, 11 Dec 2023 14:59:54 -0500 Subject: [PATCH 05/35] =?UTF-8?q?=EF=BB=BFAdded=20HowToExpandedRespiratory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cpp/howto/EngineHowTo.cpp | 1 + src/cpp/howto/EngineHowTo.h | 1 + src/cpp/howto/HowTo-ExpandedRespiratory.cpp | 96 +++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 src/cpp/howto/HowTo-ExpandedRespiratory.cpp diff --git a/src/cpp/howto/EngineHowTo.cpp b/src/cpp/howto/EngineHowTo.cpp index 51ecab8e3..1013911b7 100644 --- a/src/cpp/howto/EngineHowTo.cpp +++ b/src/cpp/howto/EngineHowTo.cpp @@ -39,6 +39,7 @@ int main() //HowToExercise(); //HowToHemorrhage(); //HowToIsoShuntAnalysis(); + //HowToExpandedRespiratory(); //HowToExpandedVasculature(); //HowToHemorrhage(); //HowToHemothorax(); diff --git a/src/cpp/howto/EngineHowTo.h b/src/cpp/howto/EngineHowTo.h index 35bd85fce..6390b3082 100644 --- a/src/cpp/howto/EngineHowTo.h +++ b/src/cpp/howto/EngineHowTo.h @@ -31,6 +31,7 @@ void HowToECMO(); void HowToDehydration(); void HowToEnvironmentChange(); void HowToExercise(); +void HowToExpandedRespiratory(); void HowToExpandedVasculature(); void HowToHemorrhage(); void HowToIsoShuntAnalysis(); diff --git a/src/cpp/howto/HowTo-ExpandedRespiratory.cpp b/src/cpp/howto/HowTo-ExpandedRespiratory.cpp new file mode 100644 index 000000000..73dc7e463 --- /dev/null +++ b/src/cpp/howto/HowTo-ExpandedRespiratory.cpp @@ -0,0 +1,96 @@ +/* Distributed under the Apache License, Version 2.0. + See accompanying NOTICE file for details.*/ + +#include "EngineHowTo.h" +#include "PulseEngine.h" +#include "PulseConfiguration.h" +#include "cdm/engine/SEPatientConfiguration.h" +#include "cdm/engine/SEDataRequestManager.h" +#include "cdm/engine/SEEngineTracker.h" +#include "cdm/system/physiology/SEBloodChemistrySystem.h" +#include "cdm/system/physiology/SECardiovascularSystem.h" +#include "cdm/system/physiology/SERespiratorySystem.h" +#include "cdm/patient/actions/SEAcuteRespiratoryDistressSyndromeExacerbation.h" +#include "cdm/properties/SEScalar0To1.h" +#include "cdm/properties/SEScalarFrequency.h" +#include "cdm/properties/SEScalarMassPerVolume.h" +#include "cdm/properties/SEScalarPressure.h" +#include "cdm/properties/SEScalarTemperature.h" +#include "cdm/properties/SEScalarTime.h" +#include "cdm/properties/SEScalarVolume.h" +#include "cdm/properties/SEScalarVolumePerTime.h" +#include "cdm/properties/SEScalar0To1.h" + + +void HowToExpandedRespiratory() +{ + std::unique_ptr pe = CreatePulseEngine(); + pe->GetLogger()->LogToConsole(true); + pe->GetLogger()->SetLogFile("./test_results/howto/HowTo_ExpandedRespiratory.log"); + + PulseConfiguration config; + config.UseExpandedRespiratory(eSwitch::On); + pe->SetConfigurationOverride(&config); + + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("HeartRate", FrequencyUnit::Per_min); + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("SystolicArterialPressure", PressureUnit::mmHg); + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("DiastolicArterialPressure", PressureUnit::mmHg); + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("RespirationRate", FrequencyUnit::Per_min); + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("TidalVolume", VolumeUnit::mL); + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("TotalLungVolume", VolumeUnit::mL); + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("OxygenSaturation"); + + SEPatientConfiguration pc; + pc.SetPatientFile("./patients/StandardMale.json"); + + pe->InitializeEngine(pc); + + pe->GetLogger()->Info("Initial vitals"); + pe->GetLogger()->Info(std::stringstream() << "Tidal Volume : " << pe->GetRespiratorySystem()->GetTidalVolume(VolumeUnit::mL) << VolumeUnit::mL); + pe->GetLogger()->Info(std::stringstream() << "Systolic Pressure : " << pe->GetCardiovascularSystem()->GetSystolicArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); + pe->GetLogger()->Info(std::stringstream() << "Diastolic Pressure : " << pe->GetCardiovascularSystem()->GetDiastolicArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); + pe->GetLogger()->Info(std::stringstream() << "Heart Rate : " << pe->GetCardiovascularSystem()->GetHeartRate(FrequencyUnit::Per_min) << "bpm"); + pe->GetLogger()->Info(std::stringstream() << "Respiration Rate : " << pe->GetRespiratorySystem()->GetRespirationRate(FrequencyUnit::Per_min) << "bpm"); + pe->GetLogger()->Info(std::stringstream() << "Oxygen Saturation : " << pe->GetBloodChemistrySystem()->GetOxygenSaturation()); + + pe->AdvanceModelTime(30, TimeUnit::s); + + pe->GetLogger()->Info("Healthy patient"); + pe->GetLogger()->Info(std::stringstream() << "Tidal Volume : " << pe->GetRespiratorySystem()->GetTidalVolume(VolumeUnit::mL) << VolumeUnit::mL); + pe->GetLogger()->Info(std::stringstream() << "Systolic Pressure : " << pe->GetCardiovascularSystem()->GetSystolicArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); + pe->GetLogger()->Info(std::stringstream() << "Diastolic Pressure : " << pe->GetCardiovascularSystem()->GetDiastolicArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); + pe->GetLogger()->Info(std::stringstream() << "Heart Rate : " << pe->GetCardiovascularSystem()->GetHeartRate(FrequencyUnit::Per_min) << "bpm"); + pe->GetLogger()->Info(std::stringstream() << "Respiration Rate : " << pe->GetRespiratorySystem()->GetRespirationRate(FrequencyUnit::Per_min) << "bpm"); + pe->GetLogger()->Info(std::stringstream() << "Oxygen Saturation : " << pe->GetBloodChemistrySystem()->GetOxygenSaturation()); + + SEAcuteRespiratoryDistressSyndromeExacerbation ARDS; + ARDS.GetSeverity(eLungCompartment::RightSuperiorLobeApical).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::RightSuperiorLobePosterior).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::RightSuperiorLobeAnterior).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::RightMiddleLobeLateral).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::RightMiddleLobeMedial).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::RightInferiorLobeSuperior).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::RightInferiorLobeMedialBasal).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::RightInferiorLobeAnteriorBasal).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::RightInferiorLobeLateralBasal).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::RightInferiorLobePosteriorBasal).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::LeftInferiorLobePosteriorBasal).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::LeftInferiorLobeLateralBasal).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::LeftInferiorLobeAnteromedialBasal).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::LeftInferiorLobeSuperior).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::LeftSuperiorLobeInferiorLingula).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::LeftSuperiorLobeSuperiorLingula).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::LeftSuperiorLobeAnterior).SetValue(0.3); + ARDS.GetSeverity(eLungCompartment::LeftSuperiorLobeApicoposterior).SetValue(0.3); + pe->ProcessAction(ARDS); + + pe->AdvanceModelTime(300, TimeUnit::s); + + pe->GetLogger()->Info("Moderate ARDS"); + pe->GetLogger()->Info(std::stringstream() << "Tidal Volume : " << pe->GetRespiratorySystem()->GetTidalVolume(VolumeUnit::mL) << VolumeUnit::mL); + pe->GetLogger()->Info(std::stringstream() << "Systolic Pressure : " << pe->GetCardiovascularSystem()->GetSystolicArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); + pe->GetLogger()->Info(std::stringstream() << "Diastolic Pressure : " << pe->GetCardiovascularSystem()->GetDiastolicArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); + pe->GetLogger()->Info(std::stringstream() << "Heart Rate : " << pe->GetCardiovascularSystem()->GetHeartRate(FrequencyUnit::Per_min) << "bpm"); + pe->GetLogger()->Info(std::stringstream() << "Respiration Rate : " << pe->GetRespiratorySystem()->GetRespirationRate(FrequencyUnit::Per_min) << "bpm"); + pe->GetLogger()->Info(std::stringstream() << "Oxygen Saturation : " << pe->GetBloodChemistrySystem()->GetOxygenSaturation()); +} -- GitLab From 1d949de17bc0a2cb4a58364446a3cdee44027dbf Mon Sep 17 00:00:00 2001 From: Jeff Webb Date: Mon, 11 Dec 2023 16:07:20 -0500 Subject: [PATCH 06/35] Fixed compartment typo in expanded respiratory HowTo. --- src/python/pulse/howto/HowTo_ExpandedRespiratory.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python/pulse/howto/HowTo_ExpandedRespiratory.py b/src/python/pulse/howto/HowTo_ExpandedRespiratory.py index ee10b1364..998c19d48 100644 --- a/src/python/pulse/howto/HowTo_ExpandedRespiratory.py +++ b/src/python/pulse/howto/HowTo_ExpandedRespiratory.py @@ -75,7 +75,7 @@ def HowTo_ExpandedRespiratory(): pulse.print_results() ards = SEAcuteRespiratoryDistressSyndromeExacerbation() - ards.get_severity(eLungCompartment.RightSuperiorLobe).set_value(0.3) + ards.get_severity(eLungCompartment.RightSuperiorLobeApical).set_value(0.3) ards.get_severity(eLungCompartment.RightSuperiorLobePosterior).set_value(0.3) ards.get_severity(eLungCompartment.RightSuperiorLobeAnterior).set_value(0.3) ards.get_severity(eLungCompartment.RightMiddleLobeLateral).set_value(0.3) -- GitLab From 44db56a0f788dbd46b1a3f64af1d8eef6810c639 Mon Sep 17 00:00:00 2001 From: Jeff Webb Date: Tue, 13 Feb 2024 15:43:24 -0500 Subject: [PATCH 07/35] =?UTF-8?q?=EF=BB=BFAdd=20pulmonary=20resistance=20p?= =?UTF-8?q?aths=20with=20expanded=20model.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/physiology/CardiovascularModel.cpp | 60 ++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp b/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp index a8e77d60d..6dc60efa3 100644 --- a/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp +++ b/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp @@ -759,7 +759,65 @@ namespace pulse if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) { - //Not yet implemented + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalShunt)); + + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorShunt)); + + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries)); + + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries)); + + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1)); + + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1)); } else { -- GitLab From 7c4cec414e5490931f014d32674f04333f55c68b Mon Sep 17 00:00:00 2001 From: JeffWebb6 Date: Fri, 12 Apr 2024 14:13:01 -0400 Subject: [PATCH 08/35] Fix new increment naming. --- src/cpp/engine/common/system/physiology/TissueModel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cpp/engine/common/system/physiology/TissueModel.cpp b/src/cpp/engine/common/system/physiology/TissueModel.cpp index 82889b71d..22694fec2 100644 --- a/src/cpp/engine/common/system/physiology/TissueModel.cpp +++ b/src/cpp/engine/common/system/physiology/TissueModel.cpp @@ -1894,7 +1894,7 @@ namespace pulse { //TODO: Why doesn't this work? //quantity->GetMass().SetReadOnly(false); - //quantity->GetMass().IncrementValue(-massLost_g, MassUnit::g); + //quantity->GetMass().Increment(-massLost_g, MassUnit::g); //quantity->GetMass().SetReadOnly(true); } else -- GitLab From 8682dc185496484d0f44b7ed7a0599bbb3290cb7 Mon Sep 17 00:00:00 2001 From: JeffWebb6 Date: Fri, 12 Apr 2024 14:13:41 -0400 Subject: [PATCH 09/35] Update for new respiratory vs pulmonary naming. --- .../system/physiology/CardiovascularModel.cpp | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp b/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp index 6dc60efa3..1064809e6 100644 --- a/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp +++ b/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp @@ -725,25 +725,25 @@ namespace pulse if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) { - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround)); - - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround)); - m_PulmonaryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround)); + + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround)); } else { -- GitLab From a6c1403dc49ff3589450e3d5ed4f4b18768174e9 Mon Sep 17 00:00:00 2001 From: JeffWebb6 Date: Fri, 12 Apr 2024 14:14:18 -0400 Subject: [PATCH 10/35] Add alveoli path for new insult loop. --- .../system/physiology/RespiratoryModel.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp index c00804aab..ff0481326 100644 --- a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp +++ b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp @@ -552,6 +552,7 @@ namespace pulse eSide::Right, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeApicalAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeApicalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorLobeApicalAlveoliToRightPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1), @@ -563,6 +564,7 @@ namespace pulse eSide::Right, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobePosteriorAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobePosteriorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorLobePosteriorAlveoliToRightPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1), @@ -574,6 +576,7 @@ namespace pulse eSide::Right, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeAnteriorAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeAnteriorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1), @@ -585,6 +588,7 @@ namespace pulse eSide::Right, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeLateralAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeLateralAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightMiddleLobeLateralAlveoliToRightPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1), @@ -596,6 +600,7 @@ namespace pulse eSide::Right, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeMedialAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeMedialAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightMiddleLobeMedialAlveoliToRightPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1), @@ -607,6 +612,7 @@ namespace pulse eSide::Right, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeSuperiorAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeSuperiorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobeSuperiorAlveoliToRightPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1), @@ -618,6 +624,7 @@ namespace pulse eSide::Right, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeMedialBasalAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeMedialBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1), @@ -629,6 +636,7 @@ namespace pulse eSide::Right, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeAnteriorBasalAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeAnteriorBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1), @@ -640,6 +648,7 @@ namespace pulse eSide::Right, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeLateralBasalAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeLateralBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1), @@ -651,6 +660,7 @@ namespace pulse eSide::Right, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobePosteriorBasalAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobePosteriorBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1), @@ -662,6 +672,7 @@ namespace pulse eSide::Left, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobePosteriorBasalAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobePosteriorBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1), @@ -673,6 +684,7 @@ namespace pulse eSide::Left, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeLateralBasalAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeLateralBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1), @@ -684,6 +696,7 @@ namespace pulse eSide::Left, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1), @@ -695,6 +708,7 @@ namespace pulse eSide::Left, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeSuperiorAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeSuperiorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1), @@ -706,6 +720,7 @@ namespace pulse eSide::Left, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1), @@ -717,6 +732,7 @@ namespace pulse eSide::Left, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1), @@ -728,6 +744,7 @@ namespace pulse eSide::Left, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeAnteriorAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeAnteriorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1), @@ -739,6 +756,7 @@ namespace pulse eSide::Left, m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveoli), m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorShunt), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1), -- GitLab From 2b287cb7e723d993b9db972869947f27f234d441 Mon Sep 17 00:00:00 2001 From: JeffWebb6 Date: Mon, 15 Apr 2024 18:13:48 -0400 Subject: [PATCH 11/35] =?UTF-8?q?=EF=BB=BFAdded=20new=20primary=20blast=20?= =?UTF-8?q?lung=20injury=20action.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/config/ScenarioVerification.config | 1 + .../patient/PrimaryBlastLungInjury.json | 85 ++++++++++++++ docs/Markdown/Interface.md | 1 + .../cdm/engine/SEPatientActionCollection.cpp | 38 ++++++ .../cdm/engine/SEPatientActionCollection.h | 7 ++ src/cpp/cdm/files.cmake | 2 + src/cpp/cdm/io/protobuf/PBEngine.cpp | 3 + src/cpp/cdm/io/protobuf/PBPatientActions.cpp | 51 +++++++++ src/cpp/cdm/io/protobuf/PBPatientActions.h | 7 ++ .../actions/SEPrimaryBlastLungInjury.cpp | 105 +++++++++++++++++ .../actions/SEPrimaryBlastLungInjury.h | 38 ++++++ src/cpp/cdm/test/ActionTest.cpp | 4 + .../system/physiology/RespiratoryModel.cpp | 90 ++++++++++++++- src/csharp/PulseFiles.cmake | 1 + src/csharp/pulse/cdm/io/PBPatientActions.cs | 43 +++++++ .../patient/actions/PrimaryBlastLungInjury.cs | 59 ++++++++++ src/java/PulseFiles.cmake | 1 + .../cdm/patient/actions/SEPatientAction.java | 11 ++ .../actions/SEPrimaryBlastLungInjury.java | 108 ++++++++++++++++++ src/python/pulse/cdm/io/patient_actions.py | 13 +++ src/python/pulse/cdm/patient_actions.py | 36 ++++++ .../pulse/howto/HowTo_ExpandedRespiratory.py | 42 +++---- .../pulse/cdm/bind/PatientActions.proto | 29 +++-- 23 files changed, 742 insertions(+), 33 deletions(-) create mode 100644 data/human/adult/scenarios/patient/PrimaryBlastLungInjury.json create mode 100644 src/cpp/cdm/patient/actions/SEPrimaryBlastLungInjury.cpp create mode 100644 src/cpp/cdm/patient/actions/SEPrimaryBlastLungInjury.h create mode 100644 src/csharp/pulse/cdm/patient/actions/PrimaryBlastLungInjury.cs create mode 100644 src/java/com/kitware/pulse/cdm/patient/actions/SEPrimaryBlastLungInjury.java diff --git a/data/config/ScenarioVerification.config b/data/config/ScenarioVerification.config index 93ebf4920..80abe9d87 100644 --- a/data/config/ScenarioVerification.config +++ b/data/config/ScenarioVerification.config @@ -111,6 +111,7 @@ patient/PneumoniaExacerbation.json = ScenarioTest patient/PneumoniaModerateBothLungs.json = ScenarioTest patient/PneumoniaSevereLeftLobe.json = ScenarioTest patient/PneumoniaSevereRightLung.json = ScenarioTest +patient/PrimaryBlastLungInjury.json = ScenarioTest patient/PulmonaryFibrosisSevere.json = ScenarioTest patient/RenalStenosisSevereBilateral.json = ScenarioTest patient/RenalStenosisModerateUnilateral.json = ScenarioTest diff --git a/data/human/adult/scenarios/patient/PrimaryBlastLungInjury.json b/data/human/adult/scenarios/patient/PrimaryBlastLungInjury.json new file mode 100644 index 000000000..3283e87af --- /dev/null +++ b/data/human/adult/scenarios/patient/PrimaryBlastLungInjury.json @@ -0,0 +1,85 @@ +{ + "Name": "PrimaryBlastLungInjury", + "Description": "Increasing severities of ARDS.", + "PatientConfiguration": { "PatientFile": "StandardMale.json" }, + "DataRequestFile": [ + "StandardDataRequests.json", + "RespiratoryDataRequests.json" + ], + "AnyAction": + [ + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 2.0, "Unit": "min" }}}}, + { "PatientAction": { "PrimaryBlastLungInjury": + { + "Severity": [ + { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}] + }} + }, + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}}, + { "PatientAction": { "PrimaryBlastLungInjury": + { + "Severity": [ + { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}] + }} + }, + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}}, + { "PatientAction": { "PrimaryBlastLungInjury": + { + "Severity": [ + { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}] + }} + }, + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 10.0, "Unit": "min" }}}} + ] +} diff --git a/docs/Markdown/Interface.md b/docs/Markdown/Interface.md index da243cf9d..74ca908e2 100644 --- a/docs/Markdown/Interface.md +++ b/docs/Markdown/Interface.md @@ -337,6 +337,7 @@ You will need to create an instance of an action class, fill it out with the nec @refitem MechanicalVentilationTable "Mechanical Ventilation" @refitem NeedleDecompressionTable "Needle Decompression" @refitem PericardialEffusionTable "Pericardial Effusion" + @refitem PrimaryBlastLungInjuryTable "Primary Blast Lung Injury" @refitem PulmonaryShuntExacerbationTable "Pulmonary Shunt Exacerbation" @refitem RespiratoryFatigueTable "Respiratory Fatigue" @refitem RespiratoryMechanicsConfigurationTable "Respiratory Mechanics Configuration" diff --git a/src/cpp/cdm/engine/SEPatientActionCollection.cpp b/src/cpp/cdm/engine/SEPatientActionCollection.cpp index c040827e4..60f4246a1 100644 --- a/src/cpp/cdm/engine/SEPatientActionCollection.cpp +++ b/src/cpp/cdm/engine/SEPatientActionCollection.cpp @@ -29,6 +29,7 @@ #include "cdm/patient/actions/SENeedleDecompression.h" #include "cdm/patient/actions/SEPericardialEffusion.h" #include "cdm/patient/actions/SEPneumoniaExacerbation.h" +#include "cdm/patient/actions/SEPrimaryBlastLungInjury.h" #include "cdm/patient/actions/SEPulmonaryShuntExacerbation.h" #include "cdm/patient/actions/SERespiratoryFatigue.h" #include "cdm/patient/actions/SERespiratoryMechanicsConfiguration.h" @@ -81,6 +82,7 @@ SEPatientActionCollection::SEPatientActionCollection(SESubstanceManager& subMgr) m_RespiratoryMechanicsModification = nullptr; m_PericardialEffusion = nullptr; m_PneumoniaExacerbation = nullptr; + m_PrimaryBlastLungInjury = nullptr; m_PulmonaryShuntExacerbation = nullptr; m_SupplementalOxygen = nullptr; m_LeftOpenTensionPneumothorax = nullptr; @@ -121,6 +123,7 @@ SEPatientActionCollection::~SEPatientActionCollection() SAFE_DELETE(m_RightNeedleDecompression); SAFE_DELETE(m_PericardialEffusion); SAFE_DELETE(m_PneumoniaExacerbation); + SAFE_DELETE(m_PrimaryBlastLungInjury); SAFE_DELETE(m_PulmonaryShuntExacerbation); SAFE_DELETE(m_RespiratoryFatigue); SAFE_DELETE(m_RespiratoryMechanicsConfiguration); @@ -168,6 +171,7 @@ void SEPatientActionCollection::Clear() RemoveRightNeedleDecompression(); RemovePericardialEffusion(); RemovePneumoniaExacerbation(); + RemovePrimaryBlastLungInjury(); RemovePulmonaryShuntExacerbation(); RemoveRespiratoryFatigue(); RemoveRespiratoryMechanicsConfiguration(); @@ -541,6 +545,16 @@ bool SEPatientActionCollection::ProcessAction(const SEPatientAction& action) return true; } + const SEPrimaryBlastLungInjury* pbli = dynamic_cast(&action); + if (pbli != nullptr) + { + GetPrimaryBlastLungInjury().Copy(*pbli, true); + m_PrimaryBlastLungInjury->Activate(); + if (!m_PrimaryBlastLungInjury->IsActive()) + RemovePrimaryBlastLungInjury(); + return true; + } + const SEPulmonaryShuntExacerbation* pulshuntex = dynamic_cast(&action); if (pulshuntex != nullptr) { @@ -1333,6 +1347,26 @@ void SEPatientActionCollection::RemovePneumoniaExacerbation() m_PneumoniaExacerbation->Deactivate(); } +bool SEPatientActionCollection::HasPrimaryBlastLungInjury() const +{ + return m_PrimaryBlastLungInjury == nullptr ? false : m_PrimaryBlastLungInjury->IsActive(); +} +SEPrimaryBlastLungInjury& SEPatientActionCollection::GetPrimaryBlastLungInjury() +{ + if (m_PrimaryBlastLungInjury == nullptr) + m_PrimaryBlastLungInjury = new SEPrimaryBlastLungInjury(GetLogger()); + return *m_PrimaryBlastLungInjury; +} +const SEPrimaryBlastLungInjury* SEPatientActionCollection::GetPrimaryBlastLungInjury() const +{ + return m_PrimaryBlastLungInjury; +} +void SEPatientActionCollection::RemovePrimaryBlastLungInjury() +{ + if (m_PrimaryBlastLungInjury) + m_PrimaryBlastLungInjury->Deactivate(); +} + bool SEPatientActionCollection::HasPulmonaryShuntExacerbation() const { return m_PulmonaryShuntExacerbation == nullptr ? false : m_PulmonaryShuntExacerbation->IsActive(); @@ -1781,6 +1815,8 @@ void SEPatientActionCollection::GetAllActions(std::vector& acti actions.push_back(GetPericardialEffusion()); if (HasPneumoniaExacerbation()) actions.push_back(GetPneumoniaExacerbation()); + if (HasPrimaryBlastLungInjury()) + actions.push_back(GetPrimaryBlastLungInjury()); if (HasPulmonaryShuntExacerbation()) actions.push_back(GetPulmonaryShuntExacerbation()); if (HasRespiratoryFatigue()) @@ -1884,6 +1920,8 @@ const SEScalar* SEPatientActionCollection::GetScalar(const std::string& actionNa return GetPericardialEffusion().GetScalar(property); if (actionName == "PneumoniaExacerbation") return GetPneumoniaExacerbation().GetScalar(property); + if (actionName == "PrimaryBlastLungInjury") + return GetPrimaryBlastLungInjury().GetScalar(property); if (actionName == "PulmonaryShuntExacerbation") return GetPulmonaryShuntExacerbation().GetScalar(property); if (actionName == "RespiratoryFatigue") diff --git a/src/cpp/cdm/engine/SEPatientActionCollection.h b/src/cpp/cdm/engine/SEPatientActionCollection.h index d885e4b47..356a33317 100644 --- a/src/cpp/cdm/engine/SEPatientActionCollection.h +++ b/src/cpp/cdm/engine/SEPatientActionCollection.h @@ -30,6 +30,7 @@ class SEMechanicalVentilation; class SENeedleDecompression; class SEPericardialEffusion; class SEPneumoniaExacerbation; +class SEPrimaryBlastLungInjury; class SEPulmonaryShuntExacerbation; class SERespiratoryFatigue; class SERespiratoryMechanicsConfiguration; @@ -203,6 +204,11 @@ public: const SEPneumoniaExacerbation* GetPneumoniaExacerbation() const; void RemovePneumoniaExacerbation(); + bool HasPrimaryBlastLungInjury() const; + SEPrimaryBlastLungInjury& GetPrimaryBlastLungInjury(); + const SEPrimaryBlastLungInjury* GetPrimaryBlastLungInjury() const; + void RemovePrimaryBlastLungInjury(); + bool HasPulmonaryShuntExacerbation() const; SEPulmonaryShuntExacerbation& GetPulmonaryShuntExacerbation(); const SEPulmonaryShuntExacerbation* GetPulmonaryShuntExacerbation() const; @@ -327,6 +333,7 @@ protected: SENeedleDecompression* m_RightNeedleDecompression; SEPericardialEffusion* m_PericardialEffusion; SEPneumoniaExacerbation* m_PneumoniaExacerbation; + SEPrimaryBlastLungInjury* m_PrimaryBlastLungInjury; SEPulmonaryShuntExacerbation* m_PulmonaryShuntExacerbation; SERespiratoryFatigue* m_RespiratoryFatigue; SERespiratoryMechanicsConfiguration* m_RespiratoryMechanicsConfiguration; diff --git a/src/cpp/cdm/files.cmake b/src/cpp/cdm/files.cmake index 8d0fad42d..6e08830c4 100644 --- a/src/cpp/cdm/files.cmake +++ b/src/cpp/cdm/files.cmake @@ -155,6 +155,7 @@ set(CDM_H_FILES cdm/patient/actions/SEPatientAssessmentRequest.h cdm/patient/actions/SEPericardialEffusion.h cdm/patient/actions/SEPneumoniaExacerbation.h + cdm/patient/actions/SEPrimaryBlastLungInjury.h cdm/patient/actions/SEPulmonaryShuntExacerbation.h cdm/patient/actions/SERespiratoryFatigue.h cdm/patient/actions/SERespiratoryMechanicsConfiguration.h @@ -531,6 +532,7 @@ set(CDM_CPP_FILES cdm/patient/actions/SEPatientAssessmentRequest.cpp cdm/patient/actions/SEPericardialEffusion.cpp cdm/patient/actions/SEPneumoniaExacerbation.cpp + cdm/patient/actions/SEPrimaryBlastLungInjury.cpp cdm/patient/actions/SEPulmonaryShuntExacerbation.cpp cdm/patient/actions/SERespiratoryFatigue.cpp cdm/patient/actions/SERespiratoryMechanicsConfiguration.cpp diff --git a/src/cpp/cdm/io/protobuf/PBEngine.cpp b/src/cpp/cdm/io/protobuf/PBEngine.cpp index b7600c006..287955251 100644 --- a/src/cpp/cdm/io/protobuf/PBEngine.cpp +++ b/src/cpp/cdm/io/protobuf/PBEngine.cpp @@ -100,6 +100,7 @@ POP_PROTO_WARNINGS #include "cdm/patient/actions/SENeedleDecompression.h" #include "cdm/patient/actions/SEPericardialEffusion.h" #include "cdm/patient/actions/SEPneumoniaExacerbation.h" +#include "cdm/patient/actions/SEPrimaryBlastLungInjury.h" #include "cdm/patient/actions/SEPulmonaryShuntExacerbation.h" #include "cdm/patient/actions/SERespiratoryFatigue.h" #include "cdm/patient/actions/SERespiratoryMechanicsConfiguration.h" @@ -377,6 +378,8 @@ void PBEngine::Serialize(const SEPatientActionCollection& src, CDM_BIND::ActionL dst.mutable_anyaction()->AddAllocated(PBAction::Unload(*src.m_PericardialEffusion)); if (src.HasPneumoniaExacerbation()) dst.mutable_anyaction()->AddAllocated(PBAction::Unload(*src.m_PneumoniaExacerbation)); + if (src.HasPrimaryBlastLungInjury()) + dst.mutable_anyaction()->AddAllocated(PBAction::Unload(*src.m_PrimaryBlastLungInjury)); if (src.HasPulmonaryShuntExacerbation()) dst.mutable_anyaction()->AddAllocated(PBAction::Unload(*src.m_PulmonaryShuntExacerbation)); if (src.HasRespiratoryFatigue()) diff --git a/src/cpp/cdm/io/protobuf/PBPatientActions.cpp b/src/cpp/cdm/io/protobuf/PBPatientActions.cpp index 05f6f2171..a89bdc3e2 100644 --- a/src/cpp/cdm/io/protobuf/PBPatientActions.cpp +++ b/src/cpp/cdm/io/protobuf/PBPatientActions.cpp @@ -42,6 +42,7 @@ POP_PROTO_WARNINGS #include "cdm/patient/actions/SENeedleDecompression.h" #include "cdm/patient/actions/SEPericardialEffusion.h" #include "cdm/patient/actions/SEPneumoniaExacerbation.h" +#include "cdm/patient/actions/SEPrimaryBlastLungInjury.h" #include "cdm/patient/actions/SEPulmonaryShuntExacerbation.h" #include "cdm/patient/actions/SERespiratoryFatigue.h" #include "cdm/patient/actions/SERespiratoryMechanicsConfiguration.h" @@ -1192,6 +1193,44 @@ void PBPatientAction::Copy(const SEPneumoniaExacerbation& src, SEPneumoniaExacer PBPatientAction::Serialize(data, dst); } +void PBPatientAction::Load(const CDM_BIND::PrimaryBlastLungInjuryData& src, SEPrimaryBlastLungInjury& dst) +{ + dst.Clear(); + PBPatientAction::Serialize(src, dst); +} +void PBPatientAction::Serialize(const CDM_BIND::PrimaryBlastLungInjuryData& src, SEPrimaryBlastLungInjury& dst) +{ + PBPatientAction::Serialize(src.patientaction(), dst); + for (int i = 0; i < src.severity_size(); i++) + { + auto& impairment = src.severity()[i]; + PBProperty::Load(impairment.severity(), dst.GetSeverity((eLungCompartment)impairment.compartment())); + } +} +CDM_BIND::PrimaryBlastLungInjuryData* PBPatientAction::Unload(const SEPrimaryBlastLungInjury& src) +{ + CDM_BIND::PrimaryBlastLungInjuryData* dst = new CDM_BIND::PrimaryBlastLungInjuryData(); + PBPatientAction::Serialize(src, *dst); + return dst; +} +void PBPatientAction::Serialize(const SEPrimaryBlastLungInjury& src, CDM_BIND::PrimaryBlastLungInjuryData& dst) +{ + PBPatientAction::Serialize(src, *dst.mutable_patientaction()); + for (auto itr : src.m_Severities) + { + auto impairment = dst.mutable_severity()->Add(); + impairment->set_compartment((CDM_BIND::eLungCompartment)itr.first); + impairment->set_allocated_severity(PBProperty::Unload(*itr.second)); + } +} +void PBPatientAction::Copy(const SEPrimaryBlastLungInjury& src, SEPrimaryBlastLungInjury& dst) +{ + dst.Clear(); + CDM_BIND::PrimaryBlastLungInjuryData data; + PBPatientAction::Serialize(src, data); + PBPatientAction::Serialize(data, dst); +} + void PBPatientAction::Load(const CDM_BIND::PulmonaryShuntExacerbationData& src, SEPulmonaryShuntExacerbation& dst) { dst.Clear(); @@ -1775,6 +1814,12 @@ SEPatientAction* PBPatientAction::Load(const CDM_BIND::AnyPatientActionData& any PBPatientAction::Load(any.pneumoniaexacerbation(), *a); return a; } + case CDM_BIND::AnyPatientActionData::ActionCase::kPrimaryBlastLungInjury: + { + SEPrimaryBlastLungInjury* a = new SEPrimaryBlastLungInjury(); + PBPatientAction::Load(any.primaryblastlunginjury(), *a); + return a; + } case CDM_BIND::AnyPatientActionData::ActionCase::kPulmonaryShuntExacerbation: { SEPulmonaryShuntExacerbation* a = new SEPulmonaryShuntExacerbation(); @@ -2027,6 +2072,12 @@ CDM_BIND::AnyPatientActionData* PBPatientAction::Unload(const SEPatientAction& a any->set_allocated_pneumoniaexacerbation(PBPatientAction::Unload(*lp)); return any; } + const SEPrimaryBlastLungInjury* pbli = dynamic_cast(&action); + if (pbli != nullptr) + { + any->set_allocated_primaryblastlunginjury(PBPatientAction::Unload(*pbli)); + return any; + } const SEPulmonaryShuntExacerbation* pse = dynamic_cast(&action); if (pse != nullptr) { diff --git a/src/cpp/cdm/io/protobuf/PBPatientActions.h b/src/cpp/cdm/io/protobuf/PBPatientActions.h index a02cacc27..62330b672 100644 --- a/src/cpp/cdm/io/protobuf/PBPatientActions.h +++ b/src/cpp/cdm/io/protobuf/PBPatientActions.h @@ -32,6 +32,7 @@ CDM_BIND_DECL2(NeedleDecompression) CDM_BIND_DECL2(PatientAssessmentRequest) CDM_BIND_DECL2(PericardialEffusion) CDM_BIND_DECL2(PneumoniaExacerbation) +CDM_BIND_DECL2(PrimaryBlastLungInjury) CDM_BIND_DECL2(PulmonaryShuntExacerbation) CDM_BIND_DECL2(RespiratoryFatigue) CDM_BIND_DECL2(RespiratoryMechanicsConfiguration) @@ -232,6 +233,12 @@ public: static void Serialize(const SEPneumoniaExacerbation& src, CDM_BIND::PneumoniaExacerbationData& dst); static void Copy(const SEPneumoniaExacerbation& src, SEPneumoniaExacerbation& dst); + static void Load(const CDM_BIND::PrimaryBlastLungInjuryData& src, SEPrimaryBlastLungInjury& dst); + static CDM_BIND::PrimaryBlastLungInjuryData* Unload(const SEPrimaryBlastLungInjury& src); + static void Serialize(const CDM_BIND::PrimaryBlastLungInjuryData& src, SEPrimaryBlastLungInjury& dst); + static void Serialize(const SEPrimaryBlastLungInjury& src, CDM_BIND::PrimaryBlastLungInjuryData& dst); + static void Copy(const SEPrimaryBlastLungInjury& src, SEPrimaryBlastLungInjury& dst); + static void Load(const CDM_BIND::PulmonaryShuntExacerbationData& src, SEPulmonaryShuntExacerbation& dst); static CDM_BIND::PulmonaryShuntExacerbationData* Unload(const SEPulmonaryShuntExacerbation& src); static void Serialize(const CDM_BIND::PulmonaryShuntExacerbationData& src, SEPulmonaryShuntExacerbation& dst); diff --git a/src/cpp/cdm/patient/actions/SEPrimaryBlastLungInjury.cpp b/src/cpp/cdm/patient/actions/SEPrimaryBlastLungInjury.cpp new file mode 100644 index 000000000..e1f1cb717 --- /dev/null +++ b/src/cpp/cdm/patient/actions/SEPrimaryBlastLungInjury.cpp @@ -0,0 +1,105 @@ +/* Distributed under the Apache License, Version 2.0. + See accompanying NOTICE file for details.*/ + +#include "cdm/CommonDefs.h" +#include "cdm/patient/actions/SEPrimaryBlastLungInjury.h" +#include "cdm/properties/SEScalar0To1.h" +#include "cdm/io/protobuf/PBPatientActions.h" + +SEPrimaryBlastLungInjury::SEPrimaryBlastLungInjury(Logger* logger) : SEPatientAction(logger) +{ + +} + +SEPrimaryBlastLungInjury::~SEPrimaryBlastLungInjury() +{ + DELETE_MAP_SECOND(m_Severities); +} + +void SEPrimaryBlastLungInjury::Clear() +{ + SEPatientAction::Clear(); + for (auto itr : m_Severities) + if (itr.second != nullptr) + itr.second->Invalidate(); +} + +void SEPrimaryBlastLungInjury::Copy(const SEPrimaryBlastLungInjury& src, bool /*preserveState*/) +{ + //if(preserveState) // Cache any state before copy, + PBPatientAction::Copy(src, *this); + //if(preserveState) // Put back any state +} + +bool SEPrimaryBlastLungInjury::IsValid() const +{ + if (!SEPatientAction::IsValid()) + return false; + return HasSeverity(); +} +bool SEPrimaryBlastLungInjury::IsActive() const +{ + if (!SEPatientAction::IsActive()) + return false; + if (!HasSeverity()) + return false; + return true; +} +void SEPrimaryBlastLungInjury::Activate() +{ + SEPatientAction::Activate(); + SERespiratorySystem::FillLungImpairmentMap(m_Severities); +} +void SEPrimaryBlastLungInjury::Deactivate() +{ + SEPatientAction::Deactivate(); + Clear();//No stateful properties +} + +const SEScalar* SEPrimaryBlastLungInjury::GetScalar(const std::string& /*name*/) +{ + return nullptr; +} + +bool SEPrimaryBlastLungInjury::HasSeverity() const +{ + for (auto itr : m_Severities) + if (itr.second != nullptr && itr.second->IsValid()) + return true; + return false; +} +LungImpairmentMap& SEPrimaryBlastLungInjury::GetSeverities() +{ + return m_Severities; +} +const LungImpairmentMap& SEPrimaryBlastLungInjury::GetSeverities() const +{ + return m_Severities; +} + +bool SEPrimaryBlastLungInjury::HasSeverity(eLungCompartment cmpt) const +{ + auto s = m_Severities.find(cmpt); + if (s == m_Severities.end()) + return false; + if (s->second == nullptr) + return false; + return s->second->IsValid(); +} +SEScalar0To1& SEPrimaryBlastLungInjury::GetSeverity(eLungCompartment cmpt) +{ + SEScalar0To1* s = m_Severities[cmpt]; + if (s == nullptr) + { + s = new SEScalar0To1(); + m_Severities[cmpt] = s; + } + return *s; +} +double SEPrimaryBlastLungInjury::GetSeverity(eLungCompartment cmpt) const +{ + auto s = m_Severities.find(cmpt); + if (s == m_Severities.end()) + return SEScalar::dNaN(); + return s->second->GetValue(); +} diff --git a/src/cpp/cdm/patient/actions/SEPrimaryBlastLungInjury.h b/src/cpp/cdm/patient/actions/SEPrimaryBlastLungInjury.h new file mode 100644 index 000000000..97cb50636 --- /dev/null +++ b/src/cpp/cdm/patient/actions/SEPrimaryBlastLungInjury.h @@ -0,0 +1,38 @@ +/* Distributed under the Apache License, Version 2.0. + See accompanying NOTICE file for details.*/ + +#pragma once +#include "cdm/patient/actions/SEPatientAction.h" +#include "cdm/system/physiology/SERespiratorySystem.h" + +class CDM_DECL SEPrimaryBlastLungInjury : public SEPatientAction +{ + friend class PBPatientAction;//friend the serialization class +public: + + SEPrimaryBlastLungInjury(Logger* logger=nullptr); + virtual ~SEPrimaryBlastLungInjury(); + + static constexpr char const* Name = "ARDS Exacerbation"; + std::string GetName() const override { return Name; } + + void Clear() override; + void Copy(const SEPrimaryBlastLungInjury& src, bool preserveState=false); + + const SEScalar* GetScalar(const std::string& name) override; + + bool IsValid() const override; + bool IsActive() const override; + void Activate() override; + void Deactivate() override; + + virtual bool HasSeverity() const; + virtual LungImpairmentMap& GetSeverities(); + virtual const LungImpairmentMap& GetSeverities() const; + virtual bool HasSeverity(eLungCompartment cmpt) const; + virtual SEScalar0To1& GetSeverity(eLungCompartment cmpt); + virtual double GetSeverity(eLungCompartment cmpt) const; + +protected: + LungImpairmentMap m_Severities; +}; \ No newline at end of file diff --git a/src/cpp/cdm/test/ActionTest.cpp b/src/cpp/cdm/test/ActionTest.cpp index aca5febea..31d36601c 100644 --- a/src/cpp/cdm/test/ActionTest.cpp +++ b/src/cpp/cdm/test/ActionTest.cpp @@ -33,6 +33,7 @@ #include "cdm/patient/actions/SENeedleDecompression.h" #include "cdm/patient/actions/SEPatientAssessmentRequest.h" #include "cdm/patient/actions/SEPneumoniaExacerbation.h" +#include "cdm/patient/actions/SEPrimaryBlastLungInjury.h" #include "cdm/patient/actions/SEPericardialEffusion.h" #include "cdm/patient/actions/SEPulmonaryShuntExacerbation.h" #include "cdm/patient/actions/SERespiratoryFatigue.h" @@ -256,6 +257,9 @@ void CommonDataModelTest::ActionTest(const std::string& rptDirectory) lpe.GetSeverity(eLungCompartment::RightLung).SetValue(0.3); TestAction(testSuite.CreateTestCase(), subMgr, lpe, "-Severity-LeftLungAffected-RightLungAffected"); + //Aaron -do this + //SEPrimaryBlastLungInjury + SEMechanicalVentilation mv; mv.SetState(eSwitch::On); mv.GetFlow().SetValue(5, VolumePerTimeUnit::mL_Per_min); diff --git a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp index ff0481326..c11582418 100644 --- a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp +++ b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp @@ -36,6 +36,7 @@ #include "cdm/patient/actions/SEMechanicalVentilation.h" #include "cdm/patient/actions/SENeedleDecompression.h" #include "cdm/patient/actions/SEPneumoniaExacerbation.h" +#include "cdm/patient/actions/SEPrimaryBlastLungInjury.h" #include "cdm/patient/actions/SEPulmonaryShuntExacerbation.h" #include "cdm/patient/actions/SERespiratoryFatigue.h" #include "cdm/patient/actions/SERespiratoryMechanicsConfiguration.h" @@ -3386,7 +3387,32 @@ namespace pulse double alveoliVolumeRatio = alveoliVolumeBaseline_L / totalBaselineAlveoliVolume_L; //------------------------------------------------------------------------------------------------------ - //Restrictive + //PBLI + //Same as ARDS + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + if (severity > 0.29) + { + // best fit for (severity, volume): (0, 0), (0.3, 0), (0.6, 0.003), (0.9, 0.15) + deadSpaceIncrement_L = alveoliVolumeRatio * (0.3704 * std::pow(severity, 3.0) - 0.1667 * std::pow(severity, 2.0) + 0.0167 * severity); + } + + if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) + { + //Prevent negative volume with high severities + alveoliIncrement_L = -alveoliVolumeRatio * GeneralMath::LinearInterpolator(0.0, 1.0, 0.0, 0.9, severity); + } + else + { + alveoliIncrement_L = -alveoliVolumeRatio * GeneralMath::LinearInterpolator(0.0, 1.0, 0.0, 1.2, severity); + } + } + + //------------------------------------------------------------------------------------------------------ + //ARDS + //Exacerbation will overwrite the condition, even if it means improvement + //The dead space cannot be greater than the FRC in our model double restrictiveSeverity = 0.0; @@ -4150,6 +4176,15 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, severity); } + //------------------------------------------------------------------------------------------------------ + //PBLI + //Same as ARDS + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + restrictiveSeverity = MAX(restrictiveSeverity, severity); + } + //------------------------------------------------------------------------------------------------------ //ARDS //Exacerbation will overwrite the condition, even if it means improvement @@ -4325,6 +4360,15 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, severity); } + //------------------------------------------------------------------------------------------------------ + //PBLI + //Same as ARDS + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + restrictiveComplianceScalingFactor = MIN(restrictiveComplianceScalingFactor, GeneralMath::ExponentialDecayFunction(10, 0.45, 1.0, severity)); + } + //------------------------------------------------------------------------------------------------------ //ARDS //Exacerbation will overwrite the condition, even if it means improvement @@ -4524,6 +4568,16 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, Severity); } + //------------------------------------------------------------------------------------------------------ + //PBLI + //Same as ARDS + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + + restrictiveSeverity = MAX(restrictiveSeverity, severity); + } + //------------------------------------------------------------------------------------------------------ //ARDS //Exacerbation will overwrite the condition, even if it means improvement @@ -4694,6 +4748,16 @@ namespace pulse //recruitmentScalingFactor = GeneralMath::ExponentialDecayFunction(10, 0.15, 1.0, 1.0 - recruitedFraction); double combinedSeverity = 0.0; + //------------------------------------------------------------------------------------------------------ + //PBLI + //Same as ARDS with a multiplier + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + double PBLIMultiplier = GeneralMath::LinearInterpolator(0.0, 1.0, 1.0, 0.75, severity); + damageScalingFactor = MIN(damageScalingFactor, GeneralMath::ExponentialDecayFunction(10, 0.15 * PBLIMultiplier, 1.0, severity)); + } + //------------------------------------------------------------------------------------------------------ //ARDS //Exacerbation will overwrite the condition, even if it means improvement @@ -4946,6 +5010,17 @@ namespace pulse combinedSeverity = MAX(combinedSeverity, severity); } + //------------------------------------------------------------------------------------------------------ + //PBLI + //Use a multiplier on ARDS equation + double PBLIMultiplier = 1.0; + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + PBLIMultiplier = GeneralMath::LinearInterpolator(0.0, 1.0, 1.0, 0.5, severity); + combinedSeverity = MAX(combinedSeverity, severity); + } + //------------------------------------------------------------------------------------------------------ //ARDS //Exacerbation will overwrite the condition, even if it means improvement @@ -4997,6 +5072,8 @@ namespace pulse recruitmentScalingFactor = GeneralMath::Damper(recruitmentScalingFactor, m_PreviousShuntScalingFactor[iter], dampenFraction_perSec, m_data.GetTimeStep_s()); m_PreviousShuntScalingFactor[iter] = recruitmentScalingFactor; + double totalScalingFactor = MIN(recruitmentScalingFactor, damageScalingFactor) * PBLIMultiplier; + //------------------------------------------------------------------------------------------------------ //COPD //Exacerbation will overwrite the condition, even if it means improvement @@ -5194,6 +5271,17 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, severity); } + //------------------------------------------------------------------------------------------------------ + //PBLI + //Same as ARDS + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + + severity = GeneralMath::LinearInterpolator(0.0, 1.0, 0.0, 0.8, severity); + combinedSeverity = MAX(combinedSeverity, severity); + } + //------------------------------------------------------------------------------------------------------ //ARDS //Exacerbation will overwrite the condition, even if it means improvement diff --git a/src/csharp/PulseFiles.cmake b/src/csharp/PulseFiles.cmake index ce4cda183..78882be93 100644 --- a/src/csharp/PulseFiles.cmake +++ b/src/csharp/PulseFiles.cmake @@ -143,6 +143,7 @@ set(PULSE_CSHARP_FILES ${CMAKE_CURRENT_SOURCE_DIR}/pulse/cdm/patient/actions/SEPatientAction.cs ${CMAKE_CURRENT_SOURCE_DIR}/pulse/cdm/patient/actions/SEPericardialEffusion.cs ${CMAKE_CURRENT_SOURCE_DIR}/pulse/cdm/patient/actions/SEPneumoniaExacerbation.cs + ${CMAKE_CURRENT_SOURCE_DIR}/pulse/cdm/patient/actions/SEPrimaryBlastLungInjury.cs ${CMAKE_CURRENT_SOURCE_DIR}/pulse/cdm/patient/actions/SEPulmonaryShuntExacerbation.cs ${CMAKE_CURRENT_SOURCE_DIR}/pulse/cdm/patient/actions/SERespiratoryFatigue.cs ${CMAKE_CURRENT_SOURCE_DIR}/pulse/cdm/patient/actions/SERespiratoryMechanicsConfiguration.cs diff --git a/src/csharp/pulse/cdm/io/PBPatientActions.cs b/src/csharp/pulse/cdm/io/PBPatientActions.cs index 09ee407b9..da2196e4f 100644 --- a/src/csharp/pulse/cdm/io/PBPatientActions.cs +++ b/src/csharp/pulse/cdm/io/PBPatientActions.cs @@ -143,6 +143,12 @@ namespace Pulse.CDM Serialize(any.PneumoniaExacerbation, lp); return lp; } + if (any.PrimaryBlastLungInjury != null) + { + SEPrimaryBlastLungInjury pbli = new SEPrimaryBlastLungInjury(); + Serialize(any.PrimaryBlastLungInjury, pbli); + return pbli; + } if (any.MechanicalVentilation != null) { SEMechanicalVentilation mv = new SEMechanicalVentilation(); @@ -344,6 +350,11 @@ namespace Pulse.CDM any.PneumoniaExacerbation = Unload((SEPneumoniaExacerbation)action); return any; } + if (action.GetType().IsAssignableFrom(typeof(SEPrimaryBlastLungInjury))) + { + any.PrimaryBlastLungInjury = Unload((SEPrimaryBlastLungInjury)action); + return any; + } if (action.GetType().IsAssignableFrom(typeof(SEMechanicalVentilation))) { any.MechanicalVentilation = Unload((SEMechanicalVentilation)action); @@ -1373,6 +1384,38 @@ namespace Pulse.CDM } #endregion + #region SEPrimaryBlastLungInjury + public static void Load(pulse.cdm.bind.PrimaryBlastLungInjuryData src, SEPrimaryBlastLungInjury dst) + { + Serialize(src, dst); + } + public static void Serialize(pulse.cdm.bind.PrimaryBlastLungInjuryData src, SEPrimaryBlastLungInjury dst) + { + if (src.PatientAction != null) + Serialize(src.PatientAction, dst); + foreach (var s in src.Severity) + PBProperty.Load(s.Severity, dst.GetSeverity((eLungCompartment)s.Compartment)); + } + public static pulse.cdm.bind.PrimaryBlastLungInjuryData Unload(SEPrimaryBlastLungInjury src) + { + pulse.cdm.bind.PrimaryBlastLungInjuryData dst = new pulse.cdm.bind.PrimaryBlastLungInjuryData(); + Serialize(src, dst); + return dst; + } + public static void Serialize(SEPrimaryBlastLungInjury src, pulse.cdm.bind.PrimaryBlastLungInjuryData dst) + { + dst.PatientAction = new pulse.cdm.bind.PatientActionData(); + Serialize(src, dst.PatientAction); + foreach (var s in src.GetSeverities()) + { + LungImpairmentData d = new LungImpairmentData(); + d.Compartment = (pulse.cdm.bind.eLungCompartment)s.Key; + d.Severity = PBProperty.Unload(s.Value); + dst.Severity.Add(d); + } + } + #endregion + #region SEPulmonaryShuntExacerbation public static void Load(pulse.cdm.bind.PulmonaryShuntExacerbationData src, SEPulmonaryShuntExacerbation dst) { diff --git a/src/csharp/pulse/cdm/patient/actions/PrimaryBlastLungInjury.cs b/src/csharp/pulse/cdm/patient/actions/PrimaryBlastLungInjury.cs new file mode 100644 index 000000000..7c248dcf8 --- /dev/null +++ b/src/csharp/pulse/cdm/patient/actions/PrimaryBlastLungInjury.cs @@ -0,0 +1,59 @@ +/* Distributed under the Apache License, Version 2.0. + See accompanying NOTICE file for details.*/ + +using System.Collections; +using System.Collections.Generic; + +namespace Pulse.CDM +{ + using LungImpairmentMap = Dictionary; + public class SEPrimaryBlastLungInjury : SEPatientAction + { + protected LungImpairmentMap severities; + + public SEPrimaryBlastLungInjury() + { + severities = new LungImpairmentMap(); + } + + public override void Clear() + { + base.Clear(); + foreach (var itr in severities) + itr.Value.Invalidate(); + } + + public override bool IsValid() + { + return HasSeverity(); + } + + public bool HasSeverity() + { + foreach (var itr in severities) + if (itr.Value.IsValid()) + return true; + return false; + } + public bool HasSeverity(eLungCompartment c) + { + if (!severities.ContainsKey(c)) + return false; + return severities[c].IsValid(); + } + public SEScalar0To1 GetSeverity(eLungCompartment c) + { + SEScalar0To1 s = severities[c]; + if(s == null) + { + s = new SEScalar0To1(); + severities[c] = s; + } + return s; + } + public LungImpairmentMap GetSeverities() + { + return severities; + } + } +} diff --git a/src/java/PulseFiles.cmake b/src/java/PulseFiles.cmake index d5af2f24d..4095bbf06 100644 --- a/src/java/PulseFiles.cmake +++ b/src/java/PulseFiles.cmake @@ -108,6 +108,7 @@ set(PULSE_JAVA_FILES ${CMAKE_CURRENT_SOURCE_DIR}/com/kitware/pulse/cdm/patient/actions/SEPatientAssessmentRequest.java ${CMAKE_CURRENT_SOURCE_DIR}/com/kitware/pulse/cdm/patient/actions/SEPericardialEffusion.java ${CMAKE_CURRENT_SOURCE_DIR}/com/kitware/pulse/cdm/patient/actions/SEPneumoniaExacerbation.java + ${CMAKE_CURRENT_SOURCE_DIR}/com/kitware/pulse/cdm/patient/actions/SEPrimaryBlastLungInjury.java ${CMAKE_CURRENT_SOURCE_DIR}/com/kitware/pulse/cdm/patient/actions/SEPulmonaryShuntExacerbation.java ${CMAKE_CURRENT_SOURCE_DIR}/com/kitware/pulse/cdm/patient/actions/SERespiratoryFatigue.java ${CMAKE_CURRENT_SOURCE_DIR}/com/kitware/pulse/cdm/patient/actions/SERespiratoryMechanicsConfiguration.java diff --git a/src/java/com/kitware/pulse/cdm/patient/actions/SEPatientAction.java b/src/java/com/kitware/pulse/cdm/patient/actions/SEPatientAction.java index 32a5b47a2..da7a271ba 100644 --- a/src/java/com/kitware/pulse/cdm/patient/actions/SEPatientAction.java +++ b/src/java/com/kitware/pulse/cdm/patient/actions/SEPatientAction.java @@ -197,6 +197,12 @@ public abstract class SEPatientAction extends SEAction SEPneumoniaExacerbation.load(c.getPneumoniaExacerbation(), dst); return dst; } + case PRIMARYBLASTLUNGINJURY: + { + SEPrimaryBlastLungInjury dst = new SEPrimaryBlastLungInjury(); + SEPrimaryBlastLungInjury.load(c.getPrimaryBlastLungInjury(), dst); + return dst; + } case PULMONARYSHUNTEXACERBATION: { SEPulmonaryShuntExacerbation dst = new SEPulmonaryShuntExacerbation(); @@ -389,6 +395,11 @@ public abstract class SEPatientAction extends SEAction dst.setPneumoniaExacerbation(SEPneumoniaExacerbation.unload((SEPneumoniaExacerbation)c)); return dst.build(); } + if(c instanceof SEPrimaryBlastLungInjury) + { + dst.setPrimaryBlastLungInjury(SEPrimaryBlastLungInjury.unload((SEPrimaryBlastLungInjury)c)); + return dst.build(); + } if(c instanceof SEMechanicalVentilation) { dst.setMechanicalVentilation(SEMechanicalVentilation.unload((SEMechanicalVentilation)c)); diff --git a/src/java/com/kitware/pulse/cdm/patient/actions/SEPrimaryBlastLungInjury.java b/src/java/com/kitware/pulse/cdm/patient/actions/SEPrimaryBlastLungInjury.java new file mode 100644 index 000000000..683d2df4f --- /dev/null +++ b/src/java/com/kitware/pulse/cdm/patient/actions/SEPrimaryBlastLungInjury.java @@ -0,0 +1,108 @@ +/* Distributed under the Apache License, Version 2.0. + See accompanying NOTICE file for details.*/ + +package com.kitware.pulse.cdm.patient.actions; + +import java.util.*; + +import com.kitware.pulse.cdm.bind.PatientActions.PrimaryBlastLungInjuryData; +import com.kitware.pulse.cdm.bind.Physiology.LungImpairmentData; +import com.kitware.pulse.cdm.bind.Physiology.eLungCompartment; +import com.kitware.pulse.cdm.properties.SEScalar0To1; + +public class SEPrimaryBlastLungInjury extends SEPatientAction +{ + private static final long serialVersionUID = 8405714651383110396L; + + protected Map severities; + + public SEPrimaryBlastLungInjury() + { + severities = new HashMap(); + } + + @Override + public void clear() + { + super.clear(); + for(SEScalar0To1 s : severities.values()) + s.invalidate(); + } + + public void copy(SEPrimaryBlastLungInjury other) + { + if(this==other) + return; + super.copy(other); + for (Map.Entry entry : other.severities.entrySet()) + getSeverity(entry.getKey()).set(entry.getValue()); + } + + @Override + public boolean isValid() + { + return hasSeverity(); + } + + public static void load(PrimaryBlastLungInjuryData src, SEPrimaryBlastLungInjury dst) + { + SEPatientAction.load(src.getPatientAction(), dst); + for (LungImpairmentData d : src.getSeverityList()) + SEScalar0To1.load(d.getSeverity(), dst.getSeverity(d.getCompartment())); + } + + public static PrimaryBlastLungInjuryData unload(SEPrimaryBlastLungInjury src) + { + PrimaryBlastLungInjuryData.Builder dst = PrimaryBlastLungInjuryData.newBuilder(); + unload(src,dst); + return dst.build(); + } + + protected static void unload(SEPrimaryBlastLungInjury src, PrimaryBlastLungInjuryData.Builder dst) + { + SEPatientAction.unload(src, dst.getPatientActionBuilder()); + for (Map.Entry entry : src.severities.entrySet()) + { + LungImpairmentData.Builder builder = LungImpairmentData.newBuilder(); + builder.setCompartment(entry.getKey()); + builder.setSeverity(SEScalar0To1.unload(entry.getValue())); + dst.addSeverity(builder); + } + } + + public boolean hasSeverity() + { + for(SEScalar0To1 s : severities.values()) + if(s.isValid()) + return true; + return false; + } + public boolean hasSeverity(eLungCompartment c) + { + SEScalar0To1 s = severities.get(c); + if(s!=null) + return s.isValid(); + return false; + } + public SEScalar0To1 getSeverity(eLungCompartment c) + { + SEScalar0To1 s = severities.get(c); + if(s==null) + { + s = new SEScalar0To1(); + severities.put(c, s); + } + return s; + } + + @Override + public String toString() + { + String out = "Primary BlastLung Injury"; + for (Map.Entry entry : severities.entrySet()) + out += "\n\t"+ entry.getKey().toString()+" Severity: " + getSeverity(entry.getKey()); + return out; + } + + +} diff --git a/src/python/pulse/cdm/io/patient_actions.py b/src/python/pulse/cdm/io/patient_actions.py index 8abb97264..0d1c68703 100644 --- a/src/python/pulse/cdm/io/patient_actions.py +++ b/src/python/pulse/cdm/io/patient_actions.py @@ -398,6 +398,19 @@ def serialize_pneumonia_exacerbation_from_bind(src:PneumoniaExacerbationData, ds ################################################################# +def serialize_primary_blast_lung_injury_to_bind(src:SEPrimaryBlastLungInjury, dst: PrimaryBlastLungInjuryData): + serialize_patient_action_to_bind(src, dst.PatientAction) + for c,s in src._severities.items(): + i = dst.Severity.add() + i.Compartment = c.value + serialize_scalar_0to1_to_bind(s, i.Severity) + +def serialize_primary_blast_lung_injury_from_bind(src:PrimaryBlastLungInjuryData, dst: SEPrimaryBlastLungInjury ): + serialize_patient_action_from_bind(src.PatientAction, dst) + raise Exception("serialize_patient_action_from_bind not implemented") + +################################################################# + def serialize_pulmonary_shunt_exacerbation_to_bind(src:SEPulmonaryShuntExacerbation, dst: PulmonaryShuntExacerbationData): serialize_patient_action_to_bind(src, dst.PatientAction) if src.has_severity(): diff --git a/src/python/pulse/cdm/patient_actions.py b/src/python/pulse/cdm/patient_actions.py index 1692a5fcd..6201afeaa 100644 --- a/src/python/pulse/cdm/patient_actions.py +++ b/src/python/pulse/cdm/patient_actions.py @@ -1162,6 +1162,42 @@ class SEPneumoniaExacerbation(SEPatientAction): out += ("\t{} Severity: {}\n").format(c, s) return out +class SEPrimaryBlastLungInjury(SEPatientAction): + __slots__ = ["_severities"] + + def __init__(self): + super().__init__() + self._severities = {} + def clear(self): + for s in self._severities.values(): + if s is not None: + s.invalidate() + def is_valid(self): + return self.has_severity() + def has_severity(self): + return self._severity is not None + + def has_severity(self, cmpt: eLungCompartment = None): + if cmpt is None: + for s in self._severities.values(): + if s is not None and s.is_valid(): + return True + return False + if cmpt not in self._severities: + return False + return self._severities.get(cmpt).is_valid() + def get_severity(self, cmpt: eLungCompartment): + s = self._severities.get(cmpt) + if s is None: + s = SEScalar0To1() + self._severities[cmpt] = s + return s + def __repr__(self): + out = "Primary Blast Lung Injury\n" + for c, s in self._severities.items(): + out += ("\t{} Severity: {}\n").format(c, s) + return out + class SEPulmonaryShuntExacerbation(SEPatientAction): __slots__ = ["severity"] diff --git a/src/python/pulse/howto/HowTo_ExpandedRespiratory.py b/src/python/pulse/howto/HowTo_ExpandedRespiratory.py index 998c19d48..903e18f0d 100644 --- a/src/python/pulse/howto/HowTo_ExpandedRespiratory.py +++ b/src/python/pulse/howto/HowTo_ExpandedRespiratory.py @@ -6,7 +6,7 @@ from pathlib import Path from pulse.cdm.engine import eSwitch, eSerializationFormat from pulse.cdm.engine import SEDataRequestManager, SEDataRequest from pulse.cdm.patient import SEPatientConfiguration -from pulse.cdm.patient_actions import SEAcuteRespiratoryDistressSyndromeExacerbation +from pulse.cdm.patient_actions import SEPrimaryBlastLungInjury from pulse.cdm.physiology import eLungCompartment from pulse.cdm.scalars import FrequencyUnit, LengthUnit, MassUnit, PressureUnit, \ TimeUnit, VolumeUnit @@ -74,26 +74,26 @@ def HowTo_ExpandedRespiratory(): results = pulse.pull_data() pulse.print_results() - ards = SEAcuteRespiratoryDistressSyndromeExacerbation() - ards.get_severity(eLungCompartment.RightSuperiorLobeApical).set_value(0.3) - ards.get_severity(eLungCompartment.RightSuperiorLobePosterior).set_value(0.3) - ards.get_severity(eLungCompartment.RightSuperiorLobeAnterior).set_value(0.3) - ards.get_severity(eLungCompartment.RightMiddleLobeLateral).set_value(0.3) - ards.get_severity(eLungCompartment.RightMiddleLobeMedial).set_value(0.3) - ards.get_severity(eLungCompartment.RightInferiorLobeSuperior).set_value(0.3) - ards.get_severity(eLungCompartment.RightInferiorLobeMedialBasal).set_value(0.3) - ards.get_severity(eLungCompartment.RightInferiorLobeAnteriorBasal).set_value(0.3) - ards.get_severity(eLungCompartment.RightInferiorLobeLateralBasal).set_value(0.3) - ards.get_severity(eLungCompartment.RightInferiorLobePosteriorBasal).set_value(0.3) - ards.get_severity(eLungCompartment.LeftInferiorLobePosteriorBasal).set_value(0.3) - ards.get_severity(eLungCompartment.LeftInferiorLobeLateralBasal).set_value(0.3) - ards.get_severity(eLungCompartment.LeftInferiorLobeAnteromedialBasal).set_value(0.3) - ards.get_severity(eLungCompartment.LeftInferiorLobeSuperior).set_value(0.3) - ards.get_severity(eLungCompartment.LeftSuperiorLobeInferiorLingula).set_value(0.3) - ards.get_severity(eLungCompartment.LeftSuperiorLobeSuperiorLingula).set_value(0.3) - ards.get_severity(eLungCompartment.LeftSuperiorLobeAnterior).set_value(0.3) - ards.get_severity(eLungCompartment.LeftSuperiorLobeApicoposterior).set_value(0.3) - pulse.process_action(ards) + pbli = SEPrimaryBlastLungInjury() + pbli.get_severity(eLungCompartment.RightSuperiorLobeApical).set_value(0.3) + pbli.get_severity(eLungCompartment.RightSuperiorLobePosterior).set_value(0.3) + pbli.get_severity(eLungCompartment.RightSuperiorLobeAnterior).set_value(0.3) + pbli.get_severity(eLungCompartment.RightMiddleLobeLateral).set_value(0.3) + pbli.get_severity(eLungCompartment.RightMiddleLobeMedial).set_value(0.3) + pbli.get_severity(eLungCompartment.RightInferiorLobeSuperior).set_value(0.3) + pbli.get_severity(eLungCompartment.RightInferiorLobeMedialBasal).set_value(0.3) + pbli.get_severity(eLungCompartment.RightInferiorLobeAnteriorBasal).set_value(0.3) + pbli.get_severity(eLungCompartment.RightInferiorLobeLateralBasal).set_value(0.3) + pbli.get_severity(eLungCompartment.RightInferiorLobePosteriorBasal).set_value(0.3) + pbli.get_severity(eLungCompartment.LeftInferiorLobePosteriorBasal).set_value(0.3) + pbli.get_severity(eLungCompartment.LeftInferiorLobeLateralBasal).set_value(0.3) + pbli.get_severity(eLungCompartment.LeftInferiorLobeAnteromedialBasal).set_value(0.3) + pbli.get_severity(eLungCompartment.LeftInferiorLobeSuperior).set_value(0.3) + pbli.get_severity(eLungCompartment.LeftSuperiorLobeInferiorLingula).set_value(0.3) + pbli.get_severity(eLungCompartment.LeftSuperiorLobeSuperiorLingula).set_value(0.3) + pbli.get_severity(eLungCompartment.LeftSuperiorLobeAnterior).set_value(0.3) + pbli.get_severity(eLungCompartment.LeftSuperiorLobeApicoposterior).set_value(0.3) + pulse.process_action(pbli) # Advance some time and print out the vitals pulse.advance_time_s(300) diff --git a/src/schema/pulse/cdm/bind/PatientActions.proto b/src/schema/pulse/cdm/bind/PatientActions.proto index a39349b36..66b4be98c 100644 --- a/src/schema/pulse/cdm/bind/PatientActions.proto +++ b/src/schema/pulse/cdm/bind/PatientActions.proto @@ -42,17 +42,18 @@ message AnyPatientActionData NeedleDecompressionData NeedleDecompression = 24; PericardialEffusionData PericardialEffusion = 25; PneumoniaExacerbationData PneumoniaExacerbation = 26; - PulmonaryShuntExacerbationData PulmonaryShuntExacerbation = 27; - RespiratoryFatigueData RespiratoryFatigue = 28; - RespiratoryMechanicsConfigurationData RespiratoryMechanicsConfiguration = 29; - RespiratoryMechanicsModificationData RespiratoryMechanicsModification = 30; - SubstanceBolusData SubstanceBolus = 31; - SubstanceCompoundInfusionData SubstanceCompoundInfusion = 32; - SubstanceInfusionData SubstanceInfusion = 33; - SupplementalOxygenData SupplementalOxygen = 34; - TensionPneumothoraxData TensionPneumothorax = 35; - TubeThoracostomyData TubeThoracostomy = 36; - UrinateData Urinate = 37; + PrimaryBlastLungInjuryData PrimaryBlastLungInjury = 27; + PulmonaryShuntExacerbationData PulmonaryShuntExacerbation = 28; + RespiratoryFatigueData RespiratoryFatigue = 29; + RespiratoryMechanicsConfigurationData RespiratoryMechanicsConfiguration = 30; + RespiratoryMechanicsModificationData RespiratoryMechanicsModification = 31; + SubstanceBolusData SubstanceBolus = 32; + SubstanceCompoundInfusionData SubstanceCompoundInfusion = 33; + SubstanceInfusionData SubstanceInfusion = 34; + SupplementalOxygenData SupplementalOxygen = 35; + TensionPneumothoraxData TensionPneumothorax = 36; + TubeThoracostomyData TubeThoracostomy = 37; + UrinateData Urinate = 38; } } @@ -403,6 +404,12 @@ message PneumoniaExacerbationData repeated LungImpairmentData Severity = 2;/**<< @brief A list of impairment severities for the lung compartments*/ } +/** @brief Acute lung injury from blast over-pressure on the thorax. */ +message PrimaryBlastLungInjuryData +{ + PatientActionData PatientAction = 1; + repeated LungImpairmentData Severity = 2;/**<< @brief A list of impairment severities for the lung compartments*/ +} /** @brief Pulmonary shunt is when the alveoli of the lungs are perfused with blood as normal, but ventilation (the supply of air) fails to supply the perfused region */ message PulmonaryShuntExacerbationData -- GitLab From f27e2030d38352420ad869a7cf3aee3210b3b869 Mon Sep 17 00:00:00 2001 From: JeffWebb6 Date: Sat, 15 Jun 2024 08:52:58 -0400 Subject: [PATCH 12/35] Updated expanded respiratory SDK example. --- src/cpp/howto/CMakeLists.txt | 1 + src/cpp/howto/HowTo-ExpandedRespiratory.cpp | 99 ++++++++++++------- .../pulse/howto/HowTo_ExpandedRespiratory.py | 59 ++++++----- 3 files changed, 99 insertions(+), 60 deletions(-) diff --git a/src/cpp/howto/CMakeLists.txt b/src/cpp/howto/CMakeLists.txt index e351de87f..8227de264 100644 --- a/src/cpp/howto/CMakeLists.txt +++ b/src/cpp/howto/CMakeLists.txt @@ -21,6 +21,7 @@ add_executable_ex(HowToDriver HowTo-EngineUse.cpp HowTo-EnvironmentChange.cpp HowTo-Exercise.cpp + HowTo-ExpandedRespiratory.cpp HowTo-ExpandedVasculature.cpp HowTo-Hemorrhage.cpp HowTo-Hemothorax.cpp diff --git a/src/cpp/howto/HowTo-ExpandedRespiratory.cpp b/src/cpp/howto/HowTo-ExpandedRespiratory.cpp index 73dc7e463..9a060a9f2 100644 --- a/src/cpp/howto/HowTo-ExpandedRespiratory.cpp +++ b/src/cpp/howto/HowTo-ExpandedRespiratory.cpp @@ -10,7 +10,7 @@ #include "cdm/system/physiology/SEBloodChemistrySystem.h" #include "cdm/system/physiology/SECardiovascularSystem.h" #include "cdm/system/physiology/SERespiratorySystem.h" -#include "cdm/patient/actions/SEAcuteRespiratoryDistressSyndromeExacerbation.h" +#include "cdm/patient/actions/SEPrimaryBlastLungInjury.h" #include "cdm/properties/SEScalar0To1.h" #include "cdm/properties/SEScalarFrequency.h" #include "cdm/properties/SEScalarMassPerVolume.h" @@ -21,7 +21,6 @@ #include "cdm/properties/SEScalarVolumePerTime.h" #include "cdm/properties/SEScalar0To1.h" - void HowToExpandedRespiratory() { std::unique_ptr pe = CreatePulseEngine(); @@ -35,62 +34,86 @@ void HowToExpandedRespiratory() pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("HeartRate", FrequencyUnit::Per_min); pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("SystolicArterialPressure", PressureUnit::mmHg); pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("DiastolicArterialPressure", PressureUnit::mmHg); + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("MeanArterialPressure", PressureUnit::mmHg); + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("EndTidalCarbonDioxidePressure", PressureUnit::mmHg); + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("HorowitzIndex", PressureUnit::mmHg); + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("OxygenSaturation"); pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("RespirationRate", FrequencyUnit::Per_min); pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("TidalVolume", VolumeUnit::mL); pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("TotalLungVolume", VolumeUnit::mL); - pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("OxygenSaturation"); + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("ArterialOxygenPressure", PressureUnit::mmHg); + pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("ArterialCarbonDioxidePressure", PressureUnit::mmHg); + pe->GetEngineTracker()->GetDataRequestManager().CreateGasCompartmentDataRequest("LeftLungPulmonary", "Volume", VolumeUnit::mL); + pe->GetEngineTracker()->GetDataRequestManager().CreateGasCompartmentDataRequest("RightLungPulmonary", "Volume", VolumeUnit::L); + pe->GetEngineTracker()->GetDataRequestManager().SetResultsFilename("./test_results/howto/HowTo_ExpandedRespiratory.csv"); SEPatientConfiguration pc; pc.SetPatientFile("./patients/StandardMale.json"); pe->InitializeEngine(pc); - pe->GetLogger()->Info("Initial vitals"); + // Get default data at time 0s from the engine + pe->AdvanceModelTime(0, TimeUnit::s); + pe->GetLogger()->Info("Default data retrieved"); + + pe->GetLogger()->Info("Initial data"); pe->GetLogger()->Info(std::stringstream() << "Tidal Volume : " << pe->GetRespiratorySystem()->GetTidalVolume(VolumeUnit::mL) << VolumeUnit::mL); - pe->GetLogger()->Info(std::stringstream() << "Systolic Pressure : " << pe->GetCardiovascularSystem()->GetSystolicArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); - pe->GetLogger()->Info(std::stringstream() << "Diastolic Pressure : " << pe->GetCardiovascularSystem()->GetDiastolicArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); pe->GetLogger()->Info(std::stringstream() << "Heart Rate : " << pe->GetCardiovascularSystem()->GetHeartRate(FrequencyUnit::Per_min) << "bpm"); pe->GetLogger()->Info(std::stringstream() << "Respiration Rate : " << pe->GetRespiratorySystem()->GetRespirationRate(FrequencyUnit::Per_min) << "bpm"); pe->GetLogger()->Info(std::stringstream() << "Oxygen Saturation : " << pe->GetBloodChemistrySystem()->GetOxygenSaturation()); + pe->GetLogger()->Info(std::stringstream() << "Mean Arterial Pressure : " << pe->GetCardiovascularSystem()->GetMeanArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); + pe->GetLogger()->Info(std::stringstream() << "Horowitz Index : " << pe->GetRespiratorySystem()->GetHorowitzIndex(PressureUnit::mmHg) << PressureUnit::mmHg); + pe->GetLogger()->Info(std::stringstream() << "Total Lung Volume : " << pe->GetRespiratorySystem()->GetTotalLungVolume(VolumeUnit::mL) << VolumeUnit::mL); + pe->GetLogger()->Info(std::stringstream() << "Arterial Oxygen Pressure : " << pe->GetBloodChemistrySystem()->GetArterialOxygenPressure(PressureUnit::mmHg) << PressureUnit::mmHg); + pe->GetLogger()->Info(std::stringstream() << "Arterial Carbon Dioxide Pressure : " << pe->GetBloodChemistrySystem()->GetArterialCarbonDioxidePressure(PressureUnit::mmHg) << PressureUnit::mmHg); - pe->AdvanceModelTime(30, TimeUnit::s); + // Apply the standalone UNDEX equation + pe->GetLogger()->Info("Charge information"); + double chargeMass_lbs = 1000; + double chargeDistance_ft = 100; //635 ~= 0.1; 211 ~= 0.3; 70 ~= 0.9 + double peakPressure = 13000 * pow(chargeMass_lbs, 0.33) / chargeDistance_ft; + double severity = 0.0005 * peakPressure; + severity = std::max(std::min(severity, 1.0), 0.0); - pe->GetLogger()->Info("Healthy patient"); - pe->GetLogger()->Info(std::stringstream() << "Tidal Volume : " << pe->GetRespiratorySystem()->GetTidalVolume(VolumeUnit::mL) << VolumeUnit::mL); - pe->GetLogger()->Info(std::stringstream() << "Systolic Pressure : " << pe->GetCardiovascularSystem()->GetSystolicArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); - pe->GetLogger()->Info(std::stringstream() << "Diastolic Pressure : " << pe->GetCardiovascularSystem()->GetDiastolicArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); - pe->GetLogger()->Info(std::stringstream() << "Heart Rate : " << pe->GetCardiovascularSystem()->GetHeartRate(FrequencyUnit::Per_min) << "bpm"); - pe->GetLogger()->Info(std::stringstream() << "Respiration Rate : " << pe->GetRespiratorySystem()->GetRespirationRate(FrequencyUnit::Per_min) << "bpm"); - pe->GetLogger()->Info(std::stringstream() << "Oxygen Saturation : " << pe->GetBloodChemistrySystem()->GetOxygenSaturation()); + pe->GetLogger()->Info(std::stringstream() << "Charge Mass: " << chargeMass_lbs << " lbs"); + pe->GetLogger()->Info(std::stringstream() << "Charge Distance: " << chargeDistance_ft << " ft"); + pe->GetLogger()->Info(std::stringstream() << "Peak Pressure: " << peakPressure << " mmHg"); + pe->GetLogger()->Info(std::stringstream() << "Severity: " << severity); + + pe->AdvanceModelTime(30, TimeUnit::s); + pe->GetLogger()->Info("Data after 30s"); - SEAcuteRespiratoryDistressSyndromeExacerbation ARDS; - ARDS.GetSeverity(eLungCompartment::RightSuperiorLobeApical).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::RightSuperiorLobePosterior).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::RightSuperiorLobeAnterior).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::RightMiddleLobeLateral).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::RightMiddleLobeMedial).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::RightInferiorLobeSuperior).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::RightInferiorLobeMedialBasal).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::RightInferiorLobeAnteriorBasal).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::RightInferiorLobeLateralBasal).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::RightInferiorLobePosteriorBasal).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::LeftInferiorLobePosteriorBasal).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::LeftInferiorLobeLateralBasal).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::LeftInferiorLobeAnteromedialBasal).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::LeftInferiorLobeSuperior).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::LeftSuperiorLobeInferiorLingula).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::LeftSuperiorLobeSuperiorLingula).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::LeftSuperiorLobeAnterior).SetValue(0.3); - ARDS.GetSeverity(eLungCompartment::LeftSuperiorLobeApicoposterior).SetValue(0.3); - pe->ProcessAction(ARDS); + SEPrimaryBlastLungInjury pbli; + pbli.GetSeverity(eLungCompartment::RightSuperiorLobeApical).SetValue(severity); + pbli.GetSeverity(eLungCompartment::RightSuperiorLobePosterior).SetValue(severity); + pbli.GetSeverity(eLungCompartment::RightSuperiorLobeAnterior).SetValue(severity); + pbli.GetSeverity(eLungCompartment::RightMiddleLobeLateral).SetValue(severity); + pbli.GetSeverity(eLungCompartment::RightMiddleLobeMedial).SetValue(severity); + pbli.GetSeverity(eLungCompartment::RightInferiorLobeSuperior).SetValue(severity); + pbli.GetSeverity(eLungCompartment::RightInferiorLobeMedialBasal).SetValue(severity); + pbli.GetSeverity(eLungCompartment::RightInferiorLobeAnteriorBasal).SetValue(severity); + pbli.GetSeverity(eLungCompartment::RightInferiorLobeLateralBasal).SetValue(severity); + pbli.GetSeverity(eLungCompartment::RightInferiorLobePosteriorBasal).SetValue(severity); + pbli.GetSeverity(eLungCompartment::LeftInferiorLobePosteriorBasal).SetValue(severity); + pbli.GetSeverity(eLungCompartment::LeftInferiorLobeLateralBasal).SetValue(severity); + pbli.GetSeverity(eLungCompartment::LeftInferiorLobeAnteromedialBasal).SetValue(severity); + pbli.GetSeverity(eLungCompartment::LeftInferiorLobeSuperior).SetValue(severity); + pbli.GetSeverity(eLungCompartment::LeftSuperiorLobeInferiorLingula).SetValue(severity); + pbli.GetSeverity(eLungCompartment::LeftSuperiorLobeSuperiorLingula).SetValue(severity); + pbli.GetSeverity(eLungCompartment::LeftSuperiorLobeAnterior).SetValue(severity); + pbli.GetSeverity(eLungCompartment::LeftSuperiorLobeApicoposterior).SetValue(severity); + pe->ProcessAction(pbli); - pe->AdvanceModelTime(300, TimeUnit::s); + pe->AdvanceModelTime(15, TimeUnit::min); - pe->GetLogger()->Info("Moderate ARDS"); + pe->GetLogger()->Info("Data after 15 min"); pe->GetLogger()->Info(std::stringstream() << "Tidal Volume : " << pe->GetRespiratorySystem()->GetTidalVolume(VolumeUnit::mL) << VolumeUnit::mL); - pe->GetLogger()->Info(std::stringstream() << "Systolic Pressure : " << pe->GetCardiovascularSystem()->GetSystolicArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); - pe->GetLogger()->Info(std::stringstream() << "Diastolic Pressure : " << pe->GetCardiovascularSystem()->GetDiastolicArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); pe->GetLogger()->Info(std::stringstream() << "Heart Rate : " << pe->GetCardiovascularSystem()->GetHeartRate(FrequencyUnit::Per_min) << "bpm"); pe->GetLogger()->Info(std::stringstream() << "Respiration Rate : " << pe->GetRespiratorySystem()->GetRespirationRate(FrequencyUnit::Per_min) << "bpm"); pe->GetLogger()->Info(std::stringstream() << "Oxygen Saturation : " << pe->GetBloodChemistrySystem()->GetOxygenSaturation()); + pe->GetLogger()->Info(std::stringstream() << "Mean Arterial Pressure : " << pe->GetCardiovascularSystem()->GetMeanArterialPressure(PressureUnit::mmHg) << PressureUnit::mmHg); + pe->GetLogger()->Info(std::stringstream() << "Horowitz Index : " << pe->GetRespiratorySystem()->GetHorowitzIndex(PressureUnit::mmHg) << PressureUnit::mmHg); + pe->GetLogger()->Info(std::stringstream() << "Total Lung Volume : " << pe->GetRespiratorySystem()->GetTotalLungVolume(VolumeUnit::mL) << VolumeUnit::mL); + pe->GetLogger()->Info(std::stringstream() << "Arterial Oxygen Pressure : " << pe->GetBloodChemistrySystem()->GetArterialOxygenPressure(PressureUnit::mmHg) << PressureUnit::mmHg); + pe->GetLogger()->Info(std::stringstream() << "Arterial Carbon Dioxide Pressure : " << pe->GetBloodChemistrySystem()->GetArterialCarbonDioxidePressure(PressureUnit::mmHg) << PressureUnit::mmHg); } diff --git a/src/python/pulse/howto/HowTo_ExpandedRespiratory.py b/src/python/pulse/howto/HowTo_ExpandedRespiratory.py index 903e18f0d..eee65ad35 100644 --- a/src/python/pulse/howto/HowTo_ExpandedRespiratory.py +++ b/src/python/pulse/howto/HowTo_ExpandedRespiratory.py @@ -26,17 +26,17 @@ def HowTo_ExpandedRespiratory(): data_requests = [ SEDataRequest.create_physiology_request("HeartRate", unit=FrequencyUnit.Per_min), - SEDataRequest.create_physiology_request("ArterialPressure", unit=PressureUnit.mmHg), - SEDataRequest.create_physiology_request("MeanArterialPressure", unit=PressureUnit.mmHg), SEDataRequest.create_physiology_request("SystolicArterialPressure", unit=PressureUnit.mmHg), SEDataRequest.create_physiology_request("DiastolicArterialPressure", unit=PressureUnit.mmHg), - + SEDataRequest.create_physiology_request("MeanArterialPressure", unit=PressureUnit.mmHg), SEDataRequest.create_physiology_request("EndTidalCarbonDioxidePressure", unit=PressureUnit.mmHg), SEDataRequest.create_physiology_request("HorowitzIndex", unit=PressureUnit.mmHg), SEDataRequest.create_physiology_request("OxygenSaturation"), SEDataRequest.create_physiology_request("RespirationRate", unit=FrequencyUnit.Per_min), SEDataRequest.create_physiology_request("TidalVolume", unit=VolumeUnit.mL), SEDataRequest.create_physiology_request("TotalLungVolume", unit=VolumeUnit.mL), + SEDataRequest.create_physiology_request("ArterialOxygenPressure", unit=PressureUnit.mmHg), + SEDataRequest.create_physiology_request("ArterialCarbonDioxidePressure", unit=PressureUnit.mmHg), SEDataRequest.create_gas_compartment_request("LeftLungPulmonary", "Volume", unit=VolumeUnit.mL), SEDataRequest.create_gas_compartment_request("RightLungPulmonary", "Volume", unit=VolumeUnit.L), ] @@ -68,6 +68,21 @@ def HowTo_ExpandedRespiratory(): results = pulse.pull_data() pulse.print_results() + # Apply the standalone UNDEX equation + # Inputs + chargeMass_lbs = 1000 + chargeDistance_ft = 100 #635 ~= 0.1; 211 ~= 0.3; 70 ~= 0.9 + # Pressure equation + peakPressure = 13000 * (chargeMass_lbs ** 0.33) / chargeDistance_ft + # PBLI severity mapping + severity = 0.0005 * peakPressure + # Bounding the severity between 0 and 1 + severity = max(min(severity, 1.0), 0.0) + + print(f"Charge Mass: {chargeMass_lbs} lbs") + print(f"Charge Distance: {chargeDistance_ft} ft") + print(f"Peak Pressure: {peakPressure} mmHg") + print(f"Severity: {severity}") # Advance some time and print out the vitals pulse.advance_time_s(30) @@ -75,28 +90,28 @@ def HowTo_ExpandedRespiratory(): pulse.print_results() pbli = SEPrimaryBlastLungInjury() - pbli.get_severity(eLungCompartment.RightSuperiorLobeApical).set_value(0.3) - pbli.get_severity(eLungCompartment.RightSuperiorLobePosterior).set_value(0.3) - pbli.get_severity(eLungCompartment.RightSuperiorLobeAnterior).set_value(0.3) - pbli.get_severity(eLungCompartment.RightMiddleLobeLateral).set_value(0.3) - pbli.get_severity(eLungCompartment.RightMiddleLobeMedial).set_value(0.3) - pbli.get_severity(eLungCompartment.RightInferiorLobeSuperior).set_value(0.3) - pbli.get_severity(eLungCompartment.RightInferiorLobeMedialBasal).set_value(0.3) - pbli.get_severity(eLungCompartment.RightInferiorLobeAnteriorBasal).set_value(0.3) - pbli.get_severity(eLungCompartment.RightInferiorLobeLateralBasal).set_value(0.3) - pbli.get_severity(eLungCompartment.RightInferiorLobePosteriorBasal).set_value(0.3) - pbli.get_severity(eLungCompartment.LeftInferiorLobePosteriorBasal).set_value(0.3) - pbli.get_severity(eLungCompartment.LeftInferiorLobeLateralBasal).set_value(0.3) - pbli.get_severity(eLungCompartment.LeftInferiorLobeAnteromedialBasal).set_value(0.3) - pbli.get_severity(eLungCompartment.LeftInferiorLobeSuperior).set_value(0.3) - pbli.get_severity(eLungCompartment.LeftSuperiorLobeInferiorLingula).set_value(0.3) - pbli.get_severity(eLungCompartment.LeftSuperiorLobeSuperiorLingula).set_value(0.3) - pbli.get_severity(eLungCompartment.LeftSuperiorLobeAnterior).set_value(0.3) - pbli.get_severity(eLungCompartment.LeftSuperiorLobeApicoposterior).set_value(0.3) + pbli.get_severity(eLungCompartment.RightSuperiorLobeApical).set_value(severity) + pbli.get_severity(eLungCompartment.RightSuperiorLobePosterior).set_value(severity) + pbli.get_severity(eLungCompartment.RightSuperiorLobeAnterior).set_value(severity) + pbli.get_severity(eLungCompartment.RightMiddleLobeLateral).set_value(severity) + pbli.get_severity(eLungCompartment.RightMiddleLobeMedial).set_value(severity) + pbli.get_severity(eLungCompartment.RightInferiorLobeSuperior).set_value(severity) + pbli.get_severity(eLungCompartment.RightInferiorLobeMedialBasal).set_value(severity) + pbli.get_severity(eLungCompartment.RightInferiorLobeAnteriorBasal).set_value(severity) + pbli.get_severity(eLungCompartment.RightInferiorLobeLateralBasal).set_value(severity) + pbli.get_severity(eLungCompartment.RightInferiorLobePosteriorBasal).set_value(severity) + pbli.get_severity(eLungCompartment.LeftInferiorLobePosteriorBasal).set_value(severity) + pbli.get_severity(eLungCompartment.LeftInferiorLobeLateralBasal).set_value(severity) + pbli.get_severity(eLungCompartment.LeftInferiorLobeAnteromedialBasal).set_value(severity) + pbli.get_severity(eLungCompartment.LeftInferiorLobeSuperior).set_value(severity) + pbli.get_severity(eLungCompartment.LeftSuperiorLobeInferiorLingula).set_value(severity) + pbli.get_severity(eLungCompartment.LeftSuperiorLobeSuperiorLingula).set_value(severity) + pbli.get_severity(eLungCompartment.LeftSuperiorLobeAnterior).set_value(severity) + pbli.get_severity(eLungCompartment.LeftSuperiorLobeApicoposterior).set_value(severity) pulse.process_action(pbli) # Advance some time and print out the vitals - pulse.advance_time_s(300) + pulse.advance_time_s(900) results = pulse.pull_data() pulse.print_results() -- GitLab From 8e3a40c7796b04974ce4b9869f99bb49e75e5aaa Mon Sep 17 00:00:00 2001 From: JeffWebb6 Date: Wed, 7 Aug 2024 09:58:45 -0400 Subject: [PATCH 13/35] =?UTF-8?q?=EF=BB=BFUpdate=20PBLI=20application=20in?= =?UTF-8?q?=20respiratory=20with=20latest=20restrictive=20changes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/physiology/RespiratoryModel.cpp | 165 ++++++++---------- 1 file changed, 77 insertions(+), 88 deletions(-) diff --git a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp index c11582418..13b173251 100644 --- a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp +++ b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp @@ -3387,32 +3387,7 @@ namespace pulse double alveoliVolumeRatio = alveoliVolumeBaseline_L / totalBaselineAlveoliVolume_L; //------------------------------------------------------------------------------------------------------ - //PBLI - //Same as ARDS - if (m_PatientActions->HasPrimaryBlastLungInjury()) - { - double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); - if (severity > 0.29) - { - // best fit for (severity, volume): (0, 0), (0.3, 0), (0.6, 0.003), (0.9, 0.15) - deadSpaceIncrement_L = alveoliVolumeRatio * (0.3704 * std::pow(severity, 3.0) - 0.1667 * std::pow(severity, 2.0) + 0.0167 * severity); - } - - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) - { - //Prevent negative volume with high severities - alveoliIncrement_L = -alveoliVolumeRatio * GeneralMath::LinearInterpolator(0.0, 1.0, 0.0, 0.9, severity); - } - else - { - alveoliIncrement_L = -alveoliVolumeRatio * GeneralMath::LinearInterpolator(0.0, 1.0, 0.0, 1.2, severity); - } - } - - //------------------------------------------------------------------------------------------------------ - //ARDS - //Exacerbation will overwrite the condition, even if it means improvement - + //Restrictive //The dead space cannot be greater than the FRC in our model double restrictiveSeverity = 0.0; @@ -3459,6 +3434,15 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, severity); } + //PBLI + //Same as ARDS + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + + restrictiveSeverity = MAX(restrictiveSeverity, severity); + } + std::vector> interpolatorPoints = { {0.0, 0.0}, //None @@ -4176,15 +4160,6 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, severity); } - //------------------------------------------------------------------------------------------------------ - //PBLI - //Same as ARDS - if (m_PatientActions->HasPrimaryBlastLungInjury()) - { - double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); - restrictiveSeverity = MAX(restrictiveSeverity, severity); - } - //------------------------------------------------------------------------------------------------------ //ARDS //Exacerbation will overwrite the condition, even if it means improvement @@ -4203,6 +4178,16 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, severity); } + //------------------------------------------------------------------------------------------------------ + //PBLI + //Same as ARDS + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + restrictiveSeverity = MAX(restrictiveSeverity, severity); + } + + std::vector> interpolatorPoints = { {0.0, 1.0}, //None @@ -4360,15 +4345,6 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, severity); } - //------------------------------------------------------------------------------------------------------ - //PBLI - //Same as ARDS - if (m_PatientActions->HasPrimaryBlastLungInjury()) - { - double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); - restrictiveComplianceScalingFactor = MIN(restrictiveComplianceScalingFactor, GeneralMath::ExponentialDecayFunction(10, 0.45, 1.0, severity)); - } - //------------------------------------------------------------------------------------------------------ //ARDS //Exacerbation will overwrite the condition, even if it means improvement @@ -4387,6 +4363,15 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, severity); } + //------------------------------------------------------------------------------------------------------ + //PBLI + //Same as ARDS + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + restrictiveSeverity = MAX(restrictiveSeverity, severity); + } + double restrictiveComplianceScalingFactor = GeneralMath::PiecewiseLinearInterpolator(restrictiveInterpolatorPoints, restrictiveSeverity); //------------------------------------------------------------------------------------------------------ @@ -4568,16 +4553,6 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, Severity); } - //------------------------------------------------------------------------------------------------------ - //PBLI - //Same as ARDS - if (m_PatientActions->HasPrimaryBlastLungInjury()) - { - double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); - - restrictiveSeverity = MAX(restrictiveSeverity, severity); - } - //------------------------------------------------------------------------------------------------------ //ARDS //Exacerbation will overwrite the condition, even if it means improvement @@ -4595,6 +4570,16 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, severity); } + //------------------------------------------------------------------------------------------------------ + //PBLI + //Same as ARDS + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + + restrictiveSeverity = MAX(restrictiveSeverity, severity); + } + combinedObstructiveSeverity += obstructiveSeverity * alveoliVolumeRatio; combinedRestrictiveSeverity += restrictiveSeverity * alveoliVolumeRatio; } @@ -4748,16 +4733,6 @@ namespace pulse //recruitmentScalingFactor = GeneralMath::ExponentialDecayFunction(10, 0.15, 1.0, 1.0 - recruitedFraction); double combinedSeverity = 0.0; - //------------------------------------------------------------------------------------------------------ - //PBLI - //Same as ARDS with a multiplier - if (m_PatientActions->HasPrimaryBlastLungInjury()) - { - double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); - double PBLIMultiplier = GeneralMath::LinearInterpolator(0.0, 1.0, 1.0, 0.75, severity); - damageScalingFactor = MIN(damageScalingFactor, GeneralMath::ExponentialDecayFunction(10, 0.15 * PBLIMultiplier, 1.0, severity)); - } - //------------------------------------------------------------------------------------------------------ //ARDS //Exacerbation will overwrite the condition, even if it means improvement @@ -4803,6 +4778,19 @@ namespace pulse combinedSeverity = MAX(combinedSeverity, severity); } + //------------------------------------------------------------------------------------------------------ + //PBLI + //Same as ARDS with a multiplier + double PBLIMultiplier = 1.0; + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + + PBLIMultiplier = GeneralMath::LinearInterpolator(0.0, 1.0, 1.0, 0.75, severity); + + combinedSeverity = MAX(combinedSeverity, severity); + } + std::vector> interpolatorPoints = { {0.0, 1.000}, //None @@ -4812,7 +4800,7 @@ namespace pulse {1.0, 0.050} //Max }; - damageScalingFactor = GeneralMath::PiecewiseLinearInterpolator(interpolatorPoints, combinedSeverity); + damageScalingFactor = GeneralMath::PiecewiseLinearInterpolator(interpolatorPoints, combinedSeverity) * PBLIMultiplier; //------------------------------------------------------------------------------------------------------ //Combine effects @@ -5010,17 +4998,6 @@ namespace pulse combinedSeverity = MAX(combinedSeverity, severity); } - //------------------------------------------------------------------------------------------------------ - //PBLI - //Use a multiplier on ARDS equation - double PBLIMultiplier = 1.0; - if (m_PatientActions->HasPrimaryBlastLungInjury()) - { - double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); - PBLIMultiplier = GeneralMath::LinearInterpolator(0.0, 1.0, 1.0, 0.5, severity); - combinedSeverity = MAX(combinedSeverity, severity); - } - //------------------------------------------------------------------------------------------------------ //ARDS //Exacerbation will overwrite the condition, even if it means improvement @@ -5039,6 +5016,19 @@ namespace pulse combinedSeverity = MAX(combinedSeverity, severity); } + //------------------------------------------------------------------------------------------------------ + //PBLI + //Use a multiplier on ARDS equation + double PBLIMultiplier = 1.0; + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + + PBLIMultiplier = GeneralMath::LinearInterpolator(0.0, 1.0, 1.0, 0.5, severity); + + combinedSeverity = MAX(combinedSeverity, severity); + } + //------------------------------------------------------------------------------------------------------ //Combine effects //Damage factor acts as floor if fully recruited @@ -5050,7 +5040,7 @@ namespace pulse {0.9, 0.5}, //Severe {1.0, 1.0} //Max }; - damageScalingFactor = GeneralMath::PiecewiseLinearInterpolator(interpolatorPoints, combinedSeverity); + double damageScalingFactor = GeneralMath::PiecewiseLinearInterpolator(interpolatorPoints, combinedSeverity) * PBLIMultiplier; interpolatorPoints = { @@ -5271,17 +5261,6 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, severity); } - //------------------------------------------------------------------------------------------------------ - //PBLI - //Same as ARDS - if (m_PatientActions->HasPrimaryBlastLungInjury()) - { - double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); - - severity = GeneralMath::LinearInterpolator(0.0, 1.0, 0.0, 0.8, severity); - combinedSeverity = MAX(combinedSeverity, severity); - } - //------------------------------------------------------------------------------------------------------ //ARDS //Exacerbation will overwrite the condition, even if it means improvement @@ -5300,6 +5279,16 @@ namespace pulse restrictiveSeverity = MAX(restrictiveSeverity, severity); } + //------------------------------------------------------------------------------------------------------ + //PBLI + //Same as ARDS + if (m_PatientActions->HasPrimaryBlastLungInjury()) + { + double severity = m_PatientActions->GetPrimaryBlastLungInjury().GetSeverity(cmpt).GetValue(); + + restrictiveSeverity = MAX(restrictiveSeverity, severity); + } + double restrictiveModifier = GeneralMath::LinearInterpolator(0.0, 1.0, 0.0, 0.8, restrictiveSeverity); //------------------------------------------------------------------------------------------------------ -- GitLab From ac8d390951595aa9248678d8c11085f3801366b4 Mon Sep 17 00:00:00 2001 From: JeffWebb6 Date: Wed, 7 Aug 2024 13:38:24 -0400 Subject: [PATCH 14/35] Allow respiratory resistance changes for expanded model. -- GitLab From bd2e349daef44f3ad31348711e1f9ec9e8674c7e Mon Sep 17 00:00:00 2001 From: JeffWebb6 Date: Wed, 7 Aug 2024 13:40:44 -0400 Subject: [PATCH 15/35] Update to-dos for future expanded respiratory model work. --- .../common/controller/SetupCircuitsAndCompartments.cpp | 4 ++-- .../engine/common/controller/SetupExpandedRespiratory.cpp | 3 +-- src/cpp/engine/common/controller/SubstanceManager.cpp | 2 +- .../engine/common/system/physiology/CardiovascularModel.cpp | 2 +- .../engine/common/system/physiology/RespiratoryModel.cpp | 6 +++--- src/cpp/engine/common/system/physiology/TissueModel.cpp | 2 +- 6 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/cpp/engine/common/controller/SetupCircuitsAndCompartments.cpp b/src/cpp/engine/common/controller/SetupCircuitsAndCompartments.cpp index a900db0cd..bb6257686 100644 --- a/src/cpp/engine/common/controller/SetupCircuitsAndCompartments.cpp +++ b/src/cpp/engine/common/controller/SetupCircuitsAndCompartments.cpp @@ -2476,7 +2476,7 @@ namespace pulse /////////////// // Left Lung // - //jbw - Fix + //TODO: Make this work for the expanded model if (m_Config->UseExpandedRespiratory() == eSwitch::Off) { SEFluidCircuitNode* LeftLung1 = cCardiovascular.GetNode(pulse::CardiovascularNode::LeftPulmonaryCapillaries1); @@ -2720,7 +2720,7 @@ namespace pulse //////////////// // Right Lung // - //jbw - Fix + //TODO: Make this work for the expanded model if (m_Config->UseExpandedRespiratory() == eSwitch::Off) { SEFluidCircuitNode* RightLung1 = cCardiovascular.GetNode(pulse::CardiovascularNode::RightPulmonaryCapillaries1); diff --git a/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp b/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp index 9aceaa577..2af95e9ea 100644 --- a/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp +++ b/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp @@ -52,7 +52,7 @@ namespace pulse //const double AlveoliDuctResistanceFraction = 0.2; double functionalResidualCapacity_L = m_InitialPatient->GetFunctionalResidualCapacity(VolumeUnit::L); - double anatomicDeadSpaceVolume_L = 0.002 * m_InitialPatient->GetWeight(MassUnit::kg); //Should not change with diseases /// \cite Levitzky2013pulmonary + double anatomicDeadSpaceVolume_L = 0.002 * m_InitialPatient->GetWeight(MassUnit::kg); /// \cite Levitzky2013pulmonary double alveolarDeadSpaceVolume_L = 0.001; //Should change with certain diseases /// \cite Levitzky2013pulmonary double physiologicDeadSpaceVolume_L = anatomicDeadSpaceVolume_L + alveolarDeadSpaceVolume_L; //double pleuralVolume_L = 20.0 / 1000.0; //this is a liquid volume /// \cite Levitzky2013pulmonary @@ -2977,7 +2977,6 @@ namespace pulse gCardiovascular.AddLink(vLeftSuperiorLobeAnteriorShunt); gCardiovascular.AddLink(vLeftSuperiorLobeApicoposteriorShunt); - // jbw - What do we do here? // Remove modifiers of paths we removed m_Config->GetModifiers().erase(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryCapillaries1); m_Config->GetModifiers().erase(pulse::CardiovascularPath::RightPulmonaryCapillaries1ToRightPulmonaryVeins1); diff --git a/src/cpp/engine/common/controller/SubstanceManager.cpp b/src/cpp/engine/common/controller/SubstanceManager.cpp index d8abad959..107f387f7 100644 --- a/src/cpp/engine/common/controller/SubstanceManager.cpp +++ b/src/cpp/engine/common/controller/SubstanceManager.cpp @@ -499,7 +499,7 @@ namespace pulse InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Fat), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Fat)); InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Gut), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Gut)); InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::LeftKidney), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftKidney)); - //jbw - Fix and make work for all CV setups + //TODO: Make this work for the expanded model if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) { InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::LeftLung), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftLung)); diff --git a/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp b/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp index 1064809e6..92cdde08a 100644 --- a/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp +++ b/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp @@ -3631,7 +3631,7 @@ namespace pulse tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::RightKidneyT2ToRightKidneyT1)); } - //jbw - Fix and make work for all CV setups + //TODO: Make this work for the expanded model if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) { tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::LeftPulmonaryCapillaries1)); diff --git a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp index 13b173251..9f8011846 100644 --- a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp +++ b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp @@ -981,7 +981,7 @@ namespace pulse if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) { - //jbw - Fix + //TODO: Make this work for the expanded model ComputeExposedModelParameters(); } } @@ -3060,7 +3060,7 @@ namespace pulse double RespiratoryModel::VolumeToDriverPressure(double TargetVolume_L) { //Calculate as if constant compliances - //jbw - Either sum all paths or add a configuration value + //TODO: Make this work for the expanded model double leftHealthyLungCompliance_L_Per_cmH2O = 0.1; double rightHealthyLungCompliance_L_Per_cmH2O = 0.1; if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) @@ -3176,7 +3176,7 @@ namespace pulse if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) { - //jbw - Either sum all paths or add a configuration value + //TODO: Make this work for the expanded model healthyLungCompliance_L_Per_cmH2O = 0.1; } else diff --git a/src/cpp/engine/common/system/physiology/TissueModel.cpp b/src/cpp/engine/common/system/physiology/TissueModel.cpp index 22694fec2..46d9a2441 100644 --- a/src/cpp/engine/common/system/physiology/TissueModel.cpp +++ b/src/cpp/engine/common/system/physiology/TissueModel.cpp @@ -226,7 +226,7 @@ namespace pulse m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::LeftKidney)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftKidney); m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::RightKidney)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightKidney); m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::Liver)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::Liver); - //jbw - Fix and make work for all CV setups + //TODO: Make this work for the expanded model if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) { m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::LeftLung)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftLung); -- GitLab From 69df58554e6429149c4899003d36077228c16212 Mon Sep 17 00:00:00 2001 From: JeffWebb6 Date: Thu, 8 Aug 2024 08:27:30 -0400 Subject: [PATCH 16/35] =?UTF-8?q?=EF=BB=BFAdd=20a=20HowTo=20to=20analyze?= =?UTF-8?q?=20patient=20outcomes=20with=20heterogenous=20primary=20blast?= =?UTF-8?q?=20lung=20injury.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/physiology/RespiratoryModel.cpp | 6 + src/cpp/howto/EngineHowTo.cpp | 3 +- src/cpp/howto/EngineHowTo.h | 1 + src/cpp/howto/HowTo-ExpandedRespiratory.cpp | 589 ++++++++++++++++++ 4 files changed, 598 insertions(+), 1 deletion(-) diff --git a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp index 9f8011846..e1d78e8ba 100644 --- a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp +++ b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp @@ -3757,6 +3757,12 @@ namespace pulse { //Tuned based on mechanical ventilator validation data tracheaResistance_cmH2O_s_Per_L *= intubationTracheatracheaResistanceMultiplier_cmH2O_s_Per_L; + + if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) + { + //Trachea resistance was tuned from 1.125 to 0.8 cmH2O-s/L in the circuit setup + tracheaResistance_cmH2O_s_Per_L *= 1.125 / 0.8; + } } break; diff --git a/src/cpp/howto/EngineHowTo.cpp b/src/cpp/howto/EngineHowTo.cpp index 1013911b7..ced75a943 100644 --- a/src/cpp/howto/EngineHowTo.cpp +++ b/src/cpp/howto/EngineHowTo.cpp @@ -14,7 +14,7 @@ int main() //HowToSandbox(); - //HowToEngineUse(); + HowToEngineUse(); //HowToCreateAPatient(); //HowToSerialize(); //HowToPulseEnginePool(); @@ -40,6 +40,7 @@ int main() //HowToHemorrhage(); //HowToIsoShuntAnalysis(); //HowToExpandedRespiratory(); + //HowToExpandedRespiratoryAnalysis(); //HowToExpandedVasculature(); //HowToHemorrhage(); //HowToHemothorax(); diff --git a/src/cpp/howto/EngineHowTo.h b/src/cpp/howto/EngineHowTo.h index 6390b3082..a3a91f2bc 100644 --- a/src/cpp/howto/EngineHowTo.h +++ b/src/cpp/howto/EngineHowTo.h @@ -32,6 +32,7 @@ void HowToDehydration(); void HowToEnvironmentChange(); void HowToExercise(); void HowToExpandedRespiratory(); +void HowToExpandedRespiratoryAnalysis(); void HowToExpandedVasculature(); void HowToHemorrhage(); void HowToIsoShuntAnalysis(); diff --git a/src/cpp/howto/HowTo-ExpandedRespiratory.cpp b/src/cpp/howto/HowTo-ExpandedRespiratory.cpp index 9a060a9f2..4ac80b775 100644 --- a/src/cpp/howto/HowTo-ExpandedRespiratory.cpp +++ b/src/cpp/howto/HowTo-ExpandedRespiratory.cpp @@ -20,6 +20,33 @@ #include "cdm/properties/SEScalarVolume.h" #include "cdm/properties/SEScalarVolumePerTime.h" #include "cdm/properties/SEScalar0To1.h" +#include "cdm/system/equipment/mechanical_ventilator/actions/SEMechanicalVentilatorPressureControl.h" +#include "cdm/patient/actions/SEIntubation.h" +#include "cdm/patient/actions/SEDyspnea.h" +#include "cdm/engine/SEAdvanceUntilStable.h" +#include "cdm/compartment/SECompartmentManager.h" +#include "cdm/compartment/fluid/SEGasCompartment.h" +#include "cdm/compartment/fluid/SELiquidCompartment.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + void HowToExpandedRespiratory() { @@ -117,3 +144,565 @@ void HowToExpandedRespiratory() pe->GetLogger()->Info(std::stringstream() << "Arterial Oxygen Pressure : " << pe->GetBloodChemistrySystem()->GetArterialOxygenPressure(PressureUnit::mmHg) << PressureUnit::mmHg); pe->GetLogger()->Info(std::stringstream() << "Arterial Carbon Dioxide Pressure : " << pe->GetBloodChemistrySystem()->GetArterialCarbonDioxidePressure(PressureUnit::mmHg) << PressureUnit::mmHg); } + +void HowToExpandedRespiratoryAnalysisInitialState() +{ + std::unique_ptr pe = CreatePulseEngine(); + pe->GetLogger()->LogToConsole(true); + pe->GetLogger()->SetLogFile("./test_results/howto/HowTo_ExpandedRespiratoryAnalysisInitialState.log"); + + PulseConfiguration config; + config.UseExpandedRespiratory(eSwitch::On); + pe->SetConfigurationOverride(&config); + + SEPatientConfiguration pc; + pc.SetPatientFile("./patients/StandardMale.json"); + pe->InitializeEngine(pc); + + //Add a ventilator for proper PaO2/FiO2 analysis + SEIntubation intubate; + intubate.SetType(eIntubation_Type::Tracheal); + pe->ProcessAction(intubate); + + SEMechanicalVentilatorPressureControl pc_cmv; + pc_cmv.SetConnection(eSwitch::On); + pc_cmv.SetMode(eMechanicalVentilator_PressureControlMode::ContinuousMandatoryVentilation); + pc_cmv.SetInspirationWaveform(eDriverWaveform::Square); + pc_cmv.GetFractionInspiredOxygen().SetValue(0.21); + pc_cmv.GetInspiratoryPeriod().SetValue(1.7, TimeUnit::s); + pc_cmv.GetInspiratoryPressure().SetValue(15.5, PressureUnit::cmH2O); + pc_cmv.GetPositiveEndExpiratoryPressure().SetValue(5.0, PressureUnit::cmH2O); + pc_cmv.GetRespirationRate().SetValue(12.0, FrequencyUnit::Per_min); + pe->ProcessAction(pc_cmv); + + //Apneic + SEDyspnea Dyspnea; + Dyspnea.GetTidalVolumeSeverity().SetValue(1.0); + Dyspnea.GetRespirationRateSeverity().SetValue(1.0); + pe->ProcessAction(Dyspnea); + + //Run to homestasis + SEAdvanceUntilStable RunToStable; + pe->ProcessAction(RunToStable); + + pe->GetLogger()->Info(std::stringstream() << "Resulting Tidal Volume: " << pe->GetRespiratorySystem()->GetTidalVolume(VolumeUnit::mL) << VolumeUnit::mL); + + //Serialize to use later + pe->SerializeToFile("ExpandedRespiratoryAnalysis.json"); +} + +void HowToExpandedRespiratoryAnalysisOriginal() +{ + // Settings + //std::vector severityList = { 0.0, 0.9 }; + std::vector severityList = { 0.0 }; + unsigned int totalRuns = unsigned int(std::pow(severityList.size(), 6)); + + // Generate the initial state once to use throughout + HowToExpandedRespiratoryAnalysisInitialState(); + + // Setup everything + std::unique_ptr pe = CreatePulseEngine(); + pe->GetLogger()->LogToConsole(true); + pe->GetLogger()->SetLogFile("./test_results/howto/HowTo_ExpandedRespiratoryAnalysisOriginal.log"); + + PulseConfiguration config; + config.UseExpandedRespiratory(eSwitch::On); + pe->SetConfigurationOverride(&config); + + // Create an ofstream object for output file + std::ofstream outFile("./test_results/howto/ExpandedRespiratoryAnalysisOriginalTable.csv"); + std::stringstream results; + + // Header for the table + results << "Right Superior Lobe Apical Severity," + << "Right Superior Lobe Posterior Severity," + << "Right Superior Lobe Anterior Severity," + << "Right Middle Lobe Lateral Severity," + << "Right Middle Lobe Medial Severity," + << "Right Inferior Lobe Superior Severity," + << "Right Inferior Lobe Medial Basal Severity," + << "Right Inferior Lobe Anterior Basal Severity," + << "Right Inferior Lobe Lateral Basal Severity," + << "Right Inferior Lobe Posterior Basal Severity," + << "Left Inferior Lobe Posterior Basal Severity," + << "Left Inferior Lobe Lateral Basal Severity," + << "Left Inferior Lobe Anteromedial Basal Severity," + << "Left Inferior Lobe Superior Severity," + << "Left Superior Lobe Inferior Lingula Severity," + << "Left Superior Lobe Superior Lingula Severity," + << "Left Superior Lobe Anterior Severity," + << "Left Superior Lobe Apicoposterior Severity," + << "Total Pulmonary Ventilation (L/min)," + << "Total Pulmonary Perfusion (L/min)," + << "Ventilation Perfusion Ratio," + << "PaO2 / FiO2 (mmHg)," + << "Capillaries PO2 (mmHg)," + << "Capillaries CO2 (mmHg),"; + + // Add headers for ventilation and perfusion for all compartments + std::vector compartments = { + "RightSuperiorLobeApical", "RightSuperiorLobePosterior", "RightSuperiorLobeAnterior", + "RightMiddleLobeLateral", "RightMiddleLobeMedial", "RightInferiorLobeSuperior", + "RightInferiorLobeMedialBasal", "RightInferiorLobeAnteriorBasal", "RightInferiorLobeLateralBasal", + "RightInferiorLobePosteriorBasal", "LeftInferiorLobePosteriorBasal", "LeftInferiorLobeLateralBasal", + "LeftInferiorLobeAnteromedialBasal", "LeftInferiorLobeSuperior", "LeftSuperiorLobeInferiorLingula", + "LeftSuperiorLobeSuperiorLingula", "LeftSuperiorLobeAnterior", "LeftSuperiorLobeApicoposterior" + }; + + for (const auto& compartment : compartments) { + results << compartment << " Ventilation (L/min)," + << compartment << " Perfusion (L/min)," + << compartment << " O2 (mmHg)," + << compartment << " CO2 (mmHg),"; + } + + results << "\n"; + + unsigned int currentRun = 0; + + // Loop through all combinations + for (double RightSuperiorLobeApicalSeverity : severityList) { + for (double RightSuperiorLobePosteriorSeverity : severityList) { + for (double RightSuperiorLobeAnteriorSeverity : severityList) { + for (double RightMiddleLobeLateralSeverity : severityList) { + for (double RightMiddleLobeMedialSeverity : severityList) { + for (double RightInferiorLobeSuperiorSeverity : severityList) { + for (double RightInferiorLobeMedialBasalSeverity : severityList) { + for (double RightInferiorLobeAnteriorBasalSeverity : severityList) { + for (double RightInferiorLobeLateralBasalSeverity : severityList) { + for (double RightInferiorLobePosteriorBasalSeverity : severityList) { + for (double LeftInferiorLobePosteriorBasalSeverity : severityList) { + for (double LeftInferiorLobeLateralBasalSeverity : severityList) { + for (double LeftInferiorLobeAnteromedialBasalSeverity : severityList) { + for (double LeftInferiorLobeSuperiorSeverity : severityList) { + for (double LeftSuperiorLobeInferiorLingulaSeverity : severityList) { + for (double LeftSuperiorLobeSuperiorLingulaSeverity : severityList) { + for (double LeftSuperiorLobeAnteriorSeverity : severityList) { + for (double LeftSuperiorLobeApicoposteriorSeverity : severityList) { + + double percentCompleted = static_cast(currentRun) / totalRuns * 100.0; + pe->GetLogger()->Info(std::stringstream() << "Starting Run " << currentRun << " of " << totalRuns << " total (" << percentCompleted << "% complete)"); + + // Load the state to start fresh each run + if (!pe->SerializeFromFile("ExpandedRespiratoryAnalysis.json")) { + pe->GetLogger()->Error("Could not load state."); + continue; + } + + SEPrimaryBlastLungInjury pbli; + pbli.GetSeverity(eLungCompartment::RightSuperiorLobeApical).SetValue(RightSuperiorLobeApicalSeverity); + pbli.GetSeverity(eLungCompartment::RightSuperiorLobePosterior).SetValue(RightSuperiorLobePosteriorSeverity); + pbli.GetSeverity(eLungCompartment::RightSuperiorLobeAnterior).SetValue(RightSuperiorLobeAnteriorSeverity); + pbli.GetSeverity(eLungCompartment::RightMiddleLobeLateral).SetValue(RightMiddleLobeLateralSeverity); + pbli.GetSeverity(eLungCompartment::RightMiddleLobeMedial).SetValue(RightMiddleLobeMedialSeverity); + pbli.GetSeverity(eLungCompartment::RightInferiorLobeSuperior).SetValue(RightInferiorLobeSuperiorSeverity); + pbli.GetSeverity(eLungCompartment::RightInferiorLobeMedialBasal).SetValue(RightInferiorLobeMedialBasalSeverity); + pbli.GetSeverity(eLungCompartment::RightInferiorLobeAnteriorBasal).SetValue(RightInferiorLobeAnteriorBasalSeverity); + pbli.GetSeverity(eLungCompartment::RightInferiorLobeLateralBasal).SetValue(RightInferiorLobeLateralBasalSeverity); + pbli.GetSeverity(eLungCompartment::RightInferiorLobePosteriorBasal).SetValue(RightInferiorLobePosteriorBasalSeverity); + pbli.GetSeverity(eLungCompartment::LeftInferiorLobePosteriorBasal).SetValue(LeftInferiorLobePosteriorBasalSeverity); + pbli.GetSeverity(eLungCompartment::LeftInferiorLobeLateralBasal).SetValue(LeftInferiorLobeLateralBasalSeverity); + pbli.GetSeverity(eLungCompartment::LeftInferiorLobeAnteromedialBasal).SetValue(LeftInferiorLobeAnteromedialBasalSeverity); + pbli.GetSeverity(eLungCompartment::LeftInferiorLobeSuperior).SetValue(LeftInferiorLobeSuperiorSeverity); + pbli.GetSeverity(eLungCompartment::LeftSuperiorLobeInferiorLingula).SetValue(LeftSuperiorLobeInferiorLingulaSeverity); + pbli.GetSeverity(eLungCompartment::LeftSuperiorLobeSuperiorLingula).SetValue(LeftSuperiorLobeSuperiorLingulaSeverity); + pbli.GetSeverity(eLungCompartment::LeftSuperiorLobeAnterior).SetValue(LeftSuperiorLobeAnteriorSeverity); + pbli.GetSeverity(eLungCompartment::LeftSuperiorLobeApicoposterior).SetValue(LeftSuperiorLobeApicoposteriorSeverity); + pe->ProcessAction(pbli); + + // Run to homestasis + SEAdvanceUntilStable RunToStable; + RunToStable.SetCriteria("AnalysisAdvanceUntilStable"); + pe->ProcessAction(RunToStable); + + // Log the combination + const SELiquidCompartment* PulmonaryCapillaries = pe->GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::PulmonaryCapillaries); + const SESubstance* O2 = pe->GetSubstanceManager().GetSubstance("Oxygen"); + const SESubstance* CO2 = pe->GetSubstanceManager().GetSubstance("CarbonDioxide"); + + results << RightSuperiorLobeApicalSeverity << "," + << RightSuperiorLobePosteriorSeverity << "," + << RightSuperiorLobeAnteriorSeverity << "," + << RightMiddleLobeLateralSeverity << "," + << RightMiddleLobeMedialSeverity << "," + << RightInferiorLobeSuperiorSeverity << "," + << RightInferiorLobeMedialBasalSeverity << "," + << RightInferiorLobeAnteriorBasalSeverity << "," + << RightInferiorLobeLateralBasalSeverity << "," + << RightInferiorLobePosteriorBasalSeverity << "," + << LeftInferiorLobePosteriorBasalSeverity << "," + << LeftInferiorLobeLateralBasalSeverity << "," + << LeftInferiorLobeAnteromedialBasalSeverity << "," + << LeftInferiorLobeSuperiorSeverity << "," + << LeftSuperiorLobeInferiorLingulaSeverity << "," + << LeftSuperiorLobeSuperiorLingulaSeverity << "," + << LeftSuperiorLobeAnteriorSeverity << "," + << LeftSuperiorLobeApicoposteriorSeverity << "," + << pe->GetRespiratorySystem()->GetTotalPulmonaryVentilation(VolumePerTimeUnit::L_Per_min) << "," + << pe->GetCardiovascularSystem()->GetTotalPulmonaryPerfusion(VolumePerTimeUnit::L_Per_min) << "," + << pe->GetRespiratorySystem()->GetVentilationPerfusionRatio() << "," + << pe->GetRespiratorySystem()->GetHorowitzIndex(PressureUnit::mmHg) << "," + << PulmonaryCapillaries->GetSubstanceQuantity(*O2)->GetPartialPressure(PressureUnit::mmHg) << "," + << PulmonaryCapillaries->GetSubstanceQuantity(*CO2)->GetPartialPressure(PressureUnit::mmHg) << ","; + + // Add ventilation and perfusion values for each compartment + for (const auto& compartment : compartments) { + const SEGasCompartment* alveoli = pe->GetCompartments().GetGasCompartment(compartment + "Alveoli"); + const SELiquidCompartment* pulmonaryCapillaries = pe->GetCompartments().GetLiquidCompartment(compartment + "PulmonaryCapillaries"); + + results << alveoli->GetVentilation(VolumePerTimeUnit::L_Per_min) << "," + << pulmonaryCapillaries->GetPerfusion(VolumePerTimeUnit::L_Per_min) << "," + << pulmonaryCapillaries->GetSubstanceQuantity(*O2)->GetPartialPressure(PressureUnit::mmHg) << "," + << pulmonaryCapillaries->GetSubstanceQuantity(*CO2)->GetPartialPressure(PressureUnit::mmHg) << ","; + } + + results << "\n"; + + // Output the results + outFile << results.str(); // Output to file + outFile.flush(); // Flush after each write + results.str(""); // Clear the stringstream for the next iteration + + currentRun++; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + // Close the file stream + outFile.close(); +} + + +class SilentLogger : public LoggerForward +{ +public: + SilentLogger(std::atomic& successfulRuns, std::atomic& unsuccessfulRuns) + : successfulRuns(successfulRuns), unsuccessfulRuns(unsuccessfulRuns) {} + + void ForwardDebug(const std::string& msg) override {} + void ForwardInfo(const std::string& msg) override {} + void ForwardWarning(const std::string& msg) override {} + void ForwardError(const std::string& msg) override {} + void ForwardFatal(const std::string& msg) override { + // Increment the unsuccessful runs counter silently + unsuccessfulRuns++; + } + +private: + std::atomic& successfulRuns; + std::atomic& unsuccessfulRuns; +}; + +// Function to print a status bar with additional information +void printStatusBar(unsigned int completed, unsigned int total, unsigned int successful, unsigned int unsuccessful) +{ + const int barWidth = 50; + float progress = (float)completed / total; + int pos = barWidth * progress; + + std::cout << "["; + for (int i = 0; i < barWidth; ++i) { + if (i < pos) std::cout << "="; + else if (i == pos) std::cout << ">"; + else std::cout << " "; + } + std::cout << "] " << int(progress * 100.0) << " % " + << "Completed: " << completed << "/" << total + << " | Successful: " << successful + << " | Unsuccessful: " << unsuccessful << "\r"; + std::cout.flush(); +} + +// Thread pool class to manage a fixed number of threads +class ThreadPool +{ +public: + ThreadPool(size_t numThreads) + : stop(false) + { + for (size_t i = 0; i < numThreads; ++i) + workers.emplace_back( + [this] + { + for (;;) + { + std::function task; + { + std::unique_lock lock(this->queueMutex); + this->condition.wait(lock, + [this] { return this->stop || !this->tasks.empty(); }); + if (this->stop && this->tasks.empty()) + return; + task = std::move(this->tasks.front()); + this->tasks.pop(); + } + task(); + } + } + ); + } + + template + auto enqueue(F&& f, Args&&... args) + -> std::future::type> + { + using return_type = typename std::result_of::type; + + auto task = std::make_shared>( + std::bind(std::forward(f), std::forward(args)...) + ); + + std::future res = task->get_future(); + { + std::unique_lock lock(queueMutex); + + // Don't allow enqueueing after stopping the pool + if (stop) + throw std::runtime_error("enqueue on stopped ThreadPool"); + + tasks.emplace([task]() { (*task)(); }); + } + condition.notify_one(); + return res; + } + + ~ThreadPool() + { + { + std::unique_lock lock(queueMutex); + stop = true; + } + condition.notify_all(); + for (std::thread& worker : workers) + worker.join(); + } + +private: + std::vector workers; + std::queue> tasks; + + std::mutex queueMutex; + std::condition_variable condition; + bool stop; +}; + +// Function to generate Latin Hypercube Samples +std::vector> generateLHSamples(int numSamples, int numParameters) { + std::vector> samples(numSamples, std::vector(numParameters)); + std::random_device rd; + std::mt19937 gen(rd()); + std::uniform_real_distribution<> dis(0.0, 1.0); + + for (int i = 0; i < numParameters; ++i) { + std::vector perm(numSamples); + std::iota(perm.begin(), perm.end(), 0); + std::shuffle(perm.begin(), perm.end(), gen); + for (int j = 0; j < numSamples; ++j) { + samples[j][i] = (perm[j] + dis(gen)) / numSamples; + } + } + + return samples; +} + +void HowToExpandedRespiratoryAnalysis() +{ + int numSamples = 1000; // Adjust the number of samples for LHS + int numParameters = 18; // Number of compartments + auto lhsSamples = generateLHSamples(numSamples, numParameters); + unsigned int totalRuns = lhsSamples.size(); + + // Generate the initial state once to use throughout + HowToExpandedRespiratoryAnalysisInitialState(); + + // Store the healthy values + HowToExpandedRespiratoryAnalysisOriginal(); + + // Create an ofstream object for output file + std::ofstream outFile("./test_results/howto/ExpandedRespiratoryAnalysisTable.csv"); + + // Header for the table + std::stringstream results; + results << "Right Superior Lobe Apical Severity," + << "Right Superior Lobe Posterior Severity," + << "Right Superior Lobe Anterior Severity," + << "Right Middle Lobe Lateral Severity," + << "Right Middle Lobe Medial Severity," + << "Right Inferior Lobe Superior Severity," + << "Right Inferior Lobe Medial Basal Severity," + << "Right Inferior Lobe Anterior Basal Severity," + << "Right Inferior Lobe Lateral Basal Severity," + << "Right Inferior Lobe Posterior Basal Severity," + << "Left Inferior Lobe Posterior Basal Severity," + << "Left Inferior Lobe Lateral Basal Severity," + << "Left Inferior Lobe Anteromedial Basal Severity," + << "Left Inferior Lobe Superior Severity," + << "Left Superior Lobe Inferior Lingula Severity," + << "Left Superior Lobe Superior Lingula Severity," + << "Left Superior Lobe Anterior Severity," + << "Left Superior Lobe Apicoposterior Severity," + << "Total Pulmonary Ventilation (L/min)," + << "Total Pulmonary Perfusion (L/min)," + << "Ventilation Perfusion Ratio," + << "PaO2 / FiO2 (mmHg)," + << "Capillaries PO2 (mmHg)," + << "Capillaries CO2 (mmHg),"; + + // Add headers for ventilation and perfusion for all compartments + std::vector compartments = { + "RightSuperiorLobeApical", "RightSuperiorLobePosterior", "RightSuperiorLobeAnterior", + "RightMiddleLobeLateral", "RightMiddleLobeMedial", "RightInferiorLobeSuperior", + "RightInferiorLobeMedialBasal", "RightInferiorLobeAnteriorBasal", "RightInferiorLobeLateralBasal", + "RightInferiorLobePosteriorBasal", "LeftInferiorLobePosteriorBasal", "LeftInferiorLobeLateralBasal", + "LeftInferiorLobeAnteromedialBasal", "LeftInferiorLobeSuperior", "LeftSuperiorLobeInferiorLingula", + "LeftSuperiorLobeSuperiorLingula", "LeftSuperiorLobeAnterior", "LeftSuperiorLobeApicoposterior" + }; + + for (const auto& compartment : compartments) { + results << compartment << " Ventilation (L/min)," + << compartment << " Perfusion (L/min),"; + } + + results << "\n"; + outFile << results.str(); + results.str(""); // Clear the stringstream for the next iteration + + // Helper function to run a single simulation + auto run_simulation = [&](const std::vector& severities, std::atomic& successfulRuns, std::atomic& unsuccessfulRuns) -> std::string { + try { + std::unique_ptr pe = CreatePulseEngine(); + pe->GetLogger()->LogToConsole(false); + pe->GetLogger()->SetLogFile(""); + + SilentLogger myLogger(successfulRuns, unsuccessfulRuns); + pe->GetLogger()->AddForward(&myLogger); + + PulseConfiguration config; + config.UseExpandedRespiratory(eSwitch::On); + pe->SetConfigurationOverride(&config); + + // Load the state to start fresh each run + if (!pe->SerializeFromFile("ExpandedRespiratoryAnalysis.json")) { + unsuccessfulRuns++; + return ""; + } + + SEPrimaryBlastLungInjury pbli; + pbli.GetSeverity(eLungCompartment::RightSuperiorLobeApical).SetValue(severities[0]); + pbli.GetSeverity(eLungCompartment::RightSuperiorLobePosterior).SetValue(severities[1]); + pbli.GetSeverity(eLungCompartment::RightSuperiorLobeAnterior).SetValue(severities[2]); + pbli.GetSeverity(eLungCompartment::RightMiddleLobeLateral).SetValue(severities[3]); + pbli.GetSeverity(eLungCompartment::RightMiddleLobeMedial).SetValue(severities[4]); + pbli.GetSeverity(eLungCompartment::RightInferiorLobeSuperior).SetValue(severities[5]); + pbli.GetSeverity(eLungCompartment::RightInferiorLobeMedialBasal).SetValue(severities[6]); + pbli.GetSeverity(eLungCompartment::RightInferiorLobeAnteriorBasal).SetValue(severities[7]); + pbli.GetSeverity(eLungCompartment::RightInferiorLobeLateralBasal).SetValue(severities[8]); + pbli.GetSeverity(eLungCompartment::RightInferiorLobePosteriorBasal).SetValue(severities[9]); + pbli.GetSeverity(eLungCompartment::LeftInferiorLobePosteriorBasal).SetValue(severities[10]); + pbli.GetSeverity(eLungCompartment::LeftInferiorLobeLateralBasal).SetValue(severities[11]); + pbli.GetSeverity(eLungCompartment::LeftInferiorLobeAnteromedialBasal).SetValue(severities[12]); + pbli.GetSeverity(eLungCompartment::LeftInferiorLobeSuperior).SetValue(severities[13]); + pbli.GetSeverity(eLungCompartment::LeftSuperiorLobeInferiorLingula).SetValue(severities[14]); + pbli.GetSeverity(eLungCompartment::LeftSuperiorLobeSuperiorLingula).SetValue(severities[15]); + pbli.GetSeverity(eLungCompartment::LeftSuperiorLobeAnterior).SetValue(severities[16]); + pbli.GetSeverity(eLungCompartment::LeftSuperiorLobeApicoposterior).SetValue(severities[17]); + pe->ProcessAction(pbli); + + // Run to homestasis + SEAdvanceUntilStable RunToStable; + RunToStable.SetCriteria("AnalysisAdvanceUntilStable"); + pe->ProcessAction(RunToStable); + + // Log the combination + const SELiquidCompartment* PulmonaryCapillaries = pe->GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::PulmonaryCapillaries); + const SESubstance* O2 = pe->GetSubstanceManager().GetSubstance("Oxygen"); + const SESubstance* CO2 = pe->GetSubstanceManager().GetSubstance("CarbonDioxide"); + + std::stringstream result; + for (const auto& severity : severities) { + result << severity << ","; + } + result << pe->GetRespiratorySystem()->GetTotalPulmonaryVentilation(VolumePerTimeUnit::L_Per_min) << "," + << pe->GetCardiovascularSystem()->GetTotalPulmonaryPerfusion(VolumePerTimeUnit::L_Per_min) << "," + << pe->GetRespiratorySystem()->GetVentilationPerfusionRatio() << "," + << pe->GetRespiratorySystem()->GetHorowitzIndex(PressureUnit::mmHg) << "," + << PulmonaryCapillaries->GetSubstanceQuantity(*O2)->GetPartialPressure(PressureUnit::mmHg) << "," + << PulmonaryCapillaries->GetSubstanceQuantity(*CO2)->GetPartialPressure(PressureUnit::mmHg) << ","; + + // Add ventilation and perfusion values for each compartment + for (const auto& compartment : compartments) { + const SEGasCompartment* alveoli = pe->GetCompartments().GetGasCompartment(compartment + "Alveoli"); + const SELiquidCompartment* pulmonaryCapillaries = pe->GetCompartments().GetLiquidCompartment(compartment + "PulmonaryCapillaries"); + + result << alveoli->GetVentilation(VolumePerTimeUnit::L_Per_min) << "," + << pulmonaryCapillaries->GetPerfusion(VolumePerTimeUnit::L_Per_min) << ","; + } + + result << "\n"; + successfulRuns++; + return result.str(); + } + catch (...) { + unsuccessfulRuns++; + return ""; + } + }; + + // Vector to hold futures + std::vector> futures; + std::atomic completedRuns(0); + std::atomic successfulRuns(0); + std::atomic unsuccessfulRuns(0); + + // Create a thread pool with 10 threads + ThreadPool pool(10); + + // Launch tasks in the thread pool + for (const auto& sample : lhsSamples) { + futures.push_back(pool.enqueue([&] { + auto result = run_simulation(sample, successfulRuns, unsuccessfulRuns); + completedRuns++; + return result; + })); + } + + // Create a thread to update the status bar + std::thread statusThread([&] { + while (completedRuns < totalRuns) { + printStatusBar(completedRuns, totalRuns, successfulRuns, unsuccessfulRuns); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } + printStatusBar(completedRuns, totalRuns, successfulRuns, unsuccessfulRuns); + std::cout << std::endl; // Move to the next line after the progress bar is complete + }); + + // Collect results + for (auto& future : futures) { + auto result = future.get(); + if (!result.empty()) { + outFile << result; + } + } + + // Wait for the status thread to finish + statusThread.join(); + + // Close the file stream + outFile.close(); +} -- GitLab From 325a423583726d1c65d36f2f148df99526ce701b Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Tue, 5 Nov 2024 10:14:57 -0500 Subject: [PATCH 17/35] Correct name of C# PBIL action filename Standardize use of unsigned int --- src/cpp/howto/HowTo-ExpandedRespiratory.cpp | 2 +- .../actions/SEPrimaryBlastLungInjury.cs | 59 +++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 src/csharp/pulse/cdm/patient/actions/SEPrimaryBlastLungInjury.cs diff --git a/src/cpp/howto/HowTo-ExpandedRespiratory.cpp b/src/cpp/howto/HowTo-ExpandedRespiratory.cpp index 4ac80b775..eab890f29 100644 --- a/src/cpp/howto/HowTo-ExpandedRespiratory.cpp +++ b/src/cpp/howto/HowTo-ExpandedRespiratory.cpp @@ -196,7 +196,7 @@ void HowToExpandedRespiratoryAnalysisOriginal() // Settings //std::vector severityList = { 0.0, 0.9 }; std::vector severityList = { 0.0 }; - unsigned int totalRuns = unsigned int(std::pow(severityList.size(), 6)); + size_t totalRuns = std::pow(severityList.size(), 6); // Generate the initial state once to use throughout HowToExpandedRespiratoryAnalysisInitialState(); diff --git a/src/csharp/pulse/cdm/patient/actions/SEPrimaryBlastLungInjury.cs b/src/csharp/pulse/cdm/patient/actions/SEPrimaryBlastLungInjury.cs new file mode 100644 index 000000000..7c248dcf8 --- /dev/null +++ b/src/csharp/pulse/cdm/patient/actions/SEPrimaryBlastLungInjury.cs @@ -0,0 +1,59 @@ +/* Distributed under the Apache License, Version 2.0. + See accompanying NOTICE file for details.*/ + +using System.Collections; +using System.Collections.Generic; + +namespace Pulse.CDM +{ + using LungImpairmentMap = Dictionary; + public class SEPrimaryBlastLungInjury : SEPatientAction + { + protected LungImpairmentMap severities; + + public SEPrimaryBlastLungInjury() + { + severities = new LungImpairmentMap(); + } + + public override void Clear() + { + base.Clear(); + foreach (var itr in severities) + itr.Value.Invalidate(); + } + + public override bool IsValid() + { + return HasSeverity(); + } + + public bool HasSeverity() + { + foreach (var itr in severities) + if (itr.Value.IsValid()) + return true; + return false; + } + public bool HasSeverity(eLungCompartment c) + { + if (!severities.ContainsKey(c)) + return false; + return severities[c].IsValid(); + } + public SEScalar0To1 GetSeverity(eLungCompartment c) + { + SEScalar0To1 s = severities[c]; + if(s == null) + { + s = new SEScalar0To1(); + severities[c] = s; + } + return s; + } + public LungImpairmentMap GetSeverities() + { + return severities; + } + } +} -- GitLab From 887006ccc476b3168b2b644fe872c44f6699876a Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Mon, 11 Nov 2024 22:26:53 -0500 Subject: [PATCH 18/35] =?UTF-8?q?=EF=BB=BFSeparate=20circuit/cmpt=20expans?= =?UTF-8?q?ions=20(ExpandedLungs=20and=20ComputationalLife)=20into=20their?= =?UTF-8?q?=20own=20classes=20These=20classes=20only=20contain=20the=20new?= =?UTF-8?q?=20additions=20Changed=20expansion=20names=20in=20config:=20-?= =?UTF-8?q?=20EnableRenal=20to=20ExpandedKidneys=20-=20ExpandedRespiratory?= =?UTF-8?q?=20to=20ExpandedLungs=20-=20ExpandedCardiovascular=20to=20Compu?= =?UTF-8?q?tationalLifeExpansion=20Added=20Circuit=20tests=20for=20Expande?= =?UTF-8?q?dLungs=20in=20various=20other=20circuit=20configurations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/InitialPatientState.json | 4 +- src/cpp/engine/PulseConfiguration.cpp | 210 +-- src/cpp/engine/PulseConfiguration.h | 21 +- src/cpp/engine/PulseEngine.h | 498 ++---- .../engine/common/controller/CircuitManager.h | 249 +-- .../common/controller/CompartmentManager.cpp | 49 +- .../common/controller/CompartmentManager.h | 18 +- src/cpp/engine/common/controller/Controller.h | 16 +- .../SetupCircuitsAndCompartments.cpp | 47 +- ...pp => SetupComputationalLifeExpansion.cpp} | 1414 ++++++++--------- ...Respiratory.cpp => SetupExpandedLungs.cpp} | 1002 ++++++------ .../common/controller/SubstanceManager.cpp | 274 ++-- .../system/physiology/BloodChemistryModel.cpp | 4 +- .../system/physiology/CardiovascularModel.cpp | 636 ++++---- .../system/physiology/RespiratoryModel.cpp | 356 +++-- .../common/system/physiology/TissueModel.cpp | 4 +- src/cpp/engine/files.cmake | 4 +- .../controller/CompartmentManager.cpp | 2 +- .../SetupCircuitsAndCompartments.cpp | 2 +- .../whole_body/test/AerosolTest.cpp | 2 +- .../whole_body/test/AnesthesiaCircuit.cpp | 14 +- .../whole_body/test/CardiovascularCircuit.cpp | 42 +- .../whole_body/test/EngineTest.cpp | 32 +- .../human_adult/whole_body/test/EngineTest.h | 27 +- .../whole_body/test/FourCompartmentTest.cpp | 2 +- .../test/MechanicalVentilatorCircuit.cpp | 14 +- .../whole_body/test/NervousTests.cpp | 2 +- .../whole_body/test/RenalCircuit.cpp | 6 +- .../whole_body/test/RespiratoryCircuit.cpp | 30 +- .../whole_body/test/SolverTests.cpp | 2 +- .../whole_body/test/TemperatureCircuit.cpp | 14 +- .../engine/io/protobuf/PBConfiguration.cpp | 18 +- src/cpp/howto/HowTo-ExpandedRespiratory.cpp | 8 +- src/cpp/howto/HowTo-ExpandedVasculature.cpp | 2 +- src/cpp/test_driver/main.cpp | 10 +- .../patient/actions/PrimaryBlastLungInjury.cs | 59 - .../pulse/engine/bind/Configuration.proto | 86 +- 37 files changed, 2416 insertions(+), 2764 deletions(-) rename src/cpp/engine/common/controller/{SetupExpandedCardiovascular.cpp => SetupComputationalLifeExpansion.cpp} (81%) rename src/cpp/engine/common/controller/{SetupExpandedRespiratory.cpp => SetupExpandedLungs.cpp} (84%) delete mode 100644 src/csharp/pulse/cdm/patient/actions/PrimaryBlastLungInjury.cs diff --git a/bin/InitialPatientState.json b/bin/InitialPatientState.json index db1697d64..49b9804c4 100644 --- a/bin/InitialPatientState.json +++ b/bin/InitialPatientState.json @@ -1,8 +1,6 @@ { "Configuration": { - "WritePatientBaselineFile": "On", - "CardiovascularConfiguration" : { "UseExpandedVasculature" : "Off" }, - "RespiratoryConfiguration" : { "UseExpandedRespiratory" : "Off" } + "RespiratoryConfiguration" : { "ExpandedLungs" : "Off" } }, "Scenario": { "Name": "InitialStableState", diff --git a/src/cpp/engine/PulseConfiguration.cpp b/src/cpp/engine/PulseConfiguration.cpp index f8f0e7a67..3c77a8e3f 100644 --- a/src/cpp/engine/PulseConfiguration.cpp +++ b/src/cpp/engine/PulseConfiguration.cpp @@ -59,13 +59,13 @@ PulseConfiguration::PulseConfiguration(Logger* logger) : SEEngineConfiguration(l m_StandardOxygenDiffusionCoefficient = nullptr; // Cardiovascular + m_UseComputationalLifeExpansion = eSwitch::NullSwitch; m_LeftHeartElastanceMaximum = nullptr; m_LeftHeartElastanceMinimum = nullptr; m_MinimumBloodVolumeFraction = nullptr; m_RightHeartElastanceMaximum = nullptr; m_RightHeartElastanceMinimum = nullptr; m_StandardPulmonaryCapillaryCoverage = nullptr; - m_UseExpandedVasculature = eSwitch::NullSwitch; m_TuneCardiovascularCircuit = eSwitch::On; m_CardiovascularTuningFile = ""; @@ -145,7 +145,7 @@ PulseConfiguration::PulseConfiguration(Logger* logger) : SEEngineConfiguration(l m_VenousComplianceDistributedTimeDelay = nullptr; // Renal - m_RenalEnabled = eSwitch::On; + m_UseExpandedKidneys = eSwitch::On; m_PlasmaSodiumConcentrationSetPoint = nullptr; m_PeritubularPotassiumConcentrationSetPoint = nullptr; m_LeftGlomerularFluidPermeabilityBaseline = nullptr; @@ -162,6 +162,7 @@ PulseConfiguration::PulseConfiguration(Logger* logger) : SEEngineConfiguration(l // Respiratory + m_UseExpandedLungs = eSwitch::NullSwitch; m_CentralControllerCO2PressureSetPoint = nullptr; m_CentralVentilatoryControllerGain = nullptr; m_MinimumAllowableInpiratoryAndExpiratoryPeriod = nullptr; @@ -171,7 +172,6 @@ PulseConfiguration::PulseConfiguration(Logger* logger) : SEEngineConfiguration(l m_PulmonaryVentilationRateMaximum = nullptr; m_VentilationTidalVolumeIntercept = nullptr; m_VentilatoryOcclusionPressure = nullptr; - m_UseExpandedRespiratory = eSwitch::NullSwitch; // Tissue m_TissueEnabled = eSwitch::On; @@ -180,7 +180,6 @@ PulseConfiguration::PulseConfiguration(Logger* logger) : SEEngineConfiguration(l PulseConfiguration::~PulseConfiguration() { SAFE_DELETE(m_TimeStep); - m_AllowDynamicTimeStep = eSwitch::Off; m_Overrides.clear(); m_Modifiers.clear(); @@ -197,9 +196,6 @@ PulseConfiguration::~PulseConfiguration() SAFE_DELETE(m_RightHeartElastanceMaximum); SAFE_DELETE(m_RightHeartElastanceMinimum); SAFE_DELETE(m_StandardPulmonaryCapillaryCoverage); - m_UseExpandedVasculature = eSwitch::NullSwitch; - m_TuneCardiovascularCircuit = eSwitch::On; - m_CardiovascularTuningFile = ""; // Circuit SAFE_DELETE(m_CardiovascularOpenResistance); @@ -297,7 +293,6 @@ PulseConfiguration::~PulseConfiguration() SAFE_DELETE(m_PulmonaryVentilationRateMaximum); SAFE_DELETE(m_VentilationTidalVolumeIntercept); SAFE_DELETE(m_VentilatoryOcclusionPressure); - m_UseExpandedRespiratory = eSwitch::NullSwitch; //Tissue } @@ -317,13 +312,13 @@ void PulseConfiguration::Clear() INVALIDATE_PROPERTY(m_StandardOxygenDiffusionCoefficient); // Cardiovascular + m_UseComputationalLifeExpansion = eSwitch::NullSwitch; INVALIDATE_PROPERTY(m_LeftHeartElastanceMaximum); INVALIDATE_PROPERTY(m_LeftHeartElastanceMinimum); INVALIDATE_PROPERTY(m_MinimumBloodVolumeFraction); INVALIDATE_PROPERTY(m_RightHeartElastanceMaximum); INVALIDATE_PROPERTY(m_RightHeartElastanceMinimum); INVALIDATE_PROPERTY(m_StandardPulmonaryCapillaryCoverage); - m_UseExpandedVasculature = eSwitch::NullSwitch; m_TuneCardiovascularCircuit = eSwitch::On; m_CardiovascularTuningFile = ""; @@ -406,7 +401,7 @@ void PulseConfiguration::Clear() INVALIDATE_PROPERTY(m_VenousComplianceDistributedTimeDelay); // Renal - m_RenalEnabled = eSwitch::On; + m_UseExpandedKidneys = eSwitch::On; INVALIDATE_PROPERTY(m_PlasmaSodiumConcentrationSetPoint); INVALIDATE_PROPERTY(m_PeritubularPotassiumConcentrationSetPoint); INVALIDATE_PROPERTY(m_LeftGlomerularFluidPermeabilityBaseline); @@ -422,6 +417,7 @@ void PulseConfiguration::Clear() INVALIDATE_PROPERTY(m_TargetSodiumDelivery); // Respiratory + m_UseExpandedLungs = eSwitch::NullSwitch; INVALIDATE_PROPERTY(m_CentralControllerCO2PressureSetPoint); INVALIDATE_PROPERTY(m_CentralVentilatoryControllerGain); INVALIDATE_PROPERTY(m_MinimumAllowableInpiratoryAndExpiratoryPeriod); @@ -431,7 +427,6 @@ void PulseConfiguration::Clear() INVALIDATE_PROPERTY(m_PulmonaryVentilationRateMaximum); INVALIDATE_PROPERTY(m_VentilationTidalVolumeIntercept); INVALIDATE_PROPERTY(m_VentilatoryOcclusionPressure); - m_UseExpandedRespiratory = eSwitch::NullSwitch; //Tissue m_TissueEnabled = eSwitch::On; @@ -491,15 +486,16 @@ void PulseConfiguration::Initialize(const std::string& dataDir, SESubstanceManag GetStandardOxygenDiffusionCoefficient().SetValue(0.00000000246, AreaPerTimePressureUnit::cm2_Per_min_mmHg); // Cardiovascular + m_UseComputationalLifeExpansion = eSwitch::Off; GetLeftHeartElastanceMaximum().SetValue(2.49, PressurePerVolumeUnit::mmHg_Per_mL); GetLeftHeartElastanceMinimum().SetValue(0.049, PressurePerVolumeUnit::mmHg_Per_mL); GetMinimumBloodVolumeFraction().SetValue(0.65); // \cite Guyton 11th ed p.279 GetRightHeartElastanceMaximum().SetValue(0.523, PressurePerVolumeUnit::mmHg_Per_mL); GetRightHeartElastanceMinimum().SetValue(0.0243, PressurePerVolumeUnit::mmHg_Per_mL); GetStandardPulmonaryCapillaryCoverage().SetValue(0.70); - UseExpandedVasculature(eSwitch::Off);// Call the function to set defaults m_TuneCardiovascularCircuit = eSwitch::On; m_CardiovascularTuningFile = ""; + InitializeCardiovascularModifiers(); // Circuits GetCardiovascularOpenResistance().SetValue(100.0, PressureTimePerVolumeUnit::mmHg_s_Per_mL); @@ -598,7 +594,7 @@ void PulseConfiguration::Initialize(const std::string& dataDir, SESubstanceManag GetVenousComplianceDistributedTimeDelay().SetValue(60.0, TimeUnit::s); // Renal - m_RenalEnabled = eSwitch::On; + m_UseExpandedKidneys = eSwitch::On; GetPlasmaSodiumConcentrationSetPoint().SetValue(3.23, MassPerVolumeUnit::mg_Per_mL); GetPeritubularPotassiumConcentrationSetPoint().SetValue(0.0185, MassPerVolumeUnit::g_Per_dL); GetLeftGlomerularFluidPermeabilityBaseline().SetValue(3.67647, VolumePerTimePressureAreaUnit::mL_Per_min_mmHg_m2); @@ -615,6 +611,7 @@ void PulseConfiguration::Initialize(const std::string& dataDir, SESubstanceManag GetTargetSodiumDelivery().SetValue(0.201, MassPerTimeUnit::g_Per_min); // Respiratory + m_UseExpandedLungs = eSwitch::Off; GetCentralControllerCO2PressureSetPoint().SetValue(35.5, PressureUnit::mmHg); GetCentralVentilatoryControllerGain().SetValue(1.44); //How much to add to the amplitude when the CO2 is off GetMinimumAllowableInpiratoryAndExpiratoryPeriod().SetValue(0.25, TimeUnit::s); @@ -624,7 +621,6 @@ void PulseConfiguration::Initialize(const std::string& dataDir, SESubstanceManag GetPulmonaryVentilationRateMaximum().SetValue(150.0, VolumePerTimeUnit::L_Per_min); GetVentilationTidalVolumeIntercept().SetValue(0.3, VolumeUnit::L); GetVentilatoryOcclusionPressure().SetValue(0.75, PressureUnit::cmH2O); //This increases the absolute max driver pressure - UseExpandedRespiratory(eSwitch::Off); // Tissue m_TissueEnabled = eSwitch::On; @@ -728,6 +724,88 @@ const SEScalarProperties& PulseConfiguration::GetModifiers() const { return m_Modifiers; } +void PulseConfiguration::InitializeCardiovascularModifiers() +{ + m_Modifiers.clear(); + // Circuit Modifiers + if (m_UseComputationalLifeExpansion == eSwitch::On) + { + // Circuit Modifiers + m_Modifiers[pulse::CardiovascularPath::Aorta3ToAorta1] = SEScalarPair(1.2902894293208438);// 1.12 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmBone1] = SEScalarPair(1.0923362183174377);// 1.15 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmFat1] = SEScalarPair(1.0923362183174377);// 1.15 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmMicrovasculature1] = SEScalarPair(1.0923362183174377);// 1.15 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmMuscle1] = SEScalarPair(1.0923362183174377);// 1.15 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmSkin1] = SEScalarPair(1.0923362183174377);// 1.15 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmFat1] = SEScalarPair(1.0923362199627225);// 1.15 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmMuscle1] = SEScalarPair(1.0923362199627225);// 1.15 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmSkin1] = SEScalarPair(1.0923362199627225);// 1.15 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmBone1] = SEScalarPair(1.0923362199627225);// 1.15 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmMicrovasculature1] = SEScalarPair(1.0923362199627225);// 1.15 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::Extracranial1ToExtracranial2] = SEScalarPair(0.99455963021629035);// 1.0 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::Intracranial1ToIntracranial2] = SEScalarPair(0.99455963021629035);// 1.0 + m_Modifiers[pulse::CardiovascularPath::VenaCava1ToRightHeart2] = SEScalarPair(0.009); + m_Modifiers[pulse::CardiovascularPath::LeftKidney1ToLeftKidney2] = SEScalarPair(1.5); + m_Modifiers[pulse::CardiovascularPath::RightKidney1ToRightKidney2] = SEScalarPair(1.5); + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::Gut1ToLargeIntestine1] = SEScalarPair(0.98471147698642625);// 1.05 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegBone1] = SEScalarPair(1.055513327833395);// 1.1 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegFat1] = SEScalarPair(1.055513327833395);// 1.1 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegMicrovasculature1] = SEScalarPair(1.055513327833395);// 1.1 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegMuscle1] = SEScalarPair(1.055513327833395);// 1.1 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegSkin1] = SEScalarPair(1.055513327833395);// 1.1 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegBone1] = SEScalarPair(1.0555133289980438);// 1.1 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegFat1] = SEScalarPair(1.0555133289980438);// 1.1 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegMicrovasculature1] = SEScalarPair(1.0555133289980438);// 1.1 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegMuscle1] = SEScalarPair(1.0555133289980438);// 1.1 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegSkin1] = SEScalarPair(1.0555133289980438);// 1.1 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::Gut1ToLiver1] = SEScalarPair(1.5008836959051552);// 1.1 + m_Modifiers[pulse::CardiovascularPath::Myocardium1ToMyocardium2] = SEScalarPair(0.9623041322717929);// 0.95 + m_Modifiers[pulse::CardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryCapillaries1] = SEScalarPair(0.79184301394230017);// 1.0 + m_Modifiers[pulse::CardiovascularPath::RightPulmonaryCapillaries1ToRightPulmonaryVeins1] = SEScalarPair(1.0917195273914668);// 1.0 + m_Modifiers[pulse::CardiovascularPath::RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1] = SEScalarPair(1.0); + m_Modifiers[pulse::CardiovascularPath::LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1] = SEScalarPair(1.0); + m_Modifiers[pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1] = SEScalarPair(0.84990272641328168);// 1.0 + m_Modifiers[pulse::CardiovascularPath::LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1] = SEScalarPair(1.0802879539709094);// 1.0 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::Gut1ToSmallIntestine1] = SEScalarPair(0.97271586393584319);// 1.14 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::Gut1ToSplanchnic1] = SEScalarPair(0.98750749786051784);// 0.95 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::Gut1ToSpleen1] = SEScalarPair(0.96800874795093717);// 0.95 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoBone1] = SEScalarPair(1.0265141845356056);// 1.02 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoFat1] = SEScalarPair(1.0154101337135821);// 1.02 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoMuscle1] = SEScalarPair(1.0968290345983671);// 1.15 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::TorsoMuscle1ToTorso2] = SEScalarPair(0.81318313089396543);// 1.0 + m_Modifiers[pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoSkin1] = SEScalarPair(0.99621251983966808);// 1.0 + m_Modifiers[pulse::CardiovascularPath::VenaCava1ToGround] = SEScalarPair(0.9); + } + else + { + m_Modifiers[pulse::CardiovascularPath::Aorta3ToAorta1] = SEScalarPair(1.12); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToLeftArm1] = SEScalarPair(1.15); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToRightArm1] = SEScalarPair(1.15); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToBone1] = SEScalarPair(1.02); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToBrain1] = SEScalarPair(1.0); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToFat1] = SEScalarPair(1.02); + m_Modifiers[pulse::CardiovascularPath::VenaCava1ToRightHeart2] = SEScalarPair(0.009); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToLeftKidney1] = SEScalarPair(1.5); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToRightKidney1] = SEScalarPair(1.5); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToLargeIntestine1] = SEScalarPair(1.05); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToLeftLeg1] = SEScalarPair(1.1); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToRightLeg1] = SEScalarPair(1.1); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToLiver1] = SEScalarPair(1.1); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToMuscle1] = SEScalarPair(1.15); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToMyocardium1] = SEScalarPair(0.95); + m_Modifiers[pulse::CardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryCapillaries1] = SEScalarPair(1.0); + m_Modifiers[pulse::CardiovascularPath::RightPulmonaryCapillaries1ToRightPulmonaryVeins1] = SEScalarPair(1.0); + m_Modifiers[pulse::CardiovascularPath::RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1] = SEScalarPair(1.0); + m_Modifiers[pulse::CardiovascularPath::LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1] = SEScalarPair(1.0); + m_Modifiers[pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1] = SEScalarPair(1.0); + m_Modifiers[pulse::CardiovascularPath::LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1] = SEScalarPair(1.0); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToSkin1] = SEScalarPair(1.0); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToSmallIntestine1] = SEScalarPair(1.14); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToSplanchnic1] = SEScalarPair(0.95); + m_Modifiers[pulse::CardiovascularPath::Aorta1ToSpleen1] = SEScalarPair(0.95); + m_Modifiers[pulse::CardiovascularPath::VenaCava1ToGround] = SEScalarPair(0.9); + } +} ////////////////////// /** Blood Chemistry */ @@ -838,89 +916,12 @@ double PulseConfiguration::GetLeftHeartElastanceMinimum(const PressurePerVolumeU return m_LeftHeartElastanceMinimum->GetValue(unit); } -void PulseConfiguration::UseExpandedVasculature(eSwitch s) +void PulseConfiguration::UseComputationalLifeExpansion(eSwitch s) { if (s == eSwitch::NullSwitch) return; - m_UseExpandedVasculature = s; - // Circuit Modifiers - if (m_UseExpandedVasculature == eSwitch::On) - { - // Circuit Modifiers - m_Modifiers[pulse::ExpandedCardiovascularPath::Aorta3ToAorta1] = SEScalarPair(1.2902894293208438);// 1.12 - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmBone1] = SEScalarPair(1.0923362183174377);// 1.15 - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmFat1] = SEScalarPair(1.0923362183174377);// 1.15 - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmMicrovasculature1] = SEScalarPair(1.0923362183174377);// 1.15 - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmMuscle1] = SEScalarPair(1.0923362183174377);// 1.15 - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmSkin1] = SEScalarPair(1.0923362183174377);// 1.15 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightArm1ToRightArmFat1] = SEScalarPair(1.0923362199627225);// 1.15 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightArm1ToRightArmMuscle1] = SEScalarPair(1.0923362199627225);// 1.15 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightArm1ToRightArmSkin1] = SEScalarPair(1.0923362199627225);// 1.15 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightArm1ToRightArmBone1] = SEScalarPair(1.0923362199627225);// 1.15 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightArm1ToRightArmMicrovasculature1] = SEScalarPair(1.0923362199627225);// 1.15 - m_Modifiers[pulse::ExpandedCardiovascularPath::Extracranial1ToExtracranial2] = SEScalarPair(0.99455963021629035);// 1.0 - m_Modifiers[pulse::ExpandedCardiovascularPath::Intracranial1ToIntracranial2] = SEScalarPair(0.99455963021629035);// 1.0 - m_Modifiers[pulse::ExpandedCardiovascularPath::VenaCava1ToRightHeart2] = SEScalarPair(0.009); - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftKidney1ToLeftKidney2] = SEScalarPair(1.5); - m_Modifiers[pulse::ExpandedCardiovascularPath::RightKidney1ToRightKidney2] = SEScalarPair(1.5); - m_Modifiers[pulse::ExpandedCardiovascularPath::Gut1ToLargeIntestine1] = SEScalarPair(0.98471147698642625);// 1.05 - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegBone1] = SEScalarPair(1.055513327833395);// 1.1 - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegFat1] = SEScalarPair(1.055513327833395);// 1.1 - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegMicrovasculature1] = SEScalarPair(1.055513327833395);// 1.1 - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegMuscle1] = SEScalarPair(1.055513327833395);// 1.1 - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegSkin1] = SEScalarPair(1.055513327833395);// 1.1 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegBone1] = SEScalarPair(1.0555133289980438);// 1.1 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegFat1] = SEScalarPair(1.0555133289980438);// 1.1 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegMicrovasculature1] = SEScalarPair(1.0555133289980438);// 1.1 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegMuscle1] = SEScalarPair(1.0555133289980438);// 1.1 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegSkin1] = SEScalarPair(1.0555133289980438);// 1.1 - m_Modifiers[pulse::ExpandedCardiovascularPath::Gut1ToLiver1] = SEScalarPair(1.5008836959051552);// 1.1 - m_Modifiers[pulse::ExpandedCardiovascularPath::Myocardium1ToMyocardium2] = SEScalarPair(0.9623041322717929);// 0.95 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryCapillaries1] = SEScalarPair(0.79184301394230017);// 1.0 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightPulmonaryCapillaries1ToRightPulmonaryVeins1] = SEScalarPair(1.0917195273914668);// 1.0 - m_Modifiers[pulse::ExpandedCardiovascularPath::RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1] = SEScalarPair(1.0); - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1] = SEScalarPair(1.0); - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1] = SEScalarPair(0.84990272641328168);// 1.0 - m_Modifiers[pulse::ExpandedCardiovascularPath::LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1] = SEScalarPair(1.0802879539709094);// 1.0 - m_Modifiers[pulse::ExpandedCardiovascularPath::Gut1ToSmallIntestine1] = SEScalarPair(0.97271586393584319);// 1.14 - m_Modifiers[pulse::ExpandedCardiovascularPath::Gut1ToSplanchnic1] = SEScalarPair(0.98750749786051784);// 0.95 - m_Modifiers[pulse::ExpandedCardiovascularPath::Gut1ToSpleen1] = SEScalarPair(0.96800874795093717);// 0.95 - m_Modifiers[pulse::ExpandedCardiovascularPath::Torso1ToTorsoBone1] = SEScalarPair(1.0265141845356056);// 1.02 - m_Modifiers[pulse::ExpandedCardiovascularPath::Torso1ToTorsoFat1] = SEScalarPair(1.0154101337135821);// 1.02 - m_Modifiers[pulse::ExpandedCardiovascularPath::Torso1ToTorsoMuscle1] = SEScalarPair(1.0968290345983671);// 1.15 - m_Modifiers[pulse::ExpandedCardiovascularPath::TorsoMuscle1ToTorso2] = SEScalarPair(0.81318313089396543);// 1.0 - m_Modifiers[pulse::ExpandedCardiovascularPath::Torso1ToTorsoSkin1] = SEScalarPair(0.99621251983966808);// 1.0 - m_Modifiers[pulse::ExpandedCardiovascularPath::VenaCava1ToGround] = SEScalarPair(0.9); - } - else - { - m_Modifiers[pulse::CardiovascularPath::Aorta3ToAorta1] = SEScalarPair(1.12); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToLeftArm1] = SEScalarPair(1.15); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToRightArm1] = SEScalarPair(1.15); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToBone1] = SEScalarPair(1.02); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToBrain1] = SEScalarPair(1.0); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToFat1] = SEScalarPair(1.02); - m_Modifiers[pulse::CardiovascularPath::VenaCava1ToRightHeart2] = SEScalarPair(0.009); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToLeftKidney1] = SEScalarPair(1.5); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToRightKidney1] = SEScalarPair(1.5); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToLargeIntestine1] = SEScalarPair(1.05); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToLeftLeg1] = SEScalarPair(1.1); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToRightLeg1] = SEScalarPair(1.1); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToLiver1] = SEScalarPair(1.1); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToMuscle1] = SEScalarPair(1.15); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToMyocardium1] = SEScalarPair(0.95); - m_Modifiers[pulse::CardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryCapillaries1] = SEScalarPair(1.0); - m_Modifiers[pulse::CardiovascularPath::RightPulmonaryCapillaries1ToRightPulmonaryVeins1] = SEScalarPair(1.0); - m_Modifiers[pulse::CardiovascularPath::RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1] = SEScalarPair(1.0); - m_Modifiers[pulse::CardiovascularPath::LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1] = SEScalarPair(1.0); - m_Modifiers[pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1] = SEScalarPair(1.0); - m_Modifiers[pulse::CardiovascularPath::LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1] = SEScalarPair(1.0); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToSkin1] = SEScalarPair(1.0); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToSmallIntestine1] = SEScalarPair(1.14); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToSplanchnic1] = SEScalarPair(0.95); - m_Modifiers[pulse::CardiovascularPath::Aorta1ToSpleen1] = SEScalarPair(0.95); - m_Modifiers[pulse::CardiovascularPath::VenaCava1ToGround] = SEScalarPair(0.9); - } + m_UseComputationalLifeExpansion = s; + InitializeCardiovascularModifiers(); } bool PulseConfiguration::HasMinimumBloodVolumeFraction() const @@ -1952,6 +1953,13 @@ double PulseConfiguration::GetVenousComplianceDistributedTimeDelay(const TimeUni /** Renal */ //////////// +void PulseConfiguration::UseExpandedKidneys(eSwitch s) +{ + if (s == eSwitch::NullSwitch) + return; + m_UseExpandedKidneys = s; +} + bool PulseConfiguration::HasPlasmaSodiumConcentrationSetPoint() const { return m_PlasmaSodiumConcentrationSetPoint == nullptr ? false : m_PlasmaSodiumConcentrationSetPoint->IsValid(); @@ -2170,6 +2178,14 @@ SEScalarMassPerTime& PulseConfiguration::GetTargetSodiumDelivery() ////////////////// /** Respiratory */ ////////////////// + +void PulseConfiguration::UseExpandedLungs(eSwitch s) +{ + if (s == eSwitch::NullSwitch) + return; + m_UseExpandedLungs = s; +} + bool PulseConfiguration::HasCentralControllerCO2PressureSetPoint() const { return m_CentralControllerCO2PressureSetPoint == nullptr ? false : m_CentralControllerCO2PressureSetPoint->IsValid(); @@ -2323,9 +2339,3 @@ double PulseConfiguration::GetVentilationTidalVolumeIntercept(const VolumeUnit& return m_VentilationTidalVolumeIntercept->GetValue(unit); } -void PulseConfiguration::UseExpandedRespiratory(eSwitch s) -{ - if (s == eSwitch::NullSwitch) - return; - m_UseExpandedRespiratory = s; -} diff --git a/src/cpp/engine/PulseConfiguration.h b/src/cpp/engine/PulseConfiguration.h index 31f359dd4..2ee85e74e 100644 --- a/src/cpp/engine/PulseConfiguration.h +++ b/src/cpp/engine/PulseConfiguration.h @@ -64,6 +64,7 @@ public: virtual SEScalarProperties& GetModifiers(); virtual const SEScalarProperties& GetModifiers() const; protected: + virtual void InitializeCardiovascularModifiers(); SEScalarTime* m_TimeStep; eSwitch m_AllowDynamicTimeStep; @@ -126,8 +127,8 @@ public: virtual SEScalar& GetStandardPulmonaryCapillaryCoverage(); virtual double GetStandardPulmonaryCapillaryCoverage() const; - virtual eSwitch UseExpandedVasculature() const { return m_UseExpandedVasculature; } - virtual void UseExpandedVasculature(eSwitch s); + virtual eSwitch UseComputationalLifeExpansion() const { return m_UseComputationalLifeExpansion; } + virtual void UseComputationalLifeExpansion(eSwitch s); virtual eSwitch TuneCardiovascularCircuit() const { return m_TuneCardiovascularCircuit; } virtual void TuneCardiovascularCircuit(eSwitch s) { m_TuneCardiovascularCircuit = s; } @@ -142,7 +143,7 @@ protected: SEScalarPressurePerVolume* m_RightHeartElastanceMaximum; SEScalarPressurePerVolume* m_RightHeartElastanceMinimum; SEScalar* m_StandardPulmonaryCapillaryCoverage; - eSwitch m_UseExpandedVasculature; + eSwitch m_UseComputationalLifeExpansion; eSwitch m_TuneCardiovascularCircuit; std::string m_CardiovascularTuningFile; @@ -487,8 +488,8 @@ protected: /** Renal */ //////////// public: - virtual bool IsRenalEnabled() const { return m_RenalEnabled == eSwitch::On; } - virtual void EnableRenal(eSwitch s) { m_RenalEnabled = (s == eSwitch::NullSwitch) ? eSwitch::On : s; } + virtual eSwitch UseExpandedKidneys() const { return m_UseExpandedKidneys; } + virtual void UseExpandedKidneys(eSwitch s); virtual bool HasPlasmaSodiumConcentrationSetPoint() const; virtual SEScalarMassPerVolume& GetPlasmaSodiumConcentrationSetPoint(); @@ -541,7 +542,7 @@ public: virtual bool HasTargetSodiumDelivery(); virtual SEScalarMassPerTime& GetTargetSodiumDelivery(); protected: - eSwitch m_RenalEnabled; + eSwitch m_UseExpandedKidneys; SEScalarMassPerVolume* m_PlasmaSodiumConcentrationSetPoint; SEScalarMassPerVolume* m_PeritubularPotassiumConcentrationSetPoint; @@ -566,6 +567,9 @@ protected: /** Respiratory */ ////////////////// public: + virtual eSwitch UseExpandedLungs() const { return m_UseExpandedLungs; } + virtual void UseExpandedLungs(eSwitch s); + virtual bool HasCentralControllerCO2PressureSetPoint() const; virtual SEScalarPressure& GetCentralControllerCO2PressureSetPoint(); virtual double GetCentralControllerCO2PressureSetPoint(const PressureUnit& unit) const; @@ -603,10 +607,8 @@ public: virtual SEScalarPressure& GetVentilatoryOcclusionPressure(); virtual double GetVentilatoryOcclusionPressure(const PressureUnit& unit) const; - virtual eSwitch UseExpandedRespiratory() const { return m_UseExpandedRespiratory; } - virtual void UseExpandedRespiratory(eSwitch s); - protected: + eSwitch m_UseExpandedLungs; SEScalarPressure* m_CentralControllerCO2PressureSetPoint; SEScalar* m_CentralVentilatoryControllerGain; SEScalarTime* m_MinimumAllowableInpiratoryAndExpiratoryPeriod; @@ -616,7 +618,6 @@ protected: SEScalarVolumePerTime* m_PulmonaryVentilationRateMaximum; SEScalarVolume* m_VentilationTidalVolumeIntercept; SEScalarPressure* m_VentilatoryOcclusionPressure; - eSwitch m_UseExpandedRespiratory; ///////////// /** Tissue */ diff --git a/src/cpp/engine/PulseEngine.h b/src/cpp/engine/PulseEngine.h index 803f72cea..2550a7fb2 100644 --- a/src/cpp/engine/PulseEngine.h +++ b/src/cpp/engine/PulseEngine.h @@ -337,7 +337,7 @@ namespace pulse static std::vector _values; }; - class ExpandedPulmonaryCompartment + class ExpandedLungsPulmonaryCompartment { public: DEFINE_STATIC_STRING(RightBranches); @@ -523,7 +523,7 @@ namespace pulse static std::vector _values; }; - class ExpandedPulmonaryLink + class ExpandedLungsPulmonaryLink { public: DEFINE_STATIC_STRING(CarinaToRightMainBronchus); @@ -908,26 +908,6 @@ namespace pulse DEFINE_STATIC_STRING(Ground); - DEFINE_STATIC_STRING(RightSuperiorLobeApicalPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightSuperiorLobePosteriorPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightMiddleLobeLateralPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightMiddleLobeMedialPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightInferiorLobeSuperiorPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalPulmonaryCapillaries); - - DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); - static const std::vector& GetValues() { @@ -991,26 +971,6 @@ namespace pulse _values.push_back(RightArm); _values.push_back(RightLeg); //_values.push_back(Ground); - - _values.push_back(RightSuperiorLobeApicalPulmonaryCapillaries); - _values.push_back(RightSuperiorLobePosteriorPulmonaryCapillaries); - _values.push_back(RightSuperiorLobeAnteriorPulmonaryCapillaries); - _values.push_back(RightMiddleLobeLateralPulmonaryCapillaries); - _values.push_back(RightMiddleLobeMedialPulmonaryCapillaries); - _values.push_back(RightInferiorLobeSuperiorPulmonaryCapillaries); - _values.push_back(RightInferiorLobeMedialBasalPulmonaryCapillaries); - _values.push_back(RightInferiorLobeAnteriorBasalPulmonaryCapillaries); - _values.push_back(RightInferiorLobeLateralBasalPulmonaryCapillaries); - _values.push_back(RightInferiorLobePosteriorBasalPulmonaryCapillaries); - - _values.push_back(LeftInferiorLobePosteriorBasalPulmonaryCapillaries); - _values.push_back(LeftInferiorLobeLateralBasalPulmonaryCapillaries); - _values.push_back(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); - _values.push_back(LeftInferiorLobeSuperiorPulmonaryCapillaries); - _values.push_back(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); - _values.push_back(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); - _values.push_back(LeftSuperiorLobeAnteriorPulmonaryCapillaries); - _values.push_back(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); } return _values; } @@ -1143,67 +1103,6 @@ namespace pulse DEFINE_STATIC_STRING(RightPeritubularCapillariesToRenalVein); // Reusing 'RightKidneyToVenaCava' to connect the Right Renal Vein To Vena Cava); - DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries); - - DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); - - DEFINE_STATIC_STRING(RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins); - DEFINE_STATIC_STRING(RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins); - DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins); - DEFINE_STATIC_STRING(RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins); - DEFINE_STATIC_STRING(RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins); - DEFINE_STATIC_STRING(RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins); - DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins); - DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); - DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins); - DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); - - DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins); - DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins); - DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins); - DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins); - DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); - DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); - DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins); - DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins); - - DEFINE_STATIC_STRING(RightSuperiorLobeApicalShunt); - DEFINE_STATIC_STRING(RightSuperiorLobePosteriorShunt); - DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorShunt); - DEFINE_STATIC_STRING(RightMiddleLobeLateralShunt); - DEFINE_STATIC_STRING(RightMiddleLobeMedialShunt); - DEFINE_STATIC_STRING(RightInferiorLobeSuperiorShunt); - DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalShunt); - DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalShunt); - DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalShunt); - DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalShunt); - - DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalShunt); - DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalShunt); - DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalShunt); - DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorShunt); - DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaShunt); - DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaShunt); - DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorShunt); - DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorShunt); - - static const std::vector& GetValues() { ScopedMutex lock; @@ -1290,7 +1189,161 @@ namespace pulse _values.push_back(RightTubulesToPeritubularCapillaries); _values.push_back(RightEfferentArterioleToPeritubularCapillaries); _values.push_back(RightPeritubularCapillariesToRenalVein); + } + return _values; + } + static bool HasValue(const std::string& v) + { + return std::find(_values.begin(), _values.end(), v) != _values.end(); + } + static void AddValue(const std::string& v) + { + if (!HasValue(v)) + { + ScopedMutex lock; + _values.push_back(v); + } + } + protected: + static std::vector _values; + }; + + class ExpandedLungsVascularCompartment + { + public: + DEFINE_STATIC_STRING(RightSuperiorLobeApicalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightMiddleLobeLateralPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightMiddleLobeMedialPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalPulmonaryCapillaries); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + + static const std::vector& GetValues() + { + ScopedMutex lock; + if (_values.empty()) + { + _values.push_back(RightSuperiorLobeApicalPulmonaryCapillaries); + _values.push_back(RightSuperiorLobePosteriorPulmonaryCapillaries); + _values.push_back(RightSuperiorLobeAnteriorPulmonaryCapillaries); + _values.push_back(RightMiddleLobeLateralPulmonaryCapillaries); + _values.push_back(RightMiddleLobeMedialPulmonaryCapillaries); + _values.push_back(RightInferiorLobeSuperiorPulmonaryCapillaries); + _values.push_back(RightInferiorLobeMedialBasalPulmonaryCapillaries); + _values.push_back(RightInferiorLobeAnteriorBasalPulmonaryCapillaries); + _values.push_back(RightInferiorLobeLateralBasalPulmonaryCapillaries); + _values.push_back(RightInferiorLobePosteriorBasalPulmonaryCapillaries); + + _values.push_back(LeftInferiorLobePosteriorBasalPulmonaryCapillaries); + _values.push_back(LeftInferiorLobeLateralBasalPulmonaryCapillaries); + _values.push_back(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + _values.push_back(LeftInferiorLobeSuperiorPulmonaryCapillaries); + _values.push_back(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + _values.push_back(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + _values.push_back(LeftSuperiorLobeAnteriorPulmonaryCapillaries); + _values.push_back(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + } + return _values; + } + static bool HasValue(const std::string& v) + { + return std::find(_values.begin(), _values.end(), v) != _values.end(); + } + static void AddValue(const std::string& v) + { + if (!HasValue(v)) + { + ScopedMutex lock; + _values.push_back(v); + } + } + protected: + static std::vector _values; + }; + + class ExpandedLungsVascularLink + { + public: + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries); + + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + DEFINE_STATIC_STRING(RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins); + DEFINE_STATIC_STRING(RightSuperiorLobeApicalShunt); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorShunt); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorShunt); + DEFINE_STATIC_STRING(RightMiddleLobeLateralShunt); + DEFINE_STATIC_STRING(RightMiddleLobeMedialShunt); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorShunt); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalShunt); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalShunt); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalShunt); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalShunt); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalShunt); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalShunt); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalShunt); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorShunt); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaShunt); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaShunt); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorShunt); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorShunt); + + + static const std::vector& GetValues() + { + ScopedMutex lock; + if (_values.empty()) + { _values.push_back(RightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries); _values.push_back(RightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries); _values.push_back(RightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries); @@ -1369,66 +1422,17 @@ namespace pulse static std::vector _values; }; - class ExpandedVascularCompartment + class ComputationalLifeVascularCompartment { public: - // Cardio - DEFINE_STATIC_STRING(Aorta); DEFINE_STATIC_STRING(ArterialBuffer); - DEFINE_STATIC_STRING(Heart); - /**/DEFINE_STATIC_STRING_EX(Myocardium, MyocardiumVasculature); - /**/DEFINE_STATIC_STRING(LeftHeart); - /**/DEFINE_STATIC_STRING(RightHeart); - /**/DEFINE_STATIC_STRING(Pericardium); - DEFINE_STATIC_STRING(VenaCava); DEFINE_STATIC_STRING(VenousBuffer); - // Pulmonary - DEFINE_STATIC_STRING(PulmonaryArteries); - DEFINE_STATIC_STRING(PulmonaryCapillaries); - DEFINE_STATIC_STRING(PulmonaryVeins); - DEFINE_STATIC_STRING_EX(Lungs, LungsVasculature); - /**/DEFINE_STATIC_STRING_EX(LeftLung, LeftLungVasculature); - /***/DEFINE_STATIC_STRING(LeftPulmonaryArteries); - /***/DEFINE_STATIC_STRING(LeftPulmonaryCapillaries); - /***/DEFINE_STATIC_STRING(LeftPulmonaryVeins); - /**/DEFINE_STATIC_STRING_EX(RightLung, RightLungVasculature); - /***/DEFINE_STATIC_STRING(RightPulmonaryArteries); - /***/DEFINE_STATIC_STRING(RightPulmonaryCapillaries); - /***/DEFINE_STATIC_STRING(RightPulmonaryVeins); - // Renal - DEFINE_STATIC_STRING_EX(Kidneys, KidneyVasculature); - /**/DEFINE_STATIC_STRING_EX(LeftKidney, LeftKidneyVasculature); - /***/DEFINE_STATIC_STRING(LeftRenalArtery); - /***/DEFINE_STATIC_STRING(LeftNephron); - /*********/DEFINE_STATIC_STRING(LeftAfferentArteriole); - /*********/DEFINE_STATIC_STRING(LeftGlomerularCapillaries); - /*********/DEFINE_STATIC_STRING(LeftEfferentArteriole); - /*********/DEFINE_STATIC_STRING(LeftPeritubularCapillaries); - /*********/DEFINE_STATIC_STRING(LeftBowmansCapsules); - /*********/DEFINE_STATIC_STRING(LeftTubules); - /***/DEFINE_STATIC_STRING(LeftRenalVein); - /**/DEFINE_STATIC_STRING_EX(RightKidney, RightKidneyVasculature); - /***/DEFINE_STATIC_STRING(RightRenalArtery); - /***/DEFINE_STATIC_STRING(RightNephron); - /*********/DEFINE_STATIC_STRING(RightAfferentArteriole); - /*********/DEFINE_STATIC_STRING(RightGlomerularCapillaries); - /*********/DEFINE_STATIC_STRING(RightEfferentArteriole); - /*********/DEFINE_STATIC_STRING(RightPeritubularCapillaries); - /*********/DEFINE_STATIC_STRING(RightBowmansCapsules); - /*********/DEFINE_STATIC_STRING(RightTubules); - /***/DEFINE_STATIC_STRING(RightRenalVein); - // General Organs and Periphery - DEFINE_STATIC_STRING_EX(Bone, BoneVasculature); + DEFINE_STATIC_STRING_EX(Head, HeadVasculature); /**/DEFINE_STATIC_STRING_EX(Extracranial, ExtracranialVasculature); /**/DEFINE_STATIC_STRING_EX(Intracranial, IntracranialVasculature); - DEFINE_STATIC_STRING_EX(Fat, FatVasculature); - DEFINE_STATIC_STRING_EX(Gut, GutVasculature); + /**/DEFINE_STATIC_STRING_EX(Gut1, Gut1Vasculature); - /**/DEFINE_STATIC_STRING_EX(Splanchnic, SplanchnicVasculature); - /**/DEFINE_STATIC_STRING_EX(SmallIntestine, SmallIntestineVasculature); - /**/DEFINE_STATIC_STRING_EX(LargeIntestine, LargeIntestineVasculature); - DEFINE_STATIC_STRING_EX(LeftArm, LeftArmVasculature); /**/DEFINE_STATIC_STRING_EX(LeftArmArterioles, LeftArmArteriolesVasculature); /**/DEFINE_STATIC_STRING_EX(LeftArmBone, LeftArmBoneVasculature); /**/DEFINE_STATIC_STRING_EX(LeftArmFat, LeftArmFatVasculature); @@ -1436,7 +1440,6 @@ namespace pulse /**/DEFINE_STATIC_STRING_EX(LeftArmMuscle, LeftArmMuscleVasculature); /**/DEFINE_STATIC_STRING_EX(LeftArmSkin, LeftArmSkinVasculature); /**/DEFINE_STATIC_STRING_EX(LeftArmVenules, LeftArmVenulesVasculature); - DEFINE_STATIC_STRING_EX(LeftLeg, LeftLegVasculature); /**/DEFINE_STATIC_STRING_EX(LeftLegArterioles, LeftLegArteriolesVasculature); /**/DEFINE_STATIC_STRING_EX(LeftLegBone, LeftLegBoneVasculature); /**/DEFINE_STATIC_STRING_EX(LeftLegFat, LeftLegFatVasculature); @@ -1444,9 +1447,6 @@ namespace pulse /**/DEFINE_STATIC_STRING_EX(LeftLegMuscle, LeftLegMuscleVasculature); /**/DEFINE_STATIC_STRING_EX(LeftLegSkin, LeftLegSkinVasculature); /**/DEFINE_STATIC_STRING_EX(LeftLegVenules, LeftLegVenulesVasculature); - DEFINE_STATIC_STRING_EX(Liver, LiverVasculature); - DEFINE_STATIC_STRING_EX(Muscle, MuscleVasculature); - DEFINE_STATIC_STRING_EX(RightArm, RightArmVasculature); /**/DEFINE_STATIC_STRING_EX(RightArmArterioles, RightArmArteriolesVasculature); /**/DEFINE_STATIC_STRING_EX(RightArmBone, RightArmBoneVasculature); /**/DEFINE_STATIC_STRING_EX(RightArmFat, RightArmFatVasculature); @@ -1454,7 +1454,6 @@ namespace pulse /**/DEFINE_STATIC_STRING_EX(RightArmMuscle, RightArmMuscleVasculature); /**/DEFINE_STATIC_STRING_EX(RightArmSkin, RightArmSkinVasculature); /**/DEFINE_STATIC_STRING_EX(RightArmVenules, RightArmVenulesVasculature); - DEFINE_STATIC_STRING_EX(RightLeg, RightLegVasculature); /**/DEFINE_STATIC_STRING_EX(RightLegArterioles, RightLegArteriolesVasculature); /**/DEFINE_STATIC_STRING_EX(RightLegBone, RightLegBoneVasculature); /**/DEFINE_STATIC_STRING_EX(RightLegFat, RightLegFatVasculature); @@ -1462,8 +1461,6 @@ namespace pulse /**/DEFINE_STATIC_STRING_EX(RightLegMuscle, RightLegMuscleVasculature); /**/DEFINE_STATIC_STRING_EX(RightLegSkin, RightLegSkinVasculature); /**/DEFINE_STATIC_STRING_EX(RightLegVenules, RightLegVenulesVasculature); - DEFINE_STATIC_STRING_EX(Skin, SkinVasculature); - DEFINE_STATIC_STRING_EX(Spleen, SpleenVasculature); DEFINE_STATIC_STRING_EX(Torso, TorsoVasculature); /**/DEFINE_STATIC_STRING_EX(TorsoArterioles, TorsoArteriolesVasculature); /**/DEFINE_STATIC_STRING_EX(TorsoBone, TorsoBoneVasculature); @@ -1472,10 +1469,6 @@ namespace pulse /**/DEFINE_STATIC_STRING_EX(TorsoMuscle, TorsoMuscleVasculature); /**/DEFINE_STATIC_STRING_EX(TorsoSkin, TorsoSkinVasculature); /**/DEFINE_STATIC_STRING_EX(TorsoVenules, TorsoVenulesVasculature); - DEFINE_STATIC_STRING(Abdomen); - /**/DEFINE_STATIC_STRING(AbdominalCavity); - - DEFINE_STATIC_STRING(Ground); static const std::vector& GetValues() @@ -1483,64 +1476,12 @@ namespace pulse ScopedMutex lock; if (_values.empty()) { - _values.push_back(Aorta); _values.push_back(ArterialBuffer); - _values.push_back(Abdomen); - _values.push_back(Heart); - _values.push_back(Myocardium); - _values.push_back(LeftHeart); - _values.push_back(RightHeart); - _values.push_back(Pericardium); - _values.push_back(VenaCava); _values.push_back(VenousBuffer); - _values.push_back(PulmonaryArteries); - _values.push_back(PulmonaryCapillaries); - _values.push_back(PulmonaryVeins); - _values.push_back(Lungs); - _values.push_back(LeftLung); - _values.push_back(LeftPulmonaryArteries); - _values.push_back(LeftPulmonaryCapillaries); - _values.push_back(LeftPulmonaryVeins); - _values.push_back(RightLung); - _values.push_back(RightPulmonaryArteries); - _values.push_back(RightPulmonaryCapillaries); - _values.push_back(RightPulmonaryVeins); - _values.push_back(Kidneys); - _values.push_back(LeftKidney); - _values.push_back(LeftRenalArtery); - _values.push_back(LeftNephron); - _values.push_back(LeftAfferentArteriole); - _values.push_back(LeftGlomerularCapillaries); - _values.push_back(LeftEfferentArteriole); - _values.push_back(LeftPeritubularCapillaries); - _values.push_back(LeftBowmansCapsules); - _values.push_back(LeftTubules); - _values.push_back(LeftRenalVein); - _values.push_back(RightKidney); - _values.push_back(RightRenalArtery); - _values.push_back(RightNephron); - _values.push_back(RightAfferentArteriole); - _values.push_back(RightGlomerularCapillaries); - _values.push_back(RightEfferentArteriole); - _values.push_back(RightPeritubularCapillaries); - _values.push_back(RightBowmansCapsules); - _values.push_back(RightTubules); - _values.push_back(RightRenalVein); - _values.push_back(Bone); _values.push_back(Head); _values.push_back(Extracranial); _values.push_back(Intracranial); - _values.push_back(Fat); - _values.push_back(Gut); _values.push_back(Gut1); - _values.push_back(Splanchnic); - _values.push_back(SmallIntestine); - _values.push_back(LargeIntestine); - _values.push_back(Liver); - _values.push_back(Spleen); - _values.push_back(Skin); - _values.push_back(Muscle); - _values.push_back(LeftArm); _values.push_back(LeftArmArterioles); _values.push_back(LeftArmFat); _values.push_back(LeftArmMuscle); @@ -1548,7 +1489,6 @@ namespace pulse _values.push_back(LeftArmBone); _values.push_back(LeftArmMicrovasculature); _values.push_back(LeftArmVenules); - _values.push_back(LeftLeg); _values.push_back(LeftLegArterioles); _values.push_back(LeftLegFat); _values.push_back(LeftLegMuscle); @@ -1556,7 +1496,6 @@ namespace pulse _values.push_back(LeftLegBone); _values.push_back(LeftLegMicrovasculature); _values.push_back(LeftLegVenules); - _values.push_back(RightArm); _values.push_back(RightArmArterioles); _values.push_back(RightArmFat); _values.push_back(RightArmMuscle); @@ -1564,7 +1503,6 @@ namespace pulse _values.push_back(RightArmBone); _values.push_back(RightArmMicrovasculature); _values.push_back(RightArmVenules); - _values.push_back(RightLeg); _values.push_back(RightLegArterioles); _values.push_back(RightLegFat); _values.push_back(RightLegMuscle); @@ -1580,7 +1518,6 @@ namespace pulse _values.push_back(TorsoMuscle); _values.push_back(TorsoSkin); _values.push_back(TorsoVenules); - //_values.push_back(Ground); } return _values; } @@ -1600,24 +1537,11 @@ namespace pulse static std::vector _values; }; - class ExpandedVascularLink + class ComputationalLifeVascularLink { public: // Heart and Lungs - DEFINE_STATIC_STRING(VenousBufferToVenaCava); - DEFINE_STATIC_STRING(VenaCavaToRightHeart); - DEFINE_STATIC_STRING(RightHeartToLeftPulmonaryArteries); - DEFINE_STATIC_STRING(LeftPulmonaryArteriesToCapillaries); - DEFINE_STATIC_STRING(LeftPulmonaryArteriesToVeins); - DEFINE_STATIC_STRING(LeftPulmonaryCapillariesToVeins); - DEFINE_STATIC_STRING(LeftPulmonaryVeinsToLeftHeart); - DEFINE_STATIC_STRING(RightHeartToRightPulmonaryArteries); - DEFINE_STATIC_STRING(RightPulmonaryArteriesToCapillaries); - DEFINE_STATIC_STRING(RightPulmonaryArteriesToVeins); - DEFINE_STATIC_STRING(RightPulmonaryCapillariesToVeins); - DEFINE_STATIC_STRING(RightPulmonaryVeinsToLeftHeart); - DEFINE_STATIC_STRING(LeftHeartToAorta); DEFINE_STATIC_STRING(AortaToArterialBuffer); // Head DEFINE_STATIC_STRING(AortaToIntracranial); @@ -1639,9 +1563,6 @@ namespace pulse DEFINE_STATIC_STRING(LeftArmSkinToLeftArmVenules); DEFINE_STATIC_STRING(LeftArmVenulesToVenaCava); - // Left Kidney - DEFINE_STATIC_STRING(AortaToLeftKidney); - DEFINE_STATIC_STRING(LeftKidneyToVenaCava); // Left Leg DEFINE_STATIC_STRING(AortaToLeftLegArterioles); DEFINE_STATIC_STRING(LeftLegArteriolesToLeftLegBone); @@ -1656,26 +1577,10 @@ namespace pulse DEFINE_STATIC_STRING(LeftLegMuscleToLeftLegVenules); DEFINE_STATIC_STRING(LeftLegSkinToLeftLegVenules); DEFINE_STATIC_STRING(LeftLegVenulesToVenaCava); + // Gut DEFINE_STATIC_STRING(AortaToGut); - //// Large Intestine - DEFINE_STATIC_STRING(AortaToLargeIntestine); - DEFINE_STATIC_STRING(LargeIntestineToLiver); - //// Small Intestine - DEFINE_STATIC_STRING(AortaToSmallIntestine); - DEFINE_STATIC_STRING(SmallIntestineToLiver); - //// Splanchnic - DEFINE_STATIC_STRING(AortaToSplanchnic); - DEFINE_STATIC_STRING(SplanchnicToLiver); - //// Spleen - DEFINE_STATIC_STRING(AortaToSpleen); - DEFINE_STATIC_STRING(SpleenToLiver); - //// Liver - DEFINE_STATIC_STRING(AortaToLiver); - DEFINE_STATIC_STRING(LiverToVenaCava); - // Myocardium - DEFINE_STATIC_STRING(AortaToMyocardium); - DEFINE_STATIC_STRING(MyocardiumToVenaCava); + // Right Arm DEFINE_STATIC_STRING(AortaToRightArmArterioles); DEFINE_STATIC_STRING(RightArmArteriolesToRightArmBone); @@ -1691,9 +1596,6 @@ namespace pulse DEFINE_STATIC_STRING(RightArmSkinToRightArmVenules); DEFINE_STATIC_STRING(RightArmVenulesToVenaCava); - // Right Kidney - DEFINE_STATIC_STRING(AortaToRightKidney); - DEFINE_STATIC_STRING(RightKidneyToVenaCava); // Right Leg DEFINE_STATIC_STRING(AortaToRightLegArterioles); DEFINE_STATIC_STRING(RightLegArteriolesToRightLegBone); @@ -1723,8 +1625,6 @@ namespace pulse DEFINE_STATIC_STRING(TorsoFatToTorsoVenules); DEFINE_STATIC_STRING(TorsoBoneToTorsoVenules); DEFINE_STATIC_STRING(TorsoVenulesToVenaCava); - // Hemorrhage and IV - DEFINE_STATIC_STRING(VenaCavaIV); // Vascular To Tissue Links DEFINE_STATIC_STRING(TorsoBoneVascularToTissue); @@ -1759,92 +1659,40 @@ namespace pulse DEFINE_STATIC_STRING(RightLegSkinVascularToTissue); DEFINE_STATIC_STRING(SpleenVascularToTissue); - // Renal Links - // Reusing 'AortaToLeftKidney' to connect the Aorta To Left Renal Artery - DEFINE_STATIC_STRING(LeftRenalArteryToAfferentArteriole); - DEFINE_STATIC_STRING(LeftAfferentArterioleToGlomerularCapillaries); - DEFINE_STATIC_STRING(LeftGlomerularCapillariesToEfferentArteriole); - DEFINE_STATIC_STRING(LeftGlomerularCapillariesToBowmansCapsules); - DEFINE_STATIC_STRING(LeftBowmansCapsulesToTubules); - DEFINE_STATIC_STRING(LeftTubulesToPeritubularCapillaries); - DEFINE_STATIC_STRING(LeftEfferentArterioleToPeritubularCapillaries); - DEFINE_STATIC_STRING(LeftPeritubularCapillariesToRenalVein); - // Reusing 'LeftKidneyToVenaCava' to connect the Left Renal Vein To Vena Cava - - // Reusing 'AortaToRightKidney' to connect the Aorta To Right Renal Artery - DEFINE_STATIC_STRING(RightRenalArteryToAfferentArteriole); - DEFINE_STATIC_STRING(RightAfferentArterioleToGlomerularCapillaries); - DEFINE_STATIC_STRING(RightGlomerularCapillariesToEfferentArteriole); - DEFINE_STATIC_STRING(RightGlomerularCapillariesToBowmansCapsules); - DEFINE_STATIC_STRING(RightBowmansCapsulesToTubules); - DEFINE_STATIC_STRING(RightTubulesToPeritubularCapillaries); - DEFINE_STATIC_STRING(RightEfferentArterioleToPeritubularCapillaries); - DEFINE_STATIC_STRING(RightPeritubularCapillariesToRenalVein); - // Reusing 'RightKidneyToVenaCava' to connect the Right Renal Vein To Vena Cava); - - static const std::vector& GetValues() { ScopedMutex lock; if (_values.empty()) { - _values.push_back(VenaCavaToRightHeart); - _values.push_back(RightHeartToLeftPulmonaryArteries); - _values.push_back(LeftPulmonaryArteriesToCapillaries); - _values.push_back(LeftPulmonaryArteriesToVeins); - _values.push_back(LeftPulmonaryCapillariesToVeins); - _values.push_back(LeftPulmonaryVeinsToLeftHeart); - _values.push_back(RightHeartToRightPulmonaryArteries); - _values.push_back(RightPulmonaryArteriesToCapillaries); - _values.push_back(RightPulmonaryArteriesToVeins); - _values.push_back(RightPulmonaryCapillariesToVeins); - _values.push_back(RightPulmonaryVeinsToLeftHeart); - _values.push_back(LeftHeartToAorta); _values.push_back(AortaToIntracranial); _values.push_back(IntracranialToVenaCava); _values.push_back(AortaToExtracranial); _values.push_back(ExtracranialToVenaCava); - _values.push_back(AortaToLargeIntestine); - _values.push_back(LargeIntestineToLiver); + _values.push_back(LeftArmArteriolesToLeftArmBone); _values.push_back(LeftArmArteriolesToLeftArmFat); _values.push_back(LeftArmArteriolesToLeftArmMicrovasculature); _values.push_back(LeftArmArteriolesToLeftArmMuscle); _values.push_back(LeftArmArteriolesToLeftArmSkin); - _values.push_back(AortaToLeftKidney); - _values.push_back(LeftKidneyToVenaCava); _values.push_back(LeftLegArteriolesToLeftLegBone); _values.push_back(LeftLegArteriolesToLeftLegFat); _values.push_back(LeftLegArteriolesToLeftLegMicrovasculature); _values.push_back(LeftLegArteriolesToLeftLegMuscle); _values.push_back(LeftLegArteriolesToLeftLegSkin); - _values.push_back(AortaToLiver); - _values.push_back(LiverToVenaCava); - _values.push_back(AortaToMyocardium); - _values.push_back(MyocardiumToVenaCava); + _values.push_back(RightArmArteriolesToRightArmBone); _values.push_back(RightArmArteriolesToRightArmFat); _values.push_back(RightArmArteriolesToRightArmMicrovasculature); _values.push_back(RightArmArteriolesToRightArmMuscle); _values.push_back(RightArmArteriolesToRightArmSkin); - _values.push_back(AortaToRightKidney); - _values.push_back(RightKidneyToVenaCava); _values.push_back(RightLegArteriolesToRightLegBone); _values.push_back(RightLegArteriolesToRightLegFat); _values.push_back(RightLegArteriolesToRightLegMicrovasculature); _values.push_back(RightLegArteriolesToRightLegMuscle); _values.push_back(RightLegArteriolesToRightLegSkin); - - - _values.push_back(AortaToSmallIntestine); - _values.push_back(SmallIntestineToLiver); - _values.push_back(AortaToSplanchnic); - _values.push_back(SplanchnicToLiver); - _values.push_back(AortaToSpleen); - _values.push_back(SpleenToLiver); _values.push_back(AortaToTorsoArterioles); _values.push_back(TorsoArteriolesToTorsoBone); _values.push_back(TorsoArteriolesToTorsoFat); @@ -1911,23 +1759,6 @@ namespace pulse _values.push_back(RightArmSkinVascularToTissue); _values.push_back(RightLegSkinVascularToTissue); _values.push_back(SpleenVascularToTissue); - - _values.push_back(LeftRenalArteryToAfferentArteriole); - _values.push_back(LeftAfferentArterioleToGlomerularCapillaries); - _values.push_back(LeftGlomerularCapillariesToEfferentArteriole); - _values.push_back(LeftGlomerularCapillariesToBowmansCapsules); - _values.push_back(LeftBowmansCapsulesToTubules); - _values.push_back(LeftTubulesToPeritubularCapillaries); - _values.push_back(LeftEfferentArterioleToPeritubularCapillaries); - _values.push_back(LeftPeritubularCapillariesToRenalVein); - _values.push_back(RightRenalArteryToAfferentArteriole); - _values.push_back(RightAfferentArterioleToGlomerularCapillaries); - _values.push_back(RightGlomerularCapillariesToEfferentArteriole); - _values.push_back(RightGlomerularCapillariesToBowmansCapsules); - _values.push_back(RightBowmansCapsulesToTubules); - _values.push_back(RightTubulesToPeritubularCapillaries); - _values.push_back(RightEfferentArterioleToPeritubularCapillaries); - _values.push_back(RightPeritubularCapillariesToRenalVein); } return _values; } @@ -1947,7 +1778,6 @@ namespace pulse static std::vector _values; }; - class UrineCompartment { public: diff --git a/src/cpp/engine/common/controller/CircuitManager.h b/src/cpp/engine/common/controller/CircuitManager.h index 37c72cd41..694c6d5a2 100644 --- a/src/cpp/engine/common/controller/CircuitManager.h +++ b/src/cpp/engine/common/controller/CircuitManager.h @@ -218,7 +218,7 @@ namespace pulse DEFINE_STATIC_STRING(StomachToEnvironment); }; - class ExpandedRespiratoryNode + class ExpandedLungsRespiratoryNode { public: DEFINE_STATIC_STRING(RightMainBronchus); @@ -299,7 +299,7 @@ namespace pulse DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorAlveoli); }; - class ExpandedRespiratoryPath + class ExpandedLungsRespiratoryPath { public: DEFINE_STATIC_STRING(CarinaToRightMainBronchus); @@ -778,26 +778,6 @@ namespace pulse DEFINE_STATIC_STRING(VenaCava1); DEFINE_STATIC_STRING(Ground); - - DEFINE_STATIC_STRING(RightSuperiorLobeApicalPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightSuperiorLobePosteriorPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightMiddleLobeLateralPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightMiddleLobeMedialPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightInferiorLobeSuperiorPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalPulmonaryCapillaries); - - DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorPulmonaryCapillaries); - DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); }; class CardiovascularPath @@ -934,7 +914,35 @@ namespace pulse // Vena Cava DEFINE_STATIC_STRING(VenaCava1ToGround); DEFINE_STATIC_STRING(IVToVenaCava1); + }; + class ExpandedLungsCardiovascularNode + { + public: + DEFINE_STATIC_STRING(RightSuperiorLobeApicalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightSuperiorLobePosteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightMiddleLobeLateralPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightMiddleLobeMedialPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeMedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeAnteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(RightInferiorLobePosteriorBasalPulmonaryCapillaries); + + DEFINE_STATIC_STRING(LeftInferiorLobePosteriorBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftInferiorLobeLateralBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftInferiorLobeSuperiorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeAnteriorPulmonaryCapillaries); + DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + }; + + class ExpandedLungsCardiovascularPath + { + public: DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries); DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries); DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries); @@ -1016,39 +1024,11 @@ namespace pulse DEFINE_STATIC_STRING(LeftSuperiorLobeApicoposteriorShunt); }; - class ExpandedCardiovascularNode + class ComputationalLifeCardiovascularNode { public: - DEFINE_STATIC_STRING(RightHeart1); - DEFINE_STATIC_STRING(RightHeart2); - DEFINE_STATIC_STRING(RightHeart3); - - DEFINE_STATIC_STRING(MainPulmonaryArteries1); - DEFINE_STATIC_STRING(LeftIntermediatePulmonaryArteries1); - DEFINE_STATIC_STRING(LeftPulmonaryArteries1); - DEFINE_STATIC_STRING(RightIntermediatePulmonaryArteries1); - DEFINE_STATIC_STRING(RightPulmonaryArteries1); - - DEFINE_STATIC_STRING(LeftPulmonaryCapillaries1); - DEFINE_STATIC_STRING(RightPulmonaryCapillaries1); - - DEFINE_STATIC_STRING(LeftIntermediatePulmonaryVeins1); - DEFINE_STATIC_STRING(LeftPulmonaryVeins1); - DEFINE_STATIC_STRING(RightIntermediatePulmonaryVeins1); - DEFINE_STATIC_STRING(RightPulmonaryVeins1); - - DEFINE_STATIC_STRING(LeftHeart1); - DEFINE_STATIC_STRING(LeftHeart2); - DEFINE_STATIC_STRING(LeftHeart3); - - DEFINE_STATIC_STRING(Aorta1); - DEFINE_STATIC_STRING(Aorta2); - DEFINE_STATIC_STRING(Aorta3); - DEFINE_STATIC_STRING(Aorta4); DEFINE_STATIC_STRING(Aorta5); - DEFINE_STATIC_STRING(AbdominalCavity1); - DEFINE_STATIC_STRING(Extracranial1); DEFINE_STATIC_STRING(Extracranial2); DEFINE_STATIC_STRING(Extracranial3); @@ -1058,64 +1038,36 @@ namespace pulse DEFINE_STATIC_STRING(Gut1); - DEFINE_STATIC_STRING(LargeIntestine1); - - DEFINE_STATIC_STRING(Liver1); - DEFINE_STATIC_STRING(Liver2); - DEFINE_STATIC_STRING(PortalVein1); - - DEFINE_STATIC_STRING(LeftArm1); - DEFINE_STATIC_STRING(LeftArm2); DEFINE_STATIC_STRING(LeftArmBone1); DEFINE_STATIC_STRING(LeftArmFat1); DEFINE_STATIC_STRING(LeftArmMicroVasculature1); DEFINE_STATIC_STRING(LeftArmMuscle1); DEFINE_STATIC_STRING(LeftArmSkin1); - DEFINE_STATIC_STRING(LeftKidney1); - DEFINE_STATIC_STRING(LeftKidney2); DEFINE_STATIC_STRING(LeftKidney3); - DEFINE_STATIC_STRING(LeftLeg1); - DEFINE_STATIC_STRING(LeftLeg2); DEFINE_STATIC_STRING(LeftLegBone1); DEFINE_STATIC_STRING(LeftLegFat1); DEFINE_STATIC_STRING(LeftLegMicroVasculature1); DEFINE_STATIC_STRING(LeftLegMuscle1); DEFINE_STATIC_STRING(LeftLegSkin1); - DEFINE_STATIC_STRING(Myocardium1); - DEFINE_STATIC_STRING(Myocardium2); DEFINE_STATIC_STRING(Myocardium3); - DEFINE_STATIC_STRING(Pericardium1); - - DEFINE_STATIC_STRING(RightArm1); - DEFINE_STATIC_STRING(RightArm2); DEFINE_STATIC_STRING(RightArmBone1); DEFINE_STATIC_STRING(RightArmFat1); DEFINE_STATIC_STRING(RightArmMicroVasculature1); DEFINE_STATIC_STRING(RightArmMuscle1); DEFINE_STATIC_STRING(RightArmSkin1); - DEFINE_STATIC_STRING(RightKidney1); - DEFINE_STATIC_STRING(RightKidney2); DEFINE_STATIC_STRING(RightKidney3); - DEFINE_STATIC_STRING(RightLeg1); - DEFINE_STATIC_STRING(RightLeg2); DEFINE_STATIC_STRING(RightLegBone1); DEFINE_STATIC_STRING(RightLegFat1); DEFINE_STATIC_STRING(RightLegMicroVasculature1); DEFINE_STATIC_STRING(RightLegMuscle1); DEFINE_STATIC_STRING(RightLegSkin1); - DEFINE_STATIC_STRING(SmallIntestine1); - - DEFINE_STATIC_STRING(Splanchnic1); - - DEFINE_STATIC_STRING(Spleen1); - DEFINE_STATIC_STRING(Torso1) DEFINE_STATIC_STRING(Torso2) DEFINE_STATIC_STRING(TorsoBone1); @@ -1124,54 +1076,13 @@ namespace pulse DEFINE_STATIC_STRING(TorsoMuscle1); DEFINE_STATIC_STRING(TorsoSkin1); - DEFINE_STATIC_STRING(VenaCava1); DEFINE_STATIC_STRING(VenaCava2); - - DEFINE_STATIC_STRING(Ground); }; - class ExpandedCardiovascularPath + class ComputationalLifeCardiovascularPath { public: - // Heart and Lungs - DEFINE_STATIC_STRING(VenaCava1ToRightHeart2); - DEFINE_STATIC_STRING(RightHeart2ToRightHeart1); - DEFINE_STATIC_STRING(RightHeart1ToRightHeart3); - DEFINE_STATIC_STRING(RightHeart3ToGround); - DEFINE_STATIC_STRING(RightHeart1ToMainPulmonaryArteries1); - DEFINE_STATIC_STRING(MainPulmonaryArteries1ToRightIntermediatePulmonaryArteries1); - DEFINE_STATIC_STRING(RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1); - DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightPulmonaryVeins1); - DEFINE_STATIC_STRING(RightPulmonaryArteries1ToRightPulmonaryCapillaries1); - DEFINE_STATIC_STRING(RightPulmonaryArteries1ToGround); - DEFINE_STATIC_STRING(RightPulmonaryCapillaries1ToRightPulmonaryVeins1); - DEFINE_STATIC_STRING(RightPulmonaryCapillaries1ToGround); - DEFINE_STATIC_STRING(RightPulmonaryVeins1ToRightIntermediatePulmonaryVeins1); - DEFINE_STATIC_STRING(RightPulmonaryVeins1ToGround); - DEFINE_STATIC_STRING(RightIntermediatePulmonaryVeins1ToLeftHeart2); - DEFINE_STATIC_STRING(MainPulmonaryArteries1ToLeftIntermediatePulmonaryArteries1); - DEFINE_STATIC_STRING(LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1); - DEFINE_STATIC_STRING(LeftPulmonaryArteries1ToLeftPulmonaryVeins1); - DEFINE_STATIC_STRING(LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1); - DEFINE_STATIC_STRING(LeftPulmonaryArteries1ToGround); - DEFINE_STATIC_STRING(LeftPulmonaryCapillaries1ToGround); - DEFINE_STATIC_STRING(LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1); - DEFINE_STATIC_STRING(LeftPulmonaryVeins1ToLeftIntermediatePulmonaryVeins1); - DEFINE_STATIC_STRING(LeftPulmonaryVeins1ToGround); - DEFINE_STATIC_STRING(LeftIntermediatePulmonaryVeins1ToLeftHeart2) - DEFINE_STATIC_STRING(LeftHeart2ToLeftHeart1); - DEFINE_STATIC_STRING(LeftHeart1ToLeftHeart3); - DEFINE_STATIC_STRING(LeftHeart3ToGround); - DEFINE_STATIC_STRING(LeftHeart1ToAorta2); - DEFINE_STATIC_STRING(Aorta2ToAorta3); - DEFINE_STATIC_STRING(Aorta3ToAorta1); - DEFINE_STATIC_STRING(Aorta1ToAorta4); DEFINE_STATIC_STRING(Aorta1ToAorta5); - - // Abdominal Cavity - DEFINE_STATIC_STRING(GroundToAorta4); - DEFINE_STATIC_STRING(AbdominalCavity1ToGround); - DEFINE_STATIC_STRING(GroundToAbdominalCavity1); // Brain DEFINE_STATIC_STRING(Aorta5ToExtracranial1); DEFINE_STATIC_STRING(Extracranial1ToGround); @@ -1192,11 +1103,8 @@ namespace pulse DEFINE_STATIC_STRING(Gut1ToGround); // Large Intestine DEFINE_STATIC_STRING(Gut1ToLargeIntestine1); - DEFINE_STATIC_STRING(LargeIntestine1ToGround); - DEFINE_STATIC_STRING(LargeIntestine1ToPortalVein1); // Left Arm DEFINE_STATIC_STRING(Aorta5ToLeftArm1); - DEFINE_STATIC_STRING(LeftArm1ToGround); DEFINE_STATIC_STRING(LeftArm2ToGround); DEFINE_STATIC_STRING(LeftArm1ToLeftArmBone1); DEFINE_STATIC_STRING(LeftArmBone1ToGround); @@ -1216,15 +1124,12 @@ namespace pulse DEFINE_STATIC_STRING(LeftArm2ToVenaCava2); // Left Kidney DEFINE_STATIC_STRING(Aorta5ToLeftKidney1); - DEFINE_STATIC_STRING(LeftKidney1ToLeftKidney2); - DEFINE_STATIC_STRING(LeftKidney1ToGround); DEFINE_STATIC_STRING(LeftKidney2ToGround); DEFINE_STATIC_STRING(LeftKidney3ToGround); DEFINE_STATIC_STRING(LeftKidney2ToLeftKidney3); DEFINE_STATIC_STRING(LeftKidney3ToVenaCava2); // Left Leg DEFINE_STATIC_STRING(Aorta5ToLeftLeg1); - DEFINE_STATIC_STRING(LeftLeg1ToGround); DEFINE_STATIC_STRING(LeftLeg2ToGround); DEFINE_STATIC_STRING(LeftLeg1ToLeftLegBone1); DEFINE_STATIC_STRING(LeftLegBone1ToGround); @@ -1244,25 +1149,16 @@ namespace pulse DEFINE_STATIC_STRING(LeftLeg2ToVenaCava2); // Liver DEFINE_STATIC_STRING(Gut1ToLiver1); - DEFINE_STATIC_STRING(Liver1ToGround); DEFINE_STATIC_STRING(Liver2ToGround); - DEFINE_STATIC_STRING(PortalVein1ToLiver1); - DEFINE_STATIC_STRING(Liver1ToLiver2); DEFINE_STATIC_STRING(Liver2ToVenaCava2); // Myocardium DEFINE_STATIC_STRING(Aorta5ToMyocardium1); - DEFINE_STATIC_STRING(Myocardium1ToMyocardium2); - DEFINE_STATIC_STRING(Myocardium1ToGround); DEFINE_STATIC_STRING(Myocardium2ToGround); DEFINE_STATIC_STRING(Myocardium3ToGround); DEFINE_STATIC_STRING(Myocardium2ToMyocardium3); DEFINE_STATIC_STRING(Myocardium3ToVenaCava2); - // Pericardium - DEFINE_STATIC_STRING(Pericardium1ToGround); - DEFINE_STATIC_STRING(GroundToPericardium1); // Right Arm DEFINE_STATIC_STRING(Aorta5ToRightArm1); - DEFINE_STATIC_STRING(RightArm1ToGround); DEFINE_STATIC_STRING(RightArm2ToGround); DEFINE_STATIC_STRING(RightArm1ToRightArmBone1); DEFINE_STATIC_STRING(RightArmBone1ToGround); @@ -1282,15 +1178,12 @@ namespace pulse DEFINE_STATIC_STRING(RightArm2ToVenaCava2); // Right Kidney DEFINE_STATIC_STRING(Aorta5ToRightKidney1); - DEFINE_STATIC_STRING(RightKidney1ToRightKidney2); - DEFINE_STATIC_STRING(RightKidney1ToGround); DEFINE_STATIC_STRING(RightKidney2ToGround); DEFINE_STATIC_STRING(RightKidney3ToGround); DEFINE_STATIC_STRING(RightKidney2ToRightKidney3); DEFINE_STATIC_STRING(RightKidney3ToVenaCava2); // Right Leg DEFINE_STATIC_STRING(Aorta5ToRightLeg1); - DEFINE_STATIC_STRING(RightLeg1ToGround); DEFINE_STATIC_STRING(RightLeg2ToGround); DEFINE_STATIC_STRING(RightLeg1ToRightLegBone1); DEFINE_STATIC_STRING(RightLegBone1ToGround); @@ -1310,16 +1203,10 @@ namespace pulse DEFINE_STATIC_STRING(RightLeg2ToVenaCava2); // Small Intestine DEFINE_STATIC_STRING(Gut1ToSmallIntestine1); - DEFINE_STATIC_STRING(SmallIntestine1ToGround); - DEFINE_STATIC_STRING(SmallIntestine1ToPortalVein1); // Splanchnic DEFINE_STATIC_STRING(Gut1ToSplanchnic1); - DEFINE_STATIC_STRING(Splanchnic1ToGround); - DEFINE_STATIC_STRING(Splanchnic1ToPortalVein1); // Spleen DEFINE_STATIC_STRING(Gut1ToSpleen1); - DEFINE_STATIC_STRING(Spleen1ToGround); - DEFINE_STATIC_STRING(Spleen1ToPortalVein1); // Torso DEFINE_STATIC_STRING(Aorta5ToTorso1); DEFINE_STATIC_STRING(Torso1ToGround); @@ -1342,12 +1229,9 @@ namespace pulse DEFINE_STATIC_STRING(Torso2ToVenaCava2); // Vena Cava DEFINE_STATIC_STRING(VenaCava2ToVenaCava1); - DEFINE_STATIC_STRING(VenaCava1ToGround); //DEFINE_STATIC_STRING(VenaCava2ToGround); - DEFINE_STATIC_STRING(IVToVenaCava1); }; - /////////////////////////////////////// // Cerebrospinal Fluid Circuit Enums // /////////////////////////////////////// @@ -1503,7 +1387,7 @@ namespace pulse DEFINE_STATIC_STRING(SpleenT1ToLymph); }; - class ExpandedCardiovascularTissuePath + class ComputationalLifeTissuePath { public: DEFINE_STATIC_STRING(TorsoBone1ToBoneT2); @@ -1511,99 +1395,32 @@ namespace pulse DEFINE_STATIC_STRING(LeftLegBone1ToBoneT2); DEFINE_STATIC_STRING(RightArmBone1ToBoneT2); DEFINE_STATIC_STRING(RightLegBone1ToBoneT2); - DEFINE_STATIC_STRING(BoneT2ToBoneT1); - DEFINE_STATIC_STRING(BoneT1ToBoneT3); - DEFINE_STATIC_STRING(GroundToBoneT3); - DEFINE_STATIC_STRING(BoneT1ToLymph); DEFINE_STATIC_STRING(Intracranial2ToBrainT2); - DEFINE_STATIC_STRING(BrainT2ToBrainT1); - DEFINE_STATIC_STRING(BrainT1ToBrainT3); - DEFINE_STATIC_STRING(GroundToBrainT3); - DEFINE_STATIC_STRING(BrainT1ToLymph); DEFINE_STATIC_STRING(TorsoFat1ToFatT2); DEFINE_STATIC_STRING(LeftArmFat1ToFatT2); DEFINE_STATIC_STRING(LeftLegFat1ToFatT2); DEFINE_STATIC_STRING(RightArmFat1ToFatT2); DEFINE_STATIC_STRING(RightLegFat1ToFatT2); - DEFINE_STATIC_STRING(FatT2ToFatT1); - DEFINE_STATIC_STRING(FatT1ToFatT3); - DEFINE_STATIC_STRING(GroundToFatT3); - DEFINE_STATIC_STRING(FatT1ToLymph); - - DEFINE_STATIC_STRING(SmallIntestine1ToGutT2); - DEFINE_STATIC_STRING(LargeIntestine1ToGutT2); - DEFINE_STATIC_STRING(Splanchnic1ToGutT2); - DEFINE_STATIC_STRING(GutT2ToGutT1); - DEFINE_STATIC_STRING(GutT1ToGutT3); - DEFINE_STATIC_STRING(GroundToGutT3); - DEFINE_STATIC_STRING(GutT1ToLymph); - - DEFINE_STATIC_STRING(Liver1ToLiverT2); - DEFINE_STATIC_STRING(LiverT2ToLiverT1); - DEFINE_STATIC_STRING(LiverT1ToLiverT3); - DEFINE_STATIC_STRING(GroundToLiverT3); - DEFINE_STATIC_STRING(LiverT1ToLymph); DEFINE_STATIC_STRING(LeftKidney2ToLeftKidneyT2); - DEFINE_STATIC_STRING(LeftKidneyT2ToLeftKidneyT1); - DEFINE_STATIC_STRING(LeftKidneyT1ToLeftKidneyT3); - DEFINE_STATIC_STRING(GroundToLeftKidneyT3); - DEFINE_STATIC_STRING(LeftKidneyT1ToLymph); - - DEFINE_STATIC_STRING(LeftLung1ToLeftLungT2); - DEFINE_STATIC_STRING(LeftLungT2ToLeftLungT1); - DEFINE_STATIC_STRING(LeftLungT1ToLeftLungT3); - DEFINE_STATIC_STRING(GroundToLeftLungT3); - DEFINE_STATIC_STRING(LeftLungT1ToLymph); - - DEFINE_STATIC_STRING(LymphToVenaCava); DEFINE_STATIC_STRING(TorsoMuscle1ToMuscleT2); DEFINE_STATIC_STRING(LeftArmMuscle1ToMuscleT2); DEFINE_STATIC_STRING(LeftLegMuscle1ToMuscleT2); DEFINE_STATIC_STRING(RightArmMuscle1ToMuscleT2); DEFINE_STATIC_STRING(RightLegMuscle1ToMuscleT2); - DEFINE_STATIC_STRING(MuscleT2ToMuscleT1); - DEFINE_STATIC_STRING(MuscleT1ToMuscleT3); - DEFINE_STATIC_STRING(GroundToMuscleT3); - DEFINE_STATIC_STRING(MuscleT1ToLymph); DEFINE_STATIC_STRING(Myocardium2ToMyocardiumT2); - DEFINE_STATIC_STRING(MyocardiumT2ToMyocardiumT1); - DEFINE_STATIC_STRING(MyocardiumT1ToMyocardiumT3); - DEFINE_STATIC_STRING(GroundToMyocardiumT3); - DEFINE_STATIC_STRING(MyocardiumT1ToLymph); - - DEFINE_STATIC_STRING(RightLung1ToRightLungT2); - DEFINE_STATIC_STRING(RightLungT2ToRightLungT1); - DEFINE_STATIC_STRING(RightLungT1ToRightLungT3); - DEFINE_STATIC_STRING(GroundToRightLungT3); - DEFINE_STATIC_STRING(RightLungT1ToLymph); DEFINE_STATIC_STRING(RightKidney2ToRightKidneyT2); - DEFINE_STATIC_STRING(RightKidneyT2ToRightKidneyT1); - DEFINE_STATIC_STRING(RightKidneyT1ToRightKidneyT3); - DEFINE_STATIC_STRING(GroundToRightKidneyT3); - DEFINE_STATIC_STRING(RightKidneyT1ToLymph); DEFINE_STATIC_STRING(TorsoSkin1ToSkinT2); DEFINE_STATIC_STRING(LeftArmSkin1ToSkinT2); DEFINE_STATIC_STRING(LeftLegSkin1ToSkinT2); DEFINE_STATIC_STRING(RightArmSkin1ToSkinT2); DEFINE_STATIC_STRING(RightLegSkin1ToSkinT2); - DEFINE_STATIC_STRING(SkinT2ToSkinT1); - DEFINE_STATIC_STRING(SkinT1ToSkinT3); - DEFINE_STATIC_STRING(GroundToSkinT3); - DEFINE_STATIC_STRING(SkinT1ToLymph); - DEFINE_STATIC_STRING(SkinSweating); - - DEFINE_STATIC_STRING(Spleen1ToSpleenT2); - DEFINE_STATIC_STRING(SpleenT2ToSpleenT1); - DEFINE_STATIC_STRING(SpleenT1ToSpleenT3); - DEFINE_STATIC_STRING(GroundToSpleenT3); - DEFINE_STATIC_STRING(SpleenT1ToLymph); }; class RenalNode diff --git a/src/cpp/engine/common/controller/CompartmentManager.cpp b/src/cpp/engine/common/controller/CompartmentManager.cpp index 61f1d2373..51edeea28 100644 --- a/src/cpp/engine/common/controller/CompartmentManager.cpp +++ b/src/cpp/engine/common/controller/CompartmentManager.cpp @@ -26,14 +26,18 @@ std::vector pulse::ChymeCompartment::_values; //std::vector pulse::ChymeLink::_values; std::vector pulse::PulmonaryCompartment::_values; std::vector pulse::PulmonaryLink::_values; -std::vector pulse::ExpandedPulmonaryCompartment::_values; +std::vector pulse::ExpandedLungsPulmonaryCompartment::_values; +std::vector pulse::ExpandedLungsPulmonaryLink::_values; std::vector pulse::TissueCompartment::_values; std::vector pulse::ExtravascularCompartment::_values; std::vector pulse::TemperatureCompartment::_values; //std::vector pulse::TissueLink::_values; -std::vector pulse::ExpandedVascularCompartment::_values; std::vector pulse::VascularCompartment::_values; std::vector pulse::VascularLink::_values; +std::vector pulse::ExpandedLungsVascularCompartment::_values; +std::vector pulse::ExpandedLungsVascularLink::_values; +std::vector pulse::ComputationalLifeVascularCompartment::_values; +std::vector pulse::ComputationalLifeVascularLink::_values; std::vector pulse::UrineCompartment::_values; std::vector pulse::UrineLink::_values; std::vector pulse::EnvironmentCompartment::_values; @@ -96,14 +100,18 @@ namespace pulse m_ChymeLeafCompartments.clear(); m_PulmonaryCompartments.clear(); m_PulmonaryLeafCompartments.clear(); - m_ExpandedPulmonaryCompartments.clear(); - m_ExpandedPulmonaryLeafCompartments.clear(); + m_ExpandedLungsPulmonaryCompartments.clear(); + m_ExpandedLungsPulmonaryLeafCompartments.clear(); m_TissueCompartments.clear(); m_TissueLeafCompartments.clear(); m_UrineCompartments.clear(); m_UrineLeafCompartments.clear(); m_VascularCompartments.clear(); m_VascularLeafCompartments.clear(); + m_ExpandedLungsVascularCompartments.clear(); + m_ExpandedLungsVascularLeafCompartments.clear(); + m_ComputationalLifeVascularCompartments.clear(); + m_ComputationalLifeVascularLeafCompartments.clear(); m_AnesthesiaMachineCompartments.clear(); m_AnesthesiaMachineLeafCompartments.clear(); m_AerosolCompartments.clear(); @@ -148,22 +156,6 @@ for (const std::string& name : pulse::bin##Compartment::GetValues()) \ m_##bin##LeafCompartments.push_back(cmpt); \ } -#define SORT_CMPTS_EXPANDED(bin, type) \ -m_##bin##Compartments.clear(); \ -m_##bin##LeafCompartments.clear(); \ -for (const std::string& name : pulse::Expanded##bin##Compartment::GetValues()) \ -{ \ - SE##type##Compartment* cmpt = Get##type##Compartment(name); \ - if (cmpt == nullptr) \ - { \ - Warning("Could not find expected " + std::string(#bin) + " compartment, " + name + " in compartment manager"); \ - continue; \ - } \ - m_##bin##Compartments.push_back(cmpt); \ - if (!cmpt->HasChildren()) \ - m_##bin##LeafCompartments.push_back(cmpt); \ -} - void CompartmentManager::StateChange() { SECompartmentManager::StateChange(); @@ -172,7 +164,10 @@ for (const std::string& name : pulse::Expanded##bin##Compartment::GetValues()) \ // Anatomy SORT_CMPTS(Chyme, Liquid); SORT_CMPTS(Pulmonary, Gas); - SORT_CMPTS(ExpandedPulmonary, Gas); + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::On) + { + SORT_CMPTS(ExpandedLungsPulmonary, Gas); + } SORT_CMPTS(Temperature, Thermal); if (m_data.GetConfiguration().IsTissueEnabled()) { @@ -183,17 +178,19 @@ for (const std::string& name : pulse::Expanded##bin##Compartment::GetValues()) \ Warning("Could not find expected Extravascular compartment, " + name + " in compartment manager"); } } - if (m_data.GetConfiguration().IsRenalEnabled()) + if (m_data.GetConfiguration().UseExpandedKidneys() == eSwitch::On) { SORT_CMPTS(Urine, Liquid); } - if (m_data.GetConfiguration().UseExpandedVasculature() == eSwitch::On) + + SORT_CMPTS(Vascular, Liquid); + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::On) { - SORT_CMPTS_EXPANDED(Vascular, Liquid); + SORT_CMPTS(ExpandedLungsVascular, Liquid); } - else + else if (m_data.GetConfiguration().UseComputationalLifeExpansion() == eSwitch::On) { - SORT_CMPTS(Vascular, Liquid); + SORT_CMPTS(ComputationalLifeVascular, Liquid); } // Equipment diff --git a/src/cpp/engine/common/controller/CompartmentManager.h b/src/cpp/engine/common/controller/CompartmentManager.h index 7d1a4c156..61705309c 100644 --- a/src/cpp/engine/common/controller/CompartmentManager.h +++ b/src/cpp/engine/common/controller/CompartmentManager.h @@ -61,8 +61,8 @@ namespace pulse std::vectorconst& GetPulmonaryCompartments() { return m_PulmonaryCompartments; } std::vectorconst& GetPulmonaryLeafCompartments() { return m_PulmonaryLeafCompartments; } - std::vectorconst& GetExpandedPulmonaryCompartments() { return m_ExpandedPulmonaryCompartments; } - std::vectorconst& GetExpandedPulmonaryLeafCompartments() { return m_ExpandedPulmonaryLeafCompartments; } + std::vectorconst& GetExpandedLungsPulmonaryCompartments() { return m_ExpandedLungsPulmonaryCompartments; } + std::vectorconst& GetExpandedLungsPulmonaryLeafCompartments() { return m_ExpandedLungsPulmonaryLeafCompartments; } std::vectorconst& GetTemperatureCompartments() { return m_TemperatureCompartments; } std::vectorconst& GetTemperatureLeafCompartments() { return m_TemperatureLeafCompartments; } @@ -76,6 +76,12 @@ namespace pulse std::vectorconst& GetVascularCompartments() { return m_VascularCompartments; } std::vectorconst& GetVascularLeafCompartments() { return m_VascularLeafCompartments; } + std::vectorconst& GetExpandedLungsVascularCompartments() { return m_ExpandedLungsVascularCompartments; } + std::vectorconst& GetExpandedLungsVascularLeafCompartments() { return m_ExpandedLungsVascularLeafCompartments; } + + std::vectorconst& GetComputationalLifeVascularCompartments() { return m_ComputationalLifeVascularCompartments; } + std::vectorconst& GetComputationalLifeVascularLeafCompartments() { return m_ComputationalLifeVascularLeafCompartments; } + std::vectorconst& GetAnesthesiaMachineCompartments() { return m_AnesthesiaMachineCompartments; } std::vectorconst& GetAnesthesiaMachineLeafCompartments() { return m_AnesthesiaMachineLeafCompartments; } @@ -154,8 +160,8 @@ namespace pulse std::vector m_ChymeLeafCompartments; std::vector m_PulmonaryCompartments; std::vector m_PulmonaryLeafCompartments; - std::vector m_ExpandedPulmonaryCompartments; - std::vector m_ExpandedPulmonaryLeafCompartments; + std::vector m_ExpandedLungsPulmonaryCompartments; + std::vector m_ExpandedLungsPulmonaryLeafCompartments; std::vector m_TemperatureCompartments; std::vector m_TemperatureLeafCompartments; std::vector m_TissueCompartments; @@ -163,6 +169,10 @@ namespace pulse std::vector m_UrineLeafCompartments; std::vector m_VascularCompartments; std::vector m_VascularLeafCompartments; + std::vector m_ExpandedLungsVascularCompartments; + std::vector m_ExpandedLungsVascularLeafCompartments; + std::vector m_ComputationalLifeVascularCompartments; + std::vector m_ComputationalLifeVascularLeafCompartments; std::vector m_AnesthesiaMachineCompartments; std::vector m_AnesthesiaMachineLeafCompartments; std::vector m_BagValveMaskCompartments; diff --git a/src/cpp/engine/common/controller/Controller.h b/src/cpp/engine/common/controller/Controller.h index cb0a71860..2140e3f8d 100644 --- a/src/cpp/engine/common/controller/Controller.h +++ b/src/cpp/engine/common/controller/Controller.h @@ -283,11 +283,11 @@ namespace pulse virtual void SetupTissue(); virtual void SetupCerebrospinalFluid(); - // Optional Expanded Cardiovascular Circuit Setup Methods - virtual void SetupExpandedCardiovascular(); - virtual void SetupExpandedCardiovascularRenal(); - virtual void SetupExpandedCardiovascularTissue(); - virtual void SetupExpandedCardiovascularCerebrospinalFluid(); + // Optional ComputationalLife Expansion Setup Methods + virtual void SetupComputationalLifeCardiovascular(); + virtual void SetupComputationalLifeRenal(); + virtual void SetupComputationalLifeTissue(); + virtual void SetupComputationalLifeCerebrospinalFluid(); // Default/Optimal Gastrointestinal virtual void SetupGastrointestinal(); @@ -295,9 +295,9 @@ namespace pulse // Default/Optimal Respiratory virtual void SetupRespiratory(); - // Optional Expanded Respiratory and Cardiovascular Circuit Setup Methods - virtual void SetupExpandedPulmonaryRespiratory(); - virtual void SetupExpandedPulmonaryCardiovascular(); + // Optional Expanded Lungs Respiratory and Cardiovascular Circuit Setup Methods + virtual void SetupExpandedLungsRespiratory(); + virtual void SetupExpandedLungsCardiovascular(); // Default/Optimal Equipment virtual void SetupAnesthesiaMachine(); diff --git a/src/cpp/engine/common/controller/SetupCircuitsAndCompartments.cpp b/src/cpp/engine/common/controller/SetupCircuitsAndCompartments.cpp index bb6257686..3a3fe1e6d 100644 --- a/src/cpp/engine/common/controller/SetupCircuitsAndCompartments.cpp +++ b/src/cpp/engine/common/controller/SetupCircuitsAndCompartments.cpp @@ -38,32 +38,40 @@ namespace pulse { bool Controller::CreateCircuitsAndCompartments() { + if (m_Config->UseExpandedLungs() == eSwitch::On && + m_Config->UseComputationalLifeExpansion() == eSwitch::On) + { + Error("Cannot setup an engine with both ExpangedLungs and ComputationalLifeExpansion"); + return false; + } m_Circuits->Clear(); m_Compartments->Clear(); m_Compartments->Setup(); - if (m_Config->UseExpandedVasculature() == eSwitch::On) + + if (m_Config->UseComputationalLifeExpansion() == eSwitch::On) { - SetupExpandedCardiovascular(); - if(m_Config->IsRenalEnabled()) - SetupExpandedCardiovascularRenal(); + SetupComputationalLifeCardiovascular(); + if (m_Config->UseExpandedKidneys() == eSwitch::On) + SetupComputationalLifeRenal(); if (m_Config->IsTissueEnabled()) - SetupExpandedCardiovascularTissue(); + SetupComputationalLifeTissue(); if (m_Config->IsCerebrospinalFluidEnabled()) - SetupExpandedCardiovascularCerebrospinalFluid(); + SetupComputationalLifeCerebrospinalFluid(); } else { - if (m_Config->UseExpandedRespiratory() == eSwitch::On) - SetupExpandedPulmonaryCardiovascular(); + if (m_Config->UseExpandedLungs() == eSwitch::On) + SetupExpandedLungsCardiovascular(); else SetupCardiovascular(); - if (m_Config->IsRenalEnabled()) + if (m_Config->UseExpandedKidneys() == eSwitch::On) SetupRenal(); if (m_Config->IsTissueEnabled()) SetupTissue(); if (m_Config->IsCerebrospinalFluidEnabled()) SetupCerebrospinalFluid(); } + SetupGastrointestinal(); SetupECMO(); @@ -108,10 +116,11 @@ namespace pulse m_EnvironmentModel->Clear(); m_EnvironmentModel->Initialize(); - if (m_Config->UseExpandedRespiratory() == eSwitch::On) - SetupExpandedPulmonaryRespiratory(); + if (m_Config->UseExpandedLungs() == eSwitch::On) + SetupExpandedLungsRespiratory(); else SetupRespiratory(); + SetupAnesthesiaMachine(); SetupBagValveMask(); SetupInhaler(); @@ -2425,10 +2434,10 @@ namespace pulse ///////////////// // Left Kidney // SEFluidCircuitNode* LeftKidney1; - if (!m_Config->IsRenalEnabled()) - LeftKidney1 = cCombinedCardiovascular.GetNode(pulse::CardiovascularNode::LeftKidney1); - else + if (m_Config->UseExpandedKidneys() == eSwitch::On) LeftKidney1 = cCombinedCardiovascular.GetNode(pulse::RenalNode::LeftGlomerularCapillaries); + else + LeftKidney1 = cCombinedCardiovascular.GetNode(pulse::CardiovascularNode::LeftKidney1); SEFluidCircuitNode& LeftKidneyT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftKidneyT1); SEFluidCircuitNode& LeftKidneyT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftKidneyT2); @@ -2477,7 +2486,7 @@ namespace pulse /////////////// // Left Lung // //TODO: Make this work for the expanded model - if (m_Config->UseExpandedRespiratory() == eSwitch::Off) + if (m_Config->UseExpandedLungs() == eSwitch::Off) { SEFluidCircuitNode* LeftLung1 = cCardiovascular.GetNode(pulse::CardiovascularNode::LeftPulmonaryCapillaries1); SEFluidCircuitNode& LeftLungT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftLungT1); @@ -2669,10 +2678,10 @@ namespace pulse ////////////////// // Right Kidney // SEFluidCircuitNode* RightKidney1; - if (!m_Config->IsRenalEnabled()) - RightKidney1 = cCombinedCardiovascular.GetNode(pulse::CardiovascularNode::RightKidney1); - else + if (m_Config->UseExpandedKidneys() == eSwitch::On) RightKidney1 = cCombinedCardiovascular.GetNode(pulse::RenalNode::RightGlomerularCapillaries); + else + RightKidney1 = cCombinedCardiovascular.GetNode(pulse::CardiovascularNode::RightKidney1); SEFluidCircuitNode& RightKidneyT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightKidneyT1); SEFluidCircuitNode& RightKidneyT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightKidneyT2); @@ -2721,7 +2730,7 @@ namespace pulse //////////////// // Right Lung // //TODO: Make this work for the expanded model - if (m_Config->UseExpandedRespiratory() == eSwitch::Off) + if (m_Config->UseExpandedLungs() == eSwitch::Off) { SEFluidCircuitNode* RightLung1 = cCardiovascular.GetNode(pulse::CardiovascularNode::RightPulmonaryCapillaries1); SEFluidCircuitNode& RightLungT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightLungT1); diff --git a/src/cpp/engine/common/controller/SetupExpandedCardiovascular.cpp b/src/cpp/engine/common/controller/SetupComputationalLifeExpansion.cpp similarity index 81% rename from src/cpp/engine/common/controller/SetupExpandedCardiovascular.cpp rename to src/cpp/engine/common/controller/SetupComputationalLifeExpansion.cpp index 494e610fc..a455a6d06 100644 --- a/src/cpp/engine/common/controller/SetupExpandedCardiovascular.cpp +++ b/src/cpp/engine/common/controller/SetupComputationalLifeExpansion.cpp @@ -24,9 +24,9 @@ namespace pulse { - void Controller::SetupExpandedCardiovascular() + void Controller::SetupComputationalLifeCardiovascular() { - Info("Setting Up Expanded Cardiovascular"); + Info("Setting Up ComputationalLife Cardiovascular"); bool male = m_InitialPatient->GetSex() == ePatient_Sex::Male ? true : false; double RightLungRatio = m_InitialPatient->GetRightLungRatio().GetValue(); double LeftLungRatio = 1 - RightLungRatio; @@ -308,64 +308,64 @@ namespace pulse SEFluidCircuit& cCardiovascular = m_Circuits->GetCardiovascularCircuit(); // Create Nodes, set volume baselines and pressures where appropriate - SEFluidCircuitNode& RightHeart1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightHeart1); + SEFluidCircuitNode& RightHeart1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightHeart1); RightHeart1.GetPressure().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitNode& RightHeart2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightHeart2); - SEFluidCircuitNode& RightHeart3 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightHeart3); + SEFluidCircuitNode& RightHeart2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightHeart2); + SEFluidCircuitNode& RightHeart3 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightHeart3); RightHeart3.GetPressure().SetValue(0.0, PressureUnit::mmHg); RightHeart1.GetVolumeBaseline().SetValue(VolumeFractionHeartRight * bloodVolume_mL, VolumeUnit::mL); - SEFluidCircuitNode& MainPulmonaryArteries1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::MainPulmonaryArteries1); + SEFluidCircuitNode& MainPulmonaryArteries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::MainPulmonaryArteries1); - SEFluidCircuitNode& RightIntermediatePulmonaryArteries1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightIntermediatePulmonaryArteries1); - SEFluidCircuitNode& RightPulmonaryArteries1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightPulmonaryArteries1); + SEFluidCircuitNode& RightIntermediatePulmonaryArteries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightIntermediatePulmonaryArteries1); + SEFluidCircuitNode& RightPulmonaryArteries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightPulmonaryArteries1); RightPulmonaryArteries1.GetVolumeBaseline().SetValue(VolumeFractionPulmArtRight * bloodVolume_mL, VolumeUnit::mL); RightPulmonaryArteries1.GetPressure().SetValue(VascularPressureTargetPulmArtRight, PressureUnit::mmHg); - SEFluidCircuitNode& LeftIntermediatePulmonaryArteries1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftIntermediatePulmonaryArteries1); - SEFluidCircuitNode& LeftPulmonaryArteries1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftPulmonaryArteries1); + SEFluidCircuitNode& LeftIntermediatePulmonaryArteries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftIntermediatePulmonaryArteries1); + SEFluidCircuitNode& LeftPulmonaryArteries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftPulmonaryArteries1); LeftPulmonaryArteries1.GetVolumeBaseline().SetValue(VolumeFractionPulmArtLeft * bloodVolume_mL, VolumeUnit::mL); LeftPulmonaryArteries1.GetPressure().SetValue(VascularPressureTargetPulmArtLeft, PressureUnit::mmHg); - SEFluidCircuitNode& RightPulmonaryCapillaries1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightPulmonaryCapillaries1); + SEFluidCircuitNode& RightPulmonaryCapillaries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightPulmonaryCapillaries1); RightPulmonaryCapillaries1.GetVolumeBaseline().SetValue(VolumeFractionPulmCapRight * bloodVolume_mL, VolumeUnit::mL); RightPulmonaryCapillaries1.GetPressure().SetValue(VascularPressureTargetPulmCapRight, PressureUnit::mmHg); - SEFluidCircuitNode& LeftPulmonaryCapillaries1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftPulmonaryCapillaries1); + SEFluidCircuitNode& LeftPulmonaryCapillaries1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftPulmonaryCapillaries1); LeftPulmonaryCapillaries1.GetVolumeBaseline().SetValue(VolumeFractionPulmCapLeft * bloodVolume_mL, VolumeUnit::mL); LeftPulmonaryCapillaries1.GetPressure().SetValue(VascularPressureTargetPulmCapLeft, PressureUnit::mmHg); - SEFluidCircuitNode& RightIntermediatePulmonaryVeins1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightIntermediatePulmonaryVeins1); - SEFluidCircuitNode& RightPulmonaryVeins1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightPulmonaryVeins1); + SEFluidCircuitNode& RightIntermediatePulmonaryVeins1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightIntermediatePulmonaryVeins1); + SEFluidCircuitNode& RightPulmonaryVeins1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightPulmonaryVeins1); RightPulmonaryVeins1.GetVolumeBaseline().SetValue(VolumeFractionPulmVeinsRight * bloodVolume_mL, VolumeUnit::mL); RightPulmonaryVeins1.GetPressure().SetValue(VascularPressureTargetPulmVeinsRight, PressureUnit::mmHg); - SEFluidCircuitNode& LeftIntermediatePulmonaryVeins1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftIntermediatePulmonaryVeins1); - SEFluidCircuitNode& LeftPulmonaryVeins1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftPulmonaryVeins1); + SEFluidCircuitNode& LeftIntermediatePulmonaryVeins1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftIntermediatePulmonaryVeins1); + SEFluidCircuitNode& LeftPulmonaryVeins1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftPulmonaryVeins1); LeftPulmonaryVeins1.GetVolumeBaseline().SetValue(VolumeFractionPulmVeinsLeft * bloodVolume_mL, VolumeUnit::mL); LeftPulmonaryVeins1.GetPressure().SetValue(VascularPressureTargetPulmVeinsLeft, PressureUnit::mmHg); - SEFluidCircuitNode& LeftHeart1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftHeart1); + SEFluidCircuitNode& LeftHeart1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftHeart1); LeftHeart1.GetPressure().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitNode& LeftHeart2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftHeart2); - SEFluidCircuitNode& LeftHeart3 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftHeart3); + SEFluidCircuitNode& LeftHeart2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftHeart2); + SEFluidCircuitNode& LeftHeart3 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftHeart3); LeftHeart3.GetPressure().SetValue(0.0, PressureUnit::mmHg); LeftHeart1.GetVolumeBaseline().SetValue(VolumeFractionHeartLeft * bloodVolume_mL, VolumeUnit::mL); - SEFluidCircuitNode& Aorta1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Aorta1); - SEFluidCircuitNode& Aorta2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Aorta2); - SEFluidCircuitNode& Aorta3 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Aorta3); - SEFluidCircuitNode& Aorta4 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Aorta4); - SEFluidCircuitNode& Aorta5 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Aorta5); + SEFluidCircuitNode& Aorta1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Aorta1); + SEFluidCircuitNode& Aorta2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Aorta2); + SEFluidCircuitNode& Aorta3 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Aorta3); + SEFluidCircuitNode& Aorta4 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Aorta4); + SEFluidCircuitNode& Aorta5 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::Aorta5); Aorta4.GetPressure().SetValue(0.0, PressureUnit::mmHg); Aorta1.GetVolumeBaseline().SetValue(70, VolumeUnit::mL); Aorta1.GetPressure().SetValue(VascularPressureTargetAorta, PressureUnit::mmHg); Aorta5.GetVolumeBaseline().SetValue(VolumeFractionAorta * bloodVolume_mL, VolumeUnit::mL); Aorta5.GetPressure().SetValue(VascularPressureTargetAorta, PressureUnit::mmHg); - SEFluidCircuitNode& Extracranial1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Extracranial1); - SEFluidCircuitNode& Extracranial2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Extracranial2); - SEFluidCircuitNode& Extracranial3 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Extracranial3); + SEFluidCircuitNode& Extracranial1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::Extracranial1); + SEFluidCircuitNode& Extracranial2 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::Extracranial2); + SEFluidCircuitNode& Extracranial3 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::Extracranial3); Extracranial1.GetVolumeBaseline().SetValue(VolumeFractionExtracranialArterioles * bloodVolume_mL, VolumeUnit::mL); Extracranial2.GetVolumeBaseline().SetValue(VolumeFractionExtracranialCapillaries * bloodVolume_mL, VolumeUnit::mL); Extracranial3.GetVolumeBaseline().SetValue(VolumeFractionExtracranialVenules * bloodVolume_mL, VolumeUnit::mL); @@ -373,9 +373,9 @@ namespace pulse Extracranial2.GetPressure().SetValue(VascularPressureTargetExtracranial, PressureUnit::mmHg); Extracranial3.GetPressure().SetValue(VascularPressureTargetVenules, PressureUnit::mmHg); - SEFluidCircuitNode& Intracranial1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Intracranial1); - SEFluidCircuitNode& Intracranial2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Intracranial2); - SEFluidCircuitNode& Intracranial3 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Intracranial3); + SEFluidCircuitNode& Intracranial1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::Intracranial1); + SEFluidCircuitNode& Intracranial2 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::Intracranial2); + SEFluidCircuitNode& Intracranial3 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::Intracranial3); Intracranial1.GetVolumeBaseline().SetValue(VolumeFractionIntracranialArterioles * bloodVolume_mL, VolumeUnit::mL); Intracranial2.GetVolumeBaseline().SetValue(VolumeFractionIntracranialCapillaries * bloodVolume_mL, VolumeUnit::mL); Intracranial3.GetVolumeBaseline().SetValue(VolumeFractionIntracranialVenules * bloodVolume_mL, VolumeUnit::mL); @@ -383,13 +383,13 @@ namespace pulse Intracranial2.GetPressure().SetValue(VascularPressureTargetIntracranial, PressureUnit::mmHg); Intracranial3.GetPressure().SetValue(VascularPressureTargetVenules, PressureUnit::mmHg); - SEFluidCircuitNode& LeftArm1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftArm1); - SEFluidCircuitNode& LeftArmBone1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftArmBone1); - SEFluidCircuitNode& LeftArmFat1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftArmFat1); - SEFluidCircuitNode& LeftArmMicrovasculature1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftArmMicroVasculature1); - SEFluidCircuitNode& LeftArmMuscle1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftArmMuscle1); - SEFluidCircuitNode& LeftArmSkin1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftArmSkin1); - SEFluidCircuitNode& LeftArm2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftArm2); + SEFluidCircuitNode& LeftArm1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftArm1); + SEFluidCircuitNode& LeftArmBone1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::LeftArmBone1); + SEFluidCircuitNode& LeftArmFat1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::LeftArmFat1); + SEFluidCircuitNode& LeftArmMicrovasculature1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::LeftArmMicroVasculature1); + SEFluidCircuitNode& LeftArmMuscle1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::LeftArmMuscle1); + SEFluidCircuitNode& LeftArmSkin1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::LeftArmSkin1); + SEFluidCircuitNode& LeftArm2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftArm2); LeftArm1.GetVolumeBaseline().SetValue(VolumeFractionArmArterioles * bloodVolume_mL, VolumeUnit::mL); LeftArmBone1.GetVolumeBaseline().SetValue(VolumeFractionArmBone * bloodVolume_mL, VolumeUnit::mL); LeftArmFat1.GetVolumeBaseline().SetValue(VolumeFractionArmFat * bloodVolume_mL, VolumeUnit::mL); @@ -405,9 +405,9 @@ namespace pulse LeftArmSkin1.GetPressure().SetValue(VascularPressureTargetArmSkin, PressureUnit::mmHg); LeftArm2.GetPressure().SetValue(VascularPressureTargetVenules, PressureUnit::mmHg); - SEFluidCircuitNode& LeftKidney1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftKidney1); - SEFluidCircuitNode& LeftKidney2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftKidney2); - SEFluidCircuitNode& LeftKidney3 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftKidney3); + SEFluidCircuitNode& LeftKidney1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftKidney1); + SEFluidCircuitNode& LeftKidney2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftKidney2); + SEFluidCircuitNode& LeftKidney3 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::LeftKidney3); LeftKidney1.GetVolumeBaseline().SetValue(0.5 * VolumeFractionKidneyArterioles * bloodVolume_mL, VolumeUnit::mL); LeftKidney2.GetVolumeBaseline().SetValue(0.5 * VolumeFractionKidneyCapillaries * bloodVolume_mL, VolumeUnit::mL); LeftKidney3.GetVolumeBaseline().SetValue(0.5 * VolumeFractionKidneyVenules * bloodVolume_mL, VolumeUnit::mL); @@ -415,13 +415,13 @@ namespace pulse LeftKidney2.GetPressure().SetValue(VascularPressureTargetKidney, PressureUnit::mmHg); LeftKidney3.GetPressure().SetValue(VascularPressureTargetVenules, PressureUnit::mmHg); - SEFluidCircuitNode& LeftLeg1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftLeg1); - SEFluidCircuitNode& LeftLegBone1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftLegBone1); - SEFluidCircuitNode& LeftLegFat1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftLegFat1); - SEFluidCircuitNode& LeftLegMicrovasculature1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftLegMicroVasculature1); - SEFluidCircuitNode& LeftLegMuscle1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftLegMuscle1); - SEFluidCircuitNode& LeftLegSkin1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftLegSkin1); - SEFluidCircuitNode& LeftLeg2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LeftLeg2); + SEFluidCircuitNode& LeftLeg1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftLeg1); + SEFluidCircuitNode& LeftLegBone1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::LeftLegBone1); + SEFluidCircuitNode& LeftLegFat1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::LeftLegFat1); + SEFluidCircuitNode& LeftLegMicrovasculature1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::LeftLegMicroVasculature1); + SEFluidCircuitNode& LeftLegMuscle1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::LeftLegMuscle1); + SEFluidCircuitNode& LeftLegSkin1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::LeftLegSkin1); + SEFluidCircuitNode& LeftLeg2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftLeg2); LeftLeg1.GetVolumeBaseline().SetValue(VolumeFractionLegArterioles * bloodVolume_mL, VolumeUnit::mL); LeftLegBone1.GetVolumeBaseline().SetValue(VolumeFractionLegBone * bloodVolume_mL, VolumeUnit::mL); LeftLegFat1.GetVolumeBaseline().SetValue(VolumeFractionLegFat * bloodVolume_mL, VolumeUnit::mL); @@ -437,9 +437,9 @@ namespace pulse LeftLegSkin1.GetPressure().SetValue(VascularPressureTargetLegSkin, PressureUnit::mmHg); LeftLeg2.GetPressure().SetValue(VascularPressureTargetVenules, PressureUnit::mmHg); - SEFluidCircuitNode& Myocardium1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Myocardium1); - SEFluidCircuitNode& Myocardium2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Myocardium2); - SEFluidCircuitNode& Myocardium3 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Myocardium3); + SEFluidCircuitNode& Myocardium1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Myocardium1); + SEFluidCircuitNode& Myocardium2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Myocardium2); + SEFluidCircuitNode& Myocardium3 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::Myocardium3); Myocardium1.GetVolumeBaseline().SetValue(VolumeFractionMyocardiumArterioles * bloodVolume_mL, VolumeUnit::mL); Myocardium2.GetVolumeBaseline().SetValue(VolumeFractionMyocardiumCapillaries * bloodVolume_mL, VolumeUnit::mL); Myocardium3.GetVolumeBaseline().SetValue(VolumeFractionMyocardiumVenules * bloodVolume_mL, VolumeUnit::mL); @@ -447,15 +447,15 @@ namespace pulse Myocardium2.GetPressure().SetValue(VascularPressureTargetMyocardium, PressureUnit::mmHg); Myocardium3.GetPressure().SetValue(VascularPressureTargetVenules, PressureUnit::mmHg); - SEFluidCircuitNode& PortalVein1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::PortalVein1); + SEFluidCircuitNode& PortalVein1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::PortalVein1); - SEFluidCircuitNode& RightArm1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightArm1); - SEFluidCircuitNode& RightArmBone1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightArmBone1); - SEFluidCircuitNode& RightArmFat1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightArmFat1); - SEFluidCircuitNode& RightArmMicrovasculature1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightArmMicroVasculature1); - SEFluidCircuitNode& RightArmMuscle1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightArmMuscle1); - SEFluidCircuitNode& RightArmSkin1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightArmSkin1); - SEFluidCircuitNode& RightArm2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightArm2); + SEFluidCircuitNode& RightArm1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightArm1); + SEFluidCircuitNode& RightArmBone1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::RightArmBone1); + SEFluidCircuitNode& RightArmFat1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::RightArmFat1); + SEFluidCircuitNode& RightArmMicrovasculature1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::RightArmMicroVasculature1); + SEFluidCircuitNode& RightArmMuscle1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::RightArmMuscle1); + SEFluidCircuitNode& RightArmSkin1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::RightArmSkin1); + SEFluidCircuitNode& RightArm2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightArm2); RightArm1.GetVolumeBaseline().SetValue(VolumeFractionArmArterioles * bloodVolume_mL, VolumeUnit::mL); RightArmBone1.GetVolumeBaseline().SetValue(VolumeFractionArmBone * bloodVolume_mL, VolumeUnit::mL); RightArmFat1.GetVolumeBaseline().SetValue(VolumeFractionArmFat * bloodVolume_mL, VolumeUnit::mL); @@ -471,9 +471,9 @@ namespace pulse RightArmSkin1.GetPressure().SetValue(VascularPressureTargetArmSkin, PressureUnit::mmHg); RightArm2.GetPressure().SetValue(VascularPressureTargetVenules, PressureUnit::mmHg); - SEFluidCircuitNode& RightKidney1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightKidney1); - SEFluidCircuitNode& RightKidney2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightKidney2); - SEFluidCircuitNode& RightKidney3 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightKidney3); + SEFluidCircuitNode& RightKidney1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightKidney1); + SEFluidCircuitNode& RightKidney2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightKidney2); + SEFluidCircuitNode& RightKidney3 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::RightKidney3); RightKidney1.GetVolumeBaseline().SetValue(0.5 * VolumeFractionKidneyArterioles * bloodVolume_mL, VolumeUnit::mL); RightKidney2.GetVolumeBaseline().SetValue(0.5 * VolumeFractionKidneyCapillaries * bloodVolume_mL, VolumeUnit::mL); RightKidney3.GetVolumeBaseline().SetValue(0.5 * VolumeFractionKidneyVenules * bloodVolume_mL, VolumeUnit::mL); @@ -481,13 +481,13 @@ namespace pulse RightKidney2.GetPressure().SetValue(VascularPressureTargetKidney, PressureUnit::mmHg); RightKidney3.GetPressure().SetValue(VascularPressureTargetVenules, PressureUnit::mmHg); - SEFluidCircuitNode& RightLeg1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightLeg1); - SEFluidCircuitNode& RightLegBone1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightLegBone1); - SEFluidCircuitNode& RightLegFat1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightLegFat1); - SEFluidCircuitNode& RightLegMicrovasculature1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightLegMicroVasculature1); - SEFluidCircuitNode& RightLegMuscle1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightLegMuscle1); - SEFluidCircuitNode& RightLegSkin1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightLegSkin1); - SEFluidCircuitNode& RightLeg2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::RightLeg2); + SEFluidCircuitNode& RightLeg1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightLeg1); + SEFluidCircuitNode& RightLegBone1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::RightLegBone1); + SEFluidCircuitNode& RightLegFat1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::RightLegFat1); + SEFluidCircuitNode& RightLegMicrovasculature1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::RightLegMicroVasculature1); + SEFluidCircuitNode& RightLegMuscle1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::RightLegMuscle1); + SEFluidCircuitNode& RightLegSkin1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::RightLegSkin1); + SEFluidCircuitNode& RightLeg2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightLeg2); RightLeg1.GetVolumeBaseline().SetValue(VolumeFractionLegArterioles * bloodVolume_mL, VolumeUnit::mL); RightLegBone1.GetVolumeBaseline().SetValue(VolumeFractionLegBone * bloodVolume_mL, VolumeUnit::mL); RightLegFat1.GetVolumeBaseline().SetValue(VolumeFractionLegFat * bloodVolume_mL, VolumeUnit::mL); @@ -506,40 +506,40 @@ namespace pulse // Move a little volume from LargeIntestine to Gut1 for substance transport // LargeIntestine1.GetVolumeBaseline().Increment(-10, VolumeUnit::mL); - SEFluidCircuitNode& Gut1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Gut1); + SEFluidCircuitNode& Gut1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::Gut1); Gut1.GetVolumeBaseline().SetValue(VolumeFractionGutLiverArterioles * bloodVolume_mL, VolumeUnit::mL); Gut1.GetPressure().SetValue(VascularPressureTargetArterioles, PressureUnit::mmHg); - SEFluidCircuitNode& SmallIntestine1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::SmallIntestine1); + SEFluidCircuitNode& SmallIntestine1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::SmallIntestine1); SmallIntestine1.GetVolumeBaseline().SetValue(VolumeFractionSmallIntestine * bloodVolume_mL, VolumeUnit::mL); SmallIntestine1.GetPressure().SetValue(VascularPressureTargetSmallIntestine, PressureUnit::mmHg); - SEFluidCircuitNode& Splanchnic1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Splanchnic1); + SEFluidCircuitNode& Splanchnic1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Splanchnic1); Splanchnic1.GetVolumeBaseline().SetValue(VolumeFractionSplanchnic * bloodVolume_mL, VolumeUnit::mL); Splanchnic1.GetPressure().SetValue(VascularPressureTargetSplanchnic, PressureUnit::mmHg); - SEFluidCircuitNode& Spleen1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Spleen1); + SEFluidCircuitNode& Spleen1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Spleen1); Spleen1.GetVolumeBaseline().SetValue(VolumeFractionSpleen * bloodVolume_mL, VolumeUnit::mL); Spleen1.GetPressure().SetValue(VascularPressureTargetSpleen, PressureUnit::mmHg); - SEFluidCircuitNode& LargeIntestine1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::LargeIntestine1); + SEFluidCircuitNode& LargeIntestine1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::LargeIntestine1); LargeIntestine1.GetVolumeBaseline().SetValue(VolumeFractionLargeIntestine * bloodVolume_mL, VolumeUnit::mL); LargeIntestine1.GetPressure().SetValue(VascularPressureTargetLargeIntestine, PressureUnit::mmHg); - SEFluidCircuitNode& Liver1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Liver1); - SEFluidCircuitNode& Liver2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Liver2); + SEFluidCircuitNode& Liver1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Liver1); + SEFluidCircuitNode& Liver2 = cCardiovascular.CreateNode(pulse::CardiovascularNode::Liver2); Liver1.GetVolumeBaseline().SetValue(VolumeFractionLiver * bloodVolume_mL, VolumeUnit::mL); Liver2.GetVolumeBaseline().SetValue(VolumeFractionGutLiverVenules * bloodVolume_mL, VolumeUnit::mL); Liver1.GetPressure().SetValue(VascularPressureTargetLiver, PressureUnit::mmHg); Liver2.GetPressure().SetValue(VascularPressureTargetVenules, PressureUnit::mmHg); - SEFluidCircuitNode& Torso1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Torso1); - SEFluidCircuitNode& TorsoBone1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::TorsoBone1); - SEFluidCircuitNode& TorsoFat1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::TorsoFat1); - SEFluidCircuitNode& TorsoMicrovasculature1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::TorsoMicrovasculature1); - SEFluidCircuitNode& TorsoMuscle1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::TorsoMuscle1); - SEFluidCircuitNode& TorsoSkin1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::TorsoSkin1); - SEFluidCircuitNode& Torso2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Torso2); + SEFluidCircuitNode& Torso1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::Torso1); + SEFluidCircuitNode& TorsoBone1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::TorsoBone1); + SEFluidCircuitNode& TorsoFat1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::TorsoFat1); + SEFluidCircuitNode& TorsoMicrovasculature1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::TorsoMicrovasculature1); + SEFluidCircuitNode& TorsoMuscle1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::TorsoMuscle1); + SEFluidCircuitNode& TorsoSkin1 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::TorsoSkin1); + SEFluidCircuitNode& Torso2 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::Torso2); Torso1.GetVolumeBaseline().SetValue(VolumeFractionTorsoArterioles * bloodVolume_mL, VolumeUnit::mL); TorsoBone1.GetVolumeBaseline().SetValue(VolumeFractionTorsoBone * bloodVolume_mL, VolumeUnit::mL); TorsoFat1.GetVolumeBaseline().SetValue(VolumeFractionTorsoFat * bloodVolume_mL, VolumeUnit::mL); @@ -556,17 +556,17 @@ namespace pulse Torso2.GetPressure().SetValue(VascularPressureTargetVenules, PressureUnit::mmHg); - SEFluidCircuitNode& VenaCava1 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::VenaCava1); + SEFluidCircuitNode& VenaCava1 = cCardiovascular.CreateNode(pulse::CardiovascularNode::VenaCava1); // Move a little volume from VenaCava0 (Vena Cava) to VenaCava1 (Venous Return) for substance transport VenaCava1.GetVolumeBaseline().SetValue(VolumeFractionVenaCava * bloodVolume_mL, VolumeUnit::mL); VenaCava1.GetPressure().SetValue(VascularPressureTargetVenules, PressureUnit::mmHg); - SEFluidCircuitNode& VenaCava2 = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::VenaCava2); + SEFluidCircuitNode& VenaCava2 = cCardiovascular.CreateNode(pulse::ComputationalLifeCardiovascularNode::VenaCava2); VenaCava1.GetVolumeBaseline().Increment(-50, VolumeUnit::mL); VenaCava2.GetVolumeBaseline().SetValue(50, VolumeUnit::mL); VenaCava2.GetPressure().SetValue(VascularPressureTargetVenaCava, PressureUnit::mmHg); - SEFluidCircuitNode& Ground = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Ground); + SEFluidCircuitNode& Ground = cCardiovascular.CreateNode(pulse::CardiovascularNode::Ground); Ground.SetAsReferenceNode(); Ground.GetPressure().SetValue(0.0, PressureUnit::mmHg); @@ -579,353 +579,353 @@ namespace pulse if (blood_mL > bloodVolume_mL) Error("Blood volume greater than total blood volume"); - SEFluidCircuitNode& Pericardium = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::Pericardium1); + SEFluidCircuitNode& Pericardium = cCardiovascular.CreateNode(pulse::CardiovascularNode::Pericardium1); Pericardium.GetVolumeBaseline().SetValue(15.0, VolumeUnit::mL); Pericardium.GetPressure().SetValue(1.0, PressureUnit::mmHg); - SEFluidCircuitNode& AbdominalCavity = cCardiovascular.CreateNode(pulse::ExpandedCardiovascularNode::AbdominalCavity1); + SEFluidCircuitNode& AbdominalCavity = cCardiovascular.CreateNode(pulse::CardiovascularNode::AbdominalCavity1); AbdominalCavity.GetVolumeBaseline().SetValue(10.0, VolumeUnit::mL); AbdominalCavity.GetPressure().SetValue(0.0, PressureUnit::mmHg); // Create Paths, set switch (diodes), compliances, and resistances where appropriate - SEFluidCircuitPath& VenaCava1ToRightHeart2 = cCardiovascular.CreatePath(VenaCava1, RightHeart2, pulse::ExpandedCardiovascularPath::VenaCava1ToRightHeart2); + SEFluidCircuitPath& VenaCava1ToRightHeart2 = cCardiovascular.CreatePath(VenaCava1, RightHeart2, pulse::CardiovascularPath::VenaCava1ToRightHeart2); VenaCava1ToRightHeart2.GetResistanceBaseline().SetValue(ResistanceHeartRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightHeart2ToRightHeart1 = cCardiovascular.CreatePath(RightHeart2, RightHeart1, pulse::ExpandedCardiovascularPath::RightHeart2ToRightHeart1); + SEFluidCircuitPath& RightHeart2ToRightHeart1 = cCardiovascular.CreatePath(RightHeart2, RightHeart1, pulse::CardiovascularPath::RightHeart2ToRightHeart1); RightHeart2ToRightHeart1.SetNextValve(eGate::Closed); - SEFluidCircuitPath& RightHeart1ToRightHeart3 = cCardiovascular.CreatePath(RightHeart1, RightHeart3, pulse::ExpandedCardiovascularPath::RightHeart1ToRightHeart3); - SEFluidCircuitPath& RightHeart3ToGround = cCardiovascular.CreatePath(Ground, RightHeart3, pulse::ExpandedCardiovascularPath::RightHeart3ToGround); + SEFluidCircuitPath& RightHeart1ToRightHeart3 = cCardiovascular.CreatePath(RightHeart1, RightHeart3, pulse::CardiovascularPath::RightHeart1ToRightHeart3); + SEFluidCircuitPath& RightHeart3ToGround = cCardiovascular.CreatePath(Ground, RightHeart3, pulse::CardiovascularPath::RightHeart3ToGround); RightHeart3ToGround.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightHeart1ToMainPulmonaryArteries1 = cCardiovascular.CreatePath(RightHeart1, MainPulmonaryArteries1, pulse::ExpandedCardiovascularPath::RightHeart1ToMainPulmonaryArteries1); + SEFluidCircuitPath& RightHeart1ToMainPulmonaryArteries1 = cCardiovascular.CreatePath(RightHeart1, MainPulmonaryArteries1, pulse::CardiovascularPath::RightHeart1ToMainPulmonaryArteries1); RightHeart1ToMainPulmonaryArteries1.SetNextValve(eGate::Closed); - SEFluidCircuitPath& MainPulmonaryArteries1ToRightIntermediatePulmonaryArteries1 = cCardiovascular.CreatePath(MainPulmonaryArteries1, RightIntermediatePulmonaryArteries1, pulse::ExpandedCardiovascularPath::MainPulmonaryArteries1ToRightIntermediatePulmonaryArteries1); + SEFluidCircuitPath& MainPulmonaryArteries1ToRightIntermediatePulmonaryArteries1 = cCardiovascular.CreatePath(MainPulmonaryArteries1, RightIntermediatePulmonaryArteries1, pulse::CardiovascularPath::MainPulmonaryArteries1ToRightIntermediatePulmonaryArteries1); //MainPulmonaryArteriesToRightIntermediatePulmonaryArteries.SetNextValve(eGate::Closed); - SEFluidCircuitPath& RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1 = cCardiovascular.CreatePath(RightIntermediatePulmonaryArteries1, RightPulmonaryArteries1, pulse::ExpandedCardiovascularPath::RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1); + SEFluidCircuitPath& RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1 = cCardiovascular.CreatePath(RightIntermediatePulmonaryArteries1, RightPulmonaryArteries1, pulse::CardiovascularPath::RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1); RightIntermediatePulmonaryArteries1ToRightPulmonaryArteries1.GetResistanceBaseline().SetValue(ResistancePulmArt, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightPulmonaryArteries1ToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::ExpandedCardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryVeins1); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryVeins1); RightPulmonaryArteries1ToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightPulmonaryArteries1ToRightPulmonaryCapillaries1 = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryCapillaries1, pulse::ExpandedCardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryCapillaries1); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightPulmonaryCapillaries1 = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryCapillaries1, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryCapillaries1); RightPulmonaryArteries1ToRightPulmonaryCapillaries1.GetResistanceBaseline().SetValue(ResistancePulmCapRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightPulmonaryArteries1ToGround = cCardiovascular.CreatePath(RightPulmonaryArteries1, Ground, pulse::ExpandedCardiovascularPath::RightPulmonaryArteries1ToGround); + SEFluidCircuitPath& RightPulmonaryArteries1ToGround = cCardiovascular.CreatePath(RightPulmonaryArteries1, Ground, pulse::CardiovascularPath::RightPulmonaryArteries1ToGround); RightPulmonaryArteries1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightPulmonaryCapillaries1ToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightPulmonaryCapillaries1, RightPulmonaryVeins1, pulse::ExpandedCardiovascularPath::RightPulmonaryCapillaries1ToRightPulmonaryVeins1); + SEFluidCircuitPath& RightPulmonaryCapillaries1ToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightPulmonaryCapillaries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightPulmonaryCapillaries1ToRightPulmonaryVeins1); RightPulmonaryCapillaries1ToRightPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistancePulmVeinsRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightPulmonaryCapillaries1ToGround = cCardiovascular.CreatePath(RightPulmonaryCapillaries1, Ground, pulse::ExpandedCardiovascularPath::RightPulmonaryCapillaries1ToGround); + SEFluidCircuitPath& RightPulmonaryCapillaries1ToGround = cCardiovascular.CreatePath(RightPulmonaryCapillaries1, Ground, pulse::CardiovascularPath::RightPulmonaryCapillaries1ToGround); RightPulmonaryCapillaries1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightPulmonaryVeins1ToRightIntermediatePulmonaryVeins1 = cCardiovascular.CreatePath(RightPulmonaryVeins1, RightIntermediatePulmonaryVeins1, pulse::ExpandedCardiovascularPath::RightPulmonaryVeins1ToRightIntermediatePulmonaryVeins1); + SEFluidCircuitPath& RightPulmonaryVeins1ToRightIntermediatePulmonaryVeins1 = cCardiovascular.CreatePath(RightPulmonaryVeins1, RightIntermediatePulmonaryVeins1, pulse::CardiovascularPath::RightPulmonaryVeins1ToRightIntermediatePulmonaryVeins1); RightPulmonaryVeins1ToRightIntermediatePulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceHeartLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightPulmonaryVeins1ToGround = cCardiovascular.CreatePath(RightPulmonaryVeins1, Ground, pulse::ExpandedCardiovascularPath::RightPulmonaryVeins1ToGround); + SEFluidCircuitPath& RightPulmonaryVeins1ToGround = cCardiovascular.CreatePath(RightPulmonaryVeins1, Ground, pulse::CardiovascularPath::RightPulmonaryVeins1ToGround); RightPulmonaryVeins1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightIntermediatePulmonaryVeins1ToLeftHeart2 = cCardiovascular.CreatePath(RightIntermediatePulmonaryVeins1, LeftHeart2, pulse::ExpandedCardiovascularPath::RightIntermediatePulmonaryVeins1ToLeftHeart2); + SEFluidCircuitPath& RightIntermediatePulmonaryVeins1ToLeftHeart2 = cCardiovascular.CreatePath(RightIntermediatePulmonaryVeins1, LeftHeart2, pulse::CardiovascularPath::RightIntermediatePulmonaryVeins1ToLeftHeart2); //RightIntermediatePulmonaryVeins1ToLeftHeart2.SetNextValve(eGate::Closed); - SEFluidCircuitPath& MainPulmonaryArteries1ToLeftIntermediatePulmonaryArteries1 = cCardiovascular.CreatePath(MainPulmonaryArteries1, LeftIntermediatePulmonaryArteries1, pulse::ExpandedCardiovascularPath::MainPulmonaryArteries1ToLeftIntermediatePulmonaryArteries1); + SEFluidCircuitPath& MainPulmonaryArteries1ToLeftIntermediatePulmonaryArteries1 = cCardiovascular.CreatePath(MainPulmonaryArteries1, LeftIntermediatePulmonaryArteries1, pulse::CardiovascularPath::MainPulmonaryArteries1ToLeftIntermediatePulmonaryArteries1); //MainPulmonaryArteries1ToLeftIntermediatePulmonaryArteries1.SetNextValve(eGate::Closed); - SEFluidCircuitPath& LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1 = cCardiovascular.CreatePath(LeftIntermediatePulmonaryArteries1, LeftPulmonaryArteries1, pulse::ExpandedCardiovascularPath::LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1); + SEFluidCircuitPath& LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1 = cCardiovascular.CreatePath(LeftIntermediatePulmonaryArteries1, LeftPulmonaryArteries1, pulse::CardiovascularPath::LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1); LeftIntermediatePulmonaryArteries1ToLeftPulmonaryArteries1.GetResistanceBaseline().SetValue(ResistancePulmArt, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::ExpandedCardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryVeins1); LeftPulmonaryArteries1ToLeftPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceShuntLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1 = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryCapillaries1, pulse::ExpandedCardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1 = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryCapillaries1, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1); LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1.GetResistanceBaseline().SetValue(ResistancePulmCapLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftPulmonaryArteries1ToGround = cCardiovascular.CreatePath(LeftPulmonaryArteries1, Ground, pulse::ExpandedCardiovascularPath::LeftPulmonaryArteries1ToGround); + SEFluidCircuitPath& LeftPulmonaryArteries1ToGround = cCardiovascular.CreatePath(LeftPulmonaryArteries1, Ground, pulse::CardiovascularPath::LeftPulmonaryArteries1ToGround); LeftPulmonaryArteries1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftPulmonaryCapillaries1ToGround = cCardiovascular.CreatePath(LeftPulmonaryCapillaries1, Ground, pulse::ExpandedCardiovascularPath::LeftPulmonaryCapillaries1ToGround); + SEFluidCircuitPath& LeftPulmonaryCapillaries1ToGround = cCardiovascular.CreatePath(LeftPulmonaryCapillaries1, Ground, pulse::CardiovascularPath::LeftPulmonaryCapillaries1ToGround); LeftPulmonaryCapillaries1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftPulmonaryCapillaries1, LeftPulmonaryVeins1, pulse::ExpandedCardiovascularPath::LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftPulmonaryCapillaries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1); LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1.GetResistanceBaseline().SetValue(ResistancePulmVeinsLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftPulmonaryVeins1ToLeftIntermediatePulmonaryVeins1 = cCardiovascular.CreatePath(LeftPulmonaryVeins1, LeftIntermediatePulmonaryVeins1, pulse::ExpandedCardiovascularPath::LeftPulmonaryVeins1ToLeftIntermediatePulmonaryVeins1); + SEFluidCircuitPath& LeftPulmonaryVeins1ToLeftIntermediatePulmonaryVeins1 = cCardiovascular.CreatePath(LeftPulmonaryVeins1, LeftIntermediatePulmonaryVeins1, pulse::CardiovascularPath::LeftPulmonaryVeins1ToLeftIntermediatePulmonaryVeins1); LeftPulmonaryVeins1ToLeftIntermediatePulmonaryVeins1.GetResistanceBaseline().SetValue(ResistanceHeartLeft, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftPulmonaryVeins1ToGround = cCardiovascular.CreatePath(LeftPulmonaryVeins1, Ground, pulse::ExpandedCardiovascularPath::LeftPulmonaryVeins1ToGround); + SEFluidCircuitPath& LeftPulmonaryVeins1ToGround = cCardiovascular.CreatePath(LeftPulmonaryVeins1, Ground, pulse::CardiovascularPath::LeftPulmonaryVeins1ToGround); LeftPulmonaryVeins1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftIntermediatePulmonaryVeins1ToLeftHeart2 = cCardiovascular.CreatePath(LeftIntermediatePulmonaryVeins1, LeftHeart2, pulse::ExpandedCardiovascularPath::LeftIntermediatePulmonaryVeins1ToLeftHeart2); + SEFluidCircuitPath& LeftIntermediatePulmonaryVeins1ToLeftHeart2 = cCardiovascular.CreatePath(LeftIntermediatePulmonaryVeins1, LeftHeart2, pulse::CardiovascularPath::LeftIntermediatePulmonaryVeins1ToLeftHeart2); //LeftIntermediatePulmonaryVeins1ToLeftHeart2.SetNextValve(eGate::Closed); - SEFluidCircuitPath& LeftHeart2ToLeftHeart1 = cCardiovascular.CreatePath(LeftHeart2, LeftHeart1, pulse::ExpandedCardiovascularPath::LeftHeart2ToLeftHeart1); + SEFluidCircuitPath& LeftHeart2ToLeftHeart1 = cCardiovascular.CreatePath(LeftHeart2, LeftHeart1, pulse::CardiovascularPath::LeftHeart2ToLeftHeart1); LeftHeart2ToLeftHeart1.SetNextValve(eGate::Closed); - SEFluidCircuitPath& LeftHeart1ToLeftHeart3 = cCardiovascular.CreatePath(LeftHeart1, LeftHeart3, pulse::ExpandedCardiovascularPath::LeftHeart1ToLeftHeart3); + SEFluidCircuitPath& LeftHeart1ToLeftHeart3 = cCardiovascular.CreatePath(LeftHeart1, LeftHeart3, pulse::CardiovascularPath::LeftHeart1ToLeftHeart3); - SEFluidCircuitPath& LeftHeart3ToGround = cCardiovascular.CreatePath(Ground, LeftHeart3, pulse::ExpandedCardiovascularPath::LeftHeart3ToGround); + SEFluidCircuitPath& LeftHeart3ToGround = cCardiovascular.CreatePath(Ground, LeftHeart3, pulse::CardiovascularPath::LeftHeart3ToGround); LeftHeart3ToGround.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftHeart1ToAorta2 = cCardiovascular.CreatePath(LeftHeart1, Aorta2, pulse::ExpandedCardiovascularPath::LeftHeart1ToAorta2); + SEFluidCircuitPath& LeftHeart1ToAorta2 = cCardiovascular.CreatePath(LeftHeart1, Aorta2, pulse::CardiovascularPath::LeftHeart1ToAorta2); LeftHeart1ToAorta2.SetNextValve(eGate::Closed); - cCardiovascular.CreatePath(Aorta2, Aorta3, pulse::ExpandedCardiovascularPath::Aorta2ToAorta3); - SEFluidCircuitPath& Aorta3ToAorta1 = cCardiovascular.CreatePath(Aorta3, Aorta1, pulse::ExpandedCardiovascularPath::Aorta3ToAorta1); + cCardiovascular.CreatePath(Aorta2, Aorta3, pulse::CardiovascularPath::Aorta2ToAorta3); + SEFluidCircuitPath& Aorta3ToAorta1 = cCardiovascular.CreatePath(Aorta3, Aorta1, pulse::CardiovascularPath::Aorta3ToAorta1); Aorta3ToAorta1.GetResistanceBaseline().SetValue(ResistanceAorta, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Aorta1ToAorta4 = cCardiovascular.CreatePath(Aorta1, Aorta4, pulse::ExpandedCardiovascularPath::Aorta1ToAorta4); + SEFluidCircuitPath& Aorta1ToAorta4 = cCardiovascular.CreatePath(Aorta1, Aorta4, pulse::CardiovascularPath::Aorta1ToAorta4); Aorta1ToAorta4.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& Aorta1ToAorta5 = cCardiovascular.CreatePath(Aorta1, Aorta5, pulse::ExpandedCardiovascularPath::Aorta1ToAorta5); + SEFluidCircuitPath& Aorta1ToAorta5 = cCardiovascular.CreatePath(Aorta1, Aorta5, pulse::ComputationalLifeCardiovascularPath::Aorta1ToAorta5); Aorta1ToAorta5.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArterioles, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Aorta5ToExtracranial1 = cCardiovascular.CreatePath(Aorta5, Extracranial1, pulse::ExpandedCardiovascularPath::Aorta5ToExtracranial1); - SEFluidCircuitPath& Extracranial1ToExtracranial2 = cCardiovascular.CreatePath(Extracranial1, Extracranial2, pulse::ExpandedCardiovascularPath::Extracranial1ToExtracranial2); + SEFluidCircuitPath& Aorta5ToExtracranial1 = cCardiovascular.CreatePath(Aorta5, Extracranial1, pulse::ComputationalLifeCardiovascularPath::Aorta5ToExtracranial1); + SEFluidCircuitPath& Extracranial1ToExtracranial2 = cCardiovascular.CreatePath(Extracranial1, Extracranial2, pulse::ComputationalLifeCardiovascularPath::Extracranial1ToExtracranial2); Extracranial1ToExtracranial2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceExtracranial, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Extracranial2ToGround = cCardiovascular.CreatePath(Extracranial2, Ground, pulse::ExpandedCardiovascularPath::Extracranial2ToGround); + SEFluidCircuitPath& Extracranial2ToGround = cCardiovascular.CreatePath(Extracranial2, Ground, pulse::ComputationalLifeCardiovascularPath::Extracranial2ToGround); Extracranial2ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& Extracranial2ToExtracranial3 = cCardiovascular.CreatePath(Extracranial2, Extracranial3, pulse::ExpandedCardiovascularPath::Extracranial2ToExtracranial3); + SEFluidCircuitPath& Extracranial2ToExtracranial3 = cCardiovascular.CreatePath(Extracranial2, Extracranial3, pulse::ComputationalLifeCardiovascularPath::Extracranial2ToExtracranial3); Extracranial2ToExtracranial3.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceExtracranialVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Extracranial3ToVenaCava2 = cCardiovascular.CreatePath(Extracranial3, VenaCava2, pulse::ExpandedCardiovascularPath::Extracranial3ToVenaCava2); + SEFluidCircuitPath& Extracranial3ToVenaCava2 = cCardiovascular.CreatePath(Extracranial3, VenaCava2, pulse::ComputationalLifeCardiovascularPath::Extracranial3ToVenaCava2); - SEFluidCircuitPath& Aorta5ToIntracranial1 = cCardiovascular.CreatePath(Aorta5, Intracranial1, pulse::ExpandedCardiovascularPath::Aorta5ToIntracranial1); - SEFluidCircuitPath& Intracranial1ToIntracranial2 = cCardiovascular.CreatePath(Intracranial1, Intracranial2, pulse::ExpandedCardiovascularPath::Intracranial1ToIntracranial2); + SEFluidCircuitPath& Aorta5ToIntracranial1 = cCardiovascular.CreatePath(Aorta5, Intracranial1, pulse::ComputationalLifeCardiovascularPath::Aorta5ToIntracranial1); + SEFluidCircuitPath& Intracranial1ToIntracranial2 = cCardiovascular.CreatePath(Intracranial1, Intracranial2, pulse::ComputationalLifeCardiovascularPath::Intracranial1ToIntracranial2); Intracranial1ToIntracranial2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceIntracranial, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Intracranial2ToGround = cCardiovascular.CreatePath(Intracranial2, Ground, pulse::ExpandedCardiovascularPath::Intracranial2ToGround); + SEFluidCircuitPath& Intracranial2ToGround = cCardiovascular.CreatePath(Intracranial2, Ground, pulse::ComputationalLifeCardiovascularPath::Intracranial2ToGround); Intracranial2ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& Intracranial2ToIntracranial3 = cCardiovascular.CreatePath(Intracranial2, Intracranial3, pulse::ExpandedCardiovascularPath::Intracranial2ToIntracranial3); + SEFluidCircuitPath& Intracranial2ToIntracranial3 = cCardiovascular.CreatePath(Intracranial2, Intracranial3, pulse::ComputationalLifeCardiovascularPath::Intracranial2ToIntracranial3); Intracranial2ToIntracranial3.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceIntracranialVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Intracranial3ToVenaCava2 = cCardiovascular.CreatePath(Intracranial3, VenaCava2, pulse::ExpandedCardiovascularPath::Intracranial3ToVenaCava2); + SEFluidCircuitPath& Intracranial3ToVenaCava2 = cCardiovascular.CreatePath(Intracranial3, VenaCava2, pulse::ComputationalLifeCardiovascularPath::Intracranial3ToVenaCava2); - SEFluidCircuitPath& Aorta5ToGut1 = cCardiovascular.CreatePath(Aorta5, Gut1, pulse::ExpandedCardiovascularPath::Aorta5ToGut1); + SEFluidCircuitPath& Aorta5ToGut1 = cCardiovascular.CreatePath(Aorta5, Gut1, pulse::ComputationalLifeCardiovascularPath::Aorta5ToGut1); - SEFluidCircuitPath& Gut1ToLargeIntestine1 = cCardiovascular.CreatePath(Gut1, LargeIntestine1, pulse::ExpandedCardiovascularPath::Gut1ToLargeIntestine1); + SEFluidCircuitPath& Gut1ToLargeIntestine1 = cCardiovascular.CreatePath(Gut1, LargeIntestine1, pulse::ComputationalLifeCardiovascularPath::Gut1ToLargeIntestine1); Gut1ToLargeIntestine1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLargeIntestine, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LargeIntestine1ToGround = cCardiovascular.CreatePath(LargeIntestine1, Ground, pulse::ExpandedCardiovascularPath::LargeIntestine1ToGround); + SEFluidCircuitPath& LargeIntestine1ToGround = cCardiovascular.CreatePath(LargeIntestine1, Ground, pulse::CardiovascularPath::LargeIntestine1ToGround); LargeIntestine1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LargeIntestine1ToPortalVein1 = cCardiovascular.CreatePath(LargeIntestine1, PortalVein1, pulse::ExpandedCardiovascularPath::LargeIntestine1ToPortalVein1); + SEFluidCircuitPath& LargeIntestine1ToPortalVein1 = cCardiovascular.CreatePath(LargeIntestine1, PortalVein1, pulse::CardiovascularPath::LargeIntestine1ToPortalVein1); LargeIntestine1ToPortalVein1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLargeIntestineVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Aorta5ToLeftArm1 = cCardiovascular.CreatePath(Aorta5, LeftArm1, pulse::ExpandedCardiovascularPath::Aorta5ToLeftArm1); - SEFluidCircuitPath& LeftArm1ToLeftArmBone1 = cCardiovascular.CreatePath(LeftArm1, LeftArmBone1, pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmBone1); + SEFluidCircuitPath& Aorta5ToLeftArm1 = cCardiovascular.CreatePath(Aorta5, LeftArm1, pulse::ComputationalLifeCardiovascularPath::Aorta5ToLeftArm1); + SEFluidCircuitPath& LeftArm1ToLeftArmBone1 = cCardiovascular.CreatePath(LeftArm1, LeftArmBone1, pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmBone1); LeftArm1ToLeftArmBone1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmBone, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftArmBone1ToGround = cCardiovascular.CreatePath(LeftArmBone1, Ground, pulse::ExpandedCardiovascularPath::LeftArmBone1ToGround); + SEFluidCircuitPath& LeftArmBone1ToGround = cCardiovascular.CreatePath(LeftArmBone1, Ground, pulse::ComputationalLifeCardiovascularPath::LeftArmBone1ToGround); LeftArmBone1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftArmBone1ToLeftArm2 = cCardiovascular.CreatePath(LeftArmBone1, LeftArm2, pulse::ExpandedCardiovascularPath::LeftArmBone1ToLeftArm2); + SEFluidCircuitPath& LeftArmBone1ToLeftArm2 = cCardiovascular.CreatePath(LeftArmBone1, LeftArm2, pulse::ComputationalLifeCardiovascularPath::LeftArmBone1ToLeftArm2); LeftArmBone1ToLeftArm2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmBoneVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftArm1ToLeftArmFat1 = cCardiovascular.CreatePath(LeftArm1, LeftArmFat1, pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmFat1); + SEFluidCircuitPath& LeftArm1ToLeftArmFat1 = cCardiovascular.CreatePath(LeftArm1, LeftArmFat1, pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmFat1); LeftArm1ToLeftArmFat1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmFat, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftArmFat1ToGround = cCardiovascular.CreatePath(LeftArmFat1, Ground, pulse::ExpandedCardiovascularPath::LeftArmFat1ToGround); + SEFluidCircuitPath& LeftArmFat1ToGround = cCardiovascular.CreatePath(LeftArmFat1, Ground, pulse::ComputationalLifeCardiovascularPath::LeftArmFat1ToGround); LeftArmFat1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftArmFat1ToLeftArm2 = cCardiovascular.CreatePath(LeftArmFat1, LeftArm2, pulse::ExpandedCardiovascularPath::LeftArmFat1ToLeftArm2); + SEFluidCircuitPath& LeftArmFat1ToLeftArm2 = cCardiovascular.CreatePath(LeftArmFat1, LeftArm2, pulse::ComputationalLifeCardiovascularPath::LeftArmFat1ToLeftArm2); LeftArmFat1ToLeftArm2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmFatVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftArm1ToLeftArmMicrovasculature1 = cCardiovascular.CreatePath(LeftArm1, LeftArmMicrovasculature1, pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmMicrovasculature1); + SEFluidCircuitPath& LeftArm1ToLeftArmMicrovasculature1 = cCardiovascular.CreatePath(LeftArm1, LeftArmMicrovasculature1, pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmMicrovasculature1); LeftArm1ToLeftArmMicrovasculature1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmMicrovasculature, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftArmMicrovasculature1ToGround = cCardiovascular.CreatePath(LeftArmMicrovasculature1, Ground, pulse::ExpandedCardiovascularPath::LeftArmMicrovasculature1ToGround); + SEFluidCircuitPath& LeftArmMicrovasculature1ToGround = cCardiovascular.CreatePath(LeftArmMicrovasculature1, Ground, pulse::ComputationalLifeCardiovascularPath::LeftArmMicrovasculature1ToGround); LeftArmMicrovasculature1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftArmMicrovasculature1ToLeftArm2 = cCardiovascular.CreatePath(LeftArmMicrovasculature1, LeftArm2, pulse::ExpandedCardiovascularPath::LeftArmMicrovasculature1ToLeftArm2); + SEFluidCircuitPath& LeftArmMicrovasculature1ToLeftArm2 = cCardiovascular.CreatePath(LeftArmMicrovasculature1, LeftArm2, pulse::ComputationalLifeCardiovascularPath::LeftArmMicrovasculature1ToLeftArm2); LeftArmMicrovasculature1ToLeftArm2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmMicrovasculatureVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftArm1ToLeftArmMuscle1 = cCardiovascular.CreatePath(LeftArm1, LeftArmMuscle1, pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmMuscle1); + SEFluidCircuitPath& LeftArm1ToLeftArmMuscle1 = cCardiovascular.CreatePath(LeftArm1, LeftArmMuscle1, pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmMuscle1); LeftArm1ToLeftArmMuscle1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmMuscle, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftArmMuscle1ToGround = cCardiovascular.CreatePath(LeftArmMuscle1, Ground, pulse::ExpandedCardiovascularPath::LeftArmMuscle1ToGround); + SEFluidCircuitPath& LeftArmMuscle1ToGround = cCardiovascular.CreatePath(LeftArmMuscle1, Ground, pulse::ComputationalLifeCardiovascularPath::LeftArmMuscle1ToGround); LeftArmMuscle1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftArmMuscle1ToLeftArm2 = cCardiovascular.CreatePath(LeftArmMuscle1, LeftArm2, pulse::ExpandedCardiovascularPath::LeftArmMuscle1ToLeftArm2); + SEFluidCircuitPath& LeftArmMuscle1ToLeftArm2 = cCardiovascular.CreatePath(LeftArmMuscle1, LeftArm2, pulse::ComputationalLifeCardiovascularPath::LeftArmMuscle1ToLeftArm2); LeftArmMuscle1ToLeftArm2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmMuscleVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftArm1ToLeftArmSkin1 = cCardiovascular.CreatePath(LeftArm1, LeftArmSkin1, pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmSkin1); + SEFluidCircuitPath& LeftArm1ToLeftArmSkin1 = cCardiovascular.CreatePath(LeftArm1, LeftArmSkin1, pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmSkin1); LeftArm1ToLeftArmSkin1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmSkin, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftArmSkin1ToGround = cCardiovascular.CreatePath(LeftArmSkin1, Ground, pulse::ExpandedCardiovascularPath::LeftArmSkin1ToGround); + SEFluidCircuitPath& LeftArmSkin1ToGround = cCardiovascular.CreatePath(LeftArmSkin1, Ground, pulse::ComputationalLifeCardiovascularPath::LeftArmSkin1ToGround); LeftArmSkin1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftArmSkin1ToLeftArm2 = cCardiovascular.CreatePath(LeftArmSkin1, LeftArm2, pulse::ExpandedCardiovascularPath::LeftArmSkin1ToLeftArm2); + SEFluidCircuitPath& LeftArmSkin1ToLeftArm2 = cCardiovascular.CreatePath(LeftArmSkin1, LeftArm2, pulse::ComputationalLifeCardiovascularPath::LeftArmSkin1ToLeftArm2); LeftArmSkin1ToLeftArm2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmSkinVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftArm2ToVenaCava2 = cCardiovascular.CreatePath(LeftArm2, VenaCava2, pulse::ExpandedCardiovascularPath::LeftArm2ToVenaCava2); + SEFluidCircuitPath& LeftArm2ToVenaCava2 = cCardiovascular.CreatePath(LeftArm2, VenaCava2, pulse::ComputationalLifeCardiovascularPath::LeftArm2ToVenaCava2); - SEFluidCircuitPath& Aorta5ToLeftKidney1 = cCardiovascular.CreatePath(Aorta5, LeftKidney1, pulse::ExpandedCardiovascularPath::Aorta5ToLeftKidney1); - SEFluidCircuitPath& LeftKidney1ToLeftKidney2 = cCardiovascular.CreatePath(LeftKidney1, LeftKidney2, pulse::ExpandedCardiovascularPath::LeftKidney1ToLeftKidney2); + SEFluidCircuitPath& Aorta5ToLeftKidney1 = cCardiovascular.CreatePath(Aorta5, LeftKidney1, pulse::ComputationalLifeCardiovascularPath::Aorta5ToLeftKidney1); + SEFluidCircuitPath& LeftKidney1ToLeftKidney2 = cCardiovascular.CreatePath(LeftKidney1, LeftKidney2, pulse::CardiovascularPath::LeftKidney1ToLeftKidney2); LeftKidney1ToLeftKidney2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceKidney, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftKidney2ToGround = cCardiovascular.CreatePath(LeftKidney2, Ground, pulse::ExpandedCardiovascularPath::LeftKidney2ToGround); + SEFluidCircuitPath& LeftKidney2ToGround = cCardiovascular.CreatePath(LeftKidney2, Ground, pulse::ComputationalLifeCardiovascularPath::LeftKidney2ToGround); LeftKidney2ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftKidney2ToLeftKidney3 = cCardiovascular.CreatePath(LeftKidney2, LeftKidney3, pulse::ExpandedCardiovascularPath::LeftKidney2ToLeftKidney3); + SEFluidCircuitPath& LeftKidney2ToLeftKidney3 = cCardiovascular.CreatePath(LeftKidney2, LeftKidney3, pulse::ComputationalLifeCardiovascularPath::LeftKidney2ToLeftKidney3); LeftKidney2ToLeftKidney3.GetResistanceBaseline().SetValue(ResistanceKidneyVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftKidney3ToVenaCava2 = cCardiovascular.CreatePath(LeftKidney3, VenaCava2, pulse::ExpandedCardiovascularPath::LeftKidney3ToVenaCava2); + SEFluidCircuitPath& LeftKidney3ToVenaCava2 = cCardiovascular.CreatePath(LeftKidney3, VenaCava2, pulse::ComputationalLifeCardiovascularPath::LeftKidney3ToVenaCava2); - SEFluidCircuitPath& Aorta5ToLeftLeg1 = cCardiovascular.CreatePath(Aorta5, LeftLeg1, pulse::ExpandedCardiovascularPath::Aorta5ToLeftLeg1); - SEFluidCircuitPath& LeftLeg1ToLeftLegBone1 = cCardiovascular.CreatePath(LeftLeg1, LeftLegBone1, pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegBone1); + SEFluidCircuitPath& Aorta5ToLeftLeg1 = cCardiovascular.CreatePath(Aorta5, LeftLeg1, pulse::ComputationalLifeCardiovascularPath::Aorta5ToLeftLeg1); + SEFluidCircuitPath& LeftLeg1ToLeftLegBone1 = cCardiovascular.CreatePath(LeftLeg1, LeftLegBone1, pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegBone1); LeftLeg1ToLeftLegBone1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegBone, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftLegBone1ToGround = cCardiovascular.CreatePath(LeftLegBone1, Ground, pulse::ExpandedCardiovascularPath::LeftLegBone1ToGround); + SEFluidCircuitPath& LeftLegBone1ToGround = cCardiovascular.CreatePath(LeftLegBone1, Ground, pulse::ComputationalLifeCardiovascularPath::LeftLegBone1ToGround); LeftLegBone1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftLegBone1ToLeftLeg2 = cCardiovascular.CreatePath(LeftLegBone1, LeftLeg2, pulse::ExpandedCardiovascularPath::LeftLegBone1ToLeftLeg2); + SEFluidCircuitPath& LeftLegBone1ToLeftLeg2 = cCardiovascular.CreatePath(LeftLegBone1, LeftLeg2, pulse::ComputationalLifeCardiovascularPath::LeftLegBone1ToLeftLeg2); LeftLegBone1ToLeftLeg2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegBoneVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftLeg1ToLeftLegFat1 = cCardiovascular.CreatePath(LeftLeg1, LeftLegFat1, pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegFat1); + SEFluidCircuitPath& LeftLeg1ToLeftLegFat1 = cCardiovascular.CreatePath(LeftLeg1, LeftLegFat1, pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegFat1); LeftLeg1ToLeftLegFat1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegFat, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftLegFat1ToGround = cCardiovascular.CreatePath(LeftLegFat1, Ground, pulse::ExpandedCardiovascularPath::LeftLegFat1ToGround); + SEFluidCircuitPath& LeftLegFat1ToGround = cCardiovascular.CreatePath(LeftLegFat1, Ground, pulse::ComputationalLifeCardiovascularPath::LeftLegFat1ToGround); LeftLegFat1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftLegFat1ToLeftLeg2 = cCardiovascular.CreatePath(LeftLegFat1, LeftLeg2, pulse::ExpandedCardiovascularPath::LeftLegFat1ToLeftLeg2); + SEFluidCircuitPath& LeftLegFat1ToLeftLeg2 = cCardiovascular.CreatePath(LeftLegFat1, LeftLeg2, pulse::ComputationalLifeCardiovascularPath::LeftLegFat1ToLeftLeg2); LeftLegFat1ToLeftLeg2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegFatVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftLeg1ToLeftLegMicrovasculature1 = cCardiovascular.CreatePath(LeftLeg1, LeftLegMicrovasculature1, pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegMicrovasculature1); + SEFluidCircuitPath& LeftLeg1ToLeftLegMicrovasculature1 = cCardiovascular.CreatePath(LeftLeg1, LeftLegMicrovasculature1, pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegMicrovasculature1); LeftLeg1ToLeftLegMicrovasculature1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegMicrovasculature, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftLegMicrovasculature1ToGround = cCardiovascular.CreatePath(LeftLegMicrovasculature1, Ground, pulse::ExpandedCardiovascularPath::LeftLegMicrovasculature1ToGround); + SEFluidCircuitPath& LeftLegMicrovasculature1ToGround = cCardiovascular.CreatePath(LeftLegMicrovasculature1, Ground, pulse::ComputationalLifeCardiovascularPath::LeftLegMicrovasculature1ToGround); LeftLegMicrovasculature1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftLegMicrovasculature1ToLeftLeg2 = cCardiovascular.CreatePath(LeftLegMicrovasculature1, LeftLeg2, pulse::ExpandedCardiovascularPath::LeftLegMicrovasculature1ToLeftLeg2); + SEFluidCircuitPath& LeftLegMicrovasculature1ToLeftLeg2 = cCardiovascular.CreatePath(LeftLegMicrovasculature1, LeftLeg2, pulse::ComputationalLifeCardiovascularPath::LeftLegMicrovasculature1ToLeftLeg2); LeftLegMicrovasculature1ToLeftLeg2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegMicrovasculatureVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftLeg1ToLeftLegMuscle1 = cCardiovascular.CreatePath(LeftLeg1, LeftLegMuscle1, pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegMuscle1); + SEFluidCircuitPath& LeftLeg1ToLeftLegMuscle1 = cCardiovascular.CreatePath(LeftLeg1, LeftLegMuscle1, pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegMuscle1); LeftLeg1ToLeftLegMuscle1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegMuscle, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftLegMuscle1ToGround = cCardiovascular.CreatePath(LeftLegMuscle1, Ground, pulse::ExpandedCardiovascularPath::LeftLegMuscle1ToGround); + SEFluidCircuitPath& LeftLegMuscle1ToGround = cCardiovascular.CreatePath(LeftLegMuscle1, Ground, pulse::ComputationalLifeCardiovascularPath::LeftLegMuscle1ToGround); LeftLegMuscle1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftLegMuscle1ToLeftLeg2 = cCardiovascular.CreatePath(LeftLegMuscle1, LeftLeg2, pulse::ExpandedCardiovascularPath::LeftLegMuscle1ToLeftLeg2); + SEFluidCircuitPath& LeftLegMuscle1ToLeftLeg2 = cCardiovascular.CreatePath(LeftLegMuscle1, LeftLeg2, pulse::ComputationalLifeCardiovascularPath::LeftLegMuscle1ToLeftLeg2); LeftLegMuscle1ToLeftLeg2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegMuscleVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftLeg1ToLeftLegSkin1 = cCardiovascular.CreatePath(LeftLeg1, LeftLegSkin1, pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegSkin1); + SEFluidCircuitPath& LeftLeg1ToLeftLegSkin1 = cCardiovascular.CreatePath(LeftLeg1, LeftLegSkin1, pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegSkin1); LeftLeg1ToLeftLegSkin1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegSkin, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftLegSkin1ToGround = cCardiovascular.CreatePath(LeftLegSkin1, Ground, pulse::ExpandedCardiovascularPath::LeftLegSkin1ToGround); + SEFluidCircuitPath& LeftLegSkin1ToGround = cCardiovascular.CreatePath(LeftLegSkin1, Ground, pulse::ComputationalLifeCardiovascularPath::LeftLegSkin1ToGround); LeftLegSkin1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& LeftLegSkin1ToLeftLeg2 = cCardiovascular.CreatePath(LeftLegSkin1, LeftLeg2, pulse::ExpandedCardiovascularPath::LeftLegSkin1ToLeftLeg2); + SEFluidCircuitPath& LeftLegSkin1ToLeftLeg2 = cCardiovascular.CreatePath(LeftLegSkin1, LeftLeg2, pulse::ComputationalLifeCardiovascularPath::LeftLegSkin1ToLeftLeg2); LeftLegSkin1ToLeftLeg2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegSkinVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftLeg2ToVenaCava2 = cCardiovascular.CreatePath(LeftLeg2, VenaCava2, pulse::ExpandedCardiovascularPath::LeftLeg2ToVenaCava2); + SEFluidCircuitPath& LeftLeg2ToVenaCava2 = cCardiovascular.CreatePath(LeftLeg2, VenaCava2, pulse::ComputationalLifeCardiovascularPath::LeftLeg2ToVenaCava2); - SEFluidCircuitPath& Gut1ToLiver1 = cCardiovascular.CreatePath(Gut1, Liver1, pulse::ExpandedCardiovascularPath::Gut1ToLiver1); + SEFluidCircuitPath& Gut1ToLiver1 = cCardiovascular.CreatePath(Gut1, Liver1, pulse::ComputationalLifeCardiovascularPath::Gut1ToLiver1); Gut1ToLiver1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLiver, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Liver1ToGround = cCardiovascular.CreatePath(Liver1, Ground, pulse::ExpandedCardiovascularPath::Liver1ToGround); + SEFluidCircuitPath& Liver1ToGround = cCardiovascular.CreatePath(Liver1, Ground, pulse::CardiovascularPath::Liver1ToGround); Liver1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& PortalVein1ToLiver1 = cCardiovascular.CreatePath(PortalVein1, Liver1, pulse::ExpandedCardiovascularPath::PortalVein1ToLiver1); + SEFluidCircuitPath& PortalVein1ToLiver1 = cCardiovascular.CreatePath(PortalVein1, Liver1, pulse::CardiovascularPath::PortalVein1ToLiver1); PortalVein1ToLiver1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistancePortalVein, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Liver1ToLiver2 = cCardiovascular.CreatePath(Liver1, Liver2, pulse::ExpandedCardiovascularPath::Liver1ToLiver2); + SEFluidCircuitPath& Liver1ToLiver2 = cCardiovascular.CreatePath(Liver1, Liver2, pulse::CardiovascularPath::Liver1ToLiver2); Liver1ToLiver2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLiverVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Liver2ToVenaCava2 = cCardiovascular.CreatePath(Liver2, VenaCava2, pulse::ExpandedCardiovascularPath::Liver2ToVenaCava2); + SEFluidCircuitPath& Liver2ToVenaCava2 = cCardiovascular.CreatePath(Liver2, VenaCava2, pulse::ComputationalLifeCardiovascularPath::Liver2ToVenaCava2); - SEFluidCircuitPath& Aorta5ToMyocardium1 = cCardiovascular.CreatePath(Aorta5, Myocardium1, pulse::ExpandedCardiovascularPath::Aorta5ToMyocardium1); - SEFluidCircuitPath& Myocardium1ToMyocardium2 = cCardiovascular.CreatePath(Myocardium1, Myocardium2, pulse::ExpandedCardiovascularPath::Myocardium1ToMyocardium2); + SEFluidCircuitPath& Aorta5ToMyocardium1 = cCardiovascular.CreatePath(Aorta5, Myocardium1, pulse::ComputationalLifeCardiovascularPath::Aorta5ToMyocardium1); + SEFluidCircuitPath& Myocardium1ToMyocardium2 = cCardiovascular.CreatePath(Myocardium1, Myocardium2, pulse::CardiovascularPath::Myocardium1ToMyocardium2); Myocardium1ToMyocardium2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceMyocardium, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Myocardium2ToGround = cCardiovascular.CreatePath(Myocardium2, Ground, pulse::ExpandedCardiovascularPath::Myocardium2ToGround); + SEFluidCircuitPath& Myocardium2ToGround = cCardiovascular.CreatePath(Myocardium2, Ground, pulse::ComputationalLifeCardiovascularPath::Myocardium2ToGround); Myocardium2ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& Myocardium2ToMyocardium3 = cCardiovascular.CreatePath(Myocardium2, Myocardium3, pulse::ExpandedCardiovascularPath::Myocardium2ToMyocardium3); + SEFluidCircuitPath& Myocardium2ToMyocardium3 = cCardiovascular.CreatePath(Myocardium2, Myocardium3, pulse::ComputationalLifeCardiovascularPath::Myocardium2ToMyocardium3); Myocardium2ToMyocardium3.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceMyocardiumVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Myocardium3ToVenaCava2 = cCardiovascular.CreatePath(Myocardium3, VenaCava2, pulse::ExpandedCardiovascularPath::Myocardium3ToVenaCava2); + SEFluidCircuitPath& Myocardium3ToVenaCava2 = cCardiovascular.CreatePath(Myocardium3, VenaCava2, pulse::ComputationalLifeCardiovascularPath::Myocardium3ToVenaCava2); - SEFluidCircuitPath& PericardiumToGround = cCardiovascular.CreatePath(Pericardium, Ground, pulse::ExpandedCardiovascularPath::Pericardium1ToGround); - SEFluidCircuitPath& GroundToPericardium = cCardiovascular.CreatePath(Ground, Pericardium, pulse::ExpandedCardiovascularPath::GroundToPericardium1); + SEFluidCircuitPath& PericardiumToGround = cCardiovascular.CreatePath(Pericardium, Ground, pulse::CardiovascularPath::Pericardium1ToGround); + SEFluidCircuitPath& GroundToPericardium = cCardiovascular.CreatePath(Ground, Pericardium, pulse::CardiovascularPath::GroundToPericardium1); GroundToPericardium.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); - SEFluidCircuitPath& Aorta5ToRightArm1 = cCardiovascular.CreatePath(Aorta5, RightArm1, pulse::ExpandedCardiovascularPath::Aorta5ToRightArm1); - SEFluidCircuitPath& RightArm1ToRightArmBone1 = cCardiovascular.CreatePath(RightArm1, RightArmBone1, pulse::ExpandedCardiovascularPath::RightArm1ToRightArmBone1); + SEFluidCircuitPath& Aorta5ToRightArm1 = cCardiovascular.CreatePath(Aorta5, RightArm1, pulse::ComputationalLifeCardiovascularPath::Aorta5ToRightArm1); + SEFluidCircuitPath& RightArm1ToRightArmBone1 = cCardiovascular.CreatePath(RightArm1, RightArmBone1, pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmBone1); RightArm1ToRightArmBone1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmBone, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightArmBone1ToGround = cCardiovascular.CreatePath(RightArmBone1, Ground, pulse::ExpandedCardiovascularPath::RightArmBone1ToGround); + SEFluidCircuitPath& RightArmBone1ToGround = cCardiovascular.CreatePath(RightArmBone1, Ground, pulse::ComputationalLifeCardiovascularPath::RightArmBone1ToGround); RightArmBone1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightArmBone1ToRightArm2 = cCardiovascular.CreatePath(RightArmBone1, RightArm2, pulse::ExpandedCardiovascularPath::RightArmBone1ToRightArm2); + SEFluidCircuitPath& RightArmBone1ToRightArm2 = cCardiovascular.CreatePath(RightArmBone1, RightArm2, pulse::ComputationalLifeCardiovascularPath::RightArmBone1ToRightArm2); RightArmBone1ToRightArm2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmBoneVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightArm1ToRightArmFat1 = cCardiovascular.CreatePath(RightArm1, RightArmFat1, pulse::ExpandedCardiovascularPath::RightArm1ToRightArmFat1); + SEFluidCircuitPath& RightArm1ToRightArmFat1 = cCardiovascular.CreatePath(RightArm1, RightArmFat1, pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmFat1); RightArm1ToRightArmFat1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmFat, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightArmFat1ToGround = cCardiovascular.CreatePath(RightArmFat1, Ground, pulse::ExpandedCardiovascularPath::RightArmFat1ToGround); + SEFluidCircuitPath& RightArmFat1ToGround = cCardiovascular.CreatePath(RightArmFat1, Ground, pulse::ComputationalLifeCardiovascularPath::RightArmFat1ToGround); RightArmFat1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightArmFat1ToRightArm2 = cCardiovascular.CreatePath(RightArmFat1, RightArm2, pulse::ExpandedCardiovascularPath::RightArmFat1ToRightArm2); + SEFluidCircuitPath& RightArmFat1ToRightArm2 = cCardiovascular.CreatePath(RightArmFat1, RightArm2, pulse::ComputationalLifeCardiovascularPath::RightArmFat1ToRightArm2); RightArmFat1ToRightArm2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmFatVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightArm1ToRightArmMicrovasculature1 = cCardiovascular.CreatePath(RightArm1, RightArmMicrovasculature1, pulse::ExpandedCardiovascularPath::RightArm1ToRightArmMicrovasculature1); + SEFluidCircuitPath& RightArm1ToRightArmMicrovasculature1 = cCardiovascular.CreatePath(RightArm1, RightArmMicrovasculature1, pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmMicrovasculature1); RightArm1ToRightArmMicrovasculature1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmMicrovasculature, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightArmMicrovasculature1ToGround = cCardiovascular.CreatePath(RightArmMicrovasculature1, Ground, pulse::ExpandedCardiovascularPath::RightArmMicrovasculature1ToGround); + SEFluidCircuitPath& RightArmMicrovasculature1ToGround = cCardiovascular.CreatePath(RightArmMicrovasculature1, Ground, pulse::ComputationalLifeCardiovascularPath::RightArmMicrovasculature1ToGround); RightArmMicrovasculature1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightArmMicrovasculature1ToRightArm2 = cCardiovascular.CreatePath(RightArmMicrovasculature1, RightArm2, pulse::ExpandedCardiovascularPath::RightArmMicrovasculature1ToRightArm2); + SEFluidCircuitPath& RightArmMicrovasculature1ToRightArm2 = cCardiovascular.CreatePath(RightArmMicrovasculature1, RightArm2, pulse::ComputationalLifeCardiovascularPath::RightArmMicrovasculature1ToRightArm2); RightArmMicrovasculature1ToRightArm2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmMicrovasculatureVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightArm1ToRightArmMuscle1 = cCardiovascular.CreatePath(RightArm1, RightArmMuscle1, pulse::ExpandedCardiovascularPath::RightArm1ToRightArmMuscle1); + SEFluidCircuitPath& RightArm1ToRightArmMuscle1 = cCardiovascular.CreatePath(RightArm1, RightArmMuscle1, pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmMuscle1); RightArm1ToRightArmMuscle1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmMuscle, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightArmMuscle1ToGround = cCardiovascular.CreatePath(RightArmMuscle1, Ground, pulse::ExpandedCardiovascularPath::RightArmMuscle1ToGround); + SEFluidCircuitPath& RightArmMuscle1ToGround = cCardiovascular.CreatePath(RightArmMuscle1, Ground, pulse::ComputationalLifeCardiovascularPath::RightArmMuscle1ToGround); RightArmMuscle1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightArmMuscle1ToRightArm2 = cCardiovascular.CreatePath(RightArmMuscle1, RightArm2, pulse::ExpandedCardiovascularPath::RightArmMuscle1ToRightArm2); + SEFluidCircuitPath& RightArmMuscle1ToRightArm2 = cCardiovascular.CreatePath(RightArmMuscle1, RightArm2, pulse::ComputationalLifeCardiovascularPath::RightArmMuscle1ToRightArm2); RightArmMuscle1ToRightArm2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmMuscleVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightArm1ToRightArmSkin1 = cCardiovascular.CreatePath(RightArm1, RightArmSkin1, pulse::ExpandedCardiovascularPath::RightArm1ToRightArmSkin1); + SEFluidCircuitPath& RightArm1ToRightArmSkin1 = cCardiovascular.CreatePath(RightArm1, RightArmSkin1, pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmSkin1); RightArm1ToRightArmSkin1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmSkin, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightArmSkin1ToGround = cCardiovascular.CreatePath(RightArmSkin1, Ground, pulse::ExpandedCardiovascularPath::RightArmSkin1ToGround); + SEFluidCircuitPath& RightArmSkin1ToGround = cCardiovascular.CreatePath(RightArmSkin1, Ground, pulse::ComputationalLifeCardiovascularPath::RightArmSkin1ToGround); RightArmSkin1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightArmSkin1ToRightArm2 = cCardiovascular.CreatePath(RightArmSkin1, RightArm2, pulse::ExpandedCardiovascularPath::RightArmSkin1ToRightArm2); + SEFluidCircuitPath& RightArmSkin1ToRightArm2 = cCardiovascular.CreatePath(RightArmSkin1, RightArm2, pulse::ComputationalLifeCardiovascularPath::RightArmSkin1ToRightArm2); RightArmSkin1ToRightArm2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceArmSkinVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightArm2ToVenaCava2 = cCardiovascular.CreatePath(RightArm2, VenaCava2, pulse::ExpandedCardiovascularPath::RightArm2ToVenaCava2); + SEFluidCircuitPath& RightArm2ToVenaCava2 = cCardiovascular.CreatePath(RightArm2, VenaCava2, pulse::ComputationalLifeCardiovascularPath::RightArm2ToVenaCava2); - SEFluidCircuitPath& Aorta5ToRightKidney1 = cCardiovascular.CreatePath(Aorta5, RightKidney1, pulse::ExpandedCardiovascularPath::Aorta5ToRightKidney1); - SEFluidCircuitPath& RightKidney1ToRightKidney2 = cCardiovascular.CreatePath(RightKidney1, RightKidney2, pulse::ExpandedCardiovascularPath::RightKidney1ToRightKidney2); + SEFluidCircuitPath& Aorta5ToRightKidney1 = cCardiovascular.CreatePath(Aorta5, RightKidney1, pulse::ComputationalLifeCardiovascularPath::Aorta5ToRightKidney1); + SEFluidCircuitPath& RightKidney1ToRightKidney2 = cCardiovascular.CreatePath(RightKidney1, RightKidney2, pulse::CardiovascularPath::RightKidney1ToRightKidney2); RightKidney1ToRightKidney2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceKidney, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightKidney2ToGround = cCardiovascular.CreatePath(RightKidney2, Ground, pulse::ExpandedCardiovascularPath::RightKidney2ToGround); + SEFluidCircuitPath& RightKidney2ToGround = cCardiovascular.CreatePath(RightKidney2, Ground, pulse::ComputationalLifeCardiovascularPath::RightKidney2ToGround); RightKidney2ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightKidney2ToRightKidney3 = cCardiovascular.CreatePath(RightKidney2, RightKidney3, pulse::ExpandedCardiovascularPath::RightKidney2ToRightKidney3); + SEFluidCircuitPath& RightKidney2ToRightKidney3 = cCardiovascular.CreatePath(RightKidney2, RightKidney3, pulse::ComputationalLifeCardiovascularPath::RightKidney2ToRightKidney3); RightKidney2ToRightKidney3.GetResistanceBaseline().SetValue(ResistanceKidneyVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightKidney3ToVenaCava2 = cCardiovascular.CreatePath(RightKidney3, VenaCava2, pulse::ExpandedCardiovascularPath::RightKidney3ToVenaCava2); + SEFluidCircuitPath& RightKidney3ToVenaCava2 = cCardiovascular.CreatePath(RightKidney3, VenaCava2, pulse::ComputationalLifeCardiovascularPath::RightKidney3ToVenaCava2); - SEFluidCircuitPath& Aorta5ToRightLeg1 = cCardiovascular.CreatePath(Aorta5, RightLeg1, pulse::ExpandedCardiovascularPath::Aorta5ToRightLeg1); - SEFluidCircuitPath& RightLeg1ToRightLegBone1 = cCardiovascular.CreatePath(RightLeg1, RightLegBone1, pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegBone1); + SEFluidCircuitPath& Aorta5ToRightLeg1 = cCardiovascular.CreatePath(Aorta5, RightLeg1, pulse::ComputationalLifeCardiovascularPath::Aorta5ToRightLeg1); + SEFluidCircuitPath& RightLeg1ToRightLegBone1 = cCardiovascular.CreatePath(RightLeg1, RightLegBone1, pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegBone1); RightLeg1ToRightLegBone1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegBone, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightLegBone1ToGround = cCardiovascular.CreatePath(RightLegBone1, Ground, pulse::ExpandedCardiovascularPath::RightLegBone1ToGround); + SEFluidCircuitPath& RightLegBone1ToGround = cCardiovascular.CreatePath(RightLegBone1, Ground, pulse::ComputationalLifeCardiovascularPath::RightLegBone1ToGround); RightLegBone1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightLegBone1ToRightLeg2 = cCardiovascular.CreatePath(RightLegBone1, RightLeg2, pulse::ExpandedCardiovascularPath::RightLegBone1ToRightLeg2); + SEFluidCircuitPath& RightLegBone1ToRightLeg2 = cCardiovascular.CreatePath(RightLegBone1, RightLeg2, pulse::ComputationalLifeCardiovascularPath::RightLegBone1ToRightLeg2); RightLegBone1ToRightLeg2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegBoneVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightLeg1ToRightLegFat1 = cCardiovascular.CreatePath(RightLeg1, RightLegFat1, pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegFat1); + SEFluidCircuitPath& RightLeg1ToRightLegFat1 = cCardiovascular.CreatePath(RightLeg1, RightLegFat1, pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegFat1); RightLeg1ToRightLegFat1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegFat, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightLegFat1ToGround = cCardiovascular.CreatePath(RightLegFat1, Ground, pulse::ExpandedCardiovascularPath::RightLegFat1ToGround); + SEFluidCircuitPath& RightLegFat1ToGround = cCardiovascular.CreatePath(RightLegFat1, Ground, pulse::ComputationalLifeCardiovascularPath::RightLegFat1ToGround); RightLegFat1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightLegFat1ToRightLeg2 = cCardiovascular.CreatePath(RightLegFat1, RightLeg2, pulse::ExpandedCardiovascularPath::RightLegFat1ToRightLeg2); + SEFluidCircuitPath& RightLegFat1ToRightLeg2 = cCardiovascular.CreatePath(RightLegFat1, RightLeg2, pulse::ComputationalLifeCardiovascularPath::RightLegFat1ToRightLeg2); RightLegFat1ToRightLeg2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegFatVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightLeg1ToRightLegMicrovasculature1 = cCardiovascular.CreatePath(RightLeg1, RightLegMicrovasculature1, pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegMicrovasculature1); + SEFluidCircuitPath& RightLeg1ToRightLegMicrovasculature1 = cCardiovascular.CreatePath(RightLeg1, RightLegMicrovasculature1, pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegMicrovasculature1); RightLeg1ToRightLegMicrovasculature1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegMicrovasculature, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightLegMicrovasculature1ToGround = cCardiovascular.CreatePath(RightLegMicrovasculature1, Ground, pulse::ExpandedCardiovascularPath::RightLegMicrovasculature1ToGround); + SEFluidCircuitPath& RightLegMicrovasculature1ToGround = cCardiovascular.CreatePath(RightLegMicrovasculature1, Ground, pulse::ComputationalLifeCardiovascularPath::RightLegMicrovasculature1ToGround); RightLegMicrovasculature1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightLegMicrovasculature1ToRightLeg2 = cCardiovascular.CreatePath(RightLegMicrovasculature1, RightLeg2, pulse::ExpandedCardiovascularPath::RightLegMicrovasculature1ToRightLeg2); + SEFluidCircuitPath& RightLegMicrovasculature1ToRightLeg2 = cCardiovascular.CreatePath(RightLegMicrovasculature1, RightLeg2, pulse::ComputationalLifeCardiovascularPath::RightLegMicrovasculature1ToRightLeg2); RightLegMicrovasculature1ToRightLeg2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegMicrovasculatureVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightLeg1ToRightLegMuscle1 = cCardiovascular.CreatePath(RightLeg1, RightLegMuscle1, pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegMuscle1); + SEFluidCircuitPath& RightLeg1ToRightLegMuscle1 = cCardiovascular.CreatePath(RightLeg1, RightLegMuscle1, pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegMuscle1); RightLeg1ToRightLegMuscle1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegMuscle, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightLegMuscle1ToGround = cCardiovascular.CreatePath(RightLegMuscle1, Ground, pulse::ExpandedCardiovascularPath::RightLegMuscle1ToGround); + SEFluidCircuitPath& RightLegMuscle1ToGround = cCardiovascular.CreatePath(RightLegMuscle1, Ground, pulse::ComputationalLifeCardiovascularPath::RightLegMuscle1ToGround); RightLegMuscle1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightLegMuscle1ToRightLeg2 = cCardiovascular.CreatePath(RightLegMuscle1, RightLeg2, pulse::ExpandedCardiovascularPath::RightLegMuscle1ToRightLeg2); + SEFluidCircuitPath& RightLegMuscle1ToRightLeg2 = cCardiovascular.CreatePath(RightLegMuscle1, RightLeg2, pulse::ComputationalLifeCardiovascularPath::RightLegMuscle1ToRightLeg2); RightLegMuscle1ToRightLeg2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegMuscleVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightLeg1ToRightLegSkin1 = cCardiovascular.CreatePath(RightLeg1, RightLegSkin1, pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegSkin1); + SEFluidCircuitPath& RightLeg1ToRightLegSkin1 = cCardiovascular.CreatePath(RightLeg1, RightLegSkin1, pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegSkin1); RightLeg1ToRightLegSkin1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegSkin, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightLegSkin1ToGround = cCardiovascular.CreatePath(RightLegSkin1, Ground, pulse::ExpandedCardiovascularPath::RightLegSkin1ToGround); + SEFluidCircuitPath& RightLegSkin1ToGround = cCardiovascular.CreatePath(RightLegSkin1, Ground, pulse::ComputationalLifeCardiovascularPath::RightLegSkin1ToGround); RightLegSkin1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& RightLegSkin1ToRightLeg2 = cCardiovascular.CreatePath(RightLegSkin1, RightLeg2, pulse::ExpandedCardiovascularPath::RightLegSkin1ToRightLeg2); + SEFluidCircuitPath& RightLegSkin1ToRightLeg2 = cCardiovascular.CreatePath(RightLegSkin1, RightLeg2, pulse::ComputationalLifeCardiovascularPath::RightLegSkin1ToRightLeg2); RightLegSkin1ToRightLeg2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceLegSkinVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightLeg2ToVenaCava2 = cCardiovascular.CreatePath(RightLeg2, VenaCava2, pulse::ExpandedCardiovascularPath::RightLeg2ToVenaCava2); + SEFluidCircuitPath& RightLeg2ToVenaCava2 = cCardiovascular.CreatePath(RightLeg2, VenaCava2, pulse::ComputationalLifeCardiovascularPath::RightLeg2ToVenaCava2); - SEFluidCircuitPath& Gut1ToSmallIntestine1 = cCardiovascular.CreatePath(Gut1, SmallIntestine1, pulse::ExpandedCardiovascularPath::Gut1ToSmallIntestine1); + SEFluidCircuitPath& Gut1ToSmallIntestine1 = cCardiovascular.CreatePath(Gut1, SmallIntestine1, pulse::ComputationalLifeCardiovascularPath::Gut1ToSmallIntestine1); Gut1ToSmallIntestine1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSmallIntestine, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& SmallIntestine1ToGround = cCardiovascular.CreatePath(SmallIntestine1, Ground, pulse::ExpandedCardiovascularPath::SmallIntestine1ToGround); + SEFluidCircuitPath& SmallIntestine1ToGround = cCardiovascular.CreatePath(SmallIntestine1, Ground, pulse::CardiovascularPath::SmallIntestine1ToGround); SmallIntestine1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& SmallIntestine1ToPortalVein1 = cCardiovascular.CreatePath(SmallIntestine1, PortalVein1, pulse::ExpandedCardiovascularPath::SmallIntestine1ToPortalVein1); + SEFluidCircuitPath& SmallIntestine1ToPortalVein1 = cCardiovascular.CreatePath(SmallIntestine1, PortalVein1, pulse::CardiovascularPath::SmallIntestine1ToPortalVein1); SmallIntestine1ToPortalVein1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSmallIntestineVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Gut1ToSplanchnic1 = cCardiovascular.CreatePath(Gut1, Splanchnic1, pulse::ExpandedCardiovascularPath::Gut1ToSplanchnic1); + SEFluidCircuitPath& Gut1ToSplanchnic1 = cCardiovascular.CreatePath(Gut1, Splanchnic1, pulse::ComputationalLifeCardiovascularPath::Gut1ToSplanchnic1); Gut1ToSplanchnic1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSplanchnic, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Splanchnic1ToGround = cCardiovascular.CreatePath(Splanchnic1, Ground, pulse::ExpandedCardiovascularPath::Splanchnic1ToGround); + SEFluidCircuitPath& Splanchnic1ToGround = cCardiovascular.CreatePath(Splanchnic1, Ground, pulse::CardiovascularPath::Splanchnic1ToGround); Splanchnic1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& Splanchnic1ToPortalVein1 = cCardiovascular.CreatePath(Splanchnic1, PortalVein1, pulse::ExpandedCardiovascularPath::Splanchnic1ToPortalVein1); + SEFluidCircuitPath& Splanchnic1ToPortalVein1 = cCardiovascular.CreatePath(Splanchnic1, PortalVein1, pulse::CardiovascularPath::Splanchnic1ToPortalVein1); Splanchnic1ToPortalVein1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSplanchnicVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Gut1ToSpleen1 = cCardiovascular.CreatePath(Gut1, Spleen1, pulse::ExpandedCardiovascularPath::Gut1ToSpleen1); + SEFluidCircuitPath& Gut1ToSpleen1 = cCardiovascular.CreatePath(Gut1, Spleen1, pulse::ComputationalLifeCardiovascularPath::Gut1ToSpleen1); Gut1ToSpleen1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSpleen, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& SpleenToGround = cCardiovascular.CreatePath(Spleen1, Ground, pulse::ExpandedCardiovascularPath::Spleen1ToGround); + SEFluidCircuitPath& SpleenToGround = cCardiovascular.CreatePath(Spleen1, Ground, pulse::CardiovascularPath::Spleen1ToGround); SpleenToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& Spleen1ToPortalVein1 = cCardiovascular.CreatePath(Spleen1, PortalVein1, pulse::ExpandedCardiovascularPath::Spleen1ToPortalVein1); + SEFluidCircuitPath& Spleen1ToPortalVein1 = cCardiovascular.CreatePath(Spleen1, PortalVein1, pulse::CardiovascularPath::Spleen1ToPortalVein1); Spleen1ToPortalVein1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceSpleenVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Aorta5ToTorso1 = cCardiovascular.CreatePath(Aorta5, Torso1, pulse::ExpandedCardiovascularPath::Aorta5ToTorso1); - SEFluidCircuitPath& Torso1ToTorsoBone1 = cCardiovascular.CreatePath(Torso1, TorsoBone1, pulse::ExpandedCardiovascularPath::Torso1ToTorsoBone1); + SEFluidCircuitPath& Aorta5ToTorso1 = cCardiovascular.CreatePath(Aorta5, Torso1, pulse::ComputationalLifeCardiovascularPath::Aorta5ToTorso1); + SEFluidCircuitPath& Torso1ToTorsoBone1 = cCardiovascular.CreatePath(Torso1, TorsoBone1, pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoBone1); Torso1ToTorsoBone1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceTorsoBone, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& TorsoBone1ToGround = cCardiovascular.CreatePath(TorsoBone1, Ground, pulse::ExpandedCardiovascularPath::TorsoBone1ToGround); + SEFluidCircuitPath& TorsoBone1ToGround = cCardiovascular.CreatePath(TorsoBone1, Ground, pulse::ComputationalLifeCardiovascularPath::TorsoBone1ToGround); TorsoBone1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& TorsoBone1ToTorso2 = cCardiovascular.CreatePath(TorsoBone1, Torso2, pulse::ExpandedCardiovascularPath::TorsoBone1ToTorso2); + SEFluidCircuitPath& TorsoBone1ToTorso2 = cCardiovascular.CreatePath(TorsoBone1, Torso2, pulse::ComputationalLifeCardiovascularPath::TorsoBone1ToTorso2); TorsoBone1ToTorso2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceTorsoBoneVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Torso1ToTorsoFat1 = cCardiovascular.CreatePath(Torso1, TorsoFat1, pulse::ExpandedCardiovascularPath::Torso1ToTorsoFat1); + SEFluidCircuitPath& Torso1ToTorsoFat1 = cCardiovascular.CreatePath(Torso1, TorsoFat1, pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoFat1); Torso1ToTorsoFat1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceTorsoFat, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& TorsoFat1ToGround = cCardiovascular.CreatePath(TorsoFat1, Ground, pulse::ExpandedCardiovascularPath::TorsoFat1ToGround); + SEFluidCircuitPath& TorsoFat1ToGround = cCardiovascular.CreatePath(TorsoFat1, Ground, pulse::ComputationalLifeCardiovascularPath::TorsoFat1ToGround); TorsoFat1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& TorsoFat1ToTorso2 = cCardiovascular.CreatePath(TorsoFat1, Torso2, pulse::ExpandedCardiovascularPath::TorsoFat1ToTorso2); + SEFluidCircuitPath& TorsoFat1ToTorso2 = cCardiovascular.CreatePath(TorsoFat1, Torso2, pulse::ComputationalLifeCardiovascularPath::TorsoFat1ToTorso2); TorsoFat1ToTorso2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceTorsoFatVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Torso1ToTorsoMicrovasculature1 = cCardiovascular.CreatePath(Torso1, TorsoMicrovasculature1, pulse::ExpandedCardiovascularPath::Torso1ToTorsoMicrovasculature1); + SEFluidCircuitPath& Torso1ToTorsoMicrovasculature1 = cCardiovascular.CreatePath(Torso1, TorsoMicrovasculature1, pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoMicrovasculature1); Torso1ToTorsoMicrovasculature1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceTorsoMicrovasculature, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& TorsoMicrovasculature1ToGround = cCardiovascular.CreatePath(TorsoMicrovasculature1, Ground, pulse::ExpandedCardiovascularPath::TorsoMicrovasculature1ToGround); + SEFluidCircuitPath& TorsoMicrovasculature1ToGround = cCardiovascular.CreatePath(TorsoMicrovasculature1, Ground, pulse::ComputationalLifeCardiovascularPath::TorsoMicrovasculature1ToGround); TorsoMicrovasculature1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& TorsoMicrovasculature1ToTorso2 = cCardiovascular.CreatePath(TorsoMicrovasculature1, Torso2, pulse::ExpandedCardiovascularPath::TorsoMicrovasculature1ToTorso2); + SEFluidCircuitPath& TorsoMicrovasculature1ToTorso2 = cCardiovascular.CreatePath(TorsoMicrovasculature1, Torso2, pulse::ComputationalLifeCardiovascularPath::TorsoMicrovasculature1ToTorso2); TorsoMicrovasculature1ToTorso2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceTorsoMicrovasculatureVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Torso1ToTorsoMuscle1 = cCardiovascular.CreatePath(Torso1, TorsoMuscle1, pulse::ExpandedCardiovascularPath::Torso1ToTorsoMuscle1); + SEFluidCircuitPath& Torso1ToTorsoMuscle1 = cCardiovascular.CreatePath(Torso1, TorsoMuscle1, pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoMuscle1); Torso1ToTorsoMuscle1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceTorsoMuscle, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& TorsoMuscle1ToGround = cCardiovascular.CreatePath(TorsoMuscle1, Ground, pulse::ExpandedCardiovascularPath::TorsoMuscle1ToGround); + SEFluidCircuitPath& TorsoMuscle1ToGround = cCardiovascular.CreatePath(TorsoMuscle1, Ground, pulse::ComputationalLifeCardiovascularPath::TorsoMuscle1ToGround); TorsoMuscle1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& TorsoMuscle1ToTorso2 = cCardiovascular.CreatePath(TorsoMuscle1, Torso2, pulse::ExpandedCardiovascularPath::TorsoMuscle1ToTorso2); + SEFluidCircuitPath& TorsoMuscle1ToTorso2 = cCardiovascular.CreatePath(TorsoMuscle1, Torso2, pulse::ComputationalLifeCardiovascularPath::TorsoMuscle1ToTorso2); TorsoMuscle1ToTorso2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceTorsoMuscleVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Torso1ToTorsoSkin1 = cCardiovascular.CreatePath(Torso1, TorsoSkin1, pulse::ExpandedCardiovascularPath::Torso1ToTorsoSkin1); + SEFluidCircuitPath& Torso1ToTorsoSkin1 = cCardiovascular.CreatePath(Torso1, TorsoSkin1, pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoSkin1); Torso1ToTorsoSkin1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceTorsoSkin, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& TorsoSkin1ToGround = cCardiovascular.CreatePath(TorsoSkin1, Ground, pulse::ExpandedCardiovascularPath::TorsoSkin1ToGround); + SEFluidCircuitPath& TorsoSkin1ToGround = cCardiovascular.CreatePath(TorsoSkin1, Ground, pulse::ComputationalLifeCardiovascularPath::TorsoSkin1ToGround); TorsoSkin1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& TorsoSkin1ToTorso2 = cCardiovascular.CreatePath(TorsoSkin1, Torso2, pulse::ExpandedCardiovascularPath::TorsoSkin1ToTorso2); + SEFluidCircuitPath& TorsoSkin1ToTorso2 = cCardiovascular.CreatePath(TorsoSkin1, Torso2, pulse::ComputationalLifeCardiovascularPath::TorsoSkin1ToTorso2); TorsoSkin1ToTorso2.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceTorsoSkinVenous, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& Torso2ToVenaCava2 = cCardiovascular.CreatePath(Torso2, VenaCava2, pulse::ExpandedCardiovascularPath::Torso2ToVenaCava2); + SEFluidCircuitPath& Torso2ToVenaCava2 = cCardiovascular.CreatePath(Torso2, VenaCava2, pulse::ComputationalLifeCardiovascularPath::Torso2ToVenaCava2); - SEFluidCircuitPath& AbdominalCavityToGround = cCardiovascular.CreatePath(AbdominalCavity, Ground, pulse::ExpandedCardiovascularPath::AbdominalCavity1ToGround); - SEFluidCircuitPath& GroundToAbdominalCavity = cCardiovascular.CreatePath(Ground, AbdominalCavity, pulse::ExpandedCardiovascularPath::GroundToAbdominalCavity1); + SEFluidCircuitPath& AbdominalCavityToGround = cCardiovascular.CreatePath(AbdominalCavity, Ground, pulse::CardiovascularPath::AbdominalCavity1ToGround); + SEFluidCircuitPath& GroundToAbdominalCavity = cCardiovascular.CreatePath(Ground, AbdominalCavity, pulse::CardiovascularPath::GroundToAbdominalCavity1); GroundToAbdominalCavity.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); - SEFluidCircuitPath& GroundToAorta4 = cCardiovascular.CreatePath(Ground, Aorta4, pulse::ExpandedCardiovascularPath::GroundToAorta4); + SEFluidCircuitPath& GroundToAorta4 = cCardiovascular.CreatePath(Ground, Aorta4, pulse::CardiovascularPath::GroundToAorta4); GroundToAorta4.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& VenaCava2ToVenaCava1 = cCardiovascular.CreatePath(VenaCava2, VenaCava1, pulse::ExpandedCardiovascularPath::VenaCava2ToVenaCava1); + SEFluidCircuitPath& VenaCava2ToVenaCava1 = cCardiovascular.CreatePath(VenaCava2, VenaCava1, pulse::ComputationalLifeCardiovascularPath::VenaCava2ToVenaCava1); VenaCava2ToVenaCava1.GetResistanceBaseline().SetValue(systemicResistanceModifier * ResistanceVenules, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& VenaCava1ToGround = cCardiovascular.CreatePath(VenaCava1, Ground, pulse::ExpandedCardiovascularPath::VenaCava1ToGround); + SEFluidCircuitPath& VenaCava1ToGround = cCardiovascular.CreatePath(VenaCava1, Ground, pulse::CardiovascularPath::VenaCava1ToGround); VenaCava1ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - //SEFluidCircuitPath& VenaCava2ToGround = cCardiovascular.CreatePath(VenaCava2, Ground, pulse::ExpandedCardiovascularPath::VenaCava2ToGround); + //SEFluidCircuitPath& VenaCava2ToGround = cCardiovascular.CreatePath(VenaCava2, Ground, pulse::CardiovascularPath::VenaCava2ToGround); //VenaCava2ToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& IVToVenaCava1 = cCardiovascular.CreatePath(Ground, VenaCava1, pulse::ExpandedCardiovascularPath::IVToVenaCava1); + SEFluidCircuitPath& IVToVenaCava1 = cCardiovascular.CreatePath(Ground, VenaCava1, pulse::CardiovascularPath::IVToVenaCava1); IVToVenaCava1.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); @@ -1121,246 +1121,246 @@ namespace pulse ///////////////// // Right Heart // - SELiquidCompartment& vRightHeart = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightHeart); + SELiquidCompartment& vRightHeart = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightHeart); vRightHeart.MapNode(RightHeart1); vRightHeart.MapNode(RightHeart2); vRightHeart.MapNode(RightHeart3); vRightHeart.MapNode(MainPulmonaryArteries1); ////////////////////////////// // Right Pulmonary Arteries // - SELiquidCompartment& vRightPulmonaryArteries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightPulmonaryArteries); + SELiquidCompartment& vRightPulmonaryArteries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightPulmonaryArteries); vRightPulmonaryArteries.MapNode(RightPulmonaryArteries1); vRightPulmonaryArteries.MapNode(RightIntermediatePulmonaryArteries1); ///////////////////////////// // Left Pulmonary Arteries // - SELiquidCompartment& vLeftPulmonaryArteries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftPulmonaryArteries); + SELiquidCompartment& vLeftPulmonaryArteries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryArteries); vLeftPulmonaryArteries.MapNode(LeftPulmonaryArteries1); vLeftPulmonaryArteries.MapNode(LeftIntermediatePulmonaryArteries1); //////////////////////// // Pulmonary Arteries // - SELiquidCompartment& vPulmonaryArteries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::PulmonaryArteries); + SELiquidCompartment& vPulmonaryArteries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::PulmonaryArteries); vPulmonaryArteries.AddChild(vRightPulmonaryArteries); vPulmonaryArteries.AddChild(vLeftPulmonaryArteries); ///////////////////////////////// // Right Pulmonary Capillaries // - SELiquidCompartment& vRightPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightPulmonaryCapillaries); + SELiquidCompartment& vRightPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightPulmonaryCapillaries); vRightPulmonaryCapillaries.MapNode(RightPulmonaryCapillaries1); //////////////////////////////// // Left Pulmonary Capillaries // - SELiquidCompartment& vLeftPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftPulmonaryCapillaries); + SELiquidCompartment& vLeftPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryCapillaries); vLeftPulmonaryCapillaries.MapNode(LeftPulmonaryCapillaries1); /////////////////////////// // Pulmonary Capillaries // - SELiquidCompartment& vPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::PulmonaryCapillaries); + SELiquidCompartment& vPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::PulmonaryCapillaries); vPulmonaryCapillaries.AddChild(vRightPulmonaryCapillaries); vPulmonaryCapillaries.AddChild(vLeftPulmonaryCapillaries); /////////////////////////// // Right Pulmonary Veins // - SELiquidCompartment& vRightPulmonaryVeins = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightPulmonaryVeins); + SELiquidCompartment& vRightPulmonaryVeins = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightPulmonaryVeins); vRightPulmonaryVeins.MapNode(RightPulmonaryVeins1); ////////////////////////// // Left Pulmonary Veins // - SELiquidCompartment& vLeftPulmonaryVeins = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftPulmonaryVeins); + SELiquidCompartment& vLeftPulmonaryVeins = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryVeins); vLeftPulmonaryVeins.MapNode(LeftPulmonaryVeins1); ///////////////////// // Pulmonary Veins // - SELiquidCompartment& vPulmonaryVeins = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::PulmonaryVeins); + SELiquidCompartment& vPulmonaryVeins = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::PulmonaryVeins); vPulmonaryVeins.AddChild(vRightPulmonaryVeins); vPulmonaryVeins.AddChild(vLeftPulmonaryVeins); //////////////// // Left Heart // - SELiquidCompartment& vLeftHeart = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftHeart); + SELiquidCompartment& vLeftHeart = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftHeart); vLeftHeart.MapNode(LeftHeart1); vLeftHeart.MapNode(LeftHeart2); vLeftHeart.MapNode(LeftHeart3); /////////// // Aorta // - SELiquidCompartment& vAorta = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Aorta); + SELiquidCompartment& vAorta = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Aorta); vAorta.MapNode(Aorta1); vAorta.MapNode(Aorta2); vAorta.MapNode(Aorta3); vAorta.MapNode(Aorta4); - SELiquidCompartment& vArterialBuffer = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::ArterialBuffer); + SELiquidCompartment& vArterialBuffer = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::ArterialBuffer); vArterialBuffer.MapNode(Aorta5); /////////// // Abdominal Cavity // - SELiquidCompartment& vAbdominalCavity = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::AbdominalCavity); + SELiquidCompartment& vAbdominalCavity = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::AbdominalCavity); vAbdominalCavity.MapNode(AbdominalCavity); // Head // - SELiquidCompartment& vExtracranial = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Extracranial); + SELiquidCompartment& vExtracranial = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::Extracranial); vExtracranial.MapNode(Extracranial1); vExtracranial.MapNode(Extracranial2); vExtracranial.MapNode(Extracranial3); - SELiquidCompartment& vIntracranial = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Intracranial); + SELiquidCompartment& vIntracranial = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::Intracranial); vIntracranial.MapNode(Intracranial1); vIntracranial.MapNode(Intracranial2); vIntracranial.MapNode(Intracranial3); ///////////////////// // Large Intestine // - SELiquidCompartment& vLargeIntestine = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LargeIntestine); + SELiquidCompartment& vLargeIntestine = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LargeIntestine); vLargeIntestine.MapNode(LargeIntestine1); /////////// // Liver // - SELiquidCompartment& vLiver = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Liver); + SELiquidCompartment& vLiver = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Liver); vLiver.MapNode(Liver1); vLiver.MapNode(Liver2); vLiver.MapNode(PortalVein1); ////////////// // Left Arm // - SELiquidCompartment& vLeftArmArterioles = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmArterioles); + SELiquidCompartment& vLeftArmArterioles = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmArterioles); vLeftArmArterioles.MapNode(LeftArm1); - SELiquidCompartment& vLeftArmBone = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmBone); + SELiquidCompartment& vLeftArmBone = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmBone); vLeftArmBone.MapNode(LeftArmBone1); - SELiquidCompartment& vLeftArmFat = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmFat); + SELiquidCompartment& vLeftArmFat = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmFat); vLeftArmFat.MapNode(LeftArmFat1); - SELiquidCompartment& vLeftArmMicrovasculature = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmMicrovasculature); + SELiquidCompartment& vLeftArmMicrovasculature = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmMicrovasculature); vLeftArmMicrovasculature.MapNode(LeftArmMicrovasculature1); - SELiquidCompartment& vLeftArmMuscle = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmMuscle); + SELiquidCompartment& vLeftArmMuscle = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmMuscle); vLeftArmMuscle.MapNode(LeftArmMuscle1); - SELiquidCompartment& vLeftArmSkin = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmSkin); + SELiquidCompartment& vLeftArmSkin = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmSkin); vLeftArmSkin.MapNode(LeftArmSkin1); - SELiquidCompartment& vLeftArmVenules = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmVenules); + SELiquidCompartment& vLeftArmVenules = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmVenules); vLeftArmVenules.MapNode(LeftArm2); ///////////////// // Left Kidney // - SELiquidCompartment& vLeftKidney = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftKidney); + SELiquidCompartment& vLeftKidney = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftKidney); vLeftKidney.MapNode(LeftKidney1); vLeftKidney.MapNode(LeftKidney2); vLeftKidney.MapNode(LeftKidney3); ////////////// // Left Leg // - SELiquidCompartment& vLeftLegArterioles = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegArterioles); + SELiquidCompartment& vLeftLegArterioles = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegArterioles); vLeftLegArterioles.MapNode(LeftLeg1); - SELiquidCompartment& vLeftLegBone = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegBone); + SELiquidCompartment& vLeftLegBone = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegBone); vLeftLegBone.MapNode(LeftLegBone1); - SELiquidCompartment& vLeftLegFat = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegFat); + SELiquidCompartment& vLeftLegFat = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegFat); vLeftLegFat.MapNode(LeftLegFat1); - SELiquidCompartment& vLeftLegMicrovasculature = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegMicrovasculature); + SELiquidCompartment& vLeftLegMicrovasculature = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegMicrovasculature); vLeftLegMicrovasculature.MapNode(LeftLegMicrovasculature1); - SELiquidCompartment& vLeftLegMuscle = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegMuscle); + SELiquidCompartment& vLeftLegMuscle = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegMuscle); vLeftLegMuscle.MapNode(LeftLegMuscle1); - SELiquidCompartment& vLeftLegSkin = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegSkin); + SELiquidCompartment& vLeftLegSkin = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegSkin); vLeftLegSkin.MapNode(LeftLegSkin1); - SELiquidCompartment& vLeftLegVenules = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegVenules); + SELiquidCompartment& vLeftLegVenules = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegVenules); vLeftLegVenules.MapNode(LeftLeg2); //////////////// // Myocardium // - SELiquidCompartment& vMyocardium = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Myocardium); + SELiquidCompartment& vMyocardium = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Myocardium); vMyocardium.MapNode(Myocardium1); vMyocardium.MapNode(Myocardium2); vMyocardium.MapNode(Myocardium3); ///////////////// // Pericardium // - SELiquidCompartment& vPericardium = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Pericardium); + SELiquidCompartment& vPericardium = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Pericardium); vPericardium.MapNode(Pericardium); /////////////// // Right Arm // - SELiquidCompartment& vRightArmArterioles = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmArterioles); + SELiquidCompartment& vRightArmArterioles = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmArterioles); vRightArmArterioles.MapNode(RightArm1); - SELiquidCompartment& vRightArmBone = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmBone); + SELiquidCompartment& vRightArmBone = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmBone); vRightArmBone.MapNode(RightArmBone1); - SELiquidCompartment& vRightArmFat = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmFat); + SELiquidCompartment& vRightArmFat = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmFat); vRightArmFat.MapNode(RightArmFat1); - SELiquidCompartment& vRightArmMicrovasculature = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmMicrovasculature); + SELiquidCompartment& vRightArmMicrovasculature = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmMicrovasculature); vRightArmMicrovasculature.MapNode(RightArmMicrovasculature1); - SELiquidCompartment& vRightArmMuscle = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmMuscle); + SELiquidCompartment& vRightArmMuscle = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmMuscle); vRightArmMuscle.MapNode(RightArmMuscle1); - SELiquidCompartment& vRightArmSkin = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmSkin); + SELiquidCompartment& vRightArmSkin = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmSkin); vRightArmSkin.MapNode(RightArmSkin1); - SELiquidCompartment& vRightArmVenules = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmVenules); + SELiquidCompartment& vRightArmVenules = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmVenules); vRightArmVenules.MapNode(RightArm2); ////////////////// // Right Kidney // - SELiquidCompartment& vRightKidney = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightKidney); + SELiquidCompartment& vRightKidney = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightKidney); vRightKidney.MapNode(RightKidney1); vRightKidney.MapNode(RightKidney2); vRightKidney.MapNode(RightKidney3); /////////////// // Right Leg // - SELiquidCompartment& vRightLegArterioles = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegArterioles); + SELiquidCompartment& vRightLegArterioles = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegArterioles); vRightLegArterioles.MapNode(RightLeg1); - SELiquidCompartment& vRightLegBone = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegBone); + SELiquidCompartment& vRightLegBone = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegBone); vRightLegBone.MapNode(RightLegBone1); - SELiquidCompartment& vRightLegFat = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegFat); + SELiquidCompartment& vRightLegFat = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegFat); vRightLegFat.MapNode(RightLegFat1); - SELiquidCompartment& vRightLegMicrovasculature = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegMicrovasculature); + SELiquidCompartment& vRightLegMicrovasculature = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegMicrovasculature); vRightLegMicrovasculature.MapNode(RightLegMicrovasculature1); - SELiquidCompartment& vRightLegMuscle = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegMuscle); + SELiquidCompartment& vRightLegMuscle = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegMuscle); vRightLegMuscle.MapNode(RightLegMuscle1); - SELiquidCompartment& vRightLegSkin = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegSkin); + SELiquidCompartment& vRightLegSkin = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegSkin); vRightLegSkin.MapNode(RightLegSkin1); - SELiquidCompartment& vRightLegVenules = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegVenules); + SELiquidCompartment& vRightLegVenules = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegVenules); vRightLegVenules.MapNode(RightLeg2); ///////////////////// // Gut1 // - SELiquidCompartment& vGut1 = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Gut1); + SELiquidCompartment& vGut1 = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::Gut1); vGut1.MapNode(Gut1); ///////////////////// // Small Intestine // - SELiquidCompartment& vSmallIntestine = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::SmallIntestine); + SELiquidCompartment& vSmallIntestine = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::SmallIntestine); vSmallIntestine.MapNode(SmallIntestine1); //////////////// // Splanchnic // - SELiquidCompartment& vSplanchnic = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Splanchnic); + SELiquidCompartment& vSplanchnic = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Splanchnic); vSplanchnic.MapNode(Splanchnic1); //////////// // Spleen // - SELiquidCompartment& vSpleen = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Spleen); + SELiquidCompartment& vSpleen = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Spleen); vSpleen.MapNode(Spleen1); /////////// // Torso // - SELiquidCompartment& vTorsoArterioles = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoArterioles); + SELiquidCompartment& vTorsoArterioles = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoArterioles); vTorsoArterioles.MapNode(Torso1); - SELiquidCompartment& vTorsoBone = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoBone); + SELiquidCompartment& vTorsoBone = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoBone); vTorsoBone.MapNode(TorsoBone1); - SELiquidCompartment& vTorsoFat = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoFat); + SELiquidCompartment& vTorsoFat = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoFat); vTorsoFat.MapNode(TorsoFat1); - SELiquidCompartment& vTorsoMicrovasculature = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoMicrovasculature); + SELiquidCompartment& vTorsoMicrovasculature = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoMicrovasculature); vTorsoMicrovasculature.MapNode(TorsoMicrovasculature1); - SELiquidCompartment& vTorsoMuscle = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoMuscle); + SELiquidCompartment& vTorsoMuscle = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoMuscle); vTorsoMuscle.MapNode(TorsoMuscle1); - SELiquidCompartment& vTorsoSkin = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoSkin); + SELiquidCompartment& vTorsoSkin = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoSkin); vTorsoSkin.MapNode(TorsoSkin1); - SELiquidCompartment& vTorsoVenules = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoVenules); + SELiquidCompartment& vTorsoVenules = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoVenules); vTorsoVenules.MapNode(Torso2); ////////////// // VenaCava // - SELiquidCompartment& vVenaCava = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::VenaCava); + SELiquidCompartment& vVenaCava = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::VenaCava); vVenaCava.MapNode(VenaCava1); - SELiquidCompartment& vVenousBuffer = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::VenousBuffer); + SELiquidCompartment& vVenousBuffer = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::VenousBuffer); vVenousBuffer.MapNode(VenaCava2); //////////// // Ground // - SELiquidCompartment& vGround = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Ground); + SELiquidCompartment& vGround = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Ground); vGround.MapNode(Ground); ////////////////////////// // Set up our hierarchy // ////////////////////////// - SELiquidCompartment& vHead = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Head); + SELiquidCompartment& vHead = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::Head); vHead.AddChild(vExtracranial); vHead.AddChild(vIntracranial); - SELiquidCompartment& vKidneys = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Kidneys); + SELiquidCompartment& vKidneys = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Kidneys); vKidneys.AddChild(vLeftKidney); vKidneys.AddChild(vRightKidney); - SELiquidCompartment& vHeart = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Heart); + SELiquidCompartment& vHeart = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Heart); vHeart.AddChild(vMyocardium); vHeart.AddChild(vLeftHeart); vHeart.AddChild(vRightHeart); vHeart.AddChild(vPericardium); - SELiquidCompartment& vLeftLung = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLung); + SELiquidCompartment& vLeftLung = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftLung); vLeftLung.AddChild(vLeftPulmonaryArteries); vLeftLung.AddChild(vLeftPulmonaryCapillaries); vLeftLung.AddChild(vLeftPulmonaryVeins); - SELiquidCompartment& vRightLung = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightLung); + SELiquidCompartment& vRightLung = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightLung); vRightLung.AddChild(vRightPulmonaryArteries); vRightLung.AddChild(vRightPulmonaryCapillaries); vRightLung.AddChild(vRightPulmonaryVeins); - SELiquidCompartment& vLungs = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Lungs); + SELiquidCompartment& vLungs = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Lungs); vLungs.AddChild(vLeftLung); vLungs.AddChild(vRightLung); - SELiquidCompartment& vLeftArm = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArm); + SELiquidCompartment& vLeftArm = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftArm); vLeftArm.AddChild(vLeftArmArterioles); vLeftArm.AddChild(vLeftArmBone); vLeftArm.AddChild(vLeftArmFat); @@ -1368,7 +1368,7 @@ namespace pulse vLeftArm.AddChild(vLeftArmMuscle); vLeftArm.AddChild(vLeftArmSkin); vLeftArm.AddChild(vLeftArmVenules); - SELiquidCompartment& vLeftLeg = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLeg); + SELiquidCompartment& vLeftLeg = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftLeg); vLeftLeg.AddChild(vLeftLegArterioles); vLeftLeg.AddChild(vLeftLegBone); vLeftLeg.AddChild(vLeftLegFat); @@ -1376,7 +1376,7 @@ namespace pulse vLeftLeg.AddChild(vLeftLegMuscle); vLeftLeg.AddChild(vLeftLegSkin); vLeftLeg.AddChild(vLeftLegVenules); - SELiquidCompartment& vRightArm = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightArm); + SELiquidCompartment& vRightArm = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightArm); vRightArm.AddChild(vRightArmArterioles); vRightArm.AddChild(vRightArmBone); vRightArm.AddChild(vRightArmFat); @@ -1384,7 +1384,7 @@ namespace pulse vRightArm.AddChild(vRightArmMuscle); vRightArm.AddChild(vRightArmSkin); vRightArm.AddChild(vRightArmVenules); - SELiquidCompartment& vRightLeg = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightLeg); + SELiquidCompartment& vRightLeg = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightLeg); vRightLeg.AddChild(vRightLegArterioles); vRightLeg.AddChild(vRightLegBone); vRightLeg.AddChild(vRightLegFat); @@ -1392,7 +1392,7 @@ namespace pulse vRightLeg.AddChild(vRightLegMuscle); vRightLeg.AddChild(vRightLegSkin); vRightLeg.AddChild(vRightLegVenules); - SELiquidCompartment& vTorso = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Torso); + SELiquidCompartment& vTorso = m_Compartments->CreateLiquidCompartment(pulse::ComputationalLifeVascularCompartment::Torso); vTorso.AddChild(vTorsoArterioles); vTorso.AddChild(vTorsoBone); vTorso.AddChild(vTorsoFat); @@ -1400,12 +1400,12 @@ namespace pulse vTorso.AddChild(vTorsoMuscle); vTorso.AddChild(vTorsoSkin); vTorso.AddChild(vTorsoVenules); - SELiquidCompartment& vGut = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Gut); + SELiquidCompartment& vGut = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Gut); vGut.AddChild(vSplanchnic); vGut.AddChild(vSmallIntestine); vGut.AddChild(vLargeIntestine); vGut.AddChild(vGut1); - SELiquidCompartment& vAbdomen = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Abdomen); + SELiquidCompartment& vAbdomen = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Abdomen); vAbdomen.AddChild(vSplanchnic); vAbdomen.AddChild(vSmallIntestine); vAbdomen.AddChild(vLargeIntestine); @@ -1414,25 +1414,25 @@ namespace pulse vAbdomen.AddChild(vSpleen); vAbdomen.AddChild(vLiver); vAbdomen.AddChild(vAbdominalCavity); - SELiquidCompartment& vBone = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Bone); + SELiquidCompartment& vBone = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Bone); vBone.AddChild(vLeftArmBone); vBone.AddChild(vLeftLegBone); vBone.AddChild(vRightArmBone); vBone.AddChild(vRightLegBone); vBone.AddChild(vTorsoBone); - SELiquidCompartment& vFat = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Fat); + SELiquidCompartment& vFat = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Fat); vFat.AddChild(vLeftArmFat); vFat.AddChild(vLeftLegFat); vFat.AddChild(vRightArmFat); vFat.AddChild(vRightLegFat); vFat.AddChild(vTorsoFat); - SELiquidCompartment& vMuscle = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Muscle); + SELiquidCompartment& vMuscle = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Muscle); vMuscle.AddChild(vLeftArmMuscle); vMuscle.AddChild(vLeftLegMuscle); vMuscle.AddChild(vRightArmMuscle); vMuscle.AddChild(vRightLegMuscle); vMuscle.AddChild(vTorsoMuscle); - SELiquidCompartment& vSkin = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::Skin); + SELiquidCompartment& vSkin = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Skin); vSkin.AddChild(vLeftArmSkin); vSkin.AddChild(vLeftLegSkin); vSkin.AddChild(vRightArmSkin); @@ -1445,74 +1445,74 @@ namespace pulse ///////////////////// // Heart and Lungs // - SELiquidCompartmentLink& vVenousBufferToVenaCava = m_Compartments->CreateLiquidLink(vVenousBuffer, vVenaCava, pulse::ExpandedVascularLink::VenousBufferToVenaCava); + SELiquidCompartmentLink& vVenousBufferToVenaCava = m_Compartments->CreateLiquidLink(vVenousBuffer, vVenaCava, pulse::ComputationalLifeVascularLink::VenousBufferToVenaCava); vVenousBufferToVenaCava.MapPath(VenaCava2ToVenaCava1); - SELiquidCompartmentLink& vVenaCavaToRightHeart = m_Compartments->CreateLiquidLink(vVenaCava, vRightHeart, pulse::ExpandedVascularLink::VenaCavaToRightHeart); + SELiquidCompartmentLink& vVenaCavaToRightHeart = m_Compartments->CreateLiquidLink(vVenaCava, vRightHeart, pulse::VascularLink::VenaCavaToRightHeart); vVenaCavaToRightHeart.MapPath(VenaCava1ToRightHeart2); - SELiquidCompartmentLink& vRightHeartToLeftPulmonaryArteries = m_Compartments->CreateLiquidLink(vRightHeart, vLeftPulmonaryArteries, pulse::ExpandedVascularLink::RightHeartToLeftPulmonaryArteries); + SELiquidCompartmentLink& vRightHeartToLeftPulmonaryArteries = m_Compartments->CreateLiquidLink(vRightHeart, vLeftPulmonaryArteries, pulse::VascularLink::RightHeartToLeftPulmonaryArteries); vRightHeartToLeftPulmonaryArteries.MapPath(MainPulmonaryArteries1ToLeftIntermediatePulmonaryArteries1); - SELiquidCompartmentLink& vLeftPulmonaryArteriesToCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryCapillaries, pulse::ExpandedVascularLink::LeftPulmonaryArteriesToCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToCapillaries); vLeftPulmonaryArteriesToCapillaries.MapPath(LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1); - SELiquidCompartmentLink& vLeftPulmonaryArteriesToVeins = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedVascularLink::LeftPulmonaryArteriesToVeins); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToVeins = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftPulmonaryArteriesToVeins); vLeftPulmonaryArteriesToVeins.MapPath(LeftPulmonaryArteries1ToLeftPulmonaryVeins1); - SELiquidCompartmentLink& vLeftPulmonaryCapillariesToVeins = m_Compartments->CreateLiquidLink(vLeftPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::ExpandedVascularLink::LeftPulmonaryCapillariesToVeins); + SELiquidCompartmentLink& vLeftPulmonaryCapillariesToVeins = m_Compartments->CreateLiquidLink(vLeftPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftPulmonaryCapillariesToVeins); vLeftPulmonaryCapillariesToVeins.MapPath(LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1); - SELiquidCompartmentLink& vLeftPulmonaryVeinsToLeftHeart = m_Compartments->CreateLiquidLink(vLeftPulmonaryVeins, vLeftHeart, pulse::ExpandedVascularLink::LeftPulmonaryVeinsToLeftHeart); + SELiquidCompartmentLink& vLeftPulmonaryVeinsToLeftHeart = m_Compartments->CreateLiquidLink(vLeftPulmonaryVeins, vLeftHeart, pulse::VascularLink::LeftPulmonaryVeinsToLeftHeart); vLeftPulmonaryVeinsToLeftHeart.MapPath(LeftIntermediatePulmonaryVeins1ToLeftHeart2); - SELiquidCompartmentLink& vRightHeartToRightPulmonaryArteries = m_Compartments->CreateLiquidLink(vRightHeart, vRightPulmonaryArteries, pulse::ExpandedVascularLink::RightHeartToRightPulmonaryArteries); + SELiquidCompartmentLink& vRightHeartToRightPulmonaryArteries = m_Compartments->CreateLiquidLink(vRightHeart, vRightPulmonaryArteries, pulse::VascularLink::RightHeartToRightPulmonaryArteries); vRightHeartToRightPulmonaryArteries.MapPath(MainPulmonaryArteries1ToRightIntermediatePulmonaryArteries1); - SELiquidCompartmentLink& vRightPulmonaryArteriesToCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightPulmonaryCapillaries, pulse::ExpandedVascularLink::RightPulmonaryArteriesToCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToCapillaries); vRightPulmonaryArteriesToCapillaries.MapPath(RightPulmonaryArteries1ToRightPulmonaryCapillaries1); - SELiquidCompartmentLink& vRightPulmonaryArteriesToVeins = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightPulmonaryVeins, pulse::ExpandedVascularLink::RightPulmonaryArteriesToVeins); + SELiquidCompartmentLink& vRightPulmonaryArteriesToVeins = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightPulmonaryVeins, pulse::VascularLink::RightPulmonaryArteriesToVeins); vRightPulmonaryArteriesToVeins.MapPath(RightPulmonaryArteries1ToRightPulmonaryVeins1); - SELiquidCompartmentLink& vRightPulmonaryCapillariesToVeins = m_Compartments->CreateLiquidLink(vRightPulmonaryCapillaries, vRightPulmonaryVeins, pulse::ExpandedVascularLink::RightPulmonaryCapillariesToVeins); + SELiquidCompartmentLink& vRightPulmonaryCapillariesToVeins = m_Compartments->CreateLiquidLink(vRightPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightPulmonaryCapillariesToVeins); vRightPulmonaryCapillariesToVeins.MapPath(RightPulmonaryCapillaries1ToRightPulmonaryVeins1); - SELiquidCompartmentLink& vRightPulmonaryVeinsToLeftHeart = m_Compartments->CreateLiquidLink(vRightPulmonaryVeins, vLeftHeart, pulse::ExpandedVascularLink::RightPulmonaryVeinsToLeftHeart); + SELiquidCompartmentLink& vRightPulmonaryVeinsToLeftHeart = m_Compartments->CreateLiquidLink(vRightPulmonaryVeins, vLeftHeart, pulse::VascularLink::RightPulmonaryVeinsToLeftHeart); vRightPulmonaryVeinsToLeftHeart.MapPath(RightIntermediatePulmonaryVeins1ToLeftHeart2); - SELiquidCompartmentLink& vLeftHeartToAorta = m_Compartments->CreateLiquidLink(vLeftHeart, vAorta, pulse::ExpandedVascularLink::LeftHeartToAorta); + SELiquidCompartmentLink& vLeftHeartToAorta = m_Compartments->CreateLiquidLink(vLeftHeart, vAorta, pulse::VascularLink::LeftHeartToAorta); vLeftHeartToAorta.MapPath(LeftHeart1ToAorta2); - SELiquidCompartmentLink& vAortaToArterialBuffer = m_Compartments->CreateLiquidLink(vAorta, vArterialBuffer, pulse::ExpandedVascularLink::AortaToArterialBuffer); + SELiquidCompartmentLink& vAortaToArterialBuffer = m_Compartments->CreateLiquidLink(vAorta, vArterialBuffer, pulse::ComputationalLifeVascularLink::AortaToArterialBuffer); vAortaToArterialBuffer.MapPath(Aorta1ToAorta5); /////////// // Head // - SELiquidCompartmentLink& vAortaToExtracranial = m_Compartments->CreateLiquidLink(vArterialBuffer, vExtracranial, pulse::ExpandedVascularLink::AortaToExtracranial); + SELiquidCompartmentLink& vAortaToExtracranial = m_Compartments->CreateLiquidLink(vArterialBuffer, vExtracranial, pulse::ComputationalLifeVascularLink::AortaToExtracranial); vAortaToExtracranial.MapPath(Aorta5ToExtracranial1); - SELiquidCompartmentLink& vExtracranialToVenaCava = m_Compartments->CreateLiquidLink(vExtracranial, vVenousBuffer, pulse::ExpandedVascularLink::ExtracranialToVenaCava); + SELiquidCompartmentLink& vExtracranialToVenaCava = m_Compartments->CreateLiquidLink(vExtracranial, vVenousBuffer, pulse::ComputationalLifeVascularLink::ExtracranialToVenaCava); vExtracranialToVenaCava.MapPath(Extracranial3ToVenaCava2); - SELiquidCompartmentLink& vAortaToIntracranial = m_Compartments->CreateLiquidLink(vArterialBuffer, vIntracranial, pulse::ExpandedVascularLink::AortaToIntracranial); + SELiquidCompartmentLink& vAortaToIntracranial = m_Compartments->CreateLiquidLink(vArterialBuffer, vIntracranial, pulse::ComputationalLifeVascularLink::AortaToIntracranial); vAortaToIntracranial.MapPath(Aorta5ToIntracranial1); - SELiquidCompartmentLink& vIntracranialToVenaCava = m_Compartments->CreateLiquidLink(vIntracranial, vVenousBuffer, pulse::ExpandedVascularLink::IntracranialToVenaCava); + SELiquidCompartmentLink& vIntracranialToVenaCava = m_Compartments->CreateLiquidLink(vIntracranial, vVenousBuffer, pulse::ComputationalLifeVascularLink::IntracranialToVenaCava); vIntracranialToVenaCava.MapPath(Intracranial3ToVenaCava2); ///////////////////// // Gut // - SELiquidCompartmentLink& vAortaToGut = m_Compartments->CreateLiquidLink(vArterialBuffer, vGut1, pulse::ExpandedVascularLink::AortaToGut); + SELiquidCompartmentLink& vAortaToGut = m_Compartments->CreateLiquidLink(vArterialBuffer, vGut1, pulse::ComputationalLifeVascularLink::AortaToGut); vAortaToGut.MapPath(Aorta5ToGut1); ///////////////////// // Large Intestine // - SELiquidCompartmentLink& vAortaToLargeIntestine = m_Compartments->CreateLiquidLink(vGut1, vLargeIntestine, pulse::ExpandedVascularLink::AortaToLargeIntestine); + SELiquidCompartmentLink& vAortaToLargeIntestine = m_Compartments->CreateLiquidLink(vGut1, vLargeIntestine, pulse::VascularLink::AortaToLargeIntestine); vAortaToLargeIntestine.MapPath(Gut1ToLargeIntestine1); - SELiquidCompartmentLink& vLargeIntestineToLiver = m_Compartments->CreateLiquidLink(vLargeIntestine, vLiver, pulse::ExpandedVascularLink::LargeIntestineToLiver); + SELiquidCompartmentLink& vLargeIntestineToLiver = m_Compartments->CreateLiquidLink(vLargeIntestine, vLiver, pulse::VascularLink::LargeIntestineToLiver); vLargeIntestineToLiver.MapPath(LargeIntestine1ToPortalVein1); /////////// // Liver // - SELiquidCompartmentLink& vAortaToLiver = m_Compartments->CreateLiquidLink(vGut1, vLiver, pulse::ExpandedVascularLink::AortaToLiver); + SELiquidCompartmentLink& vAortaToLiver = m_Compartments->CreateLiquidLink(vGut1, vLiver, pulse::VascularLink::AortaToLiver); vAortaToLiver.MapPath(Gut1ToLiver1); - SELiquidCompartmentLink& vLiverToVenaCava = m_Compartments->CreateLiquidLink(vLiver, vVenousBuffer, pulse::ExpandedVascularLink::LiverToVenaCava); + SELiquidCompartmentLink& vLiverToVenaCava = m_Compartments->CreateLiquidLink(vLiver, vVenousBuffer, pulse::VascularLink::LiverToVenaCava); vLiverToVenaCava.MapPath(Liver2ToVenaCava2); ////////////// // Left Arm // - SELiquidCompartmentLink& vAortaToLeftArmArterioles = m_Compartments->CreateLiquidLink(vArterialBuffer, vLeftArmArterioles, pulse::ExpandedVascularLink::AortaToLeftArmArterioles); - SELiquidCompartmentLink& vLeftArmArteriolesToLeftArmBone = m_Compartments->CreateLiquidLink(vLeftArmArterioles, vLeftArmBone, pulse::ExpandedVascularLink::LeftArmArteriolesToLeftArmBone); - SELiquidCompartmentLink& vLeftArmArteriolesToLeftArmFat = m_Compartments->CreateLiquidLink(vLeftArmArterioles, vLeftArmFat, pulse::ExpandedVascularLink::LeftArmArteriolesToLeftArmFat); - SELiquidCompartmentLink& vLeftArmArteriolesToLeftArmMicrovasculature = m_Compartments->CreateLiquidLink(vLeftArmArterioles, vLeftArmMicrovasculature, pulse::ExpandedVascularLink::LeftArmArteriolesToLeftArmMicrovasculature); - SELiquidCompartmentLink& vLeftArmArteriolesToLeftArmMuscle = m_Compartments->CreateLiquidLink(vLeftArmArterioles, vLeftArmMuscle, pulse::ExpandedVascularLink::LeftArmArteriolesToLeftArmMuscle); - SELiquidCompartmentLink& vLeftArmArteriolesToLeftArmSkin = m_Compartments->CreateLiquidLink(vLeftArmArterioles, vLeftArmSkin, pulse::ExpandedVascularLink::LeftArmArteriolesToLeftArmSkin); - SELiquidCompartmentLink& vLeftArmBoneToLeftArmVenules = m_Compartments->CreateLiquidLink(vLeftArmBone, vLeftArmVenules, pulse::ExpandedVascularLink::LeftArmBoneToLeftArmVenules); - SELiquidCompartmentLink& vLeftArmFatToLeftArmVenules = m_Compartments->CreateLiquidLink(vLeftArmFat, vLeftArmVenules, pulse::ExpandedVascularLink::LeftArmFatToLeftArmVenules); - SELiquidCompartmentLink& vLeftArmMicrovasculatureToLeftArmVenules = m_Compartments->CreateLiquidLink(vLeftArmMicrovasculature, vLeftArmVenules, pulse::ExpandedVascularLink::LeftArmMicrovasculatureToLeftArmVenules); - SELiquidCompartmentLink& vLeftArmMuscleToLeftArmVenules = m_Compartments->CreateLiquidLink(vLeftArmMuscle, vLeftArmVenules, pulse::ExpandedVascularLink::LeftArmMuscleToLeftArmVenules); - SELiquidCompartmentLink& vLeftArmSkinToLeftArmVenules = m_Compartments->CreateLiquidLink(vLeftArmSkin, vLeftArmVenules, pulse::ExpandedVascularLink::LeftArmSkinToLeftArmVenules); - SELiquidCompartmentLink& vLeftArmVenulesToVenaCava = m_Compartments->CreateLiquidLink(vLeftArmVenules, vVenousBuffer, pulse::ExpandedVascularLink::LeftArmVenulesToVenaCava); + SELiquidCompartmentLink& vAortaToLeftArmArterioles = m_Compartments->CreateLiquidLink(vArterialBuffer, vLeftArmArterioles, pulse::ComputationalLifeVascularLink::AortaToLeftArmArterioles); + SELiquidCompartmentLink& vLeftArmArteriolesToLeftArmBone = m_Compartments->CreateLiquidLink(vLeftArmArterioles, vLeftArmBone, pulse::ComputationalLifeVascularLink::LeftArmArteriolesToLeftArmBone); + SELiquidCompartmentLink& vLeftArmArteriolesToLeftArmFat = m_Compartments->CreateLiquidLink(vLeftArmArterioles, vLeftArmFat, pulse::ComputationalLifeVascularLink::LeftArmArteriolesToLeftArmFat); + SELiquidCompartmentLink& vLeftArmArteriolesToLeftArmMicrovasculature = m_Compartments->CreateLiquidLink(vLeftArmArterioles, vLeftArmMicrovasculature, pulse::ComputationalLifeVascularLink::LeftArmArteriolesToLeftArmMicrovasculature); + SELiquidCompartmentLink& vLeftArmArteriolesToLeftArmMuscle = m_Compartments->CreateLiquidLink(vLeftArmArterioles, vLeftArmMuscle, pulse::ComputationalLifeVascularLink::LeftArmArteriolesToLeftArmMuscle); + SELiquidCompartmentLink& vLeftArmArteriolesToLeftArmSkin = m_Compartments->CreateLiquidLink(vLeftArmArterioles, vLeftArmSkin, pulse::ComputationalLifeVascularLink::LeftArmArteriolesToLeftArmSkin); + SELiquidCompartmentLink& vLeftArmBoneToLeftArmVenules = m_Compartments->CreateLiquidLink(vLeftArmBone, vLeftArmVenules, pulse::ComputationalLifeVascularLink::LeftArmBoneToLeftArmVenules); + SELiquidCompartmentLink& vLeftArmFatToLeftArmVenules = m_Compartments->CreateLiquidLink(vLeftArmFat, vLeftArmVenules, pulse::ComputationalLifeVascularLink::LeftArmFatToLeftArmVenules); + SELiquidCompartmentLink& vLeftArmMicrovasculatureToLeftArmVenules = m_Compartments->CreateLiquidLink(vLeftArmMicrovasculature, vLeftArmVenules, pulse::ComputationalLifeVascularLink::LeftArmMicrovasculatureToLeftArmVenules); + SELiquidCompartmentLink& vLeftArmMuscleToLeftArmVenules = m_Compartments->CreateLiquidLink(vLeftArmMuscle, vLeftArmVenules, pulse::ComputationalLifeVascularLink::LeftArmMuscleToLeftArmVenules); + SELiquidCompartmentLink& vLeftArmSkinToLeftArmVenules = m_Compartments->CreateLiquidLink(vLeftArmSkin, vLeftArmVenules, pulse::ComputationalLifeVascularLink::LeftArmSkinToLeftArmVenules); + SELiquidCompartmentLink& vLeftArmVenulesToVenaCava = m_Compartments->CreateLiquidLink(vLeftArmVenules, vVenousBuffer, pulse::ComputationalLifeVascularLink::LeftArmVenulesToVenaCava); vAortaToLeftArmArterioles.MapPath(Aorta5ToLeftArm1); vLeftArmArteriolesToLeftArmBone.MapPath(LeftArm1ToLeftArmBone1); vLeftArmArteriolesToLeftArmFat.MapPath(LeftArm1ToLeftArmFat1); @@ -1528,24 +1528,24 @@ namespace pulse ///////////////// // Left Kidney // - SELiquidCompartmentLink& vAortaToLeftKidney = m_Compartments->CreateLiquidLink(vArterialBuffer, vLeftKidney, pulse::ExpandedVascularLink::AortaToLeftKidney); + SELiquidCompartmentLink& vAortaToLeftKidney = m_Compartments->CreateLiquidLink(vArterialBuffer, vLeftKidney, pulse::VascularLink::AortaToLeftKidney); vAortaToLeftKidney.MapPath(Aorta5ToLeftKidney1); - SELiquidCompartmentLink& vLeftKidneyToVenaCava = m_Compartments->CreateLiquidLink(vLeftKidney, vVenousBuffer, pulse::ExpandedVascularLink::LeftKidneyToVenaCava); + SELiquidCompartmentLink& vLeftKidneyToVenaCava = m_Compartments->CreateLiquidLink(vLeftKidney, vVenousBuffer, pulse::VascularLink::LeftKidneyToVenaCava); vLeftKidneyToVenaCava.MapPath(LeftKidney3ToVenaCava2); ////////////// // Left Leg // - SELiquidCompartmentLink& vAortaToLeftLegArterioles = m_Compartments->CreateLiquidLink(vArterialBuffer, vLeftLegArterioles, pulse::ExpandedVascularLink::AortaToLeftLegArterioles); - SELiquidCompartmentLink& vLeftLegArteriolesToLeftLegBone = m_Compartments->CreateLiquidLink(vLeftLegArterioles, vLeftLegBone, pulse::ExpandedVascularLink::LeftLegArteriolesToLeftLegBone); - SELiquidCompartmentLink& vLeftLegArteriolesToLeftLegFat = m_Compartments->CreateLiquidLink(vLeftLegArterioles, vLeftLegFat, pulse::ExpandedVascularLink::LeftLegArteriolesToLeftLegFat); - SELiquidCompartmentLink& vLeftLegArteriolesToLeftLegMicrovasculature = m_Compartments->CreateLiquidLink(vLeftLegArterioles, vLeftLegMicrovasculature, pulse::ExpandedVascularLink::LeftLegArteriolesToLeftLegMicrovasculature); - SELiquidCompartmentLink& vLeftLegArteriolesToLeftLegMuscle = m_Compartments->CreateLiquidLink(vLeftLegArterioles, vLeftLegMuscle, pulse::ExpandedVascularLink::LeftLegArteriolesToLeftLegMuscle); - SELiquidCompartmentLink& vLeftLegArteriolesToLeftLegSkin = m_Compartments->CreateLiquidLink(vLeftLegArterioles, vLeftLegSkin, pulse::ExpandedVascularLink::LeftLegArteriolesToLeftLegSkin); - SELiquidCompartmentLink& vLeftLegBoneToLeftLegVenules = m_Compartments->CreateLiquidLink(vLeftLegBone, vLeftLegVenules, pulse::ExpandedVascularLink::LeftLegBoneToLeftLegVenules); - SELiquidCompartmentLink& vLeftLegFatToLeftLegVenules = m_Compartments->CreateLiquidLink(vLeftLegFat, vLeftLegVenules, pulse::ExpandedVascularLink::LeftLegFatToLeftLegVenules); - SELiquidCompartmentLink& vLeftLegMicrovasculatureToLeftLegVenules = m_Compartments->CreateLiquidLink(vLeftLegMicrovasculature, vLeftLegVenules, pulse::ExpandedVascularLink::LeftLegMicrovasculatureToLeftLegVenules); - SELiquidCompartmentLink& vLeftLegMuscleToLeftLegVenules = m_Compartments->CreateLiquidLink(vLeftLegMuscle, vLeftLegVenules, pulse::ExpandedVascularLink::LeftLegMuscleToLeftLegVenules); - SELiquidCompartmentLink& vLeftLegSkinToLeftLegVenules = m_Compartments->CreateLiquidLink(vLeftLegSkin, vLeftLegVenules, pulse::ExpandedVascularLink::LeftLegSkinToLeftLegVenules); - SELiquidCompartmentLink& vLeftLegVenulesToVenaCava = m_Compartments->CreateLiquidLink(vLeftLegVenules, vVenousBuffer, pulse::ExpandedVascularLink::LeftLegVenulesToVenaCava); + SELiquidCompartmentLink& vAortaToLeftLegArterioles = m_Compartments->CreateLiquidLink(vArterialBuffer, vLeftLegArterioles, pulse::ComputationalLifeVascularLink::AortaToLeftLegArterioles); + SELiquidCompartmentLink& vLeftLegArteriolesToLeftLegBone = m_Compartments->CreateLiquidLink(vLeftLegArterioles, vLeftLegBone, pulse::ComputationalLifeVascularLink::LeftLegArteriolesToLeftLegBone); + SELiquidCompartmentLink& vLeftLegArteriolesToLeftLegFat = m_Compartments->CreateLiquidLink(vLeftLegArterioles, vLeftLegFat, pulse::ComputationalLifeVascularLink::LeftLegArteriolesToLeftLegFat); + SELiquidCompartmentLink& vLeftLegArteriolesToLeftLegMicrovasculature = m_Compartments->CreateLiquidLink(vLeftLegArterioles, vLeftLegMicrovasculature, pulse::ComputationalLifeVascularLink::LeftLegArteriolesToLeftLegMicrovasculature); + SELiquidCompartmentLink& vLeftLegArteriolesToLeftLegMuscle = m_Compartments->CreateLiquidLink(vLeftLegArterioles, vLeftLegMuscle, pulse::ComputationalLifeVascularLink::LeftLegArteriolesToLeftLegMuscle); + SELiquidCompartmentLink& vLeftLegArteriolesToLeftLegSkin = m_Compartments->CreateLiquidLink(vLeftLegArterioles, vLeftLegSkin, pulse::ComputationalLifeVascularLink::LeftLegArteriolesToLeftLegSkin); + SELiquidCompartmentLink& vLeftLegBoneToLeftLegVenules = m_Compartments->CreateLiquidLink(vLeftLegBone, vLeftLegVenules, pulse::ComputationalLifeVascularLink::LeftLegBoneToLeftLegVenules); + SELiquidCompartmentLink& vLeftLegFatToLeftLegVenules = m_Compartments->CreateLiquidLink(vLeftLegFat, vLeftLegVenules, pulse::ComputationalLifeVascularLink::LeftLegFatToLeftLegVenules); + SELiquidCompartmentLink& vLeftLegMicrovasculatureToLeftLegVenules = m_Compartments->CreateLiquidLink(vLeftLegMicrovasculature, vLeftLegVenules, pulse::ComputationalLifeVascularLink::LeftLegMicrovasculatureToLeftLegVenules); + SELiquidCompartmentLink& vLeftLegMuscleToLeftLegVenules = m_Compartments->CreateLiquidLink(vLeftLegMuscle, vLeftLegVenules, pulse::ComputationalLifeVascularLink::LeftLegMuscleToLeftLegVenules); + SELiquidCompartmentLink& vLeftLegSkinToLeftLegVenules = m_Compartments->CreateLiquidLink(vLeftLegSkin, vLeftLegVenules, pulse::ComputationalLifeVascularLink::LeftLegSkinToLeftLegVenules); + SELiquidCompartmentLink& vLeftLegVenulesToVenaCava = m_Compartments->CreateLiquidLink(vLeftLegVenules, vVenousBuffer, pulse::ComputationalLifeVascularLink::LeftLegVenulesToVenaCava); vAortaToLeftLegArterioles.MapPath(Aorta5ToLeftLeg1); vLeftLegArteriolesToLeftLegBone.MapPath(LeftLeg1ToLeftLegBone1); vLeftLegArteriolesToLeftLegFat.MapPath(LeftLeg1ToLeftLegFat1); @@ -1561,24 +1561,24 @@ namespace pulse //////////////// // Myocardium // - SELiquidCompartmentLink& vAortaToMyocardium = m_Compartments->CreateLiquidLink(vArterialBuffer, vMyocardium, pulse::ExpandedVascularLink::AortaToMyocardium); + SELiquidCompartmentLink& vAortaToMyocardium = m_Compartments->CreateLiquidLink(vArterialBuffer, vMyocardium, pulse::VascularLink::AortaToMyocardium); vAortaToMyocardium.MapPath(Aorta5ToMyocardium1); - SELiquidCompartmentLink& vMyocardiumToVenaCava = m_Compartments->CreateLiquidLink(vMyocardium, vVenousBuffer, pulse::ExpandedVascularLink::MyocardiumToVenaCava); + SELiquidCompartmentLink& vMyocardiumToVenaCava = m_Compartments->CreateLiquidLink(vMyocardium, vVenousBuffer, pulse::VascularLink::MyocardiumToVenaCava); vMyocardiumToVenaCava.MapPath(Myocardium3ToVenaCava2); /////////////// // Right Arm // - SELiquidCompartmentLink& vAortaToRightArmArterioles = m_Compartments->CreateLiquidLink(vArterialBuffer, vRightArmArterioles, pulse::ExpandedVascularLink::AortaToRightArmArterioles); - SELiquidCompartmentLink& vRightArmArteriolesToRightArmBone = m_Compartments->CreateLiquidLink(vRightArmArterioles, vRightArmBone, pulse::ExpandedVascularLink::RightArmArteriolesToRightArmBone); - SELiquidCompartmentLink& vRightArmArteriolesToRightArmFat = m_Compartments->CreateLiquidLink(vRightArmArterioles, vRightArmFat, pulse::ExpandedVascularLink::RightArmArteriolesToRightArmFat); - SELiquidCompartmentLink& vRightArmArteriolesToRightArmMicrovasculature = m_Compartments->CreateLiquidLink(vRightArmArterioles, vRightArmMicrovasculature, pulse::ExpandedVascularLink::RightArmArteriolesToRightArmMicrovasculature); - SELiquidCompartmentLink& vRightArmArteriolesToRightArmMuscle = m_Compartments->CreateLiquidLink(vRightArmArterioles, vRightArmMuscle, pulse::ExpandedVascularLink::RightArmArteriolesToRightArmMuscle); - SELiquidCompartmentLink& vRightArmArteriolesToRightArmSkin = m_Compartments->CreateLiquidLink(vRightArmArterioles, vRightArmSkin, pulse::ExpandedVascularLink::RightArmArteriolesToRightArmSkin); - SELiquidCompartmentLink& vRightArmBoneToRightArmVenules = m_Compartments->CreateLiquidLink(vRightArmBone, vRightArmVenules, pulse::ExpandedVascularLink::RightArmBoneToRightArmVenules); - SELiquidCompartmentLink& vRightArmFatToRightArmVenules = m_Compartments->CreateLiquidLink(vRightArmFat, vRightArmVenules, pulse::ExpandedVascularLink::RightArmFatToRightArmVenules); - SELiquidCompartmentLink& vRightArmMicrovasculatureToRightArmVenules = m_Compartments->CreateLiquidLink(vRightArmMicrovasculature, vRightArmVenules, pulse::ExpandedVascularLink::RightArmMicrovasculatureToRightArmVenules); - SELiquidCompartmentLink& vRightArmMuscleToRightArmVenules = m_Compartments->CreateLiquidLink(vRightArmMuscle, vRightArmVenules, pulse::ExpandedVascularLink::RightArmMuscleToRightArmVenules); - SELiquidCompartmentLink& vRightArmSkinToRightArmVenules = m_Compartments->CreateLiquidLink(vRightArmSkin, vRightArmVenules, pulse::ExpandedVascularLink::RightArmSkinToRightArmVenules); - SELiquidCompartmentLink& vRightArmVenulesToVenaCava = m_Compartments->CreateLiquidLink(vRightArmVenules, vVenousBuffer, pulse::ExpandedVascularLink::RightArmVenulesToVenaCava); + SELiquidCompartmentLink& vAortaToRightArmArterioles = m_Compartments->CreateLiquidLink(vArterialBuffer, vRightArmArterioles, pulse::ComputationalLifeVascularLink::AortaToRightArmArterioles); + SELiquidCompartmentLink& vRightArmArteriolesToRightArmBone = m_Compartments->CreateLiquidLink(vRightArmArterioles, vRightArmBone, pulse::ComputationalLifeVascularLink::RightArmArteriolesToRightArmBone); + SELiquidCompartmentLink& vRightArmArteriolesToRightArmFat = m_Compartments->CreateLiquidLink(vRightArmArterioles, vRightArmFat, pulse::ComputationalLifeVascularLink::RightArmArteriolesToRightArmFat); + SELiquidCompartmentLink& vRightArmArteriolesToRightArmMicrovasculature = m_Compartments->CreateLiquidLink(vRightArmArterioles, vRightArmMicrovasculature, pulse::ComputationalLifeVascularLink::RightArmArteriolesToRightArmMicrovasculature); + SELiquidCompartmentLink& vRightArmArteriolesToRightArmMuscle = m_Compartments->CreateLiquidLink(vRightArmArterioles, vRightArmMuscle, pulse::ComputationalLifeVascularLink::RightArmArteriolesToRightArmMuscle); + SELiquidCompartmentLink& vRightArmArteriolesToRightArmSkin = m_Compartments->CreateLiquidLink(vRightArmArterioles, vRightArmSkin, pulse::ComputationalLifeVascularLink::RightArmArteriolesToRightArmSkin); + SELiquidCompartmentLink& vRightArmBoneToRightArmVenules = m_Compartments->CreateLiquidLink(vRightArmBone, vRightArmVenules, pulse::ComputationalLifeVascularLink::RightArmBoneToRightArmVenules); + SELiquidCompartmentLink& vRightArmFatToRightArmVenules = m_Compartments->CreateLiquidLink(vRightArmFat, vRightArmVenules, pulse::ComputationalLifeVascularLink::RightArmFatToRightArmVenules); + SELiquidCompartmentLink& vRightArmMicrovasculatureToRightArmVenules = m_Compartments->CreateLiquidLink(vRightArmMicrovasculature, vRightArmVenules, pulse::ComputationalLifeVascularLink::RightArmMicrovasculatureToRightArmVenules); + SELiquidCompartmentLink& vRightArmMuscleToRightArmVenules = m_Compartments->CreateLiquidLink(vRightArmMuscle, vRightArmVenules, pulse::ComputationalLifeVascularLink::RightArmMuscleToRightArmVenules); + SELiquidCompartmentLink& vRightArmSkinToRightArmVenules = m_Compartments->CreateLiquidLink(vRightArmSkin, vRightArmVenules, pulse::ComputationalLifeVascularLink::RightArmSkinToRightArmVenules); + SELiquidCompartmentLink& vRightArmVenulesToVenaCava = m_Compartments->CreateLiquidLink(vRightArmVenules, vVenousBuffer, pulse::ComputationalLifeVascularLink::RightArmVenulesToVenaCava); vAortaToRightArmArterioles.MapPath(Aorta5ToRightArm1); vRightArmArteriolesToRightArmBone.MapPath(RightArm1ToRightArmBone1); vRightArmArteriolesToRightArmFat.MapPath(RightArm1ToRightArmFat1); @@ -1594,24 +1594,24 @@ namespace pulse ////////////////// // Right Kidney // - SELiquidCompartmentLink& vAortaToRightKidney = m_Compartments->CreateLiquidLink(vArterialBuffer, vRightKidney, pulse::ExpandedVascularLink::AortaToRightKidney); + SELiquidCompartmentLink& vAortaToRightKidney = m_Compartments->CreateLiquidLink(vArterialBuffer, vRightKidney, pulse::VascularLink::AortaToRightKidney); vAortaToRightKidney.MapPath(Aorta5ToRightKidney1); - SELiquidCompartmentLink& vRightKidneyToVenaCava = m_Compartments->CreateLiquidLink(vRightKidney, vVenousBuffer, pulse::ExpandedVascularLink::RightKidneyToVenaCava); + SELiquidCompartmentLink& vRightKidneyToVenaCava = m_Compartments->CreateLiquidLink(vRightKidney, vVenousBuffer, pulse::VascularLink::RightKidneyToVenaCava); vRightKidneyToVenaCava.MapPath(RightKidney3ToVenaCava2); /////////////// // Right Leg // - SELiquidCompartmentLink& vAortaToRightLegArterioles = m_Compartments->CreateLiquidLink(vArterialBuffer, vRightLegArterioles, pulse::ExpandedVascularLink::AortaToRightLegArterioles); - SELiquidCompartmentLink& vRightLegArteriolesToRightLegBone = m_Compartments->CreateLiquidLink(vRightLegArterioles, vRightLegBone, pulse::ExpandedVascularLink::RightLegArteriolesToRightLegBone); - SELiquidCompartmentLink& vRightLegArteriolesToRightLegFat = m_Compartments->CreateLiquidLink(vRightLegArterioles, vRightLegFat, pulse::ExpandedVascularLink::RightLegArteriolesToRightLegFat); - SELiquidCompartmentLink& vRightLegArteriolesToRightLegMicrovasculature = m_Compartments->CreateLiquidLink(vRightLegArterioles, vRightLegMicrovasculature, pulse::ExpandedVascularLink::RightLegArteriolesToRightLegMicrovasculature); - SELiquidCompartmentLink& vRightLegArteriolesToRightLegMuscle = m_Compartments->CreateLiquidLink(vRightLegArterioles, vRightLegMuscle, pulse::ExpandedVascularLink::RightLegArteriolesToRightLegMuscle); - SELiquidCompartmentLink& vRightLegArteriolesToRightLegSkin = m_Compartments->CreateLiquidLink(vRightLegArterioles, vRightLegSkin, pulse::ExpandedVascularLink::RightLegArteriolesToRightLegSkin); - SELiquidCompartmentLink& vRightLegBoneToRightLegVenules = m_Compartments->CreateLiquidLink(vRightLegBone, vRightLegVenules, pulse::ExpandedVascularLink::RightLegBoneToRightLegVenules); - SELiquidCompartmentLink& vRightLegFatToRightLegVenules = m_Compartments->CreateLiquidLink(vRightLegFat, vRightLegVenules, pulse::ExpandedVascularLink::RightLegFatToRightLegVenules); - SELiquidCompartmentLink& vRightLegMicrovasculatureToRightLegVenules = m_Compartments->CreateLiquidLink(vRightLegMicrovasculature, vRightLegVenules, pulse::ExpandedVascularLink::RightLegMicrovasculatureToRightLegVenules); - SELiquidCompartmentLink& vRightLegMuscleToRightLegVenules = m_Compartments->CreateLiquidLink(vRightLegMuscle, vRightLegVenules, pulse::ExpandedVascularLink::RightLegMuscleToRightLegVenules); - SELiquidCompartmentLink& vRightLegSkinToRightLegVenules = m_Compartments->CreateLiquidLink(vRightLegSkin, vRightLegVenules, pulse::ExpandedVascularLink::RightLegSkinToRightLegVenules); - SELiquidCompartmentLink& vRightLegVenulesToVenaCava = m_Compartments->CreateLiquidLink(vRightLegVenules, vVenousBuffer, pulse::ExpandedVascularLink::RightLegVenulesToVenaCava); + SELiquidCompartmentLink& vAortaToRightLegArterioles = m_Compartments->CreateLiquidLink(vArterialBuffer, vRightLegArterioles, pulse::ComputationalLifeVascularLink::AortaToRightLegArterioles); + SELiquidCompartmentLink& vRightLegArteriolesToRightLegBone = m_Compartments->CreateLiquidLink(vRightLegArterioles, vRightLegBone, pulse::ComputationalLifeVascularLink::RightLegArteriolesToRightLegBone); + SELiquidCompartmentLink& vRightLegArteriolesToRightLegFat = m_Compartments->CreateLiquidLink(vRightLegArterioles, vRightLegFat, pulse::ComputationalLifeVascularLink::RightLegArteriolesToRightLegFat); + SELiquidCompartmentLink& vRightLegArteriolesToRightLegMicrovasculature = m_Compartments->CreateLiquidLink(vRightLegArterioles, vRightLegMicrovasculature, pulse::ComputationalLifeVascularLink::RightLegArteriolesToRightLegMicrovasculature); + SELiquidCompartmentLink& vRightLegArteriolesToRightLegMuscle = m_Compartments->CreateLiquidLink(vRightLegArterioles, vRightLegMuscle, pulse::ComputationalLifeVascularLink::RightLegArteriolesToRightLegMuscle); + SELiquidCompartmentLink& vRightLegArteriolesToRightLegSkin = m_Compartments->CreateLiquidLink(vRightLegArterioles, vRightLegSkin, pulse::ComputationalLifeVascularLink::RightLegArteriolesToRightLegSkin); + SELiquidCompartmentLink& vRightLegBoneToRightLegVenules = m_Compartments->CreateLiquidLink(vRightLegBone, vRightLegVenules, pulse::ComputationalLifeVascularLink::RightLegBoneToRightLegVenules); + SELiquidCompartmentLink& vRightLegFatToRightLegVenules = m_Compartments->CreateLiquidLink(vRightLegFat, vRightLegVenules, pulse::ComputationalLifeVascularLink::RightLegFatToRightLegVenules); + SELiquidCompartmentLink& vRightLegMicrovasculatureToRightLegVenules = m_Compartments->CreateLiquidLink(vRightLegMicrovasculature, vRightLegVenules, pulse::ComputationalLifeVascularLink::RightLegMicrovasculatureToRightLegVenules); + SELiquidCompartmentLink& vRightLegMuscleToRightLegVenules = m_Compartments->CreateLiquidLink(vRightLegMuscle, vRightLegVenules, pulse::ComputationalLifeVascularLink::RightLegMuscleToRightLegVenules); + SELiquidCompartmentLink& vRightLegSkinToRightLegVenules = m_Compartments->CreateLiquidLink(vRightLegSkin, vRightLegVenules, pulse::ComputationalLifeVascularLink::RightLegSkinToRightLegVenules); + SELiquidCompartmentLink& vRightLegVenulesToVenaCava = m_Compartments->CreateLiquidLink(vRightLegVenules, vVenousBuffer, pulse::ComputationalLifeVascularLink::RightLegVenulesToVenaCava); vAortaToRightLegArterioles.MapPath(Aorta5ToRightLeg1); vRightLegArteriolesToRightLegBone.MapPath(RightLeg1ToRightLegBone1); vRightLegArteriolesToRightLegFat.MapPath(RightLeg1ToRightLegFat1); @@ -1627,36 +1627,36 @@ namespace pulse ///////////////////// // Small Intestine // - SELiquidCompartmentLink& vAortaToSmallIntestine = m_Compartments->CreateLiquidLink(vGut1, vSmallIntestine, pulse::ExpandedVascularLink::AortaToSmallIntestine); + SELiquidCompartmentLink& vAortaToSmallIntestine = m_Compartments->CreateLiquidLink(vGut1, vSmallIntestine, pulse::VascularLink::AortaToSmallIntestine); vAortaToSmallIntestine.MapPath(Gut1ToSmallIntestine1); - SELiquidCompartmentLink& vSmallIntestineToLiver = m_Compartments->CreateLiquidLink(vSmallIntestine, vLiver, pulse::ExpandedVascularLink::SmallIntestineToLiver); + SELiquidCompartmentLink& vSmallIntestineToLiver = m_Compartments->CreateLiquidLink(vSmallIntestine, vLiver, pulse::VascularLink::SmallIntestineToLiver); vSmallIntestineToLiver.MapPath(SmallIntestine1ToPortalVein1); //////////////// // Splanchnic // - SELiquidCompartmentLink& vAortaToSplanchnic = m_Compartments->CreateLiquidLink(vGut1, vSplanchnic, pulse::ExpandedVascularLink::AortaToSplanchnic); + SELiquidCompartmentLink& vAortaToSplanchnic = m_Compartments->CreateLiquidLink(vGut1, vSplanchnic, pulse::VascularLink::AortaToSplanchnic); vAortaToSplanchnic.MapPath(Gut1ToSplanchnic1); - SELiquidCompartmentLink& vSplanchnicToLiver = m_Compartments->CreateLiquidLink(vSplanchnic, vLiver, pulse::ExpandedVascularLink::SplanchnicToLiver); + SELiquidCompartmentLink& vSplanchnicToLiver = m_Compartments->CreateLiquidLink(vSplanchnic, vLiver, pulse::VascularLink::SplanchnicToLiver); vSplanchnicToLiver.MapPath(Splanchnic1ToPortalVein1); //////////// // Spleen // - SELiquidCompartmentLink& vAortaToSpleen = m_Compartments->CreateLiquidLink(vGut1, vSpleen, pulse::ExpandedVascularLink::AortaToSpleen); + SELiquidCompartmentLink& vAortaToSpleen = m_Compartments->CreateLiquidLink(vGut1, vSpleen, pulse::VascularLink::AortaToSpleen); vAortaToSpleen.MapPath(Gut1ToSpleen1); - SELiquidCompartmentLink& vSpleenToLiver = m_Compartments->CreateLiquidLink(vSpleen, vLiver, pulse::ExpandedVascularLink::SpleenToLiver); + SELiquidCompartmentLink& vSpleenToLiver = m_Compartments->CreateLiquidLink(vSpleen, vLiver, pulse::VascularLink::SpleenToLiver); vSpleenToLiver.MapPath(Spleen1ToPortalVein1); /////////// // Torso // - SELiquidCompartmentLink& vAortaToTorsoArterioles = m_Compartments->CreateLiquidLink(vArterialBuffer, vTorsoArterioles, pulse::ExpandedVascularLink::AortaToTorsoArterioles); - SELiquidCompartmentLink& vTorsoArteriolesToTorsoBone = m_Compartments->CreateLiquidLink(vTorsoArterioles, vTorsoBone, pulse::ExpandedVascularLink::TorsoArteriolesToTorsoBone); - SELiquidCompartmentLink& vTorsoArteriolesToTorsoFat = m_Compartments->CreateLiquidLink(vTorsoArterioles, vTorsoFat, pulse::ExpandedVascularLink::TorsoArteriolesToTorsoFat); - SELiquidCompartmentLink& vTorsoArteriolesToTorsoMicrovasculature = m_Compartments->CreateLiquidLink(vTorsoArterioles, vTorsoMicrovasculature, pulse::ExpandedVascularLink::TorsoArteriolesToTorsoMicrovasculature); - SELiquidCompartmentLink& vTorsoArteriolesToTorsoMuscle = m_Compartments->CreateLiquidLink(vTorsoArterioles, vTorsoMuscle, pulse::ExpandedVascularLink::TorsoArteriolesToTorsoMuscle); - SELiquidCompartmentLink& vTorsoArteriolesToTorsoSkin = m_Compartments->CreateLiquidLink(vTorsoArterioles, vTorsoSkin, pulse::ExpandedVascularLink::TorsoArteriolesToTorsoSkin); - SELiquidCompartmentLink& vTorsoSkinToTorsoVenules = m_Compartments->CreateLiquidLink(vTorsoSkin, vTorsoVenules, pulse::ExpandedVascularLink::TorsoSkinToTorsoVenules); - SELiquidCompartmentLink& vTorsoMuscleToTorsoVenules = m_Compartments->CreateLiquidLink(vTorsoMuscle, vTorsoVenules, pulse::ExpandedVascularLink::TorsoMuscleToTorsoVenules); - SELiquidCompartmentLink& vTorsoMicrovasculatureToTorsoVenules = m_Compartments->CreateLiquidLink(vTorsoMicrovasculature, vTorsoVenules, pulse::ExpandedVascularLink::TorsoMicrovasculatureToTorsoVenules); - SELiquidCompartmentLink& vTorsoFatToTorsoVenules = m_Compartments->CreateLiquidLink(vTorsoFat, vTorsoVenules, pulse::ExpandedVascularLink::TorsoFatToTorsoVenules); - SELiquidCompartmentLink& vTorsoBoneToTorsoVenules = m_Compartments->CreateLiquidLink(vTorsoBone, vTorsoVenules, pulse::ExpandedVascularLink::TorsoBoneToTorsoVenules); - SELiquidCompartmentLink& vTorsoVenulesToVenaCava = m_Compartments->CreateLiquidLink(vTorsoVenules, vVenousBuffer, pulse::ExpandedVascularLink::TorsoVenulesToVenaCava); + SELiquidCompartmentLink& vAortaToTorsoArterioles = m_Compartments->CreateLiquidLink(vArterialBuffer, vTorsoArterioles, pulse::ComputationalLifeVascularLink::AortaToTorsoArterioles); + SELiquidCompartmentLink& vTorsoArteriolesToTorsoBone = m_Compartments->CreateLiquidLink(vTorsoArterioles, vTorsoBone, pulse::ComputationalLifeVascularLink::TorsoArteriolesToTorsoBone); + SELiquidCompartmentLink& vTorsoArteriolesToTorsoFat = m_Compartments->CreateLiquidLink(vTorsoArterioles, vTorsoFat, pulse::ComputationalLifeVascularLink::TorsoArteriolesToTorsoFat); + SELiquidCompartmentLink& vTorsoArteriolesToTorsoMicrovasculature = m_Compartments->CreateLiquidLink(vTorsoArterioles, vTorsoMicrovasculature, pulse::ComputationalLifeVascularLink::TorsoArteriolesToTorsoMicrovasculature); + SELiquidCompartmentLink& vTorsoArteriolesToTorsoMuscle = m_Compartments->CreateLiquidLink(vTorsoArterioles, vTorsoMuscle, pulse::ComputationalLifeVascularLink::TorsoArteriolesToTorsoMuscle); + SELiquidCompartmentLink& vTorsoArteriolesToTorsoSkin = m_Compartments->CreateLiquidLink(vTorsoArterioles, vTorsoSkin, pulse::ComputationalLifeVascularLink::TorsoArteriolesToTorsoSkin); + SELiquidCompartmentLink& vTorsoSkinToTorsoVenules = m_Compartments->CreateLiquidLink(vTorsoSkin, vTorsoVenules, pulse::ComputationalLifeVascularLink::TorsoSkinToTorsoVenules); + SELiquidCompartmentLink& vTorsoMuscleToTorsoVenules = m_Compartments->CreateLiquidLink(vTorsoMuscle, vTorsoVenules, pulse::ComputationalLifeVascularLink::TorsoMuscleToTorsoVenules); + SELiquidCompartmentLink& vTorsoMicrovasculatureToTorsoVenules = m_Compartments->CreateLiquidLink(vTorsoMicrovasculature, vTorsoVenules, pulse::ComputationalLifeVascularLink::TorsoMicrovasculatureToTorsoVenules); + SELiquidCompartmentLink& vTorsoFatToTorsoVenules = m_Compartments->CreateLiquidLink(vTorsoFat, vTorsoVenules, pulse::ComputationalLifeVascularLink::TorsoFatToTorsoVenules); + SELiquidCompartmentLink& vTorsoBoneToTorsoVenules = m_Compartments->CreateLiquidLink(vTorsoBone, vTorsoVenules, pulse::ComputationalLifeVascularLink::TorsoBoneToTorsoVenules); + SELiquidCompartmentLink& vTorsoVenulesToVenaCava = m_Compartments->CreateLiquidLink(vTorsoVenules, vVenousBuffer, pulse::ComputationalLifeVascularLink::TorsoVenulesToVenaCava); vAortaToTorsoArterioles.MapPath(Aorta5ToTorso1); vTorsoArteriolesToTorsoBone.MapPath(Torso1ToTorsoBone1); vTorsoArteriolesToTorsoFat.MapPath(Torso1ToTorsoFat1); @@ -1672,7 +1672,7 @@ namespace pulse ///////////////////// // Bleeds and IV's // - SELiquidCompartmentLink& vVenaCavaIV = m_Compartments->CreateLiquidLink(vGround, vVenaCava, pulse::ExpandedVascularLink::VenaCavaIV); + SELiquidCompartmentLink& vVenaCavaIV = m_Compartments->CreateLiquidLink(vGround, vVenaCava, pulse::VascularLink::VenaCavaIV); vVenaCavaIV.MapPath(IVToVenaCava1); SELiquidCompartmentGraph& gCardiovascular = m_Compartments->GetCardiovascularGraph(); @@ -1849,9 +1849,9 @@ namespace pulse gCombinedCardiovascular.StateChange(); } - void Controller::SetupExpandedCardiovascularRenal() + void Controller::SetupComputationalLifeRenal() { - Info("Setting Up Expanded Cardiovascular Renal"); + Info("Setting Up ComputationalLife Renal"); ////////////////////////// // Circuit Interdependence SEFluidCircuit& cCardiovascular = m_Circuits->GetCardiovascularCircuit(); @@ -1860,9 +1860,9 @@ namespace pulse //assuming there is a left and right kidney node in cardiovascular AND that a baseline volume is set (as a function of patient mass): double leftKidneyFluidVolume_mL = 0; - if (cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftKidney1)->HasVolumeBaseline()) { leftKidneyFluidVolume_mL +=cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftKidney1)->GetVolumeBaseline(VolumeUnit::mL);} - if (cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftKidney2)->HasVolumeBaseline()) { leftKidneyFluidVolume_mL +=cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftKidney2)->GetVolumeBaseline(VolumeUnit::mL);} - if (cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftKidney3)->HasVolumeBaseline()) { leftKidneyFluidVolume_mL +=cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftKidney3)->GetVolumeBaseline(VolumeUnit::mL);} + if (cCardiovascular.GetNode(pulse::CardiovascularNode::LeftKidney1)->HasVolumeBaseline()) { leftKidneyFluidVolume_mL +=cCardiovascular.GetNode(pulse::CardiovascularNode::LeftKidney1)->GetVolumeBaseline(VolumeUnit::mL);} + if (cCardiovascular.GetNode(pulse::CardiovascularNode::LeftKidney2)->HasVolumeBaseline()) { leftKidneyFluidVolume_mL +=cCardiovascular.GetNode(pulse::CardiovascularNode::LeftKidney2)->GetVolumeBaseline(VolumeUnit::mL);} + if (cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::LeftKidney3)->HasVolumeBaseline()) { leftKidneyFluidVolume_mL +=cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::LeftKidney3)->GetVolumeBaseline(VolumeUnit::mL);} double singleKidneyLargeVasculatureFluidVolume_mL = leftKidneyFluidVolume_mL / 1.5;// / 2; //Total large vasculature fluid volume double singleKidneySmallVasculatureFluidVolume_mL = leftKidneyFluidVolume_mL / 1.5;// / 2; //Total small vasculature fluid volume @@ -1893,9 +1893,9 @@ namespace pulse //0.5 * CapacitanceKidney is the per-kidney value from 3 element Windkessel //double totalCompliance = (0.5 * (0.91 * 1.7560) * 0.02); double totalCompliance = 0; - if (cCardiovascular.HasPath(pulse::ExpandedCardiovascularPath::LeftKidney1ToGround)) { totalCompliance +=cCardiovascular.GetPath(pulse::ExpandedCardiovascularPath::LeftKidney1ToGround)->GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg);} - if (cCardiovascular.HasPath(pulse::ExpandedCardiovascularPath::LeftKidney2ToGround)) { totalCompliance +=cCardiovascular.GetPath(pulse::ExpandedCardiovascularPath::LeftKidney2ToGround)->GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg);} - if (cCardiovascular.HasPath(pulse::ExpandedCardiovascularPath::LeftKidney3ToGround)) { totalCompliance +=cCardiovascular.GetPath(pulse::ExpandedCardiovascularPath::LeftKidney3ToGround)->GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg);} + if (cCardiovascular.HasPath(pulse::CardiovascularPath::LeftKidney1ToGround)) { totalCompliance +=cCardiovascular.GetPath(pulse::CardiovascularPath::LeftKidney1ToGround)->GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg);} + if (cCardiovascular.HasPath(pulse::ComputationalLifeCardiovascularPath::LeftKidney2ToGround)) { totalCompliance +=cCardiovascular.GetPath(pulse::ComputationalLifeCardiovascularPath::LeftKidney2ToGround)->GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg);} + if (cCardiovascular.HasPath(pulse::ComputationalLifeCardiovascularPath::LeftKidney3ToGround)) { totalCompliance +=cCardiovascular.GetPath(pulse::ComputationalLifeCardiovascularPath::LeftKidney3ToGround)->GetComplianceBaseline(VolumePerPressureUnit::mL_Per_mmHg);} ///\todo The bladder is currently not being modeled as a compliance //double bladderCompliance_mL_Per_mmHg = Convert(38.3, VolumePerPressureUnit::mL_Per_cmH2O, VolumePerPressureUnit::mL_Per_mmHg); @@ -1919,11 +1919,11 @@ namespace pulse //Unstressed Pressures - set to zero to use unstressed properly // double renalArteryPressure_mmHg = 0.0; // double renalVeinPressure_mmHg = 0.0; - // double glomerularPressure_mmHg = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftKidney1)->GetPressure(PressureUnit::mmHg); + // double glomerularPressure_mmHg = cCardiovascular.GetNode(pulse::CardiovascularNode::LeftKidney1)->GetPressure(PressureUnit::mmHg); - double renalArteryPressure_mmHg = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftKidney1)->GetPressure(PressureUnit::mmHg); + double renalArteryPressure_mmHg = cCardiovascular.GetNode(pulse::CardiovascularNode::LeftKidney1)->GetPressure(PressureUnit::mmHg); double glomerularPressure_mmHg = 60; - double renalVeinPressure_mmHg = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftKidney3)->GetPressure(PressureUnit::mmHg); + double renalVeinPressure_mmHg = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::LeftKidney3)->GetPressure(PressureUnit::mmHg); //double bladderPressure_mmHg = bladderVolume_mL / bladderCompliance_mL_Per_mmHg; //Pressure Sources double glomerularOsmoticPressure_mmHg = -32.0; @@ -2238,35 +2238,35 @@ namespace pulse // Delete the three-element Windkessel kidney model SEFluidCircuit& cCombinedCardiovascular = m_Circuits->GetActiveCardiovascularCircuit(); - m_Circuits->DeleteFluidNode(pulse::ExpandedCardiovascularNode::LeftKidney1); - m_Circuits->DeleteFluidNode(pulse::ExpandedCardiovascularNode::LeftKidney2); - m_Circuits->DeleteFluidNode(pulse::ExpandedCardiovascularNode::LeftKidney3); - m_Circuits->DeleteFluidNode(pulse::ExpandedCardiovascularNode::RightKidney1); - m_Circuits->DeleteFluidNode(pulse::ExpandedCardiovascularNode::RightKidney3); - m_Circuits->DeleteFluidNode(pulse::ExpandedCardiovascularNode::RightKidney2); - m_Circuits->DeleteFluidPath(pulse::ExpandedCardiovascularPath::Aorta5ToLeftKidney1); - m_Circuits->DeleteFluidPath(pulse::ExpandedCardiovascularPath::Aorta5ToRightKidney1); - m_Circuits->DeleteFluidPath(pulse::ExpandedCardiovascularPath::LeftKidney1ToLeftKidney2); - m_Circuits->DeleteFluidPath(pulse::ExpandedCardiovascularPath::RightKidney1ToRightKidney2); - m_Circuits->DeleteFluidPath(pulse::ExpandedCardiovascularPath::LeftKidney2ToGround); - m_Circuits->DeleteFluidPath(pulse::ExpandedCardiovascularPath::RightKidney2ToGround); - m_Circuits->DeleteFluidPath(pulse::ExpandedCardiovascularPath::LeftKidney2ToLeftKidney3); - m_Circuits->DeleteFluidPath(pulse::ExpandedCardiovascularPath::RightKidney2ToRightKidney3); - m_Circuits->DeleteFluidPath(pulse::ExpandedCardiovascularPath::LeftKidney3ToVenaCava2); - m_Circuits->DeleteFluidPath(pulse::ExpandedCardiovascularPath::RightKidney3ToVenaCava2); + m_Circuits->DeleteFluidNode(pulse::CardiovascularNode::LeftKidney1); + m_Circuits->DeleteFluidNode(pulse::CardiovascularNode::LeftKidney2); + m_Circuits->DeleteFluidNode(pulse::ComputationalLifeCardiovascularNode::LeftKidney3); + m_Circuits->DeleteFluidNode(pulse::CardiovascularNode::RightKidney1); + m_Circuits->DeleteFluidNode(pulse::ComputationalLifeCardiovascularNode::RightKidney3); + m_Circuits->DeleteFluidNode(pulse::CardiovascularNode::RightKidney2); + m_Circuits->DeleteFluidPath(pulse::ComputationalLifeCardiovascularPath::Aorta5ToLeftKidney1); + m_Circuits->DeleteFluidPath(pulse::ComputationalLifeCardiovascularPath::Aorta5ToRightKidney1); + m_Circuits->DeleteFluidPath(pulse::CardiovascularPath::LeftKidney1ToLeftKidney2); + m_Circuits->DeleteFluidPath(pulse::CardiovascularPath::RightKidney1ToRightKidney2); + m_Circuits->DeleteFluidPath(pulse::ComputationalLifeCardiovascularPath::LeftKidney2ToGround); + m_Circuits->DeleteFluidPath(pulse::ComputationalLifeCardiovascularPath::RightKidney2ToGround); + m_Circuits->DeleteFluidPath(pulse::ComputationalLifeCardiovascularPath::LeftKidney2ToLeftKidney3); + m_Circuits->DeleteFluidPath(pulse::ComputationalLifeCardiovascularPath::RightKidney2ToRightKidney3); + m_Circuits->DeleteFluidPath(pulse::ComputationalLifeCardiovascularPath::LeftKidney3ToVenaCava2); + m_Circuits->DeleteFluidPath(pulse::ComputationalLifeCardiovascularPath::RightKidney3ToVenaCava2); // Remove modifiers on the proximal resistor (aorta side) of paths we removed m_Config->GetModifiers().erase(pulse::CardiovascularPath::LeftKidney1ToLeftKidney2); m_Config->GetModifiers().erase(pulse::CardiovascularPath::RightKidney1ToRightKidney2); cCombinedCardiovascular.AddCircuit(cRenal); // Grab the nodes that we will be connecting between the 2 circuits - SEFluidCircuitNode* Aorta5 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::Aorta5); - SEFluidCircuitNode* VenaCava2 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::VenaCava2); + SEFluidCircuitNode* Aorta5 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::Aorta5); + SEFluidCircuitNode* VenaCava2 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::VenaCava2); // Add the new connection paths - SEFluidCircuitPath& Aorta5ToRightKidney1 = cCombinedCardiovascular.CreatePath(*Aorta5, RightRenalArtery, pulse::ExpandedCardiovascularPath::Aorta5ToRightKidney1); - SEFluidCircuitPath& RightKidney3ToVenaCava2 = cCombinedCardiovascular.CreatePath(RightRenalVein, *VenaCava2, pulse::ExpandedCardiovascularPath::RightKidney3ToVenaCava2); - SEFluidCircuitPath& Aorta5ToLeftKidney1 = cCombinedCardiovascular.CreatePath(*Aorta5, LeftRenalArtery, pulse::ExpandedCardiovascularPath::Aorta5ToLeftKidney1); - SEFluidCircuitPath& LeftKidney3ToVenaCava2 = cCombinedCardiovascular.CreatePath(LeftRenalVein, *VenaCava2, pulse::ExpandedCardiovascularPath::LeftKidney3ToVenaCava2); + SEFluidCircuitPath& Aorta5ToRightKidney1 = cCombinedCardiovascular.CreatePath(*Aorta5, RightRenalArtery, pulse::ComputationalLifeCardiovascularPath::Aorta5ToRightKidney1); + SEFluidCircuitPath& RightKidney3ToVenaCava2 = cCombinedCardiovascular.CreatePath(RightRenalVein, *VenaCava2, pulse::ComputationalLifeCardiovascularPath::RightKidney3ToVenaCava2); + SEFluidCircuitPath& Aorta5ToLeftKidney1 = cCombinedCardiovascular.CreatePath(*Aorta5, LeftRenalArtery, pulse::ComputationalLifeCardiovascularPath::Aorta5ToLeftKidney1); + SEFluidCircuitPath& LeftKidney3ToVenaCava2 = cCombinedCardiovascular.CreatePath(LeftRenalVein, *VenaCava2, pulse::ComputationalLifeCardiovascularPath::LeftKidney3ToVenaCava2); // Update the circuit cCombinedCardiovascular.SetNextAndCurrentFromBaselines(); @@ -2282,82 +2282,82 @@ namespace pulse /////////////////////// // RightRenalArtery // - SELiquidCompartment& vRightRenalArtery = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightRenalArtery); + SELiquidCompartment& vRightRenalArtery = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightRenalArtery); vRightRenalArtery.MapNode(RightRenalArtery); ////////////////////////////// // RightAfferentArteriole // - SELiquidCompartment& vRightAfferentArteriole = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightAfferentArteriole); + SELiquidCompartment& vRightAfferentArteriole = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightAfferentArteriole); vRightAfferentArteriole.MapNode(RightAfferentArteriole); //////////////////////////////// // RightGlomerularCapillaries // - SELiquidCompartment& vRightGlomerularCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightGlomerularCapillaries); + SELiquidCompartment& vRightGlomerularCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightGlomerularCapillaries); vRightGlomerularCapillaries.MapNode(RightGlomerularCapillaries); vRightGlomerularCapillaries.MapNode(RightNetGlomerularCapillaries); //////////////////////////// // RightEfferentArteriole // - SELiquidCompartment& vRightEfferentArteriole = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightEfferentArteriole); + SELiquidCompartment& vRightEfferentArteriole = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightEfferentArteriole); vRightEfferentArteriole.MapNode(RightEfferentArteriole); ///////////////////////////////// // RightPeritubularCapillaries // - SELiquidCompartment& vRightPeritubularCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightPeritubularCapillaries); + SELiquidCompartment& vRightPeritubularCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightPeritubularCapillaries); vRightPeritubularCapillaries.MapNode(RightPeritubularCapillaries); vRightPeritubularCapillaries.MapNode(RightNetPeritubularCapillaries); /////////////////// // RightRenalVein // - SELiquidCompartment& vRightRenalVein = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightRenalVein); + SELiquidCompartment& vRightRenalVein = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightRenalVein); vRightRenalVein.MapNode(RightRenalVein); ////////////////////////// // RightBowmansCapsules // - SELiquidCompartment& vRightBowmansCapsules = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightBowmansCapsules); + SELiquidCompartment& vRightBowmansCapsules = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightBowmansCapsules); vRightBowmansCapsules.MapNode(RightBowmansCapsules); vRightBowmansCapsules.MapNode(RightNetBowmansCapsules); ////////////////// // RightTubules // - SELiquidCompartment& vRightTubules = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightTubules); + SELiquidCompartment& vRightTubules = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightTubules); vRightTubules.MapNode(RightTubules); vRightTubules.MapNode(RightNetTubules); ///////////////////// // LeftRenalArtery // - SELiquidCompartment& vLeftRenalArtery = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftRenalArtery); + SELiquidCompartment& vLeftRenalArtery = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftRenalArtery); vLeftRenalArtery.MapNode(LeftRenalArtery); ////////////////////////////// // LeftAfferentArteriole // - SELiquidCompartment& vLeftAfferentArteriole = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftAfferentArteriole); + SELiquidCompartment& vLeftAfferentArteriole = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftAfferentArteriole); vLeftAfferentArteriole.MapNode(LeftAfferentArteriole); //////////////////////////////// // LeftGlomerularCapillaries // - SELiquidCompartment& vLeftGlomerularCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftGlomerularCapillaries); + SELiquidCompartment& vLeftGlomerularCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftGlomerularCapillaries); vLeftGlomerularCapillaries.MapNode(LeftGlomerularCapillaries); vLeftGlomerularCapillaries.MapNode(LeftNetGlomerularCapillaries); //////////////////////////// // LeftEfferentArteriole // - SELiquidCompartment& vLeftEfferentArteriole = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftEfferentArteriole); + SELiquidCompartment& vLeftEfferentArteriole = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftEfferentArteriole); vLeftEfferentArteriole.MapNode(LeftEfferentArteriole); //////////////////////////////// // LeftPeritubularCapillaries // - SELiquidCompartment& vLeftPeritubularCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftPeritubularCapillaries); + SELiquidCompartment& vLeftPeritubularCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftPeritubularCapillaries); vLeftPeritubularCapillaries.MapNode(LeftPeritubularCapillaries); vLeftPeritubularCapillaries.MapNode(LeftNetPeritubularCapillaries); /////////////////// // LeftRenalVein // - SELiquidCompartment& vLeftRenalVein = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftRenalVein); + SELiquidCompartment& vLeftRenalVein = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftRenalVein); vLeftRenalVein.MapNode(LeftRenalVein); ///////////////////////// // LeftBowmansCapsules // - SELiquidCompartment& vLeftBowmansCapsules = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftBowmansCapsules); + SELiquidCompartment& vLeftBowmansCapsules = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftBowmansCapsules); vLeftBowmansCapsules.MapNode(LeftBowmansCapsules); vLeftBowmansCapsules.MapNode(LeftNetBowmansCapsules); ///////////////// // LeftTubules // - SELiquidCompartment& vLeftTubules = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftTubules); + SELiquidCompartment& vLeftTubules = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftTubules); vLeftTubules.MapNode(LeftTubules); vLeftTubules.MapNode(LeftNetTubules); // Let's build out the hierarchy // Grab these, as cardiovascular already made them - SELiquidCompartment* vLeftKidney = m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftKidney); - SELiquidCompartment& vLeftNephron = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::LeftNephron); + SELiquidCompartment* vLeftKidney = m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::LeftKidney); + SELiquidCompartment& vLeftNephron = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftNephron); vLeftKidney->GetNodeMapping().Clear();// Remove the nodes the cardiovascular was using to model the kidney vLeftKidney->AddChild(vLeftRenalArtery); vLeftKidney->AddChild(vLeftNephron); @@ -2368,8 +2368,8 @@ namespace pulse vLeftNephron.AddChild(vLeftBowmansCapsules); vLeftNephron.AddChild(vLeftTubules); vLeftKidney->AddChild(vLeftRenalVein); - SELiquidCompartment* vRightKidney = m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightKidney); - SELiquidCompartment& vRightNephron = m_Compartments->CreateLiquidCompartment(pulse::ExpandedVascularCompartment::RightNephron); + SELiquidCompartment* vRightKidney = m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::RightKidney); + SELiquidCompartment& vRightNephron = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightNephron); vRightKidney->GetNodeMapping().Clear();// Remove the nodes the cardiovascular was using to model the kidney vRightKidney->AddChild(vRightRenalArtery); vRightKidney->AddChild(vRightNephron); @@ -2408,9 +2408,9 @@ namespace pulse ///////////////////////////// // Graph Dependencies - SELiquidCompartment& vArterialBuffer = *m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::ArterialBuffer); - SELiquidCompartment& vVenousBuffer = *m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::VenousBuffer); - SELiquidCompartment& vGround = *m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::Ground); + SELiquidCompartment& vArterialBuffer = *m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::ArterialBuffer); + SELiquidCompartment& vVenousBuffer = *m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::VenousBuffer); + SELiquidCompartment& vGround = *m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::Ground); /////////// // Blood // @@ -2418,88 +2418,88 @@ namespace pulse //////////////////////////// // AortaToRightRenalArtery // - m_Compartments->DeleteLiquidLink(pulse::ExpandedVascularLink::AortaToRightKidney);// Replace this link - SELiquidCompartmentLink& vAortaToRightRenalArtery = m_Compartments->CreateLiquidLink(vArterialBuffer, vRightRenalArtery, pulse::ExpandedVascularLink::AortaToRightKidney); + m_Compartments->DeleteLiquidLink(pulse::VascularLink::AortaToRightKidney);// Replace this link + SELiquidCompartmentLink& vAortaToRightRenalArtery = m_Compartments->CreateLiquidLink(vArterialBuffer, vRightRenalArtery, pulse::VascularLink::AortaToRightKidney); vAortaToRightRenalArtery.MapPath(Aorta5ToRightKidney1); //////////////////////////////////////// // RightRenalArteryToAfferentArteriole // - SELiquidCompartmentLink& vRightRenalArteryToAfferentArteriole = m_Compartments->CreateLiquidLink(vRightRenalArtery, vRightAfferentArteriole, pulse::ExpandedVascularLink::RightRenalArteryToAfferentArteriole); + SELiquidCompartmentLink& vRightRenalArteryToAfferentArteriole = m_Compartments->CreateLiquidLink(vRightRenalArtery, vRightAfferentArteriole, pulse::VascularLink::RightRenalArteryToAfferentArteriole); vRightRenalArteryToAfferentArteriole.MapPath(RightRenalArteryToAfferentArteriole); ////////////////////////////////////////////////// // RightAfferentArterioleToGlomerularCapillaries // - SELiquidCompartmentLink& vRightAfferentArterioleToGlomerularCapillaries = m_Compartments->CreateLiquidLink(vRightAfferentArteriole, vRightGlomerularCapillaries, pulse::ExpandedVascularLink::RightAfferentArterioleToGlomerularCapillaries); + SELiquidCompartmentLink& vRightAfferentArterioleToGlomerularCapillaries = m_Compartments->CreateLiquidLink(vRightAfferentArteriole, vRightGlomerularCapillaries, pulse::VascularLink::RightAfferentArterioleToGlomerularCapillaries); vRightAfferentArterioleToGlomerularCapillaries.MapPath(RightAfferentArterioleToGlomerularCapillaries); ////////////////////////////////////////////////// // RightGlomerularCapillariesToEfferentArteriole // - SELiquidCompartmentLink& vRightGlomerularCapillariesToEfferentArteriole = m_Compartments->CreateLiquidLink(vRightGlomerularCapillaries, vRightEfferentArteriole, pulse::ExpandedVascularLink::RightGlomerularCapillariesToEfferentArteriole); + SELiquidCompartmentLink& vRightGlomerularCapillariesToEfferentArteriole = m_Compartments->CreateLiquidLink(vRightGlomerularCapillaries, vRightEfferentArteriole, pulse::VascularLink::RightGlomerularCapillariesToEfferentArteriole); vRightGlomerularCapillariesToEfferentArteriole.MapPath(RightGlomerularCapillariesToEfferentArteriole); ///////////////////////////////////////////////// // RightGlomerularCapillariesToBowmansCapsules // - SELiquidCompartmentLink& vRightGlomerularCapillariesToBowmansCapsules = m_Compartments->CreateLiquidLink(vRightGlomerularCapillaries, vRightBowmansCapsules, pulse::ExpandedVascularLink::RightGlomerularCapillariesToBowmansCapsules); + SELiquidCompartmentLink& vRightGlomerularCapillariesToBowmansCapsules = m_Compartments->CreateLiquidLink(vRightGlomerularCapillaries, vRightBowmansCapsules, pulse::VascularLink::RightGlomerularCapillariesToBowmansCapsules); vRightGlomerularCapillariesToBowmansCapsules.MapPath(RightNetGlomerularCapillariesToNetBowmansCapsules); /////////////////////////////////// // RightBowmansCapsulesToTubules // - SELiquidCompartmentLink& vRightBowmansCapsulesToTubules = m_Compartments->CreateLiquidLink(vRightBowmansCapsules, vRightTubules, pulse::ExpandedVascularLink::RightBowmansCapsulesToTubules); + SELiquidCompartmentLink& vRightBowmansCapsulesToTubules = m_Compartments->CreateLiquidLink(vRightBowmansCapsules, vRightTubules, pulse::VascularLink::RightBowmansCapsulesToTubules); vRightBowmansCapsulesToTubules.MapPath(RightBowmansCapsulesToTubules); ////////////////////////////////////////// // RightTubulesToPeritubularCapillaries // - SELiquidCompartmentLink& vRightTubulesToPeritubularCapillaries = m_Compartments->CreateLiquidLink(vRightTubules, vRightPeritubularCapillaries, pulse::ExpandedVascularLink::RightTubulesToPeritubularCapillaries); + SELiquidCompartmentLink& vRightTubulesToPeritubularCapillaries = m_Compartments->CreateLiquidLink(vRightTubules, vRightPeritubularCapillaries, pulse::VascularLink::RightTubulesToPeritubularCapillaries); vRightTubulesToPeritubularCapillaries.MapPath(RightNetTubulesToNetPeritubularCapillaries); /////////////////////////////////////////////////// // RightEfferentArterioleToPeritubularCapillaries // - SELiquidCompartmentLink& vRightEfferentArterioleToPeritubularCapillaries = m_Compartments->CreateLiquidLink(vRightEfferentArteriole, vRightPeritubularCapillaries, pulse::ExpandedVascularLink::RightEfferentArterioleToPeritubularCapillaries); + SELiquidCompartmentLink& vRightEfferentArterioleToPeritubularCapillaries = m_Compartments->CreateLiquidLink(vRightEfferentArteriole, vRightPeritubularCapillaries, pulse::VascularLink::RightEfferentArterioleToPeritubularCapillaries); vRightEfferentArterioleToPeritubularCapillaries.MapPath(RightEfferentArterioleToPeritubularCapillaries); //////////////////////////////////////////// // RightPeritubularCapillariesToRenalVein // - SELiquidCompartmentLink& vRightPeritubularCapillariesToRenalVein = m_Compartments->CreateLiquidLink(vRightPeritubularCapillaries, vRightRenalVein, pulse::ExpandedVascularLink::RightPeritubularCapillariesToRenalVein); + SELiquidCompartmentLink& vRightPeritubularCapillariesToRenalVein = m_Compartments->CreateLiquidLink(vRightPeritubularCapillaries, vRightRenalVein, pulse::VascularLink::RightPeritubularCapillariesToRenalVein); vRightPeritubularCapillariesToRenalVein.MapPath(RightPeritubularCapillariesToRenalVein); ///////////////////////////// // RightRenalVeinToVenaCava // - m_Compartments->DeleteLiquidLink(pulse::ExpandedVascularLink::RightKidneyToVenaCava);// Replace this vink - SELiquidCompartmentLink& vRightRenalVeinToVenaCava = m_Compartments->CreateLiquidLink(vRightRenalVein, vVenousBuffer, pulse::ExpandedVascularLink::RightKidneyToVenaCava); + m_Compartments->DeleteLiquidLink(pulse::VascularLink::RightKidneyToVenaCava);// Replace this vink + SELiquidCompartmentLink& vRightRenalVeinToVenaCava = m_Compartments->CreateLiquidLink(vRightRenalVein, vVenousBuffer, pulse::VascularLink::RightKidneyToVenaCava); vRightRenalVeinToVenaCava.MapPath(RightKidney3ToVenaCava2); //////////////////////////// // AortaToLeftRenalArtery // - m_Compartments->DeleteLiquidLink(pulse::ExpandedVascularLink::AortaToLeftKidney);// Replace this uink - SELiquidCompartmentLink& vAortaToLeftRenalArtery = m_Compartments->CreateLiquidLink(vArterialBuffer, vLeftRenalArtery, pulse::ExpandedVascularLink::AortaToLeftKidney); + m_Compartments->DeleteLiquidLink(pulse::VascularLink::AortaToLeftKidney);// Replace this uink + SELiquidCompartmentLink& vAortaToLeftRenalArtery = m_Compartments->CreateLiquidLink(vArterialBuffer, vLeftRenalArtery, pulse::VascularLink::AortaToLeftKidney); vAortaToLeftRenalArtery.MapPath(Aorta5ToLeftKidney1); //////////////////////////////////////// // LeftRenalArteryToAfferentArteriole // - SELiquidCompartmentLink& vLeftRenalArteryToAfferentArteriole = m_Compartments->CreateLiquidLink(vLeftRenalArtery, vLeftAfferentArteriole, pulse::ExpandedVascularLink::LeftRenalArteryToAfferentArteriole); + SELiquidCompartmentLink& vLeftRenalArteryToAfferentArteriole = m_Compartments->CreateLiquidLink(vLeftRenalArtery, vLeftAfferentArteriole, pulse::VascularLink::LeftRenalArteryToAfferentArteriole); vLeftRenalArteryToAfferentArteriole.MapPath(LeftRenalArteryToAfferentArteriole); ////////////////////////////////////////////////// // LeftAfferentArterioleToGlomerularCapillaries // - SELiquidCompartmentLink& vLeftAfferentArterioleToGlomerularCapillaries = m_Compartments->CreateLiquidLink(vLeftAfferentArteriole, vLeftGlomerularCapillaries, pulse::ExpandedVascularLink::LeftAfferentArterioleToGlomerularCapillaries); + SELiquidCompartmentLink& vLeftAfferentArterioleToGlomerularCapillaries = m_Compartments->CreateLiquidLink(vLeftAfferentArteriole, vLeftGlomerularCapillaries, pulse::VascularLink::LeftAfferentArterioleToGlomerularCapillaries); vLeftAfferentArterioleToGlomerularCapillaries.MapPath(LeftAfferentArterioleToGlomerularCapillaries); ////////////////////////////////////////////////// // LeftGlomerularCapillariesToEfferentArteriole // - SELiquidCompartmentLink& vLeftGlomerularCapillariesToEfferentArteriole = m_Compartments->CreateLiquidLink(vLeftGlomerularCapillaries, vLeftEfferentArteriole, pulse::ExpandedVascularLink::LeftGlomerularCapillariesToEfferentArteriole); + SELiquidCompartmentLink& vLeftGlomerularCapillariesToEfferentArteriole = m_Compartments->CreateLiquidLink(vLeftGlomerularCapillaries, vLeftEfferentArteriole, pulse::VascularLink::LeftGlomerularCapillariesToEfferentArteriole); vLeftGlomerularCapillariesToEfferentArteriole.MapPath(LeftGlomerularCapillariesToEfferentArteriole); //////////////////////////////////////////////// // LeftGlomerularCapillariesToBowmansCapsules // - SELiquidCompartmentLink& vLeftGlomerularCapillariesToBowmansCapsules = m_Compartments->CreateLiquidLink(vLeftGlomerularCapillaries, vLeftBowmansCapsules, pulse::ExpandedVascularLink::LeftGlomerularCapillariesToBowmansCapsules); + SELiquidCompartmentLink& vLeftGlomerularCapillariesToBowmansCapsules = m_Compartments->CreateLiquidLink(vLeftGlomerularCapillaries, vLeftBowmansCapsules, pulse::VascularLink::LeftGlomerularCapillariesToBowmansCapsules); vLeftGlomerularCapillariesToBowmansCapsules.MapPath(LeftNetGlomerularCapillariesToNetBowmansCapsules); ////////////////////////////////// // LeftBowmansCapsulesToTubules // - SELiquidCompartmentLink& vLeftBowmansCapsulesToTubules = m_Compartments->CreateLiquidLink(vLeftBowmansCapsules, vLeftTubules, pulse::ExpandedVascularLink::LeftBowmansCapsulesToTubules); + SELiquidCompartmentLink& vLeftBowmansCapsulesToTubules = m_Compartments->CreateLiquidLink(vLeftBowmansCapsules, vLeftTubules, pulse::VascularLink::LeftBowmansCapsulesToTubules); vLeftBowmansCapsulesToTubules.MapPath(LeftBowmansCapsulesToTubules); ///////////////////////////////////////// // LeftTubulesToPeritubularCapillaries // - SELiquidCompartmentLink& vLeftTubulesToPeritubularCapillaries = m_Compartments->CreateLiquidLink(vLeftTubules, vLeftPeritubularCapillaries, pulse::ExpandedVascularLink::LeftTubulesToPeritubularCapillaries); + SELiquidCompartmentLink& vLeftTubulesToPeritubularCapillaries = m_Compartments->CreateLiquidLink(vLeftTubules, vLeftPeritubularCapillaries, pulse::VascularLink::LeftTubulesToPeritubularCapillaries); vLeftTubulesToPeritubularCapillaries.MapPath(LeftNetTubulesToNetPeritubularCapillaries); /////////////////////////////////////////////////// // LeftEfferentArterioleToPeritubularCapillaries // - SELiquidCompartmentLink& vLeftEfferentArterioleToPeritubularCapillaries = m_Compartments->CreateLiquidLink(vLeftEfferentArteriole, vLeftPeritubularCapillaries, pulse::ExpandedVascularLink::LeftEfferentArterioleToPeritubularCapillaries); + SELiquidCompartmentLink& vLeftEfferentArterioleToPeritubularCapillaries = m_Compartments->CreateLiquidLink(vLeftEfferentArteriole, vLeftPeritubularCapillaries, pulse::VascularLink::LeftEfferentArterioleToPeritubularCapillaries); vLeftEfferentArterioleToPeritubularCapillaries.MapPath(LeftEfferentArterioleToPeritubularCapillaries); /////////////////////////////////////////// // LeftPeritubularCapillariesToRenalVein // - SELiquidCompartmentLink& vLeftPeritubularCapillariesToRenalVein = m_Compartments->CreateLiquidLink(vLeftPeritubularCapillaries, vLeftRenalVein, pulse::ExpandedVascularLink::LeftPeritubularCapillariesToRenalVein); + SELiquidCompartmentLink& vLeftPeritubularCapillariesToRenalVein = m_Compartments->CreateLiquidLink(vLeftPeritubularCapillaries, vLeftRenalVein, pulse::VascularLink::LeftPeritubularCapillariesToRenalVein); vLeftPeritubularCapillariesToRenalVein.MapPath(LeftPeritubularCapillariesToRenalVein); ///////////////////////////// // LeftRenalVeinToVenaCava // - m_Compartments->DeleteLiquidLink(pulse::ExpandedVascularLink::LeftKidneyToVenaCava);// Replace this link - SELiquidCompartmentLink& vLeftRenalVeinToVenaCava = m_Compartments->CreateLiquidLink(vLeftRenalVein, vVenousBuffer, pulse::ExpandedVascularLink::LeftKidneyToVenaCava); + m_Compartments->DeleteLiquidLink(pulse::VascularLink::LeftKidneyToVenaCava);// Replace this link + SELiquidCompartmentLink& vLeftRenalVeinToVenaCava = m_Compartments->CreateLiquidLink(vLeftRenalVein, vVenousBuffer, pulse::VascularLink::LeftKidneyToVenaCava); vLeftRenalVeinToVenaCava.MapPath(LeftKidney3ToVenaCava2); /////////// @@ -2596,23 +2596,23 @@ namespace pulse gCombinedCardiovascular.StateChange(); } - void Controller::SetupExpandedCardiovascularTissue() + void Controller::SetupComputationalLifeTissue() { - Info("Setting Up Expanded Cardiovascular Tissue"); + Info("Setting Up ComputationalLife Tissue"); SEFluidCircuit& cCardiovascular = m_Circuits->GetCardiovascularCircuit(); SEFluidCircuit& cCombinedCardiovascular = m_Circuits->GetActiveCardiovascularCircuit(); - SEFluidCircuitNode* Ground = cCombinedCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::Ground); + SEFluidCircuitNode* Ground = cCombinedCardiovascular.GetNode(pulse::CardiovascularNode::Ground); /////////// // Lymph // SEFluidCircuitNode& Lymph = cCombinedCardiovascular.CreateNode(pulse::TissueNode::Lymph); Lymph.GetPressure().SetValue(0, PressureUnit::mmHg); Lymph.GetVolumeBaseline().SetValue(0, VolumeUnit::mL); - SEFluidCircuitNode* VenaCava1 = cCombinedCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::VenaCava1); - SEFluidCircuitPath& LymphToVenaCava = cCombinedCardiovascular.CreatePath(Lymph, *VenaCava1, pulse::ExpandedCardiovascularTissuePath::LymphToVenaCava); + SEFluidCircuitNode* VenaCava1 = cCombinedCardiovascular.GetNode(pulse::CardiovascularNode::VenaCava1); + SEFluidCircuitPath& LymphToVenaCava = cCombinedCardiovascular.CreatePath(Lymph, *VenaCava1, pulse::TissuePath::LymphToVenaCava1); // No resistance - if it goes to lymph then it goes to vena cava - SELiquidCompartment* cVenaCava = m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::VenaCava); + SELiquidCompartment* cVenaCava = m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::VenaCava); SELiquidCompartment& cLymph = m_Compartments->CreateLiquidCompartment(pulse::LymphCompartment::Lymph); cLymph.MapNode(Lymph); @@ -2766,11 +2766,11 @@ namespace pulse ///////// // Fat // - SEFluidCircuitNode* TorsoFat1 = cCombinedCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::TorsoFat1); - SEFluidCircuitNode* LeftArmFat1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftArmFat1); - SEFluidCircuitNode* LeftLegFat1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftLegFat1); - SEFluidCircuitNode* RightArmFat1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::RightArmFat1); - SEFluidCircuitNode* RightLegFat1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::RightLegFat1); + SEFluidCircuitNode* TorsoFat1 = cCombinedCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::TorsoFat1); + SEFluidCircuitNode* LeftArmFat1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::LeftArmFat1); + SEFluidCircuitNode* LeftLegFat1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::LeftLegFat1); + SEFluidCircuitNode* RightArmFat1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::RightArmFat1); + SEFluidCircuitNode* RightLegFat1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::RightLegFat1); SEFluidCircuitNode& FatT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::FatT1); SEFluidCircuitNode& FatT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::FatT2); SEFluidCircuitNode& FatT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::FatT3); @@ -2778,24 +2778,24 @@ namespace pulse FatT3.GetPressure().Set(Ground->GetPressure()); FatT1.GetVolumeBaseline().SetValue(AdiposeEWFraction * AdiposeTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& TorsoFat1ToFatT2 = cCombinedCardiovascular.CreatePath(*TorsoFat1, FatT2, pulse::ExpandedCardiovascularTissuePath::TorsoFat1ToFatT2); + SEFluidCircuitPath& TorsoFat1ToFatT2 = cCombinedCardiovascular.CreatePath(*TorsoFat1, FatT2, pulse::ComputationalLifeTissuePath::TorsoFat1ToFatT2); TorsoFat1ToFatT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftArmFat1ToFatT2 = cCombinedCardiovascular.CreatePath(*LeftArmFat1, FatT2, pulse::ExpandedCardiovascularTissuePath::LeftArmFat1ToFatT2); + SEFluidCircuitPath& LeftArmFat1ToFatT2 = cCombinedCardiovascular.CreatePath(*LeftArmFat1, FatT2, pulse::ComputationalLifeTissuePath::LeftArmFat1ToFatT2); LeftArmFat1ToFatT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftLegFat1ToFatT2 = cCombinedCardiovascular.CreatePath(*LeftLegFat1, FatT2, pulse::ExpandedCardiovascularTissuePath::LeftLegFat1ToFatT2); + SEFluidCircuitPath& LeftLegFat1ToFatT2 = cCombinedCardiovascular.CreatePath(*LeftLegFat1, FatT2, pulse::ComputationalLifeTissuePath::LeftLegFat1ToFatT2); LeftLegFat1ToFatT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightArmFat1ToFatT2 = cCombinedCardiovascular.CreatePath(*RightArmFat1, FatT2, pulse::ExpandedCardiovascularTissuePath::RightArmFat1ToFatT2); + SEFluidCircuitPath& RightArmFat1ToFatT2 = cCombinedCardiovascular.CreatePath(*RightArmFat1, FatT2, pulse::ComputationalLifeTissuePath::RightArmFat1ToFatT2); RightArmFat1ToFatT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightLegFat1ToFatT2 = cCombinedCardiovascular.CreatePath(*RightLegFat1, FatT2, pulse::ExpandedCardiovascularTissuePath::RightLegFat1ToFatT2); + SEFluidCircuitPath& RightLegFat1ToFatT2 = cCombinedCardiovascular.CreatePath(*RightLegFat1, FatT2, pulse::ComputationalLifeTissuePath::RightLegFat1ToFatT2); RightLegFat1ToFatT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& FatT2ToFatT1 = cCombinedCardiovascular.CreatePath(FatT2, FatT1, pulse::ExpandedCardiovascularTissuePath::FatT2ToFatT1); + SEFluidCircuitPath& FatT2ToFatT1 = cCombinedCardiovascular.CreatePath(FatT2, FatT1, pulse::TissuePath::FatT2ToFatT1); FatT2ToFatT1.GetResistanceBaseline().SetValue((1 / AdiposeTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& FatT1ToFatT3 = cCombinedCardiovascular.CreatePath(FatT1, FatT3, pulse::ExpandedCardiovascularTissuePath::FatT1ToFatT3); + SEFluidCircuitPath& FatT1ToFatT3 = cCombinedCardiovascular.CreatePath(FatT1, FatT3, pulse::TissuePath::FatT1ToFatT3); FatT1ToFatT3.GetComplianceBaseline().SetValue(FatT1.GetVolumeBaseline(VolumeUnit::mL) / FatT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToFatT3 = cCombinedCardiovascular.CreatePath(*Ground, FatT3, pulse::ExpandedCardiovascularTissuePath::GroundToFatT3); + SEFluidCircuitPath& GroundToFatT3 = cCombinedCardiovascular.CreatePath(*Ground, FatT3, pulse::TissuePath::GroundToFatT3); GroundToFatT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& FatT1ToLymph = cCombinedCardiovascular.CreatePath(FatT1, Lymph, pulse::ExpandedCardiovascularTissuePath::FatT1ToLymph); + SEFluidCircuitPath& FatT1ToLymph = cCombinedCardiovascular.CreatePath(FatT1, Lymph, pulse::TissuePath::FatT1ToLymph); FatT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& FatTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::Fat); @@ -2816,20 +2816,20 @@ namespace pulse FatTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(AdiposeLRatio); FatTissue.GetTotalMass().SetValue(AdiposeTissueMass, MassUnit::kg); - SELiquidCompartmentLink& TorsoFatVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoFat), - FatExtracellular, pulse::ExpandedVascularLink::TorsoFatVascularToTissue); + SELiquidCompartmentLink& TorsoFatVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoFat), + FatExtracellular, pulse::ComputationalLifeVascularLink::TorsoFatVascularToTissue); TorsoFatVascularToTissue.MapPath(TorsoFat1ToFatT2); - SELiquidCompartmentLink& LeftArmFatVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmFat), - FatExtracellular, pulse::ExpandedVascularLink::LeftArmFatVascularToTissue); + SELiquidCompartmentLink& LeftArmFatVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmFat), + FatExtracellular, pulse::ComputationalLifeVascularLink::LeftArmFatVascularToTissue); LeftArmFatVascularToTissue.MapPath(LeftArmFat1ToFatT2); - SELiquidCompartmentLink& LeftLegFatVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegFat), - FatExtracellular, pulse::ExpandedVascularLink::LeftLegFatVascularToTissue); + SELiquidCompartmentLink& LeftLegFatVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegFat), + FatExtracellular, pulse::ComputationalLifeVascularLink::LeftLegFatVascularToTissue); LeftLegFatVascularToTissue.MapPath(LeftLegFat1ToFatT2); - SELiquidCompartmentLink& RightArmFatVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmFat), - FatExtracellular, pulse::ExpandedVascularLink::RightArmFatVascularToTissue); + SELiquidCompartmentLink& RightArmFatVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmFat), + FatExtracellular, pulse::ComputationalLifeVascularLink::RightArmFatVascularToTissue); RightArmFatVascularToTissue.MapPath(RightArmFat1ToFatT2); - SELiquidCompartmentLink& RightLegFatVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegFat), - FatExtracellular, pulse::ExpandedVascularLink::RightLegFatVascularToTissue); + SELiquidCompartmentLink& RightLegFatVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegFat), + FatExtracellular, pulse::ComputationalLifeVascularLink::RightLegFatVascularToTissue); RightLegFatVascularToTissue.MapPath(RightLegFat1ToFatT2); SELiquidCompartmentLink& FatTissueToLymph = m_Compartments->CreateLiquidLink(FatExtracellular, cLymph, pulse::LymphLink::FatTissueToLymph); @@ -2837,11 +2837,11 @@ namespace pulse ////////// // Bone // - SEFluidCircuitNode* TorsoBone1 = cCombinedCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::TorsoBone1); - SEFluidCircuitNode* LeftArmBone1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftArmBone1); - SEFluidCircuitNode* LeftLegBone1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftLegBone1); - SEFluidCircuitNode* RightArmBone1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::RightArmBone1); - SEFluidCircuitNode* RightLegBone1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::RightLegBone1); + SEFluidCircuitNode* TorsoBone1 = cCombinedCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::TorsoBone1); + SEFluidCircuitNode* LeftArmBone1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::LeftArmBone1); + SEFluidCircuitNode* LeftLegBone1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::LeftLegBone1); + SEFluidCircuitNode* RightArmBone1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::RightArmBone1); + SEFluidCircuitNode* RightLegBone1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::RightLegBone1); SEFluidCircuitNode& BoneT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::BoneT1); SEFluidCircuitNode& BoneT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::BoneT2); SEFluidCircuitNode& BoneT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::BoneT3); @@ -2849,24 +2849,24 @@ namespace pulse BoneT3.GetPressure().Set(Ground->GetPressure()); BoneT1.GetVolumeBaseline().SetValue(BoneEWFraction * BoneTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& TorsoBone1ToBoneT2 = cCombinedCardiovascular.CreatePath(*TorsoBone1, BoneT2, pulse::ExpandedCardiovascularTissuePath::TorsoBone1ToBoneT2); + SEFluidCircuitPath& TorsoBone1ToBoneT2 = cCombinedCardiovascular.CreatePath(*TorsoBone1, BoneT2, pulse::ComputationalLifeTissuePath::TorsoBone1ToBoneT2); TorsoBone1ToBoneT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftArmBone1ToBoneT2 = cCombinedCardiovascular.CreatePath(*LeftArmBone1, BoneT2, pulse::ExpandedCardiovascularTissuePath::LeftArmBone1ToBoneT2); + SEFluidCircuitPath& LeftArmBone1ToBoneT2 = cCombinedCardiovascular.CreatePath(*LeftArmBone1, BoneT2, pulse::ComputationalLifeTissuePath::LeftArmBone1ToBoneT2); LeftArmBone1ToBoneT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftLegBone1ToBoneT2 = cCombinedCardiovascular.CreatePath(*LeftLegBone1, BoneT2, pulse::ExpandedCardiovascularTissuePath::LeftLegBone1ToBoneT2); + SEFluidCircuitPath& LeftLegBone1ToBoneT2 = cCombinedCardiovascular.CreatePath(*LeftLegBone1, BoneT2, pulse::ComputationalLifeTissuePath::LeftLegBone1ToBoneT2); LeftLegBone1ToBoneT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightArmBone1ToBoneT2 = cCombinedCardiovascular.CreatePath(*RightArmBone1, BoneT2, pulse::ExpandedCardiovascularTissuePath::RightArmBone1ToBoneT2); + SEFluidCircuitPath& RightArmBone1ToBoneT2 = cCombinedCardiovascular.CreatePath(*RightArmBone1, BoneT2, pulse::ComputationalLifeTissuePath::RightArmBone1ToBoneT2); RightArmBone1ToBoneT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightLegBone1ToBoneT2 = cCombinedCardiovascular.CreatePath(*RightLegBone1, BoneT2, pulse::ExpandedCardiovascularTissuePath::RightLegBone1ToBoneT2); + SEFluidCircuitPath& RightLegBone1ToBoneT2 = cCombinedCardiovascular.CreatePath(*RightLegBone1, BoneT2, pulse::ComputationalLifeTissuePath::RightLegBone1ToBoneT2); RightLegBone1ToBoneT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& BoneT2ToBoneT1 = cCombinedCardiovascular.CreatePath(BoneT2, BoneT1, pulse::ExpandedCardiovascularTissuePath::BoneT2ToBoneT1); + SEFluidCircuitPath& BoneT2ToBoneT1 = cCombinedCardiovascular.CreatePath(BoneT2, BoneT1, pulse::TissuePath::BoneT2ToBoneT1); BoneT2ToBoneT1.GetResistanceBaseline().SetValue((1 / BoneTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& BoneT1ToBoneT3 = cCombinedCardiovascular.CreatePath(BoneT1, BoneT3, pulse::ExpandedCardiovascularTissuePath::BoneT1ToBoneT3); + SEFluidCircuitPath& BoneT1ToBoneT3 = cCombinedCardiovascular.CreatePath(BoneT1, BoneT3, pulse::TissuePath::BoneT1ToBoneT3); BoneT1ToBoneT3.GetComplianceBaseline().SetValue(BoneT1.GetVolumeBaseline(VolumeUnit::mL) / BoneT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToBoneT3 = cCombinedCardiovascular.CreatePath(*Ground, BoneT3, pulse::ExpandedCardiovascularTissuePath::GroundToBoneT3); + SEFluidCircuitPath& GroundToBoneT3 = cCombinedCardiovascular.CreatePath(*Ground, BoneT3, pulse::TissuePath::GroundToBoneT3); GroundToBoneT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& BoneT1ToLymph = cCombinedCardiovascular.CreatePath(BoneT1, Lymph, pulse::ExpandedCardiovascularTissuePath::BoneT1ToLymph); + SEFluidCircuitPath& BoneT1ToLymph = cCombinedCardiovascular.CreatePath(BoneT1, Lymph, pulse::TissuePath::BoneT1ToLymph); BoneT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& BoneTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::Bone); @@ -2887,20 +2887,20 @@ namespace pulse BoneTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(BoneLRatio); BoneTissue.GetTotalMass().SetValue(BoneTissueMass, MassUnit::kg); - SELiquidCompartmentLink& TorsoBoneVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoBone), - BoneExtracellular, pulse::ExpandedVascularLink::TorsoBoneVascularToTissue); + SELiquidCompartmentLink& TorsoBoneVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoBone), + BoneExtracellular, pulse::ComputationalLifeVascularLink::TorsoBoneVascularToTissue); TorsoBoneVascularToTissue.MapPath(TorsoBone1ToBoneT2); - SELiquidCompartmentLink& LeftArmBoneVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmBone), - BoneExtracellular, pulse::ExpandedVascularLink::LeftArmBoneVascularToTissue); + SELiquidCompartmentLink& LeftArmBoneVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmBone), + BoneExtracellular, pulse::ComputationalLifeVascularLink::LeftArmBoneVascularToTissue); LeftArmBoneVascularToTissue.MapPath(LeftArmBone1ToBoneT2); - SELiquidCompartmentLink& LeftLegBoneVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegBone), - BoneExtracellular, pulse::ExpandedVascularLink::LeftLegBoneVascularToTissue); + SELiquidCompartmentLink& LeftLegBoneVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegBone), + BoneExtracellular, pulse::ComputationalLifeVascularLink::LeftLegBoneVascularToTissue); LeftLegBoneVascularToTissue.MapPath(LeftLegBone1ToBoneT2); - SELiquidCompartmentLink& RightArmBoneVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmBone), - BoneExtracellular, pulse::ExpandedVascularLink::RightArmBoneVascularToTissue); + SELiquidCompartmentLink& RightArmBoneVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmBone), + BoneExtracellular, pulse::ComputationalLifeVascularLink::RightArmBoneVascularToTissue); RightArmBoneVascularToTissue.MapPath(RightArmBone1ToBoneT2); - SELiquidCompartmentLink& RightLegBoneVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegBone), - BoneExtracellular, pulse::ExpandedVascularLink::RightLegBoneVascularToTissue); + SELiquidCompartmentLink& RightLegBoneVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegBone), + BoneExtracellular, pulse::ComputationalLifeVascularLink::RightLegBoneVascularToTissue); RightLegBoneVascularToTissue.MapPath(RightLegBone1ToBoneT2); SELiquidCompartmentLink& BoneTissueToLymph = m_Compartments->CreateLiquidLink(BoneExtracellular, cLymph, pulse::LymphLink::BoneTissueToLymph); @@ -2908,7 +2908,7 @@ namespace pulse /////////// // Brain // - SEFluidCircuitNode* Intracranial2 = cCombinedCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::Intracranial2); + SEFluidCircuitNode* Intracranial2 = cCombinedCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::Intracranial2); SEFluidCircuitNode& BrainT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::BrainT1); SEFluidCircuitNode& BrainT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::BrainT2); SEFluidCircuitNode& BrainT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::BrainT3); @@ -2916,16 +2916,16 @@ namespace pulse BrainT3.GetPressure().Set(Ground->GetPressure()); BrainT1.GetVolumeBaseline().SetValue(BrainEWFraction * BrainTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& Intracranial1ToBrainT2 = cCombinedCardiovascular.CreatePath(*Intracranial2, BrainT2, pulse::ExpandedCardiovascularTissuePath::Intracranial2ToBrainT2); + SEFluidCircuitPath& Intracranial1ToBrainT2 = cCombinedCardiovascular.CreatePath(*Intracranial2, BrainT2, pulse::ComputationalLifeTissuePath::Intracranial2ToBrainT2); Intracranial1ToBrainT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& BrainT2ToBrainT1 = cCombinedCardiovascular.CreatePath(BrainT2, BrainT1, pulse::ExpandedCardiovascularTissuePath::BrainT2ToBrainT1); + SEFluidCircuitPath& BrainT2ToBrainT1 = cCombinedCardiovascular.CreatePath(BrainT2, BrainT1, pulse::TissuePath::BrainT2ToBrainT1); BrainT2ToBrainT1.GetResistanceBaseline().SetValue((1 / BrainTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& BrainT1ToBrainT3 = cCombinedCardiovascular.CreatePath(BrainT1, BrainT3, pulse::ExpandedCardiovascularTissuePath::BrainT1ToBrainT3); + SEFluidCircuitPath& BrainT1ToBrainT3 = cCombinedCardiovascular.CreatePath(BrainT1, BrainT3, pulse::TissuePath::BrainT1ToBrainT3); BrainT1ToBrainT3.GetComplianceBaseline().SetValue(BrainT1.GetVolumeBaseline(VolumeUnit::mL) / BrainT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToBrainT3 = cCombinedCardiovascular.CreatePath(*Ground, BrainT3, pulse::ExpandedCardiovascularTissuePath::GroundToBrainT3); + SEFluidCircuitPath& GroundToBrainT3 = cCombinedCardiovascular.CreatePath(*Ground, BrainT3, pulse::TissuePath::GroundToBrainT3); GroundToBrainT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& BrainT1ToLymph = cCombinedCardiovascular.CreatePath(BrainT1, Lymph, pulse::ExpandedCardiovascularTissuePath::BrainT1ToLymph); + SEFluidCircuitPath& BrainT1ToLymph = cCombinedCardiovascular.CreatePath(BrainT1, Lymph, pulse::TissuePath::BrainT1ToLymph); BrainT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& BrainTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::Brain); @@ -2946,8 +2946,8 @@ namespace pulse BrainTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(BrainLRatio); BrainTissue.GetTotalMass().SetValue(BrainTissueMass, MassUnit::kg); - SELiquidCompartmentLink& BrainVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::Intracranial), - BrainExtracellular, pulse::ExpandedVascularLink::BrainVascularToTissue); + SELiquidCompartmentLink& BrainVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::Intracranial), + BrainExtracellular, pulse::VascularLink::BrainVascularToTissue); BrainVascularToTissue.MapPath(Intracranial1ToBrainT2); SELiquidCompartmentLink& BrainTissueToLymph = m_Compartments->CreateLiquidLink(BrainExtracellular, cLymph, pulse::LymphLink::BrainTissueToLymph); @@ -2955,9 +2955,9 @@ namespace pulse ///////// // Gut // - SEFluidCircuitNode* SmallIntestine = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::SmallIntestine1); - SEFluidCircuitNode* LargeIntestine = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LargeIntestine1); - SEFluidCircuitNode* Splanchnic = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::Splanchnic1); + SEFluidCircuitNode* SmallIntestine = cCardiovascular.GetNode(pulse::CardiovascularNode::SmallIntestine1); + SEFluidCircuitNode* LargeIntestine = cCardiovascular.GetNode(pulse::CardiovascularNode::LargeIntestine1); + SEFluidCircuitNode* Splanchnic = cCardiovascular.GetNode(pulse::CardiovascularNode::Splanchnic1); SEFluidCircuitNode& GutT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::GutT1); SEFluidCircuitNode& GutT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::GutT2); SEFluidCircuitNode& GutT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::GutT3); @@ -2965,20 +2965,20 @@ namespace pulse GutT3.GetPressure().Set(Ground->GetPressure()); GutT1.GetVolumeBaseline().SetValue(GutEWFraction * GutTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& SmallIntestine1ToGutT2 = cCombinedCardiovascular.CreatePath(*SmallIntestine, GutT2, pulse::ExpandedCardiovascularTissuePath::SmallIntestine1ToGutT2); + SEFluidCircuitPath& SmallIntestine1ToGutT2 = cCombinedCardiovascular.CreatePath(*SmallIntestine, GutT2, pulse::TissuePath::SmallIntestine1ToGutT2); SmallIntestine1ToGutT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LargeIntestine1ToGutT2 = cCombinedCardiovascular.CreatePath(*LargeIntestine, GutT2, pulse::ExpandedCardiovascularTissuePath::LargeIntestine1ToGutT2); + SEFluidCircuitPath& LargeIntestine1ToGutT2 = cCombinedCardiovascular.CreatePath(*LargeIntestine, GutT2, pulse::TissuePath::LargeIntestine1ToGutT2); LargeIntestine1ToGutT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& Splanchnic1ToGutT2 = cCombinedCardiovascular.CreatePath(*Splanchnic, GutT2, pulse::ExpandedCardiovascularTissuePath::Splanchnic1ToGutT2); + SEFluidCircuitPath& Splanchnic1ToGutT2 = cCombinedCardiovascular.CreatePath(*Splanchnic, GutT2, pulse::TissuePath::Splanchnic1ToGutT2); Splanchnic1ToGutT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& GutT2ToGutT1 = cCombinedCardiovascular.CreatePath(GutT2, GutT1, pulse::ExpandedCardiovascularTissuePath::GutT2ToGutT1); + SEFluidCircuitPath& GutT2ToGutT1 = cCombinedCardiovascular.CreatePath(GutT2, GutT1, pulse::TissuePath::GutT2ToGutT1); GutT2ToGutT1.GetResistanceBaseline().SetValue((1 / GutTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& GutT1ToGutT3 = cCombinedCardiovascular.CreatePath(GutT1, GutT3, pulse::ExpandedCardiovascularTissuePath::GutT1ToGutT3); + SEFluidCircuitPath& GutT1ToGutT3 = cCombinedCardiovascular.CreatePath(GutT1, GutT3, pulse::TissuePath::GutT1ToGutT3); GutT1ToGutT3.GetComplianceBaseline().SetValue(GutT1.GetVolumeBaseline(VolumeUnit::mL) / GutT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToGutT3 = cCombinedCardiovascular.CreatePath(*Ground, GutT3, pulse::ExpandedCardiovascularTissuePath::GroundToGutT3); + SEFluidCircuitPath& GroundToGutT3 = cCombinedCardiovascular.CreatePath(*Ground, GutT3, pulse::TissuePath::GroundToGutT3); GroundToGutT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& GutT1ToLymph = cCombinedCardiovascular.CreatePath(GutT1, Lymph, pulse::ExpandedCardiovascularTissuePath::GutT1ToLymph); + SEFluidCircuitPath& GutT1ToLymph = cCombinedCardiovascular.CreatePath(GutT1, Lymph, pulse::TissuePath::GutT1ToLymph); GutT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& GutTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::Gut); @@ -2999,16 +2999,16 @@ namespace pulse GutTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(GutLRatio); GutTissue.GetTotalMass().SetValue(GutTissueMass, MassUnit::kg); - SELiquidCompartmentLink& SmallIntestineVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::SmallIntestine), - GutExtracellular, pulse::ExpandedVascularLink::SmallIntestineVascularToTissue); + SELiquidCompartmentLink& SmallIntestineVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::SmallIntestine), + GutExtracellular, pulse::VascularLink::SmallIntestineVascularToTissue); SmallIntestineVascularToTissue.MapPath(SmallIntestine1ToGutT2); - SELiquidCompartmentLink& LargeIntestineVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::LargeIntestine), - GutExtracellular, pulse::ExpandedVascularLink::LargeIntestineVascularToTissue); + SELiquidCompartmentLink& LargeIntestineVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::LargeIntestine), + GutExtracellular, pulse::VascularLink::LargeIntestineVascularToTissue); LargeIntestineVascularToTissue.MapPath(LargeIntestine1ToGutT2); - SELiquidCompartmentLink& SplanchnicVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::Splanchnic), - GutExtracellular, pulse::ExpandedVascularLink::SplanchnicVascularToTissue); + SELiquidCompartmentLink& SplanchnicVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::Splanchnic), + GutExtracellular, pulse::VascularLink::SplanchnicVascularToTissue); SplanchnicVascularToTissue.MapPath(Splanchnic1ToGutT2); SELiquidCompartmentLink& GutTissueToLymph = m_Compartments->CreateLiquidLink(GutExtracellular, cLymph, pulse::LymphLink::GutTissueToLymph); @@ -3017,10 +3017,10 @@ namespace pulse ///////////////// // Left Kidney // SEFluidCircuitNode* LeftKidney2; - if (!m_Config->IsRenalEnabled()) - LeftKidney2 = cCombinedCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftKidney2); - else + if (m_Config->UseExpandedKidneys() == eSwitch::On) LeftKidney2 = cCombinedCardiovascular.GetNode(pulse::RenalNode::LeftGlomerularCapillaries); + else + LeftKidney2 = cCombinedCardiovascular.GetNode(pulse::CardiovascularNode::LeftKidney2); SEFluidCircuitNode& LeftKidneyT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftKidneyT1); SEFluidCircuitNode& LeftKidneyT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftKidneyT2); @@ -3029,16 +3029,16 @@ namespace pulse LeftKidneyT3.GetPressure().Set(Ground->GetPressure()); LeftKidneyT1.GetVolumeBaseline().SetValue(LKidneyEWFraction * LKidneyTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& LeftKidney2ToLeftKidneyT2 = cCombinedCardiovascular.CreatePath(*LeftKidney2, LeftKidneyT2, pulse::ExpandedCardiovascularTissuePath::LeftKidney2ToLeftKidneyT2); + SEFluidCircuitPath& LeftKidney2ToLeftKidneyT2 = cCombinedCardiovascular.CreatePath(*LeftKidney2, LeftKidneyT2, pulse::ComputationalLifeTissuePath::LeftKidney2ToLeftKidneyT2); LeftKidney2ToLeftKidneyT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftKidneyT2ToLeftKidneyT1 = cCombinedCardiovascular.CreatePath(LeftKidneyT2, LeftKidneyT1, pulse::ExpandedCardiovascularTissuePath::LeftKidneyT2ToLeftKidneyT1); + SEFluidCircuitPath& LeftKidneyT2ToLeftKidneyT1 = cCombinedCardiovascular.CreatePath(LeftKidneyT2, LeftKidneyT1, pulse::TissuePath::LeftKidneyT2ToLeftKidneyT1); LeftKidneyT2ToLeftKidneyT1.GetResistanceBaseline().SetValue((1 / LKidneyTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftKidneyT1ToLeftKidneyT3 = cCombinedCardiovascular.CreatePath(LeftKidneyT1, LeftKidneyT3, pulse::ExpandedCardiovascularTissuePath::LeftKidneyT1ToLeftKidneyT3); + SEFluidCircuitPath& LeftKidneyT1ToLeftKidneyT3 = cCombinedCardiovascular.CreatePath(LeftKidneyT1, LeftKidneyT3, pulse::TissuePath::LeftKidneyT1ToLeftKidneyT3); LeftKidneyT1ToLeftKidneyT3.GetComplianceBaseline().SetValue(LeftKidneyT1.GetVolumeBaseline(VolumeUnit::mL) / LeftKidneyT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToLeftKidneyT3 = cCombinedCardiovascular.CreatePath(*Ground, LeftKidneyT3, pulse::ExpandedCardiovascularTissuePath::GroundToLeftKidneyT3); + SEFluidCircuitPath& GroundToLeftKidneyT3 = cCombinedCardiovascular.CreatePath(*Ground, LeftKidneyT3, pulse::TissuePath::GroundToLeftKidneyT3); GroundToLeftKidneyT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftKidneyT1ToLymph = cCombinedCardiovascular.CreatePath(LeftKidneyT1, Lymph, pulse::ExpandedCardiovascularTissuePath::LeftKidneyT1ToLymph); + SEFluidCircuitPath& LeftKidneyT1ToLymph = cCombinedCardiovascular.CreatePath(LeftKidneyT1, Lymph, pulse::TissuePath::LeftKidneyT1ToLymph); LeftKidneyT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& LeftKidneyTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::LeftKidney); @@ -3059,8 +3059,8 @@ namespace pulse LeftKidneyTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(LKidneyLRatio); LeftKidneyTissue.GetTotalMass().SetValue(LKidneyTissueMass, MassUnit::kg); - SELiquidCompartmentLink& LeftKidneyVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftKidney), - LeftKidneyExtracellular, pulse::ExpandedVascularLink::LeftKidneyVascularToTissue); + SELiquidCompartmentLink& LeftKidneyVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::LeftKidney), + LeftKidneyExtracellular, pulse::VascularLink::LeftKidneyVascularToTissue); LeftKidneyVascularToTissue.MapPath(LeftKidney2ToLeftKidneyT2); SELiquidCompartmentLink& LeftKidneyTissueToLymph = m_Compartments->CreateLiquidLink(LeftKidneyExtracellular, cLymph, pulse::LymphLink::LeftKidneyTissueToLymph); @@ -3068,7 +3068,7 @@ namespace pulse /////////////// // Left Lung // - SEFluidCircuitNode* LeftPulmonaryCapillaries1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftPulmonaryCapillaries1); + SEFluidCircuitNode* LeftPulmonaryCapillaries1 = cCardiovascular.GetNode(pulse::CardiovascularNode::LeftPulmonaryCapillaries1); SEFluidCircuitNode& LeftLungT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftLungT1); SEFluidCircuitNode& LeftLungT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftLungT2); SEFluidCircuitNode& LeftLungT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LeftLungT3); @@ -3076,16 +3076,16 @@ namespace pulse LeftLungT3.GetPressure().Set(Ground->GetPressure()); LeftLungT1.GetVolumeBaseline().SetValue(LLungEWFraction * LLungTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& LeftLung1ToLeftLungT2 = cCombinedCardiovascular.CreatePath(*LeftPulmonaryCapillaries1, LeftLungT2, pulse::ExpandedCardiovascularTissuePath::LeftLung1ToLeftLungT2); + SEFluidCircuitPath& LeftLung1ToLeftLungT2 = cCombinedCardiovascular.CreatePath(*LeftPulmonaryCapillaries1, LeftLungT2, pulse::TissuePath::LeftLung1ToLeftLungT2); LeftLung1ToLeftLungT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftLungT2ToLeftLungT1 = cCombinedCardiovascular.CreatePath(LeftLungT2, LeftLungT1, pulse::ExpandedCardiovascularTissuePath::LeftLungT2ToLeftLungT1); + SEFluidCircuitPath& LeftLungT2ToLeftLungT1 = cCombinedCardiovascular.CreatePath(LeftLungT2, LeftLungT1, pulse::TissuePath::LeftLungT2ToLeftLungT1); LeftLungT2ToLeftLungT1.GetResistanceBaseline().SetValue((1 / LLungTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LeftLungT1ToLeftLungT3 = cCombinedCardiovascular.CreatePath(LeftLungT1, LeftLungT3, pulse::ExpandedCardiovascularTissuePath::LeftLungT1ToLeftLungT3); + SEFluidCircuitPath& LeftLungT1ToLeftLungT3 = cCombinedCardiovascular.CreatePath(LeftLungT1, LeftLungT3, pulse::TissuePath::LeftLungT1ToLeftLungT3); LeftLungT1ToLeftLungT3.GetComplianceBaseline().SetValue(LeftLungT1.GetVolumeBaseline(VolumeUnit::mL) / LeftLungT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToLeftLungT3 = cCombinedCardiovascular.CreatePath(*Ground, LeftLungT3, pulse::ExpandedCardiovascularTissuePath::GroundToLeftLungT3); + SEFluidCircuitPath& GroundToLeftLungT3 = cCombinedCardiovascular.CreatePath(*Ground, LeftLungT3, pulse::TissuePath::GroundToLeftLungT3); GroundToLeftLungT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftLungT1ToLymph = cCombinedCardiovascular.CreatePath(LeftLungT1, Lymph, pulse::ExpandedCardiovascularTissuePath::LeftLungT1ToLymph); + SEFluidCircuitPath& LeftLungT1ToLymph = cCombinedCardiovascular.CreatePath(LeftLungT1, Lymph, pulse::TissuePath::LeftLungT1ToLymph); LeftLungT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& LeftLungTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::LeftLung); @@ -3106,8 +3106,8 @@ namespace pulse LeftLungTissue.GetTissueToPlasmaAlphaAcidGlycoproteinRatio().SetValue(LLungAAGRatio); LeftLungTissue.GetTotalMass().SetValue(LLungTissueMass, MassUnit::kg); - SELiquidCompartmentLink& LeftLungVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLung), - LeftLungExtracellular, pulse::ExpandedVascularLink::LeftLungVascularToTissue); + SELiquidCompartmentLink& LeftLungVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::LeftLung), + LeftLungExtracellular, pulse::VascularLink::LeftLungVascularToTissue); LeftLungVascularToTissue.MapPath(LeftLung1ToLeftLungT2); SELiquidCompartmentLink& LeftLungTissueToLymph = m_Compartments->CreateLiquidLink(LeftLungExtracellular, cLymph, pulse::LymphLink::LeftLungTissueToLymph); @@ -3115,7 +3115,7 @@ namespace pulse /////////// // Liver // - SEFluidCircuitNode* Liver1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::Liver1); + SEFluidCircuitNode* Liver1 = cCardiovascular.GetNode(pulse::CardiovascularNode::Liver1); SEFluidCircuitNode& LiverT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LiverT1); SEFluidCircuitNode& LiverT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LiverT2); SEFluidCircuitNode& LiverT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::LiverT3); @@ -3123,16 +3123,16 @@ namespace pulse LiverT3.GetPressure().Set(Ground->GetPressure()); LiverT1.GetVolumeBaseline().SetValue(LiverEWFraction * LiverTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& Liver1ToLiverT2 = cCombinedCardiovascular.CreatePath(*Liver1, LiverT2, pulse::ExpandedCardiovascularTissuePath::Liver1ToLiverT2); + SEFluidCircuitPath& Liver1ToLiverT2 = cCombinedCardiovascular.CreatePath(*Liver1, LiverT2, pulse::TissuePath::Liver1ToLiverT2); Liver1ToLiverT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LiverT2ToLiverT1 = cCombinedCardiovascular.CreatePath(LiverT2, LiverT1, pulse::ExpandedCardiovascularTissuePath::LiverT2ToLiverT1); + SEFluidCircuitPath& LiverT2ToLiverT1 = cCombinedCardiovascular.CreatePath(LiverT2, LiverT1, pulse::TissuePath::LiverT2ToLiverT1); LiverT2ToLiverT1.GetResistanceBaseline().SetValue((1 / LiverTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& LiverT1ToLiverT3 = cCombinedCardiovascular.CreatePath(LiverT1, LiverT3, pulse::ExpandedCardiovascularTissuePath::LiverT1ToLiverT3); + SEFluidCircuitPath& LiverT1ToLiverT3 = cCombinedCardiovascular.CreatePath(LiverT1, LiverT3, pulse::TissuePath::LiverT1ToLiverT3); LiverT1ToLiverT3.GetComplianceBaseline().SetValue(LiverT1.GetVolumeBaseline(VolumeUnit::mL) / LiverT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToLiverT3 = cCombinedCardiovascular.CreatePath(*Ground, LiverT3, pulse::ExpandedCardiovascularTissuePath::GroundToLiverT3); + SEFluidCircuitPath& GroundToLiverT3 = cCombinedCardiovascular.CreatePath(*Ground, LiverT3, pulse::TissuePath::GroundToLiverT3); GroundToLiverT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LiverT1ToLymph = cCombinedCardiovascular.CreatePath(LiverT1, Lymph, pulse::ExpandedCardiovascularTissuePath::LiverT1ToLymph); + SEFluidCircuitPath& LiverT1ToLymph = cCombinedCardiovascular.CreatePath(LiverT1, Lymph, pulse::TissuePath::LiverT1ToLymph); LiverT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& LiverTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::Liver); @@ -3153,8 +3153,8 @@ namespace pulse LiverTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(LiverLRatio); LiverTissue.GetTotalMass().SetValue(LiverTissueMass, MassUnit::kg); - SELiquidCompartmentLink& LiverVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::Liver), - LiverExtracellular, pulse::ExpandedVascularLink::LiverVascularToTissue); + SELiquidCompartmentLink& LiverVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::Liver), + LiverExtracellular, pulse::VascularLink::LiverVascularToTissue); LiverVascularToTissue.MapPath(Liver1ToLiverT2); SELiquidCompartmentLink& LiverTissueToLymph = m_Compartments->CreateLiquidLink(LiverExtracellular, cLymph, pulse::LymphLink::LiverTissueToLymph); @@ -3162,11 +3162,11 @@ namespace pulse //////////// // Muscle // - SEFluidCircuitNode* TorsoMuscle1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::TorsoMuscle1); - SEFluidCircuitNode* LeftArmMuscle1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftArmMuscle1); - SEFluidCircuitNode* LeftLegMuscle1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftLegMuscle1); - SEFluidCircuitNode* RightArmMuscle1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::RightArmMuscle1); - SEFluidCircuitNode* RightLegMuscle1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::RightLegMuscle1); + SEFluidCircuitNode* TorsoMuscle1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::TorsoMuscle1); + SEFluidCircuitNode* LeftArmMuscle1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::LeftArmMuscle1); + SEFluidCircuitNode* LeftLegMuscle1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::LeftLegMuscle1); + SEFluidCircuitNode* RightArmMuscle1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::RightArmMuscle1); + SEFluidCircuitNode* RightLegMuscle1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::RightLegMuscle1); SEFluidCircuitNode& MuscleT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::MuscleT1); SEFluidCircuitNode& MuscleT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::MuscleT2); SEFluidCircuitNode& MuscleT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::MuscleT3); @@ -3174,24 +3174,24 @@ namespace pulse MuscleT3.GetPressure().Set(Ground->GetPressure()); MuscleT1.GetVolumeBaseline().SetValue(MuscleEWFraction * MuscleTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& TorsoMuscle1ToMuscleT2 = cCombinedCardiovascular.CreatePath(*TorsoMuscle1, MuscleT2, pulse::ExpandedCardiovascularTissuePath::TorsoMuscle1ToMuscleT2); + SEFluidCircuitPath& TorsoMuscle1ToMuscleT2 = cCombinedCardiovascular.CreatePath(*TorsoMuscle1, MuscleT2, pulse::ComputationalLifeTissuePath::TorsoMuscle1ToMuscleT2); TorsoMuscle1ToMuscleT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftArmMuscle1ToMuscleT2 = cCombinedCardiovascular.CreatePath(*LeftArmMuscle1, MuscleT2, pulse::ExpandedCardiovascularTissuePath::LeftArmMuscle1ToMuscleT2); + SEFluidCircuitPath& LeftArmMuscle1ToMuscleT2 = cCombinedCardiovascular.CreatePath(*LeftArmMuscle1, MuscleT2, pulse::ComputationalLifeTissuePath::LeftArmMuscle1ToMuscleT2); LeftArmMuscle1ToMuscleT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftLegMuscle1ToMuscleT2 = cCombinedCardiovascular.CreatePath(*LeftLegMuscle1, MuscleT2, pulse::ExpandedCardiovascularTissuePath::LeftLegMuscle1ToMuscleT2); + SEFluidCircuitPath& LeftLegMuscle1ToMuscleT2 = cCombinedCardiovascular.CreatePath(*LeftLegMuscle1, MuscleT2, pulse::ComputationalLifeTissuePath::LeftLegMuscle1ToMuscleT2); LeftLegMuscle1ToMuscleT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightArmMuscle1ToMuscleT2 = cCombinedCardiovascular.CreatePath(*RightArmMuscle1, MuscleT2, pulse::ExpandedCardiovascularTissuePath::RightArmMuscle1ToMuscleT2); + SEFluidCircuitPath& RightArmMuscle1ToMuscleT2 = cCombinedCardiovascular.CreatePath(*RightArmMuscle1, MuscleT2, pulse::ComputationalLifeTissuePath::RightArmMuscle1ToMuscleT2); RightArmMuscle1ToMuscleT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightLegMuscle1ToMuscleT2 = cCombinedCardiovascular.CreatePath(*RightLegMuscle1, MuscleT2, pulse::ExpandedCardiovascularTissuePath::RightLegMuscle1ToMuscleT2); + SEFluidCircuitPath& RightLegMuscle1ToMuscleT2 = cCombinedCardiovascular.CreatePath(*RightLegMuscle1, MuscleT2, pulse::ComputationalLifeTissuePath::RightLegMuscle1ToMuscleT2); RightLegMuscle1ToMuscleT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& MuscleT2ToMuscleT1 = cCombinedCardiovascular.CreatePath(MuscleT2, MuscleT1, pulse::ExpandedCardiovascularTissuePath::MuscleT2ToMuscleT1); + SEFluidCircuitPath& MuscleT2ToMuscleT1 = cCombinedCardiovascular.CreatePath(MuscleT2, MuscleT1, pulse::TissuePath::MuscleT2ToMuscleT1); MuscleT2ToMuscleT1.GetResistanceBaseline().SetValue((1 / MuscleTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& MuscleT1ToMuscleT3 = cCombinedCardiovascular.CreatePath(MuscleT1, MuscleT3, pulse::ExpandedCardiovascularTissuePath::MuscleT1ToMuscleT3); + SEFluidCircuitPath& MuscleT1ToMuscleT3 = cCombinedCardiovascular.CreatePath(MuscleT1, MuscleT3, pulse::TissuePath::MuscleT1ToMuscleT3); MuscleT1ToMuscleT3.GetComplianceBaseline().SetValue(MuscleT1.GetVolumeBaseline(VolumeUnit::mL) / MuscleT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToMuscleT3 = cCombinedCardiovascular.CreatePath(*Ground, MuscleT3, pulse::ExpandedCardiovascularTissuePath::GroundToMuscleT3); + SEFluidCircuitPath& GroundToMuscleT3 = cCombinedCardiovascular.CreatePath(*Ground, MuscleT3, pulse::TissuePath::GroundToMuscleT3); GroundToMuscleT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& MuscleT1ToLymph = cCombinedCardiovascular.CreatePath(MuscleT1, Lymph, pulse::ExpandedCardiovascularTissuePath::MuscleT1ToLymph); + SEFluidCircuitPath& MuscleT1ToLymph = cCombinedCardiovascular.CreatePath(MuscleT1, Lymph, pulse::TissuePath::MuscleT1ToLymph); MuscleT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& MuscleTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::Muscle); @@ -3212,20 +3212,20 @@ namespace pulse MuscleTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(MuscleLRatio); MuscleTissue.GetTotalMass().SetValue(MuscleTissueMass, MassUnit::kg); - SELiquidCompartmentLink& TorsoMuscleVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoMuscle), - MuscleExtracellular, pulse::ExpandedVascularLink::TorsoMuscleVascularToTissue); + SELiquidCompartmentLink& TorsoMuscleVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoMuscle), + MuscleExtracellular, pulse::ComputationalLifeVascularLink::TorsoMuscleVascularToTissue); TorsoMuscleVascularToTissue.MapPath(TorsoMuscle1ToMuscleT2); - SELiquidCompartmentLink& LeftArmMuscleVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmMuscle), - MuscleExtracellular, pulse::ExpandedVascularLink::LeftArmMuscleVascularToTissue); + SELiquidCompartmentLink& LeftArmMuscleVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmMuscle), + MuscleExtracellular, pulse::ComputationalLifeVascularLink::LeftArmMuscleVascularToTissue); LeftArmMuscleVascularToTissue.MapPath(LeftArmMuscle1ToMuscleT2); - SELiquidCompartmentLink& LeftLegMuscleVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegMuscle), - MuscleExtracellular, pulse::ExpandedVascularLink::LeftLegMuscleVascularToTissue); + SELiquidCompartmentLink& LeftLegMuscleVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegMuscle), + MuscleExtracellular, pulse::ComputationalLifeVascularLink::LeftLegMuscleVascularToTissue); LeftLegMuscleVascularToTissue.MapPath(LeftLegMuscle1ToMuscleT2); - SELiquidCompartmentLink& RightArmMuscleVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmMuscle), - MuscleExtracellular, pulse::ExpandedVascularLink::RightArmMuscleVascularToTissue); + SELiquidCompartmentLink& RightArmMuscleVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmMuscle), + MuscleExtracellular, pulse::ComputationalLifeVascularLink::RightArmMuscleVascularToTissue); RightArmMuscleVascularToTissue.MapPath(RightArmMuscle1ToMuscleT2); - SELiquidCompartmentLink& RightLegMuscleVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegMuscle), - MuscleExtracellular, pulse::ExpandedVascularLink::RightLegMuscleVascularToTissue); + SELiquidCompartmentLink& RightLegMuscleVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegMuscle), + MuscleExtracellular, pulse::ComputationalLifeVascularLink::RightLegMuscleVascularToTissue); RightLegMuscleVascularToTissue.MapPath(RightLegMuscle1ToMuscleT2); SELiquidCompartmentLink& MuscleTissueToLymph = m_Compartments->CreateLiquidLink(MuscleExtracellular, cLymph, pulse::LymphLink::MuscleTissueToLymph); @@ -3233,7 +3233,7 @@ namespace pulse //////////////// // Myocardium // - SEFluidCircuitNode* Myocardium2 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::Myocardium2); + SEFluidCircuitNode* Myocardium2 = cCardiovascular.GetNode(pulse::CardiovascularNode::Myocardium2); SEFluidCircuitNode& MyocardiumT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::MyocardiumT1); SEFluidCircuitNode& MyocardiumT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::MyocardiumT2); SEFluidCircuitNode& MyocardiumT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::MyocardiumT3); @@ -3241,16 +3241,16 @@ namespace pulse MyocardiumT3.GetPressure().Set(Ground->GetPressure()); MyocardiumT1.GetVolumeBaseline().SetValue(MyocardiumEWFraction * MyocardiumTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& Myocardium2ToMyocardiumT2 = cCombinedCardiovascular.CreatePath(*Myocardium2, MyocardiumT2, pulse::ExpandedCardiovascularTissuePath::Myocardium2ToMyocardiumT2); + SEFluidCircuitPath& Myocardium2ToMyocardiumT2 = cCombinedCardiovascular.CreatePath(*Myocardium2, MyocardiumT2, pulse::ComputationalLifeTissuePath::Myocardium2ToMyocardiumT2); Myocardium2ToMyocardiumT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& MyocardiumT2ToMyocardiumT1 = cCombinedCardiovascular.CreatePath(MyocardiumT2, MyocardiumT1, pulse::ExpandedCardiovascularTissuePath::MyocardiumT2ToMyocardiumT1); + SEFluidCircuitPath& MyocardiumT2ToMyocardiumT1 = cCombinedCardiovascular.CreatePath(MyocardiumT2, MyocardiumT1, pulse::TissuePath::MyocardiumT2ToMyocardiumT1); MyocardiumT2ToMyocardiumT1.GetResistanceBaseline().SetValue((1 / MyocardiumTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& MyocardiumT1ToMyocardiumT3 = cCombinedCardiovascular.CreatePath(MyocardiumT1, MyocardiumT3, pulse::ExpandedCardiovascularTissuePath::MyocardiumT1ToMyocardiumT3); + SEFluidCircuitPath& MyocardiumT1ToMyocardiumT3 = cCombinedCardiovascular.CreatePath(MyocardiumT1, MyocardiumT3, pulse::TissuePath::MyocardiumT1ToMyocardiumT3); MyocardiumT1ToMyocardiumT3.GetComplianceBaseline().SetValue(MyocardiumT1.GetVolumeBaseline(VolumeUnit::mL) / MyocardiumT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToMyocardiumT3 = cCombinedCardiovascular.CreatePath(*Ground, MyocardiumT3, pulse::ExpandedCardiovascularTissuePath::GroundToMyocardiumT3); + SEFluidCircuitPath& GroundToMyocardiumT3 = cCombinedCardiovascular.CreatePath(*Ground, MyocardiumT3, pulse::TissuePath::GroundToMyocardiumT3); GroundToMyocardiumT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& MyocardiumT1ToLymph = cCombinedCardiovascular.CreatePath(MyocardiumT1, Lymph, pulse::ExpandedCardiovascularTissuePath::MyocardiumT1ToLymph); + SEFluidCircuitPath& MyocardiumT1ToLymph = cCombinedCardiovascular.CreatePath(MyocardiumT1, Lymph, pulse::TissuePath::MyocardiumT1ToLymph); MyocardiumT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& MyocardiumTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::Myocardium); @@ -3271,8 +3271,8 @@ namespace pulse MyocardiumTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(MyocardiumLRatio); MyocardiumTissue.GetTotalMass().SetValue(MyocardiumTissueMass, MassUnit::kg); - SELiquidCompartmentLink& MyocardiumVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::Myocardium), - MyocardiumExtracellular, pulse::ExpandedVascularLink::MyocardiumVascularToTissue); + SELiquidCompartmentLink& MyocardiumVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::Myocardium), + MyocardiumExtracellular, pulse::VascularLink::MyocardiumVascularToTissue); MyocardiumVascularToTissue.MapPath(Myocardium2ToMyocardiumT2); SELiquidCompartmentLink& MyocardiumTissueToLymph = m_Compartments->CreateLiquidLink(MyocardiumExtracellular, cLymph, pulse::LymphLink::MyocardiumTissueToLymph); @@ -3281,10 +3281,10 @@ namespace pulse ////////////////// // Right Kidney // SEFluidCircuitNode* RightKidney2; - if (!m_Config->IsRenalEnabled()) - RightKidney2 = cCombinedCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::RightKidney2); - else + if (m_Config->UseExpandedKidneys() == eSwitch::On) RightKidney2 = cCombinedCardiovascular.GetNode(pulse::RenalNode::RightGlomerularCapillaries); + else + RightKidney2 = cCombinedCardiovascular.GetNode(pulse::CardiovascularNode::RightKidney2); SEFluidCircuitNode& RightKidneyT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightKidneyT1); SEFluidCircuitNode& RightKidneyT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightKidneyT2); @@ -3293,16 +3293,16 @@ namespace pulse RightKidneyT3.GetPressure().Set(Ground->GetPressure()); RightKidneyT1.GetVolumeBaseline().SetValue(RKidneyEWFraction * RKidneyTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& RightKidney2ToRightKidneyT2 = cCombinedCardiovascular.CreatePath(*RightKidney2, RightKidneyT2, pulse::ExpandedCardiovascularTissuePath::RightKidney2ToRightKidneyT2); + SEFluidCircuitPath& RightKidney2ToRightKidneyT2 = cCombinedCardiovascular.CreatePath(*RightKidney2, RightKidneyT2, pulse::ComputationalLifeTissuePath::RightKidney2ToRightKidneyT2); RightKidney2ToRightKidneyT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightKidneyT2ToRightKidneyT1 = cCombinedCardiovascular.CreatePath(RightKidneyT2, RightKidneyT1, pulse::ExpandedCardiovascularTissuePath::RightKidneyT2ToRightKidneyT1); + SEFluidCircuitPath& RightKidneyT2ToRightKidneyT1 = cCombinedCardiovascular.CreatePath(RightKidneyT2, RightKidneyT1, pulse::TissuePath::RightKidneyT2ToRightKidneyT1); RightKidneyT2ToRightKidneyT1.GetResistanceBaseline().SetValue((1 / RKidneyTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightKidneyT1ToRightKidneyT3 = cCombinedCardiovascular.CreatePath(RightKidneyT1, RightKidneyT3, pulse::ExpandedCardiovascularTissuePath::RightKidneyT1ToRightKidneyT3); + SEFluidCircuitPath& RightKidneyT1ToRightKidneyT3 = cCombinedCardiovascular.CreatePath(RightKidneyT1, RightKidneyT3, pulse::TissuePath::RightKidneyT1ToRightKidneyT3); RightKidneyT1ToRightKidneyT3.GetComplianceBaseline().SetValue(RightKidneyT1.GetVolumeBaseline(VolumeUnit::mL) / RightKidneyT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToRightKidneyT3 = cCombinedCardiovascular.CreatePath(*Ground, RightKidneyT3, pulse::ExpandedCardiovascularTissuePath::GroundToRightKidneyT3); + SEFluidCircuitPath& GroundToRightKidneyT3 = cCombinedCardiovascular.CreatePath(*Ground, RightKidneyT3, pulse::TissuePath::GroundToRightKidneyT3); GroundToRightKidneyT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightKidneyT1ToLymph = cCombinedCardiovascular.CreatePath(RightKidneyT1, Lymph, pulse::ExpandedCardiovascularTissuePath::RightKidneyT1ToLymph); + SEFluidCircuitPath& RightKidneyT1ToLymph = cCombinedCardiovascular.CreatePath(RightKidneyT1, Lymph, pulse::TissuePath::RightKidneyT1ToLymph); RightKidneyT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& RightKidneyTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::RightKidney); @@ -3323,8 +3323,8 @@ namespace pulse RightKidneyTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(RKidneyLRatio); RightKidneyTissue.GetTotalMass().SetValue(RKidneyTissueMass, MassUnit::kg); - SELiquidCompartmentLink& RightKidneyVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightKidney), - RightKidneyExtracellular, pulse::ExpandedVascularLink::RightKidneyVascularToTissue); + SELiquidCompartmentLink& RightKidneyVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::RightKidney), + RightKidneyExtracellular, pulse::VascularLink::RightKidneyVascularToTissue); RightKidneyVascularToTissue.MapPath(RightKidney2ToRightKidneyT2); SELiquidCompartmentLink& RightKidneyTissueToLymph = m_Compartments->CreateLiquidLink(RightKidneyExtracellular, cLymph, pulse::LymphLink::RightKidneyTissueToLymph); @@ -3332,7 +3332,7 @@ namespace pulse //////////////// // Right Lung // - SEFluidCircuitNode* RightPulmonaryCapillaries1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::RightPulmonaryCapillaries1); + SEFluidCircuitNode* RightPulmonaryCapillaries1 = cCardiovascular.GetNode(pulse::CardiovascularNode::RightPulmonaryCapillaries1); SEFluidCircuitNode& RightLungT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightLungT1); SEFluidCircuitNode& RightLungT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightLungT2); SEFluidCircuitNode& RightLungT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::RightLungT3); @@ -3340,16 +3340,16 @@ namespace pulse RightLungT3.GetPressure().Set(Ground->GetPressure()); RightLungT1.GetVolumeBaseline().SetValue(RLungEWFraction * RLungTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& RightLung1ToRightLungT2 = cCombinedCardiovascular.CreatePath(*RightPulmonaryCapillaries1, RightLungT2, pulse::ExpandedCardiovascularTissuePath::RightLung1ToRightLungT2); + SEFluidCircuitPath& RightLung1ToRightLungT2 = cCombinedCardiovascular.CreatePath(*RightPulmonaryCapillaries1, RightLungT2, pulse::TissuePath::RightLung1ToRightLungT2); RightLung1ToRightLungT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightLungT2ToRightLungT1 = cCombinedCardiovascular.CreatePath(RightLungT2, RightLungT1, pulse::ExpandedCardiovascularTissuePath::RightLungT2ToRightLungT1); + SEFluidCircuitPath& RightLungT2ToRightLungT1 = cCombinedCardiovascular.CreatePath(RightLungT2, RightLungT1, pulse::TissuePath::RightLungT2ToRightLungT1); RightLungT2ToRightLungT1.GetResistanceBaseline().SetValue((1 / RLungTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& RightLungT1ToRightLungT3 = cCombinedCardiovascular.CreatePath(RightLungT1, RightLungT3, pulse::ExpandedCardiovascularTissuePath::RightLungT1ToRightLungT3); + SEFluidCircuitPath& RightLungT1ToRightLungT3 = cCombinedCardiovascular.CreatePath(RightLungT1, RightLungT3, pulse::TissuePath::RightLungT1ToRightLungT3); RightLungT1ToRightLungT3.GetComplianceBaseline().SetValue(RightLungT1.GetVolumeBaseline(VolumeUnit::mL) / RightLungT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToRightLungT3 = cCombinedCardiovascular.CreatePath(*Ground, RightLungT3, pulse::ExpandedCardiovascularTissuePath::GroundToRightLungT3); + SEFluidCircuitPath& GroundToRightLungT3 = cCombinedCardiovascular.CreatePath(*Ground, RightLungT3, pulse::TissuePath::GroundToRightLungT3); GroundToRightLungT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightLungT1ToLymph = cCombinedCardiovascular.CreatePath(RightLungT1, Lymph, pulse::ExpandedCardiovascularTissuePath::RightLungT1ToLymph); + SEFluidCircuitPath& RightLungT1ToLymph = cCombinedCardiovascular.CreatePath(RightLungT1, Lymph, pulse::TissuePath::RightLungT1ToLymph); RightLungT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& RightLungTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::RightLung); @@ -3370,8 +3370,8 @@ namespace pulse RightLungTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(RLungLRatio); RightLungTissue.GetTotalMass().SetValue(RLungTissueMass, MassUnit::kg); - SELiquidCompartmentLink& RightLungVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLung), - RightLungExtracellular, pulse::ExpandedVascularLink::RightLungVascularToTissue); + SELiquidCompartmentLink& RightLungVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::RightLung), + RightLungExtracellular, pulse::VascularLink::RightLungVascularToTissue); RightLungVascularToTissue.MapPath(RightLung1ToRightLungT2); SELiquidCompartmentLink& RightLungTissueToLymph = m_Compartments->CreateLiquidLink(RightLungExtracellular, cLymph, pulse::LymphLink::RightLungTissueToLymph); @@ -3379,11 +3379,11 @@ namespace pulse ////////// // Skin // - SEFluidCircuitNode* TorsoSkin1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::TorsoSkin1); - SEFluidCircuitNode* LeftArmSkin1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftArmSkin1); - SEFluidCircuitNode* LeftLegSkin1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::LeftLegSkin1); - SEFluidCircuitNode* RightArmSkin1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::RightArmSkin1); - SEFluidCircuitNode* RightLegSkin1 = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::RightLegSkin1); + SEFluidCircuitNode* TorsoSkin1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::TorsoSkin1); + SEFluidCircuitNode* LeftArmSkin1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::LeftArmSkin1); + SEFluidCircuitNode* LeftLegSkin1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::LeftLegSkin1); + SEFluidCircuitNode* RightArmSkin1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::RightArmSkin1); + SEFluidCircuitNode* RightLegSkin1 = cCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::RightLegSkin1); SEFluidCircuitNode& SkinT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::SkinT1); SEFluidCircuitNode& SkinT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::SkinT2); SEFluidCircuitNode& SkinT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::SkinT3); @@ -3391,27 +3391,27 @@ namespace pulse SkinT3.GetPressure().Set(Ground->GetPressure()); SkinT1.GetVolumeBaseline().SetValue(SkinEWFraction * SkinTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& TorsoSkin1ToSkinT2 = cCombinedCardiovascular.CreatePath(*TorsoSkin1, SkinT2, pulse::ExpandedCardiovascularTissuePath::TorsoSkin1ToSkinT2); + SEFluidCircuitPath& TorsoSkin1ToSkinT2 = cCombinedCardiovascular.CreatePath(*TorsoSkin1, SkinT2, pulse::ComputationalLifeTissuePath::TorsoSkin1ToSkinT2); TorsoSkin1ToSkinT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftArmSkin1ToSkinT2 = cCombinedCardiovascular.CreatePath(*LeftArmSkin1, SkinT2, pulse::ExpandedCardiovascularTissuePath::LeftArmSkin1ToSkinT2); + SEFluidCircuitPath& LeftArmSkin1ToSkinT2 = cCombinedCardiovascular.CreatePath(*LeftArmSkin1, SkinT2, pulse::ComputationalLifeTissuePath::LeftArmSkin1ToSkinT2); LeftArmSkin1ToSkinT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& LeftLegSkin1ToSkinT2 = cCombinedCardiovascular.CreatePath(*LeftLegSkin1, SkinT2, pulse::ExpandedCardiovascularTissuePath::LeftLegSkin1ToSkinT2); + SEFluidCircuitPath& LeftLegSkin1ToSkinT2 = cCombinedCardiovascular.CreatePath(*LeftLegSkin1, SkinT2, pulse::ComputationalLifeTissuePath::LeftLegSkin1ToSkinT2); LeftLegSkin1ToSkinT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightArmSkin1ToSkinT2 = cCombinedCardiovascular.CreatePath(*RightArmSkin1, SkinT2, pulse::ExpandedCardiovascularTissuePath::RightArmSkin1ToSkinT2); + SEFluidCircuitPath& RightArmSkin1ToSkinT2 = cCombinedCardiovascular.CreatePath(*RightArmSkin1, SkinT2, pulse::ComputationalLifeTissuePath::RightArmSkin1ToSkinT2); RightArmSkin1ToSkinT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& RightLegSkin1ToSkinT2 = cCombinedCardiovascular.CreatePath(*RightLegSkin1, SkinT2, pulse::ExpandedCardiovascularTissuePath::RightLegSkin1ToSkinT2); + SEFluidCircuitPath& RightLegSkin1ToSkinT2 = cCombinedCardiovascular.CreatePath(*RightLegSkin1, SkinT2, pulse::ComputationalLifeTissuePath::RightLegSkin1ToSkinT2); RightLegSkin1ToSkinT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& SkinT2ToSkinT1 = cCombinedCardiovascular.CreatePath(SkinT2, SkinT1, pulse::ExpandedCardiovascularTissuePath::SkinT2ToSkinT1); + SEFluidCircuitPath& SkinT2ToSkinT1 = cCombinedCardiovascular.CreatePath(SkinT2, SkinT1, pulse::TissuePath::SkinT2ToSkinT1); SkinT2ToSkinT1.GetResistanceBaseline().SetValue((1 / SkinTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& SkinT1ToSkinT3 = cCombinedCardiovascular.CreatePath(SkinT1, SkinT3, pulse::ExpandedCardiovascularTissuePath::SkinT1ToSkinT3); + SEFluidCircuitPath& SkinT1ToSkinT3 = cCombinedCardiovascular.CreatePath(SkinT1, SkinT3, pulse::TissuePath::SkinT1ToSkinT3); SkinT1ToSkinT3.GetComplianceBaseline().SetValue(SkinT1.GetVolumeBaseline(VolumeUnit::mL) / SkinT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToSkinT3 = cCombinedCardiovascular.CreatePath(*Ground, SkinT3, pulse::ExpandedCardiovascularTissuePath::GroundToSkinT3); + SEFluidCircuitPath& GroundToSkinT3 = cCombinedCardiovascular.CreatePath(*Ground, SkinT3, pulse::TissuePath::GroundToSkinT3); GroundToSkinT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& SkinT1ToLymph = cCombinedCardiovascular.CreatePath(SkinT1, Lymph, pulse::ExpandedCardiovascularTissuePath::SkinT1ToLymph); + SEFluidCircuitPath& SkinT1ToLymph = cCombinedCardiovascular.CreatePath(SkinT1, Lymph, pulse::TissuePath::SkinT1ToLymph); SkinT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); - SEFluidCircuitPath& SkinT1ToGround = cCombinedCardiovascular.CreatePath(SkinT1, *Ground, pulse::ExpandedCardiovascularTissuePath::SkinSweating); + SEFluidCircuitPath& SkinT1ToGround = cCombinedCardiovascular.CreatePath(SkinT1, *Ground, pulse::TissuePath::SkinSweating); SkinT1ToGround.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& SkinTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::Skin); @@ -3432,20 +3432,20 @@ namespace pulse SkinTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(SkinLRatio); SkinTissue.GetTotalMass().SetValue(SkinTissueMass, MassUnit::kg); - SELiquidCompartmentLink& TorsoSkinVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoSkin), - SkinExtracellular, pulse::ExpandedVascularLink::TorsoSkinVascularToTissue); + SELiquidCompartmentLink& TorsoSkinVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoSkin), + SkinExtracellular, pulse::ComputationalLifeVascularLink::TorsoSkinVascularToTissue); TorsoSkinVascularToTissue.MapPath(TorsoSkin1ToSkinT2); - SELiquidCompartmentLink& LeftArmSkinVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmSkin), - SkinExtracellular, pulse::ExpandedVascularLink::LeftArmSkinVascularToTissue); + SELiquidCompartmentLink& LeftArmSkinVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmSkin), + SkinExtracellular, pulse::ComputationalLifeVascularLink::LeftArmSkinVascularToTissue); LeftArmSkinVascularToTissue.MapPath(LeftArmSkin1ToSkinT2); - SELiquidCompartmentLink& LeftLegSkinVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegSkin), - SkinExtracellular, pulse::ExpandedVascularLink::LeftLegSkinVascularToTissue); + SELiquidCompartmentLink& LeftLegSkinVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegSkin), + SkinExtracellular, pulse::ComputationalLifeVascularLink::LeftLegSkinVascularToTissue); LeftLegSkinVascularToTissue.MapPath(LeftLegSkin1ToSkinT2); - SELiquidCompartmentLink& RightArmSkinVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmSkin), - SkinExtracellular, pulse::ExpandedVascularLink::RightArmSkinVascularToTissue); + SELiquidCompartmentLink& RightArmSkinVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmSkin), + SkinExtracellular, pulse::ComputationalLifeVascularLink::RightArmSkinVascularToTissue); RightArmSkinVascularToTissue.MapPath(RightArmSkin1ToSkinT2); - SELiquidCompartmentLink& RightLegSkinVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegSkin), - SkinExtracellular, pulse::ExpandedVascularLink::RightLegSkinVascularToTissue); + SELiquidCompartmentLink& RightLegSkinVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegSkin), + SkinExtracellular, pulse::ComputationalLifeVascularLink::RightLegSkinVascularToTissue); RightLegSkinVascularToTissue.MapPath(RightLegSkin1ToSkinT2); SELiquidCompartmentLink& SkinTissueToLymph = m_Compartments->CreateLiquidLink(SkinExtracellular, cLymph, pulse::LymphLink::SkinTissueToLymph); @@ -3453,7 +3453,7 @@ namespace pulse //////////// // Spleen // - SEFluidCircuitNode* Spleen = cCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::Spleen1); + SEFluidCircuitNode* Spleen = cCardiovascular.GetNode(pulse::CardiovascularNode::Spleen1); SEFluidCircuitNode& SpleenT1 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::SpleenT1); SEFluidCircuitNode& SpleenT2 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::SpleenT2); SEFluidCircuitNode& SpleenT3 = cCombinedCardiovascular.CreateNode(pulse::TissueNode::SpleenT3); @@ -3461,16 +3461,16 @@ namespace pulse SpleenT3.GetPressure().Set(Ground->GetPressure()); SpleenT1.GetVolumeBaseline().SetValue(SpleenEWFraction * SpleenTissueVolume * 1000.0, VolumeUnit::mL); - SEFluidCircuitPath& Spleen1ToSpleenT2 = cCombinedCardiovascular.CreatePath(*Spleen, SpleenT2, pulse::ExpandedCardiovascularTissuePath::Spleen1ToSpleenT2); + SEFluidCircuitPath& Spleen1ToSpleenT2 = cCombinedCardiovascular.CreatePath(*Spleen, SpleenT2, pulse::TissuePath::Spleen1ToSpleenT2); Spleen1ToSpleenT2.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& SpleenT2ToSpleenT1 = cCombinedCardiovascular.CreatePath(SpleenT2, SpleenT1, pulse::ExpandedCardiovascularTissuePath::SpleenT2ToSpleenT1); + SEFluidCircuitPath& SpleenT2ToSpleenT1 = cCombinedCardiovascular.CreatePath(SpleenT2, SpleenT1, pulse::TissuePath::SpleenT2ToSpleenT1); SpleenT2ToSpleenT1.GetResistanceBaseline().SetValue((1 / SpleenTissueMass) * resistanceConstant, PressureTimePerVolumeUnit::mmHg_s_Per_mL); - SEFluidCircuitPath& SpleenT1ToSpleenT3 = cCombinedCardiovascular.CreatePath(SpleenT1, SpleenT3, pulse::ExpandedCardiovascularTissuePath::SpleenT1ToSpleenT3); + SEFluidCircuitPath& SpleenT1ToSpleenT3 = cCombinedCardiovascular.CreatePath(SpleenT1, SpleenT3, pulse::TissuePath::SpleenT1ToSpleenT3); SpleenT1ToSpleenT3.GetComplianceBaseline().SetValue(SpleenT1.GetVolumeBaseline(VolumeUnit::mL) / SpleenT1.GetPressure(PressureUnit::mmHg), VolumePerPressureUnit::mL_Per_mmHg); - SEFluidCircuitPath& GroundToSpleenT3 = cCombinedCardiovascular.CreatePath(*Ground, SpleenT3, pulse::ExpandedCardiovascularTissuePath::GroundToSpleenT3); + SEFluidCircuitPath& GroundToSpleenT3 = cCombinedCardiovascular.CreatePath(*Ground, SpleenT3, pulse::TissuePath::GroundToSpleenT3); GroundToSpleenT3.GetPressureSourceBaseline().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitPath& SpleenT1ToLymph = cCombinedCardiovascular.CreatePath(SpleenT1, Lymph, pulse::ExpandedCardiovascularTissuePath::SpleenT1ToLymph); + SEFluidCircuitPath& SpleenT1ToLymph = cCombinedCardiovascular.CreatePath(SpleenT1, Lymph, pulse::TissuePath::SpleenT1ToLymph); SpleenT1ToLymph.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); SETissueCompartment& SpleenTissue = m_Compartments->CreateTissueCompartment(pulse::TissueCompartment::Spleen); @@ -3491,8 +3491,8 @@ namespace pulse SpleenTissue.GetTissueToPlasmaLipoproteinRatio().SetValue(SpleenLRatio); SpleenTissue.GetTotalMass().SetValue(SpleenTissueMass, MassUnit::kg); - SELiquidCompartmentLink& SpleenVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::ExpandedVascularCompartment::Spleen), - SpleenExtracellular, pulse::ExpandedVascularLink::SpleenVascularToTissue); + SELiquidCompartmentLink& SpleenVascularToTissue = m_Compartments->CreateLiquidLink(*m_Compartments->GetLiquidCompartment(pulse::VascularCompartment::Spleen), + SpleenExtracellular, pulse::VascularLink::SpleenVascularToTissue); SpleenVascularToTissue.MapPath(Spleen1ToSpleenT2); SELiquidCompartmentLink& SpleenTissueToLymph = m_Compartments->CreateLiquidLink(SpleenExtracellular, cLymph, pulse::LymphLink::SpleenTissueToLymph); @@ -3503,18 +3503,18 @@ namespace pulse } - void Controller::SetupExpandedCardiovascularCerebrospinalFluid() + void Controller::SetupComputationalLifeCerebrospinalFluid() { - Info("Setting Up Expanded Cardiovascular Cerebrospinal Fluid"); + Info("Setting Up ComputationalLife Cerebrospinal Fluid"); SEFluidCircuit& cCombinedCardiovascular = m_Circuits->GetActiveCardiovascularCircuit(); - SEFluidCircuitNode* Ground = cCombinedCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::Ground); - SEFluidCircuitNode* Intracranial2 = cCombinedCardiovascular.GetNode(pulse::ExpandedCardiovascularNode::Intracranial2); + SEFluidCircuitNode* Ground = cCombinedCardiovascular.GetNode(pulse::CardiovascularNode::Ground); + SEFluidCircuitNode* Intracranial2 = cCombinedCardiovascular.GetNode(pulse::ComputationalLifeCardiovascularNode::Intracranial2); - double brainVascularCompliance = cCombinedCardiovascular.GetPath(pulse::ExpandedCardiovascularPath::Intracranial2ToGround)->GetComplianceBaseline().GetValue(VolumePerPressureUnit::mL_Per_mmHg); + double brainVascularCompliance = cCombinedCardiovascular.GetPath(pulse::ComputationalLifeCardiovascularPath::Intracranial2ToGround)->GetComplianceBaseline().GetValue(VolumePerPressureUnit::mL_Per_mmHg); double brainVascularPressure = Intracranial2->GetPressure().GetValue(PressureUnit::mmHg); - m_Circuits->DeleteFluidPath(pulse::ExpandedCardiovascularPath::Intracranial2ToGround); + m_Circuits->DeleteFluidPath(pulse::ComputationalLifeCardiovascularPath::Intracranial2ToGround); SEFluidCircuitNode& VascularCSFBarrier = cCombinedCardiovascular.CreateNode(pulse::CerebrospinalFluidNode::VascularCSFBarrier); VascularCSFBarrier.GetPressure().SetValue(brainVascularPressure, PressureUnit::mmHg); diff --git a/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp b/src/cpp/engine/common/controller/SetupExpandedLungs.cpp similarity index 84% rename from src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp rename to src/cpp/engine/common/controller/SetupExpandedLungs.cpp index 2af95e9ea..1746e8908 100644 --- a/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp +++ b/src/cpp/engine/common/controller/SetupExpandedLungs.cpp @@ -26,9 +26,9 @@ namespace pulse { - void Controller::SetupExpandedPulmonaryRespiratory() + void Controller::SetupExpandedLungsRespiratory() { - Info("Setting Up Expanded Respiratory"); + Info("Setting Up Expanded Lungs Respiratory"); double RightLungRatio = m_InitialPatient->GetRightLungRatio().GetValue(); double LeftLungRatio = 1 - RightLungRatio; @@ -61,79 +61,79 @@ namespace pulse double openResistance_cmH2O_s_Per_L = m_Config->GetDefaultOpenFlowResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); - SEFluidCircuitNode& RightMainBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMainBronchus); - SEFluidCircuitNode& LeftMainBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftMainBronchus); - SEFluidCircuitNode& RightIntermediateBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightIntermediateBronchus); - SEFluidCircuitNode& RightSuperiorLobarBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobarBronchus); - SEFluidCircuitNode& RightMiddleLobarBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobarBronchus); - SEFluidCircuitNode& RightInferiorLobarBronchus1 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobarBronchus1); - SEFluidCircuitNode& LeftInferiorLobarBronchus1 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobarBronchus1); - SEFluidCircuitNode& LeftSuperiorLobarBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobarBronchus); - SEFluidCircuitNode& RightInferiorLobarBronchus2 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobarBronchus2); - SEFluidCircuitNode& LeftInferiorLobarBronchus2 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobarBronchus2); - SEFluidCircuitNode& RightSuperiorApicoposteriorBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorApicoposteriorBronchus); - SEFluidCircuitNode& RightInferiorLobarBronchus3 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobarBronchus3); - SEFluidCircuitNode& LeftInferiorLobarBronchus3 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobarBronchus3); - SEFluidCircuitNode& LeftLingularBonchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftLingularBonchus); - SEFluidCircuitNode& LeftSuperiorApicoposteriorBronchus = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorApicoposteriorBronchus); - SEFluidCircuitNode& RightInferiorLobarBronchus4 = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobarBronchus4); - - SEFluidCircuitNode& RightSuperiorLobeApicalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeApicalBronchiole); - SEFluidCircuitNode& RightSuperiorLobePosteriorBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobePosteriorBronchiole); - SEFluidCircuitNode& RightSuperiorLobeAnteriorBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeAnteriorBronchiole); - SEFluidCircuitNode& RightMiddleLobeLateralBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeLateralBronchiole); - SEFluidCircuitNode& RightMiddleLobeMedialBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeMedialBronchiole); - SEFluidCircuitNode& RightInferiorLobeSuperiorBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeSuperiorBronchiole); - SEFluidCircuitNode& RightInferiorLobeMedialBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeMedialBasalBronchiole); - SEFluidCircuitNode& RightInferiorLobeAnteriorBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeAnteriorBasalBronchiole); - SEFluidCircuitNode& RightInferiorLobeLateralBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeLateralBasalBronchiole); - SEFluidCircuitNode& RightInferiorLobePosteriorBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobePosteriorBasalBronchiole); - SEFluidCircuitNode& LeftInferiorLobePosteriorBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobePosteriorBasalBronchiole); - SEFluidCircuitNode& LeftInferiorLobeLateralBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeLateralBasalBronchiole); - SEFluidCircuitNode& LeftInferiorLobeAnteromedialBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeAnteromedialBasalBronchiole); - SEFluidCircuitNode& LeftInferiorLobeSuperiorBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeSuperiorBronchiole); - SEFluidCircuitNode& LeftSuperiorLobeInferiorLingulaBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeInferiorLingulaBronchiole); - SEFluidCircuitNode& LeftSuperiorLobeSuperiorLingulaBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeSuperiorLingulaBronchiole); - SEFluidCircuitNode& LeftSuperiorLobeAnteriorBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeAnteriorBronchiole); - SEFluidCircuitNode& LeftSuperiorLobeApicoposteriorBronchiole = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeApicoposteriorBronchiole); - - SEFluidCircuitNode& RightSuperiorLobeApicalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeApicalAlveolarDeadSpace); - SEFluidCircuitNode& RightSuperiorLobePosteriorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobePosteriorAlveolarDeadSpace); - SEFluidCircuitNode& RightSuperiorLobeAnteriorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeAnteriorAlveolarDeadSpace); - SEFluidCircuitNode& RightMiddleLobeLateralAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeLateralAlveolarDeadSpace); - SEFluidCircuitNode& RightMiddleLobeMedialAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeMedialAlveolarDeadSpace); - SEFluidCircuitNode& RightInferiorLobeSuperiorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeSuperiorAlveolarDeadSpace); - SEFluidCircuitNode& RightInferiorLobeMedialBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeMedialBasalAlveolarDeadSpace); - SEFluidCircuitNode& RightInferiorLobeAnteriorBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeAnteriorBasalAlveolarDeadSpace); - SEFluidCircuitNode& RightInferiorLobeLateralBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeLateralBasalAlveolarDeadSpace); - SEFluidCircuitNode& RightInferiorLobePosteriorBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobePosteriorBasalAlveolarDeadSpace); - SEFluidCircuitNode& LeftInferiorLobePosteriorBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobePosteriorBasalAlveolarDeadSpace); - SEFluidCircuitNode& LeftInferiorLobeLateralBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeLateralBasalAlveolarDeadSpace); - SEFluidCircuitNode& LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); - SEFluidCircuitNode& LeftInferiorLobeSuperiorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeSuperiorAlveolarDeadSpace); - SEFluidCircuitNode& LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); - SEFluidCircuitNode& LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); - SEFluidCircuitNode& LeftSuperiorLobeAnteriorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeAnteriorAlveolarDeadSpace); - SEFluidCircuitNode& LeftSuperiorLobeApicoposteriorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveolarDeadSpace); - - SEFluidCircuitNode& RightSuperiorLobeApicalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeApicalAlveoli); - SEFluidCircuitNode& RightSuperiorLobePosteriorAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobePosteriorAlveoli); - SEFluidCircuitNode& RightSuperiorLobeAnteriorAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeAnteriorAlveoli); - SEFluidCircuitNode& RightMiddleLobeLateralAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeLateralAlveoli); - SEFluidCircuitNode& RightMiddleLobeMedialAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeMedialAlveoli); - SEFluidCircuitNode& RightInferiorLobeSuperiorAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeSuperiorAlveoli); - SEFluidCircuitNode& RightInferiorLobeMedialBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeMedialBasalAlveoli); - SEFluidCircuitNode& RightInferiorLobeAnteriorBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeAnteriorBasalAlveoli); - SEFluidCircuitNode& RightInferiorLobeLateralBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeLateralBasalAlveoli); - SEFluidCircuitNode& RightInferiorLobePosteriorBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::RightInferiorLobePosteriorBasalAlveoli); - SEFluidCircuitNode& LeftInferiorLobePosteriorBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobePosteriorBasalAlveoli); - SEFluidCircuitNode& LeftInferiorLobeLateralBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeLateralBasalAlveoli); - SEFluidCircuitNode& LeftInferiorLobeAnteromedialBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveoli); - SEFluidCircuitNode& LeftInferiorLobeSuperiorAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeSuperiorAlveoli); - SEFluidCircuitNode& LeftSuperiorLobeInferiorLingulaAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveoli); - SEFluidCircuitNode& LeftSuperiorLobeSuperiorLingulaAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveoli); - SEFluidCircuitNode& LeftSuperiorLobeAnteriorAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeAnteriorAlveoli); - SEFluidCircuitNode& LeftSuperiorLobeApicoposteriorAlveoli = cRespiratory.CreateNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveoli); + SEFluidCircuitNode& RightMainBronchus = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightMainBronchus); + SEFluidCircuitNode& LeftMainBronchus = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftMainBronchus); + SEFluidCircuitNode& RightIntermediateBronchus = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightIntermediateBronchus); + SEFluidCircuitNode& RightSuperiorLobarBronchus = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobarBronchus); + SEFluidCircuitNode& RightMiddleLobarBronchus = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobarBronchus); + SEFluidCircuitNode& RightInferiorLobarBronchus1 = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobarBronchus1); + SEFluidCircuitNode& LeftInferiorLobarBronchus1 = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobarBronchus1); + SEFluidCircuitNode& LeftSuperiorLobarBronchus = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobarBronchus); + SEFluidCircuitNode& RightInferiorLobarBronchus2 = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobarBronchus2); + SEFluidCircuitNode& LeftInferiorLobarBronchus2 = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobarBronchus2); + SEFluidCircuitNode& RightSuperiorApicoposteriorBronchus = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorApicoposteriorBronchus); + SEFluidCircuitNode& RightInferiorLobarBronchus3 = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobarBronchus3); + SEFluidCircuitNode& LeftInferiorLobarBronchus3 = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobarBronchus3); + SEFluidCircuitNode& LeftLingularBonchus = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftLingularBonchus); + SEFluidCircuitNode& LeftSuperiorApicoposteriorBronchus = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorApicoposteriorBronchus); + SEFluidCircuitNode& RightInferiorLobarBronchus4 = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobarBronchus4); + + SEFluidCircuitNode& RightSuperiorLobeApicalBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeApicalBronchiole); + SEFluidCircuitNode& RightSuperiorLobePosteriorBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobePosteriorBronchiole); + SEFluidCircuitNode& RightSuperiorLobeAnteriorBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeAnteriorBronchiole); + SEFluidCircuitNode& RightMiddleLobeLateralBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeLateralBronchiole); + SEFluidCircuitNode& RightMiddleLobeMedialBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeMedialBronchiole); + SEFluidCircuitNode& RightInferiorLobeSuperiorBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeSuperiorBronchiole); + SEFluidCircuitNode& RightInferiorLobeMedialBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeMedialBasalBronchiole); + SEFluidCircuitNode& RightInferiorLobeAnteriorBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeAnteriorBasalBronchiole); + SEFluidCircuitNode& RightInferiorLobeLateralBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeLateralBasalBronchiole); + SEFluidCircuitNode& RightInferiorLobePosteriorBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobePosteriorBasalBronchiole); + SEFluidCircuitNode& LeftInferiorLobePosteriorBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobePosteriorBasalBronchiole); + SEFluidCircuitNode& LeftInferiorLobeLateralBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeLateralBasalBronchiole); + SEFluidCircuitNode& LeftInferiorLobeAnteromedialBasalBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeAnteromedialBasalBronchiole); + SEFluidCircuitNode& LeftInferiorLobeSuperiorBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeSuperiorBronchiole); + SEFluidCircuitNode& LeftSuperiorLobeInferiorLingulaBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeInferiorLingulaBronchiole); + SEFluidCircuitNode& LeftSuperiorLobeSuperiorLingulaBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeSuperiorLingulaBronchiole); + SEFluidCircuitNode& LeftSuperiorLobeAnteriorBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeAnteriorBronchiole); + SEFluidCircuitNode& LeftSuperiorLobeApicoposteriorBronchiole = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeApicoposteriorBronchiole); + + SEFluidCircuitNode& RightSuperiorLobeApicalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeApicalAlveolarDeadSpace); + SEFluidCircuitNode& RightSuperiorLobePosteriorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobePosteriorAlveolarDeadSpace); + SEFluidCircuitNode& RightSuperiorLobeAnteriorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeAnteriorAlveolarDeadSpace); + SEFluidCircuitNode& RightMiddleLobeLateralAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeLateralAlveolarDeadSpace); + SEFluidCircuitNode& RightMiddleLobeMedialAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeMedialAlveolarDeadSpace); + SEFluidCircuitNode& RightInferiorLobeSuperiorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeSuperiorAlveolarDeadSpace); + SEFluidCircuitNode& RightInferiorLobeMedialBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeMedialBasalAlveolarDeadSpace); + SEFluidCircuitNode& RightInferiorLobeAnteriorBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeAnteriorBasalAlveolarDeadSpace); + SEFluidCircuitNode& RightInferiorLobeLateralBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeLateralBasalAlveolarDeadSpace); + SEFluidCircuitNode& RightInferiorLobePosteriorBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobePosteriorBasalAlveolarDeadSpace); + SEFluidCircuitNode& LeftInferiorLobePosteriorBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobePosteriorBasalAlveolarDeadSpace); + SEFluidCircuitNode& LeftInferiorLobeLateralBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeLateralBasalAlveolarDeadSpace); + SEFluidCircuitNode& LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + SEFluidCircuitNode& LeftInferiorLobeSuperiorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeSuperiorAlveolarDeadSpace); + SEFluidCircuitNode& LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + SEFluidCircuitNode& LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + SEFluidCircuitNode& LeftSuperiorLobeAnteriorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeAnteriorAlveolarDeadSpace); + SEFluidCircuitNode& LeftSuperiorLobeApicoposteriorAlveolarDeadSpace = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + SEFluidCircuitNode& RightSuperiorLobeApicalAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeApicalAlveoli); + SEFluidCircuitNode& RightSuperiorLobePosteriorAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobePosteriorAlveoli); + SEFluidCircuitNode& RightSuperiorLobeAnteriorAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeAnteriorAlveoli); + SEFluidCircuitNode& RightMiddleLobeLateralAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeLateralAlveoli); + SEFluidCircuitNode& RightMiddleLobeMedialAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeMedialAlveoli); + SEFluidCircuitNode& RightInferiorLobeSuperiorAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeSuperiorAlveoli); + SEFluidCircuitNode& RightInferiorLobeMedialBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeMedialBasalAlveoli); + SEFluidCircuitNode& RightInferiorLobeAnteriorBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeAnteriorBasalAlveoli); + SEFluidCircuitNode& RightInferiorLobeLateralBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeLateralBasalAlveoli); + SEFluidCircuitNode& RightInferiorLobePosteriorBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobePosteriorBasalAlveoli); + SEFluidCircuitNode& LeftInferiorLobePosteriorBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobePosteriorBasalAlveoli); + SEFluidCircuitNode& LeftInferiorLobeLateralBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeLateralBasalAlveoli); + SEFluidCircuitNode& LeftInferiorLobeAnteromedialBasalAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveoli); + SEFluidCircuitNode& LeftInferiorLobeSuperiorAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeSuperiorAlveoli); + SEFluidCircuitNode& LeftSuperiorLobeInferiorLingulaAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveoli); + SEFluidCircuitNode& LeftSuperiorLobeSuperiorLingulaAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveoli); + SEFluidCircuitNode& LeftSuperiorLobeAnteriorAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeAnteriorAlveoli); + SEFluidCircuitNode& LeftSuperiorLobeApicoposteriorAlveoli = cRespiratory.CreateNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveoli); RightMainBronchus.GetPressure().Set(Ambient.GetNextPressure()); LeftMainBronchus.GetPressure().Set(Ambient.GetNextPressure()); @@ -383,103 +383,103 @@ namespace pulse SEFluidCircuitPath& PharynxToCarina = cRespiratory.CreatePath(Pharynx, Carina, pulse::RespiratoryPath::PharynxToCarina); PharynxToCarina.GetResistanceBaseline().SetValue(TracheaResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); - SEFluidCircuitPath& CarinaToRightMainBronchus = cRespiratory.CreatePath(Carina, RightMainBronchus, pulse::ExpandedRespiratoryPath::CarinaToRightMainBronchus); - SEFluidCircuitPath& RightMainBronchusToRightIntermediateBronchus = cRespiratory.CreatePath(RightMainBronchus, RightIntermediateBronchus, pulse::ExpandedRespiratoryPath::RightMainBronchusToRightIntermediateBronchus); - SEFluidCircuitPath& RightMainBronchusToRightSuperiorLobarBronchus = cRespiratory.CreatePath(RightMainBronchus, RightSuperiorLobarBronchus, pulse::ExpandedRespiratoryPath::RightMainBronchusToRightSuperiorLobarBronchus); - SEFluidCircuitPath& RightIntermediateBronchusToRightMiddleLobarBronchus = cRespiratory.CreatePath(RightIntermediateBronchus, RightMiddleLobarBronchus, pulse::ExpandedRespiratoryPath::RightIntermediateBronchusToRightMiddleLobarBronchus); - SEFluidCircuitPath& RightIntermediateBronchusToRightInferiorLobarBronchus1 = cRespiratory.CreatePath(RightIntermediateBronchus, RightInferiorLobarBronchus1, pulse::ExpandedRespiratoryPath::RightIntermediateBronchusToRightInferiorLobarBronchus1); - SEFluidCircuitPath& RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2 = cRespiratory.CreatePath(RightInferiorLobarBronchus1, RightInferiorLobarBronchus2, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2); - SEFluidCircuitPath& RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus = cRespiratory.CreatePath(RightSuperiorLobarBronchus, RightSuperiorApicoposteriorBronchus, pulse::ExpandedRespiratoryPath::RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus); - SEFluidCircuitPath& RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3 = cRespiratory.CreatePath(RightInferiorLobarBronchus2, RightInferiorLobarBronchus3, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3); - SEFluidCircuitPath& RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4 = cRespiratory.CreatePath(RightInferiorLobarBronchus2, RightInferiorLobarBronchus4, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4); - - SEFluidCircuitPath& CarinaToLeftMainBronchus = cRespiratory.CreatePath(Carina, LeftMainBronchus, pulse::ExpandedRespiratoryPath::CarinaToLeftMainBronchus); - SEFluidCircuitPath& LeftMainBronchusToLeftInferiorLobarBronchus1 = cRespiratory.CreatePath(LeftMainBronchus, LeftInferiorLobarBronchus1, pulse::ExpandedRespiratoryPath::LeftMainBronchusToLeftInferiorLobarBronchus1); - SEFluidCircuitPath& LeftMainBronchusToLeftSuperiorLobarBronchus = cRespiratory.CreatePath(LeftMainBronchus, LeftSuperiorLobarBronchus, pulse::ExpandedRespiratoryPath::LeftMainBronchusToLeftSuperiorLobarBronchus); - SEFluidCircuitPath& LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2 = cRespiratory.CreatePath(LeftInferiorLobarBronchus1, LeftInferiorLobarBronchus2, pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2); - SEFluidCircuitPath& LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3 = cRespiratory.CreatePath(LeftInferiorLobarBronchus2, LeftInferiorLobarBronchus3, pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3); - SEFluidCircuitPath& LeftSuperiorLobarBronchusToLeftLingularBonchus = cRespiratory.CreatePath(LeftSuperiorLobarBronchus, LeftLingularBonchus, pulse::ExpandedRespiratoryPath::LeftSuperiorLobarBronchusToLeftLingularBonchus); - SEFluidCircuitPath& LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus = cRespiratory.CreatePath(LeftSuperiorLobarBronchus, LeftSuperiorApicoposteriorBronchus, pulse::ExpandedRespiratoryPath::LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus); - - SEFluidCircuitPath& RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole = cRespiratory.CreatePath(RightSuperiorApicoposteriorBronchus, RightSuperiorLobeApicalBronchiole, pulse::ExpandedRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole); - SEFluidCircuitPath& RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole = cRespiratory.CreatePath(RightSuperiorApicoposteriorBronchus, RightSuperiorLobePosteriorBronchiole, pulse::ExpandedRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole); - SEFluidCircuitPath& RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole = cRespiratory.CreatePath(RightSuperiorLobarBronchus, RightSuperiorLobeAnteriorBronchiole, pulse::ExpandedRespiratoryPath::RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole); - SEFluidCircuitPath& RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole = cRespiratory.CreatePath(RightMiddleLobarBronchus, RightMiddleLobeLateralBronchiole, pulse::ExpandedRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole); - SEFluidCircuitPath& RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole = cRespiratory.CreatePath(RightMiddleLobarBronchus, RightMiddleLobeMedialBronchiole, pulse::ExpandedRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole); - SEFluidCircuitPath& RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus1, RightInferiorLobeSuperiorBronchiole, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole); - SEFluidCircuitPath& RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus2, RightInferiorLobeMedialBasalBronchiole, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole); - SEFluidCircuitPath& RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus3, RightInferiorLobeAnteriorBasalBronchiole, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole); - SEFluidCircuitPath& RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus4, RightInferiorLobeLateralBasalBronchiole, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole); - SEFluidCircuitPath& RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus4, RightInferiorLobePosteriorBasalBronchiole, pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole); - - SEFluidCircuitPath& LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole = cRespiratory.CreatePath(LeftInferiorLobarBronchus3, LeftInferiorLobeLateralBasalBronchiole, pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole); - SEFluidCircuitPath& LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole = cRespiratory.CreatePath(LeftInferiorLobarBronchus3, LeftInferiorLobePosteriorBasalBronchiole, pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole); - SEFluidCircuitPath& LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole = cRespiratory.CreatePath(LeftInferiorLobarBronchus2, LeftInferiorLobeAnteromedialBasalBronchiole, pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole); - SEFluidCircuitPath& LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole = cRespiratory.CreatePath(LeftInferiorLobarBronchus1, LeftInferiorLobeSuperiorBronchiole, pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole); - SEFluidCircuitPath& LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole = cRespiratory.CreatePath(LeftLingularBonchus, LeftSuperiorLobeInferiorLingulaBronchiole, pulse::ExpandedRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole); - SEFluidCircuitPath& LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole = cRespiratory.CreatePath(LeftLingularBonchus, LeftSuperiorLobeSuperiorLingulaBronchiole, pulse::ExpandedRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole); - SEFluidCircuitPath& LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole = cRespiratory.CreatePath(LeftSuperiorApicoposteriorBronchus, LeftSuperiorLobeAnteriorBronchiole, pulse::ExpandedRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole); - SEFluidCircuitPath& LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole = cRespiratory.CreatePath(LeftSuperiorApicoposteriorBronchus, LeftSuperiorLobeApicoposteriorBronchiole, pulse::ExpandedRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole); - - SEFluidCircuitPath& RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace = cRespiratory.CreatePath(RightSuperiorLobeApicalBronchiole, RightSuperiorLobeApicalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace); - SEFluidCircuitPath& RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace = cRespiratory.CreatePath(RightSuperiorLobePosteriorBronchiole, RightSuperiorLobePosteriorAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace); - SEFluidCircuitPath& RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace = cRespiratory.CreatePath(RightSuperiorLobeAnteriorBronchiole, RightSuperiorLobeAnteriorAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace); - SEFluidCircuitPath& RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace = cRespiratory.CreatePath(RightMiddleLobeLateralBronchiole, RightMiddleLobeLateralAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace); - SEFluidCircuitPath& RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace = cRespiratory.CreatePath(RightMiddleLobeMedialBronchiole, RightMiddleLobeMedialAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace); - SEFluidCircuitPath& RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobeSuperiorBronchiole, RightInferiorLobeSuperiorAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace); - SEFluidCircuitPath& RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobeMedialBasalBronchiole, RightInferiorLobeMedialBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace); - SEFluidCircuitPath& RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobeAnteriorBasalBronchiole, RightInferiorLobeAnteriorBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace); - SEFluidCircuitPath& RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobeLateralBasalBronchiole, RightInferiorLobeLateralBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace); - SEFluidCircuitPath& RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobePosteriorBasalBronchiole, RightInferiorLobePosteriorBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace); - - SEFluidCircuitPath& LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace = cRespiratory.CreatePath(LeftInferiorLobePosteriorBasalBronchiole, LeftInferiorLobePosteriorBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace); - SEFluidCircuitPath& LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace = cRespiratory.CreatePath(LeftInferiorLobeLateralBasalBronchiole, LeftInferiorLobeLateralBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace); - SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace = cRespiratory.CreatePath(LeftInferiorLobeAnteromedialBasalBronchiole, LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); - SEFluidCircuitPath& LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace = cRespiratory.CreatePath(LeftInferiorLobeSuperiorBronchiole, LeftInferiorLobeSuperiorAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace); - SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace = cRespiratory.CreatePath(LeftSuperiorLobeInferiorLingulaBronchiole, LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); - SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace = cRespiratory.CreatePath(LeftSuperiorLobeSuperiorLingulaBronchiole, LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); - SEFluidCircuitPath& LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace = cRespiratory.CreatePath(LeftSuperiorLobeAnteriorBronchiole, LeftSuperiorLobeAnteriorAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace); - SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace = cRespiratory.CreatePath(LeftSuperiorLobeApicoposteriorBronchiole, LeftSuperiorLobeApicoposteriorAlveolarDeadSpace, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); - - SEFluidCircuitPath& RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli = cRespiratory.CreatePath(RightSuperiorLobeApicalAlveolarDeadSpace, RightSuperiorLobeApicalAlveoli, pulse::ExpandedRespiratoryPath::RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli); - SEFluidCircuitPath& RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli = cRespiratory.CreatePath(RightSuperiorLobePosteriorAlveolarDeadSpace, RightSuperiorLobePosteriorAlveoli, pulse::ExpandedRespiratoryPath::RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli); - SEFluidCircuitPath& RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli = cRespiratory.CreatePath(RightSuperiorLobeAnteriorAlveolarDeadSpace, RightSuperiorLobeAnteriorAlveoli, pulse::ExpandedRespiratoryPath::RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli); - SEFluidCircuitPath& RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli = cRespiratory.CreatePath(RightMiddleLobeLateralAlveolarDeadSpace, RightMiddleLobeLateralAlveoli, pulse::ExpandedRespiratoryPath::RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli); - SEFluidCircuitPath& RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli = cRespiratory.CreatePath(RightMiddleLobeMedialAlveolarDeadSpace, RightMiddleLobeMedialAlveoli, pulse::ExpandedRespiratoryPath::RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli); - SEFluidCircuitPath& RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli = cRespiratory.CreatePath(RightInferiorLobeSuperiorAlveolarDeadSpace, RightInferiorLobeSuperiorAlveoli, pulse::ExpandedRespiratoryPath::RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli); - SEFluidCircuitPath& RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli = cRespiratory.CreatePath(RightInferiorLobeMedialBasalAlveolarDeadSpace, RightInferiorLobeMedialBasalAlveoli, pulse::ExpandedRespiratoryPath::RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli); - SEFluidCircuitPath& RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli = cRespiratory.CreatePath(RightInferiorLobeAnteriorBasalAlveolarDeadSpace, RightInferiorLobeAnteriorBasalAlveoli, pulse::ExpandedRespiratoryPath::RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli); - SEFluidCircuitPath& RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli = cRespiratory.CreatePath(RightInferiorLobeLateralBasalAlveolarDeadSpace, RightInferiorLobeLateralBasalAlveoli, pulse::ExpandedRespiratoryPath::RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli); - SEFluidCircuitPath& RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli = cRespiratory.CreatePath(RightInferiorLobePosteriorBasalAlveolarDeadSpace, RightInferiorLobePosteriorBasalAlveoli, pulse::ExpandedRespiratoryPath::RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli); - - SEFluidCircuitPath& LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli = cRespiratory.CreatePath(LeftInferiorLobePosteriorBasalAlveolarDeadSpace, LeftInferiorLobePosteriorBasalAlveoli, pulse::ExpandedRespiratoryPath::LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli); - SEFluidCircuitPath& LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli = cRespiratory.CreatePath(LeftInferiorLobeLateralBasalAlveolarDeadSpace, LeftInferiorLobeLateralBasalAlveoli, pulse::ExpandedRespiratoryPath::LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli); - SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli = cRespiratory.CreatePath(LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace, LeftInferiorLobeAnteromedialBasalAlveoli, pulse::ExpandedRespiratoryPath::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli); - SEFluidCircuitPath& LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli = cRespiratory.CreatePath(LeftInferiorLobeSuperiorAlveolarDeadSpace, LeftInferiorLobeSuperiorAlveoli, pulse::ExpandedRespiratoryPath::LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli); - SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli = cRespiratory.CreatePath(LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace, LeftSuperiorLobeInferiorLingulaAlveoli, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli); - SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli = cRespiratory.CreatePath(LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace, LeftSuperiorLobeSuperiorLingulaAlveoli, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli); - SEFluidCircuitPath& LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli = cRespiratory.CreatePath(LeftSuperiorLobeAnteriorAlveolarDeadSpace, LeftSuperiorLobeAnteriorAlveoli, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli); - SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli = cRespiratory.CreatePath(LeftSuperiorLobeApicoposteriorAlveolarDeadSpace, LeftSuperiorLobeApicoposteriorAlveoli, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli); - - SEFluidCircuitPath& RightSuperiorLobeApicalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightSuperiorLobeApicalAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightSuperiorLobeApicalAlveoliToRightPleuralConnection); - SEFluidCircuitPath& RightSuperiorLobePosteriorAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightSuperiorLobePosteriorAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightSuperiorLobePosteriorAlveoliToRightPleuralConnection); - SEFluidCircuitPath& RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightSuperiorLobeAnteriorAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection); - SEFluidCircuitPath& RightMiddleLobeLateralAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightMiddleLobeLateralAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightMiddleLobeLateralAlveoliToRightPleuralConnection); - SEFluidCircuitPath& RightMiddleLobeMedialAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightMiddleLobeMedialAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightMiddleLobeMedialAlveoliToRightPleuralConnection); - SEFluidCircuitPath& RightInferiorLobeSuperiorAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobeSuperiorAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightInferiorLobeSuperiorAlveoliToRightPleuralConnection); - SEFluidCircuitPath& RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobeMedialBasalAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection); - SEFluidCircuitPath& RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobeAnteriorBasalAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection); - SEFluidCircuitPath& RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobeLateralBasalAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection); - SEFluidCircuitPath& RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobePosteriorBasalAlveoli, RightPleuralConnection, pulse::ExpandedRespiratoryPath::RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection); - - SEFluidCircuitPath& LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftInferiorLobePosteriorBasalAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection); - SEFluidCircuitPath& LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftInferiorLobeLateralBasalAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection); - SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftInferiorLobeAnteromedialBasalAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection); - SEFluidCircuitPath& LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftInferiorLobeSuperiorAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection); - SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeInferiorLingulaAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection); - SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeSuperiorLingulaAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection); - SEFluidCircuitPath& LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeAnteriorAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection); - SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeApicoposteriorAlveoli, LeftPleuralConnection, pulse::ExpandedRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& CarinaToRightMainBronchus = cRespiratory.CreatePath(Carina, RightMainBronchus, pulse::ExpandedLungsRespiratoryPath::CarinaToRightMainBronchus); + SEFluidCircuitPath& RightMainBronchusToRightIntermediateBronchus = cRespiratory.CreatePath(RightMainBronchus, RightIntermediateBronchus, pulse::ExpandedLungsRespiratoryPath::RightMainBronchusToRightIntermediateBronchus); + SEFluidCircuitPath& RightMainBronchusToRightSuperiorLobarBronchus = cRespiratory.CreatePath(RightMainBronchus, RightSuperiorLobarBronchus, pulse::ExpandedLungsRespiratoryPath::RightMainBronchusToRightSuperiorLobarBronchus); + SEFluidCircuitPath& RightIntermediateBronchusToRightMiddleLobarBronchus = cRespiratory.CreatePath(RightIntermediateBronchus, RightMiddleLobarBronchus, pulse::ExpandedLungsRespiratoryPath::RightIntermediateBronchusToRightMiddleLobarBronchus); + SEFluidCircuitPath& RightIntermediateBronchusToRightInferiorLobarBronchus1 = cRespiratory.CreatePath(RightIntermediateBronchus, RightInferiorLobarBronchus1, pulse::ExpandedLungsRespiratoryPath::RightIntermediateBronchusToRightInferiorLobarBronchus1); + SEFluidCircuitPath& RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2 = cRespiratory.CreatePath(RightInferiorLobarBronchus1, RightInferiorLobarBronchus2, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2); + SEFluidCircuitPath& RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus = cRespiratory.CreatePath(RightSuperiorLobarBronchus, RightSuperiorApicoposteriorBronchus, pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus); + SEFluidCircuitPath& RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3 = cRespiratory.CreatePath(RightInferiorLobarBronchus2, RightInferiorLobarBronchus3, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3); + SEFluidCircuitPath& RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4 = cRespiratory.CreatePath(RightInferiorLobarBronchus2, RightInferiorLobarBronchus4, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4); + + SEFluidCircuitPath& CarinaToLeftMainBronchus = cRespiratory.CreatePath(Carina, LeftMainBronchus, pulse::ExpandedLungsRespiratoryPath::CarinaToLeftMainBronchus); + SEFluidCircuitPath& LeftMainBronchusToLeftInferiorLobarBronchus1 = cRespiratory.CreatePath(LeftMainBronchus, LeftInferiorLobarBronchus1, pulse::ExpandedLungsRespiratoryPath::LeftMainBronchusToLeftInferiorLobarBronchus1); + SEFluidCircuitPath& LeftMainBronchusToLeftSuperiorLobarBronchus = cRespiratory.CreatePath(LeftMainBronchus, LeftSuperiorLobarBronchus, pulse::ExpandedLungsRespiratoryPath::LeftMainBronchusToLeftSuperiorLobarBronchus); + SEFluidCircuitPath& LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2 = cRespiratory.CreatePath(LeftInferiorLobarBronchus1, LeftInferiorLobarBronchus2, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2); + SEFluidCircuitPath& LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3 = cRespiratory.CreatePath(LeftInferiorLobarBronchus2, LeftInferiorLobarBronchus3, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3); + SEFluidCircuitPath& LeftSuperiorLobarBronchusToLeftLingularBonchus = cRespiratory.CreatePath(LeftSuperiorLobarBronchus, LeftLingularBonchus, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobarBronchusToLeftLingularBonchus); + SEFluidCircuitPath& LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus = cRespiratory.CreatePath(LeftSuperiorLobarBronchus, LeftSuperiorApicoposteriorBronchus, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus); + + SEFluidCircuitPath& RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole = cRespiratory.CreatePath(RightSuperiorApicoposteriorBronchus, RightSuperiorLobeApicalBronchiole, pulse::ExpandedLungsRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole); + SEFluidCircuitPath& RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole = cRespiratory.CreatePath(RightSuperiorApicoposteriorBronchus, RightSuperiorLobePosteriorBronchiole, pulse::ExpandedLungsRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole); + SEFluidCircuitPath& RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole = cRespiratory.CreatePath(RightSuperiorLobarBronchus, RightSuperiorLobeAnteriorBronchiole, pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole); + SEFluidCircuitPath& RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole = cRespiratory.CreatePath(RightMiddleLobarBronchus, RightMiddleLobeLateralBronchiole, pulse::ExpandedLungsRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole); + SEFluidCircuitPath& RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole = cRespiratory.CreatePath(RightMiddleLobarBronchus, RightMiddleLobeMedialBronchiole, pulse::ExpandedLungsRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole); + SEFluidCircuitPath& RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus1, RightInferiorLobeSuperiorBronchiole, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole); + SEFluidCircuitPath& RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus2, RightInferiorLobeMedialBasalBronchiole, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole); + SEFluidCircuitPath& RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus3, RightInferiorLobeAnteriorBasalBronchiole, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole); + SEFluidCircuitPath& RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus4, RightInferiorLobeLateralBasalBronchiole, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole); + SEFluidCircuitPath& RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole = cRespiratory.CreatePath(RightInferiorLobarBronchus4, RightInferiorLobePosteriorBasalBronchiole, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole); + + SEFluidCircuitPath& LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole = cRespiratory.CreatePath(LeftInferiorLobarBronchus3, LeftInferiorLobeLateralBasalBronchiole, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole); + SEFluidCircuitPath& LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole = cRespiratory.CreatePath(LeftInferiorLobarBronchus3, LeftInferiorLobePosteriorBasalBronchiole, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole); + SEFluidCircuitPath& LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole = cRespiratory.CreatePath(LeftInferiorLobarBronchus2, LeftInferiorLobeAnteromedialBasalBronchiole, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole); + SEFluidCircuitPath& LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole = cRespiratory.CreatePath(LeftInferiorLobarBronchus1, LeftInferiorLobeSuperiorBronchiole, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole); + SEFluidCircuitPath& LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole = cRespiratory.CreatePath(LeftLingularBonchus, LeftSuperiorLobeInferiorLingulaBronchiole, pulse::ExpandedLungsRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole); + SEFluidCircuitPath& LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole = cRespiratory.CreatePath(LeftLingularBonchus, LeftSuperiorLobeSuperiorLingulaBronchiole, pulse::ExpandedLungsRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole); + SEFluidCircuitPath& LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole = cRespiratory.CreatePath(LeftSuperiorApicoposteriorBronchus, LeftSuperiorLobeAnteriorBronchiole, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole); + SEFluidCircuitPath& LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole = cRespiratory.CreatePath(LeftSuperiorApicoposteriorBronchus, LeftSuperiorLobeApicoposteriorBronchiole, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole); + + SEFluidCircuitPath& RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace = cRespiratory.CreatePath(RightSuperiorLobeApicalBronchiole, RightSuperiorLobeApicalAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace); + SEFluidCircuitPath& RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace = cRespiratory.CreatePath(RightSuperiorLobePosteriorBronchiole, RightSuperiorLobePosteriorAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace); + SEFluidCircuitPath& RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace = cRespiratory.CreatePath(RightSuperiorLobeAnteriorBronchiole, RightSuperiorLobeAnteriorAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace); + SEFluidCircuitPath& RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace = cRespiratory.CreatePath(RightMiddleLobeLateralBronchiole, RightMiddleLobeLateralAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace); + SEFluidCircuitPath& RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace = cRespiratory.CreatePath(RightMiddleLobeMedialBronchiole, RightMiddleLobeMedialAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace); + SEFluidCircuitPath& RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobeSuperiorBronchiole, RightInferiorLobeSuperiorAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace); + SEFluidCircuitPath& RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobeMedialBasalBronchiole, RightInferiorLobeMedialBasalAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace); + SEFluidCircuitPath& RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobeAnteriorBasalBronchiole, RightInferiorLobeAnteriorBasalAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace); + SEFluidCircuitPath& RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobeLateralBasalBronchiole, RightInferiorLobeLateralBasalAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace); + SEFluidCircuitPath& RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace = cRespiratory.CreatePath(RightInferiorLobePosteriorBasalBronchiole, RightInferiorLobePosteriorBasalAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace); + + SEFluidCircuitPath& LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace = cRespiratory.CreatePath(LeftInferiorLobePosteriorBasalBronchiole, LeftInferiorLobePosteriorBasalAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace); + SEFluidCircuitPath& LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace = cRespiratory.CreatePath(LeftInferiorLobeLateralBasalBronchiole, LeftInferiorLobeLateralBasalAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace); + SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace = cRespiratory.CreatePath(LeftInferiorLobeAnteromedialBasalBronchiole, LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + SEFluidCircuitPath& LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace = cRespiratory.CreatePath(LeftInferiorLobeSuperiorBronchiole, LeftInferiorLobeSuperiorAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace); + SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace = cRespiratory.CreatePath(LeftSuperiorLobeInferiorLingulaBronchiole, LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace = cRespiratory.CreatePath(LeftSuperiorLobeSuperiorLingulaBronchiole, LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + SEFluidCircuitPath& LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace = cRespiratory.CreatePath(LeftSuperiorLobeAnteriorBronchiole, LeftSuperiorLobeAnteriorAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace); + SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace = cRespiratory.CreatePath(LeftSuperiorLobeApicoposteriorBronchiole, LeftSuperiorLobeApicoposteriorAlveolarDeadSpace, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + + SEFluidCircuitPath& RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli = cRespiratory.CreatePath(RightSuperiorLobeApicalAlveolarDeadSpace, RightSuperiorLobeApicalAlveoli, pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli); + SEFluidCircuitPath& RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli = cRespiratory.CreatePath(RightSuperiorLobePosteriorAlveolarDeadSpace, RightSuperiorLobePosteriorAlveoli, pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli); + SEFluidCircuitPath& RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli = cRespiratory.CreatePath(RightSuperiorLobeAnteriorAlveolarDeadSpace, RightSuperiorLobeAnteriorAlveoli, pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli); + SEFluidCircuitPath& RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli = cRespiratory.CreatePath(RightMiddleLobeLateralAlveolarDeadSpace, RightMiddleLobeLateralAlveoli, pulse::ExpandedLungsRespiratoryPath::RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli); + SEFluidCircuitPath& RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli = cRespiratory.CreatePath(RightMiddleLobeMedialAlveolarDeadSpace, RightMiddleLobeMedialAlveoli, pulse::ExpandedLungsRespiratoryPath::RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli); + SEFluidCircuitPath& RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli = cRespiratory.CreatePath(RightInferiorLobeSuperiorAlveolarDeadSpace, RightInferiorLobeSuperiorAlveoli, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli); + SEFluidCircuitPath& RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli = cRespiratory.CreatePath(RightInferiorLobeMedialBasalAlveolarDeadSpace, RightInferiorLobeMedialBasalAlveoli, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli); + SEFluidCircuitPath& RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli = cRespiratory.CreatePath(RightInferiorLobeAnteriorBasalAlveolarDeadSpace, RightInferiorLobeAnteriorBasalAlveoli, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli); + SEFluidCircuitPath& RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli = cRespiratory.CreatePath(RightInferiorLobeLateralBasalAlveolarDeadSpace, RightInferiorLobeLateralBasalAlveoli, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli); + SEFluidCircuitPath& RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli = cRespiratory.CreatePath(RightInferiorLobePosteriorBasalAlveolarDeadSpace, RightInferiorLobePosteriorBasalAlveoli, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli); + + SEFluidCircuitPath& LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli = cRespiratory.CreatePath(LeftInferiorLobePosteriorBasalAlveolarDeadSpace, LeftInferiorLobePosteriorBasalAlveoli, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli); + SEFluidCircuitPath& LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli = cRespiratory.CreatePath(LeftInferiorLobeLateralBasalAlveolarDeadSpace, LeftInferiorLobeLateralBasalAlveoli, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli); + SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli = cRespiratory.CreatePath(LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace, LeftInferiorLobeAnteromedialBasalAlveoli, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli); + SEFluidCircuitPath& LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli = cRespiratory.CreatePath(LeftInferiorLobeSuperiorAlveolarDeadSpace, LeftInferiorLobeSuperiorAlveoli, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli); + SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli = cRespiratory.CreatePath(LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace, LeftSuperiorLobeInferiorLingulaAlveoli, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli); + SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli = cRespiratory.CreatePath(LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace, LeftSuperiorLobeSuperiorLingulaAlveoli, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli); + SEFluidCircuitPath& LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli = cRespiratory.CreatePath(LeftSuperiorLobeAnteriorAlveolarDeadSpace, LeftSuperiorLobeAnteriorAlveoli, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli); + SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli = cRespiratory.CreatePath(LeftSuperiorLobeApicoposteriorAlveolarDeadSpace, LeftSuperiorLobeApicoposteriorAlveoli, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli); + + SEFluidCircuitPath& RightSuperiorLobeApicalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightSuperiorLobeApicalAlveoli, RightPleuralConnection, pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobeApicalAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightSuperiorLobePosteriorAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightSuperiorLobePosteriorAlveoli, RightPleuralConnection, pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobePosteriorAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightSuperiorLobeAnteriorAlveoli, RightPleuralConnection, pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightMiddleLobeLateralAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightMiddleLobeLateralAlveoli, RightPleuralConnection, pulse::ExpandedLungsRespiratoryPath::RightMiddleLobeLateralAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightMiddleLobeMedialAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightMiddleLobeMedialAlveoli, RightPleuralConnection, pulse::ExpandedLungsRespiratoryPath::RightMiddleLobeMedialAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightInferiorLobeSuperiorAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobeSuperiorAlveoli, RightPleuralConnection, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeSuperiorAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobeMedialBasalAlveoli, RightPleuralConnection, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobeAnteriorBasalAlveoli, RightPleuralConnection, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobeLateralBasalAlveoli, RightPleuralConnection, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection); + SEFluidCircuitPath& RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection = cRespiratory.CreatePath(RightInferiorLobePosteriorBasalAlveoli, RightPleuralConnection, pulse::ExpandedLungsRespiratoryPath::RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection); + + SEFluidCircuitPath& LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftInferiorLobePosteriorBasalAlveoli, LeftPleuralConnection, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftInferiorLobeLateralBasalAlveoli, LeftPleuralConnection, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftInferiorLobeAnteromedialBasalAlveoli, LeftPleuralConnection, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftInferiorLobeSuperiorAlveoli, LeftPleuralConnection, pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeInferiorLingulaAlveoli, LeftPleuralConnection, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeSuperiorLingulaAlveoli, LeftPleuralConnection, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeAnteriorAlveoli, LeftPleuralConnection, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection); + SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeApicoposteriorAlveoli, LeftPleuralConnection, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection); double CarinaToRightMainBronchusResistance_cmH2O_s_Per_L = 1.125; double RightMainBronchusToRightIntermediateBronchusResistance_cmH2O_s_Per_L = 0.150; @@ -637,82 +637,82 @@ namespace pulse SEGasCompartment& pRightPleural = m_Compartments->CreateGasCompartment(pulse::PulmonaryCompartment::RightPleuralCavity); pRightPleural.MapNode(RightPleural); - SEGasCompartment& pRightMainBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMainBronchus); - SEGasCompartment& pLeftMainBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftMainBronchus); - SEGasCompartment& pRightIntermediateBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightIntermediateBronchus); - SEGasCompartment& pRightSuperiorLobarBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobarBronchus); - SEGasCompartment& pRightMiddleLobarBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobarBronchus); - SEGasCompartment& pRightInferiorLobarBronchus1 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobarBronchus1); - SEGasCompartment& pLeftInferiorLobarBronchus1 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobarBronchus1); - SEGasCompartment& pLeftSuperiorLobarBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobarBronchus); - SEGasCompartment& pRightInferiorLobarBronchus2 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobarBronchus2); - SEGasCompartment& pLeftInferiorLobarBronchus2 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobarBronchus2); - SEGasCompartment& pRightSuperiorApicoposteriorBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorApicoposteriorBronchus); - SEGasCompartment& pRightInferiorLobarBronchus3 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobarBronchus3); - SEGasCompartment& pLeftInferiorLobarBronchus3 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobarBronchus3); - SEGasCompartment& pLeftLingularBonchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftLingularBonchus); - SEGasCompartment& pLeftSuperiorApicoposteriorBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorApicoposteriorBronchus); - SEGasCompartment& pRightInferiorLobarBronchus4 = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobarBronchus4); - - SEGasCompartment& pRightSuperiorLobeApicalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeApicalBronchiole); - SEGasCompartment& pRightSuperiorLobePosteriorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobePosteriorBronchiole); - SEGasCompartment& pRightSuperiorLobeAnteriorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeAnteriorBronchiole); - SEGasCompartment& pRightMiddleLobeLateralBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeLateralBronchiole); - SEGasCompartment& pRightMiddleLobeMedialBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeMedialBronchiole); - SEGasCompartment& pRightInferiorLobeSuperiorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeSuperiorBronchiole); - SEGasCompartment& pRightInferiorLobeMedialBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeMedialBasalBronchiole); - SEGasCompartment& pRightInferiorLobeAnteriorBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeAnteriorBasalBronchiole); - SEGasCompartment& pRightInferiorLobeLateralBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeLateralBasalBronchiole); - SEGasCompartment& pRightInferiorLobePosteriorBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobePosteriorBasalBronchiole); - - SEGasCompartment& pLeftInferiorLobePosteriorBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobePosteriorBasalBronchiole); - SEGasCompartment& pLeftInferiorLobeLateralBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeLateralBasalBronchiole); - SEGasCompartment& pLeftInferiorLobeAnteromedialBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalBronchiole); - SEGasCompartment& pLeftInferiorLobeSuperiorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeSuperiorBronchiole); - SEGasCompartment& pLeftSuperiorLobeInferiorLingulaBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaBronchiole); - SEGasCompartment& pLeftSuperiorLobeSuperiorLingulaBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaBronchiole); - SEGasCompartment& pLeftSuperiorLobeAnteriorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeAnteriorBronchiole); - SEGasCompartment& pLeftSuperiorLobeApicoposteriorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeApicoposteriorBronchiole); - - SEGasCompartment& pRightSuperiorLobeApicalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeApicalAlveoli); - SEGasCompartment& pRightSuperiorLobePosteriorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobePosteriorAlveoli); - SEGasCompartment& pRightSuperiorLobeAnteriorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeAnteriorAlveoli); - SEGasCompartment& pRightMiddleLobeLateralAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeLateralAlveoli); - SEGasCompartment& pRightMiddleLobeMedialAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeMedialAlveoli); - SEGasCompartment& pRightInferiorLobeSuperiorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeSuperiorAlveoli); - SEGasCompartment& pRightInferiorLobeMedialBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeMedialBasalAlveoli); - SEGasCompartment& pRightInferiorLobeAnteriorBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeAnteriorBasalAlveoli); - SEGasCompartment& pRightInferiorLobeLateralBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeLateralBasalAlveoli); - SEGasCompartment& pRightInferiorLobePosteriorBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobePosteriorBasalAlveoli); - - SEGasCompartment& pLeftInferiorLobePosteriorBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobePosteriorBasalAlveoli); - SEGasCompartment& pLeftInferiorLobeLateralBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeLateralBasalAlveoli); - SEGasCompartment& pLeftInferiorLobeAnteromedialBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalAlveoli); - SEGasCompartment& pLeftInferiorLobeSuperiorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeSuperiorAlveoli); - SEGasCompartment& pLeftSuperiorLobeInferiorLingulaAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaAlveoli); - SEGasCompartment& pLeftSuperiorLobeSuperiorLingulaAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaAlveoli); - SEGasCompartment& pLeftSuperiorLobeAnteriorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeAnteriorAlveoli); - SEGasCompartment& pLeftSuperiorLobeApicoposteriorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeApicoposteriorAlveoli); - - SEGasCompartment& pRightSuperiorLobeApicalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeApicalAlveolarDeadSpace); - SEGasCompartment& pRightSuperiorLobePosteriorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobePosteriorAlveolarDeadSpace); - SEGasCompartment& pRightSuperiorLobeAnteriorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeAnteriorAlveolarDeadSpace); - SEGasCompartment& pRightMiddleLobeLateralAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeLateralAlveolarDeadSpace); - SEGasCompartment& pRightMiddleLobeMedialAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeMedialAlveolarDeadSpace); - SEGasCompartment& pRightInferiorLobeSuperiorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeSuperiorAlveolarDeadSpace); - SEGasCompartment& pRightInferiorLobeMedialBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeMedialBasalAlveolarDeadSpace); - SEGasCompartment& pRightInferiorLobeAnteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeAnteriorBasalAlveolarDeadSpace); - SEGasCompartment& pRightInferiorLobeLateralBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeLateralBasalAlveolarDeadSpace); - SEGasCompartment& pRightInferiorLobePosteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobePosteriorBasalAlveolarDeadSpace); - - SEGasCompartment& pLeftInferiorLobePosteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobePosteriorBasalAlveolarDeadSpace); - SEGasCompartment& pLeftInferiorLobeLateralBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeLateralBasalAlveolarDeadSpace); - SEGasCompartment& pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); - SEGasCompartment& pLeftInferiorLobeSuperiorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeSuperiorAlveolarDeadSpace); - SEGasCompartment& pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); - SEGasCompartment& pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); - SEGasCompartment& pLeftSuperiorLobeAnteriorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeAnteriorAlveolarDeadSpace); - SEGasCompartment& pLeftSuperiorLobeApicoposteriorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + SEGasCompartment& pRightMainBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMainBronchus); + SEGasCompartment& pLeftMainBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftMainBronchus); + SEGasCompartment& pRightIntermediateBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightIntermediateBronchus); + SEGasCompartment& pRightSuperiorLobarBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobarBronchus); + SEGasCompartment& pRightMiddleLobarBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobarBronchus); + SEGasCompartment& pRightInferiorLobarBronchus1 = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobarBronchus1); + SEGasCompartment& pLeftInferiorLobarBronchus1 = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobarBronchus1); + SEGasCompartment& pLeftSuperiorLobarBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobarBronchus); + SEGasCompartment& pRightInferiorLobarBronchus2 = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobarBronchus2); + SEGasCompartment& pLeftInferiorLobarBronchus2 = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobarBronchus2); + SEGasCompartment& pRightSuperiorApicoposteriorBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorApicoposteriorBronchus); + SEGasCompartment& pRightInferiorLobarBronchus3 = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobarBronchus3); + SEGasCompartment& pLeftInferiorLobarBronchus3 = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobarBronchus3); + SEGasCompartment& pLeftLingularBonchus = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftLingularBonchus); + SEGasCompartment& pLeftSuperiorApicoposteriorBronchus = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorApicoposteriorBronchus); + SEGasCompartment& pRightInferiorLobarBronchus4 = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobarBronchus4); + + SEGasCompartment& pRightSuperiorLobeApicalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobeApicalBronchiole); + SEGasCompartment& pRightSuperiorLobePosteriorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobePosteriorBronchiole); + SEGasCompartment& pRightSuperiorLobeAnteriorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobeAnteriorBronchiole); + SEGasCompartment& pRightMiddleLobeLateralBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobeLateralBronchiole); + SEGasCompartment& pRightMiddleLobeMedialBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobeMedialBronchiole); + SEGasCompartment& pRightInferiorLobeSuperiorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeSuperiorBronchiole); + SEGasCompartment& pRightInferiorLobeMedialBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeMedialBasalBronchiole); + SEGasCompartment& pRightInferiorLobeAnteriorBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeAnteriorBasalBronchiole); + SEGasCompartment& pRightInferiorLobeLateralBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeLateralBasalBronchiole); + SEGasCompartment& pRightInferiorLobePosteriorBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobePosteriorBasalBronchiole); + + SEGasCompartment& pLeftInferiorLobePosteriorBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobePosteriorBasalBronchiole); + SEGasCompartment& pLeftInferiorLobeLateralBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeLateralBasalBronchiole); + SEGasCompartment& pLeftInferiorLobeAnteromedialBasalBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalBronchiole); + SEGasCompartment& pLeftInferiorLobeSuperiorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeSuperiorBronchiole); + SEGasCompartment& pLeftSuperiorLobeInferiorLingulaBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaBronchiole); + SEGasCompartment& pLeftSuperiorLobeSuperiorLingulaBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaBronchiole); + SEGasCompartment& pLeftSuperiorLobeAnteriorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeAnteriorBronchiole); + SEGasCompartment& pLeftSuperiorLobeApicoposteriorBronchiole = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeApicoposteriorBronchiole); + + SEGasCompartment& pRightSuperiorLobeApicalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobeApicalAlveoli); + SEGasCompartment& pRightSuperiorLobePosteriorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobePosteriorAlveoli); + SEGasCompartment& pRightSuperiorLobeAnteriorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobeAnteriorAlveoli); + SEGasCompartment& pRightMiddleLobeLateralAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobeLateralAlveoli); + SEGasCompartment& pRightMiddleLobeMedialAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobeMedialAlveoli); + SEGasCompartment& pRightInferiorLobeSuperiorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeSuperiorAlveoli); + SEGasCompartment& pRightInferiorLobeMedialBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeMedialBasalAlveoli); + SEGasCompartment& pRightInferiorLobeAnteriorBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeAnteriorBasalAlveoli); + SEGasCompartment& pRightInferiorLobeLateralBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeLateralBasalAlveoli); + SEGasCompartment& pRightInferiorLobePosteriorBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobePosteriorBasalAlveoli); + + SEGasCompartment& pLeftInferiorLobePosteriorBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobePosteriorBasalAlveoli); + SEGasCompartment& pLeftInferiorLobeLateralBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeLateralBasalAlveoli); + SEGasCompartment& pLeftInferiorLobeAnteromedialBasalAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalAlveoli); + SEGasCompartment& pLeftInferiorLobeSuperiorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeSuperiorAlveoli); + SEGasCompartment& pLeftSuperiorLobeInferiorLingulaAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaAlveoli); + SEGasCompartment& pLeftSuperiorLobeSuperiorLingulaAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaAlveoli); + SEGasCompartment& pLeftSuperiorLobeAnteriorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeAnteriorAlveoli); + SEGasCompartment& pLeftSuperiorLobeApicoposteriorAlveoli = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeApicoposteriorAlveoli); + + SEGasCompartment& pRightSuperiorLobeApicalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobeApicalAlveolarDeadSpace); + SEGasCompartment& pRightSuperiorLobePosteriorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobePosteriorAlveolarDeadSpace); + SEGasCompartment& pRightSuperiorLobeAnteriorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobeAnteriorAlveolarDeadSpace); + SEGasCompartment& pRightMiddleLobeLateralAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobeLateralAlveolarDeadSpace); + SEGasCompartment& pRightMiddleLobeMedialAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobeMedialAlveolarDeadSpace); + SEGasCompartment& pRightInferiorLobeSuperiorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeSuperiorAlveolarDeadSpace); + SEGasCompartment& pRightInferiorLobeMedialBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeMedialBasalAlveolarDeadSpace); + SEGasCompartment& pRightInferiorLobeAnteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeAnteriorBasalAlveolarDeadSpace); + SEGasCompartment& pRightInferiorLobeLateralBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeLateralBasalAlveolarDeadSpace); + SEGasCompartment& pRightInferiorLobePosteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobePosteriorBasalAlveolarDeadSpace); + + SEGasCompartment& pLeftInferiorLobePosteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobePosteriorBasalAlveolarDeadSpace); + SEGasCompartment& pLeftInferiorLobeLateralBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeLateralBasalAlveolarDeadSpace); + SEGasCompartment& pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + SEGasCompartment& pLeftInferiorLobeSuperiorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeSuperiorAlveolarDeadSpace); + SEGasCompartment& pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + SEGasCompartment& pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + SEGasCompartment& pLeftSuperiorLobeAnteriorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeAnteriorAlveolarDeadSpace); + SEGasCompartment& pLeftSuperiorLobeApicoposteriorAlveolarDeadSpace = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeApicoposteriorAlveolarDeadSpace); pRightMainBronchus.MapNode(RightMainBronchus); pLeftMainBronchus.MapNode(LeftMainBronchus); @@ -792,7 +792,7 @@ namespace pulse pLeftSuperiorLobeApicoposteriorAlveoli.MapNode(LeftSuperiorLobeApicoposteriorAlveoli); // Set up hierarchy - SEGasCompartment& pLeftBranches = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftBranches); + SEGasCompartment& pLeftBranches = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftBranches); pLeftBranches.AddChild(pLeftMainBronchus); pLeftBranches.AddChild(pLeftInferiorLobarBronchus1); pLeftBranches.AddChild(pLeftSuperiorLobarBronchus); @@ -810,7 +810,7 @@ namespace pulse pLeftBranches.AddChild(pLeftSuperiorLobeAnteriorBronchiole); pLeftBranches.AddChild(pLeftSuperiorLobeApicoposteriorBronchiole); - SEGasCompartment& pRightBranches = m_Compartments->CreateGasCompartment(pulse::ExpandedPulmonaryCompartment::RightBranches); + SEGasCompartment& pRightBranches = m_Compartments->CreateGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightBranches); pRightBranches.AddChild(pRightMainBronchus); pRightBranches.AddChild(pRightIntermediateBronchus); pRightBranches.AddChild(pRightSuperiorLobarBronchus); @@ -922,83 +922,83 @@ namespace pulse SEGasCompartmentLink& pAirwayToStomach = m_Compartments->CreateGasLink(pAirway, pStomach, pulse::PulmonaryLink::AirwayToStomach); pAirwayToStomach.MapPath(AirwayToStomach); - SEGasCompartmentLink& pCarinaToRightMainBronchus = m_Compartments->CreateGasLink(pCarina, pRightMainBronchus, pulse::ExpandedPulmonaryLink::CarinaToRightMainBronchus); - SEGasCompartmentLink& pRightMainBronchusToRightIntermediateBronchus = m_Compartments->CreateGasLink(pRightMainBronchus, pRightIntermediateBronchus, pulse::ExpandedPulmonaryLink::RightMainBronchusToRightIntermediateBronchus); - SEGasCompartmentLink& pRightMainBronchusToRightSuperiorLobarBronchus = m_Compartments->CreateGasLink(pRightMainBronchus, pRightSuperiorLobarBronchus, pulse::ExpandedPulmonaryLink::RightMainBronchusToRightSuperiorLobarBronchus); - SEGasCompartmentLink& pRightIntermediateBronchusToRightMiddleLobarBronchus = m_Compartments->CreateGasLink(pRightIntermediateBronchus, pRightMiddleLobarBronchus, pulse::ExpandedPulmonaryLink::RightIntermediateBronchusToRightMiddleLobarBronchus); - SEGasCompartmentLink& pRightIntermediateBronchusToRightInferiorLobarBronchus1 = m_Compartments->CreateGasLink(pRightIntermediateBronchus, pRightInferiorLobarBronchus1, pulse::ExpandedPulmonaryLink::RightIntermediateBronchusToRightInferiorLobarBronchus1); - SEGasCompartmentLink& pRightInferiorLobarBronchus1ToRightInferiorLobarBronchus2 = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus1, pRightInferiorLobarBronchus2, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2); - SEGasCompartmentLink& pRightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus = m_Compartments->CreateGasLink(pRightSuperiorLobarBronchus, pRightSuperiorApicoposteriorBronchus, pulse::ExpandedPulmonaryLink::RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus); - SEGasCompartmentLink& pRightInferiorLobarBronchus2ToRightInferiorLobarBronchus3 = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus2, pRightInferiorLobarBronchus3, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3); - SEGasCompartmentLink& pRightInferiorLobarBronchus2ToRightInferiorLobarBronchus4 = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus2, pRightInferiorLobarBronchus4, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4); - - SEGasCompartmentLink& pCarinaToLeftMainBronchus = m_Compartments->CreateGasLink(pCarina, pLeftMainBronchus, pulse::ExpandedPulmonaryLink::CarinaToLeftMainBronchus); - SEGasCompartmentLink& pLeftMainBronchusToLeftInferiorLobarBronchus1 = m_Compartments->CreateGasLink(pLeftMainBronchus, pLeftInferiorLobarBronchus1, pulse::ExpandedPulmonaryLink::LeftMainBronchusToLeftInferiorLobarBronchus1); - SEGasCompartmentLink& pLeftMainBronchusToLeftSuperiorLobarBronchus = m_Compartments->CreateGasLink(pLeftMainBronchus, pLeftSuperiorLobarBronchus, pulse::ExpandedPulmonaryLink::LeftMainBronchusToLeftSuperiorLobarBronchus); - SEGasCompartmentLink& pLeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2 = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus1, pLeftInferiorLobarBronchus2, pulse::ExpandedPulmonaryLink::LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2); - SEGasCompartmentLink& pLeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3 = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus2, pLeftInferiorLobarBronchus3, pulse::ExpandedPulmonaryLink::LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3); - SEGasCompartmentLink& pLeftSuperiorLobarBronchusToLeftLingularBonchus = m_Compartments->CreateGasLink(pLeftSuperiorLobarBronchus, pLeftLingularBonchus, pulse::ExpandedPulmonaryLink::LeftSuperiorLobarBronchusToLeftLingularBonchus); - SEGasCompartmentLink& pLeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus = m_Compartments->CreateGasLink(pLeftSuperiorLobarBronchus, pLeftSuperiorApicoposteriorBronchus, pulse::ExpandedPulmonaryLink::LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus); - - SEGasCompartmentLink& pRightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole = m_Compartments->CreateGasLink(pRightSuperiorApicoposteriorBronchus, pRightSuperiorLobeApicalBronchiole, pulse::ExpandedPulmonaryLink::RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole); - SEGasCompartmentLink& pRightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole = m_Compartments->CreateGasLink(pRightSuperiorApicoposteriorBronchus, pRightSuperiorLobePosteriorBronchiole, pulse::ExpandedPulmonaryLink::RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole); - SEGasCompartmentLink& pRightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole = m_Compartments->CreateGasLink(pRightSuperiorLobarBronchus, pRightSuperiorLobeAnteriorBronchiole, pulse::ExpandedPulmonaryLink::RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole); - SEGasCompartmentLink& pRightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole = m_Compartments->CreateGasLink(pRightMiddleLobarBronchus, pRightMiddleLobeLateralBronchiole, pulse::ExpandedPulmonaryLink::RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole); - SEGasCompartmentLink& pRightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole = m_Compartments->CreateGasLink(pRightMiddleLobarBronchus, pRightMiddleLobeMedialBronchiole, pulse::ExpandedPulmonaryLink::RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole); - SEGasCompartmentLink& pRightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus1, pRightInferiorLobeSuperiorBronchiole, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole); - SEGasCompartmentLink& pRightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus2, pRightInferiorLobeMedialBasalBronchiole, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole); - SEGasCompartmentLink& pRightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus3, pRightInferiorLobeAnteriorBasalBronchiole, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole); - SEGasCompartmentLink& pRightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus4, pRightInferiorLobeLateralBasalBronchiole, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole); - SEGasCompartmentLink& pRightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus4, pRightInferiorLobePosteriorBasalBronchiole, pulse::ExpandedPulmonaryLink::RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole); - - SEGasCompartmentLink& pLeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus3, pLeftInferiorLobeLateralBasalBronchiole, pulse::ExpandedPulmonaryLink::LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole); - SEGasCompartmentLink& pLeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus3, pLeftInferiorLobePosteriorBasalBronchiole, pulse::ExpandedPulmonaryLink::LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole); - SEGasCompartmentLink& pLeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus2, pLeftInferiorLobeAnteromedialBasalBronchiole, pulse::ExpandedPulmonaryLink::LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole); - SEGasCompartmentLink& pLeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus1, pLeftInferiorLobeSuperiorBronchiole, pulse::ExpandedPulmonaryLink::LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole); - SEGasCompartmentLink& pLeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole = m_Compartments->CreateGasLink(pLeftLingularBonchus, pLeftSuperiorLobeInferiorLingulaBronchiole, pulse::ExpandedPulmonaryLink::LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole); - SEGasCompartmentLink& pLeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole = m_Compartments->CreateGasLink(pLeftLingularBonchus, pLeftSuperiorLobeSuperiorLingulaBronchiole, pulse::ExpandedPulmonaryLink::LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole); - SEGasCompartmentLink& pLeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole = m_Compartments->CreateGasLink(pLeftSuperiorApicoposteriorBronchus, pLeftSuperiorLobeAnteriorBronchiole, pulse::ExpandedPulmonaryLink::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole); - SEGasCompartmentLink& pLeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole = m_Compartments->CreateGasLink(pLeftSuperiorApicoposteriorBronchus, pLeftSuperiorLobeApicoposteriorBronchiole, pulse::ExpandedPulmonaryLink::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole); - - SEGasCompartmentLink& pRightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightSuperiorLobeApicalBronchiole, pRightSuperiorLobeApicalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace); - SEGasCompartmentLink& pRightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightSuperiorLobePosteriorBronchiole, pRightSuperiorLobePosteriorAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace); - SEGasCompartmentLink& pRightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightSuperiorLobeAnteriorBronchiole, pRightSuperiorLobeAnteriorAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace); - SEGasCompartmentLink& pRightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightMiddleLobeLateralBronchiole, pRightMiddleLobeLateralAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace); - SEGasCompartmentLink& pRightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightMiddleLobeMedialBronchiole, pRightMiddleLobeMedialAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace); - SEGasCompartmentLink& pRightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobeSuperiorBronchiole, pRightInferiorLobeSuperiorAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace); - SEGasCompartmentLink& pRightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobeMedialBasalBronchiole, pRightInferiorLobeMedialBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace); - SEGasCompartmentLink& pRightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobeAnteriorBasalBronchiole, pRightInferiorLobeAnteriorBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace); - SEGasCompartmentLink& pRightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobeLateralBasalBronchiole, pRightInferiorLobeLateralBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace); - SEGasCompartmentLink& pRightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobePosteriorBasalBronchiole, pRightInferiorLobePosteriorBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace); + SEGasCompartmentLink& pCarinaToRightMainBronchus = m_Compartments->CreateGasLink(pCarina, pRightMainBronchus, pulse::ExpandedLungsPulmonaryLink::CarinaToRightMainBronchus); + SEGasCompartmentLink& pRightMainBronchusToRightIntermediateBronchus = m_Compartments->CreateGasLink(pRightMainBronchus, pRightIntermediateBronchus, pulse::ExpandedLungsPulmonaryLink::RightMainBronchusToRightIntermediateBronchus); + SEGasCompartmentLink& pRightMainBronchusToRightSuperiorLobarBronchus = m_Compartments->CreateGasLink(pRightMainBronchus, pRightSuperiorLobarBronchus, pulse::ExpandedLungsPulmonaryLink::RightMainBronchusToRightSuperiorLobarBronchus); + SEGasCompartmentLink& pRightIntermediateBronchusToRightMiddleLobarBronchus = m_Compartments->CreateGasLink(pRightIntermediateBronchus, pRightMiddleLobarBronchus, pulse::ExpandedLungsPulmonaryLink::RightIntermediateBronchusToRightMiddleLobarBronchus); + SEGasCompartmentLink& pRightIntermediateBronchusToRightInferiorLobarBronchus1 = m_Compartments->CreateGasLink(pRightIntermediateBronchus, pRightInferiorLobarBronchus1, pulse::ExpandedLungsPulmonaryLink::RightIntermediateBronchusToRightInferiorLobarBronchus1); + SEGasCompartmentLink& pRightInferiorLobarBronchus1ToRightInferiorLobarBronchus2 = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus1, pRightInferiorLobarBronchus2, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobarBronchus1ToRightInferiorLobarBronchus2); + SEGasCompartmentLink& pRightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus = m_Compartments->CreateGasLink(pRightSuperiorLobarBronchus, pRightSuperiorApicoposteriorBronchus, pulse::ExpandedLungsPulmonaryLink::RightSuperiorLobarBronchusToRightSuperiorApicoposteriorBronchus); + SEGasCompartmentLink& pRightInferiorLobarBronchus2ToRightInferiorLobarBronchus3 = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus2, pRightInferiorLobarBronchus3, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobarBronchus2ToRightInferiorLobarBronchus3); + SEGasCompartmentLink& pRightInferiorLobarBronchus2ToRightInferiorLobarBronchus4 = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus2, pRightInferiorLobarBronchus4, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobarBronchus2ToRightInferiorLobarBronchus4); + + SEGasCompartmentLink& pCarinaToLeftMainBronchus = m_Compartments->CreateGasLink(pCarina, pLeftMainBronchus, pulse::ExpandedLungsPulmonaryLink::CarinaToLeftMainBronchus); + SEGasCompartmentLink& pLeftMainBronchusToLeftInferiorLobarBronchus1 = m_Compartments->CreateGasLink(pLeftMainBronchus, pLeftInferiorLobarBronchus1, pulse::ExpandedLungsPulmonaryLink::LeftMainBronchusToLeftInferiorLobarBronchus1); + SEGasCompartmentLink& pLeftMainBronchusToLeftSuperiorLobarBronchus = m_Compartments->CreateGasLink(pLeftMainBronchus, pLeftSuperiorLobarBronchus, pulse::ExpandedLungsPulmonaryLink::LeftMainBronchusToLeftSuperiorLobarBronchus); + SEGasCompartmentLink& pLeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2 = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus1, pLeftInferiorLobarBronchus2, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobarBronchus1ToLeftInferiorLobarBronchus2); + SEGasCompartmentLink& pLeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3 = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus2, pLeftInferiorLobarBronchus3, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobarBronchus2ToLeftInferiorLobarBronchus3); + SEGasCompartmentLink& pLeftSuperiorLobarBronchusToLeftLingularBonchus = m_Compartments->CreateGasLink(pLeftSuperiorLobarBronchus, pLeftLingularBonchus, pulse::ExpandedLungsPulmonaryLink::LeftSuperiorLobarBronchusToLeftLingularBonchus); + SEGasCompartmentLink& pLeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus = m_Compartments->CreateGasLink(pLeftSuperiorLobarBronchus, pLeftSuperiorApicoposteriorBronchus, pulse::ExpandedLungsPulmonaryLink::LeftSuperiorLobarBronchusToLeftSuperiorApicoposteriorBronchus); + + SEGasCompartmentLink& pRightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole = m_Compartments->CreateGasLink(pRightSuperiorApicoposteriorBronchus, pRightSuperiorLobeApicalBronchiole, pulse::ExpandedLungsPulmonaryLink::RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole); + SEGasCompartmentLink& pRightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole = m_Compartments->CreateGasLink(pRightSuperiorApicoposteriorBronchus, pRightSuperiorLobePosteriorBronchiole, pulse::ExpandedLungsPulmonaryLink::RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole); + SEGasCompartmentLink& pRightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole = m_Compartments->CreateGasLink(pRightSuperiorLobarBronchus, pRightSuperiorLobeAnteriorBronchiole, pulse::ExpandedLungsPulmonaryLink::RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole); + SEGasCompartmentLink& pRightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole = m_Compartments->CreateGasLink(pRightMiddleLobarBronchus, pRightMiddleLobeLateralBronchiole, pulse::ExpandedLungsPulmonaryLink::RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole); + SEGasCompartmentLink& pRightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole = m_Compartments->CreateGasLink(pRightMiddleLobarBronchus, pRightMiddleLobeMedialBronchiole, pulse::ExpandedLungsPulmonaryLink::RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole); + SEGasCompartmentLink& pRightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus1, pRightInferiorLobeSuperiorBronchiole, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole); + SEGasCompartmentLink& pRightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus2, pRightInferiorLobeMedialBasalBronchiole, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole); + SEGasCompartmentLink& pRightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus3, pRightInferiorLobeAnteriorBasalBronchiole, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole); + SEGasCompartmentLink& pRightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus4, pRightInferiorLobeLateralBasalBronchiole, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole); + SEGasCompartmentLink& pRightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole = m_Compartments->CreateGasLink(pRightInferiorLobarBronchus4, pRightInferiorLobePosteriorBasalBronchiole, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole); + + SEGasCompartmentLink& pLeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus3, pLeftInferiorLobeLateralBasalBronchiole, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole); + SEGasCompartmentLink& pLeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus3, pLeftInferiorLobePosteriorBasalBronchiole, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole); + SEGasCompartmentLink& pLeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus2, pLeftInferiorLobeAnteromedialBasalBronchiole, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole); + SEGasCompartmentLink& pLeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole = m_Compartments->CreateGasLink(pLeftInferiorLobarBronchus1, pLeftInferiorLobeSuperiorBronchiole, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole); + SEGasCompartmentLink& pLeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole = m_Compartments->CreateGasLink(pLeftLingularBonchus, pLeftSuperiorLobeInferiorLingulaBronchiole, pulse::ExpandedLungsPulmonaryLink::LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole); + SEGasCompartmentLink& pLeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole = m_Compartments->CreateGasLink(pLeftLingularBonchus, pLeftSuperiorLobeSuperiorLingulaBronchiole, pulse::ExpandedLungsPulmonaryLink::LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole); + SEGasCompartmentLink& pLeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole = m_Compartments->CreateGasLink(pLeftSuperiorApicoposteriorBronchus, pLeftSuperiorLobeAnteriorBronchiole, pulse::ExpandedLungsPulmonaryLink::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole); + SEGasCompartmentLink& pLeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole = m_Compartments->CreateGasLink(pLeftSuperiorApicoposteriorBronchus, pLeftSuperiorLobeApicoposteriorBronchiole, pulse::ExpandedLungsPulmonaryLink::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole); + + SEGasCompartmentLink& pRightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightSuperiorLobeApicalBronchiole, pRightSuperiorLobeApicalAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::RightSuperiorLobeApicalBronchioleToRightSuperiorLobeApicalAlveolarDeadSpace); + SEGasCompartmentLink& pRightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightSuperiorLobePosteriorBronchiole, pRightSuperiorLobePosteriorAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::RightSuperiorLobePosteriorBronchioleToRightSuperiorLobePosteriorAlveolarDeadSpace); + SEGasCompartmentLink& pRightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightSuperiorLobeAnteriorBronchiole, pRightSuperiorLobeAnteriorAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::RightSuperiorLobeAnteriorBronchioleToRightSuperiorLobeAnteriorAlveolarDeadSpace); + SEGasCompartmentLink& pRightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightMiddleLobeLateralBronchiole, pRightMiddleLobeLateralAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::RightMiddleLobeLateralBronchioleToRightMiddleLobeLateralAlveolarDeadSpace); + SEGasCompartmentLink& pRightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightMiddleLobeMedialBronchiole, pRightMiddleLobeMedialAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::RightMiddleLobeMedialBronchioleToRightMiddleLobeMedialAlveolarDeadSpace); + SEGasCompartmentLink& pRightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobeSuperiorBronchiole, pRightInferiorLobeSuperiorAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobeSuperiorBronchioleToRightInferiorLobeSuperiorAlveolarDeadSpace); + SEGasCompartmentLink& pRightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobeMedialBasalBronchiole, pRightInferiorLobeMedialBasalAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobeMedialBasalBronchioleToRightInferiorLobeMedialBasalAlveolarDeadSpace); + SEGasCompartmentLink& pRightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobeAnteriorBasalBronchiole, pRightInferiorLobeAnteriorBasalAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobeAnteriorBasalBronchioleToRightInferiorLobeAnteriorBasalAlveolarDeadSpace); + SEGasCompartmentLink& pRightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobeLateralBasalBronchiole, pRightInferiorLobeLateralBasalAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobeLateralBasalBronchioleToRightInferiorLobeLateralBasalAlveolarDeadSpace); + SEGasCompartmentLink& pRightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pRightInferiorLobePosteriorBasalBronchiole, pRightInferiorLobePosteriorBasalAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobePosteriorBasalBronchioleToRightInferiorLobePosteriorBasalAlveolarDeadSpace); - SEGasCompartmentLink& pLeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftInferiorLobePosteriorBasalBronchiole, pLeftInferiorLobePosteriorBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace); - SEGasCompartmentLink& pLeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftInferiorLobeLateralBasalBronchiole, pLeftInferiorLobeLateralBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace); - SEGasCompartmentLink& pLeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftInferiorLobeAnteromedialBasalBronchiole, pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); - SEGasCompartmentLink& pLeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftInferiorLobeSuperiorBronchiole, pLeftInferiorLobeSuperiorAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace); - SEGasCompartmentLink& pLeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftSuperiorLobeInferiorLingulaBronchiole, pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); - SEGasCompartmentLink& pLeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftSuperiorLobeSuperiorLingulaBronchiole, pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); - SEGasCompartmentLink& pLeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftSuperiorLobeAnteriorBronchiole, pLeftSuperiorLobeAnteriorAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace); - SEGasCompartmentLink& pLeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftSuperiorLobeApicoposteriorBronchiole, pLeftSuperiorLobeApicoposteriorAlveolarDeadSpace, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); + SEGasCompartmentLink& pLeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftInferiorLobePosteriorBasalBronchiole, pLeftInferiorLobePosteriorBasalAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobePosteriorBasalBronchioleToLeftInferiorLobePosteriorBasalAlveolarDeadSpace); + SEGasCompartmentLink& pLeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftInferiorLobeLateralBasalBronchiole, pLeftInferiorLobeLateralBasalAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobeLateralBasalBronchioleToLeftInferiorLobeLateralBasalAlveolarDeadSpace); + SEGasCompartmentLink& pLeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftInferiorLobeAnteromedialBasalBronchiole, pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobeAnteromedialBasalBronchioleToLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace); + SEGasCompartmentLink& pLeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftInferiorLobeSuperiorBronchiole, pLeftInferiorLobeSuperiorAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobeSuperiorBronchioleToLeftInferiorLobeSuperiorAlveolarDeadSpace); + SEGasCompartmentLink& pLeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftSuperiorLobeInferiorLingulaBronchiole, pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::LeftSuperiorLobeInferiorLingulaBronchioleToLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace); + SEGasCompartmentLink& pLeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftSuperiorLobeSuperiorLingulaBronchiole, pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::LeftSuperiorLobeSuperiorLingulaBronchioleToLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace); + SEGasCompartmentLink& pLeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftSuperiorLobeAnteriorBronchiole, pLeftSuperiorLobeAnteriorAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::LeftSuperiorLobeAnteriorBronchioleToLeftSuperiorLobeAnteriorAlveolarDeadSpace); + SEGasCompartmentLink& pLeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace = m_Compartments->CreateGasLink(pLeftSuperiorLobeApicoposteriorBronchiole, pLeftSuperiorLobeApicoposteriorAlveolarDeadSpace, pulse::ExpandedLungsPulmonaryLink::LeftSuperiorLobeApicoposteriorBronchioleToLeftSuperiorLobeApicoposteriorAlveolarDeadSpace); - SEGasCompartmentLink& pRightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli = m_Compartments->CreateGasLink(pRightSuperiorLobeApicalAlveolarDeadSpace, pRightSuperiorLobeApicalAlveoli, pulse::ExpandedPulmonaryLink::RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli); - SEGasCompartmentLink& pRightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli = m_Compartments->CreateGasLink(pRightSuperiorLobePosteriorAlveolarDeadSpace, pRightSuperiorLobePosteriorAlveoli, pulse::ExpandedPulmonaryLink::RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli); - SEGasCompartmentLink& pRightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli = m_Compartments->CreateGasLink(pRightSuperiorLobeAnteriorAlveolarDeadSpace, pRightSuperiorLobeAnteriorAlveoli, pulse::ExpandedPulmonaryLink::RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli); - SEGasCompartmentLink& pRightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli = m_Compartments->CreateGasLink(pRightMiddleLobeLateralAlveolarDeadSpace, pRightMiddleLobeLateralAlveoli, pulse::ExpandedPulmonaryLink::RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli); - SEGasCompartmentLink& pRightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli = m_Compartments->CreateGasLink(pRightMiddleLobeMedialAlveolarDeadSpace, pRightMiddleLobeMedialAlveoli, pulse::ExpandedPulmonaryLink::RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli); - SEGasCompartmentLink& pRightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobeSuperiorAlveolarDeadSpace, pRightInferiorLobeSuperiorAlveoli, pulse::ExpandedPulmonaryLink::RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli); - SEGasCompartmentLink& pRightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobeMedialBasalAlveolarDeadSpace, pRightInferiorLobeMedialBasalAlveoli, pulse::ExpandedPulmonaryLink::RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli); - SEGasCompartmentLink& pRightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobeAnteriorBasalAlveolarDeadSpace, pRightInferiorLobeAnteriorBasalAlveoli, pulse::ExpandedPulmonaryLink::RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli); - SEGasCompartmentLink& pRightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobeLateralBasalAlveolarDeadSpace, pRightInferiorLobeLateralBasalAlveoli, pulse::ExpandedPulmonaryLink::RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli); - SEGasCompartmentLink& pRightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobePosteriorBasalAlveolarDeadSpace, pRightInferiorLobePosteriorBasalAlveoli, pulse::ExpandedPulmonaryLink::RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli); + SEGasCompartmentLink& pRightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli = m_Compartments->CreateGasLink(pRightSuperiorLobeApicalAlveolarDeadSpace, pRightSuperiorLobeApicalAlveoli, pulse::ExpandedLungsPulmonaryLink::RightSuperiorLobeApicalAlveolarDeadSpaceToRightSuperiorLobeApicalAlveoli); + SEGasCompartmentLink& pRightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli = m_Compartments->CreateGasLink(pRightSuperiorLobePosteriorAlveolarDeadSpace, pRightSuperiorLobePosteriorAlveoli, pulse::ExpandedLungsPulmonaryLink::RightSuperiorLobePosteriorAlveolarDeadSpaceToRightSuperiorLobePosteriorAlveoli); + SEGasCompartmentLink& pRightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli = m_Compartments->CreateGasLink(pRightSuperiorLobeAnteriorAlveolarDeadSpace, pRightSuperiorLobeAnteriorAlveoli, pulse::ExpandedLungsPulmonaryLink::RightSuperiorLobeAnteriorAlveolarDeadSpaceToRightSuperiorLobeAnteriorAlveoli); + SEGasCompartmentLink& pRightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli = m_Compartments->CreateGasLink(pRightMiddleLobeLateralAlveolarDeadSpace, pRightMiddleLobeLateralAlveoli, pulse::ExpandedLungsPulmonaryLink::RightMiddleLobeLateralAlveolarDeadSpaceToRightMiddleLobeLateralAlveoli); + SEGasCompartmentLink& pRightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli = m_Compartments->CreateGasLink(pRightMiddleLobeMedialAlveolarDeadSpace, pRightMiddleLobeMedialAlveoli, pulse::ExpandedLungsPulmonaryLink::RightMiddleLobeMedialAlveolarDeadSpaceToRightMiddleLobeMedialAlveoli); + SEGasCompartmentLink& pRightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobeSuperiorAlveolarDeadSpace, pRightInferiorLobeSuperiorAlveoli, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobeSuperiorAlveolarDeadSpaceToRightInferiorLobeSuperiorAlveoli); + SEGasCompartmentLink& pRightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobeMedialBasalAlveolarDeadSpace, pRightInferiorLobeMedialBasalAlveoli, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobeMedialBasalAlveolarDeadSpaceToRightInferiorLobeMedialBasalAlveoli); + SEGasCompartmentLink& pRightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobeAnteriorBasalAlveolarDeadSpace, pRightInferiorLobeAnteriorBasalAlveoli, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobeAnteriorBasalAlveolarDeadSpaceToRightInferiorLobeAnteriorBasalAlveoli); + SEGasCompartmentLink& pRightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobeLateralBasalAlveolarDeadSpace, pRightInferiorLobeLateralBasalAlveoli, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobeLateralBasalAlveolarDeadSpaceToRightInferiorLobeLateralBasalAlveoli); + SEGasCompartmentLink& pRightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli = m_Compartments->CreateGasLink(pRightInferiorLobePosteriorBasalAlveolarDeadSpace, pRightInferiorLobePosteriorBasalAlveoli, pulse::ExpandedLungsPulmonaryLink::RightInferiorLobePosteriorBasalAlveolarDeadSpaceToRightInferiorLobePosteriorBasalAlveoli); - SEGasCompartmentLink& pLeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli = m_Compartments->CreateGasLink(pLeftInferiorLobePosteriorBasalAlveolarDeadSpace, pLeftInferiorLobePosteriorBasalAlveoli, pulse::ExpandedPulmonaryLink::LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli); - SEGasCompartmentLink& pLeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli = m_Compartments->CreateGasLink(pLeftInferiorLobeLateralBasalAlveolarDeadSpace, pLeftInferiorLobeLateralBasalAlveoli, pulse::ExpandedPulmonaryLink::LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli); - SEGasCompartmentLink& pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli = m_Compartments->CreateGasLink(pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace, pLeftInferiorLobeAnteromedialBasalAlveoli, pulse::ExpandedPulmonaryLink::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli); - SEGasCompartmentLink& pLeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli = m_Compartments->CreateGasLink(pLeftInferiorLobeSuperiorAlveolarDeadSpace, pLeftInferiorLobeSuperiorAlveoli, pulse::ExpandedPulmonaryLink::LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli); - SEGasCompartmentLink& pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli = m_Compartments->CreateGasLink(pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace, pLeftSuperiorLobeInferiorLingulaAlveoli, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli); - SEGasCompartmentLink& pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli = m_Compartments->CreateGasLink(pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace, pLeftSuperiorLobeSuperiorLingulaAlveoli, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli); - SEGasCompartmentLink& pLeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli = m_Compartments->CreateGasLink(pLeftSuperiorLobeAnteriorAlveolarDeadSpace, pLeftSuperiorLobeAnteriorAlveoli, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli); - SEGasCompartmentLink& pLeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli = m_Compartments->CreateGasLink(pLeftSuperiorLobeApicoposteriorAlveolarDeadSpace, pLeftSuperiorLobeApicoposteriorAlveoli, pulse::ExpandedPulmonaryLink::LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli); + SEGasCompartmentLink& pLeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli = m_Compartments->CreateGasLink(pLeftInferiorLobePosteriorBasalAlveolarDeadSpace, pLeftInferiorLobePosteriorBasalAlveoli, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobePosteriorBasalAlveolarDeadSpaceToLeftInferiorLobePosteriorBasalAlveoli); + SEGasCompartmentLink& pLeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli = m_Compartments->CreateGasLink(pLeftInferiorLobeLateralBasalAlveolarDeadSpace, pLeftInferiorLobeLateralBasalAlveoli, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobeLateralBasalAlveolarDeadSpaceToLeftInferiorLobeLateralBasalAlveoli); + SEGasCompartmentLink& pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli = m_Compartments->CreateGasLink(pLeftInferiorLobeAnteromedialBasalAlveolarDeadSpace, pLeftInferiorLobeAnteromedialBasalAlveoli, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpaceToLeftInferiorLobeAnteromedialBasalAlveoli); + SEGasCompartmentLink& pLeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli = m_Compartments->CreateGasLink(pLeftInferiorLobeSuperiorAlveolarDeadSpace, pLeftInferiorLobeSuperiorAlveoli, pulse::ExpandedLungsPulmonaryLink::LeftInferiorLobeSuperiorAlveolarDeadSpaceToLeftInferiorLobeSuperiorAlveoli); + SEGasCompartmentLink& pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli = m_Compartments->CreateGasLink(pLeftSuperiorLobeInferiorLingulaAlveolarDeadSpace, pLeftSuperiorLobeInferiorLingulaAlveoli, pulse::ExpandedLungsPulmonaryLink::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeInferiorLingulaAlveoli); + SEGasCompartmentLink& pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli = m_Compartments->CreateGasLink(pLeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace, pLeftSuperiorLobeSuperiorLingulaAlveoli, pulse::ExpandedLungsPulmonaryLink::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpaceToLeftSuperiorLobeSuperiorLingulaAlveoli); + SEGasCompartmentLink& pLeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli = m_Compartments->CreateGasLink(pLeftSuperiorLobeAnteriorAlveolarDeadSpace, pLeftSuperiorLobeAnteriorAlveoli, pulse::ExpandedLungsPulmonaryLink::LeftSuperiorLobeAnteriorAlveolarDeadSpaceToLeftSuperiorLobeAnteriorAlveoli); + SEGasCompartmentLink& pLeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli = m_Compartments->CreateGasLink(pLeftSuperiorLobeApicoposteriorAlveolarDeadSpace, pLeftSuperiorLobeApicoposteriorAlveoli, pulse::ExpandedLungsPulmonaryLink::LeftSuperiorLobeApicoposteriorAlveolarDeadSpaceToLeftSuperiorLobeApicoposteriorAlveoli); pCarinaToRightMainBronchus.MapPath(CarinaToRightMainBronchus); pRightMainBronchusToRightIntermediateBronchus.MapPath(RightMainBronchusToRightIntermediateBronchus); @@ -1307,9 +1307,9 @@ namespace pulse lAerosol.StateChange(); } - void Controller::SetupExpandedPulmonaryCardiovascular() + void Controller::SetupExpandedLungsCardiovascular() { - Info("Setting Up Expanded Pulmonary Cardiovascular"); + Info("Setting Up Expanded Lungs Cardiovascular"); bool male = m_InitialPatient->GetSex() == ePatient_Sex::Male ? true : false; double RightLungRatio = m_InitialPatient->GetRightLungRatio().GetValue(); double LeftLungRatio = 1 - RightLungRatio; @@ -1705,25 +1705,25 @@ namespace pulse AbdominalCavity.GetVolumeBaseline().SetValue(10.0, VolumeUnit::mL); AbdominalCavity.GetPressure().SetValue(0.0, PressureUnit::mmHg); - SEFluidCircuitNode& RightSuperiorLobeApicalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightSuperiorLobeApicalPulmonaryCapillaries); - SEFluidCircuitNode& RightSuperiorLobePosteriorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightSuperiorLobePosteriorPulmonaryCapillaries); - SEFluidCircuitNode& RightSuperiorLobeAnteriorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightSuperiorLobeAnteriorPulmonaryCapillaries); - SEFluidCircuitNode& RightMiddleLobeLateralPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightMiddleLobeLateralPulmonaryCapillaries); - SEFluidCircuitNode& RightMiddleLobeMedialPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightMiddleLobeMedialPulmonaryCapillaries); - SEFluidCircuitNode& RightInferiorLobeSuperiorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightInferiorLobeSuperiorPulmonaryCapillaries); - SEFluidCircuitNode& RightInferiorLobeMedialBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightInferiorLobeMedialBasalPulmonaryCapillaries); - SEFluidCircuitNode& RightInferiorLobeAnteriorBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightInferiorLobeAnteriorBasalPulmonaryCapillaries); - SEFluidCircuitNode& RightInferiorLobeLateralBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightInferiorLobeLateralBasalPulmonaryCapillaries); - SEFluidCircuitNode& RightInferiorLobePosteriorBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::RightInferiorLobePosteriorBasalPulmonaryCapillaries); - - SEFluidCircuitNode& LeftInferiorLobePosteriorBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftInferiorLobePosteriorBasalPulmonaryCapillaries); - SEFluidCircuitNode& LeftInferiorLobeLateralBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftInferiorLobeLateralBasalPulmonaryCapillaries); - SEFluidCircuitNode& LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); - SEFluidCircuitNode& LeftInferiorLobeSuperiorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftInferiorLobeSuperiorPulmonaryCapillaries); - SEFluidCircuitNode& LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); - SEFluidCircuitNode& LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); - SEFluidCircuitNode& LeftSuperiorLobeAnteriorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftSuperiorLobeAnteriorPulmonaryCapillaries); - SEFluidCircuitNode& LeftSuperiorLobeApicoposteriorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::CardiovascularNode::LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + SEFluidCircuitNode& RightSuperiorLobeApicalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::RightSuperiorLobeApicalPulmonaryCapillaries); + SEFluidCircuitNode& RightSuperiorLobePosteriorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::RightSuperiorLobePosteriorPulmonaryCapillaries); + SEFluidCircuitNode& RightSuperiorLobeAnteriorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::RightSuperiorLobeAnteriorPulmonaryCapillaries); + SEFluidCircuitNode& RightMiddleLobeLateralPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::RightMiddleLobeLateralPulmonaryCapillaries); + SEFluidCircuitNode& RightMiddleLobeMedialPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::RightMiddleLobeMedialPulmonaryCapillaries); + SEFluidCircuitNode& RightInferiorLobeSuperiorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::RightInferiorLobeSuperiorPulmonaryCapillaries); + SEFluidCircuitNode& RightInferiorLobeMedialBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::RightInferiorLobeMedialBasalPulmonaryCapillaries); + SEFluidCircuitNode& RightInferiorLobeAnteriorBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::RightInferiorLobeAnteriorBasalPulmonaryCapillaries); + SEFluidCircuitNode& RightInferiorLobeLateralBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::RightInferiorLobeLateralBasalPulmonaryCapillaries); + SEFluidCircuitNode& RightInferiorLobePosteriorBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::RightInferiorLobePosteriorBasalPulmonaryCapillaries); + + SEFluidCircuitNode& LeftInferiorLobePosteriorBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::LeftInferiorLobePosteriorBasalPulmonaryCapillaries); + SEFluidCircuitNode& LeftInferiorLobeLateralBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::LeftInferiorLobeLateralBasalPulmonaryCapillaries); + SEFluidCircuitNode& LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + SEFluidCircuitNode& LeftInferiorLobeSuperiorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::LeftInferiorLobeSuperiorPulmonaryCapillaries); + SEFluidCircuitNode& LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + SEFluidCircuitNode& LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + SEFluidCircuitNode& LeftSuperiorLobeAnteriorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::LeftSuperiorLobeAnteriorPulmonaryCapillaries); + SEFluidCircuitNode& LeftSuperiorLobeApicoposteriorPulmonaryCapillaries = cCardiovascular.CreateNode(pulse::ExpandedLungsCardiovascularNode::LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); RightSuperiorLobeApicalPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionRightSuperiorLobeApicalPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); RightSuperiorLobePosteriorPulmonaryCapillaries.GetVolumeBaseline().SetValue(VolumeFractionRightSuperiorLobePosteriorPulmonaryCapillaries * bloodVolume_mL, VolumeUnit::mL); @@ -2012,65 +2012,65 @@ namespace pulse SEFluidCircuitPath& IVToVenaCava1 = cCardiovascular.CreatePath(Ground, VenaCava1, pulse::CardiovascularPath::IVToVenaCava1); IVToVenaCava1.GetFlowSourceBaseline().SetValue(0.0, VolumePerTimeUnit::mL_Per_s); - SEFluidCircuitPath& RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightSuperiorLobeApicalPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries); - SEFluidCircuitPath& RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightSuperiorLobePosteriorPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries); - SEFluidCircuitPath& RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightSuperiorLobeAnteriorPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries); - SEFluidCircuitPath& RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightMiddleLobeLateralPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries); - SEFluidCircuitPath& RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightMiddleLobeMedialPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries); - SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobeSuperiorPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries); - SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobeMedialBasalPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries); - SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobeAnteriorBasalPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); - SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobeLateralBasalPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries); - SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobePosteriorBasalPulmonaryCapillaries, pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries); - - SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftInferiorLobePosteriorBasalPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); - SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftInferiorLobeLateralBasalPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries); - SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); - SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftInferiorLobeSuperiorPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries); - SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); - SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); - SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftSuperiorLobeAnteriorPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries); - SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftSuperiorLobeApicoposteriorPulmonaryCapillaries, pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); - - SEFluidCircuitPath& RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightSuperiorLobeApicalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1); - SEFluidCircuitPath& RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightSuperiorLobePosteriorPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1); - SEFluidCircuitPath& RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightSuperiorLobeAnteriorPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1); - SEFluidCircuitPath& RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightMiddleLobeLateralPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1); - SEFluidCircuitPath& RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightMiddleLobeMedialPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1); - SEFluidCircuitPath& RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobeSuperiorPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1); - SEFluidCircuitPath& RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobeMedialBasalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1); - SEFluidCircuitPath& RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobeAnteriorBasalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1); - SEFluidCircuitPath& RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobeLateralBasalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1); - SEFluidCircuitPath& RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobePosteriorBasalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1); - - SEFluidCircuitPath& LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftInferiorLobePosteriorBasalPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1); - SEFluidCircuitPath& LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftInferiorLobeLateralBasalPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1); - SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1); - SEFluidCircuitPath& LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftInferiorLobeSuperiorPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1); - SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1); - SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1); - SEFluidCircuitPath& LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftSuperiorLobeAnteriorPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1); - SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1); - - SEFluidCircuitPath& RightSuperiorLobeApicalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightSuperiorLobeApicalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToGround); - SEFluidCircuitPath& RightSuperiorLobePosteriorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightSuperiorLobePosteriorPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToGround); - SEFluidCircuitPath& RightSuperiorLobeAnteriorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightSuperiorLobeAnteriorPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToGround); - SEFluidCircuitPath& RightMiddleLobeLateralPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightMiddleLobeLateralPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToGround); - SEFluidCircuitPath& RightMiddleLobeMedialPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightMiddleLobeMedialPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToGround); - SEFluidCircuitPath& RightInferiorLobeSuperiorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobeSuperiorPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToGround); - SEFluidCircuitPath& RightInferiorLobeMedialBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobeMedialBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToGround); - SEFluidCircuitPath& RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobeAnteriorBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround); - SEFluidCircuitPath& RightInferiorLobeLateralBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobeLateralBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToGround); - SEFluidCircuitPath& RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobePosteriorBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround); - - SEFluidCircuitPath& LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftInferiorLobePosteriorBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround); - SEFluidCircuitPath& LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftInferiorLobeLateralBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround); - SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround); - SEFluidCircuitPath& LeftInferiorLobeSuperiorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftInferiorLobeSuperiorPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToGround); - SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround); - SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround); - SEFluidCircuitPath& LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftSuperiorLobeAnteriorPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround); - SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries, Ground, pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightSuperiorLobeApicalPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightSuperiorLobePosteriorPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightSuperiorLobeAnteriorPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightMiddleLobeLateralPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightMiddleLobeMedialPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobeSuperiorPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobeMedialBasalPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobeAnteriorBasalPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobeLateralBasalPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries); + SEFluidCircuitPath& RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightInferiorLobePosteriorBasalPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries); + + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftInferiorLobePosteriorBasalPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftInferiorLobeLateralBasalPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftInferiorLobeSuperiorPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftSuperiorLobeAnteriorPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries); + SEFluidCircuitPath& LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftSuperiorLobeApicoposteriorPulmonaryCapillaries, pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + SEFluidCircuitPath& RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightSuperiorLobeApicalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightSuperiorLobePosteriorPulmonaryCapillaries, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightSuperiorLobeAnteriorPulmonaryCapillaries, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightMiddleLobeLateralPulmonaryCapillaries, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightMiddleLobeMedialPulmonaryCapillaries, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobeSuperiorPulmonaryCapillaries, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobeMedialBasalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobeAnteriorBasalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobeLateralBasalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1); + SEFluidCircuitPath& RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1 = cCardiovascular.CreatePath(RightInferiorLobePosteriorBasalPulmonaryCapillaries, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1); + + SEFluidCircuitPath& LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftInferiorLobePosteriorBasalPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftInferiorLobeLateralBasalPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftInferiorLobeSuperiorPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftSuperiorLobeAnteriorPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1); + SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1 = cCardiovascular.CreatePath(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1); + + SEFluidCircuitPath& RightSuperiorLobeApicalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightSuperiorLobeApicalPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightSuperiorLobePosteriorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightSuperiorLobePosteriorPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightSuperiorLobeAnteriorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightSuperiorLobeAnteriorPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightMiddleLobeLateralPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightMiddleLobeLateralPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightMiddleLobeMedialPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightMiddleLobeMedialPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightInferiorLobeSuperiorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobeSuperiorPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightInferiorLobeMedialBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobeMedialBasalPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobeAnteriorBasalPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightInferiorLobeLateralBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobeLateralBasalPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToGround); + SEFluidCircuitPath& RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(RightInferiorLobePosteriorBasalPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround); + + SEFluidCircuitPath& LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftInferiorLobePosteriorBasalPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftInferiorLobeLateralBasalPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftInferiorLobeSuperiorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftInferiorLobeSuperiorPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftSuperiorLobeAnteriorPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround); + SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround = cCardiovascular.CreatePath(LeftSuperiorLobeApicoposteriorPulmonaryCapillaries, Ground, pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround); RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceRightSuperiorLobeApicalPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries.GetResistanceBaseline().SetValue(ResistanceRightSuperiorLobePosteriorPulmonaryCapillaries, PressureTimePerVolumeUnit::mmHg_s_Per_mL); @@ -2133,25 +2133,25 @@ namespace pulse LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround.GetComplianceBaseline().SetValue(0.0, VolumePerPressureUnit::mL_Per_mmHg); //Shunts - SEFluidCircuitPath& RightSuperiorLobeApicalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightSuperiorLobeApicalShunt); - SEFluidCircuitPath& RightSuperiorLobePosteriorShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightSuperiorLobePosteriorShunt); - SEFluidCircuitPath& RightSuperiorLobeAnteriorShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightSuperiorLobeAnteriorShunt); - SEFluidCircuitPath& RightMiddleLobeLateralShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightMiddleLobeLateralShunt); - SEFluidCircuitPath& RightMiddleLobeMedialShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightMiddleLobeMedialShunt); - SEFluidCircuitPath& RightInferiorLobeSuperiorShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeSuperiorShunt); - SEFluidCircuitPath& RightInferiorLobeMedialBasalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeMedialBasalShunt); - SEFluidCircuitPath& RightInferiorLobeAnteriorBasalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalShunt); - SEFluidCircuitPath& RightInferiorLobeLateralBasalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobeLateralBasalShunt); - SEFluidCircuitPath& RightInferiorLobePosteriorBasalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::CardiovascularPath::RightInferiorLobePosteriorBasalShunt); - - SEFluidCircuitPath& LeftInferiorLobePosteriorBasalShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalShunt); - SEFluidCircuitPath& LeftInferiorLobeLateralBasalShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobeLateralBasalShunt); - SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt); - SEFluidCircuitPath& LeftInferiorLobeSuperiorShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftInferiorLobeSuperiorShunt); - SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt); - SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt); - SEFluidCircuitPath& LeftSuperiorLobeAnteriorShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeAnteriorShunt); - SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorShunt); + SEFluidCircuitPath& RightSuperiorLobeApicalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalShunt); + SEFluidCircuitPath& RightSuperiorLobePosteriorShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorShunt); + SEFluidCircuitPath& RightSuperiorLobeAnteriorShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorShunt); + SEFluidCircuitPath& RightMiddleLobeLateralShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralShunt); + SEFluidCircuitPath& RightMiddleLobeMedialShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialShunt); + SEFluidCircuitPath& RightInferiorLobeSuperiorShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorShunt); + SEFluidCircuitPath& RightInferiorLobeMedialBasalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalShunt); + SEFluidCircuitPath& RightInferiorLobeAnteriorBasalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalShunt); + SEFluidCircuitPath& RightInferiorLobeLateralBasalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalShunt); + SEFluidCircuitPath& RightInferiorLobePosteriorBasalShunt = cCardiovascular.CreatePath(RightPulmonaryArteries1, RightPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalShunt); + + SEFluidCircuitPath& LeftInferiorLobePosteriorBasalShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalShunt); + SEFluidCircuitPath& LeftInferiorLobeLateralBasalShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalShunt); + SEFluidCircuitPath& LeftInferiorLobeAnteromedialBasalShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt); + SEFluidCircuitPath& LeftInferiorLobeSuperiorShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorShunt); + SEFluidCircuitPath& LeftSuperiorLobeInferiorLingulaShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt); + SEFluidCircuitPath& LeftSuperiorLobeSuperiorLingulaShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt); + SEFluidCircuitPath& LeftSuperiorLobeAnteriorShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorShunt); + SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorShunt = cCardiovascular.CreatePath(LeftPulmonaryArteries1, LeftPulmonaryVeins1, pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorShunt); RightSuperiorLobeApicalShunt.GetResistanceBaseline().SetValue(10.0 * ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); RightSuperiorLobePosteriorShunt.GetResistanceBaseline().SetValue(10.0 * ResistanceShuntRight, PressureTimePerVolumeUnit::mmHg_s_Per_mL); @@ -2456,25 +2456,25 @@ namespace pulse SELiquidCompartment& vGround = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::Ground); vGround.MapNode(Ground); - SELiquidCompartment& vRightSuperiorLobeApicalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightSuperiorLobeApicalPulmonaryCapillaries); - SELiquidCompartment& vRightSuperiorLobePosteriorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightSuperiorLobePosteriorPulmonaryCapillaries); - SELiquidCompartment& vRightSuperiorLobeAnteriorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightSuperiorLobeAnteriorPulmonaryCapillaries); - SELiquidCompartment& vRightMiddleLobeLateralPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightMiddleLobeLateralPulmonaryCapillaries); - SELiquidCompartment& vRightMiddleLobeMedialPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightMiddleLobeMedialPulmonaryCapillaries); - SELiquidCompartment& vRightInferiorLobeSuperiorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeSuperiorPulmonaryCapillaries); - SELiquidCompartment& vRightInferiorLobeMedialBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeMedialBasalPulmonaryCapillaries); - SELiquidCompartment& vRightInferiorLobeAnteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeAnteriorBasalPulmonaryCapillaries); - SELiquidCompartment& vRightInferiorLobeLateralBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeLateralBasalPulmonaryCapillaries); - SELiquidCompartment& vRightInferiorLobePosteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::RightInferiorLobePosteriorBasalPulmonaryCapillaries); - - SELiquidCompartment& vLeftInferiorLobePosteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobePosteriorBasalPulmonaryCapillaries); - SELiquidCompartment& vLeftInferiorLobeLateralBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobeLateralBasalPulmonaryCapillaries); - SELiquidCompartment& vLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); - SELiquidCompartment& vLeftInferiorLobeSuperiorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobeSuperiorPulmonaryCapillaries); - SELiquidCompartment& vLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); - SELiquidCompartment& vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); - SELiquidCompartment& vLeftSuperiorLobeAnteriorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeAnteriorPulmonaryCapillaries); - SELiquidCompartment& vLeftSuperiorLobeApicoposteriorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + SELiquidCompartment& vRightSuperiorLobeApicalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightSuperiorLobeApicalPulmonaryCapillaries); + SELiquidCompartment& vRightSuperiorLobePosteriorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightSuperiorLobePosteriorPulmonaryCapillaries); + SELiquidCompartment& vRightSuperiorLobeAnteriorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightSuperiorLobeAnteriorPulmonaryCapillaries); + SELiquidCompartment& vRightMiddleLobeLateralPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightMiddleLobeLateralPulmonaryCapillaries); + SELiquidCompartment& vRightMiddleLobeMedialPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightMiddleLobeMedialPulmonaryCapillaries); + SELiquidCompartment& vRightInferiorLobeSuperiorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeSuperiorPulmonaryCapillaries); + SELiquidCompartment& vRightInferiorLobeMedialBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeMedialBasalPulmonaryCapillaries); + SELiquidCompartment& vRightInferiorLobeAnteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeAnteriorBasalPulmonaryCapillaries); + SELiquidCompartment& vRightInferiorLobeLateralBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeLateralBasalPulmonaryCapillaries); + SELiquidCompartment& vRightInferiorLobePosteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobePosteriorBasalPulmonaryCapillaries); + + SELiquidCompartment& vLeftInferiorLobePosteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobePosteriorBasalPulmonaryCapillaries); + SELiquidCompartment& vLeftInferiorLobeLateralBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobeLateralBasalPulmonaryCapillaries); + SELiquidCompartment& vLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + SELiquidCompartment& vLeftInferiorLobeSuperiorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobeSuperiorPulmonaryCapillaries); + SELiquidCompartment& vLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + SELiquidCompartment& vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + SELiquidCompartment& vLeftSuperiorLobeAnteriorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeAnteriorPulmonaryCapillaries); + SELiquidCompartment& vLeftSuperiorLobeApicoposteriorPulmonaryCapillaries = m_Compartments->CreateLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeApicoposteriorPulmonaryCapillaries); vRightSuperiorLobeApicalPulmonaryCapillaries.MapNode(RightSuperiorLobeApicalPulmonaryCapillaries); vRightSuperiorLobePosteriorPulmonaryCapillaries.MapNode(RightSuperiorLobePosteriorPulmonaryCapillaries); @@ -2700,65 +2700,65 @@ namespace pulse SELiquidCompartmentLink& vVenaCavaIV = m_Compartments->CreateLiquidLink(vGround, vVenaCava, pulse::VascularLink::VenaCavaIV); vVenaCavaIV.MapPath(IVToVenaCava1); - SELiquidCompartmentLink& vRightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightSuperiorLobeApicalPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries); - SELiquidCompartmentLink& vRightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightSuperiorLobePosteriorPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries); - SELiquidCompartmentLink& vRightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightSuperiorLobeAnteriorPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries); - SELiquidCompartmentLink& vRightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightMiddleLobeLateralPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries); - SELiquidCompartmentLink& vRightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightMiddleLobeMedialPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries); - SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobeSuperiorPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries); - SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobeMedialBasalPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries); - SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobeAnteriorBasalPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); - SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobeLateralBasalPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries); - SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobePosteriorBasalPulmonaryCapillaries, pulse::VascularLink::RightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries); - - SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftInferiorLobePosteriorBasalPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); - SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftInferiorLobeLateralBasalPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries); - SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); - SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftInferiorLobeSuperiorPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries); - SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); - SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); - SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftSuperiorLobeAnteriorPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries); - SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftSuperiorLobeApicoposteriorPulmonaryCapillaries, pulse::VascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); - - SELiquidCompartmentLink& vRightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightSuperiorLobeApicalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins); - SELiquidCompartmentLink& vRightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightSuperiorLobePosteriorPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins); - SELiquidCompartmentLink& vRightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightSuperiorLobeAnteriorPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins); - SELiquidCompartmentLink& vRightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightMiddleLobeLateralPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins); - SELiquidCompartmentLink& vRightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightMiddleLobeMedialPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins); - SELiquidCompartmentLink& vRightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobeSuperiorPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins); - SELiquidCompartmentLink& vRightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobeMedialBasalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins); - SELiquidCompartmentLink& vRightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobeAnteriorBasalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); - SELiquidCompartmentLink& vRightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobeLateralBasalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins); - SELiquidCompartmentLink& vRightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobePosteriorBasalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::VascularLink::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); - - SELiquidCompartmentLink& vLeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftInferiorLobePosteriorBasalPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins); - SELiquidCompartmentLink& vLeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftInferiorLobeLateralBasalPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins); - SELiquidCompartmentLink& vLeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins); - SELiquidCompartmentLink& vLeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftInferiorLobeSuperiorPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins); - SELiquidCompartmentLink& vLeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); - SELiquidCompartmentLink& vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); - SELiquidCompartmentLink& vLeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftSuperiorLobeAnteriorPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins); - SELiquidCompartmentLink& vLeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftSuperiorLobeApicoposteriorPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins); - - SELiquidCompartmentLink& vRightSuperiorLobeApicalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightSuperiorLobeApicalShunt); - SELiquidCompartmentLink& vRightSuperiorLobePosteriorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightSuperiorLobePosteriorShunt); - SELiquidCompartmentLink& vRightSuperiorLobeAnteriorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightSuperiorLobeAnteriorShunt); - SELiquidCompartmentLink& vRightMiddleLobeLateralShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightMiddleLobeLateralShunt); - SELiquidCompartmentLink& vRightMiddleLobeMedialShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightMiddleLobeMedialShunt); - SELiquidCompartmentLink& vRightInferiorLobeSuperiorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightInferiorLobeSuperiorShunt); - SELiquidCompartmentLink& vRightInferiorLobeMedialBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightInferiorLobeMedialBasalShunt); - SELiquidCompartmentLink& vRightInferiorLobeAnteriorBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightInferiorLobeAnteriorBasalShunt); - SELiquidCompartmentLink& vRightInferiorLobeLateralBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightInferiorLobeLateralBasalShunt); - SELiquidCompartmentLink& vRightInferiorLobePosteriorBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::RightInferiorLobePosteriorBasalShunt); - - SELiquidCompartmentLink& vLeftInferiorLobePosteriorBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobePosteriorBasalShunt); - SELiquidCompartmentLink& vLeftInferiorLobeLateralBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobeLateralBasalShunt); - SELiquidCompartmentLink& vLeftInferiorLobeAnteromedialBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobeAnteromedialBasalShunt); - SELiquidCompartmentLink& vLeftInferiorLobeSuperiorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftInferiorLobeSuperiorShunt); - SELiquidCompartmentLink& vLeftSuperiorLobeInferiorLingulaShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeInferiorLingulaShunt); - SELiquidCompartmentLink& vLeftSuperiorLobeSuperiorLingulaShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeSuperiorLingulaShunt); - SELiquidCompartmentLink& vLeftSuperiorLobeAnteriorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeAnteriorShunt); - SELiquidCompartmentLink& vLeftSuperiorLobeApicoposteriorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::VascularLink::LeftSuperiorLobeApicoposteriorShunt); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightSuperiorLobeApicalPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightSuperiorLobePosteriorPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightSuperiorLobeAnteriorPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightMiddleLobeLateralPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightMiddleLobeMedialPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobeSuperiorPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobeMedialBasalPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobeAnteriorBasalPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobeLateralBasalPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries); + SELiquidCompartmentLink& vRightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vRightPulmonaryArteries, vRightInferiorLobePosteriorBasalPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries); + + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftInferiorLobePosteriorBasalPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftInferiorLobeLateralBasalPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftInferiorLobeSuperiorPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftSuperiorLobeAnteriorPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries); + SELiquidCompartmentLink& vLeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftSuperiorLobeApicoposteriorPulmonaryCapillaries, pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries); + + SELiquidCompartmentLink& vRightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightSuperiorLobeApicalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightSuperiorLobePosteriorPulmonaryCapillaries, vRightPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightSuperiorLobeAnteriorPulmonaryCapillaries, vRightPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightMiddleLobeLateralPulmonaryCapillaries, vRightPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightMiddleLobeMedialPulmonaryCapillaries, vRightPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobeSuperiorPulmonaryCapillaries, vRightPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobeMedialBasalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobeAnteriorBasalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobeLateralBasalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins); + SELiquidCompartmentLink& vRightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins = m_Compartments->CreateLiquidLink(vRightInferiorLobePosteriorBasalPulmonaryCapillaries, vRightPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins); + + SELiquidCompartmentLink& vLeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftInferiorLobePosteriorBasalPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftInferiorLobeLateralBasalPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftInferiorLobeSuperiorPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftSuperiorLobeAnteriorPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins); + SELiquidCompartmentLink& vLeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins = m_Compartments->CreateLiquidLink(vLeftSuperiorLobeApicoposteriorPulmonaryCapillaries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins); + + SELiquidCompartmentLink& vRightSuperiorLobeApicalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightSuperiorLobeApicalShunt); + SELiquidCompartmentLink& vRightSuperiorLobePosteriorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightSuperiorLobePosteriorShunt); + SELiquidCompartmentLink& vRightSuperiorLobeAnteriorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightSuperiorLobeAnteriorShunt); + SELiquidCompartmentLink& vRightMiddleLobeLateralShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightMiddleLobeLateralShunt); + SELiquidCompartmentLink& vRightMiddleLobeMedialShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightMiddleLobeMedialShunt); + SELiquidCompartmentLink& vRightInferiorLobeSuperiorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightInferiorLobeSuperiorShunt); + SELiquidCompartmentLink& vRightInferiorLobeMedialBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightInferiorLobeMedialBasalShunt); + SELiquidCompartmentLink& vRightInferiorLobeAnteriorBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightInferiorLobeAnteriorBasalShunt); + SELiquidCompartmentLink& vRightInferiorLobeLateralBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightInferiorLobeLateralBasalShunt); + SELiquidCompartmentLink& vRightInferiorLobePosteriorBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::RightInferiorLobePosteriorBasalShunt); + + SELiquidCompartmentLink& vLeftInferiorLobePosteriorBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftInferiorLobePosteriorBasalShunt); + SELiquidCompartmentLink& vLeftInferiorLobeLateralBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftInferiorLobeLateralBasalShunt); + SELiquidCompartmentLink& vLeftInferiorLobeAnteromedialBasalShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftInferiorLobeAnteromedialBasalShunt); + SELiquidCompartmentLink& vLeftInferiorLobeSuperiorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftInferiorLobeSuperiorShunt); + SELiquidCompartmentLink& vLeftSuperiorLobeInferiorLingulaShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftSuperiorLobeInferiorLingulaShunt); + SELiquidCompartmentLink& vLeftSuperiorLobeSuperiorLingulaShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftSuperiorLobeSuperiorLingulaShunt); + SELiquidCompartmentLink& vLeftSuperiorLobeAnteriorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftSuperiorLobeAnteriorShunt); + SELiquidCompartmentLink& vLeftSuperiorLobeApicoposteriorShunt = m_Compartments->CreateLiquidLink(vLeftPulmonaryArteries, vLeftPulmonaryVeins, pulse::ExpandedLungsVascularLink::LeftSuperiorLobeApicoposteriorShunt); vRightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries.MapPath( RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries); vRightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries.MapPath( RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries); diff --git a/src/cpp/engine/common/controller/SubstanceManager.cpp b/src/cpp/engine/common/controller/SubstanceManager.cpp index 107f387f7..244c9d836 100644 --- a/src/cpp/engine/common/controller/SubstanceManager.cpp +++ b/src/cpp/engine/common/controller/SubstanceManager.cpp @@ -238,9 +238,9 @@ namespace pulse } } - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::On) { - for (SEGasCompartment* cmpt : m_data.GetCompartments().GetExpandedPulmonaryLeafCompartments()) + for (SEGasCompartment* cmpt : m_data.GetCompartments().GetExpandedLungsPulmonaryLeafCompartments()) { if (cmpt->HasVolume()) { @@ -351,166 +351,124 @@ namespace pulse double Hb_total_mM = Hb_total_g_Per_dL / m_Hb->GetMolarMass(MassPerAmountUnit::g_Per_mmol) * 10.0; // Bootstrapped values from many runs (using standard patient) - if (m_data.GetConfiguration().UseExpandedVasculature() == eSwitch::On) + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Aorta), Hb_total_mM, 0.974905, 0.129608, 0.02817, 1.3012, 25.9389, 7.39961); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Bone), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Brain), Hb_total_mM, 0.827281, 0.0612181, 0.133288, 1.38958, 26.0916, 7.37362); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Fat), Hb_total_mM, 0.830303, 0.0616616, 0.128914, 1.38717, 26.0876, 7.3743); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LargeIntestine), Hb_total_mM, 0.807872, 0.0584747, 0.149044, 1.39821, 26.106, 7.37117); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftAfferentArteriole), Hb_total_mM, 0.927186, 0.0870192, 0.0595885, 1.35232, 26.0285, 7.38437); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftArm), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftEfferentArteriole), Hb_total_mM, 0.907413, 0.0791142, 0.072315, 1.35842, 26.0389, 7.38259); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftGlomerularCapillaries), Hb_total_mM, 0.9209, 0.0773075, 0.031322, 1.07857, 25.5034, 7.47375); + //No Hb through glomerular ultrafiltration + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftBowmansCapsules), 0.0, 0.0, 0.0773075, 0.0, 1.07857, 25.5034, 7.47375); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftTubules), 0.0, 0.0, 0.0773075, 0.0, 1.07857, 25.5034, 7.47375); + //---------------------------------------- + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftHeart), Hb_total_mM, 0.974919, 0.129622, 0.0281731, 1.30089, 25.9384, 7.3997); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftLeg), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftPeritubularCapillaries), Hb_total_mM, 0.89667, 0.0757891, 0.0873866, 1.36599, 26.0518, 7.38039); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryArteries), Hb_total_mM, 0.813117, 0.0591941, 0.146207, 1.39669, 26.1035, 7.3716); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryCapillaries), Hb_total_mM, 0.983029, 0.149863, 0.0281766, 1.29193, 25.9223, 7.40244); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryVeins), Hb_total_mM, 0.974924, 0.129359, 0.0282471, 1.29371, 25.9255, 7.40189); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftRenalArtery), Hb_total_mM, 0.941145, 0.0945363, 0.0484668, 1.34704, 26.0194, 7.38592); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftRenalVein), Hb_total_mM, 0.859657, 0.0668517, 0.112249, 1.37857, 26.0731, 7.37676); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Liver), Hb_total_mM, 0.729017, 0.0500882, 0.21436, 1.43708, 26.1698, 7.36032); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Muscle), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Myocardium), Hb_total_mM, 0.829366, 0.0615371, 0.13173, 1.38874, 26.0902, 7.37386); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Pericardium), Hb_total_mM, 0.725881, 0.0491881, 0.142507, 1.39215, 26.0959, 7.37289); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightAfferentArteriole), Hb_total_mM, 0.927186, 0.0870192, 0.0595885, 1.35232, 26.0285, 7.38437); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightArm), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightEfferentArteriole), Hb_total_mM, 0.907413, 0.0791142, 0.072315, 1.35842, 26.0389, 7.38259); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightGlomerularCapillaries), Hb_total_mM, 0.9209, 0.0773075, 0.031322, 1.07857, 25.5034, 7.47375); + //No Hb through glomerular ultrafiltration + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightBowmansCapsules), 0.0, 0.0, 0.0773075, 0.0, 1.07857, 25.5034, 7.47375); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightTubules), 0.0, 0.0, 0.0773075, 0.0, 1.07857, 25.5034, 7.47375); + //---------------------------------------- + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightHeart), Hb_total_mM, 0.813115, 0.0591938, 0.14621, 1.39669, 26.1035, 7.3716); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightLeg), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightPeritubularCapillaries), Hb_total_mM, 0.89667, 0.0757891, 0.0873866, 1.36599, 26.0518, 7.38039); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightPulmonaryArteries), Hb_total_mM, 0.813117, 0.0591941, 0.146207, 1.39669, 26.1035, 7.3716); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightPulmonaryCapillaries), Hb_total_mM, 0.982298, 0.148493, 0.0279498, 1.31484, 25.9632, 7.39548); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightPulmonaryVeins), Hb_total_mM, 0.974936, 0.130199, 0.0280263, 1.31523, 25.9638, 7.39537); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightRenalArtery), Hb_total_mM, 0.941145, 0.0945363, 0.0484668, 1.34704, 26.0194, 7.38592); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightRenalVein), Hb_total_mM, 0.859657, 0.0668517, 0.112249, 1.37857, 26.0731, 7.37676); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Skin), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::SmallIntestine), Hb_total_mM, 0.842176, 0.0636112, 0.122046, 1.3836, 26.0816, 7.37532); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Splanchnic), Hb_total_mM, 0.817051, 0.0597293, 0.141898, 1.39428, 26.0995, 7.37228); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Spleen), Hb_total_mM, 0.830039, 0.0616463, 0.131757, 1.38878, 26.0903, 7.37385); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::VenaCava), Hb_total_mM, 0.813122, 0.0591948, 0.146203, 1.39669, 26.1035, 7.3716); + + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Bone), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Bone)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Brain), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Brain)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Fat), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Fat)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Gut), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Gut)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::LeftKidney), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftKidney)); + //TODO: Make this work for the expanded model + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) { - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Aorta), Hb_total_mM, 0.974905, 0.129608, 0.02817, 1.3012, 25.9389, 7.39961); - CopyConcentrations (*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Aorta), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::ArterialBuffer)); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Extracranial), Hb_total_mM, 0.827281, 0.0612181, 0.133288, 1.38958, 26.0916, 7.37362); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Intracranial), Hb_total_mM, 0.827281, 0.0612181, 0.133288, 1.38958, 26.0916, 7.37362); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Gut1), Hb_total_mM, 0.859657, 0.0668517, 0.112249, 1.37857, 26.0731, 7.37676); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LargeIntestine), Hb_total_mM, 0.807872, 0.0584747, 0.149044, 1.39821, 26.106, 7.37117); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftAfferentArteriole), Hb_total_mM, 0.927186, 0.0870192, 0.0595885, 1.35232, 26.0285, 7.38437); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmArterioles), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmBone), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmFat), Hb_total_mM, 0.830303, 0.0616616, 0.128914, 1.38717, 26.0876, 7.3743); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmMicrovasculature), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmMuscle), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmSkin), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftArmVenules), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftEfferentArteriole), Hb_total_mM, 0.907413, 0.0791142, 0.072315, 1.35842, 26.0389, 7.38259); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftGlomerularCapillaries), Hb_total_mM, 0.9209, 0.0773075, 0.031322, 1.07857, 25.5034, 7.47375); - //No Hb through glomerular ultrafiltration - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftBowmansCapsules), 0.0, 0.0, 0.0773075, 0.0, 1.07857, 25.5034, 7.47375); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftTubules), 0.0, 0.0, 0.0773075, 0.0, 1.07857, 25.5034, 7.47375); - //---------------------------------------- - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftHeart), Hb_total_mM, 0.974919, 0.129622, 0.0281731, 1.30089, 25.9384, 7.3997); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegArterioles), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegBone), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegFat), Hb_total_mM, 0.830303, 0.0616616, 0.128914, 1.38717, 26.0876, 7.3743); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegMicrovasculature), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegMuscle), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegSkin), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLegVenules), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftPeritubularCapillaries), Hb_total_mM, 0.89667, 0.0757891, 0.0873866, 1.36599, 26.0518, 7.38039); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftPulmonaryArteries), Hb_total_mM, 0.813117, 0.0591941, 0.146207, 1.39669, 26.1035, 7.3716); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftPulmonaryCapillaries), Hb_total_mM, 0.983029, 0.149863, 0.0281766, 1.29193, 25.9223, 7.40244); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftPulmonaryVeins), Hb_total_mM, 0.974924, 0.129359, 0.0282471, 1.29371, 25.9255, 7.40189); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftRenalArtery), Hb_total_mM, 0.941145, 0.0945363, 0.0484668, 1.34704, 26.0194, 7.38592); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftRenalVein), Hb_total_mM, 0.859657, 0.0668517, 0.112249, 1.37857, 26.0731, 7.37676); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Liver), Hb_total_mM, 0.729017, 0.0500882, 0.21436, 1.43708, 26.1698, 7.36032); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Myocardium), Hb_total_mM, 0.829366, 0.0615371, 0.13173, 1.38874, 26.0902, 7.37386); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Pericardium), Hb_total_mM, 0.725881, 0.0491881, 0.142507, 1.39215, 26.0959, 7.37289); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightAfferentArteriole), Hb_total_mM, 0.927186, 0.0870192, 0.0595885, 1.35232, 26.0285, 7.38437); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmArterioles), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmBone), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmFat), Hb_total_mM, 0.830303, 0.0616616, 0.128914, 1.38717, 26.0876, 7.3743); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmMicrovasculature), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); //todo - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmMuscle), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmSkin), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightArmVenules), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightEfferentArteriole), Hb_total_mM, 0.907413, 0.0791142, 0.072315, 1.35842, 26.0389, 7.38259); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightGlomerularCapillaries), Hb_total_mM, 0.9209, 0.0773075, 0.031322, 1.07857, 25.5034, 7.47375); - //No Hb through glomerular ultrafiltration - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightBowmansCapsules), 0.0, 0.0, 0.0773075, 0.0, 1.07857, 25.5034, 7.47375); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightTubules), 0.0, 0.0, 0.0773075, 0.0, 1.07857, 25.5034, 7.47375); - //---------------------------------------- - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightHeart), Hb_total_mM, 0.813115, 0.0591938, 0.14621, 1.39669, 26.1035, 7.3716); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegArterioles), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegBone), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegFat), Hb_total_mM, 0.830303, 0.0616616, 0.128914, 1.38717, 26.0876, 7.3743); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegMicrovasculature), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegMuscle), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegSkin), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLegVenules), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightPeritubularCapillaries), Hb_total_mM, 0.89667, 0.0757891, 0.0873866, 1.36599, 26.0518, 7.38039); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightPulmonaryArteries), Hb_total_mM, 0.813117, 0.0591941, 0.146207, 1.39669, 26.1035, 7.3716); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightPulmonaryCapillaries), Hb_total_mM, 0.982298, 0.148493, 0.0279498, 1.31484, 25.9632, 7.39548); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightPulmonaryVeins), Hb_total_mM, 0.974936, 0.130199, 0.0280263, 1.31523, 25.9638, 7.39537); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightRenalArtery), Hb_total_mM, 0.941145, 0.0945363, 0.0484668, 1.34704, 26.0194, 7.38592); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightRenalVein), Hb_total_mM, 0.859657, 0.0668517, 0.112249, 1.37857, 26.0731, 7.37676); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::SmallIntestine), Hb_total_mM, 0.842176, 0.0636112, 0.122046, 1.3836, 26.0816, 7.37532); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Splanchnic), Hb_total_mM, 0.817051, 0.0597293, 0.141898, 1.39428, 26.0995, 7.37228); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Spleen), Hb_total_mM, 0.830039, 0.0616463, 0.131757, 1.38878, 26.0903, 7.37385); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoArterioles), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoBone), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoFat), Hb_total_mM, 0.830303, 0.0616616, 0.128914, 1.38717, 26.0876, 7.3743); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoMicrovasculature), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoMuscle), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoSkin), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoVenules), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::VenaCava), Hb_total_mM, 0.813122, 0.0591948, 0.146203, 1.39669, 26.1035, 7.3716); - CopyConcentrations(*cmpts.GetLiquidCompartment( pulse::ExpandedVascularCompartment::VenaCava), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::VenousBuffer)); - - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Bone), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoBone)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Brain), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Intracranial)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Fat), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoFat)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Gut), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Gut)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::LeftKidney), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftKidney)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::LeftLung), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::LeftLung)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Liver), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Liver)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Muscle), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoMuscle)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Myocardium), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Myocardium)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::RightKidney), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightKidney)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::RightLung), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::RightLung)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Skin), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::TorsoSkin)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Spleen), *cmpts.GetLiquidCompartment(pulse::ExpandedVascularCompartment::Spleen)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::LeftLung), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftLung)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::RightLung), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightLung)); } - else + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Liver), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Liver)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Muscle), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Muscle)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Myocardium), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Myocardium)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::RightKidney), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightKidney)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Skin), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Skin)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Spleen), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Spleen)); + + if (m_data.GetConfiguration().UseComputationalLifeExpansion() == eSwitch::On) { - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Aorta), Hb_total_mM, 0.974905, 0.129608, 0.02817, 1.3012, 25.9389, 7.39961); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Bone), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Brain), Hb_total_mM, 0.827281, 0.0612181, 0.133288, 1.38958, 26.0916, 7.37362); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Fat), Hb_total_mM, 0.830303, 0.0616616, 0.128914, 1.38717, 26.0876, 7.3743); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LargeIntestine), Hb_total_mM, 0.807872, 0.0584747, 0.149044, 1.39821, 26.106, 7.37117); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftAfferentArteriole), Hb_total_mM, 0.927186, 0.0870192, 0.0595885, 1.35232, 26.0285, 7.38437); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftArm), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftEfferentArteriole), Hb_total_mM, 0.907413, 0.0791142, 0.072315, 1.35842, 26.0389, 7.38259); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftGlomerularCapillaries), Hb_total_mM, 0.9209, 0.0773075, 0.031322, 1.07857, 25.5034, 7.47375); - //No Hb through glomerular ultrafiltration - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftBowmansCapsules), 0.0, 0.0, 0.0773075, 0.0, 1.07857, 25.5034, 7.47375); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftTubules), 0.0, 0.0, 0.0773075, 0.0, 1.07857, 25.5034, 7.47375); + CopyConcentrations(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Aorta), *cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::ArterialBuffer)); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::Extracranial), Hb_total_mM, 0.827281, 0.0612181, 0.133288, 1.38958, 26.0916, 7.37362); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::Intracranial), Hb_total_mM, 0.827281, 0.0612181, 0.133288, 1.38958, 26.0916, 7.37362); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::Gut1), Hb_total_mM, 0.859657, 0.0668517, 0.112249, 1.37857, 26.0731, 7.37676); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmArterioles), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmBone), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmFat), Hb_total_mM, 0.830303, 0.0616616, 0.128914, 1.38717, 26.0876, 7.3743); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmMicrovasculature), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmMuscle), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmSkin), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftArmVenules), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); //---------------------------------------- - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftHeart), Hb_total_mM, 0.974919, 0.129622, 0.0281731, 1.30089, 25.9384, 7.3997); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftLeg), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftPeritubularCapillaries), Hb_total_mM, 0.89667, 0.0757891, 0.0873866, 1.36599, 26.0518, 7.38039); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryArteries), Hb_total_mM, 0.813117, 0.0591941, 0.146207, 1.39669, 26.1035, 7.3716); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryCapillaries), Hb_total_mM, 0.983029, 0.149863, 0.0281766, 1.29193, 25.9223, 7.40244); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryVeins), Hb_total_mM, 0.974924, 0.129359, 0.0282471, 1.29371, 25.9255, 7.40189); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftRenalArtery), Hb_total_mM, 0.941145, 0.0945363, 0.0484668, 1.34704, 26.0194, 7.38592); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftRenalVein), Hb_total_mM, 0.859657, 0.0668517, 0.112249, 1.37857, 26.0731, 7.37676); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Liver), Hb_total_mM, 0.729017, 0.0500882, 0.21436, 1.43708, 26.1698, 7.36032); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Muscle), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Myocardium), Hb_total_mM, 0.829366, 0.0615371, 0.13173, 1.38874, 26.0902, 7.37386); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Pericardium), Hb_total_mM, 0.725881, 0.0491881, 0.142507, 1.39215, 26.0959, 7.37289); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightAfferentArteriole), Hb_total_mM, 0.927186, 0.0870192, 0.0595885, 1.35232, 26.0285, 7.38437); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightArm), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightEfferentArteriole), Hb_total_mM, 0.907413, 0.0791142, 0.072315, 1.35842, 26.0389, 7.38259); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightGlomerularCapillaries), Hb_total_mM, 0.9209, 0.0773075, 0.031322, 1.07857, 25.5034, 7.47375); - //No Hb through glomerular ultrafiltration - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightBowmansCapsules), 0.0, 0.0, 0.0773075, 0.0, 1.07857, 25.5034, 7.47375); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightTubules), 0.0, 0.0, 0.0773075, 0.0, 1.07857, 25.5034, 7.47375); - //---------------------------------------- - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightHeart), Hb_total_mM, 0.813115, 0.0591938, 0.14621, 1.39669, 26.1035, 7.3716); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightLeg), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightPeritubularCapillaries), Hb_total_mM, 0.89667, 0.0757891, 0.0873866, 1.36599, 26.0518, 7.38039); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightPulmonaryArteries), Hb_total_mM, 0.813117, 0.0591941, 0.146207, 1.39669, 26.1035, 7.3716); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightPulmonaryCapillaries), Hb_total_mM, 0.982298, 0.148493, 0.0279498, 1.31484, 25.9632, 7.39548); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightPulmonaryVeins), Hb_total_mM, 0.974936, 0.130199, 0.0280263, 1.31523, 25.9638, 7.39537); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightRenalArtery), Hb_total_mM, 0.941145, 0.0945363, 0.0484668, 1.34704, 26.0194, 7.38592); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightRenalVein), Hb_total_mM, 0.859657, 0.0668517, 0.112249, 1.37857, 26.0731, 7.37676); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Skin), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::SmallIntestine), Hb_total_mM, 0.842176, 0.0636112, 0.122046, 1.3836, 26.0816, 7.37532); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Splanchnic), Hb_total_mM, 0.817051, 0.0597293, 0.141898, 1.39428, 26.0995, 7.37228); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::Spleen), Hb_total_mM, 0.830039, 0.0616463, 0.131757, 1.38878, 26.0903, 7.37385); - InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::VenaCava), Hb_total_mM, 0.813122, 0.0591948, 0.146203, 1.39669, 26.1035, 7.3716); - - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Bone), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Bone)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Brain), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Brain)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Fat), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Fat)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Gut), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Gut)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::LeftKidney), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftKidney)); - //TODO: Make this work for the expanded model - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) - { - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::LeftLung), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftLung)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::RightLung), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightLung)); - } - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Liver), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Liver)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Muscle), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Muscle)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Myocardium), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Myocardium)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::RightKidney), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::RightKidney)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Skin), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Skin)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Spleen), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::Spleen)); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegArterioles), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegBone), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegFat), Hb_total_mM, 0.830303, 0.0616616, 0.128914, 1.38717, 26.0876, 7.3743); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegMicrovasculature), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegMuscle), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegSkin), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::LeftLegVenules), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); + + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmArterioles), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmBone), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmFat), Hb_total_mM, 0.830303, 0.0616616, 0.128914, 1.38717, 26.0876, 7.3743); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmMicrovasculature), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); //todo + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmMuscle), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmSkin), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightArmVenules), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); + + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegArterioles), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegBone), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegFat), Hb_total_mM, 0.830303, 0.0616616, 0.128914, 1.38717, 26.0876, 7.3743); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegMicrovasculature), Hb_total_mM, 0.974914, 0.129637, 0.0281665, 1.30153, 25.9395, 7.39951); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegMuscle), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegSkin), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::RightLegVenules), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); + + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoArterioles), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoBone), Hb_total_mM, 0.830363, 0.0616873, 0.13056, 1.3881, 26.0892, 7.37404); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoFat), Hb_total_mM, 0.830303, 0.0616616, 0.128914, 1.38717, 26.0876, 7.3743); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoMicrovasculature), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoMuscle), Hb_total_mM, 0.830253, 0.0616652, 0.130118, 1.38785, 26.0887, 7.37411); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoSkin), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); + InitializeBloodGases(*cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoVenules), Hb_total_mM, 0.82836, 0.061373, 0.131491, 1.38858, 26.09, 7.3739); + + CopyConcentrations(*cmpts.GetLiquidCompartment(pulse::VascularCompartment::VenaCava), *cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::VenousBuffer)); + + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Bone), *cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoBone)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Brain), *cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::Intracranial)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Fat), *cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoFat)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Muscle), *cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoMuscle)); + InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::Skin), *cmpts.GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::TorsoSkin)); } SEScalarMassPerVolume concentration; diff --git a/src/cpp/engine/common/system/physiology/BloodChemistryModel.cpp b/src/cpp/engine/common/system/physiology/BloodChemistryModel.cpp index 3ea20a1c8..97f4957e3 100644 --- a/src/cpp/engine/common/system/physiology/BloodChemistryModel.cpp +++ b/src/cpp/engine/common/system/physiology/BloodChemistryModel.cpp @@ -135,10 +135,10 @@ namespace pulse m_AortaO2 = m_Aorta->GetSubstanceQuantity(m_data.GetSubstances().GetO2()); m_AortaCO2 = m_Aorta->GetSubstanceQuantity(m_data.GetSubstances().GetCO2()); m_AortaHCO3 = m_Aorta->GetSubstanceQuantity(m_data.GetSubstances().GetHCO3()); - if(m_data.GetConfiguration().UseExpandedVasculature() == eSwitch::Off) + if(m_data.GetConfiguration().UseComputationalLifeExpansion() == eSwitch::Off) m_BrainO2 = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::Brain)->GetSubstanceQuantity(m_data.GetSubstances().GetO2()); else - m_BrainO2 = m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedVascularCompartment::Intracranial)->GetSubstanceQuantity(m_data.GetSubstances().GetO2()); + m_BrainO2 = m_data.GetCompartments().GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::Intracranial)->GetSubstanceQuantity(m_data.GetSubstances().GetO2()); m_MyocardiumO2 = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::Myocardium)->GetSubstanceQuantity(m_data.GetSubstances().GetO2()); m_RightArm = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightArm); diff --git a/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp b/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp index 92cdde08a..ff09a74c9 100644 --- a/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp +++ b/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp @@ -384,47 +384,47 @@ namespace pulse m_RightPulmonaryVeinsNode = m_CirculatoryCircuit->GetNode(pulse::CardiovascularNode::RightPulmonaryVeins1); m_AbdominalCavityNode = m_CirculatoryCircuit->GetNode(pulse::CardiovascularNode::AbdominalCavity1); //Paths - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) - { - m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalShunt)); - m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorShunt)); - m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorShunt)); - m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralShunt)); - m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialShunt)); - m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorShunt)); - m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalShunt)); - m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalShunt)); - m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalShunt)); - m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalShunt)); - - m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalShunt)); - m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalShunt)); - m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt)); - m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorShunt)); - m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt)); - m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt)); - m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorShunt)); - m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorShunt)); - - m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries)); - m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries)); - m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries)); - m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries)); - m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries)); - m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries)); - m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries)); - m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries)); - m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries)); - m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries)); - - m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries)); - m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries)); - m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries)); - m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries)); - m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries)); - m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries)); - m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries)); - m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries)); + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::On) + { + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalShunt)); + m_RightPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalShunt)); + + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorShunt)); + m_LeftPulmonaryArteriesToVeins.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorShunt)); + + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries)); + m_RightPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries)); + + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries)); + m_LeftPulmonaryArteriesToCapillaries.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries)); } else { @@ -463,169 +463,169 @@ namespace pulse m_LeftPulmonaryVenousReturnResistancePath = m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryVeins1ToLeftIntermediatePulmonaryVeins1); // Setup Default vs. Expanded Circuit Parameters - if (m_data.GetConfiguration().UseExpandedVasculature() == eSwitch::On) + if (m_data.GetConfiguration().UseComputationalLifeExpansion() == eSwitch::On) { // For Metabolic Tone Response - m_AortaToBrain = m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Aorta5ToIntracranial1); - m_AortaToMyocardium = m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Aorta5ToMyocardium1); - m_BrainToVenaCava = m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Intracranial3ToVenaCava2); - m_MyocardiumToVenaCava = m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Myocardium3ToVenaCava2); - m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Torso1ToTorsoMuscle1)); - m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::TorsoMuscle1ToTorso2)); - m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArm1ToRightArmMuscle1)); - m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArmMuscle1ToRightArm2)); - m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmMuscle1)); - m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArmMuscle1ToLeftArm2)); - m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegMuscle1)); - m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLegMuscle1ToRightLeg2)); - m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegMuscle1)); - m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLegMuscle1ToLeftLeg2)); - - m_Brain = m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedVascularCompartment::Intracranial); - m_BrainResistanceDownstreamPath = m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Intracranial2ToIntracranial3); - m_BrainResistanceUpstreamPath = m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Intracranial1ToIntracranial2); - - m_SkinPaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Torso1ToTorsoSkin1)); - m_SkinPaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArm1ToRightArmSkin1)); - m_SkinPaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmSkin1)); - m_SkinPaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegSkin1)); - m_SkinPaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegSkin1)); - - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Extracranial1ToExtracranial2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Extracranial2ToExtracranial3)); - - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Intracranial1ToIntracranial2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Intracranial2ToIntracranial3)); - - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Myocardium1ToMyocardium2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Myocardium2ToMyocardium3)); - - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Gut1ToLiver1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Gut1ToSplanchnic1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Gut1ToSpleen1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Gut1ToSmallIntestine1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Gut1ToLargeIntestine1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::PortalVein1ToLiver1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Liver1ToLiver2)); - - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArm1ToRightArmBone1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArmBone1ToRightArm2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArm1ToRightArmFat1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArmFat1ToRightArm2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArm1ToRightArmMuscle1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArmMuscle1ToRightArm2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArm1ToRightArmSkin1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArmSkin1ToRightArm2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArm1ToRightArmMicrovasculature1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArmMicrovasculature1ToRightArm2)); - - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmBone1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArmBone1ToLeftArm2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmFat1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArmFat1ToLeftArm2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmMuscle1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArmMuscle1ToLeftArm2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmSkin1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArmSkin1ToLeftArm2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArm1ToLeftArmMicrovasculature1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArmMicrovasculature1ToLeftArm2)); - - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Torso1ToTorsoBone1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::TorsoBone1ToTorso2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Torso1ToTorsoFat1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::TorsoFat1ToTorso2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Torso1ToTorsoMuscle1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::TorsoMuscle1ToTorso2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Torso1ToTorsoSkin1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::TorsoSkin1ToTorso2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Torso1ToTorsoMicrovasculature1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::TorsoMicrovasculature1ToTorso2)); - - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegBone1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLegBone1ToRightLeg2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegFat1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLegFat1ToRightLeg2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegMuscle1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLegMuscle1ToRightLeg2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegSkin1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLegSkin1ToRightLeg2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLeg1ToRightLegMicrovasculature1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLegMicrovasculature1ToRightLeg2)); - - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegBone1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLegBone1ToLeftLeg2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegFat1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLegFat1ToLeftLeg2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegMuscle1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLegMuscle1ToLeftLeg2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegSkin1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLegSkin1ToLeftLeg2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLeg1ToLeftLegMicrovasculature1)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLegMicrovasculature1ToLeftLeg2)); - - - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Extracranial1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Intracranial1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Extracranial3ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Intracranial3ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Myocardium1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Myocardium2ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Myocardium3ToGround)); - - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArm1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArmBone1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArmFat1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArmMuscle1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArmSkin1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArmMicrovasculature1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightArm2ToGround)); - - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArm1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArmBone1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArmFat1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArmMuscle1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArmSkin1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArmMicrovasculature1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftArm2ToGround)); - - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Torso1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::TorsoBone1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::TorsoFat1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::TorsoMuscle1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::TorsoSkin1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::TorsoMicrovasculature1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Torso2ToGround)); - - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLeg1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLegBone1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLegFat1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLegMuscle1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLegSkin1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLegMicrovasculature1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightLeg2ToGround)); - - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLeg1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLegBone1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLegFat1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLegMuscle1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLegSkin1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLegMicrovasculature1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftLeg2ToGround)); - - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Gut1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Liver1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Liver2ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Splanchnic1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::Spleen1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LargeIntestine1ToGround)); - m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::SmallIntestine1ToGround)); - - if (!m_data.GetConfiguration().IsRenalEnabled()) - { - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftKidney1ToLeftKidney2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightKidney1ToRightKidney2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::LeftKidney3ToVenaCava2)); - m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedCardiovascularPath::RightKidney3ToVenaCava2)); + m_AortaToBrain = m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Aorta5ToIntracranial1); + m_AortaToMyocardium = m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Aorta5ToMyocardium1); + m_BrainToVenaCava = m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Intracranial3ToVenaCava2); + m_MyocardiumToVenaCava = m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Myocardium3ToVenaCava2); + m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoMuscle1)); + m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::TorsoMuscle1ToTorso2)); + m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmMuscle1)); + m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArmMuscle1ToRightArm2)); + m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmMuscle1)); + m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArmMuscle1ToLeftArm2)); + m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegMuscle1)); + m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLegMuscle1ToRightLeg2)); + m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegMuscle1)); + m_MuscleResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLegMuscle1ToLeftLeg2)); + + m_Brain = m_data.GetCompartments().GetLiquidCompartment(pulse::ComputationalLifeVascularCompartment::Intracranial); + m_BrainResistanceDownstreamPath = m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Intracranial2ToIntracranial3); + m_BrainResistanceUpstreamPath = m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Intracranial1ToIntracranial2); + + m_SkinPaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoSkin1)); + m_SkinPaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmSkin1)); + m_SkinPaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmSkin1)); + m_SkinPaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegSkin1)); + m_SkinPaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegSkin1)); + + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Extracranial1ToExtracranial2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Extracranial2ToExtracranial3)); + + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Intracranial1ToIntracranial2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Intracranial2ToIntracranial3)); + + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::Myocardium1ToMyocardium2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Myocardium2ToMyocardium3)); + + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Gut1ToLiver1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Gut1ToSplanchnic1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Gut1ToSpleen1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Gut1ToSmallIntestine1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Gut1ToLargeIntestine1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::PortalVein1ToLiver1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::Liver1ToLiver2)); + + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmBone1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArmBone1ToRightArm2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmFat1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArmFat1ToRightArm2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmMuscle1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArmMuscle1ToRightArm2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmSkin1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArmSkin1ToRightArm2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArm1ToRightArmMicrovasculature1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArmMicrovasculature1ToRightArm2)); + + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmBone1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArmBone1ToLeftArm2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmFat1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArmFat1ToLeftArm2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmMuscle1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArmMuscle1ToLeftArm2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmSkin1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArmSkin1ToLeftArm2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArm1ToLeftArmMicrovasculature1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArmMicrovasculature1ToLeftArm2)); + + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoBone1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::TorsoBone1ToTorso2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoFat1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::TorsoFat1ToTorso2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoMuscle1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::TorsoMuscle1ToTorso2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoSkin1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::TorsoSkin1ToTorso2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Torso1ToTorsoMicrovasculature1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::TorsoMicrovasculature1ToTorso2)); + + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegBone1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLegBone1ToRightLeg2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegFat1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLegFat1ToRightLeg2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegMuscle1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLegMuscle1ToRightLeg2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegSkin1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLegSkin1ToRightLeg2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLeg1ToRightLegMicrovasculature1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLegMicrovasculature1ToRightLeg2)); + + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegBone1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLegBone1ToLeftLeg2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegFat1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLegFat1ToLeftLeg2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegMuscle1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLegMuscle1ToLeftLeg2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegSkin1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLegSkin1ToLeftLeg2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLeg1ToLeftLegMicrovasculature1)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLegMicrovasculature1ToLeftLeg2)); + + + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Extracranial1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Intracranial1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Extracranial3ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Intracranial3ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::Myocardium1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Myocardium2ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Myocardium3ToGround)); + + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightArm1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArmBone1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArmFat1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArmMuscle1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArmSkin1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArmMicrovasculature1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightArm2ToGround)); + + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftArm1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArmBone1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArmFat1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArmMuscle1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArmSkin1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArmMicrovasculature1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftArm2ToGround)); + + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Torso1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::TorsoBone1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::TorsoFat1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::TorsoMuscle1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::TorsoSkin1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::TorsoMicrovasculature1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Torso2ToGround)); + + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightLeg1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLegBone1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLegFat1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLegMuscle1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLegSkin1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLegMicrovasculature1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightLeg2ToGround)); + + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftLeg1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLegBone1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLegFat1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLegMuscle1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLegSkin1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLegMicrovasculature1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftLeg2ToGround)); + + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Gut1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::Liver1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::Liver2ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::Splanchnic1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::Spleen1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LargeIntestine1ToGround)); + m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::SmallIntestine1ToGround)); + + if (m_data.GetConfiguration().UseExpandedKidneys() != eSwitch::On) + { + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftKidney1ToLeftKidney2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightKidney1ToRightKidney2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::LeftKidney3ToVenaCava2)); + m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ComputationalLifeCardiovascularPath::RightKidney3ToVenaCava2)); m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::RenalPath::LeftRenalArteryCompliance)); m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::RenalPath::RightRenalArteryCompliance)); @@ -700,7 +700,7 @@ namespace pulse m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LargeIntestine1ToGround)); m_SystemicCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::SmallIntestine1ToGround)); - if (!m_data.GetConfiguration().IsRenalEnabled()) + if (m_data.GetConfiguration().UseExpandedKidneys() != eSwitch::On) { m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::Aorta1ToLeftKidney1)); m_SystemicResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::Aorta1ToRightKidney1)); @@ -723,27 +723,27 @@ namespace pulse m_AortaResistancePaths.push_back(m_AortaResistancePath); m_VenaCavaResistancePaths.push_back(m_VenaCavaResistancePath); - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) - { - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround)); - - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround)); - m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround)); + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::On) + { + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToGround)); + + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToGround)); + m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToGround)); } else { @@ -757,67 +757,67 @@ namespace pulse m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryVeins1ToGround)); m_RespiratoryCompliancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryVeins1ToGround)); - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) - { - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalShunt)); - - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorShunt)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorShunt)); - - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries)); - - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries)); - - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1)); - - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1)); - m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1)); + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::On) + { + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalShunt)); + + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorShunt)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorShunt)); + + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries)); + + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries)); + + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1)); + + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1)); + m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1)); } else { @@ -837,7 +837,7 @@ namespace pulse m_PulmonaryResistancePaths.push_back(m_CirculatoryCircuit->GetPath(pulse::CardiovascularPath::RightPulmonaryVeins1ToRightIntermediatePulmonaryVeins1)); // Add the expanded kidney paths - if (m_data.GetConfiguration().IsRenalEnabled()) + if (m_data.GetConfiguration().UseExpandedKidneys() == eSwitch::On) { SEFluidCircuitPath* p; // Add kidney resistance paths @@ -3543,58 +3543,58 @@ namespace pulse std::vector tissueResistancePaths; std::vector tissuePressureCVSources; - if (m_data.GetConfiguration().UseExpandedVasculature() == eSwitch::On) + if (m_data.GetConfiguration().UseComputationalLifeExpansion() == eSwitch::On) { - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::TorsoBone1)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::BoneT2ToBoneT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ComputationalLifeCardiovascularNode::TorsoBone1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::BoneT2ToBoneT1)); - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::Intracranial2)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::BrainT2ToBrainT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ComputationalLifeCardiovascularNode::Intracranial2)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::BrainT2ToBrainT1)); - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::TorsoFat1)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::FatT2ToFatT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ComputationalLifeCardiovascularNode::TorsoFat1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::FatT2ToFatT1)); // Have to pick one of the 3 nodes GI is mapped to for pressure (Could use Large Intestine | Splanchnic) - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::SmallIntestine1)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::GutT2ToGutT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::SmallIntestine1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::GutT2ToGutT1)); - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::Liver1)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::LiverT2ToLiverT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::Liver1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::LiverT2ToLiverT1)); - if (m_data.GetConfiguration().IsRenalEnabled()) + if (m_data.GetConfiguration().UseExpandedKidneys() == eSwitch::On) { tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::RenalNode::LeftGlomerularCapillaries)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::LeftKidneyT2ToLeftKidneyT1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::LeftKidneyT2ToLeftKidneyT1)); tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::RenalNode::RightGlomerularCapillaries)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::RightKidneyT2ToRightKidneyT1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::RightKidneyT2ToRightKidneyT1)); } else { - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::LeftKidney2)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::LeftKidneyT2ToLeftKidneyT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::LeftKidney2)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::LeftKidneyT2ToLeftKidneyT1)); - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::RightKidney2)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::RightKidneyT2ToRightKidneyT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::RightKidney2)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::RightKidneyT2ToRightKidneyT1)); } - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::LeftPulmonaryCapillaries1)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::LeftLungT2ToLeftLungT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::LeftPulmonaryCapillaries1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::LeftLungT2ToLeftLungT1)); - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::TorsoMuscle1)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::MuscleT2ToMuscleT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ComputationalLifeCardiovascularNode::TorsoMuscle1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::MuscleT2ToMuscleT1)); - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::Myocardium2)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::MyocardiumT2ToMyocardiumT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::Myocardium2)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::MyocardiumT2ToMyocardiumT1)); - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::RightPulmonaryCapillaries1)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::RightLungT2ToRightLungT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::RightPulmonaryCapillaries1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::RightLungT2ToRightLungT1)); - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::TorsoSkin1)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::SkinT2ToSkinT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ComputationalLifeCardiovascularNode::TorsoSkin1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::SkinT2ToSkinT1)); - tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::ExpandedCardiovascularNode::Spleen1)); - tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::ExpandedCardiovascularTissuePath::SpleenT2ToSpleenT1)); + tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::Spleen1)); + tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::SpleenT2ToSpleenT1)); } else { @@ -3614,7 +3614,7 @@ namespace pulse tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::Liver1)); tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::LiverT2ToLiverT1)); - if (m_data.GetConfiguration().IsRenalEnabled()) + if (m_data.GetConfiguration().UseExpandedKidneys() == eSwitch::On) { tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::RenalNode::LeftGlomerularCapillaries)); tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::LeftKidneyT2ToLeftKidneyT1)); @@ -3632,7 +3632,7 @@ namespace pulse } //TODO: Make this work for the expanded model - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) { tissuePressureCVSources.push_back(m_data.GetCircuits().GetFluidNode(pulse::CardiovascularNode::LeftPulmonaryCapillaries1)); tissueResistancePaths.push_back(m_data.GetCircuits().GetFluidPath(pulse::TissuePath::LeftLungT2ToLeftLungT1)); diff --git a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp index e1d78e8ba..75475cfec 100644 --- a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp +++ b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp @@ -500,7 +500,7 @@ namespace pulse // Capillary Path // Alveoli Compartment // Capillary Compartment - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) { // Side // Alveoli Node @@ -551,218 +551,218 @@ namespace pulse m_LungComponents[eLungCompartment::RightSuperiorLobeApical] = { eSide::Right, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeApicalAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeApicalAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorLobeApicalAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeApicalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightSuperiorLobeApicalPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeApicalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeApicalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobeApicalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobeApicalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightSuperiorLobeApicalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightSuperiorLobePosterior] = { eSide::Right, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobePosteriorAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobePosteriorAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorLobePosteriorAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobePosteriorAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightSuperiorLobePosteriorPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobePosteriorAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobePosteriorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobePosteriorAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobePosteriorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightSuperiorLobePosteriorPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightSuperiorLobeAnterior] = { eSide::Right, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeAnteriorAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightSuperiorLobeAnteriorAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightSuperiorLobeAnteriorAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightSuperiorLobeAnteriorPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeAnteriorAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeAnteriorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobeAnteriorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightSuperiorLobeAnteriorPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightMiddleLobeLateral] = { eSide::Right, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeLateralAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeLateralAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightMiddleLobeLateralAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeLateralAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightMiddleLobeLateralPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeLateralAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeLateralAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightMiddleLobeLateralAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobeLateralAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightMiddleLobeLateralPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightMiddleLobeMedial] = { eSide::Right, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeMedialAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightMiddleLobeMedialAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightMiddleLobeMedialAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightMiddleLobeMedialAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightMiddleLobeMedialPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeMedialAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeMedialAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightMiddleLobeMedialAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobeMedialAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightMiddleLobeMedialPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightInferiorLobeSuperior] = { eSide::Right, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeSuperiorAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeSuperiorAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobeSuperiorAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeSuperiorAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeSuperiorPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeSuperiorAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeSuperiorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeSuperiorAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeSuperiorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeSuperiorPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightInferiorLobeMedialBasal] = { eSide::Right, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeMedialBasalAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeMedialBasalAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeMedialBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeMedialBasalPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeMedialBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeMedialBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeMedialBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeMedialBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightInferiorLobeAnteriorBasal] = { eSide::Right, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeAnteriorBasalAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeAnteriorBasalAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeAnteriorBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeAnteriorBasalPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeAnteriorBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeAnteriorBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeAnteriorBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeAnteriorBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightInferiorLobeLateralBasal] = { eSide::Right, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeLateralBasalAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobeLateralBasalAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobeLateralBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightInferiorLobeLateralBasalPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeLateralBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeLateralBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeLateralBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeLateralBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightInferiorLobePosteriorBasal] = { eSide::Right, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobePosteriorBasalAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::RightInferiorLobePosteriorBasalAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::RightInferiorLobePosteriorBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightInferiorLobePosteriorBasalPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobePosteriorBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobePosteriorBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobePosteriorBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobePosteriorBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftInferiorLobePosteriorBasal] = { eSide::Left, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobePosteriorBasalAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobePosteriorBasalAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobePosteriorBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobePosteriorBasalPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobePosteriorBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobePosteriorBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobePosteriorBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobePosteriorBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftInferiorLobeLateralBasal] = { eSide::Left, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeLateralBasalAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeLateralBasalAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeLateralBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobeLateralBasalPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeLateralBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeLateralBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeLateralBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobeLateralBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftInferiorLobeAnteromedialBasal] = { eSide::Left, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftInferiorLobeSuperior] = { eSide::Left, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeSuperiorAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftInferiorLobeSuperiorAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeSuperiorAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftInferiorLobeSuperiorPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeSuperiorAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeSuperiorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeSuperiorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobeSuperiorPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftSuperiorLobeInferiorLingula] = { eSide::Left, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftSuperiorLobeSuperiorLingula] = { eSide::Left, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftSuperiorLobeAnterior] = { eSide::Left, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeAnteriorAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeAnteriorAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeAnteriorAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeAnteriorPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeAnteriorAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeAnteriorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeAnteriorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeAnteriorPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftSuperiorLobeApicoposterior] = { eSide::Left, - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveoli), - m_RespiratoryCircuit->GetNode(pulse::ExpandedRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveolarDeadSpace), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole), - m_RespiratoryCircuit->GetPath(pulse::ExpandedRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobeApicoposteriorAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftSuperiorLobeApicoposteriorPulmonaryCapillaries) + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveoli), + m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveolarDeadSpace), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole), + m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeApicoposteriorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeApicoposteriorPulmonaryCapillaries) }; } @@ -979,7 +979,7 @@ namespace pulse //Update system data CalculateVitalSigns(); - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) { //TODO: Make this work for the expanded model ComputeExposedModelParameters(); @@ -3063,7 +3063,7 @@ namespace pulse //TODO: Make this work for the expanded model double leftHealthyLungCompliance_L_Per_cmH2O = 0.1; double rightHealthyLungCompliance_L_Per_cmH2O = 0.1; - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) { leftHealthyLungCompliance_L_Per_cmH2O = m_LeftAlveoliToLeftPleuralConnection->GetComplianceBaseline(VolumePerPressureUnit::L_Per_cmH2O); rightHealthyLungCompliance_L_Per_cmH2O = m_RightAlveoliToRightPleuralConnection->GetComplianceBaseline(VolumePerPressureUnit::L_Per_cmH2O); @@ -3174,7 +3174,7 @@ namespace pulse double functionalResidualCapacity_L = m_data.GetInitialPatient().GetFunctionalResidualCapacity(VolumeUnit::L) * lungRatio; - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::On) { //TODO: Make this work for the expanded model healthyLungCompliance_L_Per_cmH2O = 0.1; @@ -3672,6 +3672,20 @@ namespace pulse double leftAlveoliResistance_cmH2O_s_Per_L = m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); double esophagusResistance_cmH2O_s_Per_L = m_AirwayToStomach->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); + double rightBronchiResistance_cmH2O_s_Per_L = 0.0; + double leftBronchiResistance_cmH2O_s_Per_L = 0.0; + double rightAlveoliResistance_cmH2O_s_Per_L = 0.0; + double leftAlveoliResistance_cmH2O_s_Per_L = 0.0; + + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) + { + //TODO: Make this work for the expanded model + rightBronchiResistance_cmH2O_s_Per_L = m_CarinaToRightAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); + leftBronchiResistance_cmH2O_s_Per_L = m_CarinaToLeftAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); + rightAlveoliResistance_cmH2O_s_Per_L = m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); + leftAlveoliResistance_cmH2O_s_Per_L = m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); + } + bool inhaling = false; if (m_PharynxToCarina->GetNextFlow(VolumePerTimeUnit::L_Per_s) > 0.0) { @@ -3758,7 +3772,7 @@ namespace pulse //Tuned based on mechanical ventilator validation data tracheaResistance_cmH2O_s_Per_L *= intubationTracheatracheaResistanceMultiplier_cmH2O_s_Per_L; - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::On) { //Trachea resistance was tuned from 1.125 to 0.8 cmH2O-s/L in the circuit setup tracheaResistance_cmH2O_s_Per_L *= 1.125 / 0.8; @@ -4122,12 +4136,24 @@ namespace pulse BLIM(leftAlveoliResistance_cmH2O_s_Per_L, m_DefaultClosedResistance_cmH2O_s_Per_L, m_DefaultOpenResistance_cmH2O_s_Per_L); //Set new values - m_PharynxToCarina->GetNextResistance().SetValue(tracheaResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); - m_CarinaToRightAnatomicDeadSpace->GetNextResistance().SetValue(rightBronchiResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); - m_CarinaToLeftAnatomicDeadSpace->GetNextResistance().SetValue(leftBronchiResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); - m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace->GetNextResistance().SetValue(rightAlveoliResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); - m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace->GetNextResistance().SetValue(leftAlveoliResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); - m_AirwayToStomach->GetNextResistance().SetValue(esophagusResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) + { + //TODO: Make this work for the expanded model + m_PharynxToCarina->GetNextResistance().SetValue(tracheaResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + m_CarinaToRightAnatomicDeadSpace->GetNextResistance().SetValue(rightBronchiResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + m_CarinaToLeftAnatomicDeadSpace->GetNextResistance().SetValue(leftBronchiResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace->GetNextResistance().SetValue(rightAlveoliResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace->GetNextResistance().SetValue(leftAlveoliResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + m_AirwayToStomach->GetNextResistance().SetValue(esophagusResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + } + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) + { + //TODO: Make this work for the expanded model + m_CarinaToRightAnatomicDeadSpace->GetNextResistance().SetValue(rightBronchiResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + m_CarinaToLeftAnatomicDeadSpace->GetNextResistance().SetValue(leftBronchiResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace->GetNextResistance().SetValue(rightAlveoliResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace->GetNextResistance().SetValue(leftAlveoliResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + } //------------------------------------------------------------------------------------------------------ //Restrictive @@ -5640,15 +5666,15 @@ namespace pulse return pulse::PulmonaryCompartment::RightLung; //case eLungCompartment::LeftInferiorLobe: - // return pulse::ExpandedPulmonaryCompartment::LeftInferiorLobeLung; + // return pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeLung; //case eLungCompartment::LeftSuperiorLobe: - // return pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobe; + // return pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobe; //case eLungCompartment::RightInferiorLobe: - // return pulse::ExpandedPulmonaryCompartment::RightInferiorLobe; + // return pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobe; //case eLungCompartment::RightMiddleLobe: - // return pulse::ExpandedPulmonaryCompartment::RightMiddleLobe; + // return pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobe; //case eLungCompartment::RightSuperiorLobe: - // return pulse::ExpandedPulmonaryCompartment::RightSuperiorLobe; + // return pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobe; default: Warning("Unsupported eLungCompartment"); @@ -5663,15 +5689,15 @@ namespace pulse if (cmpt == pulse::PulmonaryCompartment::RightLung) return eLungCompartment::RightLung; - //if (cmpt == pulse::ExpandedPulmonaryCompartment::LeftInferiorLobe) + //if (cmpt == pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobe) // return eLungCompartment::LeftInferiorLobe; - //if (cmpt == pulse::ExpandedPulmonaryCompartment::LeftSuperiorLobe) + //if (cmpt == pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobe) // return eLungCompartment::LeftSuperiorLobe; - //if (cmpt == pulse::ExpandedPulmonaryCompartment::RightInferiorLobe) + //if (cmpt == pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobe) // return eLungCompartment::RightInferiorLobe; - //if (cmpt == pulse::ExpandedPulmonaryCompartment::RightMiddleLobe) + //if (cmpt == pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobe) // return eLungCompartment::RightMiddleLobe; - //if (cmpt == pulse::ExpandedPulmonaryCompartment::RightSuperiorLobe) + //if (cmpt == pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobe) // return eLungCompartment::RightSuperiorLobe; return (eLungCompartment)-1; diff --git a/src/cpp/engine/common/system/physiology/TissueModel.cpp b/src/cpp/engine/common/system/physiology/TissueModel.cpp index 46d9a2441..c3817c743 100644 --- a/src/cpp/engine/common/system/physiology/TissueModel.cpp +++ b/src/cpp/engine/common/system/physiology/TissueModel.cpp @@ -216,7 +216,7 @@ namespace pulse m_LeftPulmonaryCapillaries = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryCapillaries); m_RightPulmonaryCapillaries = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightPulmonaryCapillaries); - std::string BrainCmpt = m_data.GetConfiguration().UseExpandedVasculature() == eSwitch::On ? pulse::ExpandedVascularCompartment::Intracranial : pulse::VascularCompartment::Brain; + std::string BrainCmpt = m_data.GetConfiguration().UseComputationalLifeExpansion() == eSwitch::On ? pulse::ComputationalLifeVascularCompartment::Intracranial : pulse::VascularCompartment::Brain; //Store tissue-blood pairs m_TissueToVascular.clear(); m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::Fat)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::Fat); @@ -227,7 +227,7 @@ namespace pulse m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::RightKidney)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightKidney); m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::Liver)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::Liver); //TODO: Make this work for the expanded model - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) { m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::LeftLung)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftLung); m_TissueToVascular[m_data.GetCompartments().GetTissueCompartment(pulse::TissueCompartment::RightLung)] = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightLung); diff --git a/src/cpp/engine/files.cmake b/src/cpp/engine/files.cmake index 7ff5d9d10..1d04917fe 100644 --- a/src/cpp/engine/files.cmake +++ b/src/cpp/engine/files.cmake @@ -91,8 +91,8 @@ set(ENGINE_CPP_FILES engine/common/controller/CompartmentManager.cpp engine/common/controller/Controller.cpp engine/common/controller/SetupCircuitsAndCompartments.cpp - engine/common/controller/SetupExpandedCardiovascular.cpp - engine/common/controller/SetupExpandedRespiratory.cpp + engine/common/controller/SetupComputationalLifeExpansion.cpp + engine/common/controller/SetupExpandedLungs.cpp engine/common/controller/SubstanceManager.cpp engine/common/system/environment/EnvironmentModel.cpp engine/common/system/equipment/AnesthesiaMachineModel.cpp diff --git a/src/cpp/engine/human_adult/hemodynamics/controller/CompartmentManager.cpp b/src/cpp/engine/human_adult/hemodynamics/controller/CompartmentManager.cpp index 762c71587..9898b5cc3 100644 --- a/src/cpp/engine/human_adult/hemodynamics/controller/CompartmentManager.cpp +++ b/src/cpp/engine/human_adult/hemodynamics/controller/CompartmentManager.cpp @@ -50,7 +50,7 @@ namespace pulse { namespace human_adult_hemodynamics Warning("Could not find expected Extravascular compartment, " + name + " in compartment manager"); } } - if (m_data.GetConfiguration().IsRenalEnabled()) + if (m_data.GetConfiguration().UseExpandedKidneys() == eSwitch::On) { SORT_CMPTS(Urine, Liquid); } diff --git a/src/cpp/engine/human_adult/hemodynamics/controller/SetupCircuitsAndCompartments.cpp b/src/cpp/engine/human_adult/hemodynamics/controller/SetupCircuitsAndCompartments.cpp index 01d98fab8..8b6ad788f 100644 --- a/src/cpp/engine/human_adult/hemodynamics/controller/SetupCircuitsAndCompartments.cpp +++ b/src/cpp/engine/human_adult/hemodynamics/controller/SetupCircuitsAndCompartments.cpp @@ -29,7 +29,7 @@ namespace pulse { namespace human_adult_hemodynamics m_Compartments->Setup(); SetupCardiovascular(); - if (m_Config->IsRenalEnabled()) + if (m_Config->UseExpandedKidneys() == eSwitch::On) SetupRenal(); if (m_Config->IsTissueEnabled()) SetupTissue(); diff --git a/src/cpp/engine/human_adult/whole_body/test/AerosolTest.cpp b/src/cpp/engine/human_adult/whole_body/test/AerosolTest.cpp index 153ec0a45..626f49470 100644 --- a/src/cpp/engine/human_adult/whole_body/test/AerosolTest.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/AerosolTest.cpp @@ -272,7 +272,7 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); pc.GetSubstances().InitializeGasCompartments(); diff --git a/src/cpp/engine/human_adult/whole_body/test/AnesthesiaCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/AnesthesiaCircuit.cpp index 465e61442..0490f8c75 100644 --- a/src/cpp/engine/human_adult/whole_body/test/AnesthesiaCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/AnesthesiaCircuit.cpp @@ -38,7 +38,7 @@ namespace pulse { namespace human_adult_whole_body /// and variable values for the circuit elements.The outputs are the resultant flows and pressures /// on the circuit nodes and paths. These are then stored in a file in sTestDirectory //-------------------------------------------------------------------------------------------------- - void EngineTest::AnesthesiaMachineCircuitAndTransportTest(RespiratoryConfiguration config, const std::string& sTestDirectory) + void EngineTest::AnesthesiaMachineCircuitAndTransportTest(RespiratoryConfiguration config, bool expandedLungs, const std::string& sTestDirectory) { TimingProfile tmr; tmr.Start("Test"); @@ -57,7 +57,8 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); + pc.m_Config->UseExpandedLungs(expandedLungs ? eSwitch::On : eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); SEEnvironmentalConditions env(pc.GetLogger()); @@ -174,11 +175,16 @@ namespace pulse { namespace human_adult_whole_body void EngineTest::AnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory) { - AnesthesiaMachineCircuitAndTransportTest(AnesthesiaMachineSolo, sTestDirectory); + AnesthesiaMachineCircuitAndTransportTest(AnesthesiaMachineSolo, false, sTestDirectory); } void EngineTest::RespiratoryWithAnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory) { - AnesthesiaMachineCircuitAndTransportTest(RespiratoryWithAnesthesiaMachine, sTestDirectory); + AnesthesiaMachineCircuitAndTransportTest(RespiratoryWithAnesthesiaMachine, false, sTestDirectory); + } + + void EngineTest::RespiratoryExpandedLungsWithAnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory) + { + AnesthesiaMachineCircuitAndTransportTest(RespiratoryWithAnesthesiaMachine, true, sTestDirectory); } END_NAMESPACE_EX diff --git a/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp index bc5bbca12..3e320130f 100644 --- a/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp @@ -44,32 +44,47 @@ namespace pulse { namespace human_adult_whole_body // We use 1,1,1,0 to run our test without any scaling of the circuit and using the HeartRate Baseline in the standard patient file void EngineTest::CardiovascularCircuitAndTransportTest(const std::string& sTestDirectory) { - CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, false, false, sTestDirectory, "Cardiovascular", false); + CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, false, false, false, sTestDirectory, "Cardiovascular", false); } void EngineTest::CardiovascularAndRenalCircuitAndTransportTest(const std::string& sTestDirectory) { - CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, true, false, false, sTestDirectory, "CardiovascularAndRenal", false); + CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, false, true, false, sTestDirectory, "CardiovascularAndRenal", false); } void EngineTest::CardiovascularAndTissueCircuitAndTransportTest(const std::string& sTestDirectory) { - CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, true, false, false, false, sTestDirectory, "CardiovascularAndTissue", false); + CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, true, false, false, sTestDirectory, "CardiovascularAndTissue", false); } void EngineTest::CardiovascularAndCerebrospinalFluidCircuitAndTransportTest(const std::string& sTestDirectory) { - CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, true, false, sTestDirectory, "CardiovascularAndCerebrospinalFluid", false); + CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, true, false, false, false, sTestDirectory, "CardiovascularAndCerebrospinalFluid", false); + } + + void EngineTest::CardiovascularAndExpandedLungsCircuitAndTransportTest(const std::string& sTestDirectory) + { + CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, false, false, true, sTestDirectory, "CardiovascularAndCerebrospinalFluid", false); } void EngineTest::FullCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory) {// \todo enable csf when ready - CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, true, true, false, false, sTestDirectory, "FullCardiovascular", false); + CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, true, true, false, sTestDirectory, "FullCardiovascular", false); + } + + void EngineTest::FullExpandedLungsCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory) + {// \todo enable csf when ready + CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, true, true, true, sTestDirectory, "FullCardiovascular", false); } void EngineTest::CardiovascularBloodGasesTest(const std::string& sTestDirectory) {// \todo enable csf when ready - CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, true, true, false, true, sTestDirectory, "CardiovascularBloodGasesTest", false); + CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, true, false, true, true, false, sTestDirectory, "CardiovascularBloodGasesTest", false); + } + + void EngineTest::CardiovascularExpandedLungsBloodGasesTest(const std::string& sTestDirectory) + {// \todo enable csf when ready + CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, true, false, true, true, true, sTestDirectory, "CardiovascularBloodGasesTest", false); } void EngineTest::TuneCardiovascularCircuitTest(const std::string& sTestDirectory) @@ -143,7 +158,7 @@ namespace pulse { namespace human_adult_whole_body testSuite.GetLogger()->Info("Running " + sTestName); pc.SetDataRoot("./"); pc.Initialize(patient); - pc.m_Config->EnableRenal(eSwitch::On); + pc.m_Config->UseExpandedKidneys(eSwitch::On); pc.m_Config->EnableTissue(eSwitch::On); SETestCase& testCase = testSuite.CreateTestCase(); @@ -166,8 +181,8 @@ namespace pulse { namespace human_adult_whole_body double complianceScale, double resistanceScale, double volumeScale, double heartRate_bpm, double systemicResistanceScale, double systemicComplianceScale, double aortaResistanceScale, double aortaComplianceScale, double rightHeartResistanceScale, double venaCavaComplianceScale, - bool connectTissue, bool connectRenal, bool connectCSF, bool balanceBloodGases, const std::string& sTestDirectory, - const std::string& sTestName, bool breakOutResults) + bool balanceBloodGases, bool connectCSF, bool connectTissue, bool expandedKidneys, bool expandedLungs, + const std::string& sTestDirectory, const std::string& sTestName, bool breakOutResults) { //breakOutResults True = seperate files for different types (i.e. volumes, flows, etc.); False = one file with everything double testTime_s = 120; @@ -221,13 +236,12 @@ namespace pulse { namespace human_adult_whole_body pc.GetCurrentPatient().GetHeartRateBaseline().SetValue(heartRate_bpm, FrequencyUnit::Per_min); } - pc.m_Config->EnableRenal(connectRenal ? eSwitch::On : eSwitch::Off); pc.m_Config->EnableTissue(connectTissue ? eSwitch::On : eSwitch::Off); pc.m_Config->EnableCerebrospinalFluid(connectCSF ? eSwitch::On : eSwitch::Off); + pc.m_Config->UseExpandedLungs(expandedLungs ? eSwitch::On : eSwitch::Off); + pc.m_Config->UseExpandedKidneys(expandedKidneys ? eSwitch::On : eSwitch::Off); pc.m_Config->TuneCardiovascularCircuit(eSwitch::On);// Run the circuit as constructed //pc.m_Config->CardiovascularTuningFile("./test_results/unit_tests/Pulse/"+ sTestName+"Tuning.csv"); - //Aaron - Make a seperate test that turns this on - pc.m_Config->UseExpandedRespiratory(eSwitch::On); pc.CreateCircuitsAndCompartments(); std::vector subs2Track; @@ -259,7 +273,7 @@ namespace pulse { namespace human_adult_whole_body SEScalarMassPerVolume N2_ug_per_mL; N2_ug_per_mL.SetValue(0.5, MassPerVolumeUnit::ug_Per_mL); subMgr.SetSubstanceConcentration(subMgr.GetN2(), pc.GetCompartments().GetVascularLeafCompartments(), N2_ug_per_mL); - if (connectRenal) + if (expandedKidneys) { subMgr.SetSubstanceConcentration(subMgr.GetN2(), pc.GetCompartments().GetUrineLeafCompartments(), N2_ug_per_mL); } @@ -707,7 +721,7 @@ namespace pulse { namespace human_adult_whole_body { for (double vcFactor = 0.5; vcFactor < 1.51; vcFactor += 0.25) { - CardiovascularCircuitAndTransportTest(Heart, comp, res, vol, heartRate_bpm, srFactor, scFactor, arFactor, acFactor, vrFactor, vcFactor, false, false, false, false, sTestDirectory, "CVScale", true); + CardiovascularCircuitAndTransportTest(Heart, comp, res, vol, heartRate_bpm, srFactor, scFactor, arFactor, acFactor, vrFactor, vcFactor, false, false, false, false, false, sTestDirectory, "CVScale", true); cvLastMeanPressureTrk.Track("SystemicResistanceScale", testNo, srFactor); cvLastMeanPressureTrk.Track("SystemicComplianceScale", testNo, scFactor); diff --git a/src/cpp/engine/human_adult/whole_body/test/EngineTest.cpp b/src/cpp/engine/human_adult/whole_body/test/EngineTest.cpp index 9a8019791..ec395e0e7 100644 --- a/src/cpp/engine/human_adult/whole_body/test/EngineTest.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/EngineTest.cpp @@ -57,29 +57,22 @@ namespace pulse { namespace human_adult_whole_body void EngineTest::FillFunctionMap() { - //A few functions have overloads, so we have to use the pointer clarify which one we want - testFunction cardioCTTest = &EngineTest::CardiovascularCircuitAndTransportTest; - testFunction cardioBGTest = &EngineTest::CardiovascularBloodGasesTest; - testFunction cardioTuneCircuitTest = &EngineTest::TuneCardiovascularCircuitTest; - testFunction respCTTest = &EngineTest::RespiratoryCircuitAndTransportTest; - testFunction anesthCTTest = &EngineTest::AnesthesiaMachineCircuitAndTransportTest; - testFunction ventCTTest = &EngineTest::MechanicalVentilatorCircuitAndTransportTest; - testFunction setupPatientTest = &EngineTest::SetupPatientTest; - - testMap.insert(std::make_pair("ReadScenarios", &EngineTest::ReadScenarios)); testMap.insert(std::make_pair("ReuseEngine", &EngineTest::ReuseEngine)); testMap.insert(std::make_pair("SerializationTest", &EngineTest::SerializationTest)); - testMap.insert(std::make_pair("SetupPatientTest", setupPatientTest)); + testMap.insert(std::make_pair("SetupPatientTest", &EngineTest::SetupPatientTest)); //Fill a map that ties unit test names to their actual functions - testMap.insert(std::make_pair("CardiovascularCircuitAndTransportTest", cardioCTTest)); + testMap.insert(std::make_pair("CardiovascularCircuitAndTransportTest", (testFunction) &EngineTest::CardiovascularCircuitAndTransportTest)); testMap.insert(std::make_pair("CardiovascularAndRenalCircuitAndTransportTest", &EngineTest::CardiovascularAndRenalCircuitAndTransportTest)); testMap.insert(std::make_pair("CardiovascularAndTissueCircuitAndTransportTest", &EngineTest::CardiovascularAndTissueCircuitAndTransportTest)); testMap.insert(std::make_pair("CardiovascularAndCerebrospinalFluidCircuitAndTransportTest", &EngineTest::CardiovascularAndCerebrospinalFluidCircuitAndTransportTest)); + testMap.insert(std::make_pair("CardiovascularAndExpandedLungsCircuitAndTransportTest", &EngineTest::CardiovascularAndExpandedLungsCircuitAndTransportTest)); testMap.insert(std::make_pair("FullCardiovascularCircuitAndTransportTest", &EngineTest::FullCardiovascularCircuitAndTransportTest)); - testMap.insert(std::make_pair("CardiovascularBloodGasesTest", cardioBGTest)); - testMap.insert(std::make_pair("TuneCardiovascularCircuitTest", cardioTuneCircuitTest)); + testMap.insert(std::make_pair("FullExpandedLungsCardiovascularCircuitAndTransportTest", &EngineTest::FullExpandedLungsCardiovascularCircuitAndTransportTest)); + testMap.insert(std::make_pair("CardiovascularBloodGasesTest", &EngineTest::CardiovascularBloodGasesTest)); + testMap.insert(std::make_pair("CardiovascularExpandedLungsBloodGasesTest", &EngineTest::CardiovascularExpandedLungsBloodGasesTest)); + testMap.insert(std::make_pair("TuneCardiovascularCircuitTest", (testFunction) & EngineTest::TuneCardiovascularCircuitTest)); testMap.insert(std::make_pair("CardiovascularCircuitScaleTests", &EngineTest::CardiovascularCircuitScaleTests)); testMap.insert(std::make_pair("RenalCircuitAndTransportTest", &EngineTest::RenalCircuitAndTransportTest)); @@ -88,18 +81,23 @@ namespace pulse { namespace human_adult_whole_body testMap.insert(std::make_pair("RenalSecretionTest", &EngineTest::RenalSecretionTest)); testMap.insert(std::make_pair("RenalUrinateTest", &EngineTest::RenalUrinateTest)); - testMap.insert(std::make_pair("RespiratoryCircuitAndTransportTest", respCTTest)); + testMap.insert(std::make_pair("RespiratoryCircuitAndTransportTest", (testFunction) & EngineTest::RespiratoryCircuitAndTransportTest)); + testMap.insert(std::make_pair("RespiratoryExpandedLungsCircuitAndTransportTest", &EngineTest::RespiratoryExpandedLungsCircuitAndTransportTest)); testMap.insert(std::make_pair("RespiratoryDriverTest", &EngineTest::RespiratoryDriverTest)); - testMap.insert(std::make_pair("AnesthesiaMachineCircuitAndTransportTest", anesthCTTest)); + testMap.insert(std::make_pair("AnesthesiaMachineCircuitAndTransportTest", (testFunction) & EngineTest::AnesthesiaMachineCircuitAndTransportTest)); testMap.insert(std::make_pair("RespiratoryWithAnesthesiaMachineCircuitAndTransportTest", &EngineTest::RespiratoryWithAnesthesiaMachineCircuitAndTransportTest)); + testMap.insert(std::make_pair("RespiratoryExpandedLungsWithAnesthesiaMachineCircuitAndTransportTest", &EngineTest::RespiratoryExpandedLungsWithAnesthesiaMachineCircuitAndTransportTest)); - testMap.insert(std::make_pair("MechanicalVentilatorCircuitAndTransportTest", ventCTTest)); + testMap.insert(std::make_pair("MechanicalVentilatorCircuitAndTransportTest", (testFunction) & EngineTest::MechanicalVentilatorCircuitAndTransportTest)); testMap.insert(std::make_pair("RespiratoryWithMechanicalVentilatorCircuitAndTransportTest", &EngineTest::RespiratoryWithMechanicalVentilatorCircuitAndTransportTest)); + testMap.insert(std::make_pair("RespiratoryExpandedLungsWithMechanicalVentilatorCircuitAndTransportTest", &EngineTest::RespiratoryExpandedLungsWithMechanicalVentilatorCircuitAndTransportTest)); testMap.insert(std::make_pair("RespiratoryWithInhalerCircuitAndTransportTest", &EngineTest::RespiratoryWithInhalerCircuitAndTransportTest)); + testMap.insert(std::make_pair("RespiratoryExpandedLungsWithInhalerCircuitAndTransportTest", &EngineTest::RespiratoryExpandedLungsWithInhalerCircuitAndTransportTest)); testMap.insert(std::make_pair("RespiratoryWithMechanicalVentilationCircuitAndTransportTest", &EngineTest::RespiratoryWithMechanicalVentilationCircuitAndTransportTest)); + testMap.insert(std::make_pair("RespiratoryExpandedLungsWithMechanicalVentilationCircuitAndTransportTest", &EngineTest::RespiratoryExpandedLungsWithMechanicalVentilationCircuitAndTransportTest)); testMap.insert(std::make_pair("InternalTemperatureVariableBMRCircuitTest", &EngineTest::InternalTemperatureVariableBMRCircuitTest)); testMap.insert(std::make_pair("InternalTemperatureVariableSkinCircuitTest", &EngineTest::InternalTemperatureVariableSkinCircuitTest)); diff --git a/src/cpp/engine/human_adult/whole_body/test/EngineTest.h b/src/cpp/engine/human_adult/whole_body/test/EngineTest.h index 9534ac5aa..c47bbf0a3 100644 --- a/src/cpp/engine/human_adult/whole_body/test/EngineTest.h +++ b/src/cpp/engine/human_adult/whole_body/test/EngineTest.h @@ -38,17 +38,23 @@ namespace pulse { namespace human_adult_whole_body void CardiovascularAndRenalCircuitAndTransportTest(const std::string& sTestDirectory); void CardiovascularAndTissueCircuitAndTransportTest(const std::string& sTestDirectory); void CardiovascularAndCerebrospinalFluidCircuitAndTransportTest(const std::string& sTestDirectory); + void CardiovascularAndExpandedLungsCircuitAndTransportTest(const std::string& sTestDirectory); void FullCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory); - void CardiovascularBloodGasesTest(const std::string& sTestDirectory);// Characterize the cv circuit - void TuneCardiovascularCircuitTest(const std::string& sTestDirectory); + void FullExpandedLungsCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory); + void CardiovascularBloodGasesTest(const std::string& sTestDirectory);// Everything with Saturation + void CardiovascularExpandedLungsBloodGasesTest(const std::string& sTestDirectory);// Everything with Saturation // Cardiovascular Utilities // + void TuneCardiovascularCircuitTest(const std::string& sTestDirectory); void CardiovascularCircuitScaleTests(const std::string& sTestDirectory); protected: enum CardiovascularDriver { Sinusoid = 0, Heart }; + enum Expanded { None=0, Vasculature, Respiratory }; // Vasculature expansion defined by ComputationalLife void SinusoidHeartDriver(double time_s, double heartRate_s, double& lHeartElastance, double& rHeartElastance); - void CardiovascularCircuitAndTransportTest(CardiovascularDriver driverType, double complianceScale, double resistanceScale, double volumeScale, double heartRate_bpm, - double sysRes, double sysComp, double aortaRes, double aortaComp, double rightHeartRes, double venaCavaComp, bool connectTissue, bool connectRenal, bool connectCSF, - bool balanceBloodgases, const std::string& sTestDirectory, const std::string& sTestName, bool breakOutResults); + void CardiovascularCircuitAndTransportTest(CardiovascularDriver driverType, + double complianceScale, double resistanceScale, double volumeScale, double heartRate_bpm, + double sysRes, double sysComp, double aortaRes, double aortaComp, double rightHeartRes, double venaCavaComp, + bool balanceBloodGases, bool connectCSF, bool connectTissue, bool expandedKidneys, bool expandedLungs, + const std::string& sTestDirectory, const std::string& sTestName, bool breakOutResults); void TuneCardiovascularCircuitTest(SETestSuite& testSuite, const std::string& sTestDirectory, const std::string& sTestName, SEPatient& patient); double m_MeanAortaPressure; @@ -78,11 +84,12 @@ namespace pulse { namespace human_adult_whole_body // Respiratory // ///////////////// void RespiratoryCircuitAndTransportTest(const std::string& sTestDirectory); + void RespiratoryExpandedLungsCircuitAndTransportTest(const std::string& sTestDirectory); void RespiratoryDriverTest(const std::string& sTestDirectory); protected: enum RespiratoryConfiguration { RespiratorySolo, AnesthesiaMachineSolo, RespiratoryWithAnesthesiaMachine, RespiratoryWithInhaler, RespiratoryWithMechanicalVentilation, MechanicalVentilatorSolo, RespiratoryWithMechanicalVentilator }; - void RespiratoryCircuitAndTransportTest(RespiratoryConfiguration config, const std::string& sTestDirectory); + void RespiratoryCircuitAndTransportTest(RespiratoryConfiguration config, bool expandedLungs, const std::string& sTestDirectory); public: //////////////////////// @@ -90,8 +97,9 @@ namespace pulse { namespace human_adult_whole_body //////////////////////// void AnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory); void RespiratoryWithAnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory); + void RespiratoryExpandedLungsWithAnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory); protected: - void AnesthesiaMachineCircuitAndTransportTest(RespiratoryConfiguration config, const std::string& sTestDirectory); + void AnesthesiaMachineCircuitAndTransportTest(RespiratoryConfiguration config, bool expandedLungs, const std::string& sTestDirectory); public: /////////////////////////// @@ -99,14 +107,16 @@ namespace pulse { namespace human_adult_whole_body /////////////////////////// void MechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory); void RespiratoryWithMechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory); + void RespiratoryExpandedLungsWithMechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory); protected: - void MechanicalVentilatorCircuitAndTransportTest(RespiratoryConfiguration config, const std::string& sTestDirectory); + void MechanicalVentilatorCircuitAndTransportTest(RespiratoryConfiguration config, bool expandedLungs, const std::string& sTestDirectory); public: ///////////// // Inhaler // ///////////// void RespiratoryWithInhalerCircuitAndTransportTest(const std::string& sTestDirectory); + void RespiratoryExpandedLungsWithInhalerCircuitAndTransportTest(const std::string& sTestDirectory); protected: public: @@ -114,6 +124,7 @@ namespace pulse { namespace human_adult_whole_body // Mechanical Ventilation // //////////////////////////// void RespiratoryWithMechanicalVentilationCircuitAndTransportTest(const std::string& sTestDirectory); + void RespiratoryExpandedLungsWithMechanicalVentilationCircuitAndTransportTest(const std::string& sTestDirectory); protected: public: diff --git a/src/cpp/engine/human_adult/whole_body/test/FourCompartmentTest.cpp b/src/cpp/engine/human_adult/whole_body/test/FourCompartmentTest.cpp index aa60dfa9c..c483e6c5d 100644 --- a/src/cpp/engine/human_adult/whole_body/test/FourCompartmentTest.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/FourCompartmentTest.cpp @@ -95,7 +95,7 @@ namespace pulse { namespace human_adult_whole_body subMgr.LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &subMgr); - pc.m_Config->EnableRenal(eSwitch::Off); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); subMgr.InitializeGasCompartments(); diff --git a/src/cpp/engine/human_adult/whole_body/test/MechanicalVentilatorCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/MechanicalVentilatorCircuit.cpp index 614efa480..dec874ac2 100644 --- a/src/cpp/engine/human_adult/whole_body/test/MechanicalVentilatorCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/MechanicalVentilatorCircuit.cpp @@ -38,7 +38,7 @@ namespace pulse { namespace human_adult_whole_body /// and variable values for the circuit elements.The outputs are the resultant flows and pressures /// on the circuit nodes and paths. These are then stored in a file in sTestDirectory //-------------------------------------------------------------------------------------------------- - void EngineTest::MechanicalVentilatorCircuitAndTransportTest(RespiratoryConfiguration config, const std::string& sTestDirectory) + void EngineTest::MechanicalVentilatorCircuitAndTransportTest(RespiratoryConfiguration config, bool expandedLungs, const std::string& sTestDirectory) { TimingProfile tmr; tmr.Start("Test"); @@ -57,7 +57,8 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); + pc.m_Config->UseExpandedLungs(expandedLungs ? eSwitch::On : eSwitch::Off); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); SEEnvironmentalConditions env(pc.GetLogger()); @@ -169,11 +170,16 @@ namespace pulse { namespace human_adult_whole_body void EngineTest::MechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory) { - MechanicalVentilatorCircuitAndTransportTest(MechanicalVentilatorSolo, sTestDirectory); + MechanicalVentilatorCircuitAndTransportTest(MechanicalVentilatorSolo, false, sTestDirectory); } void EngineTest::RespiratoryWithMechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory) { - MechanicalVentilatorCircuitAndTransportTest(RespiratoryWithMechanicalVentilator, sTestDirectory); + MechanicalVentilatorCircuitAndTransportTest(RespiratoryWithMechanicalVentilator, false, sTestDirectory); + } + + void EngineTest::RespiratoryExpandedLungsWithMechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory) + { + MechanicalVentilatorCircuitAndTransportTest(RespiratoryWithMechanicalVentilator, true, sTestDirectory); } END_NAMESPACE_EX diff --git a/src/cpp/engine/human_adult/whole_body/test/NervousTests.cpp b/src/cpp/engine/human_adult/whole_body/test/NervousTests.cpp index 9fca6316b..6b051dbf7 100644 --- a/src/cpp/engine/human_adult/whole_body/test/NervousTests.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/NervousTests.cpp @@ -79,7 +79,7 @@ namespace pulse { namespace human_adult_whole_body pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); //Renal and Tissue are on - pc.m_Config->EnableRenal(eSwitch::On); + pc.m_Config->UseExpandedKidneys(eSwitch::On); pc.m_Config->EnableTissue(eSwitch::On); pc.CreateCircuitsAndCompartments(); diff --git a/src/cpp/engine/human_adult/whole_body/test/RenalCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/RenalCircuit.cpp index 4cb625a77..6edd836c2 100644 --- a/src/cpp/engine/human_adult/whole_body/test/RenalCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/RenalCircuit.cpp @@ -56,7 +56,7 @@ namespace pulse { namespace human_adult_whole_body subMgr.LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &subMgr); - pc.m_Config->EnableRenal(eSwitch::On); + pc.m_Config->UseExpandedKidneys(eSwitch::On); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); // Renal needs these tissue compartments @@ -189,7 +189,7 @@ namespace pulse { namespace human_adult_whole_body subMgr.LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &subMgr); - pc.m_Config->EnableRenal(eSwitch::On); + pc.m_Config->UseExpandedKidneys(eSwitch::On); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); // Renal needs these tissue compartments @@ -505,7 +505,7 @@ namespace pulse { namespace human_adult_whole_body subMgr.LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &subMgr); - pc.m_Config->EnableRenal(eSwitch::On); + pc.m_Config->UseExpandedKidneys(eSwitch::On); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); // Renal needs these tissue compartments diff --git a/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp index aaa4390df..b1a4cb3f8 100644 --- a/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp @@ -32,7 +32,7 @@ namespace pulse { namespace human_adult_whole_body { - void EngineTest::RespiratoryCircuitAndTransportTest(RespiratoryConfiguration config, const std::string & sTestDirectory) + void EngineTest::RespiratoryCircuitAndTransportTest(RespiratoryConfiguration config, bool expandedLungs, const std::string & sTestDirectory) { TimingProfile tmr; tmr.Start("Test"); @@ -53,10 +53,9 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); - //Aaron - Make a seperate test that turns this on - pc.m_Config->UseExpandedRespiratory(eSwitch::On); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); + pc.m_Config->UseExpandedLungs(expandedLungs ? eSwitch::On : eSwitch::Off); pc.CreateCircuitsAndCompartments(); pc.GetSubstances().InitializeGasCompartments(); SEEnvironmentalConditions& env = pc.GetEnvironment().GetEnvironmentalConditions(); @@ -196,17 +195,32 @@ namespace pulse { namespace human_adult_whole_body void EngineTest::RespiratoryCircuitAndTransportTest(const std::string & sTestDirectory) { - RespiratoryCircuitAndTransportTest(RespiratorySolo, sTestDirectory); + RespiratoryCircuitAndTransportTest(RespiratorySolo, false, sTestDirectory); + } + + void EngineTest::RespiratoryExpandedLungsCircuitAndTransportTest(const std::string& sTestDirectory) + { + RespiratoryCircuitAndTransportTest(RespiratorySolo, true, sTestDirectory); } void EngineTest::RespiratoryWithInhalerCircuitAndTransportTest(const std::string & sTestDirectory) { - RespiratoryCircuitAndTransportTest(RespiratoryWithInhaler, sTestDirectory); + RespiratoryCircuitAndTransportTest(RespiratoryWithInhaler, false, sTestDirectory); + } + + void EngineTest::RespiratoryExpandedLungsWithInhalerCircuitAndTransportTest(const std::string& sTestDirectory) + { + RespiratoryCircuitAndTransportTest(RespiratoryWithInhaler, true, sTestDirectory); } void EngineTest::RespiratoryWithMechanicalVentilationCircuitAndTransportTest(const std::string & sTestDirectory) { - RespiratoryCircuitAndTransportTest(RespiratoryWithMechanicalVentilation, sTestDirectory); + RespiratoryCircuitAndTransportTest(RespiratoryWithMechanicalVentilation, false, sTestDirectory); + } + + void EngineTest::RespiratoryExpandedLungsWithMechanicalVentilationCircuitAndTransportTest(const std::string& sTestDirectory) + { + RespiratoryCircuitAndTransportTest(RespiratoryWithMechanicalVentilation, true, sTestDirectory); } void EngineTest::RespiratoryDriverTest(const std::string & sTestDirectory) @@ -222,7 +236,7 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); SEEnvironmentalConditions env(pc.GetLogger()); diff --git a/src/cpp/engine/human_adult/whole_body/test/SolverTests.cpp b/src/cpp/engine/human_adult/whole_body/test/SolverTests.cpp index c855486d6..c60ec0512 100644 --- a/src/cpp/engine/human_adult/whole_body/test/SolverTests.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/SolverTests.cpp @@ -56,7 +56,7 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::On); + pc.m_Config->UseExpandedKidneys(eSwitch::On); pc.m_Config->EnableTissue(eSwitch::On); pc.CreateCircuitsAndCompartments(); diff --git a/src/cpp/engine/human_adult/whole_body/test/TemperatureCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/TemperatureCircuit.cpp index f307473a5..41b6400b6 100644 --- a/src/cpp/engine/human_adult/whole_body/test/TemperatureCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/TemperatureCircuit.cpp @@ -50,7 +50,7 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); @@ -130,7 +130,7 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); @@ -233,7 +233,7 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); @@ -335,7 +335,7 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); @@ -465,7 +465,7 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); @@ -625,7 +625,7 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); @@ -725,7 +725,7 @@ namespace pulse { namespace human_adult_whole_body pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); + pc.m_Config->UseExpandedKidneys(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); pc.CreateCircuitsAndCompartments(); EnvironmentModel& env = (EnvironmentModel&)pc.GetEnvironment(); diff --git a/src/cpp/engine/io/protobuf/PBConfiguration.cpp b/src/cpp/engine/io/protobuf/PBConfiguration.cpp index 78801e179..d4f2e5fd9 100644 --- a/src/cpp/engine/io/protobuf/PBConfiguration.cpp +++ b/src/cpp/engine/io/protobuf/PBConfiguration.cpp @@ -78,6 +78,8 @@ namespace pulse if (src.has_cardiovascularconfiguration()) { const PULSE_BIND::ConfigurationData_CardiovascularConfigurationData& config = src.cardiovascularconfiguration(); + if (config.computationallifeexpansion() != CDM_BIND::eSwitch::NullSwitch) + dst.UseComputationalLifeExpansion((eSwitch)config.computationallifeexpansion()); if (config.has_leftheartelastancemaximum()) PBProperty::Load(config.leftheartelastancemaximum(), dst.GetLeftHeartElastanceMaximum()); if (config.has_leftheartelastanceminimum()) @@ -90,8 +92,6 @@ namespace pulse PBProperty::Load(config.rightheartelastanceminimum(), dst.GetRightHeartElastanceMinimum()); if (config.has_standardpulmonarycapillarycoverage()) PBProperty::Load(config.standardpulmonarycapillarycoverage(), dst.GetStandardPulmonaryCapillaryCoverage()); - if (config.useexpandedvasculature() != CDM_BIND::eSwitch::NullSwitch) - dst.UseExpandedVasculature((eSwitch)config.useexpandedvasculature()); if (config.tunecardiovascularcircuit() != CDM_BIND::eSwitch::NullSwitch) dst.TuneCardiovascularCircuit((eSwitch)config.tunecardiovascularcircuit()); dst.CardiovascularTuningFile(config.cardiovasculartuningfile()); @@ -288,8 +288,8 @@ namespace pulse { const PULSE_BIND::ConfigurationData_RenalConfigurationData& config = src.renalconfiguration(); - if (config.enablerenal() != CDM_BIND::eSwitch::NullSwitch) - dst.EnableRenal((eSwitch)config.enablerenal()); + if (config.expandedkidneys() != CDM_BIND::eSwitch::NullSwitch) + dst.UseExpandedKidneys((eSwitch)config.expandedkidneys()); if (config.has_plasmasodiumconcentrationsetpoint()) PBProperty::Load(config.plasmasodiumconcentrationsetpoint(), dst.GetPlasmaSodiumConcentrationSetPoint()); @@ -327,6 +327,8 @@ namespace pulse if (src.has_respiratoryconfiguration()) { const PULSE_BIND::ConfigurationData_RespiratoryConfigurationData& config = src.respiratoryconfiguration(); + if (config.expandedlungs() != CDM_BIND::eSwitch::NullSwitch) + dst.UseExpandedLungs((eSwitch)config.expandedlungs()); if (config.has_centralcontrollerco2pressuresetpoint()) PBProperty::Load(config.centralcontrollerco2pressuresetpoint(), dst.GetCentralControllerCO2PressureSetPoint()); if (config.has_centralventilatorycontrollergain()) @@ -345,8 +347,6 @@ namespace pulse PBProperty::Load(config.ventilationtidalvolumeintercept(), dst.GetVentilationTidalVolumeIntercept()); if (config.has_ventilatoryocclusionpressure()) PBProperty::Load(config.ventilatoryocclusionpressure(), dst.GetVentilatoryOcclusionPressure()); - if (config.useexpandedrespiratory() != CDM_BIND::eSwitch::NullSwitch) - dst.UseExpandedRespiratory((eSwitch)config.useexpandedrespiratory()); } // Tissue @@ -402,6 +402,7 @@ namespace pulse // Cardiovascular PULSE_BIND::ConfigurationData_CardiovascularConfigurationData* cv = dst.mutable_cardiovascularconfiguration(); + cv->set_computationallifeexpansion((CDM_BIND::eSwitch)src.m_UseComputationalLifeExpansion); if (src.HasLeftHeartElastanceMaximum()) cv->set_allocated_leftheartelastancemaximum(PBProperty::Unload(*src.m_LeftHeartElastanceMaximum)); if (src.HasLeftHeartElastanceMinimum()) @@ -414,7 +415,6 @@ namespace pulse cv->set_allocated_rightheartelastanceminimum(PBProperty::Unload(*src.m_RightHeartElastanceMinimum)); if (src.HasStandardPulmonaryCapillaryCoverage()) cv->set_allocated_standardpulmonarycapillarycoverage(PBProperty::Unload(*src.m_StandardPulmonaryCapillaryCoverage)); - cv->set_useexpandedvasculature((CDM_BIND::eSwitch)src.m_UseExpandedVasculature); cv->set_tunecardiovascularcircuit((CDM_BIND::eSwitch)src.m_TuneCardiovascularCircuit); cv->set_cardiovasculartuningfile(src.m_CardiovascularTuningFile); @@ -554,7 +554,7 @@ namespace pulse // Renal PULSE_BIND::ConfigurationData_RenalConfigurationData* renal = dst.mutable_renalconfiguration(); - renal->set_enablerenal((CDM_BIND::eSwitch)src.m_RenalEnabled); + renal->set_expandedkidneys((CDM_BIND::eSwitch)src.m_UseExpandedKidneys); if (src.HasPlasmaSodiumConcentrationSetPoint()) renal->set_allocated_plasmasodiumconcentrationsetpoint(PBProperty::Unload(*src.m_PlasmaSodiumConcentrationSetPoint)); if (src.HasPeritubularPotassiumConcentrationSetPoint()) @@ -585,6 +585,7 @@ namespace pulse // Respiratory PULSE_BIND::ConfigurationData_RespiratoryConfigurationData* resp = dst.mutable_respiratoryconfiguration(); + resp->set_expandedlungs((CDM_BIND::eSwitch)src.m_UseExpandedLungs); if (src.HasCentralControllerCO2PressureSetPoint()) resp->set_allocated_centralcontrollerco2pressuresetpoint(PBProperty::Unload(*src.m_CentralControllerCO2PressureSetPoint)); if (src.HasCentralVentilatoryControllerGain()) @@ -603,7 +604,6 @@ namespace pulse resp->set_allocated_ventilationtidalvolumeintercept(PBProperty::Unload(*src.m_VentilationTidalVolumeIntercept)); if (src.HasVentilatoryOcclusionPressure()) resp->set_allocated_ventilatoryocclusionpressure(PBProperty::Unload(*src.m_VentilatoryOcclusionPressure)); - resp->set_useexpandedrespiratory((CDM_BIND::eSwitch)src.m_UseExpandedRespiratory); // Tissue PULSE_BIND::ConfigurationData_TissueConfigurationData* tissue = dst.mutable_tissueconfiguration(); diff --git a/src/cpp/howto/HowTo-ExpandedRespiratory.cpp b/src/cpp/howto/HowTo-ExpandedRespiratory.cpp index eab890f29..a3a5badd8 100644 --- a/src/cpp/howto/HowTo-ExpandedRespiratory.cpp +++ b/src/cpp/howto/HowTo-ExpandedRespiratory.cpp @@ -55,7 +55,7 @@ void HowToExpandedRespiratory() pe->GetLogger()->SetLogFile("./test_results/howto/HowTo_ExpandedRespiratory.log"); PulseConfiguration config; - config.UseExpandedRespiratory(eSwitch::On); + config.UseExpandedLungs(eSwitch::On); pe->SetConfigurationOverride(&config); pe->GetEngineTracker()->GetDataRequestManager().CreatePhysiologyDataRequest("HeartRate", FrequencyUnit::Per_min); @@ -152,7 +152,7 @@ void HowToExpandedRespiratoryAnalysisInitialState() pe->GetLogger()->SetLogFile("./test_results/howto/HowTo_ExpandedRespiratoryAnalysisInitialState.log"); PulseConfiguration config; - config.UseExpandedRespiratory(eSwitch::On); + config.UseExpandedLungs(eSwitch::On); pe->SetConfigurationOverride(&config); SEPatientConfiguration pc; @@ -207,7 +207,7 @@ void HowToExpandedRespiratoryAnalysisOriginal() pe->GetLogger()->SetLogFile("./test_results/howto/HowTo_ExpandedRespiratoryAnalysisOriginal.log"); PulseConfiguration config; - config.UseExpandedRespiratory(eSwitch::On); + config.UseExpandedLungs(eSwitch::On); pe->SetConfigurationOverride(&config); // Create an ofstream object for output file @@ -594,7 +594,7 @@ void HowToExpandedRespiratoryAnalysis() pe->GetLogger()->AddForward(&myLogger); PulseConfiguration config; - config.UseExpandedRespiratory(eSwitch::On); + config.UseExpandedLungs(eSwitch::On); pe->SetConfigurationOverride(&config); // Load the state to start fresh each run diff --git a/src/cpp/howto/HowTo-ExpandedVasculature.cpp b/src/cpp/howto/HowTo-ExpandedVasculature.cpp index 5a5c36b81..5dfa7bdf9 100644 --- a/src/cpp/howto/HowTo-ExpandedVasculature.cpp +++ b/src/cpp/howto/HowTo-ExpandedVasculature.cpp @@ -18,7 +18,7 @@ void HowToExpandedVasculature() pc.SetPatientFile("./patients/StandardMale.json"); PulseConfiguration config; - config.UseExpandedVasculature(eSwitch::On); + config.UseComputationalLifeExpansion(eSwitch::On); pe->SetConfigurationOverride(&config); pe->InitializeEngine(pc); diff --git a/src/cpp/test_driver/main.cpp b/src/cpp/test_driver/main.cpp index f2cda2e58..39f67c7d7 100644 --- a/src/cpp/test_driver/main.cpp +++ b/src/cpp/test_driver/main.cpp @@ -51,8 +51,11 @@ int main(int argc, char* argv[]) //hawbTest.CardiovascularAndRenalCircuitAndTransportTest(hawbDir); //hawbTest.CardiovascularAndTissueCircuitAndTransportTest(hawbDir); //hawbTest.CardiovascularAndCerebrospinalFluidCircuitAndTransportTest(hawbDir); + hawbTest.CardiovascularAndExpandedLungsCircuitAndTransportTest(hawbDir); //hawbTest.FullCardiovascularCircuitAndTransportTest(hawbDir); + hawbTest.FullExpandedLungsCardiovascularCircuitAndTransportTest(hawbDir); //hawbTest.CardiovascularBloodGasesTest(hawbDir); + hawbTest.CardiovascularExpandedLungsBloodGasesTest(hawbDir); //hawbTest.TuneCardiovascularCircuitTest(hawbDir); //hawbTest.RenalCircuitAndTransportTest(hawbDir); @@ -61,14 +64,19 @@ int main(int argc, char* argv[]) //hawbTest.RenalSecretionTest(hawbDir); //hawbTest.RenalUrinateTest(hawbDir); - //hawbTest.RespiratoryCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryDriverTest(hawbDir); + //hawbTest.RespiratoryCircuitAndTransportTest(hawbDir); + hawbTest.RespiratoryExpandedLungsCircuitAndTransportTest(hawbDir); //hawbTest.AnesthesiaMachineCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryWithAnesthesiaMachineCircuitAndTransportTest(hawbDir); + hawbTest.RespiratoryExpandedLungsWithAnesthesiaMachineCircuitAndTransportTest(hawbDir); //hawbTest.MechanicalVentilatorCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); + hawbTest.RespiratoryExpandedLungsWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryWithInhalerCircuitAndTransportTest(hawbDir); + hawbTest.RespiratoryExpandedLungsWithInhalerCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); + hawbTest.RespiratoryExpandedLungsWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); //hawbTest.InternalTemperatureVariableBMRCircuitTest(hawbDir); //hawbTest.InternalTemperatureVariableSkinCircuitTest(hawbDir); diff --git a/src/csharp/pulse/cdm/patient/actions/PrimaryBlastLungInjury.cs b/src/csharp/pulse/cdm/patient/actions/PrimaryBlastLungInjury.cs deleted file mode 100644 index 7c248dcf8..000000000 --- a/src/csharp/pulse/cdm/patient/actions/PrimaryBlastLungInjury.cs +++ /dev/null @@ -1,59 +0,0 @@ -/* Distributed under the Apache License, Version 2.0. - See accompanying NOTICE file for details.*/ - -using System.Collections; -using System.Collections.Generic; - -namespace Pulse.CDM -{ - using LungImpairmentMap = Dictionary; - public class SEPrimaryBlastLungInjury : SEPatientAction - { - protected LungImpairmentMap severities; - - public SEPrimaryBlastLungInjury() - { - severities = new LungImpairmentMap(); - } - - public override void Clear() - { - base.Clear(); - foreach (var itr in severities) - itr.Value.Invalidate(); - } - - public override bool IsValid() - { - return HasSeverity(); - } - - public bool HasSeverity() - { - foreach (var itr in severities) - if (itr.Value.IsValid()) - return true; - return false; - } - public bool HasSeverity(eLungCompartment c) - { - if (!severities.ContainsKey(c)) - return false; - return severities[c].IsValid(); - } - public SEScalar0To1 GetSeverity(eLungCompartment c) - { - SEScalar0To1 s = severities[c]; - if(s == null) - { - s = new SEScalar0To1(); - severities[c] = s; - } - return s; - } - public LungImpairmentMap GetSeverities() - { - return severities; - } - } -} diff --git a/src/schema/pulse/engine/bind/Configuration.proto b/src/schema/pulse/engine/bind/Configuration.proto index 00ef44fa2..917953200 100644 --- a/src/schema/pulse/engine/bind/Configuration.proto +++ b/src/schema/pulse/engine/bind/Configuration.proto @@ -24,28 +24,28 @@ message ConfigurationData message CardiovascularConfigurationData { - pulse.cdm.bind.ScalarPressurePerVolumeData LeftHeartElastanceMaximum = 1; - pulse.cdm.bind.ScalarPressurePerVolumeData LeftHeartElastanceMinimum = 2; - pulse.cdm.bind.Scalar0To1Data MinimumBloodVolumeFraction = 3; - pulse.cdm.bind.ScalarPressurePerVolumeData RightHeartElastanceMaximum = 4; - pulse.cdm.bind.ScalarPressurePerVolumeData RightHeartElastanceMinimum = 5; - pulse.cdm.bind.ScalarData StandardPulmonaryCapillaryCoverage = 6; - pulse.cdm.bind.eSwitch UseExpandedVasculature = 7; + pulse.cdm.bind.eSwitch ComputationalLifeExpansion = 1; + pulse.cdm.bind.ScalarPressurePerVolumeData LeftHeartElastanceMaximum = 2; + pulse.cdm.bind.ScalarPressurePerVolumeData LeftHeartElastanceMinimum = 3; + pulse.cdm.bind.Scalar0To1Data MinimumBloodVolumeFraction = 4; + pulse.cdm.bind.ScalarPressurePerVolumeData RightHeartElastanceMaximum = 5; + pulse.cdm.bind.ScalarPressurePerVolumeData RightHeartElastanceMinimum = 6; + pulse.cdm.bind.ScalarData StandardPulmonaryCapillaryCoverage = 7; pulse.cdm.bind.eSwitch TuneCardiovascularCircuit = 8; string CardiovascularTuningFile = 9; } message CircuitConfigurationData { - pulse.cdm.bind.ScalarPressureTimePerVolumeData CardiovascularOpenResistance = 1;; - pulse.cdm.bind.ScalarElectricResistanceData DefaultClosedElectricResistance = 2;; - pulse.cdm.bind.ScalarElectricResistanceData DefaultOpenElectricResistance = 3;; - pulse.cdm.bind.ScalarPressureTimePerVolumeData DefaultClosedFlowResistance = 4;; - pulse.cdm.bind.ScalarPressureTimePerVolumeData DefaultOpenFlowResistance = 5;; - pulse.cdm.bind.ScalarHeatResistanceData DefaultClosedHeatResistance = 6;; - pulse.cdm.bind.ScalarHeatResistanceData DefaultOpenHeatResistance = 7;; - pulse.cdm.bind.ScalarPressureTimePerVolumeData MachineClosedResistance = 8;; - pulse.cdm.bind.ScalarPressureTimePerVolumeData MachineOpenResistance = 9;; + pulse.cdm.bind.ScalarPressureTimePerVolumeData CardiovascularOpenResistance = 1; + pulse.cdm.bind.ScalarElectricResistanceData DefaultClosedElectricResistance = 2; + pulse.cdm.bind.ScalarElectricResistanceData DefaultOpenElectricResistance = 3; + pulse.cdm.bind.ScalarPressureTimePerVolumeData DefaultClosedFlowResistance = 4; + pulse.cdm.bind.ScalarPressureTimePerVolumeData DefaultOpenFlowResistance = 5; + pulse.cdm.bind.ScalarHeatResistanceData DefaultClosedHeatResistance = 6; + pulse.cdm.bind.ScalarHeatResistanceData DefaultOpenHeatResistance = 7; + pulse.cdm.bind.ScalarPressureTimePerVolumeData MachineClosedResistance = 8; + pulse.cdm.bind.ScalarPressureTimePerVolumeData MachineOpenResistance = 9; pulse.cdm.bind.ScalarPressureTimePerVolumeData RespiratoryClosedResistance = 10; pulse.cdm.bind.ScalarPressureTimePerVolumeData RespiratoryOpenResistance = 11; } @@ -140,7 +140,7 @@ message ConfigurationData message RenalConfigurationData { - pulse.cdm.bind.eSwitch EnableRenal = 1; + pulse.cdm.bind.eSwitch ExpandedKidneys = 1; pulse.cdm.bind.ScalarMassPerVolumeData PlasmaSodiumConcentrationSetPoint = 2; pulse.cdm.bind.ScalarMassPerVolumeData PeritubularPotassiumConcentrationSetPoint = 3; @@ -163,16 +163,16 @@ message ConfigurationData message RespiratoryConfigurationData { - pulse.cdm.bind.ScalarPressureData CentralControllerCO2PressureSetPoint = 1; - pulse.cdm.bind.ScalarData CentralVentilatoryControllerGain = 2; - pulse.cdm.bind.ScalarVolumeData MinimumAllowableTidalVolume = 3; - pulse.cdm.bind.ScalarTimeData MinimumAllowableInspiratoryAndExpiratoryPeriod = 4; - pulse.cdm.bind.ScalarPressureData PeripheralControllerCO2PressureSetPoint = 5; - pulse.cdm.bind.ScalarData PeripheralVentilatoryControllerGain = 6; - pulse.cdm.bind.ScalarVolumePerTimeData PulmonaryVentilationRateMaximum = 7; - pulse.cdm.bind.ScalarVolumeData VentilationTidalVolumeIntercept = 8; - pulse.cdm.bind.ScalarPressureData VentilatoryOcclusionPressure = 9; - pulse.cdm.bind.eSwitch UseExpandedRespiratory = 10; + pulse.cdm.bind.eSwitch ExpandedLungs = 1; + pulse.cdm.bind.ScalarPressureData CentralControllerCO2PressureSetPoint = 2; + pulse.cdm.bind.ScalarData CentralVentilatoryControllerGain = 3; + pulse.cdm.bind.ScalarVolumeData MinimumAllowableTidalVolume = 4; + pulse.cdm.bind.ScalarTimeData MinimumAllowableInspiratoryAndExpiratoryPeriod = 5; + pulse.cdm.bind.ScalarPressureData PeripheralControllerCO2PressureSetPoint = 6; + pulse.cdm.bind.ScalarData PeripheralVentilatoryControllerGain = 7; + pulse.cdm.bind.ScalarVolumePerTimeData PulmonaryVentilationRateMaximum = 8; + pulse.cdm.bind.ScalarVolumeData VentilationTidalVolumeIntercept = 9; + pulse.cdm.bind.ScalarPressureData VentilatoryOcclusionPressure = 10; } message TissueConfigurationData @@ -189,22 +189,20 @@ message ConfigurationData pulse.cdm.bind.TimedStabilizationData TimedStabilization = 4;/**<< @brief */ pulse.cdm.bind.DynamicStabilizationData DynamicStabilization = 5;/**<< @brief */ } - pulse.cdm.bind.eSwitch WritePatientBaselineFile = 6;/**<< @brief Inform execution to write out patient object after all patient values are computed. */ - string PatientBaselineFilePath = 7;/**<< @brief Optional filepath of the original patient file to write, if not it will be written to ./stable */ - BloodChemistryConfigurationData BloodChemistryConfiguration = 8; - CardiovascularConfigurationData CardiovascularConfiguration = 9; - CircuitConfigurationData CircuitConfiguration = 10; - ConstantsConfigurationData ConstantsConfiguration = 11; - DrugsConfigurationData DrugsConfiguration = 12; - ECGConfigurationData ECGConfiguration = 13; - EnergyConfigurationData EnergyConfiguration = 14; - EnvironmentConfigurationData EnvironmentConfiguration = 15; - GastrointestinalConfigurationData GastrointestinalConfiguration = 16; - NervousConfigurationData NervousConfiguration = 17; - RenalConfigurationData RenalConfiguration = 18; - RespiratoryConfigurationData RespiratoryConfiguration = 19; - TissueConfigurationData TissueConfiguration = 20; - map Modifiers = 21; - map Overrides = 22; + BloodChemistryConfigurationData BloodChemistryConfiguration = 6; + CardiovascularConfigurationData CardiovascularConfiguration = 7; + CircuitConfigurationData CircuitConfiguration = 8; + ConstantsConfigurationData ConstantsConfiguration = 9; + DrugsConfigurationData DrugsConfiguration = 10; + ECGConfigurationData ECGConfiguration = 11; + EnergyConfigurationData EnergyConfiguration = 12; + EnvironmentConfigurationData EnvironmentConfiguration = 13; + GastrointestinalConfigurationData GastrointestinalConfiguration = 14; + NervousConfigurationData NervousConfiguration = 15; + RenalConfigurationData RenalConfiguration = 16; + RespiratoryConfigurationData RespiratoryConfiguration = 17; + TissueConfigurationData TissueConfiguration = 18; + map Modifiers = 19; + map Overrides = 20; } \ No newline at end of file -- GitLab From f396a04666cdb36fc51f25d268ee8c2c12306ae4 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Wed, 4 Dec 2024 21:48:33 -0500 Subject: [PATCH 19/35] Convert 2 scenarios to run as ExpandedLungs with new data requests --- .../scenarios/ExpandedLungsDataRequests.json | 114 ++++++++++++ .../HeterogeneousARDSExacerbation.json | 172 ++++++++--------- .../patient/PrimaryBlastLungInjury.json | 173 +++++++++--------- .../common/controller/CompartmentManager.cpp | 9 + 4 files changed, 302 insertions(+), 166 deletions(-) create mode 100644 data/human/adult/scenarios/ExpandedLungsDataRequests.json diff --git a/data/human/adult/scenarios/ExpandedLungsDataRequests.json b/data/human/adult/scenarios/ExpandedLungsDataRequests.json new file mode 100644 index 000000000..898bb5986 --- /dev/null +++ b/data/human/adult/scenarios/ExpandedLungsDataRequests.json @@ -0,0 +1,114 @@ +{ + "DataRequest": + [ + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightSuperiorLobeApicalAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightSuperiorLobeApicalAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightSuperiorLobeApicalAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightSuperiorLobeApicalPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightSuperiorLobeApicalPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightSuperiorLobePosteriorAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightSuperiorLobePosteriorAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightSuperiorLobePosteriorAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightSuperiorLobePosteriorPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightSuperiorLobePosteriorPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightSuperiorLobeAnteriorAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightSuperiorLobeAnteriorAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightSuperiorLobeAnteriorAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightSuperiorLobeAnteriorPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightSuperiorLobeAnteriorPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightMiddleLobeLateralAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightMiddleLobeLateralAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightMiddleLobeLateralAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightMiddleLobeLateralPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightMiddleLobeLateralPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightMiddleLobeMedialAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightMiddleLobeMedialAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightMiddleLobeMedialAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightMiddleLobeMedialPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightMiddleLobeMedialPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobeSuperiorAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobeSuperiorAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobeSuperiorAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightInferiorLobeSuperiorPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightInferiorLobeSuperiorPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobeMedialBasalAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobeMedialBasalAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobeMedialBasalAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightInferiorLobeMedialBasalPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightInferiorLobeMedialBasalPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobeAnteriorBasalAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobeAnteriorBasalAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobeAnteriorBasalAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightInferiorLobeAnteriorBasalPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightInferiorLobeAnteriorBasalPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobeLateralBasalAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobeLateralBasalAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobeLateralBasalAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightInferiorLobeLateralBasalPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightInferiorLobeLateralBasalPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobePosteriorBasalAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobePosteriorBasalAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "RightInferiorLobePosteriorBasalAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightInferiorLobePosteriorBasalPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "RightInferiorLobePosteriorBasalPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftInferiorLobePosteriorBasalAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftInferiorLobePosteriorBasalAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftInferiorLobePosteriorBasalAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftInferiorLobePosteriorBasalPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftInferiorLobePosteriorBasalPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftInferiorLobeLateralBasalAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftInferiorLobeLateralBasalAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftInferiorLobeLateralBasalAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftInferiorLobeLateralBasalPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftInferiorLobeLateralBasalPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftInferiorLobeAnteromedialBasalAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftInferiorLobeAnteromedialBasalAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftInferiorLobeAnteromedialBasalAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftInferiorLobeSuperiorAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftInferiorLobeSuperiorAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftInferiorLobeSuperiorAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftInferiorLobeSuperiorPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftInferiorLobeSuperiorPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftSuperiorLobeInferiorLingulaAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftSuperiorLobeInferiorLingulaAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftSuperiorLobeInferiorLingulaAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftSuperiorLobeSuperiorLingulaAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftSuperiorLobeSuperiorLingulaAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftSuperiorLobeSuperiorLingulaAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftSuperiorLobeAnteriorAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftSuperiorLobeAnteriorAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftSuperiorLobeAnteriorAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftSuperiorLobeAnteriorPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftSuperiorLobeAnteriorPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftSuperiorLobeApicoposteriorAlveoli", "PropertyName": "Volume", "Unit": "mL" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftSuperiorLobeApicoposteriorAlveoli", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "GasCompartment", "CompartmentName": "LeftSuperiorLobeApicoposteriorAlveoli", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftSuperiorLobeApicoposteriorPulmonaryCapillaries", "SubstanceName": "Oxygen", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + { "DecimalFormat": { "Precision": 1 }, "Category": "LiquidCompartment", "CompartmentName": "LeftSuperiorLobeApicoposteriorPulmonaryCapillaries", "SubstanceName": "CarbonDioxide", "PropertyName": "PartialPressure", "Unit": "mmHg" }, + + + ] +} diff --git a/data/human/adult/scenarios/patient/HeterogeneousARDSExacerbation.json b/data/human/adult/scenarios/patient/HeterogeneousARDSExacerbation.json index b11d78ca8..254c4dad3 100644 --- a/data/human/adult/scenarios/patient/HeterogeneousARDSExacerbation.json +++ b/data/human/adult/scenarios/patient/HeterogeneousARDSExacerbation.json @@ -1,85 +1,91 @@ { - "Name": "HeterogeneousARDSExacerbation", - "Description": "Increasing severities of ARDS.", - "PatientConfiguration": { "PatientFile": "StandardMale.json" }, - "DataRequestFile": [ - "StandardDataRequests.json", - "RespiratoryDataRequests.json" - ], - "AnyAction": - [ - { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 2.0, "Unit": "min" }}}}, - { "PatientAction": { "AcuteRespiratoryDistressSyndromeExacerbation": - { - "Severity": [ - { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}] - }} - }, - { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}}, - { "PatientAction": { "AcuteRespiratoryDistressSyndromeExacerbation": - { - "Severity": [ - { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}] - }} - }, - { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}}, - { "PatientAction": { "AcuteRespiratoryDistressSyndromeExacerbation": - { - "Severity": [ - { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}] - }} - }, - { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}} - ] + "Configuration": { + "RespiratoryConfiguration" : { "ExpandedLungs" : "On" } + }, + "Scenario": { + "Name": "HeterogeneousARDSExacerbation", + "Description": "Increasing severities of ARDS.", + "PatientConfiguration": { "PatientFile": "StandardMale.json" }, + "DataRequestFile": [ + "StandardDataRequests.json", + "RespiratoryDataRequests.json", + "ExpandedLungsDataRequests.json" + ], + "AnyAction": + [ + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 2.0, "Unit": "min" }}}}, + { "PatientAction": { "AcuteRespiratoryDistressSyndromeExacerbation": + { + "Severity": [ + { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}] + }} + }, + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}}, + { "PatientAction": { "AcuteRespiratoryDistressSyndromeExacerbation": + { + "Severity": [ + { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}] + }} + }, + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}}, + { "PatientAction": { "AcuteRespiratoryDistressSyndromeExacerbation": + { + "Severity": [ + { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}] + }} + }, + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}} + ] + } } diff --git a/data/human/adult/scenarios/patient/PrimaryBlastLungInjury.json b/data/human/adult/scenarios/patient/PrimaryBlastLungInjury.json index 3283e87af..8ad86048d 100644 --- a/data/human/adult/scenarios/patient/PrimaryBlastLungInjury.json +++ b/data/human/adult/scenarios/patient/PrimaryBlastLungInjury.json @@ -1,85 +1,92 @@ { - "Name": "PrimaryBlastLungInjury", - "Description": "Increasing severities of ARDS.", - "PatientConfiguration": { "PatientFile": "StandardMale.json" }, - "DataRequestFile": [ - "StandardDataRequests.json", - "RespiratoryDataRequests.json" - ], - "AnyAction": - [ - { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 2.0, "Unit": "min" }}}}, - { "PatientAction": { "PrimaryBlastLungInjury": - { - "Severity": [ - { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, - { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}] - }} - }, - { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}}, - { "PatientAction": { "PrimaryBlastLungInjury": - { - "Severity": [ - { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, - { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}] - }} - }, - { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}}, - { "PatientAction": { "PrimaryBlastLungInjury": - { - "Severity": [ - { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, - { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}] - }} - }, - { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 10.0, "Unit": "min" }}}} - ] + "Configuration": { + "RespiratoryConfiguration" : { "ExpandedLungs" : "On" } + }, + "Scenario": + { + "Name": "PrimaryBlastLungInjury", + "Description": "Increasing severities of ARDS.", + "PatientConfiguration": { "PatientFile": "StandardMale.json" }, + "DataRequestFile": [ + "StandardDataRequests.json", + "RespiratoryDataRequests.json", + "ExpandedLungsDataRequests.json" + ], + "AnyAction": + [ + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 2.0, "Unit": "min" }}}}, + { "PatientAction": { "PrimaryBlastLungInjury": + { + "Severity": [ + { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}, + { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.3 }}}] + }} + }, + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}}, + { "PatientAction": { "PrimaryBlastLungInjury": + { + "Severity": [ + { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}, + { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.6 }}}] + }} + }, + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 5.0, "Unit": "min" }}}}, + { "PatientAction": { "PrimaryBlastLungInjury": + { + "Severity": [ + { "Compartment": "RightSuperiorLobeApical", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightSuperiorLobePosterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightMiddleLobeLateral", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightMiddleLobeMedial", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeMedialBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeAnteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "RightInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobePosteriorBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobeLateralBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobeAnteromedialBasal", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftInferiorLobeSuperior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeInferiorLingula", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeSuperiorLingula", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeAnterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}, + { "Compartment": "LeftSuperiorLobeApicoposterior", "Severity": { "Scalar0To1": { "Value": 0.9 }}}] + }} + }, + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 10.0, "Unit": "min" }}}} + ] + } } diff --git a/src/cpp/engine/common/controller/CompartmentManager.cpp b/src/cpp/engine/common/controller/CompartmentManager.cpp index 51edeea28..2ca903f69 100644 --- a/src/cpp/engine/common/controller/CompartmentManager.cpp +++ b/src/cpp/engine/common/controller/CompartmentManager.cpp @@ -167,6 +167,9 @@ for (const std::string& name : pulse::bin##Compartment::GetValues()) \ if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::On) { SORT_CMPTS(ExpandedLungsPulmonary, Gas); + // Add Expanded Leafs to Pulmonary Leafs + for (SEGasCompartment* leaf : m_ExpandedLungsPulmonaryLeafCompartments) + m_PulmonaryLeafCompartments.push_back(leaf); } SORT_CMPTS(Temperature, Thermal); if (m_data.GetConfiguration().IsTissueEnabled()) @@ -187,10 +190,16 @@ for (const std::string& name : pulse::bin##Compartment::GetValues()) \ if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::On) { SORT_CMPTS(ExpandedLungsVascular, Liquid); + // Add Expanded Leafs to Vascular Leafs + for (SELiquidCompartment* leaf : m_ExpandedLungsVascularLeafCompartments) + m_VascularLeafCompartments.push_back(leaf); } else if (m_data.GetConfiguration().UseComputationalLifeExpansion() == eSwitch::On) { SORT_CMPTS(ComputationalLifeVascular, Liquid); + // Add Expanded Leafs to Vascular Leafs + for (SELiquidCompartment* leaf : m_ComputationalLifeVascularLeafCompartments) + m_VascularLeafCompartments.push_back(leaf); } // Equipment -- GitLab From 9c84061fb4ff99657f7e776e00a5458646ece22e Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Thu, 5 Dec 2024 11:05:37 -0500 Subject: [PATCH 20/35] Rebase results running expanded lungs --- .../scenarios/patient/HeterogeneousARDSExacerbation.zip.sha512 | 1 + .../scenarios/patient/PrimaryBlastLungInjury.zip.sha512 | 1 + 2 files changed, 2 insertions(+) create mode 100644 data/human/adult/baselines/scenarios/patient/HeterogeneousARDSExacerbation.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/patient/PrimaryBlastLungInjury.zip.sha512 diff --git a/data/human/adult/baselines/scenarios/patient/HeterogeneousARDSExacerbation.zip.sha512 b/data/human/adult/baselines/scenarios/patient/HeterogeneousARDSExacerbation.zip.sha512 new file mode 100644 index 000000000..422c4831e --- /dev/null +++ b/data/human/adult/baselines/scenarios/patient/HeterogeneousARDSExacerbation.zip.sha512 @@ -0,0 +1 @@ +6c0bc42e7b22835b18fa2f50e9799951598c01c6ca43b2098ffaa956f62a281707cfaf4592e7f2fe72c674459a8d59e5400dcfa6a2680e7f89875200b0a6ad50 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/patient/PrimaryBlastLungInjury.zip.sha512 b/data/human/adult/baselines/scenarios/patient/PrimaryBlastLungInjury.zip.sha512 new file mode 100644 index 000000000..aa99653b3 --- /dev/null +++ b/data/human/adult/baselines/scenarios/patient/PrimaryBlastLungInjury.zip.sha512 @@ -0,0 +1 @@ +01047395fcf30e7c8b39891a61fd711b243df76dbb436426e878ddc51a23cd92003b83fae45360c6778b00927d033a789bc90775cb31e1bfbced451937af3db8 \ No newline at end of file -- GitLab From e57c9167d0d33c5c4f4b3df57d7a168c2a55d6ac Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Thu, 5 Dec 2024 11:48:01 -0500 Subject: [PATCH 21/35] =?UTF-8?q?=EF=BB=BFFix=20system=20validation=20for?= =?UTF-8?q?=20expanded=20lungs=20Currently=20still=20only=20validating=20t?= =?UTF-8?q?he=20standard=20engine=20configuration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/timeseries_dataset_reader.py | 52 ++++++++++++------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/src/python/pulse/pipelines/dataset/timeseries_dataset_reader.py b/src/python/pulse/pipelines/dataset/timeseries_dataset_reader.py index 3c65ad67f..2fa600f54 100644 --- a/src/python/pulse/pipelines/dataset/timeseries_dataset_reader.py +++ b/src/python/pulse/pipelines/dataset/timeseries_dataset_reader.py @@ -7,6 +7,7 @@ import logging import numbers import tempfile import numpy as np +from enum import Enum from pathlib import Path from pycel import ExcelCompiler from dataclasses import dataclass @@ -29,6 +30,12 @@ from pulse.pipelines.dataset.utils import generate_data_request _pulse_logger = logging.getLogger('pulse') +class EngineConfig(Enum): + Standard = 1 + ExpandedLungs = 3 + ComputationalLife = 2 + + def gen_patient_targets( log_file: Path ) -> SEPatientTimeSeriesValidation: @@ -154,6 +161,7 @@ def gen_patient_targets( xls_file = Path(get_validation_dir() + "/SystemValidationData.xlsx") generate_validation_targets( xls_file=xls_file, + config=EngineConfig.Standard, patient_validation=patient_validation ) return patient_validation @@ -184,6 +192,7 @@ def extract_patient(patient_file: Path) -> SEPatient: def generate_validation_targets( xls_file: Path, + config: EngineConfig, patient_validation: SEPatientTimeSeriesValidation ) -> bool: """ @@ -211,7 +220,11 @@ def generate_validation_targets( tmp_xls_path = Path('./tmp.xlsx') # xlsx sheets to skip when generating targets and requests - ignore_sheets = ["Patient", "CardiovascularExtended"] + ignore_sheets = ["Patient"] + if config == EngineConfig.Standard: + ignore_sheets.append("CardiovascularExpandedLungs") + ignore_sheets.append("RespiratoryExpandedLungs") + ignore_sheets.append("CardiovascularComputationalLife") try: # Update patient sheet so formulas can be re-evaluated with correct parameters @@ -464,23 +477,26 @@ def generate_sheet_targets( vts = targets[vtb.tgt_dest] # Evaluate cells if needed - ref_val = vtb.ref_cell - if isinstance(ref_val, str) and ref_val.startswith("="): - if ref_val.startswith("="): - cell_loc = f"{system}!{get_column_letter(VTB_REF_CELL + 1)}{row_num + 2}" - ref_val = evaluator.evaluate(cell_loc) - unit_str = vtb.units.strip() - if unit_str.startswith("="): - cell_loc = f"{system}!{get_column_letter(VTB_UNITS + 1)}{row_num + 2}" - unit_str = evaluator.evaluate(cell_loc) - ref_str = vtb.references - if ref_str.startswith("="): - cell_loc = f"{system}!{get_column_letter(VTB_REFS + 1)}{row_num + 2}" - ref_str = evaluator.evaluate(cell_loc) - algo = vtb.algorithm - if algo.startswith("="): - cell_loc = f"{system}!{get_column_letter(VTB_ALGO + 1)}{row_num + 2}" - algo = evaluator.evaluate(cell_loc) + try: + ref_val = vtb.ref_cell + if isinstance(ref_val, str) and ref_val.startswith("="): + if ref_val.startswith("="): + cell_loc = f"{system}!{get_column_letter(VTB_REF_CELL + 1)}{row_num + 2}" + ref_val = evaluator.evaluate(cell_loc) + unit_str = vtb.units.strip() + if unit_str.startswith("="): + cell_loc = f"{system}!{get_column_letter(VTB_UNITS + 1)}{row_num + 2}" + unit_str = evaluator.evaluate(cell_loc) + ref_str = vtb.references + if ref_str.startswith("="): + cell_loc = f"{system}!{get_column_letter(VTB_REFS + 1)}{row_num + 2}" + ref_str = evaluator.evaluate(cell_loc) + algo = vtb.algorithm + if algo.startswith("="): + cell_loc = f"{system}!{get_column_letter(VTB_ALGO + 1)}{row_num + 2}" + algo = evaluator.evaluate(cell_loc) + except: + _pulse_logger.fatal(f"Cannot evaluate: {cell_loc}") tgt = SETimeSeriesValidationTarget() tgt.set_reference(ref_str) -- GitLab From 99775556f91bec138de49e1eb827f104decb2a01 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Tue, 10 Dec 2024 23:13:19 -0500 Subject: [PATCH 22/35] =?UTF-8?q?=EF=BB=BFClean=20up=20V&V=20reporting=20a?= =?UTF-8?q?=20bit=20-=20List=20missing=20reports=20instead=20of=20crashing?= =?UTF-8?q?s=20-=20Sync=20code=20to=20new=20filenames=20-=20Add=20details?= =?UTF-8?q?=20sorting=20to=20patient=20validation=20tables?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/python/pulse/pipelines/full_html_report.py | 7 +++++-- src/python/pulse/pipelines/patient_validation.py | 11 ++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/python/pulse/pipelines/full_html_report.py b/src/python/pulse/pipelines/full_html_report.py index f4d07df5c..0961f4aab 100644 --- a/src/python/pulse/pipelines/full_html_report.py +++ b/src/python/pulse/pipelines/full_html_report.py @@ -18,8 +18,8 @@ if __name__ == "__main__": reports.append(Path("./test_results/EngineUnitTests.html")) reports.append(Path("./test_results/ScenarioVerification.html")) reports.append(Path("./test_results/DrugPKVerification.html")) - reports.append(Path("./test_results/PatientVerification.html")) - reports.append(Path("./test_results/PatientValidation.html")) + reports.append(Path("./test_results/PatientSystemVerification.html")) + reports.append(Path("./test_results/PatientSystemValidation.html")) html_file = "./test_results/PulseTestReport.html" _pulse_logger.info(f"Writing {html_file}") @@ -28,6 +28,9 @@ if __name__ == "__main__": f.write("\n") for report in reports: f.writelines("
\n") + if not report.exists(): + f.write(f"Missing Report: {str(report)}") + continue with open(report) as file: while line := file.readline(): line = line.replace("", "") diff --git a/src/python/pulse/pipelines/patient_validation.py b/src/python/pulse/pipelines/patient_validation.py index a70e6bec8..a838eaa6e 100644 --- a/src/python/pulse/pipelines/patient_validation.py +++ b/src/python/pulse/pipelines/patient_validation.py @@ -273,13 +273,16 @@ def main(): [idx for idx, tgt in enumerate(all_validation) if tgt.get_patient().get_name() == "StandardFemale"][0])) all_validation.insert(0, all_validation.pop( [idx for idx, tgt in enumerate(all_validation) if tgt.get_patient().get_name() == "StandardMale"][0])) - html_file = "./test_results/PatientValidation.html" + html_file = "./test_results/PatientSystemValidation.html" _pulse_logger.info(f"Writing {html_file}") f = open(html_file, "w") f.write("\n") - f.writelines("\n") - f.write("

Patient Validation

\n") + f.write("\n") + f.write("
\n") + f.write("Patient Validation\n") for validation in all_validation: + f.write("
\n") + f.write(f"{validation.get_patient().get_name()}

\n") f.write("
\n") for type, tgts in validation.get_targets().items(): f.writelines("\n") @@ -305,6 +308,8 @@ def main(): f.write(f"") f.write("\n") f.write("
{format_float(tgt.get_error_value())}%" + tgt.get_notes() + "

\n") + f.write("

\n") # End patient details + f.write("

\n") # End header details f.write("\n") f.write("\n") f.close() -- GitLab From 706ab4dc5d9f1d60ab20b2c8b524aeff4aa2cee3 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Sat, 4 Jan 2025 14:08:04 -0500 Subject: [PATCH 23/35] =?UTF-8?q?=EF=BB=BFClean=20up=20exposed=20model=20p?= =?UTF-8?q?arameter=20in=20respiratory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/physiology/RespiratoryModel.cpp | 57 ++++++++++--------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp index 75475cfec..1e19f3cb7 100644 --- a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp +++ b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp @@ -978,40 +978,43 @@ namespace pulse } //Update system data CalculateVitalSigns(); - - if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) - { - //TODO: Make this work for the expanded model - ComputeExposedModelParameters(); - } + ComputeExposedModelParameters(); } void RespiratoryModel::ComputeExposedModelParameters() { - double leftChestWallCompliance_L_Per_cmH2O = m_LeftPleuralToRespiratoryMuscle->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O); - double rightChestWallCompliance_L_Per_cmH2O = m_RightPleuralToRespiratoryMuscle->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O); - double leftLungCompliance_L_Per_cmH2O = m_LeftAlveoliToLeftPleuralConnection->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O); - double rightLungCompliance_L_Per_cmH2O = m_RightAlveoliToRightPleuralConnection->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O); - double leftSideCompliance_L_Per_cmH2O = 1.0 / (1.0 / leftChestWallCompliance_L_Per_cmH2O + 1.0 / leftLungCompliance_L_Per_cmH2O); - double rightSideCompliance_L_Per_cmH2O = 1.0 / (1.0 / rightChestWallCompliance_L_Per_cmH2O + 1.0 / rightLungCompliance_L_Per_cmH2O); - double totalCompliance_L_Per_cmH2O = leftSideCompliance_L_Per_cmH2O + rightSideCompliance_L_Per_cmH2O; - GetTotalRespiratoryModelCompliance().SetValue(totalCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); - - double airwayResistance_cmH2O_s_Per_L = m_PharynxToCarina->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); - double leftBronchiResistance_cmH2O_s_Per_L = m_CarinaToLeftAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); - double rightBronchiResistance_cmH2O_s_Per_L = m_CarinaToRightAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); - double leftAlveoliDuctResistance_cmH2O_s_Per_L = m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); - double rightAlveoliDuctResistance_cmH2O_s_Per_L = m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); - double leftSideResistance_cmH2O_s_Per_L = leftBronchiResistance_cmH2O_s_Per_L + leftAlveoliDuctResistance_cmH2O_s_Per_L; - double rightSideResistance_cmH2O_s_Per_L = rightBronchiResistance_cmH2O_s_Per_L + rightAlveoliDuctResistance_cmH2O_s_Per_L; - double totalDownstreamResistance_cmH2O_s_Per_L = 1.0 / (1.0 / leftSideResistance_cmH2O_s_Per_L + 1.0 / rightSideResistance_cmH2O_s_Per_L); - double totalResistance_cmH2O_s_Per_L = airwayResistance_cmH2O_s_Per_L + totalDownstreamResistance_cmH2O_s_Per_L; - if (m_PharynxToCarina->GetFlow(VolumePerTimeUnit::L_Per_s) > 0.0) + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) { - GetTotalRespiratoryModelInspiratoryResistance().SetValue(totalResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + double leftChestWallCompliance_L_Per_cmH2O = m_LeftPleuralToRespiratoryMuscle->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O); + double rightChestWallCompliance_L_Per_cmH2O = m_RightPleuralToRespiratoryMuscle->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O); + double leftLungCompliance_L_Per_cmH2O = m_LeftAlveoliToLeftPleuralConnection->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O); + double rightLungCompliance_L_Per_cmH2O = m_RightAlveoliToRightPleuralConnection->GetNextCompliance(VolumePerPressureUnit::L_Per_cmH2O); + double leftSideCompliance_L_Per_cmH2O = 1.0 / (1.0 / leftChestWallCompliance_L_Per_cmH2O + 1.0 / leftLungCompliance_L_Per_cmH2O); + double rightSideCompliance_L_Per_cmH2O = 1.0 / (1.0 / rightChestWallCompliance_L_Per_cmH2O + 1.0 / rightLungCompliance_L_Per_cmH2O); + double totalCompliance_L_Per_cmH2O = leftSideCompliance_L_Per_cmH2O + rightSideCompliance_L_Per_cmH2O; + GetTotalRespiratoryModelCompliance().SetValue(totalCompliance_L_Per_cmH2O, VolumePerPressureUnit::L_Per_cmH2O); + + double airwayResistance_cmH2O_s_Per_L = m_PharynxToCarina->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); + double leftBronchiResistance_cmH2O_s_Per_L = m_CarinaToLeftAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); + double rightBronchiResistance_cmH2O_s_Per_L = m_CarinaToRightAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); + double leftAlveoliDuctResistance_cmH2O_s_Per_L = m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); + double rightAlveoliDuctResistance_cmH2O_s_Per_L = m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); + double leftSideResistance_cmH2O_s_Per_L = leftBronchiResistance_cmH2O_s_Per_L + leftAlveoliDuctResistance_cmH2O_s_Per_L; + double rightSideResistance_cmH2O_s_Per_L = rightBronchiResistance_cmH2O_s_Per_L + rightAlveoliDuctResistance_cmH2O_s_Per_L; + double totalDownstreamResistance_cmH2O_s_Per_L = 1.0 / (1.0 / leftSideResistance_cmH2O_s_Per_L + 1.0 / rightSideResistance_cmH2O_s_Per_L); + double totalResistance_cmH2O_s_Per_L = airwayResistance_cmH2O_s_Per_L + totalDownstreamResistance_cmH2O_s_Per_L; + if (m_PharynxToCarina->GetFlow(VolumePerTimeUnit::L_Per_s) > 0.0) + { + GetTotalRespiratoryModelInspiratoryResistance().SetValue(totalResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + } + else + { + GetTotalRespiratoryModelExpiratoryResistance().SetValue(totalResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + } } else { - GetTotalRespiratoryModelExpiratoryResistance().SetValue(totalResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + // TODO Compute TotalRespiratoryModelCompliance on the expanded lungs + // TODO Compute TotalRespiratoryModelResistance on the expanded lungs } } -- GitLab From 566ebddccf450f3d2610a665a85d40b729bf0956 Mon Sep 17 00:00:00 2001 From: JeffWebb6 Date: Mon, 20 Jan 2025 08:43:07 -0500 Subject: [PATCH 24/35] Update Python for expanded respiratory to expanded lung change. --- src/python/pulse/engine/PulseConfiguration.py | 16 +++++++--------- src/python/pulse/engine/io/PulseConfiguration.py | 5 ++--- .../pulse/howto/HowTo_ExpandedRespiratory.py | 2 +- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/python/pulse/engine/PulseConfiguration.py b/src/python/pulse/engine/PulseConfiguration.py index 5450bdf83..d5cdc70b3 100644 --- a/src/python/pulse/engine/PulseConfiguration.py +++ b/src/python/pulse/engine/PulseConfiguration.py @@ -7,19 +7,17 @@ from pulse.cdm.scalars import SEScalarTime class PulseConfiguration: __slots__ = ["_time_step", "_allow_dynamic_timestep", - "_use_expanded_respiratory"] + "_use_expanded_lungs"] def __init__(self): self._allow_dynamic_timestep = eSwitch.NullSwitch self._time_step = None - - self._use_expanded_respiratory = eSwitch.NullSwitch + self._use_expanded_lungs = eSwitch.NullSwitch def clear(self): self._allow_dynamic_timestep = eSwitch.NullSwitch if self._time_step is not None: self._time_step.invalidate() - - self._use_expanded_respiratory = eSwitch.NullSwitch + self._use_expanded_lungs = eSwitch.NullSwitch def set_allow_dynamic_timestep(self, s: eSwitch): self._allow_dynamic_timestep = s @@ -33,10 +31,10 @@ class PulseConfiguration: self._time_step = SEScalarTime() return self._time_step - def set_expanded_respiratory(self, s: eSwitch): - self._use_expanded_respiratory = s - def use_expanded_respiratory(self): - return self._use_expanded_respiratory + def set_expanded_lungs(self, s: eSwitch): + self._use_expanded_lungs = s + def use_expanded_lungs(self): + return self._use_expanded_lungs diff --git a/src/python/pulse/engine/io/PulseConfiguration.py b/src/python/pulse/engine/io/PulseConfiguration.py index 2df22dbd7..35c365cc2 100644 --- a/src/python/pulse/engine/io/PulseConfiguration.py +++ b/src/python/pulse/engine/io/PulseConfiguration.py @@ -38,9 +38,8 @@ def serialize_pulse_configuration_to_bind(src: PulseConfiguration, dst: Configur dst.AllowDynamicTimeStep = src.allow_dynamic_timestep().value if src.has_time_step(): serialize_scalar_time_to_bind(src.get_time_step(), dst.TimeStep) - - if src.use_expanded_respiratory() is not eSwitch.NullSwitch: - dst.RespiratoryConfiguration.UseExpandedRespiratory = src.use_expanded_respiratory().value + if src.use_expanded_lungs() is not eSwitch.NullSwitch: + dst.RespiratoryConfigurationData.UseExpandedLungs = src.use_expanded_lungs().value def serialize_pulse_configuration_from_bind(src: ConfigurationData, dst: PulseConfiguration): diff --git a/src/python/pulse/howto/HowTo_ExpandedRespiratory.py b/src/python/pulse/howto/HowTo_ExpandedRespiratory.py index eee65ad35..25648e6ab 100644 --- a/src/python/pulse/howto/HowTo_ExpandedRespiratory.py +++ b/src/python/pulse/howto/HowTo_ExpandedRespiratory.py @@ -21,7 +21,7 @@ def HowTo_ExpandedRespiratory(): pulse.log_to_console(True) cfg = PulseConfiguration() - cfg.set_expanded_respiratory(eSwitch.On) + cfg.set_expanded_lungs(eSwitch.On) pulse.set_configuration_override(cfg) data_requests = [ -- GitLab From 900acfc30d18417e803a717cbeb21ad3c2a927f0 Mon Sep 17 00:00:00 2001 From: JeffWebb6 Date: Wed, 7 May 2025 21:20:58 -0400 Subject: [PATCH 25/35] Fix expanded lung brounchus resistance copy-paste error. It doesn't seem to have any significant effect on the results. --- src/cpp/engine/common/controller/SetupExpandedLungs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cpp/engine/common/controller/SetupExpandedLungs.cpp b/src/cpp/engine/common/controller/SetupExpandedLungs.cpp index 1746e8908..bd8b207a5 100644 --- a/src/cpp/engine/common/controller/SetupExpandedLungs.cpp +++ b/src/cpp/engine/common/controller/SetupExpandedLungs.cpp @@ -481,7 +481,7 @@ namespace pulse SEFluidCircuitPath& LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeAnteriorAlveoli, LeftPleuralConnection, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection); SEFluidCircuitPath& LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection = cRespiratory.CreatePath(LeftSuperiorLobeApicoposteriorAlveoli, LeftPleuralConnection, pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection); - double CarinaToRightMainBronchusResistance_cmH2O_s_Per_L = 1.125; + double CarinaToRightMainBronchusResistance_cmH2O_s_Per_L = 0.231; double RightMainBronchusToRightIntermediateBronchusResistance_cmH2O_s_Per_L = 0.150; double RightMainBronchusToRightSuperiorLobarBronchusResistance_cmH2O_s_Per_L = 0.387; double RightIntermediateBronchusToRightMiddleLobarBronchusResistance_cmH2O_s_Per_L = 0.877; -- GitLab From b6bb7e4a5738c2cfb33ac492294a75d470e7aa19 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Thu, 21 Aug 2025 11:23:25 -0400 Subject: [PATCH 26/35] Fix merge issues --- .../system/physiology/RespiratoryModel.cpp | 89 ++----------------- 1 file changed, 7 insertions(+), 82 deletions(-) diff --git a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp index 1e19f3cb7..aad442d2f 100644 --- a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp +++ b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp @@ -555,10 +555,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeApicalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobeApicalAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobeApicalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightSuperiorLobeApicalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightSuperiorLobePosterior] = { @@ -567,10 +563,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobePosteriorAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobePosteriorAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobePosteriorAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightSuperiorLobePosteriorPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightSuperiorLobeAnterior] = { @@ -579,10 +571,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeAnteriorAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobeAnteriorAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightSuperiorLobeAnteriorPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightMiddleLobeLateral] = { @@ -591,10 +579,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeLateralAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightMiddleLobeLateralAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobeLateralAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightMiddleLobeLateralPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightMiddleLobeMedial] = { @@ -603,10 +587,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeMedialAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightMiddleLobeMedialAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobeMedialAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightMiddleLobeMedialPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightInferiorLobeSuperior] = { @@ -615,10 +595,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeSuperiorAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeSuperiorAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeSuperiorAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeSuperiorPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightInferiorLobeMedialBasal] = { @@ -627,10 +603,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeMedialBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeMedialBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeMedialBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightInferiorLobeAnteriorBasal] = { @@ -639,10 +611,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeAnteriorBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeAnteriorBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeAnteriorBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightInferiorLobeLateralBasal] = { @@ -651,10 +619,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeLateralBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeLateralBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeLateralBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::RightInferiorLobePosteriorBasal] = { @@ -663,10 +627,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobePosteriorBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobePosteriorBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobePosteriorBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftInferiorLobePosteriorBasal] = { @@ -675,10 +635,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobePosteriorBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobePosteriorBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobePosteriorBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftInferiorLobeLateralBasal] = { @@ -687,10 +643,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeLateralBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeLateralBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobeLateralBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftInferiorLobeAnteromedialBasal] = { @@ -699,10 +651,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftInferiorLobeSuperior] = { @@ -711,10 +659,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeSuperiorAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeSuperiorAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobeSuperiorPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftSuperiorLobeInferiorLingula] = { @@ -723,10 +667,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftSuperiorLobeSuperiorLingula] = { @@ -735,10 +675,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftSuperiorLobeAnterior] = { @@ -747,10 +683,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeAnteriorAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeAnteriorAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeAnteriorPulmonaryCapillaries) }; m_LungComponents[eLungCompartment::LeftSuperiorLobeApicoposterior] = { @@ -759,10 +691,6 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorShunt), - m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1), - m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeApicoposteriorAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeApicoposteriorPulmonaryCapillaries) }; } @@ -912,7 +840,7 @@ namespace pulse UpdateChestWallCompliances(); UpdateAlveolarCompliances(); UpdateVolumes(); - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) { //jbw - Fix UpdateResistances(); @@ -3667,26 +3595,23 @@ namespace pulse //-------------------------------------------------------------------------------------------------- void RespiratoryModel::UpdateResistances() { + double tracheaResistance_cmH2O_s_Per_L = 0.0; double pharynxResistance_cmH2O_s_Per_L = 0.0; - double tracheaResistance_cmH2O_s_Per_L = m_PharynxToCarina->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); - double rightBronchiResistance_cmH2O_s_Per_L = m_CarinaToRightAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); - double leftBronchiResistance_cmH2O_s_Per_L = m_CarinaToLeftAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); - double rightAlveoliResistance_cmH2O_s_Per_L = m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); - double leftAlveoliResistance_cmH2O_s_Per_L = m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); - double esophagusResistance_cmH2O_s_Per_L = m_AirwayToStomach->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); - double rightBronchiResistance_cmH2O_s_Per_L = 0.0; double leftBronchiResistance_cmH2O_s_Per_L = 0.0; double rightAlveoliResistance_cmH2O_s_Per_L = 0.0; double leftAlveoliResistance_cmH2O_s_Per_L = 0.0; + double esophagusResistance_cmH2O_s_Per_L = 0.0; if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) { //TODO: Make this work for the expanded model + tracheaResistance_cmH2O_s_Per_L = m_PharynxToCarina->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); rightBronchiResistance_cmH2O_s_Per_L = m_CarinaToRightAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); leftBronchiResistance_cmH2O_s_Per_L = m_CarinaToLeftAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); rightAlveoliResistance_cmH2O_s_Per_L = m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); leftAlveoliResistance_cmH2O_s_Per_L = m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); + esophagusResistance_cmH2O_s_Per_L = m_AirwayToStomach->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); } bool inhaling = false; @@ -5075,7 +5000,7 @@ namespace pulse {0.9, 0.5}, //Severe {1.0, 1.0} //Max }; - double damageScalingFactor = GeneralMath::PiecewiseLinearInterpolator(interpolatorPoints, combinedSeverity) * PBLIMultiplier; + damageScalingFactor = GeneralMath::PiecewiseLinearInterpolator(interpolatorPoints, combinedSeverity) * PBLIMultiplier; interpolatorPoints = { @@ -5097,7 +5022,7 @@ namespace pulse recruitmentScalingFactor = GeneralMath::Damper(recruitmentScalingFactor, m_PreviousShuntScalingFactor[iter], dampenFraction_perSec, m_data.GetTimeStep_s()); m_PreviousShuntScalingFactor[iter] = recruitmentScalingFactor; - double totalScalingFactor = MIN(recruitmentScalingFactor, damageScalingFactor) * PBLIMultiplier; + totalScalingFactor = MIN(recruitmentScalingFactor, damageScalingFactor) * PBLIMultiplier; //------------------------------------------------------------------------------------------------------ //COPD -- GitLab From 185070e8d395c8f14a459babbc3c450ffbffcefc Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Fri, 29 Aug 2025 13:55:26 -0400 Subject: [PATCH 27/35] Add circuit/transport unit tests for expanded lungs base and equipment configurations --- data/config/EngineUnitTests.config | 18 ++++++-- .../common/controller/CompartmentManager.cpp | 12 ++++-- .../common/controller/SetupExpandedLungs.cpp | 8 ---- .../whole_body/test/AnesthesiaCircuit.cpp | 17 ++++---- .../whole_body/test/CardiovascularCircuit.cpp | 12 +++--- .../whole_body/test/EngineTest.cpp | 17 ++++---- .../human_adult/whole_body/test/EngineTest.h | 43 ++++++++++++------- .../test/MechanicalVentilatorCircuit.cpp | 17 ++++---- .../whole_body/test/RespiratoryCircuit.cpp | 37 ++++++++-------- src/cpp/test_driver/main.cpp | 22 +++++----- src/python/pulse/cdm/utils/plotter.py | 3 +- 11 files changed, 116 insertions(+), 90 deletions(-) diff --git a/data/config/EngineUnitTests.config b/data/config/EngineUnitTests.config index facc2d262..256a03624 100644 --- a/data/config/EngineUnitTests.config +++ b/data/config/EngineUnitTests.config @@ -50,16 +50,26 @@ RespiratoryDriver = EngineUnitTest Results=RespiratoryDriverOutput AnesthesiaMachineCircuitAndTransport = EngineUnitTest Results=AnesthesiaMachineCircuitOutput,AnesthesiaMachineTransportOutput RespiratoryWithAnesthesiaMachineCircuitAndTransport = EngineUnitTest Results=RespiratoryAndAnesthesiaMachineCircuitOutput,RespiratoryAndAnesthesiaMachineTransportOutput +@group Inhaler +RespiratoryWithInhalerCircuitAndTransport = EngineUnitTest Results=RespiratoryAndInhalerCircuitOutput,RespiratoryAndInhalerTransportOutput,AerosolInhalerTransportOutput + @group MechanicalVentilator MechanicalVentilatorCircuitAndTransport = EngineUnitTest Results=MechanicalVentilatorCircuitOutput,MechanicalVentilatorTransportOutput RespiratoryWithMechanicalVentilatorCircuitAndTransport = EngineUnitTest Results=RespiratoryAndMechanicalVentilatorCircuitOutput,RespiratoryAndMechanicalVentilatorTransportOutput -@group Inhaler -RespiratoryWithInhalerCircuitAndTransport = EngineUnitTest Results=RespiratoryAndInhalerCircuitOutput,RespiratoryAndInhalerTransportOutput,AerosolInhalerTransportOutput - @group MechanicalVentilation RespiratoryWithMechanicalVentilationCircuitAndTransport = EngineUnitTest Results=RespiratoryAndMechanicalVentilationCircuitOutput,RespiratoryAndMechanicalVentilationTransportOutput,AerosolMechanicalVentilationTransportOutput +@group ExpandedLungs +ExpandedLungsCardiovascularCircuitAndTransport = EngineUnitTest Results=ExpandedLungsCardiovascularCircuitOutput,ExpandedLungsCardiovascularTransportOutput +ExpandedLungsFullCardiovascularCircuitAndTransport = EngineUnitTest Results=ExpandedLungsFullCardiovascularCircuitOutput,ExpandedLungsFullCardiovascularTransportOutput +ExpandedLungsCardiovascularBloodGases = EngineUnitTest Results=ExpandedLungsCardiovascularBloodGasesTestCircuitOutput,ExpandedLungsCardiovascularBloodGasesTestTransportOutput +ExpandedLungsRespiratoryCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryCircuitOutput,ExpandedLungsRespiratoryTransportOutput +ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryAndAnesthesiaMachineCircuitOutput,ExpandedLungsRespiratoryAndAnesthesiaMachineTransportOutput +ExpandedLungsRespiratoryWithInhalerCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryAndInhalerCircuitOutput,ExpandedLungsRespiratoryAndInhalerTransportOutput,ExpandedLungsAerosolInhalerTransportOutput +ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryAndMechanicalVentilatorCircuitOutput,ExpandedLungsRespiratoryAndMechanicalVentilatorTransportOutput +ExpandedLungsRespiratoryWithMechanicalVentilationCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryAndMechanicalVentilationCircuitOutput,ExpandedLungsRespiratoryAndMechanicalVentilationTransportOutput + @group Environment InternalTemperatureVariableBMRCircuitTest = EngineUnitTest Results=InternalTemperatureVariableBMRCircuitOutput InternalTemperatureVariableSkinCircuitTest = EngineUnitTest Results=InternalTemperatureVariableSkinCircuitOutput @@ -69,6 +79,8 @@ CombinedInternalAndEnvironmentVariableBMRandTemperatureCircuitTest = EngineUnitT CombinedInternalAndEnvironmentSkinTempDropCircuitTest = EngineUnitTest Results=CombinedInternalAndEnvironmentSkinTempDropCircuitOutput EnvironmentISO7730ComparisonTest = EngineUnitTest Results=EnvironmentISO7730Comparison + + @group AcidBaseBinding AcidBaseMath = EngineUnitTest AcidBaseFeedback = EngineUnitTest diff --git a/src/cpp/engine/common/controller/CompartmentManager.cpp b/src/cpp/engine/common/controller/CompartmentManager.cpp index 2ca903f69..c8fbcc466 100644 --- a/src/cpp/engine/common/controller/CompartmentManager.cpp +++ b/src/cpp/engine/common/controller/CompartmentManager.cpp @@ -345,10 +345,13 @@ for (const std::string& name : pulse::bin##Compartment::GetValues()) \ { Error("Could not find required Graph " + std::string(pulse::Graph::Cardiovascular)); } - m_RenalGraph = GetLiquidGraph(pulse::Graph::Renal); - if (m_RenalGraph == nullptr) + if (m_data.GetConfiguration().UseExpandedKidneys() == eSwitch::On) { - Error("Could not find required Graph " + std::string(pulse::Graph::Renal)); + m_RenalGraph = GetLiquidGraph(pulse::Graph::Renal); + if (m_RenalGraph == nullptr) + { + Error("Could not find required Graph " + std::string(pulse::Graph::Renal)); + } } m_RespiratoryGraph = GetGasGraph(pulse::Graph::Respiratory); if (m_RespiratoryGraph == nullptr) @@ -454,6 +457,9 @@ for (const std::string& name : pulse::bin##Compartment::GetValues()) \ const std::vector& p = pulse::PulmonaryCompartment::GetValues(); if (std::find(p.begin(), p.end(), cmpt.GetName()) != p.end()) return false; + const std::vector& eL = pulse::ExpandedLungsPulmonaryCompartment::GetValues(); + if (std::find(eL.begin(), eL.end(), cmpt.GetName()) != eL.end()) + return false; // Don't add it to aerosol cmpts either const std::vector& bvm = pulse::BagValveMaskCompartment::GetValues(); if (std::find(bvm.begin(), bvm.end(), cmpt.GetName()) != bvm.end()) diff --git a/src/cpp/engine/common/controller/SetupExpandedLungs.cpp b/src/cpp/engine/common/controller/SetupExpandedLungs.cpp index bd8b207a5..132534b82 100644 --- a/src/cpp/engine/common/controller/SetupExpandedLungs.cpp +++ b/src/cpp/engine/common/controller/SetupExpandedLungs.cpp @@ -1296,14 +1296,6 @@ namespace pulse liquidLink.MapPath(*gasLink->GetPath()); lAerosol.AddLink(liquidLink); } - - SEGasCompartment* gasCmpt = m_Compartments->GetGasCompartment(pulse::PulmonaryCompartment::Airway); - SELiquidCompartment& liquidCmpt = m_Compartments->CreateLiquidCompartment(pulse::PulmonaryCompartment::Airway); - if (gasCmpt->HasNodeMapping()) - { - for (auto node : gasCmpt->GetNodeMapping().GetNodes()) - liquidCmpt.MapNode(*node); - } lAerosol.StateChange(); } diff --git a/src/cpp/engine/human_adult/whole_body/test/AnesthesiaCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/AnesthesiaCircuit.cpp index 0490f8c75..a503a58f4 100644 --- a/src/cpp/engine/human_adult/whole_body/test/AnesthesiaCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/AnesthesiaCircuit.cpp @@ -47,10 +47,11 @@ namespace pulse { namespace human_adult_whole_body DataTrack outTrkGraph; std::ofstream fileCircuit; std::ofstream fileGraph; + std::string prefix = expandedLungs ? "ExpandedLungs" : ""; Engine pe; Controller& pc = (Controller&)pe.GetController(); - pc.GetLogger()->SetLogFile(sTestDirectory + "/AnesthesiaMachineCircuitAndTransportTest.log"); + pc.GetLogger()->SetLogFile(sTestDirectory + "/"+prefix+"AnesthesiaMachineCircuitAndTransportTest.log"); SEPatient patient(pc.GetLogger()); patient.SerializeFromFile("./patients/StandardMale.json"); pc.SetupPatient(patient); @@ -85,8 +86,8 @@ namespace pulse { namespace human_adult_whole_body { amCircuit = &pc.GetCircuits().GetAnesthesiaMachineCircuit(); amGraph = &pc.GetCompartments().GetAnesthesiaMachineGraph(); - sCircuitFileName = "/AnesthesiaMachineCircuitOutput.csv"; - sTransportFileName = "/AnesthesiaMachineTransportOutput.csv"; + sCircuitFileName = "/"+prefix+"AnesthesiaMachineCircuitOutput.csv"; + sTransportFileName = "/"+prefix+"AnesthesiaMachineTransportOutput.csv"; //Allow things to flow to ground, since the respiratory circuit isn't here //This approximates the total respiratory system resistance @@ -94,14 +95,14 @@ namespace pulse { namespace human_adult_whole_body AnesthesiaConnectionToEnvironment->GetResistanceBaseline().SetValue(1.5, PressureTimePerVolumeUnit::cmH2O_s_Per_L); AnesthesiaConnectionToEnvironment->GetNextResistance().SetValue(1.5, PressureTimePerVolumeUnit::cmH2O_s_Per_L); } - else if (config == RespiratoryWithAnesthesiaMachine) + else if (config == RespiratoryWithAnesthesiaMachine || config == ExpandedLungsRespiratoryWithAnesthesiaMachine) { pc.GetSubstances().InitializeGasCompartments(); amCircuit = &pc.GetCircuits().GetRespiratoryAndAnesthesiaMachineCircuit(); amGraph = &pc.GetCompartments().GetRespiratoryAndAnesthesiaMachineGraph(); - sCircuitFileName = "/RespiratoryAndAnesthesiaMachineCircuitOutput.csv"; - sTransportFileName = "/RespiratoryAndAnesthesiaMachineTransportOutput.csv"; + sCircuitFileName = "/"+prefix+"RespiratoryAndAnesthesiaMachineCircuitOutput.csv"; + sTransportFileName = "/"+prefix+"RespiratoryAndAnesthesiaMachineTransportOutput.csv"; //Precharge the stomach to prevent negative volume amCircuit->GetNode(pulse::RespiratoryNode::Stomach)->GetNextPressure().Set(env.GetAtmosphericPressure()); @@ -183,8 +184,8 @@ namespace pulse { namespace human_adult_whole_body AnesthesiaMachineCircuitAndTransportTest(RespiratoryWithAnesthesiaMachine, false, sTestDirectory); } - void EngineTest::RespiratoryExpandedLungsWithAnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory) + void EngineTest::ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory) { - AnesthesiaMachineCircuitAndTransportTest(RespiratoryWithAnesthesiaMachine, true, sTestDirectory); + AnesthesiaMachineCircuitAndTransportTest(ExpandedLungsRespiratoryWithAnesthesiaMachine, true, sTestDirectory); } END_NAMESPACE_EX diff --git a/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp index 3e320130f..bdd101920 100644 --- a/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/CardiovascularCircuit.cpp @@ -62,9 +62,9 @@ namespace pulse { namespace human_adult_whole_body CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, true, false, false, false, sTestDirectory, "CardiovascularAndCerebrospinalFluid", false); } - void EngineTest::CardiovascularAndExpandedLungsCircuitAndTransportTest(const std::string& sTestDirectory) + void EngineTest::ExpandedLungsCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory) { - CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, false, false, true, sTestDirectory, "CardiovascularAndCerebrospinalFluid", false); + CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, false, false, true, sTestDirectory, "ExpandedLungsCardiovascular", false); } void EngineTest::FullCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory) @@ -72,9 +72,9 @@ namespace pulse { namespace human_adult_whole_body CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, true, true, false, sTestDirectory, "FullCardiovascular", false); } - void EngineTest::FullExpandedLungsCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory) + void EngineTest::ExpandedLungsFullCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory) {// \todo enable csf when ready - CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, true, true, true, sTestDirectory, "FullCardiovascular", false); + CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, false, false, true, true, true, sTestDirectory, "ExpandedLungsFullCardiovascular", false); } void EngineTest::CardiovascularBloodGasesTest(const std::string& sTestDirectory) @@ -82,9 +82,9 @@ namespace pulse { namespace human_adult_whole_body CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, true, false, true, true, false, sTestDirectory, "CardiovascularBloodGasesTest", false); } - void EngineTest::CardiovascularExpandedLungsBloodGasesTest(const std::string& sTestDirectory) + void EngineTest::ExpandedLungsCardiovascularBloodGasesTest(const std::string& sTestDirectory) {// \todo enable csf when ready - CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, true, false, true, true, true, sTestDirectory, "CardiovascularBloodGasesTest", false); + CardiovascularCircuitAndTransportTest(Heart, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, true, false, true, true, true, sTestDirectory, "ExpandedLungsCardiovascularBloodGasesTest", false); } void EngineTest::TuneCardiovascularCircuitTest(const std::string& sTestDirectory) diff --git a/src/cpp/engine/human_adult/whole_body/test/EngineTest.cpp b/src/cpp/engine/human_adult/whole_body/test/EngineTest.cpp index ec395e0e7..8b34d9d2c 100644 --- a/src/cpp/engine/human_adult/whole_body/test/EngineTest.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/EngineTest.cpp @@ -18,6 +18,7 @@ namespace pulse { namespace human_adult_whole_body { try { + Info("Writing artifacts to: " + sOutputDirectory); //If you find the test name, run it if (testMap.find(testName) != testMap.end()) { @@ -67,11 +68,11 @@ namespace pulse { namespace human_adult_whole_body testMap.insert(std::make_pair("CardiovascularAndRenalCircuitAndTransportTest", &EngineTest::CardiovascularAndRenalCircuitAndTransportTest)); testMap.insert(std::make_pair("CardiovascularAndTissueCircuitAndTransportTest", &EngineTest::CardiovascularAndTissueCircuitAndTransportTest)); testMap.insert(std::make_pair("CardiovascularAndCerebrospinalFluidCircuitAndTransportTest", &EngineTest::CardiovascularAndCerebrospinalFluidCircuitAndTransportTest)); - testMap.insert(std::make_pair("CardiovascularAndExpandedLungsCircuitAndTransportTest", &EngineTest::CardiovascularAndExpandedLungsCircuitAndTransportTest)); + testMap.insert(std::make_pair("ExpandedLungsCardiovascularCircuitAndTransportTest", &EngineTest::ExpandedLungsCardiovascularCircuitAndTransportTest)); testMap.insert(std::make_pair("FullCardiovascularCircuitAndTransportTest", &EngineTest::FullCardiovascularCircuitAndTransportTest)); - testMap.insert(std::make_pair("FullExpandedLungsCardiovascularCircuitAndTransportTest", &EngineTest::FullExpandedLungsCardiovascularCircuitAndTransportTest)); + testMap.insert(std::make_pair("ExpandedLungsFullCardiovascularCircuitAndTransportTest", &EngineTest::ExpandedLungsFullCardiovascularCircuitAndTransportTest)); testMap.insert(std::make_pair("CardiovascularBloodGasesTest", &EngineTest::CardiovascularBloodGasesTest)); - testMap.insert(std::make_pair("CardiovascularExpandedLungsBloodGasesTest", &EngineTest::CardiovascularExpandedLungsBloodGasesTest)); + testMap.insert(std::make_pair("ExpandedLungsCardiovascularBloodGasesTest", &EngineTest::ExpandedLungsCardiovascularBloodGasesTest)); testMap.insert(std::make_pair("TuneCardiovascularCircuitTest", (testFunction) & EngineTest::TuneCardiovascularCircuitTest)); testMap.insert(std::make_pair("CardiovascularCircuitScaleTests", &EngineTest::CardiovascularCircuitScaleTests)); @@ -82,22 +83,22 @@ namespace pulse { namespace human_adult_whole_body testMap.insert(std::make_pair("RenalUrinateTest", &EngineTest::RenalUrinateTest)); testMap.insert(std::make_pair("RespiratoryCircuitAndTransportTest", (testFunction) & EngineTest::RespiratoryCircuitAndTransportTest)); - testMap.insert(std::make_pair("RespiratoryExpandedLungsCircuitAndTransportTest", &EngineTest::RespiratoryExpandedLungsCircuitAndTransportTest)); + testMap.insert(std::make_pair("ExpandedLungsRespiratoryCircuitAndTransportTest", &EngineTest::ExpandedLungsRespiratoryCircuitAndTransportTest)); testMap.insert(std::make_pair("RespiratoryDriverTest", &EngineTest::RespiratoryDriverTest)); testMap.insert(std::make_pair("AnesthesiaMachineCircuitAndTransportTest", (testFunction) & EngineTest::AnesthesiaMachineCircuitAndTransportTest)); testMap.insert(std::make_pair("RespiratoryWithAnesthesiaMachineCircuitAndTransportTest", &EngineTest::RespiratoryWithAnesthesiaMachineCircuitAndTransportTest)); - testMap.insert(std::make_pair("RespiratoryExpandedLungsWithAnesthesiaMachineCircuitAndTransportTest", &EngineTest::RespiratoryExpandedLungsWithAnesthesiaMachineCircuitAndTransportTest)); + testMap.insert(std::make_pair("ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransportTest", &EngineTest::ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransportTest)); testMap.insert(std::make_pair("MechanicalVentilatorCircuitAndTransportTest", (testFunction) & EngineTest::MechanicalVentilatorCircuitAndTransportTest)); testMap.insert(std::make_pair("RespiratoryWithMechanicalVentilatorCircuitAndTransportTest", &EngineTest::RespiratoryWithMechanicalVentilatorCircuitAndTransportTest)); - testMap.insert(std::make_pair("RespiratoryExpandedLungsWithMechanicalVentilatorCircuitAndTransportTest", &EngineTest::RespiratoryExpandedLungsWithMechanicalVentilatorCircuitAndTransportTest)); + testMap.insert(std::make_pair("ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest", &EngineTest::ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest)); testMap.insert(std::make_pair("RespiratoryWithInhalerCircuitAndTransportTest", &EngineTest::RespiratoryWithInhalerCircuitAndTransportTest)); - testMap.insert(std::make_pair("RespiratoryExpandedLungsWithInhalerCircuitAndTransportTest", &EngineTest::RespiratoryExpandedLungsWithInhalerCircuitAndTransportTest)); + testMap.insert(std::make_pair("ExpandedLungsRespiratoryWithInhalerCircuitAndTransportTest", &EngineTest::ExpandedLungsRespiratoryWithInhalerCircuitAndTransportTest)); testMap.insert(std::make_pair("RespiratoryWithMechanicalVentilationCircuitAndTransportTest", &EngineTest::RespiratoryWithMechanicalVentilationCircuitAndTransportTest)); - testMap.insert(std::make_pair("RespiratoryExpandedLungsWithMechanicalVentilationCircuitAndTransportTest", &EngineTest::RespiratoryExpandedLungsWithMechanicalVentilationCircuitAndTransportTest)); + testMap.insert(std::make_pair("ExpandedLungsRespiratoryWithMechanicalVentilationCircuitAndTransportTest", &EngineTest::ExpandedLungsRespiratoryWithMechanicalVentilationCircuitAndTransportTest)); testMap.insert(std::make_pair("InternalTemperatureVariableBMRCircuitTest", &EngineTest::InternalTemperatureVariableBMRCircuitTest)); testMap.insert(std::make_pair("InternalTemperatureVariableSkinCircuitTest", &EngineTest::InternalTemperatureVariableSkinCircuitTest)); diff --git a/src/cpp/engine/human_adult/whole_body/test/EngineTest.h b/src/cpp/engine/human_adult/whole_body/test/EngineTest.h index c47bbf0a3..d62c4e717 100644 --- a/src/cpp/engine/human_adult/whole_body/test/EngineTest.h +++ b/src/cpp/engine/human_adult/whole_body/test/EngineTest.h @@ -38,11 +38,11 @@ namespace pulse { namespace human_adult_whole_body void CardiovascularAndRenalCircuitAndTransportTest(const std::string& sTestDirectory); void CardiovascularAndTissueCircuitAndTransportTest(const std::string& sTestDirectory); void CardiovascularAndCerebrospinalFluidCircuitAndTransportTest(const std::string& sTestDirectory); - void CardiovascularAndExpandedLungsCircuitAndTransportTest(const std::string& sTestDirectory); + void ExpandedLungsCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory); void FullCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory); - void FullExpandedLungsCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory); + void ExpandedLungsFullCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory); void CardiovascularBloodGasesTest(const std::string& sTestDirectory);// Everything with Saturation - void CardiovascularExpandedLungsBloodGasesTest(const std::string& sTestDirectory);// Everything with Saturation + void ExpandedLungsCardiovascularBloodGasesTest(const std::string& sTestDirectory);// Everything with Saturation // Cardiovascular Utilities // void TuneCardiovascularCircuitTest(const std::string& sTestDirectory); void CardiovascularCircuitScaleTests(const std::string& sTestDirectory); @@ -84,10 +84,21 @@ namespace pulse { namespace human_adult_whole_body // Respiratory // ///////////////// void RespiratoryCircuitAndTransportTest(const std::string& sTestDirectory); - void RespiratoryExpandedLungsCircuitAndTransportTest(const std::string& sTestDirectory); + void ExpandedLungsRespiratoryCircuitAndTransportTest(const std::string& sTestDirectory); void RespiratoryDriverTest(const std::string& sTestDirectory); protected: - enum RespiratoryConfiguration { RespiratorySolo, AnesthesiaMachineSolo, RespiratoryWithAnesthesiaMachine, RespiratoryWithInhaler, RespiratoryWithMechanicalVentilation, MechanicalVentilatorSolo, RespiratoryWithMechanicalVentilator + enum RespiratoryConfiguration { RespiratorySolo, + ExpandedLungsRespiratorySolo, + AnesthesiaMachineSolo, + RespiratoryWithAnesthesiaMachine, + ExpandedLungsRespiratoryWithAnesthesiaMachine, + RespiratoryWithInhaler, + ExpandedLungsRespiratoryWithInhaler, + RespiratoryWithMechanicalVentilation, + ExpandedLungsRespiratoryWithMechanicalVentilation, + MechanicalVentilatorSolo, + RespiratoryWithMechanicalVentilator, + ExpandedLungsRespiratoryWithMechanicalVentilator }; void RespiratoryCircuitAndTransportTest(RespiratoryConfiguration config, bool expandedLungs, const std::string& sTestDirectory); @@ -97,34 +108,34 @@ namespace pulse { namespace human_adult_whole_body //////////////////////// void AnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory); void RespiratoryWithAnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory); - void RespiratoryExpandedLungsWithAnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory); + void ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory); protected: void AnesthesiaMachineCircuitAndTransportTest(RespiratoryConfiguration config, bool expandedLungs, const std::string& sTestDirectory); + public: + ///////////// + // Inhaler // + ///////////// + void RespiratoryWithInhalerCircuitAndTransportTest(const std::string& sTestDirectory); + void ExpandedLungsRespiratoryWithInhalerCircuitAndTransportTest(const std::string& sTestDirectory); + protected: + public: /////////////////////////// // Mechanical Ventilator // /////////////////////////// void MechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory); void RespiratoryWithMechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory); - void RespiratoryExpandedLungsWithMechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory); + void ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory); protected: void MechanicalVentilatorCircuitAndTransportTest(RespiratoryConfiguration config, bool expandedLungs, const std::string& sTestDirectory); - public: - ///////////// - // Inhaler // - ///////////// - void RespiratoryWithInhalerCircuitAndTransportTest(const std::string& sTestDirectory); - void RespiratoryExpandedLungsWithInhalerCircuitAndTransportTest(const std::string& sTestDirectory); - protected: - public: //////////////////////////// // Mechanical Ventilation // //////////////////////////// void RespiratoryWithMechanicalVentilationCircuitAndTransportTest(const std::string& sTestDirectory); - void RespiratoryExpandedLungsWithMechanicalVentilationCircuitAndTransportTest(const std::string& sTestDirectory); + void ExpandedLungsRespiratoryWithMechanicalVentilationCircuitAndTransportTest(const std::string& sTestDirectory); protected: public: diff --git a/src/cpp/engine/human_adult/whole_body/test/MechanicalVentilatorCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/MechanicalVentilatorCircuit.cpp index dec874ac2..eb359b898 100644 --- a/src/cpp/engine/human_adult/whole_body/test/MechanicalVentilatorCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/MechanicalVentilatorCircuit.cpp @@ -47,10 +47,11 @@ namespace pulse { namespace human_adult_whole_body DataTrack outTrkGraph; std::ofstream fileCircuit; std::ofstream fileGraph; + std::string prefix = expandedLungs ? "ExpandedLungs" : ""; Engine pe; Controller& pc = (Controller&)pe.GetController(); - pc.GetLogger()->SetLogFile(sTestDirectory + "/MechanicalVentilatorCircuitAndTransportTest.log"); + pc.GetLogger()->SetLogFile(sTestDirectory + "/"+prefix+"MechanicalVentilatorCircuitAndTransportTest.log"); SEPatient patient(pc.GetLogger()); patient.SerializeFromFile("./patients/StandardMale.json"); pc.SetupPatient(patient); @@ -85,8 +86,8 @@ namespace pulse { namespace human_adult_whole_body { mvCircuit = &pc.GetCircuits().GetMechanicalVentilatorCircuit(); mvGraph = &pc.GetCompartments().GetMechanicalVentilatorGraph(); - sCircuitFileName = "/MechanicalVentilatorCircuitOutput.csv"; - sTransportFileName = "/MechanicalVentilatorTransportOutput.csv"; + sCircuitFileName = "/"+prefix+"MechanicalVentilatorCircuitOutput.csv"; + sTransportFileName = "/"+prefix+"MechanicalVentilatorTransportOutput.csv"; //Allow things to flow to ground, since the respiratory circuit isn't here //This approximates the total respiratory system resistance @@ -95,14 +96,14 @@ namespace pulse { namespace human_adult_whole_body MechanicalVentilatorConnectionToEnvironment->GetPressureSourceBaseline().SetValue(0.1, PressureUnit::cmH2O); MechanicalVentilatorConnectionToEnvironment->GetNextPressureSource().SetValue(0.1, PressureUnit::cmH2O); } - else if (config == RespiratoryWithMechanicalVentilator) + else if (config == RespiratoryWithMechanicalVentilator || config == ExpandedLungsRespiratoryWithMechanicalVentilator) { pc.GetSubstances().InitializeGasCompartments(); mvCircuit = &pc.GetCircuits().GetRespiratoryAndMechanicalVentilatorCircuit(); mvGraph = &pc.GetCompartments().GetRespiratoryAndMechanicalVentilatorGraph(); - sCircuitFileName = "/RespiratoryAndMechanicalVentilatorCircuitOutput.csv"; - sTransportFileName = "/RespiratoryAndMechanicalVentilatorTransportOutput.csv"; + sCircuitFileName = "/"+prefix+"RespiratoryAndMechanicalVentilatorCircuitOutput.csv"; + sTransportFileName = "/"+prefix+"RespiratoryAndMechanicalVentilatorTransportOutput.csv"; //Precharge the stomach to prevent negative volume mvCircuit->GetNode(pulse::RespiratoryNode::Stomach)->GetNextPressure().Set(env.GetAtmosphericPressure()); @@ -178,8 +179,8 @@ namespace pulse { namespace human_adult_whole_body MechanicalVentilatorCircuitAndTransportTest(RespiratoryWithMechanicalVentilator, false, sTestDirectory); } - void EngineTest::RespiratoryExpandedLungsWithMechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory) + void EngineTest::ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory) { - MechanicalVentilatorCircuitAndTransportTest(RespiratoryWithMechanicalVentilator, true, sTestDirectory); + MechanicalVentilatorCircuitAndTransportTest(ExpandedLungsRespiratoryWithMechanicalVentilator, true, sTestDirectory); } END_NAMESPACE_EX diff --git a/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp b/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp index b1a4cb3f8..dcc8a67ba 100644 --- a/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp +++ b/src/cpp/engine/human_adult/whole_body/test/RespiratoryCircuit.cpp @@ -43,10 +43,11 @@ namespace pulse { namespace human_adult_whole_body std::ofstream fileCircuit; std::ofstream fileGraph; std::ofstream fAerosolGraph; + std::string prefix = expandedLungs ? "ExpandedLungs" :""; Engine pe; Controller& pc = (Controller&)pe.GetController(); - pc.GetLogger()->SetLogFile(sTestDirectory + "/RespiratoryCircuitAndTransportTest.log"); + pc.GetLogger()->SetLogFile(sTestDirectory + "/"+prefix+"RespiratoryCircuitAndTransportTest.log"); SEPatient patient(pc.GetLogger()); patient.SerializeFromFile("./patients/StandardMale.json"); pc.SetupPatient(patient); @@ -66,23 +67,23 @@ namespace pulse { namespace human_adult_whole_body std::string sCircuitFileName; std::string sTransportFileName; std::string sAerosolTxptFileName; - if (config == RespiratorySolo) + if (config == RespiratorySolo || config == ExpandedLungsRespiratorySolo) { rCircuit = &pc.GetCircuits().GetRespiratoryCircuit(); rGraph = &pc.GetCompartments().GetRespiratoryGraph(); aGraph = nullptr; - sCircuitFileName = "/RespiratoryCircuitOutput.csv"; - sTransportFileName = "/RespiratoryTransportOutput.csv"; + sCircuitFileName = "/"+prefix+"RespiratoryCircuitOutput.csv"; + sTransportFileName = "/" + prefix + "RespiratoryTransportOutput.csv"; sAerosolTxptFileName = ""; } - else if (config == RespiratoryWithInhaler) + else if (config == RespiratoryWithInhaler || config == ExpandedLungsRespiratoryWithInhaler) { rCircuit = &pc.GetCircuits().GetRespiratoryAndInhalerCircuit(); rGraph = &pc.GetCompartments().GetRespiratoryAndInhalerGraph(); aGraph = &pc.GetCompartments().GetAerosolAndInhalerGraph(); - sCircuitFileName = "/RespiratoryAndInhalerCircuitOutput.csv"; - sTransportFileName = "/RespiratoryAndInhalerTransportOutput.csv"; - sAerosolTxptFileName = "/AerosolInhalerTransportOutput.csv"; + sCircuitFileName = "/"+prefix+"RespiratoryAndInhalerCircuitOutput.csv"; + sTransportFileName = "/"+prefix+"RespiratoryAndInhalerTransportOutput.csv"; + sAerosolTxptFileName = "/"+prefix+"AerosolInhalerTransportOutput.csv"; // Get an aerosolized substance SESubstance* albuterol = pc.GetSubstances().GetSubstance("Albuterol"); @@ -98,14 +99,14 @@ namespace pulse { namespace human_adult_whole_body mouthpiece->Balance(BalanceLiquidBy::Mass); } } - else if (config == RespiratoryWithMechanicalVentilation) + else if (config == RespiratoryWithMechanicalVentilation || config == ExpandedLungsRespiratoryWithMechanicalVentilation) { rCircuit = &pc.GetCircuits().GetRespiratoryAndMechanicalVentilationCircuit(); rGraph = &pc.GetCompartments().GetRespiratoryAndMechanicalVentilationGraph(); aGraph = &pc.GetCompartments().GetAerosolAndMechanicalVentilationGraph(); - sCircuitFileName = "/RespiratoryAndMechanicalVentilationCircuitOutput.csv"; - sTransportFileName = "/RespiratoryAndMechanicalVentilationTransportOutput.csv"; - sAerosolTxptFileName = "/AerosolMechanicalVentilationTransportOutput.csv"; + sCircuitFileName = "/"+prefix+"RespiratoryAndMechanicalVentilationCircuitOutput.csv"; + sTransportFileName = "/"+prefix+"RespiratoryAndMechanicalVentilationTransportOutput.csv"; + sAerosolTxptFileName = "/"+prefix+"AerosolMechanicalVentilationTransportOutput.csv"; // Get an aerosolized substance SESubstance* albuterol = pc.GetSubstances().GetSubstance("Albuterol"); @@ -198,9 +199,9 @@ namespace pulse { namespace human_adult_whole_body RespiratoryCircuitAndTransportTest(RespiratorySolo, false, sTestDirectory); } - void EngineTest::RespiratoryExpandedLungsCircuitAndTransportTest(const std::string& sTestDirectory) + void EngineTest::ExpandedLungsRespiratoryCircuitAndTransportTest(const std::string& sTestDirectory) { - RespiratoryCircuitAndTransportTest(RespiratorySolo, true, sTestDirectory); + RespiratoryCircuitAndTransportTest(ExpandedLungsRespiratorySolo, true, sTestDirectory); } void EngineTest::RespiratoryWithInhalerCircuitAndTransportTest(const std::string & sTestDirectory) @@ -208,9 +209,9 @@ namespace pulse { namespace human_adult_whole_body RespiratoryCircuitAndTransportTest(RespiratoryWithInhaler, false, sTestDirectory); } - void EngineTest::RespiratoryExpandedLungsWithInhalerCircuitAndTransportTest(const std::string& sTestDirectory) + void EngineTest::ExpandedLungsRespiratoryWithInhalerCircuitAndTransportTest(const std::string& sTestDirectory) { - RespiratoryCircuitAndTransportTest(RespiratoryWithInhaler, true, sTestDirectory); + RespiratoryCircuitAndTransportTest(ExpandedLungsRespiratoryWithInhaler, true, sTestDirectory); } void EngineTest::RespiratoryWithMechanicalVentilationCircuitAndTransportTest(const std::string & sTestDirectory) @@ -218,9 +219,9 @@ namespace pulse { namespace human_adult_whole_body RespiratoryCircuitAndTransportTest(RespiratoryWithMechanicalVentilation, false, sTestDirectory); } - void EngineTest::RespiratoryExpandedLungsWithMechanicalVentilationCircuitAndTransportTest(const std::string& sTestDirectory) + void EngineTest::ExpandedLungsRespiratoryWithMechanicalVentilationCircuitAndTransportTest(const std::string& sTestDirectory) { - RespiratoryCircuitAndTransportTest(RespiratoryWithMechanicalVentilation, true, sTestDirectory); + RespiratoryCircuitAndTransportTest(ExpandedLungsRespiratoryWithMechanicalVentilation, true, sTestDirectory); } void EngineTest::RespiratoryDriverTest(const std::string & sTestDirectory) diff --git a/src/cpp/test_driver/main.cpp b/src/cpp/test_driver/main.cpp index 39f67c7d7..802246535 100644 --- a/src/cpp/test_driver/main.cpp +++ b/src/cpp/test_driver/main.cpp @@ -15,12 +15,12 @@ int main(int argc, char* argv[]) Logger cdmLogger(cdmDir + "/CDMUnitTests.log"); CommonDataModelTest cdmTest(&cdmLogger); - std::string hawbDir = "./test_results/unit_tests/human_adult/whole_body"; + std::string hawbDir = "./test_results/unit_tests/pulse"; // TODO when we have different engines, human_adult/whole_body"; Logger hawbLogger(hawbDir + "/PulseUnitTests.log"); pulse::human_adult_whole_body::EngineTest hawbTest(&hawbLogger); - std::string havmDir = "./test_results/unit_tests/human_adult/ventilation_mechanics"; - Logger havmLogger(havmDir + "/RespiratoryEngineUnitTests.log"); + std::string havmDir = "./test_results/unit_tests/pulse"; // TODO when we have different engines, human_adult / ventilation_mechanics"; + Logger havmLogger(havmDir + "/PulseEngineUnitTests.log"); pulse::human_adult_ventilation_mechanics::EngineTest havmTest(&havmLogger); if (argc == 1) @@ -51,11 +51,11 @@ int main(int argc, char* argv[]) //hawbTest.CardiovascularAndRenalCircuitAndTransportTest(hawbDir); //hawbTest.CardiovascularAndTissueCircuitAndTransportTest(hawbDir); //hawbTest.CardiovascularAndCerebrospinalFluidCircuitAndTransportTest(hawbDir); - hawbTest.CardiovascularAndExpandedLungsCircuitAndTransportTest(hawbDir); +// hawbTest.ExpandedLungsCardiovascularCircuitAndTransportTest(hawbDir); //hawbTest.FullCardiovascularCircuitAndTransportTest(hawbDir); - hawbTest.FullExpandedLungsCardiovascularCircuitAndTransportTest(hawbDir); +// hawbTest.ExpandedLungsFullCardiovascularCircuitAndTransportTest(hawbDir); //hawbTest.CardiovascularBloodGasesTest(hawbDir); - hawbTest.CardiovascularExpandedLungsBloodGasesTest(hawbDir); +// hawbTest.ExpandedLungsCardiovascularBloodGasesTest(hawbDir); //hawbTest.TuneCardiovascularCircuitTest(hawbDir); //hawbTest.RenalCircuitAndTransportTest(hawbDir); @@ -66,17 +66,17 @@ int main(int argc, char* argv[]) //hawbTest.RespiratoryDriverTest(hawbDir); //hawbTest.RespiratoryCircuitAndTransportTest(hawbDir); - hawbTest.RespiratoryExpandedLungsCircuitAndTransportTest(hawbDir); +// hawbTest.ExpandedLungsRespiratoryCircuitAndTransportTest(hawbDir); //hawbTest.AnesthesiaMachineCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryWithAnesthesiaMachineCircuitAndTransportTest(hawbDir); - hawbTest.RespiratoryExpandedLungsWithAnesthesiaMachineCircuitAndTransportTest(hawbDir); +// hawbTest.ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransportTest(hawbDir); //hawbTest.MechanicalVentilatorCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); - hawbTest.RespiratoryExpandedLungsWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); +// hawbTest.ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryWithInhalerCircuitAndTransportTest(hawbDir); - hawbTest.RespiratoryExpandedLungsWithInhalerCircuitAndTransportTest(hawbDir); + hawbTest.ExpandedLungsRespiratoryWithInhalerCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); - hawbTest.RespiratoryExpandedLungsWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); +// hawbTest.ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); //hawbTest.InternalTemperatureVariableBMRCircuitTest(hawbDir); //hawbTest.InternalTemperatureVariableSkinCircuitTest(hawbDir); diff --git a/src/python/pulse/cdm/utils/plotter.py b/src/python/pulse/cdm/utils/plotter.py index 356608577..1b3fccf2d 100644 --- a/src/python/pulse/cdm/utils/plotter.py +++ b/src/python/pulse/cdm/utils/plotter.py @@ -808,7 +808,8 @@ def create_plot(plot_sources: [SEPlotSource], max_y = 0.001 if min_y is not None and min_y >= 0: min_y = -0.01 - if min_y is not None and not np.isnan(min_y): + if (min_y is not None and not np.isnan(min_y) and not np.isinf(min_y) and + max_y is not None and not np.isnan(max_y) and not np.isinf(max_y)): ax.set_ylim(min_y-0.05*abs(min_y), max_y+0.15*abs(max_y)) # Ensure negative times aren't shown -- GitLab From fb12aa46e8181cd9a0979ee7d0d5d957075ec970 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Fri, 29 Aug 2025 16:08:57 -0400 Subject: [PATCH 28/35] Manually merge updates from integration (cherry picked from commit ddb8db1d6eff5b9820ed2a54e60ea63cd9b0ec1d) --- .../validation/SystemValidationData.xlsx | Bin 102490 -> 108886 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/human/adult/validation/SystemValidationData.xlsx b/data/human/adult/validation/SystemValidationData.xlsx index a0564cfba726ef241352afaf180e13a2660ff020..d40c035d64f48ab84afd60e60df79a18871f9855 100644 GIT binary patch delta 41834 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 delta 35694 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 -- GitLab From 9c4dc757c280d5c9118852a90d67b914c3994b3a Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Thu, 4 Sep 2025 18:14:06 -0400 Subject: [PATCH 29/35] Update Expanded Lungs logic in RespiratoryModel - Clean up and sort variables between lung models Add Expanded-Lungs validation scenario --- data/config/DebugRun.config | 11 + .../Patient-Validation-ExpandedLungs.json | 37 ++ .../common/controller/SetupExpandedLungs.cpp | 5 + .../system/physiology/RespiratoryModel.cpp | 406 ++++++++++++------ .../system/physiology/RespiratoryModel.h | 150 +++---- 5 files changed, 405 insertions(+), 204 deletions(-) create mode 100644 data/human/adult/scenarios/validation/Patient-Validation-ExpandedLungs.json diff --git a/data/config/DebugRun.config b/data/config/DebugRun.config index eee91e406..1aa8ab2d1 100644 --- a/data/config/DebugRun.config +++ b/data/config/DebugRun.config @@ -35,3 +35,14 @@ Macro ScenarioTest=ScenarioTestDriver FastPlot Baseline=scenarios/ Computed=./te patient/BasicStandard.json = ScenarioTest HumanAdultWholeBody +#ExpandedLungsCardiovascularCircuitAndTransport = EngineUnitTest Results=ExpandedLungsCardiovascularCircuitOutput,ExpandedLungsCardiovascularTransportOutput +#ExpandedLungsFullCardiovascularCircuitAndTransport = EngineUnitTest Results=ExpandedLungsFullCardiovascularCircuitOutput,ExpandedLungsFullCardiovascularTransportOutput +#ExpandedLungsCardiovascularBloodGases = EngineUnitTest Results=ExpandedLungsCardiovascularBloodGasesTestCircuitOutput,ExpandedLungsCardiovascularBloodGasesTestTransportOutput +#ExpandedLungsRespiratoryCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryCircuitOutput,ExpandedLungsRespiratoryTransportOutput +#ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryAndAnesthesiaMachineCircuitOutput,ExpandedLungsRespiratoryAndAnesthesiaMachineTransportOutput +#ExpandedLungsRespiratoryWithInhalerCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryAndInhalerCircuitOutput,ExpandedLungsRespiratoryAndInhalerTransportOutput,ExpandedLungsAerosolInhalerTransportOutput +#ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryAndMechanicalVentilatorCircuitOutput,ExpandedLungsRespiratoryAndMechanicalVentilatorTransportOutput +#ExpandedLungsRespiratoryWithMechanicalVentilationCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryAndMechanicalVentilationCircuitOutput,ExpandedLungsRespiratoryAndMechanicalVentilationTransportOutput + +#patient/HeterogeneousARDSExacerbation.json = ScenarioTest +#patient/PrimaryBlastLungInjury.json = ScenarioTest diff --git a/data/human/adult/scenarios/validation/Patient-Validation-ExpandedLungs.json b/data/human/adult/scenarios/validation/Patient-Validation-ExpandedLungs.json new file mode 100644 index 000000000..9e16f3137 --- /dev/null +++ b/data/human/adult/scenarios/validation/Patient-Validation-ExpandedLungs.json @@ -0,0 +1,37 @@ +{ + "Configuration": { + "RespiratoryConfiguration" : { "ExpandedLungs" : "On" } + }, + "Scenario": { + "Name": "System-Validation-ExpandedLungs", + "Description": "Validation of all system data, including the ExpandedLungs.", + "PatientConfiguration": { "PatientFile": "StandardMale.json" }, + "DataRequestFile": + [ + "./validation/requests/Patient.json", + "./validation/requests/BloodChemistry.json", + "./validation/requests/Cardiovascular.json", + "./validation/requests/CardiovascularCompartments.json", + "./validation/requests/CardiovascularExpandedLungsCompartments.json", + "./validation/requests/Endocrine.json", + "./validation/requests/Energy.json", + "./validation/requests/Gastrointestinal.json", + "./validation/requests/Renal.json", + "./validation/requests/RenalCompartments.json", + "./validation/requests/RenalSubstances.json", + "./validation/requests/Respiratory.json", + "./validation/requests/RespiratoryCompartments.json", + "./validation/requests/RespiratoryExpandedLungsCompartments.json", + "./validation/requests/Tissue.json", + "./validation/requests/TissueCompartments.json" + ], + "AnyAction": + [ + { "AdvanceTime": { "Time": { "ScalarTime": { "Value": 2.0, "Unit": "min" }}}}, + { "PatientAction": { "Assessment": { "Type": "ArterialBloodGasTest" }}}, + { "PatientAction": { "Assessment": { "Type": "CompleteBloodCount" }}}, + { "PatientAction": { "Assessment": { "Type": "ComprehensiveMetabolicPanel" }}}, + { "PatientAction": { "Assessment": { "Type": "Urinalysis" }}} + ] + } +} \ No newline at end of file diff --git a/src/cpp/engine/common/controller/SetupExpandedLungs.cpp b/src/cpp/engine/common/controller/SetupExpandedLungs.cpp index 132534b82..8710443cb 100644 --- a/src/cpp/engine/common/controller/SetupExpandedLungs.cpp +++ b/src/cpp/engine/common/controller/SetupExpandedLungs.cpp @@ -382,6 +382,8 @@ namespace pulse SEFluidCircuitPath& AirwayToPharynx = cRespiratory.CreatePath(Airway, Pharynx, pulse::RespiratoryPath::AirwayToPharynx); SEFluidCircuitPath& PharynxToCarina = cRespiratory.CreatePath(Pharynx, Carina, pulse::RespiratoryPath::PharynxToCarina); PharynxToCarina.GetResistanceBaseline().SetValue(TracheaResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + SEFluidCircuitPath& PharynxToEnvironment = cRespiratory.CreatePath(Pharynx, Ambient, pulse::RespiratoryPath::PharynxToEnvironment); + PharynxToEnvironment.GetResistanceBaseline().SetValue(openResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); SEFluidCircuitPath& CarinaToRightMainBronchus = cRespiratory.CreatePath(Carina, RightMainBronchus, pulse::ExpandedLungsRespiratoryPath::CarinaToRightMainBronchus); SEFluidCircuitPath& RightMainBronchusToRightIntermediateBronchus = cRespiratory.CreatePath(RightMainBronchus, RightIntermediateBronchus, pulse::ExpandedLungsRespiratoryPath::RightMainBronchusToRightIntermediateBronchus); @@ -919,6 +921,8 @@ namespace pulse pAirwayToPharynx.MapPath(AirwayToPharynx); SEGasCompartmentLink& pPharynxToCarina = m_Compartments->CreateGasLink(pPharynx, pCarina, pulse::PulmonaryLink::PharynxToCarina); pPharynxToCarina.MapPath(PharynxToCarina); + SEGasCompartmentLink& pPharynxToEnvironment = m_Compartments->CreateGasLink(pPharynx, *gEnvironment, pulse::PulmonaryLink::PharynxToEnvironment); + pPharynxToEnvironment.MapPath(PharynxToEnvironment); SEGasCompartmentLink& pAirwayToStomach = m_Compartments->CreateGasLink(pAirway, pStomach, pulse::PulmonaryLink::AirwayToStomach); pAirwayToStomach.MapPath(AirwayToStomach); @@ -1170,6 +1174,7 @@ namespace pulse gRespiratory.AddLink(pAirwayToPharynx); gRespiratory.AddLink(pAirwayToStomach); gRespiratory.AddLink(pPharynxToCarina); + gRespiratory.AddLink(pPharynxToEnvironment); gRespiratory.AddLink(pCarinaToRightMainBronchus); gRespiratory.AddLink(pRightMainBronchusToRightIntermediateBronchus); diff --git a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp index aad442d2f..9eb8ff32e 100644 --- a/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp +++ b/src/cpp/engine/common/system/physiology/RespiratoryModel.cpp @@ -172,8 +172,6 @@ namespace pulse m_LeftLungExtravascular = nullptr; m_RightLungExtravascular = nullptr; // Cardiovascular - m_LeftPulmonaryCapillaries = nullptr; - m_RightPulmonaryCapillaries = nullptr; m_AortaO2 = nullptr; m_AortaCO2 = nullptr; m_LeftPleuralCavity = nullptr; @@ -210,8 +208,6 @@ namespace pulse m_RightNeedleToRightPleural = nullptr; m_LeftAlveoliToLeftPleuralConnection = nullptr; m_RightAlveoliToRightPleuralConnection = nullptr; - m_LeftPulmonaryCapillary = nullptr; - m_RightPulmonaryCapillary = nullptr; m_ConnectionToAirway = nullptr; m_GroundToConnection = nullptr; // Substance @@ -444,75 +440,76 @@ namespace pulse m_VentilatoryOcclusionPressure_cmH2O = m_data.GetConfiguration().GetVentilatoryOcclusionPressure(PressureUnit::cmH2O); //This increases the absolute max driver pressure m_MinimumAllowableTidalVolume_L = m_data.GetConfiguration().GetMinimumAllowableTidalVolume(VolumeUnit::L); m_MinimumAllowableInpiratoryAndExpiratoryPeriod_s = m_data.GetConfiguration().GetMinimumAllowableInpiratoryAndExpiratoryPeriod(TimeUnit::s); - //Compartments + //Circuits + m_RespiratoryCircuit = &m_data.GetCircuits().GetRespiratoryCircuit(); + // Nodes + m_AirwayNode = m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::Airway); + m_RespiratoryMuscleNode = m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::RespiratoryMuscle); + m_LeftPleuralNode = m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::LeftPleural); + m_RightPleuralNode = m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::RightPleural); + m_AmbientNode = m_RespiratoryCircuit->GetNode(pulse::EnvironmentNode::Ambient); + m_StomachNode = m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::Stomach); + // Compartments m_Environment = m_data.GetCompartments().GetGasCompartment(pulse::EnvironmentCompartment::Ambient); - m_AerosolAirway = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::Airway); - m_AerosolCarina = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::Carina); - m_AerosolLeftAnatomicDeadSpace = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::LeftAnatomicDeadSpace); - m_AerosolLeftAlveolarDeadSpace = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::LeftAlveolarDeadSpace); - m_AerosolLeftAlveoli = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::LeftAlveoli); - m_AerosolRightAnatomicDeadSpace = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::RightAnatomicDeadSpace); - m_AerosolRightAlveolarDeadSpace = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::RightAlveolarDeadSpace); - m_AerosolRightAlveoli = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::RightAlveoli); + m_Carina = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::Carina); + m_CarinaO2 = m_Carina->GetSubstanceQuantity(m_data.GetSubstances().GetO2()); m_Lungs = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::Lungs); m_LeftLung = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::LeftLung); m_RightLung = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::RightLung); m_PleuralCavity = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::PleuralCavity); m_LeftPleuralCavity = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::LeftPleuralCavity); m_RightPleuralCavity = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::RightPleuralCavity); - m_LeftLungExtravascular = m_data.GetCompartments().GetLiquidCompartment(pulse::ExtravascularCompartment::LeftLungIntracellular); - m_RightLungExtravascular = m_data.GetCompartments().GetLiquidCompartment(pulse::ExtravascularCompartment::RightLungIntracellular); - m_Carina = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::Carina); - m_CarinaO2 = m_Carina->GetSubstanceQuantity(m_data.GetSubstances().GetO2()); - m_LeftAlveoli = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::LeftAlveoli); - m_RightAlveoli = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::RightAlveoli); m_AnatomicDeadSpace = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::AnatomicDeadSpace); m_AlveolarDeadSpace = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::AlveolarDeadSpace); m_LeftAlveolarDeadSpace = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::LeftAlveolarDeadSpace); m_RightAlveolarDeadSpace = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::RightAlveolarDeadSpace); m_Alveoli = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::Alveoli); + m_LeftAlveoli = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::LeftAlveoli); m_LeftAlveoliO2 = m_LeftAlveoli->GetSubstanceQuantity(m_data.GetSubstances().GetO2()); + m_RightAlveoli = m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::RightAlveoli); m_RightAlveoliO2 = m_RightAlveoli->GetSubstanceQuantity(m_data.GetSubstances().GetO2()); - // Compartments for aerosol effects - m_AerosolEffects.clear(); - m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::Carina)); - m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::LeftAlveoli)); - m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::LeftAnatomicDeadSpace)); - m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::LeftAlveolarDeadSpace)); - m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::RightAlveoli)); - m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::RightAnatomicDeadSpace)); - m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::RightAlveolarDeadSpace)); - //Circuits - m_RespiratoryCircuit = &m_data.GetCircuits().GetRespiratoryCircuit(); - //Nodes - m_AirwayNode = m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::Airway); - m_LeftPleuralNode = m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::LeftPleural); - m_RespiratoryMuscleNode = m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::RespiratoryMuscle); - m_RightPleuralNode = m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::RightPleural); - m_AmbientNode = m_RespiratoryCircuit->GetNode(pulse::EnvironmentNode::Ambient); - m_StomachNode = m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::Stomach); - // Side - // Alveoli Node - // Dead Space Node - // Compliance Path - // Shunt Path - // Capillary Path - // Alveoli Compartment - // Capillary Compartment + //Mechanical Ventilation Compartments + m_MechanicalVentilationConnection = m_data.GetCompartments().GetGasCompartment(pulse::MechanicalVentilationCompartment::Connection); + m_MechanicalVentilationAerosolConnection = m_data.GetCompartments().GetLiquidCompartment(pulse::MechanicalVentilationCompartment::Connection); + // Paths + m_RightPleuralToRespiratoryMuscle = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightPleuralToRespiratoryMuscle); + m_LeftPleuralToRespiratoryMuscle = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftPleuralToRespiratoryMuscle); + m_DriverPressurePath = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::EnvironmentToRespiratoryMuscle); + m_AirwayToPharynx = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::AirwayToPharynx); + m_PharynxToCarina = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::PharynxToCarina); + m_PharynxToEnvironment = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::PharynxToEnvironment); + m_AirwayToStomach = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::AirwayToStomach); + m_ConnectionToAirway = m_data.GetCircuits().GetRespiratoryAndMechanicalVentilationCircuit().GetPath(pulse::MechanicalVentilationPath::ConnectionToAirway); + m_GroundToConnection = m_data.GetCircuits().GetRespiratoryAndMechanicalVentilationCircuit().GetPath(pulse::MechanicalVentilationPath::GroundToConnection); + + if (m_data.HasCardiovascular()) + { + SELiquidCompartment* Aorta = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::Aorta); + m_AortaO2 = Aorta->GetSubstanceQuantity(m_data.GetSubstances().GetO2()); + m_AortaCO2 = Aorta->GetSubstanceQuantity(m_data.GetSubstances().GetCO2()); + } + + //Substance - Overdose + m_Oversedation = m_data.GetSubstances().GetSubstance("Oversedation"); + + // Gather up the lung paths and components for the current lung configuration + // Component Order + // Side + // Alveoli Node + // Dead Space Node + // Resistance Path + // Compliance Path + // Shunt Path + // Arteries Path + // Veins Path + // Alveoli Compartment + // Capillary Compartment + // Shunt Link + // Arteries Link + // Veins Link if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) { - // Side - // Alveoli Node - // Dead Space Node - // Resistance Path - // Compliance Path - // Shunt Link - // Arteries Link - // Veins Link - // Veins Path - // Alveoli Compartment - // Capillary Compartment m_LungComponents[eLungCompartment::LeftLung] = { eSide::Left, @@ -520,14 +517,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::LeftAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftAlveoliToLeftPleuralConnection), - m_data.GetCompartments().GetLiquidLink(pulse::VascularLink::LeftPulmonaryArteriesToVeins), - m_data.GetCompartments().GetLiquidLink(pulse::VascularLink::LeftPulmonaryArteriesToCapillaries), - m_data.GetCompartments().GetLiquidLink(pulse::VascularLink::LeftPulmonaryCapillariesToVeins), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryVeins1), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftPulmonaryArteries1ToLeftPulmonaryCapillaries1), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1), m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::LeftAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryCapillaries) + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::VascularLink::LeftPulmonaryArteriesToVeins), + m_data.GetCompartments().GetLiquidLink(pulse::VascularLink::LeftPulmonaryArteriesToCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::VascularLink::LeftPulmonaryCapillariesToVeins) }; m_LungComponents[eLungCompartment::RightLung] = { @@ -536,18 +533,73 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::RespiratoryNode::RightAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightAnatomicDeadSpaceToRightAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightAlveoliToRightPleuralConnection), - m_data.GetCompartments().GetLiquidLink(pulse::VascularLink::RightPulmonaryArteriesToVeins), - m_data.GetCompartments().GetLiquidLink(pulse::VascularLink::RightPulmonaryArteriesToCapillaries), - m_data.GetCompartments().GetLiquidLink(pulse::VascularLink::RightPulmonaryCapillariesToVeins), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryVeins1), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightPulmonaryArteries1ToRightPulmonaryCapillaries1), m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightPulmonaryCapillaries1ToRightPulmonaryVeins1), m_data.GetCompartments().GetGasCompartment(pulse::PulmonaryCompartment::RightAlveoli), - m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightPulmonaryCapillaries) + m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::VascularLink::RightPulmonaryArteriesToVeins), + m_data.GetCompartments().GetLiquidLink(pulse::VascularLink::RightPulmonaryArteriesToCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::VascularLink::RightPulmonaryCapillariesToVeins) }; - } - else - { + + // Paths specific to this lung configuration + m_CarinaToLeftLung = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::CarinaToLeftAnatomicDeadSpace); + m_CarinaToRightLung = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::CarinaToRightAnatomicDeadSpace); + + m_CarinaToLeftAnatomicDeadSpace = m_CarinaToLeftLung; + m_CarinaToRightAnatomicDeadSpace = m_CarinaToRightLung; + m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace); + m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightAnatomicDeadSpaceToRightAlveolarDeadSpace); + m_LeftAlveolarDeadSpaceToLeftAlveoli = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftAlveolarDeadSpaceToLeftAlveoli); + m_RightAlveolarDeadSpaceToRightAlveoli = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightAlveolarDeadSpaceToRightAlveoli); + + m_LeftNeedleToLeftPleural = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftNeedleToLeftPleural); + m_RightNeedleToRightPleural = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightNeedleToRightPleural); + m_RightAlveoliToRightPleuralConnection = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightAlveoliToRightPleuralConnection); + m_LeftAlveoliToLeftPleuralConnection = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftAlveoliToLeftPleuralConnection); + + m_EnvironmentToLeftChestLeak = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::EnvironmentToLeftChestLeak); + m_EnvironmentToRightChestLeak = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::EnvironmentToRightChestLeak); + m_LeftAlveoliLeakToLeftPleural = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftAlveoliLeakToLeftPleural); + m_RightAlveoliLeakToRightPleural = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightAlveoliLeakToRightPleural); + m_LeftRespirtoryLeak = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::EnvironmentToLeftPleural); + m_RightRespirtoryLeak = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::EnvironmentToRightPleural); + m_LeftCardiovascularLeak = m_data.GetCircuits().GetActiveCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftPulmonaryVeinsLeak1ToGround); + m_RightCardiovascularLeak = m_data.GetCircuits().GetActiveCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightPulmonaryVeinsLeak1ToGround); + + // Grab compartments for aerosol effects + m_AerosolAirway = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::Airway); + m_AerosolCarina = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::Carina); + m_AerosolLeftAnatomicDeadSpace = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::LeftAnatomicDeadSpace); + m_AerosolLeftAlveolarDeadSpace = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::LeftAlveolarDeadSpace); + m_AerosolLeftAlveoli = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::LeftAlveoli); + m_AerosolRightAnatomicDeadSpace = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::RightAnatomicDeadSpace); + m_AerosolRightAlveolarDeadSpace = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::RightAlveolarDeadSpace); + m_AerosolRightAlveoli = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::RightAlveoli); + m_AerosolEffects.clear(); + m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::Carina)); + m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::LeftAlveoli)); + m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::LeftAnatomicDeadSpace)); + m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::LeftAlveolarDeadSpace)); + m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::RightAlveoli)); + m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::RightAnatomicDeadSpace)); + m_AerosolEffects.push_back(m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::RightAlveolarDeadSpace)); + m_LeftLungExtravascular = m_data.GetCompartments().GetLiquidCompartment(pulse::ExtravascularCompartment::LeftLungIntracellular); + m_RightLungExtravascular = m_data.GetCompartments().GetLiquidCompartment(pulse::ExtravascularCompartment::RightLungIntracellular); + } + else // Expanded Lungs Components + { + // Paths specific to this lung configuration + m_CarinaToLeftLung = m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::CarinaToLeftMainBronchus); + m_CarinaToRightLung = m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::CarinaToRightMainBronchus); + + // Grab compartments for aerosol effects + m_AerosolAirway = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::Airway); + m_AerosolCarina = m_data.GetCompartments().GetLiquidCompartment(pulse::PulmonaryCompartment::Carina); + m_AerosolEffects.clear(); + m_AerosolEffects.push_back(m_AerosolCarina); + m_LungComponents[eLungCompartment::RightSuperiorLobeApical] = { eSide::Right, @@ -555,6 +607,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeApicalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobeApicalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobeApicalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeApicalPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobeApicalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightSuperiorLobeApicalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightSuperiorLobeApicalShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightSuperiorLobeApicalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightSuperiorLobeApicalPulmonaryCapillariesToRightPulmonaryVeins) }; m_LungComponents[eLungCompartment::RightSuperiorLobePosterior] = { @@ -563,6 +623,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobePosteriorAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorApicoposteriorBronchusToRightSuperiorLobePosteriorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobePosteriorAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobePosteriorPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobePosteriorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightSuperiorLobePosteriorPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightSuperiorLobePosteriorShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightSuperiorLobePosteriorPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightSuperiorLobePosteriorPulmonaryCapillariesToRightPulmonaryVeins) }; m_LungComponents[eLungCompartment::RightSuperiorLobeAnterior] = { @@ -571,6 +639,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightSuperiorLobeAnteriorAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobarBronchusToRightSuperiorLobeAnteriorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightSuperiorLobeAnteriorAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightSuperiorLobeAnteriorPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightSuperiorLobeAnteriorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightSuperiorLobeAnteriorPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightSuperiorLobeAnteriorShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightSuperiorLobeAnteriorPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightSuperiorLobeAnteriorPulmonaryCapillariesToRightPulmonaryVeins) }; m_LungComponents[eLungCompartment::RightMiddleLobeLateral] = { @@ -579,6 +655,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeLateralAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeLateralBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightMiddleLobeLateralAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeLateralPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobeLateralAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightMiddleLobeLateralPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightMiddleLobeLateralShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightMiddleLobeLateralPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightMiddleLobeLateralPulmonaryCapillariesToRightPulmonaryVeins) }; m_LungComponents[eLungCompartment::RightMiddleLobeMedial] = { @@ -587,6 +671,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightMiddleLobeMedialAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightMiddleLobarBronchusToRightMiddleLobeMedialBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightMiddleLobeMedialAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightMiddleLobeMedialPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightMiddleLobeMedialAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightMiddleLobeMedialPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightMiddleLobeMedialShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightMiddleLobeMedialPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightMiddleLobeMedialPulmonaryCapillariesToRightPulmonaryVeins) }; m_LungComponents[eLungCompartment::RightInferiorLobeSuperior] = { @@ -595,6 +687,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeSuperiorAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus1ToRightInferiorLobeSuperiorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeSuperiorAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeSuperiorPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeSuperiorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeSuperiorPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightInferiorLobeSuperiorShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightInferiorLobeSuperiorPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightInferiorLobeSuperiorPulmonaryCapillariesToRightPulmonaryVeins) }; m_LungComponents[eLungCompartment::RightInferiorLobeMedialBasal] = { @@ -603,6 +703,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeMedialBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus2ToRightInferiorLobeMedialBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeMedialBasalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeMedialBasalPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeMedialBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeMedialBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightInferiorLobeMedialBasalShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightInferiorLobeMedialBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightInferiorLobeMedialBasalPulmonaryCapillariesToRightPulmonaryVeins) }; m_LungComponents[eLungCompartment::RightInferiorLobeAnteriorBasal] = { @@ -611,6 +719,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeAnteriorBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus3ToRightInferiorLobeAnteriorBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeAnteriorBasalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeAnteriorBasalPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeAnteriorBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeAnteriorBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightInferiorLobeAnteriorBasalShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightInferiorLobeAnteriorBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightInferiorLobeAnteriorBasalPulmonaryCapillariesToRightPulmonaryVeins) }; m_LungComponents[eLungCompartment::RightInferiorLobeLateralBasal] = { @@ -619,6 +735,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobeLateralBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobeLateralBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobeLateralBasalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobeLateralBasalPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobeLateralBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobeLateralBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightInferiorLobeLateralBasalShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightInferiorLobeLateralBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightInferiorLobeLateralBasalPulmonaryCapillariesToRightPulmonaryVeins) }; m_LungComponents[eLungCompartment::RightInferiorLobePosteriorBasal] = { @@ -627,6 +751,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::RightInferiorLobePosteriorBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobarBronchus4ToRightInferiorLobePosteriorBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::RightInferiorLobePosteriorBasalAlveoliToRightPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightPulmonaryArteries1ToRightInferiorLobePosteriorBasalPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::RightInferiorLobePosteriorBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::RightInferiorLobePosteriorBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightInferiorLobePosteriorBasalShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightPulmonaryArteriesToRightInferiorLobePosteriorBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::RightInferiorLobePosteriorBasalPulmonaryCapillariesToRightPulmonaryVeins) }; m_LungComponents[eLungCompartment::LeftInferiorLobePosteriorBasal] = { @@ -635,6 +767,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobePosteriorBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobeLateralBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobePosteriorBasalAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobePosteriorBasalPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobePosteriorBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobePosteriorBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftInferiorLobePosteriorBasalShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftInferiorLobePosteriorBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftInferiorLobePosteriorBasalPulmonaryCapillariesToLeftPulmonaryVeins) }; m_LungComponents[eLungCompartment::LeftInferiorLobeLateralBasal] = { @@ -643,6 +783,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeLateralBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus3ToLeftInferiorLobePosteriorBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeLateralBasalAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeLateralBasalPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeLateralBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobeLateralBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftInferiorLobeLateralBasalShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftInferiorLobeLateralBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftInferiorLobeLateralBasalPulmonaryCapillariesToLeftPulmonaryVeins) }; m_LungComponents[eLungCompartment::LeftInferiorLobeAnteromedialBasal] = { @@ -651,6 +799,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeAnteromedialBasalAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus2ToLeftInferiorLobeAnteromedialBasalBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeAnteromedialBasalAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeAnteromedialBasalAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobeAnteromedialBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftInferiorLobeAnteromedialBasalShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftInferiorLobeAnteromedialBasalPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftInferiorLobeAnteromedialBasalPulmonaryCapillariesToLeftPulmonaryVeins) }; m_LungComponents[eLungCompartment::LeftInferiorLobeSuperior] = { @@ -659,6 +815,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftInferiorLobeSuperiorAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobarBronchus1ToLeftInferiorLobeSuperiorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftInferiorLobeSuperiorAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftInferiorLobeSuperiorPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftInferiorLobeSuperiorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftInferiorLobeSuperiorPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftInferiorLobeSuperiorShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftInferiorLobeSuperiorPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftInferiorLobeSuperiorPulmonaryCapillariesToLeftPulmonaryVeins) }; m_LungComponents[eLungCompartment::LeftSuperiorLobeInferiorLingula] = { @@ -667,6 +831,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeInferiorLingulaAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeInferiorLingulaBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeInferiorLingulaAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeInferiorLingulaAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeInferiorLingulaPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftSuperiorLobeInferiorLingulaShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeInferiorLingulaPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftSuperiorLobeInferiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins) }; m_LungComponents[eLungCompartment::LeftSuperiorLobeSuperiorLingula] = { @@ -675,6 +847,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeSuperiorLingulaAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftLingularBonchusToLeftSuperiorLobeSuperiorLingulaBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeSuperiorLingulaAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeSuperiorLingulaAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftSuperiorLobeSuperiorLingulaShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeSuperiorLingulaPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftSuperiorLobeSuperiorLingulaPulmonaryCapillariesToLeftPulmonaryVeins) }; m_LungComponents[eLungCompartment::LeftSuperiorLobeAnterior] = { @@ -683,6 +863,14 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeAnteriorAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeAnteriorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeAnteriorAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeAnteriorPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeAnteriorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeAnteriorPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftSuperiorLobeAnteriorShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeAnteriorPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftSuperiorLobeAnteriorPulmonaryCapillariesToLeftPulmonaryVeins) }; m_LungComponents[eLungCompartment::LeftSuperiorLobeApicoposterior] = { @@ -691,60 +879,16 @@ namespace pulse m_RespiratoryCircuit->GetNode(pulse::ExpandedLungsRespiratoryNode::LeftSuperiorLobeApicoposteriorAlveolarDeadSpace), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorApicoposteriorBronchusToLeftSuperiorLobeApicoposteriorBronchiole), m_RespiratoryCircuit->GetPath(pulse::ExpandedLungsRespiratoryPath::LeftSuperiorLobeApicoposteriorAlveoliToLeftPleuralConnection), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorShunt), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftPulmonaryArteries1ToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries), + m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::ExpandedLungsCardiovascularPath::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins1), + m_data.GetCompartments().GetGasCompartment(pulse::ExpandedLungsPulmonaryCompartment::LeftSuperiorLobeApicoposteriorAlveoli), + m_data.GetCompartments().GetLiquidCompartment(pulse::ExpandedLungsVascularCompartment::LeftSuperiorLobeApicoposteriorPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftSuperiorLobeApicoposteriorShunt), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftPulmonaryArteriesToLeftSuperiorLobeApicoposteriorPulmonaryCapillaries), + m_data.GetCompartments().GetLiquidLink(pulse::ExpandedLungsVascularLink::LeftSuperiorLobeApicoposteriorPulmonaryCapillariesToLeftPulmonaryVeins) }; } - - //Paths - m_CarinaToLeftAnatomicDeadSpace = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::CarinaToLeftAnatomicDeadSpace); - m_CarinaToRightAnatomicDeadSpace = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::CarinaToRightAnatomicDeadSpace); - m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace); - m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightAnatomicDeadSpaceToRightAlveolarDeadSpace); - m_LeftAlveolarDeadSpaceToLeftAlveoli = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftAlveolarDeadSpaceToLeftAlveoli); - m_RightAlveolarDeadSpaceToRightAlveoli = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightAlveolarDeadSpaceToRightAlveoli); - - m_RightPleuralToRespiratoryMuscle = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightPleuralToRespiratoryMuscle); - m_LeftPleuralToRespiratoryMuscle = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftPleuralToRespiratoryMuscle); - m_DriverPressurePath = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::EnvironmentToRespiratoryMuscle); - m_AirwayToPharynx = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::AirwayToPharynx); - m_PharynxToCarina = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::PharynxToCarina); - m_PharynxToEnvironment = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::PharynxToEnvironment); - m_AirwayToStomach = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::AirwayToStomach); - m_EnvironmentToLeftChestLeak = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::EnvironmentToLeftChestLeak); - m_EnvironmentToRightChestLeak = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::EnvironmentToRightChestLeak); - m_LeftAlveoliLeakToLeftPleural = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftAlveoliLeakToLeftPleural); - m_RightAlveoliLeakToRightPleural = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightAlveoliLeakToRightPleural); - m_LeftNeedleToLeftPleural = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftNeedleToLeftPleural); - m_RightNeedleToRightPleural = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightNeedleToRightPleural); - m_RightAlveoliToRightPleuralConnection = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::RightAlveoliToRightPleuralConnection); - m_LeftAlveoliToLeftPleuralConnection = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::LeftAlveoliToLeftPleuralConnection); - m_ConnectionToAirway = m_data.GetCircuits().GetRespiratoryAndMechanicalVentilationCircuit().GetPath(pulse::MechanicalVentilationPath::ConnectionToAirway); - m_GroundToConnection = m_data.GetCircuits().GetRespiratoryAndMechanicalVentilationCircuit().GetPath(pulse::MechanicalVentilationPath::GroundToConnection); - m_LeftRespirtoryLeak = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::EnvironmentToLeftPleural); - m_RightRespirtoryLeak = m_RespiratoryCircuit->GetPath(pulse::RespiratoryPath::EnvironmentToRightPleural); - m_LeftCardiovascularLeak = m_data.GetCircuits().GetActiveCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftPulmonaryVeinsLeak1ToGround); - m_RightCardiovascularLeak = m_data.GetCircuits().GetActiveCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightPulmonaryVeinsLeak1ToGround); - - //Mechanical Ventilation Compartments - m_MechanicalVentilationConnection = m_data.GetCompartments().GetGasCompartment(pulse::MechanicalVentilationCompartment::Connection); - m_MechanicalVentilationAerosolConnection = m_data.GetCompartments().GetLiquidCompartment(pulse::MechanicalVentilationCompartment::Connection); - - if (m_data.HasCardiovascular()) - { - /// \todo figure out how to modify these resistances without getting the cv circuit - maybe add a parameter, like baroreceptors does - //Venous Return - m_RightPulmonaryCapillary = m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightPulmonaryCapillaries1ToRightPulmonaryVeins1); - m_LeftPulmonaryCapillary = m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1); - //Pulmonary Shunt - - m_LeftPulmonaryCapillaries = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::LeftPulmonaryCapillaries); - m_RightPulmonaryCapillaries = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::RightPulmonaryCapillaries); - SELiquidCompartment* Aorta = m_data.GetCompartments().GetLiquidCompartment(pulse::VascularCompartment::Aorta); - m_AortaO2 = Aorta->GetSubstanceQuantity(m_data.GetSubstances().GetO2()); - m_AortaCO2 = Aorta->GetSubstanceQuantity(m_data.GetSubstances().GetCO2()); - } - - //Substance - Overdose - m_Oversedation = m_data.GetSubstances().GetSubstance("Oversedation"); } //-------------------------------------------------------------------------------------------------- @@ -2504,8 +2648,8 @@ namespace pulse // Resistance based on simulated values if (abs(tracheaFlow_L_Per_s) > 0.1) { - double rightFlow_L_Per_s = m_CarinaToRightAnatomicDeadSpace->GetNextFlow(VolumePerTimeUnit::L_Per_s); - double leftFlow_L_Per_s = m_CarinaToLeftAnatomicDeadSpace->GetNextFlow(VolumePerTimeUnit::L_Per_s); + double rightFlow_L_Per_s = m_CarinaToRightLung->GetNextFlow(VolumePerTimeUnit::L_Per_s); + double leftFlow_L_Per_s = m_CarinaToLeftLung->GetNextFlow(VolumePerTimeUnit::L_Per_s); double rightAlveoliPressure_cmH2O = m_RightAlveoli->GetPressure(PressureUnit::cmH2O); double leftAlveoliPressure_cmH2O = m_LeftAlveoli->GetPressure(PressureUnit::cmH2O); @@ -3605,7 +3749,6 @@ namespace pulse if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) { - //TODO: Make this work for the expanded model tracheaResistance_cmH2O_s_Per_L = m_PharynxToCarina->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); rightBronchiResistance_cmH2O_s_Per_L = m_CarinaToRightAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); leftBronchiResistance_cmH2O_s_Per_L = m_CarinaToLeftAnatomicDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); @@ -3613,6 +3756,10 @@ namespace pulse leftAlveoliResistance_cmH2O_s_Per_L = m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); esophagusResistance_cmH2O_s_Per_L = m_AirwayToStomach->GetNextResistance(PressureTimePerVolumeUnit::cmH2O_s_Per_L); } + else + { + //TODO: Make this work for the expanded model + } bool inhaling = false; if (m_PharynxToCarina->GetNextFlow(VolumePerTimeUnit::L_Per_s) > 0.0) @@ -4074,14 +4221,6 @@ namespace pulse m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace->GetNextResistance().SetValue(leftAlveoliResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); m_AirwayToStomach->GetNextResistance().SetValue(esophagusResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); } - if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) - { - //TODO: Make this work for the expanded model - m_CarinaToRightAnatomicDeadSpace->GetNextResistance().SetValue(rightBronchiResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); - m_CarinaToLeftAnatomicDeadSpace->GetNextResistance().SetValue(leftBronchiResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); - m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace->GetNextResistance().SetValue(rightAlveoliResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); - m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace->GetNextResistance().SetValue(leftAlveoliResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); - } //------------------------------------------------------------------------------------------------------ //Restrictive @@ -5711,8 +5850,11 @@ namespace pulse double diffusionSurfaceArea_m2 = m_data.GetCurrentPatient().GetAlveoliSurfaceArea(AreaUnit::m2); m_data.GetDataTrack().Probe("diffusionSurfaceArea_m2", diffusionSurfaceArea_m2); - double rightPulmonaryCapillaryResistance_mmHg_s_Per_mL = m_RightPulmonaryCapillary->GetNextResistance(PressureTimePerVolumeUnit::mmHg_s_Per_mL); - double leftPulmonaryCapillaryResistance_mmHg_s_Per_mL = m_LeftPulmonaryCapillary->GetNextResistance(PressureTimePerVolumeUnit::mmHg_s_Per_mL); + /// \todo figure out how to modify these resistances without getting the cv circuit - maybe add a parameter, like baroreceptors does + SEFluidCircuitPath* RightPulmonaryCapillary = m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::RightPulmonaryCapillaries1ToRightPulmonaryVeins1); + SEFluidCircuitPath* LeftPulmonaryCapillary = m_data.GetCircuits().GetCardiovascularCircuit().GetPath(pulse::CardiovascularPath::LeftPulmonaryCapillaries1ToLeftPulmonaryVeins1); + double rightPulmonaryCapillaryResistance_mmHg_s_Per_mL = RightPulmonaryCapillary->GetNextResistance(PressureTimePerVolumeUnit::mmHg_s_Per_mL); + double leftPulmonaryCapillaryResistance_mmHg_s_Per_mL = LeftPulmonaryCapillary->GetNextResistance(PressureTimePerVolumeUnit::mmHg_s_Per_mL); double averagePulmonaryCapillaryResistance_mmHg_s_Per_mL = (rightPulmonaryCapillaryResistance_mmHg_s_Per_mL + leftPulmonaryCapillaryResistance_mmHg_s_Per_mL) / 2.0; m_data.GetDataTrack().Probe("averagePulmonaryCapillaryResistance_mmHg_s_Per_mL", averagePulmonaryCapillaryResistance_mmHg_s_Per_mL); } diff --git a/src/cpp/engine/common/system/physiology/RespiratoryModel.h b/src/cpp/engine/common/system/physiology/RespiratoryModel.h index c19c8d9b1..7e84ec4bd 100644 --- a/src/cpp/engine/common/system/physiology/RespiratoryModel.h +++ b/src/cpp/engine/common/system/physiology/RespiratoryModel.h @@ -57,7 +57,7 @@ namespace pulse virtual void PostProcess(bool solve_and_transport=true) override; protected: - void ComputeExposedModelParameters() override; + void ComputeExposedModelParameters() override;/*TODO ExpandedLungs*/ eLungCompartment GetLungCompartment(const std::string& cmpt); std::string GetCompartmentName(eLungCompartment m); @@ -67,20 +67,19 @@ namespace pulse //PreProcess void CalculateWork(); void CalculateFatigue(); - void UpdateChestWallCompliances(); - void UpdateVolumes(); - void UpdateResistances(); + void UpdateChestWallCompliances();/*TODO ExpandedLungs*/ + /**/SESegment* GetSegement(const std::vector& segments, double volume_L); void UpdateAlveolarCompliances(); - double CalculateSuctioningPattern(double baseResistance_cmH2O_s_Per_L, double flow_L_Per_s); + void UpdateVolumes(); + void UpdateResistances();/*TODO ExpandedLungs*/ + /**/double CalculateSuctioningPattern(double baseResistance_cmH2O_s_Per_L, double flow_L_Per_s); void UpdateInspiratoryExpiratoryRatio(); void UpdateDiffusion(); - void UpdatePulmonaryCapillary(); - void UpdatePulmonaryShunt(); - SESegment* GetSegement(const std::vector& segments, double volume_L); - //Overrides - void SetRespiratoryResistance(); - void SetRespiratoryCompliance(); - + // If Cardiovascular + /**/void UpdatePulmonaryCapillary(); + /**/void UpdatePulmonaryShunt(); + // Aerosol Deposition and various Effects + void ProcessAerosolSubstances(); //Actions void Pneumothorax(); void Hemothorax(); @@ -91,13 +90,14 @@ namespace pulse void ApplyDriver(); /**/void SetBreathCycleFractions(); /**/void ConsciousRespiration(); - /**/double VolumeToDriverPressure(double TargetVolume); + /**/double VolumeToDriverPressure(double TargetVolume);/*TODO ExpandedLungs*/ /**/void UpdateDriverPressure(); /****/void CalculateMechanoreceptors(); /**/void UpdateDriverPeriod(); /**/double UpdateTargetVentilation(double targetAlveolarVentilation_L_Per_min); - // Aerosol Deposition and various Effects - void ProcessAerosolSubstances(); + //Overrides + void SetRespiratoryResistance(); + void SetRespiratoryCompliance(); //Process void CalculateVitalSigns(); @@ -201,50 +201,61 @@ namespace pulse // Patient SEPatientActionCollection* m_PatientActions; + // Variables independent of how the lungs are modelled + SEFluidCircuit* m_RespiratoryCircuit; + SEFluidCircuitCalculator* m_Calculator; + SEGasTransporter* m_GasTransporter; + SELiquidTransporter* m_AerosolTransporter; + // Nodes + SEFluidCircuitNode* m_AirwayNode; + SEFluidCircuitNode* m_RespiratoryMuscleNode; + SEFluidCircuitNode* m_LeftPleuralNode; + SEFluidCircuitNode* m_RightPleuralNode; + SEFluidCircuitNode* m_AmbientNode; + SEFluidCircuitNode* m_StomachNode; + // Paths + SEFluidCircuitPath* m_LeftPleuralToRespiratoryMuscle; + SEFluidCircuitPath* m_RightPleuralToRespiratoryMuscle; + SEFluidCircuitPath* m_DriverPressurePath; + SEFluidCircuitPath* m_AirwayToPharynx; + SEFluidCircuitPath* m_PharynxToEnvironment; + SEFluidCircuitPath* m_PharynxToCarina; + SEFluidCircuitPath* m_AirwayToStomach; + SEFluidCircuitPath* m_ConnectionToAirway; + SEFluidCircuitPath* m_GroundToConnection; // Compartments SEGasCompartment* m_Environment; + SEGasCompartment* m_Carina; + SEGasSubstanceQuantity* m_CarinaO2; SEGasCompartment* m_Lungs; - SEGasCompartment* m_LeftAlveoli; - SEGasCompartment* m_RightAlveoli; + SEGasCompartment* m_LeftLung; + SEGasCompartment* m_RightLung; SEGasCompartment* m_PleuralCavity; SEGasCompartment* m_LeftPleuralCavity; SEGasCompartment* m_RightPleuralCavity; - SEGasCompartment* m_Carina; - SEGasCompartment* m_LeftLung; - SEGasCompartment* m_RightLung; SEGasCompartment* m_AnatomicDeadSpace; SEGasCompartment* m_AlveolarDeadSpace; SEGasCompartment* m_RightAlveolarDeadSpace; SEGasCompartment* m_LeftAlveolarDeadSpace; SEGasCompartment* m_Alveoli; - SEGasSubstanceQuantity* m_CarinaO2; + SEGasCompartment* m_LeftAlveoli; + SEGasCompartment* m_RightAlveoli; SEGasSubstanceQuantity* m_LeftAlveoliO2; SEGasSubstanceQuantity* m_RightAlveoliO2; // Mechanical Ventilation SEGasCompartment* m_MechanicalVentilationConnection; SELiquidCompartment* m_MechanicalVentilationAerosolConnection; - // Aerosol - SELiquidCompartment* m_AerosolAirway; - SELiquidCompartment* m_AerosolCarina; - SELiquidCompartment* m_AerosolLeftAnatomicDeadSpace; - SELiquidCompartment* m_AerosolLeftAlveolarDeadSpace; - SELiquidCompartment* m_AerosolLeftAlveoli; - SELiquidCompartment* m_AerosolRightAnatomicDeadSpace; - SELiquidCompartment* m_AerosolRightAlveolarDeadSpace; - SELiquidCompartment* m_AerosolRightAlveoli; - std::vector m_AerosolEffects; - SELiquidCompartment* m_LeftLungExtravascular; - SELiquidCompartment* m_RightLungExtravascular; // Cardiovascular - SELiquidCompartment* m_LeftPulmonaryCapillaries; - SELiquidCompartment* m_RightPulmonaryCapillaries; SELiquidSubstanceQuantity* m_AortaO2; SELiquidSubstanceQuantity* m_AortaCO2; + // Substance + SESubstance* m_Oversedation; - // Circuits - SEFluidCircuit* m_RespiratoryCircuit; + /////////////////////////////////////////// + // Lung Configuration Specific Variables // + /////////////////////////////////////////// - // These are the components we will iterate on for actions + // These are the lung components we will iterate on for actions struct LungComponent { eSide Side; @@ -252,48 +263,50 @@ namespace pulse SEFluidCircuitNode* DeadSpaceNode; SEFluidCircuitPath* ResistancePath; SEFluidCircuitPath* CompliancePath; - SELiquidCompartmentLink* ShuntLink; - SELiquidCompartmentLink* ArteriesLink; - SELiquidCompartmentLink* VeinsLink; SEFluidCircuitPath* ShuntPath; SEFluidCircuitPath* ArteriesPath; SEFluidCircuitPath* VeinsPath; SEGasCompartment* AlveoliCompartment; SELiquidCompartment* CapillaryCompartment; + SELiquidCompartmentLink* ShuntLink; + SELiquidCompartmentLink* ArteriesLink; + SELiquidCompartmentLink* VeinsLink; }; std::map m_LungComponents; - // Nodes - SEFluidCircuitNode* m_AirwayNode; - SEFluidCircuitNode* m_LeftPleuralNode; - SEFluidCircuitNode* m_RespiratoryMuscleNode; - SEFluidCircuitNode* m_RightPleuralNode; - SEFluidCircuitNode* m_AmbientNode; - SEFluidCircuitNode* m_StomachNode; // Paths - SEFluidCircuitPath* m_CarinaToLeftAnatomicDeadSpace; // base only - SEFluidCircuitPath* m_CarinaToRightAnatomicDeadSpace; // base only - SEFluidCircuitPath* m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace; // base only - SEFluidCircuitPath* m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace; // base only - SEFluidCircuitPath* m_LeftAlveolarDeadSpaceToLeftAlveoli; // base only - SEFluidCircuitPath* m_RightAlveolarDeadSpaceToRightAlveoli; // base only + SEFluidCircuitPath* m_CarinaToRightLung; + SEFluidCircuitPath* m_CarinaToLeftLung; + + /////////////////////////////////////////////////// + // Currently only for default lung configuration // + /////////////////////////////////////////////////// + + // Aerosol + SELiquidCompartment* m_AerosolAirway; + SELiquidCompartment* m_AerosolCarina; + SELiquidCompartment* m_AerosolLeftAnatomicDeadSpace; + SELiquidCompartment* m_AerosolLeftAlveolarDeadSpace; + SELiquidCompartment* m_AerosolLeftAlveoli; + SELiquidCompartment* m_AerosolRightAnatomicDeadSpace; + SELiquidCompartment* m_AerosolRightAlveolarDeadSpace; + SELiquidCompartment* m_AerosolRightAlveoli; + std::vector m_AerosolEffects; + SELiquidCompartment* m_LeftLungExtravascular; + SELiquidCompartment* m_RightLungExtravascular; + + SEFluidCircuitPath* m_CarinaToLeftAnatomicDeadSpace; + SEFluidCircuitPath* m_CarinaToRightAnatomicDeadSpace; + SEFluidCircuitPath* m_LeftAnatomicDeadSpaceToLeftAlveolarDeadSpace; + SEFluidCircuitPath* m_RightAnatomicDeadSpaceToRightAlveolarDeadSpace; + SEFluidCircuitPath* m_LeftAlveolarDeadSpaceToLeftAlveoli; + SEFluidCircuitPath* m_RightAlveolarDeadSpaceToRightAlveoli; - SEFluidCircuitPath* m_LeftPleuralToRespiratoryMuscle; - SEFluidCircuitPath* m_RightPleuralToRespiratoryMuscle; - SEFluidCircuitPath* m_DriverPressurePath; - SEFluidCircuitPath* m_AirwayToPharynx; - SEFluidCircuitPath* m_PharynxToEnvironment; - SEFluidCircuitPath* m_PharynxToCarina; - SEFluidCircuitPath* m_AirwayToStomach; SEFluidCircuitPath* m_EnvironmentToLeftChestLeak; SEFluidCircuitPath* m_EnvironmentToRightChestLeak; SEFluidCircuitPath* m_LeftAlveoliLeakToLeftPleural; SEFluidCircuitPath* m_RightAlveoliLeakToRightPleural; SEFluidCircuitPath* m_LeftNeedleToLeftPleural; SEFluidCircuitPath* m_RightNeedleToRightPleural; - SEFluidCircuitPath* m_LeftPulmonaryCapillary; - SEFluidCircuitPath* m_RightPulmonaryCapillary; - SEFluidCircuitPath* m_ConnectionToAirway; - SEFluidCircuitPath* m_GroundToConnection; SEFluidCircuitPath* m_LeftCardiovascularLeak; SEFluidCircuitPath* m_RightCardiovascularLeak; @@ -302,12 +315,5 @@ namespace pulse SEFluidCircuitPath* m_LeftAlveoliToLeftPleuralConnection; SEFluidCircuitPath* m_RightAlveoliToRightPleuralConnection; - - SEFluidCircuitCalculator* m_Calculator; - SEGasTransporter* m_GasTransporter; - SELiquidTransporter* m_AerosolTransporter; - - // Substance - SESubstance* m_Oversedation; }; END_NAMESPACE -- GitLab From abdfab1022c59b582120932149299c4192521c12 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Mon, 8 Sep 2025 09:13:01 -0400 Subject: [PATCH 30/35] Add expanded lungs unit tests and rebase scenarios --- data/config/DebugRun.config | 11 ----------- .../patient/HeterogeneousARDSExacerbation.zip.sha512 | 2 +- .../patient/PrimaryBlastLungInjury.zip.sha512 | 2 +- ...rdiovascularBloodGasesTestCircuitOutput.zip.sha512 | 1 + ...xpandedLungsCardiovascularCircuitOutput.zip.sha512 | 1 + ...dedLungsFullCardiovascularCircuitOutput.zip.sha512 | 1 + ...ratoryAndAnesthesiaMachineCircuitOutput.zip.sha512 | 1 + ...LungsRespiratoryAndInhalerCircuitOutput.zip.sha512 | 1 + ...ryAndMechanicalVentilationCircuitOutput.zip.sha512 | 1 + ...oryAndMechanicalVentilatorCircuitOutput.zip.sha512 | 1 + .../ExpandedLungsRespiratoryCircuitOutput.zip.sha512 | 1 + 11 files changed, 10 insertions(+), 13 deletions(-) create mode 100644 data/human/adult/baselines/unit_tests/pulse/ExpandedLungsCardiovascularBloodGasesTestCircuitOutput.zip.sha512 create mode 100644 data/human/adult/baselines/unit_tests/pulse/ExpandedLungsCardiovascularCircuitOutput.zip.sha512 create mode 100644 data/human/adult/baselines/unit_tests/pulse/ExpandedLungsFullCardiovascularCircuitOutput.zip.sha512 create mode 100644 data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndAnesthesiaMachineCircuitOutput.zip.sha512 create mode 100644 data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndInhalerCircuitOutput.zip.sha512 create mode 100644 data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilationCircuitOutput.zip.sha512 create mode 100644 data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilatorCircuitOutput.zip.sha512 create mode 100644 data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryCircuitOutput.zip.sha512 diff --git a/data/config/DebugRun.config b/data/config/DebugRun.config index 1aa8ab2d1..eee91e406 100644 --- a/data/config/DebugRun.config +++ b/data/config/DebugRun.config @@ -35,14 +35,3 @@ Macro ScenarioTest=ScenarioTestDriver FastPlot Baseline=scenarios/ Computed=./te patient/BasicStandard.json = ScenarioTest HumanAdultWholeBody -#ExpandedLungsCardiovascularCircuitAndTransport = EngineUnitTest Results=ExpandedLungsCardiovascularCircuitOutput,ExpandedLungsCardiovascularTransportOutput -#ExpandedLungsFullCardiovascularCircuitAndTransport = EngineUnitTest Results=ExpandedLungsFullCardiovascularCircuitOutput,ExpandedLungsFullCardiovascularTransportOutput -#ExpandedLungsCardiovascularBloodGases = EngineUnitTest Results=ExpandedLungsCardiovascularBloodGasesTestCircuitOutput,ExpandedLungsCardiovascularBloodGasesTestTransportOutput -#ExpandedLungsRespiratoryCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryCircuitOutput,ExpandedLungsRespiratoryTransportOutput -#ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryAndAnesthesiaMachineCircuitOutput,ExpandedLungsRespiratoryAndAnesthesiaMachineTransportOutput -#ExpandedLungsRespiratoryWithInhalerCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryAndInhalerCircuitOutput,ExpandedLungsRespiratoryAndInhalerTransportOutput,ExpandedLungsAerosolInhalerTransportOutput -#ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryAndMechanicalVentilatorCircuitOutput,ExpandedLungsRespiratoryAndMechanicalVentilatorTransportOutput -#ExpandedLungsRespiratoryWithMechanicalVentilationCircuitAndTransport = EngineUnitTest Results=ExpandedLungsRespiratoryAndMechanicalVentilationCircuitOutput,ExpandedLungsRespiratoryAndMechanicalVentilationTransportOutput - -#patient/HeterogeneousARDSExacerbation.json = ScenarioTest -#patient/PrimaryBlastLungInjury.json = ScenarioTest diff --git a/data/human/adult/baselines/scenarios/patient/HeterogeneousARDSExacerbation.zip.sha512 b/data/human/adult/baselines/scenarios/patient/HeterogeneousARDSExacerbation.zip.sha512 index 422c4831e..d72b1e1a0 100644 --- a/data/human/adult/baselines/scenarios/patient/HeterogeneousARDSExacerbation.zip.sha512 +++ b/data/human/adult/baselines/scenarios/patient/HeterogeneousARDSExacerbation.zip.sha512 @@ -1 +1 @@ -6c0bc42e7b22835b18fa2f50e9799951598c01c6ca43b2098ffaa956f62a281707cfaf4592e7f2fe72c674459a8d59e5400dcfa6a2680e7f89875200b0a6ad50 \ No newline at end of file +7db09c5bfe66d834c0af43bb146fce58c89698ab9ba06d77002f981d15f7b439c0a99b1857360048c4bc69e5aba96eb0f4e15c58604efe75d1ffcd5794dee17b \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/patient/PrimaryBlastLungInjury.zip.sha512 b/data/human/adult/baselines/scenarios/patient/PrimaryBlastLungInjury.zip.sha512 index aa99653b3..17e312670 100644 --- a/data/human/adult/baselines/scenarios/patient/PrimaryBlastLungInjury.zip.sha512 +++ b/data/human/adult/baselines/scenarios/patient/PrimaryBlastLungInjury.zip.sha512 @@ -1 +1 @@ -01047395fcf30e7c8b39891a61fd711b243df76dbb436426e878ddc51a23cd92003b83fae45360c6778b00927d033a789bc90775cb31e1bfbced451937af3db8 \ No newline at end of file +c6b7939149ad9f580e3a22dd3e8fcaca672c1d4945dc40c527f56fc5a6f38d25284cd5aa9f3f1ed0a96e1cddabd228755108b5672c48dfebf2c41b5f550d1b6f \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsCardiovascularBloodGasesTestCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsCardiovascularBloodGasesTestCircuitOutput.zip.sha512 new file mode 100644 index 000000000..c9929ce3a --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsCardiovascularBloodGasesTestCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +16bda466ad31ec0ff5ba178ee87f53cbebf7ad2b2946670c299a6504a6d4b4bd282d9caa30c02459fe4759b3b0d7ca7ded3023f5641cc6f00f8179a03696254c \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsCardiovascularCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsCardiovascularCircuitOutput.zip.sha512 new file mode 100644 index 000000000..fcf80e13f --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsCardiovascularCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +01046da19ae0426fbcf920facea624393cec014687bb0c0fd0fe0e970020209b14a98a93f0f256c4a4593ee7f2c0d44815e18457dfda06f6586016c8c3f1a2b2 \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsFullCardiovascularCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsFullCardiovascularCircuitOutput.zip.sha512 new file mode 100644 index 000000000..1fffcfbd8 --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsFullCardiovascularCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +6b7e26b87f82be420d164bf30267a4a2c6a29a84e8605cb1c13f285ae8171237775c339414d63a40c50f06e91a7ea01a36f6fddca3e8e4b9971b448dd1b70a95 \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndAnesthesiaMachineCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndAnesthesiaMachineCircuitOutput.zip.sha512 new file mode 100644 index 000000000..01a5919ff --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndAnesthesiaMachineCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +251abf383ca14c8b5a2825ec729035eb2f132b63da0b75f5cbf9a53f8a0d04039f5841bf4b027d7e2ef6140c7dc5ae573f40bb3e5ba25b4c4151f5249f102432 \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndInhalerCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndInhalerCircuitOutput.zip.sha512 new file mode 100644 index 000000000..ff21e4cce --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndInhalerCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +2a2b376b56747d9a75ca7425110cc772549bef562d593226ec193349f335dd53ce1653be1350e6fad9784aab2f00fa87ee915c17de40653908f45a05735725b8 \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilationCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilationCircuitOutput.zip.sha512 new file mode 100644 index 000000000..e9ddedc0f --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilationCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +917a0da546ada637157d4d75b9c02bc7e7cded25b2f211bc233ee624f22dad7c3de1af462e340d9e0b0700d603c1480f36cc406670f264876241d6bcf4fcc0b5 \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilatorCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilatorCircuitOutput.zip.sha512 new file mode 100644 index 000000000..d74fcec92 --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilatorCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +f8ef52f70a18f0c25ba0a56928ef1df30d773530a07a06b0783fa1df6fa3cfb1bfa206d2fc9431c8b53c2691c1046a74f1c6ffa75a03d72a4a4e48cdd086b7d0 \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryCircuitOutput.zip.sha512 new file mode 100644 index 000000000..2d9f26a4c --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +d1dfab455b19b6b8481653567bfbec868908f827d049719672ca9416d43884ea5b2b4c62edde0f1fec514d8459ba6b99acde2cf2a2a821df22ff65e09f36e11e \ No newline at end of file -- GitLab From cb5927261ea37ead24f39cc901cc19615a69bc25 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Mon, 8 Sep 2025 16:47:57 -0400 Subject: [PATCH 31/35] Support validation of the expanded lungs engine configuration --- data/config/PatientVerification.config | 9 ++++++- .../validation/SystemValidationData.xlsx | Bin 108886 -> 107828 bytes .../dataset/timeseries_dataset_reader.py | 12 +++++++-- .../pulse/pipelines/patient_validation.py | 25 ++++++++++-------- .../validation/timeseries_validation.py | 8 ++++-- 5 files changed, 38 insertions(+), 16 deletions(-) diff --git a/data/config/PatientVerification.config b/data/config/PatientVerification.config index 648a1855c..0abdbb79c 100644 --- a/data/config/PatientVerification.config +++ b/data/config/PatientVerification.config @@ -2,6 +2,12 @@ # DASH = Don't Run # ASTERISK = Expected Failure, don't run and put it in the expected failures table (Run Yellow) +# FastPlot = Plot every nth data point (hardcoded) +# FullPlot = Plot all data points +# FastPlotErrors = Only plot failures and only every nth data point (hardcoded) +# FullPlotErrors = Plot all data points only for failing data +# MemoryFastPlot = Do a fast plot, but manage memory better, slower plotting, but can handle larger files + ReportName=Patients Verification Test Summary ExecuteTests=true PlotResults=true @@ -23,8 +29,9 @@ Patients=all Executor=com.kitware.pulse.engine.testing.ScenarioTestDriver -Macro ScenarioTest=ScenarioTestDriver FastPlot Baseline=scenarios/ Computed=./test_results/scenarios +Macro ScenarioTest=ScenarioTestDriver FastPlotErrors Baseline=scenarios/ Computed=./test_results/scenarios @group Patient-Validation validation/Patient-Validation.json = ScenarioTest +validation/Patient-Validation-ExpandedLungs.json = ScenarioTest diff --git a/data/human/adult/validation/SystemValidationData.xlsx b/data/human/adult/validation/SystemValidationData.xlsx index d40c035d64f48ab84afd60e60df79a18871f9855..e5b6c072971b8ead35ac6b77b897b6ba31ca9d6e 100644 GIT binary patch delta 18952 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 diff --git a/src/python/pulse/pipelines/dataset/timeseries_dataset_reader.py b/src/python/pulse/pipelines/dataset/timeseries_dataset_reader.py index 2fa600f54..a358a1a44 100644 --- a/src/python/pulse/pipelines/dataset/timeseries_dataset_reader.py +++ b/src/python/pulse/pipelines/dataset/timeseries_dataset_reader.py @@ -37,7 +37,8 @@ class EngineConfig(Enum): def gen_patient_targets( - log_file: Path + log_file: Path, + config: EngineConfig ) -> SEPatientTimeSeriesValidation: """ Generate patient validation timeseries validation targets. @@ -46,6 +47,7 @@ def gen_patient_targets( 2. Validate that the stabilized patient meets the expected values cited from literature :param log_file: Path to log file. Could alternatively be the relevant patient file. + :param config: Engine configuration identifies which sheets to use from our SystemValidation xls file :return: validation targets, or None if was not successful. """ @@ -56,6 +58,8 @@ def gen_patient_targets( # If no name, set to filename for potential table filenames if not p.has_name() or not p.get_name(): p.set_name(log_file.stem) + elif config == EngineConfig.ExpandedLungs: + p.set_name(f"{p.get_name()}-{EngineConfig.ExpandedLungs.name}") table_name = "Patient" if table_name not in patient_validation.get_targets(): @@ -161,7 +165,7 @@ def gen_patient_targets( xls_file = Path(get_validation_dir() + "/SystemValidationData.xlsx") generate_validation_targets( xls_file=xls_file, - config=EngineConfig.Standard, + config=config, patient_validation=patient_validation ) return patient_validation @@ -225,6 +229,10 @@ def generate_validation_targets( ignore_sheets.append("CardiovascularExpandedLungs") ignore_sheets.append("RespiratoryExpandedLungs") ignore_sheets.append("CardiovascularComputationalLife") + elif config == EngineConfig.ExpandedLungs: + ignore_sheets.append("CardiovascularComputationalLife") + else: + raise Exception("Unsupported engine configuration for validation") try: # Update patient sheet so formulas can be re-evaluated with correct parameters diff --git a/src/python/pulse/pipelines/patient_validation.py b/src/python/pulse/pipelines/patient_validation.py index a838eaa6e..484fd3192 100644 --- a/src/python/pulse/pipelines/patient_validation.py +++ b/src/python/pulse/pipelines/patient_validation.py @@ -12,7 +12,7 @@ from pulse.cdm.utils.math_utils import format_float from pulse.cdm.enums import eEngineInitializationState from pulse.cdm.scenario import eScenarioExecutionState, SEScenarioExecStatus from pulse.cdm.validation import SEPatientTimeSeriesValidation -from pulse.pipelines.dataset.timeseries_dataset_reader import gen_patient_targets +from pulse.pipelines.dataset.timeseries_dataset_reader import gen_patient_targets, EngineConfig from pulse.pipelines.validation.timeseries_validation import ( validate, generate_validation_tables, gen_expected_str, gen_engine_val_str) @@ -44,10 +44,14 @@ def timeseries_validation_pipeline( :return: Evaluated targets """ - patient_validation = gen_patient_targets(log_file=log_file) + config = EngineConfig.Standard + if EngineConfig.ExpandedLungs.name in str(log_file): + config = EngineConfig.ExpandedLungs + + patient_validation = gen_patient_targets(log_file=log_file, config=config) if patient_validation is None: _pulse_logger.error("Unable to generate patient targets") - return False + return None validate(patient_validation=patient_validation, csv_filename=csv_file, @@ -56,7 +60,7 @@ def timeseries_validation_pipeline( # Generate Tables (Optional) if table_dir is not None: - generate_validation_tables(target_map=patient_validation, table_dir=table_dir) + generate_validation_tables(target_map=patient_validation, table_dir=table_dir, config=config) # Write the evaluated validation out (Optional) if out_file is not None: @@ -170,7 +174,7 @@ def main(): parser.add_argument( "-t", "--table-dir", type=Path, - default=None, + default=Path("./test_results/tables"), help="If provided, generate tables and write them in this directory." ) parser.add_argument( @@ -183,8 +187,6 @@ def main(): filename_base_paths = [] out_file = opts.output_file table_dir = opts.table_dir - if table_dir is None: - table_dir = Path("./test_results/tables") serialize_per_file = opts.serialize_per_file if 'verification' == opts.input or 'test_results' == opts.input: mode = opts.input @@ -269,10 +271,11 @@ def main(): if opts.input != "verification" and ".json" not in opts.input: if "test_results" == opts.input: # Push Standard patients to the front - all_validation.insert(0, all_validation.pop( - [idx for idx, tgt in enumerate(all_validation) if tgt.get_patient().get_name() == "StandardFemale"][0])) - all_validation.insert(0, all_validation.pop( - [idx for idx, tgt in enumerate(all_validation) if tgt.get_patient().get_name() == "StandardMale"][0])) + standards = [tgt.get_patient().get_name() + for tgt in all_validation if "Standard" in tgt.get_patient().get_name()] + for standard in standards: + all_validation.insert(0, all_validation.pop( + [idx for idx, tgt in enumerate(all_validation) if tgt.get_patient().get_name() == standard][0])) html_file = "./test_results/PatientSystemValidation.html" _pulse_logger.info(f"Writing {html_file}") f = open(html_file, "w") diff --git a/src/python/pulse/pipelines/validation/timeseries_validation.py b/src/python/pulse/pipelines/validation/timeseries_validation.py index 3f5f58f25..fb312eb32 100644 --- a/src/python/pulse/pipelines/validation/timeseries_validation.py +++ b/src/python/pulse/pipelines/validation/timeseries_validation.py @@ -18,7 +18,7 @@ from pulse.cdm.utils.markdown import table from pulse.cdm.utils.math_utils import percent_tolerance from pulse.cdm.validation import SETimeSeriesValidationTarget from pulse.cdm.io.validation import serialize_patient_time_series_validation_to_file - +from pulse.pipelines.dataset.timeseries_dataset_reader import EngineConfig _pulse_logger = logging.getLogger('pulse') @@ -278,13 +278,15 @@ def gen_engine_val_str(tgt: SETimeSeriesValidationTarget) -> str: def generate_validation_tables( target_map: SEPatientTimeSeriesValidation, - table_dir: Path + table_dir: Path, + config: EngineConfig ) -> None: """ Generates validation tables for given target map. :param target_map: Validation targets. :param table_dir: Tables will be saved to this directory. + :param config: Engine Configuration used for this patient :raises ValueError: Unknown comparison type :raises ValueError: Unknown patient (patient has no name so table file cannot be named) @@ -295,6 +297,8 @@ def generate_validation_tables( table_dir.mkdir(parents=True, exist_ok=True) patient_name = target_map.get_patient().get_name() + if config == EngineConfig.ExpandedLungs: + patient_name = patient_name + EngineConfig.ExpandedLungs.name if not patient_name: # Shouldn't really happen as dataset reader sets to patient filename if one doesn't exist raise ValueError("Unknown patient found, cannot write table as I don't know what to name it.") -- GitLab From e6f1a4a9c15b38b5050e30d25cb7ee5a75c68050 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Tue, 9 Sep 2025 09:10:48 -0400 Subject: [PATCH 32/35] Add ExpandedLungs baselines --- .../validation/Patient-Validation-Bradycardic.zip.sha512 | 2 +- .../scenarios/validation/Patient-Validation-Carol.zip.sha512 | 2 +- .../scenarios/validation/Patient-Validation-Cynthia.zip.sha512 | 2 +- .../validation/Patient-Validation-DefaultFemale.zip.sha512 | 2 +- .../validation/Patient-Validation-DefaultMale.zip.sha512 | 2 +- .../Patient-Validation-ExpandedLungs-Bradycardic.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-Carol.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-Cynthia.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-DefaultFemale.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-DefaultMale.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-ExtremeFemale.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-ExtremeMale.zip.sha512 | 1 + .../validation/Patient-Validation-ExpandedLungs-Gus.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-Hassan.zip.sha512 | 1 + .../validation/Patient-Validation-ExpandedLungs-Jane.zip.sha512 | 1 + .../validation/Patient-Validation-ExpandedLungs-Jeff.zip.sha512 | 1 + .../validation/Patient-Validation-ExpandedLungs-Joel.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-Nathan.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-Overweight.zip.sha512 | 1 + .../validation/Patient-Validation-ExpandedLungs-Rick.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-Soldier.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-StandardFemale.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-StandardMale.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-Tachycardic.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-Underweight.zip.sha512 | 1 + .../Patient-Validation-ExpandedLungs-Ventilated.zip.sha512 | 1 + .../validation/Patient-Validation-ExtremeFemale.zip.sha512 | 2 +- .../validation/Patient-Validation-ExtremeMale.zip.sha512 | 2 +- .../scenarios/validation/Patient-Validation-Gus.zip.sha512 | 2 +- .../scenarios/validation/Patient-Validation-Hassan.zip.sha512 | 2 +- .../scenarios/validation/Patient-Validation-Jane.zip.sha512 | 2 +- .../scenarios/validation/Patient-Validation-Jeff.zip.sha512 | 2 +- .../scenarios/validation/Patient-Validation-Joel.zip.sha512 | 2 +- .../scenarios/validation/Patient-Validation-Nathan.zip.sha512 | 2 +- .../validation/Patient-Validation-Overweight.zip.sha512 | 2 +- .../scenarios/validation/Patient-Validation-Rick.zip.sha512 | 2 +- .../scenarios/validation/Patient-Validation-Soldier.zip.sha512 | 2 +- .../validation/Patient-Validation-StandardFemale.zip.sha512 | 2 +- .../validation/Patient-Validation-StandardMale.zip.sha512 | 2 +- .../validation/Patient-Validation-Tachycardic.zip.sha512 | 2 +- .../validation/Patient-Validation-Underweight.zip.sha512 | 2 +- .../validation/Patient-Validation-Ventilated.zip.sha512 | 2 +- ...LungsRespiratoryAndAnesthesiaMachineCircuitOutput.zip.sha512 | 2 +- .../ExpandedLungsRespiratoryAndInhalerCircuitOutput.zip.sha512 | 2 +- ...sRespiratoryAndMechanicalVentilationCircuitOutput.zip.sha512 | 2 +- ...gsRespiratoryAndMechanicalVentilatorCircuitOutput.zip.sha512 | 2 +- .../pulse/ExpandedLungsRespiratoryCircuitOutput.zip.sha512 | 2 +- 47 files changed, 47 insertions(+), 26 deletions(-) create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Bradycardic.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Carol.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Cynthia.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-DefaultFemale.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-DefaultMale.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-ExtremeFemale.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-ExtremeMale.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Gus.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Hassan.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Jane.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Jeff.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Joel.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Nathan.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Overweight.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Rick.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Soldier.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-StandardFemale.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-StandardMale.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Tachycardic.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Underweight.zip.sha512 create mode 100644 data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Ventilated.zip.sha512 diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Bradycardic.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Bradycardic.zip.sha512 index 1cc8571c2..1a0877990 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Bradycardic.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Bradycardic.zip.sha512 @@ -1 +1 @@ -a29db7ff447c12ae84a16361040eb4bed9ab1457d3f245005e0b17125f1e230ffa4d76dbb937f14ff48cd1098681243fb374ef65335029b34c098abbe545426c \ No newline at end of file +925694d20804ae484ffb106ef8e6324f2e4d93ce4ab63cef7cd01ec8ad04c0f15705d3881d1214ef60b212e1e0f763235d7f4c3652179c14525e916ce25e4a01 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Carol.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Carol.zip.sha512 index 6d17994c9..804024100 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Carol.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Carol.zip.sha512 @@ -1 +1 @@ -1d29cd4f4927fce041c74c486e3d4eefba8e320033c55f8f62b793b3917ed0811f9ce049489ab52aa517d29f08974fadfa3ccb79f35ac98e47d984dc7f214baa \ No newline at end of file +7cd826b0573cab28ceff3d26bca8bb2f304520ce6301ab9d2fac05bada69657b20691e7c23263388a6422e51579f204b0b508bf9ca47f7dd89d57685512b4283 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Cynthia.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Cynthia.zip.sha512 index 4cea09b09..3427f1dad 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Cynthia.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Cynthia.zip.sha512 @@ -1 +1 @@ -cb8682ccd6d66f428592a6cd50338359a0e40505f736d243e989ea418e8e3dc470e7421266a83a8021f37cde81e0ccfca047a98db17d3ec07ac1af934c2f2839 \ No newline at end of file +c406977678224ecd0330c6df78d9514132b090670bbaead97dd18b588de3154c201224e8e4998ef628a08b479735f625f36a0f1509500c2a67e3d255dcef87b6 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-DefaultFemale.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-DefaultFemale.zip.sha512 index c2a319c9f..e86ae1453 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-DefaultFemale.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-DefaultFemale.zip.sha512 @@ -1 +1 @@ -a6956beb3b3d2521a125e8979e09249192ac6e686f7b30bb7a27ffe6fb00c30fdaa7b267d80cd66f8211e8da81d829633ef97848bbcd00835f33d4fa57e17005 \ No newline at end of file +80da553e09c9c36beff25d5639384423bc9ba67af273b01dade702272ab7ea609088b4df2e3c9eabbec3733e902ab83f399256e77d38d79eb7beccb159d8ea7e \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-DefaultMale.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-DefaultMale.zip.sha512 index d466245fc..eb58b9615 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-DefaultMale.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-DefaultMale.zip.sha512 @@ -1 +1 @@ -71e0a964cfd61bd67ee22b65ac9069ad1120e561143f5d12fde3f893a5606a5f197f89e4cd32a1ddb6fc4e6db505a39c0622cf65b9c154aa56c1ebc650362c2e \ No newline at end of file +f22415065873dd70d170e2a13096c78a60683eae74941f5774155ef7ba7324a79aba2aa327c52bb568d850b0a6d418ae799eb1f96507c386e9f7ff5051b14360 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Bradycardic.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Bradycardic.zip.sha512 new file mode 100644 index 000000000..dcae6b908 --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Bradycardic.zip.sha512 @@ -0,0 +1 @@ +ce6ed4facc725c381b304b1c716396012279a9a6c86d1cccd01c21916f077ee31d6ec6463a8ed978a7791a98092fae0261ef7538c7a8229fd449f7755d93c13c \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Carol.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Carol.zip.sha512 new file mode 100644 index 000000000..2df5ae052 --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Carol.zip.sha512 @@ -0,0 +1 @@ +64ed410dcbdc3f7389bcdfd0636a42bd579a7bd3a9a6b391d220dce473609f8cf7fcfbc404f2fe0326b350271d5e67241a6b74efad2f33b3fb9dd4c336caa650 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Cynthia.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Cynthia.zip.sha512 new file mode 100644 index 000000000..618400724 --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Cynthia.zip.sha512 @@ -0,0 +1 @@ +6e776eeea9ed7decff00938f5501dd4b6e8930880a18779f439fd875894fe3f33cf7846a3dc6ea47034efa6c4f6bc10d7b0dd47d8aa3cf22e53059bcedbbed03 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-DefaultFemale.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-DefaultFemale.zip.sha512 new file mode 100644 index 000000000..fc8796fad --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-DefaultFemale.zip.sha512 @@ -0,0 +1 @@ +0e3aa29c229aeecff954cb0342ffa177f00fa33e6296a3bbde21377e7b88494e7569879befc82432b8ada12e4b4987764355f14b613cda33fd3cb672fac2c9ef \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-DefaultMale.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-DefaultMale.zip.sha512 new file mode 100644 index 000000000..9fd6e3c43 --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-DefaultMale.zip.sha512 @@ -0,0 +1 @@ +fc498972f75718a5ff3ca3a73e25d2cd81494cfbbadc3b82d672c2ade8678c5e826221c85986aa3303c738e2fb0960becfc7d3fd8debb460d9a33581a6d0cbd1 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-ExtremeFemale.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-ExtremeFemale.zip.sha512 new file mode 100644 index 000000000..cc74cb857 --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-ExtremeFemale.zip.sha512 @@ -0,0 +1 @@ +b91980081bd68f4a7b37fddf1f65ecabdb6ae87e51415f8af5a9baa3f03638ec5c68226482e0566b296f8f881a31673c69e78b0c9184e1514b8e8dce0410fe75 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-ExtremeMale.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-ExtremeMale.zip.sha512 new file mode 100644 index 000000000..8561fe3f8 --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-ExtremeMale.zip.sha512 @@ -0,0 +1 @@ +c4ba776d0a90fc9fd72767f580a2f887785a48176e9fd4fdbb51086baf4042037ac235edefd4f2c27858b952e4dc47bb27257ce1e21cebc9a8288fe6d06196ab \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Gus.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Gus.zip.sha512 new file mode 100644 index 000000000..4085042cb --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Gus.zip.sha512 @@ -0,0 +1 @@ +53a27b749d1f6e9affffe6e065549ed9aec26323733a5a7693a80eff92fa9f788d872f0b0b5bad22d1d351108aebc024fe671b26ffb9fae41cc0cca0bd2410c7 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Hassan.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Hassan.zip.sha512 new file mode 100644 index 000000000..89210b35e --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Hassan.zip.sha512 @@ -0,0 +1 @@ +c5bef1995669214bd1c6423545f59d7050af7c606f6895fca53c8eedae812fcf0b18454d2ecbc40348607c3b7f357ef7c5ed1c19e5442015c67afca7e348e066 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Jane.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Jane.zip.sha512 new file mode 100644 index 000000000..eec6bf0a0 --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Jane.zip.sha512 @@ -0,0 +1 @@ +5676864387e5aaa0b6b0b50bcaa415cce970488ec3530cd48fb4a5cb2397b84cabbe68b6e3c6240dea4746ec224bd9ddf31790a491ac73da1d693ff0539a3f17 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Jeff.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Jeff.zip.sha512 new file mode 100644 index 000000000..24c307a71 --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Jeff.zip.sha512 @@ -0,0 +1 @@ +aeb0eeb5f890d36221f23ef640d904b1774697af092d87af3d84f9f842fb90c06125da09e4e2ebedcf349596a6be15917d851cefd9f416bf511f9b95e82658ed \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Joel.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Joel.zip.sha512 new file mode 100644 index 000000000..aa5a518bc --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Joel.zip.sha512 @@ -0,0 +1 @@ +69422c4c2844c666a66a9eab45f7937a70d2405f1533809d53c09c1727d3b90be6df3e779ddad793d845f35a5e4206647ae69209d8e15ae6d8daab26797dd669 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Nathan.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Nathan.zip.sha512 new file mode 100644 index 000000000..96a4a960c --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Nathan.zip.sha512 @@ -0,0 +1 @@ +360cb1f85c0e2345e6a1161b26ef4b82137b4da0b692144047fffe7f292e9da2085dfefe93bd8b64d5ada2fe3152b97a674881035f90deb3e59c505097f7fcbe \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Overweight.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Overweight.zip.sha512 new file mode 100644 index 000000000..4c548f336 --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Overweight.zip.sha512 @@ -0,0 +1 @@ +882b71e88ec6b81db9f488b0d74c9f69bb2fd94224ad8c0fdcdd30d076ca5a7226e7369aec0c9dcc27e67fc90f2cbd6b4e7f4d51862fafcfa348752fd40f0462 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Rick.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Rick.zip.sha512 new file mode 100644 index 000000000..b6a7ebd99 --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Rick.zip.sha512 @@ -0,0 +1 @@ +6bcbb64708f8580168c1df9372f9735ed359d6a697c09a482c98708f2cfd1ff97ce45426b66006ad8ddc1298bd405ed98e3e6d181d652eca1479b8aad91eea7a \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Soldier.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Soldier.zip.sha512 new file mode 100644 index 000000000..85a211cad --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Soldier.zip.sha512 @@ -0,0 +1 @@ +779a3f3cfe1605b3e15f5c22280e9dbc389e0ccc27fefb2525edd06a9ea3899ea91d217a94bcae9278bd5153ec750a1f3f68d05ee7be706647acb7072d1232de \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-StandardFemale.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-StandardFemale.zip.sha512 new file mode 100644 index 000000000..46234532f --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-StandardFemale.zip.sha512 @@ -0,0 +1 @@ +caf4564831e9fbb01e7113564edc398277743ed59638648b18c2706ca1f174a8883f9f60f5db4f304060bbef953d6a2510c3e3656e84c7fa92f0cb74e30a1e5c \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-StandardMale.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-StandardMale.zip.sha512 new file mode 100644 index 000000000..5396bb938 --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-StandardMale.zip.sha512 @@ -0,0 +1 @@ +d60b58bc2ef43eb5f04a89c9112f52d1103b0b33bd6e7ac5648d6484d86f4f59ad34190029c683fd685f24751c3fd70052f1dd366040470182d352e4fde54d71 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Tachycardic.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Tachycardic.zip.sha512 new file mode 100644 index 000000000..18445377c --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Tachycardic.zip.sha512 @@ -0,0 +1 @@ +837170d284129cfd16ceeacf5fd8530b28a071de85104c098839d1b3c1da710d36c5b3faef933f3b8f475514809f123fc4d7a97e31b4e8aec9866ad5361b6378 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Underweight.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Underweight.zip.sha512 new file mode 100644 index 000000000..8ef1d817c --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Underweight.zip.sha512 @@ -0,0 +1 @@ +8e072c950beb9e9f65a4a7146b7e5a47679f47ef3d54f71ed58cc05d9448191f13d3fa6aff6e06c399e76513013d1882415d109fcc029950799f5208ec7ee13c \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Ventilated.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Ventilated.zip.sha512 new file mode 100644 index 000000000..e340c7bc7 --- /dev/null +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExpandedLungs-Ventilated.zip.sha512 @@ -0,0 +1 @@ +dbba53c0a415fe17d0a1438387910ad4343a10b027f529ff942fe7eb6d203c6a832a17f3f056f9752a633637d05cac8aa76dff600a34f23767ad6d18fe0aa66e \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExtremeFemale.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExtremeFemale.zip.sha512 index 26e98667d..29efd4ef3 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExtremeFemale.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExtremeFemale.zip.sha512 @@ -1 +1 @@ -ee30f6921a243aa90330e592f1f134a44d9c1a3d09443e09d44ca93bd7fa57420c0be9a2c310b157ea794b48c0aa3c7cf3b7dab854ed0490120debf7e26a36a9 \ No newline at end of file +f00dedcb2acf1264b0d0fddd2777e1275bb6285c926364e4020c6c6b9a46838adfc0823f4459e4668d3bf8c0c6bae36b853e460f922b0f3acdbf2143106811d6 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExtremeMale.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExtremeMale.zip.sha512 index 96611f9c3..652379340 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExtremeMale.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-ExtremeMale.zip.sha512 @@ -1 +1 @@ -8809f2d9921234098bf5cbd85b4ce97fc86cfb323cb19e93e91824aaf4a9e30dcdf34843f4c704762520b565598df81a5fea7838ad0d013de3f5de38ac44158d \ No newline at end of file +df3c6b675076551b15c749bf9d89114720c51d12af00488776b03bd4c5ea5053f225ae5dba19bd15ee03eedd60895f5d74c2238f6c5f5b9fa7cef731dd2b6bb1 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Gus.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Gus.zip.sha512 index 091440cbf..d0b1e8508 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Gus.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Gus.zip.sha512 @@ -1 +1 @@ -ea7403789c3c4da280884098d8cd5e3627b090eb0944638ef4369121efab7d3d4dbd523565c35e00bebf43a4c5e15753dd11520b157cf1bee250d4c07ba66915 \ No newline at end of file +3a6fe81393403fa3da929d08e29e3d37f8d64ada0bc08cad4e3306bb46dba4ec5ebd1a311bfa6372ffcde651ea3316c85f670f05aea6933a611313dc8d868bc5 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Hassan.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Hassan.zip.sha512 index de9f1f6e1..bfc4a016e 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Hassan.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Hassan.zip.sha512 @@ -1 +1 @@ -502a3e54ab9f2abd9586d56c43e483d0d750b2c6fd24ebf30227e27cee8d68448d3cffc0486ac99f973813c56459f63079f60f0fed6f008b9b123c09799b877c \ No newline at end of file +5bed68c0e934464fd9f1f2b7cdf8c47c15a747218d3204a993c5031d9a19fffbe2b7c981b8e28514205539576703f4e79805e9df0f53033391ee83abb88995e7 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Jane.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Jane.zip.sha512 index fb93070be..e022b8ca6 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Jane.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Jane.zip.sha512 @@ -1 +1 @@ -20e9ba52776d27c808f0535e01b389b623f4fbda78933d39c4faf7eb3622d707b359bd17725ecbf408c3bdc67c84272c60fa84759a475309247dcdd6020a0bcc \ No newline at end of file +522cb841aef39d0be3033997887d45eb39fa0b0abe718fb231656c4d9dff0475bfd7a54ac892809ffd80c43165f02ed8b12b1ab0a6fa45fe863c1caa4c734bd1 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Jeff.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Jeff.zip.sha512 index 9e4768432..729482f84 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Jeff.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Jeff.zip.sha512 @@ -1 +1 @@ -3fda20ce8bd5cc6d84e6bb469143fc658ba2b03ecbad7ba2ff802526ed8238a376f12edfa284121ec6465448303024f74053c0363e4f117ccce01ccc7633e4a0 \ No newline at end of file +ee78b592423871be28899a9233537090145db61393af7075f38c669200203b60dea5e87e30f1ea4d8c058598cd3cd5de1166b6f8159339e8a3e28366e7f48bb6 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Joel.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Joel.zip.sha512 index c8df7c14c..99360ecc2 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Joel.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Joel.zip.sha512 @@ -1 +1 @@ -81268820a982737833a7765b533021f4857dee583ee2618764831b5278a22e9d6851a1f67bc84f27ce412b7eda564eaae49d31edaf7e23b6fa8e5048dfb167d6 \ No newline at end of file +940e457cccf777cc1bf6adffccda9a59ecd0525d3c9499b24f86fd633fa58158d4ddb82eb6016f570feca0b3e6d973edca940930b108aad84ffe9691a77be692 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Nathan.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Nathan.zip.sha512 index 999910f8b..c4814087b 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Nathan.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Nathan.zip.sha512 @@ -1 +1 @@ -857417caa3b9bf6bf346f9f8dec674a5473318e537d31758a763fc581cac32407dc04da625175348d96323dff76cfef1a603b7060da58b6bb2bc029c68c579c0 \ No newline at end of file +d31a6bdd15f617119ef9149d306d9aace6f4ac7876515237a443f711ce806dd9174303b6fc085dbd759b94afc06f67d3d14fb98e2274f536286bbe06afd56c79 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Overweight.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Overweight.zip.sha512 index 3db6b52d2..70ea8a165 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Overweight.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Overweight.zip.sha512 @@ -1 +1 @@ -80e614893e7c8b052d4b9f96438b6c04b8a3ae7f8681b4e9a8d2e40536b7a591af748f563f6e06545c6f80e49489c91fb0bbab81fc321a0d2f68df9f88fe73fc \ No newline at end of file +fd4f1708160800f3a3a2b66aa2d6de707afbdb8387e785cd2911c622ed7e0cfdac7bd3107d92f58fc4be5b80a0a2427e0366e44e34bc47ff7dc1d0a886ea9159 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Rick.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Rick.zip.sha512 index c54d86eaf..a49d8af94 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Rick.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Rick.zip.sha512 @@ -1 +1 @@ -ccf03e9b5a492e0e3309113312890d10e6657c4d465d75ae6135093e2de3f093b3dcc3e2c53e8ce0adb736deeb4ed4b0db346b007ccb8e0447ad1dc5eb4b5aa9 \ No newline at end of file +a932db55136bb9ead0c93fbb89077870f5e0072379b4057a8ed43eda1800f944f44f170f17296a14446cb5248591173f157649aab3e4edc3f492335b8e329d62 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Soldier.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Soldier.zip.sha512 index 8a240c074..e1809156b 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Soldier.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Soldier.zip.sha512 @@ -1 +1 @@ -7ad2df9dc402cd66ffba8bce2d1d26694df129d81a5e081f73f58593ae2c28aa280a22c42c6d9066e0e8b7d505ee86cead8615299e480599e9277c9db9f888bf \ No newline at end of file +ece817d14fe017f654ebc32bb124c48dea654b59286181d3f0f9cb54cd60f5935b12912970c45014409c788eb1045faa4818650cefc2c086df9b0f7bae8a8672 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-StandardFemale.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-StandardFemale.zip.sha512 index 8d86e9b75..47f86daef 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-StandardFemale.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-StandardFemale.zip.sha512 @@ -1 +1 @@ -5bd13a9fb68fbc42eb69d4928ae151e71c87b5d9f31e36b3b9317d6192e131d49c6ec6618af91e8053143c4292c46031fb6d38cf424c81d11be7e54ae0d4645f \ No newline at end of file +d3d62eeb5481b0057867a1d308488fd572e733167f0a9304d28f6ade89c8f4d07c7707a1857b972d6ec986f34e3afefa749c300ca7b6c690f3928c4942cf48a5 \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-StandardMale.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-StandardMale.zip.sha512 index 8232e2097..eaa4b3cad 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-StandardMale.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-StandardMale.zip.sha512 @@ -1 +1 @@ -93c7b3be3585ce5c2102afe82029790621cc2998116c9a64d8880a5f7d8c594ac42965fddad2ad0ba6c5734045de0886a55f8b1a7a0fa95571c3cc61e577044e \ No newline at end of file +284be731e93009d87d8134b58338f1553c843e68c9e522d44cbb9191f5963b181cfc563cc43e93b17fe52ea9942d4a4310ee4daa1d64a53cf8883ad977c90ffa \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Tachycardic.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Tachycardic.zip.sha512 index d304925c4..6f0ed78bb 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Tachycardic.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Tachycardic.zip.sha512 @@ -1 +1 @@ -59b21fe1e8c0a7c7e184b32292ef4edffafff7d644a80c48d5099f24b0c9ceb462b5659e9fe58ba4e84119d03001f89544888cce9aafe7cda514a75109e5a56a \ No newline at end of file +5cd0616965b3ebc6e22c7367f1899c7c0bc36d3d14938084c962004ba587a27a501157438b73ce4e79c6f2586f88607e078064da33a19639b80084316367f0dc \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Underweight.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Underweight.zip.sha512 index 357e56c04..2a2f3a114 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Underweight.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Underweight.zip.sha512 @@ -1 +1 @@ -e80326c0bcdebaa6d79f6eb83532926aaf508e11d21957babef5e4a5cf87e535b7cc21aa5876c8e907fbe089f7b637a71bc6382dd282d768e198e7918c5a4185 \ No newline at end of file +45012f6ac9c0767316f0955a90186965126c7b8ae5a1182eed289a63c2384ef77d343b5d85a874cf8b9cb4396aae19ffc40eacdf84e73a90e59278ea255aa1ed \ No newline at end of file diff --git a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Ventilated.zip.sha512 b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Ventilated.zip.sha512 index 2259e7b21..c9b2b696b 100644 --- a/data/human/adult/baselines/scenarios/validation/Patient-Validation-Ventilated.zip.sha512 +++ b/data/human/adult/baselines/scenarios/validation/Patient-Validation-Ventilated.zip.sha512 @@ -1 +1 @@ -0be130da83e2d7dc3e7c0cc85b1c3e7131bbde254bc97cb38db4f8fe96dab752972fe6391af959f4736b337b66f09def85a2b7cec2a92391c47f43479c63f175 \ No newline at end of file +0aed45ffdf000a2aba4885041c0f46f263c7c293adc6e3d60e575ce20b5579090f5ee3c3e7f16f2c1d794bd82d02efcf613362a139badba9514c4219af964218 \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndAnesthesiaMachineCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndAnesthesiaMachineCircuitOutput.zip.sha512 index 01a5919ff..b67d9d1ec 100644 --- a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndAnesthesiaMachineCircuitOutput.zip.sha512 +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndAnesthesiaMachineCircuitOutput.zip.sha512 @@ -1 +1 @@ -251abf383ca14c8b5a2825ec729035eb2f132b63da0b75f5cbf9a53f8a0d04039f5841bf4b027d7e2ef6140c7dc5ae573f40bb3e5ba25b4c4151f5249f102432 \ No newline at end of file +1bce7346584577642fd38c1a937af3ea71a226cd4a71ed9ff3b9289df50294c521ac19f43ffe7de8987fe89f0731174c579b6411ebfcb74b9d7d94fcf1c00b72 \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndInhalerCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndInhalerCircuitOutput.zip.sha512 index ff21e4cce..8859b3b14 100644 --- a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndInhalerCircuitOutput.zip.sha512 +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndInhalerCircuitOutput.zip.sha512 @@ -1 +1 @@ -2a2b376b56747d9a75ca7425110cc772549bef562d593226ec193349f335dd53ce1653be1350e6fad9784aab2f00fa87ee915c17de40653908f45a05735725b8 \ No newline at end of file +38fcf62c9c3dd5ca647a9d65730c932283666002d674a060d2c7c83a77c9504c1004287883ab28bfcd83226d3fc76aa3cc802bb70bb48857ff1579f7cc839378 \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilationCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilationCircuitOutput.zip.sha512 index e9ddedc0f..9f2ec2347 100644 --- a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilationCircuitOutput.zip.sha512 +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilationCircuitOutput.zip.sha512 @@ -1 +1 @@ -917a0da546ada637157d4d75b9c02bc7e7cded25b2f211bc233ee624f22dad7c3de1af462e340d9e0b0700d603c1480f36cc406670f264876241d6bcf4fcc0b5 \ No newline at end of file +08e6398f249362888262dae2594336085a4ef6fdb68123cc5c0440ab6e03a2146b8a421ee06795ddf11c0fe0e71d8a2ba9c3e68a568aa0c5da2ec47c42db18f1 \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilatorCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilatorCircuitOutput.zip.sha512 index d74fcec92..58f503289 100644 --- a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilatorCircuitOutput.zip.sha512 +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilatorCircuitOutput.zip.sha512 @@ -1 +1 @@ -f8ef52f70a18f0c25ba0a56928ef1df30d773530a07a06b0783fa1df6fa3cfb1bfa206d2fc9431c8b53c2691c1046a74f1c6ffa75a03d72a4a4e48cdd086b7d0 \ No newline at end of file +9269f3f79584d9e08e5397eb0fedb6119dea0d6053bf328344a1d4d2f6f1fe9291afee0d3bf7df3f2ec7fa395b9c29b79755f6dd7baff63c53879d4dc3284944 \ No newline at end of file diff --git a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryCircuitOutput.zip.sha512 index 2d9f26a4c..b8fe2f92b 100644 --- a/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryCircuitOutput.zip.sha512 +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryCircuitOutput.zip.sha512 @@ -1 +1 @@ -d1dfab455b19b6b8481653567bfbec868908f827d049719672ca9416d43884ea5b2b4c62edde0f1fec514d8459ba6b99acde2cf2a2a821df22ff65e09f36e11e \ No newline at end of file +5a0a9031d5bd96ccc6e0feaad9597ee753941a07c621e2ed9b5820f93100bb6ddcdcfb34b9372c470b5a11ab37a71cc362f38a8496b103dfccfc9897edc07a86 \ No newline at end of file -- GitLab From be3d1cd0286baf44d4c51f9d470cdf0f344ef421 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Tue, 9 Sep 2025 12:55:23 -0400 Subject: [PATCH 33/35] Update patient verification reporting order --- src/python/pulse/pipelines/patient_validation.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/python/pulse/pipelines/patient_validation.py b/src/python/pulse/pipelines/patient_validation.py index 484fd3192..0a2f9b685 100644 --- a/src/python/pulse/pipelines/patient_validation.py +++ b/src/python/pulse/pipelines/patient_validation.py @@ -270,12 +270,14 @@ def main(): # Only write a html file for test results if opts.input != "verification" and ".json" not in opts.input: if "test_results" == opts.input: + names = [tgt.get_patient().get_name() for tgt in all_validation] # Push Standard patients to the front - standards = [tgt.get_patient().get_name() - for tgt in all_validation if "Standard" in tgt.get_patient().get_name()] + standards = ["StandardFemale-ExpandedLungs", "StandardFemale", + "StandardMale-ExpandedLungs", "StandardMale"] for standard in standards: - all_validation.insert(0, all_validation.pop( - [idx for idx, tgt in enumerate(all_validation) if tgt.get_patient().get_name() == standard][0])) + if standard in names: + all_validation.insert(0, all_validation.pop( + [idx for idx, tgt in enumerate(all_validation) if tgt.get_patient().get_name() == standard][0])) html_file = "./test_results/PatientSystemValidation.html" _pulse_logger.info(f"Writing {html_file}") f = open(html_file, "w") -- GitLab From b18ff5705ea9432c049404cb81605c91b6137a41 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Tue, 9 Sep 2025 18:04:34 -0400 Subject: [PATCH 34/35] Correct patient v&v report names --- src/python/pulse/pipelines/full_html_report.py | 4 ++-- src/python/pulse/pipelines/patient_validation.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/python/pulse/pipelines/full_html_report.py b/src/python/pulse/pipelines/full_html_report.py index 0961f4aab..f714effc7 100644 --- a/src/python/pulse/pipelines/full_html_report.py +++ b/src/python/pulse/pipelines/full_html_report.py @@ -18,8 +18,8 @@ if __name__ == "__main__": reports.append(Path("./test_results/EngineUnitTests.html")) reports.append(Path("./test_results/ScenarioVerification.html")) reports.append(Path("./test_results/DrugPKVerification.html")) - reports.append(Path("./test_results/PatientSystemVerification.html")) - reports.append(Path("./test_results/PatientSystemValidation.html")) + reports.append(Path("./test_results/PatientVerification.html")) + reports.append(Path("./test_results/PatientValidation.html")) html_file = "./test_results/PulseTestReport.html" _pulse_logger.info(f"Writing {html_file}") diff --git a/src/python/pulse/pipelines/patient_validation.py b/src/python/pulse/pipelines/patient_validation.py index 0a2f9b685..354a756bb 100644 --- a/src/python/pulse/pipelines/patient_validation.py +++ b/src/python/pulse/pipelines/patient_validation.py @@ -278,7 +278,7 @@ def main(): if standard in names: all_validation.insert(0, all_validation.pop( [idx for idx, tgt in enumerate(all_validation) if tgt.get_patient().get_name() == standard][0])) - html_file = "./test_results/PatientSystemValidation.html" + html_file = "./test_results/PatientValidation.html" _pulse_logger.info(f"Writing {html_file}") f = open(html_file, "w") f.write("\n") -- GitLab From f7dcef51329766f9fd30af941a91ecc20400ddf2 Mon Sep 17 00:00:00 2001 From: Aaron Bray Date: Wed, 10 Sep 2025 09:21:44 -0400 Subject: [PATCH 35/35] Remove proj directory from repo --- .gitignore | 2 +- proj/eclipse/.gitignore | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 proj/eclipse/.gitignore diff --git a/.gitignore b/.gitignore index 5dbb65f48..b9c416431 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,4 @@ proj/eclipse/build /src/python/.idea/* /src/python/pulse.egg* -/proj/eclipse/build +/proj/* diff --git a/proj/eclipse/.gitignore b/proj/eclipse/.gitignore deleted file mode 100644 index 84c048a73..000000000 --- a/proj/eclipse/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build/ -- GitLab