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
mod3dmath.h
1
/* mod3dmath.h */
2
/* $Id: mod3dmath.h,v 1.19 2002/11/07 15:11:14 garry Exp $ */
3
#ifndef __mod3dmath_h
4
#define __mod3dmath_h
5
6
#include <mix/Types.h>
7
#ifdef __cplusplus
8
extern
"C"
{
9
#endif
/* __cplusplus */
10
11
/*****
12
subroutine waythrbo(fi,az,a,b,c,cl,an,p0,dpdfi0,dpdaz0,ksi0,
13
index,dfi,daz) */
14
15
void
Fortran(waythrbo)(
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
16
double
*,
double
*,
double
*,
double
*,
double
*,
int
*,
17
double
*,
double
*);
18
19
/***** Procedure calculates elasticy tenzors in local and global coord. systems
20
21
subroutine eltenzor(vp,vp1,vs,vs1,an,cl,cg,rt) */
22
23
void
Fortran(eltenzor)(
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
24
double
*);
25
26
/* ***** Subroutine to transform vector's direction to ray parameters
27
28
subroutine vec2par (v,fi,az) */
29
30
void
Fortran(vec2par)(
double
*,
double
*,
double
*);
31
32
/* ***** Subroutine to find distance between point and polygon which
33
***** will be considered as only a frame in 3D case.
34
***** The polygon may be a 3D polygon-frame. Not necessary
35
***** for all the vertexes to lay on the same plain. But the polygon
36
***** should have a structure which allows to start in one point
37
***** and finish at the same point during ordering count of vertexes.
38
***** !!!!! Important. The polygon considered as only a frame not
39
***** a body. The points inside polygon do not belong to
40
***** the polygon !!!!!
41
42
subroutine dispofr (x0,y0,z0,n,x,y,z,dist,xe,ye,ze,ierr) */
43
44
void
Fortran(dispofr)(
double
*,
double
*,
double
*,
int
*,
double
*,
double
*,
45
double
*,
double
*,
double
*,
double
*,
double
*,
int
*);
46
47
/* ***** The subroutine finds the intersection of line in parametric form
48
***** x=e*t+x0, y=f*t+y0, z=g*t+z0 and plain (a,b,c,d).
49
***** Result will be in (xs,ys,zs)
50
***** If ierr=1 - the line doesn't intersect given plain
51
52
subroutine liplsect(a,b,c,d,e,f,g,x0,y0,z0,xs,ys,zs,ierr) */
53
void
Fortran(liplsect)(
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
54
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
55
double
*,
int
*);
56
57
/* p2ptti - point to point targeting in transversaly-isotropic medium
58
subroutine p2ptti(ro,vp,vp1,vs,vs1,an,index,x0,xt,az,fi,ierr) */
59
void
Fortran(p2ptti)(
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
60
int
*,
double
*,
double
*,
double
*,
double
*,
int
*);
61
62
/* subroutine contray (vray,x,y,z,t) */
63
void
Fortran(contray)(
double
*,
double
*,
double
*,
double
*,
double
*);
64
65
/* subroutine dispopol(x0,y0,z0,a,b,c,d,n,x,y,z,dist,ierr,xtmp,ytmp) */
66
67
void
Fortran(dispopol)(
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
68
double
*,
int
*,
double
*,
double
*,
double
*,
double
*,
int
*,
69
double
*,
double
*);
70
71
/* subroutine refnorm(ro1,ro2,cl1,cl2,rt1,rt2,an1,an2,
72
, a,b,c,ksi,index1,index2,cof,ierr) */
73
74
void
Fortran(refnorm)(
double
*,
double
*,
double
*,
double
*,
75
double
*,
double
*,
double
*,
double
*,
76
double
*,
double
*,
double
*,
double
*,
int
*,
int
*,
double
*,
int
*);
77
78
/* subroutine parstore (ntr,coefs,ro,ksi,bordn,dxdfi,dxdaz,spi,
79
, indref,diver,prop)
80
81
integer ntr,indref,ifdebug
82
real*8 ro(ntr+1),ksi(3,ntr+1),bordn(3,ntr)
83
real*8 spi,dxdfi(3),dxdaz(3),diver
84
real*8 scalprod,vmodul,tmp,div(3),r
85
complex*16 coefs(ntr),prop */
86
87
void
Fortran(parstore)(
int
*,
double
*,
double
*,
double
*,
double
*,
double
*,
88
double
*,
double
*,
int
*,
double
*,
double
*);
89
90
void
Fortran(raykin)(
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
91
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
92
int
*,
int
*,
double
*,
double
*,
double
*,
double
*,
double
*,
93
double
*,
double
*,
int
*,
int
*,
double
*,
double
*,
int
*);
94
95
void
Fortran(refkin)(
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
96
double
*,
double
*,
double
*,
double
*,
double
*,
int
*,
int
*,
97
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
98
double
*,
double
*,
double
*,
int
*);
99
100
/* Subroutine RAYDIVER(X0,P,RO,CL,CG,AN,BN,KSI0,ISHOT, */
101
/* , INDEX,TETA,FI,IFIN,DELTA, */
102
/* , NBRD,NPTS,A,B,C,D,X,Y,Z,X1,Y1, */
103
/* , DPDTETA0,DPDFI0,DXDTETA0,DXDFI0, */
104
/* , XE,T,NBORD,VPOL,VREF,VRAY,IERR) */
105
106
void
Fortran(raydiver)(
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
107
double
*,
double
*,
int
*,
int
*,
double
*,
double
*,
int
*,
108
double
*,
int
*,
int
*,
double
*,
double
*,
double
*,
double
*,
109
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
110
double
*,
double
*,
double
*,
double
*,
int
*,
double
*,
double
*,
111
double
*,
int
*,
double
*,
double
*);
112
113
/* subroutine findnbrp (x0,x1,dxdfi0,dxdaz0,ksi0, */
114
/* , dksidfi0,dksidaz0,dfi,daz) */
115
116
void
Fortran(findnbrp)(
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
117
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
int
*);
118
119
/* subroutine getsg (nrays,ntotr,nref,rcoefs,a,ro,ksi,bordn, */
120
/* , dxdfi,dxdaz,spi,sg) */
121
/* real*8 a(3,nrays),ro(ntotr+nrays)
122
real*8 ksi(3,ntotr+nrays),bordn(3,ntotr)
123
real*8 spi(nrays),dxdfi(3,nrays),dxdaz(3,nrays)
124
real*8 scalprod,vmodul,div(3),r
125
complex*16 sg(3,nrays),rcoefs(ntotr),tmp */
126
127
void
Fortran(getsg)(
int
*,
int
*,
int
*,
double
*,
double
*,
double
*,
double
*,
double
*,
128
double
*,
double
*,
double
*,
double
*);
129
130
/* subroutine mktrc (ltr,lsi,ndiscr,dt,lsg,sg,tsg,si,tr,csi) */
131
/* integer ltr,lsi,ndiscr,lsg
132
real*8 dt,tsg(lsg),si(ndiscr),tr(ltr)
133
real*8 dw,fnike,pi
134
complex*16 csi(ndiscr),sg(lsg),ctmp
135
integer nw,ip,ifdebug */
136
void
Fortran(mktrc)(
int
*,
int
*,
int
*,
double
*,
int
*,
double
*,
double
*,
double
*,
137
double
*,
double
*);
138
139
/********************************************************************/
140
/* Procedures for hiting receivers */
141
void
Fortran(hitsprec)(
int
*,
double
*,
double
*,
double
*,
double
*,
double
*,
142
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
143
double
*,
double
*,
double
*,
double
*,
int
*);
144
void
Fortran(hitdown)(
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
145
double
*,
double
*,
double
*,
int
*,
int
*,
146
double
*,
double
*,
double
*,
double
*,
double
*,
147
double
*,
double
*,
double
*,
double
*,
double
*,
int
*,
148
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
149
double
*,
double
*,
double
*,
double
*);
150
void
Fortran(hitup)(
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
151
double
*,
double
*,
double
*,
int
*,
int
*,
int
*,
152
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
153
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
154
int
*,
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
155
double
*,
double
*,
double
*,
double
*);
156
157
void
Fortran(detimtr)(
double
*,
double
*,
int
*,
double
*,
double
*,
float
*,
double
*,
158
float
*,
double
*,
int
*,
int
*);
159
160
void
Fortran(timdetr)(
double
*,
double
*,
int
*,
float
*,
double
*,
double
*,
161
float
*,
double
*,
double
*,
int
*,
int
*);
162
163
void
Fortran(hitrefr)(
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
164
double
*,
double
*,
double
*,
int
*,
int
*,
165
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
166
double
*,
double
*,
double
*,
double
*,
double
*,
double
*,
167
double
*,
int
*,
double
*,
double
*,
double
*,
double
*,
168
double
*,
double
*,
double
*,
double
*,
double
*,
double
*);
169
170
#ifdef __cplusplus
171
};
172
#endif
/* __cplusplus */
173
174
#endif
/* mod3dmath.h */
175
Generated by
1.8.5