00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef _ZOMBIE_COMPARTMENT_H
00012 #define _ZOMBIE_COMPARTMENT_H
00013 #include "header.h"
00014 #include "ElementValueFinfo.h"
00015 #include "../external/debug/print_function.hpp"
00016 #include "../randnum/randnum.h"
00017 #include "../biophysics/CompartmentBase.h"
00018 #include "../biophysics/Compartment.h"
00019 #include "HinesMatrix.h"
00020 #include "HSolveStruct.h"
00021 #include "HSolvePassive.h"
00022 #include "RateLookup.h"
00023 #include "HSolveActive.h"
00024 #include "HSolve.h"
00025
00030
00031
00032 class ZombieCompartment: public CompartmentBase
00033 {
00034 public:
00035 ZombieCompartment();
00036 virtual ~ZombieCompartment();
00037
00038
00039
00040
00041
00042
00043 void vSetVm( const Eref& e , double Vm );
00044 double vGetVm( const Eref& e ) const;
00045 void vSetEm( const Eref& e , double Em );
00046 double vGetEm( const Eref& e ) const;
00047 void vSetCm( const Eref& e , double Cm );
00048 double vGetCm( const Eref& e ) const;
00049 void vSetRm( const Eref& e , double Rm );
00050 double vGetRm( const Eref& e ) const;
00051 void vSetRa( const Eref& e , double Ra );
00052 double vGetRa( const Eref& e ) const;
00053 double vGetIm( const Eref& e ) const;
00054 void vSetInject( const Eref& e , double Inject );
00055 double vGetInject( const Eref& e ) const;
00056 void vSetInitVm( const Eref& e , double initVm );
00057 double vGetInitVm( const Eref& e ) const;
00058
00059
00060 void dummy( const Eref& e, ProcPtr p );
00061
00066 void vProcess( const Eref& e, ProcPtr p );
00067
00071 void vReinit( const Eref& e, ProcPtr p );
00072
00081 void vInitProc( const Eref& e, ProcPtr p );
00082
00087 void vInitReinit( const Eref& e, ProcPtr p );
00088
00093 void vHandleChannel( const Eref& e, double Gk, double Ek);
00094
00098 void vHandleRaxial( double Ra, double Vm);
00099
00103 void vHandleAxial( double Vm);
00104
00112 void vInjectMsg( const Eref& e , double current);
00113
00114
00122 void vRandInject( const Eref& e , double prob, double current);
00123
00125 void vSetSolver( const Eref& e, Id hsolve );
00126
00130 static const Cinfo* initCinfo();
00131
00133
00135 private:
00136 HSolve* hsolve_;
00137
00138 static const double EPSILON;
00139
00140 void copyFields( moose::Compartment* c );
00141 };
00142
00143 #endif // _ZOMBIE_COMPARTMENT_H