This commit is contained in:
xinxiao
2026-03-13 11:24:41 +08:00
commit 04e2bb29c7
238 changed files with 29102 additions and 0 deletions
+735
View File
@@ -0,0 +1,735 @@
function [ matrixvsfra,connectmf,fracnumber,fracstart,corevsfra,connect_infrac,N,T,zf,fcinff,vf,porf,fcff] = connections_PEDFM_new( fracturemesh,pointvsregion,raopoint,f,nf,nx,ny,nz,kx,ky,kz,kf,wf,Porf,dxv,dyv,dzv,coord,nodes,NTG,addflag,frac_information,coordinates)
%
%
%
%connections
%:xink矩阵去掉零行后
%:
%:
%matrixvsfra矩阵代表基质网格中包含裂缝网格编号的情况
%fracnumber矩阵
%areavsfra矩阵
%
%lengthvsfra矩阵
%corevsfra矩阵
%disvsfra矩阵
matrixvsfra=zeros(nx*ny*nz,10);%10
fracnumber=zeros(1000,20);%1000
%m=size(xink,1);
rownum=zeros(nf,1);
for i=1:nf
rownum(i)=size(fracturemesh{i,1},1);
end
%%
q=1;
fracstart=zeros(nf+1,1);%
for j=1:nf
fracstart(j)=q;
numofmesh=pointvsregion{j,1};
for i=1:1:rownum(j)
if(norm(fracturemesh{j,1}(i,:))~=0)
raoindice=size(fracturemesh{j,1}(i,:),2);
fracnumber(q,1:raoindice)=fracturemesh{j,1}(i,:);%q即是该裂缝编号
m=floor((i+(2^addflag(j)-1))/(2^addflag(j)));
indice=find(matrixvsfra(numofmesh(m),:)~=0);
% indice=find(matrixvsfra(numofmesh(i),:)~=0);
if (size(indice,2)==0) xiang=1;
else
rao=max(indice');
xiang=rao(1)+1;
end
matrixvsfra(numofmesh(m),xiang)=q;%
q=q+1;
end
end
end
fracstart(nf+1)=q;%+1
fracnumber(q:1000,:)=[];
%% ,
m=size(matrixvsfra,1);
connectmf=cell(1,4);
% for i=1:m
% if (norm(matrixvsfra(i,:))~=0)
% ConnecS = cell(1,4);
cc = 0;
cl = 1;
for i = 1 : m
%
% if ~isempty(matrixvsfra(i,:))
if (norm(matrixvsfra(i,:)))~=0
cc = cc + 1;
%
connectmf{cc,1} = i;
%/
A=matrixvsfra(i,:);
A(A==0)=[];
connectmf{cc,2} =A;
end
end
%%
% edgevsfra=cell(nf,1);
normalvec=zeros(q-1,3);%unit
areavsfra=zeros(q-1,1);%q-1
lengthvsfra=zeros(q-1,10);
Kf=zeros(q-1,1);%
Wf=zeros(q-1,1);%
corevsfra=zeros(q-1,3);
disvsfra=zeros(q-1,10);
tran=zeros(q-1,10);
avtran=zeros(q-1,1);%
fcinff=zeros(q-1,1);%
zf=zeros(q-1,1);%
vf=zeros(q-1,1);%
porf=zeros(q-1,1);%
for i=1:1:q-1 %
if i == 41
flag = 1;
end
if(norm(fracnumber(i,:))==0) break;
else
for k=2:(nf+1)
if(i<fracstart(k)) fcinff(i)=k-1; break;%,k-1
end
end
d3intersection=raopoint{k-1,1};
anothersection=raopoint{k-1,2};
fraindice=find(fracnumber(i,:)~=0);
rx=size(fraindice,2);
for j = 1:1:(rx-1)
corevsfra(i,:)=1/(rx-1)*d3intersection(fracnumber(i,j),:)+corevsfra(i,:);%
end
for j=1:1:(rx-1)
%edgevsfra(i,(4*j-3):(4*j))=[fracnumber(i,j),fracnumber(i,j+1),fracnumber(i,j+1),fracnumber(i,j)];%edgevsfra矩阵赋值
%%2
%2线
normalvec(i,:)=cross(f(5*(k-1)-3,:),f(5*(k-1)-2,:))/norm(cross(f(5*(k-1)-3,:),f(5*(k-1)-2,:)));
areavsfra(i)=area(anothersection(fracnumber(i,1:(rx-1))',:) ,f(5*(k-1)-3,:),f(5*(k-1)-2,:) );%
vf(i)=areavsfra(i)*wf(k-1);
porf(i)=Porf(k-1);
Wf(i,1)=wf(k-1);
Kf(i,1)=kf(k-1);
lengthvsfra(i,j)=norm(d3intersection(fracnumber(i,j+1),:)-d3intersection(fracnumber(i,j),:));%
% corevsfra(i,:)=1/(rx-1)*d3intersection(fracnumber(i,j),:)+corevsfra(i,:);%
zf(i)=corevsfra(i,3);%
rao1=corevsfra(i,:)-d3intersection(fracnumber(i,j),:);
rao2=d3intersection(fracnumber(i,j+1),:)-d3intersection(fracnumber(i,j),:);
disvsfra(i,j)=norm(cross(rao1',rao2'))/norm(rao2);%
tran(i,j)=kf(k-1)*wf(k-1)*lengthvsfra(i,j)./disvsfra(i,j);
end
avtran(i)=sum(tran(i,:))/(rx-1);
end
end
% %% cell数组及其它形状信息
% fcff=cell(1,8);
% fcff{1,1}=fracnumber; fcff{1,2}=fcinff;fcff{1,3}=lengthvsfra;fcff{1,4}=corevsfra;fcff{1,5}=disvsfra;fcff{1,6}=tran;fcff{1,7}=avtran;fcff{1,8}=areavsfra;
%%
maxarea=max(areavsfra,2);
% minlength=min(lengthvsfra,[],2);
% maxlength=max(lengthvsfra,[],2);
newnum=zeros(q-1,1);
[deindex1,~]=find(areavsfra<0*maxarea);
deindex2=[];
for i=1:(q-1)
zeroindex=find(lengthvsfra(i,:)~=0);
minlength=min(lengthvsfra(i,zeroindex));
maxlength=max(lengthvsfra(i,:));
if minlength<0*maxlength
deindex2=[deindex2;i];
end
end
deindex=[deindex1;deindex2];
deindex=unique(deindex);
deindex=sort(deindex);
hui=length(deindex);
if hui>0
for i=1:(q-1)
[dogindex,~]=find(deindex==i);
if length(dogindex)~=0
newnum(i)=0;
else
[catindex,~]=find(deindex<i);
rao=length(catindex);
newnum(i)=i-rao;
end
end
fracnumber(deindex,:)=[];
fcinff(deindex,:)=[];
lengthvsfra(deindex,:)=[];
corevsfra(deindex,:)=[];
disvsfra(deindex,:)=[];
tran(deindex,:)=[];
avtran(deindex,:)=[];
areavsfra(deindex,:)=[];
zf(deindex,:)=[];
vf(deindex,:)=[];
porf(deindex,:)=[];
% change matrixvsfra
for i=1:m%matrixvsfra矩阵的行数
for j=1:10
if matrixvsfra(i,j)~=0
matrixvsfra(i,j)=newnum(matrixvsfra(i,j));
end
end
end
% change fracstart
fracstart(nf+1,1)=length(fracnumber)+1;
for i=1:nf
[daiindex,~]=find(deindex<fracstart(i,1));
dai=length(daiindex);
fracstart(i)=fracstart(i)-dai;
end
end
%% cell数组及其它形状信息
fcff=cell(1,8);
fcff{1,1}=fracnumber; fcff{1,2}=fcinff;fcff{1,3}=lengthvsfra;fcff{1,4}=corevsfra;fcff{1,5}=disvsfra;fcff{1,6}=tran;fcff{1,7}=avtran;fcff{1,8}=areavsfra;
%%
%% (
connect_infrac=cell(nf,1);
Nff=zeros(1,2); %
Tff=zeros(1,1); %
for i=1:nf
p=1;
raoconnect=zeros(fracstart(i+1)-fracstart(i),10);%10
d3intersection=raopoint{i,1};
anothersection=raopoint{i,2};
for j=fracstart(i):((fracstart(i+1)-1)-1)%i条裂缝的编号范围
q=1;
for k=j:(fracstart(i+1)-1)
A=fracnumber(j,:);
B=fracnumber(k,:);
%00
A(A==0)=[];
B(B==0)=[];
[a,~]=find(matrixvsfra==j); [b,~]=find(matrixvsfra==k);
if length(a)~=1
heihei=1;
end
raoflag=intersect(A,B);
if((size(raoflag,2)>2)||((size(raoflag,2)<2))) continue;%2
%2线
else if (a==b) continue; %
else
raoconnect(p,q)=k;q=q+1;
lengthcat=norm(d3intersection(raoflag(1),:)-d3intersection(raoflag(2),:));%
rao1k=corevsfra(k,:)-d3intersection(raoflag(1),:);
rao1j=corevsfra(j,:)-d3intersection(raoflag(1),:);
rao2=d3intersection(raoflag(1),:)-d3intersection(raoflag(2),:);
%
disk=norm(cross(rao1k',rao2'))/norm(rao2);
disj=norm(cross(rao1j',rao2'))/norm(rao2);
if Kf(j)==0 || Kf(k)==0
hartran=0;
else
tran1=Kf(j)*wf(i)*lengthcat/disk;
tran2=Kf(k)*wf(i)*lengthcat/disj;
% hartran=length/(disk+disj);%
hartran=tran1*tran2/(tran1+tran2);
end
Nff=[Nff; j,k];
Tff=[Tff;hartran];
%
end
end
p=p+1;
end
connect_infrac{i,1}=raoconnect;
end
end
Nff(1,:)=[]; %
Tff(1,:)=[];
%%
nmc=size(matrixvsfra,1);
Nmff=zeros(1,2);
Tmff=zeros(1,1);
for i=1:nmc
if(norm(matrixvsfra(i,:))~=0)
indice=find(matrixvsfra(i,:)~=0);
n=size(indice,2);
if (n>1) %
% lengthvsfra(matrixvsfra(i,indice))./disvsfra(matrixvsfra(i,indice))
for j=1:n-1
for k=(j+1):n
Nmff=[Nmff;matrixvsfra(i,indice(j)), matrixvsfra(i,indice(k))];
%
fc1=matrixvsfra(i,indice(j)); fc2=matrixvsfra(i,indice(k));
allfc=matrixvsfra(i,1:n); sumtran=sum(fcff{1,7}(allfc));
if sumtran==0 Tmff=[Tmff; 0];
else
Tmff=[Tmff; fcff{1,7}(fc1)*fcff{1,7}(fc2)/sumtran];
end
end
end
end
end
end
Nmff(1,:)=[]; %
Tmff(1,:)=[];
% N = [N; Nmff+nmc];
% T = [T; Tmff];
%%
nmc=nx * ny*nz;%
nfc=size(fracnumber,1);%
rpt = [ones(nmc, 1); zeros(nfc, 1)];
% r.rpt = rpt;
nmm = (nx-1)*ny*nz+(ny-1)*nx*nz+(nz-1)*nx*ny;%nmm是基质网格之间存在流体交换的总数
% r.nf = nmm + nff;%nff是裂缝单元之间存在流体交换的总数
S_ex=zeros(nmm,1);%
Kx=kx.*ones(nmc,1);
Ky=ky.*ones(nmc,1);
Kz=kz.*ones(nmc,1);
N = zeros(nmm, 2);%
T = zeros(nmm, 1);%N矩阵的传导系数
c = 0;
for k= 1 : nz
for j = 1 : ny
for i = 1 : nx - 1
c = c + 1;
index = i + (j - 1) * nx + (k - 1) * nx * ny;
indexn = index + 1;
N(c, :) = [index, indexn];
T(c) = 2 * dzv(index)*dyv(index)*Kx(index)*Kx(indexn)*NTG(index)*NTG(indexn)/(Kx(index)*dxv(indexn)*NTG(index) + Kx(indexn)*dxv(index)*NTG(indexn));
% 2 * dzv(index)*dyv(index)*Kx(index)*Kx(indexn)/(Kx(index)*dxv(indexn) + Kx(indexn)*dxv(index));
S_ex(c)=dzv(index)*dyv(index);
end
end
end
for k= 1 : nz
for i = 1 : nx
for j = 1 : ny - 1
c = c + 1;
index = i + (j - 1) * nx + (k - 1) * nx * ny;
indexn = index + nx;
N(c, :) = [index, indexn];
T(c) = 2 * dzv(index)*dxv(index)*Ky(index)*Ky(indexn)/(Ky(index)*dyv(indexn) + Ky(indexn)*dyv(index));
S_ex(c)=dzv(index)*dxv(index);
end
end
end
for i = 1 : nx
for j = 1 : ny
for k= 1: nz-1
c = c + 1;
index = i + (j - 1) * nx + (k - 1) * nx * ny;
indexn = index + nx * ny;
N(c, :) = [index, index + nx*ny];
T(c) = 2 * dxv(index)*dyv(index)*Kz(index)*Kz(indexn)/(Kz(index)*dzv(indexn) + Kz(indexn)*dzv(index));
S_ex(c)=dxv(index)*dyv(index);
end
end
end
%% 2014
syms x y z;
Ninterflow=[];
Tinterflow=[];
for i=1:nx*ny*nz %
for j=1:10
if matrixvsfra(i,j)~=0 %this matrix cell contains a fracture cell
Ninterflow=[Ninterflow;i,matrixvsfra(i,j)+nmc];
kcell=(kx(i)*ky(i)*kz(i))^(1/3);
Knnc=kcell*Kf(matrixvsfra(i,j))/(kcell+Kf(matrixvsfra(i,j)));
Annc=areavsfra(matrixvsfra(i,j));%
fracore=corevsfra(matrixvsfra(i,j),:);
matnodes=nodes(i,:);
verco=coord(matnodes,:);norvec=normalvec(matrixvsfra(i,j),:);
matcore=mean(verco);d0=matcore-fracore;
dn=(x+d0(1))*norvec(1)+(y+d0(2))*norvec(2)+(z+d0(3))*norvec(3);
% dn=abs(dn);%
dn=sqrt(dn^2);
dn=matlabFunction(dn);
if norvec(1)~=0 && norvec(2)~=0 && norvec(3)~=0
Dn=integral3(dn,-dxv(i)/2,dxv(i)/2,-dyv(i)/2,dyv(i)/2,-dzv(i)*NTG(i)/2,dzv(i)*NTG(i)/2)/(dxv(i)*dyv(i)*dzv(i)*NTG(i));
else if norvec(1)~=0 && norvec(2)~=0
Dn=dzv(i)*NTG(i)*integral2(dn,-dxv(i)/2,dxv(i)/2,-dyv(i)/2,dyv(i)/2)/(dxv(i)*dyv(i)*dzv(i)*NTG(i));
else if norvec(1)~=0 && norvec(3)~=0
Dn=dyv(i)*integral2(dn,-dxv(i)/2,dxv(i)/2,-dzv(i)*NTG(i)/2,dzv(i)*NTG(i)/2)/(dxv(i)*dyv(i)*dzv(i)*NTG(i));
else if norvec(2)~=0 && norvec(3)~=0
Dn=dxv(i)*integral2(dn,-dyv(i)/2,dyv(i)/2,-dzv(i)*NTG(i)/2,dzv(i)*NTG(i)/2)/(dxv(i)*dyv(i)*dzv(i)*NTG(i));
else if norvec(1)~=0
Dn=dyv(i)*dzv(i)*NTG(i)*integral(dn,-dxv(i)/2,dxv(i)/2)/(dxv(i)*dyv(i)*dzv(i)*NTG(i));
else if norvec(2)~=0
Dn=dxv(i)*dzv(i)*NTG(i)*integral(dn,-dyv(i)/2,dyv(i)/2)/(dxv(i)*dyv(i)*dzv(i)*NTG(i));
else if norvec(3)~=0
Dn=dxv(i)*dyv(i)*integral(dn,-dzv(i)*NTG(i)/2,dzv(i)*NTG(i)/2)/(dxv(i)*dyv(i)*dzv(i)*NTG(i));
end
end
end
end
end
end
end
%
% Dn=0.9;
% Dn=2.5;
% raoT=Knnc*Annc/Dn;
raoT1 = kcell*Annc/Dn;
raoT2 = Kf(matrixvsfra(i,j))*Annc/(Wf(matrixvsfra(i,j))/2);
raoT = (raoT1^-1+raoT2^-1)^-1;
Tinterflow=[Tinterflow;raoT];
end
end
end
%%
nmc=size(matrixvsfra,1);
%
S_p=zeros(nmm,1);
% F-M connections
Nmf_projection=[];
Tmf_projection=[];
for i=1:nmc
matnodes=nodes(i,:);
dx_grid=dxv(i);
dy_grid=dyv(i);
dz_grid=dzv(i);
grid_core=mean(coord(matnodes,:));%
if(norm(matrixvsfra(i,:))~=0)
indice=find(matrixvsfra(i,:)~=0);
n=size(indice,2);
if (n==1) %n=1
selected_face=zeros(1,3);
the_frac_cell=matrixvsfra(i,indice);%
% if Kf(the_frac_cell) <= (kx(i)*ky(i)*kz(i))^(1/3);%
% else
which_frac=fcff{1,2}(the_frac_cell,1);%
core_frac_cell=fcff{1,4}(the_frac_cell,1:3);%
area_frac_cell=fcff{1,8}(the_frac_cell,1);%
rao_struct=[i,the_frac_cell+nmc];
pos_rao=find_row(rao_struct,Ninterflow);
D_value=core_frac_cell-grid_core;% OF
vector_1=f(5*which_frac-3,:);
vector_2=f(5*which_frac-2,:);
n_vector_1=cross(vector_1,vector_2);
n_vector_2=-cross(vector_1,vector_2);
if (dot(n_vector_1,D_value))>=0
n_vector=n_vector_1;
else
n_vector=n_vector_2;
end
%
% x方向投影面积
area_frac_cell_x=abs(area_frac_cell*dot([1,0,0],n_vector)/norm(n_vector));
area_frac_cell_y=abs(area_frac_cell*dot([0,1,0],n_vector)/norm(n_vector));
area_frac_cell_z=abs(area_frac_cell*dot([0,0,1],n_vector)/norm(n_vector));
% %% valid case修改
% area_frac_cell_x=10*10;
% area_frac_cell_y=10*10;
% area_frac_cell_z=10*10;
%沿
new_core=core_frac_cell+1e-6*n_vector;
%
%x direction
D_value_new=new_core-grid_core;
if D_value_new(1)<=0
selected_face(1)=3;nei_grid_x=i-1;
else selected_face(1)=4; nei_grid_x=i+1;
end
%% ----------------------% pEDFM--------------------------------------
% pEDFM
% selected_face(1)=4; nei_grid_x=i+1;
%% ----------------------% ---------------------------------------------------------------
struc_x=[i,nei_grid_x];
pos=find_row(struc_x,N);
if size(pos,1)==1 %
S_p(pos)=S_p(pos)+area_frac_cell_x;
kcell=(kx(i)*ky(i)*kz(i))^(1/3);%
knei=(kx(nei_grid_x)*ky(nei_grid_x)*kz(nei_grid_x))^(1/3);%
added_matnodes=nodes(nei_grid_x,:);
nei_grid_core=mean(coord(added_matnodes,:));%
% Knnc=2*kcell*Kf(the_frac_cell)/(kcell+Kf(the_frac_cell));%
% dis_added=norm(nei_grid_core-core_frac_cell);
% T_added=Knnc*area_frac_cell_x/dis_added;
%
dis_added=norm(nei_grid_core-core_frac_cell);
if Kf(the_frac_cell)==0
T_added=0;
else
%
Geof=Kf(the_frac_cell)*area_frac_cell/(Wf(the_frac_cell)/2);
%
Geofnei=knei*area_frac_cell_x/dis_added;
%
Geofcell=Tinterflow(pos_rao,1);
T_added=1/(1/Geofnei+1/Geofcell+1/Geof);
% T_added=0;%
% T_added=0;%
% T_added=0.0039604;%
end
Nmf_projection=[Nmf_projection;nei_grid_x,the_frac_cell+nmc];
Tmf_projection=[Tmf_projection;T_added];
end
%y direction
if D_value_new(2)<=0
selected_face(2)=2;nei_grid_y=i-nx;
else selected_face(2)=5;nei_grid_y=i+nx;
end
%% ----------------------% pEDFM--------------------------------------
% pEDFM
% selected_face(2)=5; nei_grid_y=i+nx;
%% ----------------------% ---------------------------------------------------------------
struc_y=[i,nei_grid_y];
pos=find_row(struc_y,N);
if size(pos,1)==1 %
S_p(pos)=S_p(pos)+area_frac_cell_y;
kcell=(kx(i)*ky(i)*kz(i))^(1/3);%
knei=(kx(nei_grid_y)*ky(nei_grid_y)*kz(nei_grid_y))^(1/3);%
added_matnodes=nodes(nei_grid_y,:);
nei_grid_core=mean(coord(added_matnodes,:));%
% Knnc=2*kcell*Kf(the_frac_cell)/(kcell+Kf(the_frac_cell));%
% dis_added=norm(nei_grid_core-core_frac_cell);
% T_added=Knnc*area_frac_cell_y/dis_added;
%
dis_added=norm(nei_grid_core-core_frac_cell);
if Kf(the_frac_cell)==0
T_added=0;
else
%
Geof=Kf(the_frac_cell)*area_frac_cell/(Wf(the_frac_cell)/2);
%
Geofnei=knei*area_frac_cell_y/dis_added;
%
Geofcell=Tinterflow(pos_rao,1);
T_added=1/(1/Geofnei+1/Geofcell+1/Geof);
% T_added=0;%
% T_added=0.002;%
% T_added=0.0039604;%
end
Nmf_projection=[Nmf_projection;nei_grid_y,the_frac_cell+nmc];
Tmf_projection=[Tmf_projection;T_added];
end
% z direction
if D_value_new(3)<=0
selected_face(3)=1;nei_grid_z=i-nx*ny;
else selected_face(3)=6;nei_grid_z=i+nx*ny;
end
%% ----------------------% pEDFM--------------------------------------
% pEDFM
% selected_face(3)=6;nei_grid_z=i+nx*ny;
%% ----------------------% ---------------------------------------------------------------
% nei_grid_z=i-nx*ny;
struc_z=[i,nei_grid_z];
pos=find_row(struc_z,N);
if size(pos,1)==1 %
S_p(pos)=S_p(pos)+area_frac_cell_z;
kcell=(kx(i)*ky(i)*kz(i))^(1/3);%
knei=(kx(nei_grid_z)*ky(nei_grid_z)*kz(nei_grid_z))^(1/3);%
added_matnodes=nodes(nei_grid_z,:);
nei_grid_core=mean(coord(added_matnodes,:));%
% Knnc=2*kcell*Kf(the_frac_cell)/(kcell+Kf(the_frac_cell));%
% dis_added=norm(nei_grid_core-core_frac_cell);
% T_added=Knnc*area_frac_cell_z/dis_added;
%
dis_added=norm(nei_grid_core-core_frac_cell);
if Kf(the_frac_cell)==0
T_added=0;
else
%
Geof=Kf(the_frac_cell)*area_frac_cell/(Wf(the_frac_cell)/2);
%
Geofnei=knei*area_frac_cell_z/dis_added;
%
Geofcell=Tinterflow(pos_rao,1);
T_added=1/(1/Geofnei+1/Geofcell+1/Geof);
% T_added=0;%
% T_added=0.0;%
% T_added=0.0039604;%
end
Nmf_projection=[Nmf_projection;nei_grid_z,the_frac_cell+nmc];
Tmf_projection=[Tmf_projection;T_added];
end
% %%
% if D_value_new(1)>0
% selected_face(1)=3;nei_grid_x=i-1;
% else selected_face(1)=4; nei_grid_x=i+1;
% end
% struc_x=[i,nei_grid_x];
% pos=find_row(struc_x,N);
% if size(pos,1)==1 %
% S_p(pos)=S_p(pos)+area_frac_cell_x;
% kcell=(kx(i)*ky(i)*kz(i))^(1/3);%
% knei=(kx(nei_grid_x)*ky(nei_grid_x)*kz(nei_grid_x))^(1/3);%
% added_matnodes=nodes(nei_grid_x,:);
% nei_grid_core=mean(coord(added_matnodes,:));%
% % Knnc=2*kcell*Kf(the_frac_cell)/(kcell+Kf(the_frac_cell));%
% % dis_added=norm(nei_grid_core-core_frac_cell);
% % T_added=Knnc*area_frac_cell_x/dis_added;
% %
% dis_added=norm(nei_grid_core-core_frac_cell);
% if Kf(the_frac_cell)==0
% T_added=0;
% else
% %
% Geof=Kf(the_frac_cell)*area_frac_cell/(Wf(the_frac_cell)/2);
% %
% Geofnei=knei*area_frac_cell_x/dis_added;
% %
% Geofcell=Tinterflow(pos_rao,1);
%
% T_added=1/(1/Geofnei+1/Geofcell+1/Geof);
% % T_added=0;%
% % T_added=0;%
% % T_added=0.0039604;%
% end
% Nmf_projection=[Nmf_projection;nei_grid_x,the_frac_cell+nmc];
% Tmf_projection=[Tmf_projection;T_added];
% end
%
% %y direction
% if D_value_new(2)>0
% selected_face(1)=2;nei_grid_y=i-nx;
% else selected_face(1)=5;nei_grid_y=i+nx;
% end
% struc_y=[i,nei_grid_y];
% pos=find_row(struc_y,N);
% if size(pos,1)==1 %
% S_p(pos)=S_p(pos)+area_frac_cell_y;
% kcell=(kx(i)*ky(i)*kz(i))^(1/3);%
% knei=(kx(nei_grid_y)*ky(nei_grid_y)*kz(nei_grid_y))^(1/3);%
% added_matnodes=nodes(nei_grid_y,:);
% nei_grid_core=mean(coord(added_matnodes,:));%
% % Knnc=2*kcell*Kf(the_frac_cell)/(kcell+Kf(the_frac_cell));%
% % dis_added=norm(nei_grid_core-core_frac_cell);
% % T_added=Knnc*area_frac_cell_y/dis_added;
% %
% dis_added=norm(nei_grid_core-core_frac_cell);
% if Kf(the_frac_cell)==0
% T_added=0;
% else
% %
% Geof=Kf(the_frac_cell)*area_frac_cell/(Wf(the_frac_cell)/2);
% %
% Geofnei=knei*area_frac_cell_y/dis_added;
% %
% Geofcell=Tinterflow(pos_rao,1);
%
% T_added=1/(1/Geofnei+1/Geofcell+1/Geof);
% % T_added=0;%
% % T_added=0.002;%
% % T_added=0.0039604;%
% end
% Nmf_projection=[Nmf_projection;nei_grid_y,the_frac_cell+nmc];
% Tmf_projection=[Tmf_projection;T_added];
% end
%
%
% % z direction
% if D_value_new(3)>0
% selected_face(1)=1;nei_grid_z=i-nx*ny;
% else selected_face(1)=6;nei_grid_z=i+nx*ny;
% end
% % nei_grid_z=i-nx*ny;
% struc_z=[i,nei_grid_z];
% pos=find_row(struc_z,N);
% if size(pos,1)==1 %
% S_p(pos)=S_p(pos)+area_frac_cell_z;
% kcell=(kx(i)*ky(i)*kz(i))^(1/3);%
% knei=(kx(nei_grid_z)*ky(nei_grid_z)*kz(nei_grid_z))^(1/3);%
% added_matnodes=nodes(nei_grid_z,:);
% nei_grid_core=mean(coord(added_matnodes,:));%
% % Knnc=2*kcell*Kf(the_frac_cell)/(kcell+Kf(the_frac_cell));%
% % dis_added=norm(nei_grid_core-core_frac_cell);
% % T_added=Knnc*area_frac_cell_z/dis_added;
% %
% dis_added=norm(nei_grid_core-core_frac_cell);
% if Kf(the_frac_cell)==0
% T_added=0;
% else
% %
% Geof=Kf(the_frac_cell)*area_frac_cell/(Wf(the_frac_cell)/2);
% %
% Geofnei=knei*area_frac_cell_z/dis_added;
% %
% Geofcell=Tinterflow(pos_rao,1);
%
% T_added=1/(1/Geofnei+1/Geofcell+1/Geof);
% % T_added=0;%
% % T_added=0.0;%
% % T_added=0.0039604;%
% end
% Nmf_projection=[Nmf_projection;nei_grid_z,the_frac_cell+nmc];
% Tmf_projection=[Tmf_projection;T_added];
% end
% end
end
end
end
%%
im_N=[];
im_T=[];
% q=length(Kf)+1;
% for i=1:(q-1)/2%q-1
% for j=(q-1)/2+1:(q-1)
% if norm(corevsfra(j,:)-corevsfra(i,:))<=3*1e-1
% im_N=[im_N;i+nmc,j+nmc];
% % im_T=[im_T;0];
% % im_T=[im_T;0.0039604];
% % im_T=[im_T;(((Kf(i))^(-1)+(1e-3)^(-1)+(1e-3)^(-1)+(Kf(j))^(-1))/4)^(-1)*2*2/0.4];
% % im_T=[im_T;(((Kf(i))^(-1)+(1e-3)^(-1)+(1e-3)^(-1)+(Kf(j))^(-1))/4)^(-1)*0.5*2/0.4];
% im_T=[im_T;((Kf(i)*1*2/0.005)^-1+(Kf(j)*1*2/0.005)^-1+(5*1e-3*1*2/0.1)^-1+(5*1e-3*1*2/0.1)^-1)^-1];
% %
% end
% end
% end
%%
for i=1:nmm
%
if (S_ex(i)-S_p(i))/S_ex(i)<=1e-2
T(i)=0;
else
T(i)= T(i)*(S_ex(i)-S_p(i))/S_ex(i);
end
end
%% pEDFM额外处理
% % % num_frac = size(frac_information,1)/3;
% % % for i = 1:num_frac
% % % if frac_information(3*i,1) <= (kx(1)*ky(1)*kz(1))^(1/3)
% % % %
% % % one_end = frac_information(3*i-2,:);
% % % the_other_end = frac_information(3*i-1,:);
% % % %
% % % for j = 1:size(N,1)
% % % added_matnodes_1=nodes(N(j,1),:);
% % % one_node_connect=mean(coord(added_matnodes_1,:));%
% % % added_matnodes_2=nodes(N(j,2),:);
% % % the_other_node_connect=mean(coord(added_matnodes_2,:));
% % % coef_matrix = [
% % % the_other_end(1)-one_end(1),-(the_other_node_connect(1)-one_node_connect(1));
% % % the_other_end(2)-one_end(2),-(the_other_node_connect(2)-one_node_connect(2));];
% % % coef_vector = [one_node_connect(1)-one_end(1);one_node_connect(2)-one_end(2);];
% % % if abs(det(coef_matrix))<=1e-12
% % % else
% % % parameters = coef_matrix\coef_vector;
% % % if parameters(1)>=0 && parameters(1)<=1 && parameters(2)>=0 && parameters(2)<=1
% % % T(j) = (T(j)^-1 + frac_information(3*i,1)^-1)^-1;
% % % end
% % % end
% % % end
% % % end
% % % end
%%
N = [N; Nmff+nmc; Nff+nmc;Ninterflow;Nmf_projection;im_N];
T = [T; Tmff; Tff;Tinterflow;Tmf_projection;im_T];
% N = [N; Nmff+nmc; Nff+nmc;Ninterflow;Nmf_projection];
% T = [T; Tmff; Tff;Tinterflow;Tmf_projection];
nex=size(N,1);
end