我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網站首頁 > Ansys教程

ansys中宏的使用

時間:2010-11-14 12:06:21 來源:未知

一.在ANSYS中,宏是包含一系列ansys命令并且后綴為.MAC或.mac的命令文件。宏文件往往記錄一系列頻繁使用的ansys命令流,實現某種有限元分析或其他算法功能(個人感覺宏如同PROE的零件庫,在ansys中可以把經常用的模型或分析用宏保存后,根據現實情況調用,調用時只需改變參數就可以!)。宏文件在ansys中可以當作定義的ansys命令進行使用,可以帶有宏輸入參數,也可以有內部變量,同時在宏內部可以直接引用總體變量。除了執行一系列的ansys命令之外,宏還可以調用GUI函數或把值傳遞給參數。
宏能夠套嵌使用,即一個宏可以調用第二個宏,第二個宏可以調用第三個宏,最多可以套嵌20層,在每個套嵌的宏執行完成后,ansys軟件將會返回到其上一層的位置!

二.ANSYS宏的搜索路徑
當宏文件儲存成后綴為.mac擴展名的文件時,ansys將按下列順序在缺省的路徑中搜索用戶創建的宏文件:
1.目錄:/ansys_inc/v70/ansys/apdl
2.由ANSYS_MACROLIB環境變量指定的路徑或注冊路徑(主目錄)
3./PSEARCH命令及其等價菜單路徑Utility menu——macro——macro seach path
指定的宏文件存儲路徑
4.由/$HOME環境變量指定的路徑
5.當前工作路徑(在 ansys lauch 中設置的路徑)

三.ANSYS宏的創建
1.可以使用ANSYS本身或文本編輯軟件(非GUI法創建宏),如記事本,pspad來創建一個宏。如果宏很短,用ANSYS軟件很方便,如果宏較長,或很復雜,那么可以采用文本編輯軟件(這里推薦PSpad),同時使用文本編輯軟件可以使用類似的宏或ANSYS的LOG文件作為生成自己宏文件的參考。
對于一個復雜的宏來說,應該考慮是采用類似的宏作為參考的藍本,還是先用ANSYS的GUI模式交互式執行任務,然后在將其LOG文件作為生成宏的基礎。這樣可以減少生成宏的時間和精力!
2.宏的生成
宏的創建方法很多,通常包含以下四種:
2.1 使用*CREAT創建宏文件
格式:*CREATE,FNAME,EXT
*END
FNAME——文件名和路徑,若不指定路徑,將缺省為當前的工作目錄
EXT——文件的擴展名,用.mac
END——宏結束語
注意:如果FNAME以存在,則本次的宏將覆蓋原有的同名同路徑文件
2.2使用*CFWRITE創建宏文件
格式:*CFOPEN,FNAME,EXT,_,LOC
*CFWRITE,…
*CFCLOS
FNAME——文件名和路徑,不指定路徑將缺省為當前的工作目錄
EXT——文件擴展名(mac)
LOC——0 ,表示覆蓋已存在的同名文件
1,表示向同名文件中追加
注意:只有在*CFOPEN和*CFCLOLSE 之間并以*CFWRITE開頭的命令才有效!與命令*CFCRETE不同,*CFWRITE 并不能指定一個文件名,必須要用*CFOPEN指定一個宏文件,再用*CFWRITE進行 編輯 (修改或創建)用*CFCLOSE結束編輯!
2.3使用/TEE創建宏文件
利用/TEE命令可以將輸入窗口中輸入的ANSYS命令重定向輸入到指定的文件中,同時執行這些命令,直到執行/TEE,END命令時為止。
格式:/TEE,LABEL,FNAME,EXT
LABLE——1,new:表示新創建一個命令記錄文件,如果這個文件存在則覆蓋它
2,append:表示打開一個命令記錄文件,向其中追加命令行
3,end:表示結束new或append操作,關閉命令記錄文件
FNAME,EXT同上
2.4使用utility menu——macro——creat macro 創建宏文件
點擊后,可出現如下的一個對話框。
2.5使用文本編輯器進行編輯(內容如同一般的創建命令),把文件保存為.mac格式并放入ansys的搜索目錄中,這里建議用PSpad編輯,很方便.


四.宏的運行
其實在前面宏的創建中已經多次運行了宏,具體方法如下:
1.對于后綴為.mac的宏文件并且儲存在搜索路徑中,可以直接輸入到ansys的命令窗口,如同內部命令一樣
2.使用*USE來執行任何宏文件
如果一個名為abc.mac的宏文件在搜索路徑中可以這樣執行:
*USE,abc
如果不在搜索路徑中,可這樣執行
*USE,路徑/abc
3. 使用utility menu——excecute macro 來運行擴展名為mac的宏文件

五.宏的變量
這個問題應該是本教程的一個難點,但是只要思路清晰,也就很簡單了!這里我以一個問題開頭:
如此宏:
/TEE,NEW,MATP,MAC
A=10
B=5
C=5
/TEE,END
/TEE,APPEND,MATP,MAC
/prep7
block,,A,,B,,C
/TEE,END
A B C 是參數,在宏內定義了分別為10 5 5 ,如果在執行宏前,在ansys中也定義相同的變量名稱A B C并且賦值為 1 0.5 0.5 ,那么執行的宏是采用的哪組A B C 呢?
在宏文件內部,APDL在一般情況下定義變量和數組都是全局變量,定義之后直至執行刪除操作或退出ANSYS程序為止一直存在與ANSYS內存中,任何菜單操作,命令流文件或者宏文件中都可以使用他們。(問題答案揭曉,A B C 依然為10 5 5),但是APDL還提供了兩套特殊命名的變量參數用作宏的局部變量,他們只能用在宏文件中,其生命周期與宏運行周期完全相同,只有在調用宏時才會用宏局部變量,當宏運行結束時這些局部變量會從內存中消失。這兩種宏局部變量分別是:
1宏命令行的輸入變量
2宏文件的內部變量
5.1宏命令行的輸入變量
宏可以當作ansys的命令,此時宏命令可以具有19個變量,他們分別表示宏的19個輸入參數,在宏中可以直接引用這19個變量,從而實現將宏命令輸入行的變量參數傳入宏文件中。這19個宏輸入變量參數只能在每個宏文件內部使用,隨著宏的調用而存在于宏的進程中,隨著宏的退出二從內存中消失。正是于此,所有宏都可以使用這19個宏輸入變量。
這19個宏輸入變量分別是 ARG1~ARG9 以及 AR10~AR19 他們可以輸入以下值:
數值 文字或字符串 傻子或字符參數 參數表達式
注意:如果使用*USE 命令調用宏,則只能將從ARG1到AR18的參數值傳遞到宏中,將宏當作ANSYS命令進行等價運行時,則可以將從ARG1到AR19的參數的值傳遞到宏中!
實例:
創建宏
*create,blo,mac
/prep7
Block,,ARG1,,ARG2,,ARG3
FINISH
*END
運行宏
Blo,1,2,3
或采用GUI方式
5.2宏內部使用的局部變量
宏內部使用的局部變量,只有在宏文件內部才有效,調用宏時這些變量就存在,退出宏時會自動從內存中清除。內部使用的局部變量最多有79個變量參數,他們分別是從AR20到AR99的變量。注意,在套嵌中,這79個參數也不會互相傳遞,不能共享和傳遞.
實例:
用*CREATE命令創建一個計算階乘的通用宏factorial.mac,其中利用ARG1最為宏的輸入變量將階乘數值傳進宏文件,利用AR20作為宏的內部變量,用作控制DO循環數目的循環變量。然后,在主程序中調用宏factorial.mac分別計算10!和!50.
宏如下:*CREATE,factorial,mac
output_fact=1
*DO,AR20,1,ARG1
output_fact=output_fact*AR20
*ENDDO
*END
求解!10和!50 調用宏
FINISH
/CLEAR
/FILNAME,MAC_IN
factorial,10
FACT10=output_fact
factorial,50
FACT50=output_fact

六.宏的保存
默認 情況下,宏都保存到了 默認的起始目錄, 用戶可以保存到任意路徑,方法如上設置FNAME 即可,GUI模式選擇瀏覽目錄,但是最好保存到ansys的搜索路徑中,方便調用!

七.宏的應用
通過以上的教程,創建宏以及運行宏 都可輕松實現,但是,我們編制宏的目的是方便我們的分析和建模,所以我們可以把常用的零件或者標準零件或材料屬性表..做成庫,用的時候可以直接調用宏!這樣不是大大加快了我們的效率了嗎?
實例:
進行瞬態熱應力分析時,給材料一般都要 分配 導熱系數,比熱容,密度,彈性模型,泊松比..我們可以把這個步驟制作成一個宏,每次分析的時候都可以調用這個宏,直接賦參數就可以了!

八.宏的套嵌和宏庫
1.宏的套嵌
宏的套嵌就是在宏文件中調用其他的宏,APDL允許最多套嵌的宏為20層,套嵌調用宏時最多可以向宏中傳遞19個輸入變量(ARG1~ARG9,AR10~AR19)每個套嵌的宏運行完畢后程序的進程自動返回給調用該宏的上一層。
2.宏庫
可以把一些宏放到一個文件中,這個文件就是宏庫文件,宏庫文件沒有明確的文件擴展名,但文件的命名規則和宏文件一樣。其中,每個宏的開始處都有一個宏名,并以一個/EOF命令結束,建議把宏庫文件放在宏的搜索路徑中,這樣方便調用.與宏文件不同,宏庫文件可以有任何擴展名,做多包括8個字符。
宏庫文件結構圖:
MACRO_NAME1


…/EOF
MACRO_NAME2



/EOF
MACRO_NAME3



/EOF

創建后,就可以調用宏庫文件中的宏了,運行宏庫中宏的格式如下:
/ULIB,FNAME,EXT,--
*USE,…
FNAME——宏庫文件名及其路徑(默認為工作目錄)
EXT——宏庫文件后綴
注意,一旦用*ULIB調用了宏庫后,就不能用*USE運行非此庫中的宏