Browse Source

Prepare Cshunt: add a cpacitor to each voltage node

Function inppas4() will add the extra caps, to be done.
pre-master-46
Holger Vogt 5 years ago
parent
commit
f8357dad88
  1. 4
      src/frontend/inp.c
  2. 1
      src/include/ngspice/cktdefs.h
  3. 1
      src/include/ngspice/inpdefs.h
  4. 1
      src/include/ngspice/optdefs.h
  5. 1
      src/include/ngspice/tskdefs.h
  6. 1
      src/spicelib/analysis/cktdojob.c
  7. 1
      src/spicelib/analysis/cktntask.c
  8. 4
      src/spicelib/analysis/cktsopt.c
  9. 2
      visualc/vngspice.vcxproj

4
src/frontend/inp.c

@ -1336,6 +1336,10 @@ inp_dodeck(
}
} // if (!noparse) . . .
/* If option cshunt is given, add capacitors to each voltage node */
if (ft_curckt->ci_defTask->TSKcshunt > 0.)
INPpas4(ckt, tab);
/* add title of deck to data base */
/* this won't work if the title is the empty string
* cp_addkword() doesn't work for tt === ""

1
src/include/ngspice/cktdefs.h

@ -215,6 +215,7 @@ struct CKTcircuit {
#endif /* NEWTRUNC */
double CKTgmin; /* .options GMIN */
double CKTgshunt; /* .options RSHUNT */
double CKTcshunt; /* .options CSHUNT */
double CKTdelmin; /* minimum time step for tran analysis */
double CKTtrtol; /* .options TRTOL */
double CKTfinalTime; /* TSTOP */

1
src/include/ngspice/inpdefs.h

@ -136,6 +136,7 @@ void INPpas1(CKTcircuit *, struct card *, INPtables *);
void INPpas2(CKTcircuit *, struct card *, INPtables *, TSKtask *);
void INPpas3(
CKTcircuit *, struct card *, INPtables *, TSKtask *, IFparm *, int);
void INPpas4(CKTcircuit *, INPtables *);
int INPpName(char *, IFvalue *, CKTcircuit *, int, GENinstance *);
int INPtermInsert(CKTcircuit *, char **, INPtables *, CKTnode **);
int INPtermSearch(CKTcircuit*, char**, INPtables*, CKTnode**);

1
src/include/ngspice/optdefs.h

@ -120,6 +120,7 @@ enum {
OPT_XMU,
OPT_INDVERBOSITY,
OPT_EPSMIN,
OPT_CSHUNT,
};
#ifdef XSPICE

1
src/include/ngspice/tskdefs.h

@ -51,6 +51,7 @@ struct TSKtask {
#endif /* NEWTRUNC */
double TSKgmin;
double TSKgshunt; /* shunt conductance (CKTdiagGmin) */
double TSKcshunt; /* shunt capacitor to ground */
double TSKdelmin;
double TSKtrtol;
double TSKdefaultMosM;

1
src/spicelib/analysis/cktdojob.c

@ -71,6 +71,7 @@ CKTdoJob(CKTcircuit *ckt, int reset, TSKtask *task)
ckt->CKTvoltTol = task->TSKvoltTol;
ckt->CKTgmin = task->TSKgmin;
ckt->CKTgshunt = task->TSKgshunt;
ckt->CKTcshunt = task->TSKcshunt;
ckt->CKTdelmin = task->TSKdelmin;
ckt->CKTtrtol = task->TSKtrtol;
#ifdef XSPICE

1
src/spicelib/analysis/cktntask.c

@ -86,6 +86,7 @@ CKTnewTask(CKTcircuit *ckt, TSKtask **taskPtr, IFuid taskName, TSKtask **defPtr)
/* use the application defaults */
tsk->TSKgmin = 1e-12;
tsk->TSKgshunt = 0;
tsk->TSKcshunt = -1;
tsk->TSKabstol = 1e-12;
tsk->TSKreltol = 1e-3;
tsk->TSKchgtol = 1e-14;

4
src/spicelib/analysis/cktsopt.c

@ -172,6 +172,9 @@ CKTsetOpt(CKTcircuit *ckt, JOB *anal, int opt, IFvalue *val)
case OPT_EPSMIN:
task->TSKepsmin = val->rValue;
break;
case OPT_CSHUNT:
task->TSKcshunt = val->rValue;
break;
/* gtri - begin - wbk - add new options */
#ifdef XSPICE
case OPT_EVT_MAX_OP_ALTER:
@ -238,6 +241,7 @@ static IFparm OPTtbl[] = {
{ "rshunt", OPT_ENH_RSHUNT, IF_SET|IF_REAL, "Shunt resistance from analog nodes to ground" },
/* gtri - end - wbk - add new options */
#endif
{ "cshunt", OPT_CSHUNT, IF_SET|IF_REAL, "Shunt capacitor from analog nodes to ground" },
{ "noopiter", OPT_NOOPITER,IF_SET|IF_FLAG,"Go directly to gmin stepping" },
{ "gmin", OPT_GMIN,IF_SET|IF_REAL,"Minimum conductance" },
{ "gshunt", OPT_GSHUNT,IF_SET|IF_REAL,"Shunt conductance" },

2
visualc/vngspice.vcxproj

@ -1336,6 +1336,7 @@
<ClInclude Include="..\src\spicelib\parser\inppas1.h" />
<ClInclude Include="..\src\spicelib\parser\inppas2.h" />
<ClInclude Include="..\src\spicelib\parser\inppas3.h" />
<ClInclude Include="..\src\spicelib\parser\inppas4.h" />
<ClInclude Include="..\src\spicelib\parser\inpxx.h" />
<ClInclude Include="..\src\winmain.h" />
<ClInclude Include=".\src\include\inttypes.h" />
@ -2655,6 +2656,7 @@
<ClCompile Include="..\src\spicelib\parser\inppas1.c" />
<ClCompile Include="..\src\spicelib\parser\inppas2.c" />
<ClCompile Include="..\src\spicelib\parser\inppas3.c" />
<ClCompile Include="..\src\spicelib\parser\inppas4.c" />
<ClCompile Include="..\src\spicelib\parser\inppname.c" />
<ClCompile Include="..\src\spicelib\parser\inpptree.c" />
<ClCompile Include="..\src\spicelib\parser\inpsymt.c" />

Loading…
Cancel
Save