会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~

地震数据处理

阅读:1120发布:2020-11-19

IPRDB可以提供地震数据处理专利检索,专利查询,专利分析的服务。并且一种可变振幅/相位彩色地震显示,以此可使解释人员更容易找出波峰、波谷和其它感兴趣的信息。,下面是地震数据处理专利的具体信息内容。

1、一种从多个真实地震波形曲线中产生可变振幅/相位地震显示的方法,该方法包括下列步骤: (a)对于所述多个真实地震波形曲线的每一个,选择多个数据点,其中所述的多个数据点间距相等;

(b)确定在步骤(a)中所选择的多个数据点中每个点的真实振幅;

(c)在步骤(a)中所选择的每个数据点上,确定对应于所述多个真实地震波形曲线的多个复地震波形曲线的瞬时相位;

(d)根据步骤(c)中在每一数据点所确定的瞬时相位,对步骤(a)中所选择的每个数据点赋予彩色一、彩色二、彩色三或彩色四,其中所述的彩色是根据表Ⅰ指定的,表中的BA是相角基值。

表Ⅰ

彩色        范围 一  (BA-90°)到(BA-180°) 二  BA到(BA-90°) 三  BA到(BA+90°) 四  (BA+90°)到(BA+180°);

(e)对步骤(a)中所选的每个数据点赋予彩色一的一个色调,或彩色二的一个色调,或彩色三的一个色调,或彩色四的一个色调,其中所赋予的色调暗度是根据步骤(b)中确定的振幅来确定的,而对每个数据点所用的具体彩色是根据步骤(d)的瞬时相位确定的;

(f)绘制对每个数据点所指定的彩色和彩色色调,以产生所述的可变振幅/相位地震显示。

2、根据权利要求1的方法,其中所述的数据点距离为4毫秒。

3、根据权利要求1的方法,其中所述确定多个复地震波形曲线的瞬时相位的步骤包括: (g)对所述多个真实地震波形曲线的每一个运用希尔伯特(Hilbert)转换,把所述多个真实地震波形曲线的每一个转换为对应的虚地震波形曲线; (h)在步骤(a)中所选定的每个数据点上,确定来自步骤(g)的多个虚地震波形曲线的振幅; (i)根据式子1确定步骤(a)中所选每个数据点上的瞬时相位P(t), P(t)=tan〔h(t)/g(t)〕……(1) 其中h(t)是在步骤(h)中所确定的数据点上虚地震波形的振幅,g(t)是在步骤(b)中所确定的同样数据点上实地震波形的振幅,所述的多个复地震波形曲线的每一个都是一个实地震波形曲线和对应的虚地震曲线的合成。

4、根据权利要求1的方法,其中在步骤d中所赋予的彩色是根据表Ⅱ确定的; 表Ⅱ

彩色  范围

一  -90°到-180° 二  0°到-90° 三  0°到+90° 四  +90°到+180°

5、根据权利要求1的方法,其中在步骤(e)中,根据步骤(b)中所确定的振幅,对步骤(a)中所选的每个数据点,赋予彩色一,彩色二,彩色三或彩色四的十六个色调中的一个。

6、根据权利要求5的方法,其中把彩色一,彩色二,彩色三或彩色四的比较深的色调赋予较大的振幅,而把较浅的色调赋予较小的振幅。

7、一种从多个正弦波形曲线中产生可变振幅/相位地震显示的方法,所述的方法包括下列步骤: (a)对于所述多个真实地震波形曲线的每一个,选择多个数据点,其中所述的多个数据点的间距是相等的; (b)确定在步骤(a)中所选择的多个数据点中每个点的包络振幅; (c)在步骤(a)中所选择的每个数据点上,确定对应于所述多个真实地震波形曲线的多个复地震波形曲线的瞬时相位; (d)根据步骤(c)中在每一数据点所确定的瞬时相位,对步骤(a)中所选择的每个数据点赋予彩色一,彩色二,彩色三或彩色四,其中所述的彩色是根据表Ⅰ指定的,而在表Ⅰ中的BA是相角基值 表Ⅰ

彩色  范围

一  (BA-90°)到(BA-180°) 二  BA到(BA-90°) 三  BA到(BA+90°) 四  (BA+90°)到(BA+180°) (e)对步骤(a)中所选的每个数据点赋予彩色一的一个色调,或彩色二的一个色调,或彩色三的一个色调,或彩色四的一个色调,其中所赋予的色调暗度是根据步骤(b)中所确定的振幅,其中对每个数据点所用的具体彩色是根据步骤(d)中的瞬时相位确定的; (f)绘制对每个数据点所指定的彩色和彩色色调以产生所述的可变振幅/相位地震显示。

8、根据权利要求7的方法,其中所述的数据点距离为4毫秒。

9、根据权利要求7的方法,其中确定所述多个复地震波形曲线的瞬时相位的步骤包括: (g)对步骤(a)中所选择的多个数据点的每一个确定真实振幅; (h)对所述多个真实地震波形曲线的每一个运用希尔伯特变换,把所述多个真实地震波形曲线的每一个转换为对应的虚地震波形曲线; (i)在步骤(a)中所选定的每个数据点上,确定来自步骤(h)的多个虚地震波形曲线的振幅; (j)根据式子1确定步骤(a)中所选每个数据点上的瞬时相位P(t) P(t)=tan〔h(t)/g(t)〕……(1) 其中h(t)是在步骤(i)中所确定的数据点上虚地震波形的振幅,其中g(t)是在步骤(g)中所确定的同样数据点上真实地震波形曲线的振幅,所述的多个复地震波形曲线的每一个都是一个真实地震波形曲线和对应的虚地震波形曲线的合成。

10、根据权利要求7的方法,其中在步骤(d)中所赋予的彩色是根据表Ⅱ赋予的; 表Ⅱ

彩色  范围

一  -90°到-180° 二  0°到-90° 三  0°到+90° 四  +90°到+180°

11、根据权利要求7的方法,其中,在步骤(e)中根据步骤(b)中所确定的振幅,对步骤(a)中所选的每个数据点,赋予彩色一,彩色二,彩色三或彩色四的十六个色调中的一个。

12、根据权利要求11的方法,其中,把彩色一,彩色二,彩色三或彩色四的比较深的色调赋予较大的振幅,而把较浅的色调赋予较小的振幅。

13、一种从多个真实地震波形曲线产生可变振幅/相位地震显示的方法,所述的方法包括下列步骤: (a)对于所述多个真实地震波形曲线的每一个选择多个数据点,其中所述的多个数据点的间距是相等的; (b)确定在步骤(a)中所选择的多个数据点中每个点的真实振幅; (c)在步骤(a)中所选择的每个数据点上,确定对应于所述多个真实地震波形曲线的多个复地震波形曲线的瞬时相位; (d)根据步骤(c)中在每一个数据点上所确定的瞬时相位,对步骤(a)中所选的每个数据点,赋予至少两种彩色中的一种; (e)对步骤(a)中所确定的每个数据点赋予一个在步骤(d)中所指定的彩色色调,其中所赋予的色调深度是根据步骤(b)中所确定的振幅; (f)绘制出对每个数据点所赋予的彩色和彩色的色调,以产生所述的可变振幅/相位地震显示。

14、根据权利要求13的方法,其中所述的数据点间距为4毫秒。

15、根据权利要求13的方法,其中确定所述多个复地震波形曲线的瞬时相位的步骤包括: (g)对所述多个真实地震波形曲线的每一个运用希尔伯特(Hilbert)变换,把所述多个真实地震波形曲线的每一个转换为对应的虚地震波形曲线; (h)在步骤(a)所选定的每个数据点上,确定来自步骤(g)的多个虚地震波形曲线的振幅; (i)根据式子1确定步骤(a)中所选每个数据点上的瞬时相位P(t), P(t)=tan〔h(t)/g(t)〕……(1) 其中h(t)是在步骤(h)中所确定的数据点上虚地震波形的振幅,其中g(t)是在步骤(b)中所确定的同样数据点上实地震波形的振幅,所述的多个复地震波形曲线的每一个都是一个实地震波形曲线和对应的虚地震波形曲线的合成。

16、根据权利要求13的方法,其中根据步骤(b)所确定的振幅,对步骤(a)中所选的每个数据点,对在步骤(d)中所指定彩色,在步骤(e)中赋予六个色调中的一个。

17、根据权利要求16的方法,其中把步骤(d)中所指定的较深色调赋予较大振幅,而把较浅色调赋予较小振幅。

说明书全文

本发明涉及地震数据处理。从一方面来说,本发明涉及一种从多个地震波形曲线中产生增强地震显示的方法。

绘制地下地质图的地震方法包括地震能源的运用和通过地震检测器(一般称为地震检波器)阵列对它的接收。当在陆地上运用时,该地震能源一般是用电起爆的高爆炸力的炸药,炸药放在孔洞里,孔洞位于地面网格的一个选定格点上,或是一种能够给地面以一系列冲击的能源,比如在Vibroseis振动机中所用的。通过爆破和冲击在地里产生的声波从地层界面传回来,按照穿过的距离和地下的特性以不同的时间达到地面。用地震检波器检测这些返回声波,把这些声波转换成代表它的电信号。把许多地震检波器按照选定的方式排列成阵列,以便最有效地检测这返回的声波,并产生代表它们的电信号,进而从这些信号中可以推导出有关地下地质结构的数据。一般把这些电信号叫做地震波形曲线。

图1表示了地震源和检测器的一种典型阵列。把一组地震源(21-25号)和一组地震接收器(31-35号)围绕一个共同的中点来排列。为了便于演示,这里把地震源和地震接收器都等距离地放置,但并不一定要求如此。在地震勘探中,由于障碍物和其它一些因素的影响,通常都不会是这种等距离排列的情况。然而,对于每一个震源-接收器对,都应尽量以其共同中点等距离地放置。假设反射面37大体上平行于震源和接收器所在的平面,来自每个地震源的声波从一个共深度点反射,并且由各自对应的地震接收器接收,如图所示。可以把地震接收器31-35的输出表示为图2。

由于所有的波形曲线都是由来自共同深度点的反射产生的,故一般

把图2所示的一组地震波形曲线叫做一个共深度点集合。在某些场合,解释员直接利用图2所示的共深度点集合。然而,更普通的是对图2所示的地震波形曲线求和,产生一个复合曲线,以增强由地震波形曲线的特征所代表的地下结构信息。这种求和的结果是对于共深度点的一个单一地震波形曲线。这种求和的目的是为突出在地震信号中的某些重要特征,并且减少或除去那些遮盖信号重要部分的特征。对于一组共深度点,可以进行共深度点迭加,其结果表示在图3中。一般把图3称作迭加数据的垂直地震剖面。

尽管图3所示的这种数据是地震数据解释员经常运用的,但在某些时候很难从这种数据中检出波峰和波谷。这里所说的“波峰”是指如图2中R

上的A点。而“波谷”是指如图2中R

上的B点。

于是,本发明的目的正是提供一种方法,用于从图3所示的地震波形曲线中产生一个增强的地震显示。通过本发明的增强的地震显示与产生这个地震显示的多个波形曲线相比,更容易获得诸如波峰和波谷位置以及其它解释员感兴趣的信息。

根据本发明,把图2和图3中所示的那些地震波形曲线(这些被认为是实的地震波形)转换为虚的地震波形,然后确定在若干取样点上复地震波形曲线(由实的和虚的组合而成)的瞬时相位。同时确定在取样点上的振幅(实部或包络)。然后根据每个取样点的振幅和瞬时相位,对各取样点赋予某种颜色。于是用这些给定的颜色产生一个地震显示。以后,有时把这个结果称为可变振幅/相位地震显示,这个结果增进了反射事件的连续性,提供了各个尖灭(Pinchouts)的位置的更清晰的图象,突出了一些小尺度的断层,对于反射特性的相关分析,这种显示比图3的显示更为有用。

这里,所谓“实地震波形曲线”是指实际记录的地震波形曲线。所谓“虚地震波形曲线”是指真实地震波形的希尔伯特(Hilbert)变

换所谓“复地震波形曲线”是指由实波形(它是与真实地震波形曲线等同的)与虚波形(真实地震波形曲线的希尔伯特变换)组成的合成波形。

本发明的其它目的和优点从对本发明的上面简要描述和它的权项以及对图4-10的详细描述中将会更加清楚。

下面简要地描述其全部附图:

图1是一个典型的地震爆破阵列的示意图;

图2是从图1所示的地震阵列中可以接收到的波形图;

图3是经过共深度点迭加的多个地震波形曲线;

图4是根据本发明在产生可变振幅/相位地震显示中所用的最佳色组的图示;

图5是根据本发明,运用实振幅,把图3的地震波形曲线转换为可变振幅/相位地震显示的结果;

图6是根据本发明,运用包络振幅,把图3的地震波形曲线转换为可变振幅/相位地震显示的结果;

图7是用于三维地震数据的可变振幅/相位地震显示图形;

图8是产生图9的地震显示所用的色码;

图9是只根据振幅得到的常规彩色三维地震显示图形;

图10如同图5的可变振幅/相位地震显示,但没有经过图象增强。

本发明是用共深度点迭加数据(如图3所示)进行描述的,因为通常都使用这种数据来确定地下特征。然而,可将本发明应用到任何适合的地震波形曲线组。例如,可将本发明应用到如图2所示的地震波形曲线的共深度点集合。也可将本发明应用到以后几例中所示的三维数据的情况。

用于从图3所示的多个地震波形曲线中产生本发明的可变振幅/相位地震显示的步骤如下。如果需要,可将其中某些步骤变换次序。

1.选择采样率

在反射地震学中所获得的正弦波形曲线一般的长度范围大约从4秒到8秒,典型长度是6秒。

对于这样一种正弦波动,可用任何合适的数据采样率。然而,数据采样率应能供给足够的数据点,以便给出有意义的统计量。该数据采样率的范围一般是从大约2毫秒到4毫秒,最好是选用4毫秒的采样率。

2.确定振幅

一旦把数据采样率确立下来,接着就要确定在每个采样点上每个真实地震波形的振幅。正如那些精通地震数据解释的人们所熟知的,从图3所示的真实地震波形曲线可直接得到真实振幅。

值得指出的是,最好用与包络振幅不同的实振幅。但如果需要,也可用包络振幅。所谓实振幅是指在取样点上真实地震波形曲线的实际振幅。在取样点上的包络振幅,是指在取样点上复地震波形的实振幅平方与虚振幅平方之和的平方根,运用与包络振幅不同的实振幅能更清楚地描绘断层和尖灭,使得小断层之间的相关更容易,从而更易于解释可变振幅/相位地震显示。因此,尽管需要时也可运用包络振幅,并可给出有用的信息,但是运用与包络振幅不同的实振幅有很多好处,这一发现是本发明的一个特别重要部分。

3.从真实地震波形计算虚地震波形

对真实的地震波形曲线应用希尔伯特变换,把这真实的地震波形转换成虚地震波形。希尔伯特变换的这种应用曾由M.T.Tanner和R.E.Sheriff在题为Application    of    Amplitude,Freguency,and    Other    Attributes    To    Stratigraphic    and    Hydro-Carbon    Determination的文章中描述过。该文章载于Charles    E.Payton编辑的美国石油地质学会1977年第26号研究报告。该报告的总题目是:Seismic    Strategraphy-Applications    to    Hydrocarbon    Exploration.

4.确定复地震波形的瞬时相位

在取样点P(t)上复地震波形的瞬时相位由(1)式定义:

P(t)=tan

〔h(t)/g(t)〕……(1)

这里,h(t)是在取样点上虚地震波形的振幅,而g(t)是在取样点上实地震波形的振幅。上述振幅h(t)和g(t)可直接从虚地震波形和实地震波形得到。

5.解释

如果希望的话,可以只对取样点赋予彩色,如下文将要更详细描述的那样。然而,只用这些取样点可能使可变振幅/相位地震显示看起来不那么舒服,而且可能给解释带来困难。所以最好运用图象增强技术以提供更高的视分辨率。

实质上,在两个取样点之间选若干点,对每个点赋予一个振幅和瞬时相位,于是在两个取点之间的彩色平滑地过渡。

填入的点数随着地震显示图的尺寸和绘图设备而变化。最好是填入足够的点数,使得不管显示图尺寸或所用绘图设备如何都能给出一个平滑的彩色过渡。

6.图象处理

一旦对可变振幅/相位地震显示里的每个点指定了真实振幅和瞬时相位,则就按照真实振幅和瞬时相位把彩色赋绘每一点。

可以利用任何合适的彩色设计。要求至少有四种可区别的彩色或可区别的色调。然而,最好用比较多数目的彩色或色调,因为比较多的彩色或色调可给出更高的视分辨率,从而给出一个比较好看的图象,使得更加容易进行解释。具体地说,对于相位运用四种彩色最为有利,以后将更详细地描述此点。

在图4中表示了与Applicon绘图器一起使用的最好的一组彩色。参考图4,这里运用了四种基本彩色(绿、蓝、紫、橙色)的16个色

调。每个色调代表不同的振幅,最好用最深的彩色代表最大的振幅,而用最浅的彩色代表最小的振幅。最好把最大振幅和最小振幅之间的范围分为一些相等的间隔,用每个色调代表一个这样的间隔。例如图3,振幅范围从0到6,000而每一个色调所复盖的范围为400。

图4所示四种彩色的每一种都代表一个相位范围。对于图4的彩色所指定的范围如下:

彩色    范围

绿    -90°到-180°

蓝    0°到-90°

深红    0°到+90°

橙    +90°到+180°

如果愿意,对于相位也可用少于四种彩色,例如,图4的绿色可代表0到-180°,而蓝色可代表0到+180°。然而,若使用的彩色少于四种将导致丢失一些信息。同样,也可用多于四种彩色。然而,运用多于四种彩色也会导致信息的丢失,下面将更详细地描述此点。

地震波峰在0°相位。地震波谷在+180°或-180°的相位。地震波的零交叉点(如图2中的C点)在+90°或-90°相位。

由于有这些关系,发现运用图4所示的那些复盖范围的四种彩色是最为理想的。彩色之间的变换直接地将我们所感兴趣的事件(波峰、波谷或零交叉点)告知解释人员。下面将举例更详细地说明。

运用多于四种彩色(比如六种彩色)会增加混淆和失去信息,因为感兴趣的事件发生在一些特定的瞬时相位上,而在这些瞬时相位上可能不产生彩色之间的变换。因此,发现运用四种彩色的好处是本发明的另一个特别有益的方面。

如果愿意,可以不把彩色变换设置在0°、90°和180°的相位上。在某些情况下,解释员可能对一个相位比如50°的相位感兴趣。

在这种情况下,可把图4中的蓝和紫之间的变换设置在50°,其它的一些相位也相应地改变。这使得解释员能够确定发生在50°相位,140°相位等等的事件位置。

于是,一般来说,当运用四种彩色时,可根据一个相角基值(BA)按下面所列范围来设定彩色,但最好采用图4设定的相角范围。

彩色    范围

一    (BA-90°)到(BA-180°)

二    BA到(BA-90°)

三    BA到(BA+90°)

四    (BA+90°)到(BA+180°)

7.产生可变振幅/相位地震显示

一旦把彩色赋予了在可变振幅/相位地震显示中所用的所有点,则也就把该信息送到了产生所要可变振幅/相位地震显示的绘图器。可以用任何合适的绘图器。Applicon绘图器就是合适的一例。

根据本发明,可以用任何适当的计算机程序来产生可变振幅/相位地震显示。在附录1中列出了用于IBM3084计算机的合适计算机程序。对于会使用IBM3084计算机的人员来讲,该程序是显然的。

下面再给出一些例子,以对本发明作进一步说明。

例Ⅰ

根据本发明,运用图4所示的彩色,运用真实振幅,把图3中所示的多个地震波形曲线转换为可变振幅/相位地震显示。其结果表示在图5中。

参考图5,可以看出,波峰、波谷和零交叉点都很好确定。举例来说,蓝和紫之间的非常清楚的变换表示出波峰的位置。同样,绿和蓝之间的变换表示零点交叉点,而绿和橙之间的变换表示波谷。

从图3所示的地震波形曲线中还可以看出最大振幅,这是由图5的中心部分的较黑彩色表示的。还应该注意到,在图5中更容易发现断层、尖灭和事件相互关系。同时,在断层区强彩色线的变换表示了该断层的特性和尺寸。在彩色之间存在的白线也为更方便地解释创造了条件。

例Ⅱ

用例Ⅰ的同样方法将图3所示的多个地震波形曲线转换为可变振幅/相位地震显示,但这里用的是包络振幅而不是真实振幅。其结果表示在图6中。

参考图6,可以看出,同样能得到有价值的信息。然而,某些信息失去了,而且在图6中比在图5中更难使小的断层相关。同时,在彩色之间也没有白线,这使得对图6的解释比对图5更难。最后,图6的整个外貌不能给予解释员一个直观而又愉快的感觉。所以,最好用真实振幅。

例Ⅲ

如前所述,可以把可变振幅/相位地震显示应用到三维地震数据。作为一个例子,把本发明应用到由图3所示的地震波形复盖区域的时间片中。运用图4的彩色码,其结果表示在图7中。

作为一个比较,运用产生图7地震显示所用的同样数据,运用图8所示的彩色码,仅仅根据振幅产生一个常规的彩色三维地震显示。把这个地震显示表示在图9中。

图7和图9的比较说明,解释员从图7可获得比图9更多的地震信

息。特别是从图7可得到波峰、波谷和零交叉点的位置,而从图9却得不到。

例3

对于图5所示的地震显示,若不经内插,则产生图10所示的结果。图10所示的显示是可以使用的,但这种块状的样子不符合解释员的直观要求。同时,在某种程度上失去了图5地震显示的清晰性,增加了解释员的困难。

根据最佳实施方案我们描述了本发明。在本发明的范围内,一些适当的变化是可能的。但如权利要求所述,所有这些变化都在本发明范围之内。

用于可变振幅-相位绘图的源码〔按每秒采样(SPS)〕

DIMENSION    TARRAY〔4096〕,BUFF〔5000〕,ENV〔4096〕,SLOC1〔2〕,SLOC2〔2〕

DIMENSION    NUMTRC〔3000〕

COMMON/CTRL/NX,NY,NTREC,DELT,NT,TPI,SPI,NREC,SCALE,LINC,ZMAX

COMMON/PARM/XORGIN,YORGIN,IORGIN,PLOTX,PLOTY,XINC,YINC,SIZE,SIZE1

COMMON/CTRL2/IFLAG,IXFRST,IXLINE,IP,TAR,IN,NN,IPLTE

COMMON/CTRL3/IOP,IOPT1,IOPT2,IOPT3,IOPT4,IOPT5

COMMON/CTRL4/ICDPS,ICDPE,ITST,ITED,NSAMP,ICDPN

INTEGER*4    JBUFF〔5000〕,MLINE〔3〕,ICOPON,INKSON,IBLANK

INTEGER*4    IDIR,IDIRR,IDIRL,DDNAME〔2〕,ILOC〔2〕,ILOC2〔2〕

INTEGER*2    IBUFF〔10000〕,ITRHE,IHEAD,IPCODE,IVOL〔3〕,IPROS〔4〕

EQUIVALENCE〔BUFF〔1〕,IBUFF〔1〕,JBUFF〔1〕〕

EQUIVALENCE〔ILOC〔1〕,SLOC1〔1〕〕,〔ILOC2〔1〕,SLOC2〔1〕〕

DATA    IDIR/‘    ’/,IDIRR/‘RTOL’/,IDIRL/‘LTOR’/

DATA    INKSON/‘    ’/,ICDPON/‘    ’/,IBLANK/‘    ’/

DATA    IHEAD/‘TP’/

DATA    ITRHE/‘HE’/

DATA    IPCODE/‘    ’/

DATA    DDNAME/‘FT29’,‘F001’/

WRITE〔6,1075〕

检验日时间,并设置间隔定时器

CALL    TIMINT〔KK〕

CALL    TIME〔SLOC1〕

NX=0

READ〔10,1000〕TPI,SPI,ICDPS,ICDPE,ITST,ITED,IPCODE

READ〔10,1010〕IDIR,ICDPON,INKSON,ZMAX

WRITE〔6,1080〕

WRITE〔6,1055〕TPI,SPI,ICDPS,ICDPE,ITST,ITED,IDIR,IPCODE

IF〔ZMAX.GT.0.0〕IOPT1=1

IF〔INKSON.NE.IBLANK〕IOPT2=1

IF〔ICDPON.NE.IBLANK〕IOPT3=1

IF〔IDIR.EQ.IDIRR〕IOPT4=1

LN=0

20    CALL    TAPEIO〔‘TAPEIN’,BUFF,LN,‘R’〕

IF〔LN.LT.-1〕GO    TO    20

IF〔LN.EQ.-1〕GO    TO    400

IF〔IBUFF〔1〕.NE.IHEAD〕GO    TO    100

IPROS〔1〕=IBUFF〔5〕

IPROS〔2〕=IBUFF〔6〕

IPROS〔3〕=IBUFF〔7〕

IPROS〔4〕=IBUFF〔8〕

MLINE〔1〕=JBUFF〔5〕

MLINE〔2〕=JBUFF〔6〕

MLINE〔3〕=JBUFF〔7〕

IRUN=IBUFF〔39〕

WRITE〔6,1050〕IPROS,MLINE,IRUN

WRITE〔6,1060〕

NT=IBUFF〔128〕

LT=1024

IF〔NT.GT.1024.AND.NT.LE.2048〕LT=2048

12

IF〔NT.GT.2048.AND.NT.LE.4096〕LT=4096

IDELT=IBUFF〔127〕

NREC=IBUFF〔164〕

DELT=IDELT

NREC=ICDPE-ICDPS+1

CALL    LIMIT

100    IF〔IBUFF〔1〕.NE.ITRHE〕GO    TO    200

DO    50    J=1,4096

50    TARRAY〔J〕=0.0

ICDPN=IBUFF〔63〕

IF〔NX.EQ.NREC〕GO    TO    400

IF〔IBUFF〔6〕.NE.IPCODE〕GO    TO    200

IF〔ICDPN.LT.ICDPS.OR.ICDPN.GT.ICDPE〕GO    TO    200

IF〔IBUFF〔6〕.EQ.IPCODE〕NX=NX+1

NTRMP=IBUFF〔28〕

IART=IBUFF〔4〕

WRITE〔6,9998〕

DO    250    J=1,NTRMP

N=IART+J

TARRAY〔J〕=BUFF〔N〕

250    CONTINUE

CALL    ENVELP〔TARRAY,LT,ENV〕

I=ITST

K=ITED

WRITE〔9〕〔TARRAY〔N〕,N=I,K〕

WRITE〔8〕〔ENV〔N〕,N=I,K〕

NUMTRC〔NX〕=ICDPN

WRITE〔6,3004〕ICDPN,NTRMP

200    LN=0

GO    TO    20

绘截面

400    WRITE〔6,1065〕

CALL    IPARM〔IERROR〕

IF〔IERROR.EQ.1〕GO    TO    5000

IF〔IOPT4.EQ.1〕XORGIN=830

CALL    IPAGB

CALL    IPRINT〔1〕

CALL    ISTART〔IORGIN〕

CALL    ICHCOL〔1〕

CALL    APPLE

CALL    TGRID〔NUMTRC〕

CALL    TITLE

WRITE〔6,2040〕

CALL    ICLB〔0〕

CALL    TIMINT〔JJ〕

CALL    TIME〔SLOC2〕

INTIME=KK-JJ

WRITE〔6,1085〕ILOC,ILOC2,INTIME

恢复VDLSER

CALL    DDCK〔DDNAME,IFG,IVOL,IDEN〕

WRITE〔6,1095〕IVOL

STOP

5000    WRITE〔6,2000〕

STOP

1000    FORMAT〔10X,2F10.3,4I5,3    A2〕

1010    FORMAT〔16X,A4,6X,A4,6X,A4,F10.2〕

1050    FORMAT〔40X,‘FEATURE’,3X,4A2,/40X,‘LINE’,10X,3A4,/,40X,‘RUN#’,5X,I*2,///〕

1055    FORMAT〔40X,‘TPI’,F11.3,/,40X,‘IPS’,F11.3,/,40X,‘FIRST    CDP’,I5,/,40*X,‘LAST    CDP’,I5,/,40X,‘START    TIME’,I4,/,40X,‘END    TIME’,I4,/,40X*,‘PLOT    DIR’,A4,/,40X,‘PC    CODE’,A2〕

1060    FORMAT〔///,35X,‘***    TRACES    PROCESSED    ***’,///〕

1065    FORMAT〔///,35X,‘***    PRACE    PROCESSING    COMPLETED    ***’,//////〕

1075    FORMAT〔1H1,///,100〔‘*’〕,/////,35X,‘THIS    IS    THE    VARIABLE    AMPLITUDE

*PLOTTING    PACKAGE    FOR    SPS’,////,35X,‘FOR    PROBLEMS    CALL    CLIFF    SHOCK

*AT    X-4559’,/////////〕

1080    FORMAT〔35X,‘***    INPUT    PARAMETERS    *****’,///〕

1085    FORMAT〔//,35X,‘START    TIME’,2A4,//,36X,‘END    TIME,’,2A4,

*//,36X,‘CPU    IN    SECONDS’,I10,//〕

1090    FORMAT〔/////////,35X,‘*********    THIS    IS    END    OF    JOB    *********’〕

1095    FORMAT〔35X,‘OUTPUT    VOLUME    **’,3A2,‘FILE    #2    **’〕

2000    FORMAT〔35X,‘######    PROGRAM    TERMINATED    DUE    TO    CRITICAL    ERROR    ####’〕

2040    FORMAT〔35X,‘****    OUTPUT    INFORMATION    ****’,/////〕

3004    FORMAT〔25X,‘****    CDP’,I4,‘WITH’,I4,‘SAMPLES    IS    SUCCESSFULLY    PRO

*CESSED    *****’〕

STOP

END

SUBROUTINE    APPLE

COMMON    /CTRL/NX,NY,NTREC,DELT,NT,TPI,SPI,NREC,SCALE,LINC,ZMAX

COMMON    /PARM/XORGIN,YORGIN,IORGIN,PLOTX,PLOTY,XINC,YINC,SIZE,SIZE1

COMMON    /CTRL3/IOP,IOPT1,IOPT2,IOPT3,IOPT4,IOPT5

COMMON/CTRL4/ICDPS,ICDPE,ITST,ITED,NSAMP,ICDPN

DIMENSION    SBUFF〔3000〕,TBUFF〔3000〕,PBUFF〔3000〕,ABUFF〔3000〕

DIMENSION    U〔4〕,AIN〔100000〕,ZCLASS〔16〕,PIN〔100000〕,IBUFF〔3000〕

DIMENSION    ISET〔64〕,PCLASS〔5〕

DATA    PCLASS/-3.1459,-1.57,0.0,1.57,3.1459/

DATA    ISET/10001,20002,30003,40004,50005,60006,70007,80008,90009,10

*0010,110011,120012,130013,140014,150015,160016,1,2,3,4,5,6,7,8,9,1

*0,11,12,13,14,15,16,100,200,300,400,500,600,700,800,900,1000,1100,

*1200,1300,1400,1500,1600,10100,20200,30300,40400,50500,60600,70700

*,80800,90900,101000,111100,121200,131300,141400,151500,161600/

DATA    ZCLASS/0.0,400.,800.,1200.,1600.,2000.,2400.,2800.,3200.,3600

*.,4000.,4400.,4800.,5200.,5600.,6000./

IF〔IOPT1.EQ.1〕CALL    NEWSCL〔ZCLASS,ZMAX〕

NSIGN=1

IF〔IOPT4.EQ.1〕NSIGN=-1

NCLZ=16

NCLZ1=NCLZ-1

REWIND    8

REWIND    9

置绘图坐标

XSTART=YORGIN

YST=XORGIN

开始内插计算

XPIX=PLOTY/.20+1.5

NPIXX=IFIX〔XPIX〕

U〔3〕=.5

NPTS=NSAMP+1

NSAVE=0

NPASS=0

NINT=100000/NPIXX

10    LNT=NINT

U〔2〕=1./〔〔XPIX-1.5〕/〔NSAMP-1〕〕

U〔4〕=FLOAT〔NPIXX〕

NROW=0

NPTS=NSAMP+1

IF〔LNT.GT.〔NX-NSAVE〕〕LNT=NX-NSAVE

T方向内插

DO    40    I=1,LNT

NSAVE=NSAVE+1

NROW=NROW+1

READ〔8〕〔PBUFF〔K〕,K=1,NSAMP〕

READ〔9〕〔ABUFF〔K〕,K=1,NSAMP〕

PBUFF〔NPTS〕=PBUFF〔NSAMP〕

ABUFF〔NPTS〕=ABUFF〔NSAMP〕

CALL    UNWRAP〔PBUFF,NPTS〕

CALL    APAM〔‘QIN*’,1,TBUFF,NPIXX,4,0,PBUFF,NPTS,4,0,U,4,4,0〕

CALL    APAM〔‘QIN*’,1,SBUFF,NPIXX,4,0,ABUFF,NPTS,4,0,U,4,4,0〕

CALL    WRAP〔TBUFF,NPIXX〕

DO    30    J=1,NPIXX

N=〔NROW-1〕*NPIXX+J

PIN〔N〕=TBUFF〔J〕

AIN〔N〕=SBUFF〔J〕

30    CONTINUE

检验结束的T方向

40    CONTINUE

开始X方向内插

YPIX=〔NROW-1〕*XINC

YPIX=YPIX/.2+1.5

NPIXY=IFIX〔YPIX〕

U〔2〕=1./〔〔YPIX-1.5〕/〔NROW-1〕〕

U〔4〕=FLOAT〔NPIXY〕

NPTS=NROW+1

开始X内插循环

DO    200    J=1,NPIXX

DO    100    I=1,NROW

SBUFF〔I〕=AIN〔J+〔I-1〕*NPIXX〕

TBUFF〔I〕=PIN〔J+〔I-1〕*NPIXX〕

100    CONTINUE

SBUFF〔NPTS〕=SBUFF〔NROW〕

TBUFF〔NPTS〕=TBUFF〔NROW〕

CALL    UNWRAP〔TBUFF,NPTS〕

CALL    APAM〔‘QIN*’,1,PBUFF,NPIXY,4,0,TBUFF,NPTS,4,0,U,4,4,0〕

CALL    APAM〔‘QIN*’,1,ABUFF,NPIXY,4,0,SBUFF,NPTS,4,0,U,4,4,0〕

CALL    WRAP〔PBUFF,NPIXY〕

开始绘X扫描线

15

A=PBUFF〔KT〕

B=ABS〔ABUFF〔KT〕〕

IF〔A.LT.PCLASS〔1〕〕II=1

IF〔A.GT.PCLASS〔5〕〕II=4

DO    59    I=1,4

IF〔A.GT.PCLASS〔I〕.AND.A.LE.PCLASS〔I+1〕〕II=I

59    CONTINUE

IF〔B.GT.ZCLASS〔NCLZ〕〕ICODE=ISET〔〔II-1〕*16+16〕

IF〔B.LT.ZCLASS〔1〕〕ICODE=ISET〔〔II-1〕*16+1〕

DO    31    M=1,NCLZ1

IF〔B.GT.ZCLASS〔M〕.AND.B.LE.ZCLASS〔M+1〕〕ICODE=ISET〔〔II-1〕*16+M〕

31    CONTINUE

IF〔B.EQ.0.0〕ICODE=0

IBUFF〔KT〕=ICODE

IF〔ICODE.EQ.0〕KOUNT=KOUNT+1

51    CONTINUE

DO    71    KT=1,NPIXY

YB=YST+〔KT-1〕*.2*NSIGN

YSIDE=.2

CALL    IRECT〔YB,XB,YSIDE,.20,IBUFF〔KT〕,0〕

71    CONTINUE

200    CONTINUE

检查、看看是否整个时间片已结束

NPASS=NPASS+1

IF〔NSAVE.GE.NX〕GO    TO    700

YST=YST+NPIXY*.2*NSIGN

BACKSPACE    8

BACKSPACE    9

NSAVE=NSAVE-1

GO    TO    10

绘图已    完,关闭绘图文件

700    CONTINUE

XSTART=XORGIN+PLOTX+25.

IF〔IOPT4.EQ.1〕XSTART=XORGIN-PLOTX-110.

IF〔IOPT2.NE.1〕CALL    INKS〔XSTART,ISET,PCLASS,ZCLASS〕

RETURN

END

SUBROUTINE    UNWRAP〔SBUFF,K〕

DIMENSION    SBUFF〔1〕,WRAPN〔8000〕

PI=3.14159

TWOPI=2.*PI

NPTS=K+1

WRAPN〔1〕=0.0

DO    100    I=1,K

DIFF=SBUFF〔I〕-SBUFF〔I+1〕

WRAPN〔I+1〕=WRAPN〔I〕

IF〔DIFF.GT.PI〕WRAPN〔I+1〕=WRAPN〔I〕+1

IF〔DIFF.LT.〔-PI〕〕WRAPN〔I+1〕=WRAPN〔I〕-1

100    CONTINUE

DO    200    J=2,NPTS

SBUFF〔J〕=SBUFF〔J〕+WRAPN〔J〕*TWOPI

200    CONTINUE

RETURN

16

DIMENSION    TBUFF〔1〕

PI=3.14159

TWOPI=2*3.14159

DO    100    I=1,K

TBUFF〔I〕=AMOD〔TBUFF〔I〕,TWOPI〕

IF〔TBUFF〔I〕.LT.〔-PI〕〕TBUFF〔I〕=TBUFF〔I〕+TWOPI

IF〔TBUFF〔I〕.GT.PI〕TBUFF〔I〕=TBUFF〔I〕-TWOPI

00    CONTINUE

RETURN

END

SUBROUTINE    INKS〔XSTART,ISET,PCLASS,ZCLASS〕

DIMENSION    ISET〔1〕,PCLASS〔1〕,ZCLASS〔1〕

XSTART=XSTART+20.

DO    200    I=1,4

X=XSTART+〔I-1〕*10.

DO    100    J=1,16

Y=50.+〔J-1〕*10.

CALL    IRECT〔X,Y,10.,10.,ISET〔〔I-1〕*16+J〕,1〕

00    CONTINUE

00    CONTINUE

X1=XSTART-10.

DO    150    J=1,16

Y=50.+〔J-1〕*10.

CALL    INUMB〔ZCLASS〔J〕,X1,Y,2.,0,7,0〕

50    CONTINUE

Y=50.-5.

DO    300    J=1,5

X=XSTART+〔J-1〕*10.

Z=PCLASS〔J〕*57.35

CALL    INUMB〔Z,X,Y,2.,270,7,0〕

300    CONTINUE

X=XSTART+10.

Y=50.-18.

CALL ITEXT〔‘PHASE

’,X,Y,4.0,0,7〕

X=XSTART+50.

Y=50.+60.

CALL ITEXT〔‘AMPLITUDE

’,X,Y,4.0,90,7〕

CALL    LEGEND〔XSTART,ISET,PCLASS,ZCLASS〕

RETURN

END

SUBROUTINE    LEGEND〔XSTART,ISET,PCLASS,ZCLASS〕

DIMENSION    TARRAY〔1024〕,ENV〔1024〕,PCLASS〔1〕,ZCLASS〔1〕,ISET〔1〕

DIMENSION    YP〔180〕,XP〔180〕

INTEGER*2    JDATE〔6〕,IDATE〔4〕

DATA JDATE/‘ ’,‘/’,‘ ’,‘/’,‘ ’,‘

’/

设置波形图例子程序

CALL    DATE〔IDATE〕

JDATE〔1〕=IDATE〔1〕

JDATE〔3〕=IDATE〔2〕

JDATE〔5〕=IDATE〔3〕

C=ZCLASS〔16〕

D=ZCLASS〔16〕-ZCLASS〔15〕

LT=1024

100    CONTINUE

DO    200    J=1,360

TARRAY〔J〕=TARRAY〔J〕*〔C+D*2〕

200    CONTINUE

DO    300    J=361,540

TARRAY〔J〕=TARRAY〔J〕*〔C-D*3〕

300    CONTINUE

DO    400    J=541,720

TARRAY〔J〕=TARRAY〔J〕*〔C-D*9〕

400    CONTINUE

DO    450    J=1,90

ENV〔J〕=J-90.

ENV〔J+90〕=J

ENV〔J+180〕=90.+J

ENV〔J+270〕=J-180.

ENV〔J+360〕=J-90.

ENV〔J+450〕=J

ENV〔J+540〕=90.+J

ENV〔J+630〕=J-180.

450    CONTINUE

DO    475    J=1,720

ENV〔J〕=ENV〔J〕/180.*3.14159

475    CONTINUE

X1=XSTART+10.

Y=256.

KOUNT=0

DO    502    J=1,720,4

A=ENV〔J〕

B=ABS〔TARRAY〔J〕〕

IF〔A.LT.PCLASS〔1〕〕II=1

IF〔A.GT.PCLASS〔5〕〕II=4

DO    501    I=1,4

IF〔A.GT.PCLASS〔I〕.AND.A.LE.PCLASS〔I+1〕〕II=I

501    CONTINUE

IF〔B.GT.ZCLASS〔16〕〕ICODE=ISET〔〔II-1〕*16+16〕

IF〔B.LT.ZCLASS〔1〕〕ICODE=ISET〔〔II-1〕*16+1〕

DO    503    K=1,15

IF〔B.GT.ZCLASS〔K〕.AND.B.LT.ZCLASS〔K+1〕〕ICODE=ISET〔〔II-1〕*16+K〕

503    CONTINUE

KOUNT=KOUNT+1

Y1=Y-〔KOUNT-1〕*.2

CALL    IRECT〔X1,Y1,20.,.2,ICODE,0〕

502    CONTINUE

X1=XSTART+20.

KOUNT=0

DO    600    I=1,720,4

KOUNT=KOUNT+1

YP〔KOUNT〕=Y-〔KOUNT-1〕*.2

XP〔KOUNT〕=TARRAY〔I〕/〔C+D*2〕*9.+X1

600    CONTINUE

18

CALL    ILINE〔X1,256.,.2,7,1〕

CALL    ILINE〔X1,220.,.2,7,0〕

X1=XSTART+30.

CALL ITEXT〔‘+

’,X1,258.,2.,0,7〕

X1=XSTART+10.

CALL ITEXT〔‘-

’,X1,258.,2.,0,7〕

X1=XSTART+20.

CALL ITEXT〔‘0

’,X1,258.,2.,0,7〕

X1=XSTART+10.

CALL    ITEXT〔JDATE,X1,280.,2.,0,7〕

X1=XSTART-15.

CALL ITEXT〔‘PHASE VARIABLE AMPLITUDE

’,X1,270.,3.,0,7〕

RETURN

END

SUBROUTINE    TGRID〔NUMTRC〕

COMMON    /CTRL/NX,NY,NTREC,DELT,NT,TPI,SPI,NREC,SCALE,LINC,ZMAX

COMMON    /PARM/XORGIN,YORGIN,IORGIN,PLOTX,PLOTY,XINC,YINC,SIZE,SIZE1

COMMON    /CTRL3/    IOP,IOPT1,IOPT2,IOPT3,IOPT4,IOPT5

COMMON    /CTRL4/ICDPS,ICDPE,ITST,ITED,NSAMP,ICDPN

DIMENSION    TLINE〔81〕,TNUMB〔81〕,NUMTRC〔1〕

INTEGER*2    LABEL〔3〕,ICODE,IEXT〔5〕,IEND,IEX

DATA IEXT/‘ ’,‘ ’,‘ ’,‘ ’,‘

’/

DATA TLINE/81*.2/,TNUMB/81*1.4/,LABEL/‘ ’,‘ ’,‘

’/

DATA    IEX/‘EX’/,IEND/‘EF’/

NSIGN=1

IF〔IOPT4.EQ.1〕NSIGN=-1

设置绘图参数

WRITE〔6,2010〕

X1=XORGIN-〔2.*NSIGN〕

X2=XORGIN+〔PLOTX+2.〕*NSIGN

XI1=XORGIN-〔10.*NSIGN〕

XI2=XORGIN+〔PLOTX+10〕*NSIGN

设置参考表

DO    100    J=1,81,10

TNUMB〔J〕=2.0

TLINE〔J〕=.6

100    CONTINUE

DO    200    J=6,81,10

TNUMB〔J〕=2.0

TLINE〔J〕=.4

200    CONTINUE

初始化循环

M=〔ITST-1〕*DELT+100

IF〔ITST.EQ.0〕M=〔ITST-1〕*DELT+100

K=ITED*DELT+100

I=0

T=SPI/10.*25.4

绘出计时线

DO    300    J=M,K,100

19

Y=YORGIN-〔I-1〕*T

Y1=Y-.5

CALL    ILINE〔X1,Y,TLINE〔ILOC〕,7,1〕

CALL    ILINE〔X2,Y,TLINE〔ILOC〕,7,0〕

CALL    INUMB〔VALUE,XI1,Y1,TNUMB〔ILOC〕,0,7,1〕

CALL    INUMB〔VALUE,XI2,Y1,TNUMB〔ILOC〕,0,7,1〕

300    CONTINUE

绘註解

READ〔10,1000〕IFTRC,ITINC,ITLABL,ITLINC

NTRC=NX

DO    325    K=1,NX

IF〔IFTRC.EQ.NUMTRC〔K〕〕I=K

IF〔ITLABL.EQ.NUMTRC〔K〕〕J=K

325    CONTINUE

NTRCI=I+NTRC

NTRCJ=J+NTRC

YT=YORGIN+1.

YT1=YORGIN+2.

YT2=YORGIN

YT3=YT1+1.

YT4=YT1+4.

YB=YORGIN-PLOTY-1.

YB1=YORGIN-PLOTY-2.

YB2=YORGIN-PLOTY

YB3=YB1-3.

X=XORGIN-12.*NSIGN

IF〔IOPT3.NE.1〕CALL ITEXT〔‘CDP

’,X,YT3,2.,0,7〕

CALL ITEXT〔‘EXT

’,X,YT4,2.,0,6〕

DO    350    K=1,NTRC

X=XORGIN+〔K-1〕*XINC*NSIGN

CALL    ILINE〔X,YT,.2,4,1〕

CALL    ILINE〔X,YT2,.2,4,0〕

CALL    ILINE〔X,YB,.2,4,1〕

CALL    ILINE〔X,YB2,.2,4,0〕

350    CONTINUE

L=0

DO    400    K=I,NTRC,ITINC

L=L+1

L1=〔L-1〕*ITINC

X=XORGIN+L1*XINC*NSIGN+〔I-1〕*XINC*NSIGN

CALL    ILINE〔X,YT1,.4,3,1〕

CALL    ILINE〔X,YT2,.4,3,0〕

CALL    ILINE〔X,YB1,.4,3,1〕

CALL    ILINE〔X,YB2,.4,3,0〕

400    CONTINUE

IF〔IOPT3.EQ.1〕GO    TO    10

IF〔ITLABL.LE.0〕GO    TO    10

IF〔ITLINC.LE.0〕GO    TO    10

JN=0

DO    500    K=J,NTRC,ITLINC

JN=JN+1

J1=〔JN-1〕*ITLINC

CALL INUMB〔VALUE,X,YB

,2.,0,7,0〕

500    CONTINUE

绘用户的外部註解

10    READ〔10,2000〕ICODE,INTR,〔IEXT〔K〕,K=1,4〕

IF〔ICODE.EQ.IEND〕GO    TO    600

IF〔INTR.LT.ICDPS.OR.INTR.GT.ICDPE〕GO    TO    10

DO    550    K=1,NX

IF〔INTR.EQ.NUMTRC〔K〕〕INCR=K-1

550    CONTINUE

X=XORGIN+INCR*XINC*NSIGN-8.

WRITE〔6,2020〕ICODE,INTR,〔IEXT〔K〕,K=1,4〕

CALL    ITEXT〔IEXT,X,YT4,2.,0,6〕

GO    TO    10

600    WRITE〔6,2030〕

RETURN

1000    FORMAT〔10X,4I10〕

2000    FORMAT〔A2,I5,2X,4A2〕

2010    FORMAT〔35X,‘***    USER    TRACE    ANNOTATION    ***’,///,25X,‘ANNOTATION    T

*YPE’,5X,‘INTERNAL    CDP’,5X,‘ANNOTATION’,//〕

2020    FORMAT〔31X,A2,17X,I5,9X,4A2〕

2030    FORMAT〔//,35X,‘***    USER    TRACE    ANNOTATION    COMPLETED    ***’,//〕

END

SUBROUTINE    IPARM〔IERROR〕

COMMON/CTRL/NX,NY,NTREC,DELT,NT,TPI,SPI,NREC,SCALE,LINC,ZMAX

COMMON/PARM/XORGIN,YORGIN,IORGIN,PLOTX,PLOTY,XINC,YINC,SIZE,SIZE1

COMMON/CTRL4/ICDPS,ICDPE,ITST,ITED,NSAMP,ICDPN

IERROR=0

PLOTX=NX/TPI*25.4

TIMEL=DELT*NSAMP/1000.

PLOTY=TIMEL*25.4*SPI

IF〔PLOTX.GT.715.〕GO    TO    50

IF〔PLOTY.GT.519.〕GO    TO    60

IORGIN=2

30    CONTINUE

YORGIN=529.

XORGIN=25.

XINC=25.4/TPI

SIZE=XINC/2.

SIZE1=XINC

YINC=〔SPI*25.4〕/〔NSAMP/TIMEL〕

RETURN

50    WRITE〔6,1000〕L1,TPI,PLOTX

IERROR=1

1000    FORMAT〔10X,‘$$$$$$$$$    ERROR    YOUR    REQUESTED    PLOT    IS    TOO    LARGE

*THE    NUMBER    OF    TRACES    TO    PROCESS’,I10,5X,‘TPI’,F6.3,10X,‘TOTA

*L    LENGTH    IS’,F7.2,‘MM    YOUR    LIMIT    IS    715    MM    $$$$$$’〕

RETURN

60    WRITE〔6,1010〕L1,SPI,PLOTY

IERROR=1

1010    FORMAT〔10X,‘$$$$$$$$$    ERROR    YOUR    REQUESTED    PLOT    IS    TOO    LARGE

*THE    NUMBER    OF    TRACES    TO    PROCESS’,I10,5X,‘IPS’,F6.3,10X,‘TOTA

*L.LENGTH    IS’,F7.2,‘MM    YOUR    LIMIT    IS    519    MM    $$$$$$’〕

RETURN

END

SUBROUTINE    NEWSCL〔ZCLASS,ZMAX〕

DIMENSION    ZCLASS〔1〕

RETURN

END

SUBROUTINE    ENVELP〔PUT,LT,ENV〕

REAL    RST〔4096〕,CST〔4096〕,ENV〔4096〕,PUT〔4096〕

RST    HOLDS    THE    REAL    PART    OF    THE    SEISMIC    TRACE

CST    HOLDS    THE    IMAGINARY〔CONJAGATE〕PART    OF    THE    TRACE

COMPLEX    TRACE〔4096〕

B=0.0

DO    10    J=1,LT

ENV〔J〕=0.0

TRACE〔J〕=CMPLX〔0.0,0.0〕

TRACE〔J〕=CMPLX〔PUT〔J〕,B〕

10    CONTINUE

LH=LT/2

LH1=LH+1

CALL    FFT〔LT,TRACE,-1.0〕

DO    20    I=1,LT

RST〔I〕=REAL〔TRACE〔I〕〕

CST〔I〕=AIMAG〔TRACE〔I〕〕

20    CONTINUE

DO    30    I=2,LH

RST〔I〕=2.0*RST〔I〕

CST〔I〕=2.0*CST〔I〕

30    CONTINUE

DO    40    I=LH1,LT

RST〔I〕=0.0

CST〔I〕=0.0

40    CONTINUE

DO    45    I=1,LT

TRACE〔I〕=CMPLX〔RST〔I〕,CST〔I〕〕

45    CONTINUE

CALL    FFT〔LT,TRACE,1.0〕

DO    47    I=1,LT

RST〔I〕=REAL〔TRACE〔I〕〕

CST〔I〕=AIMAG〔TRACE〔I〕〕

47    CONTINUE

计算相位值

DO    50    I=1,LT

IF〔RST〔I〕.EQ.O.AND.CST〔I〕.EQ.0〕GO    TO    55

ENV〔I〕=ATAN2〔CST〔I〕,RST〔I〕〕

55    IF〔RST〔I〕.EQ.O.AND.CST〔I〕.EQ.0〕ENV〔I〕=0.0

50    CONTINUE

DO    65    I=1,LT

WRITE〔6,60〕RST〔I〕,CST〔I〕,ENV〔I〕,PUT〔I〕

65    CONTINUE

60    FORMAT〔10X,4F10.3〕

RETURN

END

SUBROUTINE    FFT〔LX,CX,SIGNI〕

LX=NUMBER    OF    SAMPLE    POINTS-MUST    BE    A    POWER    OF    2

CX=TNPUT    AND    DUTPUT    DATA

SIGNI IS DESIGNATED IN MAIN PH

GRAM

COMPLEX    CX〔LX〕,CARG,CEXP,CW,CTEMP

J=1

SC=1./FLOAT〔LX〕

DO    30    I=1,LX

IF〔I.GT.J〕GO    TO    10

CTEMP=CX〔J〕

CX〔J〕=CX〔I〕

CX〔I〕=CTEMP

10    M=LX/2

20    IF〔J.LE.M〕GO    TO    30

J=J-M

M=M/2

IF〔M.GE.1〕GO    TO    20

30    J=J+M

L=1

40    ISTEP=2*L

DO    50    M=1,L

CARG=〔0.,1.〕*〔3.14159265*SIGNI*FLOAT〔M-1〕〕/FLOAT〔L〕

CW=CEXP〔CARG〕

DO    50    I=M,LX,ISTEP

CTEMP=CW*CX〔I+L〕

CX〔I+L〕=CX〔I〕-CTEMP

50    CX〔I〕=CX〔I〕+CTEMP

L=ISTEP

IF〔L.LT.LX〕GO    TO    40

IF〔SIGNI.LT.0.0〕RETURN

DO    60    I=1,LX

60    CX〔I〕=CX〔I〕*SC

RETURN

END′

SUBROUTINE    LIMIT

COMMON/CTRL/NX,NY,NTREC,DELT,NT,TPI,SPI,NREC,SCALE,LINC,ZMAX

COMMON/CTRL4/ICDPS,ICDPE,ITST,ITED,NSAMP,ICDPN

ITST=ITST/DELT+1

IF〔ITST.EQ.0〕ITST=1

ITED=ITED/DELT+1

IF〔ITED.EQ.0〕ITED=NT

NSAMP=ITED-ITST+1

WRITE〔6,1000〕ICDPS,ICDPE,ITST,ITED,NSAMP

.000    FORMAT〔//,5I10〕

RETURN

END

SUBROUTINE    TITLE

COMMON/PARM/XORGIN,YORGIN,IORGIN,PLOTX,PLOTY,XINC,YINC,SIZE,SIZE1

COMMON/CTRL3/IOP,IOPT1,IOPT2,IOPT3,IOPT4,IOPT5

INTEGER*2    INOTE〔3〕,ICHK,ISAVE〔39〕,IEND

DATA ICHK/‘ ’/,IEND/‘

’/

绘线名称

XSHIFT=XORGIN+PLOTX+20.

IF〔IOPT4.EQ.1〕XSHIFT=XORGIN-PLOTX-110.

YSHIFT=534.

WRITE〔6,1040〕

谈用户的终止循环信息

READ〔10,1000〕ISIZE,〔IS    ′E〔K〕,K=1,39〕

IF〔ISIZE.EQ.0〕GO    TO    200

找出文本的末端

DO    100    J=1,39

IF〔ISAVE〔J〕.EQ.ICHK〕ICNT=ICNT+1

IF〔ISAVE〔J〕.NE.ICHK〕JCNT=JCNT+1

IF〔ISAVE〔J〕.NE.ICHK〕ICNT=0

100    CONTINUE

C

IADJ=39-ICNT

ICNT=IADJ*2

NCHR=110/ISIZE

打印用户输入

WRITE〔6,1030〕ISIZE,ISAVE

C

IF〔ICNT.GT.NCHR〕GO    TO    800

ISAVE〔IADJ+1〕=IEND

YSHIFT=YSHIFT-2.-ISIZE

SIZE=ISIZE

IF〔IOPT2.EQ.0.AND.YSHIFT.LT.300.〕GO    TO    900

IF〔IOPT2.EQ.1.AND.YSHIFT.LT.25.〕GO    TO    900

CALL    ITEXT〔ISAVE,XSHIFT,YSHIFT,SIZE,0,7〕

GO    TO    10

C

200    WRITE〔6,1010〕

RETURN

800    WRITE〔6,1020〕

RETURN

900    WRITE〔6,1050〕

RETURN

C

1000    FORMAT〔I1,1X,39A2〕

1010    FORMAT〔//,35X,‘***    SIDE    LABEL    SUCCESSFULLY    GENERATED    ***’,////〕

1020    FORMAT〔///,10X,‘$$$    ERROR-YOU    HAVE    ASKED    FOR    TOO    MANY    CHARACTERS

*TO    BE    DISPLAYED    $$$’〕

1030    FORMAT〔31X,I2,10X,39A2〕

1040    FORMAT〔////,35X,‘***    SIDE    LABEL    GENERATION    ***’,/////,28X,‘TEXT

*SIZE’,14X,‘ANNOTATION’,//〕

1050    FORMAT〔///,10X,‘$$$    ERROR-YOU    HAVE    ASKED    FOR    TOO    MANY    LINES    $$$’〕

END

高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用