- Author:
- Soroush Safaei <ssaf006@aucklanduni.ac.nz>
- Date:
- 2016-11-08 18:27:54+13:00
- Desc:
- Initial commit for BondGraph SGLT
- Permanent Source URI:
- https://models.physiomeproject.org/workspace/436/rawfile/962bccba5110b6ff849f76226d66e00b152defa8/BG.cellml
<?xml version='1.0'?>
<model name="BG" xmlns="http://www.cellml.org/cellml/1.1#" xmlns:cellml="http://www.cellml.org/cellml/1.1#">
<!-- Basic BG library-->
<!-- Junction components.
Note that, due to CellML limitations, it is not possible to implement junctions with a variable number of ports.
2,3 and 4 port versions are provided here.-->
<!-- 2-port One junction J1_2-->
<component name="J1_2">
<!-- Port 1: flow imposed-->
<variable name="e_1" public_interface="out" units="effort"/>
<variable name="f_1" public_interface="in" units="flow"/>
<variable name="h_1" public_interface="in" units="dimensionless"/>
<!-- Port 2: effort imposed-->
<variable name="e_2" public_interface="in" units="effort"/>
<variable name="f_2" public_interface="out" units="flow"/>
<variable name="h_2" public_interface="in" units="dimensionless"/>
<!-- All flows are the same-->
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>f_2</ci>
<ci>f_1</ci>
</apply>
<!-- Compute effort taking acount of head (1) or tail (-1)-->
<apply>
<eq/>
<ci>e_1</ci>
<apply>
<times/>
<apply>
<minus/>
<ci>h_1</ci>
</apply>
<ci>h_2</ci>
<ci>e_2</ci>
</apply>
</apply>
</math>
</component>
<!-- 3-port One junction J1_3-->
<component name="J1_3">
<!-- Port 1: flow imposed-->
<variable name="e_1" public_interface="out" units="effort"/>
<variable name="f_1" public_interface="in" units="flow"/>
<variable name="h_1" public_interface="in" units="dimensionless"/>
<!-- Port 2: effort imposed-->
<variable name="e_2" public_interface="in" units="effort"/>
<variable name="f_2" public_interface="out" units="flow"/>
<variable name="h_2" public_interface="in" units="dimensionless"/>
<!-- Port 3: effort imposed-->
<variable name="e_3" public_interface="in" units="effort"/>
<variable name="f_3" public_interface="out" units="flow"/>
<variable name="h_3" public_interface="in" units="dimensionless"/>
<!-- All flows are the same-->
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>f_2</ci>
<ci>f_1</ci>
</apply>
<apply>
<eq/>
<ci>f_3</ci>
<ci>f_1</ci>
</apply>
<!-- Compute effort taking acount of head (1) or tail (-1)-->
<apply>
<eq/>
<ci>e_1</ci>
<apply>
<times/>
<apply>
<minus/>
<ci>h_1</ci>
</apply>
<apply>
<plus/>
<apply>
<times/>
<ci>h_2</ci>
<ci>e_2</ci>
</apply>
<apply>
<times/>
<ci>h_3</ci>
<ci>e_3</ci>
</apply>
</apply>
</apply>
</apply>
</math>
</component>
<!-- 4-port One junction J1_4-->
<component name="J1_4">
<!-- Port 1: flow imposed-->
<variable name="e_1" public_interface="out" units="effort"/>
<variable name="f_1" public_interface="in" units="flow"/>
<variable name="h_1" public_interface="in" units="dimensionless"/>
<!-- Port 2: effort imposed-->
<variable name="e_2" public_interface="in" units="effort"/>
<variable name="f_2" public_interface="out" units="flow"/>
<variable name="h_2" public_interface="in" units="dimensionless"/>
<!-- Port 3: effort imposed-->
<variable name="e_3" public_interface="in" units="effort"/>
<variable name="f_3" public_interface="out" units="flow"/>
<variable name="h_3" public_interface="in" units="dimensionless"/>
<!-- Port 4: effort imposed-->
<variable name="e_4" public_interface="in" units="effort"/>
<variable name="f_4" public_interface="out" units="flow"/>
<variable name="h_4" public_interface="in" units="dimensionless"/>
<!-- All flows are the same-->
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>f_2</ci>
<ci>f_1</ci>
</apply>
<apply>
<eq/>
<ci>f_3</ci>
<ci>f_1</ci>
</apply>
<apply>
<eq/>
<ci>f_4</ci>
<ci>f_1</ci>
</apply>
<!-- Compute effort taking acount of head (1) or tail (-1)-->
<apply>
<eq/>
<ci>e_1</ci>
<apply>
<times/>
<apply>
<minus/>
<ci>h_1</ci>
</apply>
<apply>
<plus/>
<apply>
<times/>
<ci>h_2</ci>
<ci>e_2</ci>
</apply>
<apply>
<times/>
<ci>h_3</ci>
<ci>e_3</ci>
</apply>
<apply>
<times/>
<ci>h_4</ci>
<ci>e_4</ci>
</apply>
</apply>
</apply>
</apply>
</math>
</component>
<component name="J1_5">
<!-- Port 1: flow imposed-->
<variable name="e_1" public_interface="out" units="effort"/>
<variable name="f_1" public_interface="in" units="flow"/>
<variable name="h_1" public_interface="in" units="dimensionless"/>
<!-- Port 2: effort imposed-->
<variable name="e_2" public_interface="in" units="effort"/>
<variable name="f_2" public_interface="out" units="flow"/>
<variable name="h_2" public_interface="in" units="dimensionless"/>
<!-- Port 3: effort imposed-->
<variable name="e_3" public_interface="in" units="effort"/>
<variable name="f_3" public_interface="out" units="flow"/>
<variable name="h_3" public_interface="in" units="dimensionless"/>
<!-- Port 4: effort imposed-->
<variable name="e_4" public_interface="in" units="effort"/>
<variable name="f_4" public_interface="out" units="flow"/>
<variable name="h_4" public_interface="in" units="dimensionless"/>
<!-- Port 5: effort imposed-->
<variable name="e_5" public_interface="in" units="effort"/>
<variable name="f_5" public_interface="out" units="flow"/>
<variable name="h_5" public_interface="in" units="dimensionless"/>
<!-- All flows are the same-->
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>f_2</ci>
<ci>f_1</ci>
</apply>
<apply>
<eq/>
<ci>f_3</ci>
<ci>f_1</ci>
</apply>
<apply>
<eq/>
<ci>f_4</ci>
<ci>f_1</ci>
</apply>
<apply>
<eq/>
<ci>f_5</ci>
<ci>f_1</ci>
</apply>
<!-- Compute effort taking acount of head (1) or tail (-1)-->
<apply>
<eq/>
<ci>e_1</ci>
<apply>
<times/>
<apply>
<minus/>
<ci>h_1</ci>
</apply>
<apply>
<plus/>
<apply>
<times/>
<ci>h_2</ci>
<ci>e_2</ci>
</apply>
<apply>
<times/>
<ci>h_3</ci>
<ci>e_3</ci>
</apply>
<apply>
<times/>
<ci>h_4</ci>
<ci>e_4</ci>
</apply>
<apply>
<times/>
<ci>h_5</ci>
<ci>e_5</ci>
</apply>
</apply>
</apply>
</apply>
</math>
</component>
<!-- 2-port Zero junction J0_2-->
<component name="J0_2">
<!-- Port 1: effort imposed-->
<variable name="e_1" public_interface="in" units="effort"/>
<variable name="f_1" public_interface="out" units="flow"/>
<variable name="h_1" public_interface="in" units="dimensionless"/>
<!-- Port 2: flow imposed-->
<variable name="e_2" public_interface="out" units="effort"/>
<variable name="f_2" public_interface="in" units="flow"/>
<variable name="h_2" public_interface="in" units="dimensionless"/>
<!-- All efforts are the same-->
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>e_2</ci>
<ci>e_1</ci>
</apply>
<!-- Compute flow taking acount of head (1) or tail (-1)-->
<apply>
<eq/>
<ci>f_1</ci>
<apply>
<times/>
<apply>
<minus/>
<ci>h_1</ci>
</apply>
<ci>h_2</ci>
<ci>f_2</ci>
</apply>
</apply>
</math>
</component>
<!-- 3-port Zero junction J0_3-->
<component name="J0_3">
<!-- Port 1: effort imposed-->
<variable name="e_1" public_interface="in" units="effort"/>
<variable name="f_1" public_interface="out" units="flow"/>
<variable name="h_1" public_interface="in" units="dimensionless"/>
<!-- Port 2: flow imposed-->
<variable name="e_2" public_interface="out" units="effort"/>
<variable name="f_2" public_interface="in" units="flow"/>
<variable name="h_2" public_interface="in" units="dimensionless"/>
<!-- Port 3: flow imposed-->
<variable name="e_3" public_interface="out" units="effort"/>
<variable name="f_3" public_interface="in" units="flow"/>
<variable name="h_3" public_interface="in" units="dimensionless"/>
<!-- All efforts are the same-->
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>e_2</ci>
<ci>e_1</ci>
</apply>
<apply>
<eq/>
<ci>e_3</ci>
<ci>e_1</ci>
</apply>
<!-- Compute flow taking acount of head (1) or tail (-1)-->
<apply>
<eq/>
<ci>f_1</ci>
<apply>
<times/>
<apply>
<minus/>
<ci>h_1</ci>
</apply>
<apply>
<plus/>
<apply>
<times/>
<ci>h_2</ci>
<ci>f_2</ci>
</apply>
<apply>
<times/>
<ci>h_3</ci>
<ci>f_3</ci>
</apply>
</apply>
</apply>
</apply>
</math>
</component>
<!-- 4-port Zero junction J0_4-->
<component name="J0_4">
<!-- Port 1: effort imposed-->
<variable name="e_1" public_interface="in" units="effort"/>
<variable name="f_1" public_interface="out" units="flow"/>
<variable name="h_1" public_interface="in" units="dimensionless"/>
<!-- Port 2: flow imposed-->
<variable name="e_2" public_interface="out" units="effort"/>
<variable name="f_2" public_interface="in" units="flow"/>
<variable name="h_2" public_interface="in" units="dimensionless"/>
<!-- Port 3: flow imposed-->
<variable name="e_3" public_interface="out" units="effort"/>
<variable name="f_3" public_interface="in" units="flow"/>
<variable name="h_3" public_interface="in" units="dimensionless"/>
<!-- Port 4: flow imposed-->
<variable name="e_4" public_interface="out" units="effort"/>
<variable name="f_4" public_interface="in" units="flow"/>
<variable name="h_4" public_interface="in" units="dimensionless"/>
<!-- All efforts are the same-->
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>e_2</ci>
<ci>e_1</ci>
</apply>
<apply>
<eq/>
<ci>e_3</ci>
<ci>e_1</ci>
</apply>
<apply>
<eq/>
<ci>e_4</ci>
<ci>e_1</ci>
</apply>
<!-- Compute flow taking acount of head (1) or tail (-1)-->
<apply>
<eq/>
<ci>f_1</ci>
<apply>
<times/>
<apply>
<minus/>
<ci>h_1</ci>
</apply>
<apply>
<plus/>
<apply>
<times/>
<ci>h_2</ci>
<ci>f_2</ci>
</apply>
<apply>
<times/>
<ci>h_3</ci>
<ci>f_3</ci>
</apply>
<apply>
<times/>
<ci>h_4</ci>
<ci>f_4</ci>
</apply>
</apply>
</apply>
</apply>
</math>
</component>
<!-- Storage components-->
<!-- C component -->
<component name="C">
<!-- Version parameters-->
<variable name="cr" public_interface="in" units="dimensionless"/>
<variable name="stat" public_interface="in" units="dimensionless"/>
<!-- Numerical parameters-->
<variable name="RT" public_interface="in" units="effort"/>
<variable name="K" public_interface="in" units="_intflow"/>
<!-- Internal variables
State x = x_0 + x_1 where x_0 is external signal and x_1 is integrated.-->
<variable name="x" public_interface="out" units="intflow"/>
<variable initial_value="0" name="x_1" units="intflow"/>
<variable name="x_0" public_interface="in" units="intflow"/>
<variable name="f_int" units="flow"/>
<variable name="f" public_interface="out" units="flow"/>
<!-- Time-->
<variable name="t" public_interface="in" units="time"/>
<!-- Port-->
<variable name="e_1" public_interface="out" units="effort"/>
<variable name="f_1" public_interface="in" units="flow"/>
<variable name="h_1" public_interface="in" units="dimensionless"/>
<!-- Other stuff
Power-->
<variable name="p" public_interface="out" units="power"/>
<!-- Chemostat if stat==1-->
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>f</ci>
<apply>
<times/>
<ci>h_1</ci>
<ci>f_1</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>f_int</ci>
<piecewise>
<piece>
<cn cellml:units="flow">0</cn>
<apply>
<eq/>
<ci>stat</ci>
<cn cellml:units="dimensionless">1</cn>
</apply>
</piece>
<otherwise>
<ci>f</ci>
</otherwise>
</piecewise>
</apply>
<apply>
<eq/>
<apply>
<diff/>
<bvar>
<ci>t</ci>
</bvar>
<ci>x_1</ci>
</apply>
<ci>f_int</ci>
</apply>
<apply>
<eq/>
<ci>x</ci>
<apply>
<plus/>
<ci>x_0</ci>
<ci>x_1</ci>
</apply>
</apply>
<!-- cr==0 Linear
cr==1 Chemical-->
<apply>
<eq/>
<ci>e_1</ci>
<piecewise>
<piece>
<apply>
<times/>
<ci>RT</ci>
<ci>K</ci>
<ci>x</ci>
</apply>
<apply>
<eq/>
<ci>cr</ci>
<cn cellml:units="dimensionless">0</cn>
</apply>
</piece>
<piece>
<apply>
<times/>
<ci>RT</ci>
<apply>
<ln/>
<apply>
<times/>
<ci>K</ci>
<ci>x</ci>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>cr</ci>
<cn cellml:units="dimensionless">1</cn>
</apply>
</piece>
</piecewise>
</apply>
<!-- Power-->
<apply>
<eq/>
<ci>p</ci>
<apply>
<times/>
<ci>h_1</ci>
<ci>e_1</ci>
<ci>f_1</ci>
</apply>
</apply>
</math>
</component>
<!-- Dissipative components-->
<!-- Mass-action reaction component-->
<component name="Re">
<!-- Version parameters-->
<variable name="cr" public_interface="in" units="dimensionless"/>
<variable name="stat" public_interface="in" units="dimensionless"/>
<!-- Numerical parameter-->
<variable name="RT" public_interface="in" units="effort"/>
<variable name="kappa" public_interface="in" units="flow"/>
<!-- Ports (flow is common)-->
<variable name="e_1" public_interface="in" units="effort"/>
<variable name="f_1" public_interface="out" units="flow"/>
<variable name="h_1" public_interface="in" units="dimensionless"/>
<variable name="e_2" public_interface="in" units="effort"/>
<variable name="f_2" public_interface="out" units="flow"/>
<variable name="h_2" public_interface="in" units="dimensionless"/>
<!-- Other stuff
Affinity-->
<variable name="A" public_interface="out" units="effort"/>
<!-- Power-->
<variable name="p" public_interface="out" units="power"/>
<!-- cr ==0 Linear
cr==1 Chemical-->
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>f_1</ci>
<piecewise>
<piece>
<apply>
<divide/>
<apply>
<times/>
<ci>kappa</ci>
<apply>
<plus/>
<apply>
<times/>
<ci>h_1</ci>
<ci>e_1</ci>
</apply>
<apply>
<times/>
<ci>h_2</ci>
<ci>e_2</ci>
</apply>
</apply>
</apply>
<ci>RT</ci>
</apply>
<apply>
<eq/>
<ci>cr</ci>
<cn cellml:units="dimensionless">0</cn>
</apply>
</piece>
<piece>
<apply>
<times/>
<ci>kappa</ci>
<apply>
<plus/>
<apply>
<times/>
<ci>h_1</ci>
<apply>
<exp/>
<apply>
<divide/>
<ci>e_1</ci>
<ci>RT</ci>
</apply>
</apply>
</apply>
<apply>
<times/>
<ci>h_2</ci>
<apply>
<exp/>
<apply>
<divide/>
<ci>e_2</ci>
<ci>RT</ci>
</apply>
</apply>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>cr</ci>
<cn cellml:units="dimensionless">1</cn>
</apply>
</piece>
</piecewise>
</apply>
<apply>
<eq/>
<ci>f_2</ci>
<ci>f_1</ci>
</apply>
<apply>
<eq/>
<ci>A</ci>
<apply>
<plus/>
<apply>
<times/>
<ci>h_1</ci>
<ci>e_1</ci>
</apply>
<apply>
<times/>
<ci>h_2</ci>
<ci>e_2</ci>
</apply>
</apply>
</apply>
<apply>
<eq/>
<ci>p</ci>
<apply>
<times/>
<ci>A</ci>
<ci>f_1</ci>
</apply>
</apply>
</math>
</component>
<!-- Two versions of TF due to causality issues with CellML 1.1
TFe has effort imposed on port 1-->
<component name="TFe">
<!-- Numerical parameter-->
<variable name="rho" public_interface="in" units="dimensionless"/>
<!-- Ports effort on port 1-->
<variable name="e_1" public_interface="in" units="effort"/>
<variable name="f_1" public_interface="out" units="flow"/>
<variable name="h_1" public_interface="in" units="dimensionless"/>
<variable name="e_2" public_interface="out" units="effort"/>
<variable name="f_2" public_interface="in" units="flow"/>
<variable name="h_2" public_interface="in" units="dimensionless"/>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>e_2</ci>
<apply>
<divide/>
<ci>e_1</ci>
<ci>rho</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>f_1</ci>
<apply>
<divide/>
<ci>f_2</ci>
<ci>rho</ci>
</apply>
</apply>
</math>
</component>
<!-- TFf has flow imposed on port 1-->
<component name="TFf">
<!-- Numerical parameter-->
<variable name="rho" public_interface="in" units="dimensionless"/>
<!-- Ports effort on port 1-->
<variable name="e_1" public_interface="out" units="effort"/>
<variable name="f_1" public_interface="in" units="flow"/>
<variable name="h_1" public_interface="in" units="dimensionless"/>
<variable name="e_2" public_interface="in" units="effort"/>
<variable name="f_2" public_interface="out" units="flow"/>
<variable name="h_2" public_interface="in" units="dimensionless"/>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<eq/>
<ci>e_1</ci>
<apply>
<times/>
<ci>rho</ci>
<ci>e_2</ci>
</apply>
</apply>
<apply>
<eq/>
<ci>f_2</ci>
<apply>
<times/>
<ci>rho</ci>
<ci>f_1</ci>
</apply>
</apply>
</math>
</component>
</model>