% Example: hooke
% ~~~~~~~~~~~~~~
% This program calculates the stresses or
% strains in a plate using Hooke's law.
%
% Data is defined in the declaration statements
% below, where:
%
% Emod - modulus of elasticity
% mu - Poisson's ratio
% ModRigid - modulus of rigidity
% Length - vector containing Lx, Ly, Lz
% Stress - vector containing stresses
% Strain - vector containing strains
%
% NOTES: 1) for Emod, mu, ModRigid only two
% values are required. Set the
% unknown one to zero and the program
% will calculate this value.
% 2) if stresses are provided, set the
% Strain input to empty vector. If
% strains are provided, set the
% Stress input to empty vector.
%
% User m functions required: none
%----------------------------------------------
clear;
%...Input definitions
Problem=3;
if Problem == 1
%...Strain, E, G given
Emod=30e6; mu=0; ModRigid=12e6;
Length=[96 144 0.25];
Stress=[]; Strain=[-.0008 -.0006 0];
elseif Problem == 2
%...Stress, E, mu given
Emod=2e11; mu=0.3; ModRigid=0;
Length=[1e-1 6e-3 7.5e-2];
Stress=[1.5e8 0 1e8]; Strain=[];
elseif Problem == 3
%...Stress, G, mu given
Emod=0; mu=1/3; ModRigid=18.75e9;
Length=[0.1 0.04 0.025];
Stress=[-1.8e8 -6e7 0]; Strain=[];
end
%...Calculate if necessary
if Emod == 0
Emod=2*ModRigid*(1+mu);
elseif mu == 0
mu=(Emod/(2*ModRigid))-1;
elseif ModRigid == 0
ModRigid=Emod/(2*(1+mu));
end
%...Calculate stresses or strains
if length(Stress) ~= 0
%...Find the strains
Strain(1)=1/Emod* ...
(Stress(1)-mu*(Stress(2)+Stress(3)));
Strain(2)=1/Emod* ...
(Stress(2)-mu*(Stress(1)+Stress(3)));
Strain(3)=1/Emod* ...
(Stress(3)-mu*(Stress(1)+Stress(2)));
elseif length(Strain) ~= 0
%...Find the stresses
fact=Emod/((1+mu)*(1-2*mu));
Stress(1)=fact*((1-mu)*Strain(1)+ ...
mu*Strain(2)+mu*Strain(3));
Stress(2)=fact*((1-mu)*Strain(2)+ ...
mu*Strain(1)+mu*Strain(3));
Stress(3)=fact*((1-mu)*Strain(3)+ ...
mu*Strain(1)+mu*Strain(2));
end
%...Change in lengths and final lengths
Delta=Strain.*Length; FLength=Length+Delta;
%...Area calculations
Area_xy=Length(1)*Length(2);
Area_xz=Length(1)*Length(3);
Area_yz=Length(2)*Length(3);
FArea_xy=FLength(1)*FLength(2);
FArea_xz=FLength(1)*FLength(3);
FArea_yz=FLength(2)*FLength(3);
DArea_xy=FArea_xy-Area_xy;
DArea_xz=FArea_xz-Area_xz;
DArea_yz=FArea_yz-Area_yz;
%...Volume calculations
Volume=prod(Length); FVolume=prod(FLength);
DVolume=FVolume-Volume;
%...Dilatation
Dilat=(1-2*mu)/Emod*sum(Stress);
fprintf( ...
'\n\nApplication of Hooke''s Law to Plates');
fprintf( ...
'\n------------------------------------');
fprintf('\n\nConstants:');
fprintf('\n Modulus of Elasticity: %g', Emod);
fprintf('\n Modulus of Rigidity: %g', ...
ModRigid);
fprintf('\n Poisson''s ratio: %g', mu);
fprintf('\n\nStresses:');
fprintf( '\n Sigma-x: %g',Stress(1));
fprintf( '\n Sigma-y: %g',Stress(2));
fprintf( '\n Sigma-z: %g',Stress(3));
fprintf('\n\nStrains:');
fprintf( '\n Epsilon-x: %g',Strain(1));
fprintf( '\n Epsilon-y: %g',Strain(2));
fprintf( '\n Epsilon-z: %g',Strain(3));
fprintf('\n\nLengths:');
fprintf( '\n Lx (original): %g',Length(1));
fprintf( '\n Ly (original): %g',Length(2));
fprintf( '\n Lz (original): %g',Length(3));
fprintf( '\n Lx (final): %g',FLength(1));
fprintf( '\n Ly (final): %g',FLength(2));
fprintf( '\n Lz (final): %g',FLength(3));
fprintf( '\n Lx (delta): %g',Delta(1));
fprintf( '\n Ly (delta): %g',Delta(2));
fprintf( '\n Lz (delta): %g',Delta(3));
fprintf('\n\nAreas:');
fprintf( '\n A-xy (original): %g',Area_xy);
fprintf( '\n A-xz (original): %g',Area_xz);
fprintf( '\n A-yz (original): %g',Area_yz);
fprintf( '\n A-xy (final): %g',FArea_xy);
fprintf( '\n A-xz (final): %g',FArea_xz);
fprintf( '\n A-yz (final): %g',FArea_yz);
fprintf( '\n A-xy (delta): %g',DArea_xy);
fprintf( '\n A-xz (delta): %g',DArea_xz);
fprintf( '\n A-yz (delta): %g',DArea_yz);
fprintf('\n\nVolumes:');
fprintf( '\n Original: %g',Volume);
fprintf( '\n Final: %g',FVolume);
fprintf( '\n Delta: %g',DVolume);
fprintf('\n\nDilatation: %g \n',Dilat);