「java地震波形」地震发生时的波形

博主:adminadmin 2022-12-19 04:15:07 61

今天给各位分享java地震波形的知识,其中也会对地震发生时的波形进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

地震波的频谱及特点

地震波的频谱既与波的类型有关,又与地层岩性结构有一定联系;地震波的频谱特征,是我们识别波的类型和进行数字滤波的重要依据,同时也是进行岩性解释的信息之一。

(一)复杂周期振动的频谱

据振动叠加的原理,几个不同频率(f),不同振幅(A),不同相位(φ)的谐振动叠加,就可以得到一个复杂的周期振动。如图1-2-8所示,它是由三个不同频率,不同振幅的谐振动叠加合成的复杂周期性振动;反之,任何一个复杂的周期性振动也可以分解为若干个不同频率、不同振幅的谐振动,其数学表达式可写成:

反射波地震勘探原理和资料解释

式中ω0叫基频(角频率),

;T为周期;nω0叫倍频。式中各项为不同频率、不同振幅、不同相位的简谐振动,并且这种关系是唯一的。

据谐振动方程可知,一个振动可由三个值确定,即A、f、φ,任何一个复杂的周期性振动都可以用振幅谱和相位谱来表示。振幅谱表示分振动的振幅和频率的关系,简称频谱;相位谱表示分振动的相位和频率的关系。只有同时应用振幅谱和相位谱,才能完全确定已知的周期性振动。因为复杂的周期性振动是由有限个谐振动分量叠加的结果,所以周期性振动的频谱是分立谱(或叫离散谱),如图1-5-1所示;它的各个谐振分量的频率是基频ω0的整数倍。两条相邻谱线之间距离也是ω0,见图1-5-1。显然,周期函数的周期(T)越大,它的基频(ω0)就越小,从而它的频谱上的那些竖线也就相距越近。

(二)非周期振动的频谱

非周期振动的频谱是一条连续的曲线,称为连续谱,如图1-5-2所示。因为,据数学理论可知,一个非周期性振动是由无限多个不同频率(而且是连续变化的频率)、不同振幅、不同相位的谐振动叠加结果,其数学表达式为

反射波地震勘探原理和资料解释

式中fn=ωn/2π为振动的频率。此时它的谐振动分量的频率不是成倍数地增加,而是连续地从零→无穷(即从0→∞变化)。相当于周期函数可以看成函数的周期(T)趋于无限大时情况(T→∞,当然基频ω0→0)。当T无限增大而ω0→0时,图1-5-1中的那些竖线将越来越近,它们的端点连线,将由折线变成一条曲线,此时离散谱就变成了连续谱。这种结论可以在数学上严格地证明,因篇幅有限,此处略去。

图1-5-1 周期函数频谱示意图

图1-5-2 非周期振动频谱

脉冲振动属于非周期振动,其振幅谱是一个连续谱。

(三)地震波的频谱

地震波是脉冲振动,其振幅谱也是一个连续谱。若用x(t)表示地震波的振动图形,根据傅氏变换的原理可知,随时间t变化的非周期函数x(t),它的频谱可用X(ω)表示,则x(t)的频谱可表示为

反射波地震勘探原理和资料解释

由于地震波在t<0时,x(t)=0,因此上式可变换为

反射波地震勘探原理和资料解释

用欧拉公式(e-iωt=cosωt-i sinωt)展开得:

反射波地震勘探原理和资料解释

其中:

反射波地震勘探原理和资料解释

公式(1-5-8)为地震波的振幅谱,式(1-5-9)是相位谱。

为了描述一个振幅谱的特征,一般引入主频和频宽两个参数。图1-5-3表示了一个波频谱的典型样子,f0是频谱的主频,即频谱曲线极大值所对应的频率,信号的绝大部分能量都集中在主频附近的简谐分量中。若以|A(f)|的值为1,可找出对应于|A(f)|=0.707的两个频率值f1和f2,并且把Δf=f2-f1叫做频谱(带)的宽度,f1、f2的大小反映了脉冲信号的绝大部分能量集中在哪个频率范围之内,Δf的大小给出了这个范围的宽窄。

图1-5-3 频谱的主要参数

(四)地震波频谱特点

地震波有反射波、折射波、面波、声波、微震及纵波、横波等各种类型,根据实际资料分析表明,地震波频谱具有以下特点。

1.不同的波具有不同的频谱

图1-5-4给出了常见的几种波的频谱分布范围。从图中可见面波的主频较低,在10Hz~30Hz范围;反射波的主频一般在30Hz~60Hz范围,近年来采用野外数字地震仪(它的记录频率范围向低频可扩展到5Hz),以及采用了低频检波器,能记录到6s~7s的深层反射波,它们的主频可低到10Hz;风吹草动等微震的频谱比较宽;声波的频谱位置在100Hz以上的高频范围;工业交流电干扰的主频是50Hz,频带很窄。

图1-5-4 与地震勘探有关的一些波的频谱

由此可见,反射波的频谱与面波、微波、声波等干扰波的频谱有明显的差别,利用这些差别,进行频率滤波就可以减少干扰波的能量,提高信噪比。

2.同一界面的反射纵波比反射横波具有较高的频谱和较宽的频带

如图1-5-5所示,横波的频带在20Hz~40Hz范围,纵波的频谱分布在40Hz~70Hz的范围。由此可见,横波不仅传播速度低于纵波,而且频谱也低于纵波。横波频谱偏低的原因是在沉积岩层中其波的吸收系数比纵波大。

图1-5-5 同一界面反射纵波、反射横波的振幅谱示意图

3.反射波的频谱与传播距离的关系

地震波在传播过程中,由于地层的吸收作用,高频成分更易被吸收,因而使反射波的频谱随传播距离的增加,其主频要变低。由此可得,不同深度界面的反射波的频谱是不同的,深层反射波比浅层反射波的频谱要低。同一界面的反射波,在不同炮检距的记录道上,其频谱也不一样;炮检距越大,其频谱越低。图1-5-6说明了反射波的频谱随t0时间的增加,其主频是逐渐降低的。

图1-5-6 地震波频谱随深度的变化

4.反射波的频谱与反射界面的结构有关

我们定义一个单界面的反射波叫地震子波。大量实际资料表明,这种单界面的反射波是很少的,绝大多数反射波都是由互相邻近的多个界面的地震子波叠加而成。由地震子波叠加的合成波,我们叫做反射波。反射波的波形和地震子波的波形是不同的,它们的频谱也不一样;反射波的波形与反射界面的结构紧密相关。反射界面的结构包括界面的数量,界面之间的厚度,界面的反射系数的大小和符号等。这些因素中,任何一种因素发生变化都会引起反射波的波形变化。如果地层的岩性、岩相发生变化,反射界面的结构就不一样,将会导致反射波的频谱变化。因此,利用反射波频谱的横向变化,可以判断岩性、岩相的变化,这就是利用频率信息解释地层岩性的依据。图1-5-7是一个通过含气砂岩的理论合成的例子。如图可知,当只有一个界面时,反射波的频谱就是地震子波的频谱。当进入含气砂岩时,反射波频谱出现次极值,并且主频向低频方向移动。同时振幅增大。

图1-5-7 单层含气砂层的频率

5.反射波的频谱与激发和接收条件有关

激发条件对地震波的频谱有一定的影响。在用炸药激发时,药量增大则地震波的频谱移向低频;在具有较大的弹性常数值的硬介质中爆炸时激发出的波,比在弹性常数值较小的介质中或在水中爆炸时激发出的波,具有较高的频谱。选择合适的岩性,可以使激发出的地震波的频谱更合乎要求。例如,当在较致密的岩层中或在低速带以下含水的粘土层中激发,就可以提高有效波的主频,减少低频面波对有效波的干扰。

接收条件对反射波的频谱影响,包括检波器的频率特性,组合检波的频率特性和地震仪器的频带宽度等。一般采用数字仪器和低频检波器接收时,反射波的频谱就要宽一些。有关组合的频率特性,将在第三章中详细讨论,这里不介绍。

激发和接收条件对反射波频谱的影响是比较大的。我们希望激发和接收条件比较单一,这样对提高地震勘探的精度有利。

地震数据仿真实战(含软件和程序)

一、地震正演仿真理论基础

地震正演模拟在地震勘探和油藏地球物理中已被广泛应用,在地震数据采集(包括地震数值模拟、二维模型模拟、多波多分量地震正演模拟)、地面和井中地震数据处理(如去噪、叠加、叠前偏移速度分析、成像)、地震反演(如波阻抗反演、AVO反演、岩性反演)以及地震资料解释(如合成地震记录制作和地震地质关系标定、层位和断层解释、地震层序地层学解释、非构造圈闭识别、盆地分析、油藏表征和模拟)等实际生产和方法研究中都发挥了很大作用。

1.地震正演模型建立

地震正演模拟就是:根据已知(或设计)的数学及物理模型或地质模型求取相应地震响应的过程。一维模型正演模拟是计算合成地震道(见合成地震记录),二维正演模拟是计算合成地震剖面,三维正演模拟是求取理论三维数据体。

2.反射系数

地震正演模拟利用已有资料(测/钻井等资料)建立地下地质模型,根据地震波在地下介质中的传播原理,通过一定的数学方法(如射线追踪或波动方程偏移等),正演模拟计算出所建立地质模型的地震记录。

地震模型正演的基础在于不同的岩层具有不同的速度和密度,两者的乘积为波阻抗。波阻抗的差异会产生反射系数。假设地震波是垂直入射的,则可计算法线入射的反射系数:

其中,R为反射系数,ρ1v1,,ρ2v2为相邻两层的波阻抗。地震子波也是地震模型正演中的一个重要参数。实际地震记录从激发、传播到接收,相当于经历了一个滤波系统,一个尖锐的脉冲通过大地滤波系统之后,就变成了一个有一定延续长度的脉冲波形,即地震子波。所以地震模型正演中,选择合适的地震子波也是决定最终的正演结果与实际地震记录吻合与否的关键。

二、地震正演实战

1.正演模型

这里以某井为例,给大家展示了一个古岩溶洞穴的模型图,长方形的工区,有三层不同的地层,在第二层有一个缝洞。

对应的速度和密度模型是这样的。

2.实现方案1——Tesseral

Tesseral软件可以建立不同的复杂的地层模型,对其进行波场模拟,并且软件中含有处理软件包,可以对正演模拟计算得到的数据进行处理。所以可以通过建立模型,对其进行波场模拟,并对得到的数据进行处理,从而了解地震勘探的流程。以上述的工区模型为例,我们来讲解用Tesseral怎样建立正演数据。

第一步,定义震源参数。

在工具条上点击Edit,Framework按钮,出现对话框。填写正确的顶、底、左、右坐标,并在Surface 组参数中选“Invisible”不可见地表 ,如果是地震(声波)波场模拟,地表一定不能出现。“Invisible”表示上行波将不再向下反射回到该模型按“确定”后,在删掉跳出的物理参数填写表后,出现一个空白的坐标网格图。

第二步,按照图中的地层分布在Tesseral画出地层模型。

使用画图工具画出不同的地层和缝洞,按照上面的模型配置不同地层的速度和密度。

第三步,配置震源参数。

点击Source 按钮,出现震源定义会话框,首先定义放炮方式,该表中共有三方式。

可选Point 是最常用的模式,即对应于野外生产中的逐点放炮方式。

1)如果我们的生产方式是等间距规则地移动炮点,选Free 即可将炮点安放到任意所需要的位置上。

2)Free 右侧的选项中,地面放炮选择Horizontal Line (井中放炮选择Vertical line)

3)需选中Cable interval则表示用户可以在测线上定义等间隔移动的炮点。

4)定义炮数则在Number 右侧的空格内输入要计算的总炮数。

5)定义炮间距在Interval 右侧的空格内输入参数。

6)定义要计算的炮数,缺省值从第一炮计算到第观测系统定义的最后一炮,也可以人工输入要计算的第一炮和最后一炮。

7)定义振源方式可选Compression(纵波)或Rotational (横波)。

8)定义子波类型,可选Single (单峰)Symmetric(对称单峰)Double(双峰)。

9)“Frequency”振源峰值频率其代表其将是生成子波最大振幅的频率。

这个案例为了简单,我们直接选择表面震源surface。

第四步:定义检波点排列参数。

在工具条上点击Framework按钮,出现对话框。再点击Observation按钮,出现检波点会话窗口。

同样在Free 的右侧选择中选Horizontal (表明检波点沿地面安放),Vertical 表明检波点在井下垂直安放。

1)“Free” 选中表明检波点可从任意位置开始。

2)“Cable Interval” 选中表明检波点按等投影间距安放在起伏的地面或斜井中。

3)Move with Sourc表明检波点随炮点一起整体移动。

4)定义排列位置From第一个检波点的位置,to到排列最后一个检波点的位置。

5)定义炮间距,在“Interval”输入。

6)“Margin”建议采用缺省值{用于定义实际的网格尺寸}。

7)“Start”定义起始时间,缺省值自动切除近炮点最大振幅值得切除时间。

8)“Stop”定义用户要计算的最大波传播时间。

9)“Sample”定义要计算合成记录的采样率,缺省值为一般确定的采样值。

定义计算波场快照的数量

1)EVERY:定义每隔几个炮点生成一个波场快照。

2)选“End Truncation”则在计算结尾阶段以适应我们原先定义的接收区和截止时间。

3)“Start”定义波场快照的起使时间。

4) “Sample”定义隔多少时间拍一张波场快照.

第五步,模拟地震,生成地震仿真数据。

选择自激自发的方式模拟地震,然后就等软件运行。

第六步,查看生成的炮集效果。

找到对应的GathIS数据,调整数据波形,最后就可以看到这样的效果了。

第七步,数据处理。

如果我们不想显示直达面波,可以去除。这时可以点击Edit,Muting,Upper Line选项,然后在面波部分拉出横线。然后重复点击Edit,Muting,Upper Line选项,面波就消除了。最后效果就是这样的图,我们就生成了一个缝洞的正演剖面数据。

第八步,数据导出。

最后我们选择File,convert to,seg-y,就可以导出地震道集的剖面结果。

这是一个991道,1101个采样点,采样率为1毫秒剖面数据。

以上是用tesseral制作一个正演模拟数据的简单流程,如果想获取tesseral软件或了解更复杂的制作正演模拟数据的方法,可以与我联系交流。

2.实现方案2——matlab

MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。

MATLAB的运行速度较快,特别适合于处理地震类的数值应用。下面来给大家介绍一下怎样用matlab来模拟地震正演。

第一步,配置地层参数。

按照前面速度模型,配置好各地层的速度、密度和高度。

第二步,计算反射系数、采样点和反射序列。

一是计算不同地层的反射系数。

二是计算各反射界面所对应的时间。

三是计算各反射界面所对应的采样点数

四是计算反射序列

第三步,根据雷克子波形成道集记录。

一是根据雷克子波形成单道记录

二是根据地层情况生成多道记录

第四步,打印地震道记录并导出数据。

最后通过wiggles效果打印出的结果图是这样的。

再通过保存语句将结果保存为sgy数据。

第五步,查看导出的数据。

在使用Fimage读取的时候,注意按照如下的参数来配置,然后就能显示出正演结果图。

如果喜欢请点赞,如需软件和程序请联系我获取。

使用java的graphics类能实现地震体绘制吗

Graphics类提供基本绘图方法,Graphics2D类提供更强大的绘图能力。本节讲解Graphics类,下节讲解Graphics2D。

Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等。

1. 画线

在窗口画一条线段,可以使用Graphics类的drawLine()方法:

drawLine(int x1,int y1,int x2,int y2)

例如,以下代码在点(3,3)与点(50,50)之间画线段,在点(100,100)处画一个点。

g.drawLine(3,3,50,50);//画一条线段

g.drawLine(100,100,100,100);//画一个点。

2. 画矩形

有两种矩形:普通型和圆角型。

(1) 画普通矩形有两个方法:

drawRect(int x,int y,int width,int height):画线框围起来的矩形。其中参数x和y指定左上角的位置,参数width和height是矩形的宽和高。

fillRect(int x,int y,int width,int height):是用预定的颜色填充一个矩形,得到一个着色的矩形块。

以下代码是画矩形的例子:

g.drawRect(80,100,40,25);//画线框

g.setColor(Color.yellow);g.fillRect(20,70,20,30);//画着色块

(2)画圆角矩形也有两个方法:

drawRoundRect(int x,int y,int width, int height, int arcWidth, int arcHeight):是用线围起来的圆角矩形。其中参数x和y指定矩形左上角的位置;参数width和heigth是矩形的宽和高;arcWidth和arcHeight分别是圆角弧的横向直径和圆角弧的纵向直径。

fillRoundRect(int x,int y,int width,int height,int arcWidth,int archeight):是用预定的颜色填充的圆角矩形。各参数的意义同前一个方法。

以下代码是画矩形的例子:

g.drawRoundRect(10,10,150,70,40,25);//画一个圆角矩形

g.setColor(Color.blue); g.fillRoundRect(80,100,100,100,60,40);//涂一个圆角矩形块

g.drawRoundRect(10,150,40,40,40,40);//画圆

g.setColor(Color.red); g.fillRoundRect(80,100,100,100,100,100);//画圆块

可以用画圆角矩形方法画圆形,当矩形的宽和高相等,圆角弧的横向直径和圆角弧的纵向直径也相等,并等于矩形的宽和高时,画的就是圆形。参见上述例子中的注释,前一个是画圆,后一个是涂圆块。

3. 画三维矩形

画三维矩形有两个方法:

draw3DRect(int x,int y,int width,int height, boolean raised):画一个突出显示的矩形。其中x和y指定矩形左上角的位置,参数width和height是矩形的宽和高,参数raised是突出与否。

fill3DRect(int x,int y,int width,int height,boolean raised):用预定的颜色填充一个突出显示的矩形。

以下代码是画突出矩形的例子:

g.draw3DRect(80,100,40,25,true);//画一个线框

g.setColor(Color.yellow); g.fill3DRect(20,70,20,30,true);//画一个着色块

4.画椭圆形

椭圆形由椭圆的横轴和纵轴确定。画椭圆形有两个方法:

drawOval(int x,int y,int width,int height):是画用线围成的椭圆形。其中参数x和参数y指定椭圆形左上角的位置,参数width和height是横轴和纵轴。

fillOval(int x,int y,int width,int height):是用预定的颜色填充的椭圆形,是一个着色块。也可以用画椭圆形方法画圆形,当横轴和纵轴相等时,所画的椭圆形即为圆形。

以下代码是画椭圆形的例子:

g.drawOval(10,10,60,120);//画椭圆

g.setColor(Color.cyan);g.fillOval(100,30,60,60);//涂圆块

g.setColor(Color.magenta);g.fillOval(15,140,100,50);//涂椭圆

5. 画圆弧

画圆弧有两个方法:

drawArc(int x,int y,int width,int height,int startAngle, int arcAngle):画椭圆一部分的圆弧线。椭圆的中心是它的外接矩形的中心,其中参数是外接矩形的左上角坐标(x,y),宽是width,高是heigh。参数startAngle的单位是 “度”,起始角度0度是指3点钟方位.参数startAngle和arcAngle表示从startAngle角度开始,逆时针方向画arcAngle度的弧,约定,正值度数是逆时针方向,负值度数是顺时针方向,例如-90度是6点钟方位。

fillArc(int x,int y,int width, int height, int startAngle, int arcAngle):用setColor()方法设定的颜色,画着色椭圆的一部分。

以下代码是画圆弧的例子:

g.drawArc(10,40,90,50,0,180);//画圆弧线

g.drawArc(100,40,90,50,180,180);//画圆弧线

g.setColor(Color.yellow); g.fillArc(10,100,40,40,0,-270);//填充缺右上角的四分之三的椭圆

g.setColor(Color.green); g.fillArc(60,110,110,60,-90,-270);//填充缺左下角的四分之三的椭圆

6. 画多边形

多边形是用多条线段首尾连接而成的封闭平面图。多边形线段端点的x坐标和y坐标分别存储在两个数组中,画多边形就是按给定的坐标点顺序用直线段将它们连起来。以下是画多边形常用的两个方法:

drawPolygon(int xpoints[],int yPoints[],int nPoints):画一个多边形

fillPolygon(int xPoints[],int yPoints[],int nPoints):用方法setColor()设定的颜色着色多边形。其中数组xPoints[]存储x坐标点,yPoints[]存储y坐标点,nPoints是坐标点个数。

注意,上述方法并不自动闭合多边形,要画一个闭合的多边形,给出的坐标点的最后一点必须与第一点相同.以下代码实现填充一个三角形和画一个八边形。

int px1[]={50,90,10,50};//首末点相重,才能画多边形

int py1[]={10,50,50,10};

int px2[]={140,180,170,180,140,100,110,140};

int py2[]={5,25,35,45,65,35,25,5};

g.setColor(Color.blue);

g.fillPolygon(px1,py1,4);

g.setColor(Color.red);

g.drawPolygon(px2,py2,9);

也可以用多边形对象画多边形。用多边形类Polygon创建一个多边形对象,然后用这个对象绘制多边形。Polygon类的主要方法:

Polygon():创建多边形对象,暂时没有坐标点。

Polygon(int xPoints[],int yPoints[],int nPoints):用指定的坐标点创建多边形对象。

addPoint():将一个坐标点加入到Polygon对象中。

drawPolygon(Polygon p):绘制多边形。

fillPolygon(Polygon p):和指定的颜色填充多边形。

例如,以下代码,画一个三角形和填充一个黄色的三角形。注意,用多边形对象画封闭多边形不要求首末点重合。

int x[]={140,180,170,180,140,100,110,100};

int y[]={5,25,35,45,65,45,35,25};

Polygon ponlygon1=new Polygon();

polygon1.addPoint(50,10);

polygon1.addPoint(90,50);

polygon1.addPoint(10,50);

g.drawPolygon(polygon1);

g.setColor(Color.yellow);

Polygon polygon2 = new Polygon(x,y,8);

g.fillPolygon(polygon2);

7. 擦除矩形块

当需要在一个着色图形的中间有一个空缺的矩形的情况,可用背景色填充一矩形块实现,相当于在该矩形块上使用了 “橡皮擦”.实现的方法是:

clearRect(int x,int y, int width,int height):擦除一个由参数指定的矩形块的着色。

例如,以下代码实现在一个圆中擦除一个矩形块的着色:

g.setColor(Color.blue);

g.fillOval(50,50,100,100);g.clearRect(70,70,40,55);

8. 限定作图显示区域

用一个矩形表示图形的显示区域,要求图形在指定的范围内有效,不重新计算新的坐标值,自动实现超出部分不显示。方法是clipRect(int x,int y,int width,int height),限制图形在指定区域内的显示,超出部分不显示。多个限制区有覆盖时,得到限制区域的交集区域。例如,代码:

g.clipRect(0,0,100,50);g.clipRect(50,25,100,50);

相当于

g.clipRect(50,25,50,25);

9. 复制图形

利用Graphics类的方法copyArea()可以实现图形的复制,其使用格式是:

copyArea(int x,int y,int width,int height, int dx, int dy),dx和dy分别表示将图形粘贴到原位置偏移的像素点数,正值为往右或往下偏移是,负值为往左或往上偏移量。位移的参考点是要复制矩形的左上角坐标。

例如,以下代码示意图形的复制,将一个矩形的一部分、另一个矩形的全部分别自制。

g.drawRect(10,10,60,90);

g.fillRect(90,10,60,90);

g.copyArea(40,50,60,70,-20,80);

g.copyArea(110,50,60,60,10,80);

关于java地震波形和地震发生时的波形的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-19,除非注明,否则均为首码项目网原创文章,转载请注明出处。