From c7fa70d10928acf2c71ea5f71b52e2a411e6d879 Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Fri, 2 Sep 2022 15:06:40 +0200 Subject: [PATCH] Add special savecurrents options: options savecurrents_bsim3, savecurrents_bsim4, and savecurrents_mos1 will save all device currents as listed in chapts 31.6.1, .8 and .9 of the ngspice manual. Pure savecurrents will yield a subset of MOS1 currents, as seen before. --- src/frontend/inp.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/frontend/inp.c b/src/frontend/inp.c index d31f272c3..f1d0173a3 100644 --- a/src/frontend/inp.c +++ b/src/frontend/inp.c @@ -2252,7 +2252,17 @@ inp_savecurrents(struct card *deck, struct card *options, wordlist *wl, wordlist switch (devline[0]) { case 'm': devname = gettok(&devline); - newline = tprintf(".save @%s[id] @%s[is] @%s[ig] @%s[ib]", + if (strstr(options->line, "savecurrents_bsim3")) + newline = tprintf(".save @%s[id] @%s[ibd] @%s[ibs]", + devname, devname, devname); + else if (strstr(options->line, "savecurrents_bsim4")) + newline = tprintf(".save @%s[id] @%s[ibd] @%s[ibs] @%s[isub] @%s[igidl] @%s[igisl] @%s[igs] @%s[igb] @%s[igd] @%s[igcs] @%s[igcd]", + devname, devname, devname, devname, devname, devname, devname, devname, devname, devname, devname); + else if (strstr(options->line, "savecurrents_mos1")) + newline = tprintf(".save @%s[id] @%s[is] @%s[ig] @%s[ib] @%s[ibd] @%s[ibs]", + devname, devname, devname, devname, devname, devname); + else + newline = tprintf(".save @%s[id] @%s[is] @%s[ig] @%s[ib]", devname, devname, devname, devname); break; case 'j':