mirror of
https://git.code.sf.net/p/ngspice/ngspice
synced 2026-08-22 13:57:32 +02:00
Added "klu_memgrow_factor" option to control the KLU memory grow factor
This commit is contained in:
@@ -304,6 +304,7 @@ struct CKTcircuit {
|
|||||||
|
|
||||||
#ifdef KLU
|
#ifdef KLU
|
||||||
unsigned int CKTkluMODE:1;
|
unsigned int CKTkluMODE:1;
|
||||||
|
unsigned int CKTkluMemGrowFactor : 1 ;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -121,6 +121,12 @@ enum {
|
|||||||
OPT_INDVERBOSITY,
|
OPT_INDVERBOSITY,
|
||||||
OPT_EPSMIN,
|
OPT_EPSMIN,
|
||||||
OPT_CSHUNT,
|
OPT_CSHUNT,
|
||||||
|
|
||||||
|
#ifdef KLU
|
||||||
|
OPT_SPARSE,
|
||||||
|
OPT_KLU_MEMGROW_FACTOR,
|
||||||
|
#endif
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef XSPICE
|
#ifdef XSPICE
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ struct TSKtask {
|
|||||||
|
|
||||||
#ifdef KLU
|
#ifdef KLU
|
||||||
unsigned int TSKkluMODE:1;
|
unsigned int TSKkluMODE:1;
|
||||||
|
unsigned int TSKkluMemGrowFactor : 1 ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ NIinit(CKTcircuit *ckt)
|
|||||||
ckt->CKTmatrix->CKTkluMODE = ckt->CKTkluMODE ; /* TO BE SUBSTITUTED WITH THE HEURISTICS */
|
ckt->CKTmatrix->CKTkluMODE = ckt->CKTkluMODE ; /* TO BE SUBSTITUTED WITH THE HEURISTICS */
|
||||||
|
|
||||||
klu_defaults (ckt->CKTmatrix->CKTkluCommon) ;
|
klu_defaults (ckt->CKTmatrix->CKTkluCommon) ;
|
||||||
|
ckt->CKTmatrix->CKTkluCommon->memgrow = ckt->CKTkluMemGrowFactor ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ckt->CKTniState = NIUNINITIALIZED;
|
ckt->CKTniState = NIUNINITIALIZED;
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task)
|
|||||||
|
|
||||||
#ifdef KLU
|
#ifdef KLU
|
||||||
ckt->CKTkluMODE = task->TSKkluMODE;
|
ckt->CKTkluMODE = task->TSKkluMODE;
|
||||||
|
ckt->CKTkluMemGrowFactor = task->TSKkluMemGrowFactor ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NEWTRUNC
|
#ifdef NEWTRUNC
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ CKTnewTask(CKTcircuit *ckt, TSKtask **taskPtr, IFuid taskName, TSKtask **defPtr)
|
|||||||
|
|
||||||
#ifdef KLU
|
#ifdef KLU
|
||||||
tsk->TSKkluMODE = def->TSKkluMODE;
|
tsk->TSKkluMODE = def->TSKkluMODE;
|
||||||
|
tsk->TSKkluMemGrowFactor = def->TSKkluMemGrowFactor ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NEWTRUNC
|
#ifdef NEWTRUNC
|
||||||
@@ -141,6 +142,7 @@ CKTnewTask(CKTcircuit *ckt, TSKtask **taskPtr, IFuid taskName, TSKtask **defPtr)
|
|||||||
|
|
||||||
#ifdef KLU
|
#ifdef KLU
|
||||||
tsk->TSKkluMODE = CKTkluON;
|
tsk->TSKkluMODE = CKTkluON;
|
||||||
|
tsk->TSKkluMemGrowFactor = 1.2 ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (1) /*CDHW*/
|
#if (1) /*CDHW*/
|
||||||
|
|||||||
@@ -180,6 +180,10 @@ CKTsetOpt(CKTcircuit *ckt, JOB *anal, int opt, IFvalue *val)
|
|||||||
case OPT_SPARSE:
|
case OPT_SPARSE:
|
||||||
task->TSKkluMODE = (val->iValue == 0);
|
task->TSKkluMODE = (val->iValue == 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case OPT_KLU_MEMGROW_FACTOR:
|
||||||
|
task->TSKkluMemGrowFactor = (val->rValue == 1.2);
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* gtri - begin - wbk - add new options */
|
/* gtri - begin - wbk - add new options */
|
||||||
@@ -343,7 +347,9 @@ static IFparm OPTtbl[] = {
|
|||||||
|
|
||||||
#ifdef KLU
|
#ifdef KLU
|
||||||
{ "sparse", OPT_SPARSE, IF_SET|IF_FLAG,
|
{ "sparse", OPT_SPARSE, IF_SET|IF_FLAG,
|
||||||
"Set SPARSE 1.3 as Direct Linear Solver" }
|
"Set SPARSE 1.3 as Direct Linear Solver" },
|
||||||
|
{ "klu_memgrow_factor", OPT_KLU_MEMGROW_FACTOR, IF_SET|IF_FLAG,
|
||||||
|
"KLU Memory Grow Factor (default is 1.2)" }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user