FEA Boundary Conditions

From OSUPDOCS
Jump to navigation Jump to search

All FEA analyses need boundary conditions to define the problem. For example, without displacement conditions, the solution will be ambiguous with respect to rigid body translations and rotation (i.e., the stiffness matrix will be singular). To prevent this ambiguity, the model has to have enough displacement boundary conditions to limit multiple, equivalent displacement solutions to one reference state solution. This page explains how to apply displacement, load, and stress boundary conditions to nodes and element faces.

Scripted Input Files

In scripted input files, FEA boundary conditions are applied with a series of FixLine commands and FixPoint commands, each of which is available in two versions. The FixLine command can either select nodes and elements along a previously defined path or can select all nodes close to that line:

FixLine (pathid)
  (boundary conditions commands)
EndFixLine

FixLine (x1),(y1),(x2),(y2),<(tolerance)>
  (boundary condition commands)
EndFixLine

The FixPoint command can either select one define keypoint or can select the one node closest to a point:

FixPoint (keyid)
  (boundary conditions commands)
EndFixPoint

FixPoint (x3),(y3)
  (boundary condition commands)
EndFixPoint

In these commands, the arguments are:

  • (pathid) to select a previously defined path by id, which must have be used in an area.
  • (x1,y1) to (x2,y2) define (x,y) coordinates (in length units) for the points at the beginning and end of the line (or (R,Z) coordinates in axisymmetric calculations). All nodes close to that line are selected.
  • (tolerance) is an optional tolerance (in length units). When used it accepts nodes within that distance of the define line; when omitted, tolerance is set to small number bases on mesh dimensions.
  • (keyid) to select a previously defined keypoint by id, which must be part of a path that is in an area.
  • (x3,y3) define (x,y) coordinates (in length units) for a single point (or (R,Z) coordinates in axisymmetric calculations). The node closest to that point is selected.

All nodes along the selected path or along the selected line (for FixLine commands) or the single selected node (for FixPoint commands) can be assigned nodal displacement or load conditions, rotated for skewed boundary conditions, or designated for conditional output.

In addition, when using FixLine to select a defined path, all element faces along that path can be assigned stresses. You cannot, however, apply stress conditions along interior paths; they can only be assigned to paths on the boundary of the object. Also note that FixLine commands that use a line instead of a path cannot assign stresses to element faces).

XML Input Files

In XML input files, all FEA boundary conditions are applied within a <GridBC> block:

<GridBC>
  (boundary condition commands)
</GridBCs>

Within this block, most conditions are set with a series of <BCLine> commands and <BCPt> commands, each of which is available in two versions. The <BCLine> command can either select nodes and elements along a previously defined path or can select all nodes close to a line:

  <BCLine path='(pathid)'>
    (set conditions)
  </BCLine>

  <BCLine x1='(x1)' y1='(y1)' x2='(x2)' y2='(y2)' tolerance='(tolerance)'>
    (set conditions)
  </BCLine>

The <BCPt> command can either select one defined keypoint or can select the one node closest to a point:

  <BCPt keypt='(keyid)'>
    (set conditions)
  </BCPt>

  <BCPt x='(x3)' y='(y3)'>
    (set conditions)
  </BCPt>

These commands and attributes function exactly as defined above for the scripted FixLine and FixPoint commands.

An alternative to the above boundary conditions commands, XML files can alternative explicitly set boundary conditions on nodes and element faces, but this method is rarely used.

Displacement Conditions

The scripted Displacement command sets displacement conditions to all nodes selected by the command that encloses it:

Displacement (dir),<(disp)>

In XML files, nodal displacements are set with DisBC commands within the command that encloses them:

<DisBC dof='(dirnum)' disp='(disp)'/>
<DisBC dof='(dirnum)' function='(function)'/>

where

  • (dir) is x or y (or 1 or 2) to specify the direction of the applied displacement. In axisymmetric calculations use x (or 1) for R and y (or 2) for Z.
  • (dirnum) - in XML files, the displacement direction must be specified by number (1 or 2) only.
  • (disp) specifies magnitude of the displacement in length units. It can be specified by a number or by a user-defined function of nodal point position. In scripted files, a function is specified by enclosing an expression in quotes. In XML files, numeric displacements use a disp attribute while functions are specified using a function attribute. If (disp) is omitted, the default displacement is 0 (i.e., a fixed node).

Note than when you are running axisymmetric FEA, nodes at r=0 will automatically be set to zero displacement in the r directions. You therefore need not set those conditions.

See below for how to fix displacement that are not along the x or y axes.

Load Conditions

The scripted Load command applies a load to all nodes selected by the command that encloses it:

Load (dir),(load)

In XML files, nodal loads are set with LoadBC commands within the command that encloses them:

<LoadBC dof='(dirnum)' load='(load)'/>
<LoadBC dof='(dirnum)' function='(load)'/>

where

  • (dir) is x or y (or 1 or 2) to specify the direction of the applied displacement. In axisymmetric calculations use x (or 1) for R and y (or 2) for Z.
  • (dirnum) - in XML files, the displacement direction must be specified by number (1 or 2) only.
  • (load) specifies magnitude of the load in N. It can be specified by a number or by a user-defined function of nodal point position. In scripted files, a function is specified by enclosing an expression in quotes. In XML files, numeric loads use a load attribute while functions are specified using a function attribute.

To apply a load along any other direction, find the (x,y) coordinates of the load vector and then use two Load command in the x and y directions.

Stress Conditions

The scripted Stress command applies a stress to the edges of all elements along the path selected by the command that encloses it:

Stress (dir),(stress1),<(stress2)>,<(stress3)>

In XML files, element edge stresses are set with StressBC commands within the command that encloses them:

<StressBC dir='(dirnum)' stress='stress1,<(stress2)>,<(stress3)'/>

where

  • (dir) is the direction of the applied stress. It must be n or t (or 1 or 2) for normal or tangential stress. A positive tangential stress is defined as loading the element face in the counter-clockwise direction.
  • (dirnum) - in XML files, the displacement direction must be specified by number (1 or 2) only.
  • (stress1),<(stress2)>,<(stress3)> are 1 to 3 stresses (2 and 3 are optional). If one stress is given, the stress on the path will be constant. If two stresses are given, the stress will vary linearly between the two values at the endpoints of the path. If three stresses are given, the stress will vary quadratically along the path between the endpoint stresses ((stress1) and (stress3)) and the stress at the middle of the path ((stress3))

Note that stress boundary conditions can only be used within FixLine (or <BCLine> in XML files) blocks that select nodes using a previously define path.

Skewed Conditions

You can apply skewed displacement boundary conditions (or fixed displacements that are not along the x and y axis) with the Rotate command. The scripted Rotate command to rotate all nodes selected by the command that encloses it is:

Rotste (axis),(angle)

In XML files, node are rotated by a rotate command within the command that encloses them:

<rotate axis='(axis)' angle='(ange)'/>

where

  • (axis) is the rotation axis which must be z (or 3) for 2D analyses (which means rotation about θ axis if axisymmetric).
  • (ange) specifies angle of rotation (in degrees). The rotation is in the clockwise direction.

Rotate commands should be combined with Displacement commands. Rotations do not affect stress or load boundary conditions. To apply a load in a skewed direction, find the (x,y) coodinates of the skewed load vector and then apply the full vector in two Load commands in the x and y directions.

Each node can only be rotated once. If you rotate nodes on two intersecting lines or paths, the code will take care to rotate the intersecting node only once.

Selecting Nodes

The main header has an option for selecting FEA nodes for conditional output. When the nodes to be selected also have boundary conditions, a good way to select those nodes is to use boundary condition blocks. In script files, a command:

Select

with no arguments will select all nodes defined by the FixLine or FixPoint command that encloses it.

In XML files, you can select all nodes defined by the command that encloses it by adding an optional select='1' attribute to the enclosing command:

<BCLine path='(pathid)' select='1'>
<BCLine x1='(x1)' y1='(y1)' x2='(x2)' y2='(y2)' tolerance='(tolerance)' select='1'>
<BCPt keypt='(keyid)' select='1'>
<BCPt x='(x3)' y='(y3)' select='1'>

Periodic Boundary Conditions

NairnFEA can also apply apply truly periodic boundary conditions as explained here.

Explicit XML Boundary Conditions

An alternate way to assign FEA boundary conditions (which can only be done in XML files is to to explicit list each one. This method is rarely used because the generate conditions desribed above are much more flexible. If needed (e.g., when creating an XML file in custom software), the basic format is

<GridBCs>
   <DisplacementBCs>
     <fix node='24' dof='2'>0</fix>
     <rotate node='5' axis='3'>45</rotate>
   </DisplacementBCs>
   
   <LoadBCs>
     <load node='5' dof='1'>45</load>
   </LoadBCs>
   
   <EdgeBCs>
     <stress elem='3' face='1' dir='1'>0,100</load>
   </EdgeBCs>
</GridBCs>

In this black, nodal displacements are in <DisplacementBCs> blocks, nodal loads are in <LoadBCs> blocks, and stresses on element faces are in <EdgeBCs> blocks. which are defined as follows:

<DisplacementBCs>
This command can set fixed displacement boundary conditions on nodes. Subordinate to the command can be any number of <fix> and <rotate> commands. The <fix> commands specify a node (by number) and the direction that is fixed with dof of x (or 1) for x direction or y (or 2) for y direction (or R and Z directions if axisymmetric). The value of the <fix> tag is the fixed displacement in length units.
    The <rotate> tag can be used to apply skewed displacement boundary conditions that are in some direction that is not along the x or y axis. The method is to rotate the node first using a <rotate> command where the node attribute gives the node to rotate and the axis attribute is the axis of rotation, which must be 3 or z for 2D calculations or for rotation about the z axis. The value of the <rotate> tag is the angle to rotate in the clockwise direction in degress. Alternatively, the angle can be set using an angle attribute. Any rotated node can only be rotated once. After rotating a node, you can apply displacement (or load) boundary conditions in the rotated coordinate system.
<LoadBCs>
This command is used to apply loads directly to nodes. Subordinate to the command can be any number of <load> commands. The <load> commands specify a node (by number) and the direction of the load with dof of x (or 1) for x direction or y (or 2) for y direction (or R and Z directions if axisymmetric). The value of the <load> tag is the applied load in N. You can apply skewed loads, or loads not in the x or y direction, by finding the (x,y) coordinates of the load vector and applying two loads to the same node.
<EdgeBCs>
This command is used to apply stress to edges of elements. Subordinate to the command can be <stress> commands. Each <stress> command specifies an element (using elem), a face of the element, and a direction (using dir with setting 1 or n for normal stress or 2 or t for tangential or shear stress). The value of the <stress> tag should be 1 to 3 stresses (in pressure units), separated by commas, to allow applying constant or variable stress. If three stresses are given, the entered values correspond to the applied stress at the endpoints and in the pressure units of the face and stresses vary quadratically through these three points. If only two stresses are given, the stress will vary linearly between the endpoints of the face. If only one stress is given, the stress will be constant. The element faces are numbered around the element in the counter-clockwise direction starting with 1.