correct and simplify temp derivatives

This commit is contained in:
dwarning 2025-10-24 09:37:34 +02:00
parent 3340df46ca
commit a6590d354f
1 changed files with 8 additions and 4 deletions

View File

@ -297,17 +297,21 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt)
/* Calculate temperature dependent values for self-heating effect */
if (selfheat) {
Beta = here->VDMOStTransconductance;
dBeta_dT = Beta * model->VDMOSmu * pow(Temp, model->VDMOSmu-1) / pow(model->VDMOStnom, model->VDMOSmu);
dBeta_dT = model->VDMOStransconductance * here->VDMOSm
* model->VDMOSmu * pow(Temp/model->VDMOStnom, model->VDMOSmu) / Temp;
rd0T = here->VDMOSdrainResistance;
if (model->VDMOStexp0Given)
drd0T_dT = rd0T * model->VDMOStexp0 * pow(Temp, model->VDMOStexp0-1) / pow(model->VDMOStnom, model->VDMOStexp0);
drd0T_dT = model->VDMOSdrainResistance / here->VDMOSm
* model->VDMOStexp0 * pow(Temp/model->VDMOStnom, model->VDMOStexp0) / Temp;
else
drd0T_dT = rd0T * (model->VDMOStrd1 + model->VDMOStrd2*(2*model->VDMOStnom*Temp - model->VDMOStnom*model->VDMOStnom));
drd0T_dT = model->VDMOSdrainResistance / here->VDMOSm
* (model->VDMOStrd1 + 2 * model->VDMOStrd2 * (Temp - model->VDMOStnom));
rd1T = 0.0;
drd1T_dT = 0.0;
if (model->VDMOSqsGiven) {
rd1T = here->VDMOSqsResistance;
drd1T_dT = rd1T * model->VDMOStexp1 * pow(Temp, model->VDMOStexp1-1) / pow(model->VDMOStnom, model->VDMOStexp1);
drd1T_dT = model->VDMOSqsResistance / here->VDMOSm
* model->VDMOStexp1 * pow(Temp/model->VDMOStnom, model->VDMOStexp1) / Temp;
}
} else {
Beta = here->VDMOStTransconductance;