Input file for Analysis of Lead-Rubber Isolator.
You will need Aladdin 2.0 to run this problem.
/*
* ==========================================================================
* Force-displacement analysis for one lead-rubber isolator modeled with
* FRAME_3DS element having four lead fibers and four rubber fibers.
*
* Each fiber in each direction has one individual shear spring.
*
* Isolator Geometry and Material Properties
*
* 650mm diameter x 197mm height with 170mm diameter lead plug
* Axial stiffness for rubber is the same as lead, (E_rubber=E_lead).
* Shear stiffness for lead after yielding is 0, (Gt)lead=0.
* Shear stiffness for rubber is always elastic.
*
* Written By : Wane-Jang Lin July 1997
* ==========================================================================
*/
NDimension = 3;
NDofPerNode = 6;
MaxNodesPerElement = 2;
GaussIntegPts = 2;
StartMesh();
iso_h = 197 mm;
r_dia = 650 mm;
l_dia = 170 mm;
Kv = 600 kN/mm;
Ea = Kv*iso_h/(PI/4*r_dia*r_dia);
E_lead = Ea;
G_lead = 130 MPa;
fv_lead = 10 MPa;
Kr = 1.75 kN/mm;
G_rubber = Kr*iso_h/(PI/4*(r_dia*r_dia-l_dia*l_dia));
E_rubber = Ea;
AddNode( 1, [ 0 m, 0 m, iso_h ] );
AddNode( 2, [ 0 m, 0 m, 0 m ] );
AddElmt( 1, [1,2], "isolator_attr");
ElementAttr("isolator_attr") { type = "FIBER_3DS";
section = "iso_sec";
material = "iso_mat";
fiber = "iso_fib";
}
SectionAttr("iso_sec") { area = PI/4*r_dia*r_dia;
depth = r_dia;
width = r_dia;
unit_weight = 0.0001 kN/m;
shear_factor = 1.0;
J = PI/32*r_dia^4;
}
MaterialAttr("iso_mat") { poisson = 0.4;
E = 3.562e8 N/m^2;
}
no_fiber_type = 2;
divid_no = 4;
theta = PI/divid_no;
l_r = l_dia*sin(theta)/theta/3;
r_r = r_dia*sin(theta)/theta/3;
no_fiber = 2*divid_no;
fcoord = Matrix([ 2, no_fiber ]);
farea = Matrix([ 1, no_fiber ]);
fmap = Matrix([ 1, no_fiber ]);
for( i=1 ; i<=divid_no ; i=i+1 ) {
fcoord[1][i] = l_r*cos((2*i-1)*theta);
fcoord[2][i] = l_r*sin((2*i-1)*theta);
farea[1][i] = theta*l_dia*l_dia/4;
fmap[1][i] = 1;
fcoord[1][i+divid_no] = r_r*cos((2*i-1)*theta);
fcoord[2][i+divid_no] = r_r*sin((2*i-1)*theta);
farea[1][i+divid_no] = theta*(r_dia*r_dia - l_dia*l_dia)/4;
fmap[1][i+divid_no] = 2;
}
fattr = Matrix([ 6, no_fiber_type ]);
for( j=1 ; j <= no_fiber_type ; j=j+1 ) {
if( j == 1 ) { /* lead */
fattr[1][j] = E_lead;
fattr[2][j] = E_lead;
fattr[3][j] = 10e6 MPa;
fattr[4][j] = G_lead;
fattr[5][j] = G_lead*1e-6;
fattr[6][j] = fv_lead;
}
if( j == 2 ) { /* rubber */
fattr[1][j] = E_rubber;
fattr[2][j] = E_rubber;
fattr[3][j] = 10e6 MPa;
fattr[4][j] = G_rubber;
fattr[5][j] = G_rubber;
fattr[6][j] = 10e6 MPa;
}
}
FiberAttr( no_fiber, "iso_fib" ) { FiberMaterialAttr = fattr;
FiberCoordinate = fcoord;
FiberArea = farea;
FiberMaterialMap = fmap;
}
FixNode(2,[1,1,1,1,1,1]);
EndMesh();
/* Apply compressive axial load to isolator */
stiff = Stiff();
NodeLoad( 1, [ 0 kN, 0 kN, -3150 kN, 0 kN*m, 0 kN*m, 0 kN*m] );
P_old = ExternalLoad();
displ = Solve( stiff, P_old );
ElmtStateDet( displ );
stiff = Stiff();
/* Now apply lateral loads */
dof = GetDof([1]);
max_dof = dof[1][1];
print "\n*** Force-displacement hysteretic loop analysis\n";
print "Step no\t Shear Force\tDisplacement\n";
step = 0;
print step,"\t",P_old[max_dof][1](kN),"\t",displ[max_dof][1](mm),"\n";
no_step = 180;
for( step=1 ; step <= no_step+1 ; step=step+1 ) {
/* define force-controled load increment */
if( step == 1 ) then {
NodeLoad( 1, [ 200 kN, 0 kN, 0 kN, 0 kN*m, 0 kN*m, 0 kN*m] );
} else {
if( step <= 21 ) {
NodeLoad( 1, [ 10 kN, 0 kN, 0 kN, 0 kN*m, 0 kN*m, 0 kN*m] );
}
if( step > 21 && step <= 101 ) {
NodeLoad( 1, [ -10 kN, 0 kN, 0 kN, 0 kN*m, 0 kN*m, 0 kN*m] );
}
if( step > 101 ) {
NodeLoad( 1, [ 10 kN, 0 kN, 0 kN, 0 kN*m, 0 kN*m, 0 kN*m] );
}
}
P_new = ExternalLoad();
dP = P_new - P_old;
P_old = P_new;
/* Newton-Raphson Iteration for State Determination */
while( L2Norm(dP) > 0.001 ) {
dp = Solve( stiff, dP );
displ = displ + dp;
ElmtStateDet( dp );
stiff = Stiff();
PR = InternalLoad( displ );
dP = P_new - PR; /* Compute unbalanced force */
}
UpdateResponse();
print step,"\t",P_new[max_dof][1](kN),"\t",displ[max_dof][1](mm),"\n";
}
print "\n";
print "===========================\n";
print "Nonlinear Analysis Complete\n";
print "===========================\n";
quit;