Sei sulla pagina 1di 140

Altair

Engineering

Templates
Altair HyperMesh 3.1

For technical support, contact us by phone or e-mail:

Country United States Germany India Israel Italy Japan Korea Scandinavia United Kingdom

Phone 248.614.2400 49.7031.6208.22 91.80.665.8871 972.3.5473651 39.11.900.77.11 81.3.5396.1341 822.573.4152 46.46.286.2052 44.1327.810700

E-mail hmsupport@altair.com support@altair-gmbh.de support@india.altair.soft.net support@netvision.net.il support@altairtorino.it aj-support@altair.com support@yewon.co.kr support.sweden@altair.com support@uk.altair.com

Copyright (c) 2000 Altair Engineering, Inc. All rights reserved.

Trademark Acknowledgments: HyperMesh is a registered trademark of Altair Engineering, Inc. ACIS is a registered trademark of SPATIAL TECHNOLOGY, INC. ACIS Geometric Modeler is a registered trademark of SPATIAL TECHNOLOGY, INC. ACIS Kernel is the registered trademark of SPATIAL TECHNOLOGY, INC. ACIS Parametric Surfaces is the registered trademark of SPATIAL TECHNOLOGY, INC. MS-DOS is a registered trademark of Microsoft Corporation. UNIX is a registered trademark of AT&T. MSC/NASTRAN is a registered trademark of MSC. ABAQUS is a registered trademark of Hibbitt, Karlsson, & Sorensen, Inc. ANSYS is a registered trademark of Ansys, Inc. PATRAN is a registered trademark of MSC. LS-DYNA is a registered trademark of LSTC. MARC is a registered trademark of MARC Analysis Research Corporation. PAMCRASH is a registered trademark of Engineering Systems International. FLUENT is a registered trademark of Fluent, Incorporated. I-DEAS is a registered trademark of Structural Dynamics Corporation. Spaceball is a registered trademark of Spacetec IMC Corporation.

Template Design
Templates define the form of an output file using a series of commands. This section describes HyperMesh templates and how to use them to generate a data deck. HyperMesh templates format the data in a HyperMesh database for finite element codes. A template is an ASCII data file containing HyperMesh template commands that are organized in blocks. When outputting a database, HyperMesh processes the template per block. Blocks are output in the order that they are defined in the template file. Templates search the HyperMesh database. As you request an entity for output, HyperMesh searches the database. You can request output on five levels (listed below in ascending order). before() At this level, you can define a series of commands that HyperMesh processes before moving to the next level. The before() level is executed once for each data type requested. Use this level to add comments and set up parameters on the following levels. Some of the data in the database is available at this level. At this level, HyperMesh scans the database for the requested data type. Each time HyperMesh finds the requested data type collector, it executes the beforecollector() level. Use this level to add comments about the data and create groups. Collector data is available at this level. At this level, HyperMesh processes the commands defined for each entity contained in a collector. The data associated with the printed entity is available, and the format required for each entity is defined at this level. After the data entities within a collector have been processed, HyperMesh goes to the aftercollector() level. The aftercollector() level is processed after each collector is scanned. Only the collector data is available at this level. The after() level is similar to the before() level. HyperMesh executes the after() level once after HyperMesh scans the database.

beforecollector()

format()

aftercollector()

after()

The before() and after() blocks are executed even if none of the entities specified exists in the database.

Altair Engineering, Inc.

Templates

Nodes - Output Steps


HyperMesh performs the following steps to output nodes: 1. HyperMesh executes the before() level. 2.HyperMesh executes the beforecollector() level using the only node collector in the database. 3. The format() level is executed once for each node in the database. 4. After processing the nodes, HyperMesh executes the aftercollector() level and the after() level. When outputting nodes, the before() and beforecollector()levels perform the same operation. The after() and aftercollector() levels also perform the same operation. This is because there is no data associated with the collector.

Collectors
HyperMesh performs the following steps to output collectors: 1. HyperMesh executes the before() level following by the beforecollector() level. 2. Since a HyperMesh database does not have a collector collector, the beforecollector() level is a duplicate of the before()level and is immediately executed once. 3. HyperMesh executes the format() level for each of the collectors in the database. All of the collector data is available. 4. The aftercollector() and after() levels are processed similarly to the before() and beforecollector() levels in step 1. The collector types in HyperMesh include: Assemblies Components Load Collectors Plots System Collectors Vector Collectors Blocks Curves Materials Properties

Templates

Altair Engineering, Inc.

Lines - Output Steps


HyperMesh performs the following steps to output lines: 1. HyperMesh executes the before() level before scanning the database. 2. HyperMesh examines each component for a line that matches the requested type. When HyperMesh finds a component, the beforecollector() level is processed. Component data is available at this level. 3. HyperMesh executes the format() level once for each line in the component that matches the requested type. 4. The aftercollector() and after() levels are processed similarly to the before() and beforecollector() levels in step 1. NOTE In the HyperMesh window, any time that you can select a line, you can also select the edge of a surface. Although those edges function as lines, they are not members of collectors and are not output by the template system.

Elements
When HyperMesh outputs elements, it follows the lines output procedure.

Surfaces - Output Steps


When HyperMesh outputs surfaces, it follows the lines output procedure.

Points - Output Steps


When HyperMesh outpus points, it follows the lines output procedure. NOTE In the HyperMesh window, when you select a point, you can also select a vertex of a surface. Although these vertices can function as parts, they are not members of collectors, and are not output by the template system.

Altair Engineering, Inc.

Templates

Groups - Output Steps


When HyperMesh outputs a group, it restricts the type and number of elements and lines that a group collects.

Systems and Loads


When HyperMesh outputs systems and loads, it follows the lines output procedure.

Vectors - Output Steps


HyperMesh performs the following steps to output vectors: 1. HyperMesh executes the before () level before scanning the database. 2. HyperMesh examines each vector collector for a list of vectors. For each vector collector found, the beforecollector() level is processed. Collector data is available at this level. 3. HyperMesh executes the format() level once for each vector found. 4. The aftercollector() and after() levels are processed similarly to the before() and beforecollector() levels in step 1.

Templated Node Output Example


The following example demonstrates how to use template files to generate output files for nodes. Assume that a particular analysis code, E-Z-SOL1, requires the nodes in the data deck to appear in the following format: BEGIN CODE 1 8 NODE DATA NODE . . . END NODES END CODE

16 <id>

24 <x>

32 <y>

40 <z>*

The following template generates the necessary output: BEGIN CODE *nodes() *before() *string("NODE DATA")

Templates

Altair Engineering, Inc.

*end() *format() *string("NODE ")

*field(integer,id,8) *field(real,x,8) *field(real,y,8) *field(real,z,8) *string("*") *end() *after() *string("END NODES") *end() *output() The *nodes() command indicates the beginning of a node block. The commands following *nodes()format all node entities in the HyperMesh database. The next command, *before() , instructs HyperMesh to execute the following commands on the before() level. *string() and *end() instruct HyperMesh to output the string contained in double quotes and perform a carriage return, respectively. The next command informs HyperMesh to execute the following commands on the format() level, or with each of the entities (nodes in this case). *string() instructs HyperMesh to place the item in double quotes in the output file. The extra spaces after the word NODE allow you to define a width, since the *string() command does not allow width definition. The next command is the first data request from the database. The *field() command is how template files communicate with the HyperMesh database. The *field() command instructs HyperMesh to scan the database and retrieve the next piece of information for the output file. *field() takes three parameters: the output type, the name of the data accessed, and the width of the generated field. The output type can be integer, real, exponential, string, or hexadecimal. In this case, the data type is an integer. The next parameter is the data name. ID indicates that HyperMesh places the value of the node ID into this field. The last parameter is the width of the field. In this example, all fields are formatted to eight characters. The next three *field() commands place x, y, and z into the output file formatted as reals. *string() places the trailing asterisk on the end of the line. The *end() command (carriage return) is the last command placed into the *format() level. The *after() command indicates the last process level. This command instructs HyperMesh to execute the following commands on the *after() level. The *string() command places the string contained in double quotes in the output file and the *end() command ends the current line. The *output() command processes the node entity output requests made in the preceeding block. If the *output() command is missing, HyperMesh does not print anything to the file.

Altair Engineering, Inc.

Templates

Templated Element Output Example


The following example demonstrates how to use template files to generate output files for elements. To demonstrate an element template, assume the same analysis code requires the following for the quad elements: 1 10 20 30 40 50

BEGIN ELEMENT DATA ELEMENTS GROUP = <name> <id> . . . END . . . END ELEMENTS The above example assumes that E-Z-SOL1 requires grouped element input, where elements of similar thickness and property are placed in a group. The following template generates the required format: *elements(104,1,"quads","property") *before() *string("BEGIN ELEMENT DATA") *end() *beforecollector() *string(" *format() *field(integer,id,10) *field(integer,node1.id,10) *field(integer,node2.id,10) *field(integer,node3.id,10) *field(integer,node4.id,10) *end() *aftercollector() *string(" END") *end() ELEMENTS GROUP = ") *field(string,collector.name,10)*end() <node1> <node2> <node3> <node4>

Templates

Altair Engineering, Inc.

*after() *string("END ELEMENTS") *end() *output() Note the placement of the *() commands. HyperMesh does not place restrictions on where the commands appear in the file, so you can format the template as necessary. Comments can also be added for documentation purposes. HyperMesh ignores file content until it finds an asterisk, *. A command is defined as the characters between the asterisk, * and the closing parenthesis, ). The *elements() command instructs HyperMesh that the following commands define an element output block or process. The parameters to the *elements() command are the configuration and type of element the output block applies to: a user-defined name for the elements, and a user-defined name for the property the elements require. Element configurations are listed in the following sections for each of the HyperMesh elements. Element types are a user-defined number associated with each HyperMesh element (defaults to 1). Changing the type allows multiple definitions for a HyperMesh element configuration. A quad is configuration 104 and type 1. When these parameters are supplied, HyperMesh limits the output of this process to quad elements. The next series of commands, *before() , *string() , and *end() behave as described in Templated Node Output, Example . The *beforecollector() command instructs HyperMesh to process the following commands on the *beforecollector() level. When the beforecollector() level is selected, HyperMesh processes the commands each time it finds a collector holding the required type of information in the database. In this case, *string(), *field() , and *end() are the commands HyperMesh processes when a component is found. On the *field() command, the data name is collector.name. *format() describes the process for each element of configuration 104 and type 1. The format commands use the data name node1.id, node2.id, etc. The period, ., is displayed because node1 is a pointer to the node. node1.id is the ID of the node. The commands available in the template files are listed in the Using Template Commands section. In addition, the HyperMesh templates serve as examples.

Altair Engineering, Inc.

Templates

Using Mathematical Expressions


The commands in a template files can contain mathematical expressions. For example, to translate a model during output, apply a formula to the x coordinate of a node: *nodes() *format() *string("node,") *field(integer,id,10) *string(",") *field(real,[x+100.0],10) *string(",") *field(real,y,10) *string(",") *field(real,z,10) *end() *output() 100.0 is added to the x coordinate of the nodes and is sent to the formatter, where it is written to file. The square brackets, [], around the formula tell the parser that the enclosed text is a formula and not to interpret the asterisk, *, as a new command. The following operators are available in a mathematical expression:

% * / + -

Modulus Performs multiplication Performs division Performs addition Performs subtraction

Equalities, Inequalities, and Logical Expressions


Templates contain functions to test values, perform conditional statement execution, or control the template flow. These statements include *if and *loopif. The tests in these commands use the following syntax to determine if the statement is true or false. These statements can be linked to logical expressions. Equalities and Inequalities Equal to: Not equal to: == !=

Templates

Altair Engineering, Inc.

Less than: Greater than;

< > <= >=

Less than or equal to: Greater than or equal to: Logical Expressions Logical and Logical or && ||

Altair Engineering, Inc.

Templates

What are Data Names?


Template files use data names to access data from the HyperMesh database. A data name is a string that represents a piece of data. At output, HyperMesh replaces the data name string with the value that the data name represents. For example, a node has id, x, y, z, and system as possible data names in the template files. If you enter the command *field(integer,id,8) into a template file, HyperMesh outputs the node ID in an integer format using eight spaces. A data name can also represent pointers to another entity in the database. In the preceeding paragraph, the data name node1 is a pointer. node1 points to a node in the HyperMesh database. If you enter the command *field(integer,node1,8), HyperMesh issues the error message field statement references a pointer. HyperMesh cant output the correct value because node1 points to a node entity that has many different printable values. To print the node ID, reference the pointer as *field(integer,node1.id,8). A period, . , separates the data name node1 and the data name id. In the data name tables, the levels are coded numerically: 1. before() 2. beforecollector() 3. format() 4. aftercollector() 5. after() Data (except for global data) is only available on levels two through four. Reference all pointers by placing a period after the name, followed by the data name of the entity type.

Nodes - Data Names


Data Name id x y z globalx globaly globalz superid inputsystem Level 3 3 3 3 3 3 3 3 3 Value ID x coordinate in the local system y coordinate in the local system z coordinate in the local system x coordinate in the global system y coordinate in the global system z coordinate in the global system super element ID of the node the input system (system pointer)

Templates

10

Altair Engineering, Inc.

inputsystemid outputsystem outputsystemid surfaceid attributesmax surfaceindex

3 3 3 3 3 3

the input system ID the output system (system pointer) the output system ID the ID of the surface where the node is located (may be zero) the number of attributes owned by this entity index into the geometry database that identifies the part of the surface where the node is located.

Mass Elements
Configuration: 1 Data Name id config type node1 mass property propertyid system collector attributesmax Level 3 3 3 3 3 3 3 3 2,3,4 3 Value ID The number, 1 element type node (node pointer) mass property of the element (property pointer) property ID of the element input system (system pointer) component that owns the element (component pointer) the number of attributes owned by this entity

Slave1 Elements
Configuration: 135 Data Name id config type node1 collector attributesmax Level 3 3 3 3 2,3,4 3 Value ID The number, 135 element type node (node pointer) component that owns the element (component pointer) the number of attributes owned by this entity 11 Templates

Altair Engineering, Inc.

Plot Elements
Configuration: 2 Data Name id config type node1 node2 collector attributesmax Level 3 3 3 3 3 2,3,4 3 Value ID The number, 2 element type first node (node pointer) second node (node pointer) component that owns the element (component pointer) the number of attributes owned by this entity

Weld Elements and Rigid Elements


Configuration: 3 (weld elements) and 5 (rigid elements) Data Name id config Level 3 3 3 type node1 node2 dofs collector attributesmax 3 3 3 3 2,3,4 3 Value ID Weld elements - 3 Rigid elements - 5 element type first (independent) node (node pointer) second (dependent) node (node pointer) degrees of freedom component that owns the element (component pointer) the number of attributes owned by this entity

Templates

12

Altair Engineering, Inc.

Rigidlink Elements
Configuration: 55 Data Name id config type independentnode independentdof dependentnodes Level 3 3 3 3 3 3 Value ID The number, "55" element type independent node (node pointer) specified independent degree of freedoms (for example 123456, 134, 1256) dependent nodes (use with pointerset-pointerset (pointer1,dependentnodes,0)) dependentnodesmax node collector 3 3 2,3,4 number of dependent nodes dependent node pointer (use with pointer pointer1.node.id) component that owns the element (component pointer)

Spring Elements
Configuration: 21 Data Name id config type node1 node2 dofs property propertyid collector Level 3 3 3 3 3 3 3 3 2,3,4 Value ID The number, 21 element type first node (node pointer) second node (node pointer) degrees of freedom property collector (property pointer) property collector ID component that owns the element (component pointer)

Altair Engineering, Inc.

13

Templates

attributesmax vectorid vector

3 3 3

the number of attributes owned by this entity ID of the vector associated with the spring element The vector associated with the spring element

Joint Elements
Configuration: 22 Data Name id config type Level 3 3 3 Value ID of the element The number, 22 The type of the element according to the following table:

Type 1 2 3 4 5 6 7

Type Name Spherical Revolute Cylindrical Planar Universal Translational Locking

# Nodes 2 4 4 4 4 6 6

Orientation none/systems/nodes none/systems none/systems none/systems none/systems none/systems none/systems

node1 node2 node3 node4 node5 node6 orientation

3 3 3 3 3 3 3 0 1

Node 1 (all types) Node 2 (all types) Node 3 (all types but spherical) Node 4 (all types but spherical) Node 5 (only types translational and locking) Node 6 (only types translational and locking) Orientation type. Use: none uses systems (all types)

Templates

14

Altair Engineering, Inc.

2 orientationnode1 orientationnode2 system1 system2 systemid1 systemid2 property propertyid collector attributesmax 3 3 3 3 3 3 3 3 2,3,4 3

uses nodes (only spherical type) orientation node 1 (only spherical type) orientation node 2 (only spherical type) orientation system 1 (all types) orientation system 2 (all types) orientation system ID 1 (all types) orientation system ID 2 (all types) property collector (property pointer) property collector ID component that owns the element (component pointer) the number of attributes owned by this entity

RBE3 Elements
Configuration: 56 Data Name id config type dependentnode dependentdof dependentcoeff independentnodes independentnodesmax node independentdofs Level 3 3 3 3 3 3 3 3 3 3 Value ID The number, "56" element type dependent node (node pointer) dependent degrees of freedom dependent coefficient (weighting factor) independent nodes (use with pointerset pointerset(pointer1,independentnodes,0)) number of independent nodes independent node pointer (use with pointer pointer1.node.id) independent degrees of freedom (use with pointerset pointerset(pointer2,independentdofs,0)) pointervalue returns the dofs. independentcoeffs 3 independent coefficients

Altair Engineering, Inc.

15

Templates

(use with pointerset pointerset(pointer3,independentcoeffs,0)) pointervalue returns the coefficient. collector 2,3,4 component that owns the element (component pointer)

Bar2 Elements
Configuration: 60 Data Name id config type node1 node2 localyx localyy localyz localzx localzy localzz dofsa dofsb offsetax offsetay offsetaz offsetbx offsetby offsetbz length property propertyid Level 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Value ID The number, 60 element type first node (node pointer) second node (node pointer) x component of local y axis vector y component of local y axis vector z component of local y axis vector x component of local z axis vector y component of local z axis vector z component of local z axis vector active dofs at end a active dofs at end b x component of offset vector at end a y component of offset vector at end a z component of offset vector at end a x component of offset vector at end b y component of offset vector at end b z component of offset vector at end b length of bar property collector (property pointer) property collector ID

Templates

16

Altair Engineering, Inc.

collector attributesmax directionnodeused

2,3,4 3 3

component that owns the element (component pointer) the number of attributes owned by this entity If directionnodeused is 1, then the orientation of the bar is defined by directionnode and directionnodeydir. direction node for the bar (node pointer). If directionnodeydir is 1, then the direction node defines the local y axis. Otherwise, direction node defines the local z axis. directionnode is optional, and can only be used if directionnodeused is one.

directionnode

directionnodeydir

Equals 1 if directionnode defines the local y axis of the bar. Otherwise, directionnode defines the local z axis.

Bar3 Elements
Configuration: 63 Data Name id config type node1 node2 node3 localyx localyy localyz localzx localzy localzz dofsa dofsb offsetax Level 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Value ID The number, 63 element type first node (node pointer) second node (node pointer) third node (node pointer) x component of local y axis vector y component of local y axis vector z component of local y axis vector x component of local z axis vector y component of local z axis vector z component of local z axis vector active dofs at end a active dofs at end b x component of offset vector at end a

Altair Engineering, Inc.

17

Templates

offsetay offsetaz offsetbx offsetby offsetbz length property propertyid collector attributesmax directionnodeused

3 3 3 3 3 3 3 3 2,3,4 3 3

y component of offset vector at end a z component of offset vector at end a x component of offset vector at end b y component of offset vector at end b z component of offset vector at end b length of bar property collector (property pointer) property collector ID component that owns the element (component pointer) the number of attributes owned by this entity if directionnodeused is 1, then the orientation of the bar is defined by directionnode and directionnodeydir. direction node for the bar (node pointer). If directionnodeydir is 1, then the direction node defines the local y axis. Otherwise, direction node defines the local z axis. directionnode is optional, and can only be used if directionnodeused is 1. equals 1 if directionnode defines the local y axis of the bar. Otherwise, directionnode defines the local z axis.

directionnode

directionnodeydir

Templates

18

Altair Engineering, Inc.

Rod Elements
Configuration: 61 Data Name id config type node1 node2 length property propertyid collector attributesmax Level 3 3 3 3 3 3 3 3 2,3,4 3 Value ID The number, 61 element type first node (node pointer) second node (node pointer) length of rod property collector (property pointer) property collector ID component that owns the element (component pointer) the number of attributes owned by this entity

Gap Elements
Configuration: 70 Data Name id config type node1 node2 property propertyid collector attributesmax vectorid vector Level 3 3 3 3 3 3 3 2,3,4 3 3 3 Value ID The number, 70 element type first node (node pointer) second node (node pointer) property collector (property pointer) property collector ID component that owns the element (component pointer) the number of attributes owned by this entity ID of the vector associated with the spring element The vector associated with the spring element

Altair Engineering, Inc.

19

Templates

Tria3, Master3, and Slave3 Elements


Configuration: 103 (tria3), 123 (master3), and 133 (slave3) Data Name id config Level 3 3 Value ID The number, 103 - tria3 The number, 123 - master3 The number, 133 - slave3 type node1 node2 node3 normalx normaly normalz area longestaltitude shortestaltitude shortestside longestside collector attributesmax warpage aspect skew jacobian minangle maxangle 3 3 3 3 3 3 3 3 3 3 3 3 2,3,4 3 3 3 3 3 3 3 element type first node (node pointer) second node (node pointer) third node (node pointer) normal in the x direction normal in the y direction normal in the z direction area longest distance from node to non-adjoining face shortest distance from node to non-adjoining face length of the shortest side of the element length of the longest side of the element component that owns the element (component pointer) the number of attributes owned by this entity element warpage (see check elems panel for details) element aspect ratio (see check elems panel for details) element skew angle (see check elems panel for details) element jacobian (see check elems panel for details) minimum interior angle maximum interior angle

Templates

20

Altair Engineering, Inc.

For Configuration 123 and 133 only: Data Name baseelementid baseelementface baseelementdirection Level 3 3 3 Value ID of the element that is attached face of the element that is attached direction of the element normal wrt base element: 0, when interface elements have normals pointing in the same direction as the base element 1, when interface elements have normals pointing in the opposite direction of the base element baseelementtype 3 type of the element that is attached: 1 shell 2 tetra 3 penta 4 hexa group attributesmax 3 3 group that owns the element (group pointer) the number of attributes owned by this entity

Altair Engineering, Inc.

21

Templates

Tria6 Elements
Configuration: 106 Data Name id config type node1 node2 node3 node4 node5 node6 normalx normaly normalz area longestaltitude shortestaltitude shortestside longestside collector attributesmax warpage aspect skew jacobian minangle maxangle Level 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2,3,4 3 3 3 3 3 3 3 Value ID The number, 106 type first node (node pointer) second node (node pointer) third node (node pointer) fourth node (node pointer) fifth node (node pointer) sixth node (node pointer) normal in the x direction normal in the y direction normal in the z direction area longest distance from node to non-adjoining face shortest distance from node to non-adjoining face length of the shortest side of the element length of the longest side of the element component that owns the element (component pointer) the number of attributes owned by this entity element warpage (see check elems panel for details) element aspect ratio (see check elems panel for details) element skew angle (see check elems panel for details) element jacobian (see check elems panel for details) minimum interior angle maximum interior angle

Templates

22

Altair Engineering, Inc.

Quad4, Tetra4, Master4 and Slave4 Elements


Configuration: 104 (quad4), 124 (master4), 134 (slave4), and 204 (tetra4) Data Name id config Level 3 3 Value ID The number, 104 - quad4 The number, 124 - master4 The number, 134 - slave4 The number, 204 - tetra4 type node1 node2 node3 node4 normalx normaly normalz area longestdiagonal shortestdiagonal shortestside longestside volume collector attributesmax warpage aspect skew jacobian minangle maxangle 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2,3,4 3 3 3 3 3 3 3 element type first node (node pointer) second node (node pointer) third node (node pointer) fourth node (node pointer) normal in the x direction (for plate elements) normal in the y direction (for plate elements) normal in the z direction (for plate elements) area (for plate elements) longest element diagonal shortest element diagonal length of the shortest side of the element length of the longest side of the element volume (for tetra elements) component that owns the element (component pointer) the number of attributes owned by this entity element warpage (see check elems panel for details) element aspect ratio (see check elems panel for details) element skew angle (see check elems panel for details) element jacobian (see check elems panel for details) minimum interior angle maximum interior angle

Altair Engineering, Inc.

23

Templates

largestfacearea

The number, 204

For Configuration 124 and 134 only: Data Name baseelementid baseelementface baseelementdirection Level 3 3 3 0 1 baseelementtype 3 Value ID of the element that is attached face of the element that is attached direction of the element normal wrt base element: when interface elements have normals pointing in the same direction as the base element when interface elements have normals pointing in the opposite direction of the base element type of the element that is attached: 1 shell 2 tetra 3 penta 4 hexa group longestdiagonal shortestdiagonal attributesmax 3 3 3 3 group that owns the type (group pointer) longest element diagonal shortest element diagonal the number of attributes owned by this entity

Templates

24

Altair Engineering, Inc.

Quad8 Elements
Configuration: 108 Data Name id config type node1 node2 node3 node4 node5 node6 node7 node8 normalx normaly normalz area longestdiagonal shortestdiagonal shortestside longestside collector attributesmax warpage aspect skew jacobian minangle maxangle Level 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2,3,4 3 3 3 3 3 3 3 Value ID The number, 108 type first node (node pointer) second node (node pointer) third node (node pointer) fourth node (node pointer) fifth node (node pointer) sixth node (node pointer) seventh node (node pointer) eighth node (node pointer) normal in the x direction normal in the y direction normal in the z direction area longest element diagonal shortest element diagonal length of the shortest side of the element length of the longest side of the element component that owns the element (component pointer) the number of attributes owned by this entity element warpage (see check elems panel for details) element aspect ratio (see check elems panel for details) element skew angle (see check elems panel for details) element jacobian (see check elems panel for details) minimum interior angle maximum interior angle 25 Templates

Altair Engineering, Inc.

Penta6 Elements
Configuration: 206 Data Name id config type node1 node2 node3 node4 node5 node6 volume largestfacearea collector attributesmax Level 3 3 3 3 3 3 3 3 3 3 3 2,3,4 3 Value ID The number, 206 element type first node (node pointer) second node (node pointer) third node (node pointer) fourth node (node pointer) fifth node (node pointer) sixth node (node pointer) volume area of the largest face on a solid element component that owns the element (component pointer) the number of attributes owned by this entity

Hex8 Elements
Configuration: 208 Data Name id config type node1 node2 node3 node4 node5 node6 node7 Level 3 3 3 3 3 3 3 3 3 3 Value ID The number, 208 element type first node (node pointer) second node (node pointer) third node (node pointer) fourth node (node pointer) fifth node (node pointer) sixth node (node pointer) seventh node (node pointer)

Templates

26

Altair Engineering, Inc.

node8 volume largestfacearea collector attributesmax

3 3 3 2,3,4 3

eighth node (node pointer) volume area of the largest face on a solid element component that owns the element (component pointer) the number of attributes owned by this entity

Tetra10 Elements
Configuration: 210 Data Name id config type node1 node2 node3 node4 node5 node6 node7 node8 node9 node10 volume largestfacearea longestaltitude shortestaltitude collector attributesmax warpage aspect skew Level 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2,3,4 3 3 3 3 Value ID The number, 210 element type first node (node pointer) second node (node pointer) third node (node pointer) fourth node (node pointer) fifth node (node pointer) sixth node (node pointer) seventh node (node pointer) eighth node (node pointer) ninth node (node pointer) tenth node (node pointer) volume area of the largest face on a solid element longest distance from node to non-adjoining side shortest distance from node to non-adjoining side component that owns the element (component pointer) the number of attributes owned by this entity warpage aspect ratio skew

Altair Engineering, Inc.

27

Templates

jacobian minangle maxangle

3 3 3

jacobian minimum angle maximum angle

Penta15 Elements
Configuration: 215 Data Name id config type node1 node2 node3 node4 node5 node6 node7 node8 node9 node10 node11 node12 node13 node14 node15 volume largestfacearea collector attributesmax Level 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2,3,4 3 Value ID The number, 215 element type first node (node pointer) second node (node pointer) third node (node pointer) fourth node (node pointer) fifth node (node pointer) sixth node (node pointer) seventh node (node pointer) eighth node (node pointer) ninth node (node pointer) tenth node (node pointer) eleventh node (node pointer) twelfth node (node pointer) thirteenth node (node pointer) fourteenth node (node pointer) fifteenth node (node pointer) volume area of the largest face on a solid element component that owns the element (component pointer) the number of attributes owned by this entity

Templates

28

Altair Engineering, Inc.

Hex20 Elements
Configuration: 220 Data Name id config type node1 node2 node3 node4 node5 node6 node7 node8 node9 node10 node11 node12 node13 node14 node15 node16 node17 node18 node19 node20 volume largestfacearea collector attributesmax Level 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2,3,4 3 Value ID The number, 220 element type first node (node pointer) second node (node pointer) third node (node pointer) fourth node (node pointer) fifth node (node pointer) sixth node (node pointer) seventh node (node pointer) eighth node (node pointer) ninth node (node pointer) tenth node (node pointer) eleventh node (node pointer) twelfth node (node pointer) thirteenth node (node pointer) fourteenth node (node pointer) fifteenth node (node pointer) sixteenth node (node pointer) seventeenth node (node pointer) eighteenth node (node pointer) nineteenth node (node pointer) twentieth node (node pointer) volume area of the largest face on a solid element component that owns the element (component pointer) the number of attributes owned by this entity

Altair Engineering, Inc.

29

Templates

Components
Data id name material materialid dictionary dictionarymax color attributesmax Name 3 3 3 3 3 3 3 3 LevelValue ID name material collector (material pointer) material collector ID component dictionary (dictionary pointer) number of entries in the dictionary color the number of attributes owned by this entity

Properties
Data Name id name material materialid dictionary dictionarymax attributesmax Level 3 3 3 3 3 3 3 Value ID of the property name of the collector material collector (material pointer) material collector ID collector dictionary (dictionary pointer) number of items in the dictionary the number of attributes owned by this entity

Materials
Data Name id name dictionary dictionarymax attributesmax Level 3 3 3 3 3 Value ID of the material name of the collector collector dictionary (dictionary pointer) number of items in the dictionary the number of attributes owned by this entity

Templates

30

Altair Engineering, Inc.

System Collectors
Data Name id name color dictionary dictionarymax Level 3 3 3 3 3 Value ID of the system collector name of the system collector color of the system collector collector dictionary (dictionary pointer) number of items in the dictionary

Load Collectors
Data Name id name color dictionary dictionarymax attributesmax Level 3 3 3 3 3 3 Value ID of the load collector name of the load collector color of the load collector dictionary of the collector (dictionary pointer) number of entries in the dictionary the number of attributes owned by this entity

Vector Collectors
Data Name id name color dictionary dictionarymax attributesmax Level 3 3 3 3 3 3 Value ID of the vector collector name of the vector collector color of the vector collector dictionary of the vector collector (pointer) number of entries in the dictionary number of attributes owned by this entity

Altair Engineering, Inc.

31

Templates

Groups - Data Names


All groups contain the following data: Data Name id name config type material materialid dictionary dictionarymax color masterdefinition masterboxxmin masterboxymin masterboxzmin masterboxxmax masterboxymax masterboxzmax mastercomponentlist mastercomponentlistmax mastersetlist mastersetlistmax slavedefinition slaveboxxmin slaveboxymin slaveboxzmin slaveboxxmax Level 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Value ID name group configuration group type material collector (material pointer) material collector ID component dictionary (dictionary pointer) number of entries in the dictionary color 0 for entities, 1 for components, 2 for boxes, 3 for all, 4 for sets minimum global x value for master box minimum global y value for master box minimum global z value for master box maximum global x value for master box maximum global y value for master box maximum global z value for master box a pointer to the master component IDs contained in the group number of master components in the group a pointer to the master set IDs contained in the group number of master sets in the group 0 for entities, 1 for components, 2 for boxes, 3 for all, 4 for sets minimum global x value for slave box minimum global y value for slave box minimum global z value for slave box maximum global x value for slave box

Templates

32

Altair Engineering, Inc.

slaveboxymax slaveboxzmax slavecomponentlist slavecomponentlistmax slavesetlist slavesetlistmax attributesmax

3 3 3 3 3 3 3

maximum global y value for slave box maximum global z value for slave box a pointer to the slave component IDs contained in the group number of slave components in the group a pointer to the slave set IDs contained in the group number of slave sets in the group the number of attributes owned by this entity

Groups with config 5 (Rigid Walls) contain the following additional data: Data Name basenode geometrytype Level 3 3 Value pointer to the basenode of the rigid wall 1 for infinite plane,2 for finite plane, 3 for infinite prism, 4 for finite prism, 5 for cylinder, 6 for sphere, 7 for MADYMO Plane, 8 for MADYMO Ellipse madymoid midpointx midpointy midpointz pointax pointay pointaz motiontype lengthx lengthy lengthz radius 3 3 3 3 3 3 3 3 3 3 3 3 ID of the associated MADYMO entity x value of the midpoint of finite plane geometry type (returns 0.0 for other geometry) y value of the midpoint of finite plane geometry type (returns 0.0 for other geometry) z value of the midpoint of finite plane geometry type (returns 0.0 for other geometry) x value of Point A on finite plane as defined in PAM-CRASH manual y value of Point A on finite plane as defined in PAM-CRASH manual z value of Point A on finite plane as defined in PAM-CRASH manual 0 for none, 1 for velocity, 2 for displacement length of the rigid wall in the local x direction length of the rigid wall in the local y direction length of the rigid wall in the local z direction radius of a cylinder or sphere

Altair Engineering, Inc.

33

Templates

normalx normaly normalz xaxisx xaxisy xaxisz motionx motiony motionz normalmotionangle

3 3 3 3 3 3 3 3 3 3

x component of the normal unit vector y component of the normal unit vector z component of the normal unit vector x component of the local x axis unit vector y component of the local x axis unit vector z component of the local x axis unit vector x component of motion vector y component of motion vector z component of motion vector angle between motion and normal vectors

Sets
Data Name id name color type typename ids idsmax element component attributesmax Level 3 3 3 3 3 3 3 3 3 3 Value ID of the set name of the set color of the set type of set (1 - node, 2 - element, 3 - component) name of the type of set (nodes, elems, comps) a pointer to the IDs the maximum number of IDs element pointer (use with pointer - pointer1.element.id) component pointer (use with pointer pointer1.component.id) the number of attributes owned by this entity

Cards
Data Name id attributesmax Level 3 3 Value ID of the card the number of attributes owned by this entity

NOTE

Most of the information for a card is contained in the attributes owned by the card.

Templates

34

Altair Engineering, Inc.

Output Blocks
Data Name id name color type typename ids idsmax element attributesmax Level 3 3 3 3 3 3 3 3 3 Value ID of the outputblock name of the outputblock color of the outputblock type of outputblock (1 - node, 2 - element) name of the type of outputblock (nodes or elems) a pointer to the IDs the maximum number of IDs element pointer (use with pointer - pointer1.element.id) the number of attributes owned by this entity

Load Steps
Data Name id name color ids idsmax loadcollector attributesmax Level 3 3 3 3 3 3 3 Value ID of the loadstep name of the loadstep color of the loadstep a pointer to the IDs the maximum number of IDs loadcollector pointer (use with pointer pointer1.loadcollector.id) the number of attributes owned by this entity

Systems
Data Name id type originx originy originz Level 3 3 3 3 3 Value ID type of system (0 Rec, 1 Cyl, 2 Sph) x coordinate of the origin y coordinate of the origin z coordinate of the origin 35 Templates

Altair Engineering, Inc.

globaloriginx globaloriginy globaloriginz xaxisx xaxisy xaxisz globalxaxisx globalxaxisy globalxaxisz yaxisx yaxisy yaxisz globalyaxisx globalyaxisy globalyaxisz globalzaxisx globalzaxisy globalzaxisz position thetaxy thetayz thetazx localxy localyz localxz setid inputsystemid collector attributesmax

3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2,3,4 3

global x coordinate of the origin global y coordinate of the origin global z coordinate of the origin x component of x axis (unit vector) y component of x axis (unit vector) z component of x axis (unit vector) global x component of x axis (unit vector) global y component of x axis (unit vector) global z component of x axis (unit vector) x component of y axis (unit vector) y component of y axis (unit vector) z component of y axis (unit vector) global x component of y axis (unit vector) global y component of y axis (unit vector) global z component of y axis (unit vector) global x component of z axis (unit vector) global y component of z axis (unit vector) global z component of z axis (unit vector) position of system in the database nodal xy orientation angle nodal yz orientation angle nodal xz orientation angle local xy orientation angle local yz orientation angle local xz orientation angle system set ID input system ID system collector (system collector pointer) the number of attributes owned by this entity

Templates

36

Altair Engineering, Inc.

Loads
The load entity allows forces and constraints to be placed in the database. Loads are applied in the global system except when the reference system has been modified. A constraint, applied at a node, is placed in the global system only if a system does not exist at that node. Conversely, if a system does exist, the constraint is applied such that the orientation of the constraint is dictated by the local system. Once a constraint has been applied, HyperMesh does not maintain the proper orientation for the constraint as local systems are created or deleted at the node where the constraint resides. Constraints, concentrated forces, concentrated moments, concentrated fluxes, temperatures, velocities, accelerations, and pressures are supported.

Constraint Loads
Configuration: 3 Data Name location config comp1 comp2 comp3 comp4 comp5 comp6 comp equalmagnitude spc collector attributesmax Level 3 3 3 3 3 3 3 3 3 3 3 2,3,4 3 Value node where constraint is applied (node pointer) The number, 3 value in dof1 (-999999.0 for none) value in dof2 (-999999.0 for none) value in dof3 (-999999.0 for none) value in dof4 (-999999.0 for none) value in dof5 (-999999.0 for none) value in dof6 (-999999.0 for none) value of the constraint in all components set to 1 if all 6 dofs are equal, 0 otherwise set to 1 if active dofs are constraints collector that owns the load (load collector pointer) the number of attributes owned by this entity

Flux Loads
Configuration: 6 Data Name location config Level 3 3 Value node where flux is applied (node pointer) the number, 6 37 Templates

Altair Engineering, Inc.

flux collector attributesmax

3 2,3,4 3

flux collector that owns the load (load collector pointer) the number of attributes owned by this entity

Pressure Loads
Configuration: 4 Data Name location config corner1 corner2 edgelength Level 3 3 3 3 3 Value element where pressure is applied (element pointer) The number, 4 1st node of face (node pointer) 2nd node of face (node pointer) length of the loaded edge. This is for edge pressures only. Zero is returned for face pressures. 1 for plate, 2 for tetra, 3 for penta, 4 for hexa face number area of the loaded face 4 for quad, 3 for tria magnitude of the pressure applied on face: 0 for pressure, 1 for traction on edge: 2 for pressure, 3 for traction node1 node2 node3 node4 comp1 comp2 comp3 vectorx vectory vectorz centerx Templates 3 3 3 3 3 3 3 3 3 3 3 first node on face second node on face third node on face fourth node on face x component of the pressure y component of the pressure z component of the pressure x component of unit force vector y component of unit force vector z component of unit force vector x component of the center of the 38 Altair Engineering, Inc.

elementtype face facearea facetype magnitude pressuretype

3 3 3 3 3 3

element centery centerz facearea collector attributesmax 3 3 3 2,3,4 3 y component of the center of the element z component of the center of the element area of the loaded face collector that owns the load (load collector pointer) the number of attributes owned by this entity

Temperature Loads
Configuration: 5 Data Name location config temperature collector attributesmax Level 3 3 3 2,3,4 3 Value node where temperature is applied (node pointer) the number, 5 temperature collector that owns the load (load collector pointer) the number of attributes owned by this entity

Forces, Moments, Velocities, and Accelerations


Configuration: 1, 2, 8, 9 Data Name location config Level 3 3 Value node where load is applied (pointer) The number, 1, for forces The number, 2, for moments The number, 8, for velocities The number, 9, for accelerations comp1 comp2 comp3 magnitude vectorx vectory 3 3 3 3 3 3 x component of the vector y component of the vector z component of the vector magnitude of the load vector x component of the vector (unit) y component of the vector (unit)

Altair Engineering, Inc.

39

Templates

vectorz inputsystem inputsystemid collectorid attributesmax

3 3 3 2,3,4 3

z component of the vector (unit) reference system (system pointer) reference system ID collector that owns the load (load collector pointer) the number of attributes owned by this entity

Equations
Data Name id type constant dependentnode dependentdof dependentcoeff independentnodes Level 3 3 3 3 3 3 3 Value ID equation type equation constant dependent node (node pointer) dependent degree of freedom dependent coefficient (weighting factor) independent nodes (use with pointerset pointerset(pointer1,independentnodes,0)) independentnodesmax independentdofs 3 3 number of independent nodes independent degrees of freedom (use with pointerset pointerset(pointer2,independentdofs,0)) pointervalue returns the dofs. independentcoeffs 3 independent coefficients (use with pointerset pointerset(pointer3,independentcoeffs,0)) pointervalue returns the coefficient. collector 2,3,4 collector that owns the equation (load collector pointer)

Templates

40

Altair Engineering, Inc.

Plots
Data Name id name type title subtitle label xaxistitle xaxislabel yaxistitle yaxislabel type titlecolor titlefont subtitlecolor subtitlefont labelcolor labelfont borderon bordercolor borderwidth borderxmin borderymin borderxmax borderymax bordermargin xmin ymin xmax ymax Level 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Value ID of the plot name of the plot plot type title of the plot subtitle of the plot label of the plot title on the x axis label on the x axis title on the y axis label on the y axis type of plot title color title font subtitle color subtitle font label color label font set to 1 to turn the plot border on color of the plot border width of the plot border x value of upper left plot window y value of upper left plot window x value of lower right plot window y value of lower right plot window margin between the border and the plot axis x value of lower left plot axis range y value of lower left plot axis range x value of upper right plot axis range y value of upper right plot axis range

Altair Engineering, Inc.

41

Templates

gridlines gridxincrement gridyincremen mindivisions maxdivisions gridcolor gridxlabel gridylabel gridwidth labelsformat labelsplaces labelscolor labelsfont margin axistitlecolor axistitlefont legendxloc legendyloc legendfont curves numberofcurves xaxistype xaxisgrids xaxistics xaxisdynamicrange xaxisformat yaxistype yaxisgrids yaxistics yaxisdynamicrange yaxisformat

3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3

if the grid lines are on, set to 1 increment of grid lines on x axis increment of grid lines on y axis minimum divisions allowed maximum divisions allowed color of the grid lines x grid label frequency y grid label frequency width of the grid lines format of the labels width of the label field color of the labels font used on the labels margin between labels and grid lines color of the axis titles font used for the axis titles x location of the legend y location of the legend font used on the legend pointer to curves number of the curves on the plot x axis type (0 - linear, 1 - log, 2 - decibel) grid lines per decade for the x axis grid labels per decade for the x axis dynamic range for (x, y) axis offsetting x axis format ("f" for fixed, "e" for exponential, "a" for auto) y axis type (0 - linear, 1 - log, 2 - decibel) grid lines per decade for the y axis grid labels per decade for the y axis dynamic range for (x, y) axis offsetting y axis format ("f" for fixed, "e" for exponential, "a" for auto) 42 Altair Engineering, Inc.

Templates

legendon legendidson attributesmax extended mode

3 3 3 3 3

set to 1 if the legend is being displayed set to 1 if IDs are shown in the legend the number of attributes owned by this entity 1 indicates plot is an extended (dual) plot. 5 indicates phase/magnitude plot 2 indicates real/imaginary plot This field only has meaning if extended=1.

vonmises

flags a plot as complex vonmises.

Curves
Data Name id name title linetype markertype color width scalex scaley points numberofpoints xkind xpath xtype xreq xcomp ykind ypath ytype yreq Level 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Value ID of the curve name of the curve curve title line style used to draw the line marker type used to indicate points on the curve color used to draw the curve width of the curve x scale factor y scale factor pointer to points in curve (pointervalue is curve point) number of points in the curve type of source for x data (0 - file, 1 - math expression) File path and name, or math expression for x data type of the x component name of the x request name of the x request component type of source for y data (0 - file, 1 - math expression) File path and name, or math expression for y data type of the y component name of the y request

Altair Engineering, Inc.

43

Templates

ycomp attributesmax

3 3

name of the y request component the number of attributes owned by this entity

Dictionaries
Data Name pointer.name pointer.type pointer.typename pointer.string pointer.value pointer.active Level 3 3 3 3 3 3 Value name of the dictionary item type of the dictionary item type name of the dictionary item string value of the dictionary item value of the dictionary item flag indicating the dictionary's activity

Assemblies
Data Name id name color components numberofcomponents attributesmax Level 3 3 3 3 3 3 Value ID of the assembly name of the assembly color of the assembly pointer to components in an assembly(pointervalue is component ID) number of components in the assembly the number of attributes owned by this entity

Blocks
Data Name id name color mini maxi minj maxj mink Level 3 3 3 3 3 3 3 3 Value ID of the block name of the block color of the block minimum i coordinate maximum i coordinate minimum j coordinate maximum j coordinate minimum k coordinate

Templates

44

Altair Engineering, Inc.

maxk divi divj divk wallsmax idivisions jdivisions kdivisions blockcell blockwall pointer.wallcolor pointer.wallid pointer.wallname attributesmax

3 3 3 3 3 3 3 3 3 3 3 3 3 3

maximum k coordinate number of divisions in the i direction number of divisions in the j direction number of divisions in the k direction total number of walls pointer to divisions in i direction(pointervalue is division coordinate) pointer to divisions in j direction(pointervalue is division coordinate) pointer to divisions in k direction(pointervalue is division coordinate) pointer to block cell (pointervalue is wall ID) pointer to block wall color of the wall from blockwall pointer ID of the wall from blockwall pointer name of the wall from blockwall pointer the number of attributes owned by this entity

Lines - Data Names


Data Name id collector geomid attributesmax Level 3 3 3 3 Value ID of the line collector that owns the line (component pointer) internal ID in geometry database the number of attributes owned by this entity

Points - Data Names


Data Name id collector geomid attributesmax Level 3 3 3 3 Value ID of the point collector that owns the point (component pointer) internal ID in geometry database the number of attributes owned by this entity

Altair Engineering, Inc.

45

Templates

x y z

3 3 3

The x coordinate of the point The y coordinate of the point The z coordinate of the point

Surfaces - Data Names


Data Name id collector attributesmax geomid Level 3 3 3 3 Value ID of the surface collector that owns the surface (component pointer) the number of attributes owned by this entity internal geometric ID

Titles
Data Name id type color name text font anchorpoint anchorangle distance entityid typename borderon bordercolor borderwidth borderxmin borderxmax borderymin Level 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Value ID of the title type of the title color of the title name of the title text displayed in the title font used to display the title (1-4) anchor corner of the title angle from vertical for the title pointer distance from the entity to the border ID of the entity name of the entity to which the title points 1 if the border is on, else 0 color of the border width of the border minimum x value of the border maximum x value of the border minimum y value of the border

Templates

46

Altair Engineering, Inc.

borderymax attributesmax

3 3

maximum y value of the border the number of attributes owned by this entity

Global Variables
Data Name counter1 counter2 counter3 counter4 counter5 counter6 counter7 counter8 counter9 counter10 counter11 counter12 counter13 counter14 counter15 counter16 counter17 counter18 counter19 counter20 pi pointer1 pointer2 pointer3 pointer4 pointer5 Level all all all all all all all all all all all all all all all all all all all all all all all all all all Value 1st counter variable 2nd counter variable 3rd counter variable 4th counter variable 5th counter variable 6th counter variable 7th counter variable 8th counter variable 9th counter variable 10th counter variable 11th counter variable 12th counter variable 13th counter variable 14th counter variable 15th counter variable 16th counter variable 17th counter variable 18th counter variable 19th counter variable 20th counter variable value = PI(3.1415926535...) 1st pointer variable 2nd pointer variable 3rd pointer variable 4th pointer variable 5th pointer variable

Altair Engineering, Inc.

47

Templates

pointer6 pointer7 pointer8 pointer9 pointer10 variable1 variable2 variable3 variable4 variable5 variable6 variable7 variable8 variable9 variable10 variable11 variable12 variable13 variable14 variable15 variable16 variable17 variable18 variable19 variable20 version date time machine user

all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all

6th pointer variable 7th pointer variable 8th pointer variable 9th pointer variable 10th pointer variable 1st variable 2nd variable 3rd variable 4th variable 5th variable 6th variable 7th variable 8th variable 9th variable 10th variable 11th variable 12th variable 13th variable 14th variable 15th variable 16th variable 17th variable 18th variable 19th variable 20th variable the version of HyperMesh the date at output the time at output the platform running HyperMesh the user running HyperMesh

Templates

48

Altair Engineering, Inc.

Vectors - Data Names


Data Name id basenode farnode basenodeid farnodeid xcomp ycomp zcomp magnitude system systemid collector Level 3 3 3 3 3 3 3 3 3 3 3 2,3,4 Value ID of the vector entity node to which the vector is attached (pointer) node at the vector tip (if two-node method is used for vector creation; otherwise all values return zero.) ID of the base node ID of the far node; 0, if not used. x component of the vector y component of the vector z component of the vector magnitude of the vector local coordinate system in which the vector is defined local coordinate systemid in which the vector is defined collector that owns the vector (vector collector pointer)

Altair Engineering, Inc.

49

Templates

Using Template Commands


Template commands instruct HyperMesh how to format data and user-defined text for output. Template file commands begin with an asterisk, *, and end with parentheses,.(). Some commands contain parameters in parentheses, depending on the requirements of the command

Template Commands *addblock()


Adds a block to a link. Syntax Argument *addblock(<name>) <name>

*after()
Indicates that the commands following are processed on the *after() level. Syntax *after()

*aftercollector()
Indicates that the commands following are processed on the *aftercollector() level. Syntax *aftercollector()

*assemblies()
Starts an assembly output block. All the assemblies in the HyperMesh database are output according to the user-defined format in this block. Syntax Example *assemblies() To output the components in an assembly, the *pointerset() command must be used to retrieve the component IDs:

Templates

50

Altair Engineering, Inc.

*counterset(counter1,0) *loopif([counter1 != numberofcomponents]) *pointerset(pointer1,components,counter1) *field(integer,pointer1.pointervalue,0) *counterinc(counter1) *endloop() Comments Requires an *output() command at the end of the block.

*before()
Indicates that the commands following are processed on the *before() level. Syntax *before()

*beforecollector()
Indicates that the commands following are processed on the *before() collector level. Syntax *beforecollector()

*begincardmenu()
Indicates the beginning of the control cards list. Syntax Comments *begincardmenu() Only *cardmenuitem() commands are valid between the *begincardmenu() and *endcardmenu() commands.

Altair Engineering, Inc.

51

Templates

*beginlink()
Starts a link. Syntax Arguments *beginlink(<type>,<name>) <type> <name> Comments Links can be used to tie output blocks together.

*beginmenu()
Indicates the beginning of the description used for the card previewer. Syntax Comments *beginmenu() Must be accompanied by the *endmenu() command.

*blocks()
Starts a finite difference block output block. All the blocks in the HyperMesh database are output according to the user-defined format in this block. Syntax Example *blocks() To output the locations of the i, j, or k divisions of a block, the *pointerset() command must be used: *counterset(counter1,0) *loopif([counter1 != divi]) *pointerset(pointer1,idivisions,counter1) *field(real,pointer1.pointervalue,8) *counterinc(counter1) *endloop() To output the wall data for a block, the following commands may be used: *counterset(counter1,0) *loopif([counter1 != wallsmax])

Templates

52

Altair Engineering, Inc.

*pointerset(pointer1,blockwall,counter1) *field(integer,pointer1.wallid,8) *field(string,pointer1.wallname,0) *field(integer,pointer1.wallcolor,8) *counterinc(counter1) *endloop() Comments Requires an *output() command at the end of the block.

*cardmenuitem()
Specifies the name and tag attribute for a control card. Syntax Arguments *cardmenuitem(<button text>,<attribute name>) <button text> The text that is displayed to you in the control cards menu. Should be less than 60 characters in length. The tag attribute for a control card entity. This must have an accompanying *card(<attribute name>) block in the template file.

<attribute name>

Comments

The *cardmenuitem() commands specify the list that appears in the control cards menu. If the list is too large to display, previous/next and first/last buttons are added to the menu so you can page through all options. The control card buttons are displayed with different colors, depending on their status and their existence in the database. Items with gray text do not exist in the database. Items with red text exist in the database, but are inactive and are not written to a file when exporting data. Items with green text exist in the database and are active; and are output when exporting data. Only one instance of each type of control card can exist in the database.

*cards()
Starts a control card output block. Syntax Argument Example *cards(<card name>) <card name> The name of the card to output.

To output the CTRL_TITLE card the following commands may be used: *cards("CTRL_TITLE")

Altair Engineering, Inc.

53

Templates

*format() *string("TITLE / ") *string(" ") *fieldleft(string,$TITLE_VAL,48) *end() *output() Comments Requires a *output() at the end of the block.

*codename()
Sets a unique solver number to be used for identifying attributes. Syntax Arguments *codename(<solver>,<identifier>) <solver> <identifier> Comments The name of the solver. A unique number identifying the solver.

The *codename() command must occur before the first *defineattribute() command. All attributes created with this template are marked with this solver identifier. Solver identifiers 0-63 are reserved for HyperMesh officially supported templates. Solver identifiers 64-127 are available for user-defined templates. If two templates are to share a set of attributes, they should have both the same solver identifier and the exact set of *defineattribute() commands.

*components()
Starts a component output block. The components in the HyperMesh database are output according to the user-defined format in this block. Syntax Arguments *components(<property name>,<material name>) <property name> Used as a key to determine if the property cards defined by this component are needed. If an element has been output that requires the property, the component the element belongs to is marked for that property. Used as a key to determine if the material cards defined by this material are needed. If a component has been output that requires a material, the material collector to which that component collector points is marked for that 54 Altair Engineering, Inc.

<material name>

Templates

material. Example If the auto properties flag is turned off when a model is translated, then the user must define a dictionary item that is given the name <property name> and set it active: *elements(104,1,"CQUAD4","NAST_PSHELL") . . . *output() *components("NAST_PSHELL","MATERIAL") *define("NAST_PSHELL",none,0.0,1) . . . *output() Comments *components() should create the property cards for 2-D and 3-D elements. Requires an *output() command at the end of the block.

*compressreal()
Changes how trailing zeros for real numbers are written to the output deck. Syntax Argument *compressreal(<flag>) <flag> If a <flag> is 1, then trailing zeros are written as blanks.

Comments

Using *compressreal(1) causes HyperMesh to write numbers such as 0.0000 as 0.0.

*counterinc()
Increments a counter. Syntax Argument *counterinc(<counter>) <counter> Value from counter1 to counter20 indicating the counters to be incremented.

Altair Engineering, Inc.

55

Templates

*counterset()
Sets the initial value of the global counter. Syntax Arguments *counterset(<counter>,<value>) <counter> Value from counter1 to counter20 indicating the counter(s) to set to the next parameter. Value of the counter.

<value> Comments

Counters can be useful to specify continuation cards on some analysis codes. For an example, see the NASTRAN template file in HyperMesh.

*cubiclines()
Starts a line output block in parametric cubic format. All of the lines in the database are output according to the user-defined format in the block following the *cubiclines() command. Syntax Argument Comments *cubiclines(<configuration>) <configuration> Requires an *output() at the end of the block.

*curves()
Starts a curve output block. The curves in the HyperMesh database are output according to the user-defined format in this block. Syntax Example *curves() To output the x and y data values for each curve, the following commands could be used: *counterset(counter1,0) *loopf([counter1 != numberofpoints*2]) *pointerset(pointer1,points,counter1) *field(real,pointer1.pointervalue,8) *counterinc(counter1) *pointerset(pointer1,points,counter1) *field(real,pointer1.pointervalue,8)

Templates

56

Altair Engineering, Inc.

*counterinc(counter1) *endloop() Comments Requires an *output() command at the end of the block.

*define()
Defines a dictionary item. Syntax Arguments *define(<name>,<type>,<value>,<active>) <name> <type> <value> The name of the dictionary item. The type of the dictionary item. The initial value assigned to the data item. This should be a number except if the item type is string. Determines the activity of the dictionary item.

<active> Comments

The available types are listed below: none string Integer real -1 0 1 No value is associated with the item. The item has a string assigned to it. The item has an integer assigned to it. The item has a real value assigned to it. Always active. Not active but user can toggle. Active and user can toggle.

Items whose activity is set to -1 appear white on the dictionary edit menu. If the activity is set to 0 or 1, the menu item appears in cyan, and you may choose to star the item.

Altair Engineering, Inc.

57

Templates

*defineattribute()
Defines an attribute for a solver Syntax *defineattribute(<name >,<identifier>,<type>, <behavior>) <name> The attribute name (maximum of 31 characters). The number associated with the attribute. The z can be in the range of 1 to 8192. The attribute type. Legal values are: Attribute contains an integer Attribute contains array of integer numbers Attribute contains an 2d array of integer numbers Attribute contains a floating pointnumber Attribute contains an array of floating point numbers Attribute contains an 2d array of floating point numbers Attribute contains a string Attribute contains an array of strings Attribute contains a reference to an entity (its ID and type) Determines how attributes are treated when the entity that owns it is changed. This field has not been implemented. The only value for <behavior> is none.

Arguments

<identifier>

<type> integer arrayofinteger arrayofinteger2d

real arrayofreal

arrayofreal2d

string arrayofstring entity

<behavior>

Comments

All entities in the HyperMesh database may point to attributes. Attributes are defined with the *defineattribute command.

Templates

58

Altair Engineering, Inc.

*elementareacalculation()
Determines how to calculate the area of an element. Syntax Arguments *elementareacalculation(<type>,<num>) <type> <num> The element type. Only quad4 is supported. Can be 1 (one point gaussian quadrature) or 4 (four point gaussian quadrature).

*elementresultstore()
Stores an element value for the current element. Syntax Argument Example *elementresultstore(<value>) <value> The element value to be stored.

*function("HM_CALC_TIMESTEP",variable16,variable17, variable18,variable19,variable20) *elements(60,0,"BEAM","") ... put result into variable1 *elementresultstore(variable1) *output() *return()

Comments

This command can be used in the template function, HM_CALC_TIMESTEP, to store the initial time step for each element. When time steps have been saved, an assigned plot can be created in the check elements panel. This function must be called in the *format() section of an *elements() block.

Altair Engineering, Inc.

59

Templates

*elements()
Starts an element output block. The elements in the HyperMesh database whose configuration and type are equal to the parameters are output according to the user-defined format defined in this block. Syntax Arguments *elements(<configuration>,<type>,<user name>,<property name>) <configuration> Defines the HyperMesh element that should be output using this block definition. See the previous table describing element configurations and values defined for each element. If the <config> supplied is 0, HyperMesh outputs all elements of the specified config. The possible values are listed below: Config 0 1 2 3 5 20 21 50 51 52 55 56 60 63 61 70 103 Element Output Any element Mass Plot Weld Rigid Spring Spring Bar (use 60 instead) Rod (use 61 instead) Beam (use 60 instead) Rigidlink RBE3 Bar2 Bar3 Rod Gap Tria3

Templates

60

Altair Engineering, Inc.

104 106 108 123 124 133 134 135 204 206 208 210 215 220 <type>

Quad4 Tria6 Quad8 Master3 Master4 Slave3 Slave4 Slave1 Tetra4 Penta6 Hex8 Tetra10 Penta15 Hex20

Defines the element type that should be output using this block definition. The possible values are user-defined so that more element types can be defined by the user. To change the type of an element in HyperMesh, see the elem types panel. If <type> supplied is 0 (zero), HyperMesh outputs all elements of the given configuration.

<user name>

A 32-character string enclosed in double quotes holding the name of the element as defined by the user. The name is displayed by the elem types panel to the user for selection. A 32-character string enclosed in double quotes holding the name of the property that the elements require. The name is used by the collectors panel to load the dictionaries defined in this block, and also to link to the *components() and *properties() command.

<property name>

Altair Engineering, Inc.

61

Templates

Comments

Requires an *output() command at the end of the block.

*else()
Used to define the false block of an if-statement. Syntax *else()

*enabledatabase()
Used to scan for entities in the HyperMesh database. Syntax Argument *enabledatabase(<flag>) <flag> The flag can be set to all or selected. If you set the flag to all, the entity output commands (such as *nodes()) scan all entities in the database, even if you select displayed on the export or summary panels. If you set the flag to selected, and you select displayed on the export or summary panels, the entity output commands scan the database for the displayed commands only. Comments When writing export and summary templates, it may be necessary to scan the entire database before processing the displayed entities. To do this, use *enabledatabase(all). To scan the database for only the entities that you selected (this can be all or displayed ), use *enabledatabase(selected). *enabledatabase() should be used outside of any other command blocks and can be used more than once.

*end()
Places an end-of-line character in the data deck being generated. Syntax Comments *end() This command ends the current line and places the output cursor at the beginning of the next line in the output file.

Templates

62

Altair Engineering, Inc.

*endcardmenu()
Indicates the end of the control cards list. Syntax *endcardmenu()

*endif()
Used to define the end of an if-block. Syntax *endif()

*endlink()
Ends a link. Syntax *endlink()

*endloop()
Indicates the end of a block that was initialized with the *loopif() command. Syntax *endloop()

*endmenu()
Indicates the ending of the description used for the card previewer. Syntax Comments *endmenu() Must be accompanied by the *beginmenu() command.

*endsegments()
Ends a segment block. Syntax *endsegments()

Altair Engineering, Inc.

63

Templates

*entitypointerset()
Sets the initial value of a specified entity. Syntax *entitypointerset(<entity type>, <entity id>, <pointer number>, <pointer>, <value>) <entity type> The type of entity, such as sets, elems, or nodes , to which <entity id> refers. The ID of the entity you want to reference. Value from pointer1 to pointer10, indicating which of the 10 possible pointers to use as the <value> parameter. Points to the data object that is accessed. Only certain data types may use pointers. These are described in the template commands in which they are valid. The value of the pointer.

Arguments

<entity id>

<pointer number>

<pointer>

<value> Comments

*entitypointerset() can be used on any entity specified by <entity type> and <entity id>.

*equations()
Starts an equation output block. The equations in the HyperMesh database with a type equal to the <type> argument are output according to the user-defined format in this block. Syntax Arguments *equations(<type>, <user name>) <type> <user name> Example The user-defined type that is output. The user-defined name for <type>.

The following example outputs equations in a format similar to ABAQUS: *equations(0,"EQUATION") *format() *string("*EQUATION") *end() *counterset(counter1,[independentnodesmax+1])

Templates

64

Altair Engineering, Inc.

*field(integer,counter1,0) *end() *field(integer,dependentnode.id,0) *string(",") *field(integer,dependentdof,0) *string(",") *field(real,dependentcoeff,0) *string(",") *counterset(counter1,0) *loopif([counter1 < independentnodesmax]) *pointerset(pointer1,independentnodes,counter1) *field(integer,pointer1.pointervalue,0) *string(",") *pointerset(pointer1,independentdofs,counter1) *field(integer,pointer1.pointervalue,0) *string(",") *pointerset(pointer1,independentcoeffs,counter1) *field(real,pointer1.pointervalue,0) *counterinc(counter1) *endloop() *end() *output()

*errormessage()
Displays an error message on the menu bar. Syntax Arguments Example *errormessage (<string>) <string> String to be displayed

The example below displays an error for each quad4 that has a jacobian less than .7: *elements(104,0,"","")

Altair Engineering, Inc.

65

Templates

*format() *if([jacobian < .7]) *errormessage("jacobian less than .7") *endif() *output() Comments Each time *errormessage() is called, it overwrites the last error message. If the right mouse button is pressed while printing an error message, HyperMesh stops processing the template.

*field()
Places a formatted value from the database into the output file. Syntax Arguments *field(<type>,<data name>,<width>) <type> Either integer, unsigned, real, exponential, string, hexadecimal, or quoted. For simplicity, the first letter is required; all others are optional but recommended. The name of the data to be accessed. The width of the formatted field. In the case of real, HyperMesh uses scientific notation in order to make the value printed fit.

<data name> <width>

*fieldleft()
Places a left-justified, formatted value from the database into the output file. Syntax Arguments *fieldleft(<type>,<data name>,<width>) <type> Either integer, unsigned, real, exponential, string, hexadecimal, or quoted. For simplicity, the first letter is required; all others are optional but recommended. The name of the data to be accessed. Width of the formatted field. In the case of real, HyperMesh uses scientific notation in order to make the value printed fit.

<data name> <width>

Templates

66

Altair Engineering, Inc.

*fieldright()
Places a right-justified, formatted value from the database into the output file. Syntax Arguments *fieldright(<type>,<data name>,<width>) <type> Either integer, unsigned, real, exponential, string, hexadecimal, or quoted. For simplicity, the first letter is required; all others are optional but recommended. The name of the data to be accessed. The width of the formatted field. In the case of real, HyperMesh uses scientific notation in order to make the value printed fit.

<data name> <width>

*format()
Indicates that the following commands should be executed on the format level. Syntax *format()

*function()
Starts a function block. Syntax Arguments *function(<name>,<variables>) <name> The name of the function. Names should not begin with HM_ (these are reserved for use by HyperMesh. The variables to be returned to HyperMesh (variable1 variable20). The number of variables depends on the function. Functions can be used by HyperMesh to calculate information needed in some panels.

<variables>

Example

For example, the mass panel calls the function HM_ELEMENT_MASS to calculate the area (first variable) volume (second variable) and mass (third variable) of a set of elements: *function("HM_ELEMENT_MASS,variable1,variable2,variable3) *elements(1,1,"MASS","") *before() *variableset(variable1,0) // Area

Altair Engineering, Inc.

67

Templates

*variableset(variable2,0) *variableset(variable3,0) *format()

// Volume // Mass

*variableset(variable3,[variable3 + @magnitude($MASS_ADDMX,$MASS_ADDMY,$MASS_ADDMZ)]) *output() *return()

*geometryoverride()
Overrides the lines option on the export data panel and activates lines for output. Syntax *geometryoveride()

*globaldefaults()
Used to specify that each real, integer, and string attribute is modified as per the *menudefaultvalue(). Syntax Comments *globaldefaults() Any default value not overridden by a *menudefaultvalue() fills the field with the number of blanks equal to the width parameter in the *menufield() command when the field has the status off. *menudefaultvalue() can still be used to specify a different default value for individual fields when needed.

*groups()
Starts a group output block. The groups in the HyperMesh database whose configuration and type are equal to the parameters are output according to the user-defined format in this block. Syntax Arguments *groups(<configuration>,<type>,<user name>) <configuration> Defines the HyperMesh group that should be output using this block definition. The possible values are: ConfigGroup Output

Templates

68

Altair Engineering, Inc.

Interface with master and slave elements Interface with master elements and slave nodes Interface with slave elements Interface with slave nodes Rigid walls

4 5 <type>

Defines the group type that should be output using this block definition. The possible values are user-defined so that more types can be defined by the user. When groups are built, the template file is read automatically to determine the type of the group. A 32-character string enclosed in double quotes holding the name of the group as defined by the user. The name is used by the appropriate panels and displayed to the user for selection.

<user name>

Comments

Requires an *output() command at the end of the block.

*if()
Used to conditionally execute branches of code. Syntax Argument Example *if([<expression>]) <expression> Relational expression.

This command is useful for testing and acting on a condition. For example, users may wish to output only nodes having a z value of zero. The following is an example of this situation: *nodes() *format() *if([z == 0.0]) <instructions for node format> *endif() *output()

Comments

Requires an *endif() command. 69 Templates

Altair Engineering, Inc.

The expression is required to be enclosed in square brackets. The following operators are available: ==, = != <= < >= > % equal not equal less than or equal less than greater than or equal greater than modulus

*include()
Includes a file from the include directory. Syntax Argument *include(<filename>) <filename> The file identified by must be in the include directory where the template is located.

Comments

*include() can be used to insert a series of template commands that are used by multiple templates. *include()files can reference other *include() files in the same directory, but make sure you do not create an infinite *include() loop.

*lines()
Starts a line output block. All of the lines in the database are output according to the user-defined format in the block following the *lines() command. Syntax Argument Comments *lines(<configuration>) <configuration> Requires an *output() at the end of the block.

Templates

70

Altair Engineering, Inc.

*loadcols()
Starts a load collector output block. Syntax Argument Comments *loadcols(<name>) <name> Requires an *output() command at the end of the block.

*loads()
Starts a load output block. The loads in the HyperMesh database whose configuration is equal to the parameter configuration, and whose type is equal to the parameter type are output according to the user-defined format in this block. Syntax Arguments *loads(<config>,<type>,<user name>) <config> Defines the configuration of the load that is output using this block definition and has the following possible values: ConfigLoad 0 1 2 3 4 5 6 8 9 Output Any load Forces Moments Constraints Pressures Temperatures Fluxes Velocities Accelerations

If the config supplied is 0 (zero), all loads of the given type are output. <type> Defines the type of load being defined. The <type> parameter allows users to define multiple types of loads per configuration. If the type supplied is 0 (zero), all loads of the given config are output.

Altair Engineering, Inc.

71

Templates

<user name> Comments

Defines the name of the load being defined.

Requires an *output() at the end of the block.

*loadsteps()
Starts a loadsteps output block. Syntax Comments *loadsteps() Each loadstep contains a list of IDs for the load collectors within that step. Requires a *output() at the end of the block.

*loopif()
Conditionally executes a block of code while a condition is true. Syntax Argument Example *loopif([<expression>]) <expression> A relational expression.

If <expression> evaluates to a nonzero value, then the statements contained within the loop block are executed. The example below shows the usage of the loop: *counterset(counter1,1) *loopif([counter1 <= 5]) *end() *counterinc(counter1) *endloop()

*markfailed()
Marks an element as failed when used in the check elements panel (user subpanel) Syntax Example *markfailed() To mark quads that have a side shorter than .1, the following commands may be used:

Templates

72

Altair Engineering, Inc.

*elements(104,0,"","") *format() *if([shortestside < .1]) *markfailed() *endif() *output() Comments The command must only be used in a template file used with the user subpanel of the check elements panel. It is used to mark an element that has failed a user-defined element check (the element will be highlighted). It can only be used within a *elements block. The element is also put in the user mark.

*materials()
Starts a material output block. The material in the HyperMesh database is output according to the user-defined format in this block. Syntax Argument *materials(<material name>) <material name> Used as a key to determine if the material cards defined by this material are needed. If a component or property collector has been output that requires a material, the material collector to which that component or property collector points is marked for that material.

*menuentitypointerset()
Sets the initial value of a specified entity. Syntax *menuentitypointerset(<entity type>, <entity id>, <pointer number>, <pointer>, <value>) <entity type> The type of entity, such as sets, elems, or nodes , to which <entity id> refers. The ID of the entity you want to reference. Value from pointer1 to pointer20, indicating which of the 20 possible pointers to use as the <value> parameter.

Arguments

<entity id> <pointer number>

Altair Engineering, Inc.

73

Templates

<pointer>

Points to the data object that is accessed. Only certain data types may use pointers. These are described in the template commands in which they are valid. The value of the counter.

<value> Comments

*menuentitypointerset() can be used on any entity specified by <entity type> and <entity id>.

*nodes()
Starts a node output block. All of the nodes in the database are output according to the userdefined format in the block following the *nodes() command. Syntax Argument *nodes(<configuration>) <configuration> Defines the type of node to output in this block. Since HyperMesh only allows one type of node, this parameter is ignored but is allowed for future compatibility.

Comments

The following commands are available to sort nodes within the template system: *sortnodes(byinputsystem) *sortnodes(byoutputsystem) *sortnodes(byid) *sortnodes(none) The first three commands turn sorting on until it is turned off with *sortnodes(none). This command requires an *output() at the end of the block.

*nomenu()
Specifies that the card image definition is in a following block. Syntax Comments *nomenu() The *nomenu() command must be the first command to follow an entity block header.

Templates

74

Altair Engineering, Inc.

*output()
Outputs the data defined in the preceding block. Syntax Comments *output() Requires a preceding block definition.

*outputblocks()
Starts an outputblocks block. Syntax Example *outputblocks() *outputblocks contain a list of element or node IDs. An example is shown below: *outputblocks() *format() *if([type == 1]) *counterset(counter1,1) *loopif([counter1 <= idsmax]) *pointerset(pointer1,ids,[counter1-1]) *string("NOD: ") *field(integer,pointer1.pointervalue,8) *counterinc(counter1) *endloop() *endif() *if([type == 2]) *counterset(counter1,1) *loopif([counter1 <= idsmax]) *pointerset(pointer1,ids,[counter1-1]) *string("ELE: ") *field(integer,pointer1.pointervalue,8) *counterinc(counter1) *endloop() *endif()

Altair Engineering, Inc.

75

Templates

*output()

*plots()
Starts a plot output block. The plots in the HyperMesh database are output according to the userdefined format in this block. Syntax Example *plots() To output the IDs of the curves in a plot, the following commands should be used: *counterset(counter1,0) *loop([counter1 != numberofcurves]) *pointerset(pointer1,curves,counter1) *field(integer,pointer1.pointervalue,0) *counterinc(counter1) *endloop() Comments Requires an *output() at the end of the block.

*pointerset()
Sets the initial value of a pointer. Syntax Arguments *pointerset(<pointer number>,<pointer>,<value>) <pointer number> Value from pointer1 to pointer10 indicating which of the 10 possible pointers should be set to the <value> parameter. The pointer to the data object to be accessed. Only certain data types may use pointers. These are described in the template commands in which they are valid. The value of the pointer.

<pointer>

<value> Example

For example, to output all the dictionary entries for a component, the following commands could be used while in the component block: *counterset(counter1,0) *loopif([counter1 != dictionarymax])

Templates

76

Altair Engineering, Inc.

*pointerset(pointer1,dictionary,counter1) *field(string,pointer1.name,0) *field(integer,pointer1.type,0) *field(string,pointer1.string,0) *field(real,pointer1.value,8) *counterinc(counter1) *endloop()

*points()
Starts a points output block. Syntax Comments *points() Requires an *output() command at the end of the block.

*properties()
Starts a property output block. The properties in the HyperMesh database are output according to the user-defined format in this block. Syntax Arguments *properties(<property name>,<material name>) <property name> Used as a key to determine if the property cards defined by this property are needed. If an element has been output that requires a property, the property collector to which that element points is marked for that property. Used as a key to determine if the material cards defined by this material are needed. If a property has been output that requires a material, the material collector to which that property collector points is marked for that material.

<material name>

Comments

If the auto properties flag is turned off when a model is translated, then the user must define a dictionary item that is given the name <property name> and set it active: *elements(60,1,"CBAR","NAST_PBAR") .

Altair Engineering, Inc.

77

Templates

. . *output() *properties("NAST_PBAR","NAST_MAT1") *define("NAST_PBAR",none,0.0,1) . . . *output() *properties() should create the property cards for elements of type 21, 60, and 61.

*quote()
Writes a quotation (") character. Syntax *quote()

*rangeadd()
Add a number to a list so that ranges can be found with @rangecount(), @rangestart(), and @rangeadd(). Syntax Argument Example *rangeadd(<number>) <number> The integer number to add to the list.

*elements(104,0,"","") *format() *rangeadd(id) *after() *counterset(counter1,1) *loopif([counter1 <= @rangecount()]) *string("start of range = ") *field(integer,[@rangestart(counter1)],0)

Templates

78

Altair Engineering, Inc.

*end() *field(integer,[@rangeend(counter1)],0) *end() *counterinc(counter1) *endloop() *rangereset() *output() Comments Use *rangeadd() to add numbers to a list. Once all numbers have been added, @rangecount() returns the number of ranges (e.g. 1-5, 10-20) that are in the list. Use the functions @rangestart() and @rangeend() to get the actual ranges.

*rangereset()
Resets the list of numbers stored with *rangeadd(). Syntax Example *rangereset() *elements(104,0,"","") *format() *rangeadd(id) *after() *counterset(counter1,1) *loopif([counter1 <= @rangecount()]) *string("start of range = ") *field(integer,[@rangestart(counter1)],0) *end() *string("end of range = ") *field(integer,[@rangeend(counter1)],0) *end() *counterinc(counter1) *endloop() *rangereset()

Altair Engineering, Inc.

79

Templates

*output() Comments Use *rangeadd() to add numbers to a list. Once all numbers have been added, @rangecount returns the number of ranges (e.g. 1-5, 10-20) that are in the list. Use the functions @rangestart() and @rangeend() to get the actual ranges. *rangereset() removes all numbers from the list.

*realprecision()
Sets the number of significant figures after the decimal point for real numbers. Syntax Argument *realprecision (<int digits>) <digits> The number of significant figures to be used for all real values after the command in the template file. A zero (default) uses all available spaces in the field width.

Comments

This command results in values being rounded, according to IEEE specifications, to fit in the specified precision. Enabling the *compressreal() toggle truncates trailing zeros that are prodcued by this setting.

*return()
Ends a function block Syntax *return()

*scalefieldwidth()
Scales the width of a field. Syntax Arguments *scalefieldwidth(<field type>, <scalefactor>) <field type> Specifies which field type to scale. Valid values are integer, real, and string. The scale factor to apply to each field of <field type>. Typically, this value is 1 or 2.

<scalefactor>

Example

To print the node IDs and globalx values with a width of 16 instead of 8:

Templates

80

Altair Engineering, Inc.

*nodes() *before() *variableset(variable1,2) *scalefieldwidth(real,variable1) *scalefieldwidth(integer,variable1)

*format() *string("*") *field(integer,id,8) *string("*") *end()

*string("*") *fieldleft(real,globalx,8) *string("*") *end()

*output() Comments This command is typically used to write a deck that contains double precision numbers which have twice the field width specified by the *field command.

*segments()
Starts a segment output block. Syntax Comments *segments() Requires an *endsegments() command.

*setcollector()
Sets the current collector based on the last *pointerset() command. This is commonly used with loadsteps. You can also use this command with sets that contain components. Syntax Example *setcollector() The loadsteps entity contains the ids of loadcollectors for that step. To output the loads within each loadcollector: *loadsteps() Altair Engineering, Inc. 81 Templates

*format() *string("SUBCASE") *field(integer,id,3) *end() *counterset(counter1,0) *loopif([counter1 < idsmax ]) *pointerset(pointer1,ids,counter1) *setcollector() *loads(3,1,"SPC") *before() *counterset(counter2,0) *format() *if([counter2 == 0]) *string("SPC") *field(integer,pointer1.pointervalue,8) *end() *endif() *counterinc(counter2) *output() *counterinc(counter1) *endloop() *output()

*sets()
Starts a set output block. The sets in the HyperMesh database are output in the user-defined format contained within this block. Syntax Example *sets() To output all the sets and their IDs, the following commands could be used while in the set block: *format()

Templates

82

Altair Engineering, Inc.

*if([type == 1]) *string("node set") *else() *string("elemen set") *endif() *field(string,name,0) *end() *counterset(counter1,0) *loopif([counter1 != idsmax]) *pointerset(pointer1,ids,counter1) *field(integer,pointer1.pointervalue,5) *end() *counterinc(counter1) *endloop() Comments Requires an *output() command at the end of the block.

*sortelements()
Changes the order that elements are output in the *elements() block. Syntax Argument *sortelements (<sort type>) <sort type> bymaterialid sort elements by material. All elements in one material are output together. sorting is not performed. The elements are output in the order they are listed in the database.

none

Example

The following example outputs a list of element IDs sorted by material: *elements(104,0,"","") *before() *variableset(variable1,0) *sortelements(bymaterialid)

Altair Engineering, Inc.

83

Templates

*format() *if([variable1 != collector.materialid]) *string("elements in material") *field(integer,collector.materialid,0) *end() *variableset(variable1,collector.materialid) *endif() *string("id = ") *field(integer,id,0) *end() *output()

*sortloads()
Changes the order that loads are output in the *loads() block. Syntax Argument *sortloads(<sort type>) <sort type> bycomp1 bycomp2 bycomp3 bycomp4 bycomp5 bycomp6 bycomps none Example sort loads by comp1 sort loads by comp2 sort loads by comp3 sort loads by comp4 sort loads by comp5 sort loads by comp 6 sort loads by all components sorting is not performed

The following example outputs all forces in the same x direction, followed by the same y direction and then the same z direction: *loads(1,0,"") *sortloads(bycomp1) *before() *variableset(variable1,999999)

Templates

84

Altair Engineering, Inc.

*format() *if([comp1 != variable1]) *end() *end() *string("FORCE x = ") *field(real,comp1,0) *end() *variableset(variable1,comp1) *endif() *string(" ") *field(integer,id,0) *string(" ") *after() *end() *output()

*loads(1,0,"") *sortloads(bycomp2) *before() *variableset(variable1,999999) *format() *if([comp2 != variable1]) *end() *end() *string("FORCE y = ") *field(real,comp2,0) *end() *variableset(variable1,comp2) *endif() *string(" ") *field(integer,id,0) *string(" ") *after() *end() *output()

*loads(1,0,"") *sortloads(bycomp3) *before() *variableset(variable1,999999) *format()

Altair Engineering, Inc.

85

Templates

*if([comp3 != variable1]) *end() *end() *string("FORCE z = ") *field(real,comp3,0) *end() *variableset(variable1,comp3) *endif() *string(" ") *field(integer,id,0) *string(" ") *after() *end() *end() *output()

*sortnodes()
Changes the order that nodes are output in the *nodes() block. Syntax Argument *sortnodes(<sort type>) <sort type> byid byinputsystem sort nodes by ID sort nodes by inputsystem ID sort nodes by outputsystem ID sorting is not performed. The nodes are output in the order they are listed in the database.

byoutputsystem

none

Example

The following example outputs nodes sorted by their ID: *nodes() *sortnodes(byid) *format() *string("id = ") *field(integer,id,0) *end() *output()

Templates

86

Altair Engineering, Inc.

*string()
Outputs a string to the output file. Syntax Argument *string(<string>) <string> A string of characters. If the string contains a space, an asterisk, or a comma, the string must be enclosed by double quotes.

*stringtablereset()
Resets the string lookup table. Syntax *stringtablereset()

*stringtablestore()
Stores an entry into the string lookup table. Syntax Arguments *stringtablestore(<key>,<value>) <key> Assigned to a string lookup table entry and is used by the @stringlookup() function to find stored entries. <key> can be a data name or a literal string enclosed in double quotes. The value assigned to an entry in the string lookup table and is returned by @stringlookup().

<value>

Example

The example below stores the string shells in the string lookup table with a value of 10: *stringtablestore("shells",10) The example below saves component names with a value of 1 in the string table: *components("","") *format() *stringtablestore(name,1) *output()

Altair Engineering, Inc.

87

Templates

*surfaces()
Starts a surface output block. Syntax Comments *surfaces() Requires an *output() command at the end of the block.

*systcols()
Starts a system collector output block. Syntax Comments *systcols() Requires an *output() at the end of the block.

*systems()
Starts a system output block. All of the systems in the database are output according to the userdefined format in the block following the *systems() command. Syntax Comments *systems() Requires an *output() at the end of the output block definition.

*tablereset()
Resets the lookup table. Syntax *tablereset()

*tablestore()
Stores an entry in the lookup table. Syntax Arguments *tablestore(<key>,<value>) <key> Assigned to a lookup table entry and is used by the @lookup() function to find stored entries. The value assigned to an entry in the lookup table and is returned by @lookup().

<value>

Templates

88

Altair Engineering, Inc.

*text()
Starts a block that contains text. Syntax Comments *text() Requires an *output() command at the end of the block. This block provides an easy method of outputting a series of strings.

*titles()
Starts a title output block. All of the titles in the database are output according to the user-defined format in the block following the *titles() command. Syntax Comments *titles() Requires an *output() at the end of the output block definition.

*variableset()
Sets a variable to a specific value. Syntax Arguments *variableset(<variable>,<value>) <variable> A value from variable1 to variable20 indicating which of the 20 possible variables should be set to the next parameter. The value of the variable.

<value> Example

Variables can be used to hold real or integer values. For example, to add the value of variable5 to the current value of variable1, the following command could be used: *variableset(variable1,[variable1+variable5])

Altair Engineering, Inc.

89

Templates

*vectorcols()
Starts a vector collector output block. Syntax Argument Comments *vectcols(<name>) <name> The name of the output block.

Requires an *output() command at the end of the block.

*vectors()
Starts a vectors output block. Syntax Comments *vectors() Requires an *output() command at the end of the block.

*vectortablereset()
Resets the vector lookup table. Syntax Arguments *vectortablereset(<type>,<tolerance>) <type> The type of the vector lookup table. This determines how the vectors in the lookup table are compared against the key values sent by the @vectorlookup() function. Set this to 0, if the vectors represent node locations in space and the distance between the two nodes is the criteria for vectors being equal. Set this to 1, if the vectors represent vectors and the angle between the two vectors is the criteria for vectors being equal. The tolerance used to determine if a vector in the lookup table is equal to a key vector.

<tolerance>

Templates

90

Altair Engineering, Inc.

*vectortablestore()
Stores an entry into the vector lookup table. Syntax *vectortablestore(<key>,<x comp>,<y comp>,<z comp>,<value>) <key> The key assigned to the lookup table entry. This is used by the @vectorlookup() function to find stored entries. The x component of the vector assigned to a lookup table entry. This is used by the @vectorlookup() function to find stored entries. The y component of the vector assigned to a lookup table entry. This is used by the @vectorlookup() function to find stored entries. The z component of the vector assigned to a lookup table entry. This is used by the @vectorlookup() function to find stored entries. The value assigned to an entry in the lookup table. This value is returned by @vectorlookup().

Arguments

<x comp>

<y comp>

<z comp>

<value>

*writegeometry()
Outputs the Altair geometry database in an internal ASCII format. Syntax Arguments *writegeometry(<string>) <string> A small string to be inserted at the beginning of each line to serve as a comment character.

Comments

This format is designed to be read in with the hminlib function HM_writegeomdata().

Altair Engineering, Inc.

91

Templates

Using Template Functions


The HyperMesh template functions allow you to query information in the database, such as the @count function, perform mathematical functions, and query user-defined tables. A template function begins with the at symbol, @, and is followed by the variable arguments in parentheses. Template functions are placed between square brackets, [ ].

Using a Template Function Command - Example


The following example program finds the length of all weld elements and prints them to a file. *elements(3,0,"","") *format() *field(integer,id,10) *string(" ") *field(real,[@magnitude( node1.x - node2.x, node1.y - node2.y, node1.z - node2.z)],10) *end() *output()

Template Functions @acos()


Trigonometric arc cosine of x, the result is expressed in radians between 0 and Syntax Argument @acos(<x>) <x> Value of type real.

Templates

92

Altair Engineering, Inc.

@asin()
Trigonometric arc sine of x, the result is expressed in radians between - /2 and Syntax Argument @asin(<x>) <x> Value of type real.

/2.

@atan()
Trigonometric arc tangent of x, the result is expressed in radians between - /2 and Syntax Argument @atan(<x>) <x> Value of type real.

/2.

@atan2()
Trigonometric arc tangent of x/y, with the result is expressed in radians between - and Syntax Arguments @atan2(<x>,<y>) <x> <y> Value of type real, and should be expressed in radians. Value of type real, and should be expressed in radians.

@attributearray2dcols()
Returns the number of columns in a 2-D array attribute. Syntax Argument @attributearray2dcols(attribute) <attribute> The name of the attribute (must start with '$').

Altair Engineering, Inc.

93

Templates

@attributearray2drows()
Returns the number of rows in a 2-D array attribute. Syntax Argument @attributearray2drows(attribute) <attribute> The name of the attribute (must start with '$').

@attributearray2dvalue()
Returns the value of a 2-D array attribute. Syntax Arguments @attributearray2dvalue(attribute,row,column) <attribute> <row> <column> The name of the attribute (must start with '$') The row number (starting at 1) The column number (starting at 1).

@attributearraylength()
Returns the length of a 1-D array attribute. Syntax Argument @attributearraylength(attribute) <attribute> The name of the attribute (must start with '$').

@attributearrayvalue()
Returns the value of 1-D array attribute. Syntax Arguments @attributearrayvalue(attribute,index) <attribute> <index> The name of the attribute (must start with '$') Index into the array (starting at 1)

Templates

94

Altair Engineering, Inc.

@attributeindexarray2dcols()
Returns the number of rows for a 2-D array attribute on an entity. Syntax Argument @attributeindexarray2dcols(<entity index>) <entity index> The index of the attribute owned by the current entity (starting at 1).

@attributeindexarray2drows()
Returns the number of rows for a 2-D array attribute on an entity. Syntax Argument @attributeindexarray2drows(<entity index>) <entity index> The index of the attribute owned by the current entity (starting at 1).

@attributeindexarray2dvalue()
Returns the value of a 2-D array attribute on an entity. Syntax Arguments @attributeindexarray2dvalue(<entity index>,<row>,<col>) <entity index> The index of the attribute owned by the current entity (starting at 1). Indices into the attribute array (both start at 1).

<row> and <col>

@attributeindexarraylength()
Returns the length of a 1-D array attribute on an entity. Syntax Argument @attributeindexarraylength(<entity index>) <entity index> The index of the attribute owned by the current entity (starting at 1). 95 Templates

Altair Engineering, Inc.

@attributeindexarrayvalue()
Returns the value of a 1-D array attribute on an entity. Syntax Arguments @attributeindexarrayvalue(<entity index>,<array index>) <entity index> The index of the attribute owned by the current entity (starting at 1). The index into the attribute array (starting at 1)

<array index>

@attributeindexbehavior()
Returns the behavior of an attribute on an entity. Syntax Argument @attributeindexbehavior(<entity index>) <entity index> The index of the attribute owned by the current entity (starting at 1).

@attributeindexentityid()
Returns the entity ID of an entity attribute on an entity. Syntax Argument @attributeindexentityid(<entity index>) <entity index> The index of the attribute owned by the current entity (starting at 1).

@attributeindexentitytype()
Returns the entity type (number) of an entity attribute on an entity. Syntax Argument @attributeindexentitytype(<entity index>) <entity index> The index of the attribute owned by the current entity (starting at 1).

Templates

96

Altair Engineering, Inc.

@attributeindexentitytypename()
Returns the entity type (string) of an entity attribute on an entity. Syntax Argument @attributeindexentitytypename(<entity index>) <entity index> The index of the attribute owned by the current entity (starting at 1).

@attributeindexidentifier()
Returns the identifier of an attribute on an entity. Syntax Argument @attributeindexidentifier(<entity index>) <entity index> The index of the attribute owned by the current entity (starting at 1).

@attributeindexsolver()
Returns the solver of an attribute on an entity. Syntax Argument @attributeindexsolver(<entity index>) <entity index> The index of the attribute owned by the current entity (starting at 1).

@attributeindexstatus()
Returns the status of an attribute on an entity. Syntax Argument @attributeindexstatus(<entity index>) <entity index> The index of the attribute owned by the current entity (starting at 1).

Altair Engineering, Inc.

97

Templates

@attributeindextype()
Returns the type of attribute on an entity. Syntax Argument @attributeindextype(<index>) <index> The index of the attribute owned by the current entity (starting at 1). The return types are: 1 2 3 4 5 6 7 8 9 10 11 Example integer double string 1-D integer array 1-D double array entity (not supported) (not supported) 2-D integer array 2-D double array string array

If you want to print the types of all attributes on nodes: *nodes() *format() *counterset(counter1,1) *loopif([counter1 <= attributesmax]) *field(integer,[@attributeindextype(counter1)],5) *end() *coutnerinc(counter1) *endloop() *output()

Templates

98

Altair Engineering, Inc.

@attributeindexvalue()
Returns the value of an attribute on an entity. Syntax Argument @attributeindexvalue(<entity index>) <entity index> The index of the attribute owned by the current entity (starting at 1).

@attributereferencecount()
Returns the number of times an entity is referenced by an attribute. Syntax Arguments @attributereferencecount(<entity type>, <id>) <entity type> <id> Example The type of entity referenced. The entity ID.

If you want to output only curves that are referenced, such as by a material or load, use an *if statement as follows: *curves() *format() *if([@attributereferencecount(curves,id) > 0)]) *string(Load Curve #) *field(integer,id,0) *end() *endif() *output() The block above writes out only referenced curves, and those generated via post-processing operations are omitted (if they are not pointed to by an attribute).

Altair Engineering, Inc.

99

Templates

@checkfile()
Checks for a file. Syntax Argument Example @checkfile(<file name>) <file name> *text() *if([@checkfile(\tmp\file)=1]) *string(file exists) *else() *string(file does not exist) *endif() *output() Comments Return 1 if the file exists. On a PC, use backslashes for the path (\tmp\file). On UNIX, use forward slashes for the path (/tmp/file). File name to be checked.

@controlcardattributedefined()
Returns 1 if an attribute exists, 0 otherwise Syntax @controlcardattributedefined(<ctrl card name>, <attribute name>) <ctrl card name> <attribute name> Comments If a control card or attribute is not defined, a 0 is returned.

Arguments

@cos()
Trigonometric cosine of x, where x is expressed in radians. Syntax Argument @cos(<x>) <x> A value of type real.

Templates

100

Altair Engineering, Inc.

@count()
Counts the entities in the database. Syntax Arguments @count(<entity type>, <config>, <type>) <entity type> The type of entity to be counted. This parameter may be set to any of the entities in the database. The configuration number of the entities to be counted. This parameter is used only if <entity type> is set to elements or loads. If set to zero, the entities are counted regardless of their configuration. The type number of the entities to be counted. This parameter is used only if <entity type> is set to elements. If set to zero, all of the entities are counted regardless of their type.

<config>

<type>

Comments

If the displayed option is selected (active) on the export data panel, the value returned by @count() includes only those entities that are currently displayed.

@defaultstatus()
Returns the default status of an attribute. Syntax Comments @defaultstatus(<attribute name>) If the attribute is set to the default value (grayed out in the card previewer), the function returns 1; otherwise, it returns 0.

@defined()
Tests to see if a dictionary item is defined. Syntax Argument @defined(<dictionary item>) <dictionary item> The name of a dictionary item. This function returns 1 if the dictionary item is active or 0 if the dictionary item is not active. If the dictionary item does not exist, the function returns 0.

Comments

This function allows dictionary items to be set as a toggle that the user can turn off and on. During translation, @defined() can be used to see if the item has been toggled on or off. 101 Templates

Altair Engineering, Inc.

@dofs()
Extracts individual degrees of freedom from an integer and returns the status Syntax Arguments @dofs(<dof>,<position>) <dof> Generally an integer beam end release code that returns 1 or 0 (on or off) if the integer in <position> is contained within the <dof> field.

<position> Example @dofs(123,1) = 1, @dofs(456,1) = 0

@entitygettype()
Gets the user-assigned type of an entity. The user-assigned entity type is set in the template. Syntax Arguments @entitygettype(<entity type>, <entity id>) <entity type> The type of entity to be retrieved, such as elems. This parameter may be set to any entity type. The ID of the entity.

<entity id>

@entityincollector()
Returns the number of entities in a collector. Syntax Arguments @entityincollector(<entity type>, <config>, <type>) <entity type> Defines the type of entity to be counted. Defines the configuration number of the entities being counted. If set to 0, entities are counted regardless of their configuration. Defines the type number of the entities being counted. If set to 0, entities are counted regardless of their type.

<config>

<type>

Templates

102

Altair Engineering, Inc.

@entitymaxid()
Returns the maximum ID in use from a type of entity. Syntax Argument @entitymaxid(<entity type>) <entity type> The type of the entity.

@enum()
Returns the value of an enumeration. Syntax Arguments @enum(<enum name>,<enum index>) <enum name> <enum index> The name of the enumeration. The index into the enumeration (starting at 1).

@exists()
Indicates if a pointer is pointing to an entity or if it is set to NULL. Syntax Argument @exists(<pointer>) <pointer> A pointer to an entity. If the pointer is pointing to an entity, the function returns 1. If not, the function returns 0.

@exp()
Exponential of x. Syntax Argument Example @exp(<x>) <x> A value of type real.

@exp(2) = e2 = (2.718281828...)2 = 7.389056...

Altair Engineering, Inc.

103

Templates

@fabs()
Absolute value of x. Syntax Argument @fabs(<x>) <x> A value of type real.

@getcollectorname()
Retrieves the name of a collector. Syntax Arguments @getcollectorname(<collector type>,<collector id>) <collector type> The type of collector (such as properties or components). The ID of the collector.

<collector id>

@getcontrolcardattribute()
Returns the value of an attribute on a control card. Syntax @getcontrolcardattribute(<control card>,<attribute>) <control card> <attribute> Comments The name of the control card. The attribute name.

Arguments

If a control card and/or attribute is not present, an error occurs. Use @acontrolcardattributedefined() to verify the existence of a control card or attribute.

Templates

104

Altair Engineering, Inc.

@getentityvalue()
Retrieves the value of an entity. Syntax @getentityvalue(<entity type>, <entity id>, <data name>) <entity type> The type of entity, such as sets, elems, or nodes, to which <entity id> refers. The ID of the entity you want to reference. The data name of the entity. For example, ID, name, node1.globalx.

Arguments

<entity id>

<data name>

Example

To output the name of a set with the ID, 1: *field (string,[@getentityvalue(sets, 1, name)], 32)

Comments

The @getentityvalue function allows you to get a value from an entity if you know the entitys type and ID. It allows you to get a value of the collector which contains an entity. This function searches the database and may access the data values slower than other commands, such as *sets().

@log()
Natural logarithm. Syntax Argument Example @log(<x>) <x> A value of type real.

@log(2) = LN(2) = 0.693147

@log10()
Logarithm of x to the base 10. Syntax Argument Example @log10(<x>) <x> A value of type real.

@log(100) = Log10(100) = 2.000

Altair Engineering, Inc.

105

Templates

@lookup()
Retrieves a value stored in a lookup table. Syntax Argument @lookup(<key>) <key> Used to compare the keys found on the lookup table entries. If <key> matches one of the keys in the lookup table, the function returns the value associated with that entry. If a matching key is not found, the function returns 0.

@magnitude()
Returns the magnitude of a vector. Syntax Argument @magnitude(<x comp>, <y comp>, <z comp>) <x comp>, <y comp>, and <z comp> The components of the vector to be evaluated.

@pow
Returns the real value of X raised to the power Y. Syntax Arguments @pow(<x>,<y>) <x> <y> Example A value of type real. A value of type real.

@pow(2.0, 3.0) = 2.03 =8.0

Templates

106

Altair Engineering, Inc.

@rangecount()
Returns the number of ranges for the numbers used with *rangeadd(). Syntax Example @rangecount() *elements(104,0,"","") *format() *rangeadd(id) *after() *counterset(counter1,1) *loopif([counter1 <= @rangecount()]) *string("start of range = ") *field(integer,[@rangestart(counter1)],0) *end() *string("end of range = ") *field(integer,[@rangeend(counter1)],0) *end() *counterinc(counter1) *endloop() *rangereset() *output() Comments Use *rangeadd() to add numbers to a list. Once all numbers have been added, @rangecount() returns the number of ranges (e.g. 1-5, 10-20) that are in the list. Use the functions @rangestart() and @rangeend() to get the actual ranges.

Altair Engineering, Inc.

107

Templates

@rangestart()
Returns the starting range of a range of numbers. Syntax Argument Example @rangestart(<range>) <range> The range number, starting at 1.

*elements(104,0,"","") *format() *rangeadd(id) *after() *counterset(counter1,1) *loopif([counter1 <= @rangecount()]) *string("start of range = ") *field(integer,[@rangestart(counter1)],0) *end() *string("end of range = ") *field(integer,[@rangeend(counter1)],0) *end() *counterinc(counter1) *endloop() *rangereset() *output()

Comments

Use *rangeadd() to add numbers to a list. Once all numbers have been added, @rangecount() will return how many ranges, such as 1-5, 10-20, are in the list. Use the functions @rangestart() and @rangeend() to get the actual ranges.

Templates

108

Altair Engineering, Inc.

@rangeend()
Returns the ending range of a range of numbers. Syntax Argument Example @rangeend(<range>) <range> The range number, starting at 1.

*elements(104,0,"","") *format() *rangeadd(id) *after() *counterset(counter1,1) *loopif([counter1 <= @rangecount()]) *string("start of range = ")

*field(integer,[@rangestart(counter1)],0) *end() *string("end of range = ") *field(integer,[@rangeend(counter1)],0) *end() *counterinc(counter1) *endloop() *rangereset() *output() Comments Use *rangeadd() to add numbers to a list. Once all numbers have been added, @rangecount() returns how many ranges , such as 1-5, 10-20, are in the list. Use the functions @rangestart() and @rangeend() to get the actual ranges.

@sin()
Trigonometric sine of x, where x is expressed in radians. Syntax Argument @sin(<x>) <x> Value of type real.

Altair Engineering, Inc.

109

Templates

@sqrt()
Returns the square root of a number. Syntax Comments @sqrt(<x>) The square root of z is returned. If <x> is negative, an error is reported.

@stringequal()
Compares two strings, and returns 1 if they are equal; otherwise, 0. Syntax Arguments @stringequal(<string1>,<string2>) <string1> <string2>

@stringlookup()
Retrieves a value stored in a string lookup table. Syntax Argument @stringlookup(<key>) <key> Used to compare the keys found in the string lookup table. <key> can be a data name or a literal string enclosed in double quotes.

Example

The following example looks for the string shells in the string lookup table. *if([@stringlookup("shells")]) *string("$ shells found") *end() *endif() The following example finds components whose names are in the string lookup table: *components("","") *format() *if([@stringlookup(name)]) *field(string,name,32) *end()

Templates

110

Altair Engineering, Inc.

*endif() *output()

@tan()
Trigonometric tangent of x, where x is expressed in radians. Syntax Argument @tan(<x>) <x> A value of type real.

@vectorlookup()
Retrieves a value stored in a vector lookup table. Syntax Arguments @vectorlookup(<key>, <x comp>, <y comp>, <z comp>) <key> Used to compare the keys found on the lookup table entries. The components of the vector that are used to compare the vectors found on the lookup table entries.

<x comp>, <y comp>, <z comp>

Comments

If both the keys match, and the vectors are within tolerance, then this function returns the value associated with the matching entry. If a match is not found, the function returns 0.

@vectorlookupcomponent()
Retrieves a component of the vector stored in a lookup table. Syntax Arguments @vectorlookup(<comp>, <key>) <comp> The component of the vector (1 - x, 2 - y, 3 - z) Used to compare the keys found on the lookup table entries.

<key>

Altair Engineering, Inc.

111

Templates

@vectorlookupnotkey()
Retrieves a value stored in a vector lookup table. Syntax @vectorlookupnotkey(<key>,<x comp>,<y comp>,<z comp>) <key> Used to compare the keys found in the lookup table entries. The components of the vector that is used to compare the vectors found in the lookup table entries.

Arguments

<x comp>, <y comp>, <z comp>

Comments

If the input vector matches the vector in the lookup table and the keys do not match, this function returns the value stored in the lookup table. When looking for a match between vectors, the tolerance set by *vectortablereset() is used. If no match is found, this function returns 0.

@xpointlocal()
Transforms a coordinate into a local system and returns the x value of the transformed point. Syntax Arguments @xpointlocal(<system id>, <x>, <y>, <z>) <system id> The ID of the system into which the point should be transformed. The coordinates of the point to be transformed in the global system.

<x>, <y>, and <z>

@xpointvectorlocal()
Transforms a vector into a local system and returns the x value of the transformed vector. Syntax @xpointvectorlocal(<system id>, <x>, <y>, <z>, <vx>, <vy>, <vz>) <system i> The ID of the system into which the point should be transformed. The coordinates of the point where the vector is located in the global system.

Arguments

<x>, <y>, and <z>

Templates

112

Altair Engineering, Inc.

<vx>, <vy>, <vz>

The components of the vector to be transformed.

@ypointlocal()
Transforms a coordinate into a local system and returns the y value of the transformed point. Syntax Arguments @xpointlocal(<system id>, <x>, <y>, <z>) <system id> The ID of the system into which the point should be transformed. The coordinates of the point to be transformed in the global system.

<x>, <y>, and <z>

@ypointvectorlocal()
Transforms a vector into a local system and returns the y value of the transformed vector. Syntax @ypointvectorlocal(<system id>, <x>, <y>, <z>, <vx>, <vy>, <vz>) <system id> The ID of the system into which the point should be transformed. The coordinates of the point where the vector is located in the global system. The components of the vector to be transformed.

Arguments

<x>, <y>, and <z>

<vx>, <vy>, <vz>

@zpointlocal()
Transforms a coordinate into a local system and returns the z value of the transformed point. Syntax Arguments @zpointlocal(<system id>, <x>, <y>, <z>) <system id> The ID of the system into which the point should be transformed.

Altair Engineering, Inc.

113

Templates

<x>, <y>, and <z>

The coordinates of the point to be transformed in the global system.

@zpointvectorlocal()
Transforms a vector into a local system and returns the z value of the transformed vector. Syntax @zpointvectorlocal(<system id>, <x>, <y>, <z>, <vx>, <vy>, <vz>) <system id> The ID of the system into which the point should be transformed. The coordinates of the point where the vector is located in the global system. The components of the vector to be transformed.

Arguments

<x>, <y>, and <z>

<vx>, <vy>, <vz>

Templates

114

Altair Engineering, Inc.

Using the Card Previewer Commands


Card images are described by a template file block. To display the card image using the card previewer, specify the appropriate card previewer commands within a *beginmenu() /*endmenu() block. You can use these commands to display entity data and edit solver-specific attributes. Since you can use the card previewer to view and edit attributes on multiple entities, some data may not have a common value to display for the selected entities . When this occurs, a large X is drawn through the data display area. If the data is an editable field (attribute), select the field and enter a value that is common to all of the selected entities. If the entities do not share a common value, HyperMesh ignores any logic commands (*menuif() , *menuoption() , menuoptionenum() etc.) dependent on entities sharing a common value. Attributes default values are common throughout the card previewer. A default value field has two states: State Default = ON Default = OVERRIDDEN Description In this state, the field label color is yellow and dat a entry is not allowed. To override a default value field, pick the yellow field label. The label text color changes to cyan and allows you to enter data in the field.

Card Previewer Error Messages


The following list describes the card previewer error messages and the corresponding solutions. Message Meaning Invalid variable <variable> in *setvariable() command. The <variable> specified in the *menusetvariable() command was not between variable1 and variable20. Change the invalid variable to a valid variable name.

Solution

Message Meaning Cause

Attribute id <id> on entity does not match type in template. The attribute's type did not match the type specified for the attribute in the template. The *defineattribute() command in the template may have been modified, a different template with the same *codename() was used to edit the entity, or an invalid entity was created by an input translator. You must clear the attributes for the solver off of the entity to edit the card.

Solution

Message

Invalid entity type <type> specified in *menuentitytype().

Altair Engineering, Inc.

115

Templates

Meaning

A *menuentitytype() command with invalid type was present in the template file. Change the *menentitytype() command's parameter to be a valid entity name.

Solution

Message Meaning

Too many <type> collectors used. A maximum of 48 *menuentitytype() commands for the same entity type can be used in a card image. You have exceeded this limit. Reduce the number of *menuentitytype() commands for <type> to be less than 48.

Solution

Message Meaning Cause

Could not find entity <id> associated with attribute <attribute name>. An entity attribute holds an id without an entity. Entities may have been deleted or renumbered, or the *menuentitytype() command specifying the entity collected by this attribute was changed in the template file. None. The value is set to 0.

Solution

Message Meaning Solution

No attribute attached to menu item <name>. An internal error has occurred while parsing an expression. Contact HyperMesh support. The data and template file are required to further investigate the problem.

Message Meaning Solution

No attribute attached to collector item <id>. An internal error has occurred when a collector was selected. Contact HyperMesh support. The data and template file are required to further investigate the problem.

Message Meaning

Could not find attribute named <name> in *menuoption(), skipping. A *menuoption() or *menuoptionenum() command referenced <name> that does not have an *defineattribute() command. Change the *menuoption() or *menuoptionenum() command to reference a valid attribute name.

Solution

Message Meaning

Could not find enumeration <enumeration> for *menuoptionenum(). *menuoptionenum() command referenced an <enumeration> that does not have an existing *enumeration() command. 116 Altair Engineering, Inc.

Templates

Solution

Change the *menuoptionenum() command to reference a valid enumeration.

Message Meaning Cause

Enumeration attribute <attribute> contains value <value> beyond limit of <maximum>. <attribute> holds a <value> > <maximum>. Both *menuoptionenum() and *menufield() commands referencing <attribute> may exist in the template file. If this is the case, the user can type in <value> > <maximum>. An input translator may have also created <attribute> with the invalid <value>. If this occurs in a HyperMesh-developed template, contact HyperMesh support with the error. User generated templates can ensure that the value is within a certain range by using *menuif() and *menuattributeset() commands. Here is an example of how to limit an attribute's value to between 1 and 5. *menuif([$ATTRIBUTE_NAME < 1]) *menuattributeset($ATTRIBUTE_NAME,1) *menuendif() *menuif([$ATTRIBUTE_NAME > 5]) *menuattributeset($ATTRIBUTE_NAME,5) *menuendif()

Solution

Message Meaning

Could not find attribute named <attribute>, skipping. A *menufield() command referenced the attribute named <attribute> for which no *defineattribute() command exists. Change the *menufield() command to reference a valid attribute name.

Solution

Message Meaning

Default value specified for always on attribute <attribute>. A *menudefaultvalue() command modifies <attribute> that does not have a valid on/off value. The *menudefaultvalue() command will be ignored. The *menudefaultvalue() command in the template may have been added after the template was used on the current database, a different template with the same *codename() was used to edit the entity, or <attribute> was created with an invalid status by an input translator.

Cause

Message Meaning Solution

Failed to created attribute <attribute>. An internal error has occurred in the card editor. Contact HyperMesh support. The data and template file are required to further investigate the problem.

Altair Engineering, Inc.

117

Templates

Message Meaning

Initial value expression for <attribute> could not be evaluated. The expression specified in *menuinitialvalue() returned an error code. The <attribute> is created with the value 0 or a zero length string, depending on string. This error should only occur if you using the card editor on multiple entities. If you need the *menuinitialvalue() command to be executed, abort the editing on the current set of entities and edit them one at a time.

Cause Solution

Message Meaning

Initial value for <attribute> only valid for integer, real, or string. A *menuinitialvalue() command references an attribute that was not of type integer, real, or string. Remove the *menuinitialvalue() command that references <attribute>.

Solution

Message Meaning

Attribute <attribute> has different entity type (<entity>) than template. A *menuentitytype() command conflicts with the entity type stored on <attribute>. The *menuentitytype() command modifying <attribute> in the template may have been changed after the template was used on the current database, two or more *menufield() commands referencing <attribute> with differing *menuentitytype() commands exists in the template file, a different template with the same *codename() was used to edit the entity, or <attribute> was created with an invalid entity type by an input translator. If a user-generated input translator is being used, make sure that that attribute's entity type created by the translator matches that of the template file. Also check for and remove multiple *menufield()/*menuentitytype() commands referencing the same attribute in the block.

Cause

Solution

Message Meaning Solution

Failed to created entity attribute <attribute>. An internal error has occurred in the card editor. Contact HyperMesh support. The data and template file are required to further investigate the problem.

Message Meaning

Enumerated and legal input specified for <attribute>, legal ignored. Both *menulegalvalue() and *menuenum() commands modify the same *menufield() command. The *menulegalvalue() commands are ignored. Remove either the *menuenum() command or all of the *menulegalvalue() modifiers from the *menufield() in question.

Solution

Templates

118

Altair Engineering, Inc.

Message Meaning

Enumerated and restricted input specified for <attribute>, restricted ignored. Both *menurestrictedvalue() and *menuenum() commands modify the same *menufield() command. The *menurestrictedvalue() commands are ignored. Remove either the *menuenum() command or all *menurestrictedvalue() modifiers from the *menufield() in question.

Solution

Message Meaning

Restricted and legal input specified for <attribute>, restricted ignored. Both *menurestrictedvalue() and *menulegalvalue() commands modify the same *menufield() command. The *menurestrictedvalue() commands are ignored. Remove either all *menulegalvalue() commands or all *menurestrictedvalue() modifiers from the *menufield() in question.

Solution

Message Meaning

menulegalvalue unsupported for storage type of <attribute>. A *menulegalvalue() command modifies a *menufield() command that references an attribute that is not of type real, integer, or string. Remove the *menulegalvalue() modifier from the *menufield() command.

Solution

Message Meaning

Illegal unsigned integer value returned for <data>. An expression or data member value could not be displayed as an unsigned integer. The string ERROR is displayed in red for this field. Change the display type of this *menufield() command to real or exponential.

Solution

Message Meaning

Illegal integer value returned for <data>. An expression or data member value could not be displayed as an integer. The string ERROR is displayed in red for this field. Change the display type of this *menufield() command to real or exponential.

Solution

Message Meaning

Illegal hexadecimal value returned for <data>. An expression or data member value could not be displayed as an hexadecimal number. The string ERROR is displayed in red for this field. Change the display type of this *menufield() command to real or exponential.

Solution

Message

No string value returned for <data>.

Altair Engineering, Inc.

119

Templates

Meaning

An expression or data member value could not be displayed as a string. The string ERROR is displayed in red for this field. Change the display type of this *menufield() command to something other than string.

Solution

Message Meaning Solution

beginrepeat - Expression <expression> could not be evaluated, skipping repeat block. <expression> could not be evaluated for multiple entities. Reduce set of entities to use card editor until <expression> is resolvable.

Message Meaning

Illegal repeat value return for <expression>. A *beginrepeat() or *beginrepeat2d() command containing <expression> returned a value too large or too small. The repeat block is skipped. It is possible to get this error with valid data. Usually it is caused by a bad *menupointerset() command.

Solution

Message Meaning

Illegal repeat 2d value return for <expression>. A *beginrepeat() or *beginrepeat2d() command containing <expression> returned a value too large or too small. The repeat block is skipped. It is possible to get this error with valid data. Usually it is caused by a bad *menupointerset() command.

Solution

Message Meaning

Invalid pointer name <pointer> in *menupointerset() command, ignoring. The <pointer> specified in the *menupointerset() command was not between pointer1 and pointer20. Change the invalid pointer to a valid pointer name.

Solution

Message Meaning

Invalid counter name <counter> in *menucounterset() command, ignoring. The <counter> specified in the *menucounterset() command was not between counter1 and counter20. Change the invalid counter to a valid counter name.

Solution

Message Meaning Templates

Error evaluating data for <counter>, setting to 0. The expression in a *menucounterset() command could not be evaluated for 120 Altair Engineering, Inc.

this set of entities. Solution Reduce the set of entities you are editing until the expression in *menucounterset() command can be evaluated.

Message Meaning

Invalid variable name <variable> in *menuvariableset() command, ignoring. The <variable> specified in the *menuvariableset() command was not between variable1 and variable20. Change the invalid v ariable to a valid variable name.

Solution

Message Meaning

Error evaluating data for <variable>, setting to 0. The expression in a *menuvariableset() command could not be evaluated for this set of entities. Abort editing the current set of entities, reduce the set of entities you are editing until the expression in *menuvariableset() command is evaluated.

Solution

Message Meaning Solution

Unable to find attribute <attribute> in *menuattributeset() command. A *menuattributeset() command references an illegal attribute name. Change the attribute referenced by the *menuattributeset() command.

Message Meaning Solution

Could not find selected item <id>. An internal error has occurred in the card editor. Contact HyperMesh support. The current model and template file are required to further investigate the problem.

Message Meaning

Could not find tag attribute <attribute>. A *cardmenuitem() command references an attribute that has no *defineattribute() command. Change <attribute> so that it references a valid attribute, or add a *defineattribute() command for <attribute>.

Solution

Message Meaning Solution

menuenum references undefined enumeration <name>. An enumeration called <name> was not previously defined in the template file. Change <name> to match a valid enumeration name.

Altair Engineering, Inc.

121

Templates

Message Meaning

Output command reached before *beginmenu() for this entity. The *output() command for this entity block, signifying the end of the block, was reached before a *beginmenu() command. Either the *beginmenu()does not exist in this entity block, or it was placed after the *output() command. Add or move the *beginmenu()/*endmenu() section before the *format() command for this block.

Solution

Message Meaning

2d array attribute <attribute> found outside of *repeat2d block(). Attributes of type arrayofreal2d and arrayofinteger2d can only be referenced in a *beginrepeat2d()/*endrepeat2d() section. Move the reference to <attribute> into a *beginrepeat2d()/ *endrepeat2d() section.

Solution

Message Meaning

2d array attribute <attribute> not resized properly (out of bounds). An internal error has occurred in the card editor causing the array attribute to have the wrong size. Contact HyperMesh support. The data and template file are required to further investigate the problem.

Solution

Message Meaning Solution

Unknown attribute type <type number> found in attribute table. An internal error has occurred in HyperMesh. Contact HyperMesh support. The data and template file are required to further investigate the problem.

Message Meaning Solution

*endmenu() command not reached for this entity. The end of the template file was reached before the *endmenu() command. Add a *endmenu() command to match the last *beginmenu() command in template file.

Message Meaning

*menuif() missing menuelse()/menuendif() command, aborting. The end of the template file was reached before a *menuelse() or *menuendif() command for a *menuif() statement. Add a *menuendif() command to match the *menuif() command. Since the *menuif() commands can be nested, it may not be obvious which *menuif() is missing a *menuelse() or *menuendif() command.

Solution

Message Templates

*menuendif() command not found to terminate *menuelse() block. 122 Altair Engineering, Inc.

Meaning

The end of the template file was reached before a *menuendif() command was found to terminate a *menuif() and *menuelse() statement. Add a *menuendif() command to match the *menuif()/*menuelse() commands. Since the *menuif() commands can be nested, it may not be obvious which *menuif()/*menuelse() block is missing a *menuendif() command.

Solution

Message Meaning Solution

Menu does not own pointer returned by strrgy. An internal error has occurred in the card editor. Contact HyperMesh support. The data and template file are required to further investigate the problem.

Message Meaning

Option attribute <attribute> not of type integer. <attribute> referenced in a *menuoption() or *menuoptionenum() command was not an integer attribute. Changed the *menuoption() or *menuoptionenum() command so that it references an integer attribute.

Solution

Message Meaning

Negative optioncount reached in case search block, aborting. Too many *menuoptionend() commands exist in this block. There should be one *menuoptionend() command per *menuoption() or *menuoptionenum() command. Locate and remove the extra *menuoptionend() commands.

Solution

Message Meaning

Invalid attribute <attribute> referenced in *beginrepeat() command. The name <attribute> does not match a name in a *defineattribute() command. Change <attribute> to match the name of a valid attribute.

Solution

Message Meaning Solution

*beginrepeat() attribute <attribute> is not type integer. Attributes specified in the *beginrepeat() command must be of type integer. Change the *beginrepeat() command to reference an integer attribute.

Message Meaning

No *endrepeat() for zero length array. The end of the template file was reached before a *endrepeat() command was found to match a *beginrepeat().

Altair Engineering, Inc.

123

Templates

Solution

Add a *endrepeat() command to match the *beginrepeat() command.

Message Meaning

*endrepeat() found without matching *beginrepeat(). An extra *endrepeat() command exists in this block. There should be one *endrepeat() command per *beginrepeat() command. Locate and remove the extra *endrepeat() command.

Solution

Message Meaning

*beginrepeat2d() found outside of *beingrepeat() block. All *beginrepeat2d() commands must occur within a *beginrepeat()/*endrepeat() block. Move the *beginrepeat2d()/*endrepeat2d() block so that it occurs in a *beginrepeat()/*endrepeat() block.

Solution

Message Meaning

Invalid attribute <attribute> referenced in *beginrepeat2d() command. The name <attribute> does not match a name in a *defineattribute() command. Change <attribute> to match the name of a valid attribute.

Solution

Message Meaning Solution

*beginrepeat2d() attribute <attribute> is not type integer. Attributes specified in the *beginrepeat2d() command must be of type integer. Change the *beginrepeat2d() command to reference an integer attribute.

Message Meaning

No *endrepeat() for zero length array. The end of the template file was reached before a *endrepeat() command was found to match a *beginrepeat(). Add an*endrepeat() command to match the *beginrepeat() command.

Solution

Message Meaning

*endrepeat2d() found without matching *beginrepeat2d(). An extra *endrepeat2d() command exists in this block. There should be one *endrepeat2d() command per *beginrepeat2d() command. Locate and remove the extra *endrepeat2d() command.

Solution

Templates

124

Altair Engineering, Inc.

Card Previewer Commands *begincardmenu()


Indicates the beginning of the control cards list. Syntax Comments *begincardmenu() Only *cardmenuitem() commands are valid between the *begincardmenu() and *endcardmenu() commands.

*beginmenu()
Indicates the beginning of the description used for the card previewer. Syntax Comments *beginmenu() Must be accompanied by the *endmenu() command.

*beginrepeat()
Repeats execution of a block of code a specified number of times. Syntax Argument Example *beginrepeat(<expression>) <expression> A relational expression or an attribute.

*beginrepeat($ARRAY_LENGTH) *repeatwrap(80) *repeatcounter(1) *menufield(Array,integer,$ARRAY_ATTRIBUTE,10) *endrepeat()

Comments

The *repeatwrap() command can be used to automatically begin new lines. If used, it must be the first command following the *beginrepeat(). The *repeatcounter() command can be used to store the current repeat value in a counter. If no *repeatcounter() command is specified, the repeat value is not stored in any counter. All *menufield() commands that reference attributes can only reference the following types in a *beginrepeat() block: arrayofinteger, arrayofreal, arrayofstring.

Altair Engineering, Inc.

125

Templates

The *beginrepeat() command must be accompanied by a *endrepeat() command.

*beginrepeat2d()
Repeats execution of a block of code a specified number of times. Syntax Argument Example *beginrepeat2d(<expression>) <expression> Either a relational expression or an attribute.

*beginrepeat($ARRAY_LENGTH) *repeatwrap(80) *repeatcounter(1) *menufield(Array,integer,$ARRAY_ATTRIBUTE,10) *beginrepeat2d($ARRAY2D_LENGTH) *repeatcounter(2) *menufield(Array2d,integer,$ARRAY2D_ATTRIBUTE,10) *endrepeat2d() *endrepeat()

Comments

The *beginrepeat2d() command must always occur with a *beginrepeat() /*endrepeat() block. The *repeatwrap() command can be used to automatically begin new lines. If used, it must be the first command following the *beginrepeat2d(). If a *repeatwrap() command is specified following a *beginrepeat() command, that same value is used for the *beginrepeat2d() block. The *repeatcounter() command can be used to store the current repeat value in a counter. If no *repeatcounter() command is specified, the repeat value is not stored in any counter. All *menufield() commands that reference attributes can only reference the following types in a *beginrepeat2d() block: arrayofinteger2d or arrayofreal2d. The *beginrepeat2d() command must be accompanied by a *endrepeat2d() command.

Templates

126

Altair Engineering, Inc.

*endcardmenu()
Indicates the end of the control cards list. Syntax *endcardmenu()

*endmenu()
Indicates the ending of the description used for the card previewer. Syntax Comments *endmenu() Must be accompanied by the *beginmenu() command.

*endrepeat()
Terminates the code block to be executed by *beginrepeat(). Syntax *endrepeat()

*endrepeat2d()
Terminates the code block to be executed by *beginrepeat2d(). Syntax *endrepeat2d()

*enumeration()
Creates an enumeration. Syntax Arguments *elementareacalculation(<enum name>,<str1>,<str2>,...) <enum name> <str1>,<str2> The name of the enumeration. The members of the enumeration.

Altair Engineering, Inc.

127

Templates

*globaldefaults()
Used to specify that each real, integer, and string attribute is modified as per the *menudefaultvalue(). Syntax Comments *globaldefaults() Any default value not overridden by a *menudefaultvalue() fills the field with the number of blanks equal to the width parameter in the *menufield() command when the field has the status off. *menudefaultvalue() can still be used to specify a different default value for individual fields when needed.

*menuattributeset()
Sets the value of attribute. Syntax Arguments *menuattributeset(<attribute>,<expression>) <attribute> <expression> Comments The name of the attribute to hold the value. An expression defining the value.

*menuattributeset() can only be used for integer, real, entity, or string attributes.

*menucase()
The *menucase() command specifies a block of card image template commands that are executed when an attribute has the value matching the *menucase() command. Syntax Argument Comments *menucase(<value>) <value> Must be an integer value.

*menucase() commands must occur in consecutive, incremental order. The values 0 and 1 are the only legal values for a *menuoption() command. The values 1 to N are legal for a *menuoptionenum() command where N is the number of values in the enumeration referenced by *menuoptionenum().

Templates

128

Altair Engineering, Inc.

*menucounterset()
Sets the value of the local counter. Syntax Arguments *menucounterset(<counter>,<value>) <counter> Value from counter1 to counter20 indicating which of the 20 possible counters should be set to the <value> parameter. Value of the counter.

<value> Comments

Unlike the *counterset() command that sets a global value for the entire output section of the template, the *menucounterset() command is value only for the local scope of an entity as specified by the *beginmenu() and *endmenu() commands.

*menudefaultvalue()
Modifies an attribute field so that it has an on/off status. Syntax Argument *menudefaultvalue(<string>) <string> The text that is displayed when the status of the attribute is off.

Example

*menufield("MISC",integer,$INT_ATTRIBUTE,10) *menudefaultvalue("XXXXXXXXXX") *menufield("MISC 2",real,$REAL_ATTRIBUTE,8) *menudefaultvalue("no value")

Comments

<string> should be equal in length to the <width> in the *menufield() command. This command must follow a *menufield() command that references an integer, real, or string attribute. If multiple entities are being displayed in the card previewer and the status of any attribute on different entities conflict, the title is displayed in red and the value for this attribute is displayed as a large X. The title must be selected to make all entities have the same status for this attribute, which is off. The title for the field can be selected to change the on/off status for the attribute. If the attribute is off, the title is displayed in yellow and the string specified in the *menudefaultvalue() command is displayed. If the attribute is on, the title is displayed in cyan and an input field is displayed. When the attribute is on, you can select the input field and type in a value for this *menufield(). An attribute's status can be accessed in the output section of the template file

Altair Engineering, Inc.

129

Templates

using the @defaultstatus() command.

*menuelse()
Used to define the false block of a *menuif() statement. Syntax *menuelse()

*menuendif()
Used to define the end of an *menuif() block. Syntax *menuendif()

*menuentitytype()
Modifies an attribute field so that the selection must be an ID of an existing entity in the HyperMesh database. Syntax Argument Comments *menuentitytype(<entity>) <entity> <entity> must be a valid HyperMesh entity type. The *menuentitytype() command cannot modify a *menufield() along with a *menuenum(), a *menurestrictedvalue() , a *menulegalvalue() , or a *menudefaultvalue() command. This command follow a *menufield() command that references an entity attribute. This changes the appearance of the field in the card previewer to a collector of the specified type.

Templates

130

Altair Engineering, Inc.

*menuenum()
Modifies an attribute field so that its value is displayed as and restricted to an enumeration's values. Syntax Argument *menuenum(<enumeration>) <enumeration> The name of a previously defined enumeration. Instead of an input field, the field appears as a button. When selected, the enumeration's values is displayed in a pop-up. After selected, the position of the value in the enumeration is stored in the attribute (1 to N).

Comments

The *menuenum() command can only be used to modify integer attributes. The *menuenum() command cannot modify a *menufield() along with a *menuentitytype() , a *menurestrictedvalue() , a *menulegalvalue() , or a *menudefaultvalue() command.

*menufield()
Places a formatted value from the database into the card image. Syntax Arguments *menufield(<description>,<type>,<data name>,<width>) <description> A string that is displayed along with the value. The length of the string should not be longer than <width>. Either integer, unsigned, real, exponential, string, or hexadecimal. The name of the data to be accessed. The width of the formatted field. In the case of real, HyperMesh uses scientific notation in order to make the value displayed fit in the specified number of characters.

<type>

<data name> <width>

Altair Engineering, Inc.

131

Templates

*menuif()
Used to conditionally execute branches in the card image. Syntax Argument Comment *menuif(<expression>) <expression> A relational expression.

Requires an *menuendif() command. The expression is required to be enclosed in square brackets. The following operators are available: ==, = != <= < >= > equal not equal less than or equal less than greater than or equal greater than

If multiple entities are being displayed and an *menuif() returns conflicting results for the <expression>, the entire *menuif()/ *menuelse() / *menuendif() block is skipped.

*menuinitialvalue()
Sets the initial value of an attribute if the attribute does not currently exist on the entity. Syntax Argument *menuinitialvalue(<value>) <value> Can be an expression for real or integer attributes, or a string for string attributes

Comments

May be combined with *menulegalvalue() , *menuenum()or *menurestrictedvalue() modifiers. If the attribute already exists on the entity, its value is not changed by the command. This command must follow a *menufield() command that references an integer, real, or string attribute.

Templates

132

Altair Engineering, Inc.

*menulegalvalue()
Modifies an attribute field so that a selection must be made from a list. Syntax Argument *menulegalvalue(<string>) <string> The string that is added to the list you can select from for this *menufield(). The length of <string> in characters should be less than or equal to the <width> specified in the *menufield() command.

Example

Below is an example of the *menulegalvalue() command modifying each of tthe three attribute types: *menufield("INT FIELD",integer,$INT_ATTRIBUTE,10) *menulegalvalue(1) *menulegalvalue(2) *menulegalvalue(4) *menulegalvalue(8) *menufield("REAL FIELD",real,$REAL_ATTRIBUTE,10) *menulegalvalue(1.1) *menulegalvalue(1.2) *menulegalvalue(3.0) *menufield("STRING FIELD",string,$STRING_ATTRIBUTE,10) *menulegalvalue("String 1") *menulegalvalue("String 2") *menulegalvalue("Last String")

Comments

If the *menufield() attribute is of type integer, the <string> specified in the *menulegalvalue() command is converted to an integer and stored in the attribute. If the *menufield() attribute is of type real, the <string> specified in the *menulegalvalue() command is converted to a real number and stored in the attribute. If the *menufield() attribute is of type string, the <string> specified in the *menulegalvalue() command is copied to the attribute. The *menulegalvalue() cannot modify a *menufield() along with a *menuenum() command or a *menurestrictedvalue() command. Multiple *menulegalvalue() commands may be applied to the same *menufield() command.

Altair Engineering, Inc.

133

Templates

*menulineend()
Ends the current line in the card image. Syntax Comments *menulineend() Card images always require at least 1 *menulineend() command. The next command that displays a field displays it in column 1 on the next line.

*menuoption()
Specifies that the value of an attribute can only be 0 or 1. Syntax Argument *menuoption(<attribute>) <attribute> The name of the integer attribute that holds the value. The value stored in <attribute> is either 0 (off) or 1 (on).

Example

*menuoptionenum($Option_Attribute) *menucase(0) *menustring("Option is off") *menucase(1) *menustring("Option is on") *menuoptionend()

Comments

You must have a *menucase() for both values, 0 and 1. All of the commands between the *menucase() statement that is equal to the value stored in <attribute> and the next *menucase() or *menuoptionend() statement are executed. The attribute's value is displayed in the options (bottom) portion of the menu as a diamond toggle.

*menuoptionend()
Terminates a *menuoption() or *menuoptionenum() command. Syntax *menuoptionend()

Templates

134

Altair Engineering, Inc.

*menuoptionenum()
Specifies that the value of an attribute is defined by a previously defined *enumeration() command. Syntax Arguments *menuoptionenum(<attribute>,<enumeration>) <attribute> The name of the integer attribute that holds the value. The name of a previously defined enumeration. The value stored in <attribute> is converted to an integer based on the selection's place in the enumeration and have a value from one to N (where N is the number of items in the enumeration).

<enumeration>

Example

*enumeration(Numbers,One,Two,Three) *menuoptionenum($Numbers_Attribute,Numbers) *menucase(1) *menustring("One (1)") *menucase(2) *menustring("Two (2)") *menucase(3) *menustring("Three (3)") *menuoptionend()

Comments

For each value specified in the *enumeration() statement that <enumeration> references, you must have a *menucase() statement. All of the commands between the *menucase() statement that is equal to the value stored in <attribute> and the next *menucase() or *menuoptionend() statement are executed. The attribute's value is displayed in the options (bottom) portion of the menu as a selector. You can choose from the values in the enumeration.

Altair Engineering, Inc.

135

Templates

*menupointerset()
Sets the initial value of a pointer. Syntax Arguments *menupointerset(<pointer number>,<pointer>,<value>) <pointer number> A value from pointer1 to pointer20 indicating which of the 20 possible pointers should be set to the <value> paramater. The pointer to the data object to be accessed. Only certain data types may user pointers. These are described in the template commands where they are valid. The value of the counter.

<pointer>

<value> Example

For example, to display all the dependent node IDs on a rigid link element, the following commands could be used while in a rigid link card description: *beginrepeat(dependentnodesmax) *repeatcounter(1) *menupointerset(pointer1,dependentnodes,[counter1 - 1]) *menufield(dnod,integer,pointer1.pointervalue,8) *endrepeat()

Comments

Unlike the *pointerset() command that sets a global value for the entire output section of the template, the *menupointerset() command is value only for the local scope of an entity as specified by the *beginmenu() and *endmenu() commands

*menurestrictedvalue()
Modifies an attribute field so that it alerts you when a value is outside of a specified range. Syntax Arguments *menurestrictedvalue(<restriction>,<value>) <restriction> Must be one of the following: >, >=, <=, or <. The value that is used for comparison with value entered by you.

<value>

Example

The following is an example on how to restrict a real attribute to values > 0.0 and <= 1.0:

Templates

136

Altair Engineering, Inc.

*menufield("MISC",real,$REAL_ATTRIBUTE,10) *menurestrictedvalue(>,0.0) *menurestrictedvalue(<=,1.0) Comments *menurestrictedvalue() cannot modify a *menufield() along with a *menuenum() or a *menulegalvalue() command. This command must follow a *menufield() command that references an integer or real attribute. If you specify a value outside of the range specified by the *menurestrictedvalue() value, an error message is displayed and the value is displayed in red. Multiple *menurestrictedvalue() commands may be applied to the same *menufield() command, but if to restricted the same boundary, only the last one is used.

*menustring()
Displays a string in the card image. Syntax Argument *menustring(<string>) <string> A string of characters. If the string contains a space, an asterisk, or a comma, the string must be enclosed by double quotes.

*menuvariableset()
Sets a variable to a specific value. Syntax Arguments *menuvariableset(<variable>,<value>) <variable> A value from variable1 to variable20 indicating the parameter. The value of the variable.

<value> Example

Variables can be used to hold real or integer values. For example, to add the value of variable5 to the current value of variable1, the following command could be used: *menuvariableset(variable1,[variable1+variable5])

Comments

Unlike the *variableset() command that sets a global value for the entire output section of the template, the *menuvariableset() command is value only for the local scope of an entity as specified by the *beginmenu() and *endmenu() commands.

Altair Engineering, Inc.

137

Templates

*nomenu()
Specifies that the card image definition is in the following block. Syntax Comments *nomenu() The *nomenu() command must be the first command to follow an entity block header.

*repeatcounter()
Specifies a counter to store the current repeat value for a *beginrepeat() or *beginrepeat2d() command. Syntax Argument *repeatcounter(<counter number>) <counter number> An integer value between 1 and 20 indicating which of the 20 possible counters should be hold the current repeat value.

*repeatwrap()
Sets the right margin that no field goes beyond in a *beginrepeat() /*endrepeat() block. Syntax Argument *repeatwrap(<column>) <column> The right hand margin beyond which no field is displayed. If a field's length would place it beyond <column>, it is placed in column 1 of the next line.

Comments

If used, the *repeatwrap() command must be the first command to follow a *beginrepeat() or *beginrepeat2d() command.

Templates

138

Altair Engineering, Inc.

Potrebbero piacerti anche