Simple compression of cylinder- results of finite element model don't make sense

14 views (last 30 days)
I am trying to simulate the steady state compression of a cylinder using finite element analysis. The model that I have runs, but the results don't make sense to me. It seems that the cylinder flattens almost down to zero height, no matter how weak of the compression force or how stiff the cylinder's material. I am a beginner to solid mechanics so perhaps this has to do with solving at steady state, or alternatively is there an error in my model that I am not able to see?
%% Declare pde
model = createpde('structural','static-solid'); %declare the model and physics
%% Cylindrical geometry
gm = multicylinder(0.025,0.025); %25mm diameter, 25mm height
model.Geometry = gm; %assign the cylinder to the model
generateMesh(model); %mesh the model
%Plot the geometry
%% Mesh it
fineness = 5e-3; %1mm element size, roughly
%Plot the mesh
title('Mesh with Quadratic Tetrahedral Elements');
%% Define material props
%% Define boundary conditions
structuralBC(model,'Face',1,'Constraint','fixed'); %bottom of cylinder is fixed
load = 1; % applied pressure in Pascals
structuralBoundaryLoad (model,'Face',2,'SurfaceTraction',[0;0;-load]); %Front face has a distributed load in minus z direction (compression force)
%% Solve
result = solve(model);
%% Plot the deformed object
pdeplot3D(model,'ColorMapData',result.VonMisesStress, 'Deformation',result.Displacement)
axis on
cylinder mesh.png
cylinder deformation and stress.png
  1 Comment
Clay Swackhamer
Clay Swackhamer on 8 Apr 2019
Update: I think that the problem is how I am applying the boundary condition to the bottom of the cylinder. I would like to simulated compression of a soft cylinder against a ridid plate. Can I specify that this boundary should be supported (ie a normal force updards to maintain static equilibrium) without requiring that the edges of the cylinder cannot spread out?

Sign in to comment.

Accepted Answer

Ravi Kumar
Ravi Kumar on 8 Apr 2019
Hi Clay,
Your BCs are correct. I think the load you are applying is resulting in very small defomration. This is causing the default scaling factor to be very large and deforming the plot excessively. You can fix by applying the correct magnitude. If that still does not resolve the plot the stress with out 'Deformation' option and then manually find a appropriate sclae factor to observed the deformation by trying out few values as:
pdeplot3D(model,'ColorMapData',result.VonMisesStress, 'Deformation',result.Displacement,'DeformationScaleFactor',1)

More Answers (0)




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!