声波方程数值模拟实验报告
MPI声波方程数值模拟

// ParallelPI.cpp : 定义控制台应用程序的入口点。
//// ParallelPI.cpp : 定义控制台应用程序的入口点。
////地层为三层速度模型,使用的进程数为4个,零进程为主进程,负责接收计算结果,其他进程进行计算#include "mpi.h"#include <stdio.h>#include <stdlib.h>#include <math.h>void main(int argc, char* argv[]){FILE *fp;double pi, r, f;int sourcex;int sourcey;int MAX_Column;//列数int MAX_Row;//矩阵的行数int myid, numprocs, master, column, row, sourceid, T,sendnum,recvnum;int i, j, k, n, position;//计数变量int up, down;int begin, end;//定义开始结束计算的行数double dx, dz, dt;//时空间步长double ***u;//时间跨度三层double **v;//速度矩阵double s[400], **temp;//扰动MPI_Status status;MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &numprocs);//numprocs=4MPI_Comm_rank(MPI_COMM_WORLD, &myid);//给定正演模拟的参数pi = 3.1415926, r = 4.0, f = 25.0;sourcex = 150;//震源位置sourcey = 150;MAX_Column = 300;MAX_Row = 300;column = MAX_Column / (numprocs - 1);row = MAX_Row;begin = 2, end = column + 1;T = 400;dx = 5.0, dz = 5.0, dt = 0.001;for (k = 0; k < T; k++) { s[k] = exp(-pow((2 * pi*f*k*dt / r), 2))*cos(2 * pi*f*k*dt); }//定义扰动,雷克子波//定义速度矩阵v = (double **)malloc(sizeof(double *)*(column + 4));for (i = 0; i < column + 4; i++){v[i] = (double *)malloc(sizeof(double)*row);}if (myid == 0){if ((fp = fopen("C:\\Users\\User\\Desktop\\velocity.txt", "r")) != NULL){for (sendnum = 1; sendnum <= 3; sendnum++){for (i = 2; i <= column + 1; i++){for (j = 0; j < row; j++) {fscanf(fp, "%lf", &v[i][j]);}}for (i = 2; i <= column + 1; i++)MPI_Send(v[i], row, MPI_DOUBLE, sendnum, 1, MPI_COMM_WORLD);}fclose(fp);}}if (myid != 0){for ( i=2; i<=column+1; i++)MPI_Recv(v[i], row, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD, &status);}//指定每一个进程开始和结束计算的行号if (myid == 1){for (j = 0; j<row; j++)//v[2][j]=0.0;begin = 4;}if (myid == numprocs - 1){for (j = 0; j<row; j++)//v[column+1][j]=0.0;end = column - 1;}//u记录各点振幅值u = (double ***)malloc(sizeof(double **)* 3);for (k = 0; k<3; k++){u[k] = (double **)malloc(sizeof(double *)*(column + 4));for (i = 0; i<column + 4; i++){u[k][i] = (double *)malloc(row*sizeof(double));}}for (k = 0; k<3; k++)//赋初值for (i = 0; i<column + 4; i++)for (j = 0; j<row; j++)u[k][i][j] = 0;if (myid>1)//定义左右进程虚进程up = myid - 1;elseif (myid != 0) up = MPI_PROC_NULL;if (myid<numprocs - 1 && myid != 0)down = myid + 1;elseif (myid != 0) down = MPI_PROC_NULL;sourceid = sourcey / column + 1;//确定震源应该位于的进程//进程间通信并且进行计算if (myid != 0)for (k = 0; k<T; k++){MPI_Sendrecv(u[1][column], row, MPI_DOUBLE, down, 1, u[1][0], row, MPI_DOUBLE, up, 1, MPI_COMM_WORLD, &status);//从上向下平移MPI_Sendrecv(u[1][column + 1], row, MPI_DOUBLE, down, 1, u[1][1], row, MPI_DOUBLE, up, 1, MPI_COMM_WORLD, &status);//从上向下平移MPI_Sendrecv(u[1][2], row, MPI_DOUBLE, up, 2, u[1][column + 2], row, MPI_DOUBLE, down, 2, MPI_COMM_WORLD, &status);//从下向上平移MPI_Sendrecv(u[1][3], row, MPI_DOUBLE, up, 2, u[1][column + 3], row, MPI_DOUBLE, down, 2, MPI_COMM_WORLD, &status);//从下向上平移for (i = begin; i <= end; i++){for (j = 2; j<row - 2; j++){u[2][i][j] = pow(v[i][j] * dt / dx, 2)*(-1.0 / 12 * (u[1][i + 2][j] + u[1][i - 2][j]) + 4.0 / 3 * (u[1][i + 1][j] + u[1][i - 1][j]) - 5.0 / 2 * u[1][i][j]) + pow(v[i][j] * dt / dz, 2)*(-1.0 / 12 * (u[1][i][j + 2] + u[1][i][j - 2]) + 4.0 / 3 * (u[1][i][j + 1] + u[1][i][j - 1]) - 5.0 / 2 * u[1][i][j]) + 2 * u[1][i][j] - u[0][i][j];//时间二阶精度差分格式if (myid == sourceid&&i == (sourcey - column*(myid - 1) + 2) && j == sourcex)//如果某个进程计算到的网格点正好是震源点,则应在该点的振幅值上加上原始扰动的振幅值u[2][i][j] += s[k];}}temp = u[0];u[0] = u[1];u[1] = u[2];u[2] = temp;}if (myid != 0){for (i = 2; i <= column + 1; i++)MPI_Send(u[1][i], row, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);//按行向主进程发送运算结果}//printf("%d ok", myid);//输出数据,前两行为行数及列数,后面为波前快照的数据体。
声波方程数值模拟实验报告

声波方程数值模拟实验报告.基础理论知识需要的已知条件包括:1)震源函数地层速度(波速) 边界条件.2.2.2苇=v 2(諾二2)S(t)一 t :x :zv (x, Z )是介质在点(x , z )处的纵波速度,u 为描述速度位或者压力的波场,s (t )为震 源函数。
为求式(4-1)的数值解,必须将此式 离散化,即用有限差分来逼近导数,用差商代替 微商。
为此,先把空间模型网格化(如图4-1所示)。
设x 、z 方向的网格间隔长度为h ,厶t 为时间采样步长,则有:X 二i^h(i 为正整数) z = j.)h(j 为正整数)^n :t(n 为正整数)u :j 表示在(i,j )点,k 时刻的波场值。
k1. 2)3)>2u 2f cu〒=V p ^~2 t :x22w 2 w 厂二 V (—T :t ;x 声波方程的有限差分法数值模拟 对于二维速度-深度模型,地下介质中地震波的传播规律可以近似地用声波方程描述:2. 弹性波方程:二b s (t) 一 z22_w );z 2)(4-1)将u i,j在(i,j)点k时刻用Taylor展式展开:k 1 kjUu i,j 7,j ■—ct将U i k j 」在(i,j)点k 时刻用Taylor 展式展开:k k4 k k5 k[U i2jui 2,j] 3[ui 4,j ui ・1,j] —?U i,j }S(t)*、(i -i °)**「(j - j °)(4-7)式中v(i, j)为介质速度的空间离散值,:h 是空间离散步长,=t 为时间离散步长,s(k)为震源函数,关于 s(k) 一般使用一个理论的雷克型子波代替,即:上式中,t 为时间,f 为中心频率,一般取为20-40HZ , 为控制频带宽度的参数,(4-2)k 1k ;'UUi,jUi,2*「7 2 ;:t 2(4-3)将上两式相加,略去高阶小量, 整理得(i,j)点k 时刻的二阶时间微商为:2k 1kk J;:u u i,j -2u i,j u i,j.:t 242(4-4)对于空间微分,采用四阶精度差分格式,(以X 方向为例)即将U i*;j 、*Tj 分别在(i,j)点k 时刻展开到四阶小量,消除四阶小量并解出二阶微分得:-2~ u 11 k k 4 k k 5 k{—T7[u i 二 j +u id2,j ]+:[u i4j +U i*,j ] —=u i,j } 12 3 2:x L X 2(4-5)同理可得:2;=u 1.1 kk4 kk5 k一 2 人 2{一 石[Ui,j ,+Ui,j~2]+:[Ui,j 」+Ui,j^]—;U i,j}:z-z12 32(4-6)这就实现了用网个点波场值的差商代替了偏微分方程的微商,将上三个式子代入 (4-1)式中得:k 1 Ui,j kk 4= 2u i,j —Ui,jV :-1 1 k k 4 k k—{p [u=j U i/ yij —j:h 25 k H-U i,j }h 2 {12s (t )二 e(-2 f / )2t2cos2 二 ft(4-8)般取3-5。
超声波声场的数值模拟及分析研究

超声波声场的数值模拟及分析研究I. 前言超声波技术作为一种重要的非破坏性检测手段,广泛应用于医学、工业、军事等领域。
在这些领域中,对于超声波传播和反射规律的研究,对提高超声波技术检测的灵敏度和准确度至关重要。
声场是一个重要的研究方向。
声场的数值模拟和分析可以帮助研究者更好地了解超声波在不同介质中的传播规律。
II. 超声波声场模拟的基本原理(一) 声场模拟的定义声场模拟是指基于声波理论对声场进行数值计算和分析,以掌握声场分布的规律性,实现声波信号的处理和应用。
(二) 超声波传播的数学模型超声波传播的数学模型是典型的波动方程,其中声压 $ P(x,t) $ 是变量,表示声波在空间位置 $x$ 和时间 $t$ 处的强度。
根据波动方程,超声波传播的速度取决于介质的密度和压力。
(三) 超声波声场模拟方法声场模拟的方法主要有有限差分法、边界元法和声束追踪法。
其中,有限差分法适用于平面和轴对称的声场计算,边界元法适用于无限空间中的声场计算,声束追踪法适用于计算弥散源下的声场传播。
III. 超声波声场模拟的应用及优点(一)超声波生物医学应用中的声场模拟超声波在生物医学应用中广泛应用,如超声心动图、超声诊断、超声治疗等。
声场模拟可以辅助医生分析生物组织中声波的传播规律,提高检测准确度和效率,并为医疗维护提供重要支持。
(二) 超声波工业检测中的声场模拟超声波检测在工业生产中应用广泛,如对金属、塑料等材料的瑕疵检测。
声场模拟技术可以模拟材料内部的声场分布,定位和评估瑕疵,提高测试的准确性和可靠性。
(三) 超声波声场模拟的优点超声波声场模拟可以模拟不同介质中的声波传播规律,为声波技术的研究提供了可靠依据。
与实验方法相比,声场模拟不受时间和空间限制,更加灵活方便。
声场模拟还可以降低实验成本,减少实验过程中的危险和损失。
IV. 超声波声场模拟的发展趋势(一)模拟软件的发展超声波声场模拟需要强大的计算机算力和复杂的程序设计技术,目前市场上已经有多种声场模拟软件,如ABAQUS、COMSOL、ANSYS等。
声波测量实验报告数据

一、实验目的1. 理解声波的基本特性及其传播规律。
2. 掌握使用驻波法测量声速的方法。
3. 学习使用示波器观察和分析声波信号。
4. 通过实验,提高动手能力和数据处理能力。
二、实验原理声波是一种机械波,它通过介质中的质点振动传播。
声速是指声波在介质中传播的速度,其大小与介质的性质有关。
本实验采用驻波法测量声速,其原理如下:当声波在两束反射波相遇时,会产生干涉现象,形成驻波。
驻波的特点是波节和波腹的位置固定不变,波节处的振幅为零,波腹处的振幅最大。
根据驻波波节和波腹的位置关系,可以计算出声波的波长,从而求得声速。
三、实验仪器与器材1. 实验仪器:驻波实验装置、示波器、信号发生器、频率计、测量尺等。
2. 实验器材:玻璃管、橡皮膜、连接线、电阻等。
四、实验步骤1. 将玻璃管水平放置,将橡皮膜固定在管口。
2. 将信号发生器的输出信号接入驻波实验装置,调节频率使驻波形成。
3. 打开示波器,将示波器的输入通道连接到驻波实验装置的输出端。
4. 观察示波器屏幕上的波形,找到波节和波腹的位置。
5. 使用测量尺测量波节和波腹之间的距离,得到声波的波长。
6. 使用频率计测量信号发生器的输出频率,得到声波的频率。
7. 根据声波的波长和频率,计算声速。
五、实验数据1. 波长测量数据:波节位置:L1 = 5.5 cm波腹位置:L2 = 15.6 cm波长:λ = L2 - L1 = 10.1 cm = 0.101 m2. 频率测量数据:频率:f = 500 Hz3. 声速计算数据:声速:v = λf = 0.101 m × 500 Hz = 50.5 m/s六、实验结果与分析通过实验,我们测量得到了声波的波长和频率,进而计算出了声速。
实验结果显示,在实验条件下,声速约为50.5 m/s。
与理论值相比,实验结果存在一定的误差,这可能是由于实验器材的精度限制、实验环境的影响以及实验操作中的误差等因素造成的。
七、实验结论1. 通过本实验,我们掌握了使用驻波法测量声速的方法。
理论地质模型的声波波场数值模拟

模拟包含 了丰富 的波动 信息 , 研究 地震 波 的传播 机 为
t wo—o d rc n rld f rn e s h meo c u t v sa d t e dfee c c e fb u d r o d t n r e e ta i e e c c e f o si wa e n h i r n e s h me o o n a y c n i o .B i o—d c e r t a a c i i ul a t d w e k t o ei l h c g oo ia d l y s lt gt ewa ef l si e c n i o fe p o es o n a d u sd h d a, a e h h p n h e lgc l mo e ,b i a i h v e d t o dt n o x ld p t n p i et e me i wec n g tte s a e a d t e mu n i n h i i
cp rc rs f h aei d f e t i e I d io . ytec m a sno ew v e s n s c r , h a e f d a j s u s e o ew v i e n m . n a dt n b o p r o f h a ef l dc pr od tep p r n s h t ut — d ot n fr t i h i t i d a e i t
二维声波方程交错网格有限差分数值模拟研究

在对介质模型进行离散化处理的过程中,网格
是一种常用手段。对波动方程进行网格离散,可以
利用交错网格的差分形式。交错网格就是把速度和
应力分配到两套不同的网格中,这样可以使速度、应
力得到很好的耦合[2]。利用交错网格有限差分法对
一阶速度—应力波动方程进行求解时,应力、速度等
分量在模型交错网格节点中的位置分布如图 1所示。
-U ] k+1/2 i,j-n+1
其中 x=iΔx,z=jΔz,t=kΔt,i、j、k分别表示空 间和时间网格点。Uki,+j1/2,Wki++11//22,j+1/2,Pki,+j+11/2/2,Qki,j+1/2 和 Ski+1/2,j分别是速度 Vx、Vz与应力 σxx、σzz、σxz的离 散值。
数的问题转化为求解网格节点上的差分方程组的问
题,得到数值解。在波动方程网格离散化的过程中,
可以利用交错网格的差分形式。
1.1 均匀各向同性介质二维声波方程
均匀各向同性介质二维声波方程可表示为:
2u(x,xy2,z,t)+2u(x,zy2,z,t)=
v2(1x,z)2u(x,ty2,z,t)
(1)
应力 Pxx: Pki++11/2,j=Pki+1/2,j+C11ΔΔxtnΣN=1CNn[Uki++n1,/j2-Uik-+n1+/21,j]+
C13ΔΔztnΣN=1CNn[Wik++11//22,j+n-1/2
-W ] k+1/2 i+1/2,j-n1/2
应力 Qzz: Qik++11/2,j=Qki+1/2,j+C13ΔΔxtnΣN=1C(nN)[Uik++n1,/j2-Uik-+n1+/21,j]+
C33ΔΔztnΣN=1C(nN)[Wki++11//22,j+n-1/2-Wik++11//22,j-n+1/2]
声波方程有限差分数值模拟的变网格步长算法

声波方程有限差分数值模拟的变网格步长算法声波方程是描述声波在介质中传播的方程,在进行数值模拟时需要使用有限差分方法来近似求解。
有限差分方法将连续的空间和时间离散化,通过在离散的网格节点上计算声压场的数值来模拟声波的传播过程。
在有限差分数值模拟中,选择合适的网格步长对数值结果的精度和计算效率具有重要影响。
变网格步长算法是一种能够根据需要在不同区域自适应地调整网格步长的技术。
在声波方程有限差分数值模拟中,声波会在不同介质中以不同的速度传播,因此在网格步长选择上需要考虑介质的变化。
当声波在介质变化剧烈的区域传播时,使用较小的网格步长可以提高模拟的精度。
而在介质变化缓和的区域,使用较大的网格步长能够减少计算量。
变网格步长算法的基本思想是通过对声波传播区域进行划分,然后根据介质的变化情况调整不同区域的网格步长。
具体步骤如下:1.对传播区域进行划分:根据介质的变化情况,将声波传播区域划分为多个区域,每个区域具有不同的网格步长。
2.确定初始网格步长:在初始时,可以根据经验或者初步模拟结果选择一个合适的网格步长。
3.计算声波传播:在每个区域内分别进行声波方程的有限差分数值模拟,使用当前区域的网格步长进行计算。
4.判断误差与精度:通过计算得到的声压场数值和预期精度进行比较,如果达到要求,则结束模拟;否则,进行下一步。
5.调整网格步长:根据当前区域的模拟误差情况,调整该区域的网格步长,使其更适应声波在当前区域的传播特性。
可以根据误差大小和梯度等因素进行调整。
6.重复模拟:根据调整后的网格步长,重新进行声波方程的有限差分数值模拟,并返回步骤4通过以上步骤,可以实现声波方程有限差分数值模拟的变网格步长算法。
这种算法能够根据介质的变化情况自适应地调整网格步长,提高模拟的精度和计算效率。
然而,变网格步长算法的实现并不简单,需要合理设置划分区域和调整步长的策略,并在计算过程中不断优化和调整,才能达到较好的数值模拟效果。
声波方程有限差分数值模拟的变网格步长算法

声波方程有限差分数值模拟的变网格步长算法声波方程有限差分数值模拟是一种常用的声波传播模拟方法,可以在计算机上通过数值计算求解声波传播的过程。
在进行这种数值模拟时,常常需要选择合适的网格步长,以保证计算结果的准确性和计算效率。
本文将介绍一种变网格步长算法,用于优化声波方程有限差分数值模拟的计算。
声波方程可以用下面的形式表示:∂^2p/∂t^2=c^2∇^2p其中p是声场变量,t是时间,c是声速,∇^2是Laplace算子。
为了将声波方程用有限差分方法进行离散化计算,我们需要将空间和时间分别离散化。
首先,将空间离散化为网格,在每个网格点上计算声场的值。
其次,将时间离散化为离散的时间步长,通过迭代计算不同时间步长上的声场分布。
为了保证计算结果的准确性,网格步长应当满足Nyquist采样定理的要求。
即网格步长应小于声波的最小波长的一半。
根据声波方程的性质,我们可以通过声速和最高频率来估计声波的最小波长。
然后,我们可以根据最小波长来选择合适的网格步长。
然而,在实际的声波传播计算中,声场的变化往往不是均匀的。
有些区域的声场变化较大,而其他区域的声场变化较小。
如果我们在整个计算区域都采用较小的网格步长,将会造成计算资源的浪费。
因此,需要一种方法能够根据声场的变化情况来自适应地调整网格步长。
变网格步长算法就是一种能够根据声场变化情况自动调整网格步长的算法。
其基本思想是根据声场在不同网格上的变化率来决定每个网格上的网格步长。
具体的算法步骤如下:1.初始化:选择一个合适的初始网格步长。
通常可以选择根据声波的最小波长来确定。
2.计算网格步长:在每个时间步长上,对于每个网格点,计算其周围网格点上的声场变化率。
常用的方法是计算声场在三个相邻时间步长上的差分值,然后取绝对值并求平均。
根据声场变化率,调整当前网格点上的网格步长。
变化率大的网格点应该有更小的网格步长,而变化率小的网格点则可以有更大的网格步长。
3.更新声场:根据调整后的网格步长,更新所有网格点上的声场值。
声波有限差分数值模拟

(图3-1)
(图3-2)
(图3-2)
(图3-3)
工程中的许多波动问题,其计算求解域往往很大,有时甚 至是无界的。但实际情况下,我们总是在一个有限的区域 内进行求解,因此,需要在所限定的区域的边界上引入吸 收边界条件,从而最大限度地降低由于人为划定的边界而 造成边界反射。吸收边界的建立对于波动方程的数值模拟 起到致关重要的作用,它将直接影响的计算结果的稳定性 和准确性。图3-2没有加吸收边界;图3-3加入了吸收边界。
声波方程:
2P t 2
v2
1P
其中
x
ex
y
ey
z
ez
(3-1)
等价
运动方程 连续性方程
V t
P
(3-2)
P
v2
V
(3-3)
t
质点速度
V Vx (x, y, z,t)ex Vy (x, y, z,t)ey Vz (x, y, z,t)ez
]
2P
y2
1 y2
[
5 2
Pn i, j,k
4 3
P P n i, j 1,k
n i, j 1,k
1 12
P P n i, j 2,k
n i, j 2,k
]
2P z 2
1 z2
[ 5 2
Pn i, j,k
4 3
P P n i, j,k 1
4 3
P P n i, j,k 1
n i, j,k 1
1 12
P P n i, j,k2
n i, j,k 2
声波波动方程正演模拟程序总结

声波波动方程正演模拟程序程序介绍:第一部分:加载震源,此处选用雷克子波当作震源。
编写震源程序后,我将输出的数据复制,然后我用excel做成了图片,以检验程序编写是否正确。
以下为雷克子波公式部分的程序:for(it=0;it<Nt;it++){t1=it*dt;t2=t1-t0;source[it]=(1.0-2.0*pow(PI*fm*t1,2.0))*exp(-pow(PI*fm*t1,2.0));fprintf(fp,"%.8f %.8f\n",t1,source[it]);}此处,为了成图完整,我用的是t2,而不是t1,也就是把雷克子波向右移动了一段距离,使主要部分都显示出来。
(频率采用的是30hz)从图中可以看出程序是正确的,符合理论上雷克子波的波形。
第二部分:主程序,编写声波正演模拟算子。
首先定义了各种变量,然后指定震源位置,选择权系数,给速度赋值,然后是差分算子的编写,这是主要部分,最后再进行时间转换,即把n-1时刻的值给n时刻,把n时刻的值给n+1时刻。
此处,我编写的是均匀介质声波方程规则网格的正演模拟程序,时间导数采用二阶中心差分、空间导数为2N阶差分精度,网格大小为200*200,总时间为400。
第三部分:这一部分就是记录文件。
首先记录Un文件,然后记录record文件。
模型构建与试算:1、我首先建立了一个均匀介质模型,首先利用不同时间,进行了数值模拟,得到波场快照如图所示:100ms 200ms 300ms此处,纵波速度为v=3000m/s。
模型大小为200×200,空间采样间隔为dx=dz=10m。
采用30Hz的雷克子波作为震源子波,时间采样间隔为1ms,图中可以看出,波场快照中的同相轴是圆形的,说明在均匀各向同性介质中,点源激发的波前面是一个圆,这与理论也是吻合的。
并且随着时间的增大,波前面的面积逐渐增大,说明地震波从震源中心向外传播。
规则网格有限差分解声波方程个人总结报告

规则⽹格有限差分解声波⽅程个⼈总结报告地球探测科学与技术学院总结报告学校:吉林⼤学学院:地球探测科学与技术学院专业:勘查技术与⼯程(应⽤地球物理)科⽬:科学计算⽅法--有限差分解声波⽅程姓名:学号:⽬录⼀.相关理论基础 (3)1. 地震波场模拟 (3)2. 波动⽅程类型及其局限性 (3)3. 数值算法类型及其优缺点 (4)⼆.有限差分解声波⽅程基础理论知识 (6)1.需要的已知条件包括: (6)2.弹性波⽅程 (6)3.声波⽅程的有限差分法数值模拟 (6)4. 稳定性条件 (7)5. 频散关系式 (8)6. 有限差分参数 (8)三.程序及结果成图 (8)四.通过实验所发现的问题和认识 (12)五.他⼈所做的有限差分解波动⽅程程序及结果成图 (12)参考⽂献及资料 (19)有限差分解声波⽅程总结报告⼀.相关理论基础1.地震波场模拟地震波场模拟即地震正演,是指已知模型结构,通过物理或数值计算的⽅法模拟该地质结构下的地震波的传播,最终合成地震记录,也可以认为其是野外数据采集过程的室内再现。
物理模拟花费昂贵,⼈们⼀般采⽤⽐较经济的数值模拟技术。
地震波场数值模拟是在给定数学模型(如弹性波⽅程,声波⽅程等)、震源和地下⼏何界⾯、物性参数(岩层密度、速度等)情况下,研究弹性波或声波的传播规律。
2.波动⽅程类型及其局限性⼆阶标量声波⽅程:⼀阶压⼒-速度⽅程组:波动⽅程能够描述且只能描述纵波的传播规律,包括直达波、反射波、透射波、折射波等,但不能描述转换波传播规律。
需要的已知条件包括:震源函数、地层速度、密度边界条件S(t)zp x p v t p +??+??=??)(2222222)(2z v y v x v C t P z y x++-=ρ)(1x Pt v x ??-=??ρ)(1yPt v y ??-=??ρ)(1zP t v z ??-=??ρ(2)弹性波⽅程:弹性波⽅程能够描述纵、横波的传播规律,包括直达波、反射波、透射波、折射波以及转换波等。
大学物理仿真实验实验报告范文超声波测声速_大学物理实验超声声速测定

大学物理仿真实验实验报告范文超声波测声速_大学物理实验超声声速测定.大学物理仿真实验实验报告试验日期:实验者:班级:学号:超声波测声速一实验原理v=fλ,只要知道频率和波长由波动理论可知,波速与波长、频率有如下关系:就可以求出波速。
本实验通过低频信号发生器控制换能器,信号发生器的输出频率就是声波频率。
声波的波长用驻波法(共振干涉法)和行波法(相位比较法)测量。
下图是超声波测声速实验装置图。
驻波法测波长由声源发出的平面波经前方的平面反射后,入射波与发射波叠加,它们波动方程分别是:..叠加后合成波为:的各点振幅最大,称为波腹,对应的位置:(n=0,1,2,3……)的各点振幅最小,称为波节,对应的位置:(n=0,1,2,3……)二实验仪器)声速的测量实验仪器1包括超声声速测定仪、函数信号发生器和示波器)超声声速测定仪2主要部件是两个压电陶瓷换能器和一个游标卡尺。
3)函数信号发生器提供一定频率的信号,使之等于系统的谐振频率。
)示波器4某,y轴输入各接一个换能器,改变两个换能器之间的距离会影响示波器示波器的上的图形。
并由此可测得当前频率下声波的波长,结合频率,可以求得空气中的声速。
三实验内容.调整仪器使系统处于最佳工作状态。
1.用驻波法(共振干涉法)测波长和声速。
2.用相位比较法测波长和声速。
3..注意事项某端面的平行。
和S21.确保换能器S1.信号发生器输出信号频率与压电换能器谐振频率f保持一致。
2三数据记录与处理基础数据记录1.=33.5kHz谐振频率驻波法测量声速2.驻波法测量声速数据表1i+6icmλ=(1-11(cm))/3()1(cm)iiii+6i+61.0577112.2329.0601.067829.57412.7741.06510.1223913.3161.05610.652413.8201014.35211511.1781.0581214.84661.04811.70011.0585(λ的平均值:cm)i6i1λ的不确定度:62)(i1iS=0.002(cm)i(i1)因为,λ=(1-1)/3,Δ=0.02mmiii+62=u0.000544(cm)所以,仪3322Su0.021(mm)计算声速:354.f50(m/)f1%0.2(kHz)f3计算不确定度:223((m/)(f))fυ(±)m/,354=0.8%实验结果表示:3=3.相位比较法测量声速表2相位比较法测量声速数据(相位变换2π)i1(cm)ii+71(cm)i+7λ=(1-1)/7(cm)ii+7i谐振频率18.162815.9261.109f=32.0kHz 29.282917.050 1.110..3104001018.220 1.107411.5121119.2061.099512.6001220.2901.099613.7221321.4601.105714.8321422.5321.1001.固定距离,改变频率,以求声速。
力学声波测量实验报告

一、实验目的1. 理解声波在介质中传播的基本原理和规律。
2. 掌握声波测量实验的方法和步骤。
3. 通过实验,了解声波在空气、水和固体中的传播速度,并分析影响因素。
4. 提高动手能力和数据分析能力。
二、实验原理声波是一种机械波,它能在固体、液体和气体中传播。
声波的传播速度与介质的性质有关,通常用公式v=√(E/ρ)来表示,其中v为声速,E为介质的弹性模量,ρ为介质的密度。
在空气中,声速与温度、湿度等因素有关,可用公式v=331.3+0.6T+0.0125H来计算,其中T为温度(℃),H为相对湿度。
本实验通过测量声波在不同介质中的传播速度,分析影响声速的因素,并验证声波传播速度的公式。
三、实验器材1. 超声波发射器2. 超声波接收器3. 函数信号发生器4. 示波器5. 温度计6. 湿度计7. 空气、水和固体介质8. 尺子四、实验步骤1. 准备实验器材,连接好超声波发射器、接收器、函数信号发生器和示波器。
2. 在空气中,测量超声波发射器到接收器的距离,并记录温度和湿度。
3. 调整函数信号发生器输出频率,使超声波发射器发出稳定声波。
4. 观察示波器,记录声波到达接收器的时间,计算声波在空气中的传播速度。
5. 将实验装置放入水中,重复步骤2-4,测量声波在水中的传播速度。
6. 将实验装置放入固体介质中,重复步骤2-4,测量声波在固体介质中的传播速度。
7. 对实验数据进行处理和分析,得出结论。
五、实验数据及处理1. 空气中声速测量数据:距离:L1 = 1m温度:T1 = 20℃湿度:H1 = 60%时间:t1 = 0.003s声速:v1 = L1/t1 = 333.33m/s2. 水中声速测量数据:距离:L2 = 1m温度:T2 = 20℃湿度:H2 = 60%时间:t2 = 0.0025s声速:v2 = L2/t2 = 400m/s3. 固体介质中声速测量数据:距离:L3 = 1m温度:T3 = 20℃湿度:H3 = 60%时间:t3 = 0.001s声速:v3 = L3/t3 = 1000m/s六、结果分析1. 通过实验数据可以看出,声波在不同介质中的传播速度不同,且在固体介质中的传播速度最快,在液体中次之,在气体中最慢。
声波实验报告

一、实验目的1. 理解声波的产生和传播原理。
2. 掌握声波的基本特性,如频率、振幅、波长等。
3. 学习使用声波传感器进行声波信号的采集和测量。
4. 通过实验验证声波的叠加原理和拍现象。
二、实验原理声波是机械纵波,在空气中传播时,其振动方向与波的传播方向相同。
声波的产生通常由物体的振动引起,如音叉、扬声器等。
声波在传播过程中,其频率、振幅、波长等参数会影响声波的传播特性。
根据波的叠加原理,两列具有不同频率但以相同速度沿同一方向传播的简谐波相互迭加,会形成拍现象。
设两列波的频率分别为v1和v2,其频率差为v = |v1 - v2|,振幅相同,初相位均为零。
两列平面简谐波可表示为:y1 = A1cos(2πx/v1 - 2πt/v1)y2 = A2cos(2πx/v2 - 2πt/v2)其中,A1和A2为振幅,v为声波传播速度,x为位置,t为时间。
迭加后,拍频波可表示为:y = A cos(2πx/v - 2πt/v) + B cos(2πx/v + 2πt/v)其中,A和B为振幅,v为拍频。
将声传感器放置在两列波所通过空间的某一点,就能接受到两列波在该点产生的合振动。
合振动的振幅周期性地变化,最大值出现在2πx/v - 2πt/v = 0时,即拍频vS为调制频的2倍。
三、实验器材1. 音叉及共鸣箱2. 一端开口小橡皮锤3. 扬声器4. 计算机实时测量系统和声传感器5. 信号发生器6. 电压表四、实验步骤1. 将声传感器连接到计算机实时测量系统,并打开实验软件。
2. 打开信号发生器,输出不同频率的正弦信号,并调整频率和振幅。
3. 将扬声器输入不同频率的正弦信号,观察并记录声响的频率和强度。
4. 将声传感器放置在扬声器前,调整传感器与扬声器的距离,记录不同距离下的声强。
5. 使用橡皮锤敲击音叉,观察并记录音叉的振动频率。
6. 将音叉放置在共鸣箱中,观察共鸣箱的共振现象。
7. 将声传感器放置在音叉附近,记录音叉振动产生的声波信号。
声学波传播过程的数值模拟分析

声学波传播过程的数值模拟分析声学波传播是研究声波在不同介质中传播规律的一门学科。
通过数值模拟分析声学波的传播过程,我们可以更好地理解和预测声波在不同介质中的行为,为声学相关领域的研究和应用提供有力支持。
声学波传播的数值模拟分析首先需要确定所研究的问题,如声源的特性、介质的物理参数以及边界条件等。
然后,通过建立合适的数学模型和方程组,利用计算机进行数值计算和解析。
最后,根据模拟结果对声波传播过程进行分析和评估。
在声学波传播的数值模拟分析中,常用的方法包括有限差分法(FDM)、有限元法(FEM)和边界元法(BEM)等。
这些方法各有特点,可以根据具体问题和需求选择合适的方法进行模拟分析。
以有限差分法为例,它是一种离散化计算的方法。
首先,将声波传播问题的连续域转化为离散的有限差分网格,将时间和空间分割成小块。
然后,根据声学波动方程将声场的变化量用差分的形式表示。
最后,通过数值计算和迭代求解差分方程组,得到声场在各个时间和位置的数值解。
有限差分法的数值模拟分析具有一定的深度。
通过改变差分网格的分辨率,我们可以探究声波传播过程中的细节和特征。
例如,在分析声波在不同介质中的传播速度和衰减率时,可以通过调节网格大小和时间步长的方法来探讨它们对声波传播的影响。
此外,还可以研究声波在复杂介质结构中的传播规律,如声波在不同形状和密度的障碍物中的散射和衍射现象。
声学波传播的数值模拟分析还可以应用于声波在医学成像和工程设计中的研究。
例如,在医学领域中,数值模拟分析可以用于研究超声波在人体组织中的传播规律,以帮助医生进行准确的诊断和治疗。
在工程设计中,数值模拟分析可以用于研究声波在复杂环境中的传播特性,如建筑物中的声学设计和噪音控制。
当然,声学波传播的数值模拟分析也存在一些挑战和限制。
首先,模拟的精确度和计算效率之间存在着一定的平衡。
增加模拟的精度会导致计算量的增加,而过于追求计算效率可能会牺牲模拟的准确性。
其次,模拟结果往往需要与实验数据进行对比验证,以确保模拟的可靠性。
声波的测量实验报告

一、实验目的1. 理解声波传播的基本原理,掌握声波速度的测量方法。
2. 通过实验,加深对声波在不同介质中传播特性的认识。
3. 学会使用实验仪器进行声波速度的测量,并掌握数据处理方法。
4. 了解声波在科技领域的应用及其重要性。
二、实验原理声波是一种机械波,在介质中传播时,其速度与介质的性质有关。
声波速度的计算公式为:\[ v = \sqrt{\frac{E}{\rho}} \]其中,\( v \) 为声波速度,\( E \) 为介质的弹性模量,\( \rho \) 为介质的密度。
在实验中,我们通过测量声源与接收器之间的距离以及声波传播的时间,计算出声波速度。
三、实验器材1. 声波发射器2. 声波接收器3. 测距仪4. 秒表5. 耳塞6. 实验室标准大气压表四、实验步骤1. 将声波发射器与接收器放置在实验台上,确保两者之间距离为 1 米。
2. 使用测距仪测量声波发射器与接收器之间的距离,记录数据。
3. 在声波发射器与接收器之间设置实验环境,确保环境安静,避免外界干扰。
4. 使用秒表记录声波从发射器传播到接收器所需的时间,记录数据。
5. 重复步骤 2 和 3,共进行 5 次实验,记录数据。
6. 使用标准大气压表测量实验环境下的气压、温度和湿度,记录数据。
五、数据处理1. 计算每次实验的声波速度,公式为:\[ v = \frac{d}{t} \]其中,\( d \) 为声波发射器与接收器之间的距离,\( t \) 为声波传播时间。
2. 计算每次实验的声波速度的平均值。
3. 计算实验误差,公式为:\[ \Delta v = \frac{\sum_{i=1}^{n} |v_i - \bar{v}|}{n} \]其中,\( v_i \) 为每次实验的声波速度,\( \bar{v} \) 为声波速度的平均值,\( n \) 为实验次数。
六、实验结果与分析1. 根据实验数据,计算出声波在实验环境下的速度,并与理论值进行比较。
一维声波方程有限差分模拟

一维声波方程有限差分模拟一维声波方程是$$\frac{\partial^2 p}{\partial t^2} = c^2 \frac{\partial^2p}{\partial x^2}$$其中 $p(x,t)$ 是在位置 $x$ 和时间 $t$ 上的压力,$c$ 是声速。
为了进行数值模拟,我们需要使用有限差分方法来近似空间和时间上的偏导数。
一个常用的方法是使用二阶中心差分,即$$\frac{\partial^2 p}{\partial t^2} \approx \frac{p_j^{n+1} -2p_j^n + p_j^{n-1}}{\Delta t^2}$$$$\frac{\partial^2 p}{\partial x^2} \approx \frac{p_{j+1}^n -2p_j^n + p_{j-1}^n}{\Delta x^2}$$其中 $p_j^n$ 表示在位置 $j\Delta x$ 和时间 $n\Delta t$ 上的压力。
将这两个式子代入原方程得到$$\frac{p_j^{n+1} - 2p_j^n + p_j^{n-1}}{\Delta t^2} = c^2\frac{p_{j+1}^n - 2p_j^n + p_{j-1}^n}{\Delta x^2}$$整理后可得$$p_j^{n+1} = 2p_j^n - p_j^{n-1} + c^2 \frac{\Delta t^2}{\Deltax^2} (p_{j+1}^n - 2p_j^n + p_{j-1}^n)$$这是通过有限差分方法得到的一维声波方程的数值模拟公式。
我们可以从初始状态 $p_j^0$ 和 $p_j^1$ 开始迭代,按照上述公式计算 $p_j^{n+1}$ 直到达到所需的时间步数。
需要注意的是,为了保证数值稳定性,需要满足 $\Delta t \leq \frac{\Delta x}{c}$ 的条件。
水下超声波检测声场数值模拟与实验分析

⽔下超声波检测声场数值模拟与实验分析⽔下超声波检测声场数值模拟与实验分析SOUND FIELD NUMERICAL SIMULATION AND EXPERIMENT OF UNDERWATER ULTRASONICTEST孟凡凯哈尔滨⼯业⼤学2012年7⽉国内图书分类号:TG115.28+5 学校代码:10213 国际图书分类号:620.179.16 密级:公开⼯学硕⼠学位论⽂⽔下超声波检测声场数值模拟与实验分析硕⼠研究⽣:孟凡凯导师:贺⽂雄副教授申请学位:⼯学硕⼠学科:材料加⼯⼯程所在单位:材料科学与⼯程答辩⽇期:2012年7⽉授予学位单位:哈尔滨⼯业⼤学Classified Index: TG115.28+5U.D.C: 620.179.16Dissertation for the Master Degree in EngineeringSOUND FIELD NUMERICAL SIMULATION AND EXPERIMENT OF UNDERWATER ULTRASONICTESTCandidate:Meng FankaiSupervisor:Associate Prof. He Wenxiong Academic Degree Applied for:Master of Engineering Speciality:Materials processing Engineering Affiliation:School of Materials Science andEngineeringDate of Defence:July, 2012Degree-Conferring-Institution:Harbin Institute of Technology哈尔滨⼯业⼤学⼯学硕⼠学位论⽂摘要在超声波探伤中,为了提⾼检测速度和精度,必须对超声波声场进⾏全⾯的分析,近些年来,数值法、解析法等超声波声场模型的建⽴以及相应软件的发展,为超声波声场的模拟提供了基础,⽽声场模拟的发展,进⽽获得准确声压,对探伤⼯艺的制定和缺陷的分析起到⾄关重要的作⽤。
基于完全匹配层构建新方法的2.5维声波近似方程数值模拟

基于完全匹配层构建新方法的2.5维声波近似方程数值模拟高正辉;孙建国;孙章庆;韩复兴;刘志强【期刊名称】《石油地球物理勘探》【年(卷),期】2016(051)006【摘要】传统的吸收边界条件只对有限入射角和有限频率范围内的波具有很好的吸收效果,而在有效吸收范围外的边界反射将对数值模拟结果造成污染.为此,在2.5维声波数值模拟中引入完全匹配层吸收边界条件,并提出了一种完全匹配层构建新方法.该方法将完全匹配层构建在研究区域的右边界和下边界的外部,同时改变相应的衰减因子,使之关于完全匹配层的中心呈对称分布.在采用有限差分法计算波场时,将完全匹配层外边界的网格点与相应的研究区域边界的网格点连接起来,使波在传入完全匹配层之后又传入到研究区域中.由于完全匹配层良好的吸收效果,波在完全匹配层中被完全吸收,基本不会再传入到研究区域.在构建相同数量的完全匹配层的情况下,完全匹配层构建新方法使波在传播过程中比以往的构建方法多通过一倍的完全匹配层介质,从而提高了对边界反射的吸收效果.通过均匀速度模型和Marmousi速度模型证实,完全匹配层构建新方法对边界反射的吸收效果较好.【总页数】6页(P1128-1133)【作者】高正辉;孙建国;孙章庆;韩复兴;刘志强【作者单位】吉林大学地球探测科学与技术学院,吉林长春130026;吉林大学地球探测科学与技术学院,吉林长春130026;吉林大学地球探测科学与技术学院,吉林长春130026;吉林大学地球探测科学与技术学院,吉林长春130026;吉林大学地球探测科学与技术学院,吉林长春130026【正文语种】中文【中图分类】P631【相关文献】1.近似解析离散化方法的粘弹声波方程数值模拟及波场特征分析 [J], 汪勇;段焱文;王婷;桂志先;高刚2.基于高阶物面近似的自适应间断有限元法欧拉方程数值模拟 [J], 孙强;吕宏强;伍贻兆3.基于积分近似矩量法的声波团聚数值模拟 [J], 张光学;刘建忠;王洁;周俊虎;岑可法4.用于声波方程数值模拟的时间-空间域有限差分系数确定新方法 [J], 梁文全;杨长春;王彦飞;刘红伟5.基于时空域交错网格有限差分法的应力速度声波方程数值模拟 [J], 彭更新;刘威;郭念民;胡自多;徐凯驰;裴广平因版权原因,仅展示原文概要,查看原文内容请购买。
声波测量的仿真实验报告

一、实验目的1. 理解声波传播的基本原理和影响因素。
2. 掌握声波测量仿真实验的方法和步骤。
3. 熟悉声波测量仿真软件的操作,提高实验数据处理能力。
4. 分析声波测量仿真实验结果,验证声波传播规律。
二、实验原理声波是一种机械波,在介质中传播时,其传播速度与介质的性质有关。
声波传播速度的计算公式为:v = fλ其中,v为声波传播速度,f为声波频率,λ为声波波长。
声波传播过程中,其能量会随着距离的增加而逐渐衰减。
衰减程度与声波频率、介质性质和距离有关。
三、实验仪器与软件1. 实验仪器:声波测量仿真软件(如MATLAB、Python等)。
2. 实验软件:声波测量仿真软件(如MATLAB、Python等)。
四、实验步骤1. 启动声波测量仿真软件,设置声波频率、波长、介质性质等参数。
2. 运行仿真实验,观察声波在介质中的传播过程。
3. 记录声波传播过程中不同位置的振幅和相位变化。
4. 分析仿真实验结果,验证声波传播规律。
五、实验结果与分析1. 声波传播速度根据仿真实验结果,声波在空气中的传播速度约为343m/s。
与理论计算值基本一致,验证了声波传播速度与介质性质的关系。
2. 声波衰减仿真实验结果显示,声波在传播过程中能量逐渐衰减。
衰减程度与声波频率、介质性质和距离有关。
在相同条件下,高频声波衰减较快,低频声波衰减较慢。
3. 声波干涉仿真实验结果显示,当两束声波相遇时,会发生干涉现象。
干涉现象表现为波峰与波峰相遇产生加强,波谷与波谷相遇产生加强,波峰与波谷相遇产生减弱。
4. 声波衍射仿真实验结果显示,当声波遇到障碍物时,会发生衍射现象。
衍射程度与障碍物大小、声波频率和波长有关。
六、实验结论1. 声波传播速度与介质性质有关,在空气中传播速度约为343m/s。
2. 声波在传播过程中能量逐渐衰减,衰减程度与声波频率、介质性质和距离有关。
3. 声波干涉和衍射现象在仿真实验中得到了验证。
七、实验反思1. 在实验过程中,应确保声波频率、波长和介质性质等参数设置准确。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
声波方程数值模拟实验报告一.基础理论知识需要的已知条件包括:1.1)震源函数2)地层速度(波速) 3)边界条件2.弹性波方程:⎪⎪⎩⎪⎪⎨⎧∂∂+∂∂=∂∂+∂∂+∂∂=∂∂)()()(22222222222222z w x w v t w t S zu x uv t u s p声波方程的有限差分法数值模拟对于二维速度-深度模型,地下介质中地震波的传播规律可以近似地用声波方程描述:)()(2222222t S zu x u v t u +∂∂+∂∂=∂∂ (4-1) (,)v x z 是介质在点(x , z )处的纵波速度,u 为描述速度位或者压力的波场,)(t s 为震源函数。
为求式(4-1)的数值解,必须将此式离散化,即用有限差分来逼近导数,用差商代替微商。
为此,先把空间模型网格化(如图4-1所示)。
设x 、z 方向的网格间隔长度为h ∆,t ∆为时间采样步长,则有:h i x ∆= (i 为正整数)h j z ∆= (j 为正整数)t n t =∆ (n 为正整数)k j i u , 表示在(i,j)点,k 时刻的波场值。
将1,+k j i u 在(i,j)点k 时刻用Taylor 展式展开:)(*21*22*22*,1,t o t t ut tu uutk t t k t k ji k ji ∆+∆∂∂+∆∂∂+=∆=∆=+(4-2)将1,-k j i u 在(i,j)点k 时刻用Taylor 展式展开:)(*21*22*22*,1,t o t t u t tu uutk t tk t k ji k ji ∆+∆∂∂+∆∂∂-=∆=∆=-(4-3)将上两式相加,略去高阶小量,整理得(i,j)点k 时刻的二阶时间微商为:21,,1,222t u u u t u k ji k j i k j i ∆+-=∂∂-+ (4-4)对于空间微分,采用四阶精度差分格式,(以X 方向为例)即将1,2++k j i u 、1,1++k j i u 、1,1+-k j i u1,1++k j i u 分别在(i,j)点k 时刻展开到四阶小量,消除四阶小量并解出二阶微分得:}25][34][121{1,,1,1,2,2222k j i kj i k j i k j i k j i u u u u u xx u -+++-∆=∂∂+-+- (4-5) 同理可得:}25][34][121{1,1,1,2,2,222k j i kj i k j i k j i k j i u u u u u z z u -+++-∆=∂∂+-+- (4-6)这就实现了用网个点波场值的差商代替了偏微分方程的微商,将上三个式子代入(4-1)式中得:}25][34][121{2,,1,1,2,22221,,1,k j i k ji k j i k j i k j i k ji k ji k ji u u u u u h t v uuu-+++-∆∆+-=+-+--+k j i kj i k j i k j i k j i u u u u u h t v ,,1,1,2,222225][34][121{-+++-∆∆++-+-})(**)(*)(00j j i i t s --+δδ(4-7)式中),(j i v 为介质速度的空间离散值,h ∆是空间离散步长,t ∆为时间离散步长,)(k s 为震源函数,关于)(k s 一般使用一个理论的雷克型子波代替,即:ft t f t s e πγπ2cos )/2()(22-= (4-8)上式中,t 为时间, f 为中心频率,一般取为20-40HZ ,γ为控制频带宽度的参数,一般取3-5。
在实际计算过程中,需把此震源函数离散,参与波场计算。
)(*)(00j j i i --δδ确定震源位置。
稳定性条件:83/*max <∆∆h t v (4-8)这里m ax v 表示的是地下介质的最大波速;若地下介质网格间隔、最小速度、及时间采样间隔不符合(4-8)式时,第推求解(4-7)式,波场值会出现误差(高阶小量)累积,出现不稳定现象。
频散关系式:)/(min N Gf v h ≤∆ (4-9)式中m in v 为最小速度,N f 为Nyquist 频率。
一般取震源子波中的主频f 的2倍值参与计算,G 为每个波长所占的网格点数,对于空间二阶差分、时间二阶差分G 取8,而对于空间为四阶差分的情况则G 取4方能有效减少频散。
二.实验步骤1、 应用声波方程作为正演模拟的波动方程,忽略转换波的产生、传播;2、 将所提供震源函数离散后绘图;震源函数为雷克子波,离散绘图如下: fm=30; r=3; t=0.002; for n=1:200w(n)=exp(-(2*pi*fm/r)^2*(t*n)^2)*cos(2*pi*fm*t*n); endfigure(1),plot(w);3、对于小模型,整个区域的速度值可设为常数,即只有一种介质,将震源点放在模型中间,分别记录两个时刻的波前快照(即区域内所有网格点的波场值)。
第一时刻为地震波还未传播到边界上的某时刻。
由稳定条件,设v为2000,可以令DT=0.001,DH=5,此时精度较高,且满足频散关系程序,图形如下:#include <stdio.h>#include <math.h>#include <stdlib.h>#define PI 3.141593#define FM 30#define R 3#define KN 200#define XN 101#define ZN 101#define DH 5#define DT 0.001void main(){FILE *fp;int i,j,k,m,n;float u1[XN][ZN],u2[XN][ZN],u3[XN][ZN],u4[XN][ZN],f[XN][ZN]; //不能直接初值为0 float u5[XN][ZN],v[XN][ZN],w[KN],uu0,uu1,uu2;for(k=0;k<KN;k++)w[k]=exp(-(2*PI*FM/R)*(2*PI*FM/R)*(k*DT)*(k*DT))*cos(2*PI*FM*k*DT);for(i=0;i<XN;i++) //定义f函数,当且仅当i,j同时为50时,f为1,其余为0for(j=0;j<ZN;j++){if(i==50&&j==50)f[i][j]=1;else f[i][j]=0;}for(i=0;i<XN;i++)for(j=0;j<ZN;j++){ u1[i][j]=0.0;u2[i][j]=0.0;u3[i][j]=0.0;u4[i][j]=0.0;v[i][j]=2000; //速度相同表示同一介质}for(k=0;k<KN;k++){for(i=2;i<XN-2;i++)for(j=2;j<ZN-2;j++){uu0=(v[i][j])*(v[i][j])*(DT/DH)*(DT/DH);uu1=-1.0/12*(u2[i-2][j]+u2[i+2][j])+4.0/3*(u2[i-1][j]+u2[i+1][j])-5.0/2*u2[i][j];uu2=-1.0/12*(u2[i][j-2]+u2[i][j+2])+4.0/3*(u2[i][j-1]+u2[i][j+1])-5.0/2*u2[i][j];u3[i][j]=2*u2[i][j]-u1[i][j]+uu0*uu1+uu0*uu2+w[k]*f[i][j];}for(m=0;m<XN;m++)for(n=0;n<ZN;n++){u1[m][n]=u2[m][n];u2[m][n]=u3[m][n];}if(k==100)for(m=0;m<XN;m++)for(n=0;n<ZN;n++)u4[m][n]=u3[m][n];//记录波前快照,中间点}if((fp=fopen("wavefront.dat","w"))!=NULL){fprintf(fp,"%d\n",XN);fprintf(fp,"%d\n",ZN);for(i=0;i<XN;i++)for(j=0;j<ZN;j++)fprintf(fp,"%f\n",u4[i][j]);fclose(fp);}}第二时刻为地震波已经传播到边界上的某时刻,体会其人工边界反射;程序图形如下:#include <stdio.h>#include <math.h>#include <stdlib.h>#define PI 3.141593#define FM 30#define R 3#define KN 200#define XN 101#define ZN 101#define DH 5#define DT 0.001void main(){FILE *fp;int i,j,k,m,n;float u1[XN][ZN],u2[XN][ZN],u3[XN][ZN],u4[XN][ZN],f[XN][ZN]; //不能直接初值为0 float u5[XN][ZN],v[XN][ZN],w[KN],uu0,uu1,uu2;for(k=0;k<KN;k++)w[k]=exp(-(2*PI*FM/R)*(2*PI*FM/R)*(k*DT)*(k*DT))*cos(2*PI*FM*k*DT);for(i=0;i<XN;i++) //定义f函数,当且仅当i,j同时为50时,f为1,其余为0for(j=0;j<ZN;j++){if(i==50&&j==50)f[i][j]=1;else f[i][j]=0;}for(i=0;i<XN;i++)for(j=0;j<ZN;j++){ u1[i][j]=0.0;u2[i][j]=0.0;u3[i][j]=0.0;u4[i][j]=0.0;v[i][j]=2000; //速度相同表示同一介质}for(k=0;k<KN;k++){for(i=2;i<XN-2;i++)for(j=2;j<ZN-2;j++){uu0=(v[i][j])*(v[i][j])*(DT/DH)*(DT/DH);uu1=-1.0/12*(u2[i-2][j]+u2[i+2][j])+4.0/3*(u2[i-1][j]+u2[i+1][j])-5.0/2*u2[i][j];uu2=-1.0/12*(u2[i][j-2]+u2[i][j+2])+4.0/3*(u2[i][j-1]+u2[i][j+1])-5.0/2*u2[i][j];u3[i][j]=2*u2[i][j]-u1[i][j]+uu0*uu1+uu0*uu2+w[k]*f[i][j];}for(m=0;m<XN;m++)for(n=0;n<ZN;n++){u1[m][n]=u2[m][n];u2[m][n]=u3[m][n];}if(k==160) //只需改动K值,即显示边界反射for(m=0;m<XN;m++)for(n=0;n<ZN;n++)u4[m][n]=u3[m][n];//记录波前快照,边界}if((fp=fopen("wavefront.dat","w"))!=NULL){fprintf(fp,"%d\n",XN);fprintf(fp,"%d\n",ZN);for(i=0;i<XN;i++)for(j=0;j<ZN;j++)fprintf(fp,"%f\n",u4[i][j]);fclose(fp);}}4、对于大模型,定义为水平层状速度模型;做两个实验,一是将震源点放在区域表层任一点,记录下某些时刻的波前快照,体会地震波在两种介质的分界面上传播规律,指出哪是反射波,哪是透射波;这时取小模型的常量,为减少频散,速度v至少为2400程序图形如下:#include <stdio.h>#include <math.h>#include <stdlib.h>#define PI 3.141593#define FM 30#define R 3#define KN 200#define XN 200#define ZN 100#define DH 5#define DT 0.001void main(){FILE *fp;int i,j,k,m,n;float u1[XN][ZN],u2[XN][ZN],u3[XN][ZN],u4[XN][ZN],u5[XN][ZN]; //不能直接初值为0float f[XN][ZN],v[XN][ZN],w[KN],uu0,uu1,uu2;for(k=0;k<KN;k++)w[k]=exp(-(2*PI*FM/R)*(2*PI*FM/R)*(k*DT)*(k*DT))*cos(2*PI*FM*k*DT);for(i=0;i<XN;i++)for(j=0;j<ZN;j++){ u1[i][j]=0.0;u2[i][j]=0.0;u3[i][j]=0.0;u4[i][j]=0.0;f[i][j]=0.0;if (j<=30)v[i][j]=2400; //第一层速度为2400elsev[i][j]=3000; //第二层速度为3000}f[100][10]=1; //定义f函数,在100,10为1for(k=0;k<KN;k++){for(i=2;i<XN-2;i++)for(j=2;j<ZN-2;j++){uu0=(v[i][j])*(v[i][j])*(DT/DH)*(DT/DH);uu1=-1.0/12*(u2[i-2][j]+u2[i+2][j])+4.0/3*(u2[i-1][j]+u2[i+1][j])-5.0/2*u2[i][j];uu2=-1.0/12*(u2[i][j-2]+u2[i][j+2])+4.0/3*(u2[i][j-1]+u2[i][j+1])-5.0/2*u2[i][j];u3[i][j]=2*u2[i][j]-u1[i][j]+uu0*uu1+uu0*uu2+w[k]*f[i][j];u5[i][k]=u1[i][10]; //地震记录}for(m=0;m<XN;m++)for(n=0;n<ZN;n++){u1[m][n]=u2[m][n];u2[m][n]=u3[m][n];}if(k==100)for(m=0;m<XN;m++)for(n=0;n<ZN;n++)u4[m][n]=u3[m][n];//记录波前快照}if((fp=fopen("wavefront.dat","w"))!=NULL){fprintf(fp,"%d\n",XN);fprintf(fp,"%d\n",ZN);for(i=0;i<XN;i++)for(j=0;j<ZN;j++)fprintf(fp,"%f\n",u4[i][j]);fclose(fp);}}反射波透射波二是合成一个地震记录,即记录下与震源同一深度点的各点所有时刻的波场值,并指出记录上的同向轴分别对应哪些波?这时取小模型的常量,为减少频散,速度v至少为2400程序图像如下:#include <stdio.h>#include <math.h>#include <stdlib.h>#define PI 3.141593#define FM 30#define R 3#define KN 200#define XN 200#define ZN 200#define DH 5#define DT 0.001void main(){FILE *fp;int i,j,k,m,n;float u1[XN][ZN],u2[XN][ZN],u3[XN][ZN],u4[XN][ZN],u5[XN][ZN]; //不能直接初值为0 float f[XN][ZN],v[XN][ZN],w[KN],uu0,uu1,uu2;for(k=0;k<KN;k++)w[k]=exp(-(2*PI*FM/R)*(2*PI*FM/R)*(k*DT)*(k*DT))*cos(2*PI*FM*k*DT);for(i=0;i<XN;i++)for(j=0;j<ZN;j++){ u1[i][j]=0.0;u2[i][j]=0.0;u3[i][j]=0.0;u4[i][j]=0.0;f[i][j]=0.0;if (j<=30)v[i][j]=2400; //第一层速度为2400elsev[i][j]=3100; //第二层速度为3100}f[100][10]=1; //定义f函数,在100,10为1for(k=0;k<KN;k++){for(i=2;i<XN-2;i++)for(j=2;j<ZN-2;j++){uu0=(v[i][j])*(v[i][j])*(DT/DH)*(DT/DH);uu1=-1.0/12*(u2[i-2][j]+u2[i+2][j])+4.0/3*(u2[i-1][j]+u2[i+1][j])-5.0/2*u2[i][j];uu2=-1.0/12*(u2[i][j-2]+u2[i][j+2])+4.0/3*(u2[i][j-1]+u2[i][j+1])-5.0/2*u2[i][j];u3[i][j]=2*u2[i][j]-u1[i][j]+uu0*uu1+uu0*uu2+w[k]*f[i][j];u5[i][k]=u1[i][10]; //地震记录}for(m=0;m<XN;m++)for(n=0;n<ZN;n++){u1[m][n]=u2[m][n];u2[m][n]=u3[m][n];}if(k==100)for(m=0;m<XN;m++)for(n=0;n<ZN;n++)u4[m][n]=u3[m][n];//记录波前快照}if((fp=fopen("sei_record.dat","w"))!=NULL){fprintf(fp,"%d\n",XN/2);fprintf(fp,"%d\n",KN);for(i=0;i<XN;i=i+2)for(j=0;j<KN;j++)fprintf(fp,"%f\n",u5[i][j]);fclose(fp);} }从上向下看的两条直线为与震源同深度点的各点所有时刻的波场值,在向下与两直线紧邻的双曲线为第二层界面反射的记录。