How to code a cantilever beam with lumped spring mass damper on the free end
23 views (last 30 days)
Show older comments
Coding a cantilever beam with lumped spring mass and applying a point load on the free end. I want to get the response for the free vibration and forced vibration case. Please help
0 Comments
Answers (2)
Sam Chak
on 20 Feb 2025
Hi @Shrijit
Generally, you can model beam dynamics using Euler-Bernoulli theory for long beams or Timoshenko–Ehrenfest theory for short beams. Both theories involve partial derivatives and require a strong mathematical proficiency to code the structural mechanics accurately and solve the partial differential equations.
If you can visualize how the force is applied to a specific point on the beam, you can solve the cantilever beam problem using the tools from the Partial Differential Equation Toolbox, without the need for advanced mathematics. However, you need to be knowledgeable about geometry, structural properties, and mechanical vibrations.
Here is a simple example, but using the old method of modeling the beam. If you are free, you should learn how to migrate the code to the unified finite element workflow.
%% Specify the geometry of cantilever beam
width = 0.1;
depth = 0.005;
height = 0.005;
gm = multicuboid(width, depth, height);
%% Create the cantilever beam model
TipVertex = addVertex(gm, Coordinates=[0.05, 0, 0.005]);
sModel = createpde(structural="transient-solid");
sModel.Geometry = gm;
msh = generateMesh(sModel);
figure
pdegplot(sModel, VertexLabels="on", FaceAlpha=0.5); % FaceLabels="on",
title("Beam model")
%% Structural Properties of the beam
E = 210E9; % Mr. Young's Modulus
nu = 0.3; % Mr. Poisson's Ratio
rho = 7800; % Density of iron (kg/m3)
structuralProperties(sModel, YoungsModulus=E, PoissonsRatio=nu, MassDensity=rho);
structuralBC(sModel, Face=5, Constraint="fixed");
firstNF = 2639; % first vibration mode (rad/s)
Tfundamental = 2*pi/firstNF; % fundamental period of oscillation
%% Apply an impulse load on the tip of the beam for 2% of the fundamental period of oscillation
Te = 0.02*Tfundamental;
structuralBoundaryLoad(sModel, Vertex=TipVertex, Force=[0; 0; -100], EndTime=Te, Label="force");
%% Solve the cantilever beam model
structuralIC(sModel, Velocity=[0;0;0]); % Set initial conditions for the beam model
ncycles = 10; % number of cycles
tsim = linspace(0, ncycles*Tfundamental, 30*ncycles); % simulation time
R1 = solve(sModel, tsim);
%% Plot result
figure
plot(tsim, R1.Displacement.uz(TipVertex,:))
title('Vertical Displacement of Beam Tip')
legend('Structural PDE model')
xlabel('Time')
ylabel('Displacement')
0 Comments
See Also
Categories
Find more on Assembly in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!