混凝土随机球形骨料球体蒙特卡洛随机分布模型.rar

  • nicolasTU
    了解作者
  • matlab
    开发工具
  • 18.9MB
    文件大小
  • rar
    文件格式
  • 3
    收藏次数
  • 10 积分
    下载积分
  • 106
    下载次数
  • 2018-05-20 22:50
    上传日期
目前三维的混凝土建模很少见,随机球形骨料在受限空间(球体)随机分布模型,本人自己编写,具有原创性。动画显示建模过程。三种粒径不同的骨料随机分布。模拟混凝土材料的过程。有助于后续有限元计算。
混凝土随机球形骨料球体蒙特卡洛随机分布模型.rar
  • 随机球形骨料在受限空间(球体)随机分布模型
  • ConcreteBone_3D3.m
    3.5KB
  • 混凝土复合材料随机球形骨料在受限空间(球体)随机分布模型.jpg
    37.5KB
  • 混凝土复合材料随机球形骨料在受限空间(球体)随机分布模型动画.gif
    5.3MB
  • 混凝土复合材料随机球形骨料在受限空间(立方体)随机分布模型.gif
    21.1MB
  • 500个随机球形骨料在受限空间(球体)随机分布模型动画.gif
    4.8MB
内容介绍
function [Sph]=ConcreteBone_3D3 %500个随机球形骨料在受限空间(球体)随机分布模型,球体内随机分布三维球形随机骨料,可以随意控制骨料体积比 clear all close all clc %球体 Pi=3.1415926; Range=zeros(3,1);%3行1列 Range(1,1)=0;%球体X轴坐标,1行1列 Range(2,1)=0;%球体Y轴坐标,2行1列 Range(3,1)=0;%球体Z轴坐标,3行1列 centerx=[0];%球体X轴坐标 centery=[0];%球体Y轴坐标 centerz=[0];%球体Z轴坐标 R=150;%球体半径 [x,y,z]=sphere(20)%球体包含20*20个面 surf(R*x+centerx,R*y+centery,R*z+centerz,'FaceColor','g','LineStyle','none','FaceAlpha','0.1'); hold on R1max=5; R1min=4; R2max=4; R2min=2.5; R3max=2.5; R3min=1.5; P=0.1;%孔隙率 p1=0.3;%R1粒径孔隙率 p2=0.5;%孔隙率 p3=0.3;%R3孔隙率 m=0; V=0; for i=1:500%500随机骨料示例 x=(2*rand(1)-1)*(R-Range(1,1))+Range(1,1);%2*rand(1)-1生成[-1,1]内的随机数 y=(2*rand(1)-1)*(R-Range(2,1))+Range(2,1); z=(2*rand(1)-1)*(R-Range(3,1))+Range(3,1); if (V<=(Pi*4./3)*150^3*P*p1) r=rand(1)*(R1max-R1min)+R1min;%(Pi*4./3)*150^3*P*p1)球体体积 elseif (V>(Pi*4./3)*150^3*P*p1 && V<=(Pi*4./3)*150^3*P*(p1+p2)) r=rand(1)*(R2max-R2min)+R2min; else (V>(Pi*4./3)*150^3*P*(p1+p2) && V<=(Pi*4./3)*150^3*P*(p1+p2+p3)); r=rand(1)*(R3max-R3min)+R3min; end v=4/3*pi*r.^3; if -150<=-sqrt((x)^2+(y)^2+(z)^2) && sqrt((x)^2+(y)^2+(z)^2)<=150; if ((abs(x)-r)>Range(1,1) && x+r<R) && (abs(y)-r>Range(2,1))&&(y+r<R)&&(abs(z)-r>Range(3,1)&& z+r<R) if m==0 m=m+1; Sph(m,:)=[x y z r v V]; else n=0; for j=1:m D=sqrt((Sph(j,1)- x)^ 2+(Sph(j,2)- y)^ 2+(Sph(j,3)- z)^ 2); if D<r+Sph(j,4) break; else n=n+1; end if n==m m=m+1; V=V+Sph(j,5); Sph(m,:)=[x y z r v V]; end end end end end if V>150^3*P break; end end [xx,yy,zz]=sphere(20); filename ='500个随机球形骨料在受限空间(球体)随机分布模型动画.gif'; f = getframe(gcf); IM = frame2im(f); [IM,map] = rgb2ind(IM,256); imwrite(IM,map,filename,'gif','WriteMode','append','DelayTime',0.0002); for i=1:m surf(xx*Sph(i,4)+Sph(i,1),yy*Sph(i,4)+Sph(i,2),zz*Sph(i,4)+Sph(i,3)); box on%box on 显示围绕当前坐标区的框轮廓。此选项将当前坐标区的 Box 属性设置为 'on'。 ax = gca;%返回当前图窗的当前坐标区或图,这通常是最后创建的图窗或用鼠标点击的最后一个图窗。图形函数(例如 title)的目标为当前坐标区或图。可以使用 ax 访问和修改该坐标区或图的属性。如果该坐标区或图不存在,gca 将创建笛卡尔坐标区。 ax.BoxStyle = 'full';%通过将 BoxStyle 属性设置为 'full',显示围绕整个坐标区的轮廓。 ax.XColor = 'red';%通过设置坐标区的 XColor 属性,更改 x 轴方向的框轮廓的颜色。 ax.YColor = 'm'; ax.ZColor = 'b'; ax.LineWidth = 0.5;%轴轮廓、刻度线和网格线的宽度 colorbar; axis image, view(3) title('500个随机球形骨料在受限空间(球体)随机分布模型');% hold on; f = getframe(gcf); IM = frame2im(f); [IM,map] = rgb2ind(IM,256); imwrite(IM,map,filename,'gif','WriteMode','append','DelayTime',0.0002); % 使用 append mode 时*.gif必须是已经存在的; %解决方法一:如上所说先使用 overwrite mode ,之后再改回 append mode,这种方法可以,但是由于是附加操作,这样制作出了的gif的第一帧和最后一帧是一样的。 %解决方法二: 在使用 append mode,前加一条语句来创建*.gif文件,但要保证只在第一帧时创建. end
评论
    相关推荐