You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

139 lines
4.6 KiB

/**********
Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles
**********/
#ifndef VSRC
#define VSRC
#include "ifsim.h"
#include "cktdefs.h"
#include "gendefs.h"
#include "complex.h"
struct trnoise_state;
/*
* structures to describe independent voltage sources
*/
/* information needed for each instance */
typedef struct sVSRCinstance {
struct sVSRCmodel *VSRCmodPtr; /* backpointer to model */
struct sVSRCinstance *VSRCnextInstance; /* pointer to next instance of
*current model */
IFuid VSRCname; /* pointer to character string naming this instance */
int VSRCowner; /* number of owner process */
int VSRCstate; /* not used */
int VSRCposNode; /* number of positive node of resistor */
int VSRCnegNode; /* number of negative node of resistor */
int VSRCbranch; /* equation number of branch equation added for source */
int VSRCfunctionType; /* code number of function type for source */
int VSRCfunctionOrder; /* order of the function for the source */
int VSRCrBreakpt; /* pwl repeat breakpoint index */
double *VSRCcoeffs; /* pointer to array of coefficients */
double VSRCdcValue; /* DC and TRANSIENT value of source */
double VSRCacPhase; /* AC phase angle */
double VSRCacMag; /* AC magnitude */
double VSRCacReal; /* AC real component */
double VSRCacImag; /* AC imaginary component */
double VSRCdF1mag; /* distortion f1 magnitude */
double VSRCdF2mag; /* distortion f2 magnitude */
double VSRCdF1phase; /* distortion f1 phase */
double VSRCdF2phase; /* distortion f2 phase */
struct trnoise_state *VSRCtrnoise_state; /* transient noise */
double VSRCr; /* pwl repeat */
double VSRCrdelay; /* pwl delay period */
double *VSRCposIbrptr; /* pointer to sparse matrix element at
* (positive node, branch equation) */
double *VSRCnegIbrptr; /* pointer to sparse matrix element at
* (negative node, branch equation) */
double *VSRCibrPosptr; /* pointer to sparse matrix element at
* (branch equation, positive node) */
double *VSRCibrNegptr; /* pointer to sparse matrix element at
* (branch equation, negative node) */
double *VSRCibrIbrptr; /* pointer to sparse matrix element at
* (branch equation, branch equation) */
unsigned VSRCdcGiven :1 ; /* flag to indicate dc value given */
unsigned VSRCacGiven :1 ; /* flag to indicate ac keyword given */
unsigned VSRCacMGiven :1 ; /* flag to indicate ac magnitude given */
unsigned VSRCacPGiven :1 ; /* flag to indicate ac phase given */
unsigned VSRCfuncTGiven :1 ; /* flag to indicate function type given */
unsigned VSRCcoeffsGiven :1 ; /* flag to indicate function coeffs given */
unsigned VSRCdGiven :1 ; /* flag to indicate source is a disto input */
unsigned VSRCdF1given :1; /* flag to indicate source is an f1 dist input */
unsigned VSRCdF2given :1; /* flag to indicate source is an f2 dist input */
unsigned VSRCrGiven :1; /* flag to indicate repeating pwl */
} VSRCinstance ;
/* per model data */
typedef struct sVSRCmodel {
int VSRCmodType; /* type index of this device type */
struct sVSRCmodel *VSRCnextModel; /* pointer to next possible model
*in linked list */
VSRCinstance * VSRCinstances; /* pointer to list of instances
* that have this model */
IFuid VSRCmodName; /* pointer to character string naming this model */
} VSRCmodel;
/* source function types (shared with current sources) */
#ifndef PULSE
#define PULSE 1
#define SINE 2
#define EXP 3
#define SFFM 4
#define PWL 5
#define AM 6
#define TRNOISE 7
#endif /*PULSE*/
/* device parameters */
#define VSRC_DC 1
#define VSRC_AC 2
#define VSRC_AC_MAG 3
#define VSRC_AC_PHASE 4
#define VSRC_PULSE 5
#define VSRC_SINE 6
#define VSRC_EXP 7
#define VSRC_PWL 8
#define VSRC_SFFM 9
#define VSRC_BR 10
#define VSRC_FCN_TYPE 11
#define VSRC_FCN_ORDER 12
#define VSRC_FCN_COEFFS 13
#define VSRC_AC_REAL 14
#define VSRC_AC_IMAG 15
#define VSRC_POS_NODE 16
#define VSRC_NEG_NODE 17
#define VSRC_CURRENT 18
#define VSRC_POWER 19
#define VSRC_D_F1 20
#define VSRC_D_F2 21
#define VSRC_AM 22
#define VSRC_R 23
#define VSRC_TD 24
#define VSRC_TRNOISE 25
/* model parameters */
/* device questions */
/* model questions */
#include "vsrcext.h"
#endif /*VSRC*/