00001 /*************************************************************************** 00002 euler.h - description 00003 ------------------- 00004 copyright : (C) 2001, 2002 by Matt Grover 00005 email : mgrover@amygdala.org 00006 ***************************************************************************/ 00007 00008 /*************************************************************************** 00009 * * 00010 * This program is free software; you can redistribute it and/or modify * 00011 * it under the terms of the GNU General Public License as published by * 00012 * the Free Software Foundation; either version 2 of the License, or * 00013 * (at your option) any later version. * 00014 * * 00015 ***************************************************************************/ 00016 #ifndef EULER_H 00017 #define EULER_H 00018 00019 00030 class Euler { 00031 public: 00039 Euler(unsigned int step, 00040 unsigned int min, 00041 unsigned int max, 00042 float synapticTimeConst, 00043 float membraneTimeConst); 00044 00045 ~Euler(); 00046 00052 void GenExcitatoryTable(int resolution, float* tbl, float* derivTbl); 00053 00059 void GenInhibitoryTable(int resolution, float* tbl, float* derivTbl); 00060 00061 protected: 00064 inline void AlphaExcite(); 00065 00068 inline void AlphaInhibit(); 00069 00070 unsigned int stepSize; // step size in microseconds 00071 unsigned int plotMin; // begining of plot (usually 0) in microseconds 00072 unsigned int plotMax; 00073 unsigned int plotSize; 00074 float* plotData; // array holding data points from integration 00075 float* plotDeriv; // derivative of plotData 00076 00077 long time; // current time in microseconds 00078 float lastV; // milivolts 00079 float currV; // milivolts 00080 float lastSlope; 00081 float currSlope; 00082 float tauS; // synaptic time constant (in microseconds) 00083 float tauM; // membrane time constant (in microseconds) 00084 }; 00085 00086 #endif