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* begstr = copy_substring(tmpcard->line, instline);
|
||||||
char* strnode1 = gettok(&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 nodenumstr[3];
|
||||||
char *nodename1 = get_terminal_name(instname, itoa10(nodenum, nodenumstr), instances);
|
char *nodename1 = get_terminal_name(instname, itoa10(nodenum, nodenumstr), instances);
|
||||||
|
|
||||||
if (!nodename1) {
|
if (!nodename1) {
|
||||||
tfree(begstr);
|
tfree(begstr);
|
||||||
tfree(strnode1);
|
tfree(strnode1);
|
||||||
|
tfree(strnode1name);
|
||||||
ds_free(&BVrefline);
|
ds_free(&BVrefline);
|
||||||
ds_free(&Bpowerline);
|
ds_free(&Bpowerline);
|
||||||
ds_free(&Bpowersave);
|
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);
|
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);
|
tfree(tmpcard->line);
|
||||||
tmpcard->line = newline;
|
tmpcard->line = newline;
|
||||||
|
|
@ -1423,7 +1431,7 @@ static int setallvsources(struct card *tmpcard, NGHASHPTR instances, char *instn
|
||||||
cadd(&Bpowerline, ':');
|
cadd(&Bpowerline, ':');
|
||||||
sadd(&Bpowerline, nodenumstr);
|
sadd(&Bpowerline, nodenumstr);
|
||||||
cadd(&Bpowerline, '_');
|
cadd(&Bpowerline, '_');
|
||||||
sadd(&Bpowerline, strnode1);
|
sadd(&Bpowerline, strnode1name);
|
||||||
cadd(&Bpowerline, ')');
|
cadd(&Bpowerline, ')');
|
||||||
|
|
||||||
allsaves = wl_cons(copy(ds_get_buf(&Bpowersave)), allsaves);
|
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(begstr);
|
||||||
tfree(strnode1);
|
tfree(strnode1);
|
||||||
|
tfree(strnode1name);
|
||||||
tfree(newnode);
|
tfree(newnode);
|
||||||
tfree(nodename1);
|
tfree(nodename1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue