removed QpT and testing only 1 OP
This commit is contained in:
parent
9cb4c1546f
commit
3008c526bf
|
|
@ -558,7 +558,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
duals::duald result_itf, result_itr, result_Qf, result_Qr; //intermediate variables when calling void dual functions
|
||||
double Orci0_t,b_q,I_Tf1,T_f0,Q_fT,T_fT,Q_bf;
|
||||
double a_h,d_Q;
|
||||
double volatile Q_pT, Q_pT_dVbiei, Q_pT_dVbici, Q_pT_dT, Q_pT_dick, Q_pT_dT_f0, Q_pT_dQ_0, Q_pT_dVciei;
|
||||
// double volatile Q_pT, Q_pT_dVbiei, Q_pT_dVbici, Q_pT_dT, Q_pT_dick, Q_pT_dT_f0, Q_pT_dQ_0, Q_pT_dVciei;
|
||||
// double volatile Q_pT_dT_numerical, Q_pT_dVbiei_numerical, Q_pT_dVbici_numerical, Q_pT_dQ_0_numerical, Q_pT_dT_f0_numerical, Q_pT_dick_numerical;
|
||||
double Qf, Cdei, Qr, Cdci;
|
||||
double ick, ick_Vciei, ick_dT,vc,cjcx01,cjcx02;
|
||||
|
|
@ -1613,19 +1613,19 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
|
||||
//todo: derivatives of temperature dependent hicum parameters
|
||||
//todo: it should be enough to run the newtone once -> potential for performance improvement is exactly here
|
||||
result = calc_it(here->HICUMtemp+1_e, Vbiei , Vbici , Q_0 , T_f0 , ick );
|
||||
Q_pT = result.rpart();
|
||||
Q_pT_dT = result.dpart();
|
||||
result = calc_it(here->HICUMtemp , Vbiei+1_e, Vbici , Q_0 , T_f0 , ick );
|
||||
Q_pT_dVbiei = result.dpart();
|
||||
result = calc_it(here->HICUMtemp , Vbiei , Vbici+1_e, Q_0 , T_f0 , ick );
|
||||
Q_pT_dVbici = result.dpart();
|
||||
result = calc_it(here->HICUMtemp , Vbiei , Vbici , Q_0+1_e, T_f0 , ick );
|
||||
Q_pT_dQ_0 = result.dpart();
|
||||
result = calc_it(here->HICUMtemp , Vbiei , Vbici , Q_0 , T_f0+1_e, ick );
|
||||
Q_pT_dT_f0 = result.dpart();
|
||||
result = calc_it(here->HICUMtemp , Vbiei , Vbici , Q_0 , T_f0 , ick+1_e);
|
||||
Q_pT_dick = result.dpart();
|
||||
// result = calc_it(here->HICUMtemp+1_e, Vbiei , Vbici , Q_0 , T_f0 , ick );
|
||||
// Q_pT = result.rpart();
|
||||
// Q_pT_dT = result.dpart();
|
||||
// result = calc_it(here->HICUMtemp , Vbiei+1_e, Vbici , Q_0 , T_f0 , ick );
|
||||
// Q_pT_dVbiei = result.dpart();
|
||||
// result = calc_it(here->HICUMtemp , Vbiei , Vbici+1_e, Q_0 , T_f0 , ick );
|
||||
// Q_pT_dVbici = result.dpart();
|
||||
// result = calc_it(here->HICUMtemp , Vbiei , Vbici , Q_0+1_e, T_f0 , ick );
|
||||
// Q_pT_dQ_0 = result.dpart();
|
||||
// result = calc_it(here->HICUMtemp , Vbiei , Vbici , Q_0 , T_f0+1_e, ick );
|
||||
// Q_pT_dT_f0 = result.dpart();
|
||||
// result = calc_it(here->HICUMtemp , Vbiei , Vbici , Q_0 , T_f0 , ick+1_e);
|
||||
// Q_pT_dick = result.dpart();
|
||||
|
||||
//check derivatives numerically (delete ones everything works....)
|
||||
// result = calc_it(here->HICUMtemp+1e-3, Vbiei , Vbici , Q_0 , T_f0 , ick );
|
||||
|
|
@ -1642,22 +1642,23 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
// Q_pT_dick_numerical = (result.rpart() - Q_pT)/(ick*1e-3);
|
||||
|
||||
//add derivatives of ick
|
||||
Q_pT_dVciei = Q_pT_dick*ick_Vciei; //additional component not seen in equivalent circuit of HiCUM...jesus
|
||||
Q_pT_dT += Q_pT_dick*ick_dT;
|
||||
// Q_pT_dVciei = Q_pT_dick*ick_Vciei; //additional component not seen in equivalent circuit of HiCUM...jesus
|
||||
// Q_pT_dT += Q_pT_dick*ick_dT;
|
||||
|
||||
//add derivatives of Q_0
|
||||
Q_pT_dVbiei += Q_pT_dQ_0*Q_0_Vbiei;
|
||||
Q_pT_dVbici += Q_pT_dQ_0*Q_0_Vbici;
|
||||
Q_pT_dT += Q_pT_dQ_0*Q_0_dT;
|
||||
// //add derivatives of Q_0
|
||||
// Q_pT_dVbiei += Q_pT_dQ_0*Q_0_Vbiei;
|
||||
// Q_pT_dVbici += Q_pT_dQ_0*Q_0_Vbici;
|
||||
// Q_pT_dT += Q_pT_dQ_0*Q_0_dT;
|
||||
|
||||
//add derivatives of T_f0
|
||||
Q_pT_dVbici += Q_pT_dT_f0*T_f0_Vbici;
|
||||
Q_pT_dT += Q_pT_dT*T_f0_dT;
|
||||
// //add derivatives of T_f0
|
||||
// Q_pT_dVbici += Q_pT_dT_f0*T_f0_Vbici;
|
||||
// Q_pT_dT += Q_pT_dT*T_f0_dT;
|
||||
|
||||
//end Q_pT -------------------------------------------------------------------------------
|
||||
|
||||
//begin final transfer current calculations -> itf, itr, Qf, Qr------------
|
||||
calc_it_final(here->HICUMtemp+1_e, Vbiei , Vbici , Q_pT , T_f0 , ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
calc_it_final(here->HICUMtemp+1_e, Vbiei , Vbici , Q_0 , T_f0 , ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
// calc_it_final(here->HICUMtemp+1_e, Vbiei , Vbici , Q_pT , T_f0 , ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
itf = result_itf.rpart();
|
||||
itr = result_itr.rpart();
|
||||
Qf = result_Qf.rpart();
|
||||
|
|
@ -1666,56 +1667,61 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
itr_dT = result_itr.dpart();
|
||||
Qf_dT = result_Qf.dpart();
|
||||
Qr_dT = result_Qr.dpart();
|
||||
calc_it_final(here->HICUMtemp , Vbiei+1_e, Vbici , Q_pT , T_f0 , ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
// calc_it_final(here->HICUMtemp , Vbiei+1_e, Vbici , Q_pT , T_f0 , ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
calc_it_final(here->HICUMtemp , Vbiei+1_e, Vbici , Q_0 , T_f0 , ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
itf_Vbiei = result_itf.dpart();
|
||||
itr_Vbiei = result_itr.dpart();
|
||||
Qf_Vbiei = result_Qf.dpart();
|
||||
Qr_Vbiei = result_Qr.dpart();
|
||||
|
||||
calc_it_final(here->HICUMtemp , Vbiei , Vbici+1_e, Q_pT , T_f0 , ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
calc_it_final(here->HICUMtemp , Vbiei , Vbici+1_e, Q_0 , T_f0 , ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
// calc_it_final(here->HICUMtemp , Vbiei , Vbici+1_e, Q_pT , T_f0 , ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
itf_Vbici = result_itf.dpart();
|
||||
itr_Vbici = result_itr.dpart();
|
||||
Qf_Vbici = result_Qf.dpart();
|
||||
Qr_Vbici = result_Qr.dpart();
|
||||
|
||||
calc_it_final(here->HICUMtemp , Vbiei , Vbici , Q_pT+1_e, T_f0 , ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
calc_it_final(here->HICUMtemp , Vbiei , Vbici , Q_0+1_e, T_f0 , ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
// calc_it_final(here->HICUMtemp , Vbiei , Vbici , Q_pT+1_e, T_f0 , ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
itf_dQ_pT = result_itf.dpart();
|
||||
itr_dQ_pT = result_itr.dpart();
|
||||
Qf_dQ_pT = result_Qf.dpart();
|
||||
Qr_dQ_pT = result_Qr.dpart();
|
||||
|
||||
calc_it_final(here->HICUMtemp , Vbiei , Vbici , Q_pT , T_f0+1_e, ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
calc_it_final(here->HICUMtemp , Vbiei , Vbici , Q_0 , T_f0+1_e, ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
// calc_it_final(here->HICUMtemp , Vbiei , Vbici , Q_pT , T_f0+1_e, ick , &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
itf_dT_f0 = result_itf.dpart();
|
||||
itr_dT_f0 = result_itr.dpart();
|
||||
Qf_dT_f0 = result_Qf.dpart();
|
||||
Qr_dT_f0 = result_Qr.dpart();
|
||||
|
||||
calc_it_final(here->HICUMtemp , Vbiei , Vbici , Q_pT , T_f0 , ick+1_e, &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
calc_it_final(here->HICUMtemp , Vbiei , Vbici , Q_0 , T_f0 , ick+1_e, &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
// calc_it_final(here->HICUMtemp , Vbiei , Vbici , Q_pT , T_f0 , ick+1_e, &result_itf, &result_itr, &result_Qf, &result_Qr);
|
||||
itf_dick = result_itf.dpart();
|
||||
itr_dick = result_itr.dpart();
|
||||
Qf_dick = result_Qf.dpart();
|
||||
Qr_dick = result_Qr.dpart();
|
||||
|
||||
// add derivatives of Q_pT = f(Vbici,Vbiei,Vciei,T)
|
||||
itf_dT += itf_dQ_pT*Q_pT_dT;
|
||||
itr_dT += itr_dQ_pT*Q_pT_dT;
|
||||
Qf_dT += Qf_dQ_pT*Q_pT_dT;
|
||||
Qr_dT += Qr_dQ_pT*Q_pT_dT;
|
||||
// itf_dT += itf_dQ_pT*Q_pT_dT;
|
||||
// itr_dT += itr_dQ_pT*Q_pT_dT;
|
||||
// Qf_dT += Qf_dQ_pT*Q_pT_dT;
|
||||
// Qr_dT += Qr_dQ_pT*Q_pT_dT;
|
||||
|
||||
itf_Vbiei += itf_dQ_pT*Q_pT_dVbiei;
|
||||
itr_Vbiei += itr_dQ_pT*Q_pT_dVbiei;
|
||||
Qf_Vbiei += Qf_dQ_pT*Q_pT_dVbiei;
|
||||
Qr_Vbiei += Qr_dQ_pT*Q_pT_dVbiei;
|
||||
// itf_Vbiei += itf_dQ_pT*Q_pT_dVbiei;
|
||||
// itr_Vbiei += itr_dQ_pT*Q_pT_dVbiei;
|
||||
// Qf_Vbiei += Qf_dQ_pT*Q_pT_dVbiei;
|
||||
// Qr_Vbiei += Qr_dQ_pT*Q_pT_dVbiei;
|
||||
|
||||
itf_Vbici += itf_dQ_pT*Q_pT_dVbici;
|
||||
itr_Vbici += itr_dQ_pT*Q_pT_dVbici;
|
||||
Qf_Vbici += Qf_dQ_pT*Q_pT_dVbici;
|
||||
Qr_Vbici += Qr_dQ_pT*Q_pT_dVbici;
|
||||
// itf_Vbici += itf_dQ_pT*Q_pT_dVbici;
|
||||
// itr_Vbici += itr_dQ_pT*Q_pT_dVbici;
|
||||
// Qf_Vbici += Qf_dQ_pT*Q_pT_dVbici;
|
||||
// Qr_Vbici += Qr_dQ_pT*Q_pT_dVbici;
|
||||
|
||||
itf_Vciei += itf_dQ_pT*Q_pT_dVciei;
|
||||
itr_Vciei += itr_dQ_pT*Q_pT_dVciei;
|
||||
Qf_Vciei += Qf_dQ_pT*Q_pT_dVciei;
|
||||
Qr_Vciei += Qr_dQ_pT*Q_pT_dVciei;
|
||||
// itf_Vciei += itf_dQ_pT*Q_pT_dVciei;
|
||||
// itr_Vciei += itr_dQ_pT*Q_pT_dVciei;
|
||||
// Qf_Vciei += Qf_dQ_pT*Q_pT_dVciei;
|
||||
// Qr_Vciei += Qr_dQ_pT*Q_pT_dVciei;
|
||||
|
||||
// add derivatives of T_f0 = f(Vbici, T)
|
||||
itf_Vbici += itf_dick*T_f0_Vbici;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ VC Q1_C 0 0.0
|
|||
VB Q1_B 0 0.0
|
||||
RT Q1_T 0 1M
|
||||
Q1 Q1_C Q1_B Q1_E Q1_E Q1_T P1 icVBE=0.2 icVCE=0.2 dt=0.0
|
||||
.DC VE -0.2 -1.2 -10m
|
||||
* .DC VE -0.2 -1.2 -10m
|
||||
.DC VE -0.2 -0.21 -10m
|
||||
.OPTIONS GMIN=1e-13 NOACCT
|
||||
|
||||
.print dc abs(i(vc)) abs(i(vb))
|
||||
|
|
|
|||
Loading…
Reference in New Issue