[笔记1.1]学习AFEPack起点准备

话说旁门左道始终不及名门正派,所以强烈推荐软件包作者的BLOG: http://rli.bloghome.cn/  !!!如上课一般讲解,娓娓道来。

[AFEPack学习起点]:

The AFEPack Handbook : http://circus.math.pku.edu.cn/AFEPack/

学习AFEPack使用的“ Step by Step Tutorial”(英)
http://circus.math.pku.edu.cn/AFEPack/index-3.html#Step_by_Step_Tutorial
对照例程:/usr/local/AFEPack/example/possion_equation/possion_equation.cpp
中文解释版的: http://rli.bloghome.cn/posts/76143.html

(1)、有限元层次了解用AFEPack编程的基本程序结构
(2)、C++语言层次了解程序实现细节
      源程序: /usr/local/AFEPack/library/include
              /usr/local/AFEPack/library/src
      参考文档: http://circus.math.pku.edu.cn/AFEPack/html/index.html
                也可以用 /usr/local/AFEPack/doc$ doxygen AFEPack.cfg
                在本机 /usr/local/AFEPack/doc 目录下生成以上网址提供的参考文档以便于查看
/**
Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C ++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。
Doxgen可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的LATEX、RTF参考手册。对于未归档的源文件,也可以通过配置Doxygen来提取代码结构。或者借助自动生成的包含依赖图(include dependency graphs)、继承图(inheritance diagram)以及协作图(collaboration diagram)来可视化文档之间的关系。Doxygen生成的帮助文档的格式可以是CHM、RTF、PostScript、PDF、HTML和Unix man page等。
 */

[相关准备]:(不是必须的,现学也可以,就是上手慢点,比如我:()

0、有限元

1、辅助开发工具

linux下编程

make 和 makefile
“自动化编译”

用GDB调试程序


shell编程

编辑器:Emacs or Vim(vi)


版本控制:CVS


Doxygen

Doxygen官方主页: http://www.stack.nl/~dimitri/doxygen/,从这里可以下载到最新的Doxygen发行版、源代码以及使用文档。
Doxygen使用的画出各种图形的第三方工具是AT&T实验室的 Graphviz。这是一个著名的开放源码图形绘制软件,广泛地应用于各种软件相关图形绘制,官方主页: http://www.research.att.com/sw/tools/graphviz/

2、C++编程

STL:vector
STL:list

3、相关软件
网格生成:Easymesh, ...
数据可视化软件:Matlab, OpenDX
   
EasyMesh 说明书(输入输出文件格式)
http://dsec.pku.edu.cn/~rli/WiKi/Easymesh.html
后附输入文件一例:转自 第一个例子:求解泊松方程
Easymesh主页: http://www-dinma.univ.trieste.it/nirftc/research/easymesh/easymesh.html
(很遗憾据说:最新的easymesh数据格式已经改动,不能用于AFEPack。看见在web上有个和新版easymesh匹配的程序用来ShowMesh,挺方便看网格的。)

学习 OpenDX
指南:/usr/share/doc/dx/html/
练习例子:/usr/share/dx/samples/tutorial


空洞的LIST大致列完了,来点实用的triviality:
[用OpenDX看网格形状]


0、easymesh生成网格数据

   编译easymesh.c生成的可执行文件复制到 /usr/bin/
   $ gcc -o easymesh -O3 easymesh.c -lm
   $ sudo cp ./easymesh /usr/bin/

   准备好easymesh的输入文件D.d,命令行运行 $ easymesh D
   生成 D.n、D.e、D.s 三个输出文件

1、用easymesh2opendx.bin将easymesh生成的数据转化为OpenDX输入数据格式 *.dx

  easymesh2opendx.bin 复制到 /usr/bin/
  $ sudo cp /usr/local/AFEPack/example/tools/easymesh2opendx.bin /usr/bin/
  $ easymesh2opendx.bin D tnnd

2、OpenDX可视化程序可参考/usr/local/AFEPack/example/local_refine/2d/2d.net
   所用Tools: FileSelector, Import, ShowConnections, Image


[用OpenDX看计算结果],参考:
/usr/local/AFEPack/example/possion_equation/possion_equation.net
/usr/local/AFEPack/example/coefficient_possion_equation/coefficient_possion_equation.net
所用Tools: FileSelector, Import, RubberSheet, AutoColor, Image

[用Matlab看Easymesh生成的网格形状]
/usr/local/AFEPack/example/step-7/ showmesh.m

EasyMesh需要用户手工写一个对区域进行描述的文件作为输入文件,我们使用的文件名为 D.d,其内容如下:

/begin{verbatim}
4 # 区域的顶点的个数 #
0: 0.0 0.0 0.05 1
1: 1.0 0.0 0.05 1
2: 1.0 1.0 0.05 1
3: 0.0 1.0 0.05 1

4 # 区域的边界上边的条数 #
0: 0 1 1
1: 1 2 1
2: 2 3 1
3: 3 0 1
/end{verbatim}

其中前面一个部分描述区域中的顶点,共有4个,然后每一行描述一个顶点的信息,其意义为

/begin{verbatim}
顶点的序号:    x坐标    y坐标    剖分密度h    材料标识
/end{verbatim}

后面一个部分则描述区域的边界上的边的条数,共有4条,然后每一行描述一条
边的信息,其意义为

/begin{verbatim}
边的序号:    起始顶点序号    结束顶点序号    材料标识
/end{verbatim}

多嘴一句,上面这个“材料标识”看上去似乎不够直观,为什么这么翻译呢?
先不管,照猫画虎即可,以后需要特别说明的地方再说

你可能感兴趣的:(AFEPack/RealHP)