admin 管理员组

文章数量: 887021


2024年2月23日发(作者:中文属不属于ascii)

胡文科,王骥,杜建科宁波大学压电器件技术实验室,宁波 (315211)

E-mail:hwke12@摘 要: ARPACK是一个用来求解大规模特征问题的软件包,ARPACK软件包可以解决来自重大应用领域内的大规模对称、非对称(包括Hermiton、non-Hermiton)和广义特征值问题。但要使用这个软件进行编程计算就必须有函数库的支持,即必须取得ARPACK软件包并编译,从而生成libarpack_linux.a函数库。本文给出了ARPACK的详细配置安装步骤并通过具体实例就如何进行ARPACK编程进行了阐述,所给出的代码均在曙光TC4000L上运行成功。

关键词:Linux;ARPACK软件包;特征值

中图分类号:TP319

1.引言

ARPACK软件包本身是一个Fortran77子程序的集合。该软件使用n·O(k)+O(k2)的存储开销计算满足用户要求的k个特征值,这包括具有最大实部、最大虚部或最大模的特征值[1][3]。

ARPACK软件包是基于隐式重开始Arnoldi/Lanczos方法(IRAM:Implicitly Restarted

Arnoldi/Lanczos Mothed)的实现。Arnoldi/Lanczos是一个用来求解大规模n×n矩阵几个端特征值的重要方法,特别适合于大规模稀疏矩阵或结构矩阵的特征问题的求解,这里的结构是指一个矩阵-向量积w←Av的浮点运算需求是O(n)而不是O(n2)[2]。因为低的存储和计算需求,这个技术适合大规模特征问题。

2.ARPACK配置和安装

2.1 解压及文件说明

获得ARPACK软件包后,先拷贝到所设定的安装目录,然后按一下方式解压安装文件:

tar –zxvf .z

就会在所设定的安装目录下生成一个ARPACK目录。在这个目录中的内容包括:

7个子目录:ARMAKES,BLAS,DOCUMENTS,EXAMPLES,LAPACK,SRC,UTIL。

3个文件:Makefile,README,。

LAPACK和BLAS子目录下包含ARPACK许多子程序,SRC子目录下包含ARPACK软件包的所有逆通讯接口子程序及辅助子程序。UTIL子目录下包含ARPACK的所有输出子程序。DOCUMENT子目录下包含三个文档文件:,,。EXAMPLES子目录下包含ARPACK的所有驱动程序例子。

2.2 修改安装文件

要成功安装ARPACK,首先必须正确的修改文件。

本文根据库文档、编译器以及所使用选项情况修改文件。针对本文所使用的系统,作了相应的修改如下:

home=$(HOME)/arpack

PLAT=linux

ARPACKLIB= $(HOME)/mindlin/libarpack_$(PLAT).a

FC=f77

MAKE=/usr/bin/make

-1-

2.3 安装及调试

修改完后,在LINUX下执行

make lib

就会在指定的目录中生成libarpack_linux.a这个库文件。

可以执行ARPACK/EXAMPLES目录下的一些驱动程序,如果这些程序能成功的运行,则说明ARPACK已成功安装,否则,就必须根据错误原因再次修改文件。

另外,如果无法正确编译ARPACK/EXAMPLES目录下的一些驱动程序,就需要修改Makefile文件,即在Makefile文件中增加PRECISION=sdrv ddrv cdrv zdrv。这样就能编译这些驱动程序。

3. ARPACK编程

ARPACK为求解不同模式的矩阵特征问题提供了相应的驱动程序,这些驱动程序可被用作模板。用户通过适当的修改这些模板,可以得到求解具体特征问题的程序。为了帮助用户使用这些驱动程序建立求解相应特征问题的应用代码,下面给出使用这些驱动程序时应遵循的一些步骤:

z 选择一个合适的驱动程序。

z 确定和构造在驱动程序中使用的矩阵OP和矩阵B。

z 用上述OP和B替代逆向通讯接口中的OP和B。

z 修改问题依赖的变量。

z 核查计算结果的精度。

3.1 OP和B的构造

OP和B的构造与特征问题的类型及采用的求解方式有关。表1给出了几个主要特征值问题求解时OP和B的构造方法。

表1 OP和B的构造方法

类型

规则模型 iparam(7)=1 bmat=‘I’

位移逆变换模式 iparam(7)=3 bmat=‘I’

规则逆模式 iparam(7)=2 bmat=‘G’

位移逆转换模式 iparam(7)=3 bmat=‘G’

OP和B

OP=A B=I

OP=(A-δI) B=I

-1OP=MA B=M

OP=(A-δM)M B=M

-1

-13.1 修改问题依赖的变量

用户须根据实际情况修改驱动程序中的下列变量:

n 矩阵的规模;

nev 所求解特征值的个数;

ncv Arnoldi/Lanczos分解的长度;

which 指定所求解特征值的特性;

Info 表明初始向量的产生方式;

Sigma 如果使用了谱变换,该变量用来存储所使用的位移量;

lwork1 数组workl的大小,至少应被设置为ncv*(ncv+8);

-2-

ido 逆通讯标志。在进入snaupd前被设为0;

bmat 指明标准特征值问题(bmat=‘I’)或广义特征值问题(bmat=‘G’);

iparam(1) 指明在IRLM的隐式重开始部分使用的位移策略;

iparam(3) 指明允许的IRLM迭代的最大次数;

iparam(7) 指明ARPACK算术模式;

rvec 指明是否要得到特征向量,是:Rvec=.true.;否:Rvec=.false.。

4.ARPACK测试

在调用ARPACK函数库的基础上,本文编写了特征值计算程序。该程序能适用于不同矩阵存储形式,包括满阵存储和稀疏存储。特征值程序来计算一个4000阶矩阵的最大特征值,最小特征值以及指定区间内的特征值。表2为ARPACK特征值计算程序计算结果;表3为Matlab计算结果。

表2 本文计算结果

指定区域内特征值

最大特征值 最小特征值

[100~120]

216.000 19.2923 108.000

242.354 45.6461 108.000

242.354 45.6462 117.646

268.708 72.0000 117.646

表3 Matlab计算结果

指定区域内特征值

最大特征值 最小特征值

[100~120]

216.0000 19.2932 108.0000

242.3538 45.6462 108.0000

242.3538 45.6462 117.6465

268.7077 72.0000 117.6462

可见,本文的计算结果与Matlab的计算结果非常吻合。因此验证了特征值计算程序的有效性。

5.总结

寻求和研究大规模矩阵特征值问题的部分特征值的数值方法成为学术界的研究热点之一。ARPACK特征值求解函数库解决了求解指定区间内的特征值问题。为在有限元中的动力分析中的应用提供了重要的支持。经实际测试证明,该特征值程序设计可靠,运行稳定。

参考文献

[1] R.B. Lehoucq.Implicitly Restarted Arnoldi Methods and Subspace Iteration[J].SIAM Journal on Matrix

Analysis and Applications, 23 (2): 551-562, 2001.

-3-

[2]

D. C. Sorensen. Implicit application of polynomial filters in a k-step Arnoldi method. SIAM. J. Matrix Anal.

Appl., 13: 357-385, 1992.

[3] R.B. Lehoucq, D.C. Sorensen, P.A. Vu etal.ARPACK: Fortran subroutines for solving large scale eigenvalue

problems[R].Release 2.1.

[4] Syed Mansoor Sarwar. Linux 教程[M].北京:清华大学出版社, 2005

ARPACK Installation and Application

Based on Linux System

Hu Wenke,Wang Ji,Du JiankePiezoelectric Device Laboratory, Ningbo University, Ningbo (315211)

Abstract

ARPACK is a package designed to solve large scale eigenvalue problems. ARPACK software is

capable of solving large scale symmetric, nonsymmetric(include Hermiton、non-Hermiton)and

generalized eigenproblems from significant application areas. Moreover, programme and computing

with this software should the support of library in the system, namely, should get the software package

of ARPACK complied and the library of libarpack_linux.a generated. This article tells how to install

the ARPACK in details and programming based on ARPACK is discussed via an example, the code are

executed on Dawning TC4000L.

Keywords: Linux ARPACK package eigenvalue

作者简介:胡文科,男,1983年生,在读硕士研究生,主要研究方向是石英晶体谐振器高频振动有限元分析。E-mail:hwke12@

-4-


本文标签: 特征值 问题 驱动程序 求解 使用