Documente Academic
Documente Profesional
Documente Cultură
This example shows the Partial Differential Equation Toolbox analysis of the
dynamic behavior of a beam clamped at both ends and loaded with a uniform pressure
load. The pressure load is suddenly applied at time equal zero and the magnitude is
high enough to produce deflections on the same order as the beam thickness.
Accurately predicting this type of behavior requires a geometrically-nonlinear
formulation of the elasticity equations. One of the main purposes of this example is to
show how PDE Toolbox can be used to solve a problem in nonlinear elasticity. The
analysis will be performed with both linear and nonlinear formulations to demonstrate
the importance of the latter.
Equations
Although large deflections are accounted for in this formulation, it is assumed that the
strains remain small so that linear elastic constitutive relations apply. Also, the material
is assumed to be isotropic. For the 2D plane stress case, the constitutive relations may
be written in matrix form:
where
where
Readers who are interested in more details about the Lagrangian formulation for
nonlinear elasticity can consult, for example, reference 1.
The equations presented above completely define the geometrically nonlinear plane
stress problem. The work required to convert them to a form acceptable to PDE
Toolbox is considerably simplified by using the MATLAB Symbolic Math Toolbox.
Symbolic Math Toolbox can perform the necessary algebraic manipulations and output
a MATLAB function defining the c-coefficient that can be passed to PDE Toolbox
functions. This function, cCoefficientLagrangePlaneStress, is shown in the appendix
below.
Create the PDE Model
N = 2; % Two PDE in plane stress elasticity
model = createpde(N);
Since the beam geometry and loading are symmetric about the beam center(x =
blength/2), the model can be simplified by considering only the right-half of the beam.
l2 = blength/2;
h2 = height/2;
% Create the edges of the rectangle representing the beam with these
% two statements:
rect = [3 4 0 l2 l2 0 -h2 -h2 h2 h2]';
g = decsg(rect,'R1',('R1')');
Plot the geometry and display the edge labels. The edge labels are needed for edge
identification when applying boundary conditions.
figure
pdegplot(g,'EdgeLabels','on');
title('Geometry With Edge Labels Displayed');
axis([-.1 1.1*l2 -5*h2 5*h2]); % Scale the plot so the labels are viewable
Derive the equation coefficients using the material properties. For the linear case, the
c-coefficient matrix is constant
E = 3.0e7; % Young's modulus of the material, lbs/in^2
gnu = .3; % Poisson's ratio of the material
rho = .3/386; % Density of the material
G = E/(2.*(1+gnu));
mu = 2*G*gnu/(1-gnu);
c = [2*G+mu; 0; G; 0; G; mu; 0; G; 0; 2*G+mu];
f = [0 0]'; % No body forces
specifyCoefficients(model, 'm', rho, 'd', 0, 'c', c, 'a', 0, 'f', f);
Create a mesh with approximately eight elements through the thickness of the beam.
generateMesh(model,'Hmax',height/8,'MesherVersion','R2013a');
Linear Solution
Interpolate the solution at the geometry center for the y-component (component 2) at
all times.
xc = 1.25;
yc = 0;
u4Linear = interpolateSolution(result,xc,yc,2,1:length(tlist));
Nonlinear Solution
As before, interpolate the solution at the geometry center for the y-component
(component 2) at all times.
u4NonLinear = interpolateSolution(result,xc,yc,2,1:length(tlist));
Plot Solutions
The figure below shows the y-deflection at the center of the beam as a function of
time. The nonlinear analysis computes displacements that are substantially less than
the linear analysis. This "stress stiffening" effect is also reflected in the higher
oscillation frequency from the nonlinear analysis.
figure
plot(tlist,u4Linear(:),tlist,u4NonLinear(:));
legend('Linear','Nonlinear');
title 'Deflection at Beam Center'
xlabel 'Time, seconds'
ylabel 'Deflection, inches'
grid on
References
1.
This function was generated by the Symbolic Math Toolbox version 6.0.
31-Jan-2014 09:50:09
ux = reshape(state.ux,2,[]);
uy = reshape(state.uy,2,[]);
dudx=ux(1,:);
dvdx=ux(2,:);
dudy=uy(1,:);
dvdy=uy(2,:);
% if(~isempty(u))
% [ux,uy] = pdegrad(p,t,u);
% dudx=ux(1,:); dudy=uy(1,:); dvdx=ux(2,:); dvdy=uy(2,:);
% else
% dudx = zeros(1, size(t,2)); dudy=dudx; dvdx=dudx; dvdy=dudx;
% end
t4 = 1/(nu^2-1);
t6 = 1/(1+nu);
t7 = E*dudy.*t4*.25;
t8 = dudx+1.0;
t9 = E*dudy.*t4.*t8*.25;
t10 = dvdy+1.0;
t11 = t7+t9-E*dvdx.*t6.*t10*.25;
t12 = dvdy.*2.0;
t13 = dudx.^2;
t14 = dudy.^2;
t15 = dvdy.^2;
t16 = dvdx.^2;
t17 = E*dvdx.*t4.*(1.0./2.0);
t18 = E*dudx.*dvdx.*t4*.25;
t19 = t17+t18-E*dudy.*t6*.25-E*dudy.*dvdy.*t6.*(1.0./8.0);
t20 = E*dudy.*dvdx.*nu.*t4*.25;
t21 = t20-E*t6.*(1.0./2.0)-E*dudx.*t6*.25-E*dvdy.*t6*.25-E*dudx.*dvdy.*t6.*(1.0./8.0);
t22 = dudx.*2.0;
t23 = dvdy+2.0;
t24 = nu-1.0;
t25 = E*nu.*t4;
t26 = E*dudx.*nu.*t4.*(1.0./2.0);
t27 = E*dvdy.*nu.*t4.*(1.0./2.0);
t28 = E*dudx.*dvdy.*nu.*t4*.25;
t29 = t25+t26+t27+t28-E*dudy.*dvdx.*t6.*(1.0./8.0);
t30 = E*dudy.*t4.*t23.*(1.0./8.0);
t31 = E*dudy.*dvdy.*t4.*(1.0./8.0);
t32 = t7+t30+t31-E*dvdx.*t6.*(1.0./8.0)-E*dvdx.*t4.*t8.*t24.*(1.0./8.0);
t33 = dudy.*2.0;
t34 = dvdx.*2.0;
t35 = dudx.*dudy.*2.0;
t36 = dvdx.*dvdy;
t37 = t33+t34+t35+t36;
t38 = 1.0./t24;
t39 = E*dvdx.*t23.*t38.*(1.0./8.0);
t40 = t39-E*t6.*t37.*(1.0./8.0);
out1 = [E*t4.*(dudx.*6.0+t13.*2.0+t14+t16+4.0)*.25+E*nu.*t4.*(t12+t15)*.25;
t11;
t19;
t29;
t11;
E*t4.*(t12+t13+t14.*2.0+t15+t22+2.0)*.25+E*nu.*t4.*(t16-2.0)*.25;
t21;
t32;
t19;
t21;
E*t4.*(t12+t13+t15+t16.*2.0+t22+2.0)*.25+E*nu.*t4.*(t14-2.0)*.25;
t40;
t29;
t32;
t40;
E*t4.*(dvdy.*6.0+t14+t15.*2.0+t16+4.0)*.25+E*nu.*t4.*(t13+t22)*.25];
end