From 6e6e2fb2030964f392757d72ea88d2430b084f23 Mon Sep 17 00:00:00 2001 From: dwarning Date: Sun, 7 Jul 2024 21:36:05 +0200 Subject: [PATCH] first attempt to include NQS effect --- src/spicelib/devices/vbic/vbicacld.c | 52 +- src/spicelib/devices/vbic/vbicask.c | 10 +- src/spicelib/devices/vbic/vbicconv.c | 30 +- src/spicelib/devices/vbic/vbicdefs.h | 219 +- src/spicelib/devices/vbic/vbicload.c | 3985 +++++++++++++++++++++---- src/spicelib/devices/vbic/vbicnoise.c | 14 +- src/spicelib/devices/vbic/vbicpzld.c | 52 +- src/spicelib/devices/vbic/vbicsetup.c | 61 + 8 files changed, 3744 insertions(+), 679 deletions(-) diff --git a/src/spicelib/devices/vbic/vbicacld.c b/src/spicelib/devices/vbic/vbicacld.c index 3e117812b..303d56149 100644 --- a/src/spicelib/devices/vbic/vbicacld.c +++ b/src/spicelib/devices/vbic/vbicacld.c @@ -46,32 +46,32 @@ VBICacLoad(GENmodel *inModel, CKTcircuit *ckt) for( here = VBICinstances(model); here!= NULL; here = VBICnextInstance(here)) { - Ibe_Vbei = *(ckt->CKTstate0 + here->VBICibe_Vbei); - Ibex_Vbex = *(ckt->CKTstate0 + here->VBICibex_Vbex); - Itzf_Vbei = *(ckt->CKTstate0 + here->VBICitzf_Vbei); - Itzf_Vbci = *(ckt->CKTstate0 + here->VBICitzf_Vbci); - Itzr_Vbci = *(ckt->CKTstate0 + here->VBICitzr_Vbci); - Itzr_Vbei = *(ckt->CKTstate0 + here->VBICitzr_Vbei); - Ibc_Vbci = *(ckt->CKTstate0 + here->VBICibc_Vbci); - Ibc_Vbei = *(ckt->CKTstate0 + here->VBICibc_Vbei); - Ibep_Vbep = *(ckt->CKTstate0 + here->VBICibep_Vbep); - Irci_Vrci = *(ckt->CKTstate0 + here->VBICirci_Vrci); - Irci_Vbci = *(ckt->CKTstate0 + here->VBICirci_Vbci); - Irci_Vbcx = *(ckt->CKTstate0 + here->VBICirci_Vbcx); - Irbi_Vrbi = *(ckt->CKTstate0 + here->VBICirbi_Vrbi); - Irbi_Vbei = *(ckt->CKTstate0 + here->VBICirbi_Vbei); - Irbi_Vbci = *(ckt->CKTstate0 + here->VBICirbi_Vbci); - Irbp_Vrbp = *(ckt->CKTstate0 + here->VBICirbp_Vrbp); - Irbp_Vbep = *(ckt->CKTstate0 + here->VBICirbp_Vbep); - Irbp_Vbci = *(ckt->CKTstate0 + here->VBICirbp_Vbci); - Ibcp_Vbcp = *(ckt->CKTstate0 + here->VBICibcp_Vbcp); - Iccp_Vbep = *(ckt->CKTstate0 + here->VBICiccp_Vbep); - Iccp_Vbci = *(ckt->CKTstate0 + here->VBICiccp_Vbci); - Iccp_Vbcp = *(ckt->CKTstate0 + here->VBICiccp_Vbcp); - Ircx_Vrcx = *(ckt->CKTstate0 + here->VBICircx_Vrcx); - Irbx_Vrbx = *(ckt->CKTstate0 + here->VBICirbx_Vrbx); - Irs_Vrs = *(ckt->CKTstate0 + here->VBICirs_Vrs); - Ire_Vre = *(ckt->CKTstate0 + here->VBICire_Vre); + Ibe_Vbei = *(ckt->CKTstate0 + here->VBICibe_vbei); + Ibex_Vbex = *(ckt->CKTstate0 + here->VBICibex_vbex); + Itzf_Vbei = *(ckt->CKTstate0 + here->VBICitzf_vbei); + Itzf_Vbci = *(ckt->CKTstate0 + here->VBICitzf_vbci); + Itzr_Vbci = *(ckt->CKTstate0 + here->VBICitzr_vbci); + Itzr_Vbei = *(ckt->CKTstate0 + here->VBICitzr_vbei); + Ibc_Vbci = *(ckt->CKTstate0 + here->VBICibc_vbci); + Ibc_Vbei = *(ckt->CKTstate0 + here->VBICibc_vbei); + Ibep_Vbep = *(ckt->CKTstate0 + here->VBICibep_vbep); + Irci_Vrci = *(ckt->CKTstate0 + here->VBICirci_vrci); + Irci_Vbci = *(ckt->CKTstate0 + here->VBICirci_vbci); + Irci_Vbcx = *(ckt->CKTstate0 + here->VBICirci_vbcx); + Irbi_Vrbi = *(ckt->CKTstate0 + here->VBICirbi_vrbi); + Irbi_Vbei = *(ckt->CKTstate0 + here->VBICirbi_vbei); + Irbi_Vbci = *(ckt->CKTstate0 + here->VBICirbi_vbci); + Irbp_Vrbp = *(ckt->CKTstate0 + here->VBICirbp_vrbp); + Irbp_Vbep = *(ckt->CKTstate0 + here->VBICirbp_vbep); + Irbp_Vbci = *(ckt->CKTstate0 + here->VBICirbp_vbci); + Ibcp_Vbcp = *(ckt->CKTstate0 + here->VBICibcp_vbcp); + Iccp_Vbep = *(ckt->CKTstate0 + here->VBICiccp_vbep); + Iccp_Vbci = *(ckt->CKTstate0 + here->VBICiccp_vbci); + Iccp_Vbcp = *(ckt->CKTstate0 + here->VBICiccp_vbcp); + Ircx_Vrcx = *(ckt->CKTstate0 + here->VBICircx_vrcx); + Irbx_Vrbx = *(ckt->CKTstate0 + here->VBICirbx_vrbx); + Irs_Vrs = *(ckt->CKTstate0 + here->VBICirs_vrs); + Ire_Vre = *(ckt->CKTstate0 + here->VBICire_vre); /* c The real part diff --git a/src/spicelib/devices/vbic/vbicask.c b/src/spicelib/devices/vbic/vbicask.c index 877ed7a4f..91d1f6aca 100644 --- a/src/spicelib/devices/vbic/vbicask.c +++ b/src/spicelib/devices/vbic/vbicask.c @@ -122,19 +122,19 @@ VBICask(CKTcircuit *ckt, GENinstance *instPtr, int which, IFvalue *value, IFvalu fabs(IS.rValue * *(ckt->CKTstate0 + here->VBICvrbp)); return(OK); case VBIC_QUEST_GM: - value->rValue = *(ckt->CKTstate0 + here->VBICitzf_Vbei); + value->rValue = *(ckt->CKTstate0 + here->VBICitzf_vbei); return(OK); case VBIC_QUEST_GO: - value->rValue = *(ckt->CKTstate0 + here->VBICitzf_Vbci); + value->rValue = *(ckt->CKTstate0 + here->VBICitzf_vbci); return(OK); case VBIC_QUEST_GPI: - value->rValue = *(ckt->CKTstate0 + here->VBICibe_Vbei); + value->rValue = *(ckt->CKTstate0 + here->VBICibe_vbei); return(OK); case VBIC_QUEST_GMU: - value->rValue = *(ckt->CKTstate0 + here->VBICibc_Vbci); + value->rValue = *(ckt->CKTstate0 + here->VBICibc_vbci); return(OK); case VBIC_QUEST_GX: - value->rValue = *(ckt->CKTstate0 + here->VBICirbi_Vrbi); + value->rValue = *(ckt->CKTstate0 + here->VBICirbi_vrbi); return(OK); case VBIC_QUEST_CBE: value->rValue = here->VBICcapbe; diff --git a/src/spicelib/devices/vbic/vbicconv.c b/src/spicelib/devices/vbic/vbicconv.c index f1def73fa..55a2984fb 100644 --- a/src/spicelib/devices/vbic/vbicconv.c +++ b/src/spicelib/devices/vbic/vbicconv.c @@ -85,27 +85,27 @@ VBICconvTest(GENmodel *inModel, CKTcircuit *ckt) delvrbp = Vrbp - *(ckt->CKTstate0 + here->VBICvrbp); delvbcp = Vbcp - *(ckt->CKTstate0 + here->VBICvbcp); ibehat = *(ckt->CKTstate0 + here->VBICibe) + - *(ckt->CKTstate0 + here->VBICibe_Vbei)*delvbei; + *(ckt->CKTstate0 + here->VBICibe_vbei)*delvbei; ibexhat = *(ckt->CKTstate0 + here->VBICibex) + - *(ckt->CKTstate0 + here->VBICibex_Vbex)*delvbex; + *(ckt->CKTstate0 + here->VBICibex_vbex)*delvbex; itzfhat = *(ckt->CKTstate0 + here->VBICitzf) + - *(ckt->CKTstate0 + here->VBICitzf_Vbei)*delvbei + *(ckt->CKTstate0 + here->VBICitzf_Vbci)*delvbci; + *(ckt->CKTstate0 + here->VBICitzf_vbei)*delvbei + *(ckt->CKTstate0 + here->VBICitzf_vbci)*delvbci; itzrhat = *(ckt->CKTstate0 + here->VBICitzr) + - *(ckt->CKTstate0 + here->VBICitzr_Vbei)*delvbei + *(ckt->CKTstate0 + here->VBICitzr_Vbci)*delvbci; + *(ckt->CKTstate0 + here->VBICitzr_vbei)*delvbei + *(ckt->CKTstate0 + here->VBICitzr_vbci)*delvbci; ibchat = *(ckt->CKTstate0 + here->VBICibc) + - *(ckt->CKTstate0 + here->VBICibc_Vbei)*delvbei + *(ckt->CKTstate0 + here->VBICibc_Vbci)*delvbci; + *(ckt->CKTstate0 + here->VBICibc_vbei)*delvbei + *(ckt->CKTstate0 + here->VBICibc_vbci)*delvbci; ibephat = *(ckt->CKTstate0 + here->VBICibep) + - *(ckt->CKTstate0 + here->VBICibep_Vbep)*delvbep; - ircihat = *(ckt->CKTstate0 + here->VBICirci) + *(ckt->CKTstate0 + here->VBICirci_Vrci)*delvrci + - *(ckt->CKTstate0 + here->VBICirci_Vbcx)*delvbcx + *(ckt->CKTstate0 + here->VBICirci_Vbci)*delvbci; - irbihat = *(ckt->CKTstate0 + here->VBICirbi) + *(ckt->CKTstate0 + here->VBICirbi_Vrbi)*delvrbi + - *(ckt->CKTstate0 + here->VBICirbi_Vbei)*delvbei + *(ckt->CKTstate0 + here->VBICirbi_Vbci)*delvbci; - irbphat = *(ckt->CKTstate0 + here->VBICirbp) + *(ckt->CKTstate0 + here->VBICirbp_Vrbp)*delvrbp + - *(ckt->CKTstate0 + here->VBICirbp_Vbep)*delvbep + *(ckt->CKTstate0 + here->VBICirbp_Vbci)*delvbci; + *(ckt->CKTstate0 + here->VBICibep_vbep)*delvbep; + ircihat = *(ckt->CKTstate0 + here->VBICirci) + *(ckt->CKTstate0 + here->VBICirci_vrci)*delvrci + + *(ckt->CKTstate0 + here->VBICirci_vbcx)*delvbcx + *(ckt->CKTstate0 + here->VBICirci_vbci)*delvbci; + irbihat = *(ckt->CKTstate0 + here->VBICirbi) + *(ckt->CKTstate0 + here->VBICirbi_vrbi)*delvrbi + + *(ckt->CKTstate0 + here->VBICirbi_vbei)*delvbei + *(ckt->CKTstate0 + here->VBICirbi_vbci)*delvbci; + irbphat = *(ckt->CKTstate0 + here->VBICirbp) + *(ckt->CKTstate0 + here->VBICirbp_vrbp)*delvrbp + + *(ckt->CKTstate0 + here->VBICirbp_vbep)*delvbep + *(ckt->CKTstate0 + here->VBICirbp_vbci)*delvbci; ibcphat = *(ckt->CKTstate0 + here->VBICibcp) + - *(ckt->CKTstate0 + here->VBICibcp_Vbcp)*delvbcp; - iccphat = *(ckt->CKTstate0 + here->VBICiccp) + *(ckt->CKTstate0 + here->VBICiccp_Vbep)*delvbep + - *(ckt->CKTstate0 + here->VBICiccp_Vbci)*delvbci + *(ckt->CKTstate0 + here->VBICiccp_Vbcp)*delvbcp; + *(ckt->CKTstate0 + here->VBICibcp_vbcp)*delvbcp; + iccphat = *(ckt->CKTstate0 + here->VBICiccp) + *(ckt->CKTstate0 + here->VBICiccp_vbep)*delvbep + + *(ckt->CKTstate0 + here->VBICiccp_vbci)*delvbci + *(ckt->CKTstate0 + here->VBICiccp_vbcp)*delvbcp; Ibe = *(ckt->CKTstate0 + here->VBICibe); Ibex = *(ckt->CKTstate0 + here->VBICibex); Itzf = *(ckt->CKTstate0 + here->VBICitzf); diff --git a/src/spicelib/devices/vbic/vbicdefs.h b/src/spicelib/devices/vbic/vbicdefs.h index f7ecafa90..6066cda87 100644 --- a/src/spicelib/devices/vbic/vbicdefs.h +++ b/src/spicelib/devices/vbic/vbicdefs.h @@ -60,6 +60,9 @@ typedef struct sVBICinstance { int VBICemitEINode; /* number of internal emitter node of vbic */ int VBICbaseBPNode; /* number of internal base node of vbic */ int VBICsubsSINode; /* number of internal substrate node */ + int VBICxf1Node; /* number of internal excess phase 1 node itf */ + int VBICxf2Node; /* number of internal excess phase 2 node itf */ + int VBICbrEq; /* number of the branch equation added for current */ double VBICarea; /* area factor for the vbic */ double VBICicVBE; /* initial condition voltage B-E*/ @@ -125,6 +128,10 @@ typedef struct sVBICinstance { * (emitter prime,emitter prime) */ double *VBICsubsSISubsSIPtr; /* pointer to sparse matrix at * (substrate prime, substrate prime) */ + double *VBICemitEIXfPtr; /* pointer to sparse matrix at + * (emitter prime,xf) */ + double *VBICbaseBIXfPtr; /* pointer to sparse matrix at + * (base prime,xf) */ double *VBICbaseEmitPtr; /* pointer to sparse matrix at * (base,emit) */ @@ -233,6 +240,32 @@ typedef struct sVBICinstance { double *VBICtempSubsSIPtr; double *VBICtempTempPtr; + /* excess phase */ + + double *VBICxf1Xf1Ptr; // + double *VBICxf1TempPtr; + double *VBICxf1BaseBIPtr; // + double *VBICxf1EmitEIPtr; // + double *VBICxf1CollCIPtr; // + double *VBICxf1Xf2Ptr; // + + double *VBICxf2Xf1Ptr; + double *VBICtempXf2Ptr; // + double *VBICxf2BaseBIPtr; + double *VBICxf2EmitEIPtr; + double *VBICxf2CollCIPtr; + double *VBICxf2Xf2Ptr; + double *VBICemitXf2Ptr; + double *VBICemitEIXf2Ptr; // + double *VBICbaseBIXf2Ptr; // + double *VBICcollCIXf2Ptr; // + + double *VBICxf1IbrPtr; // + double *VBICxf2IbrPtr; // + double *VBICibrXf1Ptr; // + double *VBICibrXf2Ptr; // + double *VBICibrIbrPtr; // + unsigned VBICareaGiven :1; /* flag to indicate area was specified */ unsigned VBICoff :1; /* 'off' flag for vbic */ unsigned VBICicVBEGiven :1; /* flag to indicate VBE init. cond. given */ @@ -280,6 +313,7 @@ typedef struct sVBICinstance { double VBICith_Vbex; double VBICith_Vbep; double VBICith_Vbcp; + double VBICqf_Vxf; double VBICith_Vcep; double VBICith_Vrci; double VBICith_Vbcx; @@ -290,6 +324,9 @@ typedef struct sVBICinstance { double VBICith_Vre; double VBICith_Vrs; + double VBICcapxf; + double VBICindInduct; + int VBIC_selfheat; /* self-heating enabled */ #ifndef NONOISE @@ -308,6 +345,7 @@ typedef struct sVBICinstance { BindElement *VBICcollCICollCIBinding ; BindElement *VBICbaseBXBaseBXBinding ; BindElement *VBICbaseBIBaseBIBinding ; + BindElement *VBICbaseBIXfBinding ; BindElement *VBICemitEIEmitEIBinding ; BindElement *VBICbaseBPBaseBPBinding ; BindElement *VBICsubsSISubsSIBinding ; @@ -356,11 +394,14 @@ typedef struct sVBICinstance { BindElement *VBICemitTempBinding ; BindElement *VBICsubsTempBinding ; BindElement *VBICcollCItempBinding ; + BindElement *VBICcollCIXf2Binding ; BindElement *VBICcollCXtempBinding ; BindElement *VBICbaseBItempBinding ; BindElement *VBICbaseBXtempBinding ; BindElement *VBICbaseBPtempBinding ; BindElement *VBICemitEItempBinding ; + BindElement *VBICemitEIXf2Binding ; + BindElement *VBICemitEIXfBinding ; BindElement *VBICsubsSItempBinding ; BindElement *VBICtempCollBinding ; BindElement *VBICtempCollCIBinding ; @@ -374,107 +415,143 @@ typedef struct sVBICinstance { BindElement *VBICtempSubsBinding ; BindElement *VBICtempSubsSIBinding ; BindElement *VBICtempTempBinding ; + BindElement *VBICxf1BaseBIBinding ; + BindElement *VBICxf1CollCIBinding ; + BindElement *VBICxf1EmitEIBinding ; + BindElement *VBICxf1TempBinding ; + BindElement *VBICxf1Xf1Binding ; + BindElement *VBICxf1Xf2Binding ; + BindElement *VBICxf2BaseBIBinding ; + BindElement *VBICxf2CollCIBinding ; + BindElement *VBICxf2EmitEIBinding ; + BindElement *VBICxf2TempBinding ; + BindElement *VBICxf2Xf1Binding ; + BindElement *VBICxf2Xf2Binding ; #endif } VBICinstance ; /* entries in the state vector for vbic: */ -#define VBICvbei VBICstate -#define VBICvbex VBICstate+1 -#define VBICvbci VBICstate+2 -#define VBICvbcx VBICstate+3 -#define VBICvbep VBICstate+4 -#define VBICvrci VBICstate+5 -#define VBICvrbi VBICstate+6 -#define VBICvrbp VBICstate+7 -#define VBICvbcp VBICstate+8 +#define VBICvbei VBICstate +#define VBICvbex VBICstate+1 +#define VBICvbci VBICstate+2 +#define VBICvbcx VBICstate+3 +#define VBICvbep VBICstate+4 +#define VBICvrci VBICstate+5 +#define VBICvrbi VBICstate+6 +#define VBICvrbp VBICstate+7 +#define VBICvbcp VBICstate+8 +#define VBICvxf1 VBICstate+9 +#define VBICvxf2 VBICstate+10 + +#define VBICibe VBICstate+11 +#define VBICibe_vbei VBICstate+12 + +#define VBICibex VBICstate+13 +#define VBICibex_vbex VBICstate+14 + +#define VBICitzf VBICstate+15 +#define VBICitzf_vbei VBICstate+16 +#define VBICitzf_vbci VBICstate+17 +#define VBICitzf_vrth VBICstate+18 + +#define VBICitzr VBICstate+19 +#define VBICitzr_vbci VBICstate+20 +#define VBICitzr_vbei VBICstate+21 + +#define VBICibc VBICstate+22 +#define VBICibc_vbci VBICstate+23 +#define VBICibc_vbei VBICstate+24 + +#define VBICibep VBICstate+25 +#define VBICibep_vbep VBICstate+26 -#define VBICibe VBICstate+9 -#define VBICibe_Vbei VBICstate+10 +#define VBICirci VBICstate+27 +#define VBICirci_vrci VBICstate+28 +#define VBICirci_vbci VBICstate+29 +#define VBICirci_vbcx VBICstate+30 -#define VBICibex VBICstate+11 -#define VBICibex_Vbex VBICstate+12 +#define VBICirbi VBICstate+31 +#define VBICirbi_vrbi VBICstate+32 +#define VBICirbi_vbei VBICstate+33 +#define VBICirbi_vbci VBICstate+34 -#define VBICitzf VBICstate+13 -#define VBICitzf_Vbei VBICstate+14 -#define VBICitzf_Vbci VBICstate+15 +#define VBICirbp VBICstate+35 +#define VBICirbp_vrbp VBICstate+36 +#define VBICirbp_vbep VBICstate+37 +#define VBICirbp_vbci VBICstate+38 -#define VBICitzr VBICstate+16 -#define VBICitzr_Vbci VBICstate+17 -#define VBICitzr_Vbei VBICstate+18 -#define VBICibc VBICstate+19 -#define VBICibc_Vbci VBICstate+20 -#define VBICibc_Vbei VBICstate+21 +#define VBICqbe VBICstate+39 +#define VBICcqbe VBICstate+40 +#define VBICcqbeci VBICstate+41 -#define VBICibep VBICstate+22 -#define VBICibep_Vbep VBICstate+23 +#define VBICqbex VBICstate+42 +#define VBICcqbex VBICstate+43 -#define VBICirci VBICstate+24 -#define VBICirci_Vrci VBICstate+25 -#define VBICirci_Vbci VBICstate+26 -#define VBICirci_Vbcx VBICstate+27 +#define VBICqbc VBICstate+44 +#define VBICcqbc VBICstate+45 -#define VBICirbi VBICstate+28 -#define VBICirbi_Vrbi VBICstate+29 -#define VBICirbi_Vbei VBICstate+30 -#define VBICirbi_Vbci VBICstate+31 +#define VBICqbcx VBICstate+46 +#define VBICcqbcx VBICstate+47 -#define VBICirbp VBICstate+32 -#define VBICirbp_Vrbp VBICstate+33 -#define VBICirbp_Vbep VBICstate+34 -#define VBICirbp_Vbci VBICstate+35 +#define VBICqbep VBICstate+48 +#define VBICcqbep VBICstate+49 +#define VBICcqbepci VBICstate+50 +#define VBICqbeo VBICstate+51 +#define VBICcqbeo VBICstate+52 +#define VBICgqbeo VBICstate+53 -#define VBICqbe VBICstate+36 -#define VBICcqbe VBICstate+37 -#define VBICcqbeci VBICstate+38 +#define VBICqbco VBICstate+54 +#define VBICcqbco VBICstate+55 +#define VBICgqbco VBICstate+56 -#define VBICqbex VBICstate+39 -#define VBICcqbex VBICstate+40 +#define VBICibcp VBICstate+57 +#define VBICibcp_vbcp VBICstate+58 -#define VBICqbc VBICstate+41 -#define VBICcqbc VBICstate+42 +#define VBICiccp VBICstate+59 +#define VBICiccp_vbep VBICstate+60 +#define VBICiccp_vbci VBICstate+61 +#define VBICiccp_vbcp VBICstate+62 -#define VBICqbcx VBICstate+43 -#define VBICcqbcx VBICstate+44 +#define VBICqbcp VBICstate+63 +#define VBICcqbcp VBICstate+64 -#define VBICqbep VBICstate+45 -#define VBICcqbep VBICstate+46 -#define VBICcqbepci VBICstate+47 +#define VBICircx_vrcx VBICstate+65 +#define VBICirbx_vrbx VBICstate+66 +#define VBICirs_vrs VBICstate+67 +#define VBICire_vre VBICstate+68 -#define VBICqbeo VBICstate+48 -#define VBICcqbeo VBICstate+49 -#define VBICgqbeo VBICstate+50 +#define VBICqcth VBICstate+69 /* thermal capacitor charge */ +#define VBICcqcth VBICstate+70 /* thermal capacitor current */ -#define VBICqbco VBICstate+51 -#define VBICcqbco VBICstate+52 -#define VBICgqbco VBICstate+53 +#define VBICvrth VBICstate+71 +#define VBICicth_vrth VBICstate+72 -#define VBICibcp VBICstate+54 -#define VBICibcp_Vbcp VBICstate+55 +#define VBICqcxf VBICstate+73 +#define VBICcqcxf VBICstate+74 +#define VBICgqxf VBICstate+75 -#define VBICiccp VBICstate+56 -#define VBICiccp_Vbep VBICstate+57 -#define VBICiccp_Vbci VBICstate+58 -#define VBICiccp_Vbcp VBICstate+59 +#define VBICibc_vrxf VBICstate+76 -#define VBICqbcp VBICstate+60 -#define VBICcqbcp VBICstate+61 +#define VBICixzf VBICstate+77 +#define VBICixzf_vbei VBICstate+78 +#define VBICixzf_vbci VBICstate+79 +#define VBICixzf_vrth VBICstate+80 -#define VBICircx_Vrcx VBICstate+62 -#define VBICirbx_Vrbx VBICstate+63 -#define VBICirs_Vrs VBICstate+64 -#define VBICire_Vre VBICstate+65 +#define VBICixxf VBICstate+81 +#define VBICixxf_vrxf VBICstate+82 -#define VBICqcth VBICstate+66 /* thermal capacitor charge */ -#define VBICcqcth VBICstate+67 /* thermal capacitor current */ +#define VBICitxf VBICstate+83 +#define VBICitxf_vrxf VBICstate+84 +#define VBICith_vrxf VBICstate+85 -#define VBICvrth VBICstate+68 -#define VBICicth_Vrth VBICstate+69 +#define VBICindFlux VBICstate+86 +#define VBICindVolt VBICstate+87 -#define VBICnumStates 70 +#define VBICnumStates 88 /* per model data */ typedef struct sVBICmodel { /* model structure for a vbic */ diff --git a/src/spicelib/devices/vbic/vbicload.c b/src/spicelib/devices/vbic/vbicload.c index ae4518f2a..66596f64e 100644 --- a/src/spicelib/devices/vbic/vbicload.c +++ b/src/spicelib/devices/vbic/vbicload.c @@ -18,6 +18,18 @@ Spice3 Implementation: 2003 Dietmar Warning DAnalyse GmbH #include "ngspice/sperror.h" #include "ngspice/devdefs.h" +int vbic_4T_it_cf_fj( + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *); int vbic_4T_et_cf_fj( double *,double *,double *,double *,double *,double *,double *, double *,double *,double *,double *,double *,double *,double *, @@ -37,7 +49,7 @@ int vbic_4T_et_cf_fj( double *,double *,double *,double *,double *,double *,double *, double *,double *,double *,double *,double *,double *,double *, double *,double *); -int vbic_4T_it_cf_fj( +int vbic_4T_et_xf_fj( double *,double *,double *,double *,double *,double *,double *, double *,double *,double *,double *,double *,double *,double *, double *,double *,double *,double *,double *,double *,double *, @@ -48,7 +60,15 @@ int vbic_4T_it_cf_fj( double *,double *,double *,double *,double *,double *,double *, double *,double *,double *,double *,double *,double *,double *, double *,double *,double *,double *,double *,double *,double *, - double *,double *,double *,double *,double *,double *); + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *, + double *,double *,double *,double *,double *,double *,double *); int VBICload(GENmodel *inModel, CKTcircuit *ckt) @@ -77,6 +97,11 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) ,Ith_Vcei=0.0,Ith_Vbex=0.0,Ith_Vbep=0.0,Ith_Vrs=0.0,Ith_Vbcp=0.0,Ith_Vcep=0.0,Ith_Vrcx=0.0 ,Ith_Vrci=0.0,Ith_Vbcx=0.0,Ith_Vrbx=0.0,Ith_Vrbi=0.0,Ith_Vre=0.0,Ith_Vrbp=0.0,Qcth=0.0 ,Qcth_Vrth=0.0,SCALE; + //NQS + double Vrxf, Vcxf, Itxf, Itxf_Vrxf, Ibc_Vrxf, Ith_Vrxf, Ixzf_Vrth, + Ixxf_Vrxf, Qcxf, Qcxf_Vcxf, Flxf, Flxf_Vrxf; + double veq, req; + int iret; double vce; #ifndef PREDICTOR @@ -92,9 +117,11 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) double delvrbi; double delvrbp; double delvbcp; + double delvxf2; double ibehat; double ibexhat; double itzfhat; + double ixzfhat; double itzrhat; double ibchat; double ibephat; @@ -110,6 +137,13 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) double gqbeo, cqbeo, gqbco, cqbco, gbcx, cbcx; double Icth, Icth_Vrth; + //NQS + double Ixzf,Ixxf; + double Ixzf_Vbei, Ixzf_Vbci; + double Icxf, Icxf_Vcxf; + double Vxf1, Vxf2; + + /* loop through all the models */ for( ; model != NULL; model = VBICnextModel(model)) { @@ -126,6 +160,7 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) gqbco = 0.0; cqbco = 0.0; Icth = 0.0, Icth_Vrth = 0.0; + Icxf=0.0, Icxf_Vcxf=0.0; /* * model parameters */ @@ -172,6 +207,13 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) /* * initialization */ + if(!(ckt->CKTmode & (MODEDC|MODEINITPRED))) { + if(ckt->CKTmode & MODEUIC && ckt->CKTmode & MODEINITTRAN) { + *(ckt->CKTstate0 + here->VBICindFlux) = here->VBICindInduct; + } else { + *(ckt->CKTstate0 + here->VBICindFlux) = here->VBICindInduct * *(ckt->CKTrhsOld + here->VBICbrEq); + } + } icheck=1; if(ckt->CKTmode & MODEINITSMSIG) { Vbe = model->VBICtype*( @@ -203,6 +245,8 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) *(ckt->CKTrhsOld+here->VBICsubsSINode)); if (here->VBIC_selfheat) Vrth = *(ckt->CKTstate0 + here->VBICvrth); + Vxf1 = *(ckt->CKTrhsOld + here->VBICxf1Node); + Vxf2 = *(ckt->CKTrhsOld + here->VBICxf2Node); } else if(ckt->CKTmode & MODEINITTRAN) { Vbe = model->VBICtype*( *(ckt->CKTrhsOld+here->VBICbaseNode)- @@ -233,6 +277,8 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) *(ckt->CKTrhsOld+here->VBICsubsSINode)); if (here->VBIC_selfheat) Vrth = *(ckt->CKTstate1 + here->VBICvrth); + Vxf1 = *(ckt->CKTrhsOld + here->VBICxf1Node); + Vxf2 = *(ckt->CKTrhsOld + here->VBICxf2Node); } else if((ckt->CKTmode & MODEINITJCT) && (ckt->CKTmode & MODETRANOP) && (ckt->CKTmode & MODEUIC)){ Vbe=model->VBICtype*here->VBICicVBE; @@ -244,6 +290,9 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) Vrci=Vrbi=Vrbp=0.0; Vrcx=Vrbx=Vre=Vrs=0.0; Vrth = 0.0, Icth = 0.0, Icth_Vrth = 0.0; + Vxf1=Vxf2=0.0, Icxf=0.0, Icxf_Vcxf=0.0; + req = 0.0; + veq = 0.0; } else if((ckt->CKTmode & MODEINITJCT) && (here->VBICoff==0)) { Vbe=Vbei=Vbex=model->VBICtype*here->VBICtVcrit; Vbc=Vbcx=Vbep=0.0; @@ -252,6 +301,9 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) Vrci=Vrbi=Vrbp=0.0; Vrcx=Vrbx=Vre=Vrs=0.0; Vrth = 0.0, Icth = 0.0, Icth_Vrth = 0.0; + Vxf1=Vxf2=0.0, Icxf=0.0, Icxf_Vcxf=0.0; + req = 0.0; + veq = 0.0; } else if((ckt->CKTmode & MODEINITJCT) || ( (ckt->CKTmode & MODEINITFIX) && (here->VBICoff!=0))) { Vbe=0.0; @@ -262,6 +314,9 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) Vrci=Vrbi=Vrbp=0.0; Vrcx=Vrbx=Vre=Vrs=0.0; Vrth = 0.0, Icth = 0.0, Icth_Vrth = 0.0; + Vxf1=Vxf2=0.0, Icxf=0.0, Icxf_Vcxf=0.0; + req = 0.0; + veq = 0.0; } else { #ifndef PREDICTOR if(ckt->CKTmode & MODEINITPRED) { @@ -290,6 +345,12 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) *(ckt->CKTstate0 + here->VBICvrth) = *(ckt->CKTstate1 + here->VBICvrth); } + // dead assign: + Vxf1 = (1+xfact) * *(ckt->CKTstate1 + here->VBICvxf1)- + xfact * *(ckt->CKTstate2 + here->VBICvxf1); + Vxf2 = (1+xfact) * *(ckt->CKTstate1 + here->VBICvxf2)- + xfact * *(ckt->CKTstate2 + here->VBICvxf2); + *(ckt->CKTstate0 + here->VBICvbei) = *(ckt->CKTstate1 + here->VBICvbei); *(ckt->CKTstate0 + here->VBICvbex) = @@ -310,85 +371,109 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) *(ckt->CKTstate1 + here->VBICvbcp); *(ckt->CKTstate0 + here->VBICibe) = *(ckt->CKTstate1 + here->VBICibe); - *(ckt->CKTstate0 + here->VBICibe_Vbei) = - *(ckt->CKTstate1 + here->VBICibe_Vbei); + *(ckt->CKTstate0 + here->VBICibe_vbei) = + *(ckt->CKTstate1 + here->VBICibe_vbei); *(ckt->CKTstate0 + here->VBICibex) = *(ckt->CKTstate1 + here->VBICibex); - *(ckt->CKTstate0 + here->VBICibex_Vbex) = - *(ckt->CKTstate1 + here->VBICibex_Vbex); - *(ckt->CKTstate0 + here->VBICitzf) = - *(ckt->CKTstate1 + here->VBICitzf); - *(ckt->CKTstate0 + here->VBICitzf_Vbei) = - *(ckt->CKTstate1 + here->VBICitzf_Vbei); - *(ckt->CKTstate0 + here->VBICitzf_Vbci) = - *(ckt->CKTstate1 + here->VBICitzf_Vbci); + *(ckt->CKTstate0 + here->VBICibex_vbex) = + *(ckt->CKTstate1 + here->VBICibex_vbex); + if (!model->VBICdelayTimeFGiven) { + *(ckt->CKTstate0 + here->VBICitzf) = + *(ckt->CKTstate1 + here->VBICitzf); + *(ckt->CKTstate0 + here->VBICitzf_vbei) = + *(ckt->CKTstate1 + here->VBICitzf_vbei); + *(ckt->CKTstate0 + here->VBICitzf_vbci) = + *(ckt->CKTstate1 + here->VBICitzf_vbci); + } else { + *(ckt->CKTstate0+here->VBICixzf_vbei)=*(ckt->CKTstate1+here->VBICixzf_vbei); + *(ckt->CKTstate0+here->VBICixzf_vbci)=*(ckt->CKTstate1+here->VBICixzf_vbci); + *(ckt->CKTstate0+here->VBICixzf_vrth)=*(ckt->CKTstate1+here->VBICixzf_vrth); + } *(ckt->CKTstate0 + here->VBICitzr) = *(ckt->CKTstate1 + here->VBICitzr); - *(ckt->CKTstate0 + here->VBICitzr_Vbei) = - *(ckt->CKTstate1 + here->VBICitzf_Vbei); - *(ckt->CKTstate0 + here->VBICitzr_Vbci) = - *(ckt->CKTstate1 + here->VBICitzr_Vbci); + *(ckt->CKTstate0 + here->VBICitzr_vbei) = + *(ckt->CKTstate1 + here->VBICitzf_vbei); + *(ckt->CKTstate0 + here->VBICitzr_vbci) = + *(ckt->CKTstate1 + here->VBICitzr_vbci); *(ckt->CKTstate0 + here->VBICibc) = *(ckt->CKTstate1 + here->VBICibc); - *(ckt->CKTstate0 + here->VBICibc_Vbci) = - *(ckt->CKTstate1 + here->VBICibc_Vbci); - *(ckt->CKTstate0 + here->VBICibc_Vbei) = - *(ckt->CKTstate1 + here->VBICibc_Vbei); + *(ckt->CKTstate0 + here->VBICibc_vbci) = + *(ckt->CKTstate1 + here->VBICibc_vbci); + *(ckt->CKTstate0 + here->VBICibc_vbei) = + *(ckt->CKTstate1 + here->VBICibc_vbei); *(ckt->CKTstate0 + here->VBICibep) = *(ckt->CKTstate1 + here->VBICibep); - *(ckt->CKTstate0 + here->VBICibep_Vbep) = - *(ckt->CKTstate1 + here->VBICibep_Vbep); + *(ckt->CKTstate0 + here->VBICibep_vbep) = + *(ckt->CKTstate1 + here->VBICibep_vbep); *(ckt->CKTstate0 + here->VBICirci) = *(ckt->CKTstate1 + here->VBICirci); - *(ckt->CKTstate0 + here->VBICirci_Vrci) = - *(ckt->CKTstate1 + here->VBICirci_Vrci); - *(ckt->CKTstate0 + here->VBICirci_Vbci) = - *(ckt->CKTstate1 + here->VBICirci_Vbci); - *(ckt->CKTstate0 + here->VBICirci_Vbcx) = - *(ckt->CKTstate1 + here->VBICirci_Vbcx); + *(ckt->CKTstate0 + here->VBICirci_vrci) = + *(ckt->CKTstate1 + here->VBICirci_vrci); + *(ckt->CKTstate0 + here->VBICirci_vbci) = + *(ckt->CKTstate1 + here->VBICirci_vbci); + *(ckt->CKTstate0 + here->VBICirci_vbcx) = + *(ckt->CKTstate1 + here->VBICirci_vbcx); *(ckt->CKTstate0 + here->VBICirbi) = *(ckt->CKTstate1 + here->VBICirbi); - *(ckt->CKTstate0 + here->VBICirbi_Vrbi) = - *(ckt->CKTstate1 + here->VBICirbi_Vrbi); - *(ckt->CKTstate0 + here->VBICirbi_Vbei) = - *(ckt->CKTstate1 + here->VBICirbi_Vbei); - *(ckt->CKTstate0 + here->VBICirbi_Vbci) = - *(ckt->CKTstate1 + here->VBICirbi_Vbci); + *(ckt->CKTstate0 + here->VBICirbi_vrbi) = + *(ckt->CKTstate1 + here->VBICirbi_vrbi); + *(ckt->CKTstate0 + here->VBICirbi_vbei) = + *(ckt->CKTstate1 + here->VBICirbi_vbei); + *(ckt->CKTstate0 + here->VBICirbi_vbci) = + *(ckt->CKTstate1 + here->VBICirbi_vbci); *(ckt->CKTstate0 + here->VBICirbp) = *(ckt->CKTstate1 + here->VBICirbp); - *(ckt->CKTstate0 + here->VBICirbp_Vrbp) = - *(ckt->CKTstate1 + here->VBICirbp_Vrbp); - *(ckt->CKTstate0 + here->VBICirbp_Vbep) = - *(ckt->CKTstate1 + here->VBICirbp_Vbep); - *(ckt->CKTstate0 + here->VBICirbp_Vbci) = - *(ckt->CKTstate1 + here->VBICirbp_Vbci); + *(ckt->CKTstate0 + here->VBICirbp_vrbp) = + *(ckt->CKTstate1 + here->VBICirbp_vrbp); + *(ckt->CKTstate0 + here->VBICirbp_vbep) = + *(ckt->CKTstate1 + here->VBICirbp_vbep); + *(ckt->CKTstate0 + here->VBICirbp_vbci) = + *(ckt->CKTstate1 + here->VBICirbp_vbci); *(ckt->CKTstate0 + here->VBICibcp) = *(ckt->CKTstate1 + here->VBICibcp); - *(ckt->CKTstate0 + here->VBICibcp_Vbcp) = - *(ckt->CKTstate1 + here->VBICibcp_Vbcp); + *(ckt->CKTstate0 + here->VBICibcp_vbcp) = + *(ckt->CKTstate1 + here->VBICibcp_vbcp); *(ckt->CKTstate0 + here->VBICiccp) = *(ckt->CKTstate1 + here->VBICiccp); - *(ckt->CKTstate0 + here->VBICiccp_Vbep) = - *(ckt->CKTstate1 + here->VBICiccp_Vbep); - *(ckt->CKTstate0 + here->VBICiccp_Vbci) = - *(ckt->CKTstate1 + here->VBICiccp_Vbci); - *(ckt->CKTstate0 + here->VBICiccp_Vbcp) = - *(ckt->CKTstate1 + here->VBICiccp_Vbcp); + *(ckt->CKTstate0 + here->VBICiccp_vbep) = + *(ckt->CKTstate1 + here->VBICiccp_vbep); + *(ckt->CKTstate0 + here->VBICiccp_vbci) = + *(ckt->CKTstate1 + here->VBICiccp_vbci); + *(ckt->CKTstate0 + here->VBICiccp_vbcp) = + *(ckt->CKTstate1 + here->VBICiccp_vbcp); *(ckt->CKTstate0 + here->VBICgqbeo) = *(ckt->CKTstate1 + here->VBICgqbeo); *(ckt->CKTstate0 + here->VBICgqbco) = *(ckt->CKTstate1 + here->VBICgqbco); - *(ckt->CKTstate0 + here->VBICircx_Vrcx) = - *(ckt->CKTstate1 + here->VBICircx_Vrcx); - *(ckt->CKTstate0 + here->VBICirbx_Vrbx) = - *(ckt->CKTstate1 + here->VBICirbx_Vrbx); - *(ckt->CKTstate0 + here->VBICirs_Vrs) = - *(ckt->CKTstate1 + here->VBICirs_Vrs); - *(ckt->CKTstate0 + here->VBICire_Vre) = - *(ckt->CKTstate1 + here->VBICire_Vre); + *(ckt->CKTstate0 + here->VBICircx_vrcx) = + *(ckt->CKTstate1 + here->VBICircx_vrcx); + *(ckt->CKTstate0 + here->VBICirbx_vrbx) = + *(ckt->CKTstate1 + here->VBICirbx_vrbx); + *(ckt->CKTstate0 + here->VBICirs_vrs) = + *(ckt->CKTstate1 + here->VBICirs_vrs); + *(ckt->CKTstate0 + here->VBICire_vre) = + *(ckt->CKTstate1 + here->VBICire_vre); if (here->VBIC_selfheat) *(ckt->CKTstate0 + here->VBICqcth) = *(ckt->CKTstate1 + here->VBICqcth); + *(ckt->CKTstate0+here->VBICvxf)=*(ckt->CKTstate1+here->VBICvxf); + *(ckt->CKTstate0+here->VBICqxf)=*(ckt->CKTstate1+here->VBICqxf); + *(ckt->CKTstate0+here->VBICcqxf)=*(ckt->CKTstate1+here->VBICcqxf); + *(ckt->CKTstate0+here->VBICgqxf)=*(ckt->CKTstate1+here->VBICgqxf); + *(ckt->CKTstate0+here->VBICixf_vbei)=*(ckt->CKTstate1+here->VBICixf_vbei); + *(ckt->CKTstate0+here->VBICixf_vbci)=*(ckt->CKTstate1+here->VBICixf_vbci); + *(ckt->CKTstate0+here->VBICixf_vxf)=*(ckt->CKTstate1+here->VBICixf_vxf); + *(ckt->CKTstate0+here->VBICixf_vrth)=*(ckt->CKTstate1+here->VBICixf_vrth); + *(ckt->CKTstate0+here->VBICvxf1)=*(ckt->CKTstate1+here->VBICvxf1); + *(ckt->CKTstate0+here->VBICqxf1)=*(ckt->CKTstate1+here->VBICqxf1); + *(ckt->CKTstate0+here->VBICcqxf1)=*(ckt->CKTstate1+here->VBICcqxf1); + *(ckt->CKTstate0+here->VBICgqxf1)=*(ckt->CKTstate1+here->VBICgqxf1); + *(ckt->CKTstate0+here->VBICvxf2)=*(ckt->CKTstate1+here->VBICvxf2); + *(ckt->CKTstate0+here->VBICqxf2)=*(ckt->CKTstate1+here->VBICqxf2); + *(ckt->CKTstate0+here->VBICcqxf2)=*(ckt->CKTstate1+here->VBICcqxf2); + *(ckt->CKTstate0+here->VBICgqxf2)=*(ckt->CKTstate1+here->VBICgqxf2); + *(ckt->CKTstate0 + here->VBICindFlux) = + *(ckt->CKTstate1 + here->VBICindFlux); } else { #endif /* PREDICTOR */ /* @@ -423,6 +508,9 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) *(ckt->CKTrhsOld+here->VBICbaseBPNode)); if (here->VBIC_selfheat) Vrth = *(ckt->CKTrhsOld + here->VBICtempNode); + // not needed because convergence in NQS network is not checked here + Vxf1 = *(ckt->CKTrhsOld + here->VBICxf1Node); + Vxf2 = *(ckt->CKTrhsOld + here->VBICxf2Node); #ifndef PREDICTOR } #endif /* PREDICTOR */ @@ -435,6 +523,7 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) delvrbi = Vrbi - *(ckt->CKTstate0 + here->VBICvrbi); delvrbp = Vrbp - *(ckt->CKTstate0 + here->VBICvrbp); delvbcp = Vbcp - *(ckt->CKTstate0 + here->VBICvbcp); + delvxf2 = Vxf2 - *(ckt->CKTstate0 + here->VBICvxf2); Vbe = model->VBICtype*( *(ckt->CKTrhsOld+here->VBICbaseNode)- @@ -456,29 +545,38 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) *(ckt->CKTrhsOld+here->VBICsubsSINode)); if (here->VBIC_selfheat) Vrth = *(ckt->CKTrhsOld + here->VBICtempNode); + Vxf1 = *(ckt->CKTrhsOld + here->VBICxf1Node); + Vxf2 = *(ckt->CKTrhsOld + here->VBICxf2Node); ibehat = *(ckt->CKTstate0 + here->VBICibe) + - *(ckt->CKTstate0 + here->VBICibe_Vbei)*delvbei; + *(ckt->CKTstate0 + here->VBICibe_vbei)*delvbei; ibexhat = *(ckt->CKTstate0 + here->VBICibex) + - *(ckt->CKTstate0 + here->VBICibex_Vbex)*delvbex; - itzfhat = *(ckt->CKTstate0 + here->VBICitzf) + - *(ckt->CKTstate0 + here->VBICitzf_Vbei)*delvbei + *(ckt->CKTstate0 + here->VBICitzf_Vbci)*delvbci; + *(ckt->CKTstate0 + here->VBICibex_vbex)*delvbex; + if (!model->VBICdelayTimeFGiven) { + itzfhat = *(ckt->CKTstate0 + here->VBICitzf) + + *(ckt->CKTstate0 + here->VBICitzf_vbei)*delvbei + + *(ckt->CKTstate0 + here->VBICitzf_vbci)*delvbci; + } else { + ixzfhat = *(ckt->CKTstate0 + here->VBICixzf) + + *(ckt->CKTstate0 + here->VBICixzf_vbei)*delvbei + + *(ckt->CKTstate0 + here->VBICixzf_vbci)*delvbci; + } itzrhat = *(ckt->CKTstate0 + here->VBICitzr) + - *(ckt->CKTstate0 + here->VBICitzr_Vbei)*delvbei + *(ckt->CKTstate0 + here->VBICitzr_Vbci)*delvbci; + *(ckt->CKTstate0 + here->VBICitzr_vbei)*delvbei + *(ckt->CKTstate0 + here->VBICitzr_vbci)*delvbci; ibchat = *(ckt->CKTstate0 + here->VBICibc) + - *(ckt->CKTstate0 + here->VBICibc_Vbei)*delvbei + *(ckt->CKTstate0 + here->VBICibc_Vbci)*delvbci; + *(ckt->CKTstate0 + here->VBICibc_vbei)*delvbei + *(ckt->CKTstate0 + here->VBICibc_vbci)*delvbci; ibephat = *(ckt->CKTstate0 + here->VBICibep) + - *(ckt->CKTstate0 + here->VBICibep_Vbep)*delvbep; - ircihat = *(ckt->CKTstate0 + here->VBICirci) + *(ckt->CKTstate0 + here->VBICirci_Vrci)*delvrci + - *(ckt->CKTstate0 + here->VBICirci_Vbcx)*delvbcx + *(ckt->CKTstate0 + here->VBICirci_Vbci)*delvbci; - irbihat = *(ckt->CKTstate0 + here->VBICirbi) + *(ckt->CKTstate0 + here->VBICirbi_Vrbi)*delvrbi + - *(ckt->CKTstate0 + here->VBICirbi_Vbei)*delvbei + *(ckt->CKTstate0 + here->VBICirbi_Vbci)*delvbci; - irbphat = *(ckt->CKTstate0 + here->VBICirbp) + *(ckt->CKTstate0 + here->VBICirbp_Vrbp)*delvrbp + - *(ckt->CKTstate0 + here->VBICirbp_Vbep)*delvbep + *(ckt->CKTstate0 + here->VBICirbp_Vbci)*delvbci; + *(ckt->CKTstate0 + here->VBICibep_vbep)*delvbep; + ircihat = *(ckt->CKTstate0 + here->VBICirci) + *(ckt->CKTstate0 + here->VBICirci_vrci)*delvrci + + *(ckt->CKTstate0 + here->VBICirci_vbcx)*delvbcx + *(ckt->CKTstate0 + here->VBICirci_vbci)*delvbci; + irbihat = *(ckt->CKTstate0 + here->VBICirbi) + *(ckt->CKTstate0 + here->VBICirbi_vrbi)*delvrbi + + *(ckt->CKTstate0 + here->VBICirbi_vbei)*delvbei + *(ckt->CKTstate0 + here->VBICirbi_vbci)*delvbci; + irbphat = *(ckt->CKTstate0 + here->VBICirbp) + *(ckt->CKTstate0 + here->VBICirbp_vrbp)*delvrbp + + *(ckt->CKTstate0 + here->VBICirbp_vbep)*delvbep + *(ckt->CKTstate0 + here->VBICirbp_vbci)*delvbci; ibcphat = *(ckt->CKTstate0 + here->VBICibcp) + - *(ckt->CKTstate0 + here->VBICibcp_Vbcp)*delvbcp; - iccphat = *(ckt->CKTstate0 + here->VBICiccp) + *(ckt->CKTstate0 + here->VBICiccp_Vbep)*delvbep + - *(ckt->CKTstate0 + here->VBICiccp_Vbci)*delvbci + *(ckt->CKTstate0 + here->VBICiccp_Vbcp)*delvbcp; + *(ckt->CKTstate0 + here->VBICibcp_vbcp)*delvbcp; + iccphat = *(ckt->CKTstate0 + here->VBICiccp) + *(ckt->CKTstate0 + here->VBICiccp_vbep)*delvbep + + *(ckt->CKTstate0 + here->VBICiccp_vbci)*delvbci + *(ckt->CKTstate0 + here->VBICiccp_vbcp)*delvbcp; /* * bypass if solution has not changed */ @@ -523,10 +621,18 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) ckt->CKTreltol* MAX(fabs(ibexhat), fabs(*(ckt->CKTstate0 + here->VBICibex)))+ ckt->CKTabstol) ) - if( (fabs(itzfhat-*(ckt->CKTstate0 + here->VBICitzf)) < - ckt->CKTreltol* MAX(fabs(itzfhat), - fabs(*(ckt->CKTstate0 + here->VBICitzf)))+ - ckt->CKTabstol) ) + + if (!model->VBICdelayTimeFGiven) + if( (fabs(itzfhat-*(ckt->CKTstate0 + here->VBICitzf)) < + ckt->CKTreltol* MAX(fabs(itzfhat), + fabs(*(ckt->CKTstate0 + here->VBICitzf)))+ + ckt->CKTabstol) ) + if (model->VBICdelayTimeFGiven) + if( (fabs(ixzfhat-*(ckt->CKTstate0 + here->VBICixzf)) < + ckt->CKTreltol* MAX(fabs(ixzfhat), + fabs(*(ckt->CKTstate0 + here->VBICixzf)))+ + ckt->CKTabstol) ) + if( (fabs(itzrhat-*(ckt->CKTstate0 + here->VBICitzr)) < ckt->CKTreltol* MAX(fabs(itzrhat), fabs(*(ckt->CKTstate0 + here->VBICitzr)))+ @@ -571,45 +677,62 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) Vrbi = *(ckt->CKTstate0 + here->VBICvrbi); Vrbp = *(ckt->CKTstate0 + here->VBICvrbp); Vbcp = *(ckt->CKTstate0 + here->VBICvbcp); + Vxf1 = *(ckt->CKTstate0 + here->VBICvxf1); + Vxf2 = *(ckt->CKTstate0 + here->VBICvxf2); Ibe = *(ckt->CKTstate0 + here->VBICibe); - Ibe_Vbei = *(ckt->CKTstate0 + here->VBICibe_Vbei); + Ibe_Vbei = *(ckt->CKTstate0 + here->VBICibe_vbei); Ibex = *(ckt->CKTstate0 + here->VBICibex); - Ibex_Vbex = *(ckt->CKTstate0 + here->VBICibex_Vbex); - Itzf = *(ckt->CKTstate0 + here->VBICitzf); - Itzf_Vbei = *(ckt->CKTstate0 + here->VBICitzf_Vbei); - Itzf_Vbci = *(ckt->CKTstate0 + here->VBICitzf_Vbci); + Ibex_Vbex = *(ckt->CKTstate0 + here->VBICibex_vbex); + if (!model->VBICdelayTimeFGiven) { + Itzf = *(ckt->CKTstate0 + here->VBICitzf); + Itzf_Vbei = *(ckt->CKTstate0 + here->VBICitzf_vbei); + Itzf_Vbci = *(ckt->CKTstate0 + here->VBICitzf_vbci); + Itzf_Vrth = *(ckt->CKTstate0 + here->VBICitzf_vrth); + } else { + Ixzf = *(ckt->CKTstate0 + here->VBICixzf); + Ixzf_Vbei = *(ckt->CKTstate0 + here->VBICixzf_vbei); + Ixzf_Vbci = *(ckt->CKTstate0 + here->VBICixzf_vbci); + Ixzf_Vrth = *(ckt->CKTstate0 + here->VBICixzf_vrth); + } Itzr = *(ckt->CKTstate0 + here->VBICitzr); - Itzr_Vbci = *(ckt->CKTstate0 + here->VBICitzr_Vbci); - Itzr_Vbei = *(ckt->CKTstate0 + here->VBICitzr_Vbei); + Itzr_Vbci = *(ckt->CKTstate0 + here->VBICitzr_vbci); + Itzr_Vbei = *(ckt->CKTstate0 + here->VBICitzr_vbei); Ibc = *(ckt->CKTstate0 + here->VBICibc); - Ibc_Vbci = *(ckt->CKTstate0 + here->VBICibc_Vbci); - Ibc_Vbei = *(ckt->CKTstate0 + here->VBICibc_Vbei); + Ibc_Vbci = *(ckt->CKTstate0 + here->VBICibc_vbci); + Ibc_Vbei = *(ckt->CKTstate0 + here->VBICibc_vbei); + Ibc_Vrxf = *(ckt->CKTstate0 + here->VBICibc_vrxf); Ibep = *(ckt->CKTstate0 + here->VBICibep); - Ibep_Vbep = *(ckt->CKTstate0 + here->VBICibep_Vbep); + Ibep_Vbep = *(ckt->CKTstate0 + here->VBICibep_vbep); Irci = *(ckt->CKTstate0 + here->VBICirci); - Irci_Vrci = *(ckt->CKTstate0 + here->VBICirci_Vrci); - Irci_Vbci = *(ckt->CKTstate0 + here->VBICirci_Vbci); - Irci_Vbcx = *(ckt->CKTstate0 + here->VBICirci_Vbcx); + Irci_Vrci = *(ckt->CKTstate0 + here->VBICirci_vrci); + Irci_Vbci = *(ckt->CKTstate0 + here->VBICirci_vbci); + Irci_Vbcx = *(ckt->CKTstate0 + here->VBICirci_vbcx); Irbi = *(ckt->CKTstate0 + here->VBICirbi); - Irbi_Vrbi = *(ckt->CKTstate0 + here->VBICirbi_Vrbi); - Irbi_Vbei = *(ckt->CKTstate0 + here->VBICirbi_Vbei); - Irbi_Vbci = *(ckt->CKTstate0 + here->VBICirbi_Vbci); + Irbi_Vrbi = *(ckt->CKTstate0 + here->VBICirbi_vrbi); + Irbi_Vbei = *(ckt->CKTstate0 + here->VBICirbi_vbei); + Irbi_Vbci = *(ckt->CKTstate0 + here->VBICirbi_vbci); Irbp = *(ckt->CKTstate0 + here->VBICirbp); - Irbp_Vrbp = *(ckt->CKTstate0 + here->VBICirbp_Vrbp); - Irbp_Vbep = *(ckt->CKTstate0 + here->VBICirbp_Vbep); - Irbp_Vbci = *(ckt->CKTstate0 + here->VBICirbp_Vbci); + Irbp_Vrbp = *(ckt->CKTstate0 + here->VBICirbp_vrbp); + Irbp_Vbep = *(ckt->CKTstate0 + here->VBICirbp_vbep); + Irbp_Vbci = *(ckt->CKTstate0 + here->VBICirbp_vbci); Ibcp = *(ckt->CKTstate0 + here->VBICibcp); - Ibcp_Vbcp = *(ckt->CKTstate0 + here->VBICibcp_Vbcp); + Ibcp_Vbcp = *(ckt->CKTstate0 + here->VBICibcp_vbcp); Iccp = *(ckt->CKTstate0 + here->VBICiccp); - Iccp_Vbep = *(ckt->CKTstate0 + here->VBICiccp_Vbep); - Iccp_Vbci = *(ckt->CKTstate0 + here->VBICiccp_Vbci); - Iccp_Vbcp = *(ckt->CKTstate0 + here->VBICiccp_Vbcp); + Iccp_Vbep = *(ckt->CKTstate0 + here->VBICiccp_vbep); + Iccp_Vbci = *(ckt->CKTstate0 + here->VBICiccp_vbci); + Iccp_Vbcp = *(ckt->CKTstate0 + here->VBICiccp_vbcp); gqbeo = *(ckt->CKTstate0 + here->VBICgqbeo); gqbco = *(ckt->CKTstate0 + here->VBICgqbco); - Ircx_Vrcx = *(ckt->CKTstate0 + here->VBICircx_Vrcx); - Irbx_Vrbx = *(ckt->CKTstate0 + here->VBICirbx_Vrbx); - Irs_Vrs = *(ckt->CKTstate0 + here->VBICirs_Vrs); - Ire_Vre = *(ckt->CKTstate0 + here->VBICire_Vre); + Ircx_Vrcx = *(ckt->CKTstate0 + here->VBICircx_vrcx); + Irbx_Vrbx = *(ckt->CKTstate0 + here->VBICirbx_vrbx); + Irs_Vrs = *(ckt->CKTstate0 + here->VBICirs_vrs); + Ire_Vre = *(ckt->CKTstate0 + here->VBICire_vre); + Itxf = *(ckt->CKTstate0 + here->VBICitxf) ; + Itxf_Vrxf = *(ckt->CKTstate0 + here->VBICitxf_vrxf) ; + Ixxf = *(ckt->CKTstate0 + here->VBICixxf) ; + Ixxf_Vrxf = *(ckt->CKTstate0 + here->VBICixxf_vrxf) ; + Ith_Vrxf = *(ckt->CKTstate0 + here->VBICith_vrxf) ; + goto load; } /* @@ -640,7 +763,20 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) */ Vcei = Vbei - Vbci; Vcep = Vbep - Vbcp; - if (here->VBIC_selfheat) { + if ((!here->VBIC_selfheat) && (!model->VBICdelayTimeFGiven)) { + iret = vbic_4T_it_cf_fj(p + ,&Vbei, &Vbex, &Vbci, &Vbep, &Vbcp, &Vrcx + ,&Vbcx, &Vrci, &Vrbx, &Vrbi, &Vre, &Vrbp, &Vrs + ,&Vbe, &Vbc, &Ibe, &Ibe_Vbei, &Ibex, &Ibex_Vbex, &Itzf + ,&Itzf_Vbei, &Itzf_Vbci, &Itzr, &Itzr_Vbci, &Itzr_Vbei, &Ibc, &Ibc_Vbci + ,&Ibc_Vbei, &Ibep, &Ibep_Vbep, &Ircx, &Ircx_Vrcx, &Irci, &Irci_Vrci + ,&Irci_Vbci, &Irci_Vbcx, &Irbx, &Irbx_Vrbx, &Irbi, &Irbi_Vrbi, &Irbi_Vbei + ,&Irbi_Vbci, &Ire, &Ire_Vre, &Irbp, &Irbp_Vrbp, &Irbp_Vbep, &Irbp_Vbci + ,&Qbe, &Qbe_Vbei, &Qbe_Vbci, &Qbex, &Qbex_Vbex, &Qbc, &Qbc_Vbci + ,&Qbcx, &Qbcx_Vbcx, &Qbep, &Qbep_Vbep, &Qbep_Vbci, &Qbeo, &Qbeo_Vbe + ,&Qbco, &Qbco_Vbc, &Ibcp, &Ibcp_Vbcp, &Iccp, &Iccp_Vbep, &Iccp_Vbci + ,&Iccp_Vbcp, &Irs, &Irs_Vrs, &Qbcp, &Qbcp_Vbcp, &SCALE); + } else if ((here->VBIC_selfheat) && (!model->VBICdelayTimeFGiven)) { iret = vbic_4T_et_cf_fj(p ,&Vrth, &Vbei, &Vbex, &Vbci, &Vbep, &Vbcp ,&Vrcx, &Vbcx, &Vrci, &Vrbx, &Vrbi, &Vre, &Vrbp @@ -661,18 +797,26 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) ,&Ith_Vrci, &Ith_Vbcx, &Ith_Vrbx, &Ith_Vrbi, &Ith_Vre, &Ith_Vrbp, &Qcth ,&Qcth_Vrth, &SCALE); } else { - iret = vbic_4T_it_cf_fj(p - ,&Vbei, &Vbex, &Vbci, &Vbep, &Vbcp, &Vrcx - ,&Vbcx, &Vrci, &Vrbx, &Vrbi, &Vre, &Vrbp, &Vrs - ,&Vbe, &Vbc, &Ibe, &Ibe_Vbei, &Ibex, &Ibex_Vbex, &Itzf - ,&Itzf_Vbei, &Itzf_Vbci, &Itzr, &Itzr_Vbci, &Itzr_Vbei, &Ibc, &Ibc_Vbci - ,&Ibc_Vbei, &Ibep, &Ibep_Vbep, &Ircx, &Ircx_Vrcx, &Irci, &Irci_Vrci - ,&Irci_Vbci, &Irci_Vbcx, &Irbx, &Irbx_Vrbx, &Irbi, &Irbi_Vrbi, &Irbi_Vbei - ,&Irbi_Vbci, &Ire, &Ire_Vre, &Irbp, &Irbp_Vrbp, &Irbp_Vbep, &Irbp_Vbci - ,&Qbe, &Qbe_Vbei, &Qbe_Vbci, &Qbex, &Qbex_Vbex, &Qbc, &Qbc_Vbci - ,&Qbcx, &Qbcx_Vbcx, &Qbep, &Qbep_Vbep, &Qbep_Vbci, &Qbeo, &Qbeo_Vbe - ,&Qbco, &Qbco_Vbc, &Ibcp, &Ibcp_Vbcp, &Iccp, &Iccp_Vbep, &Iccp_Vbci - ,&Iccp_Vbcp, &Irs, &Irs_Vrs, &Qbcp, &Qbcp_Vbcp, &SCALE); + iret = vbic_4T_et_xf_fj(p + ,&Vrth,&Vbei,&Vbex,&Vbci,&Vbep,&Vbcp + ,&Vrxf,&Vrcx,&Vbcx,&Vrci,&Vrbx,&Vrbi,&Vre + ,&Vrbp,&Vrs,&Vbe,&Vbc,&Vcei,&Vcep,&Vcxf + ,&Ibe,&Ibe_Vrth,&Ibe_Vbei,&Ibex,&Ibex_Vrth,&Ibex_Vbex,&Itxf + ,&Itxf_Vrxf,&Itzr,&Itzr_Vrth,&Itzr_Vbci,&Itzr_Vbei,&Ibc,&Ibc_Vrth + ,&Ibc_Vbci,&Ibc_Vrxf,&Ibc_Vbei,&Ibep,&Ibep_Vrth,&Ibep_Vbep,&Ircx + ,&Ircx_Vrcx,&Ircx_Vrth,&Irci,&Irci_Vrci,&Irci_Vrth,&Irci_Vbci,&Irci_Vbcx + ,&Irbx,&Irbx_Vrbx,&Irbx_Vrth,&Irbi,&Irbi_Vrbi,&Irbi_Vrth,&Irbi_Vbei + ,&Irbi_Vbci,&Ire,&Ire_Vre,&Ire_Vrth,&Irbp,&Irbp_Vrbp,&Irbp_Vrth + ,&Irbp_Vbep,&Irbp_Vbci,&Qbe,&Qbe_Vrth,&Qbe_Vbei,&Qbe_Vbci,&Qbex + ,&Qbex_Vrth,&Qbex_Vbex,&Qbc,&Qbc_Vrth,&Qbc_Vbci,&Qbcx,&Qbcx_Vrth + ,&Qbcx_Vbcx,&Qbep,&Qbep_Vrth,&Qbep_Vbep,&Qbep_Vbci,&Qbeo,&Qbeo_Vbe + ,&Qbco,&Qbco_Vbc,&Ibcp,&Ibcp_Vrth,&Ibcp_Vbcp,&Iccp,&Iccp_Vrth + ,&Iccp_Vbep,&Iccp_Vbci,&Iccp_Vbcp,&Irs,&Irs_Vrs,&Irs_Vrth,&Qbcp + ,&Qbcp_Vrth,&Qbcp_Vbcp,&Irth,&Irth_Vrth,&Ith,&Ith_Vrth,&Ith_Vbei + ,&Ith_Vbci,&Ith_Vrxf,&Ith_Vcei,&Ith_Vbex,&Ith_Vbep,&Ith_Vrs,&Ith_Vbcp + ,&Ith_Vcep,&Ith_Vrcx,&Ith_Vrci,&Ith_Vbcx,&Ith_Vrbx,&Ith_Vrbi,&Ith_Vre + ,&Ith_Vrbp,&Qcth,&Qcth_Vrth,&Ixzf,&Ixzf_Vrth,&Ixzf_Vbei,&Ixzf_Vbci + ,&Ixxf,&Ixxf_Vrxf,&Qcxf,&Qcxf_Vcxf,&Flxf,&Flxf_Vrxf,&SCALE); } Ibe += ckt->CKTgmin*Vbei; Ibe_Vbei += ckt->CKTgmin; @@ -770,6 +914,8 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) if (here->VBIC_selfheat) *(ckt->CKTstate1 + here->VBICqcth) = *(ckt->CKTstate0 + here->VBICqcth) ; + *(ckt->CKTstate1 + here->VBICindFlux) = + *(ckt->CKTstate0 + here->VBICindFlux); } error = NIintegrate(ckt,&geq,&ceq,Qbe_Vbei,here->VBICqbe); if(error) return(error); @@ -808,6 +954,15 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) Icth_Vrth = geq; Icth = *(ckt->CKTstate0 + here->VBICcqcth); } + if (model->VBICdelayTimeFGiven) { + error = NIintegrate(ckt,&geq,&ceq,Qcxf_Vcxf,here->VBICqcxf); + if(error) return(error); + Icxf_Vcxf = geq; + Icxf = *(ckt->CKTstate0 + here->VBICcqcxf); + + error = NIintegrate(ckt,&req,&veq,Flxf,here->VBICindFlux); + if(error) return(error); + } if(ckt->CKTmode & MODEINITTRAN) { *(ckt->CKTstate1 + here->VBICcqbe) = @@ -825,6 +980,8 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) if (here->VBIC_selfheat) *(ckt->CKTstate1 + here->VBICcqcth) = *(ckt->CKTstate0 + here->VBICcqcth); + *(ckt->CKTstate1+here->VBICindVolt) = + *(ckt->CKTstate0+here->VBICindVolt); } } } @@ -867,48 +1024,56 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt) *(ckt->CKTstate0 + here->VBICvbcp) = Vbcp; *(ckt->CKTstate0 + here->VBICibe) = Ibe; - *(ckt->CKTstate0 + here->VBICibe_Vbei) = Ibe_Vbei; + *(ckt->CKTstate0 + here->VBICibe_vbei) = Ibe_Vbei; *(ckt->CKTstate0 + here->VBICibex) = Ibex; - *(ckt->CKTstate0 + here->VBICibex_Vbex) = Ibex_Vbex; - *(ckt->CKTstate0 + here->VBICitzf) = Itzf; - *(ckt->CKTstate0 + here->VBICitzf_Vbei) = Itzf_Vbei; - *(ckt->CKTstate0 + here->VBICitzf_Vbci) = Itzf_Vbci; + *(ckt->CKTstate0 + here->VBICibex_vbex) = Ibex_Vbex; + if (!model->VBICdelayTimeFGiven) { + *(ckt->CKTstate0 + here->VBICitzf) = Itzf; + *(ckt->CKTstate0 + here->VBICitzf_vbei) = Itzf_Vbei; + *(ckt->CKTstate0 + here->VBICitzf_vbci) = Itzf_Vbci; + *(ckt->CKTstate0 + here->VBICitzf_vrth) = Itzf_Vrth; + } else { + *(ckt->CKTstate0 + here->VBICixzf) = Ixzf; + *(ckt->CKTstate0 + here->VBICixzf_vbei) = Ixzf_Vbei; + *(ckt->CKTstate0 + here->VBICixzf_vbci) = Ixzf_Vbci; + *(ckt->CKTstate0 + here->VBICixzf_vrth) = Ixzf_Vrth; + } *(ckt->CKTstate0 + here->VBICitzr) = Itzr; - *(ckt->CKTstate0 + here->VBICitzr_Vbci) = Itzr_Vbci; - *(ckt->CKTstate0 + here->VBICitzr_Vbei) = Itzr_Vbei; + *(ckt->CKTstate0 + here->VBICitzr_vbci) = Itzr_Vbci; + *(ckt->CKTstate0 + here->VBICitzr_vbei) = Itzr_Vbei; *(ckt->CKTstate0 + here->VBICibc) = Ibc; - *(ckt->CKTstate0 + here->VBICibc_Vbci) = Ibc_Vbci; - *(ckt->CKTstate0 + here->VBICibc_Vbei) = Ibc_Vbei; + *(ckt->CKTstate0 + here->VBICibc_vbci) = Ibc_Vbci; + *(ckt->CKTstate0 + here->VBICibc_vbei) = Ibc_Vbei; *(ckt->CKTstate0 + here->VBICibep) = Ibep; - *(ckt->CKTstate0 + here->VBICibep_Vbep) = Ibep_Vbep; + *(ckt->CKTstate0 + here->VBICibep_vbep) = Ibep_Vbep; *(ckt->CKTstate0 + here->VBICirci) = Irci; - *(ckt->CKTstate0 + here->VBICirci_Vrci) = Irci_Vrci; - *(ckt->CKTstate0 + here->VBICirci_Vbci) = Irci_Vbci; - *(ckt->CKTstate0 + here->VBICirci_Vbcx) = Irci_Vbcx; + *(ckt->CKTstate0 + here->VBICirci_vrci) = Irci_Vrci; + *(ckt->CKTstate0 + here->VBICirci_vbci) = Irci_Vbci; + *(ckt->CKTstate0 + here->VBICirci_vbcx) = Irci_Vbcx; *(ckt->CKTstate0 + here->VBICirbi) = Irbi; - *(ckt->CKTstate0 + here->VBICirbi_Vrbi) = Irbi_Vrbi; - *(ckt->CKTstate0 + here->VBICirbi_Vbei) = Irbi_Vbei; - *(ckt->CKTstate0 + here->VBICirbi_Vbci) = Irbi_Vbci; + *(ckt->CKTstate0 + here->VBICirbi_vrbi) = Irbi_Vrbi; + *(ckt->CKTstate0 + here->VBICirbi_vbei) = Irbi_Vbei; + *(ckt->CKTstate0 + here->VBICirbi_vbci) = Irbi_Vbci; *(ckt->CKTstate0 + here->VBICirbp) = Irbp; - *(ckt->CKTstate0 + here->VBICirbp_Vrbp) = Irbp_Vrbp; - *(ckt->CKTstate0 + here->VBICirbp_Vbep) = Irbp_Vbep; - *(ckt->CKTstate0 + here->VBICirbp_Vbci) = Irbp_Vbci; + *(ckt->CKTstate0 + here->VBICirbp_vrbp) = Irbp_Vrbp; + *(ckt->CKTstate0 + here->VBICirbp_vbep) = Irbp_Vbep; + *(ckt->CKTstate0 + here->VBICirbp_vbci) = Irbp_Vbci; *(ckt->CKTstate0 + here->VBICibcp) = Ibcp; - *(ckt->CKTstate0 + here->VBICibcp_Vbcp) = Ibcp_Vbcp; + *(ckt->CKTstate0 + here->VBICibcp_vbcp) = Ibcp_Vbcp; *(ckt->CKTstate0 + here->VBICiccp) = Iccp; - *(ckt->CKTstate0 + here->VBICiccp_Vbep) = Iccp_Vbep; - *(ckt->CKTstate0 + here->VBICiccp_Vbci) = Iccp_Vbci; - *(ckt->CKTstate0 + here->VBICiccp_Vbcp) = Iccp_Vbcp; + *(ckt->CKTstate0 + here->VBICiccp_vbep) = Iccp_Vbep; + *(ckt->CKTstate0 + here->VBICiccp_vbci) = Iccp_Vbci; + *(ckt->CKTstate0 + here->VBICiccp_vbcp) = Iccp_Vbcp; *(ckt->CKTstate0 + here->VBICgqbeo) = gqbeo; *(ckt->CKTstate0 + here->VBICgqbco) = gqbco; - *(ckt->CKTstate0 + here->VBICircx_Vrcx) = Ircx_Vrcx; - *(ckt->CKTstate0 + here->VBICirbx_Vrbx) = Irbx_Vrbx; - *(ckt->CKTstate0 + here->VBICirs_Vrs) = Irs_Vrs; - *(ckt->CKTstate0 + here->VBICire_Vre) = Ire_Vre; + *(ckt->CKTstate0 + here->VBICircx_vrcx) = Ircx_Vrcx; + *(ckt->CKTstate0 + here->VBICirbx_vrbx) = Irbx_Vrbx; + *(ckt->CKTstate0 + here->VBICirs_vrs) = Irs_Vrs; + *(ckt->CKTstate0 + here->VBICire_vre) = Ire_Vre; if (here->VBIC_selfheat) { *(ckt->CKTstate0 + here->VBICcqcth) = Icth; - *(ckt->CKTstate0 + here->VBICicth_Vrth) = Icth_Vrth; + *(ckt->CKTstate0 + here->VBICicth_vrth) = Icth_Vrth; here->VBICibe_Vrth = Ibe_Vrth; here->VBICibex_Vrth = Ibex_Vrth; @@ -983,6 +1148,7 @@ c Stamp element: Ibe *(ckt->CKTrhs + here->VBICemitEINode) += rhs_current; *(here->VBICemitEIBaseBIPtr) += -Ibe_Vbei; *(here->VBICemitEIEmitEIPtr) += Ibe_Vbei; + /* c Stamp element: Ibex */ @@ -997,17 +1163,36 @@ c Stamp element: Ibex /* c Stamp element: Itzf */ - rhs_current = model->VBICtype * (Itzf - Itzf_Vbei*Vbei - Itzf_Vbci*Vbci); - *(ckt->CKTrhs + here->VBICcollCINode) += -rhs_current; - *(here->VBICcollCIBaseBIPtr) += Itzf_Vbei; - *(here->VBICcollCIEmitEIPtr) += -Itzf_Vbei; - *(here->VBICcollCIBaseBIPtr) += Itzf_Vbci; - *(here->VBICcollCICollCIPtr) += -Itzf_Vbci; - *(ckt->CKTrhs + here->VBICemitEINode) += rhs_current; - *(here->VBICemitEIBaseBIPtr) += -Itzf_Vbei; - *(here->VBICemitEIEmitEIPtr) += Itzf_Vbei; - *(here->VBICemitEIBaseBIPtr) += -Itzf_Vbci; - *(here->VBICemitEICollCIPtr) += Itzf_Vbci; + if (!model->VBICdelayTimeFGiven) { + rhs_current = model->VBICtype * (Itzf - Itzf_Vbei*Vbei - Itzf_Vbci*Vbci); + *(ckt->CKTrhs + here->VBICcollCINode) += -rhs_current; + *(here->VBICcollCIBaseBIPtr) += Itzf_Vbei; + *(here->VBICcollCIEmitEIPtr) += -Itzf_Vbei; + *(here->VBICcollCIBaseBIPtr) += Itzf_Vbci; + *(here->VBICcollCICollCIPtr) += -Itzf_Vbci; + *(ckt->CKTrhs + here->VBICemitEINode) += rhs_current; + *(here->VBICemitEIBaseBIPtr) += -Itzf_Vbei; + *(here->VBICemitEIEmitEIPtr) += Itzf_Vbei; + *(here->VBICemitEIBaseBIPtr) += -Itzf_Vbci; + *(here->VBICemitEICollCIPtr) += Itzf_Vbci; + } else { + *(ckt->CKTrhs + here->VBICcollCINode) += -rhs_current; + *(here->VBICcollCIBaseBIPtr) += Ixzf_Vbei; + *(here->VBICcollCIEmitEIPtr) += -Ixzf_Vbei; + *(here->VBICcollCIBaseBIPtr) += Ixzf_Vbci; + *(here->VBICcollCICollCIPtr) += -Ixzf_Vbci; + *(ckt->CKTrhs + here->VBICemitEINode) += rhs_current; + *(here->VBICemitEIBaseBIPtr) += -Ixzf_Vbei; + *(here->VBICemitEIEmitEIPtr) += Ixzf_Vbei; + *(here->VBICemitEIBaseBIPtr) += -Ixzf_Vbci; + *(here->VBICemitEICollCIPtr) += Ixzf_Vbci; + // with respect to Vxf2 + rhs_current = model->VBICtype * (Itxf - Itxf_Vrxf*Vrxf); + *(ckt->CKTrhs + here->VBICcollCINode) += -rhs_current; + *(ckt->CKTrhs + here->VBICemitEINode) += rhs_current; + *(here->VBICcollCIXf2Ptr) += Itxf_Vrxf; + *(here->VBICemitEIXf2Ptr) += -Itxf_Vrxf; + } /* c Stamp element: Itzr */ @@ -1036,6 +1221,13 @@ c Stamp element: Ibc *(here->VBICcollCICollCIPtr) += Ibc_Vbci; *(here->VBICcollCIBaseBIPtr) += -Ibc_Vbei; *(here->VBICcollCIEmitEIPtr) += Ibc_Vbei; + if (model->VBICdelayTimeFGiven) { + rhs_current = model->VBICtype * (Ibc - Ibc_Vrxf*Vrxf); + *(ckt->CKTrhs + here->VBICbaseBINode) += -rhs_current; + *(ckt->CKTrhs + here->VBICcollCINode) += rhs_current; + *(here->VBICbaseBIXf2Ptr) += Ibc_Vrxf; + *(here->VBICcollCIXf2Ptr) += -Ibc_Vrxf; + } /* c Stamp element: Ibep */ @@ -1178,11 +1370,19 @@ c Stamp element: Ibex /* c Stamp element: Itzf */ - rhs_current = -Itzf_Vrth*Vrth; - *(ckt->CKTrhs + here->VBICcollCINode) += -rhs_current; - *(here->VBICcollCItempPtr) += Itzf_Vrth; - *(ckt->CKTrhs + here->VBICemitEINode) += rhs_current; - *(here->VBICemitEItempPtr) += -Itzf_Vrth; + if (!model->VBICdelayTimeFGiven) { + rhs_current = -Itzf_Vrth*Vrth; + *(ckt->CKTrhs + here->VBICcollCINode) += -rhs_current; + *(here->VBICcollCItempPtr) += Itzf_Vrth; + *(ckt->CKTrhs + here->VBICemitEINode) += rhs_current; + *(here->VBICemitEItempPtr) += -Itzf_Vrth; + } else { + rhs_current = -Ixzf_Vrth*Vrth; + *(ckt->CKTrhs + here->VBICcollCINode) += -rhs_current; + *(here->VBICcollCItempPtr) += Ixzf_Vrth; + *(ckt->CKTrhs + here->VBICemitEINode) += rhs_current; + *(here->VBICemitEItempPtr) += -Ixzf_Vrth; + } /* c Stamp element: Itzr */ @@ -1333,6 +1533,49 @@ c Stamp element: Ith *(here->VBICtempEmitEIPtr) += +Ith_Vre; *(here->VBICtempSubsPtr) += -Ith_Vrs; *(here->VBICtempSubsSIPtr) += +Ith_Vrs; + if (model->VBICdelayTimeFGiven) { + rhs_current = -Ith_Vrxf*Vrxf; + *(ckt->CKTrhs + here->VBICxf2Node) += -rhs_current; + *(here->VBICtempXf2Ptr) += +Ith_Vrxf; + } + } + + if (model->VBICdelayTimeFGiven) { + // Branch: xf1-ground, Stamp element: Ixzf f_xf1=+ + rhs_current = Ixzf - Ixzf_Vbci*Vbci - Ixzf_Vbei*Vbei; + *(ckt->CKTrhs + here->VBICxf1Node) += -rhs_current; // rhs_current; // into xf1 node + *(here->VBICxf1BaseBIPtr) += +Ixzf_Vbei; + *(here->VBICxf1EmitEIPtr) += -Ixzf_Vbei; + *(here->VBICxf1BaseBIPtr) += +Ixzf_Vbci; + *(here->VBICxf1CollCIPtr) += -Ixzf_Vbci; + + // Branch: xf2-ground, Stamp element: Ixxf f_xf2=+ + rhs_current = Ixxf - Ixxf_Vrxf*Vrxf; + *(ckt->CKTrhs + here->VBICxf2Node) += -rhs_current; // rhs_current; // into xf2 node + *(here->VBICxf2Xf2Ptr) += +Ixxf_Vrxf; + *(here->VBICxf2Xf1Ptr) += -Ixxf_Vrxf; +/* +c Stamp element: Qcxf +*/ + rhs_current = Icxf - Icxf_Vcxf*Vcxf; + *(ckt->CKTrhs + here->VBICxf1Node) += -rhs_current; + *(here->VBICxf1Xf1Ptr) += Icxf_Vcxf; +/* +c Stamp element: L = TD/3 +*/ +// rhs_current = Ixzf - Ixxf; +// *(ckt->CKTrhs + here->VBICxf1Node) += -rhs_current; +// *(here->VBICxf1Xf2Ptr) += -1.0; +// rhs_current = Ixxf + Ixzf; +// *(ckt->CKTrhs + here->VBICxf2Node) += -rhs_current; +// *(here->VBICxf2Xf1Ptr) += 1.0; + + *(ckt->CKTrhs+here->VBICbrEq) += veq; + *(here->VBICxf1IbrPtr) += 1; + *(here->VBICxf2IbrPtr) -= 1; + *(here->VBICibrXf1Ptr) += 1; + *(here->VBICibrXf2Ptr) -= 1; + *(here->VBICibrIbrPtr) -= req; } } @@ -1340,115 +1583,1292 @@ c Stamp element: Ith return(OK); } -int vbic_4T_et_cf_fj(double *p - ,double *Vrth, double *Vbei, double *Vbex, double *Vbci, double *Vbep, double *Vbcp - ,double *Vrcx, double *Vbcx, double *Vrci, double *Vrbx, double *Vrbi, double *Vre, double *Vrbp - ,double *Vrs, double *Vbe, double *Vbc, double *Vcei, double *Vcep, double *Ibe, double *Ibe_Vrth - ,double *Ibe_Vbei, double *Ibex, double *Ibex_Vrth, double *Ibex_Vbex, double *Itzf, double *Itzf_Vrth, double *Itzf_Vbei - ,double *Itzf_Vbci, double *Itzr, double *Itzr_Vrth, double *Itzr_Vbci, double *Itzr_Vbei, double *Ibc, double *Ibc_Vrth - ,double *Ibc_Vbci, double *Ibc_Vbei, double *Ibep, double *Ibep_Vrth, double *Ibep_Vbep, double *Ircx, double *Ircx_Vrcx - ,double *Ircx_Vrth, double *Irci, double *Irci_Vrci, double *Irci_Vrth, double *Irci_Vbci, double *Irci_Vbcx, double *Irbx - ,double *Irbx_Vrbx, double *Irbx_Vrth, double *Irbi, double *Irbi_Vrbi, double *Irbi_Vrth, double *Irbi_Vbei, double *Irbi_Vbci - ,double *Ire, double *Ire_Vre, double *Ire_Vrth, double *Irbp, double *Irbp_Vrbp, double *Irbp_Vrth, double *Irbp_Vbep - ,double *Irbp_Vbci, double *Qbe, double *Qbe_Vrth, double *Qbe_Vbei, double *Qbe_Vbci, double *Qbex, double *Qbex_Vrth - ,double *Qbex_Vbex, double *Qbc, double *Qbc_Vrth, double *Qbc_Vbci, double *Qbcx, double *Qbcx_Vrth, double *Qbcx_Vbcx - ,double *Qbep, double *Qbep_Vrth, double *Qbep_Vbep, double *Qbep_Vbci, double *Qbeo, double *Qbeo_Vbe, double *Qbco - ,double *Qbco_Vbc, double *Ibcp, double *Ibcp_Vrth, double *Ibcp_Vbcp, double *Iccp, double *Iccp_Vrth, double *Iccp_Vbep - ,double *Iccp_Vbci, double *Iccp_Vbcp, double *Irs, double *Irs_Vrs, double *Irs_Vrth, double *Qbcp, double *Qbcp_Vrth - ,double *Qbcp_Vbcp, double *Irth, double *Irth_Vrth, double *Ith, double *Ith_Vrth, double *Ith_Vbei, double *Ith_Vbci - ,double *Ith_Vcei, double *Ith_Vbex, double *Ith_Vbep, double *Ith_Vrs, double *Ith_Vbcp, double *Ith_Vcep, double *Ith_Vrcx - ,double *Ith_Vrci, double *Ith_Vbcx, double *Ith_Vrbx, double *Ith_Vrbi, double *Ith_Vre, double *Ith_Vrbp, double *Qcth - ,double *Qcth_Vrth, double *SCALE) +int vbic_4T_it_cf_fj(double *p + ,double *Vbei, double *Vbex, double *Vbci, double *Vbep, double *Vbcp, double *Vrcx + ,double *Vbcx, double *Vrci, double *Vrbx, double *Vrbi, double *Vre, double *Vrbp, double *Vrs + ,double *Vbe, double *Vbc, double *Ibe, double *Ibe_Vbei, double *Ibex, double *Ibex_Vbex, double *Itzf + ,double *Itzf_Vbei, double *Itzf_Vbci, double *Itzr, double *Itzr_Vbci, double *Itzr_Vbei, double *Ibc, double *Ibc_Vbci + ,double *Ibc_Vbei, double *Ibep, double *Ibep_Vbep, double *Ircx, double *Ircx_Vrcx, double *Irci, double *Irci_Vrci + ,double *Irci_Vbci, double *Irci_Vbcx, double *Irbx, double *Irbx_Vrbx, double *Irbi, double *Irbi_Vrbi, double *Irbi_Vbei + ,double *Irbi_Vbci, double *Ire, double *Ire_Vre, double *Irbp, double *Irbp_Vrbp, double *Irbp_Vbep, double *Irbp_Vbci + ,double *Qbe, double *Qbe_Vbei, double *Qbe_Vbci, double *Qbex, double *Qbex_Vbex, double *Qbc, double *Qbc_Vbci + ,double *Qbcx, double *Qbcx_Vbcx, double *Qbep, double *Qbep_Vbep, double *Qbep_Vbci, double *Qbeo, double *Qbeo_Vbe + ,double *Qbco, double *Qbco_Vbc, double *Ibcp, double *Ibcp_Vbcp, double *Iccp, double *Iccp_Vbep, double *Iccp_Vbci + ,double *Iccp_Vbcp, double *Irs, double *Irs_Vrs, double *Qbcp, double *Qbcp_Vbcp, double *SCALE) { -double Tini,Tdev,Tdev_Vrth,Vtv,Vtv_Tdev,Vtv_Vrth,rT; -double rT_Tdev,rT_Vrth,dT,dT_Tdev,dT_Vrth,xvar1,xvar1_rT; -double xvar1_Vrth,IKFatT,IKFatT_xvar1,IKFatT_Vrth,RCXatT,RCXatT_xvar1,RCXatT_Vrth; -double RCIatT,RCIatT_xvar1,RCIatT_Vrth,RBXatT,RBXatT_xvar1,RBXatT_Vrth,RBIatT; -double RBIatT_xvar1,RBIatT_Vrth,REatT,REatT_xvar1,REatT_Vrth,RSatT,RSatT_xvar1; -double RSatT_Vrth,RBPatT,RBPatT_xvar1,RBPatT_Vrth,xvar2,xvar2_rT,xvar2_Vrth; -double xvar3,xvar3_rT,xvar3_Vrth,xvar3_Vtv,xvar4,xvar4_xvar3,xvar4_Vrth; -double xvar1_xvar2,xvar1_xvar4,xvar5,xvar6,xvar6_xvar1,xvar6_Vrth,ISatT; -double ISatT_xvar6,ISatT_Vrth,ISRRatT,ISRRatT_xvar6,ISRRatT_Vrth,ISPatT,ISPatT_xvar6; -double ISPatT_Vrth,IBEIatT,IBEIatT_xvar6,IBEIatT_Vrth,IBENatT,IBENatT_xvar6,IBENatT_Vrth; -double IBCIatT,IBCIatT_xvar6,IBCIatT_Vrth,IBCNatT,IBCNatT_xvar6,IBCNatT_Vrth,IBEIPatT; -double IBEIPatT_xvar6,IBEIPatT_Vrth,IBENPatT,IBENPatT_xvar6,IBENPatT_Vrth,IBCIPatT,IBCIPatT_xvar6; -double IBCIPatT_Vrth,IBCNPatT,IBCNPatT_xvar6,IBCNPatT_Vrth,NFatT,NFatT_dT,NFatT_Vrth; -double NRatT,NRatT_dT,NRatT_Vrth,AVC2atT,AVC2atT_dT,AVC2atT_Vrth,VBBEatT; -double VBBEatT_dT,VBBEatT_Vrth,NBBEatT,NBBEatT_dT,NBBEatT_Vrth,xvar2_Vtv,xvar3_xvar2; -double xvar4_rT,xvar4_Vtv,xvar5_xvar4,xvar5_Vrth,xvar1_xvar3,xvar1_xvar5,psiio; -double psiio_Vtv,psiio_Vrth,psiio_rT,psiio_xvar6,psiin,psiin_psiio,psiin_Vrth; -double psiin_rT,psiin_Vtv,psiin_xvar1,xvar2_psiin,xvar4_xvar1,PEatT,PEatT_psiin; -double PEatT_Vrth,PEatT_Vtv,PEatT_xvar4,PCatT,PCatT_psiin,PCatT_Vrth,PCatT_Vtv; -double PCatT_xvar4,PSatT,PSatT_psiin,PSatT_Vrth,PSatT_Vtv,PSatT_xvar4,xvar1_PEatT; -double xvar2_xvar1,CJEatT,CJEatT_xvar2,CJEatT_Vrth,xvar1_PCatT,CJCatT,CJCatT_xvar2; -double CJCatT_Vrth,CJEPatT,CJEPatT_xvar2,CJEPatT_Vrth,xvar1_PSatT,CJCPatT,CJCPatT_xvar2; -double CJCPatT_Vrth,GAMMatT,GAMMatT_xvar1,GAMMatT_Vrth,GAMMatT_xvar3,VOatT,VOatT_xvar1; -double VOatT_Vrth,xvar1_VBBEatT,xvar1_NBBEatT,xvar1_Vtv,EBBEatT,EBBEatT_xvar1,EBBEatT_Vrth; -double IVEF,IVER,IIKF,IIKF_IKFatT,IIKF_Vrth,IIKR,IIKP; -double IVO,IVO_VOatT,IVO_Vrth,IHRCF,IVTF,IITF,slTF; -double dv0,dv0_PEatT,dv0_Vrth,dvh,dvh_Vbei,dvh_dv0,dvh_Vrth; -double pwq,qlo,qlo_PEatT,qlo_Vrth,qlo_Vbei,qhi,qhi_dvh; -double qhi_Vbei,qhi_Vrth,qhi_PEatT,xvar1_Vbei,xvar3_xvar1,xvar3_Vbei,qlo_xvar3; -double qdbe,qdbe_qlo,qdbe_Vrth,qdbe_Vbei,qdbe_qhi,mv0,mv0_dv0; -double mv0_Vrth,vl0,vl0_dv0,vl0_Vrth,vl0_mv0,xvar1_vl0,q0; -double q0_PEatT,q0_Vrth,q0_xvar3,dv,dv_Vbei,dv_dv0,dv_Vrth; -double mv,mv_dv,mv_Vbei,mv_Vrth,vl,vl_dv,vl_Vbei; -double vl_Vrth,vl_mv,vl_dv0,xvar1_vl,qdbe_vl,qdbe_vl0,qdbe_q0; -double dvh_Vbex,qlo_Vbex,qhi_Vbex,xvar1_Vbex,xvar3_Vbex,qdbex,qdbex_qlo; -double qdbex_Vrth,qdbex_Vbex,qdbex_qhi,dv_Vbex,mv_Vbex,vl_Vbex,qdbex_vl; -double qdbex_vl0,qdbex_q0,dv0_PCatT,dvh_Vbci,qlo_PCatT,qlo_Vbci,qhi_Vbci; -double qhi_PCatT,xvar1_Vbci,xvar3_Vbci,qdbc,qdbc_qlo,qdbc_Vrth,qdbc_Vbci; -double qdbc_qhi,vn0,vn0_dv0,vn0_Vrth,vnl0,vnl0_vn0,vnl0_Vrth; -double vl0_vnl0,qlo0,qlo0_PCatT,qlo0_Vrth,qlo0_xvar3,vn,vn_Vbci; -double vn_dv0,vn_Vrth,vnl,vnl_vn,vnl_Vbci,vnl_Vrth,vl_vnl; -double vl_Vbci,sel,sel_vnl,sel_Vbci,sel_Vrth,crt,crt_xvar1; -double crt_Vrth,xvar1_dv0,cmx,cmx_xvar1,cmx_Vrth,cl,cl_sel; -double cl_Vbci,cl_Vrth,cl_crt,cl_cmx,ql,ql_Vbci,ql_vl; -double ql_Vrth,ql_vl0,ql_cl,qdbc_ql,qdbc_qlo0,q0_PCatT,dv_Vbci; -double mv_Vbci,qdbc_vl,qdbc_vl0,qdbc_q0,dvh_Vbep,qlo_Vbep,qhi_Vbep; -double xvar1_Vbep,xvar3_Vbep,qdbep,qdbep_qlo,qdbep_Vrth,qdbep_Vbep,qdbep_qhi; -double vn_Vbep,vnl_Vbep,vl_Vbep,sel_Vbep,cl_Vbep,ql_Vbep,qdbep_ql; -double qdbep_qlo0,dv_Vbep,mv_Vbep,qdbep_vl,qdbep_vl0,qdbep_q0,dv0_PSatT; -double dvh_Vbcp,qlo_PSatT,qlo_Vbcp,qhi_Vbcp,qhi_PSatT,xvar1_Vbcp,xvar3_Vbcp; -double qdbcp,qdbcp_qlo,qdbcp_Vrth,qdbcp_Vbcp,qdbcp_qhi,q0_PSatT; -double dv_Vbcp,mv_Vbcp,vl_Vbcp,qdbcp_vl,qdbcp_vl0,qdbcp_q0,argi; -double argi_Vbei,argi_NFatT,argi_Vrth,argi_Vtv,expi,expi_argi,expi_Vbei; -double expi_Vrth,Ifi,Ifi_ISatT,Ifi_Vrth,Ifi_expi,Ifi_Vbei,argi_Vbci; -double argi_NRatT,expi_Vbci,Iri,Iri_ISatT,Iri_Vrth,Iri_ISRRatT,Iri_expi; -double Iri_Vbci,q1z,q1z_qdbe,q1z_Vrth,q1z_Vbei,q1z_qdbc,q1z_Vbci; -double q1,q1_q1z,q1_Vrth,q1_Vbei,q1_Vbci,q2,q2_Ifi; -double q2_Vrth,q2_Vbei,q2_IIKF,q2_Iri,q2_Vbci,xvar3_q1,xvar1_q2; -double xvar4_Vbei,xvar4_Vbci,qb,qb_q1,qb_Vrth,qb_Vbei,qb_Vbci; -double qb_xvar4,xvar2_Vbei,xvar2_Vbci,qb_xvar2,Itzr_Iri,Itzr_qb,Itzf_Ifi; -double Itzf_qb,argi_Vbep,expi_Vbep,argx,argx_Vbci,argx_Vtv,argx_Vrth; -double expx,expx_argx,expx_Vbci,expx_Vrth,Ifp,Ifp_ISPatT,Ifp_Vrth; -double Ifp_expi,Ifp_Vbep,Ifp_expx,Ifp_Vbci,q2p,q2p_Ifp,q2p_Vrth; -double q2p_Vbep,q2p_Vbci,qbp,qbp_q2p,qbp_Vrth,qbp_Vbep,qbp_Vbci; -double argi_Vbcp,expi_Vbcp,Irp,Irp_ISPatT,Irp_Vrth,Irp_expi,Irp_Vbcp; -double Iccp_Ifp,Iccp_Irp,Iccp_qbp,argn,argn_Vbei,argn_Vtv,argn_Vrth; -double expn,expn_argn,expn_Vbei,expn_Vrth,argx_VBBEatT,argx_Vbei,argx_NBBEatT; -double expx_Vbei,Ibe_IBEIatT,Ibe_expi,Ibe_IBENatT,Ibe_expn,Ibe_expx,Ibe_EBBEatT; -double argi_Vbex,expi_Vbex,argn_Vbex,expn_Vbex,argx_Vbex,expx_Vbex,Ibex_IBEIatT; -double Ibex_expi,Ibex_IBENatT,Ibex_expn,Ibex_expx,Ibex_EBBEatT,argn_Vbci,expn_Vbci; -double Ibcj,Ibcj_IBCIatT,Ibcj_Vrth,Ibcj_expi,Ibcj_Vbci,Ibcj_IBCNatT,Ibcj_expn; -double argn_Vbep,expn_Vbep,Ibep_IBEIPatT,Ibep_expi,Ibep_IBENPatT,Ibep_expn,vl_PCatT; -double xvar3_vl,xvar1_AVC2atT,avalf,avalf_vl,avalf_Vrth,avalf_Vbci,avalf_xvar4; -double Igc,Igc_Itzf,Igc_Vrth,Igc_Vbei,Igc_Vbci,Igc_Itzr,Igc_Ibcj; -double Igc_avalf,Ibc_Ibcj,Ibc_Igc,Ircx_RCXatT,argx_Vbcx,expx_Vbcx,Kbci; -double Kbci_GAMMatT,Kbci_Vrth,Kbci_expi,Kbci_Vbci,Kbcx,Kbcx_GAMMatT,Kbcx_Vrth; -double Kbcx_expx,Kbcx_Vbcx,rKp1,rKp1_Kbci,rKp1_Vrth,rKp1_Vbci,rKp1_Kbcx; -double rKp1_Vbcx,xvar1_rKp1,xvar1_Vbcx,Iohm,Iohm_Vrci,Iohm_Vtv,Iohm_Vrth; -double Iohm_Kbci,Iohm_Vbci,Iohm_Kbcx,Iohm_Vbcx,Iohm_xvar1,Iohm_RCIatT,derf; -double derf_IVO,derf_Vrth,derf_RCIatT,derf_Iohm,derf_Vrci,derf_Vbci,derf_Vbcx; -double Irci_Iohm,Irci_derf,Irbx_RBXatT,Irbi_qb,Irbi_RBIatT,Ire_REatT,Irbp_qbp; -double Irbp_RBPatT,argn_Vbcp,expn_Vbcp,Ibcp_IBCIPatT,Ibcp_expi,Ibcp_IBCNPatT,Ibcp_expn; -double Irs_RSatT,sgIf,rIf,rIf_Ifi,rIf_Vrth,rIf_Vbei,mIf; -double mIf_rIf,mIf_Vrth,mIf_Vbei,tff,tff_q1,tff_Vrth,tff_Vbei; -double tff_Vbci,tff_xvar2,tff_mIf,Qbe_CJEatT,Qbe_qdbe,Qbe_tff,Qbe_Ifi; -double Qbe_qb,Qbex_CJEatT,Qbex_qdbex,Qbc_CJCatT,Qbc_qdbc,Qbc_Iri,Qbc_Kbci; -double Qbcx_Kbcx,Qbep_CJEPatT,Qbep_qdbep,Qbep_Ifp,Qbcp_CJCPatT,Qbcp_qdbcp,Ith_Ibe; -double Ith_Ibc,Ith_Itzf,Ith_Itzr,Ith_Ibex,Ith_Ibep,Ith_Irs,Ith_Ibcp; -double Ith_Iccp,Ith_Ircx,Ith_Irci,Ith_Irbx,Ith_Irbi,Ith_Ire,Ith_Irbp; +double Vtv,IVEF,IVER,IIKF,IIKR,IIKP,IVO; +double IHRCF,IVTF,IITF,slTF,dv0,dvh,dvh_Vbei; +double xvar1,xvar2,pwq,qlo,qlo_Vbei,qhi,qhi_dvh; +double qhi_Vbei,xvar1_Vbei,xvar3,xvar3_xvar1,xvar3_Vbei,qlo_xvar3,qdbe; +double qdbe_qlo,qdbe_Vbei,qdbe_qhi,mv0,vl0,q0,dv; +double dv_Vbei,mv,mv_dv,mv_Vbei,vl,vl_dv,vl_Vbei; +double vl_mv,xvar1_vl,qdbe_vl,dvh_Vbex,qlo_Vbex,qhi_Vbex,xvar1_Vbex; +double xvar3_Vbex,qdbex,qdbex_qlo,qdbex_Vbex,qdbex_qhi,dv_Vbex,mv_Vbex; +double vl_Vbex,qdbex_vl,dvh_Vbci,qlo_Vbci,qhi_Vbci,xvar1_Vbci,xvar3_Vbci; +double qdbc,qdbc_qlo,qdbc_Vbci,qdbc_qhi,vn0,vnl0,qlo0; +double vn,vn_Vbci,vnl,vnl_vn,vnl_Vbci,vl_vnl,vl_Vbci; +double sel,sel_vnl,sel_Vbci,crt,cmx,cl,cl_sel; +double cl_Vbci,ql,ql_Vbci,ql_vl,ql_cl,qdbc_ql,dv_Vbci; +double mv_Vbci,qdbc_vl,dvh_Vbep,qlo_Vbep,qhi_Vbep,xvar1_Vbep,xvar3_Vbep; +double qdbep,qdbep_qlo,qdbep_Vbep,qdbep_qhi,vn_Vbep,vnl_Vbep,vl_Vbep; +double sel_Vbep,cl_Vbep,ql_Vbep,qdbep_ql,dv_Vbep,mv_Vbep,qdbep_vl; +double dvh_Vbcp,qlo_Vbcp,qhi_Vbcp,xvar1_Vbcp,xvar3_Vbcp,qdbcp,qdbcp_qlo; +double qdbcp_Vbcp,qdbcp_Vbep,qdbcp_qhi,dv_Vbcp,mv_Vbcp,vl_Vbcp,qdbcp_vl; +double argi,argi_Vbei,expi,expi_argi,expi_Vbei,Ifi,Ifi_expi; +double Ifi_Vbei,argi_Vbci,expi_Vbci,Iri,Iri_expi,Iri_Vbci,q1z; +double q1z_qdbe,q1z_Vbei,q1z_qdbc,q1z_Vbci,q1,q1_q1z,q1_Vbei; +double q1_Vbci,q2,q2_Ifi,q2_Vbei,q2_Iri,q2_Vbci,xvar3_q1; +double xvar1_xvar3,xvar1_q2,xvar4,xvar4_xvar1,xvar4_Vbei,xvar4_Vbci,qb; +double qb_q1,qb_Vbei,qb_Vbci,qb_xvar4,xvar2_xvar1,xvar2_Vbei,xvar2_Vbci; +double qb_xvar2,Itzr_Iri,Itzr_qb,Itzf_Ifi,Itzf_qb,argi_Vbep,expi_Vbep; +double argx,argx_Vbci,expx,expx_argx,expx_Vbci,Ifp,Ifp_expi; +double Ifp_Vbep,Ifp_expx,Ifp_Vbci,q2p,q2p_Ifp,q2p_Vbep,q2p_Vbci; +double qbp,qbp_q2p,qbp_Vbep,qbp_Vbci,argi_Vbcp,expi_Vbcp,Irp; +double Irp_expi,Irp_Vbcp,Iccp_Ifp,Iccp_Irp,Iccp_qbp,argn,argn_Vbei; +double expn,expn_argn,expn_Vbei,argx_Vbei,expx_Vbei,Ibe_expi,Ibe_expn; +double Ibe_expx,argi_Vbex,expi_Vbex,argn_Vbex,expn_Vbex,argx_Vbex,expx_Vbex; +double Ibex_expi,Ibex_expn,Ibex_expx,argn_Vbci,expn_Vbci,Ibcj,Ibcj_expi; +double Ibcj_Vbci,Ibcj_expn,argn_Vbep,expn_Vbep,Ibep_expi,Ibep_expn,xvar3_vl; +double avalf,avalf_vl,avalf_Vbci,avalf_xvar4,Igc,Igc_Itzf,Igc_Vbei; +double Igc_Vbci,Igc_Itzr,Igc_Ibcj,Igc_avalf,Ibc_Ibcj,Ibc_Igc,argx_Vbcx; +double expx_Vbcx,Kbci,Kbci_expi,Kbci_Vbci,Kbcx,Kbcx_expx,Kbcx_Vbcx; +double rKp1,rKp1_Kbci,rKp1_Vbci,rKp1_Kbcx,rKp1_Vbcx,xvar1_rKp1,xvar1_Vbcx; +double Iohm,Iohm_Vrci,Iohm_Kbci,Iohm_Vbci,Iohm_Kbcx,Iohm_Vbcx,Iohm_xvar1; +double derf,derf_Iohm,derf_Vrci,derf_Vbci,derf_Vbcx,Irci_Iohm,Irci_derf; +double Irbi_qb,Irbp_qbp,argn_Vbcp,expn_Vbcp,Ibcp_expi,Ibcp_expn,sgIf; +double rIf,rIf_Ifi,rIf_Vbei,mIf,mIf_rIf,mIf_Vbei,tff; +double tff_q1,tff_Vbei,tff_Vbci,tff_xvar2,tff_mIf,Qbe_qdbe,Qbe_tff; +double Qbe_Ifi,Qbe_qb,Qbex_qdbex,Qbc_qdbc,Qbc_Iri,Qbc_Kbci,Qbcx_Kbcx; +double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; + +/* Function and derivative code */ + + Vtv=1.380662e-23*(2.731500e+02+p[0])/1.602189e-19; + if(p[51]>0.0){ + IVEF=1.0/p[51]; + }else{ + IVEF=0.0; + } + if(p[52]>0.0){ + IVER=1.0/p[52]; + }else{ + IVER=0.0; + } + if(p[53]>0.0){ + IIKF=1.0/p[53]; + }else{ + IIKF=0.0; + } + if(p[54]>0.0){ + IIKR=1.0/p[54]; + }else{ + IIKR=0.0; + } + if(p[55]>0.0){ + IIKP=1.0/p[55]; + }else{ + IIKP=0.0; + } + if(p[3]>0.0){ + IVO=1.0/p[3]; + }else{ + IVO=0.0; + } + if(p[5]>0.0){ + IHRCF=1.0/p[5]; + }else{ + IHRCF=0.0; + } + if(p[59]>0.0){ + IVTF=1.0/p[59]; + }else{ + IVTF=0.0; + } + if(p[60]>0.0){ + IITF=1.0/p[60]; + }else{ + IITF=0.0; + } + if(p[60]>0.0){ + slTF=0.0; + }else{ + slTF=1.0; + } + dv0=-p[17]*p[14]; + if(p[19]<=0.0){ + dvh=(*Vbei)+dv0; + dvh_Vbei=1.0; + if(dvh>0.0){ + xvar1=(1.0-p[14]); + xvar2=(-1.0-p[18]); + pwq=pow(xvar1,xvar2); + qlo=p[17]*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[18]); + qlo_Vbei=0.0; + qhi=dvh*(1.0-p[14]+0.5*p[18]*dvh/p[17])*pwq; + qhi_dvh=(0.5*dvh*p[18]/p[17]-p[14]+1.0)*pwq+0.5*dvh*p[18]*pwq/p[17]; + qhi_Vbei=qhi_dvh*dvh_Vbei; + }else{ + xvar1=(1.0-(*Vbei)/p[17]); + xvar1_Vbei=-1.0/p[17]; + xvar2=(1.0-p[18]); + xvar3=pow(xvar1,xvar2); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vbei=xvar3_xvar1*xvar1_Vbei; + qlo=p[17]*(1.0-xvar3)/(1.0-p[18]); + qlo_xvar3=-p[17]/(1.0-p[18]); + qlo_Vbei=qlo_xvar3*xvar3_Vbei; + qhi=0.0; + qhi_Vbei=0.0; + } + qdbe=qlo+qhi; + qdbe_qlo=1.0; + qdbe_qhi=1.0; + qdbe_Vbei=qdbe_qlo*qlo_Vbei; + qdbe_Vbei=qdbe_Vbei+qdbe_qhi*qhi_Vbei; + }else{ + mv0=sqrt(dv0*dv0+4.0*p[19]*p[19]); + vl0=-0.5*(dv0+mv0); + xvar1=(1.0-vl0/p[17]); + xvar2=(1.0-p[18]); + xvar3=pow(xvar1,xvar2); + q0=-p[17]*xvar3/(1.0-p[18]); + dv=(*Vbei)+dv0; + dv_Vbei=1.0; + mv=sqrt(dv*dv+4.0*p[19]*p[19]); + mv_dv=dv/sqrt((dv*dv)+4.0*(p[19]*p[19])); + mv_Vbei=mv_dv*dv_Vbei; + vl=0.5*(dv-mv)-dv0; + vl_dv=0.5; + vl_mv=-0.5; + vl_Vbei=vl_dv*dv_Vbei; + vl_Vbei=vl_Vbei+vl_mv*mv_Vbei; + xvar1=(1.0-vl/p[17]); + xvar1_vl=-1.0/p[17]; + xvar1_Vbei=xvar1_vl*vl_Vbei; + xvar2=(1.0-p[18]); + xvar3=pow(xvar1,xvar2); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vbei=xvar3_xvar1*xvar1_Vbei; + qlo=-p[17]*xvar3/(1.0-p[18]); + qlo_xvar3=-p[17]/(1.0-p[18]); + qlo_Vbei=qlo_xvar3*xvar3_Vbei; + xvar1=(1.0-p[14]); + xvar2=(-p[18]); + xvar3=pow(xvar1,xvar2); + qdbe=qlo+xvar3*((*Vbei)-vl+vl0)-q0; + qdbe_qlo=1.0; + qdbe_Vbei=xvar3; + qdbe_vl=-xvar3; + qdbe_Vbei=qdbe_Vbei+qdbe_qlo*qlo_Vbei; + qdbe_Vbei=qdbe_Vbei+qdbe_vl*vl_Vbei; + } + dv0=-p[17]*p[14]; + if(p[19]<=0.0){ + dvh=(*Vbex)+dv0; + dvh_Vbex=1.0; + if(dvh>0.0){ + xvar1=(1.0-p[14]); + xvar2=(-1.0-p[18]); + pwq=pow(xvar1,xvar2); + qlo=p[17]*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[18]); + qlo_Vbex=0.0; + qhi=dvh*(1.0-p[14]+0.5*p[18]*dvh/p[17])*pwq; + qhi_dvh=(0.5*dvh*p[18]/p[17]-p[14]+1.0)*pwq+0.5*dvh*p[18]*pwq/p[17]; + qhi_Vbex=qhi_dvh*dvh_Vbex; + }else{ + xvar1=(1.0-(*Vbex)/p[17]); + xvar1_Vbex=-1.0/p[17]; + xvar2=(1.0-p[18]); + xvar3=pow(xvar1,xvar2); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vbex=xvar3_xvar1*xvar1_Vbex; + qlo=p[17]*(1.0-xvar3)/(1.0-p[18]); + qlo_xvar3=-p[17]/(1.0-p[18]); + qlo_Vbex=qlo_xvar3*xvar3_Vbex; + qhi=0.0; + qhi_Vbex=0.0; + } + qdbex=qlo+qhi; + qdbex_qlo=1.0; + qdbex_qhi=1.0; + qdbex_Vbex=qdbex_qlo*qlo_Vbex; + qdbex_Vbex=qdbex_Vbex+qdbex_qhi*qhi_Vbex; + }else{ + mv0=sqrt(dv0*dv0+4.0*p[19]*p[19]); + vl0=-0.5*(dv0+mv0); + xvar1=(1.0-vl0/p[17]); + xvar2=(1.0-p[18]); + xvar3=pow(xvar1,xvar2); + q0=-p[17]*xvar3/(1.0-p[18]); + dv=(*Vbex)+dv0; + dv_Vbex=1.0; + mv=sqrt(dv*dv+4.0*p[19]*p[19]); + mv_dv=dv/sqrt((dv*dv)+4.0*(p[19]*p[19])); + mv_Vbex=mv_dv*dv_Vbex; + vl=0.5*(dv-mv)-dv0; + vl_dv=0.5; + vl_mv=-0.5; + vl_Vbex=vl_dv*dv_Vbex; + vl_Vbex=vl_Vbex+vl_mv*mv_Vbex; + xvar1=(1.0-vl/p[17]); + xvar1_vl=-1.0/p[17]; + xvar1_Vbex=xvar1_vl*vl_Vbex; + xvar2=(1.0-p[18]); + xvar3=pow(xvar1,xvar2); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vbex=xvar3_xvar1*xvar1_Vbex; + qlo=-p[17]*xvar3/(1.0-p[18]); + qlo_xvar3=-p[17]/(1.0-p[18]); + qlo_Vbex=qlo_xvar3*xvar3_Vbex; + xvar1=(1.0-p[14]); + xvar2=(-p[18]); + xvar3=pow(xvar1,xvar2); + qdbex=qlo+xvar3*((*Vbex)-vl+vl0)-q0; + qdbex_qlo=1.0; + qdbex_Vbex=xvar3; + qdbex_vl=-xvar3; + qdbex_Vbex=qdbex_Vbex+qdbex_qlo*qlo_Vbex; + qdbex_Vbex=qdbex_Vbex+qdbex_vl*vl_Vbex; + } + dv0=-p[24]*p[14]; + if(p[26]<=0.0){ + dvh=(*Vbci)+dv0; + dvh_Vbci=1.0; + if(dvh>0.0){ + xvar1=(1.0-p[14]); + xvar2=(-1.0-p[25]); + pwq=pow(xvar1,xvar2); + qlo=p[24]*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[25]); + qlo_Vbci=0.0; + qhi=dvh*(1.0-p[14]+0.5*p[25]*dvh/p[24])*pwq; + qhi_dvh=(0.5*dvh*p[25]/p[24]-p[14]+1.0)*pwq+0.5*dvh*p[25]*pwq/p[24]; + qhi_Vbci=qhi_dvh*dvh_Vbci; + }else{ + if((p[85]>0.0)&&((*Vbci)<-p[85])){ + xvar1=(1.0+p[85]/p[24]); + xvar2=(1.0-p[25]); + xvar3=pow(xvar1,xvar2); + qlo=p[24]*(1.0-xvar3*(1.0-((1.0-p[25])*((*Vbci)+p[85]))/(p[24]+p[85])))/(1.0-p[25]); + qlo_Vbci=p[24]*xvar3/(p[85]+p[24]); + }else{ + xvar1=(1.0-(*Vbci)/p[24]); + xvar1_Vbci=-1.0/p[24]; + xvar2=(1.0-p[25]); + xvar3=pow(xvar1,xvar2); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vbci=xvar3_xvar1*xvar1_Vbci; + qlo=p[24]*(1.0-xvar3)/(1.0-p[25]); + qlo_xvar3=-p[24]/(1.0-p[25]); + qlo_Vbci=qlo_xvar3*xvar3_Vbci; + } + qhi=0.0; + qhi_Vbci=0.0; + } + qdbc=qlo+qhi; + qdbc_qlo=1.0; + qdbc_qhi=1.0; + qdbc_Vbci=qdbc_qlo*qlo_Vbci; + qdbc_Vbci=qdbc_Vbci+qdbc_qhi*qhi_Vbci; + }else{ + if((p[85]>0.0)&&(p[86]>0.0)){ + vn0=(p[85]+dv0)/(p[85]-dv0); + vnl0=2.0*vn0/(sqrt((vn0-1.0)*(vn0-1.0)+4.0*p[26]*p[26])+sqrt((vn0+1.0)*(vn0+1.0)+4.0*p[86]*p[86])); + vl0=0.5*(vnl0*(p[85]-dv0)-p[85]-dv0); + xvar1=(1.0-vl0/p[24]); + xvar2=(1.0-p[25]); + xvar3=pow(xvar1,xvar2); + qlo0=p[24]*(1.0-xvar3)/(1.0-p[25]); + vn=(2.0*(*Vbci)+p[85]+dv0)/(p[85]-dv0); + vn_Vbci=2.0/(p[85]-dv0); + vnl=2.0*vn/(sqrt((vn-1.0)*(vn-1.0)+4.0*p[26]*p[26])+sqrt((vn+1.0)*(vn+1.0)+4.0*p[86]*p[86])); + vnl_vn=2.0/(sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))-2.0*vn*((vn+1.0)/sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+(vn-1.0)/sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))/((sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))*(sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))); + vnl_Vbci=vnl_vn*vn_Vbci; + vl=0.5*(vnl*(p[85]-dv0)-p[85]-dv0); + vl_vnl=0.5*(p[85]-dv0); + vl_Vbci=vl_vnl*vnl_Vbci; + xvar1=(1.0-vl/p[24]); + xvar1_vl=-1.0/p[24]; + xvar1_Vbci=xvar1_vl*vl_Vbci; + xvar2=(1.0-p[25]); + xvar3=pow(xvar1,xvar2); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vbci=xvar3_xvar1*xvar1_Vbci; + qlo=p[24]*(1.0-xvar3)/(1.0-p[25]); + qlo_xvar3=-p[24]/(1.0-p[25]); + qlo_Vbci=qlo_xvar3*xvar3_Vbci; + sel=0.5*(vnl+1.0); + sel_vnl=0.5; + sel_Vbci=sel_vnl*vnl_Vbci; + xvar1=(1.0+p[85]/p[24]); + xvar2=(-p[25]); + crt=pow(xvar1,xvar2); + xvar1=(1.0+dv0/p[24]); + xvar2=(-p[25]); + cmx=pow(xvar1,xvar2); + cl=(1.0-sel)*crt+sel*cmx; + cl_sel=cmx-crt; + cl_Vbci=cl_sel*sel_Vbci; + ql=((*Vbci)-vl+vl0)*cl; + ql_Vbci=cl; + ql_vl=-cl; + ql_cl=vl0-vl+(*Vbci); + ql_Vbci=ql_Vbci+ql_vl*vl_Vbci; + ql_Vbci=ql_Vbci+ql_cl*cl_Vbci; + qdbc=ql+qlo-qlo0; + qdbc_ql=1.0; + qdbc_qlo=1.0; + qdbc_Vbci=qdbc_ql*ql_Vbci; + qdbc_Vbci=qdbc_Vbci+qdbc_qlo*qlo_Vbci; + }else{ + mv0=sqrt(dv0*dv0+4.0*p[26]*p[26]); + vl0=-0.5*(dv0+mv0); + xvar1=(1.0-vl0/p[24]); + xvar2=(1.0-p[25]); + xvar3=pow(xvar1,xvar2); + q0=-p[24]*xvar3/(1.0-p[25]); + dv=(*Vbci)+dv0; + dv_Vbci=1.0; + mv=sqrt(dv*dv+4.0*p[26]*p[26]); + mv_dv=dv/sqrt((dv*dv)+4.0*(p[26]*p[26])); + mv_Vbci=mv_dv*dv_Vbci; + vl=0.5*(dv-mv)-dv0; + vl_dv=0.5; + vl_mv=-0.5; + vl_Vbci=vl_dv*dv_Vbci; + vl_Vbci=vl_Vbci+vl_mv*mv_Vbci; + xvar1=(1.0-vl/p[24]); + xvar1_vl=-1.0/p[24]; + xvar1_Vbci=xvar1_vl*vl_Vbci; + xvar2=(1.0-p[25]); + xvar3=pow(xvar1,xvar2); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vbci=xvar3_xvar1*xvar1_Vbci; + qlo=-p[24]*xvar3/(1.0-p[25]); + qlo_xvar3=-p[24]/(1.0-p[25]); + qlo_Vbci=qlo_xvar3*xvar3_Vbci; + xvar1=(1.0-p[14]); + xvar2=(-p[25]); + xvar3=pow(xvar1,xvar2); + qdbc=qlo+xvar3*((*Vbci)-vl+vl0)-q0; + qdbc_qlo=1.0; + qdbc_Vbci=xvar3; + qdbc_vl=-xvar3; + qdbc_Vbci=qdbc_Vbci+qdbc_qlo*qlo_Vbci; + qdbc_Vbci=qdbc_Vbci+qdbc_vl*vl_Vbci; + } + } + dv0=-p[24]*p[14]; + if(p[26]<=0.0){ + dvh=(*Vbep)+dv0; + dvh_Vbep=1.0; + if(dvh>0.0){ + xvar1=(1.0-p[14]); + xvar2=(-1.0-p[25]); + pwq=pow(xvar1,xvar2); + qlo=p[24]*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[25]); + qlo_Vbep=0.0; + qhi=dvh*(1.0-p[14]+0.5*p[25]*dvh/p[24])*pwq; + qhi_dvh=(0.5*dvh*p[25]/p[24]-p[14]+1.0)*pwq+0.5*dvh*p[25]*pwq/p[24]; + qhi_Vbep=qhi_dvh*dvh_Vbep; + }else{ + if((p[85]>0.0)&&((*Vbep)<-p[85])){ + xvar1=(1.0+p[85]/p[24]); + xvar2=(1.0-p[25]); + xvar3=pow(xvar1,xvar2); + qlo=p[24]*(1.0-xvar3*(1.0-((1.0-p[25])*((*Vbep)+p[85]))/(p[24]+p[85])))/(1.0-p[25]); + qlo_Vbep=p[24]*xvar3/(p[85]+p[24]); + }else{ + xvar1=(1.0-(*Vbep)/p[24]); + xvar1_Vbep=-1.0/p[24]; + xvar2=(1.0-p[25]); + xvar3=pow(xvar1,xvar2); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vbep=xvar3_xvar1*xvar1_Vbep; + qlo=p[24]*(1.0-xvar3)/(1.0-p[25]); + qlo_xvar3=-p[24]/(1.0-p[25]); + qlo_Vbep=qlo_xvar3*xvar3_Vbep; + } + qhi=0.0; + qhi_Vbep=0.0; + } + qdbep=qlo+qhi; + qdbep_qlo=1.0; + qdbep_qhi=1.0; + qdbep_Vbep=qdbep_qlo*qlo_Vbep; + qdbep_Vbep=qdbep_Vbep+qdbep_qhi*qhi_Vbep; + }else{ + if((p[85]>0.0)&&(p[86]>0.0)){ + vn0=(p[85]+dv0)/(p[85]-dv0); + vnl0=2.0*vn0/(sqrt((vn0-1.0)*(vn0-1.0)+4.0*p[26]*p[26])+sqrt((vn0+1.0)*(vn0+1.0)+4.0*p[86]*p[86])); + vl0=0.5*(vnl0*(p[85]-dv0)-p[85]-dv0); + xvar1=(1.0-vl0/p[24]); + xvar2=(1.0-p[25]); + xvar3=pow(xvar1,xvar2); + qlo0=p[24]*(1.0-xvar3)/(1.0-p[25]); + vn=(2.0*(*Vbep)+p[85]+dv0)/(p[85]-dv0); + vn_Vbep=2.0/(p[85]-dv0); + vnl=2.0*vn/(sqrt((vn-1.0)*(vn-1.0)+4.0*p[26]*p[26])+sqrt((vn+1.0)*(vn+1.0)+4.0*p[86]*p[86])); + vnl_vn=2.0/(sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))-2.0*vn*((vn+1.0)/sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+(vn-1.0)/sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))/((sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))*(sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))); + vnl_Vbep=vnl_vn*vn_Vbep; + vl=0.5*(vnl*(p[85]-dv0)-p[85]-dv0); + vl_vnl=0.5*(p[85]-dv0); + vl_Vbep=vl_vnl*vnl_Vbep; + xvar1=(1.0-vl/p[24]); + xvar1_vl=-1.0/p[24]; + xvar1_Vbep=xvar1_vl*vl_Vbep; + xvar2=(1.0-p[25]); + xvar3=pow(xvar1,xvar2); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vbep=xvar3_xvar1*xvar1_Vbep; + qlo=p[24]*(1.0-xvar3)/(1.0-p[25]); + qlo_xvar3=-p[24]/(1.0-p[25]); + qlo_Vbep=qlo_xvar3*xvar3_Vbep; + sel=0.5*(vnl+1.0); + sel_vnl=0.5; + sel_Vbep=sel_vnl*vnl_Vbep; + xvar1=(1.0+p[85]/p[24]); + xvar2=(-p[25]); + crt=pow(xvar1,xvar2); + xvar1=(1.0+dv0/p[24]); + xvar2=(-p[25]); + cmx=pow(xvar1,xvar2); + cl=(1.0-sel)*crt+sel*cmx; + cl_sel=cmx-crt; + cl_Vbep=cl_sel*sel_Vbep; + ql=((*Vbep)-vl+vl0)*cl; + ql_Vbep=cl; + ql_vl=-cl; + ql_cl=vl0-vl+(*Vbep); + ql_Vbep=ql_Vbep+ql_vl*vl_Vbep; + ql_Vbep=ql_Vbep+ql_cl*cl_Vbep; + qdbep=ql+qlo-qlo0; + qdbep_ql=1.0; + qdbep_qlo=1.0; + qdbep_Vbep=qdbep_ql*ql_Vbep; + qdbep_Vbep=qdbep_Vbep+qdbep_qlo*qlo_Vbep; + }else{ + mv0=sqrt(dv0*dv0+4.0*p[26]*p[26]); + vl0=-0.5*(dv0+mv0); + xvar1=(1.0-vl0/p[24]); + xvar2=(1.0-p[25]); + xvar3=pow(xvar1,xvar2); + q0=-p[24]*xvar3/(1.0-p[25]); + dv=(*Vbep)+dv0; + dv_Vbep=1.0; + mv=sqrt(dv*dv+4.0*p[26]*p[26]); + mv_dv=dv/sqrt((dv*dv)+4.0*(p[26]*p[26])); + mv_Vbep=mv_dv*dv_Vbep; + vl=0.5*(dv-mv)-dv0; + vl_dv=0.5; + vl_mv=-0.5; + vl_Vbep=vl_dv*dv_Vbep; + vl_Vbep=vl_Vbep+vl_mv*mv_Vbep; + xvar1=(1.0-vl/p[24]); + xvar1_vl=-1.0/p[24]; + xvar1_Vbep=xvar1_vl*vl_Vbep; + xvar2=(1.0-p[25]); + xvar3=pow(xvar1,xvar2); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vbep=xvar3_xvar1*xvar1_Vbep; + qlo=-p[24]*xvar3/(1.0-p[25]); + qlo_xvar3=-p[24]/(1.0-p[25]); + qlo_Vbep=qlo_xvar3*xvar3_Vbep; + xvar1=(1.0-p[14]); + xvar2=(-p[25]); + xvar3=pow(xvar1,xvar2); + qdbep=qlo+xvar3*((*Vbep)-vl+vl0)-q0; + qdbep_qlo=1.0; + qdbep_Vbep=xvar3; + qdbep_vl=-xvar3; + qdbep_Vbep=qdbep_Vbep+qdbep_qlo*qlo_Vbep; + qdbep_Vbep=qdbep_Vbep+qdbep_vl*vl_Vbep; + } + } + if(p[27]>0.0){ + dv0=-p[28]*p[14]; + if(p[30]<=0.0){ + dvh=(*Vbcp)+dv0; + dvh_Vbcp=1.0; + if(dvh>0.0){ + xvar1=(1.0-p[14]); + xvar2=(-1.0-p[29]); + pwq=pow(xvar1,xvar2); + qlo=p[28]*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[29]); + qlo_Vbep=0.0; + qlo_Vbcp=0.0; + qhi=dvh*(1.0-p[14]+0.5*p[29]*dvh/p[28])*pwq; + qhi_dvh=(0.5*dvh*p[29]/p[28]-p[14]+1.0)*pwq+0.5*dvh*p[29]*pwq/p[28]; + qhi_Vbep=0.0; + qhi_Vbcp=qhi_dvh*dvh_Vbcp; + }else{ + xvar1=(1.0-(*Vbcp)/p[28]); + xvar1_Vbcp=-1.0/p[28]; + xvar2=(1.0-p[29]); + xvar3=pow(xvar1,xvar2); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vbcp=xvar3_xvar1*xvar1_Vbcp; + qlo=p[28]*(1.0-xvar3)/(1.0-p[29]); + qlo_xvar3=-p[28]/(1.0-p[29]); + qlo_Vbep=0.0; + qlo_Vbcp=qlo_xvar3*xvar3_Vbcp; + qhi=0.0; + qhi_Vbep=0.0; + qhi_Vbcp=0.0; + } + qdbcp=qlo+qhi; + qdbcp_qlo=1.0; + qdbcp_qhi=1.0; + qdbcp_Vbcp=qdbcp_qlo*qlo_Vbcp; + qdbcp_Vbep=qdbcp_qlo*qlo_Vbep; + qdbcp_Vbep=qdbcp_Vbep+qdbcp_qhi*qhi_Vbep; + qdbcp_Vbcp=qdbcp_Vbcp+qdbcp_qhi*qhi_Vbcp; + }else{ + mv0=sqrt(dv0*dv0+4.0*p[30]*p[30]); + vl0=-0.5*(dv0+mv0); + xvar1=(1.0-vl0/p[28]); + xvar2=(1.0-p[29]); + xvar3=pow(xvar1,xvar2); + q0=-p[28]*xvar3/(1.0-p[29]); + dv=(*Vbcp)+dv0; + dv_Vbcp=1.0; + mv=sqrt(dv*dv+4.0*p[30]*p[30]); + mv_dv=dv/sqrt((dv*dv)+4.0*(p[30]*p[30])); + mv_Vbcp=mv_dv*dv_Vbcp; + vl=0.5*(dv-mv)-dv0; + vl_dv=0.5; + vl_mv=-0.5; + vl_Vbcp=vl_dv*dv_Vbcp; + vl_Vbcp=vl_Vbcp+vl_mv*mv_Vbcp; + xvar1=(1.0-vl/p[28]); + xvar1_vl=-1.0/p[28]; + xvar1_Vbcp=xvar1_vl*vl_Vbcp; + xvar2=(1.0-p[29]); + xvar3=pow(xvar1,xvar2); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vbcp=xvar3_xvar1*xvar1_Vbcp; + qlo=-p[28]*xvar3/(1.0-p[29]); + qlo_xvar3=-p[28]/(1.0-p[29]); + qlo_Vbep=0.0; + qlo_Vbcp=qlo_xvar3*xvar3_Vbcp; + xvar1=(1.0-p[14]); + xvar2=(-p[29]); + xvar3=pow(xvar1,xvar2); + qdbcp=qlo+xvar3*((*Vbcp)-vl+vl0)-q0; + qdbcp_qlo=1.0; + qdbcp_Vbcp=xvar3; + qdbcp_vl=-xvar3; + qdbcp_Vbcp=qdbcp_Vbcp+qdbcp_qlo*qlo_Vbcp; + qdbcp_Vbep=qdbcp_qlo*qlo_Vbep; + qdbcp_Vbcp=qdbcp_Vbcp+qdbcp_vl*vl_Vbcp; + } + }else{ + qdbcp=0.0; + qdbcp_Vbcp=0.0; + } + argi=(*Vbei)/(p[12]*Vtv); + argi_Vbei=1.0/(p[12]*Vtv); + expi=exp(argi); + expi_argi=expi; + expi_Vbei=expi_argi*argi_Vbei; + Ifi=p[11]*(expi-1.0); + Ifi_expi=p[11]; + Ifi_Vbei=Ifi_expi*expi_Vbei; + argi=(*Vbci)/(p[13]*Vtv); + argi_Vbci=1.0/(p[13]*Vtv); + expi=exp(argi); + expi_argi=expi; + expi_Vbci=expi_argi*argi_Vbci; + Iri=p[11]*p[94]*(expi-1.0); + Iri_expi=p[11]*p[94]; + Iri_Vbci=Iri_expi*expi_Vbci; + q1z=1.0+qdbe*IVER+qdbc*IVEF; + q1z_qdbe=IVER; + q1z_qdbc=IVEF; + q1z_Vbei=q1z_qdbe*qdbe_Vbei; + q1z_Vbci=q1z_qdbc*qdbc_Vbci; + q1=0.5*(sqrt((q1z-1.0e-4)*(q1z-1.0e-4)+1.0e-8)+q1z-1.0e-4)+1.0e-4; + q1_q1z=0.5*((q1z-1.0e-4)/sqrt(((q1z-1.0e-4)*(q1z-1.0e-4))+1.0e-8)+1.0); + q1_Vbei=q1_q1z*q1z_Vbei; + q1_Vbci=q1_q1z*q1z_Vbci; + q2=Ifi*IIKF+Iri*IIKR; + q2_Ifi=IIKF; + q2_Iri=IIKR; + q2_Vbei=q2_Ifi*Ifi_Vbei; + q2_Vbci=q2_Iri*Iri_Vbci; + if(p[88]<0.5){ + xvar2=1.0/p[89]; + xvar3=pow(q1,xvar2); + xvar3_q1=xvar3*xvar2/q1; + xvar3_Vbei=xvar3_q1*q1_Vbei; + xvar3_Vbci=xvar3_q1*q1_Vbci; + xvar1=(xvar3+4.0*q2); + xvar1_xvar3=1.0; + xvar1_q2=4.0; + xvar1_Vbei=xvar1_xvar3*xvar3_Vbei; + xvar1_Vbci=xvar1_xvar3*xvar3_Vbci; + xvar1_Vbei=xvar1_Vbei+xvar1_q2*q2_Vbei; + xvar1_Vbci=xvar1_Vbci+xvar1_q2*q2_Vbci; + xvar4=pow(xvar1,p[89]); + xvar4_xvar1=xvar4*p[89]/xvar1; + xvar4_Vbei=xvar4_xvar1*xvar1_Vbei; + xvar4_Vbci=xvar4_xvar1*xvar1_Vbci; + qb=0.5*(q1+xvar4); + qb_q1=0.5; + qb_xvar4=0.5; + qb_Vbei=qb_q1*q1_Vbei; + qb_Vbci=qb_q1*q1_Vbci; + qb_Vbei=qb_Vbei+qb_xvar4*xvar4_Vbei; + qb_Vbci=qb_Vbci+qb_xvar4*xvar4_Vbci; + }else{ + xvar1=(1.0+4.0*q2); + xvar1_q2=4.0; + xvar1_Vbei=xvar1_q2*q2_Vbei; + xvar1_Vbci=xvar1_q2*q2_Vbci; + xvar2=pow(xvar1,p[89]); + xvar2_xvar1=xvar2*p[89]/xvar1; + xvar2_Vbei=xvar2_xvar1*xvar1_Vbei; + xvar2_Vbci=xvar2_xvar1*xvar1_Vbci; + qb=0.5*q1*(1.0+xvar2); + qb_q1=0.5*(xvar2+1.0); + qb_xvar2=0.5*q1; + qb_Vbei=qb_q1*q1_Vbei; + qb_Vbci=qb_q1*q1_Vbci; + qb_Vbei=qb_Vbei+qb_xvar2*xvar2_Vbei; + qb_Vbci=qb_Vbci+qb_xvar2*xvar2_Vbci; + } + (*Itzr)=Iri/qb; + Itzr_Iri=1.0/qb; + Itzr_qb=-Iri/(qb*qb); + *Itzr_Vbci=Itzr_Iri*Iri_Vbci; + *Itzr_Vbei=Itzr_qb*qb_Vbei; + *Itzr_Vbci=(*Itzr_Vbci)+Itzr_qb*qb_Vbci; + (*Itzf)=Ifi/qb; + Itzf_Ifi=1.0/qb; + Itzf_qb=-Ifi/(qb*qb); + *Itzf_Vbei=Itzf_Ifi*Ifi_Vbei; + *Itzf_Vbei=(*Itzf_Vbei)+Itzf_qb*qb_Vbei; + *Itzf_Vbci=Itzf_qb*qb_Vbci; + if(p[42]>0.0){ + argi=(*Vbep)/(p[44]*Vtv); + argi_Vbep=1.0/(p[44]*Vtv); + expi=exp(argi); + expi_argi=expi; + expi_Vbep=expi_argi*argi_Vbep; + argx=(*Vbci)/(p[44]*Vtv); + argx_Vbci=1.0/(p[44]*Vtv); + expx=exp(argx); + expx_argx=expx; + expx_Vbci=expx_argx*argx_Vbci; + Ifp=p[42]*(p[43]*expi+(1.0-p[43])*expx-1.0); + Ifp_expi=p[42]*p[43]; + Ifp_expx=p[42]*(1.0-p[43]); + Ifp_Vbep=Ifp_expi*expi_Vbep; + Ifp_Vbci=Ifp_expx*expx_Vbci; + q2p=Ifp*IIKP; + q2p_Ifp=IIKP; + q2p_Vbep=q2p_Ifp*Ifp_Vbep; + q2p_Vbci=q2p_Ifp*Ifp_Vbci; + qbp=0.5*(1.0+sqrt(1.0+4.0*q2p)); + qbp_q2p=1.0/sqrt(4.0*q2p+1.0); + qbp_Vbep=qbp_q2p*q2p_Vbep; + qbp_Vbci=qbp_q2p*q2p_Vbci; + argi=(*Vbcp)/(p[44]*Vtv); + argi_Vbcp=1.0/(p[44]*Vtv); + expi=exp(argi); + expi_argi=expi; + expi_Vbcp=expi_argi*argi_Vbcp; + Irp=p[42]*(expi-1.0); + Irp_expi=p[42]; + Irp_Vbcp=Irp_expi*expi_Vbcp; + (*Iccp)=(Ifp-Irp)/qbp; + Iccp_Ifp=1.0/qbp; + Iccp_Irp=-1.0/qbp; + Iccp_qbp=-(Ifp-Irp)/(qbp*qbp); + *Iccp_Vbep=Iccp_Ifp*Ifp_Vbep; + *Iccp_Vbci=Iccp_Ifp*Ifp_Vbci; + *Iccp_Vbcp=Iccp_Irp*Irp_Vbcp; + *Iccp_Vbep=(*Iccp_Vbep)+Iccp_qbp*qbp_Vbep; + *Iccp_Vbci=(*Iccp_Vbci)+Iccp_qbp*qbp_Vbci; + }else{ + Ifp=0.0; + Ifp_Vbep=0.0; + Ifp_Vbci=0.0; + qbp=1.0; + qbp_Vbep=0.0; + qbp_Vbci=0.0; + (*Iccp)=0.0; + *Iccp_Vbep=0.0; + *Iccp_Vbci=0.0; + *Iccp_Vbcp=0.0; + } + if(p[32]==1.0){ + argi=(*Vbei)/(p[33]*Vtv); + argi_Vbei=1.0/(p[33]*Vtv); + expi=exp(argi); + expi_argi=expi; + expi_Vbei=expi_argi*argi_Vbei; + argn=(*Vbei)/(p[35]*Vtv); + argn_Vbei=1.0/(p[35]*Vtv); + expn=exp(argn); + expn_argn=expn; + expn_Vbei=expn_argn*argn_Vbei; + if(p[98]>0.0){ + argx=(-p[98]-(*Vbei))/(p[99]*Vtv); + argx_Vbei=-1.0/(p[99]*Vtv); + expx=exp(argx); + expx_argx=expx; + expx_Vbei=expx_argx*argx_Vbei; + (*Ibe)=p[31]*(expi-1.0)+p[34]*(expn-1.0)-p[100]*(expx-p[104]); + Ibe_expi=p[31]; + Ibe_expn=p[34]; + Ibe_expx=-p[100]; + *Ibe_Vbei=Ibe_expi*expi_Vbei; + *Ibe_Vbei=(*Ibe_Vbei)+Ibe_expn*expn_Vbei; + *Ibe_Vbei=(*Ibe_Vbei)+Ibe_expx*expx_Vbei; + }else{ + (*Ibe)=p[31]*(expi-1.0)+p[34]*(expn-1.0); + Ibe_expi=p[31]; + Ibe_expn=p[34]; + *Ibe_Vbei=Ibe_expi*expi_Vbei; + *Ibe_Vbei=(*Ibe_Vbei)+Ibe_expn*expn_Vbei; + } + (*Ibex)=0.0; + *Ibex_Vbex=0.0; + }else if(p[32]==0.0){ + (*Ibe)=0.0; + *Ibe_Vbei=0.0; + argi=(*Vbex)/(p[33]*Vtv); + argi_Vbex=1.0/(p[33]*Vtv); + expi=exp(argi); + expi_argi=expi; + expi_Vbex=expi_argi*argi_Vbex; + argn=(*Vbex)/(p[35]*Vtv); + argn_Vbex=1.0/(p[35]*Vtv); + expn=exp(argn); + expn_argn=expn; + expn_Vbex=expn_argn*argn_Vbex; + if(p[98]>0.0){ + argx=(-p[98]-(*Vbex))/(p[99]*Vtv); + argx_Vbex=-1.0/(p[99]*Vtv); + expx=exp(argx); + expx_argx=expx; + expx_Vbex=expx_argx*argx_Vbex; + (*Ibex)=p[31]*(expi-1.0)+p[34]*(expn-1.0)-p[100]*(expx-p[104]); + Ibex_expi=p[31]; + Ibex_expn=p[34]; + Ibex_expx=-p[100]; + *Ibex_Vbex=Ibex_expi*expi_Vbex; + *Ibex_Vbex=(*Ibex_Vbex)+Ibex_expn*expn_Vbex; + *Ibex_Vbex=(*Ibex_Vbex)+Ibex_expx*expx_Vbex; + }else{ + (*Ibex)=p[31]*(expi-1.0)+p[34]*(expn-1.0); + Ibex_expi=p[31]; + Ibex_expn=p[34]; + *Ibex_Vbex=Ibex_expi*expi_Vbex; + *Ibex_Vbex=(*Ibex_Vbex)+Ibex_expn*expn_Vbex; + } + }else{ + argi=(*Vbei)/(p[33]*Vtv); + argi_Vbei=1.0/(p[33]*Vtv); + expi=exp(argi); + expi_argi=expi; + expi_Vbei=expi_argi*argi_Vbei; + argn=(*Vbei)/(p[35]*Vtv); + argn_Vbei=1.0/(p[35]*Vtv); + expn=exp(argn); + expn_argn=expn; + expn_Vbei=expn_argn*argn_Vbei; + if(p[98]>0.0){ + argx=(-p[98]-(*Vbei))/(p[99]*Vtv); + argx_Vbei=-1.0/(p[99]*Vtv); + expx=exp(argx); + expx_argx=expx; + expx_Vbei=expx_argx*argx_Vbei; + (*Ibe)=p[32]*(p[31]*(expi-1.0)+p[34]*(expn-1.0)-p[100]*(expx-p[104])); + Ibe_expi=p[31]*p[32]; + Ibe_expn=p[34]*p[32]; + Ibe_expx=-p[100]*p[32]; + *Ibe_Vbei=Ibe_expi*expi_Vbei; + *Ibe_Vbei=(*Ibe_Vbei)+Ibe_expn*expn_Vbei; + *Ibe_Vbei=(*Ibe_Vbei)+Ibe_expx*expx_Vbei; + }else{ + (*Ibe)=p[32]*(p[31]*(expi-1.0)+p[34]*(expn-1.0)); + Ibe_expi=p[31]*p[32]; + Ibe_expn=p[34]*p[32]; + *Ibe_Vbei=Ibe_expi*expi_Vbei; + *Ibe_Vbei=(*Ibe_Vbei)+Ibe_expn*expn_Vbei; + } + argi=(*Vbex)/(p[33]*Vtv); + argi_Vbex=1.0/(p[33]*Vtv); + expi=exp(argi); + expi_argi=expi; + expi_Vbex=expi_argi*argi_Vbex; + argn=(*Vbex)/(p[35]*Vtv); + argn_Vbex=1.0/(p[35]*Vtv); + expn=exp(argn); + expn_argn=expn; + expn_Vbex=expn_argn*argn_Vbex; + if(p[98]>0.0){ + argx=(-p[98]-(*Vbex))/(p[99]*Vtv); + argx_Vbex=-1.0/(p[99]*Vtv); + expx=exp(argx); + expx_argx=expx; + expx_Vbex=expx_argx*argx_Vbex; + (*Ibex)=(1.0-p[32])*(p[31]*(expi-1.0)+p[34]*(expn-1.0)-p[100]*(expx-p[104])); + Ibex_expi=p[31]*(1.0-p[32]); + Ibex_expn=p[34]*(1.0-p[32]); + Ibex_expx=-p[100]*(1.0-p[32]); + *Ibex_Vbex=Ibex_expi*expi_Vbex; + *Ibex_Vbex=(*Ibex_Vbex)+Ibex_expn*expn_Vbex; + *Ibex_Vbex=(*Ibex_Vbex)+Ibex_expx*expx_Vbex; + }else{ + (*Ibex)=(1.0-p[32])*(p[31]*(expi-1.0)+p[34]*(expn-1.0)); + Ibex_expi=p[31]*(1.0-p[32]); + Ibex_expn=p[34]*(1.0-p[32]); + *Ibex_Vbex=Ibex_expi*expi_Vbex; + *Ibex_Vbex=(*Ibex_Vbex)+Ibex_expn*expn_Vbex; + } + } + argi=(*Vbci)/(p[37]*Vtv); + argi_Vbci=1.0/(p[37]*Vtv); + expi=exp(argi); + expi_argi=expi; + expi_Vbci=expi_argi*argi_Vbci; + argn=(*Vbci)/(p[39]*Vtv); + argn_Vbci=1.0/(p[39]*Vtv); + expn=exp(argn); + expn_argn=expn; + expn_Vbci=expn_argn*argn_Vbci; + Ibcj=p[36]*(expi-1.0)+p[38]*(expn-1.0); + Ibcj_expi=p[36]; + Ibcj_expn=p[38]; + Ibcj_Vbci=Ibcj_expi*expi_Vbci; + Ibcj_Vbci=Ibcj_Vbci+Ibcj_expn*expn_Vbci; + if((p[45]>0.0)||(p[46]>0.0)){ + argi=(*Vbep)/(p[37]*Vtv); + argi_Vbep=1.0/(p[37]*Vtv); + expi=exp(argi); + expi_argi=expi; + expi_Vbep=expi_argi*argi_Vbep; + argn=(*Vbep)/(p[39]*Vtv); + argn_Vbep=1.0/(p[39]*Vtv); + expn=exp(argn); + expn_argn=expn; + expn_Vbep=expn_argn*argn_Vbep; + (*Ibep)=p[45]*(expi-1.0)+p[46]*(expn-1.0); + Ibep_expi=p[45]; + Ibep_expn=p[46]; + *Ibep_Vbep=Ibep_expi*expi_Vbep; + *Ibep_Vbep=(*Ibep_Vbep)+Ibep_expn*expn_Vbep; + }else{ + (*Ibep)=0.0; + *Ibep_Vbep=0.0; + } + if(p[40]>0.0){ + vl=0.5*(sqrt((p[24]-(*Vbci))*(p[24]-(*Vbci))+0.01)+(p[24]-(*Vbci))); + vl_Vbci=0.5*(-(p[24]-(*Vbci))/sqrt(((p[24]-(*Vbci))*(p[24]-(*Vbci)))+0.01)-1.0); + xvar2=(p[25]-1.0); + xvar3=pow(vl,xvar2); + xvar3_vl=xvar3*xvar2/vl; + xvar3_Vbci=xvar3_vl*vl_Vbci; + xvar1=-p[41]*xvar3; + xvar1_xvar3=-p[41]; + xvar1_Vbci=xvar1_xvar3*xvar3_Vbci; + xvar4=exp(xvar1); + xvar4_xvar1=xvar4; + xvar4_Vbci=xvar4_xvar1*xvar1_Vbci; + avalf=p[40]*vl*xvar4; + avalf_vl=p[40]*xvar4; + avalf_xvar4=p[40]*vl; + avalf_Vbci=avalf_vl*vl_Vbci; + avalf_Vbci=avalf_Vbci+avalf_xvar4*xvar4_Vbci; + Igc=((*Itzf)-(*Itzr)-Ibcj)*avalf; + Igc_Itzf=avalf; + Igc_Itzr=-avalf; + Igc_Ibcj=-avalf; + Igc_avalf=-(*Itzr)+(*Itzf)-Ibcj; + Igc_Vbei=Igc_Itzf*(*Itzf_Vbei); + Igc_Vbci=Igc_Itzf*(*Itzf_Vbci); + Igc_Vbci=Igc_Vbci+Igc_Itzr*(*Itzr_Vbci); + Igc_Vbei=Igc_Vbei+Igc_Itzr*(*Itzr_Vbei); + Igc_Vbci=Igc_Vbci+Igc_Ibcj*Ibcj_Vbci; + Igc_Vbci=Igc_Vbci+Igc_avalf*avalf_Vbci; + }else{ + Igc=0.0; + Igc_Vbei=0.0; + Igc_Vbci=0.0; + } + (*Ibc)=Ibcj-Igc; + Ibc_Ibcj=1.0; + Ibc_Igc=-1.0; + *Ibc_Vbci=Ibc_Ibcj*Ibcj_Vbci; + *Ibc_Vbei=Ibc_Igc*Igc_Vbei; + *Ibc_Vbci=(*Ibc_Vbci)+Ibc_Igc*Igc_Vbci; + if(p[1]>0.0){ + (*Ircx)=(*Vrcx)/p[1]; + *Ircx_Vrcx=1.0/p[1]; + }else{ + (*Ircx)=0.0; + *Ircx_Vrcx=0.0; + } + argi=(*Vbci)/Vtv; + argi_Vbci=1.0/Vtv; + expi=exp(argi); + expi_argi=expi; + expi_Vbci=expi_argi*argi_Vbci; + argx=(*Vbcx)/Vtv; + argx_Vbcx=1.0/Vtv; + expx=exp(argx); + expx_argx=expx; + expx_Vbcx=expx_argx*argx_Vbcx; + Kbci=sqrt(1.0+p[4]*expi); + Kbci_expi=p[4]/(2.0*sqrt(expi*p[4]+1.0)); + Kbci_Vbci=Kbci_expi*expi_Vbci; + Kbcx=sqrt(1.0+p[4]*expx); + Kbcx_expx=p[4]/(2.0*sqrt(expx*p[4]+1.0)); + Kbcx_Vbcx=Kbcx_expx*expx_Vbcx; + if(p[2]>0.0){ + rKp1=(Kbci+1.0)/(Kbcx+1.0); + rKp1_Kbci=1.0/(Kbcx+1.0); + rKp1_Kbcx=-(Kbci+1.0)/((Kbcx+1.0)*(Kbcx+1.0)); + rKp1_Vbci=rKp1_Kbci*Kbci_Vbci; + rKp1_Vbcx=rKp1_Kbcx*Kbcx_Vbcx; + xvar1=log(rKp1); + xvar1_rKp1=1.0/rKp1; + xvar1_Vbci=xvar1_rKp1*rKp1_Vbci; + xvar1_Vbcx=xvar1_rKp1*rKp1_Vbcx; + Iohm=((*Vrci)+Vtv*(Kbci-Kbcx-xvar1))/p[2]; + Iohm_Vrci=1.0/p[2]; + Iohm_Kbci=Vtv/p[2]; + Iohm_Kbcx=-Vtv/p[2]; + Iohm_xvar1=-Vtv/p[2]; + Iohm_Vbci=Iohm_Kbci*Kbci_Vbci; + Iohm_Vbcx=Iohm_Kbcx*Kbcx_Vbcx; + Iohm_Vbci=Iohm_Vbci+Iohm_xvar1*xvar1_Vbci; + Iohm_Vbcx=Iohm_Vbcx+Iohm_xvar1*xvar1_Vbcx; + derf=IVO*p[2]*Iohm/(1.0+0.5*IVO*IHRCF*sqrt((*Vrci)*(*Vrci)+0.01)); + derf_Iohm=IVO*p[2]/(0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0); + derf_Vrci=-0.5*IHRCF*Iohm*(IVO*IVO)*p[2]*(*Vrci)/(sqrt(((*Vrci)*(*Vrci))+0.01)*((0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0)*(0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0))); + derf_Vrci=derf_Vrci+derf_Iohm*Iohm_Vrci; + derf_Vbci=derf_Iohm*Iohm_Vbci; + derf_Vbcx=derf_Iohm*Iohm_Vbcx; + (*Irci)=Iohm/sqrt(1.0+derf*derf); + Irci_Iohm=1.0/sqrt((derf*derf)+1.0); + Irci_derf=-derf*Iohm/pow(((derf*derf)+1.0),(3.0/2.0)); + *Irci_Vrci=Irci_Iohm*Iohm_Vrci; + *Irci_Vbci=Irci_Iohm*Iohm_Vbci; + *Irci_Vbcx=Irci_Iohm*Iohm_Vbcx; + *Irci_Vrci=(*Irci_Vrci)+Irci_derf*derf_Vrci; + *Irci_Vbci=(*Irci_Vbci)+Irci_derf*derf_Vbci; + *Irci_Vbcx=(*Irci_Vbcx)+Irci_derf*derf_Vbcx; + }else{ + (*Irci)=0.0; + *Irci_Vrci=0.0; + *Irci_Vbci=0.0; + *Irci_Vbcx=0.0; + } + if(p[6]>0.0){ + (*Irbx)=(*Vrbx)/p[6]; + *Irbx_Vrbx=1.0/p[6]; + }else{ + (*Irbx)=0.0; + *Irbx_Vrbx=0.0; + } + if(p[7]>0.0){ + (*Irbi)=(*Vrbi)*qb/p[7]; + *Irbi_Vrbi=qb/p[7]; + Irbi_qb=(*Vrbi)/p[7]; + *Irbi_Vbei=Irbi_qb*qb_Vbei; + *Irbi_Vbci=Irbi_qb*qb_Vbci; + }else{ + (*Irbi)=0.0; + *Irbi_Vrbi=0.0; + *Irbi_Vbei=0.0; + *Irbi_Vbci=0.0; + } + if(p[8]>0.0){ + (*Ire)=(*Vre)/p[8]; + *Ire_Vre=1.0/p[8]; + }else{ + (*Ire)=0.0; + *Ire_Vre=0.0; + } + if(p[10]>0.0){ + (*Irbp)=(*Vrbp)*qbp/p[10]; + *Irbp_Vrbp=qbp/p[10]; + Irbp_qbp=(*Vrbp)/p[10]; + *Irbp_Vbep=Irbp_qbp*qbp_Vbep; + *Irbp_Vbci=Irbp_qbp*qbp_Vbci; + }else{ + (*Irbp)=0.0; + *Irbp_Vrbp=0.0; + *Irbp_Vbep=0.0; + *Irbp_Vbci=0.0; + } + if((p[47]>0.0)||(p[49]>0.0)){ + argi=(*Vbcp)/(p[48]*Vtv); + argi_Vbcp=1.0/(p[48]*Vtv); + expi=exp(argi); + expi_argi=expi; + expi_Vbcp=expi_argi*argi_Vbcp; + argn=(*Vbcp)/(p[50]*Vtv); + argn_Vbcp=1.0/(p[50]*Vtv); + expn=exp(argn); + expn_argn=expn; + expn_Vbcp=expn_argn*argn_Vbcp; + (*Ibcp)=p[47]*(expi-1.0)+p[49]*(expn-1.0); + Ibcp_expi=p[47]; + Ibcp_expn=p[49]; + *Ibcp_Vbcp=Ibcp_expi*expi_Vbcp; + *Ibcp_Vbcp=(*Ibcp_Vbcp)+Ibcp_expn*expn_Vbcp; + }else{ + (*Ibcp)=0.0; + *Ibcp_Vbcp=0.0; + } + if(p[9]>0.0){ + (*Irs)=(*Vrs)/p[9]; + *Irs_Vrs=1.0/p[9]; + }else{ + (*Irs)=0.0; + *Irs_Vrs=0.0; + } + if(Ifi>0.0){ + sgIf=1.0; + }else{ + sgIf=0.0; + } + rIf=Ifi*sgIf*IITF; + rIf_Ifi=IITF*sgIf; + rIf_Vbei=rIf_Ifi*Ifi_Vbei; + mIf=rIf/(rIf+1.0); + mIf_rIf=1.0/(rIf+1.0)-rIf/((rIf+1.0)*(rIf+1.0)); + mIf_Vbei=mIf_rIf*rIf_Vbei; + xvar1=(*Vbci)*IVTF/1.44; + xvar1_Vbci=0.6944444*IVTF; + xvar2=exp(xvar1); + xvar2_xvar1=xvar2; + xvar2_Vbci=xvar2_xvar1*xvar1_Vbci; + tff=p[56]*(1.0+p[57]*q1)*(1.0+p[58]*xvar2*(slTF+mIf*mIf)*sgIf); + tff_q1=p[57]*p[56]*(sgIf*(slTF+(mIf*mIf))*p[58]*xvar2+1.0); + tff_xvar2=(q1*p[57]+1.0)*sgIf*(slTF+(mIf*mIf))*p[56]*p[58]; + tff_mIf=2.0*mIf*(q1*p[57]+1.0)*sgIf*p[56]*p[58]*xvar2; + tff_Vbei=tff_q1*q1_Vbei; + tff_Vbci=tff_q1*q1_Vbci; + tff_Vbci=tff_Vbci+tff_xvar2*xvar2_Vbci; + tff_Vbei=tff_Vbei+tff_mIf*mIf_Vbei; + (*Qbe)=p[16]*qdbe*p[32]+tff*Ifi/qb; + Qbe_qdbe=p[16]*p[32]; + Qbe_tff=Ifi/qb; + Qbe_Ifi=tff/qb; + Qbe_qb=-Ifi*tff/(qb*qb); + *Qbe_Vbei=Qbe_qdbe*qdbe_Vbei; + *Qbe_Vbei=(*Qbe_Vbei)+Qbe_tff*tff_Vbei; + *Qbe_Vbci=Qbe_tff*tff_Vbci; + *Qbe_Vbei=(*Qbe_Vbei)+Qbe_Ifi*Ifi_Vbei; + *Qbe_Vbei=(*Qbe_Vbei)+Qbe_qb*qb_Vbei; + *Qbe_Vbci=(*Qbe_Vbci)+Qbe_qb*qb_Vbci; + (*Qbex)=p[16]*qdbex*(1.0-p[32]); + Qbex_qdbex=p[16]*(1.0-p[32]); + *Qbex_Vbex=Qbex_qdbex*qdbex_Vbex; + (*Qbc)=p[21]*qdbc+p[61]*Iri+p[22]*Kbci; + Qbc_qdbc=p[21]; + Qbc_Iri=p[61]; + Qbc_Kbci=p[22]; + *Qbc_Vbci=Qbc_qdbc*qdbc_Vbci; + *Qbc_Vbci=(*Qbc_Vbci)+Qbc_Iri*Iri_Vbci; + *Qbc_Vbci=(*Qbc_Vbci)+Qbc_Kbci*Kbci_Vbci; + (*Qbcx)=p[22]*Kbcx; + Qbcx_Kbcx=p[22]; + *Qbcx_Vbcx=Qbcx_Kbcx*Kbcx_Vbcx; + (*Qbep)=p[23]*qdbep+p[61]*Ifp; + Qbep_qdbep=p[23]; + Qbep_Ifp=p[61]; + *Qbep_Vbep=Qbep_qdbep*qdbep_Vbep; + *Qbep_Vbep=(*Qbep_Vbep)+Qbep_Ifp*Ifp_Vbep; + *Qbep_Vbci=Qbep_Ifp*Ifp_Vbci; + (*Qbcp)=p[27]*qdbcp+p[87]*(*Vbcp); + Qbcp_qdbcp=p[27]; + *Qbcp_Vbcp=p[87]; + *Qbcp_Vbcp=(*Qbcp_Vbcp)+Qbcp_qdbcp*qdbcp_Vbcp; + (*Qbeo)=(*Vbe)*p[15]; + *Qbeo_Vbe=p[15]; + (*Qbco)=(*Vbc)*p[20]; + *Qbco_Vbc=p[20]; + +/* Scale outputs */ + + if((*SCALE)!=1.0){ + *Ibe=(*SCALE)*(*Ibe); + *Ibe_Vbei=(*SCALE)*(*Ibe_Vbei); + *Ibex=(*SCALE)*(*Ibex); + *Ibex_Vbex=(*SCALE)*(*Ibex_Vbex); + *Itzf=(*SCALE)*(*Itzf); + *Itzf_Vbei=(*SCALE)*(*Itzf_Vbei); + *Itzf_Vbci=(*SCALE)*(*Itzf_Vbci); + *Itzr=(*SCALE)*(*Itzr); + *Itzr_Vbci=(*SCALE)*(*Itzr_Vbci); + *Itzr_Vbei=(*SCALE)*(*Itzr_Vbei); + *Ibc=(*SCALE)*(*Ibc); + *Ibc_Vbci=(*SCALE)*(*Ibc_Vbci); + *Ibc_Vbei=(*SCALE)*(*Ibc_Vbei); + *Ibep=(*SCALE)*(*Ibep); + *Ibep_Vbep=(*SCALE)*(*Ibep_Vbep); + *Ircx=(*SCALE)*(*Ircx); + *Ircx_Vrcx=(*SCALE)*(*Ircx_Vrcx); + *Irci=(*SCALE)*(*Irci); + *Irci_Vrci=(*SCALE)*(*Irci_Vrci); + *Irci_Vbci=(*SCALE)*(*Irci_Vbci); + *Irci_Vbcx=(*SCALE)*(*Irci_Vbcx); + *Irbx=(*SCALE)*(*Irbx); + *Irbx_Vrbx=(*SCALE)*(*Irbx_Vrbx); + *Irbi=(*SCALE)*(*Irbi); + *Irbi_Vrbi=(*SCALE)*(*Irbi_Vrbi); + *Irbi_Vbei=(*SCALE)*(*Irbi_Vbei); + *Irbi_Vbci=(*SCALE)*(*Irbi_Vbci); + *Ire=(*SCALE)*(*Ire); + *Ire_Vre=(*SCALE)*(*Ire_Vre); + *Irbp=(*SCALE)*(*Irbp); + *Irbp_Vrbp=(*SCALE)*(*Irbp_Vrbp); + *Irbp_Vbep=(*SCALE)*(*Irbp_Vbep); + *Irbp_Vbci=(*SCALE)*(*Irbp_Vbci); + *Qbe=(*SCALE)*(*Qbe); + *Qbe_Vbei=(*SCALE)*(*Qbe_Vbei); + *Qbe_Vbci=(*SCALE)*(*Qbe_Vbci); + *Qbex=(*SCALE)*(*Qbex); + *Qbex_Vbex=(*SCALE)*(*Qbex_Vbex); + *Qbc=(*SCALE)*(*Qbc); + *Qbc_Vbci=(*SCALE)*(*Qbc_Vbci); + *Qbcx=(*SCALE)*(*Qbcx); + *Qbcx_Vbcx=(*SCALE)*(*Qbcx_Vbcx); + *Qbep=(*SCALE)*(*Qbep); + *Qbep_Vbep=(*SCALE)*(*Qbep_Vbep); + *Qbep_Vbci=(*SCALE)*(*Qbep_Vbci); + *Qbeo=(*SCALE)*(*Qbeo); + *Qbeo_Vbe=(*SCALE)*(*Qbeo_Vbe); + *Qbco=(*SCALE)*(*Qbco); + *Qbco_Vbc=(*SCALE)*(*Qbco_Vbc); + *Ibcp=(*SCALE)*(*Ibcp); + *Ibcp_Vbcp=(*SCALE)*(*Ibcp_Vbcp); + *Iccp=(*SCALE)*(*Iccp); + *Iccp_Vbep=(*SCALE)*(*Iccp_Vbep); + *Iccp_Vbci=(*SCALE)*(*Iccp_Vbci); + *Iccp_Vbcp=(*SCALE)*(*Iccp_Vbcp); + *Irs=(*SCALE)*(*Irs); + *Irs_Vrs=(*SCALE)*(*Irs_Vrs); + *Qbcp=(*SCALE)*(*Qbcp); + *Qbcp_Vbcp=(*SCALE)*(*Qbcp_Vbcp); + } + return(0); +} +int vbic_4T_et_cf_fj(double *p + ,double *Vrth, double *Vbei, double *Vbex, double *Vbci, double *Vbep, double *Vbcp + ,double *Vrcx, double *Vbcx, double *Vrci, double *Vrbx, double *Vrbi, double *Vre, double *Vrbp + ,double *Vrs, double *Vbe, double *Vbc, double *Vcei, double *Vcep, double *Ibe, double *Ibe_Vrth + ,double *Ibe_Vbei, double *Ibex, double *Ibex_Vrth, double *Ibex_Vbex, double *Itzf, double *Itzf_Vrth, double *Itzf_Vbei + ,double *Itzf_Vbci, double *Itzr, double *Itzr_Vrth, double *Itzr_Vbci, double *Itzr_Vbei, double *Ibc, double *Ibc_Vrth + ,double *Ibc_Vbci, double *Ibc_Vbei, double *Ibep, double *Ibep_Vrth, double *Ibep_Vbep, double *Ircx, double *Ircx_Vrcx + ,double *Ircx_Vrth, double *Irci, double *Irci_Vrci, double *Irci_Vrth, double *Irci_Vbci, double *Irci_Vbcx, double *Irbx + ,double *Irbx_Vrbx, double *Irbx_Vrth, double *Irbi, double *Irbi_Vrbi, double *Irbi_Vrth, double *Irbi_Vbei, double *Irbi_Vbci + ,double *Ire, double *Ire_Vre, double *Ire_Vrth, double *Irbp, double *Irbp_Vrbp, double *Irbp_Vrth, double *Irbp_Vbep + ,double *Irbp_Vbci, double *Qbe, double *Qbe_Vrth, double *Qbe_Vbei, double *Qbe_Vbci, double *Qbex, double *Qbex_Vrth + ,double *Qbex_Vbex, double *Qbc, double *Qbc_Vrth, double *Qbc_Vbci, double *Qbcx, double *Qbcx_Vrth, double *Qbcx_Vbcx + ,double *Qbep, double *Qbep_Vrth, double *Qbep_Vbep, double *Qbep_Vbci, double *Qbeo, double *Qbeo_Vbe, double *Qbco + ,double *Qbco_Vbc, double *Ibcp, double *Ibcp_Vrth, double *Ibcp_Vbcp, double *Iccp, double *Iccp_Vrth, double *Iccp_Vbep + ,double *Iccp_Vbci, double *Iccp_Vbcp, double *Irs, double *Irs_Vrs, double *Irs_Vrth, double *Qbcp, double *Qbcp_Vrth + ,double *Qbcp_Vbcp, double *Irth, double *Irth_Vrth, double *Ith, double *Ith_Vrth, double *Ith_Vbei, double *Ith_Vbci + ,double *Ith_Vcei, double *Ith_Vbex, double *Ith_Vbep, double *Ith_Vrs, double *Ith_Vbcp, double *Ith_Vcep, double *Ith_Vrcx + ,double *Ith_Vrci, double *Ith_Vbcx, double *Ith_Vrbx, double *Ith_Vrbi, double *Ith_Vre, double *Ith_Vrbp, double *Qcth + ,double *Qcth_Vrth, double *SCALE) +{ +double Tini,Tdev,Tdev_Vrth,Vtv,Vtv_Tdev,Vtv_Vrth,rT; +double rT_Tdev,rT_Vrth,dT,dT_Tdev,dT_Vrth,xvar1,xvar1_rT; +double xvar1_Vrth,IKFatT,IKFatT_xvar1,IKFatT_Vrth,RCXatT,RCXatT_xvar1,RCXatT_Vrth; +double RCIatT,RCIatT_xvar1,RCIatT_Vrth,RBXatT,RBXatT_xvar1,RBXatT_Vrth,RBIatT; +double RBIatT_xvar1,RBIatT_Vrth,REatT,REatT_xvar1,REatT_Vrth,RSatT,RSatT_xvar1; +double RSatT_Vrth,RBPatT,RBPatT_xvar1,RBPatT_Vrth,xvar2,xvar2_rT,xvar2_Vrth; +double xvar3,xvar3_rT,xvar3_Vrth,xvar3_Vtv,xvar4,xvar4_xvar3,xvar4_Vrth; +double xvar1_xvar2,xvar1_xvar4,xvar5,xvar6,xvar6_xvar1,xvar6_Vrth,ISatT; +double ISatT_xvar6,ISatT_Vrth,ISRRatT,ISRRatT_xvar6,ISRRatT_Vrth,ISPatT,ISPatT_xvar6; +double ISPatT_Vrth,IBEIatT,IBEIatT_xvar6,IBEIatT_Vrth,IBENatT,IBENatT_xvar6,IBENatT_Vrth; +double IBCIatT,IBCIatT_xvar6,IBCIatT_Vrth,IBCNatT,IBCNatT_xvar6,IBCNatT_Vrth,IBEIPatT; +double IBEIPatT_xvar6,IBEIPatT_Vrth,IBENPatT,IBENPatT_xvar6,IBENPatT_Vrth,IBCIPatT,IBCIPatT_xvar6; +double IBCIPatT_Vrth,IBCNPatT,IBCNPatT_xvar6,IBCNPatT_Vrth,NFatT,NFatT_dT,NFatT_Vrth; +double NRatT,NRatT_dT,NRatT_Vrth,AVC2atT,AVC2atT_dT,AVC2atT_Vrth,VBBEatT; +double VBBEatT_dT,VBBEatT_Vrth,NBBEatT,NBBEatT_dT,NBBEatT_Vrth,xvar2_Vtv,xvar3_xvar2; +double xvar4_rT,xvar4_Vtv,xvar5_xvar4,xvar5_Vrth,xvar1_xvar3,xvar1_xvar5,psiio; +double psiio_Vtv,psiio_Vrth,psiio_rT,psiio_xvar6,psiin,psiin_psiio,psiin_Vrth; +double psiin_rT,psiin_Vtv,psiin_xvar1,xvar2_psiin,xvar4_xvar1,PEatT,PEatT_psiin; +double PEatT_Vrth,PEatT_Vtv,PEatT_xvar4,PCatT,PCatT_psiin,PCatT_Vrth,PCatT_Vtv; +double PCatT_xvar4,PSatT,PSatT_psiin,PSatT_Vrth,PSatT_Vtv,PSatT_xvar4,xvar1_PEatT; +double xvar2_xvar1,CJEatT,CJEatT_xvar2,CJEatT_Vrth,xvar1_PCatT,CJCatT,CJCatT_xvar2; +double CJCatT_Vrth,CJEPatT,CJEPatT_xvar2,CJEPatT_Vrth,xvar1_PSatT,CJCPatT,CJCPatT_xvar2; +double CJCPatT_Vrth,GAMMatT,GAMMatT_xvar1,GAMMatT_Vrth,GAMMatT_xvar3,VOatT,VOatT_xvar1; +double VOatT_Vrth,xvar1_VBBEatT,xvar1_NBBEatT,xvar1_Vtv,EBBEatT,EBBEatT_xvar1,EBBEatT_Vrth; +double IVEF,IVER,IIKF,IIKF_IKFatT,IIKF_Vrth,IIKR,IIKP; +double IVO,IVO_VOatT,IVO_Vrth,IHRCF,IVTF,IITF,slTF; +double dv0,dv0_PEatT,dv0_Vrth,dvh,dvh_Vbei,dvh_dv0,dvh_Vrth; +double pwq,qlo,qlo_PEatT,qlo_Vrth,qlo_Vbei,qhi,qhi_dvh; +double qhi_Vbei,qhi_Vrth,qhi_PEatT,xvar1_Vbei,xvar3_xvar1,xvar3_Vbei,qlo_xvar3; +double qdbe,qdbe_qlo,qdbe_Vrth,qdbe_Vbei,qdbe_qhi,mv0,mv0_dv0; +double mv0_Vrth,vl0,vl0_dv0,vl0_Vrth,vl0_mv0,xvar1_vl0,q0; +double q0_PEatT,q0_Vrth,q0_xvar3,dv,dv_Vbei,dv_dv0,dv_Vrth; +double mv,mv_dv,mv_Vbei,mv_Vrth,vl,vl_dv,vl_Vbei; +double vl_Vrth,vl_mv,vl_dv0,xvar1_vl,qdbe_vl,qdbe_vl0,qdbe_q0; +double dvh_Vbex,qlo_Vbex,qhi_Vbex,xvar1_Vbex,xvar3_Vbex,qdbex,qdbex_qlo; +double qdbex_Vrth,qdbex_Vbex,qdbex_qhi,dv_Vbex,mv_Vbex,vl_Vbex,qdbex_vl; +double qdbex_vl0,qdbex_q0,dv0_PCatT,dvh_Vbci,qlo_PCatT,qlo_Vbci,qhi_Vbci; +double qhi_PCatT,xvar1_Vbci,xvar3_Vbci,qdbc,qdbc_qlo,qdbc_Vrth,qdbc_Vbci; +double qdbc_qhi,vn0,vn0_dv0,vn0_Vrth,vnl0,vnl0_vn0,vnl0_Vrth; +double vl0_vnl0,qlo0,qlo0_PCatT,qlo0_Vrth,qlo0_xvar3,vn,vn_Vbci; +double vn_dv0,vn_Vrth,vnl,vnl_vn,vnl_Vbci,vnl_Vrth,vl_vnl; +double vl_Vbci,sel,sel_vnl,sel_Vbci,sel_Vrth,crt,crt_xvar1; +double crt_Vrth,xvar1_dv0,cmx,cmx_xvar1,cmx_Vrth,cl,cl_sel; +double cl_Vbci,cl_Vrth,cl_crt,cl_cmx,ql,ql_Vbci,ql_vl; +double ql_Vrth,ql_vl0,ql_cl,qdbc_ql,qdbc_qlo0,q0_PCatT,dv_Vbci; +double mv_Vbci,qdbc_vl,qdbc_vl0,qdbc_q0,dvh_Vbep,qlo_Vbep,qhi_Vbep; +double xvar1_Vbep,xvar3_Vbep,qdbep,qdbep_qlo,qdbep_Vrth,qdbep_Vbep,qdbep_qhi; +double vn_Vbep,vnl_Vbep,vl_Vbep,sel_Vbep,cl_Vbep,ql_Vbep,qdbep_ql; +double qdbep_qlo0,dv_Vbep,mv_Vbep,qdbep_vl,qdbep_vl0,qdbep_q0,dv0_PSatT; +double dvh_Vbcp,qlo_PSatT,qlo_Vbcp,qhi_Vbcp,qhi_PSatT,xvar1_Vbcp,xvar3_Vbcp; +double qdbcp,qdbcp_qlo,qdbcp_Vrth,qdbcp_Vbcp,qdbcp_qhi,q0_PSatT; +double dv_Vbcp,mv_Vbcp,vl_Vbcp,qdbcp_vl,qdbcp_vl0,qdbcp_q0,argi; +double argi_Vbei,argi_NFatT,argi_Vrth,argi_Vtv,expi,expi_argi,expi_Vbei; +double expi_Vrth,Ifi,Ifi_ISatT,Ifi_Vrth,Ifi_expi,Ifi_Vbei,argi_Vbci; +double argi_NRatT,expi_Vbci,Iri,Iri_ISatT,Iri_Vrth,Iri_ISRRatT,Iri_expi; +double Iri_Vbci,q1z,q1z_qdbe,q1z_Vrth,q1z_Vbei,q1z_qdbc,q1z_Vbci; +double q1,q1_q1z,q1_Vrth,q1_Vbei,q1_Vbci,q2,q2_Ifi; +double q2_Vrth,q2_Vbei,q2_IIKF,q2_Iri,q2_Vbci,xvar3_q1,xvar1_q2; +double xvar4_Vbei,xvar4_Vbci,qb,qb_q1,qb_Vrth,qb_Vbei,qb_Vbci; +double qb_xvar4,xvar2_Vbei,xvar2_Vbci,qb_xvar2,Itzr_Iri,Itzr_qb,Itzf_Ifi; +double Itzf_qb,argi_Vbep,expi_Vbep,argx,argx_Vbci,argx_Vtv,argx_Vrth; +double expx,expx_argx,expx_Vbci,expx_Vrth,Ifp,Ifp_ISPatT,Ifp_Vrth; +double Ifp_expi,Ifp_Vbep,Ifp_expx,Ifp_Vbci,q2p,q2p_Ifp,q2p_Vrth; +double q2p_Vbep,q2p_Vbci,qbp,qbp_q2p,qbp_Vrth,qbp_Vbep,qbp_Vbci; +double argi_Vbcp,expi_Vbcp,Irp,Irp_ISPatT,Irp_Vrth,Irp_expi,Irp_Vbcp; +double Iccp_Ifp,Iccp_Irp,Iccp_qbp,argn,argn_Vbei,argn_Vtv,argn_Vrth; +double expn,expn_argn,expn_Vbei,expn_Vrth,argx_VBBEatT,argx_Vbei,argx_NBBEatT; +double expx_Vbei,Ibe_IBEIatT,Ibe_expi,Ibe_IBENatT,Ibe_expn,Ibe_expx,Ibe_EBBEatT; +double argi_Vbex,expi_Vbex,argn_Vbex,expn_Vbex,argx_Vbex,expx_Vbex,Ibex_IBEIatT; +double Ibex_expi,Ibex_IBENatT,Ibex_expn,Ibex_expx,Ibex_EBBEatT,argn_Vbci,expn_Vbci; +double Ibcj,Ibcj_IBCIatT,Ibcj_Vrth,Ibcj_expi,Ibcj_Vbci,Ibcj_IBCNatT,Ibcj_expn; +double argn_Vbep,expn_Vbep,Ibep_IBEIPatT,Ibep_expi,Ibep_IBENPatT,Ibep_expn,vl_PCatT; +double xvar3_vl,xvar1_AVC2atT,avalf,avalf_vl,avalf_Vrth,avalf_Vbci,avalf_xvar4; +double Igc,Igc_Itzf,Igc_Vrth,Igc_Vbei,Igc_Vbci,Igc_Itzr,Igc_Ibcj; +double Igc_avalf,Ibc_Ibcj,Ibc_Igc,Ircx_RCXatT,argx_Vbcx,expx_Vbcx,Kbci; +double Kbci_GAMMatT,Kbci_Vrth,Kbci_expi,Kbci_Vbci,Kbcx,Kbcx_GAMMatT,Kbcx_Vrth; +double Kbcx_expx,Kbcx_Vbcx,rKp1,rKp1_Kbci,rKp1_Vrth,rKp1_Vbci,rKp1_Kbcx; +double rKp1_Vbcx,xvar1_rKp1,xvar1_Vbcx,Iohm,Iohm_Vrci,Iohm_Vtv,Iohm_Vrth; +double Iohm_Kbci,Iohm_Vbci,Iohm_Kbcx,Iohm_Vbcx,Iohm_xvar1,Iohm_RCIatT,derf; +double derf_IVO,derf_Vrth,derf_RCIatT,derf_Iohm,derf_Vrci,derf_Vbci,derf_Vbcx; +double Irci_Iohm,Irci_derf,Irbx_RBXatT,Irbi_qb,Irbi_RBIatT,Ire_REatT,Irbp_qbp; +double Irbp_RBPatT,argn_Vbcp,expn_Vbcp,Ibcp_IBCIPatT,Ibcp_expi,Ibcp_IBCNPatT,Ibcp_expn; +double Irs_RSatT,sgIf,rIf,rIf_Ifi,rIf_Vrth,rIf_Vbei,mIf; +double mIf_rIf,mIf_Vrth,mIf_Vbei,tff,tff_q1,tff_Vrth,tff_Vbei; +double tff_Vbci,tff_xvar2,tff_mIf,Qbe_CJEatT,Qbe_qdbe,Qbe_tff,Qbe_Ifi; +double Qbe_qb,Qbex_CJEatT,Qbex_qdbex,Qbc_CJCatT,Qbc_qdbc,Qbc_Iri,Qbc_Kbci; +double Qbcx_Kbcx,Qbep_CJEPatT,Qbep_qdbep,Qbep_Ifp,Qbcp_CJCPatT,Qbcp_qdbcp,Ith_Ibe; +double Ith_Ibc,Ith_Itzf,Ith_Itzr,Ith_Ibex,Ith_Ibep,Ith_Irs,Ith_Ibcp; +double Ith_Iccp,Ith_Ircx,Ith_Irci,Ith_Irbx,Ith_Irbi,Ith_Ire,Ith_Irbp; /* Function and derivative code */ @@ -3980,67 +5400,709 @@ double Ith_Iccp,Ith_Ircx,Ith_Irci,Ith_Irbx,Ith_Irbi,Ith_Ire,Ith_Irbp; } return(0); } -int vbic_4T_it_cf_fj(double *p - ,double *Vbei, double *Vbex, double *Vbci, double *Vbep, double *Vbcp, double *Vrcx - ,double *Vbcx, double *Vrci, double *Vrbx, double *Vrbi, double *Vre, double *Vrbp, double *Vrs - ,double *Vbe, double *Vbc, double *Ibe, double *Ibe_Vbei, double *Ibex, double *Ibex_Vbex, double *Itzf - ,double *Itzf_Vbei, double *Itzf_Vbci, double *Itzr, double *Itzr_Vbci, double *Itzr_Vbei, double *Ibc, double *Ibc_Vbci - ,double *Ibc_Vbei, double *Ibep, double *Ibep_Vbep, double *Ircx, double *Ircx_Vrcx, double *Irci, double *Irci_Vrci - ,double *Irci_Vbci, double *Irci_Vbcx, double *Irbx, double *Irbx_Vrbx, double *Irbi, double *Irbi_Vrbi, double *Irbi_Vbei - ,double *Irbi_Vbci, double *Ire, double *Ire_Vre, double *Irbp, double *Irbp_Vrbp, double *Irbp_Vbep, double *Irbp_Vbci - ,double *Qbe, double *Qbe_Vbei, double *Qbe_Vbci, double *Qbex, double *Qbex_Vbex, double *Qbc, double *Qbc_Vbci - ,double *Qbcx, double *Qbcx_Vbcx, double *Qbep, double *Qbep_Vbep, double *Qbep_Vbci, double *Qbeo, double *Qbeo_Vbe - ,double *Qbco, double *Qbco_Vbc, double *Ibcp, double *Ibcp_Vbcp, double *Iccp, double *Iccp_Vbep, double *Iccp_Vbci - ,double *Iccp_Vbcp, double *Irs, double *Irs_Vrs, double *Qbcp, double *Qbcp_Vbcp, double *SCALE) +int vbic_4T_et_xf_fj(double *p + ,double *Vrth,double *Vbei,double *Vbex,double *Vbci,double *Vbep,double *Vbcp + ,double *Vrxf,double *Vrcx,double *Vbcx,double *Vrci,double *Vrbx,double *Vrbi,double *Vre + ,double *Vrbp,double *Vrs,double *Vbe,double *Vbc,double *Vcei,double *Vcep,double *Vcxf + ,double *Ibe,double *Ibe_Vrth,double *Ibe_Vbei,double *Ibex,double *Ibex_Vrth,double *Ibex_Vbex,double *Itxf + ,double *Itxf_Vrxf,double *Itzr,double *Itzr_Vrth,double *Itzr_Vbci,double *Itzr_Vbei,double *Ibc,double *Ibc_Vrth + ,double *Ibc_Vbci,double *Ibc_Vrxf,double *Ibc_Vbei,double *Ibep,double *Ibep_Vrth,double *Ibep_Vbep,double *Ircx + ,double *Ircx_Vrcx,double *Ircx_Vrth,double *Irci,double *Irci_Vrci,double *Irci_Vrth,double *Irci_Vbci,double *Irci_Vbcx + ,double *Irbx,double *Irbx_Vrbx,double *Irbx_Vrth,double *Irbi,double *Irbi_Vrbi,double *Irbi_Vrth,double *Irbi_Vbei + ,double *Irbi_Vbci,double *Ire,double *Ire_Vre,double *Ire_Vrth,double *Irbp,double *Irbp_Vrbp,double *Irbp_Vrth + ,double *Irbp_Vbep,double *Irbp_Vbci,double *Qbe,double *Qbe_Vrth,double *Qbe_Vbei,double *Qbe_Vbci,double *Qbex + ,double *Qbex_Vrth,double *Qbex_Vbex,double *Qbc,double *Qbc_Vrth,double *Qbc_Vbci,double *Qbcx,double *Qbcx_Vrth + ,double *Qbcx_Vbcx,double *Qbep,double *Qbep_Vrth,double *Qbep_Vbep,double *Qbep_Vbci,double *Qbeo,double *Qbeo_Vbe + ,double *Qbco,double *Qbco_Vbc,double *Ibcp,double *Ibcp_Vrth,double *Ibcp_Vbcp,double *Iccp,double *Iccp_Vrth + ,double *Iccp_Vbep,double *Iccp_Vbci,double *Iccp_Vbcp,double *Irs,double *Irs_Vrs,double *Irs_Vrth,double *Qbcp + ,double *Qbcp_Vrth,double *Qbcp_Vbcp,double *Irth,double *Irth_Vrth,double *Ith,double *Ith_Vrth,double *Ith_Vbei + ,double *Ith_Vbci,double *Ith_Vrxf,double *Ith_Vcei,double *Ith_Vbex,double *Ith_Vbep,double *Ith_Vrs,double *Ith_Vbcp + ,double *Ith_Vcep,double *Ith_Vrcx,double *Ith_Vrci,double *Ith_Vbcx,double *Ith_Vrbx,double *Ith_Vrbi,double *Ith_Vre + ,double *Ith_Vrbp,double *Qcth,double *Qcth_Vrth,double *Ixzf,double *Ixzf_Vrth,double *Ixzf_Vbei,double *Ixzf_Vbci + ,double *Ixxf,double *Ixxf_Vrxf,double *Qcxf,double *Qcxf_Vcxf,double *Flxf,double *Flxf_Vrxf,double *SCALE) { -double Vtv,IVEF,IVER,IIKF,IIKR,IIKP,IVO; -double IHRCF,IVTF,IITF,slTF,dv0,dvh,dvh_Vbei; -double xvar1,xvar2,pwq,qlo,qlo_Vbei,qhi,qhi_dvh; -double qhi_Vbei,xvar1_Vbei,xvar3,xvar3_xvar1,xvar3_Vbei,qlo_xvar3,qdbe; -double qdbe_qlo,qdbe_Vbei,qdbe_qhi,mv0,vl0,q0,dv; -double dv_Vbei,mv,mv_dv,mv_Vbei,vl,vl_dv,vl_Vbei; -double vl_mv,xvar1_vl,qdbe_vl,dvh_Vbex,qlo_Vbex,qhi_Vbex,xvar1_Vbex; -double xvar3_Vbex,qdbex,qdbex_qlo,qdbex_Vbex,qdbex_qhi,dv_Vbex,mv_Vbex; -double vl_Vbex,qdbex_vl,dvh_Vbci,qlo_Vbci,qhi_Vbci,xvar1_Vbci,xvar3_Vbci; -double qdbc,qdbc_qlo,qdbc_Vbci,qdbc_qhi,vn0,vnl0,qlo0; -double vn,vn_Vbci,vnl,vnl_vn,vnl_Vbci,vl_vnl,vl_Vbci; -double sel,sel_vnl,sel_Vbci,crt,cmx,cl,cl_sel; -double cl_Vbci,ql,ql_Vbci,ql_vl,ql_cl,qdbc_ql,dv_Vbci; -double mv_Vbci,qdbc_vl,dvh_Vbep,qlo_Vbep,qhi_Vbep,xvar1_Vbep,xvar3_Vbep; -double qdbep,qdbep_qlo,qdbep_Vbep,qdbep_qhi,vn_Vbep,vnl_Vbep,vl_Vbep; -double sel_Vbep,cl_Vbep,ql_Vbep,qdbep_ql,dv_Vbep,mv_Vbep,qdbep_vl; -double dvh_Vbcp,qlo_Vbcp,qhi_Vbcp,xvar1_Vbcp,xvar3_Vbcp,qdbcp,qdbcp_qlo; -double qdbcp_Vbcp,qdbcp_Vbep,qdbcp_qhi,dv_Vbcp,mv_Vbcp,vl_Vbcp,qdbcp_vl; -double argi,argi_Vbei,expi,expi_argi,expi_Vbei,Ifi,Ifi_expi; -double Ifi_Vbei,argi_Vbci,expi_Vbci,Iri,Iri_expi,Iri_Vbci,q1z; -double q1z_qdbe,q1z_Vbei,q1z_qdbc,q1z_Vbci,q1,q1_q1z,q1_Vbei; -double q1_Vbci,q2,q2_Ifi,q2_Vbei,q2_Iri,q2_Vbci,xvar3_q1; -double xvar1_xvar3,xvar1_q2,xvar4,xvar4_xvar1,xvar4_Vbei,xvar4_Vbci,qb; -double qb_q1,qb_Vbei,qb_Vbci,qb_xvar4,xvar2_xvar1,xvar2_Vbei,xvar2_Vbci; -double qb_xvar2,Itzr_Iri,Itzr_qb,Itzf_Ifi,Itzf_qb,argi_Vbep,expi_Vbep; -double argx,argx_Vbci,expx,expx_argx,expx_Vbci,Ifp,Ifp_expi; -double Ifp_Vbep,Ifp_expx,Ifp_Vbci,q2p,q2p_Ifp,q2p_Vbep,q2p_Vbci; -double qbp,qbp_q2p,qbp_Vbep,qbp_Vbci,argi_Vbcp,expi_Vbcp,Irp; -double Irp_expi,Irp_Vbcp,Iccp_Ifp,Iccp_Irp,Iccp_qbp,argn,argn_Vbei; -double expn,expn_argn,expn_Vbei,argx_Vbei,expx_Vbei,Ibe_expi,Ibe_expn; -double Ibe_expx,argi_Vbex,expi_Vbex,argn_Vbex,expn_Vbex,argx_Vbex,expx_Vbex; -double Ibex_expi,Ibex_expn,Ibex_expx,argn_Vbci,expn_Vbci,Ibcj,Ibcj_expi; -double Ibcj_Vbci,Ibcj_expn,argn_Vbep,expn_Vbep,Ibep_expi,Ibep_expn,xvar3_vl; -double avalf,avalf_vl,avalf_Vbci,avalf_xvar4,Igc,Igc_Itzf,Igc_Vbei; -double Igc_Vbci,Igc_Itzr,Igc_Ibcj,Igc_avalf,Ibc_Ibcj,Ibc_Igc,argx_Vbcx; -double expx_Vbcx,Kbci,Kbci_expi,Kbci_Vbci,Kbcx,Kbcx_expx,Kbcx_Vbcx; -double rKp1,rKp1_Kbci,rKp1_Vbci,rKp1_Kbcx,rKp1_Vbcx,xvar1_rKp1,xvar1_Vbcx; -double Iohm,Iohm_Vrci,Iohm_Kbci,Iohm_Vbci,Iohm_Kbcx,Iohm_Vbcx,Iohm_xvar1; -double derf,derf_Iohm,derf_Vrci,derf_Vbci,derf_Vbcx,Irci_Iohm,Irci_derf; -double Irbi_qb,Irbp_qbp,argn_Vbcp,expn_Vbcp,Ibcp_expi,Ibcp_expn,sgIf; -double rIf,rIf_Ifi,rIf_Vbei,mIf,mIf_rIf,mIf_Vbei,tff; -double tff_q1,tff_Vbei,tff_Vbci,tff_xvar2,tff_mIf,Qbe_qdbe,Qbe_tff; -double Qbe_Ifi,Qbe_qb,Qbex_qdbex,Qbc_qdbc,Qbc_Iri,Qbc_Kbci,Qbcx_Kbcx; -double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; +double Tini,Tdev,Tdev_Vrth,Vtv,Vtv_Tdev,Vtv_Vrth,rT; +double rT_Tdev,rT_Vrth,dT,dT_Tdev,dT_Vrth,xvar1,xvar1_rT; +double xvar1_Vrth,IKFatT,IKFatT_xvar1,IKFatT_Vrth,RCXatT,RCXatT_xvar1,RCXatT_Vrth; +double RCIatT,RCIatT_xvar1,RCIatT_Vrth,RBXatT,RBXatT_xvar1,RBXatT_Vrth,RBIatT; +double RBIatT_xvar1,RBIatT_Vrth,REatT,REatT_xvar1,REatT_Vrth,RSatT,RSatT_xvar1; +double RSatT_Vrth,RBPatT,RBPatT_xvar1,RBPatT_Vrth,xvar2,xvar2_rT,xvar2_Vrth; +double xvar3,xvar3_rT,xvar3_Vrth,xvar3_Vtv,xvar4,xvar4_xvar3,xvar4_Vrth; +double xvar1_xvar2,xvar1_xvar4,xvar5,xvar6,xvar6_xvar1,xvar6_Vrth,ISatT; +double ISatT_xvar6,ISatT_Vrth,ISRRatT,ISRRatT_xvar6,ISRRatT_Vrth,ISPatT,ISPatT_xvar6; +double ISPatT_Vrth,IBEIatT,IBEIatT_xvar6,IBEIatT_Vrth,IBENatT,IBENatT_xvar6,IBENatT_Vrth; +double IBCIatT,IBCIatT_xvar6,IBCIatT_Vrth,IBCNatT,IBCNatT_xvar6,IBCNatT_Vrth,IBEIPatT; +double IBEIPatT_xvar6,IBEIPatT_Vrth,IBENPatT,IBENPatT_xvar6,IBENPatT_Vrth,IBCIPatT,IBCIPatT_xvar6; +double IBCIPatT_Vrth,IBCNPatT,IBCNPatT_xvar6,IBCNPatT_Vrth,NFatT,NFatT_dT,NFatT_Vrth; +double NRatT,NRatT_dT,NRatT_Vrth,AVC2atT,AVC2atT_dT,AVC2atT_Vrth,VBBEatT; +double VBBEatT_dT,VBBEatT_Vrth,NBBEatT,NBBEatT_dT,NBBEatT_Vrth,xvar2_Vtv,xvar3_xvar2; +double xvar4_rT,xvar4_Vtv,xvar5_xvar4,xvar5_Vrth,xvar1_xvar3,xvar1_xvar5,psiio; +double psiio_Vtv,psiio_Vrth,psiio_rT,psiio_xvar6,psiin,psiin_psiio,psiin_Vrth; +double psiin_rT,psiin_Vtv,psiin_xvar1,xvar2_psiin,xvar4_xvar1,PEatT,PEatT_psiin; +double PEatT_Vrth,PEatT_Vtv,PEatT_xvar4,PCatT,PCatT_psiin,PCatT_Vrth,PCatT_Vtv; +double PCatT_xvar4,PSatT,PSatT_psiin,PSatT_Vrth,PSatT_Vtv,PSatT_xvar4,xvar1_PEatT; +double xvar2_xvar1,CJEatT,CJEatT_xvar2,CJEatT_Vrth,xvar1_PCatT,CJCatT,CJCatT_xvar2; +double CJCatT_Vrth,CJEPatT,CJEPatT_xvar2,CJEPatT_Vrth,xvar1_PSatT,CJCPatT,CJCPatT_xvar2; +double CJCPatT_Vrth,GAMMatT,GAMMatT_xvar1,GAMMatT_Vrth,GAMMatT_xvar3,VOatT,VOatT_xvar1; +double VOatT_Vrth,xvar1_VBBEatT,xvar1_NBBEatT,xvar1_Vtv,EBBEatT,EBBEatT_xvar1,EBBEatT_Vrth; +double IVEF,IVER,IIKF,IIKF_IKFatT,IIKF_Vrth,IIKR,IIKP; +double IVO,IVO_VOatT,IVO_Vrth,IHRCF,IVTF,IITF,slTF; +double LEP,CEP,dv0,dv0_PEatT,dv0_Vrth,dvh,dvh_Vbei; +double dvh_dv0,dvh_Vrth,pwq,qlo,qlo_PEatT,qlo_Vrth,qlo_Vbei; +double qhi,qhi_dvh,qhi_Vbei,qhi_Vrth,qhi_PEatT,xvar1_Vbei,xvar3_xvar1; +double xvar3_Vbei,qlo_xvar3,qdbe,qdbe_qlo,qdbe_Vrth,qdbe_Vbei,qdbe_qhi; +double mv0,mv0_dv0,mv0_Vrth,vl0,vl0_dv0,vl0_Vrth,vl0_mv0; +double xvar1_vl0,q0,q0_PEatT,q0_Vrth,q0_xvar3,dv,dv_Vbei; +double dv_dv0,dv_Vrth,mv,mv_dv,mv_Vbei,mv_Vrth,vl; +double vl_dv,vl_Vbei,vl_Vrth,vl_mv,vl_dv0,xvar1_vl,qdbe_vl; +double qdbe_vl0,qdbe_q0,dvh_Vbex,qlo_Vbex,qhi_Vbex,xvar1_Vbex,xvar3_Vbex; +double qdbex,qdbex_qlo,qdbex_Vrth,qdbex_Vbex,qdbex_qhi,dv_Vbex,mv_Vbex; +double vl_Vbex,qdbex_vl,qdbex_vl0,qdbex_q0,dv0_PCatT,dvh_Vbci,qlo_PCatT; +double qlo_Vbci,qhi_Vbci,qhi_PCatT,xvar1_Vbci,xvar3_Vbci,qdbc,qdbc_qlo; +double qdbc_Vrth,qdbc_Vbci,qdbc_qhi,vn0,vn0_dv0,vn0_Vrth,vnl0; +double vnl0_vn0,vnl0_Vrth,vl0_vnl0,qlo0,qlo0_PCatT,qlo0_Vrth,qlo0_xvar3; +double vn,vn_Vbci,vn_dv0,vn_Vrth,vnl,vnl_vn,vnl_Vbci; +double vnl_Vrth,vl_vnl,vl_Vbci,sel,sel_vnl,sel_Vbci,sel_Vrth; +double crt,crt_xvar1,crt_Vrth,xvar1_dv0,cmx,cmx_xvar1,cmx_Vrth; +double cl,cl_sel,cl_Vbci,cl_Vrth,cl_crt,cl_cmx,ql; +double ql_Vbci,ql_vl,ql_Vrth,ql_vl0,ql_cl,qdbc_ql,qdbc_qlo0; +double q0_PCatT,dv_Vbci,mv_Vbci,qdbc_vl,qdbc_vl0,qdbc_q0,dvh_Vbep; +double qlo_Vbep,qhi_Vbep,xvar1_Vbep,xvar3_Vbep,qdbep,qdbep_qlo,qdbep_Vrth; +double qdbep_Vbep,qdbep_qhi,vn_Vbep,vnl_Vbep,vl_Vbep,sel_Vbep,cl_Vbep; +double ql_Vbep,qdbep_ql,qdbep_qlo0,dv_Vbep,mv_Vbep,qdbep_vl,qdbep_vl0; +double qdbep_q0,dv0_PSatT,dvh_Vbcp,qlo_PSatT,qlo_Vbcp,qhi_Vbcp,qhi_PSatT; +double xvar1_Vbcp,xvar3_Vbcp,qdbcp,qdbcp_qlo,qdbcp_Vrth,qdbcp_Vbcp,qdbcp_Vbep; +double qdbcp_qhi,q0_PSatT,dv_Vbcp,mv_Vbcp,vl_Vbcp,qdbcp_vl,qdbcp_vl0; +double qdbcp_q0,argi,argi_Vbei,argi_NFatT,argi_Vrth,argi_Vtv,expi; +double expi_argi,expi_Vbei,expi_Vrth,Ifi,Ifi_ISatT,Ifi_Vrth,Ifi_expi; +double Ifi_Vbei,argi_Vbci,argi_NRatT,expi_Vbci,Iri,Iri_ISatT,Iri_Vrth; +double Iri_ISRRatT,Iri_expi,Iri_Vbci,q1z,q1z_qdbe,q1z_Vrth,q1z_Vbei; +double q1z_qdbc,q1z_Vbci,q1,q1_q1z,q1_Vrth,q1_Vbei,q1_Vbci; +double q2,q2_Ifi,q2_Vrth,q2_Vbei,q2_IIKF,q2_Iri,q2_Vbci; +double xvar3_q1,xvar1_q2,xvar4_Vbei,xvar4_Vbci,qb,qb_q1,qb_Vrth; +double qb_Vbei,qb_Vbci,qb_xvar4,xvar2_Vbei,xvar2_Vbci,qb_xvar2,Itzr_Iri; +double Itzr_qb,Itzf,Itzf_Ifi,Itzf_Vrth,Itzf_Vbei,Itzf_qb,Itzf_Vbci; +double Ixzf_Itzf,argi_Vbep,expi_Vbep,argx,argx_Vbci,argx_Vtv,argx_Vrth; +double expx,expx_argx,expx_Vbci,expx_Vrth,Ifp,Ifp_ISPatT,Ifp_Vrth; +double Ifp_expi,Ifp_Vbep,Ifp_expx,Ifp_Vbci,q2p,q2p_Ifp,q2p_Vrth; +double q2p_Vbep,q2p_Vbci,qbp,qbp_q2p,qbp_Vrth,qbp_Vbep,qbp_Vbci; +double argi_Vbcp,expi_Vbcp,Irp,Irp_ISPatT,Irp_Vrth,Irp_expi,Irp_Vbcp; +double Iccp_Ifp,Iccp_Irp,Iccp_qbp,argn,argn_Vbei,argn_Vtv,argn_Vrth; +double expn,expn_argn,expn_Vbei,expn_Vrth,argx_VBBEatT,argx_Vbei,argx_NBBEatT; +double expx_Vbei,Ibe_IBEIatT,Ibe_expi,Ibe_IBENatT,Ibe_expn,Ibe_expx,Ibe_EBBEatT; +double argi_Vbex,expi_Vbex,argn_Vbex,expn_Vbex,argx_Vbex,expx_Vbex,Ibex_IBEIatT; +double Ibex_expi,Ibex_IBENatT,Ibex_expn,Ibex_expx,Ibex_EBBEatT,argn_Vbci,expn_Vbci; +double Ibcj,Ibcj_IBCIatT,Ibcj_Vrth,Ibcj_expi,Ibcj_Vbci,Ibcj_IBCNatT,Ibcj_expn; +double argn_Vbep,expn_Vbep,Ibep_IBEIPatT,Ibep_expi,Ibep_IBENPatT,Ibep_expn,vl_PCatT; +double xvar3_vl,xvar1_AVC2atT,avalf,avalf_vl,avalf_Vrth,avalf_Vbci,avalf_xvar4; +double Igc,Igc_Itxf,Igc_Vrxf,Igc_Itzr,Igc_Vrth,Igc_Vbci,Igc_Vbei; +double Igc_Ibcj,Igc_avalf,Ibc_Ibcj,Ibc_Igc,Ircx_RCXatT,argx_Vbcx,expx_Vbcx; +double Kbci,Kbci_GAMMatT,Kbci_Vrth,Kbci_expi,Kbci_Vbci,Kbcx,Kbcx_GAMMatT; +double Kbcx_Vrth,Kbcx_expx,Kbcx_Vbcx,rKp1,rKp1_Kbci,rKp1_Vrth,rKp1_Vbci; +double rKp1_Kbcx,rKp1_Vbcx,xvar1_rKp1,xvar1_Vbcx,Iohm,Iohm_Vrci,Iohm_Vtv; +double Iohm_Vrth,Iohm_Kbci,Iohm_Vbci,Iohm_Kbcx,Iohm_Vbcx,Iohm_xvar1,Iohm_RCIatT; +double derf,derf_IVO,derf_Vrth,derf_RCIatT,derf_Iohm,derf_Vrci,derf_Vbci; +double derf_Vbcx,Irci_Iohm,Irci_derf,Irbx_RBXatT,Irbi_qb,Irbi_RBIatT,Ire_REatT; +double Irbp_qbp,Irbp_RBPatT,argn_Vbcp,expn_Vbcp,Ibcp_IBCIPatT,Ibcp_expi,Ibcp_IBCNPatT; +double Ibcp_expn,Irs_RSatT,sgIf,rIf,rIf_Ifi,rIf_Vrth,rIf_Vbei; +double mIf,mIf_rIf,mIf_Vrth,mIf_Vbei,tff,tff_q1,tff_Vrth; +double tff_Vbei,tff_Vbci,tff_xvar2,tff_mIf,Qbe_CJEatT,Qbe_qdbe,Qbe_tff; +double Qbe_Ifi,Qbe_qb,Qbex_CJEatT,Qbex_qdbex,Qbc_CJCatT,Qbc_qdbc,Qbc_Iri; +double Qbc_Kbci,Qbcx_Kbcx,Qbep_CJEPatT,Qbep_qdbep,Qbep_Ifp,Qbcp_CJCPatT,Qbcp_qdbcp; +double Ith_Ibe,Ith_Ibc,Ith_Itxf,Ith_Itzr,Ith_Ibex,Ith_Ibep,Ith_Irs; +double Ith_Ibcp,Ith_Iccp,Ith_Ircx,Ith_Irci,Ith_Irbx,Ith_Irbi,Ith_Ire; +double Ith_Irbp,Flxf_Ixxf; /* Function and derivative code */ - Vtv=1.380662e-23*(2.731500e+02+p[0])/1.602189e-19; + Tini=2.731500e+02+p[0]; + Tdev=(2.731500e+02+p[0])+(*Vrth); + Tdev_Vrth=1.0; + Vtv=1.380662e-23*Tdev/1.602189e-19; + Vtv_Tdev=8.617347e-5; + Vtv_Vrth=Vtv_Tdev*Tdev_Vrth; + rT=Tdev/Tini; + rT_Tdev=1.0/Tini; + rT_Vrth=rT_Tdev*Tdev_Vrth; + dT=Tdev-Tini; + dT_Tdev=1.0; + dT_Vrth=dT_Tdev*Tdev_Vrth; + xvar1=pow(rT,p[90]); + xvar1_rT=xvar1*p[90]/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + IKFatT=p[53]*xvar1; + IKFatT_xvar1=p[53]; + IKFatT_Vrth=IKFatT_xvar1*xvar1_Vrth; + xvar1=pow(rT,p[91]); + xvar1_rT=xvar1*p[91]/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + RCXatT=p[1]*xvar1; + RCXatT_xvar1=p[1]; + RCXatT_Vrth=RCXatT_xvar1*xvar1_Vrth; + xvar1=pow(rT,p[68]); + xvar1_rT=xvar1*p[68]/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + RCIatT=p[2]*xvar1; + RCIatT_xvar1=p[2]; + RCIatT_Vrth=RCIatT_xvar1*xvar1_Vrth; + xvar1=pow(rT,p[92]); + xvar1_rT=xvar1*p[92]/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + RBXatT=p[6]*xvar1; + RBXatT_xvar1=p[6]; + RBXatT_Vrth=RBXatT_xvar1*xvar1_Vrth; + xvar1=pow(rT,p[67]); + xvar1_rT=xvar1*p[67]/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + RBIatT=p[7]*xvar1; + RBIatT_xvar1=p[7]; + RBIatT_Vrth=RBIatT_xvar1*xvar1_Vrth; + xvar1=pow(rT,p[66]); + xvar1_rT=xvar1*p[66]/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + REatT=p[8]*xvar1; + REatT_xvar1=p[8]; + REatT_Vrth=REatT_xvar1*xvar1_Vrth; + xvar1=pow(rT,p[69]); + xvar1_rT=xvar1*p[69]/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + RSatT=p[9]*xvar1; + RSatT_xvar1=p[9]; + RSatT_Vrth=RSatT_xvar1*xvar1_Vrth; + xvar1=pow(rT,p[93]); + xvar1_rT=xvar1*p[93]/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + RBPatT=p[10]*xvar1; + RBPatT_xvar1=p[10]; + RBPatT_Vrth=RBPatT_xvar1*xvar1_Vrth; + xvar2=pow(rT,p[78]); + xvar2_rT=xvar2*p[78]/rT; + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar3=-p[71]*(1.0-rT)/Vtv; + xvar3_rT=p[71]/Vtv; + xvar3_Vtv=p[71]*(1.0-rT)/(Vtv*Vtv); + xvar3_Vrth=xvar3_rT*rT_Vrth; + xvar3_Vrth=xvar3_Vrth+xvar3_Vtv*Vtv_Vrth; + xvar4=exp(xvar3); + xvar4_xvar3=xvar4; + xvar4_Vrth=xvar4_xvar3*xvar3_Vrth; + xvar1=(xvar2*xvar4); + xvar1_xvar2=xvar4; + xvar1_xvar4=xvar2; + xvar1_Vrth=xvar1_xvar2*xvar2_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar4*xvar4_Vrth; + xvar5=(1.0/p[12]); + xvar6=pow(xvar1,xvar5); + xvar6_xvar1=xvar6*xvar5/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + ISatT=p[11]*xvar6; + ISatT_xvar6=p[11]; + ISatT_Vrth=ISatT_xvar6*xvar6_Vrth; + xvar2=pow(rT,p[95]); + xvar2_rT=xvar2*p[95]/rT; + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar3=-p[96]*(1.0-rT)/Vtv; + xvar3_rT=p[96]/Vtv; + xvar3_Vtv=p[96]*(1.0-rT)/(Vtv*Vtv); + xvar3_Vrth=xvar3_rT*rT_Vrth; + xvar3_Vrth=xvar3_Vrth+xvar3_Vtv*Vtv_Vrth; + xvar4=exp(xvar3); + xvar4_xvar3=xvar4; + xvar4_Vrth=xvar4_xvar3*xvar3_Vrth; + xvar1=(xvar2*xvar4); + xvar1_xvar2=xvar4; + xvar1_xvar4=xvar2; + xvar1_Vrth=xvar1_xvar2*xvar2_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar4*xvar4_Vrth; + xvar5=(1.0/p[13]); + xvar6=pow(xvar1,xvar5); + xvar6_xvar1=xvar6*xvar5/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + ISRRatT=p[94]*xvar6; + ISRRatT_xvar6=p[94]; + ISRRatT_Vrth=ISRRatT_xvar6*xvar6_Vrth; + xvar2=pow(rT,p[78]); + xvar2_rT=xvar2*p[78]/rT; + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar3=-p[97]*(1.0-rT)/Vtv; + xvar3_rT=p[97]/Vtv; + xvar3_Vtv=p[97]*(1.0-rT)/(Vtv*Vtv); + xvar3_Vrth=xvar3_rT*rT_Vrth; + xvar3_Vrth=xvar3_Vrth+xvar3_Vtv*Vtv_Vrth; + xvar4=exp(xvar3); + xvar4_xvar3=xvar4; + xvar4_Vrth=xvar4_xvar3*xvar3_Vrth; + xvar1=(xvar2*xvar4); + xvar1_xvar2=xvar4; + xvar1_xvar4=xvar2; + xvar1_Vrth=xvar1_xvar2*xvar2_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar4*xvar4_Vrth; + xvar5=(1.0/p[44]); + xvar6=pow(xvar1,xvar5); + xvar6_xvar1=xvar6*xvar5/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + ISPatT=p[42]*xvar6; + ISPatT_xvar6=p[42]; + ISPatT_Vrth=ISPatT_xvar6*xvar6_Vrth; + xvar2=pow(rT,p[79]); + xvar2_rT=xvar2*p[79]/rT; + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar3=-p[72]*(1.0-rT)/Vtv; + xvar3_rT=p[72]/Vtv; + xvar3_Vtv=p[72]*(1.0-rT)/(Vtv*Vtv); + xvar3_Vrth=xvar3_rT*rT_Vrth; + xvar3_Vrth=xvar3_Vrth+xvar3_Vtv*Vtv_Vrth; + xvar4=exp(xvar3); + xvar4_xvar3=xvar4; + xvar4_Vrth=xvar4_xvar3*xvar3_Vrth; + xvar1=(xvar2*xvar4); + xvar1_xvar2=xvar4; + xvar1_xvar4=xvar2; + xvar1_Vrth=xvar1_xvar2*xvar2_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar4*xvar4_Vrth; + xvar5=(1.0/p[33]); + xvar6=pow(xvar1,xvar5); + xvar6_xvar1=xvar6*xvar5/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + IBEIatT=p[31]*xvar6; + IBEIatT_xvar6=p[31]; + IBEIatT_Vrth=IBEIatT_xvar6*xvar6_Vrth; + xvar2=pow(rT,p[80]); + xvar2_rT=xvar2*p[80]/rT; + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar3=-p[75]*(1.0-rT)/Vtv; + xvar3_rT=p[75]/Vtv; + xvar3_Vtv=p[75]*(1.0-rT)/(Vtv*Vtv); + xvar3_Vrth=xvar3_rT*rT_Vrth; + xvar3_Vrth=xvar3_Vrth+xvar3_Vtv*Vtv_Vrth; + xvar4=exp(xvar3); + xvar4_xvar3=xvar4; + xvar4_Vrth=xvar4_xvar3*xvar3_Vrth; + xvar1=(xvar2*xvar4); + xvar1_xvar2=xvar4; + xvar1_xvar4=xvar2; + xvar1_Vrth=xvar1_xvar2*xvar2_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar4*xvar4_Vrth; + xvar5=(1.0/p[35]); + xvar6=pow(xvar1,xvar5); + xvar6_xvar1=xvar6*xvar5/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + IBENatT=p[34]*xvar6; + IBENatT_xvar6=p[34]; + IBENatT_Vrth=IBENatT_xvar6*xvar6_Vrth; + xvar2=pow(rT,p[79]); + xvar2_rT=xvar2*p[79]/rT; + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar3=-p[73]*(1.0-rT)/Vtv; + xvar3_rT=p[73]/Vtv; + xvar3_Vtv=p[73]*(1.0-rT)/(Vtv*Vtv); + xvar3_Vrth=xvar3_rT*rT_Vrth; + xvar3_Vrth=xvar3_Vrth+xvar3_Vtv*Vtv_Vrth; + xvar4=exp(xvar3); + xvar4_xvar3=xvar4; + xvar4_Vrth=xvar4_xvar3*xvar3_Vrth; + xvar1=(xvar2*xvar4); + xvar1_xvar2=xvar4; + xvar1_xvar4=xvar2; + xvar1_Vrth=xvar1_xvar2*xvar2_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar4*xvar4_Vrth; + xvar5=(1.0/p[37]); + xvar6=pow(xvar1,xvar5); + xvar6_xvar1=xvar6*xvar5/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + IBCIatT=p[36]*xvar6; + IBCIatT_xvar6=p[36]; + IBCIatT_Vrth=IBCIatT_xvar6*xvar6_Vrth; + xvar2=pow(rT,p[80]); + xvar2_rT=xvar2*p[80]/rT; + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar3=-p[76]*(1.0-rT)/Vtv; + xvar3_rT=p[76]/Vtv; + xvar3_Vtv=p[76]*(1.0-rT)/(Vtv*Vtv); + xvar3_Vrth=xvar3_rT*rT_Vrth; + xvar3_Vrth=xvar3_Vrth+xvar3_Vtv*Vtv_Vrth; + xvar4=exp(xvar3); + xvar4_xvar3=xvar4; + xvar4_Vrth=xvar4_xvar3*xvar3_Vrth; + xvar1=(xvar2*xvar4); + xvar1_xvar2=xvar4; + xvar1_xvar4=xvar2; + xvar1_Vrth=xvar1_xvar2*xvar2_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar4*xvar4_Vrth; + xvar5=(1.0/p[39]); + xvar6=pow(xvar1,xvar5); + xvar6_xvar1=xvar6*xvar5/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + IBCNatT=p[38]*xvar6; + IBCNatT_xvar6=p[38]; + IBCNatT_Vrth=IBCNatT_xvar6*xvar6_Vrth; + xvar2=pow(rT,p[79]); + xvar2_rT=xvar2*p[79]/rT; + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar3=-p[73]*(1.0-rT)/Vtv; + xvar3_rT=p[73]/Vtv; + xvar3_Vtv=p[73]*(1.0-rT)/(Vtv*Vtv); + xvar3_Vrth=xvar3_rT*rT_Vrth; + xvar3_Vrth=xvar3_Vrth+xvar3_Vtv*Vtv_Vrth; + xvar4=exp(xvar3); + xvar4_xvar3=xvar4; + xvar4_Vrth=xvar4_xvar3*xvar3_Vrth; + xvar1=(xvar2*xvar4); + xvar1_xvar2=xvar4; + xvar1_xvar4=xvar2; + xvar1_Vrth=xvar1_xvar2*xvar2_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar4*xvar4_Vrth; + xvar5=(1.0/p[37]); + xvar6=pow(xvar1,xvar5); + xvar6_xvar1=xvar6*xvar5/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + IBEIPatT=p[45]*xvar6; + IBEIPatT_xvar6=p[45]; + IBEIPatT_Vrth=IBEIPatT_xvar6*xvar6_Vrth; + xvar2=pow(rT,p[80]); + xvar2_rT=xvar2*p[80]/rT; + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar3=-p[76]*(1.0-rT)/Vtv; + xvar3_rT=p[76]/Vtv; + xvar3_Vtv=p[76]*(1.0-rT)/(Vtv*Vtv); + xvar3_Vrth=xvar3_rT*rT_Vrth; + xvar3_Vrth=xvar3_Vrth+xvar3_Vtv*Vtv_Vrth; + xvar4=exp(xvar3); + xvar4_xvar3=xvar4; + xvar4_Vrth=xvar4_xvar3*xvar3_Vrth; + xvar1=(xvar2*xvar4); + xvar1_xvar2=xvar4; + xvar1_xvar4=xvar2; + xvar1_Vrth=xvar1_xvar2*xvar2_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar4*xvar4_Vrth; + xvar5=(1.0/p[39]); + xvar6=pow(xvar1,xvar5); + xvar6_xvar1=xvar6*xvar5/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + IBENPatT=p[46]*xvar6; + IBENPatT_xvar6=p[46]; + IBENPatT_Vrth=IBENPatT_xvar6*xvar6_Vrth; + xvar2=pow(rT,p[79]); + xvar2_rT=xvar2*p[79]/rT; + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar3=-p[74]*(1.0-rT)/Vtv; + xvar3_rT=p[74]/Vtv; + xvar3_Vtv=p[74]*(1.0-rT)/(Vtv*Vtv); + xvar3_Vrth=xvar3_rT*rT_Vrth; + xvar3_Vrth=xvar3_Vrth+xvar3_Vtv*Vtv_Vrth; + xvar4=exp(xvar3); + xvar4_xvar3=xvar4; + xvar4_Vrth=xvar4_xvar3*xvar3_Vrth; + xvar1=(xvar2*xvar4); + xvar1_xvar2=xvar4; + xvar1_xvar4=xvar2; + xvar1_Vrth=xvar1_xvar2*xvar2_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar4*xvar4_Vrth; + xvar5=(1.0/p[48]); + xvar6=pow(xvar1,xvar5); + xvar6_xvar1=xvar6*xvar5/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + IBCIPatT=p[47]*xvar6; + IBCIPatT_xvar6=p[47]; + IBCIPatT_Vrth=IBCIPatT_xvar6*xvar6_Vrth; + xvar2=pow(rT,p[80]); + xvar2_rT=xvar2*p[80]/rT; + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar3=-p[77]*(1.0-rT)/Vtv; + xvar3_rT=p[77]/Vtv; + xvar3_Vtv=p[77]*(1.0-rT)/(Vtv*Vtv); + xvar3_Vrth=xvar3_rT*rT_Vrth; + xvar3_Vrth=xvar3_Vrth+xvar3_Vtv*Vtv_Vrth; + xvar4=exp(xvar3); + xvar4_xvar3=xvar4; + xvar4_Vrth=xvar4_xvar3*xvar3_Vrth; + xvar1=(xvar2*xvar4); + xvar1_xvar2=xvar4; + xvar1_xvar4=xvar2; + xvar1_Vrth=xvar1_xvar2*xvar2_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar4*xvar4_Vrth; + xvar5=(1.0/p[50]); + xvar6=pow(xvar1,xvar5); + xvar6_xvar1=xvar6*xvar5/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + IBCNPatT=p[49]*xvar6; + IBCNPatT_xvar6=p[49]; + IBCNPatT_Vrth=IBCNPatT_xvar6*xvar6_Vrth; + NFatT=p[12]*(1.0+dT*p[81]); + NFatT_dT=p[12]*p[81]; + NFatT_Vrth=NFatT_dT*dT_Vrth; + NRatT=p[13]*(1.0+dT*p[81]); + NRatT_dT=p[13]*p[81]; + NRatT_Vrth=NRatT_dT*dT_Vrth; + AVC2atT=p[41]*(1.0+dT*p[82]); + AVC2atT_dT=p[41]*p[82]; + AVC2atT_Vrth=AVC2atT_dT*dT_Vrth; + VBBEatT=p[98]*(1.0+dT*(p[101]+dT*p[102])); + VBBEatT_dT=(2.0*dT*p[102]+p[101])*p[98]; + VBBEatT_Vrth=VBBEatT_dT*dT_Vrth; + NBBEatT=p[99]*(1.0+dT*p[103]); + NBBEatT_dT=p[99]*p[103]; + NBBEatT_Vrth=NBBEatT_dT*dT_Vrth; + xvar2=0.5*p[17]*rT/Vtv; + xvar2_rT=0.5*p[17]/Vtv; + xvar2_Vtv=-0.5*p[17]*rT/(Vtv*Vtv); + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar2_Vrth=xvar2_Vrth+xvar2_Vtv*Vtv_Vrth; + xvar3=exp(xvar2); + xvar3_xvar2=xvar3; + xvar3_Vrth=xvar3_xvar2*xvar2_Vrth; + xvar4=-0.5*p[17]*rT/Vtv; + xvar4_rT=-0.5*p[17]/Vtv; + xvar4_Vtv=0.5*p[17]*rT/(Vtv*Vtv); + xvar4_Vrth=xvar4_rT*rT_Vrth; + xvar4_Vrth=xvar4_Vrth+xvar4_Vtv*Vtv_Vrth; + xvar5=exp(xvar4); + xvar5_xvar4=xvar5; + xvar5_Vrth=xvar5_xvar4*xvar4_Vrth; + xvar1=xvar3-xvar5; + xvar1_xvar3=1.0; + xvar1_xvar5=-1.0; + xvar1_Vrth=xvar1_xvar3*xvar3_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar5*xvar5_Vrth; + xvar6=log(xvar1); + xvar6_xvar1=1.0/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + psiio=2.0*(Vtv/rT)*xvar6; + psiio_Vtv=2.0*xvar6/rT; + psiio_rT=-2.0*Vtv*xvar6/(rT*rT); + psiio_xvar6=2.0*Vtv/rT; + psiio_Vrth=psiio_Vtv*Vtv_Vrth; + psiio_Vrth=psiio_Vrth+psiio_rT*rT_Vrth; + psiio_Vrth=psiio_Vrth+psiio_xvar6*xvar6_Vrth; + xvar1=log(rT); + xvar1_rT=1.0/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + psiin=psiio*rT-3.0*Vtv*xvar1-p[72]*(rT-1.0); + psiin_psiio=rT; + psiin_rT=psiio-p[72]; + psiin_Vtv=-3.0*xvar1; + psiin_xvar1=-3.0*Vtv; + psiin_Vrth=psiin_psiio*psiio_Vrth; + psiin_Vrth=psiin_Vrth+psiin_rT*rT_Vrth; + psiin_Vrth=psiin_Vrth+psiin_Vtv*Vtv_Vrth; + psiin_Vrth=psiin_Vrth+psiin_xvar1*xvar1_Vrth; + xvar2=-psiin/Vtv; + xvar2_psiin=-1.0/Vtv; + xvar2_Vtv=psiin/(Vtv*Vtv); + xvar2_Vrth=xvar2_psiin*psiin_Vrth; + xvar2_Vrth=xvar2_Vrth+xvar2_Vtv*Vtv_Vrth; + xvar3=exp(xvar2); + xvar3_xvar2=xvar3; + xvar3_Vrth=xvar3_xvar2*xvar2_Vrth; + xvar1=0.5*(1.0+sqrt(1.0+4.0*xvar3)); + xvar1_xvar3=1.0/sqrt(4.0*xvar3+1.0); + xvar1_Vrth=xvar1_xvar3*xvar3_Vrth; + xvar4=log(xvar1); + xvar4_xvar1=1.0/xvar1; + xvar4_Vrth=xvar4_xvar1*xvar1_Vrth; + PEatT=psiin+2.0*Vtv*xvar4; + PEatT_psiin=1.0; + PEatT_Vtv=2.0*xvar4; + PEatT_xvar4=2.0*Vtv; + PEatT_Vrth=PEatT_psiin*psiin_Vrth; + PEatT_Vrth=PEatT_Vrth+PEatT_Vtv*Vtv_Vrth; + PEatT_Vrth=PEatT_Vrth+PEatT_xvar4*xvar4_Vrth; + xvar2=0.5*p[24]*rT/Vtv; + xvar2_rT=0.5*p[24]/Vtv; + xvar2_Vtv=-0.5*p[24]*rT/(Vtv*Vtv); + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar2_Vrth=xvar2_Vrth+xvar2_Vtv*Vtv_Vrth; + xvar3=exp(xvar2); + xvar3_xvar2=xvar3; + xvar3_Vrth=xvar3_xvar2*xvar2_Vrth; + xvar4=-0.5*p[24]*rT/Vtv; + xvar4_rT=-0.5*p[24]/Vtv; + xvar4_Vtv=0.5*p[24]*rT/(Vtv*Vtv); + xvar4_Vrth=xvar4_rT*rT_Vrth; + xvar4_Vrth=xvar4_Vrth+xvar4_Vtv*Vtv_Vrth; + xvar5=exp(xvar4); + xvar5_xvar4=xvar5; + xvar5_Vrth=xvar5_xvar4*xvar4_Vrth; + xvar1=xvar3-xvar5; + xvar1_xvar3=1.0; + xvar1_xvar5=-1.0; + xvar1_Vrth=xvar1_xvar3*xvar3_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar5*xvar5_Vrth; + xvar6=log(xvar1); + xvar6_xvar1=1.0/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + psiio=2.0*(Vtv/rT)*xvar6; + psiio_Vtv=2.0*xvar6/rT; + psiio_rT=-2.0*Vtv*xvar6/(rT*rT); + psiio_xvar6=2.0*Vtv/rT; + psiio_Vrth=psiio_Vtv*Vtv_Vrth; + psiio_Vrth=psiio_Vrth+psiio_rT*rT_Vrth; + psiio_Vrth=psiio_Vrth+psiio_xvar6*xvar6_Vrth; + xvar1=log(rT); + xvar1_rT=1.0/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + psiin=psiio*rT-3.0*Vtv*xvar1-p[73]*(rT-1.0); + psiin_psiio=rT; + psiin_rT=psiio-p[73]; + psiin_Vtv=-3.0*xvar1; + psiin_xvar1=-3.0*Vtv; + psiin_Vrth=psiin_psiio*psiio_Vrth; + psiin_Vrth=psiin_Vrth+psiin_rT*rT_Vrth; + psiin_Vrth=psiin_Vrth+psiin_Vtv*Vtv_Vrth; + psiin_Vrth=psiin_Vrth+psiin_xvar1*xvar1_Vrth; + xvar2=-psiin/Vtv; + xvar2_psiin=-1.0/Vtv; + xvar2_Vtv=psiin/(Vtv*Vtv); + xvar2_Vrth=xvar2_psiin*psiin_Vrth; + xvar2_Vrth=xvar2_Vrth+xvar2_Vtv*Vtv_Vrth; + xvar3=exp(xvar2); + xvar3_xvar2=xvar3; + xvar3_Vrth=xvar3_xvar2*xvar2_Vrth; + xvar1=0.5*(1.0+sqrt(1.0+4.0*xvar3)); + xvar1_xvar3=1.0/sqrt(4.0*xvar3+1.0); + xvar1_Vrth=xvar1_xvar3*xvar3_Vrth; + xvar4=log(xvar1); + xvar4_xvar1=1.0/xvar1; + xvar4_Vrth=xvar4_xvar1*xvar1_Vrth; + PCatT=psiin+2.0*Vtv*xvar4; + PCatT_psiin=1.0; + PCatT_Vtv=2.0*xvar4; + PCatT_xvar4=2.0*Vtv; + PCatT_Vrth=PCatT_psiin*psiin_Vrth; + PCatT_Vrth=PCatT_Vrth+PCatT_Vtv*Vtv_Vrth; + PCatT_Vrth=PCatT_Vrth+PCatT_xvar4*xvar4_Vrth; + xvar2=0.5*p[28]*rT/Vtv; + xvar2_rT=0.5*p[28]/Vtv; + xvar2_Vtv=-0.5*p[28]*rT/(Vtv*Vtv); + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar2_Vrth=xvar2_Vrth+xvar2_Vtv*Vtv_Vrth; + xvar3=exp(xvar2); + xvar3_xvar2=xvar3; + xvar3_Vrth=xvar3_xvar2*xvar2_Vrth; + xvar4=-0.5*p[28]*rT/Vtv; + xvar4_rT=-0.5*p[28]/Vtv; + xvar4_Vtv=0.5*p[28]*rT/(Vtv*Vtv); + xvar4_Vrth=xvar4_rT*rT_Vrth; + xvar4_Vrth=xvar4_Vrth+xvar4_Vtv*Vtv_Vrth; + xvar5=exp(xvar4); + xvar5_xvar4=xvar5; + xvar5_Vrth=xvar5_xvar4*xvar4_Vrth; + xvar1=xvar3-xvar5; + xvar1_xvar3=1.0; + xvar1_xvar5=-1.0; + xvar1_Vrth=xvar1_xvar3*xvar3_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar5*xvar5_Vrth; + xvar6=log(xvar1); + xvar6_xvar1=1.0/xvar1; + xvar6_Vrth=xvar6_xvar1*xvar1_Vrth; + psiio=2.0*(Vtv/rT)*xvar6; + psiio_Vtv=2.0*xvar6/rT; + psiio_rT=-2.0*Vtv*xvar6/(rT*rT); + psiio_xvar6=2.0*Vtv/rT; + psiio_Vrth=psiio_Vtv*Vtv_Vrth; + psiio_Vrth=psiio_Vrth+psiio_rT*rT_Vrth; + psiio_Vrth=psiio_Vrth+psiio_xvar6*xvar6_Vrth; + xvar1=log(rT); + xvar1_rT=1.0/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + psiin=psiio*rT-3.0*Vtv*xvar1-p[74]*(rT-1.0); + psiin_psiio=rT; + psiin_rT=psiio-p[74]; + psiin_Vtv=-3.0*xvar1; + psiin_xvar1=-3.0*Vtv; + psiin_Vrth=psiin_psiio*psiio_Vrth; + psiin_Vrth=psiin_Vrth+psiin_rT*rT_Vrth; + psiin_Vrth=psiin_Vrth+psiin_Vtv*Vtv_Vrth; + psiin_Vrth=psiin_Vrth+psiin_xvar1*xvar1_Vrth; + xvar2=-psiin/Vtv; + xvar2_psiin=-1.0/Vtv; + xvar2_Vtv=psiin/(Vtv*Vtv); + xvar2_Vrth=xvar2_psiin*psiin_Vrth; + xvar2_Vrth=xvar2_Vrth+xvar2_Vtv*Vtv_Vrth; + xvar3=exp(xvar2); + xvar3_xvar2=xvar3; + xvar3_Vrth=xvar3_xvar2*xvar2_Vrth; + xvar1=0.5*(1.0+sqrt(1.0+4.0*xvar3)); + xvar1_xvar3=1.0/sqrt(4.0*xvar3+1.0); + xvar1_Vrth=xvar1_xvar3*xvar3_Vrth; + xvar4=log(xvar1); + xvar4_xvar1=1.0/xvar1; + xvar4_Vrth=xvar4_xvar1*xvar1_Vrth; + PSatT=psiin+2.0*Vtv*xvar4; + PSatT_psiin=1.0; + PSatT_Vtv=2.0*xvar4; + PSatT_xvar4=2.0*Vtv; + PSatT_Vrth=PSatT_psiin*psiin_Vrth; + PSatT_Vrth=PSatT_Vrth+PSatT_Vtv*Vtv_Vrth; + PSatT_Vrth=PSatT_Vrth+PSatT_xvar4*xvar4_Vrth; + xvar1=p[17]/PEatT; + xvar1_PEatT=-p[17]/(PEatT*PEatT); + xvar1_Vrth=xvar1_PEatT*PEatT_Vrth; + xvar2=pow(xvar1,p[18]); + xvar2_xvar1=xvar2*p[18]/xvar1; + xvar2_Vrth=xvar2_xvar1*xvar1_Vrth; + CJEatT=p[16]*xvar2; + CJEatT_xvar2=p[16]; + CJEatT_Vrth=CJEatT_xvar2*xvar2_Vrth; + xvar1=p[24]/PCatT; + xvar1_PCatT=-p[24]/(PCatT*PCatT); + xvar1_Vrth=xvar1_PCatT*PCatT_Vrth; + xvar2=pow(xvar1,p[25]); + xvar2_xvar1=xvar2*p[25]/xvar1; + xvar2_Vrth=xvar2_xvar1*xvar1_Vrth; + CJCatT=p[21]*xvar2; + CJCatT_xvar2=p[21]; + CJCatT_Vrth=CJCatT_xvar2*xvar2_Vrth; + xvar1=p[24]/PCatT; + xvar1_PCatT=-p[24]/(PCatT*PCatT); + xvar1_Vrth=xvar1_PCatT*PCatT_Vrth; + xvar2=pow(xvar1,p[25]); + xvar2_xvar1=xvar2*p[25]/xvar1; + xvar2_Vrth=xvar2_xvar1*xvar1_Vrth; + CJEPatT=p[23]*xvar2; + CJEPatT_xvar2=p[23]; + CJEPatT_Vrth=CJEPatT_xvar2*xvar2_Vrth; + xvar1=p[28]/PSatT; + xvar1_PSatT=-p[28]/(PSatT*PSatT); + xvar1_Vrth=xvar1_PSatT*PSatT_Vrth; + xvar2=pow(xvar1,p[29]); + xvar2_xvar1=xvar2*p[29]/xvar1; + xvar2_Vrth=xvar2_xvar1*xvar1_Vrth; + CJCPatT=p[27]*xvar2; + CJCPatT_xvar2=p[27]; + CJCPatT_Vrth=CJCPatT_xvar2*xvar2_Vrth; + xvar1=pow(rT,p[78]); + xvar1_rT=xvar1*p[78]/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + xvar2=-p[71]*(1.0-rT)/Vtv; + xvar2_rT=p[71]/Vtv; + xvar2_Vtv=p[71]*(1.0-rT)/(Vtv*Vtv); + xvar2_Vrth=xvar2_rT*rT_Vrth; + xvar2_Vrth=xvar2_Vrth+xvar2_Vtv*Vtv_Vrth; + xvar3=exp(xvar2); + xvar3_xvar2=xvar3; + xvar3_Vrth=xvar3_xvar2*xvar2_Vrth; + GAMMatT=p[4]*xvar1*xvar3; + GAMMatT_xvar1=p[4]*xvar3; + GAMMatT_xvar3=p[4]*xvar1; + GAMMatT_Vrth=GAMMatT_xvar1*xvar1_Vrth; + GAMMatT_Vrth=GAMMatT_Vrth+GAMMatT_xvar3*xvar3_Vrth; + xvar1=pow(rT,p[70]); + xvar1_rT=xvar1*p[70]/rT; + xvar1_Vrth=xvar1_rT*rT_Vrth; + VOatT=p[3]*xvar1; + VOatT_xvar1=p[3]; + VOatT_Vrth=VOatT_xvar1*xvar1_Vrth; + xvar1=-VBBEatT/(NBBEatT*Vtv); + xvar1_VBBEatT=-1.0/(NBBEatT*Vtv); + xvar1_NBBEatT=VBBEatT/((NBBEatT*NBBEatT)*Vtv); + xvar1_Vtv=VBBEatT/(NBBEatT*(Vtv*Vtv)); + xvar1_Vrth=xvar1_VBBEatT*VBBEatT_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_NBBEatT*NBBEatT_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_Vtv*Vtv_Vrth; + EBBEatT=exp(xvar1); + EBBEatT_xvar1=EBBEatT; + EBBEatT_Vrth=EBBEatT_xvar1*xvar1_Vrth; if(p[51]>0.0){ IVEF=1.0/p[51]; }else{ @@ -4052,9 +6114,12 @@ double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; IVER=0.0; } if(p[53]>0.0){ - IIKF=1.0/p[53]; + IIKF=1.0/IKFatT; + IIKF_IKFatT=-1.0/(IKFatT*IKFatT); + IIKF_Vrth=IIKF_IKFatT*IKFatT_Vrth; }else{ IIKF=0.0; + IIKF_Vrth=0.0; } if(p[54]>0.0){ IIKR=1.0/p[54]; @@ -4067,9 +6132,12 @@ double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; IIKP=0.0; } if(p[3]>0.0){ - IVO=1.0/p[3]; + IVO=1.0/VOatT; + IVO_VOatT=-1.0/(VOatT*VOatT); + IVO_Vrth=IVO_VOatT*VOatT_Vrth; }else{ IVO=0.0; + IVO_Vrth=0.0; } if(p[5]>0.0){ IHRCF=1.0/p[5]; @@ -4091,64 +6159,122 @@ double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; }else{ slTF=1.0; } - dv0=-p[17]*p[14]; + if(p[62]>0.0){ + LEP=p[62]/3.0; + }else{ + LEP=0.0; + } + if(p[62]>0.0){ + CEP=p[62]; + }else{ + CEP=0.0; + } + dv0=-PEatT*p[14]; + dv0_PEatT=-p[14]; + dv0_Vrth=dv0_PEatT*PEatT_Vrth; if(p[19]<=0.0){ dvh=(*Vbei)+dv0; dvh_Vbei=1.0; + dvh_dv0=1.0; + dvh_Vrth=dvh_dv0*dv0_Vrth; if(dvh>0.0){ xvar1=(1.0-p[14]); xvar2=(-1.0-p[18]); pwq=pow(xvar1,xvar2); - qlo=p[17]*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[18]); + qlo=PEatT*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[18]); + qlo_PEatT=(1.0-((1.0-p[14])*(1.0-p[14]))*pwq)/(1.0-p[18]); qlo_Vbei=0.0; - qhi=dvh*(1.0-p[14]+0.5*p[18]*dvh/p[17])*pwq; - qhi_dvh=(0.5*dvh*p[18]/p[17]-p[14]+1.0)*pwq+0.5*dvh*p[18]*pwq/p[17]; + qlo_Vrth=qlo_PEatT*PEatT_Vrth; + qhi=dvh*(1.0-p[14]+0.5*p[18]*dvh/PEatT)*pwq; + qhi_dvh=(0.5*dvh*p[18]/PEatT-p[14]+1.0)*pwq+0.5*dvh*p[18]*pwq/PEatT; + qhi_PEatT=-0.5*(dvh*dvh)*p[18]*pwq/(PEatT*PEatT); qhi_Vbei=qhi_dvh*dvh_Vbei; + qhi_Vrth=qhi_dvh*dvh_Vrth; + qhi_Vrth=qhi_Vrth+qhi_PEatT*PEatT_Vrth; }else{ - xvar1=(1.0-(*Vbei)/p[17]); - xvar1_Vbei=-1.0/p[17]; + xvar1=(1.0-(*Vbei)/PEatT); + xvar1_Vbei=-1.0/PEatT; + xvar1_PEatT=(*Vbei)/(PEatT*PEatT); + xvar1_Vrth=xvar1_PEatT*PEatT_Vrth; xvar2=(1.0-p[18]); xvar3=pow(xvar1,xvar2); xvar3_xvar1=xvar3*xvar2/xvar1; xvar3_Vbei=xvar3_xvar1*xvar1_Vbei; - qlo=p[17]*(1.0-xvar3)/(1.0-p[18]); - qlo_xvar3=-p[17]/(1.0-p[18]); + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=PEatT*(1.0-xvar3)/(1.0-p[18]); + qlo_PEatT=(1.0-xvar3)/(1.0-p[18]); + qlo_xvar3=-PEatT/(1.0-p[18]); + qlo_Vrth=qlo_PEatT*PEatT_Vrth; qlo_Vbei=qlo_xvar3*xvar3_Vbei; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; qhi=0.0; qhi_Vbei=0.0; + qhi_Vrth=0.0; } qdbe=qlo+qhi; qdbe_qlo=1.0; qdbe_qhi=1.0; + qdbe_Vrth=qdbe_qlo*qlo_Vrth; qdbe_Vbei=qdbe_qlo*qlo_Vbei; qdbe_Vbei=qdbe_Vbei+qdbe_qhi*qhi_Vbei; + qdbe_Vrth=qdbe_Vrth+qdbe_qhi*qhi_Vrth; }else{ mv0=sqrt(dv0*dv0+4.0*p[19]*p[19]); + mv0_dv0=dv0/sqrt((dv0*dv0)+4.0*(p[19]*p[19])); + mv0_Vrth=mv0_dv0*dv0_Vrth; vl0=-0.5*(dv0+mv0); - xvar1=(1.0-vl0/p[17]); + vl0_dv0=-0.5; + vl0_mv0=-0.5; + vl0_Vrth=vl0_dv0*dv0_Vrth; + vl0_Vrth=vl0_Vrth+vl0_mv0*mv0_Vrth; + xvar1=(1.0-vl0/PEatT); + xvar1_vl0=-1.0/PEatT; + xvar1_PEatT=vl0/(PEatT*PEatT); + xvar1_Vrth=xvar1_vl0*vl0_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PEatT*PEatT_Vrth; xvar2=(1.0-p[18]); xvar3=pow(xvar1,xvar2); - q0=-p[17]*xvar3/(1.0-p[18]); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + q0=-PEatT*xvar3/(1.0-p[18]); + q0_PEatT=-xvar3/(1.0-p[18]); + q0_xvar3=-PEatT/(1.0-p[18]); + q0_Vrth=q0_PEatT*PEatT_Vrth; + q0_Vrth=q0_Vrth+q0_xvar3*xvar3_Vrth; dv=(*Vbei)+dv0; dv_Vbei=1.0; + dv_dv0=1.0; + dv_Vrth=dv_dv0*dv0_Vrth; mv=sqrt(dv*dv+4.0*p[19]*p[19]); mv_dv=dv/sqrt((dv*dv)+4.0*(p[19]*p[19])); mv_Vbei=mv_dv*dv_Vbei; + mv_Vrth=mv_dv*dv_Vrth; vl=0.5*(dv-mv)-dv0; vl_dv=0.5; vl_mv=-0.5; + vl_dv0=-1.0; vl_Vbei=vl_dv*dv_Vbei; + vl_Vrth=vl_dv*dv_Vrth; vl_Vbei=vl_Vbei+vl_mv*mv_Vbei; - xvar1=(1.0-vl/p[17]); - xvar1_vl=-1.0/p[17]; + vl_Vrth=vl_Vrth+vl_mv*mv_Vrth; + vl_Vrth=vl_Vrth+vl_dv0*dv0_Vrth; + xvar1=(1.0-vl/PEatT); + xvar1_vl=-1.0/PEatT; + xvar1_PEatT=vl/(PEatT*PEatT); xvar1_Vbei=xvar1_vl*vl_Vbei; + xvar1_Vrth=xvar1_vl*vl_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PEatT*PEatT_Vrth; xvar2=(1.0-p[18]); xvar3=pow(xvar1,xvar2); xvar3_xvar1=xvar3*xvar2/xvar1; xvar3_Vbei=xvar3_xvar1*xvar1_Vbei; - qlo=-p[17]*xvar3/(1.0-p[18]); - qlo_xvar3=-p[17]/(1.0-p[18]); + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=-PEatT*xvar3/(1.0-p[18]); + qlo_PEatT=-xvar3/(1.0-p[18]); + qlo_xvar3=-PEatT/(1.0-p[18]); + qlo_Vrth=qlo_PEatT*PEatT_Vrth; qlo_Vbei=qlo_xvar3*xvar3_Vbei; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; xvar1=(1.0-p[14]); xvar2=(-p[18]); xvar3=pow(xvar1,xvar2); @@ -4156,67 +6282,121 @@ double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; qdbe_qlo=1.0; qdbe_Vbei=xvar3; qdbe_vl=-xvar3; + qdbe_vl0=xvar3; + qdbe_q0=-1.0; + qdbe_Vrth=qdbe_qlo*qlo_Vrth; qdbe_Vbei=qdbe_Vbei+qdbe_qlo*qlo_Vbei; qdbe_Vbei=qdbe_Vbei+qdbe_vl*vl_Vbei; + qdbe_Vrth=qdbe_Vrth+qdbe_vl*vl_Vrth; + qdbe_Vrth=qdbe_Vrth+qdbe_vl0*vl0_Vrth; + qdbe_Vrth=qdbe_Vrth+qdbe_q0*q0_Vrth; } - dv0=-p[17]*p[14]; + dv0=-PEatT*p[14]; + dv0_PEatT=-p[14]; + dv0_Vrth=dv0_PEatT*PEatT_Vrth; if(p[19]<=0.0){ dvh=(*Vbex)+dv0; dvh_Vbex=1.0; + dvh_dv0=1.0; + dvh_Vrth=dvh_dv0*dv0_Vrth; if(dvh>0.0){ xvar1=(1.0-p[14]); xvar2=(-1.0-p[18]); pwq=pow(xvar1,xvar2); - qlo=p[17]*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[18]); + qlo=PEatT*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[18]); + qlo_PEatT=(1.0-((1.0-p[14])*(1.0-p[14]))*pwq)/(1.0-p[18]); qlo_Vbex=0.0; - qhi=dvh*(1.0-p[14]+0.5*p[18]*dvh/p[17])*pwq; - qhi_dvh=(0.5*dvh*p[18]/p[17]-p[14]+1.0)*pwq+0.5*dvh*p[18]*pwq/p[17]; + qlo_Vrth=qlo_PEatT*PEatT_Vrth; + qhi=dvh*(1.0-p[14]+0.5*p[18]*dvh/PEatT)*pwq; + qhi_dvh=(0.5*dvh*p[18]/PEatT-p[14]+1.0)*pwq+0.5*dvh*p[18]*pwq/PEatT; + qhi_PEatT=-0.5*(dvh*dvh)*p[18]*pwq/(PEatT*PEatT); qhi_Vbex=qhi_dvh*dvh_Vbex; + qhi_Vrth=qhi_dvh*dvh_Vrth; + qhi_Vrth=qhi_Vrth+qhi_PEatT*PEatT_Vrth; }else{ - xvar1=(1.0-(*Vbex)/p[17]); - xvar1_Vbex=-1.0/p[17]; + xvar1=(1.0-(*Vbex)/PEatT); + xvar1_Vbex=-1.0/PEatT; + xvar1_PEatT=(*Vbex)/(PEatT*PEatT); + xvar1_Vrth=xvar1_PEatT*PEatT_Vrth; xvar2=(1.0-p[18]); xvar3=pow(xvar1,xvar2); xvar3_xvar1=xvar3*xvar2/xvar1; xvar3_Vbex=xvar3_xvar1*xvar1_Vbex; - qlo=p[17]*(1.0-xvar3)/(1.0-p[18]); - qlo_xvar3=-p[17]/(1.0-p[18]); + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=PEatT*(1.0-xvar3)/(1.0-p[18]); + qlo_PEatT=(1.0-xvar3)/(1.0-p[18]); + qlo_xvar3=-PEatT/(1.0-p[18]); + qlo_Vrth=qlo_PEatT*PEatT_Vrth; qlo_Vbex=qlo_xvar3*xvar3_Vbex; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; qhi=0.0; qhi_Vbex=0.0; + qhi_Vrth=0.0; } qdbex=qlo+qhi; qdbex_qlo=1.0; qdbex_qhi=1.0; + qdbex_Vrth=qdbex_qlo*qlo_Vrth; qdbex_Vbex=qdbex_qlo*qlo_Vbex; qdbex_Vbex=qdbex_Vbex+qdbex_qhi*qhi_Vbex; + qdbex_Vrth=qdbex_Vrth+qdbex_qhi*qhi_Vrth; }else{ mv0=sqrt(dv0*dv0+4.0*p[19]*p[19]); + mv0_dv0=dv0/sqrt((dv0*dv0)+4.0*(p[19]*p[19])); + mv0_Vrth=mv0_dv0*dv0_Vrth; vl0=-0.5*(dv0+mv0); - xvar1=(1.0-vl0/p[17]); + vl0_dv0=-0.5; + vl0_mv0=-0.5; + vl0_Vrth=vl0_dv0*dv0_Vrth; + vl0_Vrth=vl0_Vrth+vl0_mv0*mv0_Vrth; + xvar1=(1.0-vl0/PEatT); + xvar1_vl0=-1.0/PEatT; + xvar1_PEatT=vl0/(PEatT*PEatT); + xvar1_Vrth=xvar1_vl0*vl0_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PEatT*PEatT_Vrth; xvar2=(1.0-p[18]); xvar3=pow(xvar1,xvar2); - q0=-p[17]*xvar3/(1.0-p[18]); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + q0=-PEatT*xvar3/(1.0-p[18]); + q0_PEatT=-xvar3/(1.0-p[18]); + q0_xvar3=-PEatT/(1.0-p[18]); + q0_Vrth=q0_PEatT*PEatT_Vrth; + q0_Vrth=q0_Vrth+q0_xvar3*xvar3_Vrth; dv=(*Vbex)+dv0; dv_Vbex=1.0; + dv_dv0=1.0; + dv_Vrth=dv_dv0*dv0_Vrth; mv=sqrt(dv*dv+4.0*p[19]*p[19]); mv_dv=dv/sqrt((dv*dv)+4.0*(p[19]*p[19])); mv_Vbex=mv_dv*dv_Vbex; + mv_Vrth=mv_dv*dv_Vrth; vl=0.5*(dv-mv)-dv0; vl_dv=0.5; vl_mv=-0.5; + vl_dv0=-1.0; vl_Vbex=vl_dv*dv_Vbex; + vl_Vrth=vl_dv*dv_Vrth; vl_Vbex=vl_Vbex+vl_mv*mv_Vbex; - xvar1=(1.0-vl/p[17]); - xvar1_vl=-1.0/p[17]; + vl_Vrth=vl_Vrth+vl_mv*mv_Vrth; + vl_Vrth=vl_Vrth+vl_dv0*dv0_Vrth; + xvar1=(1.0-vl/PEatT); + xvar1_vl=-1.0/PEatT; + xvar1_PEatT=vl/(PEatT*PEatT); xvar1_Vbex=xvar1_vl*vl_Vbex; + xvar1_Vrth=xvar1_vl*vl_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PEatT*PEatT_Vrth; xvar2=(1.0-p[18]); xvar3=pow(xvar1,xvar2); xvar3_xvar1=xvar3*xvar2/xvar1; xvar3_Vbex=xvar3_xvar1*xvar1_Vbex; - qlo=-p[17]*xvar3/(1.0-p[18]); - qlo_xvar3=-p[17]/(1.0-p[18]); + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=-PEatT*xvar3/(1.0-p[18]); + qlo_PEatT=-xvar3/(1.0-p[18]); + qlo_xvar3=-PEatT/(1.0-p[18]); + qlo_Vrth=qlo_PEatT*PEatT_Vrth; qlo_Vbex=qlo_xvar3*xvar3_Vbex; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; xvar1=(1.0-p[14]); xvar2=(-p[18]); xvar3=pow(xvar1,xvar2); @@ -4224,125 +6404,242 @@ double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; qdbex_qlo=1.0; qdbex_Vbex=xvar3; qdbex_vl=-xvar3; + qdbex_vl0=xvar3; + qdbex_q0=-1.0; + qdbex_Vrth=qdbex_qlo*qlo_Vrth; qdbex_Vbex=qdbex_Vbex+qdbex_qlo*qlo_Vbex; qdbex_Vbex=qdbex_Vbex+qdbex_vl*vl_Vbex; + qdbex_Vrth=qdbex_Vrth+qdbex_vl*vl_Vrth; + qdbex_Vrth=qdbex_Vrth+qdbex_vl0*vl0_Vrth; + qdbex_Vrth=qdbex_Vrth+qdbex_q0*q0_Vrth; } - dv0=-p[24]*p[14]; + dv0=-PCatT*p[14]; + dv0_PCatT=-p[14]; + dv0_Vrth=dv0_PCatT*PCatT_Vrth; if(p[26]<=0.0){ dvh=(*Vbci)+dv0; dvh_Vbci=1.0; + dvh_dv0=1.0; + dvh_Vrth=dvh_dv0*dv0_Vrth; if(dvh>0.0){ xvar1=(1.0-p[14]); xvar2=(-1.0-p[25]); pwq=pow(xvar1,xvar2); - qlo=p[24]*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[25]); + qlo=PCatT*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[25]); + qlo_PCatT=(1.0-((1.0-p[14])*(1.0-p[14]))*pwq)/(1.0-p[25]); qlo_Vbci=0.0; - qhi=dvh*(1.0-p[14]+0.5*p[25]*dvh/p[24])*pwq; - qhi_dvh=(0.5*dvh*p[25]/p[24]-p[14]+1.0)*pwq+0.5*dvh*p[25]*pwq/p[24]; + qlo_Vrth=qlo_PCatT*PCatT_Vrth; + qhi=dvh*(1.0-p[14]+0.5*p[25]*dvh/PCatT)*pwq; + qhi_dvh=(0.5*dvh*p[25]/PCatT-p[14]+1.0)*pwq+0.5*dvh*p[25]*pwq/PCatT; + qhi_PCatT=-0.5*(dvh*dvh)*p[25]*pwq/(PCatT*PCatT); qhi_Vbci=qhi_dvh*dvh_Vbci; + qhi_Vrth=qhi_dvh*dvh_Vrth; + qhi_Vrth=qhi_Vrth+qhi_PCatT*PCatT_Vrth; }else{ if((p[85]>0.0)&&((*Vbci)<-p[85])){ - xvar1=(1.0+p[85]/p[24]); + xvar1=(1.0+p[85]/PCatT); + xvar1_PCatT=-p[85]/(PCatT*PCatT); + xvar1_Vrth=xvar1_PCatT*PCatT_Vrth; xvar2=(1.0-p[25]); xvar3=pow(xvar1,xvar2); - qlo=p[24]*(1.0-xvar3*(1.0-((1.0-p[25])*((*Vbci)+p[85]))/(p[24]+p[85])))/(1.0-p[25]); - qlo_Vbci=p[24]*xvar3/(p[85]+p[24]); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=PCatT*(1.0-xvar3*(1.0-((1.0-p[25])*((*Vbci)+p[85]))/(PCatT+p[85])))/(1.0-p[25]); + qlo_PCatT=(1.0-(1.0-(1.0-p[25])*(p[85]+(*Vbci))/(p[85]+PCatT))*xvar3)/(1.0-p[25])-PCatT*(p[85]+(*Vbci))*xvar3/((p[85]+PCatT)*(p[85]+PCatT)); + qlo_xvar3=PCatT*((1.0-p[25])*(p[85]+(*Vbci))/(p[85]+PCatT)-1.0)/(1.0-p[25]); + qlo_Vbci=PCatT*xvar3/(p[85]+PCatT); + qlo_Vrth=qlo_PCatT*PCatT_Vrth; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; }else{ - xvar1=(1.0-(*Vbci)/p[24]); - xvar1_Vbci=-1.0/p[24]; + xvar1=(1.0-(*Vbci)/PCatT); + xvar1_Vbci=-1.0/PCatT; + xvar1_PCatT=(*Vbci)/(PCatT*PCatT); + xvar1_Vrth=xvar1_PCatT*PCatT_Vrth; xvar2=(1.0-p[25]); xvar3=pow(xvar1,xvar2); xvar3_xvar1=xvar3*xvar2/xvar1; xvar3_Vbci=xvar3_xvar1*xvar1_Vbci; - qlo=p[24]*(1.0-xvar3)/(1.0-p[25]); - qlo_xvar3=-p[24]/(1.0-p[25]); + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=PCatT*(1.0-xvar3)/(1.0-p[25]); + qlo_PCatT=(1.0-xvar3)/(1.0-p[25]); + qlo_xvar3=-PCatT/(1.0-p[25]); + qlo_Vrth=qlo_PCatT*PCatT_Vrth; qlo_Vbci=qlo_xvar3*xvar3_Vbci; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; } qhi=0.0; qhi_Vbci=0.0; + qhi_Vrth=0.0; } qdbc=qlo+qhi; qdbc_qlo=1.0; qdbc_qhi=1.0; + qdbc_Vrth=qdbc_qlo*qlo_Vrth; qdbc_Vbci=qdbc_qlo*qlo_Vbci; qdbc_Vbci=qdbc_Vbci+qdbc_qhi*qhi_Vbci; + qdbc_Vrth=qdbc_Vrth+qdbc_qhi*qhi_Vrth; }else{ if((p[85]>0.0)&&(p[86]>0.0)){ vn0=(p[85]+dv0)/(p[85]-dv0); + vn0_dv0=(p[85]+dv0)/((p[85]-dv0)*(p[85]-dv0))+1.0/(p[85]-dv0); + vn0_Vrth=vn0_dv0*dv0_Vrth; vnl0=2.0*vn0/(sqrt((vn0-1.0)*(vn0-1.0)+4.0*p[26]*p[26])+sqrt((vn0+1.0)*(vn0+1.0)+4.0*p[86]*p[86])); + vnl0_vn0=2.0/(sqrt(((vn0+1.0)*(vn0+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn0-1.0)*(vn0-1.0))+4.0*(p[26]*p[26])))-2.0*vn0*((vn0+1.0)/sqrt(((vn0+1.0)*(vn0+1.0))+4.0*(p[86]*p[86]))+(vn0-1.0)/sqrt(((vn0-1.0)*(vn0-1.0))+4.0*(p[26]*p[26])))/((sqrt(((vn0+1.0)*(vn0+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn0-1.0)*(vn0-1.0))+4.0*(p[26]*p[26])))*(sqrt(((vn0+1.0)*(vn0+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn0-1.0)*(vn0-1.0))+4.0*(p[26]*p[26])))); + vnl0_Vrth=vnl0_vn0*vn0_Vrth; vl0=0.5*(vnl0*(p[85]-dv0)-p[85]-dv0); - xvar1=(1.0-vl0/p[24]); + vl0_vnl0=0.5*(p[85]-dv0); + vl0_dv0=0.5*(-vnl0-1.0); + vl0_Vrth=vl0_vnl0*vnl0_Vrth; + vl0_Vrth=vl0_Vrth+vl0_dv0*dv0_Vrth; + xvar1=(1.0-vl0/PCatT); + xvar1_vl0=-1.0/PCatT; + xvar1_PCatT=vl0/(PCatT*PCatT); + xvar1_Vrth=xvar1_vl0*vl0_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PCatT*PCatT_Vrth; xvar2=(1.0-p[25]); xvar3=pow(xvar1,xvar2); - qlo0=p[24]*(1.0-xvar3)/(1.0-p[25]); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo0=PCatT*(1.0-xvar3)/(1.0-p[25]); + qlo0_PCatT=(1.0-xvar3)/(1.0-p[25]); + qlo0_xvar3=-PCatT/(1.0-p[25]); + qlo0_Vrth=qlo0_PCatT*PCatT_Vrth; + qlo0_Vrth=qlo0_Vrth+qlo0_xvar3*xvar3_Vrth; vn=(2.0*(*Vbci)+p[85]+dv0)/(p[85]-dv0); vn_Vbci=2.0/(p[85]-dv0); + vn_dv0=(p[85]+2.0*(*Vbci)+dv0)/((p[85]-dv0)*(p[85]-dv0))+1.0/(p[85]-dv0); + vn_Vrth=vn_dv0*dv0_Vrth; vnl=2.0*vn/(sqrt((vn-1.0)*(vn-1.0)+4.0*p[26]*p[26])+sqrt((vn+1.0)*(vn+1.0)+4.0*p[86]*p[86])); vnl_vn=2.0/(sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))-2.0*vn*((vn+1.0)/sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+(vn-1.0)/sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))/((sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))*(sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))); vnl_Vbci=vnl_vn*vn_Vbci; + vnl_Vrth=vnl_vn*vn_Vrth; vl=0.5*(vnl*(p[85]-dv0)-p[85]-dv0); vl_vnl=0.5*(p[85]-dv0); + vl_dv0=0.5*(-vnl-1.0); vl_Vbci=vl_vnl*vnl_Vbci; - xvar1=(1.0-vl/p[24]); - xvar1_vl=-1.0/p[24]; + vl_Vrth=vl_vnl*vnl_Vrth; + vl_Vrth=vl_Vrth+vl_dv0*dv0_Vrth; + xvar1=(1.0-vl/PCatT); + xvar1_vl=-1.0/PCatT; + xvar1_PCatT=vl/(PCatT*PCatT); xvar1_Vbci=xvar1_vl*vl_Vbci; + xvar1_Vrth=xvar1_vl*vl_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PCatT*PCatT_Vrth; xvar2=(1.0-p[25]); xvar3=pow(xvar1,xvar2); xvar3_xvar1=xvar3*xvar2/xvar1; xvar3_Vbci=xvar3_xvar1*xvar1_Vbci; - qlo=p[24]*(1.0-xvar3)/(1.0-p[25]); - qlo_xvar3=-p[24]/(1.0-p[25]); + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=PCatT*(1.0-xvar3)/(1.0-p[25]); + qlo_PCatT=(1.0-xvar3)/(1.0-p[25]); + qlo_xvar3=-PCatT/(1.0-p[25]); + qlo_Vrth=qlo_PCatT*PCatT_Vrth; qlo_Vbci=qlo_xvar3*xvar3_Vbci; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; sel=0.5*(vnl+1.0); sel_vnl=0.5; sel_Vbci=sel_vnl*vnl_Vbci; - xvar1=(1.0+p[85]/p[24]); + sel_Vrth=sel_vnl*vnl_Vrth; + xvar1=(1.0+p[85]/PCatT); + xvar1_PCatT=-p[85]/(PCatT*PCatT); + xvar1_Vrth=xvar1_PCatT*PCatT_Vrth; xvar2=(-p[25]); crt=pow(xvar1,xvar2); - xvar1=(1.0+dv0/p[24]); + crt_xvar1=crt*xvar2/xvar1; + crt_Vrth=crt_xvar1*xvar1_Vrth; + xvar1=(1.0+dv0/PCatT); + xvar1_dv0=1.0/PCatT; + xvar1_PCatT=-dv0/(PCatT*PCatT); + xvar1_Vrth=xvar1_dv0*dv0_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PCatT*PCatT_Vrth; xvar2=(-p[25]); cmx=pow(xvar1,xvar2); + cmx_xvar1=cmx*xvar2/xvar1; + cmx_Vrth=cmx_xvar1*xvar1_Vrth; cl=(1.0-sel)*crt+sel*cmx; cl_sel=cmx-crt; + cl_crt=1.0-sel; + cl_cmx=sel; cl_Vbci=cl_sel*sel_Vbci; + cl_Vrth=cl_sel*sel_Vrth; + cl_Vrth=cl_Vrth+cl_crt*crt_Vrth; + cl_Vrth=cl_Vrth+cl_cmx*cmx_Vrth; ql=((*Vbci)-vl+vl0)*cl; ql_Vbci=cl; ql_vl=-cl; + ql_vl0=cl; ql_cl=vl0-vl+(*Vbci); ql_Vbci=ql_Vbci+ql_vl*vl_Vbci; + ql_Vrth=ql_vl*vl_Vrth; + ql_Vrth=ql_Vrth+ql_vl0*vl0_Vrth; ql_Vbci=ql_Vbci+ql_cl*cl_Vbci; + ql_Vrth=ql_Vrth+ql_cl*cl_Vrth; qdbc=ql+qlo-qlo0; qdbc_ql=1.0; qdbc_qlo=1.0; + qdbc_qlo0=-1.0; qdbc_Vbci=qdbc_ql*ql_Vbci; + qdbc_Vrth=qdbc_ql*ql_Vrth; + qdbc_Vrth=qdbc_Vrth+qdbc_qlo*qlo_Vrth; qdbc_Vbci=qdbc_Vbci+qdbc_qlo*qlo_Vbci; + qdbc_Vrth=qdbc_Vrth+qdbc_qlo0*qlo0_Vrth; }else{ mv0=sqrt(dv0*dv0+4.0*p[26]*p[26]); + mv0_dv0=dv0/sqrt((dv0*dv0)+4.0*(p[26]*p[26])); + mv0_Vrth=mv0_dv0*dv0_Vrth; vl0=-0.5*(dv0+mv0); - xvar1=(1.0-vl0/p[24]); + vl0_dv0=-0.5; + vl0_mv0=-0.5; + vl0_Vrth=vl0_dv0*dv0_Vrth; + vl0_Vrth=vl0_Vrth+vl0_mv0*mv0_Vrth; + xvar1=(1.0-vl0/PCatT); + xvar1_vl0=-1.0/PCatT; + xvar1_PCatT=vl0/(PCatT*PCatT); + xvar1_Vrth=xvar1_vl0*vl0_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PCatT*PCatT_Vrth; xvar2=(1.0-p[25]); xvar3=pow(xvar1,xvar2); - q0=-p[24]*xvar3/(1.0-p[25]); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + q0=-PCatT*xvar3/(1.0-p[25]); + q0_PCatT=-xvar3/(1.0-p[25]); + q0_xvar3=-PCatT/(1.0-p[25]); + q0_Vrth=q0_PCatT*PCatT_Vrth; + q0_Vrth=q0_Vrth+q0_xvar3*xvar3_Vrth; dv=(*Vbci)+dv0; dv_Vbci=1.0; + dv_dv0=1.0; + dv_Vrth=dv_dv0*dv0_Vrth; mv=sqrt(dv*dv+4.0*p[26]*p[26]); mv_dv=dv/sqrt((dv*dv)+4.0*(p[26]*p[26])); mv_Vbci=mv_dv*dv_Vbci; + mv_Vrth=mv_dv*dv_Vrth; vl=0.5*(dv-mv)-dv0; vl_dv=0.5; vl_mv=-0.5; + vl_dv0=-1.0; vl_Vbci=vl_dv*dv_Vbci; + vl_Vrth=vl_dv*dv_Vrth; vl_Vbci=vl_Vbci+vl_mv*mv_Vbci; - xvar1=(1.0-vl/p[24]); - xvar1_vl=-1.0/p[24]; + vl_Vrth=vl_Vrth+vl_mv*mv_Vrth; + vl_Vrth=vl_Vrth+vl_dv0*dv0_Vrth; + xvar1=(1.0-vl/PCatT); + xvar1_vl=-1.0/PCatT; + xvar1_PCatT=vl/(PCatT*PCatT); xvar1_Vbci=xvar1_vl*vl_Vbci; + xvar1_Vrth=xvar1_vl*vl_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PCatT*PCatT_Vrth; xvar2=(1.0-p[25]); xvar3=pow(xvar1,xvar2); xvar3_xvar1=xvar3*xvar2/xvar1; xvar3_Vbci=xvar3_xvar1*xvar1_Vbci; - qlo=-p[24]*xvar3/(1.0-p[25]); - qlo_xvar3=-p[24]/(1.0-p[25]); + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=-PCatT*xvar3/(1.0-p[25]); + qlo_PCatT=-xvar3/(1.0-p[25]); + qlo_xvar3=-PCatT/(1.0-p[25]); + qlo_Vrth=qlo_PCatT*PCatT_Vrth; qlo_Vbci=qlo_xvar3*xvar3_Vbci; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; xvar1=(1.0-p[14]); xvar2=(-p[25]); xvar3=pow(xvar1,xvar2); @@ -4350,126 +6647,243 @@ double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; qdbc_qlo=1.0; qdbc_Vbci=xvar3; qdbc_vl=-xvar3; + qdbc_vl0=xvar3; + qdbc_q0=-1.0; + qdbc_Vrth=qdbc_qlo*qlo_Vrth; qdbc_Vbci=qdbc_Vbci+qdbc_qlo*qlo_Vbci; qdbc_Vbci=qdbc_Vbci+qdbc_vl*vl_Vbci; + qdbc_Vrth=qdbc_Vrth+qdbc_vl*vl_Vrth; + qdbc_Vrth=qdbc_Vrth+qdbc_vl0*vl0_Vrth; + qdbc_Vrth=qdbc_Vrth+qdbc_q0*q0_Vrth; } } - dv0=-p[24]*p[14]; + dv0=-PCatT*p[14]; + dv0_PCatT=-p[14]; + dv0_Vrth=dv0_PCatT*PCatT_Vrth; if(p[26]<=0.0){ dvh=(*Vbep)+dv0; dvh_Vbep=1.0; + dvh_dv0=1.0; + dvh_Vrth=dvh_dv0*dv0_Vrth; if(dvh>0.0){ xvar1=(1.0-p[14]); xvar2=(-1.0-p[25]); pwq=pow(xvar1,xvar2); - qlo=p[24]*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[25]); + qlo=PCatT*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[25]); + qlo_PCatT=(1.0-((1.0-p[14])*(1.0-p[14]))*pwq)/(1.0-p[25]); qlo_Vbep=0.0; - qhi=dvh*(1.0-p[14]+0.5*p[25]*dvh/p[24])*pwq; - qhi_dvh=(0.5*dvh*p[25]/p[24]-p[14]+1.0)*pwq+0.5*dvh*p[25]*pwq/p[24]; + qlo_Vrth=qlo_PCatT*PCatT_Vrth; + qhi=dvh*(1.0-p[14]+0.5*p[25]*dvh/PCatT)*pwq; + qhi_dvh=(0.5*dvh*p[25]/PCatT-p[14]+1.0)*pwq+0.5*dvh*p[25]*pwq/PCatT; + qhi_PCatT=-0.5*(dvh*dvh)*p[25]*pwq/(PCatT*PCatT); qhi_Vbep=qhi_dvh*dvh_Vbep; + qhi_Vrth=qhi_dvh*dvh_Vrth; + qhi_Vrth=qhi_Vrth+qhi_PCatT*PCatT_Vrth; }else{ if((p[85]>0.0)&&((*Vbep)<-p[85])){ - xvar1=(1.0+p[85]/p[24]); + xvar1=(1.0+p[85]/PCatT); + xvar1_PCatT=-p[85]/(PCatT*PCatT); + xvar1_Vrth=xvar1_PCatT*PCatT_Vrth; xvar2=(1.0-p[25]); xvar3=pow(xvar1,xvar2); - qlo=p[24]*(1.0-xvar3*(1.0-((1.0-p[25])*((*Vbep)+p[85]))/(p[24]+p[85])))/(1.0-p[25]); - qlo_Vbep=p[24]*xvar3/(p[85]+p[24]); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=PCatT*(1.0-xvar3*(1.0-((1.0-p[25])*((*Vbep)+p[85]))/(PCatT+p[85])))/(1.0-p[25]); + qlo_PCatT=(1.0-(1.0-(1.0-p[25])*(p[85]+(*Vbep))/(p[85]+PCatT))*xvar3)/(1.0-p[25])-PCatT*(p[85]+(*Vbep))*xvar3/((p[85]+PCatT)*(p[85]+PCatT)); + qlo_xvar3=PCatT*((1.0-p[25])*(p[85]+(*Vbep))/(p[85]+PCatT)-1.0)/(1.0-p[25]); + qlo_Vbep=PCatT*xvar3/(p[85]+PCatT); + qlo_Vrth=qlo_PCatT*PCatT_Vrth; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; }else{ - xvar1=(1.0-(*Vbep)/p[24]); - xvar1_Vbep=-1.0/p[24]; + xvar1=(1.0-(*Vbep)/PCatT); + xvar1_Vbep=-1.0/PCatT; + xvar1_PCatT=(*Vbep)/(PCatT*PCatT); + xvar1_Vrth=xvar1_PCatT*PCatT_Vrth; xvar2=(1.0-p[25]); xvar3=pow(xvar1,xvar2); xvar3_xvar1=xvar3*xvar2/xvar1; xvar3_Vbep=xvar3_xvar1*xvar1_Vbep; - qlo=p[24]*(1.0-xvar3)/(1.0-p[25]); - qlo_xvar3=-p[24]/(1.0-p[25]); + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=PCatT*(1.0-xvar3)/(1.0-p[25]); + qlo_PCatT=(1.0-xvar3)/(1.0-p[25]); + qlo_xvar3=-PCatT/(1.0-p[25]); + qlo_Vrth=qlo_PCatT*PCatT_Vrth; qlo_Vbep=qlo_xvar3*xvar3_Vbep; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; } qhi=0.0; qhi_Vbep=0.0; + qhi_Vrth=0.0; } qdbep=qlo+qhi; qdbep_qlo=1.0; qdbep_qhi=1.0; + qdbep_Vrth=qdbep_qlo*qlo_Vrth; qdbep_Vbep=qdbep_qlo*qlo_Vbep; qdbep_Vbep=qdbep_Vbep+qdbep_qhi*qhi_Vbep; + qdbep_Vrth=qdbep_Vrth+qdbep_qhi*qhi_Vrth; }else{ if((p[85]>0.0)&&(p[86]>0.0)){ vn0=(p[85]+dv0)/(p[85]-dv0); + vn0_dv0=(p[85]+dv0)/((p[85]-dv0)*(p[85]-dv0))+1.0/(p[85]-dv0); + vn0_Vrth=vn0_dv0*dv0_Vrth; vnl0=2.0*vn0/(sqrt((vn0-1.0)*(vn0-1.0)+4.0*p[26]*p[26])+sqrt((vn0+1.0)*(vn0+1.0)+4.0*p[86]*p[86])); + vnl0_vn0=2.0/(sqrt(((vn0+1.0)*(vn0+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn0-1.0)*(vn0-1.0))+4.0*(p[26]*p[26])))-2.0*vn0*((vn0+1.0)/sqrt(((vn0+1.0)*(vn0+1.0))+4.0*(p[86]*p[86]))+(vn0-1.0)/sqrt(((vn0-1.0)*(vn0-1.0))+4.0*(p[26]*p[26])))/((sqrt(((vn0+1.0)*(vn0+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn0-1.0)*(vn0-1.0))+4.0*(p[26]*p[26])))*(sqrt(((vn0+1.0)*(vn0+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn0-1.0)*(vn0-1.0))+4.0*(p[26]*p[26])))); + vnl0_Vrth=vnl0_vn0*vn0_Vrth; vl0=0.5*(vnl0*(p[85]-dv0)-p[85]-dv0); - xvar1=(1.0-vl0/p[24]); + vl0_vnl0=0.5*(p[85]-dv0); + vl0_dv0=0.5*(-vnl0-1.0); + vl0_Vrth=vl0_vnl0*vnl0_Vrth; + vl0_Vrth=vl0_Vrth+vl0_dv0*dv0_Vrth; + xvar1=(1.0-vl0/PCatT); + xvar1_vl0=-1.0/PCatT; + xvar1_PCatT=vl0/(PCatT*PCatT); + xvar1_Vrth=xvar1_vl0*vl0_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PCatT*PCatT_Vrth; xvar2=(1.0-p[25]); xvar3=pow(xvar1,xvar2); - qlo0=p[24]*(1.0-xvar3)/(1.0-p[25]); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo0=PCatT*(1.0-xvar3)/(1.0-p[25]); + qlo0_PCatT=(1.0-xvar3)/(1.0-p[25]); + qlo0_xvar3=-PCatT/(1.0-p[25]); + qlo0_Vrth=qlo0_PCatT*PCatT_Vrth; + qlo0_Vrth=qlo0_Vrth+qlo0_xvar3*xvar3_Vrth; vn=(2.0*(*Vbep)+p[85]+dv0)/(p[85]-dv0); vn_Vbep=2.0/(p[85]-dv0); + vn_dv0=(p[85]+2.0*(*Vbep)+dv0)/((p[85]-dv0)*(p[85]-dv0))+1.0/(p[85]-dv0); + vn_Vrth=vn_dv0*dv0_Vrth; vnl=2.0*vn/(sqrt((vn-1.0)*(vn-1.0)+4.0*p[26]*p[26])+sqrt((vn+1.0)*(vn+1.0)+4.0*p[86]*p[86])); vnl_vn=2.0/(sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))-2.0*vn*((vn+1.0)/sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+(vn-1.0)/sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))/((sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))*(sqrt(((vn+1.0)*(vn+1.0))+4.0*(p[86]*p[86]))+sqrt(((vn-1.0)*(vn-1.0))+4.0*(p[26]*p[26])))); vnl_Vbep=vnl_vn*vn_Vbep; + vnl_Vrth=vnl_vn*vn_Vrth; vl=0.5*(vnl*(p[85]-dv0)-p[85]-dv0); vl_vnl=0.5*(p[85]-dv0); + vl_dv0=0.5*(-vnl-1.0); vl_Vbep=vl_vnl*vnl_Vbep; - xvar1=(1.0-vl/p[24]); - xvar1_vl=-1.0/p[24]; + vl_Vrth=vl_vnl*vnl_Vrth; + vl_Vrth=vl_Vrth+vl_dv0*dv0_Vrth; + xvar1=(1.0-vl/PCatT); + xvar1_vl=-1.0/PCatT; + xvar1_PCatT=vl/(PCatT*PCatT); xvar1_Vbep=xvar1_vl*vl_Vbep; + xvar1_Vrth=xvar1_vl*vl_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PCatT*PCatT_Vrth; xvar2=(1.0-p[25]); xvar3=pow(xvar1,xvar2); xvar3_xvar1=xvar3*xvar2/xvar1; xvar3_Vbep=xvar3_xvar1*xvar1_Vbep; - qlo=p[24]*(1.0-xvar3)/(1.0-p[25]); - qlo_xvar3=-p[24]/(1.0-p[25]); + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=PCatT*(1.0-xvar3)/(1.0-p[25]); + qlo_PCatT=(1.0-xvar3)/(1.0-p[25]); + qlo_xvar3=-PCatT/(1.0-p[25]); + qlo_Vrth=qlo_PCatT*PCatT_Vrth; qlo_Vbep=qlo_xvar3*xvar3_Vbep; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; sel=0.5*(vnl+1.0); sel_vnl=0.5; sel_Vbep=sel_vnl*vnl_Vbep; - xvar1=(1.0+p[85]/p[24]); + sel_Vrth=sel_vnl*vnl_Vrth; + xvar1=(1.0+p[85]/PCatT); + xvar1_PCatT=-p[85]/(PCatT*PCatT); + xvar1_Vrth=xvar1_PCatT*PCatT_Vrth; xvar2=(-p[25]); crt=pow(xvar1,xvar2); - xvar1=(1.0+dv0/p[24]); + crt_xvar1=crt*xvar2/xvar1; + crt_Vrth=crt_xvar1*xvar1_Vrth; + xvar1=(1.0+dv0/PCatT); + xvar1_dv0=1.0/PCatT; + xvar1_PCatT=-dv0/(PCatT*PCatT); + xvar1_Vrth=xvar1_dv0*dv0_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PCatT*PCatT_Vrth; xvar2=(-p[25]); cmx=pow(xvar1,xvar2); + cmx_xvar1=cmx*xvar2/xvar1; + cmx_Vrth=cmx_xvar1*xvar1_Vrth; cl=(1.0-sel)*crt+sel*cmx; cl_sel=cmx-crt; + cl_crt=1.0-sel; + cl_cmx=sel; cl_Vbep=cl_sel*sel_Vbep; + cl_Vrth=cl_sel*sel_Vrth; + cl_Vrth=cl_Vrth+cl_crt*crt_Vrth; + cl_Vrth=cl_Vrth+cl_cmx*cmx_Vrth; ql=((*Vbep)-vl+vl0)*cl; ql_Vbep=cl; ql_vl=-cl; + ql_vl0=cl; ql_cl=vl0-vl+(*Vbep); ql_Vbep=ql_Vbep+ql_vl*vl_Vbep; + ql_Vrth=ql_vl*vl_Vrth; + ql_Vrth=ql_Vrth+ql_vl0*vl0_Vrth; ql_Vbep=ql_Vbep+ql_cl*cl_Vbep; + ql_Vrth=ql_Vrth+ql_cl*cl_Vrth; qdbep=ql+qlo-qlo0; qdbep_ql=1.0; qdbep_qlo=1.0; + qdbep_qlo0=-1.0; qdbep_Vbep=qdbep_ql*ql_Vbep; + qdbep_Vrth=qdbep_ql*ql_Vrth; + qdbep_Vrth=qdbep_Vrth+qdbep_qlo*qlo_Vrth; qdbep_Vbep=qdbep_Vbep+qdbep_qlo*qlo_Vbep; + qdbep_Vrth=qdbep_Vrth+qdbep_qlo0*qlo0_Vrth; }else{ mv0=sqrt(dv0*dv0+4.0*p[26]*p[26]); + mv0_dv0=dv0/sqrt((dv0*dv0)+4.0*(p[26]*p[26])); + mv0_Vrth=mv0_dv0*dv0_Vrth; vl0=-0.5*(dv0+mv0); - xvar1=(1.0-vl0/p[24]); + vl0_dv0=-0.5; + vl0_mv0=-0.5; + vl0_Vrth=vl0_dv0*dv0_Vrth; + vl0_Vrth=vl0_Vrth+vl0_mv0*mv0_Vrth; + xvar1=(1.0-vl0/PCatT); + xvar1_vl0=-1.0/PCatT; + xvar1_PCatT=vl0/(PCatT*PCatT); + xvar1_Vrth=xvar1_vl0*vl0_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PCatT*PCatT_Vrth; xvar2=(1.0-p[25]); xvar3=pow(xvar1,xvar2); - q0=-p[24]*xvar3/(1.0-p[25]); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + q0=-PCatT*xvar3/(1.0-p[25]); + q0_PCatT=-xvar3/(1.0-p[25]); + q0_xvar3=-PCatT/(1.0-p[25]); + q0_Vrth=q0_PCatT*PCatT_Vrth; + q0_Vrth=q0_Vrth+q0_xvar3*xvar3_Vrth; dv=(*Vbep)+dv0; dv_Vbep=1.0; + dv_dv0=1.0; + dv_Vrth=dv_dv0*dv0_Vrth; mv=sqrt(dv*dv+4.0*p[26]*p[26]); mv_dv=dv/sqrt((dv*dv)+4.0*(p[26]*p[26])); mv_Vbep=mv_dv*dv_Vbep; + mv_Vrth=mv_dv*dv_Vrth; vl=0.5*(dv-mv)-dv0; vl_dv=0.5; vl_mv=-0.5; + vl_dv0=-1.0; vl_Vbep=vl_dv*dv_Vbep; + vl_Vrth=vl_dv*dv_Vrth; vl_Vbep=vl_Vbep+vl_mv*mv_Vbep; - xvar1=(1.0-vl/p[24]); - xvar1_vl=-1.0/p[24]; + vl_Vrth=vl_Vrth+vl_mv*mv_Vrth; + vl_Vrth=vl_Vrth+vl_dv0*dv0_Vrth; + xvar1=(1.0-vl/PCatT); + xvar1_vl=-1.0/PCatT; + xvar1_PCatT=vl/(PCatT*PCatT); xvar1_Vbep=xvar1_vl*vl_Vbep; + xvar1_Vrth=xvar1_vl*vl_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PCatT*PCatT_Vrth; xvar2=(1.0-p[25]); xvar3=pow(xvar1,xvar2); xvar3_xvar1=xvar3*xvar2/xvar1; xvar3_Vbep=xvar3_xvar1*xvar1_Vbep; - qlo=-p[24]*xvar3/(1.0-p[25]); - qlo_xvar3=-p[24]/(1.0-p[25]); + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=-PCatT*xvar3/(1.0-p[25]); + qlo_PCatT=-xvar3/(1.0-p[25]); + qlo_xvar3=-PCatT/(1.0-p[25]); + qlo_Vrth=qlo_PCatT*PCatT_Vrth; qlo_Vbep=qlo_xvar3*xvar3_Vbep; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; xvar1=(1.0-p[14]); xvar2=(-p[25]); xvar3=pow(xvar1,xvar2); @@ -4477,76 +6891,130 @@ double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; qdbep_qlo=1.0; qdbep_Vbep=xvar3; qdbep_vl=-xvar3; + qdbep_vl0=xvar3; + qdbep_q0=-1.0; + qdbep_Vrth=qdbep_qlo*qlo_Vrth; qdbep_Vbep=qdbep_Vbep+qdbep_qlo*qlo_Vbep; qdbep_Vbep=qdbep_Vbep+qdbep_vl*vl_Vbep; + qdbep_Vrth=qdbep_Vrth+qdbep_vl*vl_Vrth; + qdbep_Vrth=qdbep_Vrth+qdbep_vl0*vl0_Vrth; + qdbep_Vrth=qdbep_Vrth+qdbep_q0*q0_Vrth; } } if(p[27]>0.0){ - dv0=-p[28]*p[14]; + dv0=-PSatT*p[14]; + dv0_PSatT=-p[14]; + dv0_Vrth=dv0_PSatT*PSatT_Vrth; if(p[30]<=0.0){ dvh=(*Vbcp)+dv0; dvh_Vbcp=1.0; + dvh_dv0=1.0; + dvh_Vrth=dvh_dv0*dv0_Vrth; if(dvh>0.0){ xvar1=(1.0-p[14]); xvar2=(-1.0-p[29]); pwq=pow(xvar1,xvar2); - qlo=p[28]*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[29]); + qlo=PSatT*(1.0-pwq*(1.0-p[14])*(1.0-p[14]))/(1.0-p[29]); + qlo_PSatT=(1.0-((1.0-p[14])*(1.0-p[14]))*pwq)/(1.0-p[29]); qlo_Vbep=0.0; qlo_Vbcp=0.0; - qhi=dvh*(1.0-p[14]+0.5*p[29]*dvh/p[28])*pwq; - qhi_dvh=(0.5*dvh*p[29]/p[28]-p[14]+1.0)*pwq+0.5*dvh*p[29]*pwq/p[28]; + qlo_Vrth=qlo_PSatT*PSatT_Vrth; + qhi=dvh*(1.0-p[14]+0.5*p[29]*dvh/PSatT)*pwq; + qhi_dvh=(0.5*dvh*p[29]/PSatT-p[14]+1.0)*pwq+0.5*dvh*p[29]*pwq/PSatT; + qhi_PSatT=-0.5*(dvh*dvh)*p[29]*pwq/(PSatT*PSatT); qhi_Vbep=0.0; qhi_Vbcp=qhi_dvh*dvh_Vbcp; + qhi_Vrth=qhi_dvh*dvh_Vrth; + qhi_Vrth=qhi_Vrth+qhi_PSatT*PSatT_Vrth; }else{ - xvar1=(1.0-(*Vbcp)/p[28]); - xvar1_Vbcp=-1.0/p[28]; + xvar1=(1.0-(*Vbcp)/PSatT); + xvar1_Vbcp=-1.0/PSatT; + xvar1_PSatT=(*Vbcp)/(PSatT*PSatT); + xvar1_Vrth=xvar1_PSatT*PSatT_Vrth; xvar2=(1.0-p[29]); xvar3=pow(xvar1,xvar2); xvar3_xvar1=xvar3*xvar2/xvar1; xvar3_Vbcp=xvar3_xvar1*xvar1_Vbcp; - qlo=p[28]*(1.0-xvar3)/(1.0-p[29]); - qlo_xvar3=-p[28]/(1.0-p[29]); + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=PSatT*(1.0-xvar3)/(1.0-p[29]); + qlo_PSatT=(1.0-xvar3)/(1.0-p[29]); + qlo_xvar3=-PSatT/(1.0-p[29]); qlo_Vbep=0.0; + qlo_Vrth=qlo_PSatT*PSatT_Vrth; qlo_Vbcp=qlo_xvar3*xvar3_Vbcp; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; qhi=0.0; qhi_Vbep=0.0; + qhi_Vrth=0.0; qhi_Vbcp=0.0; } qdbcp=qlo+qhi; qdbcp_qlo=1.0; qdbcp_qhi=1.0; + qdbcp_Vrth=qdbcp_qlo*qlo_Vrth; qdbcp_Vbcp=qdbcp_qlo*qlo_Vbcp; qdbcp_Vbep=qdbcp_qlo*qlo_Vbep; qdbcp_Vbep=qdbcp_Vbep+qdbcp_qhi*qhi_Vbep; + qdbcp_Vrth=qdbcp_Vrth+qdbcp_qhi*qhi_Vrth; qdbcp_Vbcp=qdbcp_Vbcp+qdbcp_qhi*qhi_Vbcp; }else{ mv0=sqrt(dv0*dv0+4.0*p[30]*p[30]); + mv0_dv0=dv0/sqrt((dv0*dv0)+4.0*(p[30]*p[30])); + mv0_Vrth=mv0_dv0*dv0_Vrth; vl0=-0.5*(dv0+mv0); - xvar1=(1.0-vl0/p[28]); + vl0_dv0=-0.5; + vl0_mv0=-0.5; + vl0_Vrth=vl0_dv0*dv0_Vrth; + vl0_Vrth=vl0_Vrth+vl0_mv0*mv0_Vrth; + xvar1=(1.0-vl0/PSatT); + xvar1_vl0=-1.0/PSatT; + xvar1_PSatT=vl0/(PSatT*PSatT); + xvar1_Vrth=xvar1_vl0*vl0_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PSatT*PSatT_Vrth; xvar2=(1.0-p[29]); xvar3=pow(xvar1,xvar2); - q0=-p[28]*xvar3/(1.0-p[29]); + xvar3_xvar1=xvar3*xvar2/xvar1; + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + q0=-PSatT*xvar3/(1.0-p[29]); + q0_PSatT=-xvar3/(1.0-p[29]); + q0_xvar3=-PSatT/(1.0-p[29]); + q0_Vrth=q0_PSatT*PSatT_Vrth; + q0_Vrth=q0_Vrth+q0_xvar3*xvar3_Vrth; dv=(*Vbcp)+dv0; dv_Vbcp=1.0; + dv_dv0=1.0; + dv_Vrth=dv_dv0*dv0_Vrth; mv=sqrt(dv*dv+4.0*p[30]*p[30]); mv_dv=dv/sqrt((dv*dv)+4.0*(p[30]*p[30])); mv_Vbcp=mv_dv*dv_Vbcp; + mv_Vrth=mv_dv*dv_Vrth; vl=0.5*(dv-mv)-dv0; vl_dv=0.5; vl_mv=-0.5; + vl_dv0=-1.0; vl_Vbcp=vl_dv*dv_Vbcp; + vl_Vrth=vl_dv*dv_Vrth; vl_Vbcp=vl_Vbcp+vl_mv*mv_Vbcp; - xvar1=(1.0-vl/p[28]); - xvar1_vl=-1.0/p[28]; + vl_Vrth=vl_Vrth+vl_mv*mv_Vrth; + vl_Vrth=vl_Vrth+vl_dv0*dv0_Vrth; + xvar1=(1.0-vl/PSatT); + xvar1_vl=-1.0/PSatT; + xvar1_PSatT=vl/(PSatT*PSatT); xvar1_Vbcp=xvar1_vl*vl_Vbcp; + xvar1_Vrth=xvar1_vl*vl_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_PSatT*PSatT_Vrth; xvar2=(1.0-p[29]); xvar3=pow(xvar1,xvar2); xvar3_xvar1=xvar3*xvar2/xvar1; xvar3_Vbcp=xvar3_xvar1*xvar1_Vbcp; - qlo=-p[28]*xvar3/(1.0-p[29]); - qlo_xvar3=-p[28]/(1.0-p[29]); + xvar3_Vrth=xvar3_xvar1*xvar1_Vrth; + qlo=-PSatT*xvar3/(1.0-p[29]); + qlo_PSatT=-xvar3/(1.0-p[29]); + qlo_xvar3=-PSatT/(1.0-p[29]); qlo_Vbep=0.0; + qlo_Vrth=qlo_PSatT*PSatT_Vrth; qlo_Vbcp=qlo_xvar3*xvar3_Vbcp; + qlo_Vrth=qlo_Vrth+qlo_xvar3*xvar3_Vrth; xvar1=(1.0-p[14]); xvar2=(-p[29]); xvar3=pow(xvar1,xvar2); @@ -4554,146 +7022,225 @@ double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; qdbcp_qlo=1.0; qdbcp_Vbcp=xvar3; qdbcp_vl=-xvar3; + qdbcp_vl0=xvar3; + qdbcp_q0=-1.0; + qdbcp_Vrth=qdbcp_qlo*qlo_Vrth; qdbcp_Vbcp=qdbcp_Vbcp+qdbcp_qlo*qlo_Vbcp; qdbcp_Vbep=qdbcp_qlo*qlo_Vbep; qdbcp_Vbcp=qdbcp_Vbcp+qdbcp_vl*vl_Vbcp; + qdbcp_Vrth=qdbcp_Vrth+qdbcp_vl*vl_Vrth; + qdbcp_Vrth=qdbcp_Vrth+qdbcp_vl0*vl0_Vrth; + qdbcp_Vrth=qdbcp_Vrth+qdbcp_q0*q0_Vrth; } }else{ qdbcp=0.0; + qdbcp_Vrth=0.0; qdbcp_Vbcp=0.0; } - argi=(*Vbei)/(p[12]*Vtv); - argi_Vbei=1.0/(p[12]*Vtv); + argi=(*Vbei)/(NFatT*Vtv); + argi_Vbei=1.0/(NFatT*Vtv); + argi_NFatT=-(*Vbei)/((NFatT*NFatT)*Vtv); + argi_Vtv=-(*Vbei)/(NFatT*(Vtv*Vtv)); + argi_Vrth=argi_NFatT*NFatT_Vrth; + argi_Vrth=argi_Vrth+argi_Vtv*Vtv_Vrth; expi=exp(argi); expi_argi=expi; expi_Vbei=expi_argi*argi_Vbei; - Ifi=p[11]*(expi-1.0); - Ifi_expi=p[11]; + expi_Vrth=expi_argi*argi_Vrth; + Ifi=ISatT*(expi-1.0); + Ifi_ISatT=expi-1.0; + Ifi_expi=ISatT; + Ifi_Vrth=Ifi_ISatT*ISatT_Vrth; Ifi_Vbei=Ifi_expi*expi_Vbei; - argi=(*Vbci)/(p[13]*Vtv); - argi_Vbci=1.0/(p[13]*Vtv); + Ifi_Vrth=Ifi_Vrth+Ifi_expi*expi_Vrth; + argi=(*Vbci)/(NRatT*Vtv); + argi_Vbci=1.0/(NRatT*Vtv); + argi_NRatT=-(*Vbci)/((NRatT*NRatT)*Vtv); + argi_Vtv=-(*Vbci)/(NRatT*(Vtv*Vtv)); + argi_Vrth=argi_NRatT*NRatT_Vrth; + argi_Vrth=argi_Vrth+argi_Vtv*Vtv_Vrth; expi=exp(argi); expi_argi=expi; expi_Vbci=expi_argi*argi_Vbci; - Iri=p[11]*p[94]*(expi-1.0); - Iri_expi=p[11]*p[94]; + expi_Vrth=expi_argi*argi_Vrth; + Iri=ISatT*ISRRatT*(expi-1.0); + Iri_ISatT=(expi-1.0)*ISRRatT; + Iri_ISRRatT=(expi-1.0)*ISatT; + Iri_expi=ISatT*ISRRatT; + Iri_Vrth=Iri_ISatT*ISatT_Vrth; + Iri_Vrth=Iri_Vrth+Iri_ISRRatT*ISRRatT_Vrth; Iri_Vbci=Iri_expi*expi_Vbci; + Iri_Vrth=Iri_Vrth+Iri_expi*expi_Vrth; q1z=1.0+qdbe*IVER+qdbc*IVEF; q1z_qdbe=IVER; q1z_qdbc=IVEF; + q1z_Vrth=q1z_qdbe*qdbe_Vrth; q1z_Vbei=q1z_qdbe*qdbe_Vbei; + q1z_Vrth=q1z_Vrth+q1z_qdbc*qdbc_Vrth; q1z_Vbci=q1z_qdbc*qdbc_Vbci; q1=0.5*(sqrt((q1z-1.0e-4)*(q1z-1.0e-4)+1.0e-8)+q1z-1.0e-4)+1.0e-4; q1_q1z=0.5*((q1z-1.0e-4)/sqrt(((q1z-1.0e-4)*(q1z-1.0e-4))+1.0e-8)+1.0); + q1_Vrth=q1_q1z*q1z_Vrth; q1_Vbei=q1_q1z*q1z_Vbei; q1_Vbci=q1_q1z*q1z_Vbci; q2=Ifi*IIKF+Iri*IIKR; q2_Ifi=IIKF; + q2_IIKF=Ifi; q2_Iri=IIKR; + q2_Vrth=q2_Ifi*Ifi_Vrth; q2_Vbei=q2_Ifi*Ifi_Vbei; + q2_Vrth=q2_Vrth+q2_IIKF*IIKF_Vrth; + q2_Vrth=q2_Vrth+q2_Iri*Iri_Vrth; q2_Vbci=q2_Iri*Iri_Vbci; if(p[88]<0.5){ xvar2=1.0/p[89]; xvar3=pow(q1,xvar2); xvar3_q1=xvar3*xvar2/q1; + xvar3_Vrth=xvar3_q1*q1_Vrth; xvar3_Vbei=xvar3_q1*q1_Vbei; xvar3_Vbci=xvar3_q1*q1_Vbci; xvar1=(xvar3+4.0*q2); xvar1_xvar3=1.0; xvar1_q2=4.0; + xvar1_Vrth=xvar1_xvar3*xvar3_Vrth; xvar1_Vbei=xvar1_xvar3*xvar3_Vbei; xvar1_Vbci=xvar1_xvar3*xvar3_Vbci; + xvar1_Vrth=xvar1_Vrth+xvar1_q2*q2_Vrth; xvar1_Vbei=xvar1_Vbei+xvar1_q2*q2_Vbei; xvar1_Vbci=xvar1_Vbci+xvar1_q2*q2_Vbci; xvar4=pow(xvar1,p[89]); xvar4_xvar1=xvar4*p[89]/xvar1; + xvar4_Vrth=xvar4_xvar1*xvar1_Vrth; xvar4_Vbei=xvar4_xvar1*xvar1_Vbei; xvar4_Vbci=xvar4_xvar1*xvar1_Vbci; qb=0.5*(q1+xvar4); qb_q1=0.5; qb_xvar4=0.5; + qb_Vrth=qb_q1*q1_Vrth; qb_Vbei=qb_q1*q1_Vbei; qb_Vbci=qb_q1*q1_Vbci; + qb_Vrth=qb_Vrth+qb_xvar4*xvar4_Vrth; qb_Vbei=qb_Vbei+qb_xvar4*xvar4_Vbei; qb_Vbci=qb_Vbci+qb_xvar4*xvar4_Vbci; }else{ xvar1=(1.0+4.0*q2); xvar1_q2=4.0; + xvar1_Vrth=xvar1_q2*q2_Vrth; xvar1_Vbei=xvar1_q2*q2_Vbei; xvar1_Vbci=xvar1_q2*q2_Vbci; xvar2=pow(xvar1,p[89]); xvar2_xvar1=xvar2*p[89]/xvar1; + xvar2_Vrth=xvar2_xvar1*xvar1_Vrth; xvar2_Vbei=xvar2_xvar1*xvar1_Vbei; xvar2_Vbci=xvar2_xvar1*xvar1_Vbci; qb=0.5*q1*(1.0+xvar2); qb_q1=0.5*(xvar2+1.0); qb_xvar2=0.5*q1; + qb_Vrth=qb_q1*q1_Vrth; qb_Vbei=qb_q1*q1_Vbei; qb_Vbci=qb_q1*q1_Vbci; + qb_Vrth=qb_Vrth+qb_xvar2*xvar2_Vrth; qb_Vbei=qb_Vbei+qb_xvar2*xvar2_Vbei; qb_Vbci=qb_Vbci+qb_xvar2*xvar2_Vbci; } (*Itzr)=Iri/qb; Itzr_Iri=1.0/qb; Itzr_qb=-Iri/(qb*qb); + *Itzr_Vrth=Itzr_Iri*Iri_Vrth; *Itzr_Vbci=Itzr_Iri*Iri_Vbci; + *Itzr_Vrth=(*Itzr_Vrth)+Itzr_qb*qb_Vrth; *Itzr_Vbei=Itzr_qb*qb_Vbei; *Itzr_Vbci=(*Itzr_Vbci)+Itzr_qb*qb_Vbci; - (*Itzf)=Ifi/qb; + Itzf=Ifi/qb; Itzf_Ifi=1.0/qb; Itzf_qb=-Ifi/(qb*qb); - *Itzf_Vbei=Itzf_Ifi*Ifi_Vbei; - *Itzf_Vbei=(*Itzf_Vbei)+Itzf_qb*qb_Vbei; - *Itzf_Vbci=Itzf_qb*qb_Vbci; + Itzf_Vrth=Itzf_Ifi*Ifi_Vrth; + Itzf_Vbei=Itzf_Ifi*Ifi_Vbei; + Itzf_Vrth=Itzf_Vrth+Itzf_qb*qb_Vrth; + Itzf_Vbei=Itzf_Vbei+Itzf_qb*qb_Vbei; + Itzf_Vbci=Itzf_qb*qb_Vbci; + (*Ixzf)=-Itzf; + Ixzf_Itzf=-1.0; + *Ixzf_Vrth=Ixzf_Itzf*Itzf_Vrth; + *Ixzf_Vbei=Ixzf_Itzf*Itzf_Vbei; + *Ixzf_Vbci=Ixzf_Itzf*Itzf_Vbci; + (*Itxf)=(*Vrxf); + *Itxf_Vrxf=1.0; + (*Ixxf)=(*Vrxf); + *Ixxf_Vrxf=1.0; if(p[42]>0.0){ argi=(*Vbep)/(p[44]*Vtv); argi_Vbep=1.0/(p[44]*Vtv); + argi_Vtv=-(*Vbep)/(p[44]*(Vtv*Vtv)); + argi_Vrth=argi_Vtv*Vtv_Vrth; expi=exp(argi); expi_argi=expi; expi_Vbep=expi_argi*argi_Vbep; + expi_Vrth=expi_argi*argi_Vrth; argx=(*Vbci)/(p[44]*Vtv); argx_Vbci=1.0/(p[44]*Vtv); + argx_Vtv=-(*Vbci)/(p[44]*(Vtv*Vtv)); + argx_Vrth=argx_Vtv*Vtv_Vrth; expx=exp(argx); expx_argx=expx; expx_Vbci=expx_argx*argx_Vbci; - Ifp=p[42]*(p[43]*expi+(1.0-p[43])*expx-1.0); - Ifp_expi=p[42]*p[43]; - Ifp_expx=p[42]*(1.0-p[43]); + expx_Vrth=expx_argx*argx_Vrth; + Ifp=ISPatT*(p[43]*expi+(1.0-p[43])*expx-1.0); + Ifp_ISPatT=expi*p[43]+expx*(1.0-p[43])-1.0; + Ifp_expi=ISPatT*p[43]; + Ifp_expx=ISPatT*(1.0-p[43]); + Ifp_Vrth=Ifp_ISPatT*ISPatT_Vrth; Ifp_Vbep=Ifp_expi*expi_Vbep; + Ifp_Vrth=Ifp_Vrth+Ifp_expi*expi_Vrth; Ifp_Vbci=Ifp_expx*expx_Vbci; + Ifp_Vrth=Ifp_Vrth+Ifp_expx*expx_Vrth; q2p=Ifp*IIKP; q2p_Ifp=IIKP; + q2p_Vrth=q2p_Ifp*Ifp_Vrth; q2p_Vbep=q2p_Ifp*Ifp_Vbep; q2p_Vbci=q2p_Ifp*Ifp_Vbci; qbp=0.5*(1.0+sqrt(1.0+4.0*q2p)); qbp_q2p=1.0/sqrt(4.0*q2p+1.0); + qbp_Vrth=qbp_q2p*q2p_Vrth; qbp_Vbep=qbp_q2p*q2p_Vbep; qbp_Vbci=qbp_q2p*q2p_Vbci; argi=(*Vbcp)/(p[44]*Vtv); argi_Vbcp=1.0/(p[44]*Vtv); + argi_Vtv=-(*Vbcp)/(p[44]*(Vtv*Vtv)); + argi_Vrth=argi_Vtv*Vtv_Vrth; expi=exp(argi); expi_argi=expi; expi_Vbcp=expi_argi*argi_Vbcp; - Irp=p[42]*(expi-1.0); - Irp_expi=p[42]; + expi_Vrth=expi_argi*argi_Vrth; + Irp=ISPatT*(expi-1.0); + Irp_ISPatT=expi-1.0; + Irp_expi=ISPatT; + Irp_Vrth=Irp_ISPatT*ISPatT_Vrth; Irp_Vbcp=Irp_expi*expi_Vbcp; + Irp_Vrth=Irp_Vrth+Irp_expi*expi_Vrth; (*Iccp)=(Ifp-Irp)/qbp; Iccp_Ifp=1.0/qbp; Iccp_Irp=-1.0/qbp; Iccp_qbp=-(Ifp-Irp)/(qbp*qbp); + *Iccp_Vrth=Iccp_Ifp*Ifp_Vrth; *Iccp_Vbep=Iccp_Ifp*Ifp_Vbep; *Iccp_Vbci=Iccp_Ifp*Ifp_Vbci; + *Iccp_Vrth=(*Iccp_Vrth)+Iccp_Irp*Irp_Vrth; *Iccp_Vbcp=Iccp_Irp*Irp_Vbcp; + *Iccp_Vrth=(*Iccp_Vrth)+Iccp_qbp*qbp_Vrth; *Iccp_Vbep=(*Iccp_Vbep)+Iccp_qbp*qbp_Vbep; *Iccp_Vbci=(*Iccp_Vbci)+Iccp_qbp*qbp_Vbci; }else{ Ifp=0.0; + Ifp_Vrth=0.0; Ifp_Vbep=0.0; Ifp_Vbci=0.0; qbp=1.0; + qbp_Vrth=0.0; qbp_Vbep=0.0; qbp_Vbci=0.0; (*Iccp)=0.0; + *Iccp_Vrth=0.0; *Iccp_Vbep=0.0; *Iccp_Vbci=0.0; *Iccp_Vbcp=0.0; @@ -4701,333 +7248,551 @@ double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; if(p[32]==1.0){ argi=(*Vbei)/(p[33]*Vtv); argi_Vbei=1.0/(p[33]*Vtv); + argi_Vtv=-(*Vbei)/(p[33]*(Vtv*Vtv)); + argi_Vrth=argi_Vtv*Vtv_Vrth; expi=exp(argi); expi_argi=expi; expi_Vbei=expi_argi*argi_Vbei; + expi_Vrth=expi_argi*argi_Vrth; argn=(*Vbei)/(p[35]*Vtv); argn_Vbei=1.0/(p[35]*Vtv); + argn_Vtv=-(*Vbei)/(p[35]*(Vtv*Vtv)); + argn_Vrth=argn_Vtv*Vtv_Vrth; expn=exp(argn); expn_argn=expn; expn_Vbei=expn_argn*argn_Vbei; + expn_Vrth=expn_argn*argn_Vrth; if(p[98]>0.0){ - argx=(-p[98]-(*Vbei))/(p[99]*Vtv); - argx_Vbei=-1.0/(p[99]*Vtv); + argx=(-VBBEatT-(*Vbei))/(NBBEatT*Vtv); + argx_VBBEatT=-1.0/(NBBEatT*Vtv); + argx_Vbei=-1.0/(NBBEatT*Vtv); + argx_NBBEatT=-(-(*Vbei)-VBBEatT)/((NBBEatT*NBBEatT)*Vtv); + argx_Vtv=-(-(*Vbei)-VBBEatT)/(NBBEatT*(Vtv*Vtv)); + argx_Vrth=argx_VBBEatT*VBBEatT_Vrth; + argx_Vrth=argx_Vrth+argx_NBBEatT*NBBEatT_Vrth; + argx_Vrth=argx_Vrth+argx_Vtv*Vtv_Vrth; expx=exp(argx); expx_argx=expx; + expx_Vrth=expx_argx*argx_Vrth; expx_Vbei=expx_argx*argx_Vbei; - (*Ibe)=p[31]*(expi-1.0)+p[34]*(expn-1.0)-p[100]*(expx-p[104]); - Ibe_expi=p[31]; - Ibe_expn=p[34]; + (*Ibe)=IBEIatT*(expi-1.0)+IBENatT*(expn-1.0)-p[100]*(expx-EBBEatT); + Ibe_IBEIatT=expi-1.0; + Ibe_expi=IBEIatT; + Ibe_IBENatT=expn-1.0; + Ibe_expn=IBENatT; Ibe_expx=-p[100]; + Ibe_EBBEatT=p[100]; + *Ibe_Vrth=Ibe_IBEIatT*IBEIatT_Vrth; *Ibe_Vbei=Ibe_expi*expi_Vbei; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_expi*expi_Vrth; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_IBENatT*IBENatT_Vrth; *Ibe_Vbei=(*Ibe_Vbei)+Ibe_expn*expn_Vbei; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_expn*expn_Vrth; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_expx*expx_Vrth; *Ibe_Vbei=(*Ibe_Vbei)+Ibe_expx*expx_Vbei; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_EBBEatT*EBBEatT_Vrth; }else{ - (*Ibe)=p[31]*(expi-1.0)+p[34]*(expn-1.0); - Ibe_expi=p[31]; - Ibe_expn=p[34]; + (*Ibe)=IBEIatT*(expi-1.0)+IBENatT*(expn-1.0); + Ibe_IBEIatT=expi-1.0; + Ibe_expi=IBEIatT; + Ibe_IBENatT=expn-1.0; + Ibe_expn=IBENatT; + *Ibe_Vrth=Ibe_IBEIatT*IBEIatT_Vrth; *Ibe_Vbei=Ibe_expi*expi_Vbei; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_expi*expi_Vrth; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_IBENatT*IBENatT_Vrth; *Ibe_Vbei=(*Ibe_Vbei)+Ibe_expn*expn_Vbei; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_expn*expn_Vrth; } (*Ibex)=0.0; + *Ibex_Vrth=0.0; *Ibex_Vbex=0.0; }else if(p[32]==0.0){ (*Ibe)=0.0; + *Ibe_Vrth=0.0; *Ibe_Vbei=0.0; argi=(*Vbex)/(p[33]*Vtv); argi_Vbex=1.0/(p[33]*Vtv); + argi_Vtv=-(*Vbex)/(p[33]*(Vtv*Vtv)); + argi_Vrth=argi_Vtv*Vtv_Vrth; expi=exp(argi); expi_argi=expi; expi_Vbex=expi_argi*argi_Vbex; + expi_Vrth=expi_argi*argi_Vrth; argn=(*Vbex)/(p[35]*Vtv); argn_Vbex=1.0/(p[35]*Vtv); + argn_Vtv=-(*Vbex)/(p[35]*(Vtv*Vtv)); + argn_Vrth=argn_Vtv*Vtv_Vrth; expn=exp(argn); expn_argn=expn; expn_Vbex=expn_argn*argn_Vbex; + expn_Vrth=expn_argn*argn_Vrth; if(p[98]>0.0){ - argx=(-p[98]-(*Vbex))/(p[99]*Vtv); - argx_Vbex=-1.0/(p[99]*Vtv); + argx=(-VBBEatT-(*Vbex))/(NBBEatT*Vtv); + argx_VBBEatT=-1.0/(NBBEatT*Vtv); + argx_Vbex=-1.0/(NBBEatT*Vtv); + argx_NBBEatT=-(-(*Vbex)-VBBEatT)/((NBBEatT*NBBEatT)*Vtv); + argx_Vtv=-(-(*Vbex)-VBBEatT)/(NBBEatT*(Vtv*Vtv)); + argx_Vrth=argx_VBBEatT*VBBEatT_Vrth; + argx_Vrth=argx_Vrth+argx_NBBEatT*NBBEatT_Vrth; + argx_Vrth=argx_Vrth+argx_Vtv*Vtv_Vrth; expx=exp(argx); expx_argx=expx; + expx_Vrth=expx_argx*argx_Vrth; expx_Vbex=expx_argx*argx_Vbex; - (*Ibex)=p[31]*(expi-1.0)+p[34]*(expn-1.0)-p[100]*(expx-p[104]); - Ibex_expi=p[31]; - Ibex_expn=p[34]; + (*Ibex)=IBEIatT*(expi-1.0)+IBENatT*(expn-1.0)-p[100]*(expx-EBBEatT); + Ibex_IBEIatT=expi-1.0; + Ibex_expi=IBEIatT; + Ibex_IBENatT=expn-1.0; + Ibex_expn=IBENatT; Ibex_expx=-p[100]; + Ibex_EBBEatT=p[100]; + *Ibex_Vrth=Ibex_IBEIatT*IBEIatT_Vrth; *Ibex_Vbex=Ibex_expi*expi_Vbex; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_expi*expi_Vrth; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_IBENatT*IBENatT_Vrth; *Ibex_Vbex=(*Ibex_Vbex)+Ibex_expn*expn_Vbex; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_expn*expn_Vrth; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_expx*expx_Vrth; *Ibex_Vbex=(*Ibex_Vbex)+Ibex_expx*expx_Vbex; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_EBBEatT*EBBEatT_Vrth; }else{ - (*Ibex)=p[31]*(expi-1.0)+p[34]*(expn-1.0); - Ibex_expi=p[31]; - Ibex_expn=p[34]; + (*Ibex)=IBEIatT*(expi-1.0)+IBENatT*(expn-1.0); + Ibex_IBEIatT=expi-1.0; + Ibex_expi=IBEIatT; + Ibex_IBENatT=expn-1.0; + Ibex_expn=IBENatT; + *Ibex_Vrth=Ibex_IBEIatT*IBEIatT_Vrth; *Ibex_Vbex=Ibex_expi*expi_Vbex; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_expi*expi_Vrth; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_IBENatT*IBENatT_Vrth; *Ibex_Vbex=(*Ibex_Vbex)+Ibex_expn*expn_Vbex; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_expn*expn_Vrth; } }else{ argi=(*Vbei)/(p[33]*Vtv); argi_Vbei=1.0/(p[33]*Vtv); + argi_Vtv=-(*Vbei)/(p[33]*(Vtv*Vtv)); + argi_Vrth=argi_Vtv*Vtv_Vrth; expi=exp(argi); expi_argi=expi; expi_Vbei=expi_argi*argi_Vbei; + expi_Vrth=expi_argi*argi_Vrth; argn=(*Vbei)/(p[35]*Vtv); argn_Vbei=1.0/(p[35]*Vtv); + argn_Vtv=-(*Vbei)/(p[35]*(Vtv*Vtv)); + argn_Vrth=argn_Vtv*Vtv_Vrth; expn=exp(argn); expn_argn=expn; expn_Vbei=expn_argn*argn_Vbei; + expn_Vrth=expn_argn*argn_Vrth; if(p[98]>0.0){ - argx=(-p[98]-(*Vbei))/(p[99]*Vtv); - argx_Vbei=-1.0/(p[99]*Vtv); + argx=(-VBBEatT-(*Vbei))/(NBBEatT*Vtv); + argx_VBBEatT=-1.0/(NBBEatT*Vtv); + argx_Vbei=-1.0/(NBBEatT*Vtv); + argx_NBBEatT=-(-(*Vbei)-VBBEatT)/((NBBEatT*NBBEatT)*Vtv); + argx_Vtv=-(-(*Vbei)-VBBEatT)/(NBBEatT*(Vtv*Vtv)); + argx_Vrth=argx_VBBEatT*VBBEatT_Vrth; + argx_Vrth=argx_Vrth+argx_NBBEatT*NBBEatT_Vrth; + argx_Vrth=argx_Vrth+argx_Vtv*Vtv_Vrth; expx=exp(argx); expx_argx=expx; + expx_Vrth=expx_argx*argx_Vrth; expx_Vbei=expx_argx*argx_Vbei; - (*Ibe)=p[32]*(p[31]*(expi-1.0)+p[34]*(expn-1.0)-p[100]*(expx-p[104])); - Ibe_expi=p[31]*p[32]; - Ibe_expn=p[34]*p[32]; + (*Ibe)=p[32]*(IBEIatT*(expi-1.0)+IBENatT*(expn-1.0)-p[100]*(expx-EBBEatT)); + Ibe_IBEIatT=(expi-1.0)*p[32]; + Ibe_expi=IBEIatT*p[32]; + Ibe_IBENatT=(expn-1.0)*p[32]; + Ibe_expn=IBENatT*p[32]; Ibe_expx=-p[100]*p[32]; + Ibe_EBBEatT=p[100]*p[32]; + *Ibe_Vrth=Ibe_IBEIatT*IBEIatT_Vrth; *Ibe_Vbei=Ibe_expi*expi_Vbei; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_expi*expi_Vrth; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_IBENatT*IBENatT_Vrth; *Ibe_Vbei=(*Ibe_Vbei)+Ibe_expn*expn_Vbei; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_expn*expn_Vrth; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_expx*expx_Vrth; *Ibe_Vbei=(*Ibe_Vbei)+Ibe_expx*expx_Vbei; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_EBBEatT*EBBEatT_Vrth; }else{ - (*Ibe)=p[32]*(p[31]*(expi-1.0)+p[34]*(expn-1.0)); - Ibe_expi=p[31]*p[32]; - Ibe_expn=p[34]*p[32]; + (*Ibe)=p[32]*(IBEIatT*(expi-1.0)+IBENatT*(expn-1.0)); + Ibe_IBEIatT=(expi-1.0)*p[32]; + Ibe_expi=IBEIatT*p[32]; + Ibe_IBENatT=(expn-1.0)*p[32]; + Ibe_expn=IBENatT*p[32]; + *Ibe_Vrth=Ibe_IBEIatT*IBEIatT_Vrth; *Ibe_Vbei=Ibe_expi*expi_Vbei; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_expi*expi_Vrth; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_IBENatT*IBENatT_Vrth; *Ibe_Vbei=(*Ibe_Vbei)+Ibe_expn*expn_Vbei; + *Ibe_Vrth=(*Ibe_Vrth)+Ibe_expn*expn_Vrth; } argi=(*Vbex)/(p[33]*Vtv); argi_Vbex=1.0/(p[33]*Vtv); + argi_Vtv=-(*Vbex)/(p[33]*(Vtv*Vtv)); + argi_Vrth=argi_Vtv*Vtv_Vrth; expi=exp(argi); expi_argi=expi; expi_Vbex=expi_argi*argi_Vbex; + expi_Vrth=expi_argi*argi_Vrth; argn=(*Vbex)/(p[35]*Vtv); argn_Vbex=1.0/(p[35]*Vtv); + argn_Vtv=-(*Vbex)/(p[35]*(Vtv*Vtv)); + argn_Vrth=argn_Vtv*Vtv_Vrth; expn=exp(argn); expn_argn=expn; expn_Vbex=expn_argn*argn_Vbex; + expn_Vrth=expn_argn*argn_Vrth; if(p[98]>0.0){ - argx=(-p[98]-(*Vbex))/(p[99]*Vtv); - argx_Vbex=-1.0/(p[99]*Vtv); + argx=(-VBBEatT-(*Vbex))/(NBBEatT*Vtv); + argx_VBBEatT=-1.0/(NBBEatT*Vtv); + argx_Vbex=-1.0/(NBBEatT*Vtv); + argx_NBBEatT=-(-(*Vbex)-VBBEatT)/((NBBEatT*NBBEatT)*Vtv); + argx_Vtv=-(-(*Vbex)-VBBEatT)/(NBBEatT*(Vtv*Vtv)); + argx_Vrth=argx_VBBEatT*VBBEatT_Vrth; + argx_Vrth=argx_Vrth+argx_NBBEatT*NBBEatT_Vrth; + argx_Vrth=argx_Vrth+argx_Vtv*Vtv_Vrth; expx=exp(argx); expx_argx=expx; + expx_Vrth=expx_argx*argx_Vrth; expx_Vbex=expx_argx*argx_Vbex; - (*Ibex)=(1.0-p[32])*(p[31]*(expi-1.0)+p[34]*(expn-1.0)-p[100]*(expx-p[104])); - Ibex_expi=p[31]*(1.0-p[32]); - Ibex_expn=p[34]*(1.0-p[32]); + (*Ibex)=(1.0-p[32])*(IBEIatT*(expi-1.0)+IBENatT*(expn-1.0)-p[100]*(expx-EBBEatT)); + Ibex_IBEIatT=(expi-1.0)*(1.0-p[32]); + Ibex_expi=IBEIatT*(1.0-p[32]); + Ibex_IBENatT=(expn-1.0)*(1.0-p[32]); + Ibex_expn=IBENatT*(1.0-p[32]); Ibex_expx=-p[100]*(1.0-p[32]); + Ibex_EBBEatT=p[100]*(1.0-p[32]); + *Ibex_Vrth=Ibex_IBEIatT*IBEIatT_Vrth; *Ibex_Vbex=Ibex_expi*expi_Vbex; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_expi*expi_Vrth; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_IBENatT*IBENatT_Vrth; *Ibex_Vbex=(*Ibex_Vbex)+Ibex_expn*expn_Vbex; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_expn*expn_Vrth; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_expx*expx_Vrth; *Ibex_Vbex=(*Ibex_Vbex)+Ibex_expx*expx_Vbex; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_EBBEatT*EBBEatT_Vrth; }else{ - (*Ibex)=(1.0-p[32])*(p[31]*(expi-1.0)+p[34]*(expn-1.0)); - Ibex_expi=p[31]*(1.0-p[32]); - Ibex_expn=p[34]*(1.0-p[32]); + (*Ibex)=(1.0-p[32])*(IBEIatT*(expi-1.0)+IBENatT*(expn-1.0)); + Ibex_IBEIatT=(expi-1.0)*(1.0-p[32]); + Ibex_expi=IBEIatT*(1.0-p[32]); + Ibex_IBENatT=(expn-1.0)*(1.0-p[32]); + Ibex_expn=IBENatT*(1.0-p[32]); + *Ibex_Vrth=Ibex_IBEIatT*IBEIatT_Vrth; *Ibex_Vbex=Ibex_expi*expi_Vbex; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_expi*expi_Vrth; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_IBENatT*IBENatT_Vrth; *Ibex_Vbex=(*Ibex_Vbex)+Ibex_expn*expn_Vbex; + *Ibex_Vrth=(*Ibex_Vrth)+Ibex_expn*expn_Vrth; } } argi=(*Vbci)/(p[37]*Vtv); argi_Vbci=1.0/(p[37]*Vtv); + argi_Vtv=-(*Vbci)/(p[37]*(Vtv*Vtv)); + argi_Vrth=argi_Vtv*Vtv_Vrth; expi=exp(argi); expi_argi=expi; expi_Vbci=expi_argi*argi_Vbci; + expi_Vrth=expi_argi*argi_Vrth; argn=(*Vbci)/(p[39]*Vtv); argn_Vbci=1.0/(p[39]*Vtv); + argn_Vtv=-(*Vbci)/(p[39]*(Vtv*Vtv)); + argn_Vrth=argn_Vtv*Vtv_Vrth; expn=exp(argn); expn_argn=expn; expn_Vbci=expn_argn*argn_Vbci; - Ibcj=p[36]*(expi-1.0)+p[38]*(expn-1.0); - Ibcj_expi=p[36]; - Ibcj_expn=p[38]; + expn_Vrth=expn_argn*argn_Vrth; + Ibcj=IBCIatT*(expi-1.0)+IBCNatT*(expn-1.0); + Ibcj_IBCIatT=expi-1.0; + Ibcj_expi=IBCIatT; + Ibcj_IBCNatT=expn-1.0; + Ibcj_expn=IBCNatT; + Ibcj_Vrth=Ibcj_IBCIatT*IBCIatT_Vrth; Ibcj_Vbci=Ibcj_expi*expi_Vbci; + Ibcj_Vrth=Ibcj_Vrth+Ibcj_expi*expi_Vrth; + Ibcj_Vrth=Ibcj_Vrth+Ibcj_IBCNatT*IBCNatT_Vrth; Ibcj_Vbci=Ibcj_Vbci+Ibcj_expn*expn_Vbci; + Ibcj_Vrth=Ibcj_Vrth+Ibcj_expn*expn_Vrth; if((p[45]>0.0)||(p[46]>0.0)){ argi=(*Vbep)/(p[37]*Vtv); argi_Vbep=1.0/(p[37]*Vtv); + argi_Vtv=-(*Vbep)/(p[37]*(Vtv*Vtv)); + argi_Vrth=argi_Vtv*Vtv_Vrth; expi=exp(argi); expi_argi=expi; expi_Vbep=expi_argi*argi_Vbep; + expi_Vrth=expi_argi*argi_Vrth; argn=(*Vbep)/(p[39]*Vtv); argn_Vbep=1.0/(p[39]*Vtv); + argn_Vtv=-(*Vbep)/(p[39]*(Vtv*Vtv)); + argn_Vrth=argn_Vtv*Vtv_Vrth; expn=exp(argn); expn_argn=expn; expn_Vbep=expn_argn*argn_Vbep; - (*Ibep)=p[45]*(expi-1.0)+p[46]*(expn-1.0); - Ibep_expi=p[45]; - Ibep_expn=p[46]; + expn_Vrth=expn_argn*argn_Vrth; + (*Ibep)=IBEIPatT*(expi-1.0)+IBENPatT*(expn-1.0); + Ibep_IBEIPatT=expi-1.0; + Ibep_expi=IBEIPatT; + Ibep_IBENPatT=expn-1.0; + Ibep_expn=IBENPatT; + *Ibep_Vrth=Ibep_IBEIPatT*IBEIPatT_Vrth; *Ibep_Vbep=Ibep_expi*expi_Vbep; + *Ibep_Vrth=(*Ibep_Vrth)+Ibep_expi*expi_Vrth; + *Ibep_Vrth=(*Ibep_Vrth)+Ibep_IBENPatT*IBENPatT_Vrth; *Ibep_Vbep=(*Ibep_Vbep)+Ibep_expn*expn_Vbep; + *Ibep_Vrth=(*Ibep_Vrth)+Ibep_expn*expn_Vrth; }else{ (*Ibep)=0.0; + *Ibep_Vrth=0.0; *Ibep_Vbep=0.0; } if(p[40]>0.0){ - vl=0.5*(sqrt((p[24]-(*Vbci))*(p[24]-(*Vbci))+0.01)+(p[24]-(*Vbci))); - vl_Vbci=0.5*(-(p[24]-(*Vbci))/sqrt(((p[24]-(*Vbci))*(p[24]-(*Vbci)))+0.01)-1.0); + vl=0.5*(sqrt((PCatT-(*Vbci))*(PCatT-(*Vbci))+0.01)+(PCatT-(*Vbci))); + vl_PCatT=0.5*((PCatT-(*Vbci))/sqrt(((PCatT-(*Vbci))*(PCatT-(*Vbci)))+0.01)+1.0); + vl_Vbci=0.5*(-(PCatT-(*Vbci))/sqrt(((PCatT-(*Vbci))*(PCatT-(*Vbci)))+0.01)-1.0); + vl_Vrth=vl_PCatT*PCatT_Vrth; xvar2=(p[25]-1.0); xvar3=pow(vl,xvar2); xvar3_vl=xvar3*xvar2/vl; + xvar3_Vrth=xvar3_vl*vl_Vrth; xvar3_Vbci=xvar3_vl*vl_Vbci; - xvar1=-p[41]*xvar3; - xvar1_xvar3=-p[41]; + xvar1=-AVC2atT*xvar3; + xvar1_AVC2atT=-xvar3; + xvar1_xvar3=-AVC2atT; + xvar1_Vrth=xvar1_AVC2atT*AVC2atT_Vrth; + xvar1_Vrth=xvar1_Vrth+xvar1_xvar3*xvar3_Vrth; xvar1_Vbci=xvar1_xvar3*xvar3_Vbci; xvar4=exp(xvar1); xvar4_xvar1=xvar4; + xvar4_Vrth=xvar4_xvar1*xvar1_Vrth; xvar4_Vbci=xvar4_xvar1*xvar1_Vbci; avalf=p[40]*vl*xvar4; avalf_vl=p[40]*xvar4; avalf_xvar4=p[40]*vl; + avalf_Vrth=avalf_vl*vl_Vrth; avalf_Vbci=avalf_vl*vl_Vbci; + avalf_Vrth=avalf_Vrth+avalf_xvar4*xvar4_Vrth; avalf_Vbci=avalf_Vbci+avalf_xvar4*xvar4_Vbci; - Igc=((*Itzf)-(*Itzr)-Ibcj)*avalf; - Igc_Itzf=avalf; + Igc=((*Itxf)-(*Itzr)-Ibcj)*avalf; + Igc_Itxf=avalf; Igc_Itzr=-avalf; Igc_Ibcj=-avalf; - Igc_avalf=-(*Itzr)+(*Itzf)-Ibcj; - Igc_Vbei=Igc_Itzf*(*Itzf_Vbei); - Igc_Vbci=Igc_Itzf*(*Itzf_Vbci); - Igc_Vbci=Igc_Vbci+Igc_Itzr*(*Itzr_Vbci); - Igc_Vbei=Igc_Vbei+Igc_Itzr*(*Itzr_Vbei); + Igc_avalf=-(*Itzr)+(*Itxf)-Ibcj; + Igc_Vrxf=Igc_Itxf*(*Itxf_Vrxf); + Igc_Vrth=Igc_Itzr*(*Itzr_Vrth); + Igc_Vbci=Igc_Itzr*(*Itzr_Vbci); + Igc_Vbei=Igc_Itzr*(*Itzr_Vbei); + Igc_Vrth=Igc_Vrth+Igc_Ibcj*Ibcj_Vrth; Igc_Vbci=Igc_Vbci+Igc_Ibcj*Ibcj_Vbci; + Igc_Vrth=Igc_Vrth+Igc_avalf*avalf_Vrth; Igc_Vbci=Igc_Vbci+Igc_avalf*avalf_Vbci; }else{ Igc=0.0; - Igc_Vbei=0.0; + Igc_Vrxf=0.0; + Igc_Vrth=0.0; Igc_Vbci=0.0; + Igc_Vbei=0.0; } (*Ibc)=Ibcj-Igc; Ibc_Ibcj=1.0; Ibc_Igc=-1.0; + *Ibc_Vrth=Ibc_Ibcj*Ibcj_Vrth; *Ibc_Vbci=Ibc_Ibcj*Ibcj_Vbci; - *Ibc_Vbei=Ibc_Igc*Igc_Vbei; + *Ibc_Vrxf=Ibc_Igc*Igc_Vrxf; + *Ibc_Vrth=(*Ibc_Vrth)+Ibc_Igc*Igc_Vrth; *Ibc_Vbci=(*Ibc_Vbci)+Ibc_Igc*Igc_Vbci; + *Ibc_Vbei=Ibc_Igc*Igc_Vbei; if(p[1]>0.0){ - (*Ircx)=(*Vrcx)/p[1]; - *Ircx_Vrcx=1.0/p[1]; + (*Ircx)=(*Vrcx)/RCXatT; + *Ircx_Vrcx=1.0/RCXatT; + Ircx_RCXatT=-(*Vrcx)/(RCXatT*RCXatT); + *Ircx_Vrth=Ircx_RCXatT*RCXatT_Vrth; }else{ (*Ircx)=0.0; *Ircx_Vrcx=0.0; + *Ircx_Vrth=0.0; } argi=(*Vbci)/Vtv; argi_Vbci=1.0/Vtv; + argi_Vtv=-(*Vbci)/(Vtv*Vtv); + argi_Vrth=argi_Vtv*Vtv_Vrth; expi=exp(argi); expi_argi=expi; expi_Vbci=expi_argi*argi_Vbci; + expi_Vrth=expi_argi*argi_Vrth; argx=(*Vbcx)/Vtv; argx_Vbcx=1.0/Vtv; + argx_Vtv=-(*Vbcx)/(Vtv*Vtv); + argx_Vrth=argx_Vtv*Vtv_Vrth; expx=exp(argx); expx_argx=expx; expx_Vbcx=expx_argx*argx_Vbcx; - Kbci=sqrt(1.0+p[4]*expi); - Kbci_expi=p[4]/(2.0*sqrt(expi*p[4]+1.0)); + expx_Vrth=expx_argx*argx_Vrth; + Kbci=sqrt(1.0+GAMMatT*expi); + Kbci_GAMMatT=expi/(2.0*sqrt(expi*GAMMatT+1.0)); + Kbci_expi=GAMMatT/(2.0*sqrt(expi*GAMMatT+1.0)); + Kbci_Vrth=Kbci_GAMMatT*GAMMatT_Vrth; Kbci_Vbci=Kbci_expi*expi_Vbci; - Kbcx=sqrt(1.0+p[4]*expx); - Kbcx_expx=p[4]/(2.0*sqrt(expx*p[4]+1.0)); + Kbci_Vrth=Kbci_Vrth+Kbci_expi*expi_Vrth; + Kbcx=sqrt(1.0+GAMMatT*expx); + Kbcx_GAMMatT=expx/(2.0*sqrt(expx*GAMMatT+1.0)); + Kbcx_expx=GAMMatT/(2.0*sqrt(expx*GAMMatT+1.0)); + Kbcx_Vrth=Kbcx_GAMMatT*GAMMatT_Vrth; Kbcx_Vbcx=Kbcx_expx*expx_Vbcx; + Kbcx_Vrth=Kbcx_Vrth+Kbcx_expx*expx_Vrth; if(p[2]>0.0){ rKp1=(Kbci+1.0)/(Kbcx+1.0); rKp1_Kbci=1.0/(Kbcx+1.0); rKp1_Kbcx=-(Kbci+1.0)/((Kbcx+1.0)*(Kbcx+1.0)); + rKp1_Vrth=rKp1_Kbci*Kbci_Vrth; rKp1_Vbci=rKp1_Kbci*Kbci_Vbci; + rKp1_Vrth=rKp1_Vrth+rKp1_Kbcx*Kbcx_Vrth; rKp1_Vbcx=rKp1_Kbcx*Kbcx_Vbcx; xvar1=log(rKp1); xvar1_rKp1=1.0/rKp1; + xvar1_Vrth=xvar1_rKp1*rKp1_Vrth; xvar1_Vbci=xvar1_rKp1*rKp1_Vbci; xvar1_Vbcx=xvar1_rKp1*rKp1_Vbcx; - Iohm=((*Vrci)+Vtv*(Kbci-Kbcx-xvar1))/p[2]; - Iohm_Vrci=1.0/p[2]; - Iohm_Kbci=Vtv/p[2]; - Iohm_Kbcx=-Vtv/p[2]; - Iohm_xvar1=-Vtv/p[2]; + Iohm=((*Vrci)+Vtv*(Kbci-Kbcx-xvar1))/RCIatT; + Iohm_Vrci=1.0/RCIatT; + Iohm_Vtv=(-xvar1-Kbcx+Kbci)/RCIatT; + Iohm_Kbci=Vtv/RCIatT; + Iohm_Kbcx=-Vtv/RCIatT; + Iohm_xvar1=-Vtv/RCIatT; + Iohm_RCIatT=-(Vtv*(-xvar1-Kbcx+Kbci)+(*Vrci))/(RCIatT*RCIatT); + Iohm_Vrth=Iohm_Vtv*Vtv_Vrth; + Iohm_Vrth=Iohm_Vrth+Iohm_Kbci*Kbci_Vrth; Iohm_Vbci=Iohm_Kbci*Kbci_Vbci; + Iohm_Vrth=Iohm_Vrth+Iohm_Kbcx*Kbcx_Vrth; Iohm_Vbcx=Iohm_Kbcx*Kbcx_Vbcx; + Iohm_Vrth=Iohm_Vrth+Iohm_xvar1*xvar1_Vrth; Iohm_Vbci=Iohm_Vbci+Iohm_xvar1*xvar1_Vbci; Iohm_Vbcx=Iohm_Vbcx+Iohm_xvar1*xvar1_Vbcx; - derf=IVO*p[2]*Iohm/(1.0+0.5*IVO*IHRCF*sqrt((*Vrci)*(*Vrci)+0.01)); - derf_Iohm=IVO*p[2]/(0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0); - derf_Vrci=-0.5*IHRCF*Iohm*(IVO*IVO)*p[2]*(*Vrci)/(sqrt(((*Vrci)*(*Vrci))+0.01)*((0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0)*(0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0))); + Iohm_Vrth=Iohm_Vrth+Iohm_RCIatT*RCIatT_Vrth; + derf=IVO*RCIatT*Iohm/(1.0+0.5*IVO*IHRCF*sqrt((*Vrci)*(*Vrci)+0.01)); + derf_IVO=Iohm*RCIatT/(0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0)-0.5*IHRCF*Iohm*IVO*RCIatT*sqrt(((*Vrci)*(*Vrci))+0.01)/((0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0)*(0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0)); + derf_RCIatT=Iohm*IVO/(0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0); + derf_Iohm=IVO*RCIatT/(0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0); + derf_Vrci=-0.5*IHRCF*Iohm*(IVO*IVO)*RCIatT*(*Vrci)/(sqrt(((*Vrci)*(*Vrci))+0.01)*((0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0)*(0.5*IHRCF*IVO*sqrt(((*Vrci)*(*Vrci))+0.01)+1.0))); + derf_Vrth=derf_IVO*IVO_Vrth; + derf_Vrth=derf_Vrth+derf_RCIatT*RCIatT_Vrth; derf_Vrci=derf_Vrci+derf_Iohm*Iohm_Vrci; + derf_Vrth=derf_Vrth+derf_Iohm*Iohm_Vrth; derf_Vbci=derf_Iohm*Iohm_Vbci; derf_Vbcx=derf_Iohm*Iohm_Vbcx; (*Irci)=Iohm/sqrt(1.0+derf*derf); Irci_Iohm=1.0/sqrt((derf*derf)+1.0); Irci_derf=-derf*Iohm/pow(((derf*derf)+1.0),(3.0/2.0)); *Irci_Vrci=Irci_Iohm*Iohm_Vrci; + *Irci_Vrth=Irci_Iohm*Iohm_Vrth; *Irci_Vbci=Irci_Iohm*Iohm_Vbci; *Irci_Vbcx=Irci_Iohm*Iohm_Vbcx; + *Irci_Vrth=(*Irci_Vrth)+Irci_derf*derf_Vrth; *Irci_Vrci=(*Irci_Vrci)+Irci_derf*derf_Vrci; *Irci_Vbci=(*Irci_Vbci)+Irci_derf*derf_Vbci; *Irci_Vbcx=(*Irci_Vbcx)+Irci_derf*derf_Vbcx; }else{ (*Irci)=0.0; *Irci_Vrci=0.0; + *Irci_Vrth=0.0; *Irci_Vbci=0.0; *Irci_Vbcx=0.0; } if(p[6]>0.0){ - (*Irbx)=(*Vrbx)/p[6]; - *Irbx_Vrbx=1.0/p[6]; + (*Irbx)=(*Vrbx)/RBXatT; + *Irbx_Vrbx=1.0/RBXatT; + Irbx_RBXatT=-(*Vrbx)/(RBXatT*RBXatT); + *Irbx_Vrth=Irbx_RBXatT*RBXatT_Vrth; }else{ (*Irbx)=0.0; *Irbx_Vrbx=0.0; + *Irbx_Vrth=0.0; } if(p[7]>0.0){ - (*Irbi)=(*Vrbi)*qb/p[7]; - *Irbi_Vrbi=qb/p[7]; - Irbi_qb=(*Vrbi)/p[7]; + (*Irbi)=(*Vrbi)*qb/RBIatT; + *Irbi_Vrbi=qb/RBIatT; + Irbi_qb=(*Vrbi)/RBIatT; + Irbi_RBIatT=-qb*(*Vrbi)/(RBIatT*RBIatT); + *Irbi_Vrth=Irbi_qb*qb_Vrth; *Irbi_Vbei=Irbi_qb*qb_Vbei; *Irbi_Vbci=Irbi_qb*qb_Vbci; + *Irbi_Vrth=(*Irbi_Vrth)+Irbi_RBIatT*RBIatT_Vrth; }else{ (*Irbi)=0.0; *Irbi_Vrbi=0.0; + *Irbi_Vrth=0.0; *Irbi_Vbei=0.0; *Irbi_Vbci=0.0; } if(p[8]>0.0){ - (*Ire)=(*Vre)/p[8]; - *Ire_Vre=1.0/p[8]; + (*Ire)=(*Vre)/REatT; + *Ire_Vre=1.0/REatT; + Ire_REatT=-(*Vre)/(REatT*REatT); + *Ire_Vrth=Ire_REatT*REatT_Vrth; }else{ (*Ire)=0.0; *Ire_Vre=0.0; + *Ire_Vrth=0.0; } if(p[10]>0.0){ - (*Irbp)=(*Vrbp)*qbp/p[10]; - *Irbp_Vrbp=qbp/p[10]; - Irbp_qbp=(*Vrbp)/p[10]; + (*Irbp)=(*Vrbp)*qbp/RBPatT; + *Irbp_Vrbp=qbp/RBPatT; + Irbp_qbp=(*Vrbp)/RBPatT; + Irbp_RBPatT=-qbp*(*Vrbp)/(RBPatT*RBPatT); + *Irbp_Vrth=Irbp_qbp*qbp_Vrth; *Irbp_Vbep=Irbp_qbp*qbp_Vbep; *Irbp_Vbci=Irbp_qbp*qbp_Vbci; + *Irbp_Vrth=(*Irbp_Vrth)+Irbp_RBPatT*RBPatT_Vrth; }else{ (*Irbp)=0.0; *Irbp_Vrbp=0.0; + *Irbp_Vrth=0.0; *Irbp_Vbep=0.0; *Irbp_Vbci=0.0; } if((p[47]>0.0)||(p[49]>0.0)){ argi=(*Vbcp)/(p[48]*Vtv); argi_Vbcp=1.0/(p[48]*Vtv); + argi_Vtv=-(*Vbcp)/(p[48]*(Vtv*Vtv)); + argi_Vrth=argi_Vtv*Vtv_Vrth; expi=exp(argi); expi_argi=expi; expi_Vbcp=expi_argi*argi_Vbcp; + expi_Vrth=expi_argi*argi_Vrth; argn=(*Vbcp)/(p[50]*Vtv); argn_Vbcp=1.0/(p[50]*Vtv); + argn_Vtv=-(*Vbcp)/(p[50]*(Vtv*Vtv)); + argn_Vrth=argn_Vtv*Vtv_Vrth; expn=exp(argn); expn_argn=expn; expn_Vbcp=expn_argn*argn_Vbcp; - (*Ibcp)=p[47]*(expi-1.0)+p[49]*(expn-1.0); - Ibcp_expi=p[47]; - Ibcp_expn=p[49]; + expn_Vrth=expn_argn*argn_Vrth; + (*Ibcp)=IBCIPatT*(expi-1.0)+IBCNPatT*(expn-1.0); + Ibcp_IBCIPatT=expi-1.0; + Ibcp_expi=IBCIPatT; + Ibcp_IBCNPatT=expn-1.0; + Ibcp_expn=IBCNPatT; + *Ibcp_Vrth=Ibcp_IBCIPatT*IBCIPatT_Vrth; *Ibcp_Vbcp=Ibcp_expi*expi_Vbcp; + *Ibcp_Vrth=(*Ibcp_Vrth)+Ibcp_expi*expi_Vrth; + *Ibcp_Vrth=(*Ibcp_Vrth)+Ibcp_IBCNPatT*IBCNPatT_Vrth; *Ibcp_Vbcp=(*Ibcp_Vbcp)+Ibcp_expn*expn_Vbcp; + *Ibcp_Vrth=(*Ibcp_Vrth)+Ibcp_expn*expn_Vrth; }else{ (*Ibcp)=0.0; + *Ibcp_Vrth=0.0; *Ibcp_Vbcp=0.0; } if(p[9]>0.0){ - (*Irs)=(*Vrs)/p[9]; - *Irs_Vrs=1.0/p[9]; + (*Irs)=(*Vrs)/RSatT; + *Irs_Vrs=1.0/RSatT; + Irs_RSatT=-(*Vrs)/(RSatT*RSatT); + *Irs_Vrth=Irs_RSatT*RSatT_Vrth; }else{ (*Irs)=0.0; *Irs_Vrs=0.0; + *Irs_Vrth=0.0; } if(Ifi>0.0){ sgIf=1.0; @@ -5036,9 +7801,11 @@ double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; } rIf=Ifi*sgIf*IITF; rIf_Ifi=IITF*sgIf; + rIf_Vrth=rIf_Ifi*Ifi_Vrth; rIf_Vbei=rIf_Ifi*Ifi_Vbei; mIf=rIf/(rIf+1.0); mIf_rIf=1.0/(rIf+1.0)-rIf/((rIf+1.0)*(rIf+1.0)); + mIf_Vrth=mIf_rIf*rIf_Vrth; mIf_Vbei=mIf_rIf*rIf_Vbei; xvar1=(*Vbci)*IVTF/1.44; xvar1_Vbci=0.6944444*IVTF; @@ -5049,95 +7816,219 @@ double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; tff_q1=p[57]*p[56]*(sgIf*(slTF+(mIf*mIf))*p[58]*xvar2+1.0); tff_xvar2=(q1*p[57]+1.0)*sgIf*(slTF+(mIf*mIf))*p[56]*p[58]; tff_mIf=2.0*mIf*(q1*p[57]+1.0)*sgIf*p[56]*p[58]*xvar2; + tff_Vrth=tff_q1*q1_Vrth; tff_Vbei=tff_q1*q1_Vbei; tff_Vbci=tff_q1*q1_Vbci; tff_Vbci=tff_Vbci+tff_xvar2*xvar2_Vbci; + tff_Vrth=tff_Vrth+tff_mIf*mIf_Vrth; tff_Vbei=tff_Vbei+tff_mIf*mIf_Vbei; - (*Qbe)=p[16]*qdbe*p[32]+tff*Ifi/qb; - Qbe_qdbe=p[16]*p[32]; + (*Qbe)=CJEatT*qdbe*p[32]+tff*Ifi/qb; + Qbe_CJEatT=qdbe*p[32]; + Qbe_qdbe=CJEatT*p[32]; Qbe_tff=Ifi/qb; Qbe_Ifi=tff/qb; Qbe_qb=-Ifi*tff/(qb*qb); + *Qbe_Vrth=Qbe_CJEatT*CJEatT_Vrth; + *Qbe_Vrth=(*Qbe_Vrth)+Qbe_qdbe*qdbe_Vrth; *Qbe_Vbei=Qbe_qdbe*qdbe_Vbei; + *Qbe_Vrth=(*Qbe_Vrth)+Qbe_tff*tff_Vrth; *Qbe_Vbei=(*Qbe_Vbei)+Qbe_tff*tff_Vbei; *Qbe_Vbci=Qbe_tff*tff_Vbci; + *Qbe_Vrth=(*Qbe_Vrth)+Qbe_Ifi*Ifi_Vrth; *Qbe_Vbei=(*Qbe_Vbei)+Qbe_Ifi*Ifi_Vbei; + *Qbe_Vrth=(*Qbe_Vrth)+Qbe_qb*qb_Vrth; *Qbe_Vbei=(*Qbe_Vbei)+Qbe_qb*qb_Vbei; *Qbe_Vbci=(*Qbe_Vbci)+Qbe_qb*qb_Vbci; - (*Qbex)=p[16]*qdbex*(1.0-p[32]); - Qbex_qdbex=p[16]*(1.0-p[32]); + (*Qbex)=CJEatT*qdbex*(1.0-p[32]); + Qbex_CJEatT=qdbex*(1.0-p[32]); + Qbex_qdbex=CJEatT*(1.0-p[32]); + *Qbex_Vrth=Qbex_CJEatT*CJEatT_Vrth; + *Qbex_Vrth=(*Qbex_Vrth)+Qbex_qdbex*qdbex_Vrth; *Qbex_Vbex=Qbex_qdbex*qdbex_Vbex; - (*Qbc)=p[21]*qdbc+p[61]*Iri+p[22]*Kbci; - Qbc_qdbc=p[21]; + (*Qbc)=CJCatT*qdbc+p[61]*Iri+p[22]*Kbci; + Qbc_CJCatT=qdbc; + Qbc_qdbc=CJCatT; Qbc_Iri=p[61]; Qbc_Kbci=p[22]; + *Qbc_Vrth=Qbc_CJCatT*CJCatT_Vrth; + *Qbc_Vrth=(*Qbc_Vrth)+Qbc_qdbc*qdbc_Vrth; *Qbc_Vbci=Qbc_qdbc*qdbc_Vbci; + *Qbc_Vrth=(*Qbc_Vrth)+Qbc_Iri*Iri_Vrth; *Qbc_Vbci=(*Qbc_Vbci)+Qbc_Iri*Iri_Vbci; + *Qbc_Vrth=(*Qbc_Vrth)+Qbc_Kbci*Kbci_Vrth; *Qbc_Vbci=(*Qbc_Vbci)+Qbc_Kbci*Kbci_Vbci; (*Qbcx)=p[22]*Kbcx; Qbcx_Kbcx=p[22]; + *Qbcx_Vrth=Qbcx_Kbcx*Kbcx_Vrth; *Qbcx_Vbcx=Qbcx_Kbcx*Kbcx_Vbcx; - (*Qbep)=p[23]*qdbep+p[61]*Ifp; - Qbep_qdbep=p[23]; + (*Qbep)=CJEPatT*qdbep+p[61]*Ifp; + Qbep_CJEPatT=qdbep; + Qbep_qdbep=CJEPatT; Qbep_Ifp=p[61]; + *Qbep_Vrth=Qbep_CJEPatT*CJEPatT_Vrth; + *Qbep_Vrth=(*Qbep_Vrth)+Qbep_qdbep*qdbep_Vrth; *Qbep_Vbep=Qbep_qdbep*qdbep_Vbep; + *Qbep_Vrth=(*Qbep_Vrth)+Qbep_Ifp*Ifp_Vrth; *Qbep_Vbep=(*Qbep_Vbep)+Qbep_Ifp*Ifp_Vbep; *Qbep_Vbci=Qbep_Ifp*Ifp_Vbci; - (*Qbcp)=p[27]*qdbcp+p[87]*(*Vbcp); - Qbcp_qdbcp=p[27]; + (*Qbcp)=CJCPatT*qdbcp+p[87]*(*Vbcp); + Qbcp_CJCPatT=qdbcp; + Qbcp_qdbcp=CJCPatT; *Qbcp_Vbcp=p[87]; + *Qbcp_Vrth=Qbcp_CJCPatT*CJCPatT_Vrth; + *Qbcp_Vrth=(*Qbcp_Vrth)+Qbcp_qdbcp*qdbcp_Vrth; *Qbcp_Vbcp=(*Qbcp_Vbcp)+Qbcp_qdbcp*qdbcp_Vbcp; (*Qbeo)=(*Vbe)*p[15]; *Qbeo_Vbe=p[15]; (*Qbco)=(*Vbc)*p[20]; *Qbco_Vbc=p[20]; + (*Ith)=-((*Ibe)*(*Vbei)+(*Ibc)*(*Vbci)+((*Itxf)-(*Itzr))*(*Vcei)+(*Ibex)*(*Vbex)+(*Ibep)*(*Vbep)+(*Irs)*(*Vrs)+(*Ibcp)*(*Vbcp)+(*Iccp)*(*Vcep)+(*Ircx)*(*Vrcx)+(*Irci)*(*Vrci)+(*Irbx)*(*Vrbx)+(*Irbi)*(*Vrbi)+(*Ire)*(*Vre)+(*Irbp)*(*Vrbp)); + Ith_Ibe=-(*Vbei); + *Ith_Vbei=-(*Ibe); + Ith_Ibc=-(*Vbci); + *Ith_Vbci=-(*Ibc); + Ith_Itxf=-(*Vcei); + Ith_Itzr=(*Vcei); + *Ith_Vcei=(*Itzr)-(*Itxf); + Ith_Ibex=-(*Vbex); + *Ith_Vbex=-(*Ibex); + Ith_Ibep=-(*Vbep); + *Ith_Vbep=-(*Ibep); + Ith_Irs=-(*Vrs); + *Ith_Vrs=-(*Irs); + Ith_Ibcp=-(*Vbcp); + *Ith_Vbcp=-(*Ibcp); + Ith_Iccp=-(*Vcep); + *Ith_Vcep=-(*Iccp); + Ith_Ircx=-(*Vrcx); + *Ith_Vrcx=-(*Ircx); + Ith_Irci=-(*Vrci); + *Ith_Vrci=-(*Irci); + Ith_Irbx=-(*Vrbx); + *Ith_Vrbx=-(*Irbx); + Ith_Irbi=-(*Vrbi); + *Ith_Vrbi=-(*Irbi); + Ith_Ire=-(*Vre); + *Ith_Vre=-(*Ire); + Ith_Irbp=-(*Vrbp); + *Ith_Vrbp=-(*Irbp); + *Ith_Vrth=Ith_Ibe*(*Ibe_Vrth); + *Ith_Vbei=(*Ith_Vbei)+Ith_Ibe*(*Ibe_Vbei); + *Ith_Vrth=(*Ith_Vrth)+Ith_Ibc*(*Ibc_Vrth); + *Ith_Vbci=(*Ith_Vbci)+Ith_Ibc*(*Ibc_Vbci); + *Ith_Vrxf=Ith_Ibc*(*Ibc_Vrxf); + *Ith_Vbei=(*Ith_Vbei)+Ith_Ibc*(*Ibc_Vbei); + *Ith_Vrxf=(*Ith_Vrxf)+Ith_Itxf*(*Itxf_Vrxf); + *Ith_Vrth=(*Ith_Vrth)+Ith_Itzr*(*Itzr_Vrth); + *Ith_Vbci=(*Ith_Vbci)+Ith_Itzr*(*Itzr_Vbci); + *Ith_Vbei=(*Ith_Vbei)+Ith_Itzr*(*Itzr_Vbei); + *Ith_Vrth=(*Ith_Vrth)+Ith_Ibex*(*Ibex_Vrth); + *Ith_Vbex=(*Ith_Vbex)+Ith_Ibex*(*Ibex_Vbex); + *Ith_Vrth=(*Ith_Vrth)+Ith_Ibep*(*Ibep_Vrth); + *Ith_Vbep=(*Ith_Vbep)+Ith_Ibep*(*Ibep_Vbep); + *Ith_Vrs=(*Ith_Vrs)+Ith_Irs*(*Irs_Vrs); + *Ith_Vrth=(*Ith_Vrth)+Ith_Irs*(*Irs_Vrth); + *Ith_Vrth=(*Ith_Vrth)+Ith_Ibcp*(*Ibcp_Vrth); + *Ith_Vbcp=(*Ith_Vbcp)+Ith_Ibcp*(*Ibcp_Vbcp); + *Ith_Vrth=(*Ith_Vrth)+Ith_Iccp*(*Iccp_Vrth); + *Ith_Vbep=(*Ith_Vbep)+Ith_Iccp*(*Iccp_Vbep); + *Ith_Vbci=(*Ith_Vbci)+Ith_Iccp*(*Iccp_Vbci); + *Ith_Vbcp=(*Ith_Vbcp)+Ith_Iccp*(*Iccp_Vbcp); + *Ith_Vrcx=(*Ith_Vrcx)+Ith_Ircx*(*Ircx_Vrcx); + *Ith_Vrth=(*Ith_Vrth)+Ith_Ircx*(*Ircx_Vrth); + *Ith_Vrci=(*Ith_Vrci)+Ith_Irci*(*Irci_Vrci); + *Ith_Vrth=(*Ith_Vrth)+Ith_Irci*(*Irci_Vrth); + *Ith_Vbci=(*Ith_Vbci)+Ith_Irci*(*Irci_Vbci); + *Ith_Vbcx=Ith_Irci*(*Irci_Vbcx); + *Ith_Vrbx=(*Ith_Vrbx)+Ith_Irbx*(*Irbx_Vrbx); + *Ith_Vrth=(*Ith_Vrth)+Ith_Irbx*(*Irbx_Vrth); + *Ith_Vrbi=(*Ith_Vrbi)+Ith_Irbi*(*Irbi_Vrbi); + *Ith_Vrth=(*Ith_Vrth)+Ith_Irbi*(*Irbi_Vrth); + *Ith_Vbei=(*Ith_Vbei)+Ith_Irbi*(*Irbi_Vbei); + *Ith_Vbci=(*Ith_Vbci)+Ith_Irbi*(*Irbi_Vbci); + *Ith_Vre=(*Ith_Vre)+Ith_Ire*(*Ire_Vre); + *Ith_Vrth=(*Ith_Vrth)+Ith_Ire*(*Ire_Vrth); + *Ith_Vrbp=(*Ith_Vrbp)+Ith_Irbp*(*Irbp_Vrbp); + *Ith_Vrth=(*Ith_Vrth)+Ith_Irbp*(*Irbp_Vrth); + *Ith_Vbep=(*Ith_Vbep)+Ith_Irbp*(*Irbp_Vbep); + *Ith_Vbci=(*Ith_Vbci)+Ith_Irbp*(*Irbp_Vbci); + if(p[83]>0.0){ + (*Irth)=(*Vrth)/p[83]; + *Irth_Vrth=1.0/p[83]; + }else{ + (*Irth)=0.0; + *Irth_Vrth=0.0; + } + (*Qcth)=(*Vrth)*p[84]; + *Qcth_Vrth=p[84]; + (*Flxf)=LEP*(*Ixxf); + Flxf_Ixxf=LEP; + *Flxf_Vrxf=Flxf_Ixxf*(*Ixxf_Vrxf); + (*Qcxf)=CEP*(*Vcxf); + *Qcxf_Vcxf=CEP; /* Scale outputs */ if((*SCALE)!=1.0){ *Ibe=(*SCALE)*(*Ibe); + *Ibe_Vrth=(*SCALE)*(*Ibe_Vrth); *Ibe_Vbei=(*SCALE)*(*Ibe_Vbei); *Ibex=(*SCALE)*(*Ibex); + *Ibex_Vrth=(*SCALE)*(*Ibex_Vrth); *Ibex_Vbex=(*SCALE)*(*Ibex_Vbex); - *Itzf=(*SCALE)*(*Itzf); - *Itzf_Vbei=(*SCALE)*(*Itzf_Vbei); - *Itzf_Vbci=(*SCALE)*(*Itzf_Vbci); + *Itxf=(*SCALE)*(*Itxf); + *Itxf_Vrxf=(*SCALE)*(*Itxf_Vrxf); *Itzr=(*SCALE)*(*Itzr); + *Itzr_Vrth=(*SCALE)*(*Itzr_Vrth); *Itzr_Vbci=(*SCALE)*(*Itzr_Vbci); *Itzr_Vbei=(*SCALE)*(*Itzr_Vbei); *Ibc=(*SCALE)*(*Ibc); + *Ibc_Vrth=(*SCALE)*(*Ibc_Vrth); *Ibc_Vbci=(*SCALE)*(*Ibc_Vbci); + *Ibc_Vrxf=(*SCALE)*(*Ibc_Vrxf); *Ibc_Vbei=(*SCALE)*(*Ibc_Vbei); *Ibep=(*SCALE)*(*Ibep); + *Ibep_Vrth=(*SCALE)*(*Ibep_Vrth); *Ibep_Vbep=(*SCALE)*(*Ibep_Vbep); *Ircx=(*SCALE)*(*Ircx); *Ircx_Vrcx=(*SCALE)*(*Ircx_Vrcx); + *Ircx_Vrth=(*SCALE)*(*Ircx_Vrth); *Irci=(*SCALE)*(*Irci); *Irci_Vrci=(*SCALE)*(*Irci_Vrci); + *Irci_Vrth=(*SCALE)*(*Irci_Vrth); *Irci_Vbci=(*SCALE)*(*Irci_Vbci); *Irci_Vbcx=(*SCALE)*(*Irci_Vbcx); *Irbx=(*SCALE)*(*Irbx); *Irbx_Vrbx=(*SCALE)*(*Irbx_Vrbx); + *Irbx_Vrth=(*SCALE)*(*Irbx_Vrth); *Irbi=(*SCALE)*(*Irbi); *Irbi_Vrbi=(*SCALE)*(*Irbi_Vrbi); + *Irbi_Vrth=(*SCALE)*(*Irbi_Vrth); *Irbi_Vbei=(*SCALE)*(*Irbi_Vbei); *Irbi_Vbci=(*SCALE)*(*Irbi_Vbci); *Ire=(*SCALE)*(*Ire); *Ire_Vre=(*SCALE)*(*Ire_Vre); + *Ire_Vrth=(*SCALE)*(*Ire_Vrth); *Irbp=(*SCALE)*(*Irbp); *Irbp_Vrbp=(*SCALE)*(*Irbp_Vrbp); + *Irbp_Vrth=(*SCALE)*(*Irbp_Vrth); *Irbp_Vbep=(*SCALE)*(*Irbp_Vbep); *Irbp_Vbci=(*SCALE)*(*Irbp_Vbci); *Qbe=(*SCALE)*(*Qbe); + *Qbe_Vrth=(*SCALE)*(*Qbe_Vrth); *Qbe_Vbei=(*SCALE)*(*Qbe_Vbei); *Qbe_Vbci=(*SCALE)*(*Qbe_Vbci); *Qbex=(*SCALE)*(*Qbex); + *Qbex_Vrth=(*SCALE)*(*Qbex_Vrth); *Qbex_Vbex=(*SCALE)*(*Qbex_Vbex); *Qbc=(*SCALE)*(*Qbc); + *Qbc_Vrth=(*SCALE)*(*Qbc_Vrth); *Qbc_Vbci=(*SCALE)*(*Qbc_Vbci); *Qbcx=(*SCALE)*(*Qbcx); + *Qbcx_Vrth=(*SCALE)*(*Qbcx_Vrth); *Qbcx_Vbcx=(*SCALE)*(*Qbcx_Vbcx); *Qbep=(*SCALE)*(*Qbep); + *Qbep_Vrth=(*SCALE)*(*Qbep_Vrth); *Qbep_Vbep=(*SCALE)*(*Qbep_Vbep); *Qbep_Vbci=(*SCALE)*(*Qbep_Vbci); *Qbeo=(*SCALE)*(*Qbeo); @@ -5145,15 +8036,51 @@ double Qbep_qdbep,Qbep_Ifp,Qbcp_qdbcp; *Qbco=(*SCALE)*(*Qbco); *Qbco_Vbc=(*SCALE)*(*Qbco_Vbc); *Ibcp=(*SCALE)*(*Ibcp); + *Ibcp_Vrth=(*SCALE)*(*Ibcp_Vrth); *Ibcp_Vbcp=(*SCALE)*(*Ibcp_Vbcp); *Iccp=(*SCALE)*(*Iccp); + *Iccp_Vrth=(*SCALE)*(*Iccp_Vrth); *Iccp_Vbep=(*SCALE)*(*Iccp_Vbep); *Iccp_Vbci=(*SCALE)*(*Iccp_Vbci); *Iccp_Vbcp=(*SCALE)*(*Iccp_Vbcp); *Irs=(*SCALE)*(*Irs); *Irs_Vrs=(*SCALE)*(*Irs_Vrs); + *Irs_Vrth=(*SCALE)*(*Irs_Vrth); *Qbcp=(*SCALE)*(*Qbcp); + *Qbcp_Vrth=(*SCALE)*(*Qbcp_Vrth); *Qbcp_Vbcp=(*SCALE)*(*Qbcp_Vbcp); + *Irth=(*SCALE)*(*Irth); + *Irth_Vrth=(*SCALE)*(*Irth_Vrth); + *Ith=(*SCALE)*(*Ith); + *Ith_Vrth=(*SCALE)*(*Ith_Vrth); + *Ith_Vbei=(*SCALE)*(*Ith_Vbei); + *Ith_Vbci=(*SCALE)*(*Ith_Vbci); + *Ith_Vrxf=(*SCALE)*(*Ith_Vrxf); + *Ith_Vcei=(*SCALE)*(*Ith_Vcei); + *Ith_Vbex=(*SCALE)*(*Ith_Vbex); + *Ith_Vbep=(*SCALE)*(*Ith_Vbep); + *Ith_Vrs=(*SCALE)*(*Ith_Vrs); + *Ith_Vbcp=(*SCALE)*(*Ith_Vbcp); + *Ith_Vcep=(*SCALE)*(*Ith_Vcep); + *Ith_Vrcx=(*SCALE)*(*Ith_Vrcx); + *Ith_Vrci=(*SCALE)*(*Ith_Vrci); + *Ith_Vbcx=(*SCALE)*(*Ith_Vbcx); + *Ith_Vrbx=(*SCALE)*(*Ith_Vrbx); + *Ith_Vrbi=(*SCALE)*(*Ith_Vrbi); + *Ith_Vre=(*SCALE)*(*Ith_Vre); + *Ith_Vrbp=(*SCALE)*(*Ith_Vrbp); + *Qcth=(*SCALE)*(*Qcth); + *Qcth_Vrth=(*SCALE)*(*Qcth_Vrth); + *Ixzf=(*SCALE)*(*Ixzf); + *Ixzf_Vrth=(*SCALE)*(*Ixzf_Vrth); + *Ixzf_Vbei=(*SCALE)*(*Ixzf_Vbei); + *Ixzf_Vbci=(*SCALE)*(*Ixzf_Vbci); + *Ixxf=(*SCALE)*(*Ixxf); + *Ixxf_Vrxf=(*SCALE)*(*Ixxf_Vrxf); + *Qcxf=(*SCALE)*(*Qcxf); + *Qcxf_Vcxf=(*SCALE)*(*Qcxf_Vcxf); + *Flxf=(*SCALE)*(*Flxf); + *Flxf_Vrxf=(*SCALE)*(*Flxf_Vrxf); } return(0); } diff --git a/src/spicelib/devices/vbic/vbicnoise.c b/src/spicelib/devices/vbic/vbicnoise.c index 09dea77a6..1d843baa5 100644 --- a/src/spicelib/devices/vbic/vbicnoise.c +++ b/src/spicelib/devices/vbic/vbicnoise.c @@ -101,31 +101,31 @@ VBICnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata * NevalSrcInstanceTemp(&noizDens[VBICRCNOIZ],&lnNdens[VBICRCNOIZ], ckt,THERMNOISE,inst->VBICcollCXNode,inst->VBICcollNode, - *(ckt->CKTstate0 + inst->VBICircx_Vrcx), dtemp); + *(ckt->CKTstate0 + inst->VBICircx_vrcx), dtemp); NevalSrcInstanceTemp(&noizDens[VBICRCINOIZ],&lnNdens[VBICRCINOIZ], ckt,THERMNOISE,inst->VBICcollCXNode,inst->VBICcollCINode, - *(ckt->CKTstate0 + inst->VBICirci_Vrci), dtemp); + *(ckt->CKTstate0 + inst->VBICirci_vrci), dtemp); NevalSrcInstanceTemp(&noizDens[VBICRBNOIZ],&lnNdens[VBICRBNOIZ], ckt,THERMNOISE,inst->VBICbaseBXNode,inst->VBICbaseNode, - *(ckt->CKTstate0 + inst->VBICirbx_Vrbx), dtemp); + *(ckt->CKTstate0 + inst->VBICirbx_vrbx), dtemp); NevalSrcInstanceTemp(&noizDens[VBICRBINOIZ],&lnNdens[VBICRBINOIZ], ckt,THERMNOISE,inst->VBICbaseBXNode,inst->VBICbaseBINode, - *(ckt->CKTstate0 + inst->VBICirbi_Vrbi), dtemp); + *(ckt->CKTstate0 + inst->VBICirbi_vrbi), dtemp); NevalSrcInstanceTemp(&noizDens[VBICRENOIZ],&lnNdens[VBICRENOIZ], ckt,THERMNOISE,inst->VBICemitEINode,inst->VBICemitNode, - *(ckt->CKTstate0 + inst->VBICire_Vre), dtemp); + *(ckt->CKTstate0 + inst->VBICire_vre), dtemp); NevalSrcInstanceTemp(&noizDens[VBICRBPNOIZ],&lnNdens[VBICRBPNOIZ], ckt,THERMNOISE,inst->VBICemitEINode,inst->VBICemitNode, - *(ckt->CKTstate0 + inst->VBICirbp_Vrbp), dtemp); + *(ckt->CKTstate0 + inst->VBICirbp_vrbp), dtemp); NevalSrcInstanceTemp(&noizDens[VBICRSNOIZ],&lnNdens[VBICRSNOIZ], ckt,THERMNOISE,inst->VBICsubsSINode,inst->VBICsubsNode, - *(ckt->CKTstate0 + inst->VBICirs_Vrs), dtemp); + *(ckt->CKTstate0 + inst->VBICirs_vrs), dtemp); NevalSrc(&noizDens[VBICICNOIZ],&lnNdens[VBICICNOIZ], diff --git a/src/spicelib/devices/vbic/vbicpzld.c b/src/spicelib/devices/vbic/vbicpzld.c index 18c59410a..f465535e9 100644 --- a/src/spicelib/devices/vbic/vbicpzld.c +++ b/src/spicelib/devices/vbic/vbicpzld.c @@ -39,32 +39,32 @@ VBICpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s) for( here = VBICinstances(model); here!= NULL; here = VBICnextInstance(here)) { - Ibe_Vbei = *(ckt->CKTstate0 + here->VBICibe_Vbei); - Ibex_Vbex = *(ckt->CKTstate0 + here->VBICibex_Vbex); - Itzf_Vbei = *(ckt->CKTstate0 + here->VBICitzf_Vbei); - Itzf_Vbci = *(ckt->CKTstate0 + here->VBICitzf_Vbci); - Itzr_Vbci = *(ckt->CKTstate0 + here->VBICitzr_Vbci); - Itzr_Vbei = *(ckt->CKTstate0 + here->VBICitzr_Vbei); - Ibc_Vbci = *(ckt->CKTstate0 + here->VBICibc_Vbci); - Ibc_Vbei = *(ckt->CKTstate0 + here->VBICibc_Vbei); - Ibep_Vbep = *(ckt->CKTstate0 + here->VBICibep_Vbep); - Irci_Vrci = *(ckt->CKTstate0 + here->VBICirci_Vrci); - Irci_Vbci = *(ckt->CKTstate0 + here->VBICirci_Vbci); - Irci_Vbcx = *(ckt->CKTstate0 + here->VBICirci_Vbcx); - Irbi_Vrbi = *(ckt->CKTstate0 + here->VBICirbi_Vrbi); - Irbi_Vbei = *(ckt->CKTstate0 + here->VBICirbi_Vbei); - Irbi_Vbci = *(ckt->CKTstate0 + here->VBICirbi_Vbci); - Irbp_Vrbp = *(ckt->CKTstate0 + here->VBICirbp_Vrbp); - Irbp_Vbep = *(ckt->CKTstate0 + here->VBICirbp_Vbep); - Irbp_Vbci = *(ckt->CKTstate0 + here->VBICirbp_Vbci); - Ibcp_Vbcp = *(ckt->CKTstate0 + here->VBICibcp_Vbcp); - Iccp_Vbep = *(ckt->CKTstate0 + here->VBICiccp_Vbep); - Iccp_Vbci = *(ckt->CKTstate0 + here->VBICiccp_Vbci); - Iccp_Vbcp = *(ckt->CKTstate0 + here->VBICiccp_Vbcp); - Ircx_Vrcx = *(ckt->CKTstate0 + here->VBICircx_Vrcx); - Irbx_Vrbx = *(ckt->CKTstate0 + here->VBICirbx_Vrbx); - Irs_Vrs = *(ckt->CKTstate0 + here->VBICirs_Vrs); - Ire_Vre = *(ckt->CKTstate0 + here->VBICire_Vre); + Ibe_Vbei = *(ckt->CKTstate0 + here->VBICibe_vbei); + Ibex_Vbex = *(ckt->CKTstate0 + here->VBICibex_vbex); + Itzf_Vbei = *(ckt->CKTstate0 + here->VBICitzf_vbei); + Itzf_Vbci = *(ckt->CKTstate0 + here->VBICitzf_vbci); + Itzr_Vbci = *(ckt->CKTstate0 + here->VBICitzr_vbci); + Itzr_Vbei = *(ckt->CKTstate0 + here->VBICitzr_vbei); + Ibc_Vbci = *(ckt->CKTstate0 + here->VBICibc_vbci); + Ibc_Vbei = *(ckt->CKTstate0 + here->VBICibc_vbei); + Ibep_Vbep = *(ckt->CKTstate0 + here->VBICibep_vbep); + Irci_Vrci = *(ckt->CKTstate0 + here->VBICirci_vrci); + Irci_Vbci = *(ckt->CKTstate0 + here->VBICirci_vbci); + Irci_Vbcx = *(ckt->CKTstate0 + here->VBICirci_vbcx); + Irbi_Vrbi = *(ckt->CKTstate0 + here->VBICirbi_vrbi); + Irbi_Vbei = *(ckt->CKTstate0 + here->VBICirbi_vbei); + Irbi_Vbci = *(ckt->CKTstate0 + here->VBICirbi_vbci); + Irbp_Vrbp = *(ckt->CKTstate0 + here->VBICirbp_vrbp); + Irbp_Vbep = *(ckt->CKTstate0 + here->VBICirbp_vbep); + Irbp_Vbci = *(ckt->CKTstate0 + here->VBICirbp_vbci); + Ibcp_Vbcp = *(ckt->CKTstate0 + here->VBICibcp_vbcp); + Iccp_Vbep = *(ckt->CKTstate0 + here->VBICiccp_vbep); + Iccp_Vbci = *(ckt->CKTstate0 + here->VBICiccp_vbci); + Iccp_Vbcp = *(ckt->CKTstate0 + here->VBICiccp_vbcp); + Ircx_Vrcx = *(ckt->CKTstate0 + here->VBICircx_vrcx); + Irbx_Vrbx = *(ckt->CKTstate0 + here->VBICirbx_vrbx); + Irs_Vrs = *(ckt->CKTstate0 + here->VBICirs_vrs); + Ire_Vre = *(ckt->CKTstate0 + here->VBICire_vre); /* c The real part diff --git a/src/spicelib/devices/vbic/vbicsetup.c b/src/spicelib/devices/vbic/vbicsetup.c index f40a59988..94d801dcd 100644 --- a/src/spicelib/devices/vbic/vbicsetup.c +++ b/src/spicelib/devices/vbic/vbicsetup.c @@ -501,6 +501,27 @@ VBICsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states) here->VBICbaseBINode = tmp->number; } + if (model->VBICdelayTimeFGiven) { + if(here->VBICxf1Node == 0) { + error = CKTmkVolt(ckt, &tmp, here->VBICname, "xf1"); + if(error) return(error); + here->VBICxf1Node = tmp->number; + } + if(here->VBICxf2Node == 0) { + error = CKTmkVolt(ckt, &tmp, here->VBICname, "xf2"); + if(error) return(error); + here->VBICxf2Node = tmp->number; + } + if(here->VBICbrEq == 0) { + error = CKTmkCur(ckt,&tmp,here->VBICname,"branch"); + if(error) return(error); + here->VBICbrEq = tmp->number; + } + } else { + here->VBICxf1Node = 0; + here->VBICxf2Node = 0; + } + /* macro to make elements with built in test for out of memory */ #define TSTALLOC(ptr,first,second) \ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\ @@ -584,8 +605,34 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\ TSTALLOC(VBICtempSubsPtr,VBICtempNode,VBICsubsNode); TSTALLOC(VBICtempSubsSIPtr,VBICtempNode,VBICsubsSINode); TSTALLOC(VBICtempTempPtr,VBICtempNode,VBICtempNode); + if (model->VBICdelayTimeFGiven) { + TSTALLOC(VBICtempXf2Ptr, VBICtempNode, VBICxf2Node); + TSTALLOC(VBICxf1TempPtr, VBICxf1Node ,VBICtempNode); + } } + if (model->VBICdelayTimeFGiven) { + TSTALLOC(VBICxf1Xf1Ptr ,VBICxf1Node ,VBICxf1Node); + TSTALLOC(VBICxf1BaseBIPtr,VBICxf1Node ,VBICbaseBINode); + TSTALLOC(VBICxf1EmitEIPtr,VBICxf1Node ,VBICemitEINode); + TSTALLOC(VBICxf1CollCIPtr,VBICxf1Node ,VBICcollCINode); + TSTALLOC(VBICxf1Xf2Ptr ,VBICxf1Node ,VBICxf2Node); + + TSTALLOC(VBICxf2Xf1Ptr ,VBICxf2Node ,VBICxf1Node); + TSTALLOC(VBICxf2BaseBIPtr,VBICxf2Node ,VBICbaseBINode); + TSTALLOC(VBICxf2EmitEIPtr,VBICxf2Node ,VBICemitEINode); + TSTALLOC(VBICxf2CollCIPtr,VBICxf2Node ,VBICcollCINode); + TSTALLOC(VBICxf2Xf2Ptr ,VBICxf2Node ,VBICxf2Node); + TSTALLOC(VBICemitEIXf2Ptr,VBICemitEINode,VBICxf2Node); + TSTALLOC(VBICcollCIXf2Ptr,VBICcollCINode,VBICxf2Node); + + TSTALLOC(VBICxf1IbrPtr, VBICxf1Node, VBICbrEq); + TSTALLOC(VBICxf2IbrPtr, VBICxf2Node, VBICbrEq); + TSTALLOC(VBICibrXf2Ptr, VBICbrEq, VBICxf2Node); + TSTALLOC(VBICibrXf1Ptr, VBICbrEq, VBICxf1Node); + TSTALLOC(VBICibrIbrPtr, VBICbrEq, VBICbrEq); + + } } } return(OK); @@ -636,6 +683,20 @@ VBICunsetup( && here->VBICcollCXNode != here->VBICcollNode) CKTdltNNum(ckt, here->VBICcollCXNode); here->VBICcollCXNode = 0; + + if (model->VBICdelayTimeFGiven) { + if(here->VBICxf1Node > 0) + CKTdltNNum(ckt, here->VBICxf1Node); + here->VBICxf1Node = 0; + + if(here->VBICxf2Node > 0) + CKTdltNNum(ckt, here->VBICxf2Node); + here->VBICxf2Node = 0; + + if (here->VBICbrEq > 0) + CKTdltNNum(ckt, here->VBICbrEq); + here->VBICbrEq = 0; + } } } return OK;