[筆記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}

多嘴一句,上面這個“材料標識”看上去似乎不夠直觀,爲什麼這麼翻譯呢?
先不管,照貓畫虎即可,以後需要特別說明的地方再說
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章