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.
 
 
 
 
 
 

101 lines
3.5 KiB

/**********
Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles
**********/
#ifndef VCVS
#define VCVS
#include "ngspice/ifsim.h"
#include "ngspice/cktdefs.h"
#include "ngspice/gendefs.h"
#include "ngspice/complex.h"
/*
* structures to describe Voltage Controlled Voltage Sources
*/
/* information to describe a single instance */
typedef struct sVCVSinstance {
struct sVCVSmodel *VCVSmodPtr; /* backpointer to model */
struct sVCVSinstance *VCVSnextInstance; /* pointer to next instance of
*current model*/
IFuid VCVSname; /* pointer to character string naming this instance */
int VCVSstates; /* state info */
int VCVSposNode; /* number of positive node of source */
int VCVSnegNode; /* number of negative node of source */
int VCVScontPosNode; /* number of positive node of controlling source */
int VCVScontNegNode; /* number of negative node of controlling source */
int VCVSbranch; /* equation number of branch equation added for v source */
double VCVSinitCond; /* initial condition (of controlling source) */
double VCVScoeff; /* coefficient */
double *VCVSposIbrPtr; /* pointer to sparse matrix element at
* (positive node, branch equation) */
double *VCVSnegIbrPtr; /* pointer to sparse matrix element at
* (negative node, branch equation) */
double *VCVSibrPosPtr; /* pointer to sparse matrix element at
* (branch equation, positive node) */
double *VCVSibrNegPtr; /* pointer to sparse matrix element at
* (branch equation, negative node) */
double *VCVSibrContPosPtr; /* pointer to sparse matrix element at
*(branch equation, control positive node)*/
double *VCVSibrContNegPtr; /* pointer to sparse matrix element at
*(branch equation, control negative node)*/
unsigned VCVScoeffGiven :1 ;/* flag to indicate function coeffs given */
int VCVSsenParmNo; /* parameter # for sensitivity use;
set equal to 0 if not a design parameter*/
} VCVSinstance ;
#define VCVSvOld VCVSstates
#define VCVScontVOld VCVSstates + 1
/* per model data */
typedef struct sVCVSmodel { /* model structure for a source */
int VCVSmodType; /* type index of this device type */
struct sVCVSmodel *VCVSnextModel; /* pointer to next possible model
*in linked list */
VCVSinstance * VCVSinstances; /* pointer to list of instances
* that have this model */
IFuid VCVSmodName; /* pointer to character string naming this model */
/* --- end of generic struct GENmodel --- */
} VCVSmodel;
/* device parameters */
#define VCVS_GAIN 1
#define VCVS_POS_NODE 2
#define VCVS_NEG_NODE 3
#define VCVS_CONT_P_NODE 4
#define VCVS_CONT_N_NODE 5
#define VCVS_BR 6
#define VCVS_IC 7
#define VCVS_CONT_V_OLD 8
#define VCVS_GAIN_SENS 9
#define VCVS_CURRENT 10
#define VCVS_POWER 11
#define VCVS_VOLTS 12
/* model parameters */
/* device questions */
#define VCVS_QUEST_SENS_REAL 201
#define VCVS_QUEST_SENS_IMAG 202
#define VCVS_QUEST_SENS_MAG 203
#define VCVS_QUEST_SENS_PH 204
#define VCVS_QUEST_SENS_CPLX 205
#define VCVS_QUEST_SENS_DC 206
/* model questions */
#include "vcvsext.h"
#endif /*VCVS*/