Upload
moises-vazquez-toledo
View
9
Download
2
Embed Size (px)
Citation preview
Macro Basics
Module 10
October 30, 2001
Inventory #001571
10-2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual10. Macro Basics
• One of the most powerful features of APDL (ANSYS Parametric Design Language) is the ability to create macros.
• A macro is a sequence of ANSYS commands stored in a file and executed just like a regular command.
• Some useful macro capabilities:
– It can have arguments as in a standard ANSYS command.
– Branching and looping to control the sequence of commands.
– Interactive features such as graphical picking, prompting, and dialog boxes.
– Nested macros — one macro calling a second one, which in turn calls a third one, etc. — up to 20 levels deep.
October 30, 2001
Inventory #001571
10-3
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual...Macro Basics
• In this chapter, we will present the basics of macro writing:
A. Creating a Macro
B. Macro with Arguments
C. Branching
D. Looping
E. General Guidelines
F. Workshop
• For more details, please refer to your APDL Programmer’s Guide or the Programming in ANSYS seminar notes.
October 30, 2001
Inventory #001571
10-4
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
A. Creating a Macro
• To create a macro, simply start a text editor, insert the desired sequence of commands, and save them to a file called name.mac.
– name can be up to 32 characters, starting with a letter.
• Spaces are not allowed in the name.
• Also avoid special characters.
• Make sure that name is not a valid ANSYS command by typing in name at Begin level and in all processors (PREP7, POST1, etc.). If you get the message … not a recognized command or macro… then the name is “safe.”
– Extension .mac allows you to execute the macro as if it were a command by simply typing in name.
October 30, 2001
Inventory #001571
10-5
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
...Creating a Macro
• Example:
– A macro totvolume.mac to calculate the total volume of all elements:
esel,all ! Select all elementsetable,volume,volu ! Store volume in element tablessum ! Sum element table items*get,totvol,ssum,,item,volume ! totvol = sum of ‘volume’*stat,totvol ! List totvol value
– Issue totvolume in POST1 (after a solve) to calculate the total volume.
October 30, 2001
Inventory #001571
10-6
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
...Creating a Macro
• Search Path:
– ANSYS will execute the first name.mac file it finds in the following search sequence:
1. /ansys60/docu
2. directory(ies) in ANSYS_MACROLIB environment variable
3. login directory (home directory on Windows systems)
4. current (working) directory
– If the search finds both upper-case and lower-case files of the same name, the upper-case file is used.
October 30, 2001
Inventory #001571
10-7
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
B. Macro with Arguments
• By using special parameter names, you can create a macro with up to 20 arguments:
– NAME, arg1, arg2, arg3, … , ar10, ar11, ar12, … , ar20
• The arguments behave just like the fields on a standard ANSYS command and can accept:
– numbers
– alphanumeric characters (enclosed in single quotes)
– parameters (scalar or array)
– parametric expressions
• The meaning of the arguments depends on how you want to design the macro.
October 30, 2001
Inventory #001571
10-8
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
...Macro with Arguments
• For example, we could design totvolume.mac to calculate the total volume for all elements of a specified type:
– TOTVOLUME, TYPE
• The macro would then look like this:
esel,s,type,,arg1 ! Select elements of specified typeetable,volume,volu ! Store volume in element tablessum ! Sum element table
items*get,totvol,ssum,,item,volume ! totvol = sum of ‘volume’*vwrite,arg1,totvol ! Write out arg1 and totvol(‘Total volume for type ’, F4.0, ‘ elements = ’, F8.2)
• Issuing totvolume,1 in POST1 after a solution will then result in:
October 30, 2001
Inventory #001571
10-9
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
...Macro with Arguments
• Notes:
– The special parameter names ARG1-ARG9 and AR10-AR99 are local parameters valid only within a macro.
• They hold no meaning once the macro has finished execution and control is returned to “main” ANSYS.
• Avoid using these names elsewhere in the model.
– Whenever you use arguments, be sure to describe their meaning by including comments in the macro.
For example, the following comments at the beginning of totvolume.mac would be helpful.
! Macro TOTVOLUME.MAC to calculate total volume of elements! Usage: TOTVOLUME, TYPE - valid only in POST1 after a solve! TYPE = valid element type numberesel,s,type,,arg1 ! Select elements of specified
type……
October 30, 2001
Inventory #001571
10-10
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
C. Branching
• By using an IF-THEN-ELSE construct, you can execute a command or block of commands only if certain conditions are met.
• Additional comparison operation are available for the *IF and *ELSEIF commands with AND, OR, or XOR options.
– *IF,A,EQ,B,AND,C,GT,D,THEN
• Branching begins with *IF and ends with *ENDIF. *ELSEIF and *ELSE are also allowed in between:
*if, x, eq, y, then
*elseif, x, eq, z, then
*else
*endif
• *IF constructs can be nested up to twenty levels
October 30, 2001
Inventory #001571
10-11
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
...Branching
• The condition can be:
x, EQ, y ! x = y
x, NE, y ! x y
x, LT, y ! x < y
x, GT, y ! x > y
x, LE, y ! x y
x, GE, y ! x y
x, ABLT, y ! |x| < |y|
x, ABGT, y ! |x| > |y|
• x and y can be numbers, parameters, or parametric expressions.
• The action can be:
THEN to execute the subsequent block of commands
*EXIT to exit a do-loop
*CYCLE to skip to the end of a do-loop
• The action takes place only if the condition is true. Otherwise, ANSYS will move on to *ELSEIF (if present), *ELSE (if present), and *ENDIF.
*if, x, eq, y, then
October 30, 2001
Inventory #001571
10-12
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
...Branching
• For example, you can add an if-test to totvolume.mac to test for valid values of the input argument:
*if,arg1,lt,1,then ! If arg1 < 1*msg,warn ! Issue a warning...Element type number must be 1 or greater/eof ! … and exit the macro
*endifesel,s,type,,arg1 ! Select elements of specified typeetable,volume,volu ! Store volume in element tablessum ! Sum element table items...
• Issuing totvolume,-1 will now result in:
October 30, 2001
Inventory #001571
10-13
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
D. Looping
• Do-loops allow you to loop through a block of commands several times.
• There is virtually no limit to what you can include in an ANSYS do-loop. You can loop through an entire analysis session — including preprocessing, solution, and postprocessing — if the situation warrants it.
• *DO or *DOWHILE begins a loop, *ENDDO ends it.
– You can control the looping using *EXIT, which exits the do-loop, and *CYCLE, which skips to the end of the do-loop.
– Exit and cycle can also be done as a result of an if-test.
• As an example, we can extend the totvolume.mac macro to loop through all element types in the model and store the volume for each type in an array parameter.
October 30, 2001
Inventory #001571
10-14
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
...Looping
! -- Macro TOTVOLUME.MAC to calculate total element volume.! -- Usage: Issue TOTVOLUME in POST1 after a solution.! -- Result:! -- a) evolume(i) = total volume for element type i! -- b) totvol = grand total volume!*get,numtypes,etype,,num,count ! Get number of element types*dim,evolume,array,numtypes ! Open a numtypes x 1 array*do,i,1,numtypes ! For i = 1 - numtypes...
esel,s,type,,i ! Select elements of type ietable,volume,volu ! Store volume in element tablessum ! Sum element table items*get,totvol,ssum,,item,volume ! totvol = sum of ‘volume’evolume(i) = totvol ! Store totvol in evolume(i)
*enddo ! End of do-loop*vscfun,totvol,sum,evolume(i) ! totvol = grand total volumeesel,all ! Activate full set of elements
October 30, 2001
Inventory #001571
10-15
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
E. General Guidelines
• Start with small, simple macros.
• As you create the macro, remember that you can cut and paste the commands into the ANSYS Input window to test and make sure that the command sequence is correct.
• Use comments to describe the intent or expected outcome of commands.
• Place your “personal” macros in your login directory.
• Place company-wide macros in a directory that everyone can access, and include that directory in ANSYS_MACROLIB environment variable.
October 30, 2001
Inventory #001571
10-16
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
INTR
OD
UC
TIO
N T
O A
NS
YS
6.0
- Part 2
Training Manual
Macro Basics
F. Workshop
• This workshop consists of the following problem:
W9. Verifying Pressures
Please refer to your Workshop Supplement for instructions.