46 #include <Xyce_config.h>
61 #include <N_ERH_ErrorMgr.h>
63 #include <N_LAS_Matrix.h>
64 #include <N_LAS_Vector.h>
82 .setDescription(
"Maximal Synaptic Conductance");
86 .setDescription(
"Reversal Potential");
90 .setDescription(
"Forward rate constant for receptor opening");
94 .setDescription(
"Backward rate constant for receptor opening");
98 .setDescription(
"Presynaptic voltage at which neurotransmitter concentration is half-maximal");
103 .setDescription(
"Steepness parameter for neurotransmitter concentration");
106 .setDescription(
"Maximal neurotransmitter concentration");
147 :
DeviceInstance(IB, configuration.getInstanceParameters(), factory_block),
151 APostEquPostNodeOffset(-1),
152 APostEquRNodeOffset(-1),
153 AREquPostNodeOffset(-1),
154 AREquRNodeOffset(-1),
155 f_PostEquPostNodePtr(0),
156 f_PostEquRNodePtr(0),
157 f_REquPostNodePtr(0),
214 const std::vector<int> & extLIDVecRef )
219 #ifdef Xyce_DEBUG_DEVICE
222 Xyce::dout() << std::endl << section_divider << std::endl;
223 Xyce::dout() <<
" SynapseInstance::registerLIDs" << std::endl;
224 Xyce::dout() <<
" name = " <<
getName() << std::endl;
235 #ifdef Xyce_DEBUG_DEVICE
238 Xyce::dout() <<
" li_Prev = " <<
li_Prev << std::endl;
239 Xyce::dout() <<
" li_Post = " <<
li_Post << std::endl;
245 #ifdef Xyce_DEBUG_DEVICE
248 Xyce::dout() << section_divider << std::endl;
327 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
346 bool bsuccess =
true;
350 double vPre = (*solVecPtr)[
li_Prev];
351 double vPost = (*solVecPtr)[
li_Post];
352 double rVar = (*solVecPtr)[
li_rVar];
356 Sacado::Fad::SFad<double,2> vPostVar( 2, 0, vPost );
357 Sacado::Fad::SFad<double,2> rVarS( 2, 1, rVar);
360 Sacado::Fad::SFad<double,2> gMaxVar(
model_.
gMax );
361 Sacado::Fad::SFad<double,2> eRevVar(
model_.
eRev );
363 Sacado::Fad::SFad<double,2> resultFad;
365 ipost = resultFad.val();
367 didr = resultFad.dx(1);
370 Sacado::Fad::SFad<double,2> vPreVar( 2, 0, vPre );
371 Sacado::Fad::SFad<double,2> rVarS( 2, 1, rVar);
374 Sacado::Fad::SFad<double,2> alphaVar(
model_.
alpha );
375 Sacado::Fad::SFad<double,2> betaVar(
model_.
beta );
376 Sacado::Fad::SFad<double,2> tMaxVar(
model_.
tMax );
377 Sacado::Fad::SFad<double,2> vPVar(
model_.
vP );
378 Sacado::Fad::SFad<double,2> kPVar(
model_.
kP );
380 Sacado::Fad::SFad<double,2> resultFad;
381 resultFad =
rEquF( vPreVar, rVarS, alphaVar, betaVar, tMaxVar, vPVar, kPVar);
382 rFval = resultFad.val();
384 drFdr = resultFad.dx(1);
435 double rVar = (*solVecPtr)[
li_rVar];
512 bool bsuccess =
true;
543 std::vector<Instance*>::iterator iter;
547 for (iter=first; iter!=last; ++iter)
549 (*iter)->processParams();
567 :
DeviceModel(MB, configuration.getModelParameters(), factory_block),
602 std::vector<Instance*>::iterator iter;
606 for (iter=first; iter!=last; ++iter)
622 std::vector<Instance*>::const_iterator iter;
629 os <<
"Number of Synapse Instances: " << isize << std::endl;
630 os <<
" name model name Parameters" << std::endl;
631 for (i=0, iter=first; iter!=last; ++iter, ++i)
633 os <<
" " << i <<
": " << (*iter)->getName() <<
"\t";
658 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
677 (*it)->updateIntermediateVars();
705 .registerDevice(
"synapse", 1)
706 .registerModelType(
"synapse", 1);