SPARSE(稀松矩阵求解器)

合集下载

ANSYS教程,非线性结构分析过程

ANSYS教程,非线性结构分析过程

ANSYS教程,非线性结构分析过程尽管非线性分析比线性分析变得更加复杂,但处理基本相同。

只是在非线形分析的适当过程中,添加了需要的非线形特性。

非线性结构分析的基本分析过程也主要由建模、加载并求解和观察结果组成。

下面来讲解其主要步骤和各个选项的处理方法。

建模这一步对线性和非线性分析都是必需的,尽管非线性分析在这一步中可能包括特殊的单元或非线性材料性质,如果模型中包含大应变效应,应力─应变数据必须依据真实应力和真实(或对数)应变表示。

加载求解在建立好有限元模型之后,将进入ANSYS求解器(GUI:Main Menu | Solution),并根据分析的问题指定新的分析类型(ANTYPE)。

求解问题的非线性特性在ANSYS中是通过指定不同的分析选项和控制选项来定义的。

非线性分析不同于线性分析之处在于,它通常要求执行多荷载步增量和平衡迭代。

下面就详细讲解一下进行非线性结构分析需要定义的各个求解选项、分析选项和控制选项是如何设置的,以及他们的意义是什么。

求解控制对于一些基本的非线性问题的分析选项,可以通过ANSYS提供的求解控制对话框中的选项设置来完成。

选择菜单路径:Main Menu | Solution | Analysis Type | Sol’n Controls,将弹出求解控制(Solution Controls)对话框,如下图所示。

从图中可以看出该对话框主要包括5个选项卡:基本选项(Basic)、瞬态选项(Transient)、求解选项(Sol’n Options)、非线性选项(Nonlinear)和高级非线性选项(Advanced NL)。

如果开始一项新的分析,在设置分析类型和非线性选项时,选择“Large Displacement Static”选项(不是所有的非线性分析都支持大变形)。

如果想要重新启动一个失败的非线性分析,则选择“Restart Current Analysis”选项。

选中下面的“Calculate prestress effects”单选按钮用于有预应力的模态分析时的预应力计算,具体内容见模态分析部分。

稀疏矩阵(sparsematrix)

稀疏矩阵(sparsematrix)
在使用计算机存储和操rsematrix)
在数值分析中,稀疏矩阵(Sparse matrix),是其元素大部分为零的矩阵。反之,如果大部分元素都非零,则这个矩阵是稠密的。在科学与 工程领域中求解线性模型时经常出现大型的稀疏矩阵。 在使用计算机存储和操作稀疏矩阵时,经常需要修改标准算法以利用矩阵的稀疏结构。由于其自身的稀疏特性,通过压缩可以大大节省稀疏 矩阵的内存代价。更为重要的是,由于过大的尺寸,标准的算法经常无法操作这些稀疏矩阵。
版权声明:本文为博主原创文章,未经博主允许不得转载。

matlab大规模稀疏矩阵

matlab大规模稀疏矩阵

处理大规模稀疏矩阵是MATLAB 的一项重要功能。

稀疏矩阵是一种元素大部分为0的矩阵,这种矩阵的存储和计算可以通过特殊的方法进行优化,节省空间和计算资源。

在MATLAB 中,你可以使用`sparse` 函数创建稀疏矩阵。

以下是一个例子:
```matlab
创建一个5x5的稀疏矩阵,其中只有对角线上的元素是1,其余元素都是0
n = 5;
sparse(n,n,1,n,n);
```
对于大规模稀疏矩阵,MATLAB 提供了各种工具和函数,如`spconvert`,可以将稀疏矩阵转换为`sparse` 格式,以及`spparms`,可以设置稀疏矩阵计算的参数。

此外,MATLAB 的Parallel Computing Toolbox 提供了并行处理大规模稀疏矩阵的工具,如`parsparse` 函数和`parfor` 循环。

这些工具可以让你在多个处理器核心上并行处理稀疏矩阵,提高大规模计算的效率。

请注意,对于非常大的稀疏矩阵,可能需要考虑内存限制和计算效率问题。

MATLAB 的内存管理和并行计算工具可以帮助你解决这些问题。

稀疏算子 编译

稀疏算子 编译

稀疏算子(Sparse Operator)是指只对部分元素进行操作的算子,例如矩阵乘法中的稀疏矩阵。

在编译过程中,稀疏算子的处理通常涉及到如何有效地存储和计算稀疏矩阵,以及如何优化稀疏算子的计算性能。

以下是一些编译中处理稀疏算子的常见方法:
1.压缩存储:对于稀疏矩阵,可以使用压缩存储方法来减少存储空间的使用。


如,可以使用三元组表示法或行主序存储法等。

2.稀疏算子优化:针对稀疏算子进行优化,可以显著提高计算性能。

例如,可以
使用快速傅里叶变换(FFT)等算法加速稀疏矩阵乘法等操作。

3.代码生成优化:在编译器中,可以根据稀疏算子的特性生成优化的代码。

例如,
可以使用向量化指令、并行计算等技术来加速稀疏算子的计算。

4.内存优化:对于大规模的稀疏矩阵,内存的使用也是一个重要的问题。

可以使
用内存优化技术,例如缓存优化、内存对齐等,来提高内存的使用效率。

5.并行计算:对于大规模的稀疏矩阵操作,可以使用并行计算技术来加速计算。

例如,可以将稀疏矩阵分成多个子矩阵,并使用多线程或分布式计算等技术进行并行处理。

总之,在编译过程中处理稀疏算子需要综合考虑存储、计算和内存等多个方面,并使用各种优化技术来提高计算性能和内存使用效率。

稀疏矩阵及其压缩存储方法

稀疏矩阵及其压缩存储方法

稀疏矩阵及其压缩存储方法1.基本概念稀疏矩阵(SparseMatrix):是矩阵中的一种特殊情况,其非零元素的个数远小于零元素的个数。

设m行n列的矩阵含t个非零元素,则称以二维数组表示高阶的稀疏矩阵时,会产生零值元素占的空间很大且进行了很多和零值的运算的问题。

特殊矩阵:值相同的元素或0元素在矩阵中的分布有一定的规律。

如下三角阵、三对角阵、稀疏矩阵。

压缩存储:为多个值相同的元素只分配一个存储空间;对0元素不分配空间。

目的是节省大量存储空间。

n x n的矩阵一般需要n2个存储单元,当为对称矩阵时需要n(1+n)/2个单元。

2.三元组顺序表——压缩存储稀疏矩阵方法之一(顺序存储结构)三元组顺序表又称有序的双下标法,对矩阵中的每个非零元素用三个域分别表示其所在的行号、列号和元素值。

它的特点是,非零元在表中按行序有序存储,因此便于进行依行顺序处理的矩阵运算。

当矩阵中的非0元素少于1/3时即可节省存储空间。

(1)稀疏矩阵的三元组顺序表存储表示方法#define MAXSIZE 12500 // 假设非零元个数的最大值为12500typedef struct {int i, j; // 该非零元的行下标和列下标ElemType e; //非零元素的值} Triple; // 三元组类型typedef union { //共用体Triple data[MAXSIZE + 1]; // 非零元三元组表,data[0]未用int mu, nu, tu; // 矩阵的行数、列数和非零元个数} TSMatrix; // 稀疏矩阵类型(2)求转置矩阵的操作◆用常规的二维数组表示时的算法for (col=1; col<=nu; ++col)for (row=1; row<=mu; ++row)T[col][row] = M[row][col];其时间复杂度为: O(mu×nu)◆用三元组顺序表表示时的快速转置算法Status FastTransposeSMatrix(TSMatrix M, TSMatrix &T) {// 采用三元组顺序表存储表示,求稀疏矩阵M的转置矩阵TT.mu = M.nu; T.nu = M.mu; T.tu = M.tu;if (T.tu) {for (col=1; col<=M.nu; ++col) num[col] = 0;for (t=1; t<=M.tu; ++t) ++num[M.data[t].j];// 求M 中每一列所含非零元的个数cpot[1] = 1;for (col=2; col<=M.nu; ++col) cpot[col] = cpot[col-1] + num[col-1];// 求M 中每一列的第一个非零元在b.data 中的序号for (p=1; p<=M.tu; ++p) { // 转置矩阵元素col = M.data[p].j; q = cpot[col];T.data[q].i =M.data[p].j; T.data[q].j =M.data[p].i;T.data[q].e =M.data[p].e; ++cpot[col];} // for} // ifreturn OK;} // FastTransposeSMatrix其时间复杂度为: O(mu +nu)3.行逻辑联接的顺序表——压缩存储稀疏矩阵方法之二(链接存储结构)行逻辑联接的顺序表:稀疏矩阵中为了随机存取任意一行的非0元素,需要知道每一行的第一个非0元素在三元组表中的位置,因此将上述快速转置算法中指示行信息的辅助数组cpot 固定在稀疏矩阵的存储结构中,让每一行对应一个单链表,每个单链表都有一个表头指针,这种“带行链接信息”的三元组表即称为行逻辑联接的顺序表。

ssnmf 稀疏半非负矩阵

ssnmf 稀疏半非负矩阵

ssnmf 稀疏半非负矩阵SSNMF(Sparse Semi-Negative Matrix Factorization)是一种用于高维数据分析的矩阵分解方法。

它可以有效地提取出数据中的稀疏和半非负特征,广泛应用于图像处理、文本挖掘、社交网络分析等领域。

SSNMF通过将原始数据矩阵分解为两个低秩矩阵的乘积,来实现特征提取和数据降维的目的。

其中,一个矩阵包含了数据中的稀疏特征,另一个矩阵包含了数据中的半非负特征。

在SSNMF中,稀疏特征矩阵表示了原始数据中的稀疏性信息。

稀疏性是指数据中只有少数几个元素具有较大的值,而大部分元素都接近于零。

通过提取出稀疏特征,我们可以发现数据中的重要模式和结构。

与稀疏特征相对应的是半非负特征矩阵。

半非负特征是指数据中的元素都是非负的,但不一定是稀疏的。

通过提取出半非负特征,我们可以捕捉到数据中的整体趋势和分布情况。

SSNMF的关键在于如何选择合适的约束条件和优化算法来进行矩阵分解。

一种常用的约束条件是稀疏性约束,通过最小化稀疏特征矩阵中的非零元素个数,来实现稀疏特征的提取。

另一种常用的约束条件是非负性约束,通过要求矩阵中的元素都为非负数,来实现半非负特征的提取。

SSNMF的优化算法通常采用迭代的方式进行求解。

常用的方法包括交替最小二乘法(Alternating Least Squares, ALS)、梯度下降法(Gradient Descent, GD)等。

这些算法通过不断更新稀疏特征和半非负特征矩阵,使其逐渐逼近原始数据矩阵,从而得到更好的分解结果。

SSNMF的应用非常广泛。

在图像处理领域,可以利用SSNMF提取图像的纹理特征、边缘特征等,从而实现图像分类、图像检索等任务。

在文本挖掘领域,可以利用SSNMF提取文档的主题特征、关键词特征等,从而实现文本聚类、文本分类等任务。

在社交网络分析领域,可以利用SSNMF提取用户的兴趣特征、社区特征等,从而实现用户推荐、社区发现等任务。

ansys常见错误

ansys常见错误

ansys分析出现问题NO.0052some contact elements overlap with the other contact element which can cause over constraint.这是由于在同一实体上,即有绑定接触(MPC)的定义,又有刚性区或远场载荷(MPC)的定义,操作中注意在定义刚性区或远场载荷时避免选择不必要的DOF自由度,以消除过约束NO.0053Shape testing revealed that 450 of the 1500 new or modified elements violate shape warning limits.是什么原因造成的呢?单元网格质量不够好尽量,用规则化网格,或者再较为细密一点NO.0054在用Area Fillet对两空间曲面进行倒角时出现以下错误:Area 6 offset could not fully converge to offset distance 10. Maximum error between the two surfaces is 1% of offset distance.请问这是什么错误?怎么解决?其中一个是圆柱接管表面,一个是碟形封头表面。

ansys的布尔操作能力比较弱。

如果一定要在ansys里面做的话,那么你试试看先对线进行倒角,然后由倒角后的线形成倒角的面。

建议最好用UG、PRO/E这类软件生成实体模型然后导入到ansysNO.0055There are 21 small equation solver pivot terms.;SOLID45 wedges are recommended only in regions of relatively lowstress gradients.第一个问题我自己觉得是在建立contact时出现的错误,但自己还没有改正过来;第二个也不知道是什么原因。

ANSYS非线性不收敛问题及解决

ANSYS非线性不收敛问题及解决

非线性逼近技术。

在ANSYS里还是牛顿-拉普森法和弧长法。

牛顿-拉普森法是常用的方法,收敛速度较快,但也和结构特点和步长有关。

弧长法常被某些人推崇备至,它能算出力加载和位移加载下的响应峰值和下降响应曲线。

但也发现:在峰值点,弧长法仍可能失效,甚至在非线性计算的线性阶段,它也可能会无法收敛。

本文介绍了ANSYS中常见的一些非线性不收敛问题和相关分析。

影响非线性收敛稳定性及其速度的因素很多:1、模型一一主要是结构刚度的大小。

对于某些结构,从概念的角度看,可以认为它是几何不变的稳定体系。

但如果结构相近的几个主要构件刚度相差悬殊,在数值计算中就可能导致数值计算的较大误差,严重的可能会导致结构的几何可变性一一忽略小刚度构件的刚度贡献。

如出现上述的结构,要分析它,就得降低刚度很大的构件单元的刚度,可以加细网格划分,或着改用高阶单元(BEAM->SHELL,SHELL->SOLID)。

构件的连接形式(刚接或铰接)等也可能影响到结构的刚度。

2、线性算法(求解器)。

ANSYS中的非线性算法主要有:稀疏矩阵法(SPARSE DIRECT SOLVER)、预共轭梯度法(PCG SOLVER)和波前法(FRONT DIRECT SLOVER)。

稀疏矩阵法是性能很强大的算法,一般默认即为稀疏矩阵法(除了子结构计算默认波前法外)。

预共轭梯度法对于3-D实体结构而言是最优的算法,但当结构刚度呈现病态时,迭代不易收敛。

为此推荐以下算法:1) 、BEAM单元结构,SHELL单元结构,或以此为主的含3-D SOLID 的结构,用稀疏矩阵法;2)、3-D SOLID的结构,用预共轭梯度法;3)、当你的结构可能出现病态时,用稀疏矩阵法;4)、当你不知道用什么时,可用稀疏矩阵法。

3、非线性逼近技术。

在ANSYS里还是牛顿-拉普森法和弧长法。

牛顿-拉普森法是常用的方法,收敛速度较快,但也和结构特点和步长有关。

弧长法常被某些人推崇备至,它能算出力加载和位移加载下的响应峰值和下降响应曲线。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

●SPARSE(稀松矩阵求解器)
适合与求解实数对称或非对称矩阵、复数对称与非对称矩阵。

仅适用于静力分析、完全法谐响应分析、完全法瞬态分析、子结构分析、PSD谱分析,对线性与非线性计算均有效。

特别的,对于常遇到的正定矩阵的非线性中,SPARSE求解器优先推荐。

而在网格拓扑结构常发生变化的接触分析中,SUBSTR求解器具有独特的优势。

其他典型的应用有:
由SHELL单元或者BEAM单元构建的计算模型;由SHELL单元或者BEAM单元或者SOLID单元构建的计算模型。

还有多分支的结构,如汽车尾气排放和涡轮叶片
由于将计算速度和效用结合较为完美,因此这是一种进行迭代计算很有效的求解器。

一般而言,SAPRSE求解器相对于FRONT求解器而言,需要的内存较小,但是跟PCG求解器使用的计算机内存却大致相当。

如果内存有限,该求解器在不增加CPU时间和益处内存的情况下,并不能充分工作。

稀疏求解法是使用消元为基础的直接求解法,在ANSYS10.0中其为默认求解选项。

其可以支持实矩阵与复矩阵、对称与非对称矩阵、拉格朗日乘子。

其支持各类分析,病态矩阵也不会造成求解的困难。

稀疏矩阵求解器由于需要存储分解后的矩阵因此对于内存要求较高。

其具有一定的并行性,可以利用到4-8cpu.
该求解器具有3种求解方式:核内求解,最优核外求解,最小核外求解。

强烈推荐使用核内求解,此时基本不需要磁盘的输入与输出,能大幅度提高求解速度;而核外求解会受到磁盘输入/输出速度的影响。

对于复矩阵或非对称矩阵一般需要通常求解2倍的内存与计算时间。

相关命令:
bcsoption,,incoere 运行核内计算
bcsoption,,optimal 最优核外求解
bcsoption,,minimal 最小核外求解(非正式选项)
bcsoption,,force,memrory_size 指定ANSYS使用内存大小
/config,nproce,CPU_number 指定使用cpu的数目
●FRONT(波前求解器)
程序通过三角化消去所有可以由其他自由度表达的自由度,知道最终形成三角
矩阵,求解器在三角化过程中保留的节点自由度数目称为波前,在所有自由度被处理后波前为0,整个过程中波前的最大值称为最大波前,最大波前越大所需内存越大。

整个过程
中波前的均方值称为RMS波前,RMS波前越大,求解时间越长
相关命令:EQSLV,FRONT 选用波前求解.
●JCG(雅克比共和梯度矩阵迭代计算求解器)
仅适用于静力分析、完全法谐响应分析、完全法瞬态分析。

可应用到结构分析和多物理场分析中。

可用于求解对称、非对称矩阵、复杂矩阵、正定矩阵、不定矩阵的求解。

推荐在在结构和多物理场的环境中的三维谐响应分析中使用该求解器。

在热传递、电磁学、压电体和声场分析中十分有效。

该方法在分布式内存的分析以及共享内存的分析中同样可以运用。

另外该方法的局限性是该求解器仅适用于刚度对称的静力分析和完全法瞬态分析。

在分布式ANSYS中不支持 fast thermal操作。

●ICCG(非完全Cholesky共轭梯度矩阵迭代计算求解器)
其类似于JCG求解器,但比之使用了更加复杂的先决条件,所以在病态矩阵的求解上比JCG 更好,但所用的内存也是JCG的2倍。

同样也只能用于静态分析、安全谐波分析和完全瞬态分析。

可用于求解对称、非对称矩阵、复杂矩阵、正定矩阵、不定矩阵的求解。

推荐在在结构和多物理场的环境中的三维谐响应分析中使用该求解器。

相对于JCG求解器而言,他需要更大的内存。

●QMR(准最小余量迭代求解器)
该求解器仅适用与完全发谐响应分析,可应用到高频电磁分析,并可以应用到对称矩阵、复杂矩阵、正定矩阵与不定矩阵的求解当中去,该求解法比ICCG求解法更加稳定。

●PCG(预条件求解器)
跟SPARSE 和 FRONT求解器相比,他要求较小的硬盘空间,对于求解较大模型计算速度更快。

对于板壳、3-D模型,较大2-D模型,P-方法分析十分有效,对于其他问题如带有对称矩阵,稀松矩阵、正定、不定的非线性求解中,PCG求解方法也是十分值得推荐的。

PCG 求解法要求的内存至少是JCG的两倍。

仅对静力分析、完全法瞬态分析,LANCZOS扩展的模态分析有效,PCG求解器可以有效的带有约束方程的矩阵求解。

该方法提供了其他供选择操作
(1)MSAVE命令,可以使得PCG在应用时节省大量内存
(2)PRECISION命令,用于指明单精度,系统可因此减少30%~70%的内存需求
PCG求解器可以处理有高级单元带来的病态问题。

病态可以有单元的大长宽比造成,也可以由单元的接触属性,弹塑性属性等造成。

AMG(代数多重网格迭代方程求解器)
仅适用于静力分析和完全发瞬态分析。

AMG求解器适用于求解对称矩阵。

该求解器并不能用于子模型的分析求解,也不能应用于产生、利用以及还有P-单元的模型的分析。

如果还有P-单元,则直接转向波前求解器。

对于单一结构(只含有UXYZ与ROTXYZ自由度的结构)的求解,该方法十分有效。

在单一热分析(只含有TEMP)的分析中该方法也可以应用。

但是并不是十分有效。

在病态问题中ICCG求解遇到收敛困难,则推荐使用AMG求解。

在单核环境中,一个CPU时间里,在共享存储并行机上处理病态问题AMG处理器的处理效率要比ICCG高很多,尽管对于常见问题,AMG交付的处理与ICCG差不多。

在多核计算环境中,AMG求解器在共享存储并行机上处理上处理病态问题的效率比ICCG要高达数倍,同样的情况也发生在处理带有不定矩阵的非线性分析中。

AMG求解是ANSYA高效求解的一部分。

但是这需要额外的LISENCE。

关于详细的多核求解的信息,请参看ANSYS帮助。

AMG是一个专门为SMP系统服务的求解器,其适用于静态和完全瞬态分析,对于单场的结构分析十分有效,对于病态问题的求解性也优于JCG与ICCG求解器。

●ITER(自动选择迭代容差求解器)
自动选择迭代容差求解器适用于解决多物理场问题。

对于迭代求解的容差是自由选择,其的容差选择是基于用户选择的容差(通过TOLER来确定)。

这个求解器仅对电磁分析、稳态/瞬态热分析、静态线性分析、没有高阶单元的完全瞬态结构分析实用。

如果你需要了解自动求解器操作的选择命令,但并没有达到合适的选择条件,则计算会自动转移到波前求解器进行求解。

●DSPARSE(分布式稀松矩阵求解器)
分布式稀松矩阵求解器,在数学上他近似于SPARSE(稀松矩阵求解器)求解器,主要局别是在于该求解器是在分布式架构上是并行计算的。

因此,他在12核的系统中可以达到60多倍的加速。

然而,他的总内存使用要远远高于非分布式SPARSE求解器,因为每个分块的计算是在单个CPU的内存中完成分块计算的。

与SPARSE求解器类似,这个求解器非常适合求解含有病态问题的非线性求解。

DSPARSE求解器只在实对称矩阵、复对称矩阵中有效。

系统架构的不同使得该求解器的效率有所区别,适合于该求解器的理想架构是:单核机器组成的多机系统,系统通过分布每个机器的I/O结构来实现数据交换,并要求有高速网络支持。

这样的系统如Infiniband.
该求解器只对有分布式LISENCE的ansys使用。

更多信息请参看:Distributed ANSYS Guide. 求解器对内存及I/O需求。

相关文档
最新文档