1. 程式人生 > >COMSOL(1)尋找最小曲面

COMSOL(1)尋找最小曲面

 摘要:本文意在通過COMSOL Multiphysics 5.2 軟體的Coefficient Form PDE模組來實現給定邊界的最小曲面尋找。

​  最近學習了《COMSOL Multiphysics 基本操作指南和常見問題解答》中的尋找最小曲面部分,個人覺得此案例非常適合學習PDE模組。但是操作指南這本書是針對COMSOL3.5的,而現在COMSOL5.2a都已經出了,所以軟體的變動比較大。我參考指南摸索了好一會兒才摸出來的,具體是用COMSOL5.2實現的,寫出來跟大家分享一下。

    問題描述:給定一條空間曲線,求以此空間曲線為邊界的面積最小的曲面。


    具體案例:如上式,即在單位圓區域內,以u=u(x,y)=x*x,為邊界,求其張成的最小面積的曲面。採用Euler-Lagrange方程,可將此問題化為求解


(1)

      具體問題化簡,如何運用Euler-lagrange方程,我們在此不做贅述,我希望讀者能注重於軟體的求解部分,且假設就為利用PDE模組求解上述方程,這也正是我寫這篇博文的目的所在。

     首先開啟COMSOL Multiphysics5.2,選擇model wizard(模型嚮導)--2D來到物理場的選擇介面,選擇Mathematics--PDE interfaces--Coefficient Form PDE(c),然後選擇add新增係數型PDE場如下:


    特別要注意的是上圖右邊的Review Physics Interface部分的內容,標示了因變數的資訊,在這個模組中預設單個因變數名稱是u,當存在多個因變數時則為u1,u2,....當然你也可以在Dependent variable欄輸入自己習慣的因變數名字,這個是後面在方程輸入中要注意的,變數名稱此處就已定義。

    接著選擇study,由於在這個案例中,邊界不隨著時間變化,所以我們選擇stationary,然後選擇down如圖。


     下面點選Model builder下的根目錄(root),來到setting視窗,​找到unit system,下拉視窗選擇none。做這一步是為了防止後面變數使用時因為單位問題而報錯。(事實上,雖然會報錯但依然可以進行計算,個人只是覺得warning看著不順眼而已。。。。)


​    下面開始定義幾何,選擇選單欄的Geometry--Primitives--Primitives--ellipse, 由於它的預設設定是中心在(0,0),半徑為1的圓,與此例暗合,因而不需改值,直接選擇Build Selected構建, 得到下圖。


​    然後進行邊界的設定,選擇選單欄的Physics--Boundaries--Dirichlet Boundary Condition,來到狄利克雷邊界條件的settings視窗,找到Boundary section,下拉section選擇All boundaries,在r處輸入x*x,如下圖。

     

     然後點選Model Builder下的Coefficient Form PDE(c)下的Coefficient Form PDE1,在Diffusion Coefficient部分輸入各系數:c=1/sqrt(1+ux*ux+uy*uy)​,a=0,f=0.至於為什麼這麼輸入,大家可以點選Equation節點,檢視方程的原型,結合我們此例的問題,對照(1)的方程便十分清楚了。(這裡說明一下,在COMSOL中預設ux是因變數u對x的偏導數,uy同理。)


   接下來是對其網格化,COMSOL在求解問題時採用的有限元方法。點選Model Builder下的Mesh,在setting視窗下的element size的下拉中選擇fine細化網格,再點選Builder all對其網格化。


   接著進行求解的設定,選擇選單欄中的study--solver--show default solver,然後展開Solver configuration,展開Solution1,點選Stationary Solver,在Settings視窗下的General中的Linearity選擇Nonlinear.


下面就可以點選Compute求解了,計算得到下圖。


​為了更好的顯示結果,我們需要對計算結果做一些後處理,找到Model Builder下的Result下的2D Plot Group 1展開,右鍵surface1選擇Height Expression,即可得到下圖:


     可以看到限制在單位圓區域,以x的平方為邊界的面積最小的曲面是馬鞍面。這個例子比較清晰簡單,適合用來初步瞭解怎麼使用COMSOL的PDE模組。​