學會ANSYS數組的定義與使用,提高參數化建模與分析水平

2020-12-07 鐵大王新敏

ANSYS中APDL的「數組」與其他高級語言概念類似,這裡通過實例介紹數組的定義、賦值、顯示等內容。在建模和後處理過程中,使用數組可大大提高參數化過程,進而提高分析效率。ANSYS數組分為數值型數組、表數組、字符型數組和字符串數組,如無特別說明,本文所指數組均為數值型數組。

1.數組的定義

*DIM,Par,Type,IMAX,JMAX,KMAX,Var1,Var2,Var3,CSYSID

其中Par是數組名,其命名規則與變量一樣,如不超過32字符等。

Type是數組類型,標識符有ARRAY、ARR4、ARR5、TABLE、TAB4、TAB5、CHAR、STRING等,數值型就前三個,即ARRAY、ARR4和ARR5;預設為ARRAY即數值型數組。

IMAX、JMAX、KMAX為數組下標的最大值。Var1、Var2、Var3對應表數組的行、列、面名字,但對於ARR4和AAR5時,也為下標的最大值。CSYSID是坐標編號,在表數組荷載時使用。

例如:*DIM,A,,10!定義一維數組A(10)

*DIM,B,,5,3!定義二維數組B(5,3)

*DIM,C,,10,5,4!定義三維數組C(10,5,4)

*DIM,D,ARR5,10,5,4,2,6!定義五維數組D(10,5,4,2,6)

2.數組賦值

數組賦值方法主要有*SET或「=」、*VFILL、*VREAD等,常用的有「=」和*VREAD。需要特別注意的是,數組賦值以「列」優先,分別介紹如下。

(1)「=」賦值

等號可以一次為數組的一個元素或多個元素賦值,即可一個一個元素賦值,也可一次賦予18個元素的值。多於18個元素時,可以另次賦值,例如有兩個數組A(30)和B(4,5),賦值如下:

*DIM,A,,30!30個元素的一維數組

*DIM,B,,4,5!4行5列數組

A(1)=1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,10.0,11,12,13,14,15,16,17,18!一次賦18個

A(19)=19,20,21,22,23,24,25!從19開始再賦7個

A(26)=26,27,28,29!從26開始再賦4個

A(30)=30!當然也可一次賦一個元素

STAT,A!顯示A(30)數組的值

!假設B數組按4行5列分別元素數值為:

!1.1 1.2 1.3 1.4 1.5

!2.1 2.2 2.3 2.4 2.5

!3.1 3.2 3.3 3.4 3.5

!4.1 4.2 4.3 4.4 4.5

!B數組賦值命令如下

B(1,1)=1.1,2.1,3.1,4.1!賦第1列的各行元素

B(1,2)=1.2,2.2,3.2,4.2!賦第2列的各行元素

B(1,3)=1.3,2.3,3.3,4.3!賦第3列的各行元素

B(1,4)=1.4,2.4,3.4,4.4!賦第4列的各行元素

B(1,5)=1.5,2.5,3.5,4.5!賦第5列的各行元素

!B(4,3)=100.0!賦予單個元素(4,3)數值

!STAT,B!先行後列顯示數值,一個一個元素顯示,不太直觀。

*VEDIT,B!編輯、修改、賦值、顯示數組B,比較直觀。

再次強調,ANSYS數組按「列優先(列不動行變)」賦值,如2維數組按列賦值,在一列時再按一維數組賦值。對於3維甚至更高維時規律類似,如5維數組,先按第5維賦值,然後是第4維,再是面賦值等等。

(2)*VREAD賦值

*VREAD命令是從ASCⅡ文件讀入數據,與其他高級語言類似。命令格式為:

*VREAD,ParR,Fname,Ext,--,Label,n1,n2,n3,NSKIP

其中ParR為已經定義好了的數組名。Fname和Ext為帶路徑的數據文件名和擴展名,長度分別可達250個字符和8個字符,但不能採用中文目錄名,預設時為當前工作目錄和當前工作文件名;一般不建議數據文件名和工作文件名相同,如需要帶目錄的文件時為('E:/ANSYSWORK/DATA/FILENAME')樣式(注意無括號)。

Label為賦值順序標識符,可取IJK、IKJ、JIK、JKI、KIJ、KJI或空(按IJK預設)。n1、n2、n3為與Label次序對應的數值,例如當Label=KIJ時,按(((ParR(i,j,k),k=1,n1),i=1,n2),j=1,n3)讀入並賦值。

NSKIP為讀入數據文件時跳過的行數,表示從下一行開始讀入數據,預設為零,即從第1行開始讀入數據。

在使用*VREAD時注意:該命令後緊跟數據格式行,且不能直接在粘貼在GUI的命令窗口執行;其次是數據文件可以為無整數的、用英文逗號隔開的數據(ANSYS「小意外系列」之一:須了解並避免出錯)。

通常數據文件都是按行和列排列的數據,當然希望按此讀入數據,例如按下述組織的數據文件(可用記事本編輯並保存在ANSYS當前工作目錄下,且為MYTEST.TXT文件):

1.1,1.2,1.3,1.4,1.5

2.1,2.2,2.3,2.4,2.5

3.1,3.2,3.3,3.4,3.5

4.1,4.2,4.3,4.4,4.5

5.1,5.2,5.3,5.4,5.5

6.1,6.2,6.3,6.4,6.5

根據上述數據文件,顯然讀入順序應該「行不動列變」,即JIK格式,也就是*VREAD,A,MYTEST,TXT,,JIK,5,3,1,打開就是(((A(I,j,k),j=1,5),i=1,3),k=1,1)。可執行的命令流如下:

*DIM,A,,3,5!定義A(3,5)

*DIM,B,,3,5,2!定義B(3,5,2)

*CREAT,READDAT,MAC!創建宏文件READDAT.MAC

*VREAD,A,MYTEST,TXT,,JIK,5,3,1!讀入數據及格式

(5F15.5)

*END!宏結束

READDAT!執行宏

*CREAT,READDAT1,MAC

*VREAD,B,MYTEST,TXT,,JIK,5,3,2

(5F15.2)

*END!

READDAT1

!顯示數組(一個一個顯示)

*VEDIT,A

*VEDIT,B

!利用DOS命令刪除剛剛創建的兩個宏文件

/sys,del,readdat.mac

/sys,del,readdat1.mac

(3)*VFILL賦值

*VFILL用於填充數組或表數組,填充的數據按一定的分布規律或系列隨機數,其格式為:

*VFILL,ParR,Func,CON1,CON2,CON3,CON4,CON5,CON6,CON7,CON8,CON9,CON10

其中ParR為已定義的數組名。Func可以按:

DATA-將指定數據CON1~CON10填充數組。

RAMP-按CON1+((n-1)*CON2)規律填充數組,n由數組最大下標確定。

RAND-按均勻隨機數填充數組,即RAND(CON1,CON2)。

GDIS-按高斯分布隨機數填充數組,即GDIS(CON1,CON2)。

TRIA-按三角分布隨機數填充數組,即TRIA(CON1,CON2,CON3)。

BETA-按β分布隨機數填充數組,即BETA(CON1,CON2,CON3,CON4)。

GAMM-按γ分布隨機數填充數組,即GAMM(CON1,CON2,CON3)。

RIGID-按參考坐標(CON1,CON2,CON3)生成剛體模態填充數組。

CLUSTER-按CLUSTER生成激勵頻率填充數組,需使用(CON1,CON2,CON3,CON4,%CON5%)。

有趣的ANSYS隨機數發生器

3.顯示數組

命令*STAT,ParR可以列表顯示數組值,按行、列、面順序排列,但顯示時每行一個元素。

命令*VEDIT,ParR可以編輯、修改數組值,也可通過此命令賦值。

命令*VPLOT可以繪圖顯示數組值,其命令格式為「*VPLOT,ParX,ParY,Y2,Y3,Y4,Y5,Y6,Y7,Y8」,其中ParX為橫坐標軸「列名稱」,預設時為數組下標。ParY和Yi為豎坐標軸的「列名稱」,即可同時繪製8條曲線。

*DIM,GG,,30,5

*VFILL,GG(1,1),GDIS,1,10

*VFILL,GG(1,2),TRIA,1,20,2

*VFILL,GG(1,3),BETA,1,20,2

*VPLOT,,GG(1,1),GG(1,2),GG(1,3)

4.數組刪除

數組刪除與變量刪除相同,即「數組名=」就將改數組刪除了,在讀入命令流(/INPUT或宏)中,系統不提醒確認,但在GUI方式時系統要求確認刪除。

上述為數組的基本內容,ANSYS還提供了對數組的各種運算函數和命令,可大大方便計算分析,這些回頭再聊。ANSYS的APDL類似FORTRAN語言,因此可以在ANSYS中添加自己的編程計算部分,但計算速度可能不太理想。

類似數組的停車場

相關焦點

  • ANSYS結構分析中,表數組加載和函數加載有多大必要?
    原計劃再詳盡聊聊表數組和表數組加載、函數和函數加載等,但考慮不是必須要用的東西,就如你可能一生都在用AutoCAD,但可能有些功能從不使用,ANSYS有些功能或命令也一樣,因此就不打算再詳細聊這方面的內容了。換句話說,表數組加載或函數加載用途並非必須,至少在結構分析中是這樣。
  • java之數組作為方法參數的使用
    各位小夥伴們大家好,這次小編要介紹的是java作為方法參數,返回值的使用。首先,小編要介紹的是java作為方法參數的使用。代碼如下:public class Demo01ArryParam {public static void main(String[] args){int[] array={1,2,34,78};//定義一個方法System.out.println(array);//地址值printArray(array);//(方法的調用)}/** 方法定義的三要素:*
  • ANSYS發布旗艦新版本:工程仿真軟體ANSYS 15.0
    我們通過提高性能、推出新的求解器功能在所有關鍵物理場領域都實現了巨大改進。我們通過伴隨求解器、HPC可擴展性、從微米到全系統的高效仿真建模等創新技術繼續擴大我們的仿真領先優勢。"結構分析:高級材料系統設計複合材料的使用可以減輕結構重量並提高燃料利用率。
  • Excel VBA如何定義數組,這裡有最全的數組定義方法
    Dim + 數組名定義數組用Dim關鍵字,後面的一些參數,沒有也可以,表示任意大小或任意類型的數組。Dim Arr(0 to 10)這樣就定義了一個由最小下標為0,最大下標為10的一維數組,也就是Arr數組裡面包含了從0~10的11個變量。
  • 安慶長江鐵路大橋ANSYS建模命令流
    原標題:安慶長江鐵路大橋ANSYS建模命令流 安慶長江鐵路大橋ANSYS建模命令流 作者:技術鄰|有限元中解人生所有橋墩上均設豎向和橫向約束,4#塔與主梁之間設縱向水平約束,3#塔與梁間使用帶限位功能的粘滯阻尼器。主梁為」N」字型桁式,橫向採用三片桁結構,主桁的橫向中心距各為14m,桁高15m,節間距14.5m[2]。
  • Python使用ctypes模塊調用DLL函數之複數數組的參數傳遞
    這兒就涉及到了如何將C語言中的複數數組(Complex array)類型與Python中的數據類型進行交互的問題。在Python語言中,可以使用ctypes模塊調用其它如C++語言編寫的動態連結庫DLL文件中的函數,前面多篇文章中已經講了傳遞數值/指針/字符串參數、傳遞結構體參數、傳遞普通數組類型的例子,大家可以回看一下,這樣可以更好的理解本次要講的內容。
  • 工業APP案例 |機翼全參數化設計及流-固-熱耦合分析
    通過建立一套全參數化的機翼設計分析模型構建體系,可實質性的促進達成快速多方案迭代或自動優化設計的目標。各種不同翼型結構的參數化快速建模 2) 案例描述機翼結構複雜,需要找出全參數化定義設計和分析模型的具體實現方法,需要同時考慮CFD氣動分析及氣動加熱和結構熱傳導、結構動靜強度、流固熱三個物理場在各種不同的計算狀態下的雙向耦合。
  • ANSYS 16.1推出雲端企業仿真
    HGST公司的首席信息官Steve Phillpott指出:「HGST認為雲計算的應用是一個重要的模式轉型,能在我們需要它的時間和地點提高商業靈活性和功能。ANSYS解決方案給我們留下了深刻的印象,能在雲中提供完整端到端的仿真過程,讓我們維護模型,直接在我們的虛擬私有雲(VPC)環境中仿真並分析結果。
  • 了解什麼是數組,如何應用數組,只需1分鐘就可以秒變數組大神!
    Hi,大家好,有很多的小夥伴在私信提問能不能說說什麼是Excel數組,因為不了解什麼是數組,因此對數組公式感覺非常神秘和陌生。由於大部分人都對數組公式很陌生,我一直都在思考如何和大家介紹這個,讓所有人都可以學會的入門資料,鑑於此情此景,本文應景而生,希望本文對你的Excel的水平提高有幫助。同時希望大家交流有錯漏的請給予斧正。
  • 參數化設計在工程領域的應用
    參數化設計技術以其強有力的草圖設計、尺寸驅動修改圖形功能,成為初始設計、產品建模及修改系列設計、多方案比較和動態設計的有效手段。    目前,市場上已經有很多成熟的三維設計軟體。這些軟體最大的特點是易學易用、功能強大、連結兼容性好,最顯著的優點在於基於特徵的完全參數化設計方式保證了產品設計的合理性和高效性,直觀反映出產品的真實幾何形狀、代碼,以實現無圖紙加工。
  • 在VBA中如何使用動態數組,以及利用動態數組去除重複值的方法
    如果參數include是True,Filter函數返回的是包含match參數子字符串的數組子集。如果參數include是False,Filter函數返回的是不包含match參數子字符串的數組子集。d) compare是可選的,所使用的字符串比較類型。
  • Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞
    在Python語言中,可以使用ctypes模塊調用其它如C++語言編寫的動態連結庫DLL文件中的函數,在提高軟體運行效率的同時,也可以充分利用目前市面上各種第三方的DLL庫函數,以擴充Python軟體的功能及應用領域,減少重複編寫代碼、重複造輪子的工作量,這也充分體現了Python語言作為一種膠水語言所特有的優勢
  • 同望AUTO CDM平臺「自定義構件」免費用 多樣化建模不再難!
    >減少建模時間,提高構件精度,滿足多樣化建模需求操作簡單易上手,業務效率從此提速歡迎免費試用!以前,五花八門的模型,導致構件種類隨之增多,然而一些建模軟體的構件種類不足,無法滿足行業需求。更重要的是,因為模型設計理念各有不同,設計師需按個性化需求自定義構件,構件種類少、自定義需求無法實現,讓不少工程諮詢單位及施工單位苦不堪言。
  • 學會這兩招,PLC編程也可以批量化定義變量-數組、結構
    數組簡單的說,就是多個相同類型數據一定順序排列的集合,使用一個名字命名,並通過編號的方式對這些數據統一管理。在PLC編程過程中,我們也經常遇到同類型的變量需要定義,例如10臺電機的電流值,如果不使用數組你還在這樣?這樣??
  • 株齒微服務工業APP:參數化建模 齒輪設計者的福音
    播放暫停進入全屏退出全屏00:0000:00 重播 請刷新試試齒輪是機械傳動中最常見的傳動形式之一,為提高齒輪設計的精確性和設計效率,工程師通常會藉助一些齒輪計算工具。眼前這款外齧(nie 四聲)合變位圓柱齒輪傳動幾何尺寸計算模型,作為株齒微服務系列工業APP應用之一,它能使設計工程師很方便地獲得生產所需要的齒輪參數。
  • 怎麼理解php中的數組?php的數組創建和使用方法是什麼?
    php數組的定義數組就是值類型相同的變量的集合,在PHP中的一種常用的複合數據類型,數據可以存放很多的數據,可以存儲任何類型的數據。我們可以把變量當做一個包含值得盒子,那麼可以把數組當做當成一個帶有隔層的盒子,每一層都可以存放一個值。
  • Java中可變參數的使用方式
    在Java的參數定義中,有一種比較特殊的定義方式,就是可變參數。可能有的朋友對這個名稱有點陌生,但是看到代碼可能就會說,「就是他啊」。那這個可變參數是什麼呢,就是類似下面這個方法籤名中的參數的定義方式了。
  • C語言編程技巧:跟我學如何定義及使用一個字符串數組
    實現目的我們在用C語言編寫程序時,經常會遇到使用字符串數組的情況,這種數組的特點是, 數組中的每個元素都是一個字符串,但每個字符串的長度卻不相同。如果你使用C++語言進行編程的話,實現起來相對比較簡單,只需直接選擇標準模板庫的字符串string類,在代碼中定義該類的一個數組即可實現。現在的問題是,在純C語言中如何定義這樣的一個字符串數組呢?如對於下面的一個字符串數組:str = {「I love C.」,「I love C++.」,「I love JAVA.」
  • Python語言中使用array模塊實現動態數組的操作
    背景對於動態數組諸如創建、插入、刪除、查詢大小等操作,在C/C++語言中,可以使用標準庫中的vector類實現,而在python語言中,也同樣提供了內置的array模塊實現類似的功能。動態數組的創建創建方式為:array.array(typecode[, initializer]),第1個參數typecode定義了數組元素的類型,第2個可選參數給出了數組中的初始值。如下面的代碼創建了一個int型的包含3個元素的數組x,其初始值為分別為1、2、3。其索引方式同列表類似,下標從0開始,如x[1]代表取數組x中的第2個元素。
  • PTC和Ansys實現最新CAD市場創新
    波士頓2020年11月23日 /美通社/ -- PTC(NASDAQ:PTC)屢獲殊榮的Creo®計算機輔助設計(CAD)軟體的最新產品包括第一款使用Ansys(NASDAQ:ANSS)高保真求解器的CAD產品,使用戶能夠以高度的準確性快速模擬設計結果。