file:/local_home/local_home/hugo/neurospaces_project/heccer/source/c/snapshots/0/tests/code/vclamp-passive.c        (Mon Jun 16 00:04:07 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 <stdlib.h>
  20: 
  21: #include "../../heccer/addressing.h"
  22: #include "../../heccer/heccer.h"
  23: #include "../../heccer/vclamp.h"
  24: 
  25: 
  26: #include "main.h"
  27: 
  28: 
  29: #define HECCER_TEST_REPORTING_GRANULARITY 100
  30: #define HECCER_TEST_STEPS 1000
  31: #define HECCER_TEST_TESTED_THINGS ( HECCER_DUMP_VM_COMPARTMENT_MATRIX \
  32:                                     | HECCER_DUMP_VM_MECHANISM_OPERATIONS \
  33:         )
  34: #define HECCER_TEST_TIME_STEP (3e-6)
  35: 
  36: 
  37: struct Compartment compSoma =
  38: {
  39:     //m administrative overhead
  40: 
  41:     {
  42:         //m type of structure
  43: 
  44:         MATH_TYPE_Compartment,
  45:     },
  46: 
  47:     //m index of parent compartment, -1 for none
  48: 
  49:     -1,
  50: 
  51: /*     //m first mechanism */
  52: 
  53: /*     NULL, */
  54: 
  55: /*     //m number of mechanisms */
  56: 
  57: /*     0, */
  58: 
  59:     //m descriptive values, alphabetical order
  60: 
  61: /*     double dCm; */
  62: 
  63:     4.57537e-11, // unscaled 0.0164,
  64: 
  65: /*     double dEm; */
  66: 
  67:     -0.08,
  68: 
  69: /*     double dInitVm; */
  70: 
  71:     -0.068,
  72: 
  73: /*     double dInject;           */
  74: 
  75:     0,
  76: 
  77: /*     double dRa; */
  78: 
  79:     360502, // unscaled 2.5,
  80: 
  81: /*     double dRm; */
  82: 
  83:     3.58441e+08, // unscaled 1
  84: };
  85: 
  86: 
  87: int piC2m[] =
  88: {
  89:     0,
  90:     -1,
  91: };
  92: 
  93: 
  94: struct Intermediary inter =
  95: {
  96:     //m compartment array
  97: 
  98:     1,
  99: 
 100:     &compSoma,
 101: 
 102:     //m all other mathematical components
 103: 
 104:     NULL,
 105: 
 106:     //m compartment 2 first mechanism number
 107: 
 108:     piC2m,
 109: };
 110: 
 111: 
 112: int main(int argc, char *argv[])
 113: {
 114:     //- allocate a voltage clamp object
 115: 
 116:     pvc = VClampNew("vc object");
 117: 
 118:     //- set fields
 119: 
 120:     double dInject = 0.000003;
 121: 
 122:     //! setfield ^ gain 0.50 tau_i 0.02 tau_d 0.005 saturation 999.0
 123: 
 124:     double dR = 1;
 125:     double dC = 0.00003;
 126:     double dCommand_init = 0.0;
 127: 
 128:     double dGain = 0.50;
 129:     double dTau_i = 0.000003;
 130:     double dTau_d = 0.000003 / 4;
 131:     double dSaturation = 999.0;
 132: 
 133:     VClampSetFields(pvc, dInject, dC, dR, dCommand_init, dGain, dTau_i, dTau_d, dSaturation);
 134: 
 135: //d connect the voltage clamp object with the compartment of interest
 136: 
 137: #define HECCER_TEST_INITIATE \
 138:     double *pdVm = HeccerAddressCompartmentVariable(pheccer, 0, "Vm");  \
 139:     double *pdInject = HeccerAddressCompartmentVariable(pheccer, 0, "inject"); \
 140:     VClampAddVariable(pvc, pdVm, pdInject)
 141: 
 142: //d schedule the voltage clamper
 143: 
 144: #define HECCER_TEST_SCHEDULE VClampSingleStep(pvc, (dSimulationTime - HECCER_TEST_TIME_GRANULARITY))
 145: 
 146:     //- do the simulation
 147: 
 148:     simulate(argc, argv);
 149: }
 150: 
 151: 
 152: #define main(argc,argv) simulate(argc,argv)
 153: 
 154: //t this prototype can give warning and perhaps errors.
 155: 
 156: int main(int argc, char *argv[]);
 157: 
 158: 
 159: #include "main.c"
 160: 
 161: 
 162: 








































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