Write a MATLAB script file to determine the displacements at points P, Q and R. Also determine the reactions at points S, T and U. (E = 200 GPa, ν = 0.3).
5 views (last 30 days)
Show older comments

0 Comments
Answers (1)
BhaTTa
on 11 Mar 2025 at 4:21
Hey @Bernard P Rayen, To determine the displacements and reactions for a 2D isotropic plate with uniform thickness, you'll typically need to solve a finite element analysis (FEA) problem, you can use the Partial Differential Equation (PDE) Toolbox or write a custom script using basic principles.
Below is a simplified example of how you might set up a MATLAB script to solve such a problem using the PDE Toolbox. This will involve defining the geometry, material properties, boundary conditions, and loads.
% Define material properties
E = 200e9; % Young's modulus in Pascals (200 GPa)
nu = 0.3; % Poisson's ratio
% Create a PDE model for structural mechanics
model = createpde('structural', 'static-planestress');
% Define the geometry (a simple rectangular plate for this example)
L = 1.0; % Length of the plate in meters
W = 0.5; % Width of the plate in meters
% Geometry definition
R1 = [3, 4, 0, L, L, 0, 0, 0, W, W]';
gd = R1;
ns = char('R1');
ns = ns';
sf = 'R1';
g = decsg(gd, sf, ns);
geometryFromEdges(model, g);
% Assign material properties
structuralProperties(model, 'YoungsModulus', E, 'PoissonsRatio', nu);
% Define boundary conditions
% Fix one edge (e.g., at x = 0)
structuralBC(model, 'Edge', 1, 'Constraint', 'fixed');
% Apply a load (e.g., uniformly distributed load at the opposite edge)
pressure = 1e6; % Pressure in Pascals
structuralBoundaryLoad(model, 'Edge', 3, 'SurfaceTraction', [pressure; 0]);
% Generate mesh
generateMesh(model, 'Hmax', 0.05);
% Solve the PDE
result = solve(model);
% Extract displacements
u = result.Displacement;
% Display results
figure
pdeplot(model, 'XYData', u.Magnitude, 'ZData', u.Magnitude, 'ColorMap', 'jet', 'Deformation', u)
title('Displacement Magnitude')
xlabel('X (m)')
ylabel('Y (m)')
colorbar
% Extract and display displacements at specific points P, Q, R
% Note: Replace [x, y] with actual coordinates of P, Q, R
points = [0.25, 0.25; 0.75, 0.25; 0.5, 0.4];
for i = 1:size(points, 1)
[ux, uy] = interpolateDisplacement(result, points(i, :));
fprintf('Displacement at point (%f, %f): Ux = %e, Uy = %e\n', points(i, 1), points(i, 2), ux, uy);
end
Hope it helps.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!