仿真筆記——Comsol 多物理場仿真軟件操作技巧
(一)利用comsol的計算源程序,來建立新的循環計算
如果需要利用其它計算后的數值代入到comsol進行后計算,這就不可避免的要利用comsol的源程序進行后學的連續計算,這里主要需解決在次計算利用上次計算初始值的問題,下面兩段就是有無利用上次計算結果作為初始值的程序:
%正常的求解% Solve problem=femtime(fem, ... 'solcomp',{'T'}, ... 'outcomp',{'T'}, ... 'blocksize','auto', ... 'tlist',[colon(0,,1)], ... 'estrat',1, ... 'tout','tlist', ... 'linsolver','gmres', ... 'itrestart',100, ... 'prefuntype','right', ... 'prefun','gmg', ... 'prepar',{'presmooth','ssor','presmoothpar',{'iter',3,'relax',},'postsmooth','ssor','postsmoothpar',{'iter',3,'relax',},'csolver','pardiso'}, ... 'mcase',[0 1]);%將上次求解結果作為下次計算的初始值的求解 % Mapping current solution to extended meshinit = asseminit(fem,'init',,'xmesh',,'blocksize','auto');%(此處是關鍵)% Solve problem=femtime(fem, ... 'init',init, ... %(此處是關鍵) 'solcomp',{'T'}, ... 'outcomp',{'T'}, ... 'blocksize','auto', ... 'tlist',[colon(0,,1)], ... 'estrat',1, ... 'tout','tlist', ... 'linsolver','gmres', ... 'itrestart',100, ... 'prefuntype','right', ... 'prefun','gmg', ... 'prepar',{'presmooth','ssor','presmoothpar',{'iter',3,'relax',},'postsmooth','ssor','postsmoothpar',{'iter',3,'relax',},'csolver','pardiso'}, ... 'mcase',[0 1]);
(二)對常數進行賦值
下面一段程序是comsol中常數的賦值語句:
% Constants= {'U0','', ...'I0','35', ...'It1','35', ...'It2','35', ...'It3','35', ...'It4','35', ...'Vt1','4', ...'Vt2','4', ...'Vt3','4', ...'Vt4','4', ...'OpenVt1','', ...'OpenVt2','', ...'OpenVt3','', ...'OpenVt4',''};我們可以通過以下語句對其中的35,4,進行修改It1=700;It2=700;It3=700;It4=700;(1,6)={It1};(1,8)={It2};(1,10)={It3};(1,12)={It4};
這樣就可以實現常量變成變量,進行計算了
(三)啟動COMSOL with MATLAB 2007b時,MATLAB和COMSOL Multiphysics用戶界面都沒有出現
該問題多出現在Windows上使用COMSOL with MATLAB 2007b,MATLAB 2007a及更早的版本沒有這種問題。
該問題可能與MATLAB 2007b引入的新內存分配策略有關,解決辦法是讓MATLAB使用老的策略,將Windows環境變量MATLAB_RESERVE_LO設置為0。
優選解決方案
要解決這個問題,MathWorks推薦按下面的步驟設置環境變量:
在Windows中點擊開始>控制面板>系統>高級>環境變量。
在系統變量框架中點擊新增按鈕。
在變量名稱中鍵入MATLAB_RESERVE_LO,在變量值中鍵入0。
點擊確定,關閉對話框。
第二種解決方案
在少數極端情況下,首選方案可能解決不了問題,則可按下面的步驟進行嘗試:
試著啟動一次COMSOL with MATLAB,可能會失敗,但將向COMSOL 安裝目錄中寫入一個文件。
打開,刪除行-Xmx256m,并保存文件。
打開COMSOL安裝目錄的bin目錄中的,改變行:
JAVAOPTS=on
到
JAVAOPTS=off
這將確保不會在每次啟動COMSOL with MATLAB被自動覆蓋,從而可以永遠使用手動修改過的文件。
當在COMSOL Multiphysics的文件菜單中使用“連接到MATLAB”時,會在根目錄中查找,因此需要將編輯過的文件拷貝到文件主目錄目錄中,例如
C:\Documents and Settings\
(四)comsol的數據txt文件不能用中文,但可以用小數點
(五)關于comsol程序進行循環計算的問題
1,如果不需要對常數和變量進行變化的話,只需要將求解的部分進行重復,就可以進行再次計算,即下面的程序:
=femtime(xfem, ... 'solcomp',{'T'}, ... 'outcomp',{'T'}, ... 'blocksize','auto', ... 'tlist',[colon(0,1,100)], ... 'estrat',1, ... 'tout','tlist', ... 'maxstep',1, ... 'initialstep',1, ... 'linsolver','gmres', ... 'itrestart',100, ... 'prefuntype','right', ... 'prefun','gmg', ... 'prepar',{'presmooth','ssor','presmoothpar',{'iter',3,'relax',},'postsmooth','ssor','postsmoothpar',{'iter',3,'relax',},'csolver','pardiso'}, ... 'mcase',[0 1]);
如果要利用之前計算的記過作為初始值,可借鑒“利用comsol的計算源程序,來建立新的循環計算”中的相關內容。
2 經過實際計算,即使要對常數和變量進行修改的話,這樣處理也是可以的。
(七)comsol文件清除結果的操作
點擊“文件”選擇其中的“模型重置”即可將之前計算的結果清除,文件大小降為幾百K
(八)關于comsol模型轉成M文件運行的注意事項
1、將comsol進行過求解計算的文件另存為M文件,再通過“COMSOL with MATLAB”打開文件進行編程和修改。
2、如果只是想對后處理的數據進行編程調試,必須先將comsol文件保存為*.mph文件,然后再另存為m文件,進行后續程序修改
簡言之:
如果對comsol重新進行計算就在comsol計算完之后,進行一些后處理操作(這部分也可用自己編寫的程序),沒有關閉comsol之前就將comsol文件另存為M文件,這樣下載運行這個程序時,會對comsol部分進行計算。
如果不對comsol重新計算,就在comsol計算完之后,關閉comsol,然后再重新打開,將comsol文件另存為M文件,這樣下載運行這個程序時,不會對comsol部分進行計算,而直接可以用上次計算的結果。
(九)與matlab2010a 會出現一些問題
對于下面這條程序,再普通不過了,但是在與matlab2010a中,總是提示錯誤,并且自動關閉程序,后來去除‘spline’,就變正常,但是使用的插值方法是默認的“linear”,最后將,2010a換成2007b,就正常了。因此,與simulink結合,是否就是有這方面的問題,還待后續試試再來補充
InitialVopen=interp2(LZG_SOC,LZG_temp,LZG_Vopen,SOC,Temperature,'spline')
(十)關于comsol作為simulink的問題
1、首先通過使用新舊兩臺電腦,在舊電腦上完全可以實現基本庫---交叉學科---溫度控制的例子,在新電腦(64位,同時也使用matlab2010,)在導出simulink模型時,如果更改Simulink方塊類型為線性動態,就無法輸出,如果按照默認還可以輸出,但是后面整個simulink模型完成后,在舊電腦可以正常運行,在新電腦無法運行,同時自動退出matlab程序。
2、導出simulink模型后,必須在“COMSOL with MATLAB”啟動的matlab中才能找到“comsol”模塊,然后將模塊拖到新建的simulink窗口中,雙擊,在參數欄輸入導出時的名稱就可以出現輸入輸出口。
3、輸入還好,沒有什么問題,輸出就有問題了,只有點的輸出,無法進行面或體的操作,這是需要留意,在后續進行解決的問題
4、對于下面這條程序,再普通不過了,但是在與matlab2010a中,總是提示錯誤,并且自動關閉程序,后來去除‘spline’,就變正常,但是使用的插值方法是默認的“linear”,最后將,2010a換成2007b,就正常了。因此,與simulink結合,是否就是有這方面的問題,還待后續試試再來補充
InitialVopen=interp2(LZG_SOC,LZG_temp,LZG_Vopen,SOC,Temperature,'spline')
(十一)關于安裝時忘記連接matlab的補救方法
忘了沒有關系,直接在點擊“setup”,然后選擇“add/remove”,在彈出的窗口中右邊勾選“matlab”即可。
如果想要把2007b換成2010a或其他版本,也可以采用相同的方法進行。
文章來源:CAE仿真學社
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















