一种基于分布式并行运算方法的电气仿真方法与流程

文档序号:26104010发布日期:2021-07-30 18:15阅读:138来源:国知局
一种基于分布式并行运算方法的电气仿真方法与流程

本发明涉及计算机虚拟仿真技术领域,具体为一种基于分布式并行运算方法的电气仿真方法。



背景技术:

电气仿真技术广泛应用于航空、航天、舰船、兵器以及轨道交通等复杂电气系统的设计,目前通用的电气系统仿真器普遍采用基于lu三角分解的直接法来进行系统模拟仿真。对于大型稀疏矩阵,实现lu三角分解的并行运算有较大的技术障碍,因此,目前通用的求解器普遍采用单节点技术进行电气系统仿真。随着多电、全电技术的发展,独立供电系统越来越复杂,同时,随着建模技术的不断进步,电气系统仿真模型的复杂程度也越来越高,采用单节点硬件配置由于仿真效率低下,难以应对越来越高的复杂大系统仿真的需求。



技术实现要素:

本发明的目的在于提供一种基于分布式并行运算方法的电气仿真方法,以解决上述背景技术中提出的问题,以便提高复杂电气系统仿真的收敛性能和求解效率。

为实现上述目的,本发明提供如下技术方案:

一种基于分布式并行运算方法的电气仿真方法,具体包括如下步骤:

s1、在初始化时求解器读入网表文件,网表文件包括元件类型、元件管脚节点连接信息、元件模型参数、仿真步长、收敛参数、积分方法的详细信息,并基于节点电压法,构造jacobian初始矩阵;在进行牛顿-拉斐逊非线性迭代时,在任一迭代时刻,根据当前解向量状态,更新jacobian矩阵元素和右端项;

s2、对jacobian矩阵进行预处理,以减小系数矩阵的条件数;

s3、采用krylov子空间法求解矩阵方程;

s4、在各个进程中,根据主进程分配的任务,进行相应的计算;

s5、将各个进程计算完成后的数据收集到主进程中,并对数据进行综合处理得到本次迭代解向量;

s6、根据迭代结果进行收敛判断,当矩阵求解收敛,则进入步骤s7,否则返回步骤s3,根据当前计算得到的解向量,重新更新jacobian矩阵和右端项,继续迭代求解当前矩阵,直到迭代收敛;当迭代次数超过最大迭代次数仍然不收敛时,给出警告信息;

s7、根据求解向量和右端项状态与收敛准则进行比较,判断当前非线性迭代求解收敛条件是否成立,当收敛条件不成立时,将迭代得到的解向量代入到jacobian矩阵和右端项中,重新更新方程系数和激励元,进行方程求解,直到非线性求解收敛;重复非线性迭代过程,直到完成所有的求解任务。

优选的,在步骤s1中解向量的初始状态在进入迭代之前,根据历史求解数据获得,在进入非线性迭代后,为每次迭代获得的解向量。

优选的,在步骤s1中牛顿-拉斐逊非线性迭代计算过程中,采用变步长算法。

优选的,步骤s2中采用预处理算法后,根据所选择的预处理子,对右端项同步进行处理。

优选的,步骤s3中根据krylov子空间法,获得方程迭代解的表达式,并采用稀疏矩阵进行求解运算;当求解对象矩阵较大时,根据局域网中的硬件资源,对计算负荷进行分解,并分配到局域网各个进程中。

与现有技术相比,本发明的有益效果是:本发明为了为了提高复杂电气系统仿真的求解效率,提供了一种基于分布式并行运算方法的电气仿真技术。该方法基于krylov子空间迭代法,来实现分布式并行运算。由于krylov子空间迭代法的主要计算负荷为矩阵向量乘法,可以充分利用稀疏矩阵来进一步提高计算效率。分布式并行计算基于mpi并行环境实现多进程并行运算。本发明设计优化,通过充分利用局域网内的硬件计算资源,可以显著提高复杂大系统仿真的求解效率。

附图说明

图1为一种基于分布式并行运算方法的电气仿真方法的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,本发明提供一种技术方案:一种基于分布式并行运算方法的电气仿真方法,具体包括如下步骤:

一种基于分布式并行运算方法的电气仿真方法,具体包括如下步骤:

s1、在初始化时求解器读入网表文件,网表文件包括元件类型、元件管脚节点连接信息、元件模型参数、仿真步长、收敛参数、积分方法的详细信息,并基于节点电压法,构造jacobian初始矩阵;在进行牛顿-拉斐逊非线性迭代时,在任一迭代时刻,根据当前解向量状态,更新jacobian矩阵元素和右端项;在步骤s1中,解向量的初始状态在进入迭代之前,根据历史求解数据获得,在进入非线性迭代后,为每次迭代获得的解向量;牛顿-拉斐逊非线性迭代计算过程中,采用变步长算法,以提高计算效率;

s2、对jacobian矩阵进行预处理,以减小系数矩阵的条件数;采用预处理算法后,根据所选择的预处理子,对右端项同步进行处理;

s3、采用krylov子空间法求解矩阵方程;

显然,这里数值求解问题可以转化为求解通用线性方程组:

ax=b,

式中,矩阵a∈rn×n和向量b∈rn给定,x∈rn为未知向量;这里设定系数矩阵a为非奇异的大型稀疏矩阵;

取初始向量x0∈rn,则解方程组等效于求解

ay=r0,x=x0+y,r0=b-ax0,

构造一个krylov子空间

则可以求得一个使其在某种意义上是方程组ay=r0的解的最佳逼近,即

y=a-1r0≈yk=h0r0+h1ar0+hkak-1r0,

对应的原方程组ax=b的近似解为xk=x0+yk;

在上述计算过程中,将矩阵求逆运算用矩阵多项式来代替,并且在计算过程中,根据矩阵a与向量ak-1r0乘法递推得到akr0;由于矩阵a具有非常明显的稀疏特征,且稀疏矩阵与向量乘法的并行计算易于实现,因此,这里采用稀疏矩阵运算;通过利用稀疏矩阵的特性,减少存储空间,降低计算需求;

这里采用的稀疏矩阵存储格式为行压缩存储(csr,compressedsparserowstorage);这里以csr格式为例来说明稀疏矩阵的存储方式;设定有稀疏矩阵a,采用csr格式时需要创建三个数组,一个浮点型数组v,另外两个为整型数组c和r,这三个数组分别用于:

a)v数组维数为矩阵a的非零元素的个数,按从上往下、从左往右的行遍历方式保存矩阵a的非零元素;

b)c数组维数和v数组一样,用于保存v数组中元素的列索引;

c)r数组维数为矩阵a的行数,保存矩阵a的每行第一个非零元素在v中的索引;

步骤s3中,根据krylov子空间法获得方程迭代解的表达式,并采用稀疏矩阵进行求解运算;当求解对象矩阵较大时,根据局域网中的硬件资源,对计算负荷进行分解,并分配到局域网各个进程中;

s4、在各个进程中,根据主进程分配的任务,进行相应的计算;

s5、将各个进程计算完成后的数据收集到主进程中,并对数据进行综合处理得到本次迭代解向量;

s6、根据迭代结果进行收敛判断,当矩阵求解收敛,则进入步骤s7,否则返回步骤s3,根据当前计算得到的解向量,重新更新jacobian矩阵和右端项,继续迭代求解当前矩阵,直到迭代收敛;当迭代次数超过最大迭代次数仍然不收敛时,给出警告信息;

s7、根据求解向量和右端项状态与收敛准则进行比较,判断当前非线性迭代求解收敛条件是否成立,当收敛条件不成立时,将迭代得到的解向量代入到jacobian矩阵和右端项中,重新更新方程系数和激励元,进行方程求解,直到非线性求解收敛;重复非线性迭代过程,直到完成所有的求解任务。

本发明为了为了提高复杂电气系统仿真的求解效率,提供了一种基于分布式并行运算方法的电气仿真技术。该方法基于krylov子空间迭代法,来实现分布式并行运算。通过充分利用局域网内的硬件计算资源,该方法可以显著提高复杂大系统仿真的求解效率。由于krylov子空间迭代法的主要计算负荷为矩阵向量乘法,可以充分利用稀疏矩阵来进一步提高计算效率,因此在本方法中,采用基于稀疏矩阵的并行计算算法来实现复杂电气系统的综合仿真。分布式并行计算基于mpi并行环境实现多进程并行运算。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1