Difference between revisions of "FEA Boundary Conditions"

From OSUPDOCS
Jump to navigation Jump to search
 
(36 intermediate revisions by the same user not shown)
Line 1: Line 1:
Nodal and element face boundary conditions in FEA analyses are applied to nodes or elements by using the commands on this page.
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 ==
== Scripted Input Files ==
Line 28: Line 28:


* <tt>(pathid)</tt> to select a previously defined [[Path Command|path]] by <tt>id</tt>, which must have be used in an [[Area Command|area]].
* <tt>(pathid)</tt> to select a previously defined [[Path Command|path]] by <tt>id</tt>, which must have be used in an [[Area Command|area]].
* (<tt>x1,y1</tt>) to (<tt>x2,y2</tt>) define (<tt>x,y</tt>) coordinates (in mm) for the points at the beginning and end of the line (or (<tt>R,Z</tt>) coordinates in axisymmetric calculations). All nodes close to that line are selected.
* (<tt>x1,y1</tt>) to (<tt>x2,y2</tt>) define (<tt>x,y</tt>) coordinates (in [[ConsistentUnits Command#Legacy and Consistent Units|length units]]) for the points at the beginning and end of the line (or (<tt>R,Z</tt>) coordinates in axisymmetric calculations). All nodes close to that line are selected.
* <tt>(tolerance)</tt> is an optional tolerance (in mm). When used it accepts nodes within that distance of the define line; when omitted, tolerance is set to small number bases on mesh dimensions.
* <tt>(tolerance)</tt> is an optional tolerance (in [[ConsistentUnits Command#Legacy and Consistent Units|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.
* <tt>(keyid)</tt> to select a previously defined [[Keypoint Command|keypoint]] by <tt>id</tt>, which must be part of a [[Path Command|path]] that is in an [[Area Command|area]].
* <tt>(keyid)</tt> to select a previously defined [[Keypoint Command|keypoint]] by <tt>id</tt>, which must be part of a [[Path Command|path]] that is in an [[Area Command|area]].
* (<tt>x3,y3</tt>) define (<tt>x,y</tt>) coordinates (in mm) for a single point (or (<tt>R,Z</tt>) coordinates in axisymmetric calculations). The node closest to that point is selected.
* (<tt>x3,y3</tt>) define (<tt>x,y</tt>) coordinates (in [[ConsistentUnits Command#Legacy and Consistent Units|length units]]) for a single point (or (<tt>R,Z</tt>) coordinates in axisymmetric calculations). The node closest to that point is selected.


All nodes along the selected path or along the selected line (for <tt>FixLine</tt> commands) or the single selected node (for <tt>FixPoint</tt> commands) can be assigned nodal [[#Displacement Conditions|displacement]] or [[#Load Conditions|load]] conditions, rotated for [[#Skewed Conditions|skewed boundary conditions]], or [[#Selecting Nodes|designated]] for conditional output.
All nodes along the selected path or along the selected line (for <tt>FixLine</tt> commands) or the single selected node (for <tt>FixPoint</tt> commands) can be assigned nodal [[#Displacement Conditions|displacement]] or [[#Load Conditions|load]] conditions, rotated for [[#Skewed Conditions|skewed boundary conditions]], or [[#Selecting Nodes|designated]] for conditional output.
Line 67: Line 67:
</pre>
</pre>
    
    
These commands and attributes function exactly as defined [[#args|above]] for the scripted <tt>FixLine</tt> and <tt><tt>FixPoint</tt> commands.
These commands and attributes function exactly as defined [[#args|above]] for the scripted <tt>FixLine</tt> and <tt>FixPoint</tt> commands.


An alternative to the above boundary conditions commands, <tt>XML</tt> files can alternative [[#Explicit XML Boundary Conditions|explicitly set boundary conditions]] on nodes and element faces, but this method is rarely used.
An alternative to the above boundary conditions commands, <tt>XML</tt> files can alternative [[#Explicit XML Boundary Conditions|explicitly set boundary conditions]] on nodes and element faces, but this method is rarely used.
Line 86: Line 86:
* <tt>(dir)</tt> is <tt>x</tt> or <tt>y</tt> (or 1 or 2) to specify the direction of the applied displacement. In axisymmetric calculations use <tt>x</tt> (or 1) for <tt>R</tt> and <tt>y</tt> (or 2) for <tt>Z</tt>.
* <tt>(dir)</tt> is <tt>x</tt> or <tt>y</tt> (or 1 or 2) to specify the direction of the applied displacement. In axisymmetric calculations use <tt>x</tt> (or 1) for <tt>R</tt> and <tt>y</tt> (or 2) for <tt>Z</tt>.
* <tt>(dirnum)</tt> - in <tt>XML</tt> files, the displacement direction must be specified by number (1 or 2) only.
* <tt>(dirnum)</tt> - in <tt>XML</tt> files, the displacement direction must be specified by number (1 or 2) only.
* <tt>(disp)</tt> specifies magnitude of the displacement in mm. It can be specified by a number or by a [[User Defined Functions|user-defined function]] of nodal point position. In scripted files, a [[User Defined Functions|function]] is specified by enclosing an expression in quotes. In <tt>XML</tt> files, numeric displacements use a <tt>disk</tt> attribute while [[User Defined Functions|functions]] are specified using a <tt>function</tt> attribute. If <tt>(disp)</tt> is omitted, the default displacement is 0 (<i>i.e.</i>, a fixed node).
* <tt>(disp)</tt> specifies magnitude of the displacement in [[ConsistentUnits Command#Legacy and Consistent Units|length units]]. It can be specified by a number or by a [[User Defined Functions|user-defined function]] of nodal point position. In scripted files, a [[User Defined Functions|function]] is specified by enclosing an expression in quotes. In <tt>XML</tt> files, numeric displacements use a <tt>disp</tt> attribute while [[User Defined Functions|functions]] are specified using a <tt>function</tt> attribute. If <tt>(disp)</tt> is omitted, the default displacement is 0 (<i>i.e.</i>, 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 [[#Skewed Conditions|below]] for how to fix displacement that are not along the <tt>x</tt> or <tt>y</tt> axes.
See [[#Skewed Conditions|below]] for how to fix displacement that are not along the <tt>x</tt> or <tt>y</tt> axes.
Line 96: Line 98:
  Load (dir),(load)
  Load (dir),(load)


In <tt>XML</tt> files, nodal displacements are set with <tt>LoadBC</tt> commands within the [[#XML Input Files|command that encloses them]]:
In <tt>XML</tt> files, nodal loads are set with <tt>LoadBC</tt> commands within the [[#XML Input Files|command that encloses them]]:


  <LoadBC dof='(dirnum)' load='(load)'/>
  <LoadBC dof='(dirnum)' load='(load)'/>
Line 105: Line 107:
* <tt>(dir)</tt> is <tt>x</tt> or <tt>y</tt> (or 1 or 2) to specify the direction of the applied displacement. In axisymmetric calculations use <tt>x</tt> (or 1) for <tt>R</tt> and <tt>y</tt> (or 2) for <tt>Z</tt>.
* <tt>(dir)</tt> is <tt>x</tt> or <tt>y</tt> (or 1 or 2) to specify the direction of the applied displacement. In axisymmetric calculations use <tt>x</tt> (or 1) for <tt>R</tt> and <tt>y</tt> (or 2) for <tt>Z</tt>.
* <tt>(dirnum)</tt> - in <tt>XML</tt> files, the displacement direction must be specified by number (1 or 2) only.
* <tt>(dirnum)</tt> - in <tt>XML</tt> files, the displacement direction must be specified by number (1 or 2) only.
* <tt>(load)</tt> specifies magnitude of the displacement in mm. It can be specified by a number or by a [[User Defined Functions|user-defined function]] of nodal point position. In scripted files, a [[User Defined Functions|function]] is specified by enclosing an expression in quotes. In <tt>XML</tt> files, numeric loads use a <tt>load</tt> attribute while [[User Defined Functions|functions]] are specified using a <tt>function</tt> attribute.
* <tt>(load)</tt> specifies magnitude of the load in N. It can be specified by a number or by a [[User Defined Functions|user-defined function]] of nodal point position. In scripted files, a [[User Defined Functions|function]] is specified by enclosing an expression in quotes. In <tt>XML</tt> files, numeric loads use a <tt>load</tt> attribute while [[User Defined Functions|functions]] are specified using a <tt>function</tt> attribute.


See [[#Skewed Conditions|below]] for how to apply that are not along the <tt>x</tt> or <tt>y</tt> axes.
To apply a load along any other direction, find the (x,y) coordinates of the load vector and then use two <tt>Load</tt> command in the x and y directions.


== Stress Conditions ==
== Stress Conditions ==


The scripted <tt>Stress</tt> command applies a load to all nodes along the [[Path Command|path]] selected by the [[#Scripted Input Files|command that encloses it]]:
The scripted <tt>Stress</tt> command applies a stress to the edges of all elements along the [[Path Command|path]] selected by the [[#Scripted Input Files|command that encloses it]]:
  Stress (dir),(stress1),<(stress2)>,<(stress3)>
  Stress (dir),(stress1),<(stress2)>,<(stress3)>


In <tt>XML</tt> files, nodal displacements are set with <tt>StressBC</tt> commands within the [[#XML Input Files|command that encloses them]]:
In <tt>XML</tt> files, element edge stresses are set with <tt>StressBC</tt> commands within the [[#XML Input Files|command that encloses them]]:


  <StressBC dir='(dirnum)' stress='stress1,<(stress2)>,<(stress3)'/>
  <StressBC dir='(dirnum)' stress='stress1,<(stress2)>,<(stress3)'/>
Line 129: Line 131:
== Skewed Conditions ==
== Skewed Conditions ==


Tasks:
You can apply skewed displacement boundary conditions (or fixed displacements that are not along the x and y axis) with the <tt>Rotate</tt> command. The scripted <tt>Rotate</tt> command to rotate all nodes selected by the [[#Scripted Input Files|command that encloses it]] is:
Rotste (axis),(angle)


# This section
In <tt>XML</tt> files, node are rotated by a <tt>rotate</tt> command within the [[#XML Input Files|command that encloses them]]:
# Select section
# Periodic Page
# Crack tip
# Mention resquence


Clear on Google Drive
<rotate axis='(axis)' angle='(ange)'/>
where


Note that crack tip, periodic, and resequence need an order in XML files.
* <tt>(axis)</tt> is the rotation axis which must be <tt>z</tt> (or 3) for 2D analyses (which means rotation about &theta; axis if axisymmetric).
* <tt>(ange)</tt> specifies angle of rotation (in degrees). The rotation is in the clockwise direction.


Maybe some kind of FEA DTD file with links
<tt>Rotate</tt> commands should be combined with [[#Displacement Conditions|<tt>Displacement</tt> commands]]. Rotations do not affect [[#Stress Conditions|stress]] or [[#Load Conditions|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 Conditions|<tt>Load</tt> commands]] in the x and y directions.


programming needs to support Entity command (used in any FEA commands?).
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 ==
== Selecting Nodes ==


The main header has an option for [[Controlling FEA Output|selecting FEA nodes]] for conditional output. The best way to select such nodes is to use the boundary condition blocks. In script files, a command:
The main header has an option for [[Controlling FEA Output|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
  Select


with no arguments will select all nodes defined by the [[#Scripted Input Files|command that encloses it]].
with no arguments will select all nodes defined by the [[#Scripted Input Files|<tt>FixLine</tt> or <tt>FixPoint</tt> command that encloses it]].
 
In <tt>XML</tt> files, you can select all nodes defined by the [[#XML Input Files|command that encloses it]] by adding an optional <tt>select='1'</tt> 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'>


In <tt>XML</tt> files, you can select all nodes defined by the [[#XML Input Files|command that encloses it]] by adding <tt>select</tt> attribute to the enclosing command:
== Periodic Boundary Conditions ==
 
[[NairnFEA]] can also apply apply truly periodic boundary conditions as explained [[FEA Periodic Boundaries|here]].


== Explicit XML Boundary Conditions ==
== Explicit XML Boundary Conditions ==
Line 167: Line 179:
   <LoadBCs>
   <LoadBCs>
     <load node='5' dof='1'>45</load>
     <load node='5' dof='1'>45</load>
    <rotate node='5' axis='3'>45</rotate>
   </LoadBCs>
   </LoadBCs>
    
    
Line 181: Line 192:


<dt><span id="exDBCs"></span><DisplacementBCs>
<dt><span id="exDBCs"></span><DisplacementBCs>
<dd>This command can set fixed displacement boundary conditions on nodes. Subordinate to the command can be any number of <tt>&lt;fix&gt;</tt> and <tt>&lt;rotate&gt;</tt> commands. The <tt>&lt;fix&gt;</tt> commands specify a <tt>node</tt> (by number) and the direction that is fixed with <tt>dof</tt> of 1 for x direction or 2 or y for y direction (or R and Z directions if axisymmetric). The value of the <tt>&lt;fix&gt;</tt> tag is the fixed displacement in mm.<br>
<dd>This command can set fixed displacement boundary conditions on nodes. Subordinate to the command can be any number of <tt>&lt;fix&gt;</tt> and <tt>&lt;rotate&gt;</tt> commands. The <tt>&lt;fix&gt;</tt> commands specify a <tt>node</tt> (by number) and the direction that is fixed with <tt>dof</tt> 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 <tt>&lt;fix&gt;</tt> tag is the fixed displacement in [[ConsistentUnits Command#Legacy and Consistent Units|length units]].<br>
&nbsp;&nbsp;&nbsp;&nbsp;The <tt>&lt;rotate&gt;</tt> tag can be used to apply skewed displacement (or load) 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 <tt>&lt;rotate&gt;</tt> command where the <tt>node</tt> attribute gives the node to rotate and the <tt>axis</tt> 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 <tt>&lt;rotate&gt;</tt> tag is the angle to rotate in the clockwise direction in degress. Alternatively, the angle can be set using an <tt>angle</tt> 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.<br>
&nbsp;&nbsp;&nbsp;&nbsp;The <tt>&lt;rotate&gt;</tt> 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 <tt>&lt;rotate&gt;</tt> command where the <tt>node</tt> attribute gives the node to rotate and the <tt>axis</tt> 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 <tt>&lt;rotate&gt;</tt> tag is the angle to rotate in the clockwise direction in degress. Alternatively, the angle can be set using an <tt>angle</tt> 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.<br>


<dt><span id="exLBCs"></span><LoadBCs>
<dt><span id="exLBCs"></span><LoadBCs>
<dd>This command is used to apply loads directly to nodes. Subordinate to the command can be any number of <tt>&lt;load&gt;</tt> and <tt>&lt;rotate&gt;</tt> commands. The <tt>&lt;load&gt;</tt> commands specify a <tt>node</tt> (by number) and the direction of the load with <tt>dof</tt> of 1 for x direction or 2 or y for y direction (or R and Z directions if axisymmetric). The value of the <tt>&lt;load&gt;</tt> tag is the applied load in N. You can apply skewed loads, or loads not in the x or y direction by rotating the node first with a <tt>&lt;rotate&gt;</tt> command and then applying the load to the rotated axes. See <tt>&lt;DisplacementBCs&gt;</tt> command [[#exDBCs|above]] for details.
<dd>This command is used to apply loads directly to nodes. Subordinate to the command can be any number of <tt>&lt;load&gt;</tt> commands. The <tt>&lt;load&gt;</tt> commands specify a <tt>node</tt> (by number) and the direction of the load with <tt>dof</tt> 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 <tt>&lt;load&gt;</tt> 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.


<dt><span id="exEBCs"></span><EdgeBCs>
<dt><span id="exEBCs"></span><EdgeBCs>
<dd>This command is used to apply stress to edges of elements. Subordinate to the command can be <tt>&lt;stress&gt;</tt> commands. Each <tt>&lt;stress&gt;</tt> command specifies an element (using <tt>elem</tt>), a <tt>face</tt> of the element, and a direction (using <tt>dir</tt> with setting 1 or n for normal stress or 2 or t for tangential or shear stress). The value of the <tt>&lt;stress&gt;</tt> tag should be 1 to 3 stresses (in MPa), 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 middle 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 [[FEA Elements|element]] faces are numbered around the element in the counter-clockwise direction starting with 1.
<dd>This command is used to apply stress to edges of elements. Subordinate to the command can be <tt>&lt;stress&gt;</tt> commands. Each <tt>&lt;stress&gt;</tt> command specifies an element (using <tt>elem</tt>), a <tt>face</tt> of the element, and a direction (using <tt>dir</tt> with setting 1 or n for normal stress or 2 or t for tangential or shear stress). The value of the <tt>&lt;stress&gt;</tt> tag should be 1 to 3 stresses (in [[ConsistentUnits Command#Legacy and Consistent Units|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 [[ConsistentUnits Command#Legacy and Consistent Units|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 [[FEA Elements|element]] faces are numbered around the element in the counter-clockwise direction starting with 1.


</dl>
</dl>
== Notes ==
# When doing axisymmetric FEA, nodes at r=0 will automatically be set to zero velocity in the r directions. You therefore need not set those conditions.

Latest revision as of 13:54, 11 February 2022

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.