
發布
注冊
/
登錄變量運算 ansys的案例
ANSYS中的變量
ANSYS中的變量總的來說分為兩大類:一類是標量參數;一類是數組參數。其意義與C語言中的參數和數組類似。標量參數是指單個的變量,而數組則是由一系列具有相同意義的數據組成。
一:標量參數
標量參數分為兩種:數值型的和字符型的。
1:標量參數的定義或修改:可以使用*SET命令或直接寫出賦值表達式。修改時,只需改變數據即可。
例如:
*SET,LENGTH,10 !定義了一個名為LENGTH的數值型變量,并且值為10
*SET,COMMENT,'DISP' !定義了一個名為COMMENT的字符型變量,并且賦值為DISP
以上兩句等價于:
LENGTH=10
COMMENT='DISP'
2:標量參數的刪除:同樣可以使用*SET命令或直接寫出賦值表達式或使用*DEL命令。將需要刪除的變量賦空值,注意不是數字0或空格。
例如:我們將上面定義的兩個參數刪除。語句如下:
*SET,LENGTH,
*SET,COMMENT,
或:
LENGTH=
COMMENT=
又或:
*DEL,LENGTH
*DEL,COMMENT
3:標量參數的GUI操作菜單。GUI路徑為:Utility Menu->Parameters->Scalar Parameters。標量參數的定義,刪除和修改都可以在這個窗口中完成。
二:數組參數
數組參數按維數可分為:一維數組,二維數組和三維數組。
按存儲的數據類型可分為:
1)一般數組參數,也成為ARRAY Parameter。是一種默認的數據類型,也就是說,如果用戶不聲明數據類型,系統就會自動使用該數據類型。該數組的行、列、面的索引均為從1開始的連續整數,元素值可以為整數或實數。
2)字符數組參數,又名CHAR Array Parameter。元素值為不多于8個的字符或數字組成。其行,列,面的索引值也是從1開始的連續整數。
展開 ANSYS APDL如何求變量的最大值
在其他語言中求最大值非常容易,比如有三個變量分別是MXS6,MXS7和MXS8,要求他們的最大值賦予MaxS,用到的函數往往只是一個函數MaxS=max(MXS6,MXS7,MXS8)。但是在ANSYS Parametric Design Language Guide第三章第8節 Parametric Functions部分卻找不到這樣的函數。
無奈自力更生吧。
MaxS=MXS6
*if,MXS7,GT,MaxS,THEN
MaxS=MXS7
*ENDIF
*if,MXS8,GT,MaxS,THEN
MaxS=MXS8
*ENDIF
這是三個變量,如果有更多變量方法也是一樣的,變量太多就用個循環,如果需要留言給我,我給大家把代碼寫出來。
展開 ANSYS Workbench布爾運算
前面兩篇介紹了Solidworks和ANSYS經典界面中的布爾運算,本期當然是介紹Workbench布爾運算了,WB自帶的強大建模工具怎能遺漏呢。
下面娓娓道來,想學好Workbench建模技術的童鞋看仔細了哈。
WorkbenchDesignModeler中實體間的布爾運算包括如下幾種:Unite(相加),Subtract(相減), Intersect(相交), Imprint Faces(印記面)。
關于印記面的專題介紹請參考什么是印記面?。
還包括其它形式的布爾運算如:Add Material,Cut Material, Slice.
布爾運算的菜單入口如下圖1。
圖1 布爾運算菜單入口
下面以一個小模型來演示布爾運算使用方法,方便大家理解。下圖是一個花鍵軸和圓盤組合在一起(有重合)。
圖2 演示幾何模型
1.Unite
Unite操作起來很簡單,只需要選中這里的軸和圓盤2 Bodies,Generate 一下就可以了,然后之前選中的2個實體就變成了一個新的實體了。如下圖3所示。
圖3選擇兩個實體進行Unite元算
Unite和add material 有些類似,但是Add Material操作只能在導入模型、生成新體時使用,而Unite操作可以在現有的模型中使用。
2. Subtract
WB DM中的Subtract功能也是與經典界面中的同出一轍,但稍遜于后者。新手需要特別注意Target Bodies 與Tool Bodies的區別!這兩項是必選項,很有必要弄清楚概念。Target Bodies是你需要減的母體,而Tools Bodies是你做減法所用的工具。即Target Bodies -Tool Bodies=期望得到的實體。
展開 ANSYS布爾運算介紹
加運算僅限于同級幾何圖素,而且相交部分最好與母體同級,但在低于母體一級時也可作加運算。如體與體的相加,其相交部分如為體或面,則加運算后為一個體;如相交部分為線,則運算后不能生成一個體,但可公用相交的線;如相交部分為關鍵點,同樣加運算后公用關鍵點,但體不是一個,不能作完全的加運算。
如面與面相加,其相交部分如果面或線,則可完成加運算。如果相交部分為關鍵點,則可能生成的圖素會有異常,當然一般情況下不會出現這種加運算。
加運算完成后,輸入圖素的處理采用 BOPTN 的設置。如采用缺省設置,則輸入圖素被刪除。
加運算有 2 個命令,即AADD,VADD。線合并 LCOMB 命令不能算布爾加運算,其命令說明詳見前面創建線部分。
加運算命令:
面加運算:AADD,NA1, NA2, NA3, NA4, NA5, NA6, NA7, NA8, NA9
體加運算:VADD,NV1, NV2, NV3, NV4, NV5, NV6, NV7, NV8, NV9
其中 NX1~NX9 為相加圖素的編號,NX1 可以為 P、ALL 或組件名 (其中 X表示 A 或 V)。
3.減運算Subtract
減運算就是“刪除”母體中一個或多個與子體重合的圖素。與加運算不同的是減運算可在不同級圖素間進行,但相交部分最多與母體相差一級;例如體體減運算時,其相交部分不能為線,為面或體均可完成運算。減運算結果的最高圖素與母體圖素相同。
減運算完成后,輸入圖素的處理可采用 BOPTN 的設置,如采用缺省設置,則輸入圖素被刪除。也可不采用 BOPTN 的設置,而在減運算的參數中設置保留或刪除,該設置高于 BOPTN 中的設置,并且減圖素和被減圖素均可設置刪除或保留選項。
展開 
ANSYS的結果進行二次運算并顯示云圖
ANSYS的結果進行二次運算并顯示云圖
在實際應用中經常會需要將ANSYS的計算結果進行二次運算,并重新顯示新的結果云圖。也即是ANSYS的現有計算結果不能滿足實際需求,需要自己在一次計算結果的基礎之上編寫計算方法。
在ANSYS里,這個過程是通過修改節點或者單元的結來實現的,筆者以前在ABAQUS里面也實現過這樣的過程,不過在ABAQUS里面不是通過直接修改節點/單元解實現的,而是可以重新定義新的結果變量。
ANSYS修改節點解釋通過DNSOL命令完成的,命令解釋如下:
DNSOL, NODE, Item, Comp, V1, V2, V3, V4, V5, V6
其中Item和Comp這兩個量是需要修改的變量名稱,例如需要修改位移X,則Item應為U,Comp應為X,后面的V1-V6就是新的值。
可以看到,利用DNSOL命令每次只能修改一個節點的值,因此,很多情況下是需要對全部的節點值進行修改,故通常需要和遍歷命令一起使用。
下面以一個實際的例子說明具體的使用方法。
新建一個簡單的模型,加載求解得到以下的結果,分別為x方向的位移和y方向的位移。
X方向的位移如下:
Y方向的位移如下:
現在需要將X和Y方向的位移進行重新計算,假設:
新的Ux=Ux**2+0.1
新的Uy=Uy**2-0.1
具體實現過程是先依次讀取計算得到的Ux和Uy,保存在自定義的數組中,然后定義新的數組,將前面的數組的數據分別處理后保存到新的數組之中,最后依次讀取新的數組的數據再通過DNSOL命令進行修改,修改完成即可顯示新的結果。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
展開 【ANSYS經驗技巧】- 學會使用變量數組函數(轉載)
可以用于定義隨某一變量(如時間)變化的邊界條件載荷,相應譜曲線,壓力曲線,材料溫度曲線,磁性材料的B-H曲線。
五.使用函數加載器與編輯器
使用函數加載的必要性就不用多說了,直接開始教程:
函數編輯器定義一個函數的一般步驟:
1.打開函數編輯器,選擇菜單路徑utility——parameter——function
2.選擇函數類型:單個方程還是多值函數(分段函數),如果是后者,必須鍵入函數變量名,即狀態控制變量,同時六狀態也被激活。
3.選擇角度單位,度還是弧度。該選項僅決定方程如何被運算而不影響*AFUNC的設置
4.定義方程:利用基本變量,方程變量和按鍵定義單個方程表達式,或者定義最多6個不同定義域的方程表達式。
1)點擊regime1選項卡,首先指定狀態控制變量的最大和最小取值區間,然后定義該取值區間對應的方程表達式,可將每個狀態控制下的方程儲存起來,在其他狀態控制中重復使用。
2)同理對regime2進行設置,只需制定當前區間最大值
1.輸入一個注釋描述函數(可選),選擇菜單路徑function——file——command
2.保存函數editor——save and type in name 輸入文件名,.func為擴展名,如果需要這些被存儲的函數,首先將其加載到ansys中,并定義一系列的方程變量,以表參數名的形式給某個分析使用。
使用函數加載器:
1.打開函數載入器,選擇parameter——function——read from file 打開保存的函數
2.在table parameter name 中輸入表變量名
3.對話框下部對應每個狀態的函數表達式和狀態表。單擊函數表,即顯示每個指定方程變量的數據輸入區,如果需要使用材料ID變量,可以在其輸入區輸入。
4.在每個定義的狀態中重復以上過程。
展開 有相互依存關系的離散變量的ansys與workbench聯合優化分析
需要說明的是對應基于離散變量的優化,采用不同的響應面構建方法和優化算法,效率相差特別大。即使對于本問題節點數目5個,單元數目6個。選擇的響應面構建方法和優化算法不同,也有可能計算幾個小時。對于本問題采用Latinhypercube sampling (LHS拉丁超立方體抽樣)生成試驗設計,采用神經網絡方法來構建響應面,實際證明效率較高。
另外對應基于離散變量的優化分析,目前workbench只支持篩選法和混合整數序列二次規劃優化算法。
另外,其實該問題也可以完全采用ansys經典完成程序優化設計,利用離散編碼陷阱實現從連續變量到離散變量的轉變。但是該方法也有很多缺點:
1.最終得優化的變量依然是連續的,需要人為后處理,實現規格表的編碼。
2.最終得到的優化結果,可能陷入局部最小陷阱。采用首次得到的優化結果為初始值,然后縮小優化變量的采用空間,可以一定程度上改善結果的精度。
3.規格表的離散區間步長對于求解的效率的影響非常大。因此,需要增大優化迭代次數。
4.系統優化過程中,可能多次在等效解處徘徊。影響求解效率。
5.人為將連續變量離散化后,基于偏導算法的一階優化方法將不能處理該類問題。
6.最終解碼得到的材料規格往往需要返回到分析中去,才可以得到真實的狀態變量數值。
完全采用ansys優化的具體方法這里不在提供。
這里順便說下ansys和workbench優化分析的優缺點:
1.采用ansys可以很方面的實現網絡結構的編程和變量提取后控制。對于類似問題,如果分析的模型更大,在workbench中建模可以說是一件極其痛苦的事情。
2.workbench提供了比ansys更多的優化算法。自身就擁有離散變量的優化功能。這也或許是現在ansys舍棄經典優化界面的一個很大原因。
展開 ansys優化,因變量和目標函數都沒有變化【急】【急】
ansys優化,因變量和目標函數都沒有變化【急】【急】
ansys優化之后,為什么只有自變量發生了變化,而因變量和目標函數都沒有變化,還是和初始值一樣?也進行了四五十次的迭代,也有顯示最優解,只是因變量和目標函數都沒有變化,疑惑中。
<手搓有限元 干翻Ansys> 【1】C++實現矩陣Matrix類 實現基本運算
本系列文章致力于實現“手搓有限元,干翻Ansys的目標”,基本框架為前端顯示使用QT實現交互,后端計算采用Visual Studio C++。
Matrix類
矩陣基本類,用于有限元矩陣計算。
1、public function
1.1、構造函數與析構函數
構造函數用來初始化矩陣,析構函數用來釋放內存。
Ansys使用APDL 批量創建數組,一維數組名設置循環變量,與二維數組等效
APDL 批量創建數組,在一維數組名上做文章,實現其與二維數組近似相同效果
首先批量創建了8個一維數組,數組名中的循環變量j使用%j%
finish
/prep7*do,j,1,8
*dim,List%j%,array,10,1
*enddo
然后給八個數組里的每一個元素賦值,總共80個元素
并且以數組元素值作為節點編號,同數組的y坐標值相同
*do,i,1,10
*do,j,1,8
List%j%(i,1)=(i-1)*10+j
n,List%j%(i,1),i,j
*enddo
*enddo
最終效果如下
注:轉自 https://blog.csdn.net/weixin_43717845/article/details/104567039
小白一枚,本為學習之余的記錄,希望能讓些跟我一樣的初學者少走彎路,寫的也不盡嚴謹,有疏漏錯誤之處也請各位專家指出,不吝賜教……多謝
展開