天天看點

《ANSYS 14.0超級學習手冊》一2.2 APDL的流程控制

本節書摘來自異步社群《ansys 14.0超級學習手冊》一書中的第2章,第2.2節,作者 張建偉 , 白海波 , 李昕, 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

ansys 14.0超級學習手冊

ansys在執行apdl所編寫的程式時,采取的是逐行解釋并執行指令的方式。複雜的程式經常需要控制指令的執行順序。為此,apdl提供了以下流程控制指令,一種接近于fortran的流程控制指令:

*go無條件分支。

if……ifelse……else……endif條件分支。

do……enddo循環。

*dowhile循環。

*repeat重複指令。

go指令是無條件分支指令,不能從循環體或者條件分支中利用它跳轉出來執行其他指令,是以go指令不可以與其他分支或循環嵌套使用。*go指令格式如下:

apdl通過比較兩個數值大小來确定目前滿足的條件,選擇性地在多個指令段中執行其中的一個。

*if語句是條件分支語句,使用格式如下:

val1,val2,val3,val4,為4個比較數,oper1與oper2是兩個比較運算符。比較運算符有以下幾種。

eq(等于,equal):val1 = val2

ne(不等于,not equal):val1≠val2

lt(小于,less than):val1

gt(大于,greater than):val1>val2

le(小于或等于,less than or equal):val1≤val2

ge(大于或等于,greater than or equal):val1≥val2

ablt(絕對值小于,absolute values of val1 and val2 before

abgt(絕對值大于,absolute values of val1 and val2 before> operation):|val1|> |val2|

base1是邏輯表達式oper1為真時的操作,如果邏輯表達式oper1為假則繼續讀取下一行程式;如果後面沒有第二個條件oper2,則base1為then;如果後面有第二個條件oper2,則base1為邏輯連接配接詞(and、or、xor),由兩個條件組合成一個條件,條件連接配接如下。

and:表示oper1與oper2條件同時為真時,結果為真。

or:表示oper1與oper2條件至少一個為真時,結果為真。

xor:表示oper1與oper2條件同時為假時,結果為真。

base2是兩個條件為真時執行操作,base2 = then。

*do指令是循環操作指令,格式如下:

其中,par是循環控制變量,隻允許使用數值型變量,ival是par初值,fval是par終值,inc為循環變量的步長,預設為1。

do……enddo循環可以與if分支結合,利用exit和*cycle指令跳出目前循環過程或整個循環體,格式如下:

其中cycle為中斷目前循環,直接進入下一步循環,exit為直接跳出目前循環體,讀者應注意兩者差別。

使用*do循環時,有如下注意事項:

分支語句if或go指令不允許跳出*do循環體。

在do循環中,第一次循環後自動禁止指令結果輸出,要得到所有結果輸出需要在do循環中使用/gopr或/go語句。

/clear指令不會清除*do循環的堆棧,但會清除所有參數,是以要在/clear指令前執行/parsave指令來防止删除。

不允許使用label将程式跳轉到另一行,但通常可通過*if分支來實作。

*dowhile也是循環指令, 将重複循環體指令直到外部控制參數改變為止, 指令格式如下:

其中par為判斷條件,當par為真則執行下一次循環,為假則中止。與do循環相比,dowhile循環無需事先知道循環的次數,直接由循環條件控制,*do循環則需要先确定循環的起點與終點。

*repeat指令按照事先指定的次數重複上一條指令,且指令中的參數可以按固定增量遞增。

ntot是指令重複的次數,該次數是包含初始執行的,是以必須大于2,且必須為整數。vinc1~vinc11分别是11個參數在每次循環時的增量。