📄 twodev.h
字号:
/**********Copyright 1991 Regents of the University of California. All rights reserved.Authors: 1987 Karti Mayaram, 1991 David Gates**********//* * Two-Dimensional Numerical Device Data Structures */#ifndef TWODEV_H#define TWODEV_H#include "gendev.h"typedef struct sTWOdevice{ double *dcSolution; /* solution vector for device */ double *dcDeltaSolution; /* delta solution vector */ double *copiedSolution; /* copy of the solution vector */ double *rhs; /* rhs vector */ double *rhsImag; /* imaginary part of rhs vector */ char *matrix; /* matrix for device equations */ int solverType; /* what is matrix set up to do */ int dimEquil; /* dimension in equilibrium */ int numOrigEquil; /* orig number of nz's in equilibrium */ int numFillEquil; /* fill number of nz's in equilibrium */ int dimBias; /* dimension under bias */ int numOrigBias; /* orig number of nz's under bias */ int numFillBias; /* fill number of nz's under bias */ int numEqns; /* number of equations */ int poissonOnly; /* flag for Poisson eqn solution */ struct sTWOelem **elements; /* 1D list of elements */ struct sTWOelem ***elemArray; /* 2D list of elements for printing */ double **devStates; /* device states */ double *xScale; /* array of X node locations */ double *yScale; /* array of Y node locations */ int numXNodes; /* number of X nodes */ int numYNodes; /* number of Y nodes */ int numNodes; /* total number of nodes */ int numEdges; /* total number of edges */ int numElems; /* total number of elements */ struct sTWOcontact *pFirstContact; /* first contact */ struct sTWOcontact *pLastContact; /* last contact */ struct sTWOchannel *pChannel; /* surface mobility channel */ struct sMaterialInfo *pMaterials; /* temp-dep material information */ struct sStatInfo *pStats; /* run-time statistics */ int converged; /* flag for device convergence */ int iterationNumber; /* device iteration counter */ double width; /* device width in CM */ double rhsNorm; /* norm of rhs vector */ double abstol; /* absolute tolerance for device */ double reltol; /* relative tolerance for device */ char *name; /* name of device */} TWOdevice;#define devState0 devStates[0]#define devState1 devStates[1]#define devState2 devStates[2]#define devState3 devStates[3]#define devState4 devStates[4]#define devState5 devStates[5]#define devState6 devStates[6]#define devState7 devStates[7]typedef struct sTWOcontact{ struct sTWOcontact *next; /* pointer to next contact */ struct sTWOnode **pNodes; /* pointer to the contact nodes */ int numNodes; /* number of nodes in contact */ int id; /* unique contact identifier */ double workf; /* metal work function */} TWOcontact;/* Structure for channels. * A channel is divided into 'columns' that are perpendicular to the * channel's insulator/semiconductor interface. Each column begins * at its 'seed', the closest semiconductor element to the interface. * It is assumed that the current flows parallel to the interface. */typedef struct sTWOchannel{ struct sTWOchannel *next; /* pointer to next channel */ struct sTWOelem *pSeed; /* pointer to the seed element */ struct sTWOelem *pNElem; /* pointer to the insulator element */ int id; /* unique channel identifier */ int type; /* ID of direction to interface */} TWOchannel;struct mosConductances{ double dIdDVdb; double dIdDVsb; double dIdDVgb; double dIsDVdb; double dIsDVsb; double dIsDVgb; double dIgDVdb; double dIgDVsb; double dIgDVgb;};#endif /* TWODEV_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -