Truncation error calculation.

This commit is contained in:
pnenzi 2006-03-10 09:55:53 +00:00
parent a14d3a60bd
commit 68b765e3cd
1 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
$Id$
$Log$
Revision 1.1 2006-03-10 09:55:53 pnenzi
Truncation error calculation.
-->
<!--
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.2.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"/>
#include &quot;ngspice.h&quot;
#include &quot;cktdefs.h&quot;
#include &quot;$(module)defs.h&quot;
#include &quot;sperror.h&quot;
#include &quot;suffix.h&quot;
int $(module)trunc(GENmodel *inModel, CKTcircuit *ckt, double *timeStep)
{
register $(module)model *model = ($(module)model*)inModel;
register $(module)instance *here;
#ifdef STEPDEBUG
double debugtemp;
#endif /* STEPDEBUG */
for ( ; model != NULL; model = model->$(module)nextModel )
{
/* loop through all the instances of the model */
for (here = model->$(module)instances; here != NULL ; here = here->$(module)nextInstance)
{
#ifdef STEPDEBUG
debugtemp = *timeStep;
#endif /* STEPDEBUG */
<admst:for-each select="source[dynamic='yes']">
<admst:value-of select="branch/nnode/name"/>
<admst:value-of select="branch/pnode/name"/>
CKTterr(here->state_%s_%s, ckt, timeStep);
</admst:for-each>
#ifdef STEPDEBUG
if(debugtemp != *timeStep)
{ printf("device %%s reduces step from %%g to %%g\\n",
here->$(module)name,debugtemp,*timeStep);
}
#endif /* STEPDEBUG */
} /* End of Instance */
} /* End of Model */
return(OK);
}
</admst:template>
<admst:for-each select="/module">
<admst:value-of select="attribute[name='ngspicename']/value"/>
<admst:open file="%strunc.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="%strunc.c: file created\n"/>
</admst:for-each>
</admst>