# Structural Analysis of Three-Span Beam Structure

You will need Aladdin 2.0 to run this problem.

### PROBLEM STATEMENT

In this example we will compute the joint displacements, distribution of bending moments and shear forces, and support reactions for the three-span beam structure shown in Figure 1.

#### Figure 1 : Three-Span Beam Structure

The total width of the beam is 25 m. It is constructed from steel sections having moment of inertia I = 6.6 x 10^8 mm^4 and cross section area A = 4.26 x 10^4 mm^2. The steel material has modulus of elasticity E = 200 GPa.

The structure carries three external loads -- a 10 kN point load in the middle of span 1, a uniform load of 2 kN/m across span 2, and a point load of 10 kN point at the tip of span 3.

Solution Procedure

This problem is complicated by the distributed loadings along the beam structure, and the limitation that Aladdin 2 does not explicitly support distributed element loads as a special type of input.

This does not mean that problems involving element loads cannot be handled by Aladdin, however. All that is required is a conversion of the element loads to equivalent nodal loads, followed by the appropriate matrix manipulations.

The step-by-step solution procedure is:

1. Create an idealized model of the structure. We will assume that the structure can be represented by four joints and three linear elastic beam-column finite elements.

2. For each member that carrys a distributed loading, compute the equivalent fixed-end reactions that will occur when support translations and rotations are prevented.

3. Formulate the global stiffness matrix and external load vector.

The fixed-end reactions calculated at Step 2 should be mapped to the global d.o.f. and added to the external loads applied directly to the joints. In other words, we have:

```    [ K ] [ x ] = [ F_r ] + [ F_j ]
```

where

```    [  K  ] = Global stiffness matrix.
[  x  ] = Vector of joint displacements.
[ F_r ] = Vector of reactions caused by distributed
element level forces.
[ F_j ] = Vector of external loads applied directly
to the beam structure joints (e.g, see "D").
```

4. Solve
```    [ K ] [ x ] = [ F_r ] + [ F_j ]
```

for the joint displacements.

5. The effective nodal forces, f_e, correspond to the element stiffness matrix, k_e, multiplied by x_e, the nodal displacements for the element. In other words:
```    [ f_e ] = [ k_e] [ x_e ].
```

6. The correct element level nodal forces, f_c, are given by:
```    [ f_c ] = [ f_e ] - [ f_r ].
```

where

```    [ f_r ] = element level reactions computed at Step 2.
```

7. The distribution of bending moments within an element is obtained by attaching the bending moment diagram for the distributed element loads to the bending moments at the joints contained in [ f_c ].

### FINITE ELEMENT MODEL

Finite Element Mesh

The beam structure will be modeled with three beam column elements, as labeled in Figure 2.

#### Figure 2 : Fixed End Reactions Due to Lateral Load

The finite element nodes are generated with:

```    node = 1;
AddNode(node, [  0 m, 0 m ] );
node = 2;
AddNode(node, [ 10 m, 0 m ] );
node = 3;
AddNode(node, [ 20 m, 0 m ] );
node = 4;
AddNode(node, [ 25 m, 0 m ] );
```

Three finite elements are attached to the nodes with:

```    elmtno = 1;
AddElmt( elmtno, [ 1, 2 ], "beamelmt");
elmtno = 2;
AddElmt( elmtno, [ 2, 3 ], "beamelmt");
elmtno = 3;
AddElmt( elmtno, [ 3, 4 ], "beamelmt");
```

Section and Material Properties

We assume that the entire beam structure is contstructed from one section type and one material labeled "beamelmt".

```    ElementAttr("beamelmt") { type     = "FRAME_2D";
section  = "beamsection";
material = "beammaterial";
}

SectionAttr("beamsection") { Izz    = 6.60e8 mm^4;
area   = 4.26e4 mm^2;
}

MaterialAttr("beammaterial") { poisson = 0.25;
E       = 200 GPa;
}
```

FRAME_2D is the name of our two-dimensional beam column element.

Boundary Conditions

We assume that the left hand support has full-fixity, and that the two internal supports are full-fixed in the vertical direction. The latter may freely displace in the horizontal and rotational directions, however.

The block of code:

```    nodeno = 1;
FixNode( nodeno, [ 1, 1, 1 ]);
nodeno = 2;
FixNode( nodeno, [ 0, 1, 0 ]);
nodeno = 3;
FixNode( nodeno, [ 0, 1, 0 ]);
```

establishes the required boundard conditions.

### EQUIVALENT FIXED END REACTIONS

Figure 3 shows the fixed end reactions and distributions of bending moment for the two types of external loading shown in Figure 1.

#### Figure 3 : Fixed End Reactions Due to Lateral Load

Since the fixed-end reactions are needed at both Steps 3 and 6 of the solution procedure, a convenient way of saving the element level reactions is with the array:

```    forces = Matrix( [3,6] );
forces = ColumnUnits ( forces, [ N, N, N*m, N, N, N*m ]);
```

The i-th row of array forces stores the fixed end reactions for the i-th element. For example, the fixed end reactions and moments for element 2 are given by:

```    L = 10 m; W = 2 kN/m;

forces[2][2] = -W*L/2;
forces[2][3] = -W*L*L/12;
forces[2][5] = -W*L/2;
forces[2][6] =  W*L*L/12;
```

Similar expressions are written for elements 1 and 3.

### DISPLACEMENTS

We will assume that the structure is linear elastic and that "small deflection theory" holds -- that is, the joint displacements are very small compared to the dimensions of the structure, and that equilibrium of the deformed structure can be expressed in terms of the undeformed coordinate system (of course this is is an approximation).

The global stiffness matrix and external load vector are formed by the statement pair:

```    eload = ExternalLoad();
stiff = Stiff();
```

The global displacements are computed and printed with:

```    displ = Solve(stiff, eload);
PrintDispl(displ);
```

The program output is:

```    ============================================================
Node                           Displacement
No            displ-x           displ-y             rot-z
============================================================
1         0.00000e+00       0.00000e+00       0.00000e+00
2         0.00000e+00       0.00000e+00       1.35281e-04
3         0.00000e+00       0.00000e+00      -6.98954e-04
4         0.00000e+00      -6.65133e-03      -1.64592e-03
```

### MEMBER FORCES

From Steps 5 and 6 in our solution procedure it is evident that the correct element level member forces are given by:

```    [ f_c ] = [ k_e] [ x_e ] - [ f_r ].
```

In the case of the FRAME_2D element the element nodal loads corresponding to

```    [ k_e] [ x_e ]
```

can be retrieved from the finite element library with the function call (note, not all elements have this property):

```    elmt = GetStress( [ii], displ );
```

Here, "ii" is the element number, "displ" is the vector of global joint displacements and "elmt" is a 2 x 5 matrix containing the element coordinates and the member forces acting at the joints.

Therefore, the block of code:

```    for ( ii = 1; ii <= 3; ii = ii + 1 ) {
print "\nMember forces for Element", ii, "\n\n";
elmt = GetStress( [ii], displ );

print "End 1 : Horizontal =", elmt[1][3] - forces [ ii ][1] ,"\n";
print "        Vertical   =", elmt[1][4] - forces [ ii ][2] ,"\n";
print "        Moment     =", elmt[1][5] - forces [ ii ][3] ,"\n";
print "End 2 : Horizontal =", elmt[2][3] - forces [ ii ][4] ,"\n";
print "        Vertical   =", elmt[2][4] - forces [ ii ][5] ,"\n";
print "        Moment     =", elmt[2][5] - forces [ ii ][6] ,"\n";
}
```

computes and prints the member forces in element 1 through 3. The program output is:

```    Member forces for Element         1

End 1 : Horizontal =        -0 N
Vertical   =      6071 N
Moment     = 1.607e+04 N.m
End 2 : Horizontal =         0 N
Vertical   =      3929 N
Moment     =     -5357 N.m

Member forces for Element         2

End 1 : Horizontal =        -0 N
Vertical   =      5536 N
Moment     =      5357 N.m
End 2 : Horizontal =         0 N
Vertical   = 1.446e+04 N
Moment     =    -5e+04 N.m

Member forces for Element         3

End 1 : Horizontal =        -0 N
Vertical   =     1e+04 N
Moment     =     5e+04 N.m
End 2 : Horizontal =         0 N
Vertical   =    -1e+04 N
Moment     = -2.91e-11 N.m
```

Bending Moment Diagram

Two steps are needed to create the bending moment diagram shown in Figure 4.

#### Figure 4 : Bending Moment Diagram

First, a profile of member force bending moments at joints "A" through "D" is drawn.

The second step is to attach the element level bending moment distributions to the bending moment profile (see Figure 3), and to adjust the mid-span moments.

In element 1, for example, the fixed-end mid-span bending moment is

```    Max Moment = P.L/4 = 10 kN * 10 m / 4
= 25 kN.m
```

This moment must be subtracted from the average value of the nodal bending moments in element 1. i.e.,

```    Mid-span Moment = 1/2 . (16.07 kN.m + 5.3 kN.m) - 25 kN.m
= - 13.5 kN.m
```

We have drawn the bending moment diagram on the tension side of the element -- the maximum bending moment is 50.0 kN.m over support "C".

Shear Force Diagram

Figure 5 shows the distribution of shear forces.

#### Figure 5 : Shear Force Diagram

Recall that the bending moment and shear force diagrams are related by:

```                       dM (x)
Shear force V = ------
dx
```

The change in the shear force at the supports corresponds to the vertical support reaction (details given below).

### SUPPORT REACTIONS

The reaction at each support corresponds to the sum of shear forces for the members attached to the support, minus the sum of the fixed end support forces.

The block of code:

```   elmt1 = GetStress( [1], displ );
elmt2 = GetStress( [2], displ );
elmt3 = GetStress( [3], displ );

print "\nSupport Reactions \n";
print "===============================================\n";

print "Support A : Vertical Reaction =", elmt1[1][4] - forces [1][2] (kN)  ,"\n";
print "                  Wall Moment =", elmt1[1][5] - forces [1][3] (kN*m),"\n";

print "\n";
print "Support B : Vertical Reaction =", elmt1[2][4] - forces [1][5]
+ elmt2[1][4] - forces [2][2] (kN),"\n";
print "\n";
print "Support C : Vertical Reaction =", elmt2[2][4] - forces [2][5]
+ elmt3[1][4] - forces [3][2] (kN),"\n";
print "===============================================\n";

```

retrieves the member forces for elements 1 through 3, and then systematically computes and prints the vertical reactions.

The program output is:

```    Support Reactions
===============================================
Support A : Vertical Reaction =     6.071 kN
Wall Moment =     16.07 kN.m

Support B : Vertical Reaction =     9.464 kN

Support C : Vertical Reaction =     24.46 kN
===============================================
```

Figure 6 shows the support reactions.

#### Figure 6 : Support Reactions

You should observe that the vertical reactions at supports "A", "B" and "C" sum to 40.0 kN, the total applied loading.

### INPUT/OUTPUT FILES

Developed in March 1998 by Mark Austin