function [] = genfrac()
%% This program is written to generate the DFN(discrete fracture networks)
%% By 渠文平, weifai@tom.com
%% 2005.12.23
%scatter (coordinatesx(1:number_x*number_y*4),coordinatesy(1:number_x*number_y*4));
%figure(gcf)
%for ii=1:number_x*number_y*4
% line([start_x(ii);end_x(ii)],[start_y(ii);end_y(ii)]);
%end
number_x=20; %X轴方向的微裂隙数量;
number_y=20; %Y轴方向的微裂隙数量;
%%Y-Z面的参数
lamda=1/153.139; %lamda为微裂隙间距指数分布的参数;
miu1=-35.239; %miu1为微裂隙方位角正态分布的参数;
sigma1=13.243; %sigma1为微裂隙方位角正态分布的参数;
miu2=70.128; %miu2为微裂隙方位角正态分布的参数;
sigma2=11.625; %sigma2为微裂隙方位角正态分布的参数;
miu_logn=2.843; %miu_logn为微裂隙长度指数正态分布的参数;
sigma_logn=1.2000; %sigma_logn为微裂隙长度指数正态分布的参数;
[start_x_yz,end_x_yz,start_y_yz,end_y_yz] = ...
montecarlo...
(number_x,number_y,lamda,miu1,sigma1,miu2,sigma2,miu_logn,sigma_logn);
%figure;
% for ii=1:number_x*number_y*4
% line([start_x_yz(ii);end_x_yz(ii)],[start_y_yz(ii);end_y_yz(ii)]);
% end
%%X-Y面的参数
lamda=1/195.312; %lamda为微裂隙间距指数分布的参数;
miu1=-69.412; %miu1为微裂隙方位角正态分布的参数;
sigma1=12.828; %sigma1为微裂隙方位角正态分布的参数;
miu2=64.200; %miu2为微裂隙方位角正态分布的参数;
sigma2=15.747; %sigma2为微裂隙方位角正态分布的参数;
miu_logn=3.1429; %miu_logn为微裂隙长度指数正态分布的参数;
sigma_logn=1.2077; %sigma_logn为微裂隙长度指数正态分布的参数;
[start_x_xy,end_x_xy,start_y_xy,end_y_xy] = ...
montecarlo...
(number_x,number_y,lamda,miu1,sigma1,miu2,sigma2,miu_logn,sigma_logn);
%figure;
% for ii=1:number_x*number_y*4
% line([start_x_xy(ii);end_x_xy(ii)],[start_y_xy(ii);end_y_xy(ii)]);
% end
%%X-Z面的参数
lamda=1/149.28; %lamda为微裂隙间距指数分布的参数;
miu1=-17.302; %miu1为微裂隙方位角正态分布的参数;
sigma1=15.367; %sigma1为微裂隙方位角正态分布的参数;
miu2=87.254; %miu2为微裂隙方位角正态分布的参数;
sigma2=18.935; %sigma2为微裂隙方位角正态分布的参数;
miu_logn=3.018; %miu_logn为微裂隙长度指数正态分布的参数;
sigma_logn=1.266; %sigma_logn为微裂隙长度指数正态分布的参数;
[start_x_xz,end_x_xz,start_y_xz,end_y_xz] = ...
montecarlo...
(number_x,number_y,lamda,miu1,sigma1,miu2,sigma2,miu_logn,sigma_logn);
%figure;
% for ii=1:number_x*number_y*4
% line([start_x_xz(ii);end_x_xz(ii)],[start_y_xz(ii);end_y_xz(ii)]);
% end
%%将模拟出来的微裂隙显示于三维空间表面上
%首先计算得到微结构体的八个顶点坐标
vertices_x_min=min([start_x_xz,end_x_xz]); % Min of X of one face
vertices_y_min=min([start_y_xz,end_y_xz]); % Min of Y of one face
vertices_x_max=max([start_x_xz,end_x_xz]); % Max of X of one face
vertices_y_max=max([start_y_xz,end_y_xz]); % Max of Y of one face
vertices_x_min=-3000;
vertex_matrix=[vertices_x_min,vertices_x_min,vertices_x_min;...
vertices_x_min,abs(vertices_x_min),vertices_x_min;...
vertices_x_min,abs(vertices_x_min),abs(vertices_x_min);...
vertices_x_min,vertices_x_min,abs(vertices_x_min);...
abs(vertices_x_min),vertices_x_min,vertices_x_min;...
abs(vertices_x_min),abs(vertices_x_min),vertices_x_min;...
abs(vertices_x_min),abs(vertices_x_min),abs(vertices_x_min);...
abs(vertices_x_min),vertices_x_min,abs(vertices_x_min)];
%%X-Z面的微裂隙点
for ii=1:number_x*number_y*4
if start_x_xz(ii)>abs(vertices_x_min)
start_x_xz(ii)=abs(vertices_x_min);
elseif start_x_xz(ii)<vertices_x_min
start_x_xz(ii)=vertices_x_min;
end
if start_y_xz(ii)>abs(vertices_x_min)
start_y_xz(ii)=abs(vertices_x_min);
elseif start_y_xz(ii)<vertices_x_min
start_y_xz(ii)=vertices_x_min;
end
vertex_matrix(8+ii,1)=start_x_xz(ii);
vertex_matrix(8+ii,2)=vertices_x_min;
vertex_matrix(8+ii,3)=start_y_xz(ii);
end
for ii=1:number_x*number_y*4
if end_x_xz(ii)>abs(vertices_x_min)
end_x_xz(ii)=abs(vertices_x_min);
elseif end_x_xz(ii)<vertices_x_min
end_x_xz(ii)=vertices_x_min;
end
if end_y_xz(ii)>abs(vertices_x_min)
end_y_xz(ii)=abs(vertices_x_min);
elseif end_y_xz(ii)<vertices_x_min
end_y_xz(ii)=vertices_x_min;
end
vertex_matrix(number_x*number_y*4+8+ii,1)=end_x_xz(ii);
vertex_matrix(number_x*number_y*4+8+ii,2)=vertices_x_min;
vertex_matrix(number_x*number_y*4+8+ii,3)=end_y_xz(ii);
end
%%Y-Z面的微裂隙点
for ii=1:number_x*number_y*4
if start_x_yz(ii)>abs(vertices_x_min)
start_x_yz(ii)=abs(vertices_x_min);
elseif start_x_yz(ii)<vertices_x_min
start_x_yz(ii)=vertices_x_min;
end
if start_y_yz(ii)>abs(vertices_x_min)
start_y_yz(ii)=abs(vertices_x_min);
elseif start_y_yz(ii)<vertices_x_min
start_y_yz(ii)=vertices_x_min;
end
vertex_matrix(number_x*number_y*4+...
number_x*number_y*4+8+ii,1)=vertices_x_min;
vertex_matrix(number_x*number_y*4+...
number_x*number_y*4+8+ii,2)=start_x_yz(ii);
vertex_matrix(number_x*number_y*4+...
number_x*number_y*4+8+ii,3)=start_y_yz(ii);
end
for ii=1:number_x*number_y*4
if end_x_yz(ii)>abs(vertices_x_min)
end_x_yz(ii)=abs(vertices_x_min);
elseif end_x_yz(ii)<vertices_x_min
end_x_yz(ii)=vertices_x_min;
end
if end_y_yz(ii)>abs(vertices_x_min)
end_y_yz(ii)=abs(vertices_x_min);
elseif end_y_yz(ii)<vertices_x_min
end_y_yz(ii)=vertices_x_min;
end
vertex_matrix(number_x*number_y*4+...
number_x*number_y*4+number_x*number_y*4+8+ii,1)=vertices_x_min;
vertex_matrix(number_x*number_y*4+...
number_x*number_y*4+number_x*number_y*4+8+ii,2)=end_x_yz(ii);
vertex_matrix(number_x*number_y*4+...
number_x*number_y*4+number_x*number_y*4+8+ii,3)=end_y_yz(ii);
end
%%X-Y面的微裂隙点
for ii=1:number_x*number_y*4
if start_x_xy(ii)>abs(vertices_x_min)
start_x_xy(ii)=abs(vertices_x_min);
elseif start_x_xy(ii)<vertices_x_min
start_x_xy(ii)=vertices_x_min;
end
if start_y_xy(ii)>abs(vertices_x_min)
start_y_xy(ii)=abs(vertices_x_min);
elseif start_y_xy(ii)<vertices_x_min
start_y_xy(ii)=vertices_x_min;
end
vertex_matrix(number_x*number_y*4*4+8+ii,1)=start_x_xy(ii);
vertex_matrix(number_x*number_y*4*4+8+ii,2)=start_y_xy(ii);
vertex_matrix(number_x*number_y*4*4+8+ii,3)=abs(vertices_x_min);
end
for ii=1:number_x*number_y*4
if end_x_xy(ii)>abs(vertices_x_min)
end_x_xy(ii)=abs(vertices_x_min);
elseif end_x_xy(ii)<vertices_x_min
end_x_xy(ii)=vertices_x_min;
end
if end_y_xy(ii)>abs(vertices_x_min)
end_y_xy(ii)=abs(vertices_x_min);
elseif end_y_xy(ii)<vertices_x_min
end_y_xy(ii)=vertices_x_min;
end
vertex_matrix(number_x*number_y*4*5+8+ii,1)=end_x_xy(ii);
vertex_matrix(number_x*number_y*4*5+8+ii,2)=end_y_xy(ii);
vertex_matrix(number_x*number_y*4*5+8+ii,3)=abs(vertices_x_min);
end
%%微结构体的微裂隙点
faces_matrix=[1 2 3 4;...
3 4 8 7;...
5 8 7 8;...
1 2 6 5;
1 4 8 5;
2 3 7 6];
%%X-Z面的微裂隙点
for ii=1:number_x*number_y*4
faces_matrix(ii+6,1)=ii+8;
faces_matrix(ii+6,2)=number_x*number_y*4+ii+8;
faces_matrix(ii+6,3)=NaN;
faces_matrix(ii+6,4)=NaN;
end
%%Y-Z面的微裂隙点
for ii=1:number_x*number_y*4
faces_matrix(number_x*number_y*4+ii+6,1)=...
number_x*number_y*4+number_x*number_y*4+ii+8;
faces_matrix(number_x*number_y*4+ii+6,2)=...
number_x*number_y*4+number_x*number_y*4+number_x*number_y*4+ii+8;
faces_matrix(number_x*number_y*4+ii+6,3)=NaN;
faces_matrix(number_x*number_y*4+ii+6,4)=NaN;
end
%%X-Y面的微裂隙点
for ii=1:number_x*number_y*4
faces_matrix(number_x*number_y*4+...
number_x*number_y*4+ii+6,1)=number_x*number_y*4*4+ii+8;
faces_matrix(number_x*number_y*4+...
number_x*number_y*4+ii+6,2)=number_x*number_y*4*5+ii+8;
- 1
- 2
- 3
- 4
- 5
- 6
前往页