<?xml version="1.0" encoding="ISO-8859-1"?>
<neuroml xmlns="http://www.neuroml.org/schema/neuroml2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.neuroml.org/schema/neuroml2 https://raw.github.com/NeuroML/NeuroML2/development/Schemas/NeuroML2/NeuroML_v2beta4.xsd" id="NeuroML_ionChannel">

    <notes>NeuroML file containing different Ca++ dynamics </notes>
    
    <!-- Intracellular Calcium dynamics, used in: cck, sca -->
    <BezaireCaConcentrationModel id="Capool" ion="ca" decayConstant="9ms" restingConc="5e-5mM" shellThickness="0.2um"/>
    
    <!-- Intracellular Calcium dynamics, used in: ivy, ngf-->
    <BezaireCaConcentrationModel id="Capoolngf" ion="ca" decayConstant="10ms" restingConc="5e-6mM" shellThickness="0.2um"/>
    
    
        <ComponentType name="BezaireCaConcentrationModel"
                       extends="concentrationModel"
                       description="Model of Capool">
            
        <Parameter name="restingConc" dimension="concentration"/>
        <Parameter name="decayConstant" dimension="time"/>
        <Parameter name="shellThickness" dimension="length"/>
        
        <Constant name="Faraday" dimension="charge_per_mole" value="96520C_per_mol"/> <!-- that's in the original code...-->
        
        <Requirement name="iCa" dimension="current"/>
        
        <Exposure name="concentration" dimension="concentration"/>

        <Text name="ion"/> <!-- TODO: check why this isn't inherited from concentrationModel -->

        <Dynamics>

            <StateVariable name="concentration" exposure="concentration" dimension="concentration"/>
            <StateVariable name="extConcentration" exposure="extConcentration" dimension="concentration"/>
            
            <TimeDerivative variable="concentration" value=" iCa / (Faraday * surfaceArea * shellThickness) - ((concentration - restingConc) / decayConstant)"/>
            
            <OnStart>
                <StateAssignment variable="concentration" value="restingConc"/>  <!-- should be: initialConcentration-->
                <StateAssignment variable="extConcentration" value="initialExtConcentration"/>
            </OnStart>          

            <OnCondition test="concentration .lt. 0">
                <StateAssignment variable="concentration" value="0"/>
            </OnCondition>
            
        </Dynamics>

    </ComponentType>
    
 
</neuroml>
