<?xml version="1.0"?>

<!--

FILE : basic_ep_model.xml

CREATED : 27 November 2000

LAST MODIFIED : 22nd July 2002

AUTHOR : Warren Hedley (w.hedley@auckland.ac.nz)
         Department of Engineering Science
         The University of Auckland
         
MODEL STATUS :  This model conforms to the CellML 1.0 Specification released on
                10th August 2001, and the 16/01/2002 CellML Metadata 1.0
                Specification.

DESCRIPTION : This file contains a CellML description of an extremely simple
  electro-physiological/membrane cellular model. The model and associated
  markup have been created solely for demonstration purposes.
-->


<!--
  The root element for our CellML model description is <model>. This contains
  a "name" attribute which would be used if the model were to be combined with
  another model at a later date, or if the model is to be referenced in some
  way by another model.

  Two namespaces are declared on the root element. The first sets the default
  namespace for the <model> element and all elements contained within the
  <model> element to the CellML namespace. The second namespace is again the
  CellML namespace, but this time declared with an explicit "cellml" prefix.
  This declaration has document-wide scope, so the "cellml" prefix may be used
  anywhere to move an element or attribute into the CellML namespace.
-->


<model name="basic_ep_model" xmlns="http://www.cellml.org/cellml/1.0#" xmlns:cellml="http://www.cellml.org/cellml/1.0#" xmlns:cmeta="http://www.cellml.org/metadata/1.0#">

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqs="http://www.cellml.org/bqs/1.0#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
    
<!--
      The following RDF block contains metadata that applies to this document
      as a whole, as indicated by the empty about attribute on the 
      <rdf:Description> element.
    -->

    
<rdf:Description rdf:about="">
      
<!--
        The Model Builder Metadata.  The Dublin Core "creator" element is used  
        to indicate the person who translated the model into CellML.
      -->

      
<dc:creator rdf:parseType="Resource">
        
<vCard:N rdf:parseType="Resource">
          
<vCard:Family>Hedley</vCard:Family>
          
<vCard:Given>Warren</vCard:Given>
        
</vCard:N>
        
<vCard:ORG rdf:parseType="Resource">
          
<vCard:Orgname>The University of Auckland</vCard:Orgname>
          
<vCard:Orgunit>The Engineering Science Department</vCard:Orgunit>
        
</vCard:ORG>
      
</dc:creator>
      
      
<!--
        The Creation Date metadata. This is the date on which the model
        was translated into CellML.
      -->

      
<dcterms:created rdf:parseType="Resource">
        
<dcterms:W3CDTF>2000-11-20</dcterms:W3CDTF>
      
</dcterms:created>
      
      
<!--
        The Last Modified Date metadata. This is the date on which
        the model was last changed.
      -->

      
<cmeta:modification rdf:parseType="Resource">
        
<rdf:value>
          Added metadata.
        
</rdf:value>
        
<cmeta:modifier rdf:parseType="Resource">
          
<vCard:N rdf:parseType="Resource">
            
<vCard:Family>Lloyd</vCard:Family>
            
<vCard:Given>Catherine</vCard:Given>
            
<vCard:Other>May</vCard:Other>
          
</vCard:N>
        
</cmeta:modifier>
        
<dcterms:modified rdf:parseType="Resource"> 
          
<dcterms:W3CDTF>2002-07-22</dcterms:W3CDTF>
        
</dcterms:modified>
      
</cmeta:modification>
    
      
      
<!-- The Publisher metadata. -->
      
<dc:publisher>
        The University of Auckland, Bioengineering Institute
      
</dc:publisher>
    
</rdf:Description>
    
    
<!--
      The following metadata refers to the model itself, as indicated by the
      reference to the ID "basic_ep_model", which is declared on the <model>           element.
    -->

    
<rdf:Description rdf:about="#basic_ep_model">
      
<!-- A human readable name for the model. -->
      
<dc:title>A Simple Electrophysiological Model</dc:title>
      
      
<!-- A comment regarding the model. -->
      
<cmeta:comment rdf:parseType="Resource">
        
<rdf:value>
          Below is a CellML description of a simple electrophysiological model.  
          The purpose of this description is to illustrate how CellML can be 
          used to model ionic currents and changes in ionic concentrations                 within a cell.
        
</rdf:value>
        
<!-- The creator of the comment. -->
        
<dc:creator>
          
<vCard:FN>Catherine Lloyd</vCard:FN>
        
</dc:creator>
      
</cmeta:comment>
    
</rdf:Description>
  
</rdf:RDF>
  
  
  
<!--
    The following <units> elements are used to declare a set of unit names
    that can be referenced by units attributes on <variable> and <cn> elements
    elsewhere in the model. See the example documentation of the simple
    electro-physiological model for more details.
  -->

  
<units name="concentration_units">
    
<unit prefix="milli" units="mole" />
    
<unit units="litre" exponent="-1" />
  
</units>

  
<units name="flux_units">
    
<unit units="concentration_units" />
    
<unit units="second" exponent="-1" />
  
</units>

  
<units name="rate_constant">
    
<unit units="second" exponent="-1" />
  
</units>


  
<!--
    The environment component is used to declare variables that are used
    by all or most of the other components. Variables must be declared inside
    of a component element. 
  -->

  
<component name="environment">
    
<variable name="time" public_interface="out" units="second" />
  
</component>


  
<!--
    The first component to be defined in this simple model is the intra-
    cellular compartment. This defines the intra-cellular concentrations of
    sodium and calcium ions, and defines their behaviour in terms of the fluxes
    across the membrane.
  -->

  
<component name="intra_cellular_space">
    
<!-- the following variables are used in other components -->
    
<variable name="Na" public_interface="out" units="concentration_units" />
    
<variable name="Ca" public_interface="out" units="concentration_units" />

    
<!-- the following variables are imported from other components -->
    
<variable name="time" public_interface="in" units="second" />
    
<variable name="I_Na" public_interface="in" units="flux_units" />
    
<variable name="I_Ca" public_interface="in" units="flux_units" />

    
<math xmlns="http://www.w3.org/1998/Math/MathML">
      
<apply><eq />
        
<apply><diff />
          
<bvar><ci> time </ci></bvar>
          
<ci> Na </ci>
        
</apply>
        
<ci> I_Na </ci>
      
</apply>

      
<apply><eq />
        
<apply><diff />
          
<bvar><ci> time </ci></bvar>
          
<ci> Ca </ci>
        
</apply>
        
<ci> I_Ca </ci>
      
</apply>
    
</math>
  
</component>


  
<!--
    The second component corresponds to the extra-cellular space. The variables
    and equations are the same as for the intra-cellular compartment.
  -->

  
<component name="extra_cellular_space">
    
<!-- the following variables are used in other components -->
    
<variable name="Na" public_interface="out" units="concentration_units" />
    
<variable name="Ca" public_interface="out" units="concentration_units" />

    
<!-- the following variables are imported from other components -->
    
<variable name="time" public_interface="in" units="second" />
    
<variable name="I_Na" public_interface="in" units="flux_units" />
    
<variable name="I_Ca" public_interface="in" units="flux_units" />

    
<math xmlns="http://www.w3.org/1998/Math/MathML">
      
<apply><eq />
        
<apply><diff />
          
<bvar><ci> time </ci></bvar>
          
<ci> Na </ci>
        
</apply>
        
<apply><times />
          
<cn cellml:units="dimensionless"> -1.0 </cn>
          
<ci> I_Na </ci>
        
</apply>
      
</apply>

      
<apply><eq />
        
<apply><diff />
          
<bvar><ci> time </ci></bvar>
          
<ci> Ca </ci>
        
</apply>
        
<apply><times />
          
<cn cellml:units="dimensionless"> -1.0 </cn>
          
<ci> I_Ca </ci>
        
</apply>
      
</apply>
    
</math>
  
</component>


  
<!--
    The membrane component defines the fluxes across the membrane in terms of
    the intra- and extra-cellular ion concentrations and some rate constants.
  -->

  
<component name="cell_membrane">
    
<!-- the following variables are used in other components -->
    
<variable name="I_Na" public_interface="out" units="flux_units" />
    
<variable name="I_Ca" public_interface="out" units="flux_units" />

    
<!-- the following variables are imported from other components -->
    
<variable name="Na_i" public_interface="in" units="concentration_units" />
    
<variable name="Na_e" public_interface="in" units="concentration_units" />
    
<variable name="Ca_i" public_interface="in" units="concentration_units" />
    
<variable name="Ca_e" public_interface="in" units="concentration_units" />

    
<!-- the following variables are only used internally -->
    
<variable name="v_Na" initial_value="1.0e-8" units="rate_constant" />
    
<variable name="v_Ca" initial_value="1.5e-8" units="rate_constant" />

    
<math xmlns="http://www.w3.org/1998/Math/MathML">
      
<apply><eq />
        
<ci> I_Na </ci>
        
<apply><times />
          
<ci> v_Na </ci>
          
<apply><minus />
            
<ci> Na_i </ci>
            
<ci> Na_e </ci>
          
</apply>
        
</apply>
      
</apply>

      
<apply><eq />
        
<ci> I_Ca </ci>
        
<apply><times />
          
<ci> v_Ca </ci>
          
<apply><minus />
            
<ci> Ca_i </ci>
            
<ci> Ca_e </ci>
          
</apply>
        
</apply>
      
</apply>
    
</math>
  
</component>


  
<!--
    Both the intra- and extra-cellular components are simply connected to the
    membrane, and the ion concentrations and fluxes are passed back and forth
    as appropriate.
  -->

  
<connection>
    
<map_components component_1="intra_cellular_space" component_2="cell_membrane" />
    
<map_variables variable_1="Na" variable_2="Na_i" />
    
<map_variables variable_1="Ca" variable_2="Ca_i" />
    
<map_variables variable_1="I_Na" variable_2="I_Na" />
    
<map_variables variable_1="I_Ca" variable_2="I_Ca" />
  
</connection>


  
<connection>
    
<map_components component_1="extra_cellular_space" component_2="cell_membrane" />
    
<map_variables variable_1="Na" variable_2="Na_e" />
    
<map_variables variable_1="Ca" variable_2="Ca_e" />
    
<map_variables variable_1="I_Na" variable_2="I_Na" />
    
<map_variables variable_1="I_Ca" variable_2="I_Ca" />
  
</connection>



  
<!--
    The following connections explicitly pass the variable "time" between the
    "global_variables" component and the intra- and extra-cellular components,
    where it is used.
  -->

  
<connection>
    
<map_components component_1="environment" component_2="intra_cellular_space" />
    
<map_variables variable_1="time" variable_2="time" />
  
</connection>


  
<connection>
    
<map_components component_1="environment" component_2="extra_cellular_space" />
    
<map_variables variable_1="time" variable_2="time" />
  
</connection>


</model>