Skip to content

Commit

Permalink
add: possibility to scale energy production and consumption per mass
Browse files Browse the repository at this point in the history
add: molar concentration display units
fix: integrator icon annotation
  • Loading branch information
MarekMatejak committed Oct 2, 2014
1 parent 063eef5 commit 08d35d8
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 10 deletions.
6 changes: 1 addition & 5 deletions Physiolibrary/Blocks.mo
Expand Up @@ -64,11 +64,7 @@ This is discussed in the description of package
extent={{-150,-150},{150,-110}},
lineColor={0,0,0},
textString="k=%k"),
Line(points={{-80,-80},{80,80}}, color={0,0,127}),
Text(
extent={{-150,106},{150,146}},
lineColor={0,0,0},
textString="%stateName")}),
Line(points={{-80,-80},{80,80}}, color={0,0,127})}),
Diagram(coordinateSystem(
preserveAspectRatio=true,
extent={{-100,-100},{100,100}},
Expand Down
7 changes: 6 additions & 1 deletion Physiolibrary/Resources/DisplayUnits/displayunit.mos
Expand Up @@ -22,6 +22,8 @@ defineUnitConversion("J/mol", "kcal/mol", 1/4186.8 ); //molar energy
defineUnitConversion("J/(kg.K)", "kcal/(kg.K)", 1/4186.8 ); //capacity
defineUnitConversion("W/K", "kcal/(min.K)", 60/4186.8 ); //conductance
defineUnitConversion("W", "kcal/min", 60/4186.8 ); //flow
defineUnitConversion("W", "cal/min", 60/4.1868 ); //flow
defineUnitConversion("W/kg", "cal/(g.min)", 60/4186.8 ); //power per mass

//Pharmacological international units of human secreted substances (http://www.who.int/bloodproducts/catalogue/Alph2014.pdf?ua=1)
defineUnitConversion("1", "iu", 1 );
Expand Down Expand Up @@ -78,9 +80,12 @@ defineUnitConversion("mol", "mmol", 10^3 );
defineUnitConversion("mol", "umol", 10^6 );
defineUnitConversion("mol", "nmol", 10^9 );
defineUnitConversion("mol", "pmol", 10^12 );
defineUnitConversion("mol/m3", "mmol/ml", 10^(-3) );
defineUnitConversion("mol/m3", "mol/l", 10^(-3) );
defineUnitConversion("mol/m3", "mmol/l", 1 );
defineUnitConversion("mol/m3", "mmol/ml", 10^(-3) );
defineUnitConversion("mol/m3", "umol/l", 1e3 );
defineUnitConversion("mol/m3", "nmol/l", 1e6 );
defineUnitConversion("mol/m3", "pmol/l", 1e9 );
defineUnitConversion("mol/s", "mol/min", 60 );
defineUnitConversion("mol/s", "mmol/min", 60*10^3 );
defineUnitConversion("mol/s", "umol/min", 60*10^6 );
Expand Down
46 changes: 42 additions & 4 deletions Physiolibrary/Types.mo
Expand Up @@ -1479,6 +1479,43 @@ package Types "Physiological units with nominals"
end OneConst;
end Constants;

package ScaleConstants
extends Modelica.Icons.SourcesPackage;

block Power "Constant signal of type Power per Mass"
parameter Types.PowerPerMass k "Constant Power output value";
RealIO.PowerOutput y "Power constant"
annotation (Placement(transformation(extent={{40,-10},{60,10}}),
iconTransformation(extent={{40,-10},{60,10}})));
RealIO.MassInput mass annotation (Placement(transformation(extent={{-20,20},{20,
60}}), iconTransformation(
extent={{-20,-20},{20,20}},
rotation=270,
origin={0,40})));
equation
y=k*mass;
annotation (defaultComponentName="power",
Diagram(coordinateSystem(extent={{-40,-40},{40,40}})), Icon(
coordinateSystem(extent={{-40,-40},{40,40}}, preserveAspectRatio=false),
graphics={
Rectangle(extent={{-40,40},{40,-40}},
lineColor={0,0,0},
radius=10,
fillColor={236,236,236},
fillPattern=FillPattern.Solid),
Text( extent={{-100,-44},{100,-64}},
lineColor={0,0,0},
fillColor={236,236,236},
fillPattern=FillPattern.Solid,
textString="%name"),
Text( extent={{-40,10},{40,-10}},
lineColor={0,0,0},
fillColor={236,236,236},
fillPattern=FillPattern.Solid,
textString="Const")}));
end Power;
end ScaleConstants;

package RealIO
extends Modelica.Icons.Package;

Expand Down Expand Up @@ -3611,16 +3648,17 @@ constructed by the signals connected to this bus.
type Temperature = Modelica.SIunits.Temperature(displayUnit="degC", nominal=1, min=0);
type HeatFlowRate = Modelica.SIunits.HeatFlowRate(displayUnit="kcal/min", nominal=4186.8/60);
type Power = Modelica.SIunits.Power(displayUnit="kcal/min", nominal=4186.8/60);
type PowerPerMass = Real(final quantity="Power per Mass",final unit="W/kg",displayUnit="cal/(g.min)", nominal=4.1868/(0.001*60));
type ThermalConductance = Modelica.SIunits.ThermalConductance(displayUnit="kcal/(min.K)", nominal=4186.8/60);
type SpecificHeatCapacity = Modelica.SIunits.SpecificHeatCapacity(displayUnit="kcal/(kg.K)", nominal=4186.8);
type SpecificEnergy = Modelica.SIunits.SpecificEnergy(displayUnit="kcal/kg", nominal=4186.8)
"vaporization, ..";

type ElectricPotential = Modelica.SIunits.ElectricPotential(displayUnit="mV", nominal=1e-3);
type ElectricCharge = Modelica.SIunits.ElectricCharge(displayUnit="meq", nominal=96.4853365);
type ElectricCharge = Modelica.SIunits.ElectricCharge(displayUnit="meq", nominal=(9.64853399*10^4)/1000);
type VolumeDensityOfCharge =
Modelica.SIunits.VolumeDensityOfCharge(displayUnit="meq/l", nominal=0.0964853365);
type ElectricCurrent = Modelica.SIunits.ElectricCurrent(displayUnit="meq/min", nominal=1.60808894);
Modelica.SIunits.VolumeDensityOfCharge(displayUnit="meq/l", nominal=(9.64853399*10^4));
type ElectricCurrent = Modelica.SIunits.ElectricCurrent(displayUnit="meq/min", nominal=(9.64853399*10^4/1000)/60);

//unknown units in Standard Modelica Library 3.2
type Fraction = Real(final quantity="Fraction",final unit="1", displayUnit="%", nominal=1e-2);
Expand Down Expand Up @@ -4565,7 +4603,7 @@ The Real output y is a constant signal:
extends Types.AbstractReal( k=Utilities.readReal(varName,storeUnit,unitConversions));
replaceable package IO = Types.RealExtension.IO (
redeclare type Type=T);
replaceable package Utilities = Types.FilesUtilities(comparisonFileName="comparison_SI.txt")
replaceable package Utilities = Types.FilesUtilities(comparisonFileName="comparison.txt")
constrainedby
Types.Utilities
annotation (Dialog(group="Functions to read or store",tab="Types"));
Expand Down

0 comments on commit 08d35d8

Please sign in to comment.