Skip to content

Commit

Permalink
multilayer stress & strength
Browse files Browse the repository at this point in the history
  • Loading branch information
anamewing committed Dec 24, 2012
1 parent efd935c commit b0fe248
Show file tree
Hide file tree
Showing 8 changed files with 92 additions and 7 deletions.
13 changes: 13 additions & 0 deletions HillcaiStrength2.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
function val=HillcaiStrength(stress,strength,theta)
%safe if return true
%use xt,yt as x,y

stress=getRotateMatrix(-theta)*stress;
s1=stress(1);
s2=stress(2);
s12=stress(3);
X=strength.xt;
Y=strength.yt;
S=strength.s;
val=(s1^2/X^2-s1*s2/X^2+s2^2/Y^2+s12^2/S^2-1);
end
8 changes: 8 additions & 0 deletions findLayerZ.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
function i=findLayerZ(layerz,z)
lz=size(layerz);
lz=lz(1);
for i=1:lz
if z<layerz(i,2)
return
end
end
26 changes: 24 additions & 2 deletions getBoardStiffness.m
Original file line number Diff line number Diff line change
@@ -1,9 +1,31 @@
function [Ak,Bk,Dk]=getBoardStiffness(material,theta,z1,z2)
function [Ak,Bk,Dk]=getBoardStiffness(material,theta,z1,z2,brokenFlag)
%theta rad
%z2>z1
S=getMaterialMatrixS(material);
T=getRotateMatrix(theta);
Qk=T*inv(S)*inv(T);
Qk=inv(S);

if brokenFlag>0
if brokenFlag>=4
Qk(3,3)=0;
brokenFlag=brokenFlag-4;
end
if brokenFlag>=2
Qk(:,2)=zeros(3,1);
Qk(2,:)=zeros(3,1)';
Qk(3,3)=0;
brokenFlag=brokenFlag-2;
end
if brokenFlag>=1
Qk(:,1)=zeros(3,1);
Qk(1,:)=zeros(3,1)';
Qk(3,3)=0;
brokenFlag=brokenFlag-1;
end
end

Qk=T*Qk*(T)';

Ak=Qk*(z2-z1);
Bk=Qk/2*(z2^2-z1^2);
Dk=Qk/3*(z2^3-z1^3);
20 changes: 20 additions & 0 deletions getBrokenFlag.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
function BrokenFlag=getBrokenFlag(thisBrokenResult,stress,strength,theta)
%syms Nx
BrokenFlag=0;
stress=subs(stress,thisBrokenResult);
T=getRotateMatrix(-theta);
stress=abs((T)*stress);
if stress(1)>strength.xt*0.7
BrokenFlag=bitor(BrokenFlag,1);
end
if stress(2)>strength.yt*0.7
BrokenFlag=bitor(BrokenFlag,2);
end
if stress(3)>strength.s*0.7
BrokenFlag=bitor(BrokenFlag,4);
end

if BrokenFlag==0
warning('something wrong in broken calculate');
end
end
2 changes: 1 addition & 1 deletion getGeneralizedStrainForMultilayer.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
function GeneralizedStrain=getGeneralizedStrainForMultilayer(A,B,D,load)
Q=[A,B;B,D];
es=inv(Q)*[load.Nx;load.Ny;load.Nxy;load.Mx;load.My;load.Mxy];
GeneralizedStrain=struct('e0x',es(1),'e0y',es(2),'e0xy',es(3),'kx',es(4),'ky',es(5),'kxy',es(6));
GeneralizedStrain=struct('e0x',es(1,:),'e0y',es(2,:),'e0xy',es(3,:),'kx',es(4,:),'ky',es(5,:),'kxy',es(6,:));
end
9 changes: 5 additions & 4 deletions getMultilayerStiffness.m
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
function [A,B,D]=getMultilayerStiffness(materials,theta,z)
function [A,B,D]=getMultilayerStiffness(materials,theta,z,brokenFlag)
%array input

if (length(materials)~=(length(z)-1))||(length(materials)~=(length(theta)))
lz=size(z);
lz=lz(1);
if (length(materials)~=(lz))||(length(materials)~=(length(theta)))||(length(materials)~=(length(brokenFlag)))
return
end

Expand All @@ -10,7 +11,7 @@
D=zeros(3);

for i=1:length(materials)
[Ak,Bk,Dk]=getBoardStiffness(materials(i),theta(i),z(i),z(i+1));
[Ak,Bk,Dk]=getBoardStiffness(materials(i),theta(i),z(i,1),z(i,2),brokenFlag(i));
A=A+Ak;
B=B+Bk;
D=D+Dk;
Expand Down
7 changes: 7 additions & 0 deletions getPointStrain.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
function PointStrain=getPointStrain(GeneralizedStrain,z)
PointStrain=[GeneralizedStrain.e0x+z*GeneralizedStrain.kx;
GeneralizedStrain.e0y+z*GeneralizedStrain.ky;
GeneralizedStrain.e0xy+z*GeneralizedStrain.kxy;];


end
14 changes: 14 additions & 0 deletions plotBroken.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
function plotBroken(BrokenResult,exAfterBroken,exBeforeBroken)
hold on

xlabel('\epsilon_x')
ylabel('N_x')

for i=1:length(BrokenResult)-1
plot([exAfterBroken(i),exBeforeBroken(i)],[BrokenResult(i),BrokenResult(i+1)],'-')
plot(exBeforeBroken(i),BrokenResult(i+1),'s')
plot(exAfterBroken(i),BrokenResult(i),'*')
%arrow([exAfterBroken(i),BrokenResult(i)],[exBeforeBroken(i),BrokenResult(i+1)])
end

end

0 comments on commit b0fe248

Please sign in to comment.