⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 twoprint.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
📖 第 1 页 / 共 2 页
字号:
	}	if (output->OUTPjd) {	  data[numVars++] = jdx * JNorm;	  data[numVars++] = jdy * JNorm;	}	if (output->OUTPjn) {	  data[numVars++] = jnx * JNorm;	  data[numVars++] = jny * JNorm;	}	if (output->OUTPjp) {	  data[numVars++] = jpx * JNorm;	  data[numVars++] = jpy * JNorm;	}	if (output->OUTPjt) {	  data[numVars++] = jtx * JNorm;	  data[numVars++] = jty * JNorm;	}	if (output->OUTPuNet) {	  data[numVars++] = pNode->uNet * NNorm / TNorm;	}	if (output->OUTPmun) {	  data[numVars++] = mun;	}	if (output->OUTPmup) {	  data[numVars++] = mup;	}	fwrite((char *) data, sizeof(double), numVars, file);      } else {	for (index = 0; index < output->OUTPnumVars; index++) {	  data[index] = 0.0;	}	data[0] = yScale[yIndex] * 1e-2;	data[1] = xScale[xIndex] * 1e-2;	fwrite((char *) data, sizeof(double), numVars, file);      }    }  }  /* Delete work array. */  for (xIndex = 1; xIndex <= pDevice->numXNodes; xIndex++) {    FREE(nodeArray[xIndex]);  }  FREE(nodeArray);}/* XXX This is what the SPARSE element structure looks like. * We can't take it from its definition because the include * file redefines all sorts of things.  Note that we are  * violating data encapsulation to find out the size of this * thing. */struct  MatrixElement{   spREAL       Real;    spREAL       Imag;    int          Row;    int          Col;    struct MatrixElement  *NextInRow;    struct MatrixElement  *NextInCol;};voidTWOmemStats( file, pDevice )FILE *file;TWOdevice *pDevice;{  static char *memFormat = "%-20s%10d%10d\n";  static char *sumFormat = "%20s          %-10d\n";  unsigned int size;  unsigned int memory;  TWOmaterial *pMaterial;  TWOcontact *pContact;  TWOchannel *pChannel;  int numContactNodes;  fprintf(file, "----------------------------------------\n");  fprintf(file, "Device %s Memory Usage:\n", pDevice->name );  fprintf(file, "Item                     Count     Bytes\n");  fprintf(file, "----------------------------------------\n");  size = 1;  memory = size * sizeof(TWOdevice);  fprintf( file, memFormat, "Device", size, memory );  size = pDevice->numElems;  memory = size * sizeof(TWOelem);  fprintf( file, memFormat, "Elements", size, memory );  size = pDevice->numNodes;  memory = size * sizeof(TWOnode);  fprintf( file, memFormat, "Nodes", size, memory );  size = pDevice->numEdges;  memory = size * sizeof(TWOedge);  fprintf( file, memFormat, "Edges", size, memory );  size = pDevice->numXNodes;  memory = size * sizeof(TWOelem **);  size = (pDevice->numXNodes-1) * pDevice->numYNodes;  memory += size * sizeof(TWOelem *);  size = pDevice->numElems + 1;  memory += size * sizeof(TWOelem *);  size = pDevice->numXNodes + pDevice->numYNodes;  memory += size * sizeof(double);  size = 0;  for (pMaterial = pDevice->pMaterials; pMaterial; pMaterial = pMaterial->next)    size++;  memory += size * sizeof(TWOmaterial);  size = numContactNodes = 0;  for (pContact = pDevice->pFirstContact; pContact; pContact = pContact->next) {    numContactNodes += pContact->numNodes;    size++;  }  memory += size * sizeof(TWOcontact);  size = numContactNodes;  memory += size * sizeof(TWOnode *);  size = 0;  for (pChannel = pDevice->pChannel; pChannel; pChannel = pChannel->next)    size++;  memory += size * sizeof(TWOchannel);  fprintf(file, "%-20s%10s%10d\n", "Misc Mesh", "n/a", memory);  size = pDevice->numOrigEquil;  memory = size * sizeof(struct MatrixElement);  fprintf( file, memFormat, "Equil Orig NZ", size, memory );  size = pDevice->numFillEquil;  memory = size * sizeof(struct MatrixElement);  fprintf( file, memFormat, "Equil Fill NZ", size, memory );  size = pDevice->numOrigEquil + pDevice->numFillEquil;  memory = size * sizeof(struct MatrixElement);  fprintf( file, memFormat, "Equil Tot  NZ", size, memory );  size = pDevice->dimEquil;  memory = size * 4 * sizeof(double);  fprintf( file, memFormat, "Equil Vectors", size, memory );  size = pDevice->numOrigBias;  memory = size * sizeof(struct MatrixElement);  fprintf( file, memFormat, "Bias Orig NZ", size, memory );  size = pDevice->numFillBias;  memory = size * sizeof(struct MatrixElement);  fprintf( file, memFormat, "Bias Fill NZ", size, memory );  size = pDevice->numOrigBias + pDevice->numFillBias;  memory = size * sizeof(struct MatrixElement);  fprintf( file, memFormat, "Bias Tot  NZ", size, memory );  size = pDevice->dimBias;  memory = size * 5 * sizeof(double);  fprintf( file, memFormat, "Bias Vectors", size, memory );  size = pDevice->numEdges * TWOnumEdgeStates +      pDevice->numNodes * TWOnumNodeStates;  memory = size * sizeof(double);  fprintf( file, memFormat, "State Vector", size, memory );}voidTWOcpuStats(file, pDevice)  FILE *file;  TWOdevice *pDevice;{  static char *cpuFormat = "%-20s%10g%10g%10g%10g%10g\n";  TWOstats *pStats = pDevice->pStats;  double total;  int iTotal;  fprintf(file,      "----------------------------------------------------------------------\n");  fprintf(file,      "Device %s Time Usage:\n", pDevice->name);  fprintf(file,      "Item                     SETUP        DC      TRAN        AC     TOTAL\n");  fprintf(file,      "----------------------------------------------------------------------\n");  total = pStats->setupTime[STAT_SETUP] +      pStats->setupTime[STAT_DC] +      pStats->setupTime[STAT_TRAN] +      pStats->setupTime[STAT_AC];  fprintf(file, cpuFormat, "Setup Time",      pStats->setupTime[STAT_SETUP],      pStats->setupTime[STAT_DC],      pStats->setupTime[STAT_TRAN],      pStats->setupTime[STAT_AC],      total);  total = pStats->loadTime[STAT_SETUP] +      pStats->loadTime[STAT_DC] +      pStats->loadTime[STAT_TRAN] +      pStats->loadTime[STAT_AC];  fprintf(file, cpuFormat, "Load Time",      pStats->loadTime[STAT_SETUP],      pStats->loadTime[STAT_DC],      pStats->loadTime[STAT_TRAN],      pStats->loadTime[STAT_AC],      total);  total = pStats->orderTime[STAT_SETUP] +      pStats->orderTime[STAT_DC] +      pStats->orderTime[STAT_TRAN] +      pStats->orderTime[STAT_AC];  fprintf(file, cpuFormat, "Order Time",      pStats->orderTime[STAT_SETUP],      pStats->orderTime[STAT_DC],      pStats->orderTime[STAT_TRAN],      pStats->orderTime[STAT_AC],      total);  total = pStats->factorTime[STAT_SETUP] +      pStats->factorTime[STAT_DC] +      pStats->factorTime[STAT_TRAN] +      pStats->factorTime[STAT_AC];  fprintf(file, cpuFormat, "Factor Time",      pStats->factorTime[STAT_SETUP],      pStats->factorTime[STAT_DC],      pStats->factorTime[STAT_TRAN],      pStats->factorTime[STAT_AC],      total);  total = pStats->solveTime[STAT_SETUP] +      pStats->solveTime[STAT_DC] +      pStats->solveTime[STAT_TRAN] +      pStats->solveTime[STAT_AC];  fprintf(file, cpuFormat, "Solve Time",      pStats->solveTime[STAT_SETUP],      pStats->solveTime[STAT_DC],      pStats->solveTime[STAT_TRAN],      pStats->solveTime[STAT_AC],      total);  total = pStats->updateTime[STAT_SETUP] +      pStats->updateTime[STAT_DC] +      pStats->updateTime[STAT_TRAN] +      pStats->updateTime[STAT_AC];  fprintf(file, cpuFormat, "Update Time",      pStats->updateTime[STAT_SETUP],      pStats->updateTime[STAT_DC],      pStats->updateTime[STAT_TRAN],      pStats->updateTime[STAT_AC],      total);  total = pStats->checkTime[STAT_SETUP] +      pStats->checkTime[STAT_DC] +      pStats->checkTime[STAT_TRAN] +      pStats->checkTime[STAT_AC];  fprintf(file, cpuFormat, "Check Time",      pStats->checkTime[STAT_SETUP],      pStats->checkTime[STAT_DC],      pStats->checkTime[STAT_TRAN],      pStats->checkTime[STAT_AC],      total);  total = pStats->setupTime[STAT_SETUP] +      pStats->setupTime[STAT_DC] +      pStats->setupTime[STAT_TRAN] +      pStats->setupTime[STAT_AC];  fprintf(file, cpuFormat, "Misc Time",      pStats->miscTime[STAT_SETUP],      pStats->miscTime[STAT_DC],      pStats->miscTime[STAT_TRAN],      pStats->miscTime[STAT_AC],      total);  fprintf(file, "%-40s%10g%10s%10g\n", "LTE Time",      pStats->lteTime,      "", pStats->lteTime);  total = pStats->totalTime[STAT_SETUP] +      pStats->totalTime[STAT_DC] +      pStats->totalTime[STAT_TRAN] +      pStats->totalTime[STAT_AC];  fprintf(file, cpuFormat, "Total Time",      pStats->totalTime[STAT_SETUP],      pStats->totalTime[STAT_DC],      pStats->totalTime[STAT_TRAN],      pStats->totalTime[STAT_AC],      total);  iTotal = pStats->numIters[STAT_SETUP] +      pStats->numIters[STAT_DC] +      pStats->numIters[STAT_TRAN] +      pStats->numIters[STAT_AC];  fprintf(file, "%-20s%10d%10d%10d%10d%10d\n", "Iterations",      pStats->numIters[STAT_SETUP],      pStats->numIters[STAT_DC],      pStats->numIters[STAT_TRAN],      pStats->numIters[STAT_AC],      iTotal);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -