ngspice/src/include/sen2defs.h

70 lines
2.4 KiB
C

/**********
Copyright 1990 Regents of the University of California. All rights reserved.
**********/
/*
* SENdefs.h - structures for sensitivity package
*/
#ifndef SENSTRUCTS
#define SENSTRUCTS
#include "smpdefs.h"
#include "jobdefs.h"
typedef struct {
int JOBtype;
JOB *JOBnextJob; /* pointer to next thing to do */
char *JOBname; /* name of this job */
int SENnumVal; /* length of the next two arrays */
char **SENdevices; /* names of the devices to do sensetivity analysis of */
char **SENparmNames;/* parameters of the above devices to do analysis wrt */
unsigned int SENinitflag :1 ; /* indicates whether sensitivity structure*/
/* is to be initialized */
unsigned int SENicflag :1 ; /* indicates whether initial conditions
are specified for transient analysis */
unsigned int SENstatus :1; /* indicates whether perturbation
is in progress*/
unsigned int SENacpertflag :1; /* indictes whether the perturbation
is to be carried out in ac analysis
(is done only for first frequency )*/
int SENmode; /* indicates the type of sensitivity analysis
reqired: DC, Transient, or AC */
int SENparms; /* # of design parameters */
double SENpertfac; /* perturbation factor (for active
devices )*/
double **SEN_Sap; /* sensitivity matrix (DC and transient )*/
double **SEN_RHS; /* RHS matrix (real part)
contains the sensitivity values after SMPsolve*/
double **SEN_iRHS; /* RHS matrix (imag part )
contains the sensitivity values after SMPsolve*/
int SENsize; /* stores the number of rows of each of the above
three matrices */
SMPmatrix *SEN_Jacmat; /* sensitivity Jacobian matrix, */
double *SEN_parmVal; /* table containing values of design parameters */
char **SEN_parmName; /* table containing names of design parameters */
} SENstruct;
/* SENmode */
#define DCSEN 0x1
#define TRANSEN 0x2
#define ACSEN 0x4
#define NORMAL 0
#define PERTURBATION 1
#define OFF 0
#define ON 1
#define SEN_AC 1
#define SEN_DC 2
#define SEN_TRAN 3
#define SEN_DEV 4
#define SEN_PARM 5
#endif /* SENSTRUCTS */