### START OF INPUT FILE

```/*
*  ==================================================================
*  Test input file for bridge design rule checking wsing 2D-beam
*  element and static analysis
*
*  Written by:  Wane-Jang Lin                               June 1995
*  ==================================================================
*/

print "*** DEFINE PROBLEM SPECIFIC PARAMETERS \n\n";

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

StartMesh();
div_no = 10;

print "*** GENERATE GRID OF NODES FOR FE MODEL \n\n";

length = 56.70 ft;
cov_dis = 10.35 ft;

dL = length/div_no;
x = 0 ft;  y = 0 ft;
for( i=1; x<=length ; i=i+1 ) {
x = x+dL;
}

print "*** ATTACH ELEMENTS TO GRID OF NODES \n\n";

elmt = 1;
x = 0 ft;
for( i=1; i<=div_no ; i=i+1 ) then {
if( x(length-cov_dis) ) {
AddElmt( elmt, [i, i+1], "girder1");
} else {
AddElmt( elmt, [i, i+1], "girder2");
}
elmt = elmt+1;
x = x+dL;
}
print "*** DEFINE ELEMENT, SECTION AND MATERIAL PROPERTIES \n\n";

I1 = 17268.4 in^4;  y1 = 29.40 in;  area1 = 38.3 in^2;
I2 = 25700.1 in^4;  y2 = 27.31 in;  area1 = 48.8 in^2;

ElementAttr("girder1")  { type     = "FRAME_2D";
section  = "no_cover";
material = "STEEL3";
}
ElementAttr("girder2")  { type     = "FRAME_2D";
section  = "cover";
material = "STEEL3";
}

SectionAttr("no_cover") { Izz     =   I1;
area    =   area1;
depth   =   33.09 in;
width   =   11.51 in;
}
SectionAttr("cover")    { Izz     =   I2;
area    =   area2;
depth   =   33.09 in;
width   =   11.51 in;

}

/*
*  ======================================
*  Setup Boundary Conditions [dx, dy, rz]
*  ======================================
*/

FixNode(1, [1, 1, 0]);
FixNode(div_no+1, [0, 1, 0]);

/*
*  =====================================
*  Compile and Print Finite Element Mesh
*  =====================================
*/

EndMesh();
PrintMesh();
SetUnitsType("US");
stiff = Stiff();
lu = Decompose(stiff);

/*
*  =====================================
*  =====================================
*/

weight = 0.199 kips/ft + 0.868 kips/ft;

for( i=2; i<=div_no; i=i+1 ) {
NodeLoad( i, [0 kips, -load, 0 kips*ft]);
}
NodeLoad(        1, [0 kips, -load/2, 0 kips*ft]);
NodeLoad( div_no+1, [0 kips, -load/2, 0 kips*ft]);

displ  = Substitution(lu, eload);

/* Get Moment Diagram */

moment_dead = Zero([ div_no+1 , 1 ]);
for( i=1 ; i<=div_no ; i=i+1 ) {
temp = GetStress([i],displ);
if( i == 1 ) {  moment_dead[1][1] = temp[1][3];  }
}

for( i=2; i<=div_no; i=i+1 ) {
NodeLoad( i, [0 kips, load, 0 kips*ft]);
}
NodeLoad(        1, [0 kips, load/2, 0 kips*ft]);
NodeLoad( div_no+1, [0 kips, load/2, 0 kips*ft]);

/*
*  =====================================
*  Add Live Truck Load [Fx, Fy, Mz]
*  =====================================
*/

step   = div_no+1;
influ_mid_mom = Zero([ step , 1 ]);
influ_end_sh  = Zero([ step , 1 ]);
envelop_mom_live  = Zero([ step , 1 ]);
HS20   = 72 kips;
mom_elmt = div_no/2;
sh_elmt  = 1;

for( i=1 ; i<=step ; i=i+1 ) {
NodeLoad( i, [0 kips, -HS20, 0 kips*ft] );
displ  = Substitution( lu, eload );
mid_mom = GetStress( [mom_elmt], displ );
end_sh  = GetStress( [sh_elmt], displ );
if( i == 1 ) then {
mom_rang  = GetStress( [i], displ );
} else {
mom_rang  = GetStress( [i-1], displ );
}

/* Get moment influence line at the middle of span */

influ_mid_mom[i][1] = mid_mom[2][3];

/* Get Shear Influence line at the end support */

influ_end_sh[i][1]  = end_sh[1][2];

/* Create envelope of moment influence line at the middle of span */

if( i == 1 ) then {
envelop_mom_live[1][1]  = mom_rang[1][3];
} else {
envelop_mom_live[i][1]  = mom_rang[2][3];
}

if( i == mom_elmt+1 ) {
max_displ_live = GetDispl([mom_elmt+1],displ);
max_mom_live = GetStress([mom_elmt],displ);
}
if( i == sh_elmt ) {
max_sh_live = GetStress([sh_elmt],displ);
max_sh_live[1][2]  = max_sh_live[1][2] + HS20;
influ_end_sh[1][1] = HS20;
}
if( i == 3 ) {
cover_mom_live = GetStress([2],displ);
}

NodeLoad( i, [0 kips, HS20, 0 kips*ft] );
}

PrintMatrix(max_displ_live,max_mom_live,max_sh_live,cover_mom_live);
PrintMatrix(influ_mid_mom, influ_end_sh, envelop_mom_live);

/*
*  ============================
*  Results for DL + (LL+Impact)
*  ============================
*/

impact = 1 + 50/(56.7+125);
print "\nimpact factor = ",impact,"\n";
max_displ  = max_displ_dead + impact*max_displ_live;
max_mom    = max_mom_dead + impact*max_mom_live;
max_sh     = max_sh_dead + impact*max_sh_live;
cover_mom  = cover_mom_dead + impact*cover_mom_live;

PrintMatrix(max_displ,max_mom,max_sh,cover_mom);

/*
*  =========================================================
*  WSD Code Checking for Deflections and Stress Requirements
*  =========================================================
*/

print "\n\nSTART ASD CODE CHECKING::\n";

/* Deflection Checking */

if( -impact*max_displ_live[1][2] > (1/800)*length ) then {
print "\n\tWarning: (LL+I) deflection exceeds 1/800 span\n";
} else {
print "\n\tOK : (LL+I) deflection less than 1/800 span\n";
}

/* Moment Stress Checking */

my_material = GetMaterial([1]);
my_section  = GetSection([1]);

/* max stress without cover plate */
stress1 = cover_mom[2][3]*y1/I1;

/* max stress with cover plate (in the middle of span) */
stress2 = max_mom[2][3]*y2/I2;

if( stress1 > 0.55*my_material[3][1] ) then{
print "\n\tWarning : moment stress without cover plate larger than 0.55*Fy\n";
} else {
if( stress2 > 0.55*my_material[3][1] ) then{
print "\n\tWarning : moment stress with cover plate larger than 0.55*Fy\n";
} else {
print "\n\tOK : moment stress less than 0.55*Fy\n";
}
}

/* Shear Stress Checking */

shear = max_sh[1][2]/my_section[11][1];
if( shear > 0.33*my_material[3][1] ) then{
print "\n\tWarning : shear stress larger than 0.33*Fy\n";
} else {
print "\n\tOK : shear stress less than 0.33*Fy\n";
}

quit;
```

#### Points to note are:

In this example, we check the analysis result with AASHTO WSD specification.

item [1] : The impact factor for live load is based on the formula AASHTO Eq. (3-1) I = 50/L+125 in which I = impact fraction (maximum 30 percent) and L = length in feet of the portion of the span.

item [2] : The deflection checking is based on AASHTO Art.10.6.2, the deflection due to service live load plus impact shall not exceed 1/800 of the span.

item [3] : The allowable stress is 0.55 X Fy for tension and compression member, 0.33 X Fy for shear in web.