⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poromodel.m

📁 弹性波数值模拟 时间域有限差分算法 双相介质
💻 M
字号:
function poromodel
t0=0;
g=30;
t=2000;
b=0;
p11=2167;
p22=191;
p12=-83;
P=2.0332*10^10;
Q=0.0953*10^10;
RR=0.0331*10^10;
N=0.684*10^10;
q=0.1;
vf=3210;
vs=1180;
vr=1790;
arfa=-0.337*10^(-10);
bata=0.719*10^(-11);
af=1.1;
as=-16.2;
R11=p11/(p11*p22-p12^2);
R12=p12/(p11*p22-p12^2);
R22=p22/(p11*p22-p12^2);
dt=0.1*10^(-3);dx=2.5;m=85;
mup=80;mdown=80;mleft=80;mright=80;
ipsi=2*pi^2*g^2;
tt0=1/g;
ep=0.8;
aa=max([mleft,mright,mup,mdown,1]);
A=(0.015*ep)^2/aa^2;
for i=1:m+mleft+mright
    for j=1:m+mup+mdown
        if i<=mleft||i>=(m+mleft)||j<=mup||j>=(m+mup)
            x1=max([mleft-i,i-m-mleft,mup-j,j-m-mup]);
            tp(i,j)=exp(-A*x1^4);
        else
            tp(i,j)=1.0;
        end
    end
end

for i=1:m+mleft+mright
    for j=1:m+mup+mdown
        H(i,j)=0;
        Vs(i,j)=0;
        Vf(i,j)=0;
        Us(i,j)=0;
        Uf(i,j)=0;
        R(i,j)=0;
        T(i,j)=0;
        S(i,j)=0;         
    end
end

for k=1:t
    for i=3:m-1+mleft+mright
        for j=3:m-1+mup+mdown
             Us(i,j)=Us(i,j)+dt/dx*R22*(9/8*(R(i,j)-R(i-1,j))-1/24*(R(i+1,j)-R(i-2,j)))...
                 -dt/dx*R12*(9/8*(S(i,j)-S(i-1,j))-1/24*(S(i+1,j)-S(i-2,j)))...
                 +dt/dx*R22*(9/8*(H(i,j)-H(i,j-1))-1/24*(H(i,j+1)-H(i,j-2)));
             Uf(i,j)=Uf(i,j)-dt/dx*R12*(9/8*(R(i,j)-R(i-1,j))-1/24*...
                    (R(i+1,j)-R(i-2,j)))+dt/dx*R11*(9/8*(S(i,j)-S(i-1,j))-1/24*(S(i+1,j)-S(i-2,j)))...
                    -dt/dx*R12*(9/8*(H(i,j)-H(i,j-1))-1/24*(H(i,j+1)-H(i,j-2)));
            end
        end
      for i=2:m-2+mleft+mright
          for j=2:m-2+mup+mdown
              Vs(i,j)=Vs(i,j)+dt/dx*R22*(9/8*(H(i+1,j)-H(i,j))...
                  -1/24*(H(i+2,j)-H(i-1,j)))+dt/dx*R22*(9/8*(T(i,j+1)-T(i,j))-...
                  1/24*(T(i,j+2)-T(i,j-1)))-dt/dx*R12*(9/8*(S(i,j+1)-S(i,j))-...
                  1/24*(S(i,j+2)-S(i,j-1)));
              Vf(i,j)=Vf(i,j)-dt/dx*R12*(9/8*(H(i+1,j)-H(i,j))...
                  -1/24*(H(i+2,j)-H(i-1,j)))-dt/dx*R12*(9/8*(T(i,j+1)-T(i,j))-...
                  1/24*(T(i,j+2)-T(i,j-1)))+dt/dx*R11*(9/8*(S(i,j+1)-S(i,j))-...
                  1/24*(S(i,j+2)-S(i,j-1)));
              
          end
      end
           
      for i=3:m-1+mleft+mright
          for j=2:m-2+mup+mdown
              H(i,j)=H(i,j)+dt/dx*N*(9/8*(Us(i,j+1)-Us(i,j))...
                  -1/24*(Us(i,j+2)-Us(i,j-1))+9/8*(Vs(i,j)-Vs(i-1,j))...
                  -1/24*(Vs(i+1,j)-Vs(i-2,j)));

          end 
      end 
      for i=2:m-2+mleft+mright
          for j=3:m-1+mup+mdown
                 R(i,j)=R(i,j)+dt/dx*P*(9/8*(Us(i+1,j)-Us(i,j))-1/24*...
                       (Us(i+2,j)-Us(i-1,j)))+dt/dx*(P-2*N)*(9/8*(Vs(i,j)-...
                           Vs(i,j-1))-1/24*(Vs(i,j+1)-Vs(i,j-2)))+...
                           dt/dx*Q*(9/8*(Uf(i+1,j)-Uf(i,j))-1/24*(Uf(i+2,j)-Uf(i-1,j)))...
                           +dt/dx*Q*(9/8*(Vf(i,j)-Vf(i,j-1))-1/24*(Vf(i,j+1)-Vf(i,j-2)));
                 T(i,j)=T(i,j)+dt/dx*(P-2*N)*(9/8*(Us(i+1,j)-Us(i,j))-1/24*...
                       (Us(i+2,j)-Us(i-1,j)))+dt/dx*P*(9/8*(Vs(i,j)-...
                           Vs(i,j-1))-1/24*(Vs(i,j+1)-Vs(i,j-2)))+...
                           dt/dx*Q*(9/8*(Uf(i+1,j)-Uf(i,j))-1/24*(Uf(i+2,j)-Uf(i-1,j)))...
                           +dt/dx*Q*(9/8*(Vf(i,j)-Vf(i,j-1))-1/24*(Vf(i,j+1)-Vf(i,j-2)));
                 S(i,j)=S(i,j)+dt/dx*Q*(9/8*(Us(i+1,j)-Us(i,j))-1/24*(Us(i+2,j)-Us(i-1,j))...
                     +9/8*(Vs(i,j)-Vs(i,j-1))-1/24*(Vs(i,j+1)-Vs(i,j-2)))...
                          +dt/dx*RR*(9/8*(Uf(i+1,j)-Uf(i,j))-1/24*(Uf(i+2,j)-Uf(i-1,j))...
                      +9/8*(Vf(i,j)-Vf(i,j-1))-1/24*(Vf(i,j+1)-Vf(i,j-2)));
          end
       end   
%if k<61
%    R(mleft+m/2,mup+m/2)=R(mleft+m/2,mup+m/2)+(1-2*(pi*g*(k-40)/1000)^2)*exp(-(pi*g*(k-40)/1000)^2)...
%            -(1-2*(pi*g*(k-40-1)/1000)^2)*exp(-(pi*g*(k-40-1)/1000)^2); 
%  end
%         R(mleft+m/2,mup+m/2)=R(mleft+m/2,mup+m/2)-2*ipsi*(exp(1/(2*ipsi)))^.1/2 *exp(-ipsi*(k-tt0)^2)...
%             *(k-tt0);
%    R(mleft+m/2,mup+m/2)=R(mleft+m/2,mup+m/2)+2*(ipsi/10^6)*(exp(1/(2*ipsi/10^6)))^0.5*exp(-ipsi/10^6*(k-tt0).^2).*(k-tt0);
%    R(mleft+m/2,mup+m/2)=R(mleft+m/2,mup+m/2)-2*ipsi*(exp(1/(2*ipsi)))^0.5*exp(-ipsi*((k+1/2)/1000-tt0)^2)*((k+1/2)/1000-tt0);
%    R(mleft+m/2,mup+m/2)=R(mleft+m/2,mup+m/2)-2*ipsi*(exp(1/(2*ipsi)))^0.5*exp(-ipsi*((k+1/2)/1000-tt0)^2)*((k+1/2)/1000-tt0);

%     Ricker sourse
%     R(mleft+1,mup+1)=R(mleft+1,mup+1)-2*ipsi*(exp(1/(2*ipsi)))^0.5*exp(-ipsi*((k+1/2)/10000-tt0)^2)*((k+1/2)/10000-tt0);
%     T(mleft+1,mup+1)=T(mleft+1,mup+1)-2*ipsi*(exp(1/(2*ipsi)))^0.5*exp(-ipsi*((k+1/2)/10000-tt0)^2)*((k+1/2)/10000-tt0);
%     S(mleft+1,mup+1)=S(mleft+1,mup+1)-2*ipsi*(exp(1/(2*ipsi)))^0.5*exp(-ipsi*((k+1/2)/10000-tt0)^2)*((k+1/2)/10000-tt0);

%     Gaussian sourse
%     R(mleft+3,mup+3)=R(mleft+3,mup+3)+exp(-ipsi*(k/10000-tt0)^2);
%     T(mleft+3,mup+3)=T(mleft+3,mup+3)+exp(-ipsi*(k/10000-tt0)^2);
      R(mleft+43,mup+43)=R(mleft+43,mup+43)-(1-q)*(exp(-ipsi*(k/10000-tt0)^2)-exp(-ipsi*((k-1)/10000-tt0)^2));
      T(mleft+43,mup+43)=T(mleft+43,mup+43)-(1-q)*(exp(-ipsi*(k/10000-tt0)^2)-exp(-ipsi*((k-1)/10000-tt0)^2));
      S(mleft+43,mup+43)=S(mleft+43,mup+43)-q*(exp(-ipsi*(k/10000-tt0)^2)-exp(-ipsi*((k-1)/10000-tt0)^2));
%     H(mleft+3,mup+3)=-(1-q)*exp(-ipsi*(k/10000-tt0)^2);
%     S(mleft+3,mup+3)=-exp(-ipsi*(k/10000-tt0)^2);


%     Gaussian sourse acting on replacement
%      Uf(mleft+3,mup+3)=(1-q)*exp(-ipsi*(k/10000-tt0)^2);
%      Vf(mleft+3,mup+3)=(1-q)*exp(-ipsi*(k/10000-tt0)^2);
%      Us(mleft+3,mup+3)=q*exp(-ipsi*(k/10000-tt0)^2);
%      Vs(mleft+3,mup+3)=q*exp(-ipsi*(k/10000-tt0)^2);



 for i=1:m+mleft+mright
            for j=1:m+mup+mdown
                Uf(i,j)=Uf(i,j)*tp(i,j);
                Vf(i,j)=Vf(i,j)*tp(i,j);
                Us(i,j)=Us(i,j)*tp(i,j);
                Vs(i,j)=Vs(i,j)*tp(i,j);
                H(i,j)=H(i,j)*tp(i,j);
                T(i,j)=T(i,j)*tp(i,j);
                R(i,j)=R(i,j)*tp(i,j);
                S(i,j)=S(i,j)*tp(i,j);
            end
  end
  
  for i=1:m+mleft+mright
            uft45(i,k)=Uf(i,mup+45);
            vft45(i,k)=Vf(i,mup+45);
            rt45(i,k)=R(i,mup+45);
            ht45(i,k)=H(i,mup+45);
            tt45(i,k)=T(i,mup+45);
            ust45(i,k)=Us(i,mup+45);
            vst45(i,k)=Vs(i,mup+45);
            st45(i,k)=S(i,mup+45);
 end
   for i=1:m+mleft+mright
            uft43(i,k)=Uf(i,mup+43);
            vft43(i,k)=Vf(i,mup+43);
            rt43(i,k)=R(i,mup+43);
            ht43(i,k)=H(i,mup+43);
            tt43(i,k)=T(i,mup+43);
            ust43(i,k)=Us(i,mup+43);
            vst43(i,k)=Vs(i,mup+43);
            st43(i,k)=S(i,mup+43);
 end
 if k==200
     for i=1:m+mleft+mright
            for j=1:m+mup+mdown
     uf200(i,j)=Uf(i,j);
     vf200(i,j)=Vf(i,j);
     r200(i,j)=R(i,j);
     h200(i,j)=H(i,j);
     t200(i,j)=T(i,j);
     us200(i,j)=Us(i,j);
     vs200(i,j)=Vs(i,j);
     s200(i,j)=S(i,j);
            end 
       end
 end
 if k==400
         for i=1:m+mleft+mright
            for j=1:m+mup+mdown
     uf400(i,j)=Uf(i,j);
     vf400(i,j)=Vf(i,j);
     r400(i,j)=R(i,j);
     h400(i,j)=H(i,j);
     t400(i,j)=T(i,j);
     us400(i,j)=Us(i,j);
     vs400(i,j)=Vs(i,j);
     s400(i,j)=S(i,j);
 end
end
 end
 if k==600
         for i=1:m+mleft+mright
            for j=1:m+mup+mdown
     uf600(i,j)=Uf(i,j);
     vf600(i,j)=Vf(i,j);
     r600(i,j)=R(i,j);
     h600(i,j)=H(i,j);
     t600(i,j)=T(i,j);
     us600(i,j)=Us(i,j);
     vs600(i,j)=Vs(i,j);
     s600(i,j)=S(i,j);
 end
end
 end
  if k==700
         for i=1:m+mleft+mright
            for j=1:m+mup+mdown
     uf700(i,j)=Uf(i,j);
     vf700(i,j)=Vf(i,j);
     r700(i,j)=R(i,j);
     h700(i,j)=H(i,j);
     t700(i,j)=T(i,j);
     us700(i,j)=Us(i,j);
     vs700(i,j)=Vs(i,j);
     s700(i,j)=S(i,j);
 end
end
 end

  wt(k)=Vs(mleft+83,mup+83);
  ut(k)=Us(mleft+83,mup+83);
  wtf(k)=Vf(mleft+83,mup+83);
  utf(k)=Uf(mleft+83,mup+83);
  rt(k)=R(mleft+83,mup+83);
  ht(k)=H(mleft+83,mup+83);
  tt(k)=T(mleft+83,mup+83);
  st(k)=S(mleft+83,mup+83);
end 
zuida=max(abs(wt));
wt=wt/zuida*0.9;
a=1:t;
plot(a*10^(-4),wt)
% figure 
% plot(a*10^(-4),ut)
% figure
% plot(a*10^(-4),wtf)
% figure
% plot(a*10^(-4),utf)
% [fp1,msg] = fopen('D:\MATLAB6p5\work2\liangceng.txt','w');
% fprintf(fp1,'%f ',dx);
% fprintf(fp1,'%f ',m);
% fprintf(fp1,'%f ',dt*10^3);
% fprintf(fp1,'%f ',t);
% fprintf(fp1,'%f ',g);
% for i=1:m
% for j=1:t
% fprintf(fp1,'%E ',ut(mleft+i,j));
% end 
% end 
% fclose(fp1);
 save poromodeldx25changesourcequan Uf Vf Us Vs H R T S wt ut wtf utf st rt ht tt m dx mleft mdown mup mright ...
                uft43 vft43 rt43 ht43 tt43 ust43 vst43 st43 uft45 vft45 rt45 ht45 tt45 ust45 vst45 st45...
                uf200 vf200 r200 h200 t200 us200 vs200 s200 uf400 vf400 r400 h400 t400 us400 vs400 s400...
                uf600 vf600 r600 h600 t600 us600 vs600 s600 uf700 vf700 r700 h700 t700 us700 vs700 s700
 beep
warndlg('work is complete!')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -