Input file for Three-Span Beam Structure


/* 
 *  =====================================================================
 *  Structural Analysis of a Three-Span Beam Structure.
 * 
 *  Written By: Mark Austin                                    March 1998
 *  =====================================================================
 */ 

/* Setup problem specific parameters */

   NDimension         = 2;
   NDofPerNode        = 3;
   MaxNodesPerElement = 2;

   StartMesh();

/* Generate line of nodes */

   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 ] );

/* Attach beam elements to nodes */

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

/* Define section and material properties */

   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;
                                }
/* Apply full-fixity at wall support and vertical restraint at  */
/* supports "B" and "C".                                        */

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

/* Build array of Fixed-End Forces/Moments */

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

   /* Equivalent concentrated end forces/moments for element 1 */

   L = 10 m; P = 10 kN;

   forces[1][2] = -P/2;
   forces[1][3] = -P*L/8;
   forces[1][5] = -P/2;
   forces[1][6] =  P*L/8;

   /* Equivalent concentrated end forces/moments for element 2 */

   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;

   /* Equivalent concentrated end forces/moments for element 3 */

   L = 5 m; W = 0 kN/m;

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

/* Apply external forces */

   Fx = forces[1][4] + forces[2][1];  /* Fixed end forces at node 3 */
   Fy = forces[1][5] + forces[2][2];
   Mz = forces[1][6] + forces[2][3];

   nodeno = 2;
   NodeLoad( nodeno, [ Fx, Fy, Mz ]); 

   Fx = forces[2][4] + forces[3][1];  /* Fixed end forces at node 3 */
   Fy = forces[2][5] + forces[3][2];
   Mz = forces[2][6] + forces[3][3];

   nodeno = 3;
   NodeLoad( nodeno, [ Fx, Fy, Mz ]); 

   Fx = forces[3][4];                 /* Fixed end forces at node 4 */
   Fy = forces[3][5];
   Mz = forces[3][6];

   P  = 10 kN;                   /* Vertical load applied to node 4 */

   nodeno = 4;
   NodeLoad( nodeno, [ Fx, Fy - P, Mz ]); 

/* Compile and Print Finite Element Mesh */

   EndMesh();
   PrintMesh();

/* Compute "stiffness" and "external load" matrices */

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

/* Compute and print displacements */

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

/* Print member forces for elements 1 through 3 */

   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";
   }

/* Compute and print support reactions */

   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";

   quit;


Developed in March 1998 by Mark Austin
Last Modified March 3, 1998
Copyright © 1998, Mark Austin, Department of Civil Engineering, University of Maryland