refactor gmin in HICUM

This commit is contained in:
Markus Mueller 2020-06-13 20:19:51 +02:00
parent 7aadd9af4a
commit 7e5fdae917
4 changed files with 91 additions and 20 deletions

View File

@ -26,8 +26,8 @@ libhicum2_la_SOURCES = \
hicum2soachk.c \
hicum2trunc.c
AM_CFLAGS = -O -g -Wall -Wextra
AM_CPPFLAGS = @AM_CPPFLAGS@ -O -g -Wall -Wextra
AM_CXXFLAGS = -I$(top_srcdir)/../cppduals -std=c++11 -O -g -Wall -Wextra
AM_CFLAGS = -O -g -Wall -Wextra -I$(top_srcdir)/src/include
AM_CPPFLAGS = @AM_CPPFLAGS@ -O -g -Wall -Wextra -I$(top_srcdir)/src/include
AM_CXXFLAGS = -std=c++11 -O -g -Wall -Wextra
MAINTAINERCLEANFILES = Makefile.in

View File

@ -1780,6 +1780,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
//todo: what about dQ/dT ?
//every branch connected with gmin
Ibiei += ckt->CKTgmin*Vbiei;
Ibiei_Vbiei += ckt->CKTgmin;
Ibici += ckt->CKTgmin*Vbici;

View File

@ -2617,23 +2617,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Ibpbi_Vrth = 0;
}
Ibiei += ckt->CKTgmin*Vbiei;
Ibiei_Vbiei += ckt->CKTgmin;
Ibici += ckt->CKTgmin*Vbici;
Ibici_Vbici += ckt->CKTgmin;
Ibici_Vbiei += ckt->CKTgmin;
Iciei += ckt->CKTgmin*Vciei;
Iciei_Vbiei += ckt->CKTgmin;
Iciei_Vbici += ckt->CKTgmin;
Ibpei += ckt->CKTgmin*Vbpei;
Ibpei_Vbpei += ckt->CKTgmin;
Ibpbi += ckt->CKTgmin*Vbpbi;
Ibpbi_Vbiei += ckt->CKTgmin;
Ibpbi_Vbici += ckt->CKTgmin;
Ibpci += ckt->CKTgmin*Vbpci;
Ibpci_Vbpci += ckt->CKTgmin;
Isici += ckt->CKTgmin*Vsici;
Isici_Vsici += ckt->CKTgmin;
//printf("Vbiei: %f Vbici: %f Vciei: %f Vbpei: %f Vbpci: %f Vbci: %f Vsici: %f\n", Vbiei, Vbici, Vciei, Vbpei, Vbpci, Vbci, Vsici);
//printf("Ibiei: %g ibici: %g Ibpei: %g Iciei: %g\n",Ibiei,ibici,Ibpei,Iciei);
@ -2722,6 +2706,82 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
}
// ********************************************
// all nodes (B BP BI C CI E EI S SI) connected to gmin
// T node not neede since if rth to small, non existent
Ibiei += ckt->CKTgmin*Vbiei; //BI EI -> BI EI
Ibici += ckt->CKTgmin*Vbici; //BI CI -> CI
Ibpei += ckt->CKTgmin*Vbpei; //BP EI -> BP
// Iciei += ckt->CKTgmin*Vciei; //CI EI -> not needed
// Ibpbi += ckt->CKTgmin*Vbpbi; //BP BI -> not needed
// Ibpci += ckt->CKTgmin*Vbpci; //BP CI -> not needed
Isici += ckt->CKTgmin*Vsici; //SI CI -> SI
//C from Icic
//E from Ieie
//S from Isis
//all derivatives with gmin
//Ibiei
Ibiei_Vbiei += ckt->CKTgmin;
Ibiei_Vbici += ckt->CKTgmin;
//Ibici
Ibici_Vbici += ckt->CKTgmin;
Ibici_Vbiei += ckt->CKTgmin;
//Iciei
Iciei_Vbiei += ckt->CKTgmin;
Iciei_Vbici += ckt->CKTgmin;
//Ibpei
Ibpei_Vbpei += ckt->CKTgmin;
// Ibpbi
Ibpbi_Vbiei += ckt->CKTgmin;
Ibpbi_Vbici += ckt->CKTgmin;
//Ibpbi_Vbpbi += ckt->CKTgmin; //not needed since rbi is set to gmin if too small
//Ibpci
Ibpci_Vbpci += ckt->CKTgmin;
//Isici
Isici_Vsici += ckt->CKTgmin;
//Ibpsi
Ibpsi_Vbpci += ckt->CKTgmin;
Ibpsi_Vsici += ckt->CKTgmin;
//SHE derivatives
if (!(model->HICUMflsh == 0 || model->HICUMrth < MIN_R )) {
//Ibiei
Ibiei_Vrth += ckt->CKTgmin;
//Ibici
Ibici_Vrth += ckt->CKTgmin;
//Iciei
Iciei_Vrth += ckt->CKTgmin;
//Ibpei
Ibpei_Vrth += ckt->CKTgmin;
// Ibpbi
Ibpbi_Vrth += ckt->CKTgmin;
//Ibpci
Ibpci_Vrth += ckt->CKTgmin;
//Isici
Isici_Vrth += ckt->CKTgmin;
//Ibpsi
Ibpsi_Vrth += ckt->CKTgmin;
//Ith
Ith_Vbiei += ckt->CKTgmin;
Ith_Vbici += ckt->CKTgmin;
Ith_Vbpbi += ckt->CKTgmin;
Ith_Vbpci += ckt->CKTgmin;
Ith_Vbpei += ckt->CKTgmin;
Ith_Vciei += ckt->CKTgmin;
Ith_Vsici += ckt->CKTgmin;
Ith_Vcic += ckt->CKTgmin;
Ith_Vbbp += ckt->CKTgmin;
Ith_Veie += ckt->CKTgmin;
Ith_Vrth += ckt->CKTgmin;
}
// NQS effect
// Ibxf1 = Ixf1;
// Icxf1 += ddt(Qxf1);

View File

@ -101,3 +101,13 @@ Im Update part, line 1361:
if (ibets > 0 && (Vbpei < 0.0 || Vbiei < 0.0)) begin : HICTUN_T
# gmin
Die Knoten eines nichlinearen Zweiges müssen einmal (!) mit gmin verbunden werden.
Daraus folgt, wie schon gemacht, für den Strom gmin*Vxy als Zusatz und für alle (!)
Ableitungen des Stromes gmin als Zusatz.
Praktisch heißt das, daß die Beaufschlagung von Iciei überflüssig ist,
da schon mit den Zweigen biei und bici erfolgt ist.
Es fehlen aber noch Beaufschlagungen,
z.B. Ibiei_Vbici, weil die Ableitung später hinzugekommen ist.