24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1595  |  回复: 29

田山东

捐助贵宾 (著名写手)

引用回帖:
17楼: Originally posted by lurencyj at 2012-10-12 15:39:51
顺便问一个问题,楼主为什么不用matlab来求本征值问题呢,如果内存不夸张的话?

老大,内存很夸张,体系大小:n=3*24*160,复数矩阵H(n,n),光这样的矩阵就三个
everythinghasitsseason.enjoyyourlife.
21楼2012-10-12 16:25:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

引用回帖:
20楼: Originally posted by snoopyzhao at 2012-10-12 16:10:08
其实没有必要用 ln -s 形成软链接的

在 gfortran 编译的时候,记得把 libarpack.a 的路径写全就可以了……...

老大,怎么找到这个库文件的路径啊?超级菜鸟问题了。我装好arpack之后在文件夹ARPACK里有个libarpack_SUN4.a,是它吗?
everythinghasitsseason.enjoyyourlife.
22楼2012-10-12 16:27:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

引用回帖:
22楼: Originally posted by 田山东 at 2012-10-12 16:27:48
老大,怎么找到这个库文件的路径啊?超级菜鸟问题了。我装好arpack之后在文件夹ARPACK里有个libarpack_SUN4.a,是它吗?...

我认为就是它,当然,我不太清楚你是怎么安装的,呵呵……
23楼2012-10-12 17:24:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
田山东: 金币+5, ★★★★★最佳答案, 那个文件看到了,说,如果改变libarpack的路径要干嘛干嘛的 2012-10-12 17:56:38
引用回帖:
22楼: Originally posted by 田山东 at 2012-10-12 16:27:48
老大,怎么找到这个库文件的路径啊?超级菜鸟问题了。我装好arpack之后在文件夹ARPACK里有个libarpack_SUN4.a,是它吗?...

你研究一下那个 ARPACK/example/simple/makefile 就知道了……
24楼2012-10-12 17:26:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

引用回帖:
24楼: Originally posted by snoopyzhao at 2012-10-12 17:26:46
你研究一下那个 ARPACK/example/simple/makefile 就知道了……...

我又重新编译了一下ARmake.inc,它给出的libarpack_linux.a的路径是:
/home/tianhongyu/arpack/ARPACK/libarpack_LINUX.a,而我刚开始用的路径是:/arpack/ARPACK/libarpack_LINUX.a,所以会出错。
现在路径找到了,发现还是有问题:
/home/tianhongyu/arpack/ARPACK/libarpack_SUN4.a(second.o): In function `second_':
second.f.text+0x11): undefined reference to `etime_'
collect2: ld returned 1 exit status
问题正在一个一个浮出水面。阿门,上帝来帮下忙吧。
everythinghasitsseason.enjoyyourlife.
25楼2012-10-12 18:16:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
田山东: 金币+10, ★★★★★最佳答案 2012-10-12 19:31:37
引用回帖:
25楼: Originally posted by 田山东 at 2012-10-12 18:16:22
我又重新编译了一下ARmake.inc,它给出的libarpack_linux.a的路径是:
/home/tianhongyu/arpack/ARPACK/libarpack_LINUX.a,而我刚开始用的路径是:/arpack/ARPACK/libarpack_LINUX.a,所以会出错。
现在路径找到 ...

你当时没有修改 second.f 吗?
实在不行,把那个 etime 改成 Fortran 95 内置的函数 cpu_time 算了……
26楼2012-10-12 19:05:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

引用回帖:
26楼: Originally posted by snoopyzhao at 2012-10-12 19:05:27
你当时没有修改 second.f 吗?
实在不行,把那个 etime 改成 Fortran 95 内置的函数 cpu_time 算了……...

second.f这个程序在哪里我都不知道啊。
刚才又看了下ARmake.inc,发现没有etime这项,这个选项在哪里修改呢?
everythinghasitsseason.enjoyyourlife.
27楼2012-10-12 19:37:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

引用回帖:
26楼: Originally posted by snoopyzhao at 2012-10-12 19:05:27
你当时没有修改 second.f 吗?
实在不行,把那个 etime 改成 Fortran 95 内置的函数 cpu_time 算了……...

second.f找到了。把etime改成cpu_time还是不行。      SUBROUTINE SECOND( T )
      REAL T
      CALL CPU_TIME(T)
      RETURN
      END
再一次编译EXAMPLE下某个程序会出现这种错误:
/tmp/ccdi4uxo.o: In function `MAIN__':
dndrv2.f.text+0x31b): undefined reference to `dgttrf_'
dndrv2.f.text+0x693): undefined reference to `dgttrs_'
/home/tianhongyu/arpack/ARPACK/libarpack_LINUX.a(second.o): In function `second_':
second.f.text+0x11): undefined reference to `etime_'
collect2: ld returned 1 exit status
windows下有人安装了,这种方法,不知道是否可以用在linux下,因为有很多人在linux下装过arpack都没这么搞过,所以不确定啊:
先到ARPACK的官方网站去下载程序包,我选择下载了 arpack96.tar.gz 和补丁 patch.tar.gz。
1. 把两个压缩文件分别解压以后,第一步是先打上补丁。复制patch下的ARPACK 粘贴到 arpack96 里面去覆盖同名文件, 在Win7上会提示合并文件夹,选择是,然后会提示复制和替换文件,选择全部替换就行了。
2. 把 arpack96\ARPACK\BLAS,arpack96\ARPACK\LAPACK 和 arpack96\ARPACK\UTIL 中的 *.f 文件都复制到 arpack96\ARPACK\SRC 里面去。然后有三个源文件需要改动。首先,找到second.f 打开,把里面的内容改成:
      SUBROUTINE SECOND( T )
      REAL T
      CALL CPU_TIME(T)
      RETURN
      END
保存。因为原来的程序要调用ETIME来返回时间,但是连接的时候会出错提示找不到ETIME。我看了一下gfortran 里好像是用 CPU_TIME 来计时的,所以就改过来。还有就是 dnrm2.f 和 snrm2.f 使用了ASSIGN statement, 这个语句在Fortran 95 的标准里面已经被删除了,所以gfortran 不能编译这两个文件。因此,需要到netlib上下载它们的更新版本: dnrm2.f 和 snrm2.f 并替换旧版文件。
3. 接下来编译ARPACK和LAPACK基本原理是类似的。用DOS进入 arpack96\ARPACK\SRC 目录,用gfortran 开始编译:
E:\arpack96\ARPACK\SRC>gfortran -fimplicit-none -g -c *.f -O2
4. 用ar 连接成一个库
E:\arpack96\ARPACK\SRC>ar rcs libarpack.a *.o
这样就在SRC文件夹里得到ARPACK库文件 libarpack.a。

everythinghasitsseason.enjoyyourlife.
28楼2012-10-12 20:14:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

网上也有人碰到类似问题,他们是这么总结的,帮忙看下用在我的系统里该怎么处理?


dseupd.f.text+0x1445): undefined reference to `dorm2r_'
dseupd.f.text+0x1580): undefined reference to `dorm2r_'
dseupd.f.text+0x167d): undefined reference to `dscal_'

从错误来看,是没有找到 BLAS 和 LAPACK 的库函数。
我重新修改了 ARmake.inc   处 BLAS 和 LAPACK 的路径,不使用 ARPACK
自带的BLAS 和把相对
路径改成绝对路径
BLASdir      = /usr/local/share/BLAS
LAPACKdir    = /usr/local/share/lapack-3.1.1
给出了 库 的路径
LAPACKLIB = /usr/local/lib/liblapack.a
BLASLIB = /usr/local/lib/libblas.a
再次编译了一次 make lib

这一次我编译了 bsbdar1
make bsbdr1
tlu@linux-1482:~/proj/arpack/EXAMPLES/BAND> make dsbdr1
Making dsbdr1.o from dsbdr1.f
f77 -O dsbdr1.o dsband.o /usr/local/share/ARPACK/libarpack_LINUX.a /usr/local/lib/liblapack.a /usr/local/lib/libblas.a -o dsbdr1

成功了,原来 dsband.f 是不能单独成为可执行程序的, 他是提供一个骨架,
具体的实现要有类似于 dsbdr1.f 的文件实现。
everythinghasitsseason.enjoyyourlife.
29楼2012-10-12 20:17:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

田山东

捐助贵宾 (著名写手)

引用回帖:
10楼: Originally posted by lurencyj at 2012-10-12 12:51:32
1.  关于安装。建议你不要自己编译源代码,如果你没有头绪,没有相应的经验。最好通过suse自带的软件管理来安装arpack. 这里有个链接是介绍opensuse下如何安装软件的:http://zhidao.baidu.com/question/240291320. ...

您好,可以帮我解决个机械性的问题吗?现在arpack基本上看懂了,只是有个问题一直没跨过去。http://muchong.com/bbs/viewthread.php?tid=5189740
怎么能从一系列本征值中找到一段本征值,中间一段,比如系统本征值从-9到9之间,而我取-3到3之间的一小段,有没有相关程序啊?谢谢啊!!
太麻烦你们了
everythinghasitsseason.enjoyyourlife.
30楼2012-11-16 16:54:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 田山东 的主题更新
信息提示
请填处理意见