UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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 */