46 #include <Xyce_config.h>
61 #include <N_ERH_ErrorMgr.h>
65 #include <N_LAS_Matrix.h>
66 #include <N_LAS_Vector.h>
87 .setDescription(
"Maximal Synaptic Conductance");
91 .setDescription(
"Reversal Potential");
95 .setDescription(
"Forward rate constant for receptor opening");
99 .setDescription(
"Backward rate constant for receptor opening");
103 .setDescription(
"Presynaptic voltage that activates postsynaptic current");
106 .setDescription(
"Maximal neurotransmitter concentration");
146 :
DeviceInstance(IB, configuration.getInstanceParameters(), factory_block),
150 APostEquPostNodeOffset(-1),
151 APostEquRNodeOffset(-1),
152 AREquPostNodeOffset(-1),
153 AREquRNodeOffset(-1),
154 f_PostEquPostNodePtr(0),
155 f_PostEquRNodePtr(0),
156 f_REquPostNodePtr(0),
215 const std::vector<int> & extLIDVecRef )
220 #ifdef Xyce_DEBUG_DEVICE
223 Xyce::dout() << std::endl << section_divider << std::endl;
224 Xyce::dout() <<
" SynapseInstance::registerLIDs" << std::endl;
225 Xyce::dout() <<
" name = " <<
getName() << std::endl;
236 #ifdef Xyce_DEBUG_DEVICE
239 Xyce::dout() <<
" li_Prev = " <<
li_Prev << std::endl;
240 Xyce::dout() <<
" li_Post = " <<
li_Post << std::endl;
246 #ifdef Xyce_DEBUG_DEVICE
249 Xyce::dout() << section_divider << std::endl;
330 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
349 bool bsuccess =
true;
365 double vPre = (*solVecPtr)[
li_Prev];
366 double vPost = (*solVecPtr)[
li_Post];
367 double rVar = (*solVecPtr)[
li_rVar];
371 Sacado::Fad::SFad<double,2> vPostVar( 2, 0, vPost );
372 Sacado::Fad::SFad<double,2> rVarS( 2, 1, rVar);
375 Sacado::Fad::SFad<double,2> gMaxVar(
model_.
gMax );
376 Sacado::Fad::SFad<double,2> eRevVar(
model_.
eRev );
378 Sacado::Fad::SFad<double,2> resultFad;
380 ipost = resultFad.val();
382 didr = resultFad.dx(1);
385 Sacado::Fad::SFad<double,2> vPreVar( 2, 0, vPre );
386 Sacado::Fad::SFad<double,2> rVarS( 2, 1, rVar);
389 Sacado::Fad::SFad<double,2> alphaVar(
model_.
alpha );
390 Sacado::Fad::SFad<double,2> betaVar(
model_.
beta );
391 Sacado::Fad::SFad<double,2> tMaxVar(
model_.
tMax );
392 Sacado::Fad::SFad<double,2> vPVar(
model_.
vP );
394 Sacado::Fad::SFad<double,2> resultFad;
395 resultFad =
rEquF( vPreVar, rVarS, alphaVar, betaVar, tMaxVar, vPVar);
396 rFval = resultFad.val();
398 drFdr = resultFad.dx(1);
451 double rVar = (*solVecPtr)[
li_rVar];
545 bool bsuccess =
true;
574 std::vector<Instance*>::iterator iter;
578 for (iter=first; iter!=last; ++iter)
580 (*iter)->processParams();
598 :
DeviceModel(MB, configuration.getModelParameters(), factory_block),
634 std::vector<Instance*>::iterator iter;
638 for (iter=first; iter!=last; ++iter)
654 std::vector<Instance*>::const_iterator iter;
661 os <<
"Number of Synapse2 Instances: " << isize << std::endl;
662 os <<
" name model name Parameters" << std::endl;
663 for (i=0, iter=first; iter!=last; ++iter, ++i)
665 os <<
" " << i <<
": " << (*iter)->getName() <<
"\t";
690 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
709 (*it)->updateIntermediateVars();
737 .registerDevice(
"synapse", 2)
738 .registerModelType(
"synapse", 2);