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