home *** CD-ROM | disk | FTP | other *** search
- /* readin.f -- translated by f2c (version of 3 February 1990 3:36:42).
- You must link the resulting object file with the libraries:
- -lF77 -lI77 -lm -lc (in that order)
- */
-
- #include "f2c.h"
-
- /* Common Block Declarations */
-
- struct {
- integer ielmnt, isbckt, nsbckt, iunsat, nunsat, itemps, numtem, isens,
- nsens, ifour, nfour, ifield, icode, idelim, icolum, insize,
- junode, lsbkpt, numbkp, iorder, jmnode, iur, iuc, ilc, ilr,
- numoff, isr, nmoffc, iseq, iseq1, neqn, nodevs, ndiag, iswap,
- iequa, macins, lvnim1, lx0, lvn, lynl, lyu, lyl, lx1, lx2, lx3,
- lx4, lx5, lx6, lx7, ld0, ld1, ltd, imynl, imvn, lcvn, nsnod,
- nsmat, nsval, icnod, icmat, icval, loutpt, lpol, lzer, irswpf,
- irswpr, icswpf, icswpr, irpt, jcpt, irowno, jcolno, nttbr, nttar,
- lvntmp;
- } tabinf_;
-
- #define tabinf_1 tabinf_
-
- struct {
- doublereal atime, aprog[3], adate, atitle[10], defl, defw, defad, defas,
- rstats[50];
- integer iwidth, lwidth, nopage;
- } miscel_;
-
- #define miscel_1 miscel_
-
- struct {
- doublereal achar, afield[15], oldlin[15];
- integer kntrc, kntlim;
- } line_;
-
- #define line_1 line_
-
- struct {
- integer locate[50], jelcnt[50], nunods, ncnods, numnod, nstop, nut, nlt,
- nxtrm, ndist, ntlin, ibr, numvs, numalt, numcyc;
- } cirdat_;
-
- #define cirdat_1 cirdat_
-
- struct {
- doublereal omega, time, delta, delold[7], ag[7], vt, xni, egfet, xmu,
- sfactr;
- integer mode, modedc, icalc, initf, method, iord, maxord, noncon, iterno,
- itemno, nosolv, modac, ipiv, ivmflg, ipostp, iscrch, iofile;
- } status_;
-
- #define status_1 status_
-
- struct {
- integer iprnta, iprntl, iprntm, iprntn, iprnto, limtim, limpts, lvlcod,
- lvltim, itl1, itl2, itl3, itl4, itl5, itl6, igoof, nogo, keof;
- } flags_;
-
- #define flags_1 flags_
-
- struct {
- doublereal twopi, xlog2, xlog10, root2, rad, boltz, charge, ctok, gmin,
- reltol, abstol, vntol, trtol, chgtol, eps0, epssil, epsox, pivtol,
- pivrel;
- } knstnt_;
-
- #define knstnt_1 knstnt_
-
- struct {
- doublereal tcstar[2], tcstop[2], tcincr[2];
- integer icvflg, itcelm[2], kssop, kinel, kidin, kovar, kidout;
- } dc_;
-
- #define dc_1 dc_
-
- struct {
- doublereal fstart, fstop, fincr, skw2, refprl, spw2;
- integer jacflg, idfreq, inoise, nosprt, nosout, nosin, idist, idprt;
- } ac_;
-
- #define ac_1 ac_
-
- struct {
- doublereal tstep, tstop, tstart, delmax, tdmax, forfre;
- integer jtrflg;
- } tran_;
-
- #define tran_1 tran_
-
- struct {
- doublereal xincr, string[15], xstart, yvar[8];
- integer itab[8], itype[8], ilogy[8], npoint, numout, kntr, numdgt;
- } outinf_;
-
- #define outinf_1 outinf_
-
- struct {
- integer maxtim, itime, icost;
- } cje_;
-
- #define cje_1 cje_
-
- struct {
- integer idebug[20];
- } debug_;
-
- #define debug_1 debug_
-
- struct {
- doublereal value[200000];
- } blank_;
-
- #define blank_1 blank_
-
- /* Table of constant values */
-
- static integer c__20 = 20;
- static integer c__10 = 10;
- static integer c__0 = 0;
- static integer c__1 = 1;
- static integer c_n1 = -1;
- static integer c__72 = 72;
- static integer c__15 = 15;
- static integer c__50 = 50;
- static integer c__2 = 2;
- static integer c__7 = 7;
- static integer c__3 = 3;
- static integer c__6 = 6;
-
- /* spice version 2g.6 sccsid=readin.ma 3/22/83 */
- /*< subroutine readin >*/
- /* Subroutine */ int readin_()
- {
- /* Initialized data */
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_105 = { {'s', 'i', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alssi (*(doublereal *)&equiv_105)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_106 = { {'o', 'f', 'f', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsoff (*(doublereal *)&equiv_106)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_107 = { {'d', 'c', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsdc (*(doublereal *)&equiv_107)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_108 = { {'p', 'w', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alspw (*(doublereal *)&equiv_108)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_109 = { {'z', '0', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsz0 (*(doublereal *)&equiv_109)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_110 = { {'z', 'o', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alszo (*(doublereal *)&equiv_110)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_111 = { {'n', 'l', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsnl (*(doublereal *)&equiv_111)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_112 = { {'f', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsf (*(doublereal *)&equiv_112)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_113 = { {'t', 'd', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alstd (*(doublereal *)&equiv_113)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_114 = { {'l', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsl (*(doublereal *)&equiv_114)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_115 = { {'w', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsw (*(doublereal *)&equiv_115)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_116 = { {'a', 's', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsas (*(doublereal *)&equiv_116)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_117 = { {'a', 'd', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsad (*(doublereal *)&equiv_117)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_118 = { {'p', 'd', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alspd (*(doublereal *)&equiv_118)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_119 = { {'p', 's', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsps (*(doublereal *)&equiv_119)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_120 = { {'n', 'r', 'd', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsrds (*(doublereal *)&equiv_120)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_121 = { {'n', 'r', 's', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsrss (*(doublereal *)&equiv_121)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_122 = { {'x', 'q', 'c', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsxqc (*(doublereal *)&equiv_122)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_123 = { {'z', 'x', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alszx (*(doublereal *)&equiv_123)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_124 = { {'s', 'f', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alssf (*(doublereal *)&equiv_124)
-
- static struct {
- char e_1[32];
- doublereal e_2;
- } equiv_125 = { {'i', 'n', 'p', 'u', 't', ' ', 'l', 'i', 's', 't', 'i'
- , 'n', 'g', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define titinp ((doublereal *)&equiv_125)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_126 = { {'p', 'o', 'l', 'y', ' ', ' ', ' ', ' '}, 0. };
-
- #define apoly (*(doublereal *)&equiv_126)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_127 = { {'i', 'c', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define aic (*(doublereal *)&equiv_127)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_128 = { {'a', 'r', 'e', 'a', ' ', ' ', ' ', ' '}, 0. };
-
- #define area (*(doublereal *)&equiv_128)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_129 = { {'t', 'c', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alstc (*(doublereal *)&equiv_129)
-
- static integer numic[4] = { 1,2,2,3 };
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_130 = { {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define ablnk (*(doublereal *)&equiv_130)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_131 = { {'.', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define aper (*(doublereal *)&equiv_131)
-
- static integer nnods[20] = { 2,2,2,0,2,2,2,2,2,2,2,3,3,4,4,4,4,0,0,0 };
- static integer ntnods[20] = { 2,2,2,0,2,2,2,2,2,2,3,6,5,6,4,4,4,0,0,0 };
- static integer l2nod[24] = { 8,12,14,6,13,14,13,14,11,6,16,36,25,33,6,6,
- 33,0,3,3,3,3,3,3 };
- static integer naidc = 22;
- static struct {
- char e_1[56];
- doublereal e_2;
- } equiv_132 = { {'d', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'n', 'p', 'n'
- , ' ', ' ', ' ', ' ', ' ', 'p', 'n', 'p', ' ', ' ', ' ', ' ',
- ' ', 'n', 'j', 'f', ' ', ' ', ' ', ' ', ' ', 'p', 'j', 'f',
- ' ', ' ', ' ', ' ', ' ', 'n', 'm', 'o', 's', ' ', ' ', ' ',
- ' ', 'p', 'm', 'o', 's', ' ', ' ', ' ', ' '}, 0. };
-
- #define aidm ((doublereal *)&equiv_132)
-
- static integer ipolar[7] = { 0,1,-1,1,-1,1,-1 };
- static integer modid[7] = { 1,2,2,3,3,4,4 };
- static integer ipar[5] = { 0,14,60,72,114 };
- static struct {
- char e_1[912];
- doublereal e_2;
- } equiv_133 = { {'i', 's', ' ', ' ', ' ', ' ', ' ', ' ', 'r', 's', ' '
- , ' ', ' ', ' ', ' ', ' ', 'n', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', 't', 't', ' ', ' ', ' ', ' ', ' ', ' ', 'c', 'j', 'o',
- ' ', ' ', ' ', ' ', ' ', 'v', 'j', ' ', ' ', ' ', ' ', ' ',
- ' ', 'm', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'e', 'g', ' ',
- ' ', ' ', ' ', ' ', ' ', 'x', 't', 'i', ' ', ' ', ' ', ' ',
- ' ', 'k', 'f', ' ', ' ', ' ', ' ', ' ', ' ', 'a', 'f', ' ',
- ' ', ' ', ' ', ' ', ' ', 'f', 'c', ' ', ' ', ' ', ' ', ' ',
- ' ', 'b', 'v', ' ', ' ', ' ', ' ', ' ', ' ', 'i', 'b', 'v',
- ' ', ' ', ' ', ' ', ' ', 'i', 's', ' ', ' ', ' ', ' ', ' ',
- ' ', 'b', 'f', ' ', ' ', ' ', ' ', ' ', ' ', 'n', 'f', ' ',
- ' ', ' ', ' ', ' ', ' ', 'v', 'a', 'f', ' ', ' ', ' ', ' ',
- ' ', 'i', 'k', 'f', ' ', ' ', ' ', ' ', ' ', 'i', 's', 'e',
- ' ', ' ', ' ', ' ', ' ', 'n', 'e', ' ', ' ', ' ', ' ', ' ',
- ' ', 'b', 'r', ' ', ' ', ' ', ' ', ' ', ' ', 'n', 'r', ' ',
- ' ', ' ', ' ', ' ', ' ', 'v', 'a', 'r', ' ', ' ', ' ', ' ',
- ' ', 'i', 'k', 'r', ' ', ' ', ' ', ' ', ' ', 'i', 's', 'c',
- ' ', ' ', ' ', ' ', ' ', 'n', 'c', ' ', ' ', ' ', ' ', ' ',
- ' ', '0', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '0', ' ', ' ',
- ' ', ' ', ' ', ' ', ' ', 'r', 'b', ' ', ' ', ' ', ' ', ' ',
- ' ', 'i', 'r', 'b', ' ', ' ', ' ', ' ', ' ', 'r', 'b', 'm',
- ' ', ' ', ' ', ' ', ' ', 'r', 'e', ' ', ' ', ' ', ' ', ' ',
- ' ', 'r', 'c', ' ', ' ', ' ', ' ', ' ', ' ', 'c', 'j', 'e',
- ' ', ' ', ' ', ' ', ' ', 'v', 'j', 'e', ' ', ' ', ' ', ' ',
- ' ', 'm', 'j', 'e', ' ', ' ', ' ', ' ', ' ', 't', 'f', ' ',
- ' ', ' ', ' ', ' ', ' ', 'x', 't', 'f', ' ', ' ', ' ', ' ',
- ' ', 'v', 't', 'f', ' ', ' ', ' ', ' ', ' ', 'i', 't', 'f',
- ' ', ' ', ' ', ' ', ' ', 'p', 't', 'f', ' ', ' ', ' ', ' ',
- ' ', 'c', 'j', 'c', ' ', ' ', ' ', ' ', ' ', 'v', 'j', 'c',
- ' ', ' ', ' ', ' ', ' ', 'm', 'j', 'c', ' ', ' ', ' ', ' ',
- ' ', 'x', 'c', 'j', 'c', ' ', ' ', ' ', ' ', 't', 'r', ' ',
- ' ', ' ', ' ', ' ', ' ', '0', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', '0', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '0', ' ', ' ',
- ' ', ' ', ' ', ' ', ' ', '0', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', 'c', 'j', 's', ' ', ' ', ' ', ' ', ' ', 'v', 'j', 's',
- ' ', ' ', ' ', ' ', ' ', 'm', 'j', 's', ' ', ' ', ' ', ' ',
- ' ', 'x', 't', 'b', ' ', ' ', ' ', ' ', ' ', 'e', 'g', ' ',
- ' ', ' ', ' ', ' ', ' ', 'x', 't', 'i', ' ', ' ', ' ', ' ',
- ' ', 'k', 'f', ' ', ' ', ' ', ' ', ' ', ' ', 'a', 'f', ' ',
- ' ', ' ', ' ', ' ', ' ', 'f', 'c', ' ', ' ', ' ', ' ', ' ',
- ' ', 'v', 't', 'o', ' ', ' ', ' ', ' ', ' ', 'b', 'e', 't',
- 'a', ' ', ' ', ' ', ' ', 'l', 'a', 'm', 'b', 'd', 'a', ' ',
- ' ', 'r', 'd', ' ', ' ', ' ', ' ', ' ', ' ', 'r', 's', ' ',
- ' ', ' ', ' ', ' ', ' ', 'c', 'g', 's', ' ', ' ', ' ', ' ',
- ' ', 'c', 'g', 'd', ' ', ' ', ' ', ' ', ' ', 'p', 'b', ' ',
- ' ', ' ', ' ', ' ', ' ', 'i', 's', ' ', ' ', ' ', ' ', ' ',
- ' ', 'k', 'f', ' ', ' ', ' ', ' ', ' ', ' ', 'a', 'f', ' ',
- ' ', ' ', ' ', ' ', ' ', 'f', 'c', ' ', ' ', ' ', ' ', ' ',
- ' ', 'l', 'e', 'v', 'e', 'l', ' ', ' ', ' ', 'v', 't', 'o',
- ' ', ' ', ' ', ' ', ' ', 'k', 'p', ' ', ' ', ' ', ' ', ' ',
- ' ', 'g', 'a', 'm', 'm', 'a', ' ', ' ', ' ', 'p', 'h', 'i',
- ' ', ' ', ' ', ' ', ' ', 'l', 'a', 'm', 'b', 'd', 'a', ' ',
- ' ', 'r', 'd', ' ', ' ', ' ', ' ', ' ', ' ', 'r', 's', ' ',
- ' ', ' ', ' ', ' ', ' ', 'c', 'b', 'd', ' ', ' ', ' ', ' ',
- ' ', 'c', 'b', 's', ' ', ' ', ' ', ' ', ' ', 'i', 's', ' ',
- ' ', ' ', ' ', ' ', ' ', 'p', 'b', ' ', ' ', ' ', ' ', ' ',
- ' ', 'c', 'g', 's', 'o', ' ', ' ', ' ', ' ', 'c', 'g', 'd',
- 'o', ' ', ' ', ' ', ' ', 'c', 'g', 'b', 'o', ' ', ' ', ' ',
- ' ', 'r', 's', 'h', ' ', ' ', ' ', ' ', ' ', 'c', 'j', ' ',
- ' ', ' ', ' ', ' ', ' ', 'm', 'j', ' ', ' ', ' ', ' ', ' ',
- ' ', 'c', 'j', 's', 'w', ' ', ' ', ' ', ' ', 'm', 'j', 's',
- 'w', ' ', ' ', ' ', ' ', 'j', 's', ' ', ' ', ' ', ' ', ' ',
- ' ', 't', 'o', 'x', ' ', ' ', ' ', ' ', ' ', 'n', 's', 'u',
- 'b', ' ', ' ', ' ', ' ', 'n', 's', 's', ' ', ' ', ' ', ' ',
- ' ', 'n', 'f', 's', ' ', ' ', ' ', ' ', ' ', 't', 'p', 'g',
- ' ', ' ', ' ', ' ', ' ', 'x', 'j', ' ', ' ', ' ', ' ', ' ',
- ' ', 'l', 'd', ' ', ' ', ' ', ' ', ' ', ' ', 'u', 'o', ' ',
- ' ', ' ', ' ', ' ', ' ', 'u', 'c', 'r', 'i', 't', ' ', ' ',
- ' ', 'u', 'e', 'x', 'p', ' ', ' ', ' ', ' ', 'u', 't', 'r',
- 'a', ' ', ' ', ' ', ' ', 'v', 'm', 'a', 'x', ' ', ' ', ' ',
- ' ', 'n', 'e', 'f', 'f', ' ', ' ', ' ', ' ', 'x', 'q', 'c',
- ' ', ' ', ' ', ' ', ' ', 'k', 'f', ' ', ' ', ' ', ' ', ' ',
- ' ', 'a', 'f', ' ', ' ', ' ', ' ', ' ', ' ', 'f', 'c', ' ',
- ' ', ' ', ' ', ' ', ' ', 'd', 'e', 'l', 't', 'a', ' ', ' ',
- ' ', 't', 'h', 'e', 't', 'a', ' ', ' ', ' ', 'e', 't', 'a',
- ' ', ' ', ' ', ' ', ' ', 'k', 'a', 'p', 'p', 'a', ' ', ' ',
- ' '}, 0. };
-
- #define ampar ((doublereal *)&equiv_133)
-
- static struct {
- char e_1[176];
- doublereal e_2;
- } equiv_134 = { {'a', 'c', ' ', ' ', ' ', ' ', ' ', ' ', 'd', 'c', ' '
- , ' ', ' ', ' ', ' ', ' ', 'd', 'i', 's', 't', 'o', 'r', 't',
- 'i', 'e', 'n', 'd', ' ', ' ', ' ', ' ', ' ', 'e', 'n', 'd',
- 's', ' ', ' ', ' ', ' ', 'f', 'o', 'u', 'r', 'i', 'e', 'r',
- ' ', 'm', 'o', 'd', 'e', 'l', ' ', ' ', ' ', 'n', 'o', 'i',
- 's', 'e', ' ', ' ', ' ', 'o', 'p', ' ', ' ', ' ', ' ', ' ',
- ' ', 'o', 'p', 't', 'i', 'o', 'n', 's', ' ', 'p', 'l', 'o',
- 't', ' ', ' ', ' ', ' ', 'p', 'r', 'i', 'n', 't', ' ', ' ',
- ' ', 's', 'u', 'b', 'c', 'k', 't', ' ', ' ', 's', 'e', 'n',
- 's', 'i', 't', 'i', 'v', 't', 'r', 'a', 'n', 's', 'i', 'e',
- 'n', 't', 'f', ' ', ' ', ' ', ' ', ' ', ' ', 't', 'e', 'm',
- 'p', 'e', 'r', 'a', 't', 'w', 'i', 'd', 't', 'h', ' ', ' ',
- ' ', 'n', 'o', 'd', 'e', 's', 'e', 't', ' ', 'i', 'c', ' ',
- ' ', ' ', ' ', ' ', ' ', ':', 'd', 'e', 'b', 'u', 'g', ':',
- ' ', 'a', 'l', 't', 'e', 'r', ' ', ' ', ' '}, 0. };
-
- #define aidc ((doublereal *)&equiv_134)
-
- static struct {
- char e_1[136];
- doublereal e_2;
- char e_3[8];
- doublereal e_4;
- } equiv_135 = { {'r', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'c', ' ', ' '
- , ' ', ' ', ' ', ' ', ' ', 'l', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', 'k', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'g', ' ', ' ',
- ' ', ' ', ' ', ' ', ' ', 'e', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', 'f', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'h', ' ', ' ',
- ' ', ' ', ' ', ' ', ' ', 'v', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', 'i', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'd', ' ', ' ',
- ' ', ' ', ' ', ' ', ' ', 'q', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', 'j', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'm', ' ', ' ',
- ' ', ' ', ' ', ' ', ' ', 's', ' ', ' ', ' ', ' ', ' ', ' ',
- ' ', 'y', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 't', ' ', ' ',
- ' ', ' ', ' ', ' ', ' '}, 0., {'x', ' ', ' ', ' ', ' ', ' ',
- ' ', ' '}, 0. };
-
- #define aide ((doublereal *)&equiv_135)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_136 = { {'a', 'c', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsac (*(doublereal *)&equiv_136)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_137 = { {'p', 'u', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alspu (*(doublereal *)&equiv_137)
-
- static struct {
- char e_1[8];
- doublereal e_2;
- } equiv_138 = { {'e', 'x', ' ', ' ', ' ', ' ', ' ', ' '}, 0. };
-
- #define alsex (*(doublereal *)&equiv_138)
-
-
- /* Format strings */
- static char fmt_6[] = "(\0020warning: input line-width set to 72 column\
- s because\002,/1x,\002possible sequencing appears in cols 73-80\002)";
- static char fmt_86[] = "(\0020warning: above line not allowed within su\
- bcircuit -- \002,\002ignored\002/)";
- static char fmt_91[] = "(\0020*error*: unknown data card: \002,a8/)";
- static char fmt_96[] = "(\0020*error*: unrecognizable data card\002/)";
- static char fmt_141[] = "(\0020warning: coefficient of coupling reset t\
- o 1.0d0\002/)";
- static char fmt_379[] = "(\0020*error*: z0 must be specified\002/)";
- static char fmt_381[] = "(\0020*error*: either td or f must be specifie\
- d\002/)";
- static char fmt_391[] = "(\0020*error*: element type not yet implemente\
- d\002/)";
- static char fmt_401[] =
- "(\0020*error*: negative node number found\002/)";
- static char fmt_411[] = "(\0020*error*: node numbers are missing\002/)";
- static char fmt_421[] = "(\0020*error*: value is missing or is nonposit\
- ive\002/)";
- static char fmt_431[] = "(\0020*error*: mutual inductance references ar\
- e missing\002/)";
- static char fmt_441[] = "(\0020*error*: model name is missing\002/)";
- static char fmt_451[] = "(\0020*error*: unknown source function: \002,\
- a8)";
- static char fmt_461[] = "(\0020*error*: unknown parameter: \002,a8/)";
- static char fmt_471[] = "(\0020*error*: voltage source not found on abo\
- ve line\002/)";
- static char fmt_481[] = "(\0020*error*: value is zero\002/)";
- static char fmt_491[] = "(\0020*error*: extra numerical data on mosfet \
- card\002/)";
- static char fmt_651[] = "(\0020*error*: model type is missing\002/)";
- static char fmt_661[] = "(\0020*error*: unknown model type: \002,a8/)";
- static char fmt_671[] = "(\0020*error*: unknown model parameter: \002,\
- a8,/)";
- static char fmt_761[] = "(\0020*error*: subcircuit definition duplicate\
- s node \002,i5,/)";
- static char fmt_771[] = "(\0020*error*: nonpositive node number found i\
- n subcircuit \002,\002definition\002/)";
- static char fmt_781[] = "(\0020*error*: subcircuit name missing\002/)";
- static char fmt_791[] = "(\0020*error*: subcircuit nodes missing\002/)";
- static char fmt_881[] = "(\0020*error*: unknown subcircuit name: \002,\
- a8/)";
- static char fmt_891[] = "(\0020warning: no subcircuit definition known \
- -- line ignored\002/)";
- static char fmt_991[] = "(\0020*error*: subcircuit name missing\002/)";
- static char fmt_5001[] = "(\0020*error*: .ends card missing\002/)";
-
- /* System generated locals */
- integer i_1, i_2;
-
- /* Builtin functions */
- integer s_wsfe(), e_wsfe(), do_fio();
-
- /* Local variables */
- extern /* Subroutine */ int card_();
- static doublereal anam;
- static integer ifld;
- extern /* Subroutine */ int find_();
- static integer ltab;
- static doublereal aval;
- static integer ndim, nmat;
- extern /* Subroutine */ int move_();
- static integer locv, iknt, lnod, loct, ibit, locm, ipol, node, irel;
- extern /* Subroutine */ int getm4_(), getm8_(), copy8_(), zero4_(),
- zero8_();
- static integer i;
- static doublereal t1;
- extern /* Subroutine */ int title_();
- static integer istop, ispot, icloc;
- static doublereal tfreq;
- static integer jtype, nopar;
- extern doublereal alias_();
- static doublereal anams, t2;
- static integer id;
- static doublereal xk;
- #define nodplc ((integer *)&blank_1)
- #define cvalue ((complex *)&blank_1)
- extern /* Subroutine */ int second_(), getlin_(), keysrc_(), runcon_();
- static integer loc;
- extern /* Subroutine */ int extmem_(), extnam_();
- static integer nssnod, maxknt;
- static doublereal xnl;
- extern /* Subroutine */ int relmem_(), clrmem_();
-
- /* Fortran I/O blocks */
- static cilist io__47 = { 0, 0, 0, fmt_6, 0 };
- static cilist io__50 = { 0, 0, 0, fmt_86, 0 };
- static cilist io__51 = { 0, 0, 0, fmt_91, 0 };
- static cilist io__52 = { 0, 0, 0, fmt_96, 0 };
- static cilist io__61 = { 0, 0, 0, fmt_141, 0 };
- static cilist io__74 = { 0, 0, 0, fmt_379, 0 };
- static cilist io__75 = { 0, 0, 0, fmt_381, 0 };
- static cilist io__76 = { 0, 0, 0, fmt_391, 0 };
- static cilist io__77 = { 0, 0, 0, fmt_401, 0 };
- static cilist io__78 = { 0, 0, 0, fmt_411, 0 };
- static cilist io__79 = { 0, 0, 0, fmt_421, 0 };
- static cilist io__80 = { 0, 0, 0, fmt_431, 0 };
- static cilist io__81 = { 0, 0, 0, fmt_441, 0 };
- static cilist io__82 = { 0, 0, 0, fmt_451, 0 };
- static cilist io__83 = { 0, 0, 0, fmt_461, 0 };
- static cilist io__84 = { 0, 0, 0, fmt_471, 0 };
- static cilist io__85 = { 0, 0, 0, fmt_481, 0 };
- static cilist io__86 = { 0, 0, 0, fmt_491, 0 };
- static cilist io__90 = { 0, 0, 0, fmt_651, 0 };
- static cilist io__91 = { 0, 0, 0, fmt_661, 0 };
- static cilist io__92 = { 0, 0, 0, fmt_671, 0 };
- static cilist io__94 = { 0, 0, 0, fmt_761, 0 };
- static cilist io__95 = { 0, 0, 0, fmt_771, 0 };
- static cilist io__96 = { 0, 0, 0, fmt_781, 0 };
- static cilist io__97 = { 0, 0, 0, fmt_791, 0 };
- static cilist io__100 = { 0, 0, 0, fmt_881, 0 };
- static cilist io__101 = { 0, 0, 0, fmt_891, 0 };
- static cilist io__102 = { 0, 0, 0, fmt_991, 0 };
- static cilist io__103 = { 0, 0, 0, fmt_5001, 0 };
-
-
- /*< implicit double precision (a-h,o-z) >*/
-
-
- /* this routine drives the input processing of spice. element cards
- */
- /* and device models are handled by this routine. */
-
- /* spice version 2g.6 sccsid=tabinf 3/15/83 */
- /*< common /tabinf/ ielmnt,isbckt,nsbckt,iunsat,nunsat,itemps,numtem, >*/
- /*< 1 isens,nsens,ifour,nfour,ifield,icode,idelim,icolum,insize, >*/
- /*< 2 junode,lsbkpt,numbkp,iorder,jmnode,iur,iuc,ilc,ilr,numoff,isr, >*/
- /*< 3 nmoffc,iseq,iseq1,neqn,nodevs,ndiag,iswap,iequa,macins,lvnim1, >*/
- /*< 4 lx0,lvn,lynl,lyu,lyl,lx1,lx2,lx3,lx4,lx5,lx6,lx7,ld0,ld1,ltd, >*/
- /*< 5 imynl,imvn,lcvn,nsnod,nsmat,nsval,icnod,icmat,icval, >*/
- /*< 6 loutpt,lpol,lzer,irswpf,irswpr,icswpf,icswpr,irpt,jcpt, >*/
- /*< 7 irowno,jcolno,nttbr,nttar,lvntmp >*/
- /* spice version 2g.6 sccsid=miscel 3/15/83 */
- /*< common /miscel/ atime,aprog(3),adate,atitle(10),defl,defw,defad, >*/
- /*< 1 defas,rstats(50),iwidth,lwidth,nopage >*/
- /* spice version 2g.6 sccsid=line 3/15/83 */
- /*< common /line/ achar,afield(15),oldlin(15),kntrc,kntlim >*/
- /* spice version 2g.6 sccsid=cirdat 3/15/83 */
- /*< common /cirdat/ locate(50),jelcnt(50),nunods,ncnods,numnod,nstop, >*/
- /*< 1 nut,nlt,nxtrm,ndist,ntlin,ibr,numvs,numalt,numcyc >*/
- /* spice version 2g.6 sccsid=status 3/15/83 */
- /*< common /status/ omega,time,delta,delold(7),ag(7),vt,xni,egfet, >*/
- /*< 1 xmu,sfactr,mode,modedc,icalc,initf,method,iord,maxord,noncon, >*/
- /*< 2 iterno,itemno,nosolv,modac,ipiv,ivmflg,ipostp,iscrch,iofile >*/
- /* spice version 2g.6 sccsid=flags 3/15/83 */
- /*< common /flags/ iprnta,iprntl,iprntm,iprntn,iprnto,limtim,limpts, >*/
- /*< 1 lvlcod,lvltim,itl1,itl2,itl3,itl4,itl5,itl6,igoof,nogo,keof >*/
- /* spice version 2g.6 sccsid=knstnt 3/15/83 */
- /*< common /knstnt/ twopi,xlog2,xlog10,root2,rad,boltz,charge,ctok, >*/
- /*< 1 gmin,reltol,abstol,vntol,trtol,chgtol,eps0,epssil,epsox, >*/
- /*< 2 pivtol,pivrel >*/
- /* spice version 2g.6 sccsid=dc 3/15/83 */
- /*< common /dc/ tcstar(2),tcstop(2),tcincr(2),icvflg,itcelm(2),kssop, >*/
- /*< 1 kinel,kidin,kovar,kidout >*/
- /* spice version 2g.6 sccsid=ac 3/15/83 */
- /*< common /ac/ fstart,fstop,fincr,skw2,refprl,spw2,jacflg,idfreq, >*/
- /*< 1 inoise,nosprt,nosout,nosin,idist,idprt >*/
- /* spice version 2g.6 sccsid=tran 3/15/83 */
- /*< common /tran/ tstep,tstop,tstart,delmax,tdmax,forfre,jtrflg >*/
- /* spice version 2g.6 sccsid=outinf 3/15/83 */
- /*< common /outinf/ xincr,string(15),xstart,yvar(8),itab(8),itype(8), >*/
- /*< 1 ilogy(8),npoint,numout,kntr,numdgt >*/
- /* spice version 2g.6 sccsid=cje 3/15/83 */
- /*< common /cje/ maxtim,itime,icost >*/
- /* spice version 2g.6 sccsid=debug 3/15/83 */
- /*< common/debug/ idebug(20) >*/
- /* spice version 2g.6 sccsid=blank 3/15/83 */
- /*< common /blank/ value(200000) >*/
- /*< integer nodplc(64) >*/
- /*< complex cvalue(32) >*/
- /*< equivalence (value(1),nodplc(1),cvalue(1)) >*/
-
- /* control card identifiers */
-
- /*< dimension aide(20),nnods(20),ntnods(20),l2nod(24) >*/
- /*< dimension numic(4) >*/
- /*< dimension aidm(7),ipolar(7),modid(7),ipar(5),ampar(115) >*/
- /*< dimension titinp(4) >*/
- /*< dimension aidc(22) >*/
- /*< data titinp / 8hinput li, 8hsting , 8h , 8h / >*/
- /*< data naidc / 22 / >*/
- /*< data aidc / 8hac , 8hdc , 8hdistorti, 8hend , >*/
- /*< 1 8hends , 8hfourier , 8hmodel , 8hnoise , >*/
- /*< 2 8hop , 8hoptions , 8hplot , 8hprint , >*/
- /*< 3 8hsubckt , 8hsensitiv, 8htransien, 8htf , >*/
- /*< 4 8htemperat, 8hwidth , 8hnodeset , 8hic , >*/
- /*< 5 8h:debug: , 8halter / >*/
-
- /* element card identifiers, keywords, and information */
-
- /*< data aide / 1hr,1hc,1hl,1hk,1hg,1he,1hf,1hh,1hv,1hi,1hd,1hq,1hj, >*/
- /*< 1 1hm,1hs,1hy,1ht,0.0d0,1hx,0.0d0 / >*/
- /*< data alsac,alspu,alsex,alssi /2hac,2hpu,2hex,2hsi/ >*/
- /*< data alsoff,alsdc,alspw / 3hoff,2hdc,3hpw / >*/
- /*< data alsz0,alszo,alsnl,alsf,alstd / 2hz0,2hzo,2hnl,1hf,2htd / >*/
- /*< data alsl,alsw,alsas,alsad,alspd,alsps,alsrds,alsrss,alsxqc >*/
- /*< 1 /1hl,1hw,2has,2had,2hpd,2hps,3hnrd,3hnrs,3hxqc/ >*/
- /*< data alszx /2hzx/ >*/
- /*< data alssf / 4hsf / >*/
- /*< data apoly, aic, area / 4hpoly, 2hic, 4harea / >*/
- /*< data alstc / 2htc / >*/
- /*< data numic / 1, 2, 2, 3 / >*/
- /*< data ablnk, aper / 1h , 1h. / >*/
- /*< data nnods / 2,2,2,0,2,2,2,2,2,2,2,3,3,4,4,4,4,0,0,0 / >*/
- /*< data ntnods / 2,2,2,0,2,2,2,2,2,2,3,6,5,6,4,4,4,0,0,0 / >*/
- /*< data l2nod / 8,12,14, 6,13,14,13,14,11, 6, >*/
- /*< 1 16,36,25,33, 6, 6,33, 0, 3, 3, >*/
- /*< 2 3, 3, 3, 3 / >*/
-
- /* model card keywords */
-
- /*< data aidm /1hd,3hnpn,3hpnp,3hnjf,3hpjf,4hnmos,4hpmos/ >*/
- /*< data ipolar /0,1,-1,1,-1,1,-1/ >*/
- /*< data modid /1,2,2,3,3,4,4/ >*/
- /*< data ipar / 0, 14, 60, 72, 114/ >*/
- /*< data ampar / >*/
- /*< 1 6his ,6hrs ,6hn ,6htt ,6hcjo ,6hvj ,6hm , >*/
- /*< 2 6heg ,6hxti ,6hkf ,6haf ,6hfc ,6hbv ,6hibv , >*/
- /*< 1 6his ,6hbf ,6hnf ,6hvaf ,6hikf ,6hise ,6hne , >*/
- /*< 2 6hbr ,6hnr ,6hvar ,6hikr ,6hisc ,6hnc ,6h0 , >*/
- /*< 3 6h0 ,6hrb ,6hirb ,6hrbm ,6hre ,6hrc ,6hcje , >*/
- /*< 4 6hvje ,6hmje ,6htf ,6hxtf ,6hvtf ,6hitf ,6hptf , >*/
- /*< 5 6hcjc ,6hvjc ,6hmjc ,6hxcjc ,6htr ,6h0 ,6h0 , >*/
- /*< 6 6h0 ,6h0 ,6hcjs ,6hvjs ,6hmjs ,6hxtb ,6heg , >*/
- /*< 7 6hxti ,6hkf ,6haf ,6hfc , >*/
- /*< 1 6hvto ,6hbeta ,6hlambda,6hrd ,6hrs ,6hcgs ,6hcgd , >*/
- /*< 2 6hpb ,6his ,6hkf ,6haf ,6hfc , >*/
- /*< 1 6hlevel ,6hvto ,6hkp ,6hgamma ,6hphi ,6hlambda,6hrd , >*/
- /*< 2 6hrs ,6hcbd ,6hcbs ,6his ,6hpb ,6hcgso ,6hcgdo , >*/
- /*< 3 6hcgbo ,6hrsh ,6hcj ,6hmj ,6hcjsw ,6hmjsw ,6hjs , >*/
- /*< 4 6htox ,6hnsub ,6hnss ,6hnfs ,6htpg ,6hxj ,6hld , >*/
- /*< 5 6huo ,6hucrit ,6huexp ,6hutra ,6hvmax ,6hneff ,6hxqc , >*/
- /*< 6 6hkf ,6haf ,6hfc ,6hdelta ,6htheta ,6heta ,6hkappa , >*/
- /*< 7 0.0d0 / >*/
-
- /* initialize variables */
-
- /*< call second(t1) >*/
- second_(&t1);
- /*< call zero4(idebug,20) >*/
- zero4_(debug_1.idebug, &c__20);
- /*< call getlin >*/
- getlin_();
- /*< if (keof.ne.0) go to 6000 >*/
- if (flags_1.keof != 0) {
- goto L6000;
- }
- /*< call copy8(afield,atitle,10) >*/
- copy8_(line_1.afield, miscel_1.atitle, &c__10);
- /*< call getm4(ielmnt,0) >*/
- getm4_(&tabinf_1.ielmnt, &c__0);
- /*< call getm8(itemps,1) >*/
- getm8_(&tabinf_1.itemps, &c__1);
- /*< value(itemps+1)=27.0d0 >*/
- blank_1.value[tabinf_1.itemps] = 27.;
- /*< itemno=1 >*/
- status_1.itemno = 1;
- /*< nopage=0 >*/
- miscel_1.nopage = 0;
- /*< call title(-1,72,1,titinp) >*/
- title_(&c_n1, &c__72, &c__1, titinp);
- /*< iwidth=80 >*/
- miscel_1.iwidth = 80;
- /*< do 5 i=1,8 >*/
- for (i = 1; i <= 8; ++i) {
- /*< achar=ablnk >*/
- line_1.achar = ablnk;
- /*< call move(achar,1,atitle(10),i,1) >*/
- move_(&line_1.achar, &c__1, &miscel_1.atitle[9], &i, &c__1);
- /*< if(achar.eq.ablnk) go to 8 >*/
- if (line_1.achar == ablnk) {
- goto L8;
- }
- /*< 5 continue >*/
- /* L5: */
- }
- /*< write(iofile,6) >*/
- io__47.ciunit = status_1.iofile;
- s_wsfe(&io__47);
- e_wsfe();
- /*< 6 format('0warning: input line-width set to 72 columns because',/ >*/
- /*< 11x,'possible sequencing appears in cols 73-80') >*/
- /*< iwidth=72 >*/
- miscel_1.iwidth = 72;
- /*< 8 do 10 i=1,15 >*/
- L8:
- for (i = 1; i <= 15; ++i) {
- /*< afield(i)=ablnk >*/
- line_1.afield[i - 1] = ablnk;
- /*< 10 continue >*/
- /* L10: */
- }
- /*< call copy8(afield,oldlin,15) >*/
- copy8_(line_1.afield, line_1.oldlin, &c__15);
- /*< call getm4(isbckt,0) >*/
- getm4_(&tabinf_1.isbckt, &c__0);
- /*< nsbckt=0 >*/
- tabinf_1.nsbckt = 0;
- /*< call getm8(iunsat,0) >*/
- getm8_(&tabinf_1.iunsat, &c__0);
- /*< nunsat=0 >*/
- tabinf_1.nunsat = 0;
- /*< numalt=0 >*/
- cirdat_1.numalt = 0;
- /*< numcyc=0 >*/
- cirdat_1.numcyc = 0;
- /*< lwidth=132 >*/
- miscel_1.lwidth = 132;
- /*< iprnta=0 >*/
- flags_1.iprnta = 0;
- /*< iprntl=0 >*/
- flags_1.iprntl = 0;
- /*< iprntm=1 >*/
- flags_1.iprntm = 1;
- /*< iprntn=0 >*/
- flags_1.iprntn = 0;
- /*< iprnto=0 >*/
- flags_1.iprnto = 0;
- /*< gmin=1.0d-12 >*/
- knstnt_1.gmin = 1e-12;
- /*< pivtol=1.0d-13 >*/
- knstnt_1.pivtol = 1e-13;
- /*< pivrel=1.0d-3 >*/
- knstnt_1.pivrel = .001;
- /*< reltol=0.001d0 >*/
- knstnt_1.reltol = .001;
- /*< abstol=1.0d-12 >*/
- knstnt_1.abstol = 1e-12;
- /*< vntol=1.0d-6 >*/
- knstnt_1.vntol = 1e-6;
- /*< trtol=7.0d0 >*/
- knstnt_1.trtol = 7.;
- /*< chgtol=1.0d-14 >*/
- knstnt_1.chgtol = 1e-14;
- /*< defl=1.0d-4 >*/
- miscel_1.defl = 1e-4;
- /*< defw=1.0d-4 >*/
- miscel_1.defw = 1e-4;
- /*< defad=0.0d0 >*/
- miscel_1.defad = 0.;
- /*< defas=0.0d0 >*/
- miscel_1.defas = 0.;
- /*< numdgt=4 >*/
- outinf_1.numdgt = 4;
- /*< numtem=1 >*/
- tabinf_1.numtem = 1;
- /*< itl1=100 >*/
- flags_1.itl1 = 100;
- /*< itl2=50 >*/
- flags_1.itl2 = 50;
- /*< itl3=4 >*/
- flags_1.itl3 = 4;
- /*< itl4=10 >*/
- flags_1.itl4 = 10;
- /*< itl5=5000 >*/
- flags_1.itl5 = 5000;
- /*< itl6=0 >*/
- flags_1.itl6 = 0;
- /*< limtim=2 >*/
- flags_1.limtim = 2;
- /*< limpts=201 >*/
- flags_1.limpts = 201;
- /*< lvlcod=1 >*/
- flags_1.lvlcod = 1;
- /*< lvltim=2 >*/
- flags_1.lvltim = 2;
- /*< method=1 >*/
- status_1.method = 1;
- /*< xmu=0.5d0 >*/
- status_1.xmu = .5;
- /*< maxord=2 >*/
- status_1.maxord = 2;
- /*< nosolv=0 >*/
- status_1.nosolv = 0;
- /*< icvflg=0 >*/
- dc_1.icvflg = 0;
- /*< itcelm(2)=0 >*/
- dc_1.itcelm[1] = 0;
- /*< idist=0 >*/
- ac_1.idist = 0;
- /*< idprt=0 >*/
- ac_1.idprt = 0;
- /*< inoise=0 >*/
- ac_1.inoise = 0;
- /*< jacflg=0 >*/
- ac_1.jacflg = 0;
- /*< jtrflg=0 >*/
- tran_1.jtrflg = 0;
- /*< call getm4(ifour,0) >*/
- getm4_(&tabinf_1.ifour, &c__0);
- /*< nfour=0 >*/
- tabinf_1.nfour = 0;
- /*< call getm4(nsnod,0) >*/
- getm4_(&tabinf_1.nsnod, &c__0);
- /*< call getm8(nsval,0) >*/
- getm8_(&tabinf_1.nsval, &c__0);
- /*< call getm4(icnod,0) >*/
- getm4_(&tabinf_1.icnod, &c__0);
- /*< call getm8(icval,0) >*/
- getm8_(&tabinf_1.icval, &c__0);
- /*< kinel=0 >*/
- dc_1.kinel = 0;
- /*< kovar=0 >*/
- dc_1.kovar = 0;
- /*< kssop=0 >*/
- dc_1.kssop = 0;
- /*< nosprt=0 >*/
- ac_1.nosprt = 0;
- /*< nsens=0 >*/
- tabinf_1.nsens = 0;
- /*< call getm4(isens,0) >*/
- getm4_(&tabinf_1.isens, &c__0);
- /*< numnod=0 >*/
- cirdat_1.numnod = 0;
- /*< ncnods=0 >*/
- cirdat_1.ncnods = 0;
- /*< nunods=0 >*/
- cirdat_1.nunods = 0;
- /*< call zero4(locate,50) >*/
- zero4_(cirdat_1.locate, &c__50);
- /*< call zero4(jelcnt,50) >*/
- zero4_(cirdat_1.jelcnt, &c__50);
- /*< insize=50 >*/
- tabinf_1.insize = 50;
- /*< call getm8(ifield,insize) >*/
- getm8_(&tabinf_1.ifield, &tabinf_1.insize);
- /*< call getm4(icode,insize) >*/
- getm4_(&tabinf_1.icode, &tabinf_1.insize);
- /*< call getm8(idelim,insize) >*/
- getm8_(&tabinf_1.idelim, &tabinf_1.insize);
- /*< call getm4(icolum,insize) >*/
- getm4_(&tabinf_1.icolum, &tabinf_1.insize);
- /*< go to 50 >*/
- goto L50;
-
- /* error entry */
-
- /*< 40 nogo=1 >*/
- L40:
- flags_1.nogo = 1;
-
- /* read and decode next card in input deck */
-
- /*< 50 igoof=0 >*/
- L50:
- flags_1.igoof = 0;
- /*< call card >*/
- card_();
- /*< if (keof.ne.0) go to 5000 >*/
- if (flags_1.keof != 0) {
- goto L5000;
- }
- /*< if (igoof.ne.0) go to 40 >*/
- if (flags_1.igoof != 0) {
- goto L40;
- }
- /*< if (nodplc(icode+1).eq.0) go to 95 >*/
- if (nodplc[tabinf_1.icode] == 0) {
- goto L95;
- }
- /*< anam=value(ifield+1) >*/
- anam = blank_1.value[tabinf_1.ifield];
- /*< call move(anam,2,ablnk,1,7) >*/
- move_(&anam, &c__2, &ablnk, &c__1, &c__7);
- /*< if (anam.ne.aper) go to 70 >*/
- if (anam != aper) {
- goto L70;
- }
- /*< call move(anam,1,value(ifield+1),2,7) >*/
- move_(&anam, &c__1, &blank_1.value[tabinf_1.ifield], &c__2, &c__7);
- /*< call keysrc(aidc,naidc,anam,id) >*/
- keysrc_(aidc, &naidc, &anam, &id);
- /*< if (id.le.0) go to 90 >*/
- if (id <= 0) {
- goto L90;
- }
- /*< if (id.eq.4) go to 5000 >*/
- if (id == 4) {
- goto L5000;
- }
- /*< if (id.eq.5) go to 800 >*/
- if (id == 5) {
- goto L800;
- }
- /*< if (id.eq.7) go to 500 >*/
- if (id == 7) {
- goto L500;
- }
- /*< if (id.eq.13) go to 700 >*/
- if (id == 13) {
- goto L700;
- }
- /*< if (id.eq.22) numalt=numalt+1 >*/
- if (id == 22) {
- ++cirdat_1.numalt;
- }
- /*< if (nsbckt.ge.1) go to 85 >*/
- if (tabinf_1.nsbckt >= 1) {
- goto L85;
- }
- /*< if (id.ne.22) call runcon(id) >*/
- if (id != 22) {
- runcon_(&id);
- }
- /*< if (igoof.ne.0) go to 40 >*/
- if (flags_1.igoof != 0) {
- goto L40;
- }
- /*< go to 50 >*/
- goto L50;
- /*< 70 id=0 >*/
- L70:
- id = 0;
- /*< 80 id=id+1 >*/
- L80:
- ++id;
- /*< if (id.gt.20) go to 90 >*/
- if (id > 20) {
- goto L90;
- }
- /*< if (anam.eq.aide(id)) go to 100 >*/
- if (anam == aide[id - 1]) {
- goto L100;
- }
- /*< go to 80 >*/
- goto L80;
- /*< 85 write (iofile,86) >*/
- L85:
- io__50.ciunit = status_1.iofile;
- s_wsfe(&io__50);
- e_wsfe();
- /*< 86 format('0warning: above line not allowed within subcircuit -- ', >*/
- /*< 1 'ignored'/) >*/
- /*< go to 50 >*/
- goto L50;
- /*< 90 write (iofile,91) value(ifield+1) >*/
- L90:
- io__51.ciunit = status_1.iofile;
- s_wsfe(&io__51);
- do_fio(&c__1, (char *)&blank_1.value[tabinf_1.ifield], (ftnlen)sizeof(
- doublereal));
- e_wsfe();
- /*< 91 format('0*error*: unknown data card: ',a8/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 95 write (iofile,96) >*/
- L95:
- io__52.ciunit = status_1.iofile;
- s_wsfe(&io__52);
- e_wsfe();
- /*< 96 format('0*error*: unrecognizable data card'/) >*/
- /*< go to 40 >*/
- goto L40;
-
- /* element and device cards */
-
- /*< 100 call find(value(ifield+1),id,loc,1) >*/
- L100:
- find_(&blank_1.value[tabinf_1.ifield], &id, &loc, &c__1);
- /*< locv=nodplc(loc+1) >*/
- locv = nodplc[loc];
- /*< if (id.eq.4) go to 140 >*/
- if (id == 4) {
- goto L140;
- }
- /*< if (id.eq.19) go to 900 >*/
- if (id == 19) {
- goto L900;
- }
- /*< istop=nnods(id)+1 >*/
- istop = nnods[id - 1] + 1;
- /*< if (nodplc(loc+l2nod(id)).ne.0) go to 113 >*/
- if (nodplc[loc + l2nod[id - 1] - 1] != 0) {
- goto L113;
- }
- /*< do 110 i=2,istop >*/
- i_1 = istop;
- for (i = 2; i <= i_1; ++i) {
- /*< if (nodplc(icode+i).ne.0) go to 410 >*/
- if (nodplc[tabinf_1.icode + i - 1] != 0) {
- goto L410;
- }
- /*< if (value(ifield+i).lt.0.0d0) go to 400 >*/
- if (blank_1.value[tabinf_1.ifield + i - 1] < 0.) {
- goto L400;
- }
- /*< 110 nodplc(loc+i)=value(ifield+i) >*/
- /* L110: */
- nodplc[loc + i - 1] = (integer) blank_1.value[tabinf_1.ifield + i - 1]
- ;
- }
- /*< go to 115 >*/
- goto L115;
- /*< 113 do 114 i=2,istop >*/
- L113:
- i_1 = istop;
- for (i = 2; i <= i_1; ++i) {
- /*< nodplc(loc+i)=0 >*/
- nodplc[loc + i - 1] = 0;
- /*< 114 continue >*/
- /* L114: */
- }
- /*< 115 go to (120,130,130,140,150,150,180,180,200,200,300,300,300,300, >*/
- /*< 1 390,390,350,390,390,390), id >*/
- L115:
- switch (id) {
- case 1: goto L120;
- case 2: goto L130;
- case 3: goto L130;
- case 4: goto L140;
- case 5: goto L150;
- case 6: goto L150;
- case 7: goto L180;
- case 8: goto L180;
- case 9: goto L200;
- case 10: goto L200;
- case 11: goto L300;
- case 12: goto L300;
- case 13: goto L300;
- case 14: goto L300;
- case 15: goto L390;
- case 16: goto L390;
- case 17: goto L350;
- case 18: goto L390;
- case 19: goto L390;
- case 20: goto L390;
- }
-
- /* resistor */
-
- /*< 120 if (nodplc(icode+4).ne.0) go to 420 >*/
- L120:
- if (nodplc[tabinf_1.icode + 3] != 0) {
- goto L420;
- }
- /*< if (value(ifield+4).eq.0.0d0) go to 480 >*/
- if (blank_1.value[tabinf_1.ifield + 3] == 0.) {
- goto L480;
- }
- /*< value(locv+2)=value(ifield+4) >*/
- blank_1.value[locv + 1] = blank_1.value[tabinf_1.ifield + 3];
- /*< ifld=4 >*/
- ifld = 4;
- /*< 122 ifld=ifld+1 >*/
- L122:
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,122,124 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L122;
- } else {
- goto L124;
- }
- /*< 124 anam=value(ifield+ifld) >*/
- L124:
- anam = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< if (anam.ne.alstc) go to 460 >*/
- if (anam != alstc) {
- goto L460;
- }
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,126,124 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L126;
- } else {
- goto L124;
- }
- /*< 126 value(locv+3)=value(ifield+ifld) >*/
- L126:
- blank_1.value[locv + 2] = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,128,124 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L128;
- } else {
- goto L124;
- }
- /*< 128 value(locv+4)=value(ifield+ifld) >*/
- L128:
- blank_1.value[locv + 3] = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< go to 50 >*/
- goto L50;
-
- /* capacitor or inductor */
-
- /*< 130 iknt=0 >*/
- L130:
- iknt = 0;
- /*< ltab=7 >*/
- ltab = 7;
- /*< if (id.eq.3) ltab=10 >*/
- if (id == 3) {
- ltab = 10;
- }
- /*< if (nodplc(icode+4)) 420,131,132 >*/
- if ((i_1 = nodplc[tabinf_1.icode + 3]) < 0) {
- goto L420;
- } else if (i_1 == 0) {
- goto L131;
- } else {
- goto L132;
- }
- /*< 131 if (value(ifield+4).le.0.0d0) go to 420 >*/
- L131:
- if (blank_1.value[tabinf_1.ifield + 3] <= 0.) {
- goto L420;
- }
- /*< value(locv+1)=value(ifield+4) >*/
- blank_1.value[locv] = blank_1.value[tabinf_1.ifield + 3];
- /*< nodplc(loc+4)=1 >*/
- nodplc[loc + 3] = 1;
- /*< ifld=5 >*/
- ifld = 5;
- /*< if (nodplc(icode+ifld)) 50,420,139 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L420;
- } else {
- goto L139;
- }
- /*< 132 call getm8(nodplc(loc+ltab),0) >*/
- L132:
- getm8_(&nodplc[loc + ltab - 1], &c__0);
- /*< anam=value(ifield+4) >*/
- anam = blank_1.value[tabinf_1.ifield + 3];
- /*< if (anam.ne.apoly) go to 450 >*/
- if (anam != apoly) {
- goto L450;
- }
- /*< ifld=4 >*/
- ifld = 4;
- /*< 134 ifld=ifld+1 >*/
- L134:
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,136,138 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L136;
- } else {
- goto L138;
- }
- /*< 136 call extmem(nodplc(loc+ltab),1) >*/
- L136:
- extmem_(&nodplc[loc + ltab - 1], &c__1);
- /*< iknt=iknt+1 >*/
- ++iknt;
- /*< ispot=nodplc(loc+ltab)+iknt >*/
- ispot = nodplc[loc + ltab - 1] + iknt;
- /*< value(ispot)=value(ifield+ifld) >*/
- blank_1.value[ispot - 1] = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< go to 134 >*/
- goto L134;
- /*< 138 if (iknt.eq.0) go to 420 >*/
- L138:
- if (iknt == 0) {
- goto L420;
- }
- /*< 139 anam=value(ifield+ifld) >*/
- L139:
- anam = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< if (anam.ne.aic) go to 460 >*/
- if (anam != aic) {
- goto L460;
- }
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld).ne.0) go to 50 >*/
- if (nodplc[tabinf_1.icode + ifld - 1] != 0) {
- goto L50;
- }
- /*< value(locv+2)=value(ifield+ifld) >*/
- blank_1.value[locv + 1] = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< go to 50 >*/
- goto L50;
-
- /* mutual inductance */
-
- /*< 140 if (nodplc(icode+2).ne.1) go to 430 >*/
- L140:
- if (nodplc[tabinf_1.icode + 1] != 1) {
- goto L430;
- }
- /*< anam=value(ifield+2) >*/
- anam = blank_1.value[tabinf_1.ifield + 1];
- /*< call move(anam,2,ablnk,1,7) >*/
- move_(&anam, &c__2, &ablnk, &c__1, &c__7);
- /*< if (anam.ne.aide(3)) go to 430 >*/
- if (anam != aide[2]) {
- goto L430;
- }
- /*< call extnam(value(ifield+2),nodplc(loc+2)) >*/
- extnam_(&blank_1.value[tabinf_1.ifield + 1], &nodplc[loc + 1]);
- /*< if (nodplc(icode+3).ne.1) go to 430 >*/
- if (nodplc[tabinf_1.icode + 2] != 1) {
- goto L430;
- }
- /*< anam=value(ifield+3) >*/
- anam = blank_1.value[tabinf_1.ifield + 2];
- /*< call move(anam,2,ablnk,1,7) >*/
- move_(&anam, &c__2, &ablnk, &c__1, &c__7);
- /*< if (anam.ne.aide(3)) go to 430 >*/
- if (anam != aide[2]) {
- goto L430;
- }
- /*< call extnam(value(ifield+3),nodplc(loc+3)) >*/
- extnam_(&blank_1.value[tabinf_1.ifield + 2], &nodplc[loc + 2]);
- /*< if (nodplc(icode+4).ne.0) go to 420 >*/
- if (nodplc[tabinf_1.icode + 3] != 0) {
- goto L420;
- }
- /*< xk=value(ifield+4) >*/
- xk = blank_1.value[tabinf_1.ifield + 3];
- /*< if (xk.le.0.0d0) go to 420 >*/
- if (xk <= 0.) {
- goto L420;
- }
- /*< if (xk.le.1.0d0) go to 145 >*/
- if (xk <= 1.) {
- goto L145;
- }
- /*< xk=1.0d0 >*/
- xk = 1.;
- /*< write (iofile,141) >*/
- io__61.ciunit = status_1.iofile;
- s_wsfe(&io__61);
- e_wsfe();
- /*< 141 format('0warning: coefficient of coupling reset to 1.0d0'/) >*/
- /*< 145 value(locv+1)=xk >*/
- L145:
- blank_1.value[locv] = xk;
- /*< go to 50 >*/
- goto L50;
-
- /* voltage controlled (nonlinear) sources */
-
- /*< 150 ndim=1 >*/
- L150:
- ndim = 1;
- /*< ifld=3 >*/
- ifld = 3;
- /*< if (nodplc(icode+4)) 410,156,152 >*/
- if ((i_1 = nodplc[tabinf_1.icode + 3]) < 0) {
- goto L410;
- } else if (i_1 == 0) {
- goto L156;
- } else {
- goto L152;
- }
- /*< 152 anam=value(ifield+4) >*/
- L152:
- anam = blank_1.value[tabinf_1.ifield + 3];
- /*< if (anam.ne.apoly) go to 450 >*/
- if (anam != apoly) {
- goto L450;
- }
- /*< if (nodplc(icode+5).ne.0) go to 420 >*/
- if (nodplc[tabinf_1.icode + 4] != 0) {
- goto L420;
- }
- /*< ndim=value(ifield+5) >*/
- ndim = (integer) blank_1.value[tabinf_1.ifield + 4];
- /*< if (ndim.le.0) go to 420 >*/
- if (ndim <= 0) {
- goto L420;
- }
- /*< ifld=5 >*/
- ifld = 5;
- /*< 156 nodplc(loc+4)=ndim >*/
- L156:
- nodplc[loc + 3] = ndim;
- /*< ltab=id+1 >*/
- ltab = id + 1;
- /*< nssnod=2*ndim >*/
- nssnod = ndim << 1;
- /*< nmat=4*ndim >*/
- nmat = ndim << 2;
- /*< if (id.eq.6) nmat=4+2*ndim >*/
- if (id == 6) {
- nmat = (ndim << 1) + 4;
- }
- /*< call getm4(nodplc(loc+ltab),nssnod) >*/
- getm4_(&nodplc[loc + ltab - 1], &nssnod);
- /*< call getm4(nodplc(loc+ltab+1),nmat) >*/
- getm4_(&nodplc[loc + ltab], &nmat);
- /*< call getm8(nodplc(loc+ltab+2),0) >*/
- getm8_(&nodplc[loc + ltab + 1], &c__0);
- /*< call getm8(nodplc(loc+ltab+3),ndim) >*/
- getm8_(&nodplc[loc + ltab + 2], &ndim);
- /*< call getm4(nodplc(loc+ltab+4),ndim) >*/
- getm4_(&nodplc[loc + ltab + 3], &ndim);
- /*< call getm8(nodplc(loc+ltab+5),ndim) >*/
- getm8_(&nodplc[loc + ltab + 4], &ndim);
- /*< ispot=nodplc(loc+ltab+5) >*/
- ispot = nodplc[loc + ltab + 4];
- /*< call zero8(value(ispot+1),ndim) >*/
- zero8_(&blank_1.value[ispot], &ndim);
- /*< lnod=nodplc(loc+ltab) >*/
- lnod = nodplc[loc + ltab - 1];
- /*< do 158 i=1,nssnod >*/
- i_1 = nssnod;
- for (i = 1; i <= i_1; ++i) {
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld).ne.0) go to 410 >*/
- if (nodplc[tabinf_1.icode + ifld - 1] != 0) {
- goto L410;
- }
- /*< if (value(ifield+ifld).lt.0.0d0) go to 400 >*/
- if (blank_1.value[tabinf_1.ifield + ifld - 1] < 0.) {
- goto L400;
- }
- /*< nodplc(lnod+i)=value(ifield+ifld) >*/
- nodplc[lnod + i - 1] = (integer) blank_1.value[tabinf_1.ifield + ifld
- - 1];
- /*< 158 continue >*/
- /* L158: */
- }
- /*< 160 iknt=0 >*/
- L160:
- iknt = 0;
- /*< 162 ifld=ifld+1 >*/
- L162:
- ++ifld;
- /*< if (nodplc(icode+ifld).ne.0) go to 164 >*/
- if (nodplc[tabinf_1.icode + ifld - 1] != 0) {
- goto L164;
- }
- /*< call extmem(nodplc(loc+ltab+2),1) >*/
- extmem_(&nodplc[loc + ltab + 1], &c__1);
- /*< iknt=iknt+1 >*/
- ++iknt;
- /*< ispot=nodplc(loc+ltab+2)+iknt >*/
- ispot = nodplc[loc + ltab + 1] + iknt;
- /*< value(ispot)=value(ifield+ifld) >*/
- blank_1.value[ispot - 1] = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< go to 162 >*/
- goto L162;
- /*< 164 if (iknt.eq.0) go to 420 >*/
- L164:
- if (iknt == 0) {
- goto L420;
- }
- /*< if (nodplc(icode+ifld).ne.1) go to 170 >*/
- if (nodplc[tabinf_1.icode + ifld - 1] != 1) {
- goto L170;
- }
- /*< anam=value(ifield+ifld) >*/
- anam = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< if (anam.ne.aic) go to 460 >*/
- if (anam != aic) {
- goto L460;
- }
- /*< do 168 i=1,ndim >*/
- i_1 = ndim;
- for (i = 1; i <= i_1; ++i) {
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld)) 170,166,420 >*/
- if ((i_2 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L170;
- } else if (i_2 == 0) {
- goto L166;
- } else {
- goto L420;
- }
- /*< 166 ispot=nodplc(loc+ltab+5)+i >*/
- L166:
- ispot = nodplc[loc + ltab + 4] + i;
- /*< value(ispot)=value(ifield+ifld) >*/
- blank_1.value[ispot - 1] = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< 168 continue >*/
- /* L168: */
- }
- /*< 170 if (ndim.ne.1) go to 50 >*/
- L170:
- if (ndim != 1) {
- goto L50;
- }
- /*< if (iknt.ne.1) go to 50 >*/
- if (iknt != 1) {
- goto L50;
- }
- /*< call extmem(nodplc(loc+ltab+2),1) >*/
- extmem_(&nodplc[loc + ltab + 1], &c__1);
- /*< ispot=nodplc(loc+ltab+2) >*/
- ispot = nodplc[loc + ltab + 1];
- /*< value(ispot+2)=value(ispot+1) >*/
- blank_1.value[ispot + 1] = blank_1.value[ispot];
- /*< value(ispot+1)=0.0d0 >*/
- blank_1.value[ispot] = 0.;
- /*< go to 50 >*/
- goto L50;
-
- /* current controlled (nonlinear) sources */
-
- /*< 180 ndim=1 >*/
- L180:
- ndim = 1;
- /*< ifld=3 >*/
- ifld = 3;
- /*< if (nodplc(icode+4).ne.1) go to 470 >*/
- if (nodplc[tabinf_1.icode + 3] != 1) {
- goto L470;
- }
- /*< anam=value(ifield+4) >*/
- anam = blank_1.value[tabinf_1.ifield + 3];
- /*< if (anam.ne.apoly) go to 182 >*/
- if (anam != apoly) {
- goto L182;
- }
- /*< ifld=5 >*/
- ifld = 5;
- /*< if (nodplc(icode+5).ne.0) go to 420 >*/
- if (nodplc[tabinf_1.icode + 4] != 0) {
- goto L420;
- }
- /*< ndim=value(ifield+5) >*/
- ndim = (integer) blank_1.value[tabinf_1.ifield + 4];
- /*< if (ndim.le.0) go to 420 >*/
- if (ndim <= 0) {
- goto L420;
- }
- /*< 182 nodplc(loc+4)=ndim >*/
- L182:
- nodplc[loc + 3] = ndim;
- /*< ltab=id-1 >*/
- ltab = id - 1;
- /*< nmat=2*ndim >*/
- nmat = ndim << 1;
- /*< if (id.eq.8) nmat=4+ndim >*/
- if (id == 8) {
- nmat = ndim + 4;
- }
- /*< call getm4(nodplc(loc+ltab),ndim) >*/
- getm4_(&nodplc[loc + ltab - 1], &ndim);
- /*< call getm4(nodplc(loc+ltab+1),nmat) >*/
- getm4_(&nodplc[loc + ltab], &nmat);
- /*< call getm8(nodplc(loc+ltab+2),0) >*/
- getm8_(&nodplc[loc + ltab + 1], &c__0);
- /*< call getm8(nodplc(loc+ltab+3),ndim) >*/
- getm8_(&nodplc[loc + ltab + 2], &ndim);
- /*< call getm4(nodplc(loc+ltab+4),ndim) >*/
- getm4_(&nodplc[loc + ltab + 3], &ndim);
- /*< call getm8(nodplc(loc+ltab+5),ndim) >*/
- getm8_(&nodplc[loc + ltab + 4], &ndim);
- /*< ispot=nodplc(loc+ltab+5) >*/
- ispot = nodplc[loc + ltab + 4];
- /*< call zero8(value(ispot+1),ndim) >*/
- zero8_(&blank_1.value[ispot], &ndim);
- /*< do 184 i=1,ndim >*/
- i_1 = ndim;
- for (i = 1; i <= i_1; ++i) {
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld).ne.1) go to 470 >*/
- if (nodplc[tabinf_1.icode + ifld - 1] != 1) {
- goto L470;
- }
- /*< anam=value(ifield+ifld) >*/
- anam = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< call move(anam,2,ablnk,1,7) >*/
- move_(&anam, &c__2, &ablnk, &c__1, &c__7);
- /*< if (anam.ne.aide(9)) go to 470 >*/
- if (anam != aide[8]) {
- goto L470;
- }
- /*< call extnam(value(ifield+ifld),loct) >*/
- extnam_(&blank_1.value[tabinf_1.ifield + ifld - 1], &loct);
- /*< ispot=nodplc(loc+ltab)+i >*/
- ispot = nodplc[loc + ltab - 1] + i;
- /*< nodplc(ispot)=loct >*/
- nodplc[ispot - 1] = loct;
- /*< 184 continue >*/
- /* L184: */
- }
- /*< go to 160 >*/
- goto L160;
-
- /* independent sources */
-
- /*< 200 ifld=3 >*/
- L200:
- ifld = 3;
- /*< call getm8(nodplc(loc+5),0) >*/
- getm8_(&nodplc[loc + 4], &c__0);
- /*< 210 ifld=ifld+1 >*/
- L210:
- ++ifld;
- /*< 215 if (nodplc(icode+ifld)) 50,220,230 >*/
- L215:
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L220;
- } else {
- goto L230;
- }
- /*< 220 if (ifld.gt.4) go to 210 >*/
- L220:
- if (ifld > 4) {
- goto L210;
- }
- /*< 225 value(locv+1)=value(ifield+ifld) >*/
- L225:
- blank_1.value[locv] = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< go to 210 >*/
- goto L210;
- /*< 230 anam=value(ifield+ifld) >*/
- L230:
- anam = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< if (anam.ne.alsdc) go to 235 >*/
- if (anam != alsdc) {
- goto L235;
- }
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,225,230 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L225;
- } else {
- goto L230;
- }
- /*< 235 if (anam.ne.alsac) go to 260 >*/
- L235:
- if (anam != alsac) {
- goto L260;
- }
- /*< value(locv+2)=1.0d0 >*/
- blank_1.value[locv + 1] = 1.;
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,240,230 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L240;
- } else {
- goto L230;
- }
- /*< 240 value(locv+2)=value(ifield+ifld) >*/
- L240:
- blank_1.value[locv + 1] = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,250,230 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L250;
- } else {
- goto L230;
- }
- /*< 250 value(locv+3)=value(ifield+ifld) >*/
- L250:
- blank_1.value[locv + 2] = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< go to 210 >*/
- goto L210;
- /*< 260 id=0 >*/
- L260:
- id = 0;
- /*< call move(anam,3,ablnk,1,6) >*/
- move_(&anam, &c__3, &ablnk, &c__1, &c__6);
- /*< if (anam.eq.alspu) id=1 >*/
- if (anam == alspu) {
- id = 1;
- }
- /*< if (anam.eq.alssi) id=2 >*/
- if (anam == alssi) {
- id = 2;
- }
- /*< if (anam.eq.alsex) id=3 >*/
- if (anam == alsex) {
- id = 3;
- }
- /*< if (anam.eq.alspw) id=4 >*/
- if (anam == alspw) {
- id = 4;
- }
- /*< if (anam.eq.alssf) id=5 >*/
- if (anam == alssf) {
- id = 5;
- }
- /*< if (id.eq.0) go to 450 >*/
- if (id == 0) {
- goto L450;
- }
- /*< nodplc(loc+4)=id >*/
- nodplc[loc + 3] = id;
- /*< iknt=0 >*/
- iknt = 0;
- /*< 270 ifld=ifld+1 >*/
- L270:
- ++ifld;
- /*< if (nodplc(icode+ifld).ne.0) go to 280 >*/
- if (nodplc[tabinf_1.icode + ifld - 1] != 0) {
- goto L280;
- }
- /*< call extmem(nodplc(loc+5),1) >*/
- extmem_(&nodplc[loc + 4], &c__1);
- /*< iknt=iknt+1 >*/
- ++iknt;
- /*< ispot=nodplc(loc+5)+iknt >*/
- ispot = nodplc[loc + 4] + iknt;
- /*< value(ispot)=value(ifield+ifld) >*/
- blank_1.value[ispot - 1] = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< go to 270 >*/
- goto L270;
- /*< 280 aval=0.0d0 >*/
- L280:
- aval = 0.;
- /*< if (id.ne.4) go to 285 >*/
- if (id != 4) {
- goto L285;
- }
- /* ... for pwl source function, force even number of input values */
- /*< ibit=0 >*/
- ibit = 0;
- /*< if(iknt.ne.(iknt/2)*2) ibit=1 >*/
- if (iknt != iknt / 2 << 1) {
- ibit = 1;
- }
- /*< aval=value(ispot) >*/
- aval = blank_1.value[ispot - 1];
- /*< if (ibit.eq.0) go to 290 >*/
- if (ibit == 0) {
- goto L290;
- }
- /*< call extmem(nodplc(loc+5),1) >*/
- extmem_(&nodplc[loc + 4], &c__1);
- /*< aval=value(ispot-1) >*/
- aval = blank_1.value[ispot - 2];
- /*< iknt=iknt+1 >*/
- ++iknt;
- /*< ispot=nodplc(loc+5)+iknt >*/
- ispot = nodplc[loc + 4] + iknt;
- /*< value(ispot)=aval >*/
- blank_1.value[ispot - 1] = aval;
- /*< go to 290 >*/
- goto L290;
- /*< 285 if (iknt.ge.7) go to 215 >*/
- L285:
- if (iknt >= 7) {
- goto L215;
- }
- /*< 290 call extmem(nodplc(loc+5),2) >*/
- L290:
- extmem_(&nodplc[loc + 4], &c__2);
- /*< ispot=nodplc(loc+5)+iknt >*/
- ispot = nodplc[loc + 4] + iknt;
- /*< value(ispot+1)=0.0d0 >*/
- blank_1.value[ispot] = 0.;
- /*< value(ispot+2)=aval >*/
- blank_1.value[ispot + 1] = aval;
- /*< iknt=iknt+2 >*/
- iknt += 2;
- /*< go to 285 >*/
- goto L285;
-
- /* device cards */
-
- /*< 300 value(locv+1)=1.0d0 >*/
- L300:
- blank_1.value[locv] = 1.;
- /*< if (id.ne.14) go to 305 >*/
- if (id != 14) {
- goto L305;
- }
- /*< value(locv+1)=0.0d0 >*/
- blank_1.value[locv] = 0.;
- /*< value(locv+11)=0.0d0 >*/
- blank_1.value[locv + 10] = 0.;
- /*< value(locv+12)=0.0d0 >*/
- blank_1.value[locv + 11] = 0.;
- /*< value(locv+13)=1.0d0 >*/
- blank_1.value[locv + 12] = 1.;
- /*< value(locv+14)=1.0d0 >*/
- blank_1.value[locv + 13] = 1.;
- /*< value(locv+15)=0.0d0 >*/
- blank_1.value[locv + 14] = 0.;
- /*< 305 locm=loc+ntnods(id)+2 >*/
- L305:
- locm = loc + ntnods[id - 1] + 2;
- /*< ifld=nnods(id)+2 >*/
- ifld = nnods[id - 1] + 2;
-
- /* temporarily (until modchk) put bjt
- 's substrate node into nodplc(loc+5) */
-
- /*< if(id.ne.12) go to 308 >*/
- if (id != 12) {
- goto L308;
- }
- /*< if(nodplc(icode+5).ne.0) go to 308 >*/
- if (nodplc[tabinf_1.icode + 4] != 0) {
- goto L308;
- }
- /*< ifld=6 >*/
- ifld = 6;
- /*< if (nodplc(loc+l2nod(id)).ne.0) go to 306 >*/
- if (nodplc[loc + l2nod[id - 1] - 1] != 0) {
- goto L306;
- }
- /*< nodplc(loc+5)=value(ifield+5) >*/
- nodplc[loc + 4] = (integer) blank_1.value[tabinf_1.ifield + 4];
- /*< go to 308 >*/
- goto L308;
- /*< 306 nodplc(loc+5)=0 >*/
- L306:
- nodplc[loc + 4] = 0;
- /*< 308 continue >*/
- L308:
-
- /* reserve device internal nodes,read device geometry parameters */
- /* and initial conditions */
-
- /*< if (nodplc(icode+ifld).ne.1) go to 440 >*/
- if (nodplc[tabinf_1.icode + ifld - 1] != 1) {
- goto L440;
- }
- /*< call extnam(value(ifield+ifld),nodplc(locm)) >*/
- extnam_(&blank_1.value[tabinf_1.ifield + ifld - 1], &nodplc[locm - 1]);
- /*< 310 ifld=ifld+1 >*/
- L310:
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,325,315 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L325;
- } else {
- goto L315;
- }
- /*< 315 anam=value(ifield+ifld) >*/
- L315:
- anam = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< if (anam.ne.alsoff) go to 320 >*/
- if (anam != alsoff) {
- goto L320;
- }
- /*< nodplc(locm+1)=1 >*/
- nodplc[locm] = 1;
- /*< go to 310 >*/
- goto L310;
- /*< 320 if (anam.ne.area) go to 330 >*/
- L320:
- if (anam != area) {
- goto L330;
- }
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,325,315 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L325;
- } else {
- goto L315;
- }
- /*< 325 if (value(ifield+ifld).le.0.0d0) go to 420 >*/
- L325:
- if (blank_1.value[tabinf_1.ifield + ifld - 1] <= 0.) {
- goto L420;
- }
- /*< if (id.eq.14) go to 343 >*/
- if (id == 14) {
- goto L343;
- }
- /*< value(locv+1)=value(ifield+ifld) >*/
- blank_1.value[locv] = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< go to 310 >*/
- goto L310;
- /*< 330 if (anam.ne.aic) go to 341 >*/
- L330:
- if (anam != aic) {
- goto L341;
- }
- /*< iknt=0 >*/
- iknt = 0;
- /*< icloc=0 >*/
- icloc = 0;
- /*< if (id.eq.14) icloc=3 >*/
- if (id == 14) {
- icloc = 3;
- }
- /*< maxknt=numic(id-10) >*/
- maxknt = numic[id - 11];
- /*< 335 ifld=ifld+1 >*/
- L335:
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,340,315 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L340;
- } else {
- goto L315;
- }
- /*< 340 iknt=iknt+1 >*/
- L340:
- ++iknt;
- /*< if (iknt.gt.maxknt) go to 335 >*/
- if (iknt > maxknt) {
- goto L335;
- }
- /*< value(locv+icloc+iknt+1)=value(ifield+ifld) >*/
- blank_1.value[locv + icloc + iknt] = blank_1.value[tabinf_1.ifield + ifld
- - 1];
- /*< go to 335 >*/
- goto L335;
- /*< 341 if (id.ne.14) go to 460 >*/
- L341:
- if (id != 14) {
- goto L460;
- }
- /*< ispot=0 >*/
- ispot = 0;
- /*< if (anam.eq.alsl) ispot=1 >*/
- if (anam == alsl) {
- ispot = 1;
- }
- /*< if (anam.eq.alsw) ispot=2 >*/
- if (anam == alsw) {
- ispot = 2;
- }
- /*< if (anam.eq.alsad) ispot=3 >*/
- if (anam == alsad) {
- ispot = 3;
- }
- /*< if (anam.eq.alszx) ispot=3 >*/
- if (anam == alszx) {
- ispot = 3;
- }
- /*< if (anam.eq.alsas) ispot=4 >*/
- if (anam == alsas) {
- ispot = 4;
- }
- /*< if (anam.eq.alspd) ispot=11 >*/
- if (anam == alspd) {
- ispot = 11;
- }
- /*< if (anam.eq.alsps) ispot=12 >*/
- if (anam == alsps) {
- ispot = 12;
- }
- /*< if (anam.eq.alsrds) ispot=13 >*/
- if (anam == alsrds) {
- ispot = 13;
- }
- /*< if (anam.eq.alsrss) ispot=14 >*/
- if (anam == alsrss) {
- ispot = 14;
- }
- /*< if (anam.eq.alsxqc) ispot=15 >*/
- if (anam == alsxqc) {
- ispot = 15;
- }
- /*< if (ispot.eq.0) go to 460 >*/
- if (ispot == 0) {
- goto L460;
- }
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,342,315 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L342;
- } else {
- goto L315;
- }
- /*< 342 if (value(ifield+ifld).le.0.0d0) go to 420 >*/
- L342:
- if (blank_1.value[tabinf_1.ifield + ifld - 1] <= 0.) {
- goto L420;
- }
- /*< value(locv+ispot)=value(ifield+ifld) >*/
- blank_1.value[locv + ispot - 1] = blank_1.value[tabinf_1.ifield + ifld -
- 1];
- /*< go to 310 >*/
- goto L310;
- /*< 343 iknt=0 >*/
- L343:
- iknt = 0;
- /*< 344 iknt=iknt+1 >*/
- L344:
- ++iknt;
- /*< if(value(ifield+ifld).le.0.0d0) go to 420 >*/
- if (blank_1.value[tabinf_1.ifield + ifld - 1] <= 0.) {
- goto L420;
- }
- /*< if(iknt.gt.15) go to 490 >*/
- if (iknt > 15) {
- goto L490;
- }
- /*< if(iknt.eq.5) iknt=11 >*/
- if (iknt == 5) {
- iknt = 11;
- }
- /*< value(locv+iknt)=value(ifield+ifld) >*/
- blank_1.value[locv + iknt - 1] = blank_1.value[tabinf_1.ifield + ifld - 1]
- ;
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if(nodplc(icode+ifld)) 345,344,345 >*/
- if (nodplc[tabinf_1.icode + ifld - 1] != 0) {
- goto L345;
- } else {
- goto L344;
- }
- /*< 345 if(nodplc(icode+ifld)) 50,50,315 >*/
- L345:
- if (nodplc[tabinf_1.icode + ifld - 1] <= 0) {
- goto L50;
- } else {
- goto L315;
- }
-
- /* transmission lines */
-
- /*< 350 ifld=5 >*/
- L350:
- ifld = 5;
- /*< xnl=0.25d0 >*/
- xnl = .25;
- /*< tfreq=0.0d0 >*/
- tfreq = 0.;
- /*< 355 ifld=ifld+1 >*/
- L355:
- ++ifld;
- /*< if (nodplc(icode+ifld)) 378,355,360 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L378;
- } else if (i_1 == 0) {
- goto L355;
- } else {
- goto L360;
- }
- /*< 360 anam=value(ifield+ifld) >*/
- L360:
- anam = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< if (anam.eq.aic) go to 364 >*/
- if (anam == aic) {
- goto L364;
- }
- /*< if (anam.eq.alsnl) go to 370 >*/
- if (anam == alsnl) {
- goto L370;
- }
- /*< if (anam.eq.alsf) go to 374 >*/
- if (anam == alsf) {
- goto L374;
- }
- /*< id=0 >*/
- id = 0;
- /*< if (anam.eq.alsz0) id=1 >*/
- if (anam == alsz0) {
- id = 1;
- }
- /*< if (anam.eq.alszo) id=1 >*/
- if (anam == alszo) {
- id = 1;
- }
- /*< if (anam.eq.alstd) id=2 >*/
- if (anam == alstd) {
- id = 2;
- }
- /*< if (id.eq.0) go to 460 >*/
- if (id == 0) {
- goto L460;
- }
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld)) 378,362,360 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L378;
- } else if (i_1 == 0) {
- goto L362;
- } else {
- goto L360;
- }
- /*< 362 if (value(ifield+ifld).le.0.0d0) go to 420 >*/
- L362:
- if (blank_1.value[tabinf_1.ifield + ifld - 1] <= 0.) {
- goto L420;
- }
- /*< value(locv+id)=value(ifield+ifld) >*/
- blank_1.value[locv + id - 1] = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< go to 355 >*/
- goto L355;
- /*< 364 iknt=0 >*/
- L364:
- iknt = 0;
- /*< 366 ifld=ifld+1 >*/
- L366:
- ++ifld;
- /*< if (nodplc(icode+ifld)) 378,368,360 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L378;
- } else if (i_1 == 0) {
- goto L368;
- } else {
- goto L360;
- }
- /*< 368 iknt=iknt+1 >*/
- L368:
- ++iknt;
- /*< if (iknt.gt.4) go to 366 >*/
- if (iknt > 4) {
- goto L366;
- }
- /*< value(locv+iknt+4)=value(ifield+ifld) >*/
- blank_1.value[locv + iknt + 3] = blank_1.value[tabinf_1.ifield + ifld - 1]
- ;
- /*< go to 366 >*/
- goto L366;
- /*< 370 ifld=ifld+1 >*/
- L370:
- ++ifld;
- /*< if (nodplc(icode+ifld)) 378,372,360 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L378;
- } else if (i_1 == 0) {
- goto L372;
- } else {
- goto L360;
- }
- /*< 372 if (value(ifield+ifld).le.0.0d0) go to 420 >*/
- L372:
- if (blank_1.value[tabinf_1.ifield + ifld - 1] <= 0.) {
- goto L420;
- }
- /*< xnl=value(ifield+ifld) >*/
- xnl = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< go to 355 >*/
- goto L355;
- /*< 374 ifld=ifld+1 >*/
- L374:
- ++ifld;
- /*< if (nodplc(icode+ifld)) 378,376,360 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L378;
- } else if (i_1 == 0) {
- goto L376;
- } else {
- goto L360;
- }
- /*< 376 if (value(ifield+ifld).le.0.0d0) go to 420 >*/
- L376:
- if (blank_1.value[tabinf_1.ifield + ifld - 1] <= 0.) {
- goto L420;
- }
- /*< tfreq=value(ifield+ifld) >*/
- tfreq = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< go to 355 >*/
- goto L355;
- /*< 378 if (value(locv+1).ne.0.0d0) go to 380 >*/
- L378:
- if (blank_1.value[locv] != 0.) {
- goto L380;
- }
- /*< write (iofile,379) >*/
- io__74.ciunit = status_1.iofile;
- s_wsfe(&io__74);
- e_wsfe();
- /*< 379 format('0*error*: z0 must be specified'/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 380 if (value(locv+2).ne.0.0d0) go to 50 >*/
- L380:
- if (blank_1.value[locv + 1] != 0.) {
- goto L50;
- }
- /*< if (tfreq.ne.0.0d0) go to 382 >*/
- if (tfreq != 0.) {
- goto L382;
- }
- /*< write (iofile,381) >*/
- io__75.ciunit = status_1.iofile;
- s_wsfe(&io__75);
- e_wsfe();
- /*< 381 format('0*error*: either td or f must be specified'/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 382 value(locv+2)=xnl/tfreq >*/
- L382:
- blank_1.value[locv + 1] = xnl / tfreq;
- /*< go to 50 >*/
- goto L50;
-
- /* elements not yet implemented */
-
- /*< 390 write (iofile,391) >*/
- L390:
- io__76.ciunit = status_1.iofile;
- s_wsfe(&io__76);
- e_wsfe();
- /*< 391 format('0*error*: element type not yet implemented'/) >*/
- /*< go to 40 >*/
- goto L40;
-
- /* element card errors */
-
- /*< 400 write (iofile,401) >*/
- L400:
- io__77.ciunit = status_1.iofile;
- s_wsfe(&io__77);
- e_wsfe();
- /*< 401 format('0*error*: negative node number found'/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 410 write (iofile,411) >*/
- L410:
- io__78.ciunit = status_1.iofile;
- s_wsfe(&io__78);
- e_wsfe();
- /*< 411 format('0*error*: node numbers are missing'/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 420 write (iofile,421) >*/
- L420:
- io__79.ciunit = status_1.iofile;
- s_wsfe(&io__79);
- e_wsfe();
- /*< 421 format('0*error*: value is missing or is nonpositive'/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 430 write (iofile,431) >*/
- L430:
- io__80.ciunit = status_1.iofile;
- s_wsfe(&io__80);
- e_wsfe();
- /*< 431 format('0*error*: mutual inductance references are missing'/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 440 write (iofile,441) >*/
- L440:
- io__81.ciunit = status_1.iofile;
- s_wsfe(&io__81);
- e_wsfe();
- /*< 441 format('0*error*: model name is missing'/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 450 write (iofile,451) anam >*/
- L450:
- io__82.ciunit = status_1.iofile;
- s_wsfe(&io__82);
- do_fio(&c__1, (char *)&anam, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< 451 format('0*error*: unknown source function: ',a8) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 460 write (iofile,461) anam >*/
- L460:
- io__83.ciunit = status_1.iofile;
- s_wsfe(&io__83);
- do_fio(&c__1, (char *)&anam, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< 461 format('0*error*: unknown parameter: ',a8/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 470 write (iofile,471) >*/
- L470:
- io__84.ciunit = status_1.iofile;
- s_wsfe(&io__84);
- e_wsfe();
- /*< 471 format('0*error*: voltage source not found on above line'/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 480 write (iofile,481) >*/
- L480:
- io__85.ciunit = status_1.iofile;
- s_wsfe(&io__85);
- e_wsfe();
- /*< 481 format('0*error*: value is zero'/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 490 write(iofile,491) >*/
- L490:
- io__86.ciunit = status_1.iofile;
- s_wsfe(&io__86);
- e_wsfe();
- /*< 491 format('0*error*: extra numerical data on mosfet card'/) >*/
- /*< go to 40 >*/
- goto L40;
-
- /* model card */
-
- /*< 500 if (nodplc(icode+2).ne.1) go to 650 >*/
- L500:
- if (nodplc[tabinf_1.icode + 1] != 1) {
- goto L650;
- }
- /*< if (nodplc(icode+3).ne.1) go to 650 >*/
- if (nodplc[tabinf_1.icode + 2] != 1) {
- goto L650;
- }
- /*< id=0 >*/
- id = 0;
- /*< 510 id=id+1 >*/
- L510:
- ++id;
- /*< if (id.gt.7) go to 660 >*/
- if (id > 7) {
- goto L660;
- }
- /*< if (value(ifield+3).ne.aidm(id)) go to 510 >*/
- if (blank_1.value[tabinf_1.ifield + 2] != aidm[id - 1]) {
- goto L510;
- }
- /*< ipol=ipolar(id) >*/
- ipol = ipolar[id - 1];
- /*< jtype=modid(id) >*/
- jtype = modid[id - 1];
- /*< id=jtype+20 >*/
- id = jtype + 20;
- /*< call find(value(ifield+2),id,loc,1) >*/
- find_(&blank_1.value[tabinf_1.ifield + 1], &id, &loc, &c__1);
- /*< nodplc(loc+2)=ipol >*/
- nodplc[loc + 1] = ipol;
- /*< locv=nodplc(loc+1) >*/
- locv = nodplc[loc];
- /*< 520 locm=ipar(jtype) >*/
- /* L520: */
- locm = ipar[jtype - 1];
- /*< nopar=ipar(jtype+1)-locm >*/
- nopar = ipar[jtype] - locm;
- /*< ifld=3 >*/
- ifld = 3;
- /*< 530 ifld=ifld+1 >*/
- L530:
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,530,560 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L530;
- } else {
- goto L560;
- }
- /*< 560 anam=value(ifield+ifld) >*/
- L560:
- anam = blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< if(jtype.eq.2) anam=alias(anam) >*/
- if (jtype == 2) {
- anam = alias_(&anam);
- }
- /*< iknt=0 >*/
- iknt = 0;
- /*< 570 iknt=iknt+1 >*/
- L570:
- ++iknt;
- /*< if (iknt.gt.nopar) go to 670 >*/
- if (iknt > nopar) {
- goto L670;
- }
- /*< if (anam.ne.ampar(locm+iknt)) go to 570 >*/
- if (anam != ampar[locm + iknt - 1]) {
- goto L570;
- }
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,580,560 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L580;
- } else {
- goto L560;
- }
- /*< 580 value(locv+iknt)=value(ifield+ifld) >*/
- L580:
- blank_1.value[locv + iknt - 1] = blank_1.value[tabinf_1.ifield + ifld - 1]
- ;
- /*< ifld=ifld+1 >*/
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,590,560 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L590;
- } else {
- goto L560;
- }
- /*< 590 iknt=iknt+1 >*/
- L590:
- ++iknt;
- /*< if (iknt.gt.nopar) go to 530 >*/
- if (iknt > nopar) {
- goto L530;
- }
- /*< if (ablnk.ne.ampar(locm+iknt)) go to 530 >*/
- if (ablnk != ampar[locm + iknt - 1]) {
- goto L530;
- }
- /*< go to 580 >*/
- goto L580;
-
- /* model card errors */
-
- /*< 650 write (iofile,651) >*/
- L650:
- io__90.ciunit = status_1.iofile;
- s_wsfe(&io__90);
- e_wsfe();
- /*< 651 format('0*error*: model type is missing'/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 660 write (iofile,661) value(ifield+3) >*/
- L660:
- io__91.ciunit = status_1.iofile;
- s_wsfe(&io__91);
- do_fio(&c__1, (char *)&blank_1.value[tabinf_1.ifield + 2], (ftnlen)sizeof(
- doublereal));
- e_wsfe();
- /*< 661 format('0*error*: unknown model type: ',a8/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 670 write (iofile,671) anam >*/
- L670:
- io__92.ciunit = status_1.iofile;
- s_wsfe(&io__92);
- do_fio(&c__1, (char *)&anam, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< 671 format('0*error*: unknown model parameter: ',a8,/) >*/
- /*< nogo=1 >*/
- flags_1.nogo = 1;
- /*< go to 530 >*/
- goto L530;
-
- /* subcircuit definition */
-
- /*< 700 if (nodplc(icode+2).ne.1) go to 780 >*/
- L700:
- if (nodplc[tabinf_1.icode + 1] != 1) {
- goto L780;
- }
- /*< call find(value(ifield+2),20,loc,1) >*/
- find_(&blank_1.value[tabinf_1.ifield + 1], &c__20, &loc, &c__1);
- /*< call extmem(isbckt,1) >*/
- extmem_(&tabinf_1.isbckt, &c__1);
- /*< nsbckt=nsbckt+1 >*/
- ++tabinf_1.nsbckt;
- /*< nodplc(isbckt+nsbckt)=loc >*/
- nodplc[tabinf_1.isbckt + tabinf_1.nsbckt - 1] = loc;
- /*< ifld=2 >*/
- ifld = 2;
- /*< if (nodplc(icode+3).ne.0) go to 790 >*/
- if (nodplc[tabinf_1.icode + 2] != 0) {
- goto L790;
- }
- /*< call getm4(nodplc(loc+2),0) >*/
- getm4_(&nodplc[loc + 1], &c__0);
- /*< iknt=0 >*/
- iknt = 0;
- /*< 710 ifld=ifld+1 >*/
- L710:
- ++ifld;
- /*< if (nodplc(icode+ifld)) 50,720,710 >*/
- if ((i_1 = nodplc[tabinf_1.icode + ifld - 1]) < 0) {
- goto L50;
- } else if (i_1 == 0) {
- goto L720;
- } else {
- goto L710;
- }
- /*< 720 call extmem(nodplc(loc+2),1) >*/
- L720:
- extmem_(&nodplc[loc + 1], &c__1);
- /*< iknt=iknt+1 >*/
- ++iknt;
- /*< ispot=nodplc(loc+2)+iknt >*/
- ispot = nodplc[loc + 1] + iknt;
- /*< if (value(ifield+ifld).le.0.0d0) go to 770 >*/
- if (blank_1.value[tabinf_1.ifield + ifld - 1] <= 0.) {
- goto L770;
- }
- /*< nodplc(ispot)=value(ifield+ifld) >*/
- nodplc[ispot - 1] = (integer) blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< node=nodplc(ispot) >*/
- node = nodplc[ispot - 1];
- /*< i=iknt-1 >*/
- i = iknt - 1;
- /*< 730 if (i.eq.0) go to 710 >*/
- L730:
- if (i == 0) {
- goto L710;
- }
- /*< ispot=ispot-1 >*/
- --ispot;
- /*< if (nodplc(ispot).eq.node) go to 760 >*/
- if (nodplc[ispot - 1] == node) {
- goto L760;
- }
- /*< i=i-1 >*/
- --i;
- /*< go to 730 >*/
- goto L730;
- /*< 760 write (iofile,761) node >*/
- L760:
- io__94.ciunit = status_1.iofile;
- s_wsfe(&io__94);
- do_fio(&c__1, (char *)&node, (ftnlen)sizeof(integer));
- e_wsfe();
- /*< 761 format('0*error*: subcircuit definition duplicates node ',i5,/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 770 write (iofile,771) >*/
- L770:
- io__95.ciunit = status_1.iofile;
- s_wsfe(&io__95);
- e_wsfe();
- /*< 771 format('0*error*: nonpositive node number found in subcircuit ', >*/
- /*< 1 'definition'/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 780 write (iofile,781) >*/
- L780:
- io__96.ciunit = status_1.iofile;
- s_wsfe(&io__96);
- e_wsfe();
- /*< 781 format('0*error*: subcircuit name missing'/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 790 write (iofile,791) >*/
- L790:
- io__97.ciunit = status_1.iofile;
- s_wsfe(&io__97);
- e_wsfe();
- /*< 791 format('0*error*: subcircuit nodes missing'/) >*/
- /*< go to 40 >*/
- goto L40;
-
- /* .ends processing */
-
- /*< 800 if (nsbckt.eq.0) go to 890 >*/
- L800:
- if (tabinf_1.nsbckt == 0) {
- goto L890;
- }
- /*< iknt=1 >*/
- iknt = 1;
- /*< if (nodplc(icode+2).le.0) go to 820 >*/
- if (nodplc[tabinf_1.icode + 1] <= 0) {
- goto L820;
- }
- /*< anam=value(ifield+2) >*/
- anam = blank_1.value[tabinf_1.ifield + 1];
- /*< iknt=nsbckt >*/
- iknt = tabinf_1.nsbckt;
- /*< 810 loc=nodplc(isbckt+iknt) >*/
- L810:
- loc = nodplc[tabinf_1.isbckt + iknt - 1];
- /*< locv=nodplc(loc+1) >*/
- locv = nodplc[loc];
- /*< anams=value(locv) >*/
- anams = blank_1.value[locv - 1];
- /*< if (anam.eq.anams) go to 820 >*/
- if (anam == anams) {
- goto L820;
- }
- /*< iknt=iknt-1 >*/
- --iknt;
- /*< if (iknt.ne.0) go to 810 >*/
- if (iknt != 0) {
- goto L810;
- }
- /*< go to 880 >*/
- goto L880;
- /*< 820 irel=nsbckt-iknt+1 >*/
- L820:
- irel = tabinf_1.nsbckt - iknt + 1;
- /*< call relmem(isbckt,irel) >*/
- relmem_(&tabinf_1.isbckt, &irel);
- /*< nsbckt=nsbckt-irel >*/
- tabinf_1.nsbckt -= irel;
- /*< go to 50 >*/
- goto L50;
- /*< 880 write (iofile,881) anam >*/
- L880:
- io__100.ciunit = status_1.iofile;
- s_wsfe(&io__100);
- do_fio(&c__1, (char *)&anam, (ftnlen)sizeof(doublereal));
- e_wsfe();
- /*< 881 format('0*error*: unknown subcircuit name: ',a8/) >*/
- /*< go to 40 >*/
- goto L40;
- /*< 890 write (iofile,891) >*/
- L890:
- io__101.ciunit = status_1.iofile;
- s_wsfe(&io__101);
- e_wsfe();
- /*< 891 format('0warning: no subcircuit definition known -- line ignored' >*/
- /*< 1/) >*/
- /*< go to 50 >*/
- goto L50;
-
- /* subcircuit call */
-
- /*< 900 call getm4(nodplc(loc+2),0) >*/
- L900:
- getm4_(&nodplc[loc + 1], &c__0);
- /*< ifld=1 >*/
- ifld = 1;
- /*< iknt=0 >*/
- iknt = 0;
- /*< 910 ifld=ifld+1 >*/
- L910:
- ++ifld;
- /*< if (nodplc(icode+ifld).ne.0) go to 920 >*/
- if (nodplc[tabinf_1.icode + ifld - 1] != 0) {
- goto L920;
- }
- /*< call extmem(nodplc(loc+2),1) >*/
- extmem_(&nodplc[loc + 1], &c__1);
- /*< iknt=iknt+1 >*/
- ++iknt;
- /*< ispot=nodplc(loc+2)+iknt >*/
- ispot = nodplc[loc + 1] + iknt;
- /*< if (value(ifield+ifld).lt.0.0d0) go to 400 >*/
- if (blank_1.value[tabinf_1.ifield + ifld - 1] < 0.) {
- goto L400;
- }
- /*< nodplc(ispot)=value(ifield+ifld) >*/
- nodplc[ispot - 1] = (integer) blank_1.value[tabinf_1.ifield + ifld - 1];
- /*< go to 910 >*/
- goto L910;
- /*< 920 if (iknt.eq.0) go to 410 >*/
- L920:
- if (iknt == 0) {
- goto L410;
- }
- /*< if (nodplc(icode+ifld).ne.1) go to 990 >*/
- if (nodplc[tabinf_1.icode + ifld - 1] != 1) {
- goto L990;
- }
- /*< call extnam(value(ifield+ifld),nodplc(loc+3)) >*/
- extnam_(&blank_1.value[tabinf_1.ifield + ifld - 1], &nodplc[loc + 2]);
- /*< go to 50 >*/
- goto L50;
- /*< 990 write (iofile,991) >*/
- L990:
- io__102.ciunit = status_1.iofile;
- s_wsfe(&io__102);
- e_wsfe();
- /*< 991 format('0*error*: subcircuit name missing'/) >*/
- /*< go to 40 >*/
- goto L40;
-
- /* end */
-
- /*< 5000 if (nsbckt.eq.0) go to 5010 >*/
- L5000:
- if (tabinf_1.nsbckt == 0) {
- goto L5010;
- }
- /*< nsbckt=0 >*/
- tabinf_1.nsbckt = 0;
- /*< write (iofile,5001) >*/
- io__103.ciunit = status_1.iofile;
- s_wsfe(&io__103);
- e_wsfe();
- /*< 5001 format('0*error*: .ends card missing'/) >*/
- /*< nogo=1 >*/
- flags_1.nogo = 1;
- /*< 5010 call clrmem(ifield) >*/
- L5010:
- clrmem_(&tabinf_1.ifield);
- /*< call clrmem(icode) >*/
- clrmem_(&tabinf_1.icode);
- /*< call clrmem(idelim) >*/
- clrmem_(&tabinf_1.idelim);
- /*< call clrmem(icolum) >*/
- clrmem_(&tabinf_1.icolum);
- /*< call clrmem(isbckt) >*/
- clrmem_(&tabinf_1.isbckt);
- /*< if (nfour.eq.0) call clrmem(ifour) >*/
- if (tabinf_1.nfour == 0) {
- clrmem_(&tabinf_1.ifour);
- }
- /*< if (nsens.eq.0) call clrmem(isens) >*/
- if (tabinf_1.nsens == 0) {
- clrmem_(&tabinf_1.isens);
- }
- /*< 6000 call second(t2) >*/
- L6000:
- second_(&t2);
- /*< rstats(1)=t2-t1 >*/
- miscel_1.rstats[0] = t2 - t1;
- /*< return >*/
- return 0;
- /*< end >*/
- } /* readin_ */
-
- #undef cvalue
- #undef nodplc
- #undef alsex
- #undef alspu
- #undef alsac
- #undef aide
- #undef aidc
- #undef ampar
- #undef aidm
- #undef aper
- #undef ablnk
- #undef alstc
- #undef area
- #undef aic
- #undef apoly
- #undef titinp
- #undef alssf
- #undef alszx
- #undef alsxqc
- #undef alsrss
- #undef alsrds
- #undef alsps
- #undef alspd
- #undef alsad
- #undef alsas
- #undef alsw
- #undef alsl
- #undef alstd
- #undef alsf
- #undef alsnl
- #undef alszo
- #undef alsz0
- #undef alspw
- #undef alsdc
- #undef alsoff
- #undef alssi
-
-
-