Freefem
外觀
freefem 專案有兩個分支:2D 求解器 (freefem++) 已經成熟並且有良好的文件,被很多人使用,而 3D 求解器 (freefem3D) 仍在開發中,但歡迎使用它。
該程式碼是開源的,可以從 freefem 網站 下載。
要使用 freefem 求解偏微分方程 (PDE) 或方程組,首先需要編寫一個演算法,該演算法僅使用線性系統 (一個或多個) 作為中間步驟。
然後,每個系統都必須是適定問題,即提供允許的邊界條件並以 *變分形式* 編寫。例如,狄利克雷問題
在平面的開集 D 中定義了一個標量函式 v(x,y),在 D 的每個點 (x,y) 上;v 將是周圍物體邊界 ∂D 處於電勢 g(x,y) 的電荷密度為 f(x,y) 的真空中的靜電勢。
自動三角剖分、有限元求解器和圖形都整合在 freefem 中,由 *freefem 指令碼* 驅動。

上面的狄利克雷問題可以使用以下指令碼用 freefem++ 求解
border C(t=0,2*pi){x=5*cos(t); y=5*sin(t);}
mesh Th = buildmesh (C(50));
fespace Vh(Th,P1); // says that we will use linear triangular elements
Vh u,v; // defines u and v as piecewise-P1 continuous functions
func f= x*y; // definition of a function called f
real cpu=clock(); // optional
solve Poisson(u,v)
= int2d(Th)(dx(u)*dx(v) + dy(u)*dy(v)) // bilinear part
- int2d(Th)( f*v) // right hand side of the variational form
+ on(C,u=0) ; // Dirichlet boundary condition (g=0)
plot(u);
cout << " CPU time = " << clock()-cpu << endl;
| 本書是一個未完成的草稿或提綱。 您可以幫助 開發作品,也可以在 專案室 尋求幫助。 |