committed by
Holger Vogt
5 changed files with 258 additions and 0 deletions
-
175src/spicelib/devices/adms/admst/ngspiceMODULEbindCSC.c.xml
-
10src/spicelib/devices/adms/admst/ngspiceMODULEdefs.h.xml
-
6src/spicelib/devices/adms/admst/ngspiceMODULEext.h.xml
-
6src/spicelib/devices/adms/admst/ngspiceMODULEinit.c.xml
-
61src/spicelib/devices/adms/admst/ngspiceMakefile.am.xml
@ -0,0 +1,175 @@ |
|||
<?xml version="1.0" encoding="ISO-8859-1"?> |
|||
|
|||
<!-- |
|||
Written by Laurent Lemaitre - r29173@users.sourceforge.net |
|||
Documentation: |
|||
http://sourceforge.net/docman/display_doc.php?docid=18993&group_id=84289 |
|||
Target Interface: ngspice |
|||
Supported by adms-1.x.x |
|||
This file is used by adms - http://sourceforge.net/projects/mot-adms. |
|||
adms is free software; you can redistribute it and/or modify |
|||
it under the terms of the GNU General Public License as published by |
|||
the Free Software Foundation; either version 2 of the License, or |
|||
(at your option) any later version. |
|||
adms is distributed in the hope that it will be useful, |
|||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
GNU General Public License for more details. |
|||
You should have received a copy of the GNU General Public License |
|||
along with adms; if not, write to the Free Software |
|||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|||
--> |
|||
|
|||
<!DOCTYPE admst SYSTEM "admst.dtd"> |
|||
<admst version="2.3.0" xmlns:admst="http://mot-adms.sourceforge.net/xml-files/admst"> |
|||
|
|||
<admst:template match="dectype"> |
|||
<admst:choose> |
|||
<admst:when test="[type='real']"> |
|||
<admst:text format=" double "/> |
|||
</admst:when> |
|||
<admst:when test="[type='integer']"> |
|||
<admst:text format=" int "/> |
|||
</admst:when> |
|||
<admst:otherwise> |
|||
<admst:text format=" char* "/> |
|||
</admst:otherwise> |
|||
</admst:choose> |
|||
</admst:template> |
|||
|
|||
<admst:template match="code"> |
|||
<admst:value-of select="attribute[name='ngspicename']/value"/> |
|||
<admst:variable name="module" select="%s"/> |
|||
|
|||
/********** |
|||
Author: 2020 Francesco Lannutti |
|||
**********/ |
|||
|
|||
#include "ngspice/ngspice.h" |
|||
#include "ngspice/cktdefs.h" |
|||
#include "$(module)defs.h" |
|||
#include "ngspice/sperror.h" |
|||
#include "ngspice/klu-binding.h" |
|||
|
|||
#include <stdlib.h> |
|||
|
|||
static |
|||
int |
|||
BindCompare (const void *a, const void *b) |
|||
{ |
|||
BindElement *A, *B ; |
|||
A = (BindElement *)a ; |
|||
B = (BindElement *)b ; |
|||
|
|||
return ((int)(A->Sparse - B->Sparse)) ; |
|||
} |
|||
|
|||
int |
|||
$(module)bindCSC (GENmodel *inModel, CKTcircuit *ckt) |
|||
{ |
|||
$(module)model *model = ($(module)model *)inModel ; |
|||
$(module)instance *here ; |
|||
double *i ; |
|||
BindElement *matched, *BindStruct ; |
|||
size_t nz ; |
|||
|
|||
BindStruct = ckt->CKTmatrix->CKTbindStruct ; |
|||
nz = (size_t)ckt->CKTmatrix->CKTklunz ; |
|||
|
|||
/* loop through all the $(module) models */ |
|||
for ( ; model != NULL ; model = $(module)nextModel(model)) |
|||
{ |
|||
/* loop through all the instances of the model */ |
|||
for (here = $(module)instances(model); here != NULL ; here = $(module)nextInstance(here)) |
|||
{ |
|||
<admst:for-each select="jacobian"> |
|||
<admst:value-of select="column/name"/> |
|||
<admst:value-of select="row/name"/> |
|||
<admst:value-of select="column/name"/> |
|||
<admst:value-of select="row/name"/> |
|||
<admst:value-of select="column/name"/> |
|||
<admst:value-of select="row/name"/> |
|||
CREATE_KLU_BINDING_TABLE(PTR_J_%s_%s, $(module)%s%sBinding, %sNode, %sNode); |
|||
</admst:for-each> |
|||
} |
|||
} |
|||
|
|||
return (OK) ; |
|||
} |
|||
|
|||
int |
|||
$(module)bindCSCComplex (GENmodel *inModel, CKTcircuit *ckt) |
|||
{ |
|||
$(module)model *model = ($(module)model *)inModel ; |
|||
$(module)instance *here ; |
|||
|
|||
NG_IGNORE (ckt) ; |
|||
|
|||
/* loop through all the $(module) models */ |
|||
for ( ; model != NULL ; model = $(module)nextModel(model)) |
|||
{ |
|||
/* loop through all the instances of the model */ |
|||
for (here = $(module)instances(model); here != NULL ; here = $(module)nextInstance(here)) |
|||
{ |
|||
<admst:for-each select="jacobian"> |
|||
<admst:value-of select="column/name"/> |
|||
<admst:value-of select="row/name"/> |
|||
<admst:value-of select="column/name"/> |
|||
<admst:value-of select="row/name"/> |
|||
<admst:value-of select="column/name"/> |
|||
<admst:value-of select="row/name"/> |
|||
CONVERT_KLU_BINDING_TABLE_TO_COMPLEX(PTR_J_%s_%s, $(module)%s%sBinding, %sNode, %sNode); |
|||
</admst:for-each> |
|||
} |
|||
} |
|||
|
|||
return (OK) ; |
|||
} |
|||
|
|||
int |
|||
$(module)bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt) |
|||
{ |
|||
$(module)model *model = ($(module)model *)inModel ; |
|||
$(module)instance *here ; |
|||
|
|||
NG_IGNORE (ckt) ; |
|||
|
|||
/* loop through all the $(module) models */ |
|||
for ( ; model != NULL ; model = $(module)nextModel(model)) |
|||
{ |
|||
/* loop through all the instances of the model */ |
|||
for (here = $(module)instances(model); here != NULL ; here = $(module)nextInstance(here)) |
|||
{ |
|||
<admst:for-each select="jacobian"> |
|||
<admst:value-of select="column/name"/> |
|||
<admst:value-of select="row/name"/> |
|||
<admst:value-of select="column/name"/> |
|||
<admst:value-of select="row/name"/> |
|||
<admst:value-of select="column/name"/> |
|||
<admst:value-of select="row/name"/> |
|||
CONVERT_KLU_BINDING_TABLE_TO_REAL(PTR_J_%s_%s, $(module)%s%sBinding, %sNode, %sNode); |
|||
</admst:for-each> |
|||
} |
|||
} |
|||
|
|||
return (OK) ; |
|||
} |
|||
|
|||
</admst:template> |
|||
|
|||
<admst:for-each select="/module"> |
|||
<admst:value-of select="attribute[name='ngspicename']/value"/> |
|||
<admst:open file="%sbindCSC.c"> |
|||
<admst:value-of select="/simulator/package_string"/> |
|||
<admst:text format="/***\n*** Interface: %s\n"/> |
|||
<admst:value-of select="/simulator/currentdate"/> |
|||
<admst:value-of select="/simulator/fullname"/> |
|||
<admst:text format=" *** created by: %s - %s ***/\n"/> |
|||
<admst:apply-templates select="." match="code"/> |
|||
</admst:open> |
|||
<admst:value-of select="attribute[name='ngspicename']/value"/> |
|||
<admst:message format="%sbindCSC.c: file created\n"/> |
|||
</admst:for-each> |
|||
|
|||
</admst> |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue