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

    技术2022-05-11  85

    话说旁门左道始终不及名门正派,所以强烈推荐软件包作者的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}
    多嘴一句,上面这个“材料标识”看上去似乎不够直观,为什么这么翻译呢? 先不管,照猫画虎即可,以后需要特别说明的地方再说

    最新回复(0)