?? forward.asv
字號:
function forward()
xx=100;%%檢波器排列長度
zz=100;%%向下延托深度
dx=1;%%道間距
dz=1;%%深度采樣間隔
dt=0.0005;%%時間采樣間隔
t=0.08;%%總采樣時間
nx=xx/dx;
nz=zz/dz;
nt=t/dt;%%計算總采樣時間
a=0.05;%%定義脈沖寬度
x0=xx/2;%%震源位置
z0=0;%%震源位置
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%構建速度模型
vmode(1:nx,1:nz)=100;
vmode(1:nx,1:10)=200;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pf(1:nx,1:nz)=0;
ps(1:nx,1:nz)=0;
pt(1:nx,1:nz)=0;
%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%初始時刻0的值
for ix=1:nx
for iz=1:nz
pf(ix,iz)=exp(-a*((ix-x0/dx)^2+(iz-z0/dz)^2));
end
end
% pf(nx/2,1)=1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%初始時刻1的值
for ix=2:nx-1
for iz=2:nz-1
alfa=dt*vmode(ix,iz)/dx;
beita=dt*vmode(ix,iz)/dz;
ps(ix,iz)=(1-alfa^2-beita^2)*pf(ix,iz)+0.5*(alfa^2*(pf(ix+1,iz)+pf(ix-1,iz))+beita^2*(pf(ix,iz+1)+pf(ix,iz-1)));
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%開始延托第二個時刻的值
for it=1:nt
for ix=2:nx-1
for iz=2:nz-1
alfa=dt*vmode(ix,iz)/dx;
beita=dt*vmode(ix,iz)/dz;
zyh=2*(1-alfa^2-beita^2)*ps(ix,iz)-pf(ix,iz)+alfa^2*(pf(ix+1,iz)+pf(ix-1,iz))+beita^2*(pf(ix,iz+1)+pf(ix,iz-1));
pt(ix,iz)=zyh;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%以下是確定右邊邊界條件
% for iz=1:nz
% pt(nx,iz)=ps(nx,iz)+ps(nx-1,iz)-pf(nx-1,iz)+alfa*(ps(nx-1,iz)-ps(nx,iz)-pf(nx-2,iz)+pf(nx-1,iz));
% end
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%以上是確定右邊邊界條件
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%以下是確定左邊邊界條件
% for iz=1:nz
% pt(1,iz)=ps(1,iz)+ps(2,iz)-pf(2,iz)+alfa*(ps(2,iz)-ps(1,iz)-pf(3,iz)+pf(2,iz));
% end
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%以上是確定左邊邊界條件
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%以下是確定下邊邊界條件
% for ix=1:nx
% pt(ix,nz)=ps(ix,nz)+ps(ix,nz-1)-pf(ix,nz-1)+beita*(ps(ix,nz-1)-ps(ix,nz)-pf(ix,nz-2)+pf(ix,nz-1));
% end
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%以上是確定下邊邊界條件
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%臨時輸出數據
if(it==nt)
fid=fopen('d:\VSP.grd','w');
fprintf(fid,'%s\r\n','DSAA');
fprintf(fid,'%d %d\r\n',nx,nz);
fprintf(fid,'%d %d\r\n',0,nx-1);
fprintf(fid,'%d %d\r\n',0,nz-1);
fprintf(fid,'%f %f\r\n',min(min(pt)),max(max(pt)));
for iz=1:nz
fprintf(fid,'%f ',pt(1:nx,iz));
fprintf(fid,'\r\n');
end
fclose(fid);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pf=ps;
ps=pt;
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -