查看文章
 
ubuntu 10.04 安装 AFEPack
2011-10-23 10:54

参考 http://dsec.pku.edu.cn/~rli/software.php

http://hi.baidu.com/dawanzhi/blog/item/04969129c6bcc9225243c1a1.html

OS: ubuntu 10.04

失败的体验

使用新立得安装的deal.ii ,

首先configure 报错找不到 deal.ii include file 的路径,

 export EXTRA_INCDIR="-I/usr/include" (使用链接把这个路径修改正确后,configure 正确)

export EXTRA_LIBDIR="-L/usr/lib"  (configure: error: deal.II library not found, 总是不成功)

 成功的体验:

自己下载安装了 deal.ii 6.0的版本, 安装位置是 ~/Downloads/deal.II 。 

   cd deal.II
  ./configure

make lac base

安装后在deal.II 中产生了一个lib, 但是没有产生include 文件夹, 就

mkdir include

cd include

ln -s ../base/include/base ./

ln -s ../lac/include/lac ./

然后使用 export (不用下面两个命令,AFEpack configure 是报错的)

export EXTRA_INCDIR="-I/home/tlu/Downloads/deal.II/include"

export EXTRA_LIBDIR="-L/home/tlu/Downloads/deal.II/lib" 

然后回到 AFEpack 的文件夹 执行下面的命令就可以编译好了

aclocal

automake

autoconf

./configure

make

首先报错是 mpi 部分的安装

参考http://hi.baidu.com/qjzfd2009/blog/item/a53936d963d68f6ad1164e48.html

1.

cd /usr/include

sudo ln -s ~/Downloads/AFEPack/library/include ./AFEPack

cd ~/Downloads/AFEPack/library/include

ln -s  ~/Downloads/AFEPack/library/mpi/include  ./mpi

2. 修改 ~/Downloads/AFEPack/library/mpi/Makefile.1

MPICC=g++ -I$(MPIHOME)/include # 加上 mpi 的头文件的位置

修改成

MPICC=$(CXX) -I/usr/include/mpi -DMPICH_IGNORE_CXX_SEEK # 加上 mpi 的头文件的位>置
如果上面的 $(CXX) 改成 mpicxx 则编译mpi部分没有问题,但是在实际链接mpi程序的时候就出错。

非常感谢李若帮我改了过来。

cd /usr/lib

sudo ln -s /home/tlu/Downloads/AFEpack/library/lib/lib* ./

例子的编译后还报错, 是一个链接的错误

libAFEpack.so undefined reference to `dealii::LogStream::get_stream()'

------

下面改成安装最新的deal.ii 7.10

参考 http://hi.baidu.com/cuif1979/blog/item/ff47fee835e0a44079f05531.html

./configure --with-blas='f77blas -latlas' --with-lapack='lapack -latlas' --enable-mpi

应用上面的configure 命令,然后 make optimized

 ====现在全搞砸了,怎么在 AFEPack  中 configure 也找不到 deal.II 库了==

新立得安装的 deal.ii 删除了, 然后自己安装 deal.II 6.0, 6.1.0 都不能行了,现在安装

6.3.1倒是成功了, 现在如何AFEPack 还是找不到deal.ii 库函数,

仔细看了configure 文件发现,他就是要看看如何编译链接成功这个文件

tlu@tlu-laptop:~/Downloads/AFEPack$ cat a.cpp

#include <base/exceptions.h>
#include <lac/vector.h>
int
main ()
{
Assert(false, ExcInternalError());
  ;
  return 0;
}
编译发现可以用

 g++ -c -o a.o a.cpp -I/home/tlu/Downloads/deal.II/include -I /home/tlu/Downloads/deal.II/contrib/tbb/tbb22_20090809oss/include

成功编译。

然后我们再看链接:

g++ -o a.exe a.o  -llac -lbase -llapack -latlas

上面的命令可以链接成功, 上面的 -llapack -latlas 是需要的,因为我们在

编译 deal.II 的时候使用了这两个命令。

现在再去山区 autom4*, 修改 configure.in

中的 -llac -lbase 成 -llac -lbase -llapack -latlas

然后

export EXTRA_INCDIR=" -I/home/tlu/Downloads/deal.II/include -I /home/tlu/Downloads/deal.II/contrib/tbb/tbb22_20090809oss/include"

 export EXTRA_LIBDIR="-L/home/tlu/Downloads/deal.II/lib"

然后 ./configure 成功.

mpi 编译的部分和上面的修改相同,一个是把 AFEPack 的库进行做个链接,一个是修改 AFEPack/library/mpi/Makefile.1

现在终于连例子也编译成功了。

但是例子中的程序的运行却报错:

./main: error while loading shared libraries: libbase.so.6.3.1: cannot open shared object file: No such file or directory
原因是我删除了/usr/lib/libbase.so.6.3.1 ,现在重新做链接, 运行之后产生的错误是

tlu@tlu-laptop:~/Downloads/AFEPack/example/possion_equation$ ./run
terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct NULL not valid
Aborted

这可能表示程序已经可以运行了,这个错误可能和没有正确产生网格有关。

运行的时候需要使用

./run D.d

其中D.d 是描述计算区域的文件,是easymesh 的输入。

现在报错是

n_element=0
Building degree of freedom for the FEM space ...
    total 0 degree of freedom found.
Segmentation fault

为什么生成的单元个数是0 呢?

现在安装了 easymesh, 然后使用

EasyMesh D

生成了网格文件, 然后运行

./run D

仍然是同样的错误,这真是有点奇怪。 错误如下: 

tlu@tlu-laptop:~/Downloads/AFEPack/example/possion_equation$ ./run D
Reading easymesh data file ...
n_element=0
Building degree of freedom for the FEM space ...
    total 0 degree of freedom found.
Segmentation fault

 经过 的指点,就去李若的主页上去下载easymesh, 果然和从easymesh的官方网站上下来的略有不同

现在例子可以正常运行了。 

李若的easymesh (是EasyMesh 的老版本) 和官方的easymesh(是新版本)的差别是网格输出的格式有细微变化。

 另外运行的时候,还需要设置环境变量.

AFEPack使用一个环境变量来告诉软件包共享库以及模板单元的位置. 这个变量的名字是 "AFEPACK_TEMPLATE_PATH" 如果在你的应用中, 你将会使用三角和矩形元, 那么你可以如下设置(在bash中):

export AFEPACK_TEMPLATE_PATH=/usr/local/AFEPack/template/triangle:/usr/local/AFEPack/template/rectangle

 

 


类别:数值软件|浏览(314)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu