46 #include <Xyce_config.h>
51 #include <N_UTL_Misc.h>
66 #include <N_ERH_ErrorMgr.h>
70 #include <N_LAS_Vector.h>
71 #include <N_LAS_Matrix.h>
208 NULL,
U_AMP,
CAT_NONE,
"Current for user-defined current equation");
247 :
DeviceInstance(IB, configuration.getInstanceParameters(), factory_block),
259 numIntVarsPerSegment(0),
260 numStateVarsPerSegment(0),
269 APosEquPosNodeOffset(0),
270 APosEquNextNodeOffset(0),
271 ANegEquNegNodeOffset(0),
272 ANegEquLastNodeOffset(0)
322 double d_lambda = 0.1;
334 nSeg = int((
length/(d_lambda*lambda_f)+0.9)/2)*2 + 1;
399 for(
int i=0; i<
nSeg; i++ )
405 jacStamp[offset].resize( numIntVarsPerSegment + 2 );
426 nextMap[i] = numIntVarsPerSegment+1;
431 else if( i==(nSeg-1) )
446 nextMap[i] = numIntVarsPerSegment+1;
639 bool bsuccess =
true;
652 const std::vector<int> & extLIDVecRef)
657 #ifdef Xyce_DEBUG_DEVICE
660 Xyce::dout() << std::endl << section_divider << std::endl;
661 Xyce::dout() <<
" Instance::registerLIDs" << std::endl;
662 Xyce::dout() <<
" name = " <<
getName() << std::endl;
753 for(
int i=0; i<
nSeg; i++)
755 std::ostringstream segNumber;
757 std::string segNumStr = segNumber.str();
796 for(
int i=0, j=0; i<
nSeg; i++, j+=2)
822 bool returnVal=
false;
861 int numRows = jacLIDVec.size();
863 for(
int i=0; i< numRows; i++ )
865 int numCol = jacLIDVec[i].size();
867 for(
int j=0; j< numCol; j++ )
916 for(
int i=0, j=2; i<
nSeg; i++, j+=10 )
998 bool bsuccess =
true;
1012 bool bsuccess =
true;
1027 bool bsuccess =
true;
1049 bool bsuccess =
true;
1057 for(
int i=0; i<
nSeg ; i++)
1101 double vIn = (*solVectorPtr)[
li_Pos];
1102 double vOut = (*solVectorPtr)[
li_Neg];
1108 for(
int i=0; i<
nSeg ; i++)
1114 if (i == (nSeg - 1))
1140 (*daeFVecPtr)[li_internalVars[i*
numIntVarsPerSegment]] += - gPrev * (vPrev - vSeg) - gNext * (vNext - vSeg);
1160 bool bsuccess =
true;
1165 for(
int i=0; i<
nSeg ; i++)
1205 bool bsuccess =
true;
1216 for(
int i=0; i<
nSeg ; i++)
1222 double gPrev =
gSeg;
1223 double gNext =
gSeg;
1255 bool bsuccess =
true;
1287 :
DeviceModel(MB, configuration.getModelParameters(), factory_block),
1312 ionChannelModelGiven(false),
1327 CaGammaGiven(false),
1329 hodgenHuxleyOn_(false),
1330 ConnorStevensOn_(false),
1332 potassiumOn_(false),
1335 membraneIndpVarsGiven(false),
1336 membraneIndpFEqusGiven(false),
1337 membraneIndpQEqusGiven(false)
1403 std::vector<Instance*>::iterator iter;
1407 for (iter=first; iter!=last; ++iter)
1439 std::vector<Instance*>::iterator iter;
1443 for (iter=first; iter!=last; ++iter)
1445 (*iter)->processParams();
1460 std::vector<Instance*>::const_iterator iter;
1468 os <<
"Number of Neuron instances: " << isize << std::endl;
1469 os <<
" name=\t\tmodelName\tParameters" << std::endl;
1470 for (i=0, iter=first; iter!=last; ++iter, ++i)
1472 os <<
" " << i <<
": " << (*iter)->getName() <<
"\t";
1497 for (std::vector<Instance *>::const_iterator it = instanceContainer.begin(); it != instanceContainer.end(); ++it)
1511 .registerDevice(
"neuron", 6)
1512 .registerModelType(
"neuron", 6);