Пример #1
0
        public override void dydt(double[] dydt, double t, double[] y, IStimulus stimulus)
        {
            double En  = y[0];
            double Ei  = y[1];
            double Rbb = getRbb(y);

            alpha(a, y);
            beta(b, y);

            dydt[0] = -(Iion_n(y) - stimulus.GetValue(t) - (Ei - En) / Rbb) / (Cn + Cm);
            dydt[1] = -(Iion_i(y) + (Ei - En) / Rbb - Cm * dydt[0]) / Ci;

            if (ClampKo == 1)
            {
                dydt[2] = 0;
            }
            else
            {
                dydt[2] = (jK_i(y) + jPump(y)) / Vpa;
            }

            for (int n = 0; n < Ngating; ++n)
            {
                dydt[n + 3] = a[n] * (1 - y[n + 3]) - b[n] * y[n + 3];
            }
        }
Пример #2
0
    public virtual void dydt(double[] dydt, double t, double[] y, IStimulus stimulus)
    {
      double En = y[0];
      double Ei = y[1];

      alpha(a, y);
      beta(b, y);

      dydt[0] = -(Iion_n(y) - stimulus.GetValue(t) - (Ei - En) / Ril) / (Cn + Cm);
      dydt[1] = -(Iion_i(y) + (Ei - En) / Ril - Cm * dydt[0]) / Ci;

      for (int n = 0; n < Ngating; ++n)
        dydt[n + 2] = a[n] * (1 - y[n + 2]) - b[n] * y[n + 2]; 
    }
Пример #3
0
        public virtual void dydt(double[] dydt, double t, double[] y, IStimulus stimulus)
        {
            double En = y[0];
            double Ei = y[1];

            alpha(a, y);
            beta(b, y);

            dydt[0] = -(Iion_n(y) - stimulus.GetValue(t) - (Ei - En) / Ril) / (Cn + Cm);
            dydt[1] = -(Iion_i(y) + (Ei - En) / Ril - Cm * dydt[0]) / Ci;

            for (int n = 0; n < Ngating; ++n)
            {
                dydt[n + 2] = a[n] * (1 - y[n + 2]) - b[n] * y[n + 2];
            }
        }
Пример #4
0
        private void CompileLines(IStimulus stimulus)
        {
            lines = new List <Line>();
            var analyser = new TimeAnalyser();

            stimulus.Visit(analyser);
            analyser.TimePoints.Sort();
            time = analyser.TimePoints.Distinct().ToArray();

            for (int n = 0; n < time.Length - 1; ++n)
            {
                lines.Add(new Line()
                {
                    Time   = time[n],
                    Value  = stimulus.GetValue(time[n]),
                    Slope  = stimulus.GetSlope(time[n]),
                    Length = time[n + 1] - time[n],
                    Count  = CPARDevice.TimeToCount(time[n + 1] - time[n])
                });
            }
        }
Пример #5
0
    public override void dydt(double[] dydt, double t, double[] y, IStimulus stimulus)
    {
      double En = y[0];
      double Ei = y[1];
      double Rbb = getRbb(y);

      alpha(a, y);
      beta(b, y);

      dydt[0] = -(Iion_n(y) - stimulus.GetValue(t) - (Ei - En) / Rbb) / (Cn + Cm);
      dydt[1] = -(Iion_i(y) + (Ei - En) / Rbb - Cm * dydt[0]) / Ci;

      if (ClampKo == 1)
        dydt[2] = 0;
      else
        dydt[2] = (jK_i(y) + jPump(y))/Vpa;

      for (int n = 0; n < Ngating; ++n)
        dydt[n + 3] = a[n] * (1 - y[n + 3]) - b[n] * y[n + 3];
    }