# Input File for Time History Analysis

Note : If you download this file and get a run-time stack overflow, edit the file code.c and increase the macro

```    #define NSTACK 1500
```

The recompiled program should work just fine.

```/*
*  ============================================================
*  Modal Analysis of Five Story Steel Moment Frame subject to
*  El Centro ground motion.
*
*  Written By: Mark Austin                           July, 1995
*  ============================================================
*/

/* [a] : Setup problem specific parameters */

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

StartMesh();

/* [b] : Generate two-dimensional grid of nodes */

node = 0;
for( y = 0 ft; y <= 50 ft; y = y + 10 ft ) {
for( x = 0 ft; x <= 55 ft; x = x + 20 ft ) {

/* [b.1] : adjust column spacing for central bay */

if(x == 40 ft) {
x = x - 5 ft;
}

/* [b.2] : add new node to finite element mesh */

node = node + 1;
AddNode(node, [ x, y ] );
}
}

/* [c] : Attach column elements to nodes */

elmtno = 0;
for (  colno = 1;   colno <= 4;   colno = colno + 1) {
for (floorno = 1; floorno <= 5; floorno = floorno + 1) {
elmtno = elmtno + 1;

end1 = 4*(floorno - 1) + colno;
end2 = end1 + 4;

AddElmt( elmtno, [ end1 , end2 ], "mrf_element");
}
}

/* [d] : Attach beam elements to nodes */

for (floorno = 1; floorno <= 5; floorno = floorno + 1) {
for (  bayno = 1;   bayno <= 3;     bayno = bayno + 1) {

end1 = 4*floorno + bayno;
end2 = end1 + 1;

elmtno = elmtno + 1;
AddElmt( elmtno, [ end1 , end2 ], "mrf_element");
}
}

/* [e] : Define section and material properties */

ElementAttr("mrf_element") { type     = "FRAME_2D";
section  = "mrfsection";
material = "mrfmaterial";
}

SectionAttr("mrfsection") { Izz       = 1541.9 in^4;
Iyy       =  486.3 in^4;
depth     =   12.0 in;
width     =   12.0 in;
area      =   47.4 in^2;
}

MaterialAttr("mrfmaterial") { density = 0.1024E-5 lb/in^3;
poisson = 0.25;
yield   = 36.0   ksi;
E       = 29000  ksi;
}

/* [f] : Apply full-fixity to columns at foundation level */

for(nodeno = 1; nodeno <= 4; nodeno = nodeno + 1) {
FixNode( nodeno, [ 1, 1, 1 ]);
}

for(nodeno = 5; nodeno <= 24; nodeno = nodeno + 1) {
FixNode( nodeno, [ 0, 1, 1 ]);
}

LinkNode([  5,  6,  7,  8 ], [ 1, 0, 0] );
LinkNode([  9, 10, 11, 12 ], [ 1, 0, 0] );
LinkNode([ 13, 14, 15, 16 ], [ 1, 0, 0] );
LinkNode([ 17, 18, 19, 20 ], [ 1, 0, 0] );
LinkNode([ 21, 22, 23, 24 ], [ 1, 0, 0] );

/* [g] : Compile and Print Finite Element Mesh */

EndMesh();
PrintMesh();

/* [h] : Compute "stiffness" and "mass" matrices */

stiff = Stiff();
Lumped = [1];
mass  = Mass( Lumped );

PrintMatrix(mass);

for(i = 1 ; i <= 5; i = i + 1) {
}

PrintMatrix(stiff);
PrintMatrix(mass);

/* [i] : Compute and print eigenvalues and eigenvectors */

no_eigen = 2;
eigen       = Eigen(stiff, mass, [ no_eigen ]);
eigenvalue  = Eigenvalue(eigen);
eigenvector = Eigenvector(eigen);

for(i = 1; i <= no_eigen; i = i + 1) {
print "Mode", i ," : w^2 = ", eigenvalue[i][1];
print " : T = ", 2*PI/sqrt(eigenvalue[i][1]) ,"\n";
}

PrintMatrix(eigenvector);

/* [j] : Generalized mass and stiffness matrices */

EigenTrans = Trans(eigenvector);
Mstar   = EigenTrans*mass*eigenvector;
Kstar   = EigenTrans*stiff*eigenvector;

PrintMatrix( Mstar );
PrintMatrix( Kstar );

/* [k] : Setup Rayleigh Damping for Base - Isolated Structure */

rdamping = 0.03;
W1 = sqrt ( eigenvalue[1][1]);
W2 = sqrt ( eigenvalue[2][1]);

A0 = 2*rdamping*W1*W2/(W1 + W2);
A1 = 2*rdamping/(W1 + W2);

damp = A0*mass + A1*stiff;
PrintMatrix( damp );

Elcentro = ColumnUnits( [
14.56;    13.77;     6.13;     3.73;     1.32;    -6.81;   -16.22;   -22.41;
-26.67;   -24.10;   -21.86;   -14.02;    -1.62;     1.67;    18.12;    39.26;
28.40;    16.72;    16.06;    12.54;     0.15;    -8.60;   -14.00;   -12.01;
-3.34;     5.14;    14.04;    16.36;    29.90;    43.09;    32.13;    17.28;
18.44;    22.31;    13.24;    -0.91;    -6.81;   -15.20;   -14.88;    -9.54;
-13.32;   -10.60;    11.80;    10.20;   -12.90;   -22.88;     1.42;    21.73;
7.92;     6.47;    11.39;    -8.29;   -33.44;   -26.25;   -23.99;   -31.05;
-25.42;   -26.97;   -38.48;   -35.01;   -27.78;   -33.35;   -29.56;   -13.60;
-13.97;   -11.63;    -1.31;    13.86;    35.71;    27.62;    25.33;    46.45;
44.12;    28.02;    19.13;    12.57;    11.60;    12.29;     9.73;    10.38;
18.93;    29.43;    30.25;    26.23;    23.15;    22.29;    21.11;    14.84;
11.02;    14.74;    21.65;    26.66;    28.45;    30.34;    30.21;    28.82;
31.31;    26.66;    15.29;     9.10;     3.58;    -6.65;   -15.33;   -18.05;
-17.46;   -11.68;    -3.48;    -5.25;   -15.43;   -25.38;   -32.32;   -29.67;
-22.01;   -17.97;   -22.34;   -30.51;   -38.89;   -45.29;   -55.26;   -67.84;
-76.74;   -84.58;   -86.83;   -86.63;   -80.87;   -69.83;   -59.81;   -54.51;
-48.94;   -39.94;   -38.67;   -40.13;   -38.04;   -34.78;   -31.30;   -21.29;
-8.85;     3.58;    13.97;    30.88;    35.09;     8.84;   -10.41;   -16.30;
-20.10;    -3.69;    33.71;    51.69;    43.52;    27.04;    34.70;    38.30;
36.60;    29.85;    -9.22;   -23.98;   -17.28;   -14.20;    11.58;    47.99;
64.26;    70.36;    68.93;    62.67;    45.30;    28.43;    23.73;    28.51;
34.46;    43.12;    43.39;    26.64;    21.23;    31.23;    40.30;    16.76;
-10.80;   -22.88;    -0.51;    12.51;   -10.01;   -12.52;    -6.05;   -24.18;
-43.17;     7.01;    50.06;    54.19;    68.83;    69.26;    57.53;     8.73;
-38.98;   -43.59;   -51.12;   -41.86;   -19.51;   -15.78;   -11.54;    -2.18;
-2.19;    20.84;    23.40;    -0.91;   -11.45;   -22.94;   -40.84;   -53.17;
-44.02;   -21.96;    -3.06;    -0.49;    -9.59;   -11.83;    -9.86;    -7.02;
0.88;    24.00;    50.57;    56.01;    51.75;    52.30;    47.79;    16.77;
-6.09;   -20.13;   -20.42;    -4.35;    -0.33;    -6.33;     1.74;    19.90;
37.97;    53.36;    57.68;    53.32;    28.37;     7.54;     6.90;     4.73;
-4.97;   -21.97;   -28.16;   -23.25;   -28.43;   -18.57;    -3.93;   -16.60;
-31.92;   -35.08;   -34.77;   -30.85;   -30.37;    -6.83;    24.57;    27.39;
23.72;    29.30;     5.79;   -35.35;   -54.31;   -57.00;   -59.38;   -19.00;
32.14;     7.01;   -21.44;   -21.26;   -26.01;   -35.66;   -33.68;   -24.09;
-21.39;   -26.29;   -27.73;   -23.91;   -14.27;    -6.41;    -0.59;     4.21;
1.06;    -4.59;   -15.16;   -18.12;    -7.09;     2.41;     6.08;     1.20;
-10.53;    -8.69;    -4.70;   -13.05;    -9.51;    -0.67;    -7.10;    -7.19;
5.36;     9.80;     7.87;    12.63;    20.28;    22.44;    24.86;    24.31;
15.25;     6.54;     6.86;    11.08;    18.12;    23.64;    22.47;    23.76;
21.57;    19.80;    25.47;    27.94;    14.81;    -6.94;   -13.57;    -7.80;
-2.65;    -3.97;    -1.01;     0.20;     5.14;     2.31;   -16.89;   -18.18;
-11.55;   -12.10;    -3.07;     6.16;     8.87;    19.72;    21.31;    16.45;
12.70;     4.15;    -1.59;     0.57;    11.04;    21.39;    27.42;    15.82;
-9.25;   -23.67;   -17.34;     0.67;     8.69;    11.01;    12.01;    11.12;
13.62;    11.31;     9.71;    17.68;    15.83;     5.59;     0.60;    -2.53;
-4.46;    -4.09;    -7.81;   -15.06;   -19.43;   -15.49;    -8.93;    -5.44;
-1.33;    -1.35;     7.19;    12.52;     0.21;    -4.89;     0.22;    11.51;
20.17;    18.62;    16.72;    13.74;    10.62;    11.14;    12.74;    13.34;
14.16;    14.59;    13.81;    10.94;     5.91;     5.74;    14.53;    19.56;
9.27;    -6.75;   -14.69;   -14.25;   -11.48;    -3.96;     6.54;    10.59;
2.26;   -12.97;   -24.01;   -25.73;   -18.75;    -6.99;    -2.22;     0.17;
3.63;    -1.70;    -4.73;     6.13;    20.26;    22.36;    19.58;     9.14;
-0.09;    -0.23;    -1.00;     4.82;    15.39;    19.75;     7.45;    -0.99;
0.77;    -1.64;    -9.34;   -14.34;   -13.86;    -6.61;     5.49;     6.30;
2.08;    -2.88;    -2.25;     2.99;     3.30;    -1.57;    -6.86;    -8.44;
-11.03;   -16.68;   -17.43;   -12.39;   -12.20;   -15.43;   -16.28;   -17.99;
-20.21;   -21.58;   -23.05;   -23.79;   -23.64;   -21.60;   -15.32;    -5.72;
11.14;    28.30;    33.22;    30.27;    25.49;    18.45;     7.62;    -1.66;
-7.86;   -10.04;    -5.71;    -5.16;   -12.56;   -19.39;   -22.16;   -18.18;
-12.00;    -3.60;     3.99;     3.89;     0.85;     4.01;     6.05;     0.68;
-0.14;     1.50;     3.17;     4.96;    -0.03;    -7.20;    -4.85;    -0.60;
-3.05;    -6.01;    -6.08;    -6.40;    -6.70;    -5.70;    -6.14;    -8.41;
-10.05;   -12.35;   -15.72;     0.00  ], [cm/sec/sec] );

PrintMatrix( Elcentro );

/* [l] : Initialize system displacement, velocity, and load vectors */

displ  = ColumnUnits( Matrix([5,1]), [m]    );
vel    = ColumnUnits( Matrix([5,1]), [m/sec]);
r      = One([5,1]);

/* [m] : Initialize modal displacement, velocity, and acc'n vectors */

Mdispl  = ColumnUnits( Matrix([ no_eigen,1 ]), [m]    );
Mvel    = ColumnUnits( Matrix([ no_eigen,1 ]), [m/sec]);
Maccel  = ColumnUnits( Matrix([ no_eigen,1 ]), [m/sec/sec]);

/*
* [n] : Allocate Matrix to store five response parameters --
*       Col 1 = time (sec);
*       Col 2 = 1st mode displacement (cm);
*       Col 3 = 2nd mode displacement (cm);
*       Col 4 = 1st + 2nd mode displacement (cm);
*       Col 5 = Total energy (Joules)
*/

dt     = 0.02 sec;
nsteps = 600;
beta   = 0.25;
gamma  = 0.5;

response = ColumnUnits( Matrix([nsteps+1,5]), [sec], [1]);
response = ColumnUnits( response,  [cm], [2]);
response = ColumnUnits( response,  [cm], [3]);
response = ColumnUnits( response,  [cm], [4]);
response = ColumnUnits( response, [Jou], [5]);

/* [o] : Compute (and compute LU decomposition) effective mass */

MASS  = Mstar + Kstar*beta*dt*dt;
lu    = Decompose(Copy(MASS));

/* [p] : Mode-Displacement Solution for Response of Undamped MDOF System  */

MassTemp = -mass*r;
for(i = 1; i <= nsteps; i = i + 1) {
print "*** Start Step ",i,"\n";

if(i == 2) {
SetUnitsOff;
}

/* [p.1] : Update external load */

if(i <= 500) then {
} else {
}

R = Pstar - Kstar*(Mdispl + Mvel*dt + Maccel*(dt*dt/2.0)*(1-2*beta));

/* [p.2] : Compute new acceleration, velocity and displacement  */

Maccel_new = Substitution(lu,R);
Mvel_new   = Mvel   + dt*(Maccel*(1.0-gamma) + gamma*Maccel_new);
Mdispl_new = Mdispl + dt*Mvel + ((1 - 2*beta)*Maccel + 2*beta*Maccel_new)*dt*dt/2;

/* [p.3] : Update and print new response */

Maccel = Maccel_new;
Mvel   = Mvel_new;
Mdispl = Mdispl_new;

/* [p.4] : Combine Modes */

displ = eigenvector*Mdispl;
vel   = eigenvector*Mvel;

/* [p.5] : Compute Total System Energy */

a1 = Trans(vel);
a2 = Trans(displ);
e1 = a1*mass*vel;
e2 = a2*stiff*displ;
energy = 0.5*(e1 + e2);

/* [p.6] : Save components of time-history response */

response[i+1][1] = i*dt;                            /* Time                  */
response[i+1][2] = eigenvector[1][1]*Mdispl[1][1];  /* 1st mode displacement */
response[i+1][3] = eigenvector[1][2]*Mdispl[2][1];  /* 2nd mode displacement */
response[i+1][4] = displ[1][1];               /* 1st + 2nd mode displacement */
response[i+1][5] = energy[1][1];                    /* System Energy         */
}

/* [q] : Print response matrix and quit */

SetUnitsOn;
PrintMatrix(response);
quit;
```

Developed in June 1996 by Mark Austin