diff --git a/src/spicelib/devices/adms/admst/ngspiceMODULEdefs.h.xml b/src/spicelib/devices/adms/admst/ngspiceMODULEdefs.h.xml
index cfe2351f1..2cafc1b4c 100644
--- a/src/spicelib/devices/adms/admst/ngspiceMODULEdefs.h.xml
+++ b/src/spicelib/devices/adms/admst/ngspiceMODULEdefs.h.xml
@@ -200,7 +200,15 @@ typedef struct s$(module)instance {
-
+
+
+
+
+
+
+
+
+
/* instance parameters */
diff --git a/src/spicelib/devices/adms/admst/ngspiceMODULEguesstopology.c.xml b/src/spicelib/devices/adms/admst/ngspiceMODULEguesstopology.c.xml
index 765bb84c4..ecfcc0641 100644
--- a/src/spicelib/devices/adms/admst/ngspiceMODULEguesstopology.c.xml
+++ b/src/spicelib/devices/adms/admst/ngspiceMODULEguesstopology.c.xml
@@ -183,12 +183,12 @@
+ format="here->%(lhs/branch/nnode/name)Node = here->%(lhs/branch/pnode/name)Node; /* nnode collapsed */\n here->%(lhs/branch/nnode/name)Node_mine = 0;\n"/>
+ format="here->%(lhs/branch/pnode/name)Node = here->%(lhs/branch/nnode/name)Node; /* pnode collapsed */\n here->%(lhs/branch/pnode/name)Node_mine = 0;\n"/>
-
+
diff --git a/src/spicelib/devices/adms/admst/ngspiceMODULEsetup.c.xml b/src/spicelib/devices/adms/admst/ngspiceMODULEsetup.c.xml
index 5f3f4558b..7edba1a53 100644
--- a/src/spicelib/devices/adms/admst/ngspiceMODULEsetup.c.xml
+++ b/src/spicelib/devices/adms/admst/ngspiceMODULEsetup.c.xml
@@ -114,6 +114,7 @@ int $(module)setup (SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *
here->%sNode = -1;
+ here->%(name)Node_mine = 0;
}
@@ -144,13 +145,12 @@ int $(module)setup (SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *
-
-
- if(here->%sNode == -1)
+ if(here->%(name)Node == -1)
{
error=CKTmkVolt(ckt,&tmp,here->$(module)name,"X%(name)X");
if(error) return(error);
- here->%sNode = tmp->number;
+ here->%(name)Node = tmp->number;
+ here->%(name)Node_mine = 1;
}
}
@@ -185,16 +185,20 @@ $(module)unsetup(GENmodel *inModel, CKTcircuit *ckt)
for ( here = $(module)instances(model) ;here != NULL ; here = $(module)nextInstance(here) )
{
- if (!here->%(name)Node_connected && here->%(name)Node >= 0) {
- CKTdltNNum(ckt, here->%(name)Node);
- here->%(name)Node = -1;
+ if (here->%(name)Node_mine) {
+ if (here->%(name)Node > 0)
+ CKTdltNNum(ckt, here->%(name)Node);
+ here->%(name)Node_mine = 0;
}
+ if (!here->%(name)Node_connected)
+ here->%(name)Node = -1;
- if (here->%(name)Node > 0) {
- CKTdltNNum(ckt, here->%(name)Node);
- here->%(name)Node = -1;
- }
+ if (here->%(name)Node_mine)
+ if (here->%(name)Node > 0)
+ CKTdltNNum(ckt, here->%(name)Node);
+ here->%(name)Node = -1;
+ here->%(name)Node_mine = 0;
}
}