1 / 3
文档名称:

ACSWEEP算法实现.docx

格式:docx   大小:22KB   页数:3页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ACSWEEP算法实现.docx

上传人:xunlai783 2018/3/1 文件大小:22 KB

下载得到文件列表

ACSWEEP算法实现.docx

文档介绍

文档介绍:ACSWEEP的算法实现过程描述:
由于在GSS的代码中,AC求解器与DDML1共享Jacobian矩阵,因此AC求解器的调用必须紧跟在DDML1稳态求解之后,每求解一次线性方程组,可以得到半导体器件对于一个频率的正弦输入的响应,在应用中往往扫描一个很宽的频带来获得器件的频率特性。
通过DDML1稳态求解后,结果由电势、电子密度、空穴密度三部分保留到DDMAC中使用。当系统读入METHOD的TYPE=DDMAC的时候,就是开始执行交流扫描了。
首先读到了“SOLVE”命令,开始进入求解程序。函数中,首先给TYPE设置一个默认的INVALID_SOLUTIONTYPE.;接着开始读入type=ACSWEEP替换刚才的默认类型值。一旦选择了solvespecify=acsweep以后,马上进行的操作有:;、FStop、FMultiple和VAC,默认值分别为1MHz,10GHz,,;(此处只有一个base电极),如果用户未定义电极则输出错误提示;,默认为“result”;,获得求解器为DDMACSolver(当然如果没有选择求解器会提示错误)。
接下来是上面第5步调用AC求解器的过程:首先为求解器设置一个标签,创建一个求解群组;初始化用户定义的相关函数,然后载入。(由于我自己写得程序没有写出相关函数);
接下来是创建线性求解器并且调整一些参数,具体过程如下:"AC Small Signal Solver init...";,建立了全局数组和本地数组local_index_array,然后加上边界结点也存入刚才的全局数组和本地数组local_index_array中。保存全局和本地的自由度,分别等于全局数组和本地数组的长度。接下来计算并且保存刚刚建立的矩阵n_nz和n_oz的非零项。设置各种迭代参数。然后创建全局求解向量x[6084],L,b与x向量相同;;然后创建含有6084个分量的串行向量lx【6084】,lb[6084],创建索引集gis和lis,创建散射向量scatter,然后创建矩阵A并设置矩阵A的维数,并未矩阵A分配存储。然后创建矩阵A的线性求解器,并与用户定义的求解器PC等比较调换;,并设置外部的矩阵用于存储Jacobian矩阵;()初始化,保存电压,电流等信息。然后进入求解器进行求解。
AC求解的实现如下:
---pre_solve_process(bool /*load_solution*/)
该函数的作用是:将直流计算DC的结果存放到向量S中,然后将向量S用于建立Jacobian矩阵,一般是在所有区域上进行。该函数实现如下:;,y,s,并且将结点信息保存到缓冲器ix,y,s中;、电子、空穴偏移信息存入ix、y、s中保存,如果还有额外的外界温度的话,也加上偏移量保存到数据缓冲器ix、y、s中去;并将缓冲器得到的值ix,y,s插