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
|
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 Orci0_t,b_q,I_Tf1,T_f0,Q_fT,T_fT,Q_bf;
|
||||||
double a_h,d_Q;
|
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 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 Qf, Cdei, Qr, Cdci;
|
||||||
double ick, ick_Vciei, ick_dT,vc,cjcx01,cjcx02;
|
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: derivatives of temperature dependent hicum parameters
|
||||||
//todo: it should be enough to run the newtone once -> potential for performance improvement is exactly here
|
//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 );
|
// result = calc_it(here->HICUMtemp+1_e, Vbiei , Vbici , Q_0 , T_f0 , ick );
|
||||||
Q_pT = result.rpart();
|
// Q_pT = result.rpart();
|
||||||
Q_pT_dT = result.dpart();
|
// Q_pT_dT = result.dpart();
|
||||||
result = calc_it(here->HICUMtemp , Vbiei+1_e, Vbici , Q_0 , T_f0 , ick );
|
// result = calc_it(here->HICUMtemp , Vbiei+1_e, Vbici , Q_0 , T_f0 , ick );
|
||||||
Q_pT_dVbiei = result.dpart();
|
// Q_pT_dVbiei = result.dpart();
|
||||||
result = calc_it(here->HICUMtemp , Vbiei , Vbici+1_e, Q_0 , T_f0 , ick );
|
// result = calc_it(here->HICUMtemp , Vbiei , Vbici+1_e, Q_0 , T_f0 , ick );
|
||||||
Q_pT_dVbici = result.dpart();
|
// Q_pT_dVbici = result.dpart();
|
||||||
result = calc_it(here->HICUMtemp , Vbiei , Vbici , Q_0+1_e, T_f0 , ick );
|
// result = calc_it(here->HICUMtemp , Vbiei , Vbici , Q_0+1_e, T_f0 , ick );
|
||||||
Q_pT_dQ_0 = result.dpart();
|
// Q_pT_dQ_0 = result.dpart();
|
||||||
result = calc_it(here->HICUMtemp , Vbiei , Vbici , Q_0 , T_f0+1_e, ick );
|
// result = calc_it(here->HICUMtemp , Vbiei , Vbici , Q_0 , T_f0+1_e, ick );
|
||||||
Q_pT_dT_f0 = result.dpart();
|
// Q_pT_dT_f0 = result.dpart();
|
||||||
result = calc_it(here->HICUMtemp , Vbiei , Vbici , Q_0 , T_f0 , ick+1_e);
|
// result = calc_it(here->HICUMtemp , Vbiei , Vbici , Q_0 , T_f0 , ick+1_e);
|
||||||
Q_pT_dick = result.dpart();
|
// Q_pT_dick = result.dpart();
|
||||||
|
|
||||||
//check derivatives numerically (delete ones everything works....)
|
//check derivatives numerically (delete ones everything works....)
|
||||||
// result = calc_it(here->HICUMtemp+1e-3, Vbiei , Vbici , Q_0 , T_f0 , ick );
|
// 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);
|
// Q_pT_dick_numerical = (result.rpart() - Q_pT)/(ick*1e-3);
|
||||||
|
|
||||||
//add derivatives of ick
|
//add derivatives of ick
|
||||||
Q_pT_dVciei = Q_pT_dick*ick_Vciei; //additional component not seen in equivalent circuit of HiCUM...jesus
|
// 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_dT += Q_pT_dick*ick_dT;
|
||||||
|
|
||||||
//add derivatives of Q_0
|
// //add derivatives of Q_0
|
||||||
Q_pT_dVbiei += Q_pT_dQ_0*Q_0_Vbiei;
|
// Q_pT_dVbiei += Q_pT_dQ_0*Q_0_Vbiei;
|
||||||
Q_pT_dVbici += Q_pT_dQ_0*Q_0_Vbici;
|
// Q_pT_dVbici += Q_pT_dQ_0*Q_0_Vbici;
|
||||||
Q_pT_dT += Q_pT_dQ_0*Q_0_dT;
|
// Q_pT_dT += Q_pT_dQ_0*Q_0_dT;
|
||||||
|
|
||||||
//add derivatives of T_f0
|
// //add derivatives of T_f0
|
||||||
Q_pT_dVbici += Q_pT_dT_f0*T_f0_Vbici;
|
// Q_pT_dVbici += Q_pT_dT_f0*T_f0_Vbici;
|
||||||
Q_pT_dT += Q_pT_dT*T_f0_dT;
|
// Q_pT_dT += Q_pT_dT*T_f0_dT;
|
||||||
|
|
||||||
//end Q_pT -------------------------------------------------------------------------------
|
//end Q_pT -------------------------------------------------------------------------------
|
||||||
|
|
||||||
//begin final transfer current calculations -> itf, itr, Qf, Qr------------
|
//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();
|
itf = result_itf.rpart();
|
||||||
itr = result_itr.rpart();
|
itr = result_itr.rpart();
|
||||||
Qf = result_Qf.rpart();
|
Qf = result_Qf.rpart();
|
||||||
|
|
@ -1666,56 +1667,61 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
itr_dT = result_itr.dpart();
|
itr_dT = result_itr.dpart();
|
||||||
Qf_dT = result_Qf.dpart();
|
Qf_dT = result_Qf.dpart();
|
||||||
Qr_dT = result_Qr.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();
|
itf_Vbiei = result_itf.dpart();
|
||||||
itr_Vbiei = result_itr.dpart();
|
itr_Vbiei = result_itr.dpart();
|
||||||
Qf_Vbiei = result_Qf.dpart();
|
Qf_Vbiei = result_Qf.dpart();
|
||||||
Qr_Vbiei = result_Qr.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();
|
itf_Vbici = result_itf.dpart();
|
||||||
itr_Vbici = result_itr.dpart();
|
itr_Vbici = result_itr.dpart();
|
||||||
Qf_Vbici = result_Qf.dpart();
|
Qf_Vbici = result_Qf.dpart();
|
||||||
Qr_Vbici = result_Qr.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();
|
itf_dQ_pT = result_itf.dpart();
|
||||||
itr_dQ_pT = result_itr.dpart();
|
itr_dQ_pT = result_itr.dpart();
|
||||||
Qf_dQ_pT = result_Qf.dpart();
|
Qf_dQ_pT = result_Qf.dpart();
|
||||||
Qr_dQ_pT = result_Qr.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();
|
itf_dT_f0 = result_itf.dpart();
|
||||||
itr_dT_f0 = result_itr.dpart();
|
itr_dT_f0 = result_itr.dpart();
|
||||||
Qf_dT_f0 = result_Qf.dpart();
|
Qf_dT_f0 = result_Qf.dpart();
|
||||||
Qr_dT_f0 = result_Qr.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();
|
itf_dick = result_itf.dpart();
|
||||||
itr_dick = result_itr.dpart();
|
itr_dick = result_itr.dpart();
|
||||||
Qf_dick = result_Qf.dpart();
|
Qf_dick = result_Qf.dpart();
|
||||||
Qr_dick = result_Qr.dpart();
|
Qr_dick = result_Qr.dpart();
|
||||||
|
|
||||||
// add derivatives of Q_pT = f(Vbici,Vbiei,Vciei,T)
|
// add derivatives of Q_pT = f(Vbici,Vbiei,Vciei,T)
|
||||||
itf_dT += itf_dQ_pT*Q_pT_dT;
|
// itf_dT += itf_dQ_pT*Q_pT_dT;
|
||||||
itr_dT += itr_dQ_pT*Q_pT_dT;
|
// itr_dT += itr_dQ_pT*Q_pT_dT;
|
||||||
Qf_dT += Qf_dQ_pT*Q_pT_dT;
|
// Qf_dT += Qf_dQ_pT*Q_pT_dT;
|
||||||
Qr_dT += Qr_dQ_pT*Q_pT_dT;
|
// Qr_dT += Qr_dQ_pT*Q_pT_dT;
|
||||||
|
|
||||||
itf_Vbiei += itf_dQ_pT*Q_pT_dVbiei;
|
// itf_Vbiei += itf_dQ_pT*Q_pT_dVbiei;
|
||||||
itr_Vbiei += itr_dQ_pT*Q_pT_dVbiei;
|
// itr_Vbiei += itr_dQ_pT*Q_pT_dVbiei;
|
||||||
Qf_Vbiei += Qf_dQ_pT*Q_pT_dVbiei;
|
// Qf_Vbiei += Qf_dQ_pT*Q_pT_dVbiei;
|
||||||
Qr_Vbiei += Qr_dQ_pT*Q_pT_dVbiei;
|
// Qr_Vbiei += Qr_dQ_pT*Q_pT_dVbiei;
|
||||||
|
|
||||||
itf_Vbici += itf_dQ_pT*Q_pT_dVbici;
|
// itf_Vbici += itf_dQ_pT*Q_pT_dVbici;
|
||||||
itr_Vbici += itr_dQ_pT*Q_pT_dVbici;
|
// itr_Vbici += itr_dQ_pT*Q_pT_dVbici;
|
||||||
Qf_Vbici += Qf_dQ_pT*Q_pT_dVbici;
|
// Qf_Vbici += Qf_dQ_pT*Q_pT_dVbici;
|
||||||
Qr_Vbici += Qr_dQ_pT*Q_pT_dVbici;
|
// Qr_Vbici += Qr_dQ_pT*Q_pT_dVbici;
|
||||||
|
|
||||||
itf_Vciei += itf_dQ_pT*Q_pT_dVciei;
|
// itf_Vciei += itf_dQ_pT*Q_pT_dVciei;
|
||||||
itr_Vciei += itr_dQ_pT*Q_pT_dVciei;
|
// itr_Vciei += itr_dQ_pT*Q_pT_dVciei;
|
||||||
Qf_Vciei += Qf_dQ_pT*Q_pT_dVciei;
|
// Qf_Vciei += Qf_dQ_pT*Q_pT_dVciei;
|
||||||
Qr_Vciei += Qr_dQ_pT*Q_pT_dVciei;
|
// Qr_Vciei += Qr_dQ_pT*Q_pT_dVciei;
|
||||||
|
|
||||||
// add derivatives of T_f0 = f(Vbici, T)
|
// add derivatives of T_f0 = f(Vbici, T)
|
||||||
itf_Vbici += itf_dick*T_f0_Vbici;
|
itf_Vbici += itf_dick*T_f0_Vbici;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,8 @@ VC Q1_C 0 0.0
|
||||||
VB Q1_B 0 0.0
|
VB Q1_B 0 0.0
|
||||||
RT Q1_T 0 1M
|
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
|
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
|
.OPTIONS GMIN=1e-13 NOACCT
|
||||||
|
|
||||||
.print dc abs(i(vc)) abs(i(vb))
|
.print dc abs(i(vc)) abs(i(vb))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue