Create extra name derived from node name, but with / replaced by _,
to become part of the new voltage source name: avoid names which are not parsed correctly by the B source equation parser.
This commit is contained in:
parent
a45c1500a6
commit
7d59ad2db7
|
|
@ -1376,13 +1376,21 @@ static int setallvsources(struct card *tmpcard, NGHASHPTR instances, char *instn
|
|||
}
|
||||
char* begstr = copy_substring(tmpcard->line, instline);
|
||||
char* strnode1 = gettok(&instline);
|
||||
char* newnode = tprintf("probe_int_%s_%s_%d", strnode1, instname, nodenum);
|
||||
|
||||
/* node name becomes part of a new v-source name, don't allow / in node name (aka /VT).
|
||||
Replace by _ (_VT).
|
||||
Otherwise the B source function parser fails with i() not found. */
|
||||
char* strnode1name = copy(strnode1);
|
||||
if (strnode1name[0] == '/')
|
||||
strnode1name[0] = '_';
|
||||
char* newnode = tprintf("probe_int_%s_%s_%d", strnode1name, instname, nodenum);
|
||||
char nodenumstr[3];
|
||||
char *nodename1 = get_terminal_name(instname, itoa10(nodenum, nodenumstr), instances);
|
||||
|
||||
if (!nodename1) {
|
||||
tfree(begstr);
|
||||
tfree(strnode1);
|
||||
tfree(strnode1name);
|
||||
ds_free(&BVrefline);
|
||||
ds_free(&Bpowerline);
|
||||
ds_free(&Bpowersave);
|
||||
|
|
@ -1391,7 +1399,7 @@ static int setallvsources(struct card *tmpcard, NGHASHPTR instances, char *instn
|
|||
|
||||
newline = tprintf("%s %s %s", begstr, newnode, instline);
|
||||
|
||||
char* vline = tprintf("vcurr_%s:probe_int_%s:%s_%s %s %s 0", instname, nodename1, nodenumstr, strnode1, strnode1, newnode);
|
||||
char* vline = tprintf("vcurr_%s:probe_int_%s:%s_%s %s %s 0", instname, nodename1, nodenumstr, strnode1name, strnode1, newnode);
|
||||
|
||||
tfree(tmpcard->line);
|
||||
tmpcard->line = newline;
|
||||
|
|
@ -1423,7 +1431,7 @@ static int setallvsources(struct card *tmpcard, NGHASHPTR instances, char *instn
|
|||
cadd(&Bpowerline, ':');
|
||||
sadd(&Bpowerline, nodenumstr);
|
||||
cadd(&Bpowerline, '_');
|
||||
sadd(&Bpowerline, strnode1);
|
||||
sadd(&Bpowerline, strnode1name);
|
||||
cadd(&Bpowerline, ')');
|
||||
|
||||
allsaves = wl_cons(copy(ds_get_buf(&Bpowersave)), allsaves);
|
||||
|
|
@ -1431,6 +1439,7 @@ static int setallvsources(struct card *tmpcard, NGHASHPTR instances, char *instn
|
|||
|
||||
tfree(begstr);
|
||||
tfree(strnode1);
|
||||
tfree(strnode1name);
|
||||
tfree(newnode);
|
||||
tfree(nodename1);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue