diff --git a/.gitignore b/.gitignore index 5dbb65f484aad00293fd30af04d3c470a8b5a1e3..b9c416431ce349830f90cf17e8ee456d0e591d16 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/bin/InitialPatientState.json b/bin/InitialPatientState.json index db1697d64a9a2e93ee371190531f214ab4f15ccf..49b9804c4ff47905b02d212c737e1452c54990e6 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/data/config/EngineUnitTests.config b/data/config/EngineUnitTests.config index facc2d262b4a635bc0474b5619287b3e778b4ebb..256a036241d232c99c20627d09a30c40199d560b 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/data/config/PatientVerification.config b/data/config/PatientVerification.config index 648a1855ccaf905a236e9676598b510efd77eb8a..0abdbb79c73aa22710ae3c789ead893436eed68f 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/config/ScenarioVerification.config b/data/config/ScenarioVerification.config index 336cfb3324f13ebf9ab2ef302af28e57dc4cb00e..80abe9d87c9dcbe93943a429f652c913af5476a3 100644 --- a/data/config/ScenarioVerification.config +++ b/data/config/ScenarioVerification.config @@ -106,10 +106,12 @@ 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 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/baselines/scenarios/patient/HeterogeneousARDSExacerbation.zip.sha512 b/data/human/adult/baselines/scenarios/patient/HeterogeneousARDSExacerbation.zip.sha512 new file mode 100644 index 0000000000000000000000000000000000000000..d72b1e1a085fcbb02941534b71e887c35520250c --- /dev/null +++ b/data/human/adult/baselines/scenarios/patient/HeterogeneousARDSExacerbation.zip.sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..17e3126700e4470660e04b3e743e7261ba10f45f --- /dev/null +++ b/data/human/adult/baselines/scenarios/patient/PrimaryBlastLungInjury.zip.sha512 @@ -0,0 +1 @@ +c6b7939149ad9f580e3a22dd3e8fcaca672c1d4945dc40c527f56fc5a6f38d25284cd5aa9f3f1ed0a96e1cddabd228755108b5672c48dfebf2c41b5f550d1b6f \ No newline at end of file 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 1cc8571c26ad9329dcf8532d3a8bd1d46e67c591..1a087799095e7662fe262664a9625e39b98978c4 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 6d17994c960249e5db344ea31c5793eb3222c385..804024100845b822762135c7a55d55fe435907f0 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 4cea09b09678c42bcc9d476abb012a21f8f176ba..3427f1dad72bc0afbeae6836e6f8173ab0b3b6e2 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 c2a319c9fb46bffa885c99604adc26be0c0dd642..e86ae1453a9d784bd10c517d227520421ecc9de5 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 d466245fcb89c597a90d8ee579973cedbc3af222..eb58b9615627e0ff5b7ba930ad1a837d8216c99b 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 0000000000000000000000000000000000000000..dcae6b9082e4e671d3bf68e70c4664cf715d9370 --- /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 0000000000000000000000000000000000000000..2df5ae052cad1af538c1e0cdb515060bbff0a477 --- /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 0000000000000000000000000000000000000000..618400724404a8dd38c7fabd8d47ccb0fcc5ec71 --- /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 0000000000000000000000000000000000000000..fc8796fad1c2b0527bbb09d394fdccd588a4aa57 --- /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 0000000000000000000000000000000000000000..9fd6e3c43cdc24fc68da42164c66b1cf4732c29c --- /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 0000000000000000000000000000000000000000..cc74cb857c67c85f9ce241477efcbd872c52e5ff --- /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 0000000000000000000000000000000000000000..8561fe3f87684c3b3b81605cc4b26555067cc9d0 --- /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 0000000000000000000000000000000000000000..4085042cb1cd67cc74b60a1ecd3087814626e8a1 --- /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 0000000000000000000000000000000000000000..89210b35ebf1f2a528a734171057c6d05c93da38 --- /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 0000000000000000000000000000000000000000..eec6bf0a06c7c90ea7ffa82876929ed3431e496d --- /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 0000000000000000000000000000000000000000..24c307a7182e97176975f53a73a5760061fba124 --- /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 0000000000000000000000000000000000000000..aa5a518bcd5226e8c2cf2c1b795d74544f6ca223 --- /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 0000000000000000000000000000000000000000..96a4a960ca2e4f1e4e926e663b91036a75cf5e7c --- /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 0000000000000000000000000000000000000000..4c548f336bccade9963eb2895c80e15887b9beb0 --- /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 0000000000000000000000000000000000000000..b6a7ebd996d9da3f621ed38069131231c915209a --- /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 0000000000000000000000000000000000000000..85a211cad003cebaa41860cf77022da6f5cd29e1 --- /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 0000000000000000000000000000000000000000..46234532f89b12e7f45f7c085f110c2a7f65cf9d --- /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 0000000000000000000000000000000000000000..5396bb938c76802e7d3c56c304dfb02f68356e0d --- /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 0000000000000000000000000000000000000000..18445377c292120d41c1047684aa231e3a7e4d64 --- /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 0000000000000000000000000000000000000000..8ef1d817c74f9cdd0d4147793f235f9f6d00a82d --- /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 0000000000000000000000000000000000000000..e340c7bc7879d554d1eaececdad405d85305b39f --- /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 26e98667d92f2d7c7590db1fe92e08c76c3d629c..29efd4ef33912331bce4b712baca1cfd6ddc3706 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 96611f9c37616c05d50748981209da542a3604d1..652379340f5af1f73e243384b728bbdc769d5a80 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 091440cbfdd580199d1a653c77538888b0e6d3b7..d0b1e8508f1aeaed7802edfd7e879c37e26bd189 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 de9f1f6e19e23b2c7b2a3d5ba3ffb5daf7e2097e..bfc4a016eeb48cb50ca777de2239116a1b403dc2 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 fb93070be82c6a66eec46ed3e293af5d072f0991..e022b8ca6bbce8162a466f26ade8122be10195c1 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 9e4768432686185bdd37372411c9aaa8b8011e24..729482f849930138d6b4d6ddcd674c0bfc22c35b 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 c8df7c14cc74275b60614210e8c62ed89dad21cb..99360ecc27a4ef6b381fe7f48a1c2e35bd384ea6 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 999910f8b15d55f5d99076d9b60527b98e076062..c4814087b4d2d0b3a1c2bc45c8001710e5ddaf27 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 3db6b52d262042be88ebd6267d17bbc5061e57be..70ea8a165dbac9cca12c2a27054f0f601881736c 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 c54d86eaf01a269c6ab69510706e6835f3de6b34..a49d8af94554852ed9284bb097bae94d7c8a3e02 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 8a240c074ca18e8aa3ef36b2acc054df615c3cd4..e1809156b432db04bd70273be9ad59256d56b28f 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 8d86e9b75d3b8f4a027e94a972629d3fd49cc63e..47f86daeffead823577e158c9e1c72427315070a 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 8232e2097f107879d4158d964a947dca828a2bfe..eaa4b3cad9865a164b25aaaa664ab95c8ad53e7f 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 d304925c4f567b7e46d650d435ebea062412bb38..6f0ed78bbb870d864e3e744daa477463fc63d6e4 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 357e56c04394d3fce6c1d762f333c89912961e34..2a2f3a114cbeab3d35b0200a8479256e06da83b5 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 2259e7b211a15fa5de6413e4bfe68c1a2de65a8c..c9b2b696b14c39937818e511aeff74d8f3523a8c 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/ExpandedLungsCardiovascularBloodGasesTestCircuitOutput.zip.sha512 b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsCardiovascularBloodGasesTestCircuitOutput.zip.sha512 new file mode 100644 index 0000000000000000000000000000000000000000..c9929ce3aa611c817bfdf30a05c32b04a092c1df --- /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 0000000000000000000000000000000000000000..fcf80e13f9762acc70d1ec7c263e5cbeef03126a --- /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 0000000000000000000000000000000000000000..1fffcfbd80613807ea40566d059bdcdc32002b26 --- /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 0000000000000000000000000000000000000000..b67d9d1ec0d7031cb86558607b80cac58438b8d4 --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndAnesthesiaMachineCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..8859b3b141fd920650aead7324177780138a1683 --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndInhalerCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..9f2ec2347cba40fcb661f4b89b9f2e4a0bc50151 --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilationCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..58f5032894933256fbb4666a59d97dd518b8b390 --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryAndMechanicalVentilatorCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..b8fe2f92bf4df189239f82367b0fc566c03073e6 --- /dev/null +++ b/data/human/adult/baselines/unit_tests/pulse/ExpandedLungsRespiratoryCircuitOutput.zip.sha512 @@ -0,0 +1 @@ +5a0a9031d5bd96ccc6e0feaad9597ee753941a07c621e2ed9b5820f93100bb6ddcdcfb34b9372c470b5a11ab37a71cc362f38a8496b103dfccfc9897edc07a86 \ No newline at end of file diff --git a/data/human/adult/scenarios/ExpandedLungsDataRequests.json b/data/human/adult/scenarios/ExpandedLungsDataRequests.json new file mode 100644 index 0000000000000000000000000000000000000000..898bb5986bafb63bf2009a749ab70af84b2ee948 --- /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 new file mode 100644 index 0000000000000000000000000000000000000000..254c4dad398b6546c3cfb03df82a9b00c4d52b87 --- /dev/null +++ b/data/human/adult/scenarios/patient/HeterogeneousARDSExacerbation.json @@ -0,0 +1,91 @@ +{ + "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 new file mode 100644 index 0000000000000000000000000000000000000000..8ad86048d135aa1a68952ba33ffa31f13e5f033b --- /dev/null +++ b/data/human/adult/scenarios/patient/PrimaryBlastLungInjury.json @@ -0,0 +1,92 @@ +{ + "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/data/human/adult/scenarios/validation/Patient-Validation-ExpandedLungs.json b/data/human/adult/scenarios/validation/Patient-Validation-ExpandedLungs.json new file mode 100644 index 0000000000000000000000000000000000000000..9e16f3137c4690a49eff48f650115973f0378730 --- /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/data/human/adult/validation/SystemValidationData.xlsx b/data/human/adult/validation/SystemValidationData.xlsx index a0564cfba726ef241352afaf180e13a2660ff020..e5b6c072971b8ead35ac6b77b897b6ba31ca9d6e 100644 Binary files a/data/human/adult/validation/SystemValidationData.xlsx and b/data/human/adult/validation/SystemValidationData.xlsx differ diff --git a/docs/Markdown/Interface.md b/docs/Markdown/Interface.md index da243cf9d3a86a5f925a12444b800be8b78c770f..74ca908e23444a320a23d6ea279c4f7919ff337d 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/proj/eclipse/.gitignore b/proj/eclipse/.gitignore deleted file mode 100644 index 84c048a73cc2e5dd24f807669eb99b0ce3123195..0000000000000000000000000000000000000000 --- a/proj/eclipse/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build/ diff --git a/src/cpp/cdm/engine/SEPatientActionCollection.cpp b/src/cpp/cdm/engine/SEPatientActionCollection.cpp index c040827e4ae180d7e0a8a59a9679479f749645a3..60f4246a15c87a54b6152d18011b90fc18e9dc56 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 d885e4b476370d6e4fae87e6bbdbf27e06f7e999..356a3331798f723b9b1d3781ca7b97bf1daf857b 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 8d0fad42d5e1176cf976ecd7662a38936d188c09..6e08830c49cee280926debb5099a0efda0fb8a1e 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 b7600c0060998ebbacd049e1d706316a6ba798c0..2879552518db80a551cf397ada1ce2dd773d7dfd 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 05f6f217189d560a58b16ad92f2bf8b236cfdd6e..a89bdc3e269f839c648819fc29abc1682c917575 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 a02cacc27907442e0d039bda3ec182afa6fb9856..62330b6722bdd03a4162ccdaa540b102a6eafd40 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 0000000000000000000000000000000000000000..e1f1cb71779271e41770de47f9cff881548059e1 --- /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 0000000000000000000000000000000000000000..97cb506363d49e11cf835b8d620e329ac344f56f --- /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/system/physiology/SERespiratorySystem.h b/src/cpp/cdm/system/physiology/SERespiratorySystem.h index 67493657580315c743e8835e69e297e056acd8da..d60609a51d2c0c3d2b76832b55dee925acc9f7a6 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/cdm/test/ActionTest.cpp b/src/cpp/cdm/test/ActionTest.cpp index aca5febea32c10e1bb3c8d5a9e68a86c17167a96..31d36601c37c22bd311d358592cc3738163982a3 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/PulseConfiguration.cpp b/src/cpp/engine/PulseConfiguration.cpp index f8f0e7a676f246d358bde5db56f9d2c86721d1eb..3c77a8e3ff7b4618b134616a9ef9bf8d3a54874a 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 31f359dd4daeff5df9582f6ee54ddfc27866812c..2ee85e74eaa3a4a6efc9f76dcd935ef40c084e43 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 e8218f6ddc5e83b5ef7f93c671c958dba9bb1ed5..2550a7fb24769faf157b9bbb5ce2165a58487e33 100644 --- a/src/cpp/engine/PulseEngine.h +++ b/src/cpp/engine/PulseEngine.h @@ -337,16 +337,173 @@ namespace pulse static std::vector _values; }; - class ExpandedPulmonaryCompartment + class ExpandedLungsPulmonaryCompartment { 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; } @@ -366,16 +523,169 @@ namespace pulse static std::vector _values; }; - class ExpandedPulmonaryLink + class ExpandedLungsPulmonaryLink { 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; } @@ -793,7 +1103,6 @@ namespace pulse DEFINE_STATIC_STRING(RightPeritubularCapillariesToRenalVein); // Reusing 'RightKidneyToVenaCava' to connect the Right Renal Vein To Vena Cava); - static const std::vector& GetValues() { ScopedMutex lock; @@ -899,66 +1208,231 @@ namespace pulse static std::vector _values; }; - class ExpandedVascularCompartment + 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); + _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; + } + 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 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); @@ -966,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); @@ -974,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); @@ -984,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); @@ -992,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); @@ -1002,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() @@ -1013,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); @@ -1078,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); @@ -1086,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); @@ -1094,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); @@ -1110,7 +1518,6 @@ namespace pulse _values.push_back(TorsoMuscle); _values.push_back(TorsoSkin); _values.push_back(TorsoVenules); - //_values.push_back(Ground); } return _values; } @@ -1130,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); @@ -1169,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); @@ -1186,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); @@ -1221,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); @@ -1253,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); @@ -1289,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); @@ -1441,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; } @@ -1477,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 b874f2f16b8711cdd9d5ebd4eeb5a174a6d01236..694c6d5a29136c9837b88e60b42ccaa4f369c155 100644 --- a/src/cpp/engine/common/controller/CircuitManager.h +++ b/src/cpp/engine/common/controller/CircuitManager.h @@ -218,12 +218,187 @@ namespace pulse DEFINE_STATIC_STRING(StomachToEnvironment); }; - class ExpandedRespiratoryNode + class ExpandedLungsRespiratoryNode { + 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 + class ExpandedLungsRespiratoryPath { + 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); }; ////////////////////////////////////// @@ -741,39 +916,119 @@ namespace pulse DEFINE_STATIC_STRING(IVToVenaCava1); }; - class ExpandedCardiovascularNode + class ExpandedLungsCardiovascularNode { 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(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); + }; - DEFINE_STATIC_STRING(LeftHeart1); - DEFINE_STATIC_STRING(LeftHeart2); - DEFINE_STATIC_STRING(LeftHeart3); + class ExpandedLungsCardiovascularPath + { + public: + 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); + }; - DEFINE_STATIC_STRING(Aorta1); - DEFINE_STATIC_STRING(Aorta2); - DEFINE_STATIC_STRING(Aorta3); - DEFINE_STATIC_STRING(Aorta4); + class ComputationalLifeCardiovascularNode + { + public: DEFINE_STATIC_STRING(Aorta5); - DEFINE_STATIC_STRING(AbdominalCavity1); - DEFINE_STATIC_STRING(Extracranial1); DEFINE_STATIC_STRING(Extracranial2); DEFINE_STATIC_STRING(Extracranial3); @@ -783,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); @@ -849,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); @@ -917,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); @@ -941,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); @@ -969,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); @@ -1007,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); @@ -1035,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); @@ -1067,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 // /////////////////////////////////////// @@ -1228,7 +1387,7 @@ namespace pulse DEFINE_STATIC_STRING(SpleenT1ToLymph); }; - class ExpandedCardiovascularTissuePath + class ComputationalLifeTissuePath { public: DEFINE_STATIC_STRING(TorsoBone1ToBoneT2); @@ -1236,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 61f1d23738161f8ed5f7589dbc1cfa0c5c8f382c..c8fbcc46688e0386fe5703f5dd1fd412652c52b6 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,13 @@ 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); + // 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()) { @@ -183,17 +181,25 @@ 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); + // Add Expanded Leafs to Vascular Leafs + for (SELiquidCompartment* leaf : m_ExpandedLungsVascularLeafCompartments) + m_VascularLeafCompartments.push_back(leaf); } - else + else if (m_data.GetConfiguration().UseComputationalLifeExpansion() == eSwitch::On) { - SORT_CMPTS(Vascular, Liquid); + SORT_CMPTS(ComputationalLifeVascular, Liquid); + // Add Expanded Leafs to Vascular Leafs + for (SELiquidCompartment* leaf : m_ComputationalLifeVascularLeafCompartments) + m_VascularLeafCompartments.push_back(leaf); } // Equipment @@ -339,10 +345,13 @@ for (const std::string& name : pulse::Expanded##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) @@ -448,6 +457,9 @@ for (const std::string& name : pulse::Expanded##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/CompartmentManager.h b/src/cpp/engine/common/controller/CompartmentManager.h index 7d1a4c1562d8ce82634152382666b1dc37fb5f3d..61705309cd380e066599d771826f712877000df7 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 cb0a71860f603d6b478e672fe133d8beddeea404..2140e3f8d5fac9ed379ccdac6fe971812ab98ce8 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 954483483e25d539aa390ff649206095384a28c6..3a3fe1e6d3636cb70cb602f878d97cf9978ae707 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); @@ -2476,50 +2485,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); + //TODO: Make this work for the expanded model + if (m_Config->UseExpandedLungs() == 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 // @@ -2665,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); @@ -2716,50 +2729,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); + //TODO: Make this work for the expanded model + if (m_Config->UseExpandedLungs() == 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/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 494e610fcb4a3a44e13339979c19261c4792eb36..a455a6d064cb19eab5434a8e0208b752ff95ae6f 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/SetupExpandedLungs.cpp b/src/cpp/engine/common/controller/SetupExpandedLungs.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8710443cb37d2070d2012070de1745545efc9987 --- /dev/null +++ b/src/cpp/engine/common/controller/SetupExpandedLungs.cpp @@ -0,0 +1,2994 @@ +/* Distributed under the Apache License, Version 2.0. + See accompanying NOTICE file for details.*/ + +#include "engine/PulseConfiguration.h" +#include "engine/common/controller/Controller.h" +#include "engine/common/controller/CircuitManager.h" +#include "engine/common/controller/CompartmentManager.h" + +#include "cdm/circuit/SECircuitManager.h" +#include "cdm/circuit/fluid/SEFluidCircuit.h" +#include "cdm/circuit/fluid/SEFluidCircuitNode.h" +#include "cdm/circuit/fluid/SEFluidCircuitPath.h" +#include "cdm/compartment/fluid/SELiquidCompartment.h" +#include "cdm/compartment/fluid/SELiquidCompartmentLink.h" +#include "cdm/compartment/fluid/SELiquidCompartmentGraph.h" +#include "cdm/compartment/fluid/SEGasCompartment.h" +#include "cdm/compartment/fluid/SEGasCompartmentLink.h" +#include "cdm/compartment/fluid/SEGasCompartmentGraph.h" +#include "cdm/patient/SEPatient.h" +#include "cdm/properties/SEScalar0To1.h" +#include "cdm/properties/SEScalarArea.h" +#include "cdm/properties/SEScalarFrequency.h" +#include "cdm/properties/SEScalarLength.h" +#include "cdm/properties/SEScalarMass.h" +#include "cdm/properties/SEScalarMassPerMass.h" + +namespace pulse +{ + void Controller::SetupExpandedLungsRespiratory() + { + Info("Setting Up Expanded Lungs 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); /// \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::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()); + 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& 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); + 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 = 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; + 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::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); + 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::ExpandedLungsPulmonaryCompartment::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::ExpandedLungsPulmonaryCompartment::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& 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); + + 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::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::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::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); + 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(pPharynxToEnvironment); + + 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); + } + lAerosol.StateChange(); + } + + void Controller::SetupExpandedLungsCardiovascular() + { + 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; + 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::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); + 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::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); + 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::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); + 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::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); + 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::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); + 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); + + // 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/SetupExpandedRespiratory.cpp b/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp deleted file mode 100644 index 276afbe8f9af90f75e7da152cc23a1dcbe059f0e..0000000000000000000000000000000000000000 --- a/src/cpp/engine/common/controller/SetupExpandedRespiratory.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* Distributed under the Apache License, Version 2.0. - See accompanying NOTICE file for details.*/ - -#include "engine/PulseConfiguration.h" -#include "engine/common/controller/Controller.h" -#include "engine/common/controller/CircuitManager.h" -#include "engine/common/controller/CompartmentManager.h" - -#include "cdm/circuit/SECircuitManager.h" -#include "cdm/circuit/fluid/SEFluidCircuit.h" -#include "cdm/circuit/fluid/SEFluidCircuitNode.h" -#include "cdm/circuit/fluid/SEFluidCircuitPath.h" -#include "cdm/compartment/fluid/SELiquidCompartment.h" -#include "cdm/compartment/fluid/SELiquidCompartmentLink.h" -#include "cdm/compartment/fluid/SELiquidCompartmentGraph.h" -#include "cdm/compartment/fluid/SEGasCompartment.h" -#include "cdm/compartment/fluid/SEGasCompartmentLink.h" -#include "cdm/compartment/fluid/SEGasCompartmentGraph.h" -#include "cdm/patient/SEPatient.h" -#include "cdm/properties/SEScalar0To1.h" -#include "cdm/properties/SEScalarArea.h" -#include "cdm/properties/SEScalarFrequency.h" -#include "cdm/properties/SEScalarLength.h" -#include "cdm/properties/SEScalarMass.h" -#include "cdm/properties/SEScalarMassPerMass.h" - -namespace pulse -{ - void Controller::SetupExpandedPulmonaryRespiratory() - { - Fatal("Expanded respiratory circuit not yet implemented."); - } - - void Controller::SetupExpandedPulmonaryCardiovascular() - { - Fatal("Expanded cardiovascular pulmonary subcircuit not yet implemented."); - } -} \ 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 6d6ac4bdec71108088b2e1df5f6bceddf975a025..244c9d836021c7cff3660fb1d014c50e79caa3fb 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,162 +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); - //---------------------------------------- - 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); + 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::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)); - InitializeBloodGases(*cmpts.GetTissueCompartment(pulse::TissueCompartment::LeftLung), *cmpts.GetLiquidCompartment(pulse::VascularCompartment::LeftLung)); - 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)); + 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 3ea20a1c802951b7d471a9275873a8967c2f21b7..97f4957e3870efda0c1ce0fb84d539b12f7ef937 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 f0ecebce5c982ca28d4edb97f1c047ebd8e32dba..ff09a74c90e698788099b3cd47e776052c6ef96a 100644 --- a/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp +++ b/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp @@ -384,9 +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) - { - //Not yet implemented + 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 { @@ -425,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)); @@ -662,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)); @@ -685,9 +723,27 @@ namespace pulse m_AortaResistancePaths.push_back(m_AortaResistancePath); m_VenaCavaResistancePaths.push_back(m_VenaCavaResistancePath); - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::On) - { - //Not yet implemented + 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 { @@ -701,9 +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) - { - //Not yet implemented + 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 { @@ -723,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 @@ -3429,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 { @@ -3500,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)); @@ -3517,8 +3631,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)); + //TODO: Make this work for the expanded model + 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)); + + 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 +3647,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 c196a8d7a96e664bc9083465c78de8778d0a4f1b..9eb8ff32e182e77171b5b79d804692c05191d638 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" @@ -171,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; @@ -209,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 @@ -443,67 +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); - if (m_data.GetConfiguration().UseExpandedRespiratory() == eSwitch::Off) - { - // Side - // Alveoli Node - // Dead Space Node - // Resistance Path - // Compliance Path - // Shunt Link - // Arteries Link - // Veins Link - // Veins 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) + { m_LungComponents[eLungCompartment::LeftLung] = { eSide::Left, @@ -511,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] = { @@ -527,72 +533,362 @@ 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 - { - // TODO Expansion Support - } - - //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()); + // 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, + 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::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] = + { + eSide::Right, + 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::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] = + { + eSide::Right, + 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::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] = + { + eSide::Right, + 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::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] = + { + eSide::Right, + 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::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] = + { + eSide::Right, + 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::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] = + { + eSide::Right, + 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::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] = + { + eSide::Right, + 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::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] = + { + eSide::Right, + 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::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] = + { + eSide::Right, + 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::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] = + { + eSide::Left, + 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::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] = + { + eSide::Left, + 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::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] = + { + eSide::Left, + 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::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] = + { + eSide::Left, + 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::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] = + { + eSide::Left, + 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::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] = + { + eSide::Left, + 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::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] = + { + eSide::Left, + 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::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] = + { + eSide::Left, + 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::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) + }; } - - //Substance - Overdose - m_Oversedation = m_data.GetSubstances().GetSubstance("Oversedation"); } //-------------------------------------------------------------------------------------------------- @@ -688,7 +984,11 @@ namespace pulse UpdateChestWallCompliances(); UpdateAlveolarCompliances(); UpdateVolumes(); - UpdateResistances(); + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) + { + //jbw - Fix + UpdateResistances(); + } UpdateInspiratoryExpiratoryRatio(); UpdateDiffusion(); if (m_data.HasCardiovascular()) @@ -750,36 +1050,43 @@ namespace pulse } //Update system data CalculateVitalSigns(); - 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) - { - GetTotalRespiratoryModelInspiratoryResistance().SetValue(totalResistance_cmH2O_s_Per_L, PressureTimePerVolumeUnit::cmH2O_s_Per_L); + if (m_data.GetConfiguration().UseExpandedLungs() == eSwitch::Off) + { + 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 } } @@ -2341,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); @@ -2828,8 +3135,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); + //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().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); + } 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 +3249,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().UseExpandedLungs() == eSwitch::On) + { + //TODO: Make this work for the expanded model + 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; @@ -3187,6 +3509,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 @@ -3408,13 +3739,27 @@ 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) + { + 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); + } + else + { + //TODO: Make this work for the expanded model + } bool inhaling = false; if (m_PharynxToCarina->GetNextFlow(VolumePerTimeUnit::L_Per_s) > 0.0) @@ -3501,6 +3846,12 @@ namespace pulse { //Tuned based on mechanical ventilator validation data tracheaResistance_cmH2O_s_Per_L *= intubationTracheatracheaResistanceMultiplier_cmH2O_s_Per_L; + + 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; + } } break; @@ -3860,12 +4211,16 @@ 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); + } //------------------------------------------------------------------------------------------------------ //Restrictive @@ -3922,6 +4277,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 @@ -4097,6 +4462,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); //------------------------------------------------------------------------------------------------------ @@ -4295,6 +4669,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; } @@ -4493,6 +4877,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 @@ -4502,7 +4899,7 @@ namespace pulse {1.0, 0.050} //Max }; - damageScalingFactor = GeneralMath::PiecewiseLinearInterpolator(interpolatorPoints, combinedSeverity); + damageScalingFactor = GeneralMath::PiecewiseLinearInterpolator(interpolatorPoints, combinedSeverity) * PBLIMultiplier; //------------------------------------------------------------------------------------------------------ //Combine effects @@ -4718,6 +5115,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 @@ -4729,7 +5139,7 @@ namespace pulse {0.9, 0.5}, //Severe {1.0, 1.0} //Max }; - damageScalingFactor = GeneralMath::PiecewiseLinearInterpolator(interpolatorPoints, combinedSeverity); + damageScalingFactor = GeneralMath::PiecewiseLinearInterpolator(interpolatorPoints, combinedSeverity) * PBLIMultiplier; interpolatorPoints = { @@ -4751,6 +5161,8 @@ namespace pulse recruitmentScalingFactor = GeneralMath::Damper(recruitmentScalingFactor, m_PreviousShuntScalingFactor[iter], dampenFraction_perSec, m_data.GetTimeStep_s()); m_PreviousShuntScalingFactor[iter] = recruitmentScalingFactor; + totalScalingFactor = MIN(recruitmentScalingFactor, damageScalingFactor) * PBLIMultiplier; + //------------------------------------------------------------------------------------------------------ //COPD //Exacerbation will overwrite the condition, even if it means improvement @@ -4966,6 +5378,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); //------------------------------------------------------------------------------------------------------ @@ -5311,15 +5733,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"); @@ -5334,15 +5756,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; @@ -5428,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 c19c8d9b111216f1f8f7dfaa61431e2b7783eff6..7e84ec4bdedf994cfb875a4724b3f01aad270c11 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 diff --git a/src/cpp/engine/common/system/physiology/TissueModel.cpp b/src/cpp/engine/common/system/physiology/TissueModel.cpp index b8b61598433122a76857b50b6223de5f0b9f851e..c3817c7435cf8915defac3ead71be6adc44327fd 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); @@ -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); + //TODO: Make this work for the expanded model + 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); + } 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); @@ -1890,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 diff --git a/src/cpp/engine/files.cmake b/src/cpp/engine/files.cmake index 7ff5d9d10b798126fc463189bd6759179cd1f5c1..1d04917fed01d00dad3471a8d88c5a4633556c70 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 762c71587b41ad94f50237d3eeeb4b3903c43391..9898b5cc34eeb8933fe72e0bfcebf02d553b74c7 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 01d98fab80e1826622d33b208e1d9efe3f5a230d..8b6ad788fe4b20a8edcc2f4884627bab9eba71b9 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 153ec0a4543fa411cdc6269196e93a628a9014c1..626f494705be930609442810bce98a75266d8480 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 465e61442c5e4f7dbc8592b686b4f2d278c63695..a503a58f4052ac3b56747b9155833f4d76126922 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"); @@ -47,17 +47,19 @@ 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); 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()); @@ -84,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 @@ -93,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()); @@ -174,11 +176,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::ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransportTest(const std::string& 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 a3eb91c7361a7d3db88cffc5d15592fb96e779c2..bdd101920da64679eb6404895c1bc6df9871b9a5 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::ExpandedLungsCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory) + { + 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) {// \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::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, "ExpandedLungsFullCardiovascular", 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::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, "ExpandedLungsCardiovascularBloodGasesTest", 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,9 +236,10 @@ 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"); pc.CreateCircuitsAndCompartments(); @@ -257,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); } @@ -705,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 9a80197917b095332c4f9d8856846aedec3a36e5..8b34d9d2ca744aa29de24a5031ea65357916883a 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()) { @@ -57,29 +58,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("ExpandedLungsCardiovascularCircuitAndTransportTest", &EngineTest::ExpandedLungsCardiovascularCircuitAndTransportTest)); 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("ExpandedLungsFullCardiovascularCircuitAndTransportTest", &EngineTest::ExpandedLungsFullCardiovascularCircuitAndTransportTest)); + testMap.insert(std::make_pair("CardiovascularBloodGasesTest", &EngineTest::CardiovascularBloodGasesTest)); + 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)); testMap.insert(std::make_pair("RenalCircuitAndTransportTest", &EngineTest::RenalCircuitAndTransportTest)); @@ -88,18 +82,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("ExpandedLungsRespiratoryCircuitAndTransportTest", &EngineTest::ExpandedLungsRespiratoryCircuitAndTransportTest)); 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("ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransportTest", &EngineTest::ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransportTest)); - 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("ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest", &EngineTest::ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest)); testMap.insert(std::make_pair("RespiratoryWithInhalerCircuitAndTransportTest", &EngineTest::RespiratoryWithInhalerCircuitAndTransportTest)); + testMap.insert(std::make_pair("ExpandedLungsRespiratoryWithInhalerCircuitAndTransportTest", &EngineTest::ExpandedLungsRespiratoryWithInhalerCircuitAndTransportTest)); testMap.insert(std::make_pair("RespiratoryWithMechanicalVentilationCircuitAndTransportTest", &EngineTest::RespiratoryWithMechanicalVentilationCircuitAndTransportTest)); + 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 9534ac5aab7968bc43f3d6c7c5de07514f23e176..d62c4e7177310515eb26dd50a69f72639838bc7d 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 ExpandedLungsCardiovascularCircuitAndTransportTest(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 ExpandedLungsFullCardiovascularCircuitAndTransportTest(const std::string& sTestDirectory); + void CardiovascularBloodGasesTest(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); 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,23 @@ namespace pulse { namespace human_adult_whole_body // Respiratory // ///////////////// void RespiratoryCircuitAndTransportTest(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, const std::string& sTestDirectory); + void RespiratoryCircuitAndTransportTest(RespiratoryConfiguration config, bool expandedLungs, const std::string& sTestDirectory); public: //////////////////////// @@ -90,8 +108,17 @@ namespace pulse { namespace human_adult_whole_body //////////////////////// void AnesthesiaMachineCircuitAndTransportTest(const std::string& sTestDirectory); void RespiratoryWithAnesthesiaMachineCircuitAndTransportTest(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: - void AnesthesiaMachineCircuitAndTransportTest(RespiratoryConfiguration config, const std::string& sTestDirectory); public: /////////////////////////// @@ -99,21 +126,16 @@ namespace pulse { namespace human_adult_whole_body /////////////////////////// void MechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory); void RespiratoryWithMechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory); + void ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory); protected: - void MechanicalVentilatorCircuitAndTransportTest(RespiratoryConfiguration config, const std::string& sTestDirectory); - - public: - ///////////// - // Inhaler // - ///////////// - void RespiratoryWithInhalerCircuitAndTransportTest(const std::string& sTestDirectory); - protected: + void MechanicalVentilatorCircuitAndTransportTest(RespiratoryConfiguration config, bool expandedLungs, const std::string& sTestDirectory); public: //////////////////////////// // Mechanical Ventilation // //////////////////////////// void RespiratoryWithMechanicalVentilationCircuitAndTransportTest(const std::string& sTestDirectory); + void ExpandedLungsRespiratoryWithMechanicalVentilationCircuitAndTransportTest(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 aa60dfa9cd071e2effae54bfa4d9ad0a4436fad1..c483e6c5d711ef7e5fd725789954e4baa6b36357 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 614efa4805d31273e9aa6714a4d2681701986387..eb359b898920967adf66902cefa7f58c77907406 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"); @@ -47,17 +47,19 @@ 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); 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()); @@ -84,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 @@ -94,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()); @@ -169,11 +171,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::ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest(const std::string& sTestDirectory) + { + MechanicalVentilatorCircuitAndTransportTest(ExpandedLungsRespiratoryWithMechanicalVentilator, 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 9fca6316b57e2cc1b962aca06046dd297b3d4c34..6b051dbf7383e1e0ea1c2a080f67fa1dee1446bd 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 4cb625a7757503d37404579106650df939846de5..6edd836c217747c595bf26cbc065b032b5ea540d 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 826459c8d94b659377b8d697451e7c8525187c47..dcc8a67bab736c8bb45e82edbe665f58c51ec13c 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"); @@ -43,18 +43,20 @@ 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); pc.GetSubstances().LoadSubstanceDirectory("./"); pc.GetSaturationCalculator().Setup(); pc.m_Config->Initialize("./", &pc.GetSubstances()); - pc.m_Config->EnableRenal(eSwitch::Off); pc.m_Config->EnableTissue(eSwitch::Off); + 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(); @@ -65,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"); @@ -97,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"); @@ -194,17 +196,32 @@ namespace pulse { namespace human_adult_whole_body void EngineTest::RespiratoryCircuitAndTransportTest(const std::string & sTestDirectory) { - RespiratoryCircuitAndTransportTest(RespiratorySolo, sTestDirectory); + RespiratoryCircuitAndTransportTest(RespiratorySolo, false, sTestDirectory); + } + + void EngineTest::ExpandedLungsRespiratoryCircuitAndTransportTest(const std::string& sTestDirectory) + { + RespiratoryCircuitAndTransportTest(ExpandedLungsRespiratorySolo, true, sTestDirectory); } void EngineTest::RespiratoryWithInhalerCircuitAndTransportTest(const std::string & sTestDirectory) { - RespiratoryCircuitAndTransportTest(RespiratoryWithInhaler, sTestDirectory); + RespiratoryCircuitAndTransportTest(RespiratoryWithInhaler, false, sTestDirectory); + } + + void EngineTest::ExpandedLungsRespiratoryWithInhalerCircuitAndTransportTest(const std::string& sTestDirectory) + { + RespiratoryCircuitAndTransportTest(ExpandedLungsRespiratoryWithInhaler, true, sTestDirectory); } void EngineTest::RespiratoryWithMechanicalVentilationCircuitAndTransportTest(const std::string & sTestDirectory) { - RespiratoryCircuitAndTransportTest(RespiratoryWithMechanicalVentilation, sTestDirectory); + RespiratoryCircuitAndTransportTest(RespiratoryWithMechanicalVentilation, false, sTestDirectory); + } + + void EngineTest::ExpandedLungsRespiratoryWithMechanicalVentilationCircuitAndTransportTest(const std::string& sTestDirectory) + { + RespiratoryCircuitAndTransportTest(ExpandedLungsRespiratoryWithMechanicalVentilation, true, sTestDirectory); } void EngineTest::RespiratoryDriverTest(const std::string & sTestDirectory) @@ -220,7 +237,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 c855486d69f2e67e4be9d8ba19f1f64e350b006f..c60ec05126a185bd9e8857f8095909bb75fcced7 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 f307473a5d3d9cf2e79b77c848630e47b5ece123..41b6400b6306a5084642ca453f5d3bb8eb95f05d 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 78801e1791e39ef333864badcac2d6a36661d9a4..d4f2e5fd94e7a687eb7122f0d7a22cb767f7fa3a 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/CMakeLists.txt b/src/cpp/howto/CMakeLists.txt index e351de87f131783e354178984a4cf573ff54b8af..8227de264f307f52d340e88d8810504fed9ff395 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/EngineHowTo.cpp b/src/cpp/howto/EngineHowTo.cpp index 51ecab8e3f84f28c6b720c82aa1e6368ef8de1cc..ced75a9437cedf38c9f641a910d9ef731304eed6 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(); @@ -39,6 +39,8 @@ int main() //HowToExercise(); //HowToHemorrhage(); //HowToIsoShuntAnalysis(); + //HowToExpandedRespiratory(); + //HowToExpandedRespiratoryAnalysis(); //HowToExpandedVasculature(); //HowToHemorrhage(); //HowToHemothorax(); diff --git a/src/cpp/howto/EngineHowTo.h b/src/cpp/howto/EngineHowTo.h index 35bd85fcede86f4849f52a9f94c7526f0909f1f0..a3a91f2bcec02902d82937937acd87b937fb07e0 100644 --- a/src/cpp/howto/EngineHowTo.h +++ b/src/cpp/howto/EngineHowTo.h @@ -31,6 +31,8 @@ void HowToECMO(); 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 new file mode 100644 index 0000000000000000000000000000000000000000..a3a5badd8b57fc65a7eb9bde603de86ab71ab3d4 --- /dev/null +++ b/src/cpp/howto/HowTo-ExpandedRespiratory.cpp @@ -0,0 +1,708 @@ +/* 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/SEPrimaryBlastLungInjury.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" +#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() +{ + std::unique_ptr pe = CreatePulseEngine(); + pe->GetLogger()->LogToConsole(true); + pe->GetLogger()->SetLogFile("./test_results/howto/HowTo_ExpandedRespiratory.log"); + + PulseConfiguration config; + config.UseExpandedLungs(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("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("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); + + // 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() << "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); + + // 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(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"); + + 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(15, TimeUnit::min); + + 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() << "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); +} + +void HowToExpandedRespiratoryAnalysisInitialState() +{ + std::unique_ptr pe = CreatePulseEngine(); + pe->GetLogger()->LogToConsole(true); + pe->GetLogger()->SetLogFile("./test_results/howto/HowTo_ExpandedRespiratoryAnalysisInitialState.log"); + + PulseConfiguration config; + config.UseExpandedLungs(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 }; + size_t totalRuns = 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.UseExpandedLungs(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.UseExpandedLungs(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(); +} diff --git a/src/cpp/howto/HowTo-ExpandedVasculature.cpp b/src/cpp/howto/HowTo-ExpandedVasculature.cpp index 5a5c36b81c6c1e93d71f18af6e58f8d1c8bea558..5dfa7bdf94d007c78be7f030012ddf0382bcfe7e 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 f2cda2e58d5b35b77e75ade0d0d4a776173fd2f3..802246535a54738e651f36f8d047b3a89d24aed1 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,8 +51,11 @@ int main(int argc, char* argv[]) //hawbTest.CardiovascularAndRenalCircuitAndTransportTest(hawbDir); //hawbTest.CardiovascularAndTissueCircuitAndTransportTest(hawbDir); //hawbTest.CardiovascularAndCerebrospinalFluidCircuitAndTransportTest(hawbDir); +// hawbTest.ExpandedLungsCardiovascularCircuitAndTransportTest(hawbDir); //hawbTest.FullCardiovascularCircuitAndTransportTest(hawbDir); +// hawbTest.ExpandedLungsFullCardiovascularCircuitAndTransportTest(hawbDir); //hawbTest.CardiovascularBloodGasesTest(hawbDir); +// hawbTest.ExpandedLungsCardiovascularBloodGasesTest(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.ExpandedLungsRespiratoryCircuitAndTransportTest(hawbDir); //hawbTest.AnesthesiaMachineCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryWithAnesthesiaMachineCircuitAndTransportTest(hawbDir); +// hawbTest.ExpandedLungsRespiratoryWithAnesthesiaMachineCircuitAndTransportTest(hawbDir); //hawbTest.MechanicalVentilatorCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); +// hawbTest.ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryWithInhalerCircuitAndTransportTest(hawbDir); + hawbTest.ExpandedLungsRespiratoryWithInhalerCircuitAndTransportTest(hawbDir); //hawbTest.RespiratoryWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); +// hawbTest.ExpandedLungsRespiratoryWithMechanicalVentilatorCircuitAndTransportTest(hawbDir); //hawbTest.InternalTemperatureVariableBMRCircuitTest(hawbDir); //hawbTest.InternalTemperatureVariableSkinCircuitTest(hawbDir); diff --git a/src/csharp/PulseFiles.cmake b/src/csharp/PulseFiles.cmake index ce4cda183f93459c8704edc0e4920b32b87f4013..78882be93bb58dce4f606557f483ca21355d4460 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 09ee407b9941ee57f992aadcaa0b7cc91b5545e3..da2196e4f816dda5269a938a4eabf6bfdd67d3cc 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/SEPrimaryBlastLungInjury.cs b/src/csharp/pulse/cdm/patient/actions/SEPrimaryBlastLungInjury.cs new file mode 100644 index 0000000000000000000000000000000000000000..7c248dcf8030ca824c5df3e6938fbe0253b6f649 --- /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; + } + } +} diff --git a/src/csharp/pulse/cdm/system/physiology/SERespiratorySystem.cs b/src/csharp/pulse/cdm/system/physiology/SERespiratorySystem.cs index 0dcec48ec74588d2d196c0e0e9039f3891004bda..cbf489b761999199893bde90ca504cc22b863b9b 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/java/PulseFiles.cmake b/src/java/PulseFiles.cmake index d5af2f24dc6baa0d7d6e1e3cce5f77e32ed3ecab..4095bbf066f92a0183bab8506e3adac3b6a69c87 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 32a5b47a25865b204b9f0bf45355f8cf19f7a6ef..da7a271ba4fa90d5bf1573ac5167ac7a83dc351d 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 0000000000000000000000000000000000000000..683d2df4fff5d54dd7203db9a37939741b01c2bc --- /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 8abb97264947e364a941657d4728ac6f68e7b900..0d1c6870390e28344ede018b6478771f6b195995 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 1692a5fcd9edc10c6f03b309c62e6ef6ab1fdbb1..6201afeaa8f417afd9532f8d4e1ec362dff80410 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/cdm/physiology.py b/src/python/pulse/cdm/physiology.py index 75755fa124f66fc69329099bc50dc587700ad431..c46653507dca000db883f85dd6c2cccef8d86335 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/cdm/utils/plotter.py b/src/python/pulse/cdm/utils/plotter.py index 3566085771357e0ac01125384c732cdc544e5db7..1b3fccf2d67ce3ce7bcc19dd704de277fe835958 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 diff --git a/src/python/pulse/engine/PulseConfiguration.py b/src/python/pulse/engine/PulseConfiguration.py index 507163c3a1c6f5d8f7815687899a64f9ac65c2db..d5cdc70b30ac8ee3c51f63b54c8f7383e8809786 100644 --- a/src/python/pulse/engine/PulseConfiguration.py +++ b/src/python/pulse/engine/PulseConfiguration.py @@ -6,15 +6,18 @@ from pulse.cdm.scalars import SEScalarTime class PulseConfiguration: - __slots__ = ["_time_step", "_allow_dynamic_timestep"] + __slots__ = ["_time_step", "_allow_dynamic_timestep", + "_use_expanded_lungs"] def __init__(self): self._allow_dynamic_timestep = eSwitch.NullSwitch self._time_step = None + 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_lungs = eSwitch.NullSwitch def set_allow_dynamic_timestep(self, s: eSwitch): self._allow_dynamic_timestep = s @@ -28,3 +31,10 @@ class PulseConfiguration: self._time_step = SEScalarTime() return self._time_step + 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 b98dd200de1278c14aaf2220e9344f377828780f..35c365cc2c6034f21d4b30fe7fdecefddaa7d522 100644 --- a/src/python/pulse/engine/io/PulseConfiguration.py +++ b/src/python/pulse/engine/io/PulseConfiguration.py @@ -38,6 +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_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 new file mode 100644 index 0000000000000000000000000000000000000000..25648e6ab67875a36dc994331ef9b43df74329cf --- /dev/null +++ b/src/python/pulse/howto/HowTo_ExpandedRespiratory.py @@ -0,0 +1,119 @@ +# 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 SEPrimaryBlastLungInjury +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_lungs(eSwitch.On) + pulse.set_configuration_override(cfg) + + data_requests = [ + SEDataRequest.create_physiology_request("HeartRate", unit=FrequencyUnit.Per_min), + 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), + ] + 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() + + # 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) + results = pulse.pull_data() + pulse.print_results() + + pbli = SEPrimaryBlastLungInjury() + 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(900) + results = pulse.pull_data() + pulse.print_results() + +HowTo_ExpandedRespiratory() + diff --git a/src/python/pulse/pipelines/dataset/timeseries_dataset_reader.py b/src/python/pulse/pipelines/dataset/timeseries_dataset_reader.py index 3c65ad67fb668ff32f56f80c9d5eb81970131be2..a358a1a445afec5f20ef3461d8a4ccd42f97d18e 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,8 +30,15 @@ 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 + log_file: Path, + config: EngineConfig ) -> SEPatientTimeSeriesValidation: """ Generate patient validation timeseries validation targets. @@ -39,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. """ @@ -49,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(): @@ -154,6 +165,7 @@ def gen_patient_targets( xls_file = Path(get_validation_dir() + "/SystemValidationData.xlsx") generate_validation_targets( xls_file=xls_file, + config=config, patient_validation=patient_validation ) return patient_validation @@ -184,6 +196,7 @@ def extract_patient(patient_file: Path) -> SEPatient: def generate_validation_targets( xls_file: Path, + config: EngineConfig, patient_validation: SEPatientTimeSeriesValidation ) -> bool: """ @@ -211,7 +224,15 @@ 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") + 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 @@ -464,23 +485,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) diff --git a/src/python/pulse/pipelines/full_html_report.py b/src/python/pulse/pipelines/full_html_report.py index f4d07df5cdb8e447b9102d96d6e68c7c5f13e1d1..f714effc76045cd8c504f8614a335194ef46cdf6 100644 --- a/src/python/pulse/pipelines/full_html_report.py +++ b/src/python/pulse/pipelines/full_html_report.py @@ -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 a70e6bec8c3d48487b2d3d8718a795247e240af5..354a756bba6efc927a8fbdd06c49a52ff164998d 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 @@ -268,18 +270,24 @@ 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 - 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 = ["StandardFemale-ExpandedLungs", "StandardFemale", + "StandardMale-ExpandedLungs", "StandardMale"] + for standard in standards: + 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/PatientValidation.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 +313,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() diff --git a/src/python/pulse/pipelines/validation/timeseries_validation.py b/src/python/pulse/pipelines/validation/timeseries_validation.py index 3f5f58f25c31aadb35c66c0d7c9f0dbe2082beda..fb312eb32e0dfbee5d09ef8fdc352b4d95125d51 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.") diff --git a/src/schema/pulse/cdm/bind/PatientActions.proto b/src/schema/pulse/cdm/bind/PatientActions.proto index a39349b36711f55321460fe26d9cb1942470ae00..66b4be98c47d48062bd5ab19a2e768f0912b9bf5 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 diff --git a/src/schema/pulse/cdm/bind/Physiology.proto b/src/schema/pulse/cdm/bind/Physiology.proto index ade3cc2b772b748e53b9a85e97bc6e8b2860879a..8e776d116ca2a3acd440fafbfe2d86fd8e91657b 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 diff --git a/src/schema/pulse/engine/bind/Configuration.proto b/src/schema/pulse/engine/bind/Configuration.proto index 00ef44fa2cc546c74d11691f6f3ef4717e0e81fb..91795320036bd377d374863045b84e0fca72663a 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