仿真筆記——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仿真學社

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

5
1
2