Laminate
介绍
Laminate类用于层合板校核分析,集成了Practical Micromechanics of Composite Materials一书中部分的开源代码$^{[1]}$。该类用经典的复合材料层合板理论进行校核,可以初步对层合板进行选型计算,但在实际工程中还是要考虑将实际几何和边界考虑进仿真中。
类结构

输入 input:
- Load : 载荷
- Tply : 铺层厚度
- Plymat : 铺层材料
- Orient : 铺层角度
参数 params:
- Name :名称
- Material : 材料
- Ctiterion : 失效准则
输出 output :
Geometry : 几何
LamResult : 壳单元装配
Safety : 截面
Plymat : 实体网格
能力 capacity :
- SF1 : 总体极限安全系数
案例
Compare to ANSYS ACP (Flag=1)
此案例用Workbench ACP和Laminate类比较了几种比较常见的铺层方式(对称、反对称等)下层合板宏观力学参数,材料属性为E-Glass/Epoxy, 参数如下。
Density | Ex | Ey | Ez | Gxy | Gyz | Gxz | $\mu_{xy}$ | $\mu_{yz}$ | $\mu_{xz}$ |
---|---|---|---|---|---|---|---|---|---|
$t/mm^3$ | $MPa$ | $MPa$ | $MPa$ | $MPa$ | $MPa$ | $MPa$ | |||
1.987e-9 | 44000 | 13400 | 13400 | 5000 | 4600 | 5000 | 0.27 | 0.45 | 0.45 |
S=RMaterial('Composite');
mat=GetMat(S,5);
type=1;
switch type
case 1
% Symmetric layout 1
inputStruct.Orient=[0,90,90,0]';
inputStruct.Tply=repmat(0.15,4,1);
inputStruct.Plymat=ones(4,1);
case 2
% Symmetric layout 2
inputStruct.Orient=[30,45,0,0,30,45]';
inputStruct.Tply=epmat(0.15,6,1);
inputStruct.Plymat=ones(6,1);
case 3
% Antisymmetric layout 1
inputStruct.Orient=[-45,30,-30,45]';
inputStruct.Tply=repmat(0.15,4,1);
inputStruct.Plymat=ones(4,1);
case 4
% Antisymmetric layout 2
inputStruct.Orient=[45,-60,-30,30,60,-45]';
inputStruct.Tply=repmat(0.15,6,1);
inputStruct.Plymat=ones(6,1);
end
inputStruct.Load.Type = [2, 2, 2, 2, 2, 2];
inputStruct.Load.Value = [15, 0, 0, 0, 0, 0];
% inputStruct.Load.Value = [0, 0, 0, 15, 0, 0];
paramsStruct.Material=mat;
L= plate.Laminate(paramsStruct, inputStruct);
L=L.solve();
PlotResult(L);
PlotResult(L,'MC',1);
PlotLaminateProperty(L);




UD laminate with 45° (Flag=2)
S=RMaterial('Composite');
mat=GetMat(S,22);
inputStruct.Orient=45;
inputStruct.Tply=0.15;
inputStruct.Plymat=1;
inputStruct.Load.Type = [2, 2, 2, 2, 2, 2];
inputStruct.Load.Value = [1, 0, 0, 0, 0, 0];
paramsStruct.Material=mat;
L= plate.Laminate(paramsStruct, inputStruct);
L=L.solve();
PlotResult(L);
A Matrix :.
1.0e+03 *
2.8580 1.8230 1.2236
1.8230 2.8580 1.2236
1.2236 1.2236 1.8656
B Matrix :.
0 0 0
0 0 0
0 0 0
D Matrix :.
5.3587 3.4181 2.2942
3.4181 5.3587 2.2942
2.2942 2.2942 3.4980
Laminate effective properties :.
Ex Ey Nuxy Gxy Alpha_x Alpha_y Alpha_xy.
10325.6102 10325.6102 0.496465246 8172.6842 1.792e-05 1.792e-05

Cross ply (Flag=3)
S=RMaterial('Composite');
mat=GetMat(S,21);
type=3;
switch type
case 1
inputStruct.Orient=[0,90,90,0]';
case 2
inputStruct.Orient=[90,0,0,90]';
case 3
inputStruct.Orient=[0,0,90,90]';
end
inputStruct.Tply=repmat(0.15,4,1);
inputStruct.Plymat=ones(4,1);
inputStruct.Load.Type = [2, 2, 2, 2, 2, 2];
% inputStruct.Load.Value = [1, 0, 0, 0, 0, 0];
inputStruct.Load.Value = [0, 0, 0, 1, 0, 0];
paramsStruct.Material=mat;
L= plate.Laminate(paramsStruct, inputStruct);
L=L.solve();
PlotResult(L);

Plot material coordinate laminate results (Flag=4)
S=RMaterial('Composite');
mat=GetMat(S,21);
inputStruct.Orient=[45,-45,-45,45]';
inputStruct.Tply=repmat(0.15,4,1);
inputStruct.Plymat=ones(4,1);
inputStruct.Load.Type = [2, 2, 2, 2, 2, 2];
inputStruct.Load.Value = [0, 0, 0, 1, 0, 0];
paramsStruct.Material=mat;
L= plate.Laminate(paramsStruct, inputStruct);
L=L.solve();
PlotResult(L);
PlotResult(L,'MC',1);
A Matrix :.
1.0e+04 *
2.7401 2.1209 0.0000
2.1209 2.7401 0.0000
0.0000 0.0000 2.2626
B Matrix :.
1.0e-12 *
-0.2274 0 0.2274
0 -0.2274 0.2274
0.2274 0.2274 -0.2274
D Matrix :.
822.0321 636.2721 468.9640
636.2721 822.0321 468.9640
468.9640 468.9640 678.7924
Laminate effective properties :.
Ex Ey Nuxy Gxy Alpha_x Alpha_y Alpha_xy.
18307.9217 18307.9217 0.774023421 37710.6905 2.11507815e-06 2.11507815e-06
![]() | ![]() |
Calculate UD lamminate failure Criterion (Flag=5)
S=RMaterial('Composite');
mat=GetMat(S,21);
type=2;
switch type
case 1
inputStruct.Orient=0;
inputStruct.Tply=1;
inputStruct.Plymat=1;
case 2
inputStruct.Orient=45;
inputStruct.Tply=1;
inputStruct.Plymat=1;
end
inputStruct.Load.Type = [2, 2, 2, 2, 2, 2];
inputStruct.Load.Value = [1000, 0, 0, 0, 0, 0];
paramsStruct.Material=mat;
paramsStruct.Criterion=7;% Change method to get different results
L= plate.Laminate(paramsStruct, inputStruct);
L=L.solve();
PlotResult(L,'MC',1);
A Matrix :.
1.0e+04 *
4.5668 3.5348 3.4738
3.5348 4.5668 3.4738
3.4738 3.4738 3.7711
B Matrix :.
0 0 0
0 0 0
0 0 0
D Matrix :.
1.0e+03 *
3.8057 2.9457 2.8948
2.9457 3.8057 2.8948
2.8948 2.8948 3.1426
Laminate effective properties :.
Ex Ey Nuxy Gxy Alpha_x Alpha_y Alpha_xy.
12848.2864 12848.2864 0.244988988 7921.01413 1.545e-05 1.545e-05
Successfully add output geometry .
Successfully Calculate Laminate safety .
Laminate min MoS :
-0.9123
-0.9123
Laminate min SF :
0.0877
0.0877
Calculate lamminate [60,-60,0]s failure Criterion (Flag=6)
S=RMaterial('Composite');
mat=GetMat(S,21);
inputStruct.Orient=[60;-60;0;0;-60;60];
inputStruct.Tply=repmat(0.15,6,1);
inputStruct.Plymat=ones(6,1);
inputStruct.Load.Type = [2, 2, 2, 2, 2, 2];
% inputStruct.Load.Value = [300, 0, 0, 0, 0, 0];
inputStruct.Load.Value = [0, 300, 0, 0, 0, 0];
paramsStruct.Material=mat;
paramsStruct.Criterion=5;% Change method to get different results
L= plate.Laminate(paramsStruct, inputStruct);
L=L.solve();
PlotResult(L,'MC',1);
A Matrix :.
1.0e+04 *
5.5749 1.7166 -0.0000
1.7166 5.5749 -0.0000
-0.0000 -0.0000 1.9292
B Matrix :.
1.0e-12 *
-0.6821 0 0.3411
0.4547 0.9095 0.4547
0.3411 0.4547 0.4547
D Matrix :.
1.0e+03 *
1.4478 1.5981 0.4317
1.5981 5.1995 1.1928
0.4317 1.1928 1.7416
Laminate effective properties :.
Ex Ey Nuxy Gxy Alpha_x Alpha_y Alpha_xy.
56070.9982 56070.9982 0.307909847 21435.3452 2.11507815e-06 2.11507815e-06
Successfully add output geometry .
Successfully Calculate Laminate safety .
Laminate min MoS :
0.9730
0.9730
0.9730
0.9730
-0.0052
-0.0052
-0.0052
-0.0052
0.9730
0.9730
0.9730
0.9730
Laminate min SF :
1.9730
1.9730
1.9730
1.9730
0.9948
0.9948
0.9948
0.9948
1.9730
1.9730
1.9730
1.9730

Ply-level failure envelopes (Flag=7)
S=RMaterial('Composite');
mat=GetMat(S,21);
Type=2;
switch Type
case 1
inputStruct.Orient=0;
inputStruct.Tply=1;
inputStruct.Plymat=1;
case 2
inputStruct.Orient=[60;-60;0;0;-60;60];
inputStruct.Tply=repmat(0.15,6,1);
inputStruct.Plymat=ones(6,1);
end
paramsStruct.Material=mat;
Env=NaN(37,6);
for i=1:37
theta=(i-1)*10;
inputStruct.Load.Type = [2, 2, 2, 2, 2, 2];
inputStruct.Load.Value = [cos(theta/180*pi), sin(theta/180*pi), 0, 0, 0, 0];
for j=1:6
paramsStruct.Criterion=j;
L= plate.Laminate(paramsStruct, inputStruct);
L=L.solve();
Env(i,j)=min(L.output.Safety.SFmin);
end
end
% Plot Env
x=0:360/36:360;
Env=mat2cell(Env',ones(1,6));
g=Rplot('x',x','y',Env,'Color',{'MaxStress','MaxStrain','TsaiHill','Hoffman','TasiWu','Hashin'});
g=geom_radar(g);
g=set_title(g,'Ply Eenvelopes');
g=set_names(g,'column','Origin','color','Criterion');
figure('Position',[100 100 800 400]);
draw(g)

参考文献
[1] Practical Micromechanics of Composite Materials
本网站基于Hexo 3-Hexz主题生成。如需转载请标注来源,如有错误请批评指正,欢迎邮件至 392176462@qq.com