胡文科,王骥,杜建科
宁波大学压电器件技术实验室,宁波 (315211)
E-mail:hwke12@mail.nbu.edu
摘要: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 M
othed)的实现。Arnoldi/Lanczos是一个用来求解大规模n×n矩阵几个端特征值的重要方法,特别适合于大规模稀疏矩阵或结构矩阵的特征问题的求解,这里的结构是指一个矩阵-向量积w←Av的浮点运算需求是O(n)而不是O(n2)[2]。因为低的存储和计算需求,这个技术适合大规模特征问题。
2.ARPACK配置和安装
2.1  解压及文件说明
获得ARPACK软件包后,先拷贝到所设定的安装目录,然后按一下方式解压安装文件: tar –zxvf arpack96.tar.z
就会在所设定的安装目录下生成一个ARPACK目录。在这个目录中的内容包括:
7个子目录:ARMAKES,BLAS,DOCUMENTS,EXAMPLES,LAPACK,SRC,UTIL。
3个文件:Makefile,README,ARmake.inc。
LAPACK和BLAS子目录下包含ARPACK许多子程序,SRC子目录下包含ARPACK软件包的所有逆通讯接口子程序及辅助子程序。UTIL子目录下包含ARPACK的所有输出子程序。DOCUMENT子目录下包含三个文档文件:ex-complex.doc,ex-nonsym.doc,ex-sym.doc。EXAMPLES子目录下包含ARPACK的所有驱动程序例子。
2.2  修改安装文件
要成功安装ARPACK,首先必须正确的修改ARmake.inc文件。
本文根据库文档、编译器以及所使用选项情况修改ARmake.inc文件。针对本文所使用的系统,作了相应的修改如下:
home=$(HOME)/arpack
PLAT=linux
ARPACKLIB= $(HOME)/mindlin/libarpack_$(PLAT).a
FC=f77
MAKE=/usr/bin/make
2.3  安装及调试
修改完ARmake.inc后,在LINUX下执行
make  lib
就会在指定的目录中生成libarpack_linux.a这个库文件。
可以执行ARPACK/EXAMPLES目录下的一些驱动程序,如果这些程序能成功的运行,则说明ARPACK已成功安装,否则,就必须根据错误原因再次修改Armake.inc文件。
另外,如果无法正确编译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的构造方法
类型 OP和B
规则模型        iparam(7)=1  bmat=‘I’ OP=A          B=I
位移逆变换模式  iparam(7)=3  bmat=‘I’ OP=(A-δI)-1  B=I
规则逆模式      iparam(7)=2  bmat=‘G’ OP=M-1A        B=M
位移逆转换模式  iparam(7)=3  bmat=‘G’ OP=(A-δM)-1 M B=M
3.1  修改问题依赖的变量
用户须根据实际情况修改驱动程序中的下列变量:
n 矩阵的规模;
nev 所求解特征值的个数;
ncv      Arnoldi/Lanczos分解的长度;
which    指定所求解特征值的特性;
Info      表明初始向量的产生方式;
Sigma    如果使用了谱变换,该变量用来存储所使用的位移量;
lwork1    数组workl的大小,至少应被设置为ncv*(ncv+8);
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 本文计算结果
最大特征值最小特征值指定区域内特征值[]
120
hermit~
100
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计算结果
最大特征值最小特征值指定区域内特征值[]
120
~
100
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.
[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 Jianke
Piezoelectric 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@mail.nbu.edu

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。