file:/local_home/local_home/hugo/neurospaces_project/heccer/source/c/snapshots/0/tests/code/singlea-naf.c        (Mon Jun 16 00:03:55 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: #include "../../heccer/compartment.h"
  20: #include "../../heccer/heccer.h"
  21: 
  22: 
  23: #define HECCER_TEST_REPORTING_GRANULARITY 100
  24: #define HECCER_TEST_STEPS 1000
  25: #define HECCER_TEST_TESTED_THINGS ( HECCER_DUMP_VM_COMPARTMENT_MATRIX \
  26:                                     | HECCER_DUMP_VM_COMPARTMENT_DATA \
  27:                                     | HECCER_DUMP_VM_COMPARTMENT_OPERATIONS \
  28:                                     | HECCER_DUMP_VM_MECHANISM_DATA \
  29:                                     | HECCER_DUMP_VM_MECHANISM_OPERATIONS \
  30:                                     | HECCER_DUMP_VM_SUMMARY \
  31:         )
  32: #define HECCER_TEST_TIME_STEP (6e-6)
  33: 
  34: 
  35: struct Compartment compSoma =
  36: {
  37:     //m administrative overhead
  38: 
  39:     {
  40:         //m type of structure
  41: 
  42:         MATH_TYPE_Compartment,
  43:     },
  44: 
  45:     //m index of parent compartment, -1 for none
  46: 
  47:     -1,
  48: 
  49: /*     //m first mechanism */
  50: 
  51: /*     NULL, */
  52: 
  53: /*     //m number of mechanisms */
  54: 
  55: /*     0, */
  56: 
  57:     //m descriptive values, alphabetical order
  58: 
  59: /*     double dCm; */
  60: 
  61:     4.57537e-11, // unscaled 0.0164,
  62: 
  63: /*     double dEm; */
  64: 
  65:     -0.08,
  66: 
  67: /*     double dInitVm; */
  68: 
  69:     -0.028,
  70: 
  71: /*     double dInject;           */
  72: 
  73:     0,
  74: 
  75: /*     double dRa; */
  76: 
  77:     360502, // unscaled 2.5,
  78: 
  79: /*     double dRm; */
  80: 
  81:     3.58441e+08, // unscaled 1
  82: };
  83: 
  84: 
  85: //v a simple fast sodium channel
  86: 
  87: struct ChannelActInact caiNaF =
  88: {
  89:     //m administrative overhead
  90: 
  91:     {
  92:         //m type of structure
  93: 
  94:         MATH_TYPE_ChannelActInact,
  95:     },
  96: 
  97:     //m first set of descriptive values, alphabetical order
  98: 
  99:     //m initial reversal potential
 100: 
 101:     0.045,
 102: 
 103:     //m get reversal potential from this intermediary, -1 for none
 104: 
 105:     -1,
 106: 
 107:     //m maximal conductance when all channels are permissive
 108: 
 109:     0.0002092393115,
 110: 
 111:     //m contributes to this concentration pool, -1 for none, boolean indicator only.
 112: 
 113:     -1,
 114: 
 115:     //m activation description
 116: 
 117:     {
 118:         //m power, for a standard heccer, something between 1 and 4 or so.
 119: 
 120:         3,
 121: 
 122:         //m gate definition
 123: 
 124:         {
 125:             //m initial value, commonly forward over backward steady states
 126: 
 127:             0.0078406449371415214,
 128: 
 129:             //m corresponding index in tables, set to -1 for initialization.
 130: 
 131:             -1,
 132: 
 133:             {
 134:                 //m forward kinetiks, commonly denoted with alpha or non-perm to perm rate
 135: 
 136:                 {
 137:                     //m multiplier
 138: 
 139:                     35.0e3,
 140: 
 141:                     //m multiplier membrane dependence, 0.0 for no dependence
 142: 
 143:                     0.0,
 144: 
 145:                     //m 2b: multiplier membrane dependence offset, 0.0 for no dependence
 146: 
 147:                     0.0,
 148: 
 149:                     //m choose between nominator or denominator, 1 means nominator, -1
 150:                     //m means denominator
 151: 
 152:                     -1.0,
 153: 
 154:                     //m nominator or denominator offset
 155: 
 156:                     0.0,
 157: 
 158:                     //m membrane offset
 159: 
 160:                     5.0e-3,
 161: 
 162:                     //m denormalized time constant
 163: 
 164:                     -10.0e-3,
 165:                 },
 166: 
 167:                 //m backward kinetiks, commonly denoted with beta or perm to non-perm rate
 168: 
 169:                 {
 170:                     //m multiplier
 171: 
 172:                     7.0e3,
 173: 
 174:                     //m multiplier membrane dependence, 0.0 for no dependence
 175: 
 176:                     0.0,
 177: 
 178:                     //m 2b: multiplier membrane dependence offset, 0.0 for no dependence
 179: 
 180:                     0.0,
 181: 
 182:                     //m choose between nominator or denominator, 1 means nominator, -1
 183:                     //m means denominator
 184: 
 185:                     -1.0,
 186: 
 187:                     //m nominator or denominator offset
 188: 
 189:                     0.0,
 190: 
 191:                     //m membrane offset
 192: 
 193:                     65.0e-3,
 194: 
 195:                     //m denormalized time constant
 196: 
 197:                     20.0e-3,
 198:                 },
 199:             },
 200:         },
 201:     },
 202: 
 203:     //m inactivation description
 204: 
 205:     {
 206:         //m power, for a standard heccer, something between 1 and 4 or so.
 207: 
 208:         1,
 209: 
 210:         //m gate definition
 211: 
 212:         {
 213:             //m initial value, commonly forward over backward steady states
 214: 
 215:             0.26397776926502026,
 216: 
 217:             //m corresponding index in tables, set to -1 for initialization.
 218: 
 219:             -1,
 220: 
 221:             {
 222:                 //m forward kinetiks, commonly denoted with alpha or non-perm to perm rate
 223: 
 224:                 {
 225:                     //m multiplier
 226: 
 227:                     0.225e3,
 228: 
 229:                     //m multiplier membrane dependence, 0.0 for no dependence
 230: 
 231:                     0.0,
 232: 
 233:                     //m 2b: multiplier membrane dependence offset, 0.0 for no dependence
 234: 
 235:                     0.0,
 236: 
 237:                     //m choose between nominator or denominator, 1 means nominator, -1
 238:                     //m means denominator
 239: 
 240:                     -1.0,
 241: 
 242:                     //m nominator or denominator offset
 243: 
 244:                     1.0,
 245: 
 246:                     //m membrane offset
 247: 
 248:                     80.0e-3,
 249: 
 250:                     //m denormalized time constant
 251: 
 252:                     10.0e-3,
 253:                 },
 254: 
 255:                 //m backward kinetiks, commonly denoted with beta or perm to non-perm rate
 256: 
 257:                 {
 258:                     //m multiplier
 259: 
 260:                     7.5e3,
 261: 
 262:                     //m multiplier membrane dependence, 0.0 for no dependence
 263: 
 264:                     0.0,
 265: 
 266:                     //m 2b: multiplier membrane dependence offset, 0.0 for no dependence
 267: 
 268:                     0.0,
 269: 
 270:                     //m choose between nominator or denominator, 1 means nominator, -1
 271:                     //m means denominator
 272: 
 273:                     -1.0,
 274: 
 275:                     //m nominator or denominator offset
 276: 
 277:                     0.0,
 278: 
 279:                     //m membrane offset
 280: 
 281:                     -3.0e-3,
 282: 
 283:                     //m denormalized time constant
 284: 
 285:                     -18.0e-3,
 286:                 },
 287:             },
 288:         },
 289:     },
 290: };
 291: 
 292: 
 293: int piC2m[] =
 294: {
 295:     1,
 296:     -1,
 297: };
 298: 
 299: 
 300: struct MathComponentArray mca =
 301: {
 302:     //m number of math components
 303: 
 304:     1,
 305: 
 306:     //m math component data
 307: 
 308:     &caiNaF.mc,
 309: 
 310:     //m math component index, initialize to NULL
 311: 
 312:     NULL,
 313: 
 314: };
 315: 
 316: 
 317: struct Intermediary inter =
 318: {
 319:     //m compartment array
 320: 
 321:     1,
 322: 
 323:     &compSoma,
 324: 
 325:     //m all other mathematical components
 326: 
 327:     &mca,
 328: 
 329:     //m compartment 2 first mechanism number
 330: 
 331:     piC2m,
 332: };
 333: 
 334: 
 335: #include "main.c"
 336: 
 337: 
 338: 








































Generated by Xrefactory version 2.0.14 on Thu Jul 24 22:41:20 2008