Skip to content

Commit 889ec22

Browse files
committed
Update Media to Chemical2 (initial design of SubstancesPort of Air)
1 parent 0359fea commit 889ec22

File tree

2 files changed

+414
-80
lines changed

2 files changed

+414
-80
lines changed

Physiolibrary/Fluid.mo

Lines changed: 105 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -732,6 +732,7 @@ Connector with one flow signal of type Real.
732732

733733
partial model Accumulation
734734
extends Physiolibrary.Fluid.Interfaces.CompositionSetup;
735+
extends Medium.SubstancesUseSetup;
735736

736737
parameter Integer nPorts = 0 "Number of hydraulic ports" annotation (
737738
Evaluate = true,
@@ -752,6 +753,8 @@ Connector with one flow signal of type Real.
752753
-20},{-80,20}})));
753754

754755
Medium.ChemicalSolution chemicalSolution(
756+
useFore = useFore,
757+
useRear = useRear,
755758
startSubstanceMasses = m_start,
756759
p = pressure,
757760
h = enthalpy / mass,
@@ -1419,8 +1422,8 @@ The sensor is ideal, i.e., it does not influence the fluid.
14191422
connect(substances.CO2, pCO2_measure.port_a) annotation (Line(points={{-99.9,0.1},
14201423
{-14,0.1},{-14,0},{-8,0}}, color={158,66,200}));
14211424
connect(substances.H, pH_measure.port_a)
1422-
annotation (Line(points={{-99.9,0.1},{-40,0.1},{-40,-46},{-48,-46},{-48,-60},
1423-
{-44,-60}}, color={158,66,200}));
1425+
annotation (Line(points={{-99.9,0.1},{-58,0.1},{-58,-44},{-66,-44},{-66,-58},{-62,-58}},
1426+
color={158,66,200}));
14241427
annotation (
14251428
Icon(coordinateSystem(preserveAspectRatio = false), graphics={ Text(extent = {{-150, 80}, {150, 120}}, textString = "%name", lineColor = {162, 29, 33})}),
14261429
Diagram(coordinateSystem(preserveAspectRatio = false)),
@@ -3195,7 +3198,8 @@ The sensor is ideal, i.e., it does not influence the fluid.
31953198
Physiolibrary.Fluid.Sensors.FlowMeasure flowMeasure(redeclare package Medium = Air) annotation (
31963199
Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 270, origin = {-318, 66})));
31973200
Physiolibrary.Fluid.Components.ElasticVessel upperRespiratoryTract(redeclare package Medium = Air, useSubstances = true,
3198-
volume_start=0.0001, massFractions_start = Air.reference_X[1:Air.nS - 1], useThermalPort = true, Compliance = TotalCompliance / 100, ZeroPressureVolume(displayUnit = "ml") = 0.0001, ResidualVolume(displayUnit = "ml") = 0.0001, nPorts = 3) annotation (
3201+
volume_start=0.0001,
3202+
massFractions_start=Air.reference_X[1:Air.nS - 1], useThermalPort = true, Compliance = TotalCompliance / 100, ZeroPressureVolume(displayUnit = "ml") = 0.0001, ResidualVolume(displayUnit = "ml") = 0.0001, nPorts = 3) annotation (
31993203
Placement(transformation(extent = {{-328, -10}, {-308, 10}})));
32003204
Physiolibrary.Fluid.Components.Resistor upperRespiratoryTractResistance(redeclare package Medium = Air, Resistance = 0.5 * TracheaResistance) annotation (
32013205
Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 90, origin={-318,34})));
@@ -3216,6 +3220,8 @@ The sensor is ideal, i.e., it does not influence the fluid.
32163220
annotation (Placement(transformation(extent={{-302,-44},{-322,-24}})));
32173221
Physiolibrary.Thermal.Sources.UnlimitedHeat coreHeat(T = system.T_ambient) annotation (
32183222
Placement(transformation(extent = {{-274, -44}, {-294, -24}})));
3223+
Chemical.Processes.Diffusion diffusion annotation (Placement(transformation(extent={{-178,18},{-158,38}})));
3224+
Media.Air.SubstancesPort substancesPort annotation (Placement(transformation(extent={{-236,-26},{-196,14}})));
32193225
equation
32203226
connect(environment.y, flowMeasure.q_in) annotation (
32213227
Line(points = {{-340, 88}, {-318, 88}, {-318, 76}}, color = {127, 0, 0}, thickness = 0.5));
@@ -3249,6 +3255,16 @@ The sensor is ideal, i.e., it does not influence the fluid.
32493255
connect(evaporation.gas_port, upperRespiratoryTract.substances.H2O)
32503256
annotation (Line(points={{-352,-28},{-352,0},{-328,0}}, color={158,66,
32513257
200}));
3258+
connect(diffusion.rear, substancesPort.O2fore)
3259+
annotation (Line(
3260+
points={{-178,28},{-215.9,28},{-215.9,-5.9}},
3261+
color={158,66,200},
3262+
thickness=0.5));
3263+
connect(upperRespiratoryTract.substances, substancesPort)
3264+
annotation (Line(
3265+
points={{-328,0},{-336,0},{-336,-52},{-216,-52},{-216,-6}},
3266+
color={158,66,200},
3267+
thickness=0.5));
32523268
annotation (
32533269
Icon(coordinateSystem(preserveAspectRatio = false)),
32543270
Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-360, -100}, {100, 100}})),
@@ -4900,6 +4916,92 @@ The sensor is ideal, i.e., it does not influence the fluid.
49004916
<p><br><img src=\"modelica://Physiolibrary/Resources/Images/Examples/BloodGasesEquilibrium.bmp\"/></p>
49014917
</html>"));
49024918
end BloodTitrationByNaOH;
4919+
4920+
model AirWaterSaturation_0 "Human respiration model"
4921+
extends Modelica.Icons.Example;
4922+
import Modelica.Units.SI.*;
4923+
replaceable package Air = Media.Air;
4924+
parameter Physiolibrary.Types.HydraulicResistance TotalResistance = 147099.75 "Total lungs pathways resistance";
4925+
parameter Real BronchiResistanceFraction = 0.3;
4926+
parameter Real AlveoliDuctResistanceFraction = 0.2;
4927+
parameter Real TracheaResistanceFraction = 1 - (BronchiResistanceFraction + AlveoliDuctResistanceFraction) / 2;
4928+
parameter Physiolibrary.Types.HydraulicResistance TracheaResistance = TotalResistance * TracheaResistanceFraction "Left Bronchi Resistance";
4929+
parameter Physiolibrary.Types.HydraulicCompliance TotalCompliance(displayUnit = "l/cmH2O") = 1.0197162129779e-06 "Total lungs compliance";
4930+
parameter Temperature CoreTemperature = 310.15 "body temperature";
4931+
parameter Temperature EnvironmentTemperature = 298.15 "external air temperature";
4932+
4933+
inner Modelica.Fluid.System system(T_ambient = CoreTemperature) "Human body system setting" annotation (
4934+
Placement(transformation(extent = {{60, 66}, {80, 86}})));
4935+
4936+
Physiolibrary.Fluid.Sources.PressureSource environment(redeclare package Medium = Air, temperature_start = EnvironmentTemperature) "External environment" annotation (
4937+
Placement(transformation(extent = {{-360, 78}, {-340, 98}})));
4938+
Physiolibrary.Fluid.Sensors.FlowMeasure flowMeasure(redeclare package Medium = Air) annotation (
4939+
Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 270, origin = {-318, 66})));
4940+
Physiolibrary.Fluid.Components.ElasticVessel upperRespiratoryTract(redeclare package Medium = Air,
4941+
useSubstances=true,
4942+
volume_start=0.0001,
4943+
massFractions_start=Air.reference_X[1:Air.nS - 1], useThermalPort = true, Compliance = TotalCompliance / 100, ZeroPressureVolume(displayUnit = "ml") = 0.0001, ResidualVolume(displayUnit = "ml") = 0.0001, nPorts=2,
4944+
substances(useH2Orear=true)) annotation (
4945+
Placement(transformation(extent = {{-328, -10}, {-308, 10}})));
4946+
Physiolibrary.Fluid.Components.Resistor upperRespiratoryTractResistance(redeclare package Medium = Air, Resistance = 0.5 * TracheaResistance) annotation (
4947+
Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 90, origin={-318,34})));
4948+
Physiolibrary.Fluid.Sensors.Temperature Temperature_upperRespiratory(redeclare package Medium = Air) annotation (
4949+
Placement(transformation(extent = {{-298, 30}, {-278, 50}})));
4950+
Physiolibrary.Fluid.Sensors.Temperature Temperature_mouth(redeclare package Medium = Air) annotation (
4951+
Placement(transformation(extent = {{-296, 72}, {-276, 92}})));
4952+
Physiolibrary.Thermal.Components.Conductor cooling(Conductance(
4953+
displayUnit="W/K") = 10)
4954+
annotation (Placement(transformation(extent={{-302,-44},{-322,-24}})));
4955+
Physiolibrary.Thermal.Sources.UnlimitedHeat coreHeat(T = system.T_ambient) annotation (
4956+
Placement(transformation(extent = {{-274, -44}, {-294, -24}})));
4957+
Chemical.Boundaries.ExternalSubstance externalSubstance(
4958+
substanceDefinition=Chemical.Substances.Liquid.H2O,
4959+
quantity=Chemical.Boundaries.Internal.Types.ConcentrationQuantities.x_molpmol,
4960+
FixedValue=1) annotation (Placement(transformation(extent={{-396,-46},{-376,-26}})));
4961+
Chemical.Processes.GasSolubility gasSolubility annotation (Placement(transformation(extent={{-358,-46},{-338,-26}})));
4962+
Media.Air.SubstancesPort substancesPort(useH2Orear=true) annotation (Placement(transformation(extent={{-370,-10},{-330,30}})));
4963+
equation
4964+
connect(environment.y, flowMeasure.q_in) annotation (
4965+
Line(points = {{-340, 88}, {-318, 88}, {-318, 76}}, color = {127, 0, 0}, thickness = 0.5));
4966+
connect(flowMeasure.q_out, upperRespiratoryTractResistance.q_out) annotation (
4967+
Line(points={{-318,56},{-318,44}}, color = {127, 0, 0}, thickness = 0.5));
4968+
connect(upperRespiratoryTractResistance.q_in, upperRespiratoryTract.q_in[1]) annotation (
4969+
Line(points={{-318,24},{-318,-0.65},{-318.1,-0.65}}, color = {127, 0, 0}, thickness = 0.5));
4970+
connect(cooling.q_out, upperRespiratoryTract.heatPort) annotation (Line(
4971+
points={{-322,-34},{-324,-34},{-324,-10}},
4972+
color={191,0,0},
4973+
thickness=0.5));
4974+
connect(coreHeat.port, cooling.q_in) annotation (Line(
4975+
points={{-294,-34},{-302,-34}},
4976+
color={191,0,0},
4977+
thickness=0.5));
4978+
connect(flowMeasure.q_in, Temperature_mouth.port) annotation (
4979+
Line(points = {{-318, 76}, {-318, 82}, {-298, 82}, {-298, 72}, {-286, 72}}, color = {127, 0, 0}, thickness = 0.5));
4980+
connect(upperRespiratoryTract.q_in[2], Temperature_upperRespiratory.port) annotation (
4981+
Line(points={{-318.1,0.65},{-318.1,10},{-318,10},{-318,8},{-288,8},{-288,30}}, color = {127, 0, 0}, thickness = 0.5));
4982+
connect(externalSubstance.fore, gasSolubility.rear) annotation (Line(
4983+
points={{-376,-36},{-358,-36}},
4984+
color={158,66,200},
4985+
thickness=0.5));
4986+
connect(upperRespiratoryTract.substances, substancesPort)
4987+
annotation (Line(
4988+
points={{-328,0},{-328,-16},{-350,-16},{-350,10}},
4989+
color={158,66,200},
4990+
thickness=0.5));
4991+
connect(gasSolubility.fore, substancesPort.H2Orear)
4992+
annotation (Line(
4993+
points={{-338,-36},{-330,-36},{-330,-18},{-376,-18},{-376,10.1},{-349.9,10.1}},
4994+
color={158,66,200},
4995+
thickness=0.5));
4996+
annotation (
4997+
Icon(coordinateSystem(preserveAspectRatio = false)),
4998+
Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-360, -100}, {100, 100}})),
4999+
experiment(StopTime = 200, __Dymola_Algorithm = "Dassl"),
5000+
Documentation(info = "<html>
5001+
<p>References:</p>
5002+
<p><br>Mecklenburgh, J. S., and W. W. Mapleson. &quot;Ventilatory assistance and respiratory muscle activity. 1: Interaction in healthy volunteers.&quot; <i>British journal of anaesthesia</i> 80.4 (1998): 422-433.</p>
5003+
</html>"));
5004+
end AirWaterSaturation_0;
49035005
end Examples;
49045006
annotation (
49055007
Documentation(info = "<html>

0 commit comments

Comments
 (0)