<?xml version="1.0" encoding="UTF-8"?>

<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  http://neuroml.svn.sourceforge.net/viewvc/neuroml/NeuroML2/Schemas/NeuroML2/NeuroML_v2alpha.xsd"
    id="izAccomodation">

    <accomodationIzhikevichCell id="izAccomodation" v0 = "-65.0mV" U0 = "-16.0" thresh = "30mV" a ="0.02" b = "1.0" c = "-55.0" d = "4.0"/>

    <ComponentType name="accomodationIzhikevichCell"
        extends="baseCellMembPot"
        description="Modified model for R here: http://izhikevich.org/publications/figure1.m">

        <Parameter name="v0" dimension="voltage"/>
        <Parameter name="U0" dimension="none"/>                            <!-- Changed! -->
        <Parameter name="a" dimension="none"/>
        <Parameter name="b" dimension="none"/>
        <Parameter name="c" dimension="none"/>
        <Parameter name="d" dimension="none"/>
        <Parameter name="thresh" dimension="voltage"/>

        <Constant name="MSEC" dimension="time" value="1ms"/>
        <Constant name="MVOLT" dimension="voltage" value="1mV"/>

        <Attachments name="synapses" type="basePointCurrentDL"/>

        <Exposure name="U" dimension="none"/>

        <Dynamics>

            <StateVariable name="v" dimension="voltage" exposure="v"/>
            <StateVariable name="U" dimension="none" exposure="U"/>

            <DerivedVariable name="ISyn" dimension="none" select="synapses[*]/I" reduce="add" />

            <TimeDerivative variable="v" value="(0.04 * v^2 / MVOLT + 5 * v + (140.0 - U + ISyn) * MVOLT)/MSEC"/>
            <!--<TimeDerivative variable="U" value="a * (b * v / MVOLT - U) / MSEC"/>-->
            <TimeDerivative variable="U" value="a * (b * ( (v / MVOLT) +65) ) / MSEC"/>              <!-- Changed! -->


            <OnStart>
                <StateAssignment variable="v" value="v0"/>
                <StateAssignment variable="U" value="U0"/>                     <!-- Changed! -->
            </OnStart>

            <OnCondition test="v .gt. thresh">
                <StateAssignment variable="v" value="c * MVOLT"/>
                <StateAssignment variable="U" value="U + d"/>
                <EventOut port="spike"/>
            </OnCondition>

        </Dynamics>

    </ComponentType>

</neuroml>
