From c86f6265dbb76716fb5f64b7ce9ab63c0c29e41b Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Sat, 2 Feb 2019 09:36:59 +0100 Subject: [PATCH] relieve the step size limitation (formerly set to TSTEP in tran simulation). However not all examples will do without, thus the variable 'stepsizelimit' is set in spinit. Unset it in .spiceinit to get the new behavior. Of course then you might add the limit by setting TMAX in the tran command. --- src/spicelib/analysis/traninit.c | 3 ++- src/spinit.in | 2 ++ visualc/spinit_all | 1 + visualc/spinitd | 1 + visualc/spinitd64 | 1 + visualc/spinitr | 1 + visualc/spinitr64 | 1 + 7 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/spicelib/analysis/traninit.c b/src/spicelib/analysis/traninit.c index b25aa6cf4..135ed12dc 100644 --- a/src/spicelib/analysis/traninit.c +++ b/src/spicelib/analysis/traninit.c @@ -7,6 +7,7 @@ Modified: 2000 AlansFixes #include "ngspice/cktdefs.h" #include "ngspice/trandefs.h" #include "ngspice/iferrmsg.h" +#include "ngspice/cpextern.h" /* * this used to be in setup, but we need it here now @@ -25,7 +26,7 @@ int TRANinit(CKTcircuit *ckt, JOB *anal) /* The following code has been taken from macspice 3f4 (A. Wilson) in the file traninit.new.c - Seems interesting */ if(ckt->CKTmaxStep == 0) { - if (ckt->CKTstep < ( ckt->CKTfinalTime - ckt->CKTinitTime )/50.0) + if ((ckt->CKTstep < ( ckt->CKTfinalTime - ckt->CKTinitTime )/50.0) && cp_getvar("stepsizelimit", CP_BOOL, NULL, 0)) ckt->CKTmaxStep = ckt->CKTstep; else ckt->CKTmaxStep = ( ckt->CKTfinalTime - ckt->CKTinitTime )/50.0; diff --git a/src/spinit.in b/src/spinit.in index 305e7dfea..1a2dbfcbc 100644 --- a/src/spinit.in +++ b/src/spinit.in @@ -13,6 +13,8 @@ set x11lineararcs ** default (if compiled with --enable-openmp) is: 2 *set num_threads=4 set interactive +* step size is limited to TSTEP in tansient simulation +set stepsizelimit strcmp __flag $program "ngspice" if $__flag = 0 diff --git a/visualc/spinit_all b/visualc/spinit_all index f7b3a8de8..d9678dc22 100644 --- a/visualc/spinit_all +++ b/visualc/spinit_all @@ -13,6 +13,7 @@ set filetype=ascii ** default (if compiled with --enable-openmp) is: 2 set num_threads=4 set interactive +set stepsizelimit strcmp __flag $program "ngspice" if $__flag = 0 diff --git a/visualc/spinitd b/visualc/spinitd index 18e34ecef..58a0767e3 100644 --- a/visualc/spinitd +++ b/visualc/spinitd @@ -13,6 +13,7 @@ set filetype=ascii ** default (if compiled with --enable-openmp) is: 2 set num_threads=4 set interactive +set stepsizelimit strcmp __flag $program "ngspice" if $__flag = 0 diff --git a/visualc/spinitd64 b/visualc/spinitd64 index 24454aa92..64ba2bbff 100644 --- a/visualc/spinitd64 +++ b/visualc/spinitd64 @@ -13,6 +13,7 @@ set filetype=ascii ** default (if compiled with --enable-openmp) is: 2 set num_threads=4 set interactive +set stepsizelimit strcmp __flag $program "ngspice" if $__flag = 0 diff --git a/visualc/spinitr b/visualc/spinitr index 302dd2d77..ebb06bc9a 100644 --- a/visualc/spinitr +++ b/visualc/spinitr @@ -13,6 +13,7 @@ set filetype=ascii ** default (if compiled with --enable-openmp) is: 2 set num_threads=4 set interactive +set stepsizelimit strcmp __flag $program "ngspice" if $__flag = 0 diff --git a/visualc/spinitr64 b/visualc/spinitr64 index 9eec6811e..56ce63aad 100644 --- a/visualc/spinitr64 +++ b/visualc/spinitr64 @@ -13,6 +13,7 @@ set filetype=ascii ** default (if compiled with --enable-openmp) is: 2 set num_threads=4 set interactive +set stepsizelimit strcmp __flag $program "ngspice" if $__flag = 0