|
|
(55 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| The best way to generate an FEA mesh is to use [[Keypoint]], [[Path]], and [[Area]] commands and possible combine them with image files or shape commands . | | The best way to generate an FEA mesh is to use [[Keypoint Command|Keypoint]], [[Path Command|Path]], and [[Area Command|Area]] commands. |
| | | __TOC__ |
| == Scripted Input Files == | | == Scripted Input Files == |
|
| |
|
| In scripted input files, you build the mesh by using multiple [[Mesh Generation Commands]]. These commands are usually grouped together, but may be at various locations in the input file. The commands are: | | In scripted input files, you build the mesh by using multiple [[#mesh_cmds|mesh generation commands]]. These commands are usually grouped together, but may be at various locations in the input file. For example, a simple 2D, rectangular mesh of width <tt>#length</tt>, height <tt>#height</tt>, and thickness <tt>#thick</tt> with <tt>#horiz</tt> elements in the horizontal direction and <tt>#vert</tt> elements in the vertical direction (where terms beginning in number signs are [[Variable Names|script variables]]) can be created with: |
|
| |
|
| * [[Keypoint Command|Keypoint]]: Define a keypoint used in defining [[Path Command|paths]]
| | Area #matname$,#thick |
| * [[Keypoints Command|Keypoints]]: Add multiple defined keypoints to a [[Path Command|path]].
| | Path "Bottom",#horiz |
| * [[Path Command|Path]]: Define a path used in defining [[Area Command|areas]].
| | Keypoint "BotLeft",0,0 |
| * [[Paths Command|Paths]]: Add multiple defined paths to an [[Area Command|area]].
| | Keypoint "BotRight",#length,0 |
| * [[Area Command|Area]]: Define an area for mesh generation.
| | EndPath |
| | Path "Right",#vert |
| | Keypoints "BotRight" |
| | Keypoint "TopRight",#length,#height |
| | EndPath |
| | Path "Top",#horiz |
| | Keypoints "TopRight" |
| | Keypoint "TopLeft",0,#height |
| | EndPath |
| | Path "Left",#vert |
| | Keypoints "TopLeft","BotRight" |
| | EndPath |
| | EndArea |
| | Resequence "BotRight" |
|
| |
|
| * <a href="Origin.html">Origin</a>: Define coordinate system origin for entry of <a href="keypoint.html">Keypoints</a> using polar coordinates.
| | <span id="mesh_cmds"></span>The following commands are used for generating the mesh in scripted files. |
| * <a href="element.html">Element</a>: Define type of element to use in the mesh.
| |
| * <a href="fliptriangles.html">FlipTriangles</a>: Select the direction of triangular elements in meshes that use those elements.
| |
| * <a href="resequence.html">Resequence</a>: To turn on the option to resequence the nodes, which will minimize the bandwidth of the problem and speed the calculations.
| |
|
| |
|
| * <a href="bmpregion.html">BMPRegion</a> ... <a href="endregion.html">EndRegion</a>: Generate elements from an image in a BMP file. | | * [[Area Command|Area]]: Define an area for mesh generation. |
| * <a href="hole.html">Hole</a> ... <a href="endhole.html">EndHole</a>: Remove elements using a series of shape commands. | | * [[Path Command|Path]]: Define a path used in defining [[Area Command|areas]]. |
| * <a href="oval.html">Oval</a>: Define oval to set element material type. | | * [[Path Command|Paths]]: Add multiple defined paths to an [[Area Command|area]]. |
| * <a href="polypt.html">PolyPt</a>: Define polygon to set element material type | | * [[Keypoint Command|Keypoint]]: Define a keypoint used in defining [[Path Command|paths]] |
| * <a href="rect.html">Rect</a>: Define rectangle to set element material type. | | * [[Keypoint Command|Keypoints]]: Add multiple defined keypoints to a [[Path Command|path]]. |
| * <a href="region.html">Region</a> ... <a href="endregion.html">EndRegion</a>: Generate elements for a series of shape commands. | | * [[Resequence Command]]: To turn on the option to resequence the nodes, which will minimize the bandwidth of the problem and speed the calculations. |
|
| |
|
| == XML Input Files == | | == XML Input Files == |
|
| |
|
| In <tt>XML</tt> input files, all [[Mesh Generation Commands]] must be within a single Mesh block: | | In <tt>XML</tt> input files, you build the mesh with [[#mesh_cmds_xml|mesh generation commands]] that must be within a single <tt><Mesh></tt> block. Here is a <tt><Mesh></tt> block that creates at 50X10 rectangular mesh with 6 elements in the horizontal direction and 3 in the vertical direction: |
|
| |
|
| <pre> | | <pre> |
| <Mesh> | | <Mesh> |
| <<a href="#Keypoints"><code>Keypoints</code></a>> | | <Keypoints> |
| <pt x='0' y='0' id='lowerleft'/> | | <pt x='0' y='0' id='lowerleft'/> |
| <pt x='0' y='10' id='upperleft'/> | | <pt x='0' y='10' id='upperleft'/> |
Line 36: |
Line 46: |
| </Keypoints> | | </Keypoints> |
|
| |
|
| <<a href="#Paths"><code>Path</code></a> id="bottom" intervals='6' ratio='1'> | | <Path id="bottom" intervals='6' ratio='1'> |
| <keypt id='lowerleft'/> | | <keypt id='lowerleft'/> |
| <keypt id='lowerright'/> | | <keypt id='lowerright'/> |
Line 53: |
Line 63: |
| </Path> | | </Path> |
|
| |
|
| <<a href="#Areas"><code>Area</code></a> mat="1" thick="10" type="4" flip="0" angle="0"> | | <Area mat="1" thick="10" type="4" flip="0" angle="0"> |
| <path id="bottom"/> | | <path id="bottom"/> |
| <path id="right"/> | | <path id="right"/> |
Line 60: |
Line 70: |
| </Area> | | </Area> |
| </Mesh> | | </Mesh> |
|
| |
| <!-- image and shape methods to set element properties -->
| |
|
| |
| <BMP name="MatImage.bmp" width="50" angles="MatAngles.bmp">
| |
| <Origin x="0" y="0"/>
| |
| <Intensity mat="2" imin="76" imax="255">
| |
| <Thickness units="mm">1</Thickness>
| |
| </Intensity>
| |
| <Intensity mat="3" imin="1" imax="75">
| |
| <Thickness units="mm">1</Thickness>
| |
| </Intensity>
| |
| <Intensity imin="0" imax="255" minAngle="0.000000" maxAngle="90.000000"/>
| |
| </BMP>
| |
|
| |
| <Body mat='1' angle='0' thick='1'>
| |
| <Oval units='mm' xmin='10' xmax='40' ymin='10' ymax='40'/>
| |
| <Rect units='mm' xmin='10' xmax='40' ymin='10' ymax='40'/>
| |
| </Body>
| |
|
| |
| <Hole>
| |
| <Rect xmin='20' xmax='30' ymin='20' ymax='30'/>
| |
| </Hole>
| |
| </pre> | | </pre> |
|
| |
|
| ==== Keypoints ====
| | <span id="mesh_cmds_xml"></span>The fundamental <tt>XML</tt> commands for generating a mesh are: |
| | |
| The <tt><Keypoints></tt> section must come first. It can define any number of key points. Each subordinate <tt><pt></tt> command defines a key point, provides its <tt>x</tt> and <tt>y</tt> coordinates and gives it an <tt>id</tt>. The <tt>id</tt>'s can be text or numbers and must all be unique among key points.
| |
| | |
| ==== Paths ====
| |
| | |
| Following the <tt><Keypoints></tt>, there are a series of <tt><Path></tt> commands that link the key points into lines or arcs and define mesh information along those paths. Subordinate to each <tt><Path></tt> command are a series of <tt><keypt></tt> commands that list the key points that define the path. Use two key points to define a line or three key points to define an arc. Currently the path can only have two or three key points. The key points are selected by their <tt>id</tt>. The attributes for a <tt><Path></tt> command are:
| |
| | |
| *<tt>id</tt>: An <tt>id</tt> for the path. The <tt>id</tt>'s can be text or numbers and must be unique among all paths.
| |
| *<tt>intervals</tt>: Number of elements along this path when it is meshed into an area.
| |
| * <tt>ratio</tt>: Ratio of the size of the first element along the path to the last one. If <tt>ratio<0</tt>, then the absolute size of the first element on the path with be <tt>|ratio|</tt>. The default is 1.0 which gives equally sized elements.
| |
| | |
| ==== Areas ====
| |
| | |
| Finally, the FEA mesh is created by a series of <tt><Area></tt> commands. An <tt><Area></tt> command links a series of paths into a region to be meshed. Subordinate to each <tt><Area></tt> command are a series of <tt><path></tt> commands that list the paths that define the area. Currently [[NairnFEA]] only supports areas with four paths, to mesh quadrilateral areas, or areas with two paths, to mesh interfaces.
| |
| | |
| For quadrilateral areas, the end of the last path must connect to the start of the first path. The direction of each path does not matter as they will be rearranged if needed to define the area; but the paths must circumnavigate the area in the counter-clockwise direction. If <tt>n<sub>1</sub></tt>, <tt>n<sub>2</sub></tt>, <tt>n<sub>3</sub></tt>, and <tt>n<sub>4</sub></tt> are the number of nodes along each of the four paths, the meshing algorithm requires that <tt>n<sub>1</sub>+n<sub>2</sub>=n<sub>3</sub>+n<sub>4</sub></tt>.
| |
| | |
| For interface meshing, the two paths must be different, but indentical paths. In other words, they must connect different keypoints, but the coordinates of the keypoints, the number of intervals along the path, and the path ratios must be identical. The order and orientation of the two paths in the area command does not matter. Finally, interfaces only function when they connect two areas. To insure this connection, the paths for an interface must have each been previously used in exactly one quadrilateral area.
| |
| | |
| The attributes for a <tt><Area></tt> command are:
| |
| | |
| * <tt>mat</tt>: Material number in the list of [[Material Command Block#XML Input Commands|defined materials]] when referring to material [[Material Command Block#Referencing Materials in XML Files|"By Number"]]. If you are using the optional [[BMP, Region, and Hole Commands|BMP, Body, and Hole commands method to set element properties, the <tt>mat</tt> should be 0 for elements that will be set later by other commands.
| |
| * <tt>matname</tt>: Alternatively, materials can be specified [[Material Command Block#Referencing Materials in XML Files|"By Name"]].
| |
| * <tt>angle</tt>: Optional material angle relevant to [[FEA Material Models|anisotropic materials]]. It can be entered as a number or as a [[user-defined function]]. A function is evaluated at the midpoint of an element. Triangular elements are created in pairs and the function is evaluated at the midpoint of each pair.
| |
| * <tt>thick</tt>: Thickness in mm for plane stress or plain strain analysis; not needed for axisymmetric analysis.
| |
| * <tt>type</tt>: The type of [[FEA Elements|element to create by number]. The first <tt><Area></tt> command must define an element type. Subsequent <tt><Area></tt> commands can omit the element type unless the element type is changed to have an analysis with mixed elements. When mixed elements are used, they must be compatible elements (<i>i.e.</i>, you can mix linear elements (types 1, 2, and 5) with each other or quadratic elements (types 3, 4, 6, and 8) with each other, but cannot mix linear elements with quadratic elements). Whenever a <tt>type</tt> attribute is used, it will apply to that area and all subsequent areas until it is changed. Finally, quadrilateral areas can only use solid elements (types 1, 2, 3, 4, and 8) and interface areas can use only interface elements (type 5 and 6).
| |
| * <tt>flip</tt>: For triangular elements, the initially created quadrilaterials are split into two elements by drawing a diagonal across the quadrilaterial. The <tt>flip</tt> option can change which diagonal is used. It should be 0 or 1. Once it is set, it will apply to that area and all subsequent areas until it is changed.
| |
| | |
| ==== BMP, Region, and Hole Commands ====
| |
| | |
| A powerful way to mesh complicated structures or composite materials with complicated morphologies is to do most of the work in <tt><BMP></tt> commands or using shapes in <tt><Body></tt> or <tt><Hole></tt> commands. The process is:
| |
| | |
| # Create a standard mesh as described above. For sections of the mesh that will be set from a <tt>BMP</tt> file or from shapes, set the material attribute to 0.
| |
| # One the <tt><Mesh></t> section is done, use one or more interspersed <tt><BMP></tt>, <tt><Body></tt>, or <tt><Hole></tt> commands. They will map elements they cover currently with material 0 to the the material defined by the image or the region settings. The grid can be regular or irregular. The material will be selected from the image information at the centroid of the element; for shapes it will be set if the centroid of the element is in the shape. To resolve complicated structures, the grid has to be fine enough to resolve object details.
| |
| # When the mesh is done, any elements initialized to material 0 but not assigned to a material by <tt><BMP></tt>, <tt><Body></tt>, or <tt><Hole></tt> commands will automatically be removed from the mesh. This feature allows calculations on materials with voids or irregular edges without needing to use <tt><Area></tt></a> commands to construct all details of the shape. If these removals cause the mesh to be partitioned into disconnected sections, however, the FEA analysis will fail. A good way to verify connectivity is to attempt to [[resequence the nodes]]
| |
| | |
| The image and shape commands are:
| |
| | |
| <dl>
| |
| | |
| <dt><a name="body"></a><code><BMP></code></dt>
| |
| <dd>The details on the <code><BMP></code> command and the meaning of its attributes and subordinate commands are given <a href="definempm.html#BMPShape">here</a> (in the MPM documentation).</dd>
| |
|
| |
|
| <dt><a name="body"></a><code><Body></code></dt> | | * [[Keypoint Command#XML Keypoints Block|<tt><Keypoints></tt>]]: Define all key point to be used in defining [[Path Command|paths]] |
| <dd>Defines a block of material. All material points in the block will be assigned the same material
| | * [[Path Command#XML Path Command|<tt><Path></tt>]]: Define a path to be used in defining [[Area Command#XML Area Block|areas]]. |
| number (<code>mat</code>, see <a href="definematl.html">Defining Materials</a>;
| | * [[Area Command#XML Area Block|<tt><Area></tt>]]: Define an area for mesh generation. |
| numbers can be replaced by names using a <code>matname</code> attribute
| | * [[Resequence Command]]: To turn on the option to resequence the nodes, which will minimize the bandwidth of the problem and speed the calculations. |
| as explained <a href="definematl.html#usemats">here</a>), material angle
| |
| (<code>angle</code> in degrees which is used for some <a href="definematl.html">anisotropic
| |
| materials</a>; t can be entered as a number or as a <a href="function.html">user-defined function</a>), and thickness (<code>thick</code> in mm)
| |
| A single <code><Body></code> for 2D FEA can contain any number of the <a href="definempm.html#2DShapes">2D shape commands</a>. The shapes can overlap; if they do the element material will be for the first shape command that intersects that elements centroid.
| |
| If not specified angle will be zero and the thickness will be 1 mm.</dd>
| |
|
| |
|
| <dt><code><Hole></code></dt>
| | == Using Images and Shapes == |
| <dd>Defines empty space within a body. A single <code><Hole></code> group for 2D FEA can contain any number of the <a href="definempm.html#2DShapes">2D shape commands</a>. Any subsequent <code><BMP></code> or <code><Body></code> structures that overlap the hole will not assign those elements.</dd>
| |
|
| |
|
| </dl> | | If some elements in the generated mesh are set the material id _NONE_ (see [[Area Command]]) or mat = 0 (see [[Area Command#XML Area Block|<tt><Area></tt> Command]]), you can follow mesh creation with [[Create a Mesh with Images and Shapes|image and shape commands]] to fill in material types, angles, and define the final mesh geometry. This option is described [[Create a Mesh with Images and Shapes|here]]. |
The best way to generate an FEA mesh is to use Keypoint, Path, and Area commands.
Scripted Input Files
In scripted input files, you build the mesh by using multiple mesh generation commands. These commands are usually grouped together, but may be at various locations in the input file. For example, a simple 2D, rectangular mesh of width #length, height #height, and thickness #thick with #horiz elements in the horizontal direction and #vert elements in the vertical direction (where terms beginning in number signs are script variables) can be created with:
Area #matname$,#thick
Path "Bottom",#horiz
Keypoint "BotLeft",0,0
Keypoint "BotRight",#length,0
EndPath
Path "Right",#vert
Keypoints "BotRight"
Keypoint "TopRight",#length,#height
EndPath
Path "Top",#horiz
Keypoints "TopRight"
Keypoint "TopLeft",0,#height
EndPath
Path "Left",#vert
Keypoints "TopLeft","BotRight"
EndPath
EndArea
Resequence "BotRight"
The following commands are used for generating the mesh in scripted files.
- Area: Define an area for mesh generation.
- Path: Define a path used in defining areas.
- Paths: Add multiple defined paths to an area.
- Keypoint: Define a keypoint used in defining paths
- Keypoints: Add multiple defined keypoints to a path.
- Resequence Command: To turn on the option to resequence the nodes, which will minimize the bandwidth of the problem and speed the calculations.
XML Input Files
In XML input files, you build the mesh with mesh generation commands that must be within a single <Mesh> block. Here is a <Mesh> block that creates at 50X10 rectangular mesh with 6 elements in the horizontal direction and 3 in the vertical direction:
<Mesh>
<Keypoints>
<pt x='0' y='0' id='lowerleft'/>
<pt x='0' y='10' id='upperleft'/>
<pt x='50' y='0' id='lowerright'/>
<pt x='50' y='10' id='upperright'/>
</Keypoints>
<Path id="bottom" intervals='6' ratio='1'>
<keypt id='lowerleft'/>
<keypt id='lowerright'/>
</Path>
<Path id="right" intervals='3'>
<keypt id='lowerright'/>
<keypt id='upperright'/>
</Path>
<Path id="top" intervals='6'>
<keypt id='upperright'/>
<keypt id='upperleft'/>
</Path>
<Path id="left" intervals='3'>
<keypt id='upperleft'/>
<keypt id='lowerleft'/>
</Path>
<Area mat="1" thick="10" type="4" flip="0" angle="0">
<path id="bottom"/>
<path id="right"/>
<path id="top"/>
<path id="left"/>
</Area>
</Mesh>
The fundamental XML commands for generating a mesh are:
- <Keypoints>: Define all key point to be used in defining paths
- <Path>: Define a path to be used in defining areas.
- <Area>: Define an area for mesh generation.
- Resequence Command: To turn on the option to resequence the nodes, which will minimize the bandwidth of the problem and speed the calculations.
Using Images and Shapes
If some elements in the generated mesh are set the material id _NONE_ (see Area Command) or mat = 0 (see <Area> Command), you can follow mesh creation with image and shape commands to fill in material types, angles, and define the final mesh geometry. This option is described here.