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;
326 #ifndef Xyce_NONPOINTER_MATRIX_LOAD
345 bool bsuccess =
true;
361 double vPre = (*solVecPtr)[
li_Prev];
362 double vPost = (*solVecPtr)[
li_Post];
363 double rVar = (*solVecPtr)[
li_rVar];
367 Sacado::Fad::SFad<double,2> vPostVar( 2, 0, vPost );
368 Sacado::Fad::SFad<double,2> rVarS( 2, 1, rVar);
371 Sacado::Fad::SFad<double,2> gMaxVar(
model_.
gMax );
372 Sacado::Fad::SFad<double,2> eRevVar(
model_.
eRev );
374 Sacado::Fad::SFad<double,2> resultFad;
376 ipost = resultFad.val();
378 didr = resultFad.dx(1);
381 Sacado::Fad::SFad<double,2> vPreVar( 2, 0, vPre );
382 Sacado::Fad::SFad<double,2> rVarS( 2, 1, rVar);
385 Sacado::Fad::SFad<double,2> alphaVar(
model_.
alpha );
386 Sacado::Fad::SFad<double,2> betaVar(
model_.
beta );
387 Sacado::Fad::SFad<double,2> tMaxVar(
model_.
tMax );
388 Sacado::Fad::SFad<double,2> vPVar(
model_.
vP );
390 Sacado::Fad::SFad<double,2> resultFad;
391 resultFad =
rEquF( vPreVar, rVarS, alphaVar, betaVar, tMaxVar, vPVar);
392 rFval = resultFad.val();
394 drFdr = resultFad.dx(1);
447 double rVar = (*solVecPtr)[
li_rVar];
541 bool bsuccess =
true;
570 std::vector<Instance*>::iterator iter;
574 for (iter=first; iter!=last; ++iter)
576 (*iter)->processParams();
594 :
DeviceModel(MB, configuration.getModelParameters(), factory_block),
630 std::vector<Instance*>::iterator iter;
634 for (iter=first; iter!=last; ++iter)
650 std::vector<Instance*>::const_iterator iter;
657 os <<
"Number of Synapse2 Instances: " << isize << std::endl;
658 os <<
" name model name Parameters" << std::endl;
659 for (i=0, iter=first; iter!=last; ++iter, ++i)
661 os <<
" " << i <<
": " << (*iter)->getName() <<
"\t";
686 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
705 (*it)->updateIntermediateVars();
733 .registerDevice(
"synapse", 2)
734 .registerModelType(
"synapse", 2);