Browse Source

Sparse 1.3 is the matrix solver if no option (sparse or klu) is given.

KLU is selected by 'option klu'
If both 'option klu' and 'option sparse' are given,
the last one executed determines the solver.
'option sparse=0' de-selects spares, i.e. selects klu.
'option klu=0' de-selects klu, selects sparse.
'option klu=1' has the same meaning as 'option klu'.
'option sparse=1' has the same meaning as 'option sparse'.
pre-master-46
Holger Vogt 2 years ago
parent
commit
2a005292db
  1. 1
      src/include/ngspice/optdefs.h
  2. 2
      src/spicelib/analysis/cktntask.c
  3. 6
      src/spicelib/analysis/cktsopt.c

1
src/include/ngspice/optdefs.h

@ -124,6 +124,7 @@ enum {
#ifdef KLU
OPT_SPARSE,
OPT_KLU,
OPT_KLU_MEMGROW_FACTOR,
#endif

2
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

6
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

Loading…
Cancel
Save