UNIVERS
15.3
UNIVERS base processing software API
Main Page
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
include
mth
mod1d.h
1
/* mod1d.h */
2
/* $Id: mod1d.h,v 1.7 2009/03/02 08:35:50 vlad Exp $ */
3
#ifndef __mod1d_h
4
#define __mod1d_h
5
6
#include <mix/Types.h>
7
8
9
#ifdef __cplusplus
10
extern
"C"
{
11
#endif
/* C++ */
12
13
14
/**********************************************************************
15
* ФУНКЦИЯ РАСЧЕТА ГЛУБИНЫ ДЛЯ ЗАДАННОГО ВЕРТИКАЛЬНОГО ВРЕМЕНИ ПРОБЕГА *
16
* *
17
* ВХОДНЫЕ ДАННЫЕ : *
18
* H(n) (real*4) - массив кровлей пластов (размерность N) *
19
* V(n) (real*4) - массив скоростей (м c) (размерность N) * * N (integer*4)- количество пластов в модели * * Time (real*4) - время пробега по вертикали, ms * * * * ВЫХОДНЫЕ ДАННЫЕ : * * VERTDEPTH (real*4) - глубина * * * * ПРИМЕЧАНИЕ: ГЛУБИНЫ КРОВЛЕЙ ПЛАСТОВ H(i) ДОЛЖНЫ БЫТЬ * * ОТСОРТИРОВАНЫ ПО ВОЗРАСТАНИЮ И БЫТЬ * * НЕОТРИЦАТЕЛЬНЫМИ, А СКОРОСТИ V(i) ДОЛЖНЫ БЫТЬ * * СТРОГО ПОЛОЖИТЕЛЬНЫМИ * ***********************************************************************/ double Fortran(vertdepth)(float H[], float V[], int*n, float* Time); void Fortran(vertdepthp)(float H[], float V[], int*n, float* Time, float* vd); /********************************************************************** * ФУНКЦИЯ РАСЧЕТА ВЕРТИКАЛЬНОГО ВРЕМЕНИ ПРОБЕГА ДО ЗАДАННОЙ ГЛУБИНЫ * * * * ВХОДНЫЕ ДАННЫЕ : * * H(n) (real*4) - массив кровлей пластов (размерность N) * * V(n) (real*4) - массив скоростей (м/c) (размерность N) * * N (integer*4)- количество пластов в модели * * Depth (real*4) - глубина, до которой расчитывается * * время пробега * * * * ВЫХОДНЫЕ ДАННЫЕ : * * VERTTIME (real*4) - время пробега, ms * * * * ПРИМЕЧАНИЕ: ГЛУБИНЫ КРОВЛЕЙ ПЛАСТОВ H(i) ДОЛЖНЫ БЫТЬ * * ОТСОРТИРОВАНЫ ПО ВОЗРАСТАНИЮ И БЫТЬ * * НЕОТРИЦАТЕЛЬНЫМИ, А СКОРОСТИ V(i) ДОЛЖНЫ БЫТЬ * * СТРОГО ПОЛОЖИТЕЛЬНЫМИ * ***********************************************************************/ double Fortran(verttime)(float H[], float V[], int*n, float* Depth); void Fortran(verttimep)(float H[], float V[], int*n, float* Depth, float* vt); /************************************************************************ * РАСЧЕТ ВРЕМЕНИ И УГЛА ПРИХОДА * * ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * VP(m) real*4 - пластовая скорость P-волны(м/с) * * KP(m) real*4 - коэффициент анизотропии P-волны = Vq/Vp>1 * * Vq - по горизонтали, Vp - по вертикали * * VS(m) real*4 - пластовая скорость S-волны (м/с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * href real*4 - глубина точки отражения (обмена) * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * * * ВЫХОДНЫЕ ДАННЫЕ: * * time real*4 - время прихода волны (сек) * * fiout real*4 - угoл ВЫХОДА луча из пункта взрыва(рад) * * azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) * * fiinp real*4 - угoл ПОДХОДА луча к точке приема(рад) * * azinp real*4 - азимут угла ПОДХОДА луча к точке приема (рад) * * firef real*4 - угoл отражения (обмена) (рад) * * azref real*4 - азимут угла отражения (обмена) (рад) * * xref real*4 - X-координата точки отражения (обмена) * * yref real*4 - Y-координата точки отражения (обмена) * * zref real*4 - Z-координата точки отражения (обмена) * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * ************************************************************************/ void Fortran(raymodeling1d) (float XW[], float YW[], float ZW[], float VP[], float KP[], float VS[], float KS[], int*m, float*fi, float*az, float*xop, float*yop, float*zop, float*xsp, float*ysp, float*zsp, float*href,int*flag, int*ind1, int*ind2, double*eps, float H[], float HD[], float VD[], float*time, float*fiout, float*azout, float*fiinp, float*azinp, float*firef, float*azref, float*xref, float*yref, float*zref); /************************************************************************ * РАСЧЕТ ТОЧКИ ОТРАЖЕНИЯ (ОБМЕНА) * * ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) * * ПО ЗАДАННОМУ ВРЕМЕНИ РЕГИСТРАЦИИ * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * VP(m) real*4 - пластовая скорость P-волны(м/с) * * KP(m) real*4 - коэффициент анизотропии P-волны= Vq/Vp>1 * * VS(m) real*4 - пластовая скорость S-волны (м/с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * time real*4 - время прихода волны (сек) * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * * * ВЫХОДНЫЕ ДАННЫЕ: * * href real*4 - глубина точки отражения (обмена) * * fiout real*4 - угoл ВЫХОДА луча из пункта взрыва(рад) * * azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) * * fiinp real*4 - угoл ПОДХОДА луча к точке приема(рад) * * azinp real*4 - азимут угла ПОДХОДА луча к точке приема (рад) * * firef real*4 - угoл отражения (обмена) (рад) * * azref real*4 - азимут угла отражения (обмена) (рад) * * xref real*4 - X-координата точки отражения (обмена) * * yref real*4 - Y-координата точки отражения (обмена) * * zref real*4 - Z-координата точки отражения (обмена) * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * ************************************************************************/ void Fortran(raydepth1d) (float XW[], float YW[], float ZW[], float VP[], float KP[], float VS[], float KS[], int*m, float*fi, float*az, float*xop, float*yop, float*zop, float*xsp, float*ysp, float*zsp, float*time,int*flag, int*ind1, int*ind2, double*eps, float H[], float HD[], float VD[], float*href, float*fiout, float*azout, float*fiinp, float*azinp, float*firef, float*azref, float*xref, float*yref, float*zref); /************************************************************************ * РАСЧЕТ ВРЕМЕНИ ПРИХОДА ПРЯМОЙ ВОЛНЫ (DP или DS) * * С УЧЕТОМ ГОЛОВНЫХ ВОЛН * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * V(m) real*4 - пластовая скорость (м/с) * * KP(m) real*4 - коэффициент анизотропии = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * * * ВЫХОДНЫЕ ДАННЫЕ: * * time real*4 - время первого вступления (сек) * * fiout real*4 - угол ВЫХОДА луча из пункта взрыва (рад) * * azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(m) real*4 * * VD(m) real*4 * ************************************************************************/ void Fortran(downwave1d) (float XW[], float YW[], float ZW[], float VP[], float KP[], float VS[], float KS[], int*m, float*fi, float*az, float*xop, float*yop, float*zop, float*xsp, float*ysp, float*zsp, double*eps, float H[], float HD[], float VD[], float*time, float*fiout, float*azout); //FIOUT неправильный для головной волны /************************************************************************ * РАСЧЕТ ЛУЧЕВЫХ ПАРАМЕТРОВ ТРАССЫ ДЛЯ * * ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * VP(m) real*4 - пластовая скорость P-волны(м/с) * * KP(m) real*4 - коэффициент анизотропии P-волны= Vq/Vp>1 * * VS(m) real*4 - пластовая скорость S-волны (м/с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * otype integer*4 - тип двойных времен: * * 0 - PP волны, * * 1 - PS волны * * * * ВЫХОДНЫЕ ДАННЫЕ: * * Tfb real*4 - двойное время для первого вступления * * Time1x(nsamp) real*4 - массив исходных времен * * Time2x(nsamp) real*4 - массив двойных времен * * FiW(nsamp) real*4 - массив углов подхода волны * * AzW(nsamp) real*4 - массив азимутов подхода волны * * npoint integer*4 - число рассчитанных параметров * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * * ПРИМЕЧАНИЕ: * * nsamp - размерность выходных массивов (объем выделенной памяти), * * nsamp = число слоев модели + 11 точек (одна точка сразу * * за первым вступлением, а 10 - через 500м - ниже * * последнего слоя модели) * ************************************************************************/ void Fortran(rayparam4trace) (float*, float*, float*, float*, float*, float*, float*, int*, float*, float*, float*, float*, float*, float*, float*, float*, int*,int*,int*,double*, int*, float*, float*, float*, float*,float*, float*, float*, float*, int*); /************************************************************************ * РАЗВОРОТ В СЛЕДЯЩУЮ КОМПОНЕНТУ * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TX(n) real*4 - трасса X-компоненты * * TY(n) real*4 - трасса Y-компоненты * * TZ(n) real*4 - трасса Z-компоненты * * n integer*4 - количество отсчетов трассы * * dt real*4 - кшаг дискретизации (мс) * * TimeW(m)real*4 - массив времен * * FiW(m) real*4 - массив углов подхода волны * * AzW(m) real*4 - массив азимутов подхода волны * * m integer*4 - число рассчитанных параметров * * idir integer*4 - направление преобразования * * 0 - прямое XYZ->P, * * 1 - обратное P->XYZ * * отражению(обмену) волны от слоев модели * * ind integer*4 - тип волны следящей компоненты * * (0 - P-тип, 1 - S-тип) * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса следящей компоненты * ************************************************************************/ void Fortran(followcomp) (float*,float*,float*,int*,float*, float*,float*,float*,int*,int*,int*,float*); /************************************************************************ * ПРЕОБРАЗОВАНИЕ ВРЕМЕН * * (ВЫВОД НА ВЕРТИКАЛЬ И ВОЗВРАТ ОБРАТНО) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TI(n) real*4 - входная трасса * * ni integer*4 - количество отсчетов исходной трассы * * dt real*4 - шаг дискретизации (мс) * * TimeI(m)real*4 - массив исходных времен * * TimeO(m)real*4 - массив новых времен * * m integer*4 - число рассчитанных параметров * * no integer*4 - количество отсчетов новой трассы * * * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса после преобразования * ************************************************************************/ void Fortran(timetrans) (float*,int*,float*,float*,float*,int*,int*,float*); #ifdef __cplusplus }; #endif /* C++ */ #endif /* mod1d.h */ /c) (размерность N) *
20
* N (integer*4)- количество пластов в модели *
21
* Time (real*4) - время пробега по вертикали, ms *
22
* *
23
* ВЫХОДНЫЕ ДАННЫЕ : *
24
* VERTDEPTH (real*4) - глубина *
25
* *
26
* ПРИМЕЧАНИЕ: ГЛУБИНЫ КРОВЛЕЙ ПЛАСТОВ H(i) ДОЛЖНЫ БЫТЬ *
27
* ОТСОРТИРОВАНЫ ПО ВОЗРАСТАНИЮ И БЫТЬ *
28
* НЕОТРИЦАТЕЛЬНЫМИ, А СКОРОСТИ V(i) ДОЛЖНЫ БЫТЬ *
29
* СТРОГО ПОЛОЖИТЕЛЬНЫМИ *
30
***********************************************************************/
31
double
Fortran(vertdepth)(
float
H[],
float
V[],
int
*n,
float
* Time);
32
void
Fortran(vertdepthp)(
float
H[],
float
V[],
int
*n,
float
* Time,
float
* vd);
33
34
35
/**********************************************************************
36
* ФУНКЦИЯ РАСЧЕТА ВЕРТИКАЛЬНОГО ВРЕМЕНИ ПРОБЕГА ДО ЗАДАННОЙ ГЛУБИНЫ *
37
* *
38
* ВХОДНЫЕ ДАННЫЕ : *
39
* H(n) (real*4) - массив кровлей пластов (размерность N) *
40
* V(n) (real*4) - массив скоростей (м c) (размерность N) * * N (integer*4)- количество пластов в модели * * Depth (real*4) - глубина, до которой расчитывается * * время пробега * * * * ВЫХОДНЫЕ ДАННЫЕ : * * VERTTIME (real*4) - время пробега, ms * * * * ПРИМЕЧАНИЕ: ГЛУБИНЫ КРОВЛЕЙ ПЛАСТОВ H(i) ДОЛЖНЫ БЫТЬ * * ОТСОРТИРОВАНЫ ПО ВОЗРАСТАНИЮ И БЫТЬ * * НЕОТРИЦАТЕЛЬНЫМИ, А СКОРОСТИ V(i) ДОЛЖНЫ БЫТЬ * * СТРОГО ПОЛОЖИТЕЛЬНЫМИ * ***********************************************************************/ double Fortran(verttime)(float H[], float V[], int*n, float* Depth); void Fortran(verttimep)(float H[], float V[], int*n, float* Depth, float* vt); /************************************************************************ * РАСЧЕТ ВРЕМЕНИ И УГЛА ПРИХОДА * * ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * VP(m) real*4 - пластовая скорость P-волны(м/с) * * KP(m) real*4 - коэффициент анизотропии P-волны = Vq/Vp>1 * * Vq - по горизонтали, Vp - по вертикали * * VS(m) real*4 - пластовая скорость S-волны (м/с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * href real*4 - глубина точки отражения (обмена) * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * * * ВЫХОДНЫЕ ДАННЫЕ: * * time real*4 - время прихода волны (сек) * * fiout real*4 - угoл ВЫХОДА луча из пункта взрыва(рад) * * azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) * * fiinp real*4 - угoл ПОДХОДА луча к точке приема(рад) * * azinp real*4 - азимут угла ПОДХОДА луча к точке приема (рад) * * firef real*4 - угoл отражения (обмена) (рад) * * azref real*4 - азимут угла отражения (обмена) (рад) * * xref real*4 - X-координата точки отражения (обмена) * * yref real*4 - Y-координата точки отражения (обмена) * * zref real*4 - Z-координата точки отражения (обмена) * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * ************************************************************************/ void Fortran(raymodeling1d) (float XW[], float YW[], float ZW[], float VP[], float KP[], float VS[], float KS[], int*m, float*fi, float*az, float*xop, float*yop, float*zop, float*xsp, float*ysp, float*zsp, float*href,int*flag, int*ind1, int*ind2, double*eps, float H[], float HD[], float VD[], float*time, float*fiout, float*azout, float*fiinp, float*azinp, float*firef, float*azref, float*xref, float*yref, float*zref); /************************************************************************ * РАСЧЕТ ТОЧКИ ОТРАЖЕНИЯ (ОБМЕНА) * * ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) * * ПО ЗАДАННОМУ ВРЕМЕНИ РЕГИСТРАЦИИ * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * VP(m) real*4 - пластовая скорость P-волны(м/с) * * KP(m) real*4 - коэффициент анизотропии P-волны= Vq/Vp>1 * * VS(m) real*4 - пластовая скорость S-волны (м/с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * time real*4 - время прихода волны (сек) * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * * * ВЫХОДНЫЕ ДАННЫЕ: * * href real*4 - глубина точки отражения (обмена) * * fiout real*4 - угoл ВЫХОДА луча из пункта взрыва(рад) * * azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) * * fiinp real*4 - угoл ПОДХОДА луча к точке приема(рад) * * azinp real*4 - азимут угла ПОДХОДА луча к точке приема (рад) * * firef real*4 - угoл отражения (обмена) (рад) * * azref real*4 - азимут угла отражения (обмена) (рад) * * xref real*4 - X-координата точки отражения (обмена) * * yref real*4 - Y-координата точки отражения (обмена) * * zref real*4 - Z-координата точки отражения (обмена) * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * ************************************************************************/ void Fortran(raydepth1d) (float XW[], float YW[], float ZW[], float VP[], float KP[], float VS[], float KS[], int*m, float*fi, float*az, float*xop, float*yop, float*zop, float*xsp, float*ysp, float*zsp, float*time,int*flag, int*ind1, int*ind2, double*eps, float H[], float HD[], float VD[], float*href, float*fiout, float*azout, float*fiinp, float*azinp, float*firef, float*azref, float*xref, float*yref, float*zref); /************************************************************************ * РАСЧЕТ ВРЕМЕНИ ПРИХОДА ПРЯМОЙ ВОЛНЫ (DP или DS) * * С УЧЕТОМ ГОЛОВНЫХ ВОЛН * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * V(m) real*4 - пластовая скорость (м/с) * * KP(m) real*4 - коэффициент анизотропии = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * * * ВЫХОДНЫЕ ДАННЫЕ: * * time real*4 - время первого вступления (сек) * * fiout real*4 - угол ВЫХОДА луча из пункта взрыва (рад) * * azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(m) real*4 * * VD(m) real*4 * ************************************************************************/ void Fortran(downwave1d) (float XW[], float YW[], float ZW[], float VP[], float KP[], float VS[], float KS[], int*m, float*fi, float*az, float*xop, float*yop, float*zop, float*xsp, float*ysp, float*zsp, double*eps, float H[], float HD[], float VD[], float*time, float*fiout, float*azout); //FIOUT неправильный для головной волны /************************************************************************ * РАСЧЕТ ЛУЧЕВЫХ ПАРАМЕТРОВ ТРАССЫ ДЛЯ * * ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * VP(m) real*4 - пластовая скорость P-волны(м/с) * * KP(m) real*4 - коэффициент анизотропии P-волны= Vq/Vp>1 * * VS(m) real*4 - пластовая скорость S-волны (м/с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * otype integer*4 - тип двойных времен: * * 0 - PP волны, * * 1 - PS волны * * * * ВЫХОДНЫЕ ДАННЫЕ: * * Tfb real*4 - двойное время для первого вступления * * Time1x(nsamp) real*4 - массив исходных времен * * Time2x(nsamp) real*4 - массив двойных времен * * FiW(nsamp) real*4 - массив углов подхода волны * * AzW(nsamp) real*4 - массив азимутов подхода волны * * npoint integer*4 - число рассчитанных параметров * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * * ПРИМЕЧАНИЕ: * * nsamp - размерность выходных массивов (объем выделенной памяти), * * nsamp = число слоев модели + 11 точек (одна точка сразу * * за первым вступлением, а 10 - через 500м - ниже * * последнего слоя модели) * ************************************************************************/ void Fortran(rayparam4trace) (float*, float*, float*, float*, float*, float*, float*, int*, float*, float*, float*, float*, float*, float*, float*, float*, int*,int*,int*,double*, int*, float*, float*, float*, float*,float*, float*, float*, float*, int*); /************************************************************************ * РАЗВОРОТ В СЛЕДЯЩУЮ КОМПОНЕНТУ * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TX(n) real*4 - трасса X-компоненты * * TY(n) real*4 - трасса Y-компоненты * * TZ(n) real*4 - трасса Z-компоненты * * n integer*4 - количество отсчетов трассы * * dt real*4 - кшаг дискретизации (мс) * * TimeW(m)real*4 - массив времен * * FiW(m) real*4 - массив углов подхода волны * * AzW(m) real*4 - массив азимутов подхода волны * * m integer*4 - число рассчитанных параметров * * idir integer*4 - направление преобразования * * 0 - прямое XYZ->P, * * 1 - обратное P->XYZ * * отражению(обмену) волны от слоев модели * * ind integer*4 - тип волны следящей компоненты * * (0 - P-тип, 1 - S-тип) * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса следящей компоненты * ************************************************************************/ void Fortran(followcomp) (float*,float*,float*,int*,float*, float*,float*,float*,int*,int*,int*,float*); /************************************************************************ * ПРЕОБРАЗОВАНИЕ ВРЕМЕН * * (ВЫВОД НА ВЕРТИКАЛЬ И ВОЗВРАТ ОБРАТНО) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TI(n) real*4 - входная трасса * * ni integer*4 - количество отсчетов исходной трассы * * dt real*4 - шаг дискретизации (мс) * * TimeI(m)real*4 - массив исходных времен * * TimeO(m)real*4 - массив новых времен * * m integer*4 - число рассчитанных параметров * * no integer*4 - количество отсчетов новой трассы * * * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса после преобразования * ************************************************************************/ void Fortran(timetrans) (float*,int*,float*,float*,float*,int*,int*,float*); #ifdef __cplusplus }; #endif /* C++ */ #endif /* mod1d.h */ /c) (размерность N) *
41
* N (integer*4)- количество пластов в модели *
42
* Depth (real*4) - глубина, до которой расчитывается *
43
* время пробега *
44
* *
45
* ВЫХОДНЫЕ ДАННЫЕ : *
46
* VERTTIME (real*4) - время пробега, ms *
47
* *
48
* ПРИМЕЧАНИЕ: ГЛУБИНЫ КРОВЛЕЙ ПЛАСТОВ H(i) ДОЛЖНЫ БЫТЬ *
49
* ОТСОРТИРОВАНЫ ПО ВОЗРАСТАНИЮ И БЫТЬ *
50
* НЕОТРИЦАТЕЛЬНЫМИ, А СКОРОСТИ V(i) ДОЛЖНЫ БЫТЬ *
51
* СТРОГО ПОЛОЖИТЕЛЬНЫМИ *
52
***********************************************************************/
53
double
Fortran(verttime)(
float
H[],
float
V[],
int
*n,
float
* Depth);
54
void
Fortran(verttimep)(
float
H[],
float
V[],
int
*n,
float
* Depth,
float
* vt);
55
56
57
/************************************************************************
58
* РАСЧЕТ ВРЕМЕНИ И УГЛА ПРИХОДА *
59
* ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) *
60
* В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ *
61
* *
62
* ВХОДНЫЕ ДАННЫЕ: *
63
* XW(m) real*4 - X-координата кровли пласта (м) *
64
* YW(m) real*4 - Y-координата кровли пласта (м) *
65
* ZW(m) real*4 - Z-координата кровли пласта (м) *
66
* VP(m) real*4 - пластовая скорость P-волны(м/с) *
67
* KP(m) real*4 - коэффициент анизотропии P-волны = Vq/Vp>1 *
68
* Vq - по горизонтали, Vp - по вертикали *
69
* VS(m) real*4 - пластовая скорость S-волны (м с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * href real*4 - глубина точки отражения (обмена) * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * * * ВЫХОДНЫЕ ДАННЫЕ: * * time real*4 - время прихода волны (сек) * * fiout real*4 - угoл ВЫХОДА луча из пункта взрыва(рад) * * azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) * * fiinp real*4 - угoл ПОДХОДА луча к точке приема(рад) * * azinp real*4 - азимут угла ПОДХОДА луча к точке приема (рад) * * firef real*4 - угoл отражения (обмена) (рад) * * azref real*4 - азимут угла отражения (обмена) (рад) * * xref real*4 - X-координата точки отражения (обмена) * * yref real*4 - Y-координата точки отражения (обмена) * * zref real*4 - Z-координата точки отражения (обмена) * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * ************************************************************************/ void Fortran(raymodeling1d) (float XW[], float YW[], float ZW[], float VP[], float KP[], float VS[], float KS[], int*m, float*fi, float*az, float*xop, float*yop, float*zop, float*xsp, float*ysp, float*zsp, float*href,int*flag, int*ind1, int*ind2, double*eps, float H[], float HD[], float VD[], float*time, float*fiout, float*azout, float*fiinp, float*azinp, float*firef, float*azref, float*xref, float*yref, float*zref); /************************************************************************ * РАСЧЕТ ТОЧКИ ОТРАЖЕНИЯ (ОБМЕНА) * * ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) * * ПО ЗАДАННОМУ ВРЕМЕНИ РЕГИСТРАЦИИ * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * VP(m) real*4 - пластовая скорость P-волны(м/с) * * KP(m) real*4 - коэффициент анизотропии P-волны= Vq/Vp>1 * * VS(m) real*4 - пластовая скорость S-волны (м/с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * time real*4 - время прихода волны (сек) * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * * * ВЫХОДНЫЕ ДАННЫЕ: * * href real*4 - глубина точки отражения (обмена) * * fiout real*4 - угoл ВЫХОДА луча из пункта взрыва(рад) * * azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) * * fiinp real*4 - угoл ПОДХОДА луча к точке приема(рад) * * azinp real*4 - азимут угла ПОДХОДА луча к точке приема (рад) * * firef real*4 - угoл отражения (обмена) (рад) * * azref real*4 - азимут угла отражения (обмена) (рад) * * xref real*4 - X-координата точки отражения (обмена) * * yref real*4 - Y-координата точки отражения (обмена) * * zref real*4 - Z-координата точки отражения (обмена) * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * ************************************************************************/ void Fortran(raydepth1d) (float XW[], float YW[], float ZW[], float VP[], float KP[], float VS[], float KS[], int*m, float*fi, float*az, float*xop, float*yop, float*zop, float*xsp, float*ysp, float*zsp, float*time,int*flag, int*ind1, int*ind2, double*eps, float H[], float HD[], float VD[], float*href, float*fiout, float*azout, float*fiinp, float*azinp, float*firef, float*azref, float*xref, float*yref, float*zref); /************************************************************************ * РАСЧЕТ ВРЕМЕНИ ПРИХОДА ПРЯМОЙ ВОЛНЫ (DP или DS) * * С УЧЕТОМ ГОЛОВНЫХ ВОЛН * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * V(m) real*4 - пластовая скорость (м/с) * * KP(m) real*4 - коэффициент анизотропии = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * * * ВЫХОДНЫЕ ДАННЫЕ: * * time real*4 - время первого вступления (сек) * * fiout real*4 - угол ВЫХОДА луча из пункта взрыва (рад) * * azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(m) real*4 * * VD(m) real*4 * ************************************************************************/ void Fortran(downwave1d) (float XW[], float YW[], float ZW[], float VP[], float KP[], float VS[], float KS[], int*m, float*fi, float*az, float*xop, float*yop, float*zop, float*xsp, float*ysp, float*zsp, double*eps, float H[], float HD[], float VD[], float*time, float*fiout, float*azout); //FIOUT неправильный для головной волны /************************************************************************ * РАСЧЕТ ЛУЧЕВЫХ ПАРАМЕТРОВ ТРАССЫ ДЛЯ * * ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * VP(m) real*4 - пластовая скорость P-волны(м/с) * * KP(m) real*4 - коэффициент анизотропии P-волны= Vq/Vp>1 * * VS(m) real*4 - пластовая скорость S-волны (м/с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * otype integer*4 - тип двойных времен: * * 0 - PP волны, * * 1 - PS волны * * * * ВЫХОДНЫЕ ДАННЫЕ: * * Tfb real*4 - двойное время для первого вступления * * Time1x(nsamp) real*4 - массив исходных времен * * Time2x(nsamp) real*4 - массив двойных времен * * FiW(nsamp) real*4 - массив углов подхода волны * * AzW(nsamp) real*4 - массив азимутов подхода волны * * npoint integer*4 - число рассчитанных параметров * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * * ПРИМЕЧАНИЕ: * * nsamp - размерность выходных массивов (объем выделенной памяти), * * nsamp = число слоев модели + 11 точек (одна точка сразу * * за первым вступлением, а 10 - через 500м - ниже * * последнего слоя модели) * ************************************************************************/ void Fortran(rayparam4trace) (float*, float*, float*, float*, float*, float*, float*, int*, float*, float*, float*, float*, float*, float*, float*, float*, int*,int*,int*,double*, int*, float*, float*, float*, float*,float*, float*, float*, float*, int*); /************************************************************************ * РАЗВОРОТ В СЛЕДЯЩУЮ КОМПОНЕНТУ * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TX(n) real*4 - трасса X-компоненты * * TY(n) real*4 - трасса Y-компоненты * * TZ(n) real*4 - трасса Z-компоненты * * n integer*4 - количество отсчетов трассы * * dt real*4 - кшаг дискретизации (мс) * * TimeW(m)real*4 - массив времен * * FiW(m) real*4 - массив углов подхода волны * * AzW(m) real*4 - массив азимутов подхода волны * * m integer*4 - число рассчитанных параметров * * idir integer*4 - направление преобразования * * 0 - прямое XYZ->P, * * 1 - обратное P->XYZ * * отражению(обмену) волны от слоев модели * * ind integer*4 - тип волны следящей компоненты * * (0 - P-тип, 1 - S-тип) * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса следящей компоненты * ************************************************************************/ void Fortran(followcomp) (float*,float*,float*,int*,float*, float*,float*,float*,int*,int*,int*,float*); /************************************************************************ * ПРЕОБРАЗОВАНИЕ ВРЕМЕН * * (ВЫВОД НА ВЕРТИКАЛЬ И ВОЗВРАТ ОБРАТНО) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TI(n) real*4 - входная трасса * * ni integer*4 - количество отсчетов исходной трассы * * dt real*4 - шаг дискретизации (мс) * * TimeI(m)real*4 - массив исходных времен * * TimeO(m)real*4 - массив новых времен * * m integer*4 - число рассчитанных параметров * * no integer*4 - количество отсчетов новой трассы * * * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса после преобразования * ************************************************************************/ void Fortran(timetrans) (float*,int*,float*,float*,float*,int*,int*,float*); #ifdef __cplusplus }; #endif /* C++ */ #endif /* mod1d.h */ /с) *
70
* KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 *
71
* m integer*4 - количество слоев модели *
72
* fi real*4 - угол падения пластов модели (рад) *
73
* az real*4 - азимут падения пластов модели (рад) *
74
* xop real*4 - X-координата пункта приема *
75
* yop real*4 - Y-координата пункта приема *
76
* zop real*4 - Z-координата пункта приема *
77
* xsp real*4 - X-координата пункта взрыва *
78
* ysp real*4 - Y-координата пункта взрыва *
79
* zsp real*4 - Z-координата пункта взрыва *
80
* href real*4 - глубина точки отражения (обмена) *
81
* flag integer*4 - индикатор (0 - падающая, 1 - отраженная) *
82
* ind1 integer*4 - тип волны на первом участке *
83
* (0 - P-тип, 1 - S-тип) *
84
* ind2 integer*4 - тип волны на втором участке *
85
* (0 - P-тип, 1 - S-тип) *
86
* eps real*8 - точность расчета лучевого параметра *
87
* рекомендуется eps=1.D-15 *
88
* *
89
* ВЫХОДНЫЕ ДАННЫЕ: *
90
* time real*4 - время прихода волны (сек) *
91
* fiout real*4 - угoл ВЫХОДА луча из пункта взрыва(рад) *
92
* azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) *
93
* fiinp real*4 - угoл ПОДХОДА луча к точке приема(рад) *
94
* azinp real*4 - азимут угла ПОДХОДА луча к точке приема (рад) *
95
* firef real*4 - угoл отражения (обмена) (рад) *
96
* azref real*4 - азимут угла отражения (обмена) (рад) *
97
* xref real*4 - X-координата точки отражения (обмена) *
98
* yref real*4 - Y-координата точки отражения (обмена) *
99
* zref real*4 - Z-координата точки отражения (обмена) *
100
* *
101
* РАБОЧИЕ МАССИВЫ: *
102
* H(m) real*4 *
103
* HD(2*m) real*4 *
104
* VD(2*m) real*4 *
105
************************************************************************/
106
void
Fortran(raymodeling1d)
107
(
float
XW[],
float
YW[],
float
ZW[],
108
float
VP[],
float
KP[],
float
VS[],
109
float
KS[],
int
*m,
float
*fi,
float
*az,
110
float
*xop,
float
*yop,
float
*zop,
111
float
*xsp,
float
*ysp,
float
*zsp,
112
float
*href,
int
*flag,
int
*ind1,
int
*ind2,
double
*eps,
113
float
H[],
float
HD[],
float
VD[],
114
float
*time,
115
float
*fiout,
float
*azout,
116
float
*fiinp,
float
*azinp,
117
float
*firef,
float
*azref,
118
float
*xref,
float
*yref,
float
*zref);
119
120
/************************************************************************
121
* РАСЧЕТ ТОЧКИ ОТРАЖЕНИЯ (ОБМЕНА) *
122
* ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) *
123
* ПО ЗАДАННОМУ ВРЕМЕНИ РЕГИСТРАЦИИ *
124
* В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ *
125
* *
126
* ВХОДНЫЕ ДАННЫЕ: *
127
* XW(m) real*4 - X-координата кровли пласта (м) *
128
* YW(m) real*4 - Y-координата кровли пласта (м) *
129
* ZW(m) real*4 - Z-координата кровли пласта (м) *
130
* VP(m) real*4 - пластовая скорость P-волны(м/с) *
131
* KP(m) real*4 - коэффициент анизотропии P-волны= Vq/Vp>1 *
132
* VS(m) real*4 - пластовая скорость S-волны (м с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * time real*4 - время прихода волны (сек) * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * * * ВЫХОДНЫЕ ДАННЫЕ: * * href real*4 - глубина точки отражения (обмена) * * fiout real*4 - угoл ВЫХОДА луча из пункта взрыва(рад) * * azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) * * fiinp real*4 - угoл ПОДХОДА луча к точке приема(рад) * * azinp real*4 - азимут угла ПОДХОДА луча к точке приема (рад) * * firef real*4 - угoл отражения (обмена) (рад) * * azref real*4 - азимут угла отражения (обмена) (рад) * * xref real*4 - X-координата точки отражения (обмена) * * yref real*4 - Y-координата точки отражения (обмена) * * zref real*4 - Z-координата точки отражения (обмена) * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * ************************************************************************/ void Fortran(raydepth1d) (float XW[], float YW[], float ZW[], float VP[], float KP[], float VS[], float KS[], int*m, float*fi, float*az, float*xop, float*yop, float*zop, float*xsp, float*ysp, float*zsp, float*time,int*flag, int*ind1, int*ind2, double*eps, float H[], float HD[], float VD[], float*href, float*fiout, float*azout, float*fiinp, float*azinp, float*firef, float*azref, float*xref, float*yref, float*zref); /************************************************************************ * РАСЧЕТ ВРЕМЕНИ ПРИХОДА ПРЯМОЙ ВОЛНЫ (DP или DS) * * С УЧЕТОМ ГОЛОВНЫХ ВОЛН * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * V(m) real*4 - пластовая скорость (м/с) * * KP(m) real*4 - коэффициент анизотропии = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * * * ВЫХОДНЫЕ ДАННЫЕ: * * time real*4 - время первого вступления (сек) * * fiout real*4 - угол ВЫХОДА луча из пункта взрыва (рад) * * azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(m) real*4 * * VD(m) real*4 * ************************************************************************/ void Fortran(downwave1d) (float XW[], float YW[], float ZW[], float VP[], float KP[], float VS[], float KS[], int*m, float*fi, float*az, float*xop, float*yop, float*zop, float*xsp, float*ysp, float*zsp, double*eps, float H[], float HD[], float VD[], float*time, float*fiout, float*azout); //FIOUT неправильный для головной волны /************************************************************************ * РАСЧЕТ ЛУЧЕВЫХ ПАРАМЕТРОВ ТРАССЫ ДЛЯ * * ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * VP(m) real*4 - пластовая скорость P-волны(м/с) * * KP(m) real*4 - коэффициент анизотропии P-волны= Vq/Vp>1 * * VS(m) real*4 - пластовая скорость S-волны (м/с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * otype integer*4 - тип двойных времен: * * 0 - PP волны, * * 1 - PS волны * * * * ВЫХОДНЫЕ ДАННЫЕ: * * Tfb real*4 - двойное время для первого вступления * * Time1x(nsamp) real*4 - массив исходных времен * * Time2x(nsamp) real*4 - массив двойных времен * * FiW(nsamp) real*4 - массив углов подхода волны * * AzW(nsamp) real*4 - массив азимутов подхода волны * * npoint integer*4 - число рассчитанных параметров * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * * ПРИМЕЧАНИЕ: * * nsamp - размерность выходных массивов (объем выделенной памяти), * * nsamp = число слоев модели + 11 точек (одна точка сразу * * за первым вступлением, а 10 - через 500м - ниже * * последнего слоя модели) * ************************************************************************/ void Fortran(rayparam4trace) (float*, float*, float*, float*, float*, float*, float*, int*, float*, float*, float*, float*, float*, float*, float*, float*, int*,int*,int*,double*, int*, float*, float*, float*, float*,float*, float*, float*, float*, int*); /************************************************************************ * РАЗВОРОТ В СЛЕДЯЩУЮ КОМПОНЕНТУ * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TX(n) real*4 - трасса X-компоненты * * TY(n) real*4 - трасса Y-компоненты * * TZ(n) real*4 - трасса Z-компоненты * * n integer*4 - количество отсчетов трассы * * dt real*4 - кшаг дискретизации (мс) * * TimeW(m)real*4 - массив времен * * FiW(m) real*4 - массив углов подхода волны * * AzW(m) real*4 - массив азимутов подхода волны * * m integer*4 - число рассчитанных параметров * * idir integer*4 - направление преобразования * * 0 - прямое XYZ->P, * * 1 - обратное P->XYZ * * отражению(обмену) волны от слоев модели * * ind integer*4 - тип волны следящей компоненты * * (0 - P-тип, 1 - S-тип) * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса следящей компоненты * ************************************************************************/ void Fortran(followcomp) (float*,float*,float*,int*,float*, float*,float*,float*,int*,int*,int*,float*); /************************************************************************ * ПРЕОБРАЗОВАНИЕ ВРЕМЕН * * (ВЫВОД НА ВЕРТИКАЛЬ И ВОЗВРАТ ОБРАТНО) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TI(n) real*4 - входная трасса * * ni integer*4 - количество отсчетов исходной трассы * * dt real*4 - шаг дискретизации (мс) * * TimeI(m)real*4 - массив исходных времен * * TimeO(m)real*4 - массив новых времен * * m integer*4 - число рассчитанных параметров * * no integer*4 - количество отсчетов новой трассы * * * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса после преобразования * ************************************************************************/ void Fortran(timetrans) (float*,int*,float*,float*,float*,int*,int*,float*); #ifdef __cplusplus }; #endif /* C++ */ #endif /* mod1d.h */ /с) *
133
* KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 *
134
* m integer*4 - количество слоев модели *
135
* fi real*4 - угол падения пластов модели (рад) *
136
* az real*4 - азимут падения пластов модели (рад) *
137
* xop real*4 - X-координата пункта приема *
138
* yop real*4 - Y-координата пункта приема *
139
* zop real*4 - Z-координата пункта приема *
140
* xsp real*4 - X-координата пункта взрыва *
141
* ysp real*4 - Y-координата пункта взрыва *
142
* zsp real*4 - Z-координата пункта взрыва *
143
* time real*4 - время прихода волны (сек) *
144
* flag integer*4 - индикатор (0 - падающая, 1 - отраженная) *
145
* ind1 integer*4 - тип волны на первом участке *
146
* (0 - P-тип, 1 - S-тип) *
147
* ind2 integer*4 - тип волны на втором участке *
148
* (0 - P-тип, 1 - S-тип) *
149
* eps real*8 - точность расчета лучевого параметра *
150
* рекомендуется eps=1.D-15 *
151
* *
152
* ВЫХОДНЫЕ ДАННЫЕ: *
153
* href real*4 - глубина точки отражения (обмена) *
154
* fiout real*4 - угoл ВЫХОДА луча из пункта взрыва(рад) *
155
* azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) *
156
* fiinp real*4 - угoл ПОДХОДА луча к точке приема(рад) *
157
* azinp real*4 - азимут угла ПОДХОДА луча к точке приема (рад) *
158
* firef real*4 - угoл отражения (обмена) (рад) *
159
* azref real*4 - азимут угла отражения (обмена) (рад) *
160
* xref real*4 - X-координата точки отражения (обмена) *
161
* yref real*4 - Y-координата точки отражения (обмена) *
162
* zref real*4 - Z-координата точки отражения (обмена) *
163
* *
164
* РАБОЧИЕ МАССИВЫ: *
165
* H(m) real*4 *
166
* HD(2*m) real*4 *
167
* VD(2*m) real*4 *
168
************************************************************************/
169
void
Fortran(raydepth1d)
170
(
float
XW[],
float
YW[],
float
ZW[],
171
float
VP[],
float
KP[],
float
VS[],
172
float
KS[],
int
*m,
float
*fi,
float
*az,
173
float
*xop,
float
*yop,
float
*zop,
174
float
*xsp,
float
*ysp,
float
*zsp,
175
float
*time,
int
*flag,
int
*ind1,
int
*ind2,
double
*eps,
176
float
H[],
float
HD[],
float
VD[],
177
float
*href,
178
float
*fiout,
float
*azout,
179
float
*fiinp,
float
*azinp,
180
float
*firef,
float
*azref,
181
float
*xref,
float
*yref,
float
*zref);
182
183
/************************************************************************
184
* РАСЧЕТ ВРЕМЕНИ ПРИХОДА ПРЯМОЙ ВОЛНЫ (DP или DS) *
185
* С УЧЕТОМ ГОЛОВНЫХ ВОЛН *
186
* В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ *
187
* *
188
* ВХОДНЫЕ ДАННЫЕ: *
189
* XW(m) real*4 - X-координата кровли пласта (м) *
190
* YW(m) real*4 - Y-координата кровли пласта (м) *
191
* ZW(m) real*4 - Z-координата кровли пласта (м) *
192
* V(m) real*4 - пластовая скорость (м с) * * KP(m) real*4 - коэффициент анизотропии = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * * * ВЫХОДНЫЕ ДАННЫЕ: * * time real*4 - время первого вступления (сек) * * fiout real*4 - угол ВЫХОДА луча из пункта взрыва (рад) * * azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(m) real*4 * * VD(m) real*4 * ************************************************************************/ void Fortran(downwave1d) (float XW[], float YW[], float ZW[], float VP[], float KP[], float VS[], float KS[], int*m, float*fi, float*az, float*xop, float*yop, float*zop, float*xsp, float*ysp, float*zsp, double*eps, float H[], float HD[], float VD[], float*time, float*fiout, float*azout); //FIOUT неправильный для головной волны /************************************************************************ * РАСЧЕТ ЛУЧЕВЫХ ПАРАМЕТРОВ ТРАССЫ ДЛЯ * * ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * VP(m) real*4 - пластовая скорость P-волны(м/с) * * KP(m) real*4 - коэффициент анизотропии P-волны= Vq/Vp>1 * * VS(m) real*4 - пластовая скорость S-волны (м/с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * otype integer*4 - тип двойных времен: * * 0 - PP волны, * * 1 - PS волны * * * * ВЫХОДНЫЕ ДАННЫЕ: * * Tfb real*4 - двойное время для первого вступления * * Time1x(nsamp) real*4 - массив исходных времен * * Time2x(nsamp) real*4 - массив двойных времен * * FiW(nsamp) real*4 - массив углов подхода волны * * AzW(nsamp) real*4 - массив азимутов подхода волны * * npoint integer*4 - число рассчитанных параметров * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * * ПРИМЕЧАНИЕ: * * nsamp - размерность выходных массивов (объем выделенной памяти), * * nsamp = число слоев модели + 11 точек (одна точка сразу * * за первым вступлением, а 10 - через 500м - ниже * * последнего слоя модели) * ************************************************************************/ void Fortran(rayparam4trace) (float*, float*, float*, float*, float*, float*, float*, int*, float*, float*, float*, float*, float*, float*, float*, float*, int*,int*,int*,double*, int*, float*, float*, float*, float*,float*, float*, float*, float*, int*); /************************************************************************ * РАЗВОРОТ В СЛЕДЯЩУЮ КОМПОНЕНТУ * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TX(n) real*4 - трасса X-компоненты * * TY(n) real*4 - трасса Y-компоненты * * TZ(n) real*4 - трасса Z-компоненты * * n integer*4 - количество отсчетов трассы * * dt real*4 - кшаг дискретизации (мс) * * TimeW(m)real*4 - массив времен * * FiW(m) real*4 - массив углов подхода волны * * AzW(m) real*4 - массив азимутов подхода волны * * m integer*4 - число рассчитанных параметров * * idir integer*4 - направление преобразования * * 0 - прямое XYZ->P, * * 1 - обратное P->XYZ * * отражению(обмену) волны от слоев модели * * ind integer*4 - тип волны следящей компоненты * * (0 - P-тип, 1 - S-тип) * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса следящей компоненты * ************************************************************************/ void Fortran(followcomp) (float*,float*,float*,int*,float*, float*,float*,float*,int*,int*,int*,float*); /************************************************************************ * ПРЕОБРАЗОВАНИЕ ВРЕМЕН * * (ВЫВОД НА ВЕРТИКАЛЬ И ВОЗВРАТ ОБРАТНО) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TI(n) real*4 - входная трасса * * ni integer*4 - количество отсчетов исходной трассы * * dt real*4 - шаг дискретизации (мс) * * TimeI(m)real*4 - массив исходных времен * * TimeO(m)real*4 - массив новых времен * * m integer*4 - число рассчитанных параметров * * no integer*4 - количество отсчетов новой трассы * * * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса после преобразования * ************************************************************************/ void Fortran(timetrans) (float*,int*,float*,float*,float*,int*,int*,float*); #ifdef __cplusplus }; #endif /* C++ */ #endif /* mod1d.h */ /с) *
193
* KP(m) real*4 - коэффициент анизотропии = Vq/Vp>1 *
194
* m integer*4 - количество слоев модели *
195
* fi real*4 - угол падения пластов модели (рад) *
196
* az real*4 - азимут падения пластов модели (рад) *
197
* xop real*4 - X-координата пункта приема *
198
* yop real*4 - Y-координата пункта приема *
199
* zop real*4 - Z-координата пункта приема *
200
* xsp real*4 - X-координата пункта взрыва *
201
* ysp real*4 - Y-координата пункта взрыва *
202
* zsp real*4 - Z-координата пункта взрыва *
203
* eps real*8 - точность расчета лучевого параметра *
204
* рекомендуется eps=1.D-15 *
205
* *
206
* ВЫХОДНЫЕ ДАННЫЕ: *
207
* time real*4 - время первого вступления (сек) *
208
* fiout real*4 - угол ВЫХОДА луча из пункта взрыва (рад) *
209
* azout real*4 - азимут угла ВЫХОДА луча из пункта взрыва(рад) *
210
* *
211
* РАБОЧИЕ МАССИВЫ: *
212
* H(m) real*4 *
213
* HD(m) real*4 *
214
* VD(m) real*4 *
215
************************************************************************/
216
void
Fortran(downwave1d)
217
(
float
XW[],
float
YW[],
float
ZW[],
218
float
VP[],
float
KP[],
float
VS[],
219
float
KS[],
int
*m,
float
*fi,
float
*az,
220
float
*xop,
float
*yop,
float
*zop,
221
float
*xsp,
float
*ysp,
float
*zsp,
222
double
*eps,
223
float
H[],
float
HD[],
float
VD[],
224
float
*time,
225
float
*fiout,
float
*azout);
//FIOUT неправильный для головной волны /************************************************************************ * РАСЧЕТ ЛУЧЕВЫХ ПАРАМЕТРОВ ТРАССЫ ДЛЯ * * ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * XW(m) real*4 - X-координата кровли пласта (м) * * YW(m) real*4 - Y-координата кровли пласта (м) * * ZW(m) real*4 - Z-координата кровли пласта (м) * * VP(m) real*4 - пластовая скорость P-волны(м/с) * * KP(m) real*4 - коэффициент анизотропии P-волны= Vq/Vp>1 * * VS(m) real*4 - пластовая скорость S-волны (м/с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * otype integer*4 - тип двойных времен: * * 0 - PP волны, * * 1 - PS волны * * * * ВЫХОДНЫЕ ДАННЫЕ: * * Tfb real*4 - двойное время для первого вступления * * Time1x(nsamp) real*4 - массив исходных времен * * Time2x(nsamp) real*4 - массив двойных времен * * FiW(nsamp) real*4 - массив углов подхода волны * * AzW(nsamp) real*4 - массив азимутов подхода волны * * npoint integer*4 - число рассчитанных параметров * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * * ПРИМЕЧАНИЕ: * * nsamp - размерность выходных массивов (объем выделенной памяти), * * nsamp = число слоев модели + 11 точек (одна точка сразу * * за первым вступлением, а 10 - через 500м - ниже * * последнего слоя модели) * ************************************************************************/ void Fortran(rayparam4trace) (float*, float*, float*, float*, float*, float*, float*, int*, float*, float*, float*, float*, float*, float*, float*, float*, int*,int*,int*,double*, int*, float*, float*, float*, float*,float*, float*, float*, float*, int*); /************************************************************************ * РАЗВОРОТ В СЛЕДЯЩУЮ КОМПОНЕНТУ * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TX(n) real*4 - трасса X-компоненты * * TY(n) real*4 - трасса Y-компоненты * * TZ(n) real*4 - трасса Z-компоненты * * n integer*4 - количество отсчетов трассы * * dt real*4 - кшаг дискретизации (мс) * * TimeW(m)real*4 - массив времен * * FiW(m) real*4 - массив углов подхода волны * * AzW(m) real*4 - массив азимутов подхода волны * * m integer*4 - число рассчитанных параметров * * idir integer*4 - направление преобразования * * 0 - прямое XYZ->P, * * 1 - обратное P->XYZ * * отражению(обмену) волны от слоев модели * * ind integer*4 - тип волны следящей компоненты * * (0 - P-тип, 1 - S-тип) * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса следящей компоненты * ************************************************************************/ void Fortran(followcomp) (float*,float*,float*,int*,float*, float*,float*,float*,int*,int*,int*,float*); /************************************************************************ * ПРЕОБРАЗОВАНИЕ ВРЕМЕН * * (ВЫВОД НА ВЕРТИКАЛЬ И ВОЗВРАТ ОБРАТНО) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TI(n) real*4 - входная трасса * * ni integer*4 - количество отсчетов исходной трассы * * dt real*4 - шаг дискретизации (мс) * * TimeI(m)real*4 - массив исходных времен * * TimeO(m)real*4 - массив новых времен * * m integer*4 - число рассчитанных параметров * * no integer*4 - количество отсчетов новой трассы * * * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса после преобразования * ************************************************************************/ void Fortran(timetrans) (float*,int*,float*,float*,float*,int*,int*,float*); #ifdef __cplusplus }; #endif /* C++ */ #endif /* mod1d.h */
226
227
/************************************************************************
228
* РАСЧЕТ ЛУЧЕВЫХ ПАРАМЕТРОВ ТРАССЫ ДЛЯ *
229
* ЗАДАННОЙ ВОЛНЫ (Down,Up : P-,S-type) *
230
* В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ *
231
* *
232
* ВХОДНЫЕ ДАННЫЕ: *
233
* XW(m) real*4 - X-координата кровли пласта (м) *
234
* YW(m) real*4 - Y-координата кровли пласта (м) *
235
* ZW(m) real*4 - Z-координата кровли пласта (м) *
236
* VP(m) real*4 - пластовая скорость P-волны(м/с) *
237
* KP(m) real*4 - коэффициент анизотропии P-волны= Vq/Vp>1 *
238
* VS(m) real*4 - пластовая скорость S-волны (м с) * * KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 * * m integer*4 - количество слоев модели * * fi real*4 - угол падения пластов модели (рад) * * az real*4 - азимут падения пластов модели (рад) * * xop real*4 - X-координата пункта приема * * yop real*4 - Y-координата пункта приема * * zop real*4 - Z-координата пункта приема * * xsp real*4 - X-координата пункта взрыва * * ysp real*4 - Y-координата пункта взрыва * * zsp real*4 - Z-координата пункта взрыва * * flag integer*4 - индикатор (0 - падающая, 1 - отраженная) * * ind1 integer*4 - тип волны на первом участке * * (0 - P-тип, 1 - S-тип) * * ind2 integer*4 - тип волны на втором участке * * (0 - P-тип, 1 - S-тип) * * eps real*8 - точность расчета лучевого параметра * * рекомендуется eps=1.D-15 * * otype integer*4 - тип двойных времен: * * 0 - PP волны, * * 1 - PS волны * * * * ВЫХОДНЫЕ ДАННЫЕ: * * Tfb real*4 - двойное время для первого вступления * * Time1x(nsamp) real*4 - массив исходных времен * * Time2x(nsamp) real*4 - массив двойных времен * * FiW(nsamp) real*4 - массив углов подхода волны * * AzW(nsamp) real*4 - массив азимутов подхода волны * * npoint integer*4 - число рассчитанных параметров * * * * РАБОЧИЕ МАССИВЫ: * * H(m) real*4 * * HD(2*m) real*4 * * VD(2*m) real*4 * * ПРИМЕЧАНИЕ: * * nsamp - размерность выходных массивов (объем выделенной памяти), * * nsamp = число слоев модели + 11 точек (одна точка сразу * * за первым вступлением, а 10 - через 500м - ниже * * последнего слоя модели) * ************************************************************************/ void Fortran(rayparam4trace) (float*, float*, float*, float*, float*, float*, float*, int*, float*, float*, float*, float*, float*, float*, float*, float*, int*,int*,int*,double*, int*, float*, float*, float*, float*,float*, float*, float*, float*, int*); /************************************************************************ * РАЗВОРОТ В СЛЕДЯЩУЮ КОМПОНЕНТУ * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TX(n) real*4 - трасса X-компоненты * * TY(n) real*4 - трасса Y-компоненты * * TZ(n) real*4 - трасса Z-компоненты * * n integer*4 - количество отсчетов трассы * * dt real*4 - кшаг дискретизации (мс) * * TimeW(m)real*4 - массив времен * * FiW(m) real*4 - массив углов подхода волны * * AzW(m) real*4 - массив азимутов подхода волны * * m integer*4 - число рассчитанных параметров * * idir integer*4 - направление преобразования * * 0 - прямое XYZ->P, * * 1 - обратное P->XYZ * * отражению(обмену) волны от слоев модели * * ind integer*4 - тип волны следящей компоненты * * (0 - P-тип, 1 - S-тип) * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса следящей компоненты * ************************************************************************/ void Fortran(followcomp) (float*,float*,float*,int*,float*, float*,float*,float*,int*,int*,int*,float*); /************************************************************************ * ПРЕОБРАЗОВАНИЕ ВРЕМЕН * * (ВЫВОД НА ВЕРТИКАЛЬ И ВОЗВРАТ ОБРАТНО) * * В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ * * * * ВХОДНЫЕ ДАННЫЕ: * * TI(n) real*4 - входная трасса * * ni integer*4 - количество отсчетов исходной трассы * * dt real*4 - шаг дискретизации (мс) * * TimeI(m)real*4 - массив исходных времен * * TimeO(m)real*4 - массив новых времен * * m integer*4 - число рассчитанных параметров * * no integer*4 - количество отсчетов новой трассы * * * * ВЫХОДНЫЕ ДАННЫЕ: * * TP(n) real*4 - трасса после преобразования * ************************************************************************/ void Fortran(timetrans) (float*,int*,float*,float*,float*,int*,int*,float*); #ifdef __cplusplus }; #endif /* C++ */ #endif /* mod1d.h */ /с) *
239
* KS(m) real*4 - коэффициент анизотропии S-волны = Vq/Vp>1 *
240
* m integer*4 - количество слоев модели *
241
* fi real*4 - угол падения пластов модели (рад) *
242
* az real*4 - азимут падения пластов модели (рад) *
243
* xop real*4 - X-координата пункта приема *
244
* yop real*4 - Y-координата пункта приема *
245
* zop real*4 - Z-координата пункта приема *
246
* xsp real*4 - X-координата пункта взрыва *
247
* ysp real*4 - Y-координата пункта взрыва *
248
* zsp real*4 - Z-координата пункта взрыва *
249
* flag integer*4 - индикатор (0 - падающая, 1 - отраженная) *
250
* ind1 integer*4 - тип волны на первом участке *
251
* (0 - P-тип, 1 - S-тип) *
252
* ind2 integer*4 - тип волны на втором участке *
253
* (0 - P-тип, 1 - S-тип) *
254
* eps real*8 - точность расчета лучевого параметра *
255
* рекомендуется eps=1.D-15 *
256
* otype integer*4 - тип двойных времен: *
257
* 0 - PP волны, *
258
* 1 - PS волны *
259
* *
260
* ВЫХОДНЫЕ ДАННЫЕ: *
261
* Tfb real*4 - двойное время для первого вступления *
262
* Time1x(nsamp) real*4 - массив исходных времен *
263
* Time2x(nsamp) real*4 - массив двойных времен *
264
* FiW(nsamp) real*4 - массив углов подхода волны *
265
* AzW(nsamp) real*4 - массив азимутов подхода волны *
266
* npoint integer*4 - число рассчитанных параметров *
267
* *
268
* РАБОЧИЕ МАССИВЫ: *
269
* H(m) real*4 *
270
* HD(2*m) real*4 *
271
* VD(2*m) real*4 *
272
* ПРИМЕЧАНИЕ: *
273
* nsamp - размерность выходных массивов (объем выделенной памяти), *
274
* nsamp = число слоев модели + 11 точек (одна точка сразу *
275
* за первым вступлением, а 10 - через 500м - ниже *
276
* последнего слоя модели) *
277
************************************************************************/
278
void
Fortran(rayparam4trace)
279
(
float
*,
float
*,
float
*,
float
*,
float
*,
float
*,
float
*,
int
*,
280
float
*,
float
*,
281
float
*,
float
*,
float
*,
float
*,
float
*,
float
*,
282
int
*,
int
*,
int
*,
double
*,
int
*,
283
float
*,
float
*,
float
*,
284
float
*,
float
*,
float
*,
float
*,
float
*,
int
*);
285
286
/************************************************************************
287
* РАЗВОРОТ В СЛЕДЯЩУЮ КОМПОНЕНТУ *
288
* В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ *
289
* *
290
* ВХОДНЫЕ ДАННЫЕ: *
291
* TX(n) real*4 - трасса X-компоненты *
292
* TY(n) real*4 - трасса Y-компоненты *
293
* TZ(n) real*4 - трасса Z-компоненты *
294
* n integer*4 - количество отсчетов трассы *
295
* dt real*4 - кшаг дискретизации (мс) *
296
* TimeW(m)real*4 - массив времен *
297
* FiW(m) real*4 - массив углов подхода волны *
298
* AzW(m) real*4 - массив азимутов подхода волны *
299
* m integer*4 - число рассчитанных параметров *
300
* idir integer*4 - направление преобразования *
301
* 0 - прямое XYZ->P, *
302
* 1 - обратное P->XYZ *
303
* отражению(обмену) волны от слоев модели *
304
* ind integer*4 - тип волны следящей компоненты *
305
* (0 - P-тип, 1 - S-тип) *
306
* ВЫХОДНЫЕ ДАННЫЕ: *
307
* TP(n) real*4 - трасса следящей компоненты *
308
************************************************************************/
309
void
Fortran(followcomp)
310
(
float
*,
float
*,
float
*,
int
*,
float
*,
311
float
*,
float
*,
float
*,
int
*,
int
*,
int
*,
float
*);
312
313
/************************************************************************
314
* ПРЕОБРАЗОВАНИЕ ВРЕМЕН *
315
* (ВЫВОД НА ВЕРТИКАЛЬ И ВОЗВРАТ ОБРАТНО) *
316
* В ПАРАЛЛЕЛЬНО-СЛОИСТОЙ ПОПЕРЕЧНО-ИЗОТРОПНОЙ СРЕДЕ *
317
* *
318
* ВХОДНЫЕ ДАННЫЕ: *
319
* TI(n) real*4 - входная трасса *
320
* ni integer*4 - количество отсчетов исходной трассы *
321
* dt real*4 - шаг дискретизации (мс) *
322
* TimeI(m)real*4 - массив исходных времен *
323
* TimeO(m)real*4 - массив новых времен *
324
* m integer*4 - число рассчитанных параметров *
325
* no integer*4 - количество отсчетов новой трассы *
326
* *
327
* ВЫХОДНЫЕ ДАННЫЕ: *
328
* TP(n) real*4 - трасса после преобразования *
329
************************************************************************/
330
void
Fortran(timetrans)
331
(
float
*,
int
*,
float
*,
float
*,
float
*,
int
*,
int
*,
float
*);
332
333
334
#ifdef __cplusplus
335
};
336
#endif
/* C++ */
337
338
339
#endif
/* mod1d.h */
Generated by
1.8.5