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_INTERVAL_DEFAULT_START (-0.1) 24: #define HECCER_TEST_INTERVAL_DEFAULT_END (0.05) 25: #define HECCER_TEST_INTERVAL_DEFAULT_ENTRIES 50 26: #define HECCER_TEST_STEPS 1 27: 28: 29: struct Compartment compSoma = 30: { 31: //m administrative overhead 32: 33: { 34: //m type of structure 35: 36: MATH_TYPE_Compartment, 37: }, 38: 39: //m index of parent compartment, -1 for none 40: 41: -1, 42: 43: /* //m first mechanism */ 44: 45: /* NULL, */ 46: 47: /* //m number of mechanisms */ 48: 49: /* 0, */ 50: 51: //m descriptive values, alphabetical order 52: 53: /* double dCm; */ 54: 55: 4.57537e-11, // unscaled 0.0164, 56: 57: /* double dEm; */ 58: 59: -0.08, 60: 61: /* double dInitVm; */ 62: 63: -0.068, 64: 65: /* double dInject; */ 66: 67: 0, 68: 69: /* double dRa; */ 70: 71: 360502, // unscaled 2.5, 72: 73: /* double dRm; */ 74: 75: 3.58441e+08, // unscaled 1 76: }; 77: 78: 79: //v a persistent sodium channel 80: 81: struct ChannelAct caNaP = 82: { 83: //m administrative overhead 84: 85: { 86: //m type of structure 87: 88: MATH_TYPE_ChannelAct, 89: }, 90: 91: //m first set of descriptive values, alphabetical order 92: 93: //m initial reversal potential 94: 95: 0.045, 96: 97: //m get reversal potential from this intermediary, -1 for none 98: 99: -1, 100: 101: //m maximal conductance when all channels are permissive 102: 103: 2.789857767e-08, 104: 105: //m contributes to this concentration pool, -1 for none, boolean indicator only. 106: 107: -1, 108: 109: //m activation description 110: 111: { 112: //m power, for a standard heccer, something between 1 and 4 or so. 113: 114: 3, 115: 116: //m gate definition 117: 118: { 119: //m initial value, commonly forward over backward steady states 120: 121: 0.7612305421, 122: 123: //m corresponding index in tables, set to -1 for initialization. 124: 125: -1, 126: 127: { 128: //m forward kinetiks, commonly denoted with alpha or non-perm to perm rate 129: 130: { 131: //m multiplier 132: 133: 200.0e3, 134: 135: //m multiplier membrane dependence, 0.0 for no dependence 136: 137: 0.0, 138: 139: //m 2b: multiplier membrane dependence offset, 0.0 for no dependence 140: 141: 0.0, 142: 143: //m choose between nominator or denominator, 1 means nominator, -1 144: //m means denominator 145: 146: -1.0, 147: 148: //m nominator or denominator offset 149: 150: 1.0, 151: 152: //m membrane offset 153: 154: -0.018, 155: 156: //m denormalized time constant 157: 158: -16.0e-3, 159: }, 160: 161: //m backward kinetiks, commonly denoted with beta or perm to non-perm rate 162: 163: { 164: //m multiplier 165: 166: 25.0e3, 167: 168: //m multiplier membrane dependence, 0.0 for no dependence 169: 170: 0.0, 171: 172: //m 2b: multiplier membrane dependence offset, 0.0 for no dependence 173: 174: 0.0, 175: 176: //m choose between nominator or denominator, 1 means nominator, -1 177: //m means denominator 178: 179: -1.0, 180: 181: //m nominator or denominator offset 182: 183: 1.0, 184: 185: //m membrane offset 186: 187: 0.058, 188: 189: //m denormalized time constant 190: 191: 8.0e-3, 192: }, 193: }, 194: }, 195: }, 196: 197: }; 198: 199: 200: int piC2m[] = 201: { 202: 1, 203: -1, 204: }; 205: 206: 207: struct MathComponentArray mca = 208: { 209: //m number of math components 210: 211: 1, 212: 213: //m math component data 214: 215: &caNaP.mc, 216: 217: //m math component index, initialize to NULL 218: 219: NULL, 220: 221: }; 222: 223: 224: struct Intermediary inter = 225: { 226: //m compartment array 227: 228: 1, 229: 230: &compSoma, 231: 232: //m all other mathematical components 233: 234: &mca, 235: 236: //m compartment 2 first mechanism number 237: 238: piC2m, 239: }; 240: 241: 242: #include "main.c" 243: 244: 245: