first trial for ac implementation
This commit is contained in:
parent
b5232a50cb
commit
8caa85f6f0
|
|
@ -61,6 +61,26 @@ DIOacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
double xgcTt= *(ckt->CKTstate0 + here->DIOcqth) * ckt->CKTomega;
|
||||
(*(here->DIOtempTempPtr + 1) += xgcTt);
|
||||
}
|
||||
if (model->DIOsoftRevRecParamGiven) {
|
||||
double dcrrdvd, grr, geqrrd;
|
||||
double gdres = *(ckt->CKTstate0 + here->DIOresConduct);
|
||||
double gqcsr = *(ckt->CKTstate0 + here->DIOgqcsr);
|
||||
/* QP subcircuit */
|
||||
dcrrdvd = here->DIOtTransitTime / model->DIOsoftRevRecParam * gdres;
|
||||
grr = 1/model->DIOsoftRevRecParam;
|
||||
*(here->DIOqpQpPtr) += grr + gqcsr;
|
||||
*(here->DIOqpPosPrimePtr) += -dcrrdvd;
|
||||
*(here->DIOqpNegPtr) += dcrrdvd;
|
||||
/* Contribution to diode current */
|
||||
/* Linear contribution -(1-vp)/tau*ddt(Qp) */
|
||||
geqrrd = (1 - model->DIOsoftRevRecParam) / here->DIOtTransitTime * gqcsr;
|
||||
*(here->DIOposPrimeQpPtr) += geqrrd;
|
||||
*(here->DIOnegQpPtr) += -geqrrd;
|
||||
|
||||
xceq = *(ckt->CKTstate0 + here->DIOsrcapCurrent) * ckt->CKTomega;
|
||||
*(here->DIOqpQpPtr + 1) += xceq;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -63,6 +63,8 @@ DIOask (CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value,
|
|||
return(OK);
|
||||
case DIO_CURRENT:
|
||||
value->rValue = *(ckt->CKTstate0+here->DIOcurrent);
|
||||
if (here->DIOqpNode > 0)
|
||||
value->rValue += *(ckt->CKTstate0+here->DIOcqcsr);
|
||||
return(OK);
|
||||
case DIO_CAP:
|
||||
value->rValue = here->DIOcap;
|
||||
|
|
|
|||
|
|
@ -505,6 +505,7 @@ next1:
|
|||
(!(ckt->CKTmode & MODEUIC)) ) {
|
||||
if (ckt->CKTmode & MODEINITSMSIG){
|
||||
*(ckt->CKTstate0 + here->DIOcapCurrent) = capd;
|
||||
*(ckt->CKTstate0 + here->DIOsrcapCurrent) = capsr;
|
||||
|
||||
if(SenCond){
|
||||
*(ckt->CKTstate0 + here->DIOcurrent) = cd;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ DIOtrunc(GENmodel *inModel, CKTcircuit *ckt, double *timeStep)
|
|||
for( ; model != NULL; model = DIOnextModel(model)) {
|
||||
for(here=DIOinstances(model);here!=NULL;here = DIOnextInstance(here)){
|
||||
CKTterr(here->DIOcapCharge,ckt,timeStep);
|
||||
if (model->DIOsoftRevRecParamGiven) {
|
||||
CKTterr(here->DIOsrcapCharge,ckt,timeStep);
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
Loading…
Reference in New Issue