file:/local_home/local_home/hugo/neurospaces_project/heccer/source/c/snapshots/0/heccer/table.h (Sun Jul 13 18:36:53 2008
) HOME
1: //
2: // Heccer : a compartmental solver that implements efficient Crank-Nicolson
3: // integration for neuronal models.
4: //
5:
6: //////////////////////////////////////////////////////////////////////////////
7: //'
8: //' Heccer : testbed C implementation
9: //'
10: //' Copyright (C) 2006-2008 Hugo Cornelis
11: //'
12: //' functional ideas .. Hugo Cornelis, hugo.cornelis@gmail.com
13: //'
14: //' coding ............ Hugo Cornelis, hugo.cornelis@gmail.com
15: //'
16: //////////////////////////////////////////////////////////////////////////////
17:
18:
19: #ifndef HECCER_TABLE_H
20: #define HECCER_TABLE_H
21:
22:
23: #include <string.h>
24:
25: #include "mechanism.h"
26:
27:
28: #ifndef TRUE
29: #define TRUE 1
30: #endif
31: #ifndef FALSE
32: #define FALSE 0
33: #endif
34:
35:
36: //s interval discretization
37:
38: struct HeccerInterval
39: {
40: //m start of interval
41:
42: double dStart;
43:
44: //m end of interval
45:
46: double dEnd;
47:
48: //m discretization step size
49:
50: double dStep;
51: };
52:
53:
54: struct HeccerTableApproximationOptions
55: {
56: //m how do we do interpolation
57:
58: int iShape;
59: };
60:
61:
62: struct HeccerTabulatedGate
63: {
64: //m original source parameters
65:
66: void *pvParameters;
67:
68: size_t iSizeParameters;
69:
70: //m interval of the tables
71:
72: struct HeccerInterval hi;
73:
74: //m calculation options
75:
76: //! almost tao
77:
78: struct HeccerTableApproximationOptions htao;
79:
80: //m number of entries, must always match with interval definition I guess
81:
82: int iEntries;
83:
84: //m A table
85:
86: double *pdA;
87:
88: //m backward table (alpha + beta)
89:
90: double *pdB;
91: };
92:
93:
94: struct HeccerTabulatedSpringMass
95: {
96: //m original source parameters
97:
98: void *pvParameters;
99:
100: size_t iSizeParameters;
101:
102: //m two precalculated coefficients for first exponential
103:
104: double dX1;
105: double dX2;
106:
107: //m two precalculated coefficients for second exponential
108:
109: double dY1;
110: double dY2;
111: };
112:
113:
114: //d maximum number of tabulated gates
115:
116: #define HECCER_TABULATED_GATES_MAX 100
117:
118: struct TabulatedGateTable
119: {
120: //m tabulated gates (preallocated array)
121:
122: struct HeccerTabulatedGate phtg[HECCER_TABULATED_GATES_MAX];
123:
124: //m number of entries used in the above
125:
126: int iTabulatedGateCount;
127: };
128:
129:
130: //d maximum number of tabulated spring mass channels
131:
132: #define HECCER_TABULATED_SPRINGMASS_MAX 10000
133:
134: struct TabulatedSpringMassTable
135: {
136: //m tabulated gates (preallocated array)
137:
138: struct HeccerTabulatedSpringMass phtsm[HECCER_TABULATED_SPRINGMASS_MAX];
139:
140: //m number of entries used in the above
141:
142: int iTabulatedSpringMassCount;
143: };
144:
145:
146: struct ConcentrationActivator;
147: struct GateConcept;
148: struct Heccer;
149:
150:
151: //f prototypes
152:
153: int
154: HeccerConcentrationGateTabulate
155: (struct ConcentrationActivator *pac, struct Heccer *pheccer);
156:
157: int
158: HeccerGateConceptTabulate
159: (struct GateConcept *pgc, struct Heccer *pheccer);
160:
161: int
162: HeccerTablesDump
163: (struct TabulatedGateTable *ptgt, FILE *pfile, int iSelection);
164:
165: int
166: HeccerTableInterpolate
167: (double *ppdSources[],
168: double *ppdDestinations[],
169: int iSourceSize,
170: int iDestinationSize);
171:
172: int
173: HeccerTabulateAny
174: (struct Heccer *pheccer, void *pv, int iType);
175:
176: int
177: HeccerTabulatedGateRegister(struct Heccer *pheccer, struct GateConcept *pgc);
178:
179:
180: #endif
181:
182:
183:
Generated by Xrefactory version 2.0.14 on Thu Jul 24 22:41:20 2008