diff --git a/src/include/ngspice/optdefs.h b/src/include/ngspice/optdefs.h index a39f57b23..6e8a5549f 100644 --- a/src/include/ngspice/optdefs.h +++ b/src/include/ngspice/optdefs.h @@ -124,6 +124,7 @@ enum { #ifdef KLU OPT_SPARSE, + OPT_KLU, OPT_KLU_MEMGROW_FACTOR, #endif diff --git a/src/spicelib/analysis/cktntask.c b/src/spicelib/analysis/cktntask.c index 2ad44e3b0..be681b2b6 100644 --- a/src/spicelib/analysis/cktntask.c +++ b/src/spicelib/analysis/cktntask.c @@ -141,7 +141,7 @@ CKTnewTask(CKTcircuit *ckt, TSKtask **taskPtr, IFuid taskName, TSKtask **defPtr) tsk->TSKepsmin = 1e-28; #ifdef KLU - tsk->TSKkluMODE = CKTkluON; + tsk->TSKkluMODE = CKTkluOFF; tsk->TSKkluMemGrowFactor = 1.2 ; #endif diff --git a/src/spicelib/analysis/cktsopt.c b/src/spicelib/analysis/cktsopt.c index d69e878f5..0c1f723e1 100644 --- a/src/spicelib/analysis/cktsopt.c +++ b/src/spicelib/analysis/cktsopt.c @@ -180,7 +180,9 @@ CKTsetOpt(CKTcircuit *ckt, JOB *anal, int opt, IFvalue *val) case OPT_SPARSE: task->TSKkluMODE = (val->iValue == 0); break; - + case OPT_KLU: + task->TSKkluMODE = (val->iValue != 0); + break; case OPT_KLU_MEMGROW_FACTOR: task->TSKkluMemGrowFactor = (val->rValue == 1.2); break; @@ -348,6 +350,8 @@ static IFparm OPTtbl[] = { #ifdef KLU { "sparse", OPT_SPARSE, IF_SET|IF_FLAG, "Set SPARSE 1.3 as Direct Linear Solver" }, + { "klu", OPT_KLU, IF_SET|IF_FLAG, + "Set KLU as Direct Linear Solver" }, { "klu_memgrow_factor", OPT_KLU_MEMGROW_FACTOR, IF_SET|IF_REAL, "KLU Memory Grow Factor (default is 1.2)" } #endif