vibration of square plate -凯发k8网页登录
this example shows how to calculate the vibration modes and frequencies of a 3-d simply supported, square, elastic plate.
the dimensions and material properties of the plate are taken from a standard finite element benchmark problem published by nafems, fv52 (see reference).
first, create a structural model container for your 3-d modal analysis problem. this is a container that holds the geometry, properties of the material, body loads, boundary loads, boundary constraints, and mesh.
model = createpde("structural","modal-solid");
import an stl file of a simple plate model using the importgeometry
function. this function reconstructs the faces, edges, and vertices of the model. it can merge some faces and edges, so the numbers can differ from those of the parent cad model.
importgeometry(model,"plate10x10x1.stl");
plot the geometry and turn on face labels. you need the face labels when defining the boundary conditions.
figure hc = pdegplot(model,"facelabels","on"); hc(1).facealpha = 0.5; title("plate with face labels")
define the elastic modulus of steel, poisson's ratio, and the material density.
structuralproperties(model,"youngsmodulus",200e9, ... "poissonsratio",0.3, ... "massdensity",8000);
in this example, the only boundary condition is the zero -displacement on the four edge faces. these edge faces have labels 1 through 4.
structuralbc(model,"face",1:4,"zdisplacement",0);
create and plot a mesh. specify the target minimum edge length so that there is one row of elements per plate thickness.
generatemesh(model,"hmin",1.3); figure pdeplot3d(model); title("mesh with quadratic tetrahedral elements");
for comparison with the published values, load the reference frequencies in hz.
reffreqhz = [0 0 0 45.897 109.44 109.44 167.89 193.59 206.19 206.19];
solve the problem for the specified frequency range. define the upper limit as slightly larger than the highest reference frequency and the lower limit as slightly smaller than the lowest reference frequency.
maxfreq = 1.1*reffreqhz(end)*2*pi;
result = solve(model,"frequencyrange",[-0.1 maxfreq]);
calculate frequencies in hz.
freqhz = result.naturalfrequencies/(2*pi);
compare the reference and computed frequencies (in hz) for the lowest 10 modes. the lowest three mode shapes correspond to rigid-body motion of the plate. their frequencies are close to zero.
tfreqhz = table(reffreqhz.',freqhz(1:10)); tfreqhz.properties.variablenames = {'reference','computed'}; disp(tfreqhz);
reference computed _________ __________ 0 3.9008e-05 0 8.2355e-06 0 1.2619e-05 45.897 44.871 109.44 109.74 109.44 109.77 167.89 168.59 193.59 193.74 206.19 207.51 206.19 207.52
you see good agreement between the computed and published frequencies.
plot the third component (-component) of the solution for the seven lowest nonzero-frequency modes.
h = figure; h.position = [100,100,900,600]; numtoprint = min(length(freqhz),length(reffreqhz)); for i = 4:numtoprint subplot(4,2,i-3); pdeplot3d(model,"colormapdata",result.modeshapes.uz(:,i)); axis equal title(sprintf(['mode=%d, z-displacement\n', ... 'frequency(hz): ref=%g fem=%g'], ... i,reffreqhz(i),freqhz(i))); end
reference
[1] national agency for finite element methods and standards. the standard nafems benchmarks. united kingdom: nafems, october 1990.