├── LICENSE ├── README.md ├── Thesis.pdf ├── anray ├── a42.for └── anray.for ├── fracturePP.py ├── fracturePP_gui.py ├── fractureP_S.py ├── fractureP_S_gui.py ├── fractureSH.py ├── fractureSH_gui.py ├── fractureSV.py ├── fractureSV_gui.py └── images ├── P_anray.png ├── P_anray_sismo_reflec.png ├── P_formula.png ├── P_formula_split_min.png └── P_sismo_azm_vertical.png /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 stdevelopr 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # seismic-fracture-modeling 2 | 3 | A software to model seismic reflection data from fractured medium 4 | ____ 5 | 6 | With it you can model the expected seismic reflection data in a fractured medium for the P and S waves in different azimuths. 7 |
8 | 9 | The files have in their names the types of conversions:
10 | - **fracturePP.py** : calculates the P wave reflection from an incident P wave. 11 | - **fractureP_S.py** : calculates the S wave reflection from an incident P wave. 12 | - **fractureSH.py** : calculates the SH wave reflection from an incident SH wave. 13 | - **fractureSV.py** : calculates the SV wave reflection from an incident SV wave. 14 |
15 |
16 | ### INSTALL
17 |
18 | These files assume that you have ANRAY software installed on your computer.
20 | To run the files just copy them to the anray folder and execute with python. **The _gui files must be in the same folder and are resposible to generate the graphical user interface.
21 | Add the files of the anray folder into your instalation folder, replacing the original anray.for.
22 |
23 | ### Usage
24 | Here you enter the parameters(layer 1 and layer 2, fracture and bulk properties) and get an aproximation of the reflection coeficient for differents azimuths. In the split box, you can choose the azimuths in which a minimum of 10% split occurs. It will then be plotted on the graph where the difference occurs.
25 | ngeo, d_min, d_step refers to the acquisition parameters (number of geophones, minimun distance, and step).
26 | 
27 |
28 | In this tab, click on generate model, to use the chosen parameters as data to Anray. After the calculation the result will be plotted (The total component, wich is composed of the vertical and the radial). This program use B-spline approximation.
29 |
30 | 
31 |
32 | In this tab you see the expected seismograms, and the option to plot the reflection from the soil, to compare the amplitudes.
33 | 
34 | The last tab compare the amplitudes for differents azimuths.
35 | 
36 |
--------------------------------------------------------------------------------
/Thesis.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stdevelopr/seismic-fracture-modeling/21d3a6bda96eba222a2aba29460e078664963187/Thesis.pdf
--------------------------------------------------------------------------------
/anray/a42.for:
--------------------------------------------------------------------------------
1 | C
19 | You can find instructions here: http://w3d.cz/software/sw3dcd21/anray/anray.htm
2 | SUBROUTINE PROFIL(XSOUR,YSOUR,ZSOUR,TSOUR,PSI0,PAZM,RANG,
3 | 1XXX,YYY,ZZZ,TTT,DT,AC,ASTART,ASTEP,AFIN,ITMAX,MOUT,NCODE,
4 | 2METHOD,ITPR,indr1)
5 | C
6 | C 3-D INITIAL VALUE RAY TRACING AND RAY TRACING FROM THE SOURCE
7 | C TO A PRESCRIBED PROFILE PASSING THROUGH THE EPICENTER
8 | C
9 | COMMON /AUXI/ IANI(20),INTR,INT1,IPREC,KRE,IREFR,LAY,NDER,IPRINT,
10 | 1 MPRINT,NTR,ISQRT,NAUX,ISOUR,MAUX,MREG,MDIM,IPOL,MSCON,LOU,
11 | 2 IAMP,MTRNS,ICOEF,IAD,IRHO,ISHEAR,IAC,IRT,mori
12 | INTEGER CODE
13 | COMMON /COD/ CODE(50,2),KREF,KC,ITYPE
14 | COMMON /DIST/ XDST(200),NDSTX,XREPS,DST(2),NDST,REPS,LNDST,
15 | 1XPRF,YPRF,ILOC
16 | COMPLEX PS
17 | COMMON /RAY/ AY(28,2000),DS(20,50),KINT(50),HHH(3,3),tmax,
18 | 1 PS(3,7,50),IS(8,50),N,IREF,IND,IND1
19 | COMMON /ZERO/ RNULL
20 | COMMON/VSP/XVSP,YVSP,XNRM,YNRM,ICOD,IVSP
21 | COMMON/DYN/XDYN(3,3),ydyn(3,3)
22 | COMMON/KM/KMAH,SPROLD,TSTOLD
23 | C
24 | iwave=0
25 | itp=code(1,2)
26 | RANG=0.
27 | XXX=0.
28 | ZZZ=0.
29 | TTT=0.
30 | REPS1=.05*REPS
31 | DD=dst(1)
32 | xcos=cos(dd)
33 | xsin=sin(dd)
34 | dd=0.
35 | X=0.
36 | ITER=0
37 | II=0
38 | LNDST=0
39 | C
40 | AA=ASTART-ASTEP
41 | INDEX=0
42 | INUM=0
43 | ICLS=0
44 | ISUC=0
45 | INDS=ISOUR
46 | C
47 | C LOOP IN AZIMUTH, FROM VALUE ASTART TO AFIN, WITH THE STEP
48 | C ASTEP
49 | C
50 | 1 AA=AA+ASTEP
51 | PNEW=AA
52 | IF(ASTEP.GT.0..AND.AA.GT.AFIN)GO TO 99
53 | IF(ASTEP.LT.0..AND.AA.LT.AFIN)GO TO 99
54 | IND=INDS
55 | NDER=1
56 | IF(MDIM.GE.1)NDER=2
57 | SPROLD=0.
58 | CALL RAYA(XSOUR,YSOUR,ZSOUR,TSOUR,PSI0,AA,PX,PY,PZ,XX,YY,ZZ,T,
59 | 1DT,AC)
60 | NDER=1
61 | IF(IND.EQ.14)RETURN
62 | x=(yprf-yy)*xcos-(xprf-xx)*xsin
63 | IF(NDSTX.EQ.0)GO TO 65
64 | IF(IND.EQ.ITPR)XAX=X
65 | IF(IND.EQ.ITPR)PNEW=AA
66 | IF(MOUT.EQ.3)WRITE(LOU,100)IND,IND1,X,XX,YY,ZZ,T,AA,PSI0
67 | IF(INUM.NE.0)GO TO 2
68 | AOLD=AA
69 | IOLD=IND
70 | IOLD1=IND1
71 | XOLD=X
72 | TOLD=T
73 | INUM=1
74 | GO TO 1
75 | C
76 | C PARAMETERS FOR THE PRECEDING RAY: AA=AOLD, X=XOLD, IND=IOLD
77 | C PARAMETERS FOR THE NEW RAY: AA=ANEW, X=XNEW, IND=INEW
78 | C
79 | 2 INEW=IND
80 | INEW1=IND1
81 | ANEW=AA
82 | XNEW=X
83 | TNEW=T
84 | IF(INEW.EQ.ITPR.AND.IOLD.EQ.ITPR)GO TO 21
85 | IF(INEW.EQ.ITPR)GO TO 50
86 | IF(IOLD.EQ.ITPR)GO TO 55
87 | IF(INEW.EQ.9.AND.IOLD.NE.9.AND.IOLD.NE.8)GO TO 30
88 | IF(INEW.NE.9.AND.INEW.NE.8.AND.IOLD.EQ.9)GO TO 35
89 | GOTO 3
90 | 21 IF(IOLD1.NE.INEW1)then
91 | if(inew1.eq.indr1)go to 50
92 | if(iold1.eq.indr1)go to 55
93 | else
94 | GO TO 40
95 | end if
96 | C
97 | C NO ITERATIONS, TAKE A NEW RAY IN THE LOOP
98 | C
99 | 3 CONTINUE
100 | if(isuc.eq.0)ind=0
101 | IF(IOLD.NE.INEW)IND=0
102 | IOLD=INEW
103 | IOLD1=INEW1
104 | XOLD=XNEW
105 | AOLD=ANEW
106 | TOLD=TNEW
107 | GO TO 1
108 | C
109 | C REGULAR CASE: IOLD=3, INEW=3
110 | C
111 | 40 XXNEW=XNEW
112 | XXOLD=XOLD
113 | AANEW=ANEW
114 | AAOLD=AOLD
115 | TTNEW=TNEW
116 | TTOLD=TOLD
117 | IBNEW=0
118 | IBOLD=0
119 | 41 IF(XXNEW.GT.XXOLD.AND.DST(2).GT.DST(1))GO TO 46
120 | IF(XXNEW.LT.XXOLD.AND.DST(2).LT.DST(1))GO TO 46
121 | C
122 | C REGULAR CASE: XXNEW.LE.XXOLD, ITREND=-1 (REVERSE BRANCH)
123 | C
124 | DX=XXOLD
125 | IF(IBOLD.EQ.1) DX=DX+REPS
126 | IF(DD.GE.DX) GO TO 3
127 | DX=XXNEW
128 | IF(IBNEW.EQ.1) DX=DX-REPS
129 | IF(DD.LT.DX) GOTO 3
130 | II=1
131 | GO TO 43
132 | C
133 | C REGULAR CASE: XXNEW.GT.XXOLD, ITREND=1 (REGULAR BRANCH)
134 | C
135 | 46 continue
136 | DX=XXOLD
137 | IF(IBOLD.EQ.1) DX=DX-REPS
138 | IF(DD.LE.DX) GO TO 3
139 | DX=XXNEW
140 | IF(IBNEW.EQ.1) DX=DX+REPS
141 | IF(DD.GT.DX) GOTO 3
142 | II=1
143 | 43 P1=AAOLD
144 | P2=AANEW
145 | X1=XXOLD
146 | X2=XXNEW
147 | T1=TTOLD
148 | T2=TTNEW
149 | C
150 | C I T E R A T I O N S
151 | C
152 | ITER=0
153 | ISIGN=1
154 | IPR1=0
155 | IPR2=0
156 | ISUC=0
157 | GO TO 61
158 | 68 XAX=X
159 | PAX=PNEW
160 | 61 ITER=ITER+1
161 | IF(ITER.GT.ITMAX)GO TO 80
162 | ISIGN=-ISIGN
163 | AAUX=0.5*(P1+P2)
164 | IF(METHOD.LE.1.AND.IND.EQ.ITPR.and.iter.gt.1)GO TO 62
165 | GO TO 69
166 | 62 if(mori.eq.0)AUX=(XDYN(1,1)*xsin-XDYN(2,1)*xcos)*cos(psi0)
167 | if(mori.ne.0)AUX=(XDYN(1,2)*xsin-XDYN(2,2)*xcos)*cos(pnew)
168 | IF(ABS(AUX).LT..00001)GO TO 69
169 | AAUX=PNEW+(DD-X)/AUX
170 | 69 PNEW=AAUX
171 | 71 IND=INDS
172 | SPROLD=0.
173 | XOLD=0.
174 | IF(MDIM.GE.1)NDER=2
175 | CALL RAYA(XSOUR,YSOUR,ZSOUR,TSOUR,PSI0,PNEW,PX,PY,PZ,XX,YY,ZZ,T,
176 | 1DT,AC)
177 | if(iwave.eq.1)code(1,2)=itp
178 | NDER=1
179 | XE=XX-Xprf
180 | YE=YY-Yprf
181 | RPRF=SIGN(1.,XE*XCOS+YE*XSIN)*SQRT(XE*XE+YE*YE)
182 | x=(yprf-yy)*xcos-(xprf-xx)*xsin
183 | IF(MOUT.EQ.3)WRITE(LOU,101)
184 | 1IND,IND1,ITER,KMAH,DD,X,XX,YY,T,PNEW,PSI0
185 | C
186 | C TESTING WHETHER THE RAY OF A QS WAVE DOES NOT TERMINATE
187 | C OUTSIDE THE RANGE IN WHICH PREVIOUS RAYS TERMINATED; IF YES,
188 | C A RAY OF THE OTHER QS WAVE WITH THE SAME INITIAL PARAMETERS
189 | C IS CALCULATED
190 | C
191 | if((x-x1)*(x-x2).gt.0..and.itype.eq.1)then
192 | iter=iter+1
193 | if(iter.gt.itmax)go to 80
194 | code(1,2)=2
195 | iwave=1
196 | go to 71
197 | end if
198 | if((x-x1)*(x-x2).gt.0..and.itype.eq.2)then
199 | iter=iter+1
200 | if(iter.gt.itmax)go to 80
201 | code(1,2)=1
202 | iwave=1
203 | go to 71
204 | end if
205 | IF(ICLS.NE.0)GO TO 70
206 | IF(IND.NE.ITPR)P2=PNEW
207 | IF(IND.NE.ITPR)GO TO 61
208 | IF(ABS(X-XAX).LT..000001)GO TO 67
209 | IF(ABS(X-DD).LT.REPS)GO TO 65
210 | IF(X1.LT.X2.AND.DD.GT.X)GO TO 63
211 | IF(X1.GT.X2.AND.DD.LT.X)GO TO 63
212 | IF(ABS(X-X1).LT..000001)GO TO 67
213 | P2=PNEW
214 | X2=X
215 | T2=T
216 | IPR2=1
217 | GO TO 68
218 | 63 IF(ABS(X-X2).LT..000001)GO TO 67
219 | P1=PNEW
220 | X1=X
221 | T1=T
222 | IPR1=1
223 | GO TO 68
224 | 67 IF(ABS(PNEW-PAX).GT..000001)ITER=ITMAX
225 | AX1=X1-DD
226 | AX2=X2-DD
227 | IF((IPR1*IPR2).EQ.0)ITER=ITMAX
228 | X=X1
229 | PNEW=P1
230 | IF(ABS(AX1).GT.ABS(AX2))PNEW=P2
231 | IF(ABS(AX1).GT.ABS(AX2))X=X2
232 | IF(ITER.EQ.ITMAX)GO TO 61
233 | ICLS=1
234 | GO TO 69
235 | 70 ICLS=0
236 | GO TO 65
237 | C
238 | C SUCCESSFUL ITERATIONS
239 | C
240 | 65 INDEX=INDEX+1
241 | isuc=1
242 | RANG=rPRF
243 | XXX=XX
244 | YYY=YY
245 | ZZZ=ZZ
246 | TTT=T
247 | PAZM=PNEW
248 | XAX=X
249 | IF(MOUT.EQ.3)WRITE(LOU,113)DD,X,XX,YY,ZZ,T,PNEW,PSI0,
250 | 1IND,IND1,ITER,II,INDEX
251 | GO TO 98
252 | C
253 | 80 continue
254 | P1=PNEW
255 | X1=X
256 | T1=T
257 | IF(ITER.GT.ITMAX)P1=AAOLD
258 | IF(ITER.GT.ITMAX)X1=XXOLD
259 | IF(ITER.GT.ITMAX)T1=TTOLD
260 | P2=AANEW
261 | X2=XXNEW
262 | T2=TTNEW
263 | GO TO 3
264 | C
265 | C E N D O F I T E R A T I O N S
266 | C
267 | C BOUNDARY RAYS: CASE IOLD.NE.ITPR, INEW=ITPR
268 | C OR CASE IOLD=ITPR, INEW=ITPR BUT IOLD1.NE.INEW1
269 | C (IOLD1.NE.INDR1, INEW1=INDR1)
270 | C
271 | 50 XXNEW=XNEW
272 | TTNEW=TNEW
273 | AANEW=ANEW
274 | IBNEW=0
275 | P1=AOLD
276 | P2=ANEW
277 | 54 IRES=0
278 | ITER=0
279 | 51 PNEW=0.5*(P1+P2)
280 | ITER=ITER+1
281 | IND=INDS
282 | NDER=1
283 | CALL RAYA(XSOUR,YSOUR,ZSOUR,TSOUR,PSI0,PNEW,PX,PY,PZ,XX,YY,ZZ,T,
284 | 1DT,AC)
285 | x=(yprf-yy)*xcos-(xprf-xx)*xsin
286 | IF(MOUT.EQ.3)WRITE(LOU,103)IND,IND1,ITER,X,XX,YY,T,PNEW,PSI0
287 | IF(IND.EQ.ITPR.AND.IND1.EQ.Indr1)GO TO 52
288 | P1=PNEW
289 | if((x-dd)*(xnew-dd).gt.0.)iter=itmax
290 | GO TO 53
291 | 52 XXOLD=X
292 | AAOLD=PNEW
293 | TTOLD=T
294 | IBOLD=1
295 | if((x-dd)*(xnew-dd).lt.0.)iter=itmax
296 | IF(ABS(X-XAX).LT.REPS1)ITER=ITMAX
297 | IRES=1
298 | XAX=X
299 | T1=T
300 | P2=PNEW
301 | 53 IF(ITER.LT.ITMAX)GO TO 51
302 | IF(MOUT.EQ.3)WRITE(LOU,107)X,ZZ,XX,YY,T,PNEW,IND,IND1,IRES
303 | IF(IRES.EQ.1) GOTO 41
304 | GO TO 3
305 | C
306 | C BOUNDARY RAYS: CASE IOLD=ITPR, INEW.NE.ITPR
307 | C OR CASE IOLD=ITPR, INEW=ITPR BUT IOLD1.NE.INEW1
308 | C (IOLD1=INDR1, INEW1.NE.INDR1)
309 | C
310 | 55 XXOLD=XOLD
311 | AAOLD=AOLD
312 | TTOLD=TOLD
313 | IBOLD=0
314 | P1=AOLD
315 | P2=ANEW
316 | 59 IRES=0
317 | ITER=0
318 | 56 PNEW=0.5*(P1+P2)
319 | ITER=ITER+1
320 | IND=INDS
321 | NDER=1
322 | CALL RAYA(XSOUR,YSOUR,ZSOUR,TSOUR,PSI0,PNEW,PX,PY,PZ,XX,YY,ZZ,T,
323 | 1DT,AC)
324 | x=(yprf-yy)*xcos-(xprf-xx)*xsin
325 | IF(MOUT.EQ.3)WRITE(LOU,103)IND,IND1,ITER,X,XX,YY,T,PNEW,PSI0
326 | IF(IND.EQ.ITPR.AND.IND1.EQ.Indr1)GO TO 57
327 | P2=PNEW
328 | if((x-dd)*(xold-dd).gt.0.)iter=itmax
329 | GO TO 58
330 | 57 XXNEW=X
331 | AANEW=PNEW
332 | TTNEW=T
333 | IBNEW=1
334 | if((x-dd)*(xold-dd).lt.0.)iter=itmax
335 | IF(ABS(X-XAX).LT.REPS1.AND.IRES.EQ.1) ITER=ITMAX
336 | IRES=1
337 | XAX=X
338 | T2=T
339 | P1=PNEW
340 | 58 IF(ITER.LT.ITMAX)GO TO 56
341 | IF(MOUT.EQ.3)WRITE(LOU,107)X,ZZ,XX,YY,T,PNEW,IND,IND1,IRES
342 | IF(IRES.EQ.1)GOTO 41
343 | GO TO 3
344 | C
345 | C CRITICAL RAYS. CASE IOLD.NE.9, IOLD.NE.3, INEW=9
346 | C
347 | 30 ITER=0
348 | XCR=XNEW
349 | P1=AOLD
350 | P2=ANEW
351 | IRES=0
352 | 31 PNEW=0.5*(P1+P2)
353 | ITER=ITER+1
354 | IND=INDS
355 | NDER=1
356 | CALL RAYA(XSOUR,YSOUR,ZSOUR,TSOUR,PSI0,PNEW,PX,PY,PZ,XX,YY,ZZ,T,
357 | 1DT,AC)
358 | x=(yprf-yy)*xcos-(xprf-xx)*xsin
359 | IF(MOUT.EQ.3)WRITE(LOU,104)IND,IND1,ITER,X,XX,YY,T,PNEW,PSI0
360 | IF(IND.EQ.9)GO TO 32
361 | IF(IND.EQ.ITPR)GO TO 33
362 | P1=PNEW
363 | GO TO 34
364 | 32 CONTINUE
365 | C 32 IF(IND1.NE.INEW1)P1=PNEW
366 | C IF(IND1.NE.INEW1) GOTO 34
367 | P2=PNEW
368 | IF(ABS(X-XCR).LT.0.01.AND.KC.NE.0.AND.IRES.EQ.1) GOTO 89
369 | XCR=X
370 | GOTO 34
371 | 89 ITER=ITMAX-1
372 | GO TO 31
373 | 33 IF(ABS(X-XAX).LT.REPS1.AND.IRES.EQ.1)ITER=ITMAX
374 | IRES=1
375 | XAX=X
376 | T2=T
377 | P1=PNEW
378 | PAP=PNEW
379 | 34 IF(ITER.LT.ITMAX)GO TO 31
380 | IF(MOUT.EQ.3)WRITE(LOU,111)X,ZZ,XX,YY,T,PNEW,IND,IND1,IRES
381 | IF(IRES.EQ.0) GOTO 3
382 | P2=PAP
383 | XXNEW=XAX
384 | AANEW=P2
385 | TTNEW=T2
386 | IBNEW=1
387 | P1=AOLD
388 | GO TO 54
389 | C
390 | C CRITICAL RAYS. CASE IOLD=9, INEW.NE.9, INEW.NE.3.
391 | C
392 | 35 ITER=0
393 | P1=AOLD
394 | P2=ANEW
395 | IRES=0
396 | 36 PNEW=0.5*(P1+P2)
397 | ITER=ITER+1
398 | IND=INDS
399 | NDER=1
400 | CALL RAYA(XSOUR,YSOUR,ZSOUR,TSOUR,PSI0,PNEW,PX,PY,PZ,XX,YY,ZZ,T,
401 | 1DT,AC)
402 | x=(yprf-yy)*xcos-(xprf-xx)*xsin
403 | IF(MOUT.EQ.3)WRITE(LOU,104)IND,IND1,ITER,X,XX,YY,T,PNEW,PSI0
404 | IF(IND.EQ.9)GO TO 37
405 | IF(IND.EQ.ITPR)GO TO 38
406 | P2=PNEW
407 | GO TO 39
408 | 37 IF(IND1.NE.IOLD1)P2=PNEW
409 | IF(IND1.NE.IOLD1) GO TO 39
410 | P1=PNEW
411 | IF(ABS(X-XCR).LT.0.01.AND.KC.NE.0.AND.IRES.EQ.1) GO TO 94
412 | XCR=X
413 | GO TO 39
414 | 94 ITER=ITMAX-1
415 | GOTO 36
416 | 38 IF(ABS(X-XAX).LT.REPS1.AND.IRES.EQ.1) ITER=ITMAX
417 | IRES=1
418 | XAX=X
419 | P2=PNEW
420 | PAP=PNEW
421 | T1=T
422 | 39 IF(ITER.LT.ITMAX)GO TO 36
423 | IF(MOUT.EQ.3)WRITE(LOU,111)X,ZZ,XX,YY,T,PNEW,IND,IND1,IRES
424 | IF(IRES.EQ.0) GOTO 3
425 | P1=PAP
426 | XXOLD=XAX
427 | AAOLD=P1
428 | TTOLD=T1
429 | IBOLD=1
430 | P2=ANEW
431 | GO TO 59
432 | C
433 | C
434 | 100 FORMAT('*',2I3,5F10.5,2F15.10)
435 | 101 FORMAT(1X,'*','ITERATIONS',5X,4I3,5F10.5,2F15.10)
436 | 103 FORMAT(2X,'*','BOUNDARY RAY',5X,3I3,4F10.5,2F15.10)
437 | 104 FORMAT(2X,'*','CRITICAL RAY',5X,3I3,4F10.5,2F15.10)
438 | 107 FORMAT(10X,'*',5F10.5,F15.10,3I3,5X,'BOUNDARY RAY')
439 | 111 FORMAT(10X,'*',5F10.5,F15.10,3I3,5X,'CRITICAL RAY')
440 | 113 FORMAT('*',7F10.5,F15.10,5I3)
441 | C
442 | C
443 | 98 CONTINUE
444 | LNDST=1
445 | 99 CONTINUE
446 | RETURN
447 | END
448 | C
449 | C *********************************************************
450 | C
451 | SUBROUTINE RAYA (X0,Y0,Z0,T0,FI0,PSI0,PX,PY,PZ,XX,YY,ZZ,T,DT,AC)
452 | C
453 | C INITIAL-VALUE RAY TRACING BY THE RUNGE-KUTTA METHOD
454 | C
455 | DIMENSION Y(18),DEP(6),PRM(5),DERY(18),AUX(8,18),DIN(18),VSQ(3)
456 | dimension pn(3)
457 | COMMON /APROX/ A11,A12,A13,A14,A15,A16,A22,A23,A24,A25,A26,A33,
458 | 1 A34,A35,A36,A44,A45,A46,A55,A56,A66,
459 | 1 DXA11,DXA12,DXA13,DXA14,DXA15,DXA16,DXA22,DXA23,
460 | 1 DXA24,DXA25,DXA26,DXA33,DXA34,DXA35,DXA36,DXA44,
461 | 1 DXA45,DXA46,DXA55,DXA56,DXA66,
462 | 1 DYA11,DYA12,DYA13,DYA14,DYA15,DYA16,DYA22,DYA23,
463 | 1 DYA24,DYA25,DYA26,DYA33,DYA34,DYA35,DYA36,DYA44,
464 | 1 DYA45,DYA46,DYA55,DYA56,DYA66,
465 | 1 DZA11,DZA12,DZA13,DZA14,DZA15,DZA16,DZA22,DZA23,
466 | 1 DZA24,DZA25,DZA26,DZA33,DZA34,DZA35,DZA36,DZA44,
467 | 1 DZA45,DZA46,DZA55,DZA56,DZA66,
468 | 1 A2546,A1266,A1355,A1456,A3645,A2344
469 | COMMON /AUXI/ IANI(20),INTR,INT1,IPREC,KRE,IREFR,LAY,NDER,IPRINT,
470 | 1 MPRINT,NTR,ISQRT,NAUX,ISOUR,MAUX,MREG,MDIM,IPOL,mscon,lou,
471 | 2 IAMP,MTRNS,ICOEF,IAD,IRHO,ISHEAR,IAC,IRT,mori
472 | INTEGER CODE
473 | COMMON /COD/ CODE(50,2),KREF,KC,ITYPE
474 | COMMON /INTRF/ Z(1000),SX(350),SY(350),NX(20),NY(20),BRD(6),NINT,
475 | 1 XINTA
476 | COMPLEX PS
477 | COMMON /RAY/ AY(28,2000),DS(20,50),KINT(50),HHH(3,3),tmax,
478 | 1 PS(3,7,50),IS(8,50),N,IREF,IND,IND1
479 | COMMON /ZERO/ RNULL
480 | common/dyn/xdyn(3,3),ydyn(3,3)
481 | common/appr/ xold,xnew,yold(18),dold(18),ynew(18),dnew(18)
482 | COMMON/KM/KMAH,SPROLD,TSTOLD
483 | EXTERNAL FCT,OUT
484 | C
485 | IAC=0
486 | kmah=0
487 | Y(1)=X0
488 | Y(2)=Y0
489 | Y(3)=Z0
490 | IREFR=0
491 | KRE=KREF
492 | IF(KC.EQ.0) KRE=0
493 | N=0
494 | IREF=1
495 | IF(IND.GT.0) GOTO 6
496 | C
497 | C FOR IND=-1 DETERMINATION OF THE NUMBER OF THE LAYER IN WHICH THE
498 | C INITIAL POINT OF THE RAY IS SITIUATED
499 | C
500 | IF(Y(1).LT.BRD(1).OR.Y(1).GT.BRD(2).OR.Y(2).LT.BRD(3).OR.Y(2).GT.
501 | 1 BRD(4)) GOTO 4
502 | INTR=1
503 | 1 CALL DISC (Y,DEP)
504 | ZINT=DEP(1)
505 | IF(ABS(Y(3)).GT.0.00001) GOTO 2
506 | ISOUR=1
507 | C
508 | C REDEFINITION OF Z-COORDINATES FOR A SOURCE ON THE EARTH SURFACE
509 | C
510 | Z0=ZINT
511 | GOTO 5
512 | 2 IF(Y(3).LT.ZINT.AND.INTR.EQ.1) GOTO 4
513 | IF(Y(3).LT.ZINT) GOTO 5
514 | IF(ABS(Y(3)-ZINT).LT.RNULL.AND.INTR.EQ.NINT) GOTO 5
515 | IF(INTR.EQ.NINT) GOTO 4
516 | ISOUR=INTR
517 | INTR=INTR+1
518 | GOTO 1
519 | 4 WRITE(lou,'(A,/,6F10.5,/,4F10.5)')' Y,BRD',Y,BRD
520 | IND=50
521 | RETURN
522 | C
523 | C DETERMINATION OF INITIAL CONDITIONS FOR THE RUNGE-KUTTA PROCEDURE
524 | C
525 | 5 IF(IND.GE.0) GOTO 6
526 | IND=ISOUR
527 | RETURN
528 | 6 LAY=ISOUR
529 | is(3,1)=lay
530 | INT1=ISOUR
531 | IF(ISOUR.NE.CODE(1,1)) IND=14
532 | IF(ISOUR.NE.CODE(1,1)) RETURN
533 | ITYPE=CODE(1,2)
534 | CALL PARDIS(Y,0)
535 | C
536 | C DETERMINATION OF INITIAL VALUES FOR RAY TRACING
537 | C AND DYNAMIC RAY TRACING
538 | C
539 | kdim=6
540 | if(nder.gt.1)kdim=18
541 | csp=cos(psi0)
542 | snp=sin(psi0)
543 | csf=cos(fi0)
544 | snf=sin(fi0)
545 | if(mori.eq.0)then
546 | Y(4)=CSP*CSF
547 | Y(5)=SNP*CSF
548 | Y(6)=SNF
549 | else
550 | y(4)=csf*csp
551 | y(5)=snp
552 | y(6)=snf*csp
553 | end if
554 | do 8 k=1,3
555 | pn(k)=y(k+3)
556 | 8 continue
557 | if(nder.gt.1)then
558 | do 3 k=7,12
559 | y(k)=0.
560 | 3 continue
561 | if(mori.eq.0)then
562 | y(13)=-snp
563 | y(14)=csp
564 | y(15)=0.
565 | y(16)=-csp*snf
566 | y(17)=-snp*snf
567 | y(18)=csf
568 | else
569 | y(13)=-snf
570 | y(14)=0.
571 | y(15)=csf
572 | y(16)=-csf*snp
573 | y(17)=csp
574 | y(18)=-snf*snp
575 | end if
576 | end if
577 | IF(IANI(ISOUR).ne.0)then
578 | C
579 | C SOURCE LOCATED IN AN ANISOTROPIC LAYER
580 | C
581 | CALL INIT(pn,VSQ)
582 | IF(IPRINT.GT.2)WRITE(lou,'(a,3F14.6)')' V1,V2,V3=', VSQ
583 | VP=AMAX1(VSQ(1),VSQ(2),VSQ(3))
584 | VS1=AMIN1(VSQ(1),VSQ(2),VSQ(3))
585 | VS2=VSQ(1)+VSQ(2)+VSQ(3)-VP-VS1
586 | IF(ITYPE.EQ.3)V=SQRT(VP)
587 | IF(ITYPE.EQ.1)V=SQRT(VS1)
588 | IF(ITYPE.EQ.2)V=SQRT(VS2)
589 | do 7 i=4,6
590 | y(i)=y(i)/v
591 | 7 continue
592 | if(nder.gt.1)then
593 | nder=1
594 | call fct(0.,y,dery)
595 | nder=2
596 | vg=sqrt(dery(1)*dery(1)+dery(2)*dery(2)+dery(3)*dery(3))
597 | if(mori.eq.0)then
598 | auxp=-dery(1)*snp+dery(2)*csp
599 | auxf=-dery(1)*csp*snf-dery(2)*snp*snf+dery(3)*csf
600 | y(13)=y(13)-auxp*csp*csf/v
601 | y(14)=y(14)-auxp*snp*csf/v
602 | y(15)=y(15)-auxp*snf/v
603 | y(16)=y(16)-auxf*csp*csf/v
604 | y(17)=y(17)-auxf*snp*csf/v
605 | y(18)=y(18)-auxf*snf/v
606 | else
607 | auxp=-dery(1)*snf+dery(3)*csf
608 | auxf=-dery(1)*csf*snp+dery(2)*csp-dery(3)*snf*snp
609 | y(13)=y(13)-auxp*csf*csp/v
610 | y(14)=y(14)-auxp*snp/v
611 | y(15)=y(15)-auxp*snf*csp/v
612 | y(16)=y(16)-auxf*csf*csp/v
613 | y(17)=y(17)-auxf*snp/v
614 | y(18)=y(18)-auxf*snf*csp/v
615 | end if
616 | do 11 i=13,18
617 | y(i)=y(i)/v
618 | 11 continue
619 | C
620 | C DETERMINATION OF THE SOURCE INDEX IN ANISOTROPIC MEDIUM
621 | C
622 | call fct(0.,y,dery)
623 | aaa=y(4)*dery(1)+y(5)*dery(2)+y(6)*dery(3)
624 | if(abs(aaa-1.).gt.1.0e-02)then
625 | ind=10
626 | return
627 | end if
628 | el=-(dery(7)*y(13)+dery(8)*y(14)+dery(9)*y(15))/vg
629 | em=-(dery(10)*y(13)+dery(11)*y(14)+dery(12)*y(15))/vg
630 | en=-(dery(10)*y(16)+dery(11)*y(17)+dery(12)*y(18))/vg
631 | ee=y(13)*y(13)+y(14)*y(14)+y(15)*y(15)
632 | ff=y(13)*y(16)+y(14)*y(17)+y(15)*y(18)
633 | gg=y(16)*y(16)+y(17)*y(17)+y(18)*y(18)
634 | egf=(ee*gg-ff*ff)/v/v
635 | be=el*gg+en*ee-2.*em*ff
636 | ce=el*en-em*em
637 | if(egf.gt.0.)then
638 | if(ce.lt.0.)kmah=-1
639 | if(ce.gt.0.)then
640 | if(be.lt.0.)kmah=0
641 | if(be.gt.0.)kmah=-2
642 | end if
643 | end if
644 | if(egf.lt.0.)then
645 | if(ce.gt.0.)kmah=-1
646 | if(ce.lt.0.)then
647 | if(be.gt.0.)kmah=0
648 | if(be.lt.0.)kmah=-2
649 | end if
650 | end if
651 | end if
652 | end if
653 | C
654 | C SOURCE LOCATED IN AN ISOTROPIC LAYER
655 | C
656 | IF(IANI(ISOUR).eq.0)then
657 | IF(ITYPE.EQ.3)V=SQRT(A11)
658 | IF(ITYPE.NE.3)V=SQRT(A44)
659 | do 9 i=4,kdim
660 | y(i)=y(i)/v
661 | 9 continue
662 | end if
663 | C
664 | IND=0
665 | IND1=0
666 | PRM(1)=T0
667 | PRM(2)=TMAX
668 | PRM(3)=DT
669 | IF(ITYPE.NE.3) PRM(3)=DT*1.7
670 | PRM(4)=AC
671 | T=PRM(1)
672 | 20 CONTINUE
673 | DO 10 I=1,3
674 | auxx=y(4)*y(4)+y(5)*y(5)+y(6)*y(6)
675 | auxx=sqrt(auxx)
676 | DIN(I)=auxx
677 | din(i+3)=prm(3)/auxx
678 | 10 CONTINUE
679 | do 25 i=7,kdim
680 | din(i)=0.
681 | 25 continue
682 | DO 30 I=1,kdim
683 | DERY(I)=DIN(I)
684 | 30 CONTINUE
685 | C
686 | C COMPUTATION OF THE RAY
687 | C
688 | CALL RKGS(PRM,Y,DERY,kdim,IHLF,FCT,OUT,AUX)
689 | IF(IHLF.EQ.11) IND=5
690 | IF(IHLF.EQ.12) IND=6
691 | IF(IHLF.EQ.13) IND=7
692 | IF(IND.GE.5.AND.IND.LE.7) RETURN
693 | IF(ABS(PRM(5)).GT.0.0001) GOTO 35
694 | IF(IND.eq.12) GOTO 70
695 | GOTO 60
696 | 35 CONTINUE
697 | XX=Y(1)
698 | YY=Y(2)
699 | ZZ=Y(3)
700 | T=AY(1,N)
701 | IF(ABS(PRM(5)-2.).GT.0.0001) GOTO 80
702 | C
703 | C INTEGRATION FROM THE POINT OF REFLECTION/TRANSMISSION TO THE CLOSEST
704 | C POINT OF THE RAY CORRESPONDING TO REGULAR TIME STEP
705 | C
706 | PRM(1)=AY(1,N)
707 | I=INT((PRM(1)-T0)/DT)
708 | PRM(2)=FLOAT(I+1)*DT+T0
709 | PRM(3)=DT
710 | GOTO 20
711 | 60 PRM(1)=PRM(2)
712 | PRM(2)=TMAX
713 | PRM(3)=DT
714 | IF(ITYPE.NE.3) PRM(3)=1.7*DT
715 | N=N-1
716 | GOTO 20
717 | 70 CONTINUE
718 | XX=Y(1)
719 | YY=Y(2)
720 | ZZ=Y(3)
721 | 80 continue
722 | c if(kmah.ne.0)ind1=ind1+50
723 | IF(IREFR.EQ.1) IND1=-IND1
724 | PX=Y(4)
725 | PY=Y(5)
726 | PZ=Y(6)
727 | if(nder.gt.1)then
728 | do 90 i=1,3
729 | xdyn(i,1)=y(i+6)
730 | xdyn(i,2)=y(i+9)
731 | xdyn(i,3)=dery(i)
732 | ydyn(i,1)=y(i+12)
733 | ydyn(i,2)=y(i+15)
734 | ydyn(i,3)=dery(i+3)
735 | 90 continue
736 | end if
737 | RETURN
738 | END
739 | C
740 | C *********************************************************
741 | C
742 | SUBROUTINE RECEIV(XSOUR,YSOUR,ZSOUR,TSOUR,DT,AC,ITMAX,ASTART,
743 | 1ASTEP,AFIN,BMIN,BSTEP,BMAX,MOUT,LU1,LU2,METHOD,ITPR,NCD)
744 | C
745 | C TWO-POINT RAY TRACING
746 | C
747 | COMPLEX AMPX1,AMPX2,AMPY1,AMPY2,AMPZ1,AMPZ2,APX,APY,APZ
748 | DIMENSION JC(50,2),YDD(2),DEP(6)
749 | DIMENSION TIME(500),XCOOR(500),ZCOOR(500),INDI(500),AMPX1(500),
750 | 1AMPY1(500),AMPZ1(500),AMPX2(500),AMPY2(500),AMPZ2(500),
751 | 2p(500,3),pol(500,3),pol1(500,3),APX(2),APY(2),APZ(2)
752 | COMMON /AUXI/ IANI(20),INTR,INT1,IPREC,KRE,IREFR,LAY,NDER,IPRINT,
753 | 1 MPRINT,NTR,ISQRT,NAUX,ISOUR,MAUX,MREG,MDIM,IPOL,MSCON,LOU,
754 | 2 IAMP,MTRNS,ICOEF,IAD,IRHO,ISHEAR,IAC,IRT,mori
755 | INTEGER CODE
756 | COMMON /COD/ CODE(50,2),KREF,KC,ITYPE
757 | COMMON /DIST/ DST(200),NDST,REPS,PROF(2),NDSTP,PREPS,LNDST,
758 | 1XPRF,YPRF,ILOC
759 | COMPLEX PS,CKMAH
760 | COMMON /RAY/ AY(28,2000),DS(20,50),KINT(50),HHH(3,3),tmax,
761 | 1 PS(3,7,50),IS(8,50),N,IREF,IND,IND1
762 | COMMON /RAY2/ DRY(3,2000)
763 | COMMON/VSP/XVSP,YVSP,XNRM,YNRM,ICOD,IVSP
764 | COMMON/DYN/XDYN(3,3),ydyn(3,3)
765 | COMMON/KM/KMAH,SPROLD,TSTOLD
766 | COMMON/VRML/LUBRD,LUGRD,LUIND,LURAY
767 | C
768 | ITER=0
769 | indr1=0
770 | II=0
771 | DD=0.
772 | C
773 | AA=ASTART-ASTEP
774 | BMIN1=BMIN
775 | REPS1=.05*REPS
776 | INDEX=0
777 | INUM=0
778 | IK1=0
779 | ICR=0
780 | INDS=ISOUR
781 | C
782 | C LOOP IN DECLINATION, FROM VALUE ASTART TO AFIN, WITH THE STEP
783 | C ASTEP
784 | C
785 | 1 AA=AA+ASTEP
786 | PNEW=AA
787 | IF(ASTEP.GT.0..AND.AA.GT.AFIN)GO TO 99
788 | IF(ASTEP.LT.0..AND.AA.LT.AFIN)GO TO 99
789 | 4 IND=INDS
790 | CALL PROFIL(XSOUR,YSOUR,ZSOUR,TSOUR,AA,PAZM,r,XX,YY,Zz,T,
791 | 1DT,AC,BMIN,BSTEP,BMAX,ITMAX,MOUT,NCD,METHOD,ITPR,indr1)
792 | IF(IND.EQ.14)RETURN
793 | IF(ITPR.EQ.43)r=Zz
794 | IF(NDST.EQ.0.AND.LNDST.EQ.0)THEN
795 | BMIN=BMIN1
796 | GO TO 1
797 | END IF
798 | IF(NDST.EQ.0)GO TO 65
799 | IF(IND.EQ.ITPR)rAX=r
800 | IF(IND.EQ.ITPR)PNEW=AA
801 | IF(MOUT.GE.2)WRITE(LOU,100)IND,IND1,KMAH,r,T,AA
802 | IF(INUM.NE.0)GO TO 2
803 | dOLD=AA
804 | aold=pazm
805 | IOLD=IND
806 | IOLD1=IND1
807 | rOLD=r
808 | xold=xx
809 | yold=yy
810 | zold=zz
811 | TOLD=T
812 | INUM=1
813 | GO TO 1
814 | C
815 | C PARAMETERS FOR THE PRECEDING RAY:
816 | C DOLD (AA), AOLD (PAZM), ROLD (R), IOLD (IND)
817 | C PARAMETERS FOR THE NEW RAY:
818 | C DNEW (AA), ANEW (PAZM), RNEW (R), INEW (IND)
819 | C
820 | 2 INEW=IND
821 | INEW1=IND1
822 | dNEW=AA
823 | anew=pazm
824 | rNEW=r
825 | xnew=xx
826 | ynew=yy
827 | znew=zz
828 | TNEW=T
829 | IF(INEW.EQ.ITPR.AND.IOLD.EQ.ITPR)GO TO 21
830 | IF(INEW.EQ.ITPR)GO TO 50
831 | IF(IOLD.EQ.ITPR)GO TO 55
832 | IF(INEW.EQ.9.AND.IOLD.NE.9.AND.IOLD.NE.8)GO TO 30
833 | IF(INEW.NE.9.AND.INEW.NE.8.AND.IOLD.EQ.9)GO TO 35
834 | c indr1=ind1
835 | GO TO 3
836 | 21 IF(IOLD1.NE.INEW1)IK1=2
837 | IF(IK1.EQ.2)GO TO 55
838 | c indr1=ind1
839 | GO TO 40
840 | C
841 | C NO ITERATIONS, TAKE A NEW RAY IN THE LOOP
842 | C
843 | 3 CONTINUE
844 | IOLD=INEW
845 | IOLD1=INEW1
846 | rOLD=rNEW
847 | xold=xnew
848 | yold=ynew
849 | zold=znew
850 | dOLD=dNEW
851 | aold=anew
852 | TOLD=TNEW
853 | GO TO 1
854 | C
855 | C REGULAR CASE: IOLD=3, INEW=3
856 | C
857 | 40 rrNEW=rNEW
858 | xxnew=xnew
859 | yynew=ynew
860 | zznew=znew
861 | rrOLD=rOLD
862 | xxold=xold
863 | yyold=yold
864 | zzold=zold
865 | ddNEW=dNEW
866 | aanew=anew
867 | ddOLD=dOLD
868 | aaold=aold
869 | TTNEW=TNEW
870 | TTOLD=TOLD
871 | IBNEW=0
872 | IBOLD=0
873 | 41 IF(rrNEW.GT.rrOLD.AND.DST(2).GT.DST(1))GO TO 46
874 | IF(rrNEW.LT.rrOLD.AND.DST(2).LT.DST(1))GO TO 46
875 | C
876 | C REGULAR CASE: RRNEW.LE.RROLD, ITREND=-1 (REVERSE BRANCH)
877 | C
878 | ITREND=-1
879 | DO 42 I=1,NDST
880 | NDD=NDST-I+1
881 | DD=DST(NDD)
882 | dr=rrOLD
883 | IF(IBOLD.EQ.1)dr=dr+REPS
884 | IF(DD.GE.dr)GO TO 42
885 | dr=rrNEW
886 | IF(IBNEW.EQ.1)dr=dr-REPS
887 | IF(DD.LT.dr.AND.IK1.NE.0)GO TO 6
888 | IF(DD.LT.dr)GO TO 3
889 | II=NDD
890 | GO TO 43
891 | 42 CONTINUE
892 | IF(IK1.NE.0)GO TO 6
893 | GO TO 3
894 | C
895 | C REGULAR CASE: RRNEW.GT.RROLD, ITREND=1 (REGULAR BRANCH)
896 | C
897 | 46 ITREND=1
898 | DO 44 I=1,NDST
899 | DD=DST(I)
900 | dr=rrOLD
901 | IF(IBOLD.EQ.1)dr=dr-REPS
902 | IF(DD.LE.dr)GO TO 44
903 | dr=rrNEW
904 | IF(IBNEW.EQ.1)dr=dr+REPS
905 | IF(DD.GT.dr.AND.IK1.NE.0)GO TO 6
906 | IF(DD.GT.dr)GO TO 3
907 | II=I
908 | GO TO 43
909 | 44 CONTINUE
910 | IF(IK1.NE.0)GO TO 6
911 | GO TO 3
912 | 43 d1=ddOLD
913 | a1=aaold
914 | d2=ddNEW
915 | a2=aanew
916 | x1=xxold
917 | y1=yyold
918 | z1=zzold
919 | x2=xxnew
920 | y2=yynew
921 | z2=zznew
922 | T1=TTOLD
923 | T2=TTNEW
924 | C
925 | C I T E R A T I O N S
926 | C
927 | 60 continue
928 | C
929 | C TRANSFORMATION OF COORDINATES OF A RECEIVER FROM CYLINDRICAL
930 | C TO CARTESIAN COORDINATES
931 | C
932 | IF(ITPR.NE.43)THEN
933 | XD=Xprf+DD*COS(PROF(1))
934 | YD=Yprf+DD*SIN(PROF(1))
935 | YDD(1)=XD
936 | YDD(2)=YD
937 | INTR=1
938 | IF(ITPR.GT.100)INTR=ITPR-100
939 | CALL DISC(YDD,DEP)
940 | ZD=DEP(1)
941 | END IF
942 | IF(ITPR.EQ.43)THEN
943 | XD=XVSP
944 | YD=YVSP
945 | ZD=DD
946 | END IF
947 | DELX=XD-X1
948 | DELY=YD-Y1
949 | DELZ=ZD-Z1
950 | dr1=sqrt(delx*delx+dely*dely+delz*delz)
951 | DELX=XD-X2
952 | DELY=YD-Y2
953 | DELZ=ZD-Z2
954 | dr2=sqrt(delx*delx+dely*dely+delz*delz)
955 | c
956 | ITER=0
957 | GO TO 61
958 | 68 rAX=r
959 | 61 ITER=ITER+1
960 | IF(ITER.GT.ITMAX)GO TO 80
961 | C
962 | C PREPARATION FOR ITERATIVE SOLUTION OF TWO-POINT RAY TRACING
963 | C
964 | if(method.eq.2.or.itpr.ne.ind)go to 69
965 | C
966 | C PARAXIAL RAY APPROXIMATION
967 | C
968 | AUX1=XDYN(2,1)*XDYN(3,2)-XDYN(3,1)*XDYN(2,2)
969 | AUX2=XDYN(3,1)*XDYN(1,2)-XDYN(1,1)*XDYN(3,2)
970 | AUX3=XDYN(1,1)*XDYN(2,2)-XDYN(2,1)*XDYN(1,2)
971 | DET=AUX1*XDYN(1,3)+AUX2*XDYN(2,3)+AUX3*XDYN(3,3)
972 | IF(ABS(DET).LT..0000001)GO TO 69
973 | AUX1=DELY*XDYN(3,2)-DELZ*XDYN(2,2)
974 | AUX2=DELZ*XDYN(1,2)-DELX*XDYN(3,2)
975 | AUX3=DELX*XDYN(2,2)-DELY*XDYN(1,2)
976 | IF(mori.eq.0)CSF=COS(PNEW)
977 | if(mori.ne.0)csf=cos(pazm)
978 | IF(ABS(csf).LT..0000001)GO TO 69
979 | aux11=(AUX1*XDYN(1,3)+AUX2*XDYN(2,3)+AUX3*XDYN(3,3))/DET/csf
980 | AUX1=DELZ*XDYN(2,1)-DELY*XDYN(3,1)
981 | AUX2=DELX*XDYN(3,1)-DELZ*XDYN(1,1)
982 | AUX3=DELY*XDYN(1,1)-DELX*XDYN(2,1)
983 | aux22=(AUX1*XDYN(1,3)+AUX2*XDYN(2,3)+AUX3*XDYN(3,3))/DET
984 | if(mori.eq.0)pazm=pazm+aux11
985 | if(mori.ne.0)pazm=pazm+aux22
986 | if(mori.eq.0)pnew=pnew+aux22
987 | if(mori.ne.0)pnew=pnew+aux11
988 | go to 72
989 | C
990 | C HALVING OF INTERVAL
991 | C
992 | 69 pnew=0.5*(d1+d2)
993 | pazm=0.5*(a1+a2)
994 | C
995 | C INITIAL ANGLES FOR A NEW RAY WERE DETERMINED
996 | C
997 | 72 ind=inds
998 | rOLD=0.
999 | SPROLD=0.
1000 | IF(MDIM.GE.1)NDER=2
1001 | CALL RAYA(XSOUR,YSOUR,ZSOUR,TSOUR,PNEW,PAZM,PX,PY,PZ,XX,YY,Zz,
1002 | 1T,DT,AC)
1003 | NDER=1
1004 | XE=XX-Xprf
1005 | YE=YY-Yprf
1006 | r=SQRT(XE*XE+YE*YE)
1007 | delx=xd-xx
1008 | dely=yd-yy
1009 | delz=zd-zz
1010 | drs=sqrt(delx*delx+dely*dely+delz*delz)
1011 | IF(ITPR.EQ.43)r=Zz
1012 | IF(MOUT.GE.2)WRITE(LOU,101)IND,IND1,ITER,KMAH,DD,r,T,PNEW,PAZM
1013 | if(mout.eq.4)write(lou,120)xd,yd,zd,xx,yy,zz
1014 | 120 format(1x,'(x,y,z) receiver',3F15.8/1x,'(xx,yy,zz) ray',3F15.8)
1015 | IF(IND.NE.ITPR)then
1016 | d2=PNEW
1017 | a2=pazm
1018 | x2=xx
1019 | y2=yy
1020 | z2=zz
1021 | dr2=drs
1022 | GO TO 61
1023 | end if
1024 | IF(drs.LT.REPS)GO TO 65
1025 | IF(dr2.LT.dr1)GO TO 63
1026 | d2=PNEW
1027 | a2=pazm
1028 | x2=xx
1029 | y2=yy
1030 | z2=zz
1031 | dr2=drs
1032 | T2=T
1033 | GO TO 68
1034 | 63 continue
1035 | d1=PNEW
1036 | a1=pazm
1037 | x1=xx
1038 | y1=yy
1039 | z1=zz
1040 | dr1=drs
1041 | T1=T
1042 | GO TO 68
1043 | C
1044 | C SUCCESSFUL ITERATIONS
1045 | C
1046 | 65 INDEX=INDEX+1
1047 | IF(NDST.EQ.0.AND.IND.NE.3)GO TO 900
1048 | IF(MDIM.NE.0)CALL AMPL(APX,APY,APZ,UU)
1049 | 900 CONTINUE
1050 | IF(LURAY.NE.0)GO TO 800
1051 | IF(LU1.EQ.0.OR.NDST.EQ.0)GO TO 800
1052 | TIME(INDEX)=T
1053 | XCOOR(INDEX)=r
1054 | ZCOOR(INDEX)=Zz
1055 | INDI(INDEX)=II
1056 | 800 CONTINUE
1057 | rAX=r
1058 | IF(MOUT.GE.1)WRITE(LOU,113)DD,r,XX,YY,Zz,T,PNEW,PAZM,
1059 | 1IND,IND1,ITER,II,INDEX
1060 | IF(LU1.NE.0.AND.NDST.NE.0)WRITE(LU1,105)N,II
1061 | IF(LU1.NE.0.AND.NDST.NE.0)
1062 | 1WRITE(LU1,108)(AY(1,I),AY(2,I),AY(3,I),AY(4,I),AY(5,I),AY(6,I),
1063 | 2AY(7,I),AY(8,I),AY(12,I),AY(16,I),AY(17,I),AY(18,I),AY(19,I),
1064 | 3AY(20,I),AY(21,I),AY(22,I),I=1,N)
1065 | IF(MDIM.EQ.0)GO TO 80
1066 | IF(IND.NE.ITPR)GO TO 80
1067 | SPR=1.
1068 | CKMAH=(1.,0.)
1069 | IF(MDIM.EQ.2)THEN
1070 | IF(KMAH.NE.0)THEN
1071 | PH=-1.57079632*KMAH
1072 | CSKMAH=COS(PH)
1073 | SNKMAH=SIN(PH)
1074 | CKMAH=CMPLX(CSKMAH,SNKMAH)
1075 | END IF
1076 | SPR1=XDYN(2,1)*XDYN(3,2)-XDYN(3,1)*XDYN(2,2)
1077 | SPR2=XDYN(3,1)*XDYN(1,2)-XDYN(1,1)*XDYN(3,2)
1078 | SPR3=XDYN(1,1)*XDYN(2,2)-XDYN(2,1)*XDYN(1,2)
1079 | SPR=XDYN(1,3)*SPR1+XDYN(2,3)*SPR2+XDYN(3,3)*SPR3
1080 | VV=ay(5,n)*ay(5,n)+ay(6,n)*ay(6,n)+ay(7,n)*ay(7,n)
1081 | SPR=SPR*SQRT(VV)
1082 | SPR=SQRT(ABS(SPR))
1083 | IF(MOUT.GE.2)WRITE(LOU,110)XDYN
1084 | IF(MOUT.GE.2)WRITE(LOU,112)yDYN
1085 | END IF
1086 | DO 802 I=1,2
1087 | APX(I)=APX(I)*UU*CKMAH/SPR
1088 | APY(I)=APY(I)*UU*CKMAH/SPR
1089 | APZ(I)=APZ(I)*UU*CKMAH/SPR
1090 | 802 CONTINUE
1091 | IF(MOUT.GE.1)
1092 | 1WRITE(LOU,'(2X,F8.5,6(2X,E11.5)/10X,6(2X,E11.5),F10.5,I5)')
1093 | 2UU,(APX(I),APY(I),APZ(I),I=1,2),SPR,KMAH
1094 | TAUX=T
1095 | TAST=0.
1096 | NCC=code(1,2)
1097 | ncod=ncd
1098 | IF(iani(isour).eq.0.and.ncc.ne.3)NCOD=-NCD
1099 | call polar(1,1,1,1)
1100 | IF(LU2.NE.0.AND.NDST.NE.0)then
1101 | WRITE(LU2,116)ncod,II,T,APX(1),APY(1),APZ(1),TAST
1102 | write(20,*) ncod,II,T,APX(1),APY(1),APZ(1),TAST !!Li
1103 | write(30,130) ncod,II,T,APX(1),APY(1),APZ(1),TAST !!Li
1104 |
1105 | if(ncc.eq.1.and.ncod.lt.0)WRITE(LU2,115)APX(2),APY(2),APZ(2)
1106 | WRITE(LU2,114)ay(5,1),ay(6,1),ay(7,1)
1107 | if(ncc.eq.1)WRITE(LU2,114)(hhh(1,i),i=1,3)
1108 | if(ncc.eq.1.and.ncod.lt.0)WRITE(LU2,114)(hhh(2,i),i=1,3)
1109 | if(ncc.eq.2)WRITE(LU2,114)(hhh(2,i),i=1,3)
1110 | if(ncc.eq.3)WRITE(LU2,114)(hhh(3,i),i=1,3)
1111 | c write(LU2,114)spr
1112 | end if
1113 | IF(LURAY.NE.0)GO TO 801
1114 | IF(LU1.EQ.0.OR.NDST.EQ.0)GO TO 801
1115 | AMPX1(INDEX)=APX(1)
1116 | AMPY1(INDEX)=APY(1)
1117 | AMPZ1(INDEX)=APZ(1)
1118 | if(ncc.eq.1.and.ncod.lt.0)then
1119 | AMPX2(INDEX)=APX(2)
1120 | AMPY2(INDEX)=APY(2)
1121 | AMPZ2(INDEX)=APZ(2)
1122 | end if
1123 | p(index,1)=ay(5,1)
1124 | p(index,2)=ay(6,1)
1125 | p(index,3)=ay(7,1)
1126 | if(ncc.eq.1)then
1127 | pol(index,1)=hhh(1,1)
1128 | pol(index,2)=hhh(1,2)
1129 | pol(index,3)=hhh(1,3)
1130 | end if
1131 | if(ncc.eq.1.and.ncod.lt.0)then
1132 | pol1(index,1)=hhh(2,1)
1133 | pol1(index,2)=hhh(2,2)
1134 | pol1(index,3)=hhh(2,3)
1135 | end if
1136 | if(ncc.eq.2)then
1137 | pol(index,1)=hhh(2,1)
1138 | pol(index,2)=hhh(2,2)
1139 | pol(index,3)=hhh(2,3)
1140 | end if
1141 | if(ncc.eq.3)then
1142 | pol(index,1)=hhh(3,1)
1143 | pol(index,2)=hhh(3,2)
1144 | pol(index,3)=hhh(3,3)
1145 | end if
1146 | 801 CONTINUE
1147 | C
1148 | C GENERATE FILE FOR PLOTTING RAYS
1149 | C
1150 | IF(LURAY.NE.0)THEN
1151 | WRITE(LURAY,119)INDEX
1152 | DO 803 J=1,N
1153 | WRITE(LURAY,122)AY(2,J),AY(3,J),AY(4,J)
1154 | 803 CONTINUE
1155 | WRITE(LURAY,121)
1156 | END IF
1157 | C
1158 | C
1159 | 80 IF(NDST.EQ.0.AND.LNDST.EQ.1)THEN
1160 | BMIN=BMIN+BSTEP
1161 | GO TO 4
1162 | END IF
1163 | d1=PNEW
1164 | a1=pazm
1165 | dr1=drs
1166 | x1=xx
1167 | y1=yy
1168 | z1=zz
1169 | T1=TAUX
1170 | d2=ddNEW
1171 | a2=aanew
1172 | x2=xxnew
1173 | y2=yynew
1174 | z2=zznew
1175 | T2=TTNEW
1176 | IF(ITREND.EQ.(-1))GO TO 85
1177 | II=II+1
1178 | IF(II.GT.NDST.AND.IK1.NE.0)GO TO 6
1179 | IF(method.eq.1)then
1180 | aa=pnew
1181 | inum=0
1182 | end if
1183 | IF(II.GT.NDST)GO TO 3
1184 | DD=DST(II)
1185 | if(method.eq.1)go to 60
1186 | dr=rrNEW
1187 | IF(IBNEW.EQ.1)dr=dr+REPS
1188 | IF(DD.GT.dr.AND.IK1.NE.0)GO TO 6
1189 | IF(DD.GT.dr)GO TO 3
1190 | GO TO 60
1191 | 85 II=II-1
1192 | IF(II.LT.1.AND.IK1.NE.0)GO TO 6
1193 | IF(method.eq.1)then
1194 | aa=pnew
1195 | inum=0
1196 | end if
1197 | IF(II.LT.1)GO TO 3
1198 | DD=DST(II)
1199 | if(method.eq.1)go to 60
1200 | dr=rrNEW
1201 | IF(IBNEW.EQ.1)dr=dr-REPS
1202 | IF(DD.LT.dr.AND.IK1.NE.0)GO TO 6
1203 | IF(DD.LT.dr)GO TO 3
1204 | GO TO 60
1205 | C
1206 | C
1207 | 6 CONTINUE
1208 | IF(IK1.EQ.1)GO TO 7
1209 | IK1=1
1210 | d1=dNEW
1211 | a1=anew
1212 | d2=ddNEW
1213 | a2=aanew
1214 | IOLD1=INEW1
1215 | indr1=iold1
1216 | GO TO 59
1217 | 7 IK1=0
1218 | rrOLD=rrNEW
1219 | xxold=xxnew
1220 | yyold=yynew
1221 | zzold=zznew
1222 | ddOLD=ddNEW
1223 | aaold=aanew
1224 | TTOLD=TTNEW
1225 | IBOLD=IBNEW
1226 | rrNEW=rNEW
1227 | xxnew=xnew
1228 | yynew=ynew
1229 | zznew=znew
1230 | ddNEW=dNEW
1231 | aanew=anew
1232 | TTNEW=TNEW
1233 | IBNEW=0
1234 | GO TO 41
1235 | C
1236 | C E N D O F I T E R A T I O N S
1237 | C
1238 | C
1239 | C BOUNDARY RAYS. CASE IOLD.NE.3, INEW=3
1240 | C
1241 | 50 rrNEW=rNEW
1242 | xxnew=xnew
1243 | yynew=ynew
1244 | zznew=znew
1245 | TTNEW=TNEW
1246 | ddNEW=dNEW
1247 | aanew=anew
1248 | IBNEW=0
1249 | d1=dOLD
1250 | d2=dNEW
1251 | a1=dOLD
1252 | a2=dNEW
1253 | 54 IRES=0
1254 | ITER=0
1255 | 51 PNEW=0.5*(d1+d2)
1256 | ITER=ITER+1
1257 | IND=INDS
1258 | CALL PROFIL(XSOUR,YSOUR,ZSOUR,TSOUR,PNEW,PAZM,r,XX,YY,Zz,T,
1259 | 1DT,AC,BMIN,BSTEP,BMAX,ITMAX,MOUT,NCD,METHOD,ITPR,indr1)
1260 | IF(ITPR.EQ.43)r=Zz
1261 | IF(MOUT.GE.2)WRITE(LOU,103)IND,IND1,ITER,r,T,PNEW
1262 | IF(IND.EQ.ITPR.AND.LNDST.EQ.1)GO TO 52
1263 | d1=PNEW
1264 | a1=pazm
1265 | GO TO 53
1266 | 52 rrOLD=r
1267 | xxold=xx
1268 | yyold=yy
1269 | zzold=zz
1270 | ddOLD=PNEW
1271 | aaold=pazm
1272 | TTOLD=T
1273 | IBOLD=1
1274 | IF(ABS(r-rAX).LT.REPS1.AND.IRES.EQ.1)ITER=ITMAX
1275 | IRES=1
1276 | rAX=r
1277 | ZAX=Zz
1278 | IAX=IND
1279 | IAX1=IND1
1280 | T1=T
1281 | d2=PNEW
1282 | a2=pazm
1283 | 53 IF(ITER.LT.ITMAX)GO TO 51
1284 | IF(MOUT.GE.1.AND.IRES.EQ.1)
1285 | 1WRITE(LOU,107)rAX,ZAX,T1,d2,IAX,IAX1,IRES
1286 | IF(MOUT.GE.1.AND.IRES.EQ.0)
1287 | 1WRITE(LOU,107)r,Zz,T,PNEW,IND,IND1,IRES
1288 | IF(IRES.EQ.1)GO TO 41
1289 | GO TO 3
1290 | C
1291 | C BOUNDARY RAYS. CASE IOLD=3, INEW.NE.3
1292 | C OR CASE IOLD=3, INEW=3 BUT IOLD1.NE.INEW1
1293 | C
1294 | 55 rrOLD=rOLD
1295 | xxold=xold
1296 | yyold=yold
1297 | zzold=zold
1298 | ddOLD=dOLD
1299 | aaold=aold
1300 | TTOLD=TOLD
1301 | IBOLD=0
1302 | d1=dOLD
1303 | d2=dNEW
1304 | a1=aOLD
1305 | a2=aNEW
1306 | 59 IRES=0
1307 | ITER=0
1308 | 56 PNEW=0.5*(d1+d2)
1309 | ITER=ITER+1
1310 | IND=INDS
1311 | CALL PROFIL(XSOUR,YSOUR,ZSOUR,TSOUR,PNEW,PAZM,r,XX,YY,Zz,T,
1312 | 1DT,AC,BMIN,BSTEP,BMAX,ITMAX,MOUT,NCD,METHOD,ITPR,indr1)
1313 | IF(ITPR.EQ.43)r=Zz
1314 | IF(MOUT.GE.2)WRITE(LOU,103)IND,IND1,ITER,r,T,PNEW
1315 | IF(IND.EQ.ITPR.AND.IBOLD.EQ.1.AND.LNDST.EQ.1)GO TO 57
1316 | IF(IND.EQ.ITPR.AND.IND1.EQ.IOLD1.AND.LNDST.EQ.1)GO TO 57
1317 | d2=PNEW
1318 | a2=pazm
1319 | GO TO 58
1320 | 57 rrNEW=r
1321 | xxnew=xx
1322 | yynew=yy
1323 | zznew=zz
1324 | ddNEW=PNEW
1325 | aanew=pazm
1326 | TTNEW=T
1327 | IBNEW=1
1328 | IF(ABS(r-rAX).LT.REPS1.AND.IRES.EQ.1)ITER=ITMAX
1329 | IRES=1
1330 | rAX=r
1331 | ZAX=Zz
1332 | IAX=IND
1333 | IAX1=IND1
1334 | T2=T
1335 | d1=PNEW
1336 | a1=pazm
1337 | 58 IF(ITER.LT.ITMAX)GO TO 56
1338 | IF(MOUT.GE.1.AND.IRES.EQ.1)
1339 | 1WRITE(LOU,107)rAX,ZAX,T2,d1,IAX,IAX1,IRES
1340 | IF(MOUT.GE.1.AND.IRES.EQ.0)
1341 | 1WRITE(LOU,107)r,Zz,T,PNEW,IND,IND1,IRES
1342 | IF(IRES.EQ.1.AND.IK1.EQ.1)GO TO 7
1343 | IF(IRES.EQ.1)GO TO 41
1344 | GO TO 3
1345 | C
1346 | C CRITICAL RAYS. CASE IOLD.NE.9, IOLD.NE.3, INEW=9
1347 | C
1348 | 30 ITER=0
1349 | d1=dOLD
1350 | d2=dNEW
1351 | IRES=0
1352 | 31 PNEW=0.5*(d1+d2)
1353 | ITER=ITER+1
1354 | IND=INDS
1355 | CALL PROFIL(XSOUR,YSOUR,ZSOUR,TSOUR,PNEW,PAZM,r,XX,YY,Zz,T,
1356 | 1DT,AC,BMIN,BSTEP,BMAX,ITMAX,MOUT,NCD,METHOD,ITPR,indr1)
1357 | IF(ITPR.EQ.43)r=Zz
1358 | IF(MOUT.GE.2)WRITE(LOU,104)IND,IND1,ITER,r,T,PNEW
1359 | IF(IND.EQ.9)GO TO 32
1360 | IF(IND.EQ.ITPR)GO TO 33
1361 | d1=PNEW
1362 | GO TO 34
1363 | 32 IF(IND1.NE.INEW1)d1=PNEW
1364 | IF(IND1.NE.INEW1)GO TO 34
1365 | d2=PNEW
1366 | IF(ITER.EQ.ITMAX.AND.KC.NE.0.AND.IRES.EQ.1)GO TO 89
1367 | GO TO 34
1368 | 89 DO 86 K=1,KREF
1369 | DO 86 L=1,2
1370 | 86 JC(K,L)=CODE(K,L)
1371 | IRF3=IREF+3
1372 | DO 87 K=IRF3,KREF
1373 | DO 87 L=1,2
1374 | 87 CODE(K-2,L)=JC(K,L)
1375 | KREF1=KREF
1376 | KREF=KREF-2
1377 | ICR=1
1378 | ITER=ITMAX-1
1379 | GO TO 31
1380 | 33 IF(ABS(r-rAX).LT.REPS1.AND.IRES.EQ.1)ITER=ITMAX
1381 | IRES=1
1382 | rAX=r
1383 | rrnew=r
1384 | xxnew=xx
1385 | yynew=yy
1386 | zznew=zz
1387 | ZAX=Zz
1388 | IAX=IND
1389 | IAX1=IND1
1390 | T2=T
1391 | d1=PNEW
1392 | PAP=PNEW
1393 | 34 IF(ITER.LT.ITMAX)GO TO 31
1394 | IF(MOUT.GE.1.AND.IRES.EQ.1)
1395 | 1WRITE(LOU,111)rAX,ZAX,T2,PAP,IAX,IAX1,IRES
1396 | IF(MOUT.GE.1.AND.IRES.EQ.0)
1397 | 1WRITE(LOU,111)r,Zz,T,PNEW,IND,IND1,IRES
1398 | IF(IRES.EQ.0)GO TO 3
1399 | d2=PAP
1400 | rrNEW=rAX
1401 | ddNEW=d2
1402 | aanew=anew
1403 | TTNEW=T2
1404 | IBNEW=1
1405 | d1=dOLD
1406 | IF(ICR.EQ.0)GO TO 54
1407 | ICR=0
1408 | KREF=KREF1
1409 | DO 88 K=1,KREF
1410 | DO 88 L=1,2
1411 | 88 CODE(K,L)=JC(K,L)
1412 | GO TO 54
1413 | C
1414 | C CRITICAL RAYS. CASE IOLD=9, INEW.NE.9, INEW.NE.3.
1415 | C
1416 | 35 ITER=0
1417 | d1=dOLD
1418 | d2=dNEW
1419 | IRES=0
1420 | 36 PNEW=0.5*(d1+d2)
1421 | ITER=ITER+1
1422 | IND=INDS
1423 | CALL PROFIL(XSOUR,YSOUR,ZSOUR,TSOUR,PNEW,PAZM,r,XX,YY,Zz,T,
1424 | 1DT,AC,BMIN,BSTEP,BMAX,ITMAX,MOUT,NCD,METHOD,ITPR,indr1)
1425 | IF(ITPR.EQ.43)r=Zz
1426 | IF(MOUT.GE.2)WRITE(LOU,104)IND,IND1,ITER,r,T,PNEW
1427 | IF(IND.EQ.9)GO TO 37
1428 | IF(IND.EQ.ITPR)GO TO 38
1429 | d2=PNEW
1430 | GO TO 39
1431 | 37 IF(IND1.NE.INEW1)d2=PNEW
1432 | IF(IND1.NE.INEW1)GO TO 39
1433 | d1=PNEW
1434 | IF(ITER.EQ.ITMAX.AND.KC.NE.0.AND.IRES.EQ.1)GO TO 94
1435 | GO TO 39
1436 | 94 DO 91 K=1,KREF
1437 | DO 91 L=1,2
1438 | 91 JC(K,L)=CODE(K,L)
1439 | IRF3=IREF+3
1440 | DO 92 K=IRF3,KREF
1441 | DO 92 L=1,2
1442 | 92 CODE(K-2,L)=JC(K,L)
1443 | KREF1=KREF
1444 | KREF=KREF-2
1445 | ICR=1
1446 | ITER=ITMAX-1
1447 | GO TO 36
1448 | 38 IF(ABS(r-rAX).LT.REPS1.AND.IRES.EQ.1)ITER=ITMAX
1449 | IRES=1
1450 | rAX=r
1451 | rrold=r
1452 | xxold=xx
1453 | yyold=yy
1454 | zzold=zz
1455 | ZAX=Zz
1456 | IAX=IND
1457 | IAX1=IND1
1458 | d2=PNEW
1459 | PAP=PNEW
1460 | T1=T
1461 | 39 IF(ITER.LT.ITMAX)GO TO 36
1462 | IF(MOUT.GE.1.AND.IRES.EQ.1)
1463 | 1WRITE(LOU,111)rAX,ZAX,T1,PAP,IAX,IAX1,IRES
1464 | IF(MOUT.GE.1.AND.IRES.EQ.0)WRITE(LOU,111)r,Zz,T,PNEW,IND,IND1,IRES
1465 | IF(IRES.EQ.0)GO TO 3
1466 | d1=PAP
1467 | rrOLD=rAX
1468 | ddOLD=d1
1469 | aaold=aold
1470 | TTOLD=T1
1471 | IBOLD=1
1472 | d2=dNEW
1473 | IF(ICR.EQ.0)GO TO 59
1474 | ICR=0
1475 | KREF=KREF1
1476 | DO 93 K=1,KREF
1477 | DO 93 L=1,2
1478 | 93 CODE(K,L)=JC(K,L)
1479 | GO TO 59
1480 | C
1481 | C
1482 | 100 FORMAT(3I3,2F10.5,F15.10)
1483 | 101 FORMAT(1X,'ITERATIONS',5X,4I3,F10.5,4F15.10)
1484 | 102 FORMAT(5X,6I3,3F10.5,F15.10)
1485 | 103 FORMAT(2X,'BOUNDARY RAY',5X,3I3,2F10.5,F15.10)
1486 | 104 FORMAT(2X,'CRITICAL RAY',5X,3I3,2F10.5,F15.10)
1487 | 105 FORMAT(2I5)
1488 | 107 FORMAT(10X,3F10.5,F15.10,3I3,5X,'BOUNDARY RAY')
1489 | 108 FORMAT(16E15.5)
1490 | 109 FORMAT(I5,9E15.5)
1491 | 110 FORMAT(1X,'XDYN',3F10.5)
1492 | 111 FORMAT(10X,3F10.5,F15.10,3I3,5X,'CRITICAL RAY')
1493 | 112 FORMAT(1X,'YDYN',3F10.5)
1494 | 113 FORMAT(7F10.5,F15.10,5I3)
1495 | 114 FORMAT(3F10.5)
1496 | 115 FORMAT(6E12.6)
1497 | 116 FORMAT(2I3,F12.7,6E12.6,F10.6)
1498 | 130 FORMAT(2I4,F13.7,6E14.6,F14.6) !!
1499 | 117 FORMAT(6E15.5)
1500 | 119 FORMAT(2H'R,I3,1H',1X,'/')
1501 | 121 FORMAT('/')
1502 | 122 FORMAT(3(F10.5,1X),'/')
1503 | C
1504 | C
1505 | 99 N=0
1506 | NAUX=0
1507 | IF(LURAY.NE.0)RETURN
1508 | IF(LU1.NE.0.AND.NDST.NE.0)WRITE(LU1,100)N,NAUX
1509 | IF(NCC.EQ.1.AND.NCOD.LT.0)INDEX=-INDEX
1510 | IF(LU1.NE.0.AND.NDST.NE.0)WRITE(LU1,100)INDEX
1511 | IF(INDEX.EQ.0)RETURN
1512 | IF(INDEX.LT.0)INDEX=-INDEX
1513 | IF(LU1.NE.0.AND.NDST.NE.0)THEN
1514 | DO 200 I=1,INDEX
1515 | WRITE(LU1,109)INDI(I),XCOOR(I),ZCOOR(I),TIME(I),
1516 | 1 AMPX1(I),AMPY1(I),AMPZ1(I)
1517 | IF(NCC.EQ.1.AND.NCOD.LT.0)
1518 | 1 WRITE(LU1,117)AMPX2(I),AMPY2(I),AMPZ2(I)
1519 | WRITE(LU1,108)(P(I,K),K=1,3)
1520 | WRITE(LU1,108)(POL(I,K),K=1,3)
1521 | IF(NCC.EQ.1.AND.NCOD.LT.0)
1522 | 1 WRITE(LU1,108)(POL1(I,K),K=1,3)
1523 | 200 CONTINUE
1524 | END IF
1525 | RETURN
1526 | END
1527 | C
1528 | C *********************************************************
1529 | C
1530 | SUBROUTINE RKGS(PRMT,Y,DERY,NDIM,IHLF,FCT,OUTP,AUX)
1531 | DIMENSION Y(18),DERY(18),AUX(8,18),A(4),B(4),C(4),PRMT(5)
1532 | EXTERNAL FCT,OUTP
1533 | DO 1 I=1,NDIM
1534 | 1 AUX(8,I)=.0666667*DERY(I)
1535 | X=PRMT(1)
1536 | XEND=PRMT(2)
1537 | H=PRMT(3)
1538 | PRMT(5)=0.
1539 | CALL FCT(X,Y,DERY)
1540 | IF(H*(XEND-X))38,37,2
1541 | 2 A(1)=.5
1542 | A(2)=.2928932
1543 | A(3)=1.707107
1544 | A(4)=.1666667
1545 | B(1)=2.
1546 | B(2)=1.
1547 | B(3)=1.
1548 | B(4)=2.
1549 | C(1)=.5
1550 | C(2)=.2928932
1551 | C(3)=1.707107
1552 | C(4)=.5
1553 | DO 3 I=1,NDIM
1554 | AUX(1,I)=Y(I)
1555 | AUX(2,I)=DERY(I)
1556 | AUX(3,I)=0.
1557 | 3 AUX(6,I)=0.0
1558 | IREC=0
1559 | H=H+H
1560 | IHLF=-1
1561 | ISTEP=0
1562 | IEND=0
1563 | 4 IF((X+H-XEND)*H)7,6,5
1564 | 5 H=XEND-X
1565 | 6 IEND=1
1566 | 7 CALL OUTP(X,Y,DERY,IREC,NDIM,PRMT)
1567 | IF(PRMT(5))40,8,40
1568 | 8 ITEST=0
1569 | 9 ISTEP=ISTEP+1
1570 | J=1
1571 | 10 AJ=A(J)
1572 | BJ=B(J)
1573 | CJ=C(J)
1574 | DO 11 I=1,NDIM
1575 | R1=H*DERY(I)
1576 | R2=AJ*(R1-BJ*AUX(6,I))
1577 | Y(I)=Y(I)+R2
1578 | R2=R2+R2+R2
1579 | 11 AUX(6,I)=AUX(6,I)+R2-CJ*R1
1580 | IF(J-4)12,15,15
1581 | 12 J=J+1
1582 | IF(J-3)13,14,13
1583 | 13 X=X+.5*H
1584 | 14 CALL FCT(X,Y,DERY)
1585 | GO TO 10
1586 | 15 IF(ITEST)16,16,20
1587 | 16 DO 17 I=1,NDIM
1588 | 17 AUX(4,I)=Y(I)
1589 | ITEST=1
1590 | ISTEP=ISTEP+ISTEP-2
1591 | 18 IHLF=IHLF+1
1592 | X=X-H
1593 | H=.5*H
1594 | DO 19 I=1,NDIM
1595 | Y(I)=AUX(1,I)
1596 | DERY(I)=AUX(2,I)
1597 | 19 AUX(6,I)=AUX(3,I)
1598 | GO TO 9
1599 | 20 IMOD=ISTEP/2
1600 | IF(ISTEP-IMOD-IMOD)21,23,21
1601 | 21 CALL FCT(X,Y,DERY)
1602 | DO 22 I=1,NDIM
1603 | AUX(5,I)=Y(I)
1604 | 22 AUX(7,I)=DERY(I)
1605 | GO TO 9
1606 | 23 DELT=0.
1607 | DO 24 I=1,NDIM
1608 | 24 DELT=DELT+AUX(8,I)*ABS(AUX(4,I)-Y(I))
1609 | IF(DELT-PRMT(4))28,28,25
1610 | 25 IF(IHLF-10)26,36,36
1611 | 26 DO 27 I=1,NDIM
1612 | 27 AUX(4,I)=AUX(5,I)
1613 | ISTEP=ISTEP+ISTEP-4
1614 | X=X-H
1615 | IEND=0
1616 | GO TO 18
1617 | 28 CALL FCT(X,Y,DERY)
1618 | DO 29 I=1,NDIM
1619 | AUX(1,I)=Y(I)
1620 | AUX(2,I)=DERY(I)
1621 | AUX(3,I)=AUX(6,I)
1622 | Y(I)=AUX(5,I)
1623 | 29 DERY(I)=AUX(7,I)
1624 | CALL OUTP(X-H,Y,DERY,IHLF,NDIM,PRMT)
1625 | IF(PRMT(5))40,30,40
1626 | 30 DO 31 I=1,NDIM
1627 | Y(I)=AUX(1,I)
1628 | 31 DERY(I)=AUX(2,I)
1629 | IREC=IHLF
1630 | IF(IEND)32,32,39
1631 | 32 IHLF=IHLF-1
1632 | ISTEP=ISTEP/2
1633 | H=H+H
1634 | IF(IHLF)4,33,33
1635 | 33 IMOD=ISTEP/2
1636 | IF(ISTEP-IMOD-IMOD)4,34,4
1637 | 34 IF(DELT-.02*PRMT(4))35,35,4
1638 | 35 IHLF=IHLF-1
1639 | ISTEP=ISTEP/2
1640 | H=H+H
1641 | GO TO 4
1642 | 36 IHLF=11
1643 | CALL FCT(X,Y,DERY)
1644 | GO TO 39
1645 | 37 IHLF=12
1646 | GO TO 39
1647 | 38 IHLF=13
1648 | 39 CALL OUTP(X,Y,DERY,IHLF,NDIM,PRMT)
1649 | 40 RETURN
1650 | END
1651 | C
1652 | C *********************************************************
1653 | C
1654 | SUBROUTINE ROOT(XA,FXYZA,XB,FXYZB,XINT,PRMT,ITP)
1655 | C
1656 | C ROUTINE FOR THE ITERATIVE COMPUTATION OF THE POINTS OF
1657 | C INTERSECTION OF RAYS WITH INTERFACES
1658 | C
1659 | DIMENSION YINT(3),YDINT(3),PRMT(5),DEP(6)
1660 | COMMON /VSP/XVSP,YVSP,XNRM,YNRM,ICOD,IVSP
1661 | COMMON /AUXI/ IANI(20),INTR,INT1,IPREC,KRE,IREFR,LAY,NDER,IPRINT,
1662 | 1 MPRINT,NTR,ISQRT,NAUX,ISOUR,MAUX,MREG,MDIM,IPOL,MSCON,LOU,
1663 | 2 IAMP,MTRNS,ICOEF,IAD,IRHO,ISHEAR,IAC,IRT,mori
1664 | C
1665 | IAC=0
1666 | ISIGN=-1
1667 | XXINT=0.
1668 | 1 IAC=IAC+1
1669 | ISIGN=-ISIGN
1670 | AUX=FXYZA-FXYZB
1671 | IF(ABS(AUX).LT..000001)XINT=.5*(XA+XB)
1672 | IF(ABS(AUX).GE..000001.AND.ISIGN.GT.0)XINT=(FXYZA*XB-FXYZB*XA)/AUX
1673 | IF(ABS(AUX).GE..000001.AND.ISIGN.LT.0)THEN
1674 | IF(ITP.GT.0)AUX=DEP(2)*YDINT(1)+DEP(3)*YDINT(2)-YDINT(3)
1675 | IF(ITP.LT.0)AUX=XNRM*YDINT(1)+YNRM*YDINT(2)
1676 | IF(ABS(AUX).LT..000001)XINT=.5*(XA+XB)
1677 | IF(ABS(AUX).GE..000001)XINT=XXINT-AUX3/AUX
1678 | END IF
1679 | IF(XINT.LT.XA.OR.XINT.GT.XB)XINT=.5*(XA+XB)
1680 | IF(IRT.EQ.2)
1681 | 1WRITE(LOU,'(A,/,4E15.9,I5,/)') ' XA,XB,XINTOLD,XINT,IAC',
1682 | 2XA,XB,XXINT,XINT,IAC
1683 | IF(IAC.GT.1.AND.ABS(XINT-XXINT).LT.PRMT(4))RETURN
1684 | IF(IAC.GE.10)RETURN
1685 | CALL APPROX(XINT,YINT,YDINT,3)
1686 | XXINT=XINT
1687 | IF(ITP.GT.0)THEN
1688 | CALL DISC(YINT,DEP)
1689 | AUX3=DEP(1)-YINT(3)
1690 | ELSE
1691 | AUX3=(YINT(1)-XVSP)*XNRM+(YINT(2)-YVSP)*YNRM
1692 | END IF
1693 | IF((FXYZA*AUX3).GT.0.)THEN
1694 | XA=XINT
1695 | FXYZA=AUX3
1696 | GO TO 1
1697 | ELSE
1698 | XB=XINT
1699 | FXYZB=AUX3
1700 | GO TO 1
1701 | END IF
1702 | END
1703 | C
1704 |
--------------------------------------------------------------------------------
/anray/anray.for:
--------------------------------------------------------------------------------
1 | C
2 | C PROGRAM A N R A Y, VERSION 4.73 (PRAHA, JUNE 2013)
3 | C!! modificações marcadas com !! em fev/2017 por Liliana Alcazar
4 | C*******************************************************************
5 | C
6 | C PROGRAM ANRAY IS DESIGNED FOR RAY, TRAVEL TIME AND
7 | C AMPLITUDE COMPUTATIONS IN 3D GENERAL ANISOTROPIC AND ISOTROPIC
8 | C LATERALLY VARYING LAYERED MEDIA. THE PROGRAM MAKES POSSIBLE
9 | C COMPUTATION OF RAYS SPECIFIED BY INITIAL ANGLES AT THE SOURCE,
10 | C I.E., INITIAL-VALUE RAY TRACING, OR RAYS STARTING FROM THE
11 | C SOURCE AND TERMINATING ON A VERTICAL OR SURFACE PROFILE, I.E.
12 | C BOUNDARY-VALUE RAY TRACING. RAY AMPLITUDES CAN BE COMPUTED
13 | C ALONG RAYS.
14 | C
15 | C*******************************************************************
16 | C
17 | C
18 | CHARACTER*80 MTEXT,FILEIN,FILEOU,FILE1,FILE2,FILE3,FILE4,FILE5
19 | CHARACTER*80 FILE6,FILE7
20 | DIMENSION Y(18)
21 | COMMON /AUXI/ IANI(20),INTR,INT1,IPREC,KRE,IREFR,LAY,NDER,IPRINT,
22 | 1 MPRINT,NTR,ISQRT,NAUX,ISOUR,MAUX,MREG,MDIM,IPOL,MSCON,LOUT,
23 | 2 IAMP,MTRNS,ICOEF,IAD,IRHO,ISHEAR,IAC,IRT,mori
24 | COMMON /AUXX/ MMX(20),MMY(20),MMXY(20)
25 | COMMON /APROX/ A11,A12,A13,A14,A15,A16,A22,A23,A24,A25,A26,A33,
26 | 1 A34,A35,A36,A44,A45,A46,A55,A56,A66,
27 | 1 DXA11,DXA12,DXA13,DXA14,DXA15,DXA16,DXA22,DXA23,
28 | 1 DXA24,DXA25,DXA26,DXA33,DXA34,DXA35,DXA36,DXA44,
29 | 1 DXA45,DXA46,DXA55,DXA56,DXA66,
30 | 1 DYA11,DYA12,DYA13,DYA14,DYA15,DYA16,DYA22,DYA23,
31 | 1 DYA24,DYA25,DYA26,DYA33,DYA34,DYA35,DYA36,DYA44,
32 | 1 DYA45,DYA46,DYA55,DYA56,DYA66,
33 | 1 DZA11,DZA12,DZA13,DZA14,DZA15,DZA16,DZA22,DZA23,
34 | 1 DZA24,DZA25,DZA26,DZA33,DZA34,DZA35,DZA36,DZA44,
35 | 1 DZA45,DZA46,DZA55,DZA56,DZA66,
36 | 1 A2546,A1266,A1355,A1456,A3645,A2344
37 | INTEGER CODE
38 | COMMON /COD/ CODE(50,2),KREF,KC,ITYPE
39 | COMMON /DIST/ DST(200),NDST,REPS,PROF(2),NDSTP,PREPS,LNDST,
40 | 1XPRF,YPRF,ILOC
41 | COMMON /DENS/ RHO(20)
42 | COMPLEX PS
43 | COMMON /RAY/ AY(28,2000),DS(20,50),KINT(50),HHH(3,3),TMAX,
44 | 1 PS(3,7,50),IS(8,50),N,IREF,IND,IND1
45 | COMMON /INTRF/ Z(1000),SX(350),SY(350),NX(20),NY(20),BRD(6),NINT,
46 | 1 XINTA
47 | COMMON /ZERO/ RNULL
48 | COMMON/VSP/XVSP,YVSP,XNRM,YNRM,ICOD,IVSP
49 | COMMON/VRML/LUBRD,LUGRD,LUIND,LURAY
50 | C
51 | C**************************************************
52 | C
53 | LIN=5
54 | LOU=6
55 | LU1=1
56 | LU2=2
57 | LU3=3
58 | LUBRD=7
59 | LUGRD=8
60 | LUIND=9
61 | LURAY=10
62 | FILEIN='anray.dat'
63 | FILEOU='anray.out'
64 | FILE1='lu1.anray' !!
65 | FILE2='lu2.anray' !!
66 | FILE3=' '
67 | FILE4=' '
68 | FILE5=' '
69 | FILE6=' '
70 | FILE7=' '
71 | C!! WRITE(*,'(2A)') ' (ANRAY) SPECIFY NAMES OF INPUT AND OUTPUT',
72 | C!! 1' FILES LIN, LOU, LU1, LU2, LU3, LUBRD, LUGRD, LUIND, LURAY: '
73 | C!! READ(*,*) FILEIN,FILEOU,FILE1,FILE2,FILE3,FILE4,FILE5,FILE6,FILE7
74 | WRITE(*,*) 'SPECIFY NAME OF INPUT MODEL FILE (in a anray format)' !!
75 | READ(*,*) FILEIN !!
76 |
77 | IF(FILE1.EQ.' ') LU1=0
78 | IF(FILE2.EQ.' ') LU2=0
79 | IF(FILE3.EQ.' ') LU3=0
80 | IF(FILE4.EQ.' ') LUBRD=0
81 | IF(FILE5.EQ.' ') LUGRD=0
82 | IF(FILE6.EQ.' ') LUIND=0
83 | IF(FILE7.EQ.' ') LURAY=0
84 | LOUT=LOU
85 | OPEN(LIN,FILE=FILEIN,FORM='FORMATTED',STATUS='OLD')
86 | OPEN(LOU,FILE=FILEOU,FORM='FORMATTED')
87 | IF(LU1.NE.0)OPEN(LU1,FILE=FILE1,FORM='FORMATTED')
88 | IF(LU2.NE.0)OPEN(LU2,FILE=FILE2,FORM='FORMATTED')
89 | IF(LU3.NE.0)OPEN(LU3,FILE=FILE3,FORM='FORMATTED')
90 | IF(LUBRD.NE.0)OPEN(LUBRD,FILE=FILE4,FORM='FORMATTED')
91 | IF(LUGRD.NE.0)OPEN(LUGRD,FILE=FILE5,FORM='FORMATTED')
92 | IF(LUIND.NE.0)OPEN(LUIND,FILE=FILE6,FORM='FORMATTED')
93 | IF(LURAY.NE.0)OPEN(LURAY,FILE=FILE7,FORM='FORMATTED')
94 | C
95 | C**************************************************
96 | C
97 | WRITE(LOU,777)
98 | 777 FORMAT(///,'***********************'
99 | 1,//,' PROGRAM A N R A Y ',//,
100 | 2'***********************',//)
101 | NCODE=1
102 | MTEXT='ANRAY'
103 | INUL=4
104 | READ(LIN,*)MTEXT
105 | WRITE(LOU,115)MTEXT
106 | READ(LIN,*)INULL,ISURF
107 | IF(INULL.EQ.0)INULL=INUL
108 | RNULL=10.**(-INULL)
109 | WRITE(LOU,106)INULL,ISURF
110 | C
111 | C
112 | C SPECIFICATION OF THE MODEL
113 | C
114 | CALL MODEL(MTEXT,LIN)
115 | C
116 | C GENERATE FILE FOR PLOTTING VARIOUS CHARACTERISTIC SURFACES
117 | C
118 | IF(LU3.NE.0)CALL SURFPL(LIN,LU3)
119 | C
120 | C GENERATE FILE FOR VRML PLOTTING BOUNDARIES OF THE MODEL
121 | C
122 | IF(LUBRD.NE.0)CALL BOX(BRD)
123 | C
124 | C GENERATE FILE FOR PLOTTING RAYS
125 | C
126 | IF(LURAY.NE.0)WRITE(LURAY,113)
127 | IF(LURAY.NE.0)WRITE(LURAY,105)
128 | C
129 | C SPECIFICATION OF SYNTHETIC SEISMOGRAMS
130 | C
131 | 2 ICONT=1
132 | MEP=0
133 | MOUT=0
134 | MDIM=0
135 | METHOD=0
136 | MREG=0
137 | ITMAX=10
138 | IPOL=0
139 | IPREC=0
140 | IRAYPL=0
141 | IPRINT=0
142 | IAMP=0
143 | MTRNS=0
144 | ICOEF=0
145 | IRT=0
146 | ILOC=0
147 | MCOD=0
148 | MORI=0
149 | READ(LIN,*)ICONT,MEP,MOUT,MDIM,METHOD,MREG,ITMAX,
150 | 1IPOL,IPREC,IRAYPL,IPRINT,IAMP,MTRNS,ICOEF,IRT,ILOC,MCOD,MORI
151 | WRITE(LOU,102)ICONT,MEP,MOUT,MDIM,METHOD,MREG,ITMAX,
152 | 1IPOL,IPREC,IRAYPL,IPRINT,IAMP,MTRNS,ICOEF,IRT,ILOC,MCOD,MORI
153 | IF(ICONT.EQ.0)GO TO 99
154 | C
155 | C
156 | c IF(MEP.NE.0.AND.MDIM.EQ.0)MDIM=1
157 | IVSP=0
158 | IF(ILOC.EQ.0)ITPR=3
159 | IF(ILOC.EQ.1)THEN
160 | IVSP=1
161 | ITPR=43
162 | MREG=1
163 | END IF
164 | IF(ILOC.GT.1)THEN
165 | ITPR=ILOC+100
166 | END IF
167 | C
168 | IF(MEP.EQ.0)THEN
169 | NDST=0
170 | END IF
171 | C
172 | IF(MEP.EQ.1)THEN
173 | NDST=1
174 | READ(LIN,*)XREC,YREC
175 | WRITE(LOU,104)XREC,YREC
176 | GO TO 4
177 | END IF
178 | IF(MEP.LT.0)THEN
179 | NDST=-MEP
180 | PROF(1)=0.
181 | XPRF=0.
182 | YPRF=0.
183 | READ(LIN,*)PROF(1),(DST(I),I=1,NDST),XPRF,YPRF
184 | WRITE(LOU,104)PROF(1),(DST(I),I=1,NDST),XPRF,YPRF
185 | IF(NDST.EQ.1)RSTEP=1.
186 | IF(NDST.EQ.1)DST(2)=DST(1)+1.
187 | IF(NDST.EQ.1)GO TO 4
188 | RSTEP=(DST(NDST)-DST(1))/FLOAT(NDST-1)
189 | END IF
190 | C
191 | IF(MEP.GT.0)THEN
192 | NDST=MEP
193 | READ(LIN,*)PROF(1),RMIN,RSTEP,XPRF,YPRF
194 | WRITE(LOU,104)PROF(1),RMIN,RSTEP,XPRF,YPRF
195 | DO 13 I=1,MEP
196 | 13 DST(I)=RMIN+(I-1)*RSTEP
197 | IF(NDST.EQ.1)DST(2)=RMIN+RSTEP
198 | END IF
199 | PROF(2)=PROF(1)+1.
200 | NDSTP=1
201 | C
202 | IF(IVSP.EQ.1.AND.NDST.NE.0)THEN
203 | READ(LIN,*)XVSP,YVSP
204 | WRITE(LOU,104)XVSP,YVSP
205 | END IF
206 | C
207 | 4 TSOUR=0.
208 | DT=1.
209 | AC=0.0001
210 | REPS=0.05
211 | PREPS=0.05
212 | READ(LIN,*)XSOUR,YSOUR,ZSOUR,TSOUR,DT,AC,REPS,PREPS
213 | WRITE(LOU,104)XSOUR,YSOUR,ZSOUR,TSOUR,DT,AC,REPS,PREPS
214 | C
215 | IF(ABS(XPRF).LT..000001.AND.ABS(YPRF).LT..000001)THEN
216 | XPRF=XSOUR
217 | YPRF=YSOUR
218 | END IF
219 | IF(MEP.EQ.1)THEN
220 | XE=XREC-XPRF
221 | YE=YREC-YPRF
222 | RPRF=SQRT(XE*XE+YE*YE)
223 | XATAN=ATAN2(YE,XE)
224 | PROF(1)=XATAN
225 | RMIN=RPRF
226 | DST(1)=RMIN
227 | WRITE(LOU,104)RPRF,XATAN
228 | RSTEP=100.
229 | DST(2)=DST(1)+100.
230 | PROF(2)=PROF(1)+1.
231 | NDSTP=1
232 | END IF
233 | C
234 | IF(IVSP.EQ.1.AND.NDST.NE.0)THEN
235 | XNRM=XVSP-XSOUR
236 | YNRM=YVSP-YSOUR
237 | AUX=SQRT(XNRM*XNRM+YNRM*YNRM)
238 | XNRM=XNRM/AUX
239 | YNRM=YNRM/AUX
240 | PROF(1)=ATAN2(YNRM,XNRM)
241 | PROF(2)=PROF(1)+1.
242 | XPRF=XSOUR
243 | YPRF=YSOUR
244 | END IF
245 | IF(MCOD.EQ.0)THEN
246 | READ(LIN,*)AMIN,ASTEP,AMAX
247 | WRITE(LOU,104)AMIN,ASTEP,AMAX
248 | READ(LIN,*)BMIN,BSTEP,BMAX
249 | IF(ABS(BSTEP).LT..000001)THEN
250 | BMIN=PROF(1)-.3
251 | BMAX=PROF(1)+.4
252 | BSTEP=.6
253 | END IF
254 | WRITE(LOU,104)BMIN,BSTEP,BMAX
255 | END IF
256 | IF((MREG.EQ.0.OR.MREG.EQ.2).AND.MDIM.NE.0) WRITE(LOU,'(/,A,/)')
257 | 1 ' COEFFICIENTS OF CONVERSION ARE APPLIED'
258 | IF((MREG.NE.0.AND.MREG.NE.2).AND.MDIM.NE.0) WRITE(LOU,'(/,A,/)')
259 | 1 ' COEFFICIENTS OF CONVERSION ARE *** NOT *** APPLIED'
260 | TMAX=10000.
261 | IND=-1
262 | NDER=1
263 | CALL RAYA(XSOUR,YSOUR,ZSOUR,TSOUR,AMIN1,BMIN,PX,PY,PZ,XX,YY,ZZ,T,
264 | 1DT,AC)
265 | Y(1)=XSOUR
266 | Y(2)=YSOUR
267 | Y(3)=ZSOUR
268 | IF(IND.EQ.50)WRITE(LOU,111)IND
269 | IF(IND.EQ.50)GO TO 99
270 | LAY=IND
271 | ISOUR=IND
272 | ITYPE=3
273 | CALL PARDIS(Y,0)
274 | VP=SQRT(A11)
275 | IF(IRHO.EQ.0)RO=1.7+.2*VP
276 | IF(IRHO.EQ.1)RO=RHO(IND)
277 | C
278 | C GENERATE FILE LU2 FOR SYNTHETIC SEISMOGRAM COMPUTATIONS
279 | C
280 | IF(LU2.NE.0.AND.NDST.NE.0)THEN
281 | WRITE(LU2,115)MTEXT
282 | KSH=2
283 | WRITE(LU2,100)NDST,KSH,ILOC
284 | WRITE(LU2,104)XSOUR,YSOUR,ZSOUR,TSOUR,RSTEP,RO
285 | IF(MEP.NE.1)WRITE(LU2,104)(DST(I),I=1,NDST)
286 | IF(MEP.EQ.1)WRITE(LU2,104)XREC,YREC,RPRF,XATAN
287 | END IF
288 | C
289 | C LOOP FOR ELEMENTARY WAVES
290 | C
291 | 20 READ(LIN,*)KC,KREF,((CODE(I,K),K=1,2),I=1,KREF)
292 | WRITE(LOU,100)KC,KREF,((CODE(I,K),K=1,2),I=1,KREF)
293 | IF(KREF.EQ.0)GOTO 2
294 | IF(MOUT.NE.0)WRITE(LOU,107)
295 | WRITE(LOU,103)NCODE,KC,KREF,((CODE(I,K),K=1,2),I=1,KREF)
296 | C
297 | IF(MCOD.NE.0)THEN
298 | READ(LIN,*)AMIN,ASTEP,AMAX
299 | WRITE(LOU,104)AMIN,ASTEP,AMAX
300 | READ(LIN,*)BMIN,BSTEP,BMAX
301 | IF(ABS(BSTEP).LT..000001)THEN
302 | BMIN=PROF(1)-.3
303 | BMAX=PROF(1)+.4
304 | BSTEP=.6
305 | END IF
306 | WRITE(LOU,104)BMIN,BSTEP,BMAX
307 | END IF
308 | C
309 | C GENERATE FILE LU1 FOR PLOTTING OF RAY DIAGRAMS,
310 | C TIME-DISTANCE AND AMPLITUDE-DISTANCE CURVES
311 | C
312 | IF(LU1.EQ.0.OR.NDST.EQ.0)GO TO 21
313 | WRITE(LU1,100)ICONT,NDST,ILOC
314 | WRITE(LU1,104)RO
315 | NPN=2
316 | APN=0.
317 | WRITE(LU1,100)NPN,NPN,NPN
318 | WRITE(LU1,101)APN,APN,APN,APN,APN
319 | WRITE(LU1,101)APN,APN,APN,APN,APN
320 | WRITE(LU1,104)Xprf,Yprf,0.0,PROF(1)
321 | WRITE(LU1,104)(DST(I),I=1,NDST)
322 | 21 CONTINUE
323 | C
324 | C
325 | C SEARCH FOR THE NUMBER OF THE ELEMENT OF THE RAY, STARTING FROM
326 | C WHICH THE WAVE DOES UNDERTAKE NEITHER REFLECTION NOR CONVERSION
327 | C
328 | ICOD=0
329 | IF(IVSP.EQ.0)GO TO 35
330 | DO 34 I=1,KREF
331 | ICOD=KREF-I+1
332 | IF(ICOD.EQ.1) GO TO 34
333 | IC1=CODE(ICOD,1)
334 | IC2=CODE(ICOD-1,1)
335 | IF((IC1-IC2).EQ.0)GO TO 35
336 | IC1=CODE(ICOD,2)
337 | IC2=CODE(ICOD-1,2)
338 | IF((IC1-IC2).NE.0)GO TO 35
339 | 34 CONTINUE
340 | 35 CONTINUE
341 | IF(MOUT.NE.0)WRITE(LOU,108)
342 | C
343 | C
344 | CALL RECEIV(XSOUR,YSOUR,ZSOUR,TSOUR,DT,AC,ITMAX,AMIN,ASTEP,
345 | 1AMAX,BMIN,BSTEP,BMAX,MOUT,LU1,LU2,METHOD,ITPR,NCODE)
346 | IF(IND.EQ.14) WRITE(LOU,111) IND
347 | NCODE=NCODE+1
348 | GOTO 20
349 | C
350 | C END OF LOOP FOR ELEMENTARY WAVES
351 | C
352 | C
353 | 100 FORMAT(26I3)
354 | 101 FORMAT(5E15.5)
355 | 102 FORMAT(1H0,////,2X,26I3)
356 | 103 FORMAT(4X,I4,9X,100I3)
357 | 104 FORMAT(8F10.5)
358 | 105 FORMAT('/')
359 | 106 FORMAT(17I5)
360 | 107 FORMAT(//2X,'INT.CODE',5X,'E X T E R N A L C O D E')
361 | 108 FORMAT(//)
362 | 111 FORMAT(/2X,'IND=',I5,/)
363 | 113 FORMAT(6H'RAYS')
364 | 115 FORMAT(A)
365 | C
366 | 99 CONTINUE
367 | IF(LURAY.NE.0)WRITE(LURAY,105)
368 | IF(LU1.NE.0.AND.NDST.NE.0)WRITE(LU1,100)ICONT,ICONT
369 | IF(LU1.NE.0)REWIND LU1
370 | IF(LU2.NE.0)REWIND LU2
371 | C
372 | STOP
373 | END
374 | C
375 | C *********************************************************
376 | C
377 | SUBROUTINE AMPL (AMPX,AMPY,AMPZ,UU)
378 | C
379 | C ROUTINE FOR COMPUTING COMPLEX VECTORIAL RAY AMPLITUDES
380 | C
381 | C OUTPUT PARAMETERS
382 | C AMPX(2),AMPY(2),AMPZ(2) - X,Y AND Z COMPONENTS OF COMPLEX
383 | C VECTORIAL RAY AMPLITUDES IN THE MODEL COORDINATES. FOR P WAVE
384 | C IN ANY MEDIUM AND FOR S WAVES IN AN ANISOTROPIC MEDIUM, I=1.
385 | C FOR S WAVE GENERATED IN AN ISOTROPIC MEDIUM, I=1,2. I=1 AND 2
386 | C CORRESPOND TO S WAVES SPECIFIED AT THE SOURCE BY VECTORS E1
387 | C E2. VECTORS E1 AND E2 TOGETHER WITH UNIT VECTOR TANGENT TO
388 | C THE RAY FORM A BASIS OF RAY CENTRED COORDINATE SYSTEM.
389 | C UU - PRODUCT OF RATIOS OF DENSITIES AND COSINES OF INCIDENCE
390 | C AND OF REFLECTION/TRANSMISSION AT POINTS WHERE THE RAY CROSSES
391 | c INTERFACES.
392 | C
393 | C CALLED FROM: RECEIV
394 | C ROUTINES CALLED: POLAR,TRANSL,COEF
395 | C
396 | DIMENSION Y(18),UN(3),POLD(3),PNEW(3)
397 | COMPLEX AMPX(2),AMPY(2),AMPZ(2),CR(3),UC(3),STU(6),C1,C2,C3
398 | COMMON /AUXI/ IANI(20),INTR,INT1,IPREC,KRE,IREFR,LAY,NDER,IPRINT,
399 | 1 MPRINT,NTR,ISQRT,NAUX,ISOUR,MAUX,MREG,MDIM,IPOL,MSCON,LOU,
400 | 2 IAMP,MTRNS,ICOEF,IAD,IRHO,ISHEAR,IAC,IRT,mori
401 | COMMON /DIST/ DST(200),NDST,REPS,PROF(2),NDSTP,PREPS,LNDST,
402 | 1XPRF,YPRF,ILOC
403 | INTEGER CODE
404 | COMMON /COD/ CODE(50,2),KREF,KC,ITYPE
405 | COMMON /DENS/ RHO(20)
406 | COMPLEX PS
407 | COMMON /RAY/ AY(28,2000),DS(20,50),KINT(50),HHH(3,3),tmax,
408 | 1 PS(3,7,50),IS(8,50),N,IREF,IND,IND1
409 | COMMON /RAY2/ DRY(3,2000)
410 | C
411 | KSS=1
412 | ISHEAR=0
413 | ITYPE=CODE(1,2)
414 | IF(IANI(ISOUR).EQ.0.AND.ITYPE.NE.3)THEN
415 | ISHEAR=1
416 | ITYPE=1
417 | END IF
418 | ITP=ITYPE
419 | DO 1 I=1,2
420 | AMPX(I)=CMPLX(0.,0.)
421 | AMPY(I)=CMPLX(0.,0.)
422 | AMPZ(I)=CMPLX(0.,0.)
423 | 1 CONTINUE
424 | C
425 | 3000 NN=N
426 | IDD=0
427 | N2=0
428 | N1=1
429 | IRE=IREF
430 | AV=1.
431 | C
432 | C SPECIFICATION OF DISPLACEMENT VECTOR AT SOURCE
433 | C IN RAY CENTERED COORDINATES
434 | C
435 | DO 5 I=1,3
436 | CR(I)=(0.,0.)
437 | 5 CONTINUE
438 | CR(ITP)=(1.,0.)
439 | IREF1=IREF-1
440 | IF(IRE.GT.1)INAUM=CODE(IRE-1,1)-CODE(IRE,1)
441 | IF(MREG.GE.1.AND.IRE.GT.1.AND.ILOC.GT.1.AND.INAUM.GE.0)THEN
442 | IREF1=IREF1+1
443 | CODE(IREF1+1,2)=3
444 | END IF
445 | IF(IREF1.EQ.0) GOTO 100
446 | C
447 | C LOOP OVER INTERFACES
448 | C
449 | DO 10 I=1,IREF1
450 | IREF=I
451 | IF(KC.NE.0) ITYPE=CODE(IREF,2)
452 | N=KINT(IREF)
453 | IF(N.EQ.0) THEN
454 | IDD=1
455 | GO TO 10
456 | ELSE
457 | N1=N2+1
458 | N2=N
459 | IF(IDD.NE.0) N2=-N2
460 | IDD=0
461 | C
462 | C COMPUTATION OF POLARIZATION VECTORS
463 | C CONSIDERED POLARIZATION VECTOR(S) ARE STORED IN CORRESPONDING
464 | C COLUMNS OF THE MATRIX HHH. OTHER COLUMNS ARE ZERO.
465 | C
466 | CALL POLAR(N1,N2,NN,IREF)
467 | END IF
468 | DO 20 K=1,6
469 | Y(K)=AY(K+1,N)
470 | 20 CONTINUE
471 | IF(IAMP.GT.0)WRITE(LOU,'(a,2i5,6f10.5)')' AMPL:I,N,Y',I,N,
472 | 1(Y(L),L=1,6)
473 | DO 30 K=1,3
474 | POLD(K)=Y(K+3)
475 | PS(K,7,IREF)=Y(K+3)
476 | 30 CONTINUE
477 | DO 40 K=1,3
478 | UN(K)=DS(K,IREF)
479 | 40 CONTINUE
480 | LAY=IS(1,IREF)
481 | ITRANS=IS(2,IREF)
482 | ITR1=ITRANS
483 | IF(UN(3).GT.0.0) GOTO 50
484 | C
485 | C RAY STRIKING THE INTERFACE FROM ABOVE
486 | C
487 | IF(ITRANS.EQ.0) THEN
488 | LAY=LAY+1
489 | ITRANS=1
490 | GOTO 70
491 | END IF
492 | IF(ITRANS.GT.0) THEN
493 | LAY=LAY-1
494 | ITRANS=0
495 | GOTO 70
496 | END IF
497 | C
498 | C RAY STRIKING THE INTERFACE FROM BELOW
499 | C
500 | 50 IF(ITRANS.EQ.0) THEN
501 | LAY=LAY-1
502 | ITRANS=1
503 | GOTO 70
504 | END IF
505 | IF(ITRANS.GT.0) THEN
506 | LAY=LAY+1
507 | ITRANS=0
508 | GOTO 70
509 | END IF
510 | C
511 | C SLOWNESS VECTORS ON THE SIDE OF THE INTERFACE WHERE GENERATED
512 | C WAVE PROPAGATES WERE DETERMINED DURING THE CALL OF TRANSL IN THE
513 | C ROUTINE OUT. HERE REMAINING SLOWNESS VECTORS ON THE OTHER SIDE
514 | C OF THE INTERFACE ARE DETERMINED
515 | C
516 | C REDEFINITION OF IREF FOR CALL OF ROUTINE TRANSL
517 | C
518 | 70 IF(LAY.EQ.0) THEN
519 | DO 71 K=4,6
520 | DO 71 L=1,3
521 | PS(L,K,IREF)=CMPLX(0.,0.)
522 | 71 CONTINUE
523 | GO TO 75
524 | END IF
525 | IREF=IREF+1
526 | CALL TRANSL(Y,POLD,PNEW,UN,ITRANS,0)
527 | IF(IND.EQ.10)RETURN
528 | IREF=IREF-1
529 | 75 IF(IAMP.NE.0)THEN
530 | WRITE(LOU,'(A)')' REFLECTED/TRANSMITTED SLOWNESS VECTORS'
531 | WRITE(LOU,'(6F12.6)')((PS(L,K,IREF),L=1,3),K=1,6)
532 | END IF
533 | AV1=(DS(11,IREF)*DS(10,IREF))/(DS(8,IREF)*DS(7,IREF))
534 | AV=AV*AV1
535 | IF(IAMP.GT.0) THEN
536 | WRITE(LOU,'(A)') 'ROI,ROG,UNVGI,UNVGG,AV1,AV'
537 | WRITE(LOU,'(6F10.5)') DS(8,IREF),
538 | 1 DS(11,IREF),DS(7,IREF),DS(10,IREF),AV1,AV
539 | WRITE(LOU,'(A,/,6F12.5,/,3(3F12.5/))') ' CR,HHH',
540 | 2 CR,((HHH(J,K),J=1,3),K=1,3)
541 | END IF
542 | C
543 | C COMPUTATION OF AMPLITUDE COEFFICIENTS OF REFLECTED/TRANSMITTED WAVES
544 | C
545 | C
546 | C COMPUTATION OF CARTESIAN COMPONENTS OF INCIDENT DISPLACEMENT VECTOR
547 | C
548 | DO 87 K=1,3
549 | STU(K)=CMPLX(0.,0.)
550 | DO 87 J=1,3
551 | STU(K)=HHH(J,K)*CR(J)+STU(K)
552 | 87 CONTINUE
553 | IF(IAMP.GT.0)WRITE(LOU,'(A,6F10.5)') ' STU',(STU(K),K=1,3)
554 | IF(KC.NE.0)ITYPE=CODE(IREF+1,2)
555 | IF(MREG.GE.1.AND.IRE.GT.1.AND.I.EQ.IREF1.AND.ILOC.GT.1.AND.
556 | 1(CODE(IRE,1).LE.CODE(IRE-1,1)))ITR1=1
557 | CALL COEF(STU,CR,ITR1)
558 | IF(IND.EQ.11)RETURN
559 | BCR=SQRT(REAL(CR(1)*CONJG(CR(1))+CR(2)*CONJG(CR(2))
560 | 1 +CR(3)*CONJG(CR(3))))
561 | IF(BCR.LT.1.E-10) THEN
562 | DO 88 K=1,3
563 | UC(K)=(0.,0.)
564 | 88 CONTINUE
565 | GOTO 130
566 | END IF
567 | 10 CONTINUE
568 | C
569 | C END OF LOOP OVER INTERFACES
570 | C
571 | C TERMINATION POINT
572 | C
573 | 100 CONTINUE
574 | IF(IRE.GT.1)INAUM=CODE(IRE-1,1)-CODE(IRE,1)
575 | IF((MREG.GE.1.AND.IRE.GT.1).AND.ILOC.GT.1.AND.INAUM.GE.0)THEN
576 | DO 200 K=1,3
577 | Y(K+3)=REAL(PS(K,6,IREF1))
578 | 200 CONTINUE
579 | V=1./SQRT(Y(4)*Y(4)+Y(5)*Y(5)+Y(6)*Y(6))
580 | DO 201 K=1,3
581 | HHH(1,K)=0.
582 | HHH(2,K)=0.
583 | HHH(3,K)=V*Y(K+3)
584 | 201 CONTINUE
585 | ELSE
586 | N1=N2+1
587 | N2=NN
588 | IF(KC.NE.0)ITYPE=CODE(IRE,2)
589 | IF(KC.NE.0)IS(7,IRE)=CODE(IRE,1)
590 | CALL POLAR(N1,N2,NN,IRE)
591 | END IF
592 | C
593 | C COMPUTATION OF CARTESIAN COMPONENTS OF INCIDENT DISPLACEMENT VECTOR
594 | C
595 | DO 107 K=1,3
596 | STU(K)=CMPLX(0.,0.)
597 | DO 107 J=1,3
598 | STU(K)=HHH(J,K)*CR(J)+STU(K)
599 | 107 CONTINUE
600 | IF(IAMP.GT.0)WRITE(LOU,'(A,6F10.5)') ' STU',(STU(K),K=1,3)
601 | C
602 | IF(IRE.GT.1)INAUM=CODE(IRE-1,1)-CODE(IRE,1)
603 | IF(MREG.EQ.1.OR.MREG.EQ.3.OR.
604 | 1(MREG.EQ.2.AND.IRE.GT.1.AND.INAUM.GE.0))THEN
605 | UC(1)=STU(1)
606 | UC(2)=STU(2)
607 | UC(3)=STU(3)
608 | IF(MREG.GT.1) THEN
609 | C
610 | C CALCULATION OF PRESSURE AT THE TERMINATION POINT
611 | C
612 | C1=UC(1)
613 | C2=UC(2)
614 | C3=UC(3)
615 | ARE=REAL(C1)
616 | IF(ARE.LT.0.)ARE=-ARE
617 | AIM=AIMAG(C1)
618 | APHI=ATAN2(AIM,ARE)
619 | ARE=SQRT(REAL(C1*CONJG(C1)+C2*CONJG(C2)+C3*CONJG(C3)))
620 | UC(1)=ARE*CMPLX(COS(APHI),SIN(APHI))
621 | UC(2)=(0.,0.)
622 | UC(3)=(0.,0.)
623 | IF(IAMP.GT.0)WRITE(LOU,'(A,4F10.5)') ' UC(1),ARE,APHI',
624 | 1 UC(1),ARE,APHI
625 | END IF
626 | GOTO 110
627 | END IF
628 | DO 105 K=1,6
629 | Y(K)=AY(K+1,NN)
630 | IF(K.LE.3)GO TO 105
631 | PS(K-3,7,IRE)=Y(K)
632 | POLD(K-3)=Y(K)
633 | UN(K-3)=DS(K-3,IRE)
634 | 105 CONTINUE
635 | N=NN
636 | IF(MREG.EQ.0.OR.MREG.EQ.2) THEN
637 | IREF=IREF+1
638 | IF(INTR.EQ.LAY)LAY=LAY-1
639 | IF(INTR.NE.LAY)LAY=LAY+1
640 | CALL TRANSL(Y,POLD,PNEW,UN,1,0)
641 | END IF
642 | IREF=IRE
643 | IF(IAMP.GT.0)THEN
644 | WRITE(LOU,'(A)')
645 | 1 ' REFLECTED SLOWNESS VECTORS AT TERMINATION POINT'
646 | WRITE(LOU,'(6F12.6)')((PS(L,K,IRE),L=1,3),K=1,3)
647 | END IF
648 | C
649 | C COMPUTATION OF CONVERSION COEFFICIENTS
650 | C
651 | KTR=999
652 | CALL COEF(STU,UC,KTR)
653 | IF(IND.EQ.11)RETURN
654 | 110 CONTINUE
655 | DO 115 K=1,3
656 | Y(K)=AY(K+4,NN)
657 | 115 CONTINUE
658 | VPEND=1./SQRT(Y(1)*Y(1)+Y(2)*Y(2)+Y(3)*Y(3))
659 | IF(IRE.GT.1)INAUM=CODE(IRE-1,1)-CODE(IRE,1)
660 | IF((MREG.GE.1.AND.IRE.GT.1).AND.ILOC.GT.1.AND.
661 | 1INAUM.GE.0)VPEND=V
662 | DO 120 K=1,3
663 | Y(K)=AY(K+4,1)
664 | 120 CONTINUE
665 | VP0=1./SQRT(Y(1)*Y(1)+Y(2)*Y(2)+Y(3)*Y(3))
666 | RHO0=0.2*SQRT(AY(8,1))+1.7
667 | IF(IRHO.NE.0) RHO0=RHO(ISOUR)
668 | RHEND=0.2*SQRT(AY(8,NN))+1.7
669 | IF(IRHO.NE.0) RHEND=RHO(LAY)
670 | AV=AV*VP0*RHO0
671 | AV=AV/(VPEND*RHEND)
672 | UU=SQRT(ABS(AV))
673 | IF(IAMP.GT.0)
674 | 1WRITE(LOU,'(A,4F12.6)')'VP0,RH0,VPEND,RHEND',VP0,RHO0,VPEND,RHEND
675 | 130 CONTINUE
676 | N=NN
677 | IREF=IRE
678 | AMPX(KSS)=UC(1)
679 | AMPY(KSS)=UC(2)
680 | AMPZ(KSS)=UC(3)
681 | IF(MREG.GT.1)AMPX(KSS)=AMPX(KSS)*VPEND*RHEND
682 | IF(ISHEAR.NE.0.AND.KSS.NE.2) THEN
683 | KSS=2
684 | ITP=2
685 | GOTO 3000
686 | END IF
687 | RETURN
688 | END
689 | C
690 | C *********************************************************
691 | C
692 | SUBROUTINE APPROX(X,Y,YD,KDIM)
693 | C
694 | C THE ROUTINE PERFORMS THIRD-ORDER INTERPOLATION BETWEEN POINTS
695 | C YOLD AND YNEW PARAMETERIZED BY AN INDEPENDENT VARIABLE X.
696 | C DOLD, DNEW ARE THE FIRST DERIVATIVES OF Y WITH RESPECT
697 | C TO X AT THE POINTS YOLD AND YNEW.
698 | C
699 | DIMENSION Y(18),YD(18)
700 | COMMON/APPR/ XOLD,XNEW,YOLD(18),DOLD(18),YNEW(18),DNEW(18)
701 | C
702 | A=(X-XNEW)/(XNEW-XOLD)
703 | AUX=A+1.
704 | A1=(2.*A+3.)*A*A
705 | A2=1.-A1
706 | B1=AUX*A*(X-XNEW)
707 | B2=AUX*A*(X-XOLD)
708 | AD1=6.*A*AUX/(XNEW-XOLD)
709 | AD2=-AD1
710 | BD1=A*(3.*A+2.)
711 | BD2=AUX*(3.*A+1.)
712 | DO 1 I=1,KDIM
713 | Y(I)=A1*YOLD(I)+A2*YNEW(I)+B1*DOLD(I)+B2*DNEW(I)
714 | YD(I)=AD1*YOLD(I)+AD2*YNEW(I)+BD1*DOLD(I)+BD2*DNEW(I)
715 | 1 CONTINUE
716 | RETURN
717 | END
718 | C
719 | C *********************************************************
720 | C
721 | SUBROUTINE BIAP(MX1,MX,MY1,MY,MXY1)
722 | C
723 | DIMENSION X(200),FX(200),V(1000)
724 | COMMON/ZCOEF/ A02(1000),A20(1000),A22(1000)
725 | COMMON /INTRF/ Z(1000),SX(350),SY(350),NX(20),NY(20),BRD(6),NINT,
726 | 1 XINTA
727 | EQUIVALENCE(Z(1),V(1))
728 | C
729 | C ROUTINE DETERMINING THE COEFFICIENTS
730 | C OF BICUBIC SPLINE INTERPOLATION
731 | C
732 | DO 1 J=1,MX
733 | L=MX1+J-1
734 | 1 X(J)=SX(L)
735 | DO 3 I=1,MY
736 | DO 2 J=1,MX
737 | K=MXY1+(J-1)*MY+I-1
738 | 2 FX(J)=V(K)
739 | CALL SPLIN(X,FX,1,MX)
740 | DO 3 J=1,MX
741 | K=MXY1+(J-1)*MY+I-1
742 | 3 A20(K)=FX(J)
743 | C
744 | DO 4 I=1,MY
745 | L=MY1+I-1
746 | 4 X(I)=SY(L)
747 | DO 6 J=1,MX
748 | DO 5 I=1,MY
749 | K=MXY1+(J-1)*MY+I-1
750 | 5 FX(I)=V(K)
751 | CALL SPLIN(X,FX,1,MY)
752 | DO 6 I=1,MY
753 | K=MXY1+(J-1)*MY+I-1
754 | 6 A02(K)=FX(I)
755 | C
756 | DO 7 J=1,MX
757 | L=MX1+J-1
758 | 7 X(J)=SX(L)
759 | DO 9 I=1,MY
760 | DO 8 J=1,MX
761 | K=MXY1+(J-1)*MY+I-1
762 | 8 FX(J)=A02(K)
763 | CALL SPLIN(X,FX,1,MX)
764 | DO 9 J=1,MX
765 | K=MXY1+(J-1)*MY+I-1
766 | 9 A22(K)=FX(J)
767 | C
768 | RETURN
769 | END
770 | C
771 | C
772 | C *********************************************************
773 | C
774 | SUBROUTINE CHRM(Y)
775 | C
776 | C ROUTINE FOR THE COMPUTATION OF THE ELEMENTS OF THE CHRISTOFFEL
777 | C MATRIX FOR AN ARBITRARY ANISOTROPIC MEDIUM
778 | C
779 | DIMENSION Y(18)
780 | COMMON /APROX/ A11,A12,A13,A14,A15,A16,A22,A23,A24,A25,A26,A33,
781 | 1 A34,A35,A36,A44,A45,A46,A55,A56,A66,
782 | 1 DXA11,DXA12,DXA13,DXA14,DXA15,DXA16,DXA22,DXA23,
783 | 1 DXA24,DXA25,DXA26,DXA33,DXA34,DXA35,DXA36,DXA44,
784 | 1 DXA45,DXA46,DXA55,DXA56,DXA66,
785 | 1 DYA11,DYA12,DYA13,DYA14,DYA15,DYA16,DYA22,DYA23,
786 | 1 DYA24,DYA25,DYA26,DYA33,DYA34,DYA35,DYA36,DYA44,
787 | 1 DYA45,DYA46,DYA55,DYA56,DYA66,
788 | 1 DZA11,DZA12,DZA13,DZA14,DZA15,DZA16,DZA22,DZA23,
789 | 1 DZA24,DZA25,DZA26,DZA33,DZA34,DZA35,DZA36,DZA44,
790 | 1 DZA45,DZA46,DZA55,DZA56,DZA66,
791 | 1 A2546,A1266,A1355,A1456,A3645,A2344
792 | COMPLEX PS
793 | COMMON /RAY/ AY(28,2000),DS(20,50),KINT(50),HHH(3,3),tmax,
794 | 1 PS(3,7,50),IS(8,50),N,IREF,IND,IND1
795 | COMMON /AUXI/ IANI(20),INTR,INT1,IPREC,KRE,IREFR,LAY,NDER,IPRINT,
796 | 1 MPRINT,NTR,ISQRT,NAUX,ISOUR,MAUX,MREG,MDIM,IPOL,MSCON,LOUT,
797 | 2 IAMP,MTRNS,ICOEF,IAD,IRHO,ISHEAR,IAC,IRT,mori
798 | INTEGER CODE
799 | COMMON /COD/ CODE(50,2),KREF,KC,ITYPE
800 | COMMON /DJK/ D11,D12,D13,D22,D23,D33,DTR
801 | COMMON /GAM/ C11,C12,C13,C22,C23,C33
802 | C
803 | P1=Y(4)
804 | P2=Y(5)
805 | P3=Y(6)
806 | P2P3=P2*P3
807 | P1P2=P1*P2
808 | P1P3=P1*P3
809 | P1P1=P1*P1
810 | P2P2=P2*P2
811 | P3P3=P3*P3
812 | C11=P1P1*A11+P2P2*A66+P3P3*A55
813 | 1+2.*(P2P3*A56+P1P3*A15+P1P2*A16)
814 | C22=P1P1*A66+P2P2*A22+P3P3*A44
815 | 1+2.*(P2P3*A24+P1P3*A46+P1P2*A26)
816 | C33=P1P1*A55+P2P2*A44+P3P3*A33
817 | 1+2.*(P2P3*A34+P1P3*A35+P1P2*A45)
818 | C23=P1P1*A56+P2P2*A24+P3P3*A34
819 | 1 +P2P3*A2344+P1P3*A3645+P1P2*A2546
820 | C13=P1P1*A15+P2P2*A46+P3P3*A35
821 | 1 +P2P3*A3645+P1P3*A1355+P1P2*A1456
822 | C12=P1P1*A16+P2P2*A26+P3P3*A45
823 | 1 +P2P3*A2546+P1P3*A1456+P1P2*A1266
824 | C11N=C11-1.
825 | C22N=C22-1.
826 | C33N=C33-1.
827 | C23SQ=C23*C23
828 | C13SQ=C13*C13
829 | C12SQ=C12*C12
830 | D11=C22N*C33N-C23SQ
831 | D22=C11N*C33N-C13SQ
832 | D33=C11N*C22N-C12SQ
833 | D12=C13*C23-C12*C33N
834 | D13=C12*C23-C13*C22N
835 | D23=C12*C13-C23*C11N
836 | DTR=D11+D22+D33
837 | IF(ABS(DTR).LT.0.0000001)THEN
838 | WRITE(LOUT,'(A)')'CHRM: SHEAR WAVE SINGULARITY'
839 | IND=10
840 | END IF
841 | RETURN
842 | END
843 | C
844 | C *********************************************************
845 | C
846 | SUBROUTINE CHRM1(C,PN,UN)
847 | C
848 | C ROUTINE FOR THE COMPUTATION OF THE ELEMENTS OF THE CHRISTOFFEL
849 | C MATRIX FOR AN ARBITRARY ANISOTROPIC MEDIUM
850 | C
851 | DIMENSION C(3,3),PN(3),UN(3)
852 | COMMON /APROX/ A11,A12,A13,A14,A15,A16,A22,A23,A24,A25,A26,A33,
853 | 1 A34,A35,A36,A44,A45,A46,A55,A56,A66,
854 | 1 DXA11,DXA12,DXA13,DXA14,DXA15,DXA16,DXA22,DXA23,
855 | 1 DXA24,DXA25,DXA26,DXA33,DXA34,DXA35,DXA36,DXA44,
856 | 1 DXA45,DXA46,DXA55,DXA56,DXA66,
857 | 1 DYA11,DYA12,DYA13,DYA14,DYA15,DYA16,DYA22,DYA23,
858 | 1 DYA24,DYA25,DYA26,DYA33,DYA34,DYA35,DYA36,DYA44,
859 | 1 DYA45,DYA46,DYA55,DYA56,DYA66,
860 | 1 DZA11,DZA12,DZA13,DZA14,DZA15,DZA16,DZA22,DZA23,
861 | 1 DZA24,DZA25,DZA26,DZA33,DZA34,DZA35,DZA36,DZA44,
862 | 1 DZA45,DZA46,DZA55,DZA56,DZA66,
863 | 1 A2546,A1266,A1355,A1456,A3645,A2344
864 | C
865 | P1=PN(1)
866 | P2=PN(2)
867 | P3=PN(3)
868 | U1=UN(1)
869 | U2=UN(2)
870 | U3=UN(3)
871 | P2U3=P2*U3
872 | P3U2=P3*U2
873 | P1U2=P1*U2
874 | P2U1=P2*U1
875 | P1U3=P1*U3
876 | P3U1=P3*U1
877 | P1U1=P1*U1
878 | P2U2=P2*U2
879 | P3U3=P3*U3
880 | C(1,1)=P1U1*A11+P2U2*A66+P3U3*A55
881 | 1+(P2U3+P3U2)*A56+(P1U3+P3U1)*A15+(P1U2+P2U1)*A16
882 | C(2,2)=P1U1*A66+P2U2*A22+P3U3*A44
883 | 1+(P2U3+P3U2)*A24+(P1U3+P3U1)*A46+(P1U2+P2U1)*A26
884 | C(3,3)=P1U1*A55+P2U2*A44+P3U3*A33
885 | 1+(P2U3+P3U2)*A34+(P1U3+P3U1)*A35+(P1U2+P2U1)*A45
886 | C(2,3)=P1U1*A56+P2U2*A24+P3U3*A34
887 | 1+0.5*((P2U3+P3U2)*A2344+(P1U3+P3U1)*A3645+(P1U2+P2U1)*A2546)
888 | C(1,3)=P1U1*A15+P2U2*A46+P3U3*A35
889 | 1+0.5*((P2U3+P3U2)*A3645+(P1U3+P3U1)*A1355+(P1U2+P2U1)*A1456)
890 | C(1,2)=P1U1*A16+P2U2*A26+P3U3*A45
891 | 1+0.5*((P2U3+P3U2)*A2546+(P1U3+P3U1)*A1456+(P1U2+P2U1)*A1266)
892 | C(2,1)=C(1,2)
893 | C(3,2)=C(2,3)
894 | C(3,1)=C(1,3)
895 | RETURN
896 | END
897 | C
898 | C *********************************************************
899 | C
900 | SUBROUTINE CHRM2(Y,G,i)
901 | C
902 | C EVALUATES ELEMENTS OF THE CHRISTOFFEL MATRIX
903 | C
904 | DIMENSION a(21),Y(18),G(3,3)
905 | COMMON/GAM/G11,G12,G13,G22,G23,G33
906 | COMMON /APROX1/ e(21,10)
907 | COMMON /AUXI/ IANI(20),INTR,INT1,IPREC,KRE,IREFR,LAY,NDER,IPRINT,
908 | 1 MPRINT,NTR,ISQRT,NAUX,ISOUR,MAUX,MREG,MDIM,IPOL,MSCON,LOUT,
909 | 2 IAMP,MTRNS,ICOEF,IAD,IRHO,ISHEAR,IAC,IRT,mori
910 | C
911 | DO 1 J=1,21
912 | A(J)=E(J,I)
913 | 1 CONTINUE
914 | P1=Y(4)
915 | P2=Y(5)
916 | P3=Y(6)
917 | P11=P1*P1
918 | P12=P1*P2
919 | P13=P1*P3
920 | P22=P2*P2
921 | P23=P2*P3
922 | P33=P3*P3
923 | G11=A(1)*P11+A(21)*P22+A(19)*P33+
924 | 1 2.*(A(6)*P12+A(5)*P13+A(20)*P23)
925 | G22=A(21)*P11+A(7)*P22+A(16)*P33+
926 | 1 2.*(A(11)*P12+A(18)*P13+A(9)*P23)
927 | G33=A(19)*P11+A(16)*P22+A(12)*P33+
928 | 1 2.*(A(17)*P12+A(14)*P13+A(13)*P23)
929 | G12=A(6)*P11+A(11)*P22+A(17)*P33+
930 | 1 (A(21)+A(2))*P12+(A(20)+A(4))*P13+(A(10)+A(18))*P23
931 | G13=A(5)*P11+A(18)*P22+A(14)*P33+
932 | 1 (A(20)+A(4))*P12+(A(19)+A(3))*P13+(A(17)+A(15))*P23
933 | G23=A(20)*P11+A(9)*P22+A(13)*P33+
934 | 1 (A(10)+A(18))*P12+(A(17)+A(15))*P13+(A(16)+A(8))*P23
935 | G(1,1)=G11
936 | G(1,2)=G12
937 | G(1,3)=G13
938 | G(2,1)=G12
939 | G(2,2)=G22
940 | G(2,3)=G23
941 | G(3,1)=G13
942 | G(3,2)=G23
943 | G(3,3)=G33
944 | RETURN
945 | END
946 | C
947 | C *********************************************************
948 | C
949 | SUBROUTINE PCHRM(Y,G,L,I)
950 | C
951 | C EVALUATES FIRST DERIVATIVES OF ELEMENTS OF CHRISTOFFEL MATRIX
952 | C WITH RESPECT TO THE L-TH COMPONENT OF THE SLOWNESS VECTOR
953 | C
954 | DIMENSION A(21),Y(18),G(3,3)
955 | COMMON /APROX1/ E(21,10)
956 | C
957 | DO 1 J=1,21
958 | A(J)=E(J,I)
959 | 1 CONTINUE
960 | P1=Y(4)
961 | P2=Y(5)
962 | P3=Y(6)
963 | IF(L.EQ.1)THEN
964 | G(1,1)=2.*(A(1)*P1+A(6)*P2+A(5)*P3)
965 | G(2,2)=2.*(A(21)*P1+A(11)*P2+A(18)*P3)
966 | G(3,3)=2.*(A(19)*P1+A(17)*P2+A(14)*P3)
967 | AUX=2.*A(6)*P1+(A(21)+A(2))*P2+(A(20)+A(4))*P3
968 | G(1,2)=AUX
969 | G(2,1)=AUX
970 | AUX=2.*A(5)*P1+(A(20)+A(4))*P2+(A(19)+A(3))*P3
971 | G(1,3)=AUX
972 | G(3,1)=AUX
973 | AUX=2.*A(20)*P1+(A(10)+A(18))*P2+(A(17)+A(15))*P3
974 | G(2,3)=AUX
975 | G(3,2)=AUX
976 | END IF
977 | IF(L.EQ.2)THEN
978 | G(1,1)=2.*(A(6)*P1+A(21)*P2+A(20)*P3)
979 | G(2,2)=2.*(A(11)*P1+A(7)*P2+A(9)*P3)
980 | G(3,3)=2.*(A(17)*P1+A(16)*P2+A(13)*P3)
981 | AUX=2.*A(11)*P2+(A(21)+A(2))*P1+(A(10)+A(18))*P3
982 | G(1,2)=AUX
983 | G(2,1)=AUX
984 | AUX=2.*A(18)*P2+(A(20)+A(4))*P1+(A(17)+A(15))*P3
985 | G(1,3)=AUX
986 | G(3,1)=AUX
987 | AUX=2.*A(9)*P2+(A(10)+A(18))*P1+(A(16)+A(8))*P3
988 | G(2,3)=AUX
989 | G(3,2)=AUX
990 | END IF
991 | IF(L.EQ.3)THEN
992 | G(1,1)=2.*(A(5)*P1+A(20)*P2+A(19)*P3)
993 | G(2,2)=2.*(A(18)*P1+A(9)*P2+A(16)*P3)
994 | G(3,3)=2.*(A(14)*P1+A(13)*P2+A(12)*P3)
995 | AUX=2.*A(17)*P3+(A(20)+A(4))*P1+(A(10)+A(18))*P2
996 | G(1,2)=AUX
997 | G(2,1)=AUX
998 | AUX=2.*A(14)*P3+(A(19)+A(3))*P1+(A(17)+A(15))*P2
999 | G(1,3)=AUX
1000 | G(3,1)=AUX
1001 | AUX=2.*A(13)*P3+(A(17)+A(15))*P1+(A(16)+A(8))*P2
1002 | G(2,3)=AUX
1003 | G(3,2)=AUX
1004 | END IF
1005 | RETURN
1006 | END
1007 | C
1008 | C *********************************************************
1009 | C
1010 | SUBROUTINE PPCHRM(G,L,M,i)
1011 | C
1012 | C EVALUATES SECOND DERIVATIVES OF ELEMENTS OF CHRISTOFFEL MATRIX
1013 | C WITH RESPECT TO THE L-TH AND M-TH COMPONENTS OF THE SLOWNESS
1014 | C VECTOR
1015 | C
1016 | DIMENSION a(21),G(3,3)
1017 | COMMON /APROX1/ e(21,10)
1018 | C
1019 | do 1 j=1,21
1020 | a(j)=e(j,i)
1021 | 1 continue
1022 | IF(L.EQ.1.AND.M.EQ.1)THEN
1023 | G(1,1)=2.*A(1)
1024 | G(2,2)=2.*A(21)
1025 | G(3,3)=2.*A(19)
1026 | AUX=2.*A(6)
1027 | G(1,2)=AUX
1028 | G(2,1)=AUX
1029 | AUX=2.*A(5)
1030 | G(1,3)=AUX
1031 | G(3,1)=AUX
1032 | AUX=2.*A(20)
1033 | G(2,3)=AUX
1034 | G(3,2)=AUX
1035 | END IF
1036 | IF(L.EQ.2.AND.M.EQ.2)THEN
1037 | G(1,1)=2.*A(21)
1038 | G(2,2)=2.*A(7)
1039 | G(3,3)=2.*A(16)
1040 | AUX=2.*A(11)
1041 | G(1,2)=AUX
1042 | G(2,1)=AUX
1043 | AUX=2.*A(18)
1044 | G(1,3)=AUX
1045 | G(3,1)=AUX
1046 | AUX=2.*A(9)
1047 | G(2,3)=AUX
1048 | G(3,2)=AUX
1049 | END IF
1050 | IF(L.EQ.3.AND.M.EQ.3)THEN
1051 | G(1,1)=2.*A(19)
1052 | G(2,2)=2.*A(16)
1053 | G(3,3)=2.*A(12)
1054 | AUX=2.*A(17)
1055 | G(1,2)=AUX
1056 | G(2,1)=AUX
1057 | AUX=2.*A(14)
1058 | G(1,3)=AUX
1059 | G(3,1)=AUX
1060 | AUX=2.*A(13)
1061 | G(2,3)=AUX
1062 | G(3,2)=AUX
1063 | END IF
1064 | IF((L.EQ.1.AND.M.EQ.2).OR.(L.EQ.2.AND.M.EQ.1))THEN
1065 | G(1,1)=2.*A(6)
1066 | G(2,2)=2.*A(11)
1067 | G(3,3)=2.*A(17)
1068 | AUX=A(21)+A(2)
1069 | G(1,2)=AUX
1070 | G(2,1)=AUX
1071 | AUX=A(20)+A(4)
1072 | G(1,3)=AUX
1073 | G(3,1)=AUX
1074 | AUX=A(10)+A(18)
1075 | G(2,3)=AUX
1076 | G(3,2)=AUX
1077 | END IF
1078 | IF((L.EQ.1.AND.M.EQ.3).OR.(L.EQ.3.AND.M.EQ.1))THEN
1079 | G(1,1)=2.*A(5)
1080 | G(2,2)=2.*A(18)
1081 | G(3,3)=2.*A(14)
1082 | AUX=A(20)+A(4)
1083 | G(1,2)=AUX
1084 | G(2,1)=AUX
1085 | AUX=A(19)+A(3)
1086 | G(1,3)=AUX
1087 | G(3,1)=AUX
1088 | AUX=A(17)+A(15)
1089 | G(2,3)=AUX
1090 | G(3,2)=AUX
1091 | END IF
1092 | IF((L.EQ.2.AND.M.EQ.3).OR.(L.EQ.3.AND.M.EQ.2))THEN
1093 | G(1,1)=2.*A(20)
1094 | G(2,2)=2.*A(9)
1095 | G(3,3)=2.*A(13)
1096 | AUX=A(10)+A(18)
1097 | G(1,2)=AUX
1098 | G(2,1)=AUX
1099 | AUX=A(17)+A(15)
1100 | G(1,3)=AUX
1101 | G(3,1)=AUX
1102 | AUX=A(16)+A(8)
1103 | G(2,3)=AUX
1104 | G(3,2)=AUX
1105 | END IF
1106 | RETURN
1107 | END
1108 | C
1109 | C *********************************************************
1110 | C
1111 | SUBROUTINE FACETS(N1,N2,NSRF)
1112 | INTEGER LU,N1,N2,NSRF
1113 | C
1114 | C Subroutine FACETS writes the index file listing the vertices of each
1115 | C tetragon covering the structural interface. The vertices are assumed
1116 | C to be stored in a separate file, with inner loop over N1 points along
1117 | C the first horizontal axis, middle loop over N2 points along the second
1118 | C horizontal axis and outer loop over the surfaces. The vertices are
1119 | C indexed by positive integers according to their order in the vertex
1120 | C file.
1121 | C
1122 | C Input:
1123 | C LU... Logical unit number connected to the output file to be
1124 | C written by this subroutine.
1125 | C N1... Number of points along the first horizontal axis.
1126 | C N2... Number of points along the second horizontal axis.
1127 | C NSRF... Number of interfaces.
1128 | C The input parameters are not altered.
1129 | C
1130 | C No output.
1131 | C
1132 | C Output index file with the tetragons:
1133 | C For each tetragon, a line containing I1,I2,I3,I4,/
1134 | C I1,I2,I3,I4... Indices of the vertices of the tetragon.
1135 | C The vertices are indexed by positive integers according to
1136 | C their order in the respective vertex file.
1137 | C /... List of vertices is terminated by a slash.
1138 | C
1139 | C Date: 1999, October 4
1140 | C Coded by Ludek Klimes
1141 | C
1142 | C-----------------------------------------------------------------------
1143 | C
1144 | C Auxiliary storage locations:
1145 | CHARACTER*9 FORMAT
1146 | INTEGER I1,I2,ISRF
1147 | COMMON/VRML/LUBRD,LUGRD,LU,LURAY
1148 | C
1149 | IF(LU.EQ.0)RETURN
1150 | C Setting output format:
1151 | FORMAT='(4(I0,A))'
1152 | I1=INT(ALOG10(FLOAT(N1*N2*NSRF)+0.5))+1
1153 | FORMAT(5:5)=CHAR(ICHAR('0')+I1)
1154 | C
1155 | C Writing the file:
1156 | DO 33 ISRF=0,N1*N2*(NSRF-1),N1*N2
1157 | DO 32 I2=ISRF,ISRF+N1*(N2-2),N1
1158 | DO 31 I1=I2+1,I2+N1-1
1159 | WRITE(LU,FORMAT) I1,' ',I1+1,' ',I1+1+N1,' ',I1+N1,' /'
1160 | 31 CONTINUE
1161 | 32 CONTINUE
1162 | 33 CONTINUE
1163 | C
1164 | RETURN
1165 | END
1166 | C
1167 | C *********************************************************
1168 | C
1169 | SUBROUTINE BOX(BRD)
1170 | C
1171 | DIMENSION BRD(6)
1172 | COMMON/VRML/LUBRD,LUGRD,LUIND,LURAY
1173 | C
1174 | WRITE(LUBRD,109)
1175 | WRITE(LUBRD,105)
1176 | I=1
1177 | WRITE(LUBRD,112)I
1178 | WRITE(LUBRD,110)BRD(1),BRD(3),BRD(5)
1179 | WRITE(LUBRD,110)BRD(1),BRD(4),BRD(5)
1180 | WRITE(LUBRD,110)BRD(1),BRD(4),BRD(6)
1181 | WRITE(LUBRD,110)BRD(1),BRD(3),BRD(6)
1182 | WRITE(LUBRD,110)BRD(1),BRD(3),BRD(5)
1183 | WRITE(LUBRD,105)
1184 | I=2
1185 | WRITE(LUBRD,112)I
1186 | WRITE(LUBRD,110)BRD(1),BRD(3),BRD(5)
1187 | WRITE(LUBRD,110)BRD(1),BRD(3),BRD(6)
1188 | WRITE(LUBRD,110)BRD(2),BRD(3),BRD(6)
1189 | WRITE(LUBRD,110)BRD(2),BRD(3),BRD(5)
1190 | WRITE(LUBRD,110)BRD(1),BRD(3),BRD(5)
1191 | WRITE(LUBRD,105)
1192 | I=3
1193 | WRITE(LUBRD,112)I
1194 | WRITE(LUBRD,110)BRD(2),BRD(3),BRD(5)
1195 | WRITE(LUBRD,110)BRD(2),BRD(4),BRD(5)
1196 | WRITE(LUBRD,110)BRD(2),BRD(4),BRD(6)
1197 | WRITE(LUBRD,110)BRD(2),BRD(3),BRD(6)
1198 | WRITE(LUBRD,110)BRD(2),BRD(3),BRD(5)
1199 | WRITE(LUBRD,105)
1200 | I=4
1201 | WRITE(LUBRD,112)I
1202 | WRITE(LUBRD,110)BRD(1),BRD(4),BRD(5)
1203 | WRITE(LUBRD,110)BRD(1),BRD(4),BRD(6)
1204 | WRITE(LUBRD,110)BRD(2),BRD(4),BRD(6)
1205 | WRITE(LUBRD,110)BRD(2),BRD(4),BRD(5)
1206 | WRITE(LUBRD,110)BRD(1),BRD(4),BRD(5)
1207 | WRITE(LUBRD,105)
1208 | I=1
1209 | WRITE(LUBRD,112)I
1210 | WRITE(LUBRD,110)BRD(1),BRD(3),BRD(5)
1211 | WRITE(LUBRD,110)BRD(1),BRD(4),BRD(5)
1212 | WRITE(LUBRD,110)BRD(2),BRD(4),BRD(5)
1213 | WRITE(LUBRD,110)BRD(2),BRD(3),BRD(5)
1214 | WRITE(LUBRD,110)BRD(1),BRD(3),BRD(5)
1215 | WRITE(LUBRD,105)
1216 | I=1
1217 | WRITE(LUBRD,112)I
1218 | WRITE(LUBRD,110)BRD(1),BRD(3),BRD(6)
1219 | WRITE(LUBRD,110)BRD(1),BRD(4),BRD(6)
1220 | WRITE(LUBRD,110)BRD(2),BRD(4),BRD(6)
1221 | WRITE(LUBRD,110)BRD(2),BRD(3),BRD(6)
1222 | WRITE(LUBRD,110)BRD(1),BRD(3),BRD(6)
1223 | WRITE(LUBRD,105)
1224 | WRITE(LUBRD,105)
1225 | C
1226 | 105 FORMAT('/')
1227 | 109 FORMAT(25H'BOUNDARIES OF THE MODEL')
1228 | 110 FORMAT(3(F10.5,1X),'/')
1229 | 112 FORMAT(6H'BOUND,I1,1H',1X,'/')
1230 | C
1231 | RETURN
1232 | END
1233 | C
1234 | C=======================================================================
1235 | C
1236 | INCLUDE 'a2.for'
1237 | C a2.for
1238 | INCLUDE 'a3.for'
1239 | C a3.for
1240 | INCLUDE 'a42.for' !!
1241 | C a4.for
1242 | INCLUDE 'a5.for'
1243 | C a5.for
1244 | C
1245 | C Interpolation method:
1246 | C Include just one of the following files 'mod*.for':
1247 | C (a) Isosurface interpolation:
1248 | C INCLUDE 'modis.for'
1249 | C modis.for
1250 | C (b) (Bi-)(tri-)cubic B-spline interpolation:
1251 | INCLUDE 'modbs.for'
1252 | C modbs.for
1253 | C
1254 | C=======================================================================
1255 | C
1256 |
--------------------------------------------------------------------------------
/fractureSH_gui.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'fractureSH.ui'
4 | #
5 | # Created by: PyQt5 UI code generator 5.8
6 | #
7 | # WARNING! All changes made in this file will be lost!
8 |
9 | from PyQt5 import QtCore, QtGui, QtWidgets
10 |
11 | class Ui_MainWindow(object):
12 | def setupUi(self, MainWindow):
13 | MainWindow.setObjectName("MainWindow")
14 | MainWindow.resize(960, 836)
15 | self.centralwidget = QtWidgets.QWidget(MainWindow)
16 | self.centralwidget.setObjectName("centralwidget")
17 | self.gridTabWidget_5 = QtWidgets.QTabWidget(self.centralwidget)
18 | self.gridTabWidget_5.setGeometry(QtCore.QRect(10, 0, 941, 901))
19 | self.gridTabWidget_5.setObjectName("gridTabWidget_5")
20 | self.tab_reflect_3 = QtWidgets.QWidget()
21 | self.tab_reflect_3.setFocusPolicy(QtCore.Qt.TabFocus)
22 | self.tab_reflect_3.setObjectName("tab_reflect_3")
23 | self.gridLayout_9 = QtWidgets.QGridLayout(self.tab_reflect_3)
24 | self.gridLayout_9.setContentsMargins(0, 0, 0, 0)
25 | self.gridLayout_9.setObjectName("gridLayout_9")
26 | self.frame_6 = QtWidgets.QFrame(self.tab_reflect_3)
27 | self.frame_6.setFrameShape(QtWidgets.QFrame.StyledPanel)
28 | self.frame_6.setFrameShadow(QtWidgets.QFrame.Raised)
29 | self.frame_6.setObjectName("frame_6")
30 | self.widget = QtWidgets.QWidget(self.frame_6)
31 | self.widget.setGeometry(QtCore.QRect(10, 10, 901, 381))
32 | self.widget.setObjectName("widget")
33 | self.gridLayout_9.addWidget(self.frame_6, 1, 0, 1, 1)
34 | self.frame_4 = QtWidgets.QFrame(self.tab_reflect_3)
35 | self.frame_4.setMaximumSize(QtCore.QSize(16777215, 300))
36 | self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
37 | self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
38 | self.frame_4.setObjectName("frame_4")
39 | self.label_33 = QtWidgets.QLabel(self.frame_4)
40 | self.label_33.setGeometry(QtCore.QRect(470, 210, 158, 29))
41 | self.label_33.setObjectName("label_33")
42 | self.frame_3 = QtWidgets.QFrame(self.frame_4)
43 | self.frame_3.setGeometry(QtCore.QRect(660, 20, 161, 151))
44 | self.frame_3.setFrameShape(QtWidgets.QFrame.Panel)
45 | self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
46 | self.frame_3.setObjectName("frame_3")
47 | self.gridLayoutWidget_4 = QtWidgets.QWidget(self.frame_3)
48 | self.gridLayoutWidget_4.setGeometry(QtCore.QRect(10, 10, 141, 131))
49 | self.gridLayoutWidget_4.setObjectName("gridLayoutWidget_4")
50 | self.gridLayout_5 = QtWidgets.QGridLayout(self.gridLayoutWidget_4)
51 | self.gridLayout_5.setContentsMargins(0, 0, 0, 0)
52 | self.gridLayout_5.setObjectName("gridLayout_5")
53 | self.doubleSpinBox_DT = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_4)
54 | self.doubleSpinBox_DT.setDecimals(3)
55 | self.doubleSpinBox_DT.setMaximum(1.0)
56 | self.doubleSpinBox_DT.setSingleStep(0.01)
57 | self.doubleSpinBox_DT.setObjectName("doubleSpinBox_DT")
58 | self.gridLayout_5.addWidget(self.doubleSpinBox_DT, 1, 1, 1, 1)
59 | self.verticalSlider_DT = QtWidgets.QSlider(self.gridLayoutWidget_4)
60 | self.verticalSlider_DT.setMaximum(1000)
61 | self.verticalSlider_DT.setOrientation(QtCore.Qt.Vertical)
62 | self.verticalSlider_DT.setObjectName("verticalSlider_DT")
63 | self.gridLayout_5.addWidget(self.verticalSlider_DT, 2, 1, 1, 1, QtCore.Qt.AlignHCenter)
64 | self.label_2 = QtWidgets.QLabel(self.gridLayoutWidget_4)
65 | self.label_2.setObjectName("label_2")
66 | self.gridLayout_5.addWidget(self.label_2, 0, 0, 1, 1)
67 | self.verticalSlider_DN = QtWidgets.QSlider(self.gridLayoutWidget_4)
68 | self.verticalSlider_DN.setMaximum(1000)
69 | self.verticalSlider_DN.setOrientation(QtCore.Qt.Vertical)
70 | self.verticalSlider_DN.setObjectName("verticalSlider_DN")
71 | self.gridLayout_5.addWidget(self.verticalSlider_DN, 2, 0, 1, 1, QtCore.Qt.AlignHCenter)
72 | self.doubleSpinBox_DN = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_4)
73 | self.doubleSpinBox_DN.setDecimals(3)
74 | self.doubleSpinBox_DN.setMaximum(1.0)
75 | self.doubleSpinBox_DN.setSingleStep(0.01)
76 | self.doubleSpinBox_DN.setObjectName("doubleSpinBox_DN")
77 | self.gridLayout_5.addWidget(self.doubleSpinBox_DN, 1, 0, 1, 1)
78 | self.label_3 = QtWidgets.QLabel(self.gridLayoutWidget_4)
79 | self.label_3.setObjectName("label_3")
80 | self.gridLayout_5.addWidget(self.label_3, 0, 1, 1, 1)
81 | self.frame_2 = QtWidgets.QFrame(self.frame_4)
82 | self.frame_2.setGeometry(QtCore.QRect(670, 200, 161, 51))
83 | self.frame_2.setStyleSheet("background-color: rgb(234, 226, 228);")
84 | self.frame_2.setFrameShape(QtWidgets.QFrame.Panel)
85 | self.frame_2.setFrameShadow(QtWidgets.QFrame.Plain)
86 | self.frame_2.setLineWidth(0)
87 | self.frame_2.setObjectName("frame_2")
88 | self.label_18 = QtWidgets.QLabel(self.frame_2)
89 | self.label_18.setGeometry(QtCore.QRect(10, 0, 71, 51))
90 | self.label_18.setObjectName("label_18")
91 | self.split_box0_90 = QtWidgets.QCheckBox(self.frame_2)
92 | self.split_box0_90.setGeometry(QtCore.QRect(100, 10, 57, 22))
93 | self.split_box0_90.setStyleSheet("color: rgb(255, 0, 0);")
94 | self.split_box0_90.setObjectName("split_box0_90")
95 | self.verticalFrame_5 = QtWidgets.QFrame(self.frame_4)
96 | self.verticalFrame_5.setGeometry(QtCore.QRect(510, 20, 131, 135))
97 | self.verticalFrame_5.setStyleSheet("")
98 | self.verticalFrame_5.setFrameShape(QtWidgets.QFrame.Box)
99 | self.verticalFrame_5.setFrameShadow(QtWidgets.QFrame.Sunken)
100 | self.verticalFrame_5.setObjectName("verticalFrame_5")
101 | self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.verticalFrame_5)
102 | self.verticalLayout_7.setObjectName("verticalLayout_7")
103 | self.label_26 = QtWidgets.QLabel(self.verticalFrame_5)
104 | self.label_26.setObjectName("label_26")
105 | self.verticalLayout_7.addWidget(self.label_26, 0, QtCore.Qt.AlignHCenter)
106 | self.verticalLayout = QtWidgets.QVBoxLayout()
107 | self.verticalLayout.setObjectName("verticalLayout")
108 | self.gridLayout_3 = QtWidgets.QGridLayout()
109 | self.gridLayout_3.setObjectName("gridLayout_3")
110 | self.label_27 = QtWidgets.QLabel(self.verticalFrame_5)
111 | self.label_27.setObjectName("label_27")
112 | self.gridLayout_3.addWidget(self.label_27, 1, 1, 1, 1)
113 | self.label_13 = QtWidgets.QLabel(self.verticalFrame_5)
114 | self.label_13.setObjectName("label_13")
115 | self.gridLayout_3.addWidget(self.label_13, 2, 0, 1, 1)
116 | self.doubleSpinBox_bulk = QtWidgets.QDoubleSpinBox(self.verticalFrame_5)
117 | self.doubleSpinBox_bulk.setObjectName("doubleSpinBox_bulk")
118 | self.gridLayout_3.addWidget(self.doubleSpinBox_bulk, 1, 0, 1, 1)
119 | self.label_12 = QtWidgets.QLabel(self.verticalFrame_5)
120 | self.label_12.setObjectName("label_12")
121 | self.gridLayout_3.addWidget(self.label_12, 0, 0, 1, 1)
122 | self.label_29 = QtWidgets.QLabel(self.verticalFrame_5)
123 | self.label_29.setObjectName("label_29")
124 | self.gridLayout_3.addWidget(self.label_29, 3, 1, 1, 1)
125 | self.doubleSpinBox_shear = QtWidgets.QDoubleSpinBox(self.verticalFrame_5)
126 | self.doubleSpinBox_shear.setObjectName("doubleSpinBox_shear")
127 | self.gridLayout_3.addWidget(self.doubleSpinBox_shear, 3, 0, 1, 1)
128 | self.verticalLayout.addLayout(self.gridLayout_3)
129 | self.verticalLayout_7.addLayout(self.verticalLayout)
130 | self.gridLayoutWidget = QtWidgets.QWidget(self.frame_4)
131 | self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 10, 299, 171))
132 | self.gridLayoutWidget.setObjectName("gridLayoutWidget")
133 | self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
134 | self.gridLayout.setContentsMargins(0, 0, 0, 0)
135 | self.gridLayout.setObjectName("gridLayout")
136 | self.label_28 = QtWidgets.QLabel(self.gridLayoutWidget)
137 | self.label_28.setObjectName("label_28")
138 | self.gridLayout.addWidget(self.label_28, 4, 0, 1, 1)
139 | self.spinBox_vs1 = QtWidgets.QSpinBox(self.gridLayoutWidget)
140 | self.spinBox_vs1.setMinimum(1)
141 | self.spinBox_vs1.setMaximum(1000000000)
142 | self.spinBox_vs1.setObjectName("spinBox_vs1")
143 | self.gridLayout.addWidget(self.spinBox_vs1, 2, 1, 1, 1)
144 | self.label_6 = QtWidgets.QLabel(self.gridLayoutWidget)
145 | self.label_6.setObjectName("label_6")
146 | self.gridLayout.addWidget(self.label_6, 1, 3, 1, 1)
147 | self.label_16 = QtWidgets.QLabel(self.gridLayoutWidget)
148 | self.label_16.setObjectName("label_16")
149 | self.gridLayout.addWidget(self.label_16, 0, 1, 1, 1)
150 | self.spinBox_p1 = QtWidgets.QSpinBox(self.gridLayoutWidget)
151 | self.spinBox_p1.setMinimum(1)
152 | self.spinBox_p1.setMaximum(1000000000)
153 | self.spinBox_p1.setObjectName("spinBox_p1")
154 | self.gridLayout.addWidget(self.spinBox_p1, 3, 1, 1, 1)
155 | self.spinBox_vp2 = QtWidgets.QSpinBox(self.gridLayoutWidget)
156 | self.spinBox_vp2.setMinimum(1)
157 | self.spinBox_vp2.setMaximum(1000000000)
158 | self.spinBox_vp2.setObjectName("spinBox_vp2")
159 | self.gridLayout.addWidget(self.spinBox_vp2, 1, 2, 1, 1)
160 | self.label_24 = QtWidgets.QLabel(self.gridLayoutWidget)
161 | self.label_24.setObjectName("label_24")
162 | self.gridLayout.addWidget(self.label_24, 0, 2, 1, 1)
163 | self.label = QtWidgets.QLabel(self.gridLayoutWidget)
164 | self.label.setObjectName("label")
165 | self.gridLayout.addWidget(self.label, 1, 0, 1, 1)
166 | self.label_4 = QtWidgets.QLabel(self.gridLayoutWidget)
167 | self.label_4.setObjectName("label_4")
168 | self.gridLayout.addWidget(self.label_4, 2, 0, 1, 1)
169 | self.label_7 = QtWidgets.QLabel(self.gridLayoutWidget)
170 | self.label_7.setObjectName("label_7")
171 | self.gridLayout.addWidget(self.label_7, 2, 3, 1, 1)
172 | self.label_5 = QtWidgets.QLabel(self.gridLayoutWidget)
173 | self.label_5.setObjectName("label_5")
174 | self.gridLayout.addWidget(self.label_5, 3, 0, 1, 1)
175 | self.spinBox_vs2 = QtWidgets.QSpinBox(self.gridLayoutWidget)
176 | self.spinBox_vs2.setMinimum(1)
177 | self.spinBox_vs2.setMaximum(1000000000)
178 | self.spinBox_vs2.setObjectName("spinBox_vs2")
179 | self.gridLayout.addWidget(self.spinBox_vs2, 2, 2, 1, 1)
180 | self.label_8 = QtWidgets.QLabel(self.gridLayoutWidget)
181 | self.label_8.setObjectName("label_8")
182 | self.gridLayout.addWidget(self.label_8, 3, 3, 1, 1)
183 | self.spinBox_thick = QtWidgets.QSpinBox(self.gridLayoutWidget)
184 | self.spinBox_thick.setMaximum(100000)
185 | self.spinBox_thick.setProperty("value", 1000)
186 | self.spinBox_thick.setObjectName("spinBox_thick")
187 | self.gridLayout.addWidget(self.spinBox_thick, 4, 1, 1, 1)
188 | self.spinBox_vp1 = QtWidgets.QSpinBox(self.gridLayoutWidget)
189 | self.spinBox_vp1.setFrame(True)
190 | self.spinBox_vp1.setMinimum(1)
191 | self.spinBox_vp1.setMaximum(1000000000)
192 | self.spinBox_vp1.setObjectName("spinBox_vp1")
193 | self.gridLayout.addWidget(self.spinBox_vp1, 1, 1, 1, 1)
194 | self.spinBox_p2 = QtWidgets.QSpinBox(self.gridLayoutWidget)
195 | self.spinBox_p2.setMinimum(1)
196 | self.spinBox_p2.setMaximum(1000000000)
197 | self.spinBox_p2.setObjectName("spinBox_p2")
198 | self.gridLayout.addWidget(self.spinBox_p2, 3, 2, 1, 1)
199 | self.frame = QtWidgets.QFrame(self.frame_4)
200 | self.frame.setGeometry(QtCore.QRect(340, 10, 151, 171))
201 | self.frame.setStyleSheet("gridline-color: rgb(255, 170, 0);")
202 | self.frame.setFrameShape(QtWidgets.QFrame.Box)
203 | self.frame.setFrameShadow(QtWidgets.QFrame.Sunken)
204 | self.frame.setObjectName("frame")
205 | self.label_25 = QtWidgets.QLabel(self.frame)
206 | self.label_25.setGeometry(QtCore.QRect(20, 10, 111, 20))
207 | self.label_25.setObjectName("label_25")
208 | self.gridLayoutWidget_3 = QtWidgets.QWidget(self.frame)
209 | self.gridLayoutWidget_3.setGeometry(QtCore.QRect(10, 30, 137, 76))
210 | self.gridLayoutWidget_3.setObjectName("gridLayoutWidget_3")
211 | self.gridLayout_6 = QtWidgets.QGridLayout(self.gridLayoutWidget_3)
212 | self.gridLayout_6.setContentsMargins(0, 0, 0, 0)
213 | self.gridLayout_6.setObjectName("gridLayout_6")
214 | self.verticalLayout_4 = QtWidgets.QVBoxLayout()
215 | self.verticalLayout_4.setObjectName("verticalLayout_4")
216 | self.label_11 = QtWidgets.QLabel(self.gridLayoutWidget_3)
217 | self.label_11.setObjectName("label_11")
218 | self.verticalLayout_4.addWidget(self.label_11)
219 | self.doubleSpinBox_aspect = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_3)
220 | self.doubleSpinBox_aspect.setDecimals(3)
221 | self.doubleSpinBox_aspect.setMinimum(0.001)
222 | self.doubleSpinBox_aspect.setMaximum(100.0)
223 | self.doubleSpinBox_aspect.setSingleStep(0.01)
224 | self.doubleSpinBox_aspect.setObjectName("doubleSpinBox_aspect")
225 | self.verticalLayout_4.addWidget(self.doubleSpinBox_aspect)
226 | self.gridLayout_6.addLayout(self.verticalLayout_4, 0, 0, 1, 1)
227 | self.verticalLayout_5 = QtWidgets.QVBoxLayout()
228 | self.verticalLayout_5.setObjectName("verticalLayout_5")
229 | self.label_14 = QtWidgets.QLabel(self.gridLayoutWidget_3)
230 | self.label_14.setObjectName("label_14")
231 | self.verticalLayout_5.addWidget(self.label_14)
232 | self.spinBox_fract = QtWidgets.QSpinBox(self.gridLayoutWidget_3)
233 | self.spinBox_fract.setMaximum(100)
234 | self.spinBox_fract.setObjectName("spinBox_fract")
235 | self.verticalLayout_5.addWidget(self.spinBox_fract)
236 | self.gridLayout_6.addLayout(self.verticalLayout_5, 0, 1, 1, 1)
237 | self.verticalSlider_fract = QtWidgets.QSlider(self.frame)
238 | self.verticalSlider_fract.setGeometry(QtCore.QRect(100, 110, 20, 51))
239 | self.verticalSlider_fract.setMaximum(100)
240 | self.verticalSlider_fract.setOrientation(QtCore.Qt.Vertical)
241 | self.verticalSlider_fract.setObjectName("verticalSlider_fract")
242 | self.verticalSlider_aspect = QtWidgets.QSlider(self.frame)
243 | self.verticalSlider_aspect.setGeometry(QtCore.QRect(40, 110, 20, 51))
244 | self.verticalSlider_aspect.setMaximum(10000)
245 | self.verticalSlider_aspect.setOrientation(QtCore.Qt.Vertical)
246 | self.verticalSlider_aspect.setObjectName("verticalSlider_aspect")
247 | self.line = QtWidgets.QFrame(self.frame_4)
248 | self.line.setGeometry(QtCore.QRect(0, 190, 601, 16))
249 | self.line.setFrameShape(QtWidgets.QFrame.HLine)
250 | self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
251 | self.line.setObjectName("line")
252 | self.label_17 = QtWidgets.QLabel(self.frame_4)
253 | self.label_17.setGeometry(QtCore.QRect(585, 212, 20, 16))
254 | self.label_17.setObjectName("label_17")
255 | self.horizontalLayoutWidget = QtWidgets.QWidget(self.frame_4)
256 | self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 210, 411, 31))
257 | self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
258 | self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
259 | self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
260 | self.horizontalLayout_2.setObjectName("horizontalLayout_2")
261 | self.label_30 = QtWidgets.QLabel(self.horizontalLayoutWidget)
262 | self.label_30.setObjectName("label_30")
263 | self.horizontalLayout_2.addWidget(self.label_30, 0, QtCore.Qt.AlignHCenter)
264 | self.spinBox_ngeo = QtWidgets.QSpinBox(self.horizontalLayoutWidget)
265 | self.spinBox_ngeo.setMaximum(10000)
266 | self.spinBox_ngeo.setProperty("value", 96)
267 | self.spinBox_ngeo.setObjectName("spinBox_ngeo")
268 | self.horizontalLayout_2.addWidget(self.spinBox_ngeo)
269 | self.label_31 = QtWidgets.QLabel(self.horizontalLayoutWidget)
270 | self.label_31.setObjectName("label_31")
271 | self.horizontalLayout_2.addWidget(self.label_31, 0, QtCore.Qt.AlignHCenter)
272 | self.spinBox_rmin = QtWidgets.QSpinBox(self.horizontalLayoutWidget)
273 | self.spinBox_rmin.setMaximum(10000)
274 | self.spinBox_rmin.setProperty("value", 20)
275 | self.spinBox_rmin.setObjectName("spinBox_rmin")
276 | self.horizontalLayout_2.addWidget(self.spinBox_rmin)
277 | self.label_32 = QtWidgets.QLabel(self.horizontalLayoutWidget)
278 | self.label_32.setObjectName("label_32")
279 | self.horizontalLayout_2.addWidget(self.label_32)
280 | self.spinBox_rstep = QtWidgets.QSpinBox(self.horizontalLayoutWidget)
281 | self.spinBox_rstep.setMaximum(10000)
282 | self.spinBox_rstep.setProperty("value", 20)
283 | self.spinBox_rstep.setObjectName("spinBox_rstep")
284 | self.horizontalLayout_2.addWidget(self.spinBox_rstep)
285 | self.verticalLayoutWidget_2 = QtWidgets.QWidget(self.frame_4)
286 | self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(840, 20, 64, 161))
287 | self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
288 | self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
289 | self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
290 | self.verticalLayout_3.setObjectName("verticalLayout_3")
291 | self.label_10 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
292 | self.label_10.setObjectName("label_10")
293 | self.verticalLayout_3.addWidget(self.label_10)
294 | self.doubleSpinBox_d = QtWidgets.QDoubleSpinBox(self.verticalLayoutWidget_2)
295 | self.doubleSpinBox_d.setDecimals(3)
296 | self.doubleSpinBox_d.setSingleStep(0.1)
297 | self.doubleSpinBox_d.setObjectName("doubleSpinBox_d")
298 | self.verticalLayout_3.addWidget(self.doubleSpinBox_d)
299 | self.label_9 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
300 | self.label_9.setObjectName("label_9")
301 | self.verticalLayout_3.addWidget(self.label_9)
302 | self.doubleSpinBox_e = QtWidgets.QDoubleSpinBox(self.verticalLayoutWidget_2)
303 | self.doubleSpinBox_e.setDecimals(3)
304 | self.doubleSpinBox_e.setSingleStep(0.1)
305 | self.doubleSpinBox_e.setObjectName("doubleSpinBox_e")
306 | self.verticalLayout_3.addWidget(self.doubleSpinBox_e)
307 | self.label_15 = QtWidgets.QLabel(self.verticalLayoutWidget_2)
308 | self.label_15.setObjectName("label_15")
309 | self.verticalLayout_3.addWidget(self.label_15)
310 | self.doubleSpinBox_y = QtWidgets.QDoubleSpinBox(self.verticalLayoutWidget_2)
311 | self.doubleSpinBox_y.setDecimals(3)
312 | self.doubleSpinBox_y.setSingleStep(0.1)
313 | self.doubleSpinBox_y.setObjectName("doubleSpinBox_y")
314 | self.verticalLayout_3.addWidget(self.doubleSpinBox_y)
315 | self.frame_5 = QtWidgets.QFrame(self.frame_4)
316 | self.frame_5.setGeometry(QtCore.QRect(10, 260, 881, 31))
317 | self.frame_5.setStyleSheet("")
318 | self.frame_5.setFrameShape(QtWidgets.QFrame.Panel)
319 | self.frame_5.setFrameShadow(QtWidgets.QFrame.Plain)
320 | self.frame_5.setObjectName("frame_5")
321 | self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.frame_5)
322 | self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(10, 0, 859, 29))
323 | self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
324 | self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
325 | self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
326 | self.horizontalLayout.setObjectName("horizontalLayout")
327 | self.checkBox_solo = QtWidgets.QCheckBox(self.horizontalLayoutWidget_2)
328 | self.checkBox_solo.setObjectName("checkBox_solo")
329 | self.horizontalLayout.addWidget(self.checkBox_solo)
330 | self.label_19 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
331 | self.label_19.setObjectName("label_19")
332 | self.horizontalLayout.addWidget(self.label_19)
333 | self.solo_espessura = QtWidgets.QSpinBox(self.horizontalLayoutWidget_2)
334 | self.solo_espessura.setEnabled(False)
335 | self.solo_espessura.setFrame(True)
336 | self.solo_espessura.setMinimum(1)
337 | self.solo_espessura.setMaximum(1000000000)
338 | self.solo_espessura.setProperty("value", 6)
339 | self.solo_espessura.setObjectName("solo_espessura")
340 | self.horizontalLayout.addWidget(self.solo_espessura)
341 | self.label_21 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
342 | self.label_21.setObjectName("label_21")
343 | self.horizontalLayout.addWidget(self.label_21)
344 | self.label_35 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
345 | self.label_35.setObjectName("label_35")
346 | self.horizontalLayout.addWidget(self.label_35)
347 | self.solo_densidade = QtWidgets.QSpinBox(self.horizontalLayoutWidget_2)
348 | self.solo_densidade.setEnabled(False)
349 | self.solo_densidade.setMaximum(1000000000)
350 | self.solo_densidade.setProperty("value", 1500)
351 | self.solo_densidade.setObjectName("solo_densidade")
352 | self.horizontalLayout.addWidget(self.solo_densidade)
353 | self.label_36 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
354 | self.label_36.setObjectName("label_36")
355 | self.horizontalLayout.addWidget(self.label_36)
356 | self.label_22 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
357 | self.label_22.setObjectName("label_22")
358 | self.horizontalLayout.addWidget(self.label_22, 0, QtCore.Qt.AlignRight)
359 | self.solo_vp = QtWidgets.QSpinBox(self.horizontalLayoutWidget_2)
360 | self.solo_vp.setEnabled(False)
361 | self.solo_vp.setFrame(True)
362 | self.solo_vp.setMinimum(1)
363 | self.solo_vp.setMaximum(1000000000)
364 | self.solo_vp.setProperty("value", 380)
365 | self.solo_vp.setObjectName("solo_vp")
366 | self.horizontalLayout.addWidget(self.solo_vp)
367 | self.label_20 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
368 | self.label_20.setObjectName("label_20")
369 | self.horizontalLayout.addWidget(self.label_20, 0, QtCore.Qt.AlignLeft)
370 | self.label_48 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
371 | self.label_48.setObjectName("label_48")
372 | self.horizontalLayout.addWidget(self.label_48)
373 | self.solo_vs = QtWidgets.QSpinBox(self.horizontalLayoutWidget_2)
374 | self.solo_vs.setEnabled(False)
375 | self.solo_vs.setFrame(True)
376 | self.solo_vs.setMinimum(1)
377 | self.solo_vs.setMaximum(1000000000)
378 | self.solo_vs.setProperty("value", 114)
379 | self.solo_vs.setObjectName("solo_vs")
380 | self.horizontalLayout.addWidget(self.solo_vs)
381 | self.label_49 = QtWidgets.QLabel(self.horizontalLayoutWidget_2)
382 | self.label_49.setObjectName("label_49")
383 | self.horizontalLayout.addWidget(self.label_49)
384 | self.pushButton_2 = QtWidgets.QPushButton(self.horizontalLayoutWidget_2)
385 | self.pushButton_2.setEnabled(False)
386 | self.pushButton_2.setObjectName("pushButton_2")
387 | self.horizontalLayout.addWidget(self.pushButton_2)
388 | self.gridLayout_9.addWidget(self.frame_4, 0, 0, 1, 1)
389 | self.gridTabWidget_5.addTab(self.tab_reflect_3, "")
390 | self.tab_anray_3 = QtWidgets.QWidget()
391 | self.tab_anray_3.setObjectName("tab_anray_3")
392 | self.horizontalLayoutWidget_5 = QtWidgets.QWidget(self.tab_anray_3)
393 | self.horizontalLayoutWidget_5.setGeometry(QtCore.QRect(710, 0, 200, 41))
394 | self.horizontalLayoutWidget_5.setObjectName("horizontalLayoutWidget_5")
395 | self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_5)
396 | self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0)
397 | self.horizontalLayout_5.setObjectName("horizontalLayout_5")
398 | self.pushButton = QtWidgets.QPushButton(self.horizontalLayoutWidget_5)
399 | self.pushButton.setObjectName("pushButton")
400 | self.horizontalLayout_5.addWidget(self.pushButton)
401 | self.progressBar = QtWidgets.QProgressBar(self.horizontalLayoutWidget_5)
402 | self.progressBar.setProperty("value", 0)
403 | self.progressBar.setObjectName("progressBar")
404 | self.horizontalLayout_5.addWidget(self.progressBar)
405 | self.tabWidget = QtWidgets.QTabWidget(self.tab_anray_3)
406 | self.tabWidget.setGeometry(QtCore.QRect(10, 30, 911, 621))
407 | self.tabWidget.setElideMode(QtCore.Qt.ElideNone)
408 | self.tabWidget.setUsesScrollButtons(True)
409 | self.tabWidget.setDocumentMode(True)
410 | self.tabWidget.setObjectName("tabWidget")
411 | self.tab_4 = QtWidgets.QWidget()
412 | self.tab_4.setObjectName("tab_4")
413 | self.widget_anray = QtWidgets.QWidget(self.tab_4)
414 | self.widget_anray.setGeometry(QtCore.QRect(0, 50, 911, 611))
415 | self.widget_anray.setObjectName("widget_anray")
416 | self.frame_7 = QtWidgets.QFrame(self.tab_4)
417 | self.frame_7.setEnabled(False)
418 | self.frame_7.setGeometry(QtCore.QRect(330, 0, 221, 51))
419 | self.frame_7.setStyleSheet("background-color: rgb(234, 226, 228);")
420 | self.frame_7.setFrameShape(QtWidgets.QFrame.Panel)
421 | self.frame_7.setFrameShadow(QtWidgets.QFrame.Plain)
422 | self.frame_7.setLineWidth(0)
423 | self.frame_7.setObjectName("frame_7")
424 | self.formLayoutWidget_2 = QtWidgets.QWidget(self.frame_7)
425 | self.formLayoutWidget_2.setGeometry(QtCore.QRect(90, 0, 128, 52))
426 | self.formLayoutWidget_2.setObjectName("formLayoutWidget_2")
427 | self.formLayout_2 = QtWidgets.QFormLayout(self.formLayoutWidget_2)
428 | self.formLayout_2.setFieldGrowthPolicy(QtWidgets.QFormLayout.AllNonFixedFieldsGrow)
429 | self.formLayout_2.setFormAlignment(QtCore.Qt.AlignJustify|QtCore.Qt.AlignTop)
430 | self.formLayout_2.setContentsMargins(0, 0, 0, 0)
431 | self.formLayout_2.setObjectName("formLayout_2")
432 | self.split_box_anray_45_90 = QtWidgets.QCheckBox(self.formLayoutWidget_2)
433 | self.split_box_anray_45_90.setStyleSheet("color: rgb(255, 255, 0);")
434 | self.split_box_anray_45_90.setObjectName("split_box_anray_45_90")
435 | self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.split_box_anray_45_90)
436 | self.split_box_anray_0_45 = QtWidgets.QCheckBox(self.formLayoutWidget_2)
437 | self.split_box_anray_0_45.setStyleSheet("color: rgb(85, 0, 255);")
438 | self.split_box_anray_0_45.setObjectName("split_box_anray_0_45")
439 | self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.split_box_anray_0_45)
440 | self.split_box_anray_30_60 = QtWidgets.QCheckBox(self.formLayoutWidget_2)
441 | self.split_box_anray_30_60.setStyleSheet("color: rgb(0, 255, 0);")
442 | self.split_box_anray_30_60.setObjectName("split_box_anray_30_60")
443 | self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.split_box_anray_30_60)
444 | self.split_box_anray_0_90 = QtWidgets.QCheckBox(self.formLayoutWidget_2)
445 | self.split_box_anray_0_90.setStyleSheet("color: rgb(255, 0, 0);")
446 | self.split_box_anray_0_90.setObjectName("split_box_anray_0_90")
447 | self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.split_box_anray_0_90)
448 | self.label_34 = QtWidgets.QLabel(self.frame_7)
449 | self.label_34.setGeometry(QtCore.QRect(10, 0, 71, 51))
450 | self.label_34.setObjectName("label_34")
451 | self.tabWidget.addTab(self.tab_4, "")
452 | self.tab_5 = QtWidgets.QWidget()
453 | self.tab_5.setObjectName("tab_5")
454 | self.widget_anray2 = QtWidgets.QWidget(self.tab_5)
455 | self.widget_anray2.setGeometry(QtCore.QRect(0, 0, 911, 661))
456 | self.widget_anray2.setObjectName("widget_anray2")
457 | self.tabWidget.addTab(self.tab_5, "")
458 | self.gridTabWidget_5.addTab(self.tab_anray_3, "")
459 | self.tab_su = QtWidgets.QWidget()
460 | self.tab_su.setObjectName("tab_su")
461 | self.frame_8 = QtWidgets.QFrame(self.tab_su)
462 | self.frame_8.setEnabled(True)
463 | self.frame_8.setGeometry(QtCore.QRect(140, 10, 701, 171))
464 | self.frame_8.setFrameShape(QtWidgets.QFrame.WinPanel)
465 | self.frame_8.setFrameShadow(QtWidgets.QFrame.Raised)
466 | self.frame_8.setObjectName("frame_8")
467 | self.gridLayoutWidget_2 = QtWidgets.QWidget(self.frame_8)
468 | self.gridLayoutWidget_2.setGeometry(QtCore.QRect(10, 30, 124, 95))
469 | self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
470 | self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
471 | self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
472 | self.gridLayout_2.setObjectName("gridLayout_2")
473 | self.doubleSpinBox_tmax = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_2)
474 | self.doubleSpinBox_tmax.setDecimals(3)
475 | self.doubleSpinBox_tmax.setSingleStep(0.1)
476 | self.doubleSpinBox_tmax.setProperty("value", 1.4)
477 | self.doubleSpinBox_tmax.setObjectName("doubleSpinBox_tmax")
478 | self.gridLayout_2.addWidget(self.doubleSpinBox_tmax, 1, 0, 1, 1)
479 | self.doubleSpinBox_tmin = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_2)
480 | self.doubleSpinBox_tmin.setDecimals(3)
481 | self.doubleSpinBox_tmin.setMinimum(0.0)
482 | self.doubleSpinBox_tmin.setSingleStep(0.1)
483 | self.doubleSpinBox_tmin.setObjectName("doubleSpinBox_tmin")
484 | self.gridLayout_2.addWidget(self.doubleSpinBox_tmin, 0, 0, 1, 1)
485 | self.Tmin = QtWidgets.QLabel(self.gridLayoutWidget_2)
486 | self.Tmin.setObjectName("Tmin")
487 | self.gridLayout_2.addWidget(self.Tmin, 0, 1, 1, 1)
488 | self.Tmax = QtWidgets.QLabel(self.gridLayoutWidget_2)
489 | self.Tmax.setObjectName("Tmax")
490 | self.gridLayout_2.addWidget(self.Tmax, 1, 1, 1, 1)
491 | self.doubleSpinBox_dt = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_2)
492 | self.doubleSpinBox_dt.setDecimals(4)
493 | self.doubleSpinBox_dt.setSingleStep(0.001)
494 | self.doubleSpinBox_dt.setProperty("value", 0.001)
495 | self.doubleSpinBox_dt.setObjectName("doubleSpinBox_dt")
496 | self.gridLayout_2.addWidget(self.doubleSpinBox_dt, 2, 0, 1, 1)
497 | self.label_23 = QtWidgets.QLabel(self.gridLayoutWidget_2)
498 | self.label_23.setObjectName("label_23")
499 | self.gridLayout_2.addWidget(self.label_23, 2, 1, 1, 1)
500 | self.sismo_button = QtWidgets.QPushButton(self.frame_8)
501 | self.sismo_button.setEnabled(False)
502 | self.sismo_button.setGeometry(QtCore.QRect(550, 90, 91, 27))
503 | self.sismo_button.setObjectName("sismo_button")
504 | self.frame_9 = QtWidgets.QFrame(self.frame_8)
505 | self.frame_9.setEnabled(False)
506 | self.frame_9.setGeometry(QtCore.QRect(150, 10, 331, 21))
507 | self.frame_9.setFrameShape(QtWidgets.QFrame.StyledPanel)
508 | self.frame_9.setFrameShadow(QtWidgets.QFrame.Sunken)
509 | self.frame_9.setObjectName("frame_9")
510 | self.horizontalLayoutWidget_4 = QtWidgets.QWidget(self.frame_9)
511 | self.horizontalLayoutWidget_4.setGeometry(QtCore.QRect(10, 0, 311, 24))
512 | self.horizontalLayoutWidget_4.setObjectName("horizontalLayoutWidget_4")
513 | self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_4)
514 | self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
515 | self.horizontalLayout_4.setObjectName("horizontalLayout_4")
516 | self.label_41 = QtWidgets.QLabel(self.horizontalLayoutWidget_4)
517 | self.label_41.setObjectName("label_41")
518 | self.horizontalLayout_4.addWidget(self.label_41)
519 | self.radioButton_0 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_4)
520 | self.radioButton_0.setChecked(True)
521 | self.radioButton_0.setObjectName("radioButton_0")
522 | self.horizontalLayout_4.addWidget(self.radioButton_0)
523 | self.radioButton_30 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_4)
524 | self.radioButton_30.setObjectName("radioButton_30")
525 | self.horizontalLayout_4.addWidget(self.radioButton_30)
526 | self.radioButton_45 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_4)
527 | self.radioButton_45.setObjectName("radioButton_45")
528 | self.horizontalLayout_4.addWidget(self.radioButton_45)
529 | self.radioButton_60 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_4)
530 | self.radioButton_60.setObjectName("radioButton_60")
531 | self.horizontalLayout_4.addWidget(self.radioButton_60)
532 | self.radioButton_90 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_4)
533 | self.radioButton_90.setObjectName("radioButton_90")
534 | self.horizontalLayout_4.addWidget(self.radioButton_90, 0, QtCore.Qt.AlignHCenter)
535 | self.gridLayoutWidget_6 = QtWidgets.QWidget(self.frame_8)
536 | self.gridLayoutWidget_6.setGeometry(QtCore.QRect(520, 30, 141, 52))
537 | self.gridLayoutWidget_6.setObjectName("gridLayoutWidget_6")
538 | self.gridLayout_7 = QtWidgets.QGridLayout(self.gridLayoutWidget_6)
539 | self.gridLayout_7.setContentsMargins(0, 0, 0, 0)
540 | self.gridLayout_7.setObjectName("gridLayout_7")
541 | self.label_42 = QtWidgets.QLabel(self.gridLayoutWidget_6)
542 | self.label_42.setObjectName("label_42")
543 | self.gridLayout_7.addWidget(self.label_42, 0, 0, 1, 1, QtCore.Qt.AlignHCenter)
544 | self.label_43 = QtWidgets.QLabel(self.gridLayoutWidget_6)
545 | self.label_43.setObjectName("label_43")
546 | self.gridLayout_7.addWidget(self.label_43, 0, 1, 1, 1, QtCore.Qt.AlignHCenter)
547 | self.doubleSpinBox_freq = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_6)
548 | self.doubleSpinBox_freq.setProperty("value", 50.0)
549 | self.doubleSpinBox_freq.setObjectName("doubleSpinBox_freq")
550 | self.gridLayout_7.addWidget(self.doubleSpinBox_freq, 1, 0, 1, 1)
551 | self.doubleSpinBox_gama = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_6)
552 | self.doubleSpinBox_gama.setProperty("value", 4.0)
553 | self.doubleSpinBox_gama.setObjectName("doubleSpinBox_gama")
554 | self.gridLayout_7.addWidget(self.doubleSpinBox_gama, 1, 1, 1, 1)
555 | self.label_44 = QtWidgets.QLabel(self.frame_8)
556 | self.label_44.setGeometry(QtCore.QRect(560, 10, 56, 20))
557 | self.label_44.setObjectName("label_44")
558 | self.frame_10 = QtWidgets.QFrame(self.frame_8)
559 | self.frame_10.setGeometry(QtCore.QRect(160, 40, 311, 121))
560 | self.frame_10.setFrameShape(QtWidgets.QFrame.Box)
561 | self.frame_10.setFrameShadow(QtWidgets.QFrame.Raised)
562 | self.frame_10.setLineWidth(1)
563 | self.frame_10.setObjectName("frame_10")
564 | self.gridLayoutWidget_5 = QtWidgets.QWidget(self.frame_10)
565 | self.gridLayoutWidget_5.setGeometry(QtCore.QRect(90, 10, 201, 91))
566 | self.gridLayoutWidget_5.setObjectName("gridLayoutWidget_5")
567 | self.gridLayout_4 = QtWidgets.QGridLayout(self.gridLayoutWidget_5)
568 | self.gridLayout_4.setContentsMargins(0, 0, 0, 0)
569 | self.gridLayout_4.setObjectName("gridLayout_4")
570 | self.radioButton_normx = QtWidgets.QRadioButton(self.gridLayoutWidget_5)
571 | self.radioButton_normx.setText("")
572 | self.radioButton_normx.setObjectName("radioButton_normx")
573 | self.gridLayout_4.addWidget(self.radioButton_normx, 1, 1, 1, 1)
574 | self.label_38 = QtWidgets.QLabel(self.gridLayoutWidget_5)
575 | self.label_38.setObjectName("label_38")
576 | self.gridLayout_4.addWidget(self.label_38, 1, 0, 1, 1)
577 | self.label_x_max = QtWidgets.QLabel(self.gridLayoutWidget_5)
578 | self.label_x_max.setObjectName("label_x_max")
579 | self.gridLayout_4.addWidget(self.label_x_max, 1, 2, 1, 1)
580 | self.label_45 = QtWidgets.QLabel(self.gridLayoutWidget_5)
581 | self.label_45.setObjectName("label_45")
582 | self.gridLayout_4.addWidget(self.label_45, 0, 0, 1, 1)
583 | self.radioButton_norm_def = QtWidgets.QRadioButton(self.gridLayoutWidget_5)
584 | self.radioButton_norm_def.setText("")
585 | self.radioButton_norm_def.setChecked(True)
586 | self.radioButton_norm_def.setObjectName("radioButton_norm_def")
587 | self.gridLayout_4.addWidget(self.radioButton_norm_def, 0, 1, 1, 1)
588 | self.doubleSpinBox_normalf = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_5)
589 | self.doubleSpinBox_normalf.setDecimals(4)
590 | self.doubleSpinBox_normalf.setMaximum(10000000.0)
591 | self.doubleSpinBox_normalf.setProperty("value", 1.0)
592 | self.doubleSpinBox_normalf.setObjectName("doubleSpinBox_normalf")
593 | self.gridLayout_4.addWidget(self.doubleSpinBox_normalf, 0, 2, 1, 1)
594 | self.label_37 = QtWidgets.QLabel(self.frame_10)
595 | self.label_37.setGeometry(QtCore.QRect(10, 30, 71, 41))
596 | self.label_37.setAutoFillBackground(True)
597 | self.label_37.setObjectName("label_37")
598 | self.frame_12 = QtWidgets.QFrame(self.frame_8)
599 | self.frame_12.setEnabled(True)
600 | self.frame_12.setGeometry(QtCore.QRect(480, 120, 211, 41))
601 | self.frame_12.setFrameShape(QtWidgets.QFrame.NoFrame)
602 | self.frame_12.setFrameShadow(QtWidgets.QFrame.Plain)
603 | self.frame_12.setLineWidth(0)
604 | self.frame_12.setObjectName("frame_12")
605 | self.checkBox_solo_sismo2 = QtWidgets.QCheckBox(self.frame_12)
606 | self.checkBox_solo_sismo2.setEnabled(False)
607 | self.checkBox_solo_sismo2.setGeometry(QtCore.QRect(30, 20, 21, 22))
608 | self.checkBox_solo_sismo2.setText("")
609 | self.checkBox_solo_sismo2.setObjectName("checkBox_solo_sismo2")
610 | self.label_47 = QtWidgets.QLabel(self.frame_12)
611 | self.label_47.setEnabled(False)
612 | self.label_47.setGeometry(QtCore.QRect(40, 20, 161, 20))
613 | self.label_47.setLineWidth(0)
614 | self.label_47.setObjectName("label_47")
615 | self.checkBox_solo_sismo = QtWidgets.QCheckBox(self.frame_12)
616 | self.checkBox_solo_sismo.setEnabled(False)
617 | self.checkBox_solo_sismo.setGeometry(QtCore.QRect(0, 0, 131, 21))
618 | self.checkBox_solo_sismo.setObjectName("checkBox_solo_sismo")
619 | self.widget_sismo = QtWidgets.QWidget(self.tab_su)
620 | self.widget_sismo.setGeometry(QtCore.QRect(10, 200, 921, 481))
621 | self.widget_sismo.setObjectName("widget_sismo")
622 | self.gridTabWidget_5.addTab(self.tab_su, "")
623 | self.tab = QtWidgets.QWidget()
624 | self.tab.setObjectName("tab")
625 | self.widget_sismo2 = QtWidgets.QWidget(self.tab)
626 | self.widget_sismo2.setGeometry(QtCore.QRect(20, 60, 921, 591))
627 | self.widget_sismo2.setObjectName("widget_sismo2")
628 | self.frame_11 = QtWidgets.QFrame(self.tab)
629 | self.frame_11.setEnabled(False)
630 | self.frame_11.setGeometry(QtCore.QRect(600, 10, 221, 51))
631 | self.frame_11.setStyleSheet("background-color: rgb(234, 226, 228);")
632 | self.frame_11.setFrameShape(QtWidgets.QFrame.Panel)
633 | self.frame_11.setFrameShadow(QtWidgets.QFrame.Plain)
634 | self.frame_11.setLineWidth(0)
635 | self.frame_11.setObjectName("frame_11")
636 | self.formLayoutWidget_3 = QtWidgets.QWidget(self.frame_11)
637 | self.formLayoutWidget_3.setGeometry(QtCore.QRect(90, 0, 128, 52))
638 | self.formLayoutWidget_3.setObjectName("formLayoutWidget_3")
639 | self.formLayout_3 = QtWidgets.QFormLayout(self.formLayoutWidget_3)
640 | self.formLayout_3.setFieldGrowthPolicy(QtWidgets.QFormLayout.AllNonFixedFieldsGrow)
641 | self.formLayout_3.setFormAlignment(QtCore.Qt.AlignJustify|QtCore.Qt.AlignTop)
642 | self.formLayout_3.setContentsMargins(0, 0, 0, 0)
643 | self.formLayout_3.setObjectName("formLayout_3")
644 | self.radio_sismo_0_90 = QtWidgets.QRadioButton(self.formLayoutWidget_3)
645 | self.radio_sismo_0_90.setStyleSheet("")
646 | self.radio_sismo_0_90.setChecked(True)
647 | self.radio_sismo_0_90.setObjectName("radio_sismo_0_90")
648 | self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.radio_sismo_0_90)
649 | self.radio_sismo_45_90 = QtWidgets.QRadioButton(self.formLayoutWidget_3)
650 | self.radio_sismo_45_90.setStyleSheet("")
651 | self.radio_sismo_45_90.setObjectName("radio_sismo_45_90")
652 | self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.radio_sismo_45_90)
653 | self.radio_sismo_0_45 = QtWidgets.QRadioButton(self.formLayoutWidget_3)
654 | self.radio_sismo_0_45.setStyleSheet("")
655 | self.radio_sismo_0_45.setObjectName("radio_sismo_0_45")
656 | self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.radio_sismo_0_45)
657 | self.radio_sismo_30_60 = QtWidgets.QRadioButton(self.formLayoutWidget_3)
658 | self.radio_sismo_30_60.setStyleSheet("")
659 | self.radio_sismo_30_60.setObjectName("radio_sismo_30_60")
660 | self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.radio_sismo_30_60)
661 | self.label_46 = QtWidgets.QLabel(self.frame_11)
662 | self.label_46.setEnabled(False)
663 | self.label_46.setGeometry(QtCore.QRect(10, 0, 71, 51))
664 | self.label_46.setObjectName("label_46")
665 | self.frame_13 = QtWidgets.QFrame(self.tab)
666 | self.frame_13.setEnabled(False)
667 | self.frame_13.setGeometry(QtCore.QRect(260, 20, 291, 41))
668 | self.frame_13.setAutoFillBackground(False)
669 | self.frame_13.setFrameShape(QtWidgets.QFrame.NoFrame)
670 | self.frame_13.setFrameShadow(QtWidgets.QFrame.Plain)
671 | self.frame_13.setObjectName("frame_13")
672 | self.horizontalLayoutWidget_3 = QtWidgets.QWidget(self.frame_13)
673 | self.horizontalLayoutWidget_3.setGeometry(QtCore.QRect(30, 0, 255, 41))
674 | self.horizontalLayoutWidget_3.setObjectName("horizontalLayoutWidget_3")
675 | self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_3)
676 | self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
677 | self.horizontalLayout_3.setObjectName("horizontalLayout_3")
678 | self.label_50 = QtWidgets.QLabel(self.horizontalLayoutWidget_3)
679 | self.label_50.setObjectName("label_50")
680 | self.horizontalLayout_3.addWidget(self.label_50)
681 | self.radioButton_plot_x = QtWidgets.QRadioButton(self.horizontalLayoutWidget_3)
682 | self.radioButton_plot_x.setChecked(True)
683 | self.radioButton_plot_x.setObjectName("radioButton_plot_x")
684 | self.horizontalLayout_3.addWidget(self.radioButton_plot_x)
685 | self.frame_14 = QtWidgets.QFrame(self.tab)
686 | self.frame_14.setEnabled(False)
687 | self.frame_14.setGeometry(QtCore.QRect(110, 0, 131, 61))
688 | self.frame_14.setFrameShape(QtWidgets.QFrame.StyledPanel)
689 | self.frame_14.setFrameShadow(QtWidgets.QFrame.Raised)
690 | self.frame_14.setObjectName("frame_14")
691 | self.gridLayoutWidget_7 = QtWidgets.QWidget(self.frame_14)
692 | self.gridLayoutWidget_7.setGeometry(QtCore.QRect(10, 10, 121, 41))
693 | self.gridLayoutWidget_7.setObjectName("gridLayoutWidget_7")
694 | self.gridLayout_8 = QtWidgets.QGridLayout(self.gridLayoutWidget_7)
695 | self.gridLayout_8.setContentsMargins(0, 0, 0, 0)
696 | self.gridLayout_8.setObjectName("gridLayout_8")
697 | self.az_tmax = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_7)
698 | self.az_tmax.setSingleStep(0.01)
699 | self.az_tmax.setObjectName("az_tmax")
700 | self.gridLayout_8.addWidget(self.az_tmax, 1, 0, 1, 1)
701 | self.az_tmin = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_7)
702 | self.az_tmin.setSingleStep(0.01)
703 | self.az_tmin.setObjectName("az_tmin")
704 | self.gridLayout_8.addWidget(self.az_tmin, 0, 0, 1, 1)
705 | self.label_39 = QtWidgets.QLabel(self.gridLayoutWidget_7)
706 | self.label_39.setObjectName("label_39")
707 | self.gridLayout_8.addWidget(self.label_39, 1, 1, 1, 1)
708 | self.label_51 = QtWidgets.QLabel(self.gridLayoutWidget_7)
709 | self.label_51.setObjectName("label_51")
710 | self.gridLayout_8.addWidget(self.label_51, 0, 1, 1, 1)
711 | self.gridTabWidget_5.addTab(self.tab, "")
712 | MainWindow.setCentralWidget(self.centralwidget)
713 | self.menubar = QtWidgets.QMenuBar(MainWindow)
714 | self.menubar.setGeometry(QtCore.QRect(0, 0, 960, 27))
715 | self.menubar.setObjectName("menubar")
716 | MainWindow.setMenuBar(self.menubar)
717 | self.statusbar = QtWidgets.QStatusBar(MainWindow)
718 | self.statusbar.setObjectName("statusbar")
719 | MainWindow.setStatusBar(self.statusbar)
720 |
721 | self.retranslateUi(MainWindow)
722 | self.gridTabWidget_5.setCurrentIndex(0)
723 | self.tabWidget.setCurrentIndex(0)
724 | QtCore.QMetaObject.connectSlotsByName(MainWindow)
725 |
726 | def retranslateUi(self, MainWindow):
727 | _translate = QtCore.QCoreApplication.translate
728 | MainWindow.setWindowTitle(_translate("MainWindow", "Ondas SH"))
729 | self.label_33.setText(_translate("MainWindow", "
Ângulo crítico
")) 730 | self.label_2.setText(_translate("MainWindow", "DN
")) 731 | self.label_3.setText(_translate("MainWindow", "DT
")) 732 | self.label_18.setWhatsThis(_translate("MainWindow", "10%
spit
")) 733 | self.label_18.setText(_translate("MainWindow", "10%
Separação
Prop. preenchimento
")) 736 | self.label_27.setText(_translate("MainWindow", "*109 Pa
")) 737 | self.label_13.setText(_translate("MainWindow", "Shear
")) 738 | self.label_12.setText(_translate("MainWindow", "Bulk
")) 739 | self.label_29.setText(_translate("MainWindow", "*109 Pa
")) 740 | self.label_28.setText(_translate("MainWindow", "Espessura (m)
")) 741 | self.label_6.setText(_translate("MainWindow", "m/s
")) 742 | self.label_16.setText(_translate("MainWindow", "Camada 1
Isotrópica
Camada 2
HTI
VP
")) 745 | self.label_4.setText(_translate("MainWindow", "VS
")) 746 | self.label_7.setText(_translate("MainWindow", "m/s
")) 747 | self.label_5.setText(_translate("MainWindow", "Densidade
")) 748 | self.label_8.setText(_translate("MainWindow", "kg/m3
")) 749 | self.label_25.setText(_translate("MainWindow", "Prop. fraturas
")) 750 | self.label_11.setText(_translate("MainWindow", "Razão de
aspecto
Densidade
fraturamento
(%)
o
")) 753 | self.label_30.setText(_translate("MainWindow", "nogeo
")) 754 | self.label_31.setText(_translate("MainWindow", "dmin(m)
")) 755 | self.label_32.setText(_translate("MainWindow", "dstep(m)
")) 756 | self.label_10.setText(_translate("MainWindow", "|dv|
")) 757 | self.label_9.setText(_translate("MainWindow", "|ev|
")) 758 | self.label_15.setText(_translate("MainWindow", "|yv|
")) 759 | self.checkBox_solo.setText(_translate("MainWindow", "Solo")) 760 | self.label_19.setText(_translate("MainWindow", "Espessura")) 761 | self.label_21.setText(_translate("MainWindow", "(m)")) 762 | self.label_35.setText(_translate("MainWindow", "densidade")) 763 | self.label_36.setText(_translate("MainWindow", "(kg/m3)
")) 764 | self.label_22.setText(_translate("MainWindow", "Vp")) 765 | self.label_20.setText(_translate("MainWindow", "(m/s)")) 766 | self.label_48.setText(_translate("MainWindow", "Vs")) 767 | self.label_49.setText(_translate("MainWindow", "(m/s)")) 768 | self.pushButton_2.setText(_translate("MainWindow", "Plot")) 769 | self.gridTabWidget_5.setTabText(self.gridTabWidget_5.indexOf(self.tab_reflect_3), _translate("MainWindow", "Coeficiente de reflexão")) 770 | self.pushButton.setText(_translate("MainWindow", "Gerar arquivos")) 771 | self.split_box_anray_45_90.setText(_translate("MainWindow", "45/90")) 772 | self.split_box_anray_0_45.setText(_translate("MainWindow", "0/45")) 773 | self.split_box_anray_30_60.setText(_translate("MainWindow", "30/60")) 774 | self.split_box_anray_0_90.setText(_translate("MainWindow", "0/90")) 775 | self.label_34.setWhatsThis(_translate("MainWindow", "10%
spit
")) 776 | self.label_34.setText(_translate("MainWindow", "10%
Separação
Azimute(o)
")) 785 | self.radioButton_0.setText(_translate("MainWindow", "0")) 786 | self.radioButton_30.setText(_translate("MainWindow", "30")) 787 | self.radioButton_45.setText(_translate("MainWindow", "45")) 788 | self.radioButton_60.setText(_translate("MainWindow", "60")) 789 | self.radioButton_90.setText(_translate("MainWindow", "90")) 790 | self.label_42.setText(_translate("MainWindow", "Freq")) 791 | self.label_43.setText(_translate("MainWindow", "Gama")) 792 | self.label_44.setText(_translate("MainWindow", "Wavelet
")) 793 | self.label_38.setText(_translate("MainWindow", "|max (transversal)|
")) 794 | self.label_x_max.setText(_translate("MainWindow", "...
")) 795 | self.label_45.setText(_translate("MainWindow", "|max|")) 796 | self.label_37.setText(_translate("MainWindow", "Normalização
1/|max|
")) 797 | self.label_47.setText(_translate("MainWindow", "Plotar apenas no primeiro geofone
")) 798 | self.checkBox_solo_sismo.setText(_translate("MainWindow", "Reflexão do solo")) 799 | self.gridTabWidget_5.setTabText(self.gridTabWidget_5.indexOf(self.tab_su), _translate("MainWindow", "Sismogramas")) 800 | self.radio_sismo_0_90.setText(_translate("MainWindow", "0/90")) 801 | self.radio_sismo_45_90.setText(_translate("MainWindow", "45/90")) 802 | self.radio_sismo_0_45.setText(_translate("MainWindow", "0/45")) 803 | self.radio_sismo_30_60.setText(_translate("MainWindow", "30/60")) 804 | self.label_46.setWhatsThis(_translate("MainWindow", "10%
spit
")) 805 | self.label_46.setText(_translate("MainWindow", "Azimutes
")) 806 | self.label_50.setText(_translate("MainWindow", "Componente")) 807 | self.radioButton_plot_x.setText(_translate("MainWindow", "transversal")) 808 | self.label_39.setText(_translate("MainWindow", "Tmax")) 809 | self.label_51.setText(_translate("MainWindow", "Tmin")) 810 | self.gridTabWidget_5.setTabText(self.gridTabWidget_5.indexOf(self.tab), _translate("MainWindow", "Sismogramas/Azimutes")) 811 | 812 | 813 | if __name__ == "__main__": 814 | import sys 815 | app = QtWidgets.QApplication(sys.argv) 816 | MainWindow = QtWidgets.QMainWindow() 817 | ui = Ui_MainWindow() 818 | ui.setupUi(MainWindow) 819 | MainWindow.show() 820 | sys.exit(app.exec_()) 821 | 822 | -------------------------------------------------------------------------------- /fractureSV_gui.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'fractureSH.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.8 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | class Ui_MainWindow(object): 12 | def setupUi(self, MainWindow): 13 | MainWindow.setObjectName("MainWindow") 14 | MainWindow.resize(960, 836) 15 | self.centralwidget = QtWidgets.QWidget(MainWindow) 16 | self.centralwidget.setObjectName("centralwidget") 17 | self.gridTabWidget_5 = QtWidgets.QTabWidget(self.centralwidget) 18 | self.gridTabWidget_5.setGeometry(QtCore.QRect(10, 0, 941, 901)) 19 | self.gridTabWidget_5.setObjectName("gridTabWidget_5") 20 | self.tab_reflect_3 = QtWidgets.QWidget() 21 | self.tab_reflect_3.setFocusPolicy(QtCore.Qt.TabFocus) 22 | self.tab_reflect_3.setObjectName("tab_reflect_3") 23 | self.gridLayout_9 = QtWidgets.QGridLayout(self.tab_reflect_3) 24 | self.gridLayout_9.setContentsMargins(0, 0, 0, 0) 25 | self.gridLayout_9.setObjectName("gridLayout_9") 26 | self.frame_6 = QtWidgets.QFrame(self.tab_reflect_3) 27 | self.frame_6.setFrameShape(QtWidgets.QFrame.StyledPanel) 28 | self.frame_6.setFrameShadow(QtWidgets.QFrame.Raised) 29 | self.frame_6.setObjectName("frame_6") 30 | self.widget = QtWidgets.QWidget(self.frame_6) 31 | self.widget.setGeometry(QtCore.QRect(10, 10, 901, 381)) 32 | self.widget.setObjectName("widget") 33 | self.gridLayout_9.addWidget(self.frame_6, 1, 0, 1, 1) 34 | self.frame_4 = QtWidgets.QFrame(self.tab_reflect_3) 35 | self.frame_4.setMaximumSize(QtCore.QSize(16777215, 300)) 36 | self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel) 37 | self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised) 38 | self.frame_4.setObjectName("frame_4") 39 | self.label_33 = QtWidgets.QLabel(self.frame_4) 40 | self.label_33.setGeometry(QtCore.QRect(470, 210, 158, 29)) 41 | self.label_33.setObjectName("label_33") 42 | self.frame_3 = QtWidgets.QFrame(self.frame_4) 43 | self.frame_3.setGeometry(QtCore.QRect(660, 20, 161, 151)) 44 | self.frame_3.setFrameShape(QtWidgets.QFrame.Panel) 45 | self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised) 46 | self.frame_3.setObjectName("frame_3") 47 | self.gridLayoutWidget_4 = QtWidgets.QWidget(self.frame_3) 48 | self.gridLayoutWidget_4.setGeometry(QtCore.QRect(10, 10, 141, 131)) 49 | self.gridLayoutWidget_4.setObjectName("gridLayoutWidget_4") 50 | self.gridLayout_5 = QtWidgets.QGridLayout(self.gridLayoutWidget_4) 51 | self.gridLayout_5.setContentsMargins(0, 0, 0, 0) 52 | self.gridLayout_5.setObjectName("gridLayout_5") 53 | self.doubleSpinBox_DT = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_4) 54 | self.doubleSpinBox_DT.setDecimals(3) 55 | self.doubleSpinBox_DT.setMaximum(1.0) 56 | self.doubleSpinBox_DT.setSingleStep(0.01) 57 | self.doubleSpinBox_DT.setObjectName("doubleSpinBox_DT") 58 | self.gridLayout_5.addWidget(self.doubleSpinBox_DT, 1, 1, 1, 1) 59 | self.verticalSlider_DT = QtWidgets.QSlider(self.gridLayoutWidget_4) 60 | self.verticalSlider_DT.setMaximum(1000) 61 | self.verticalSlider_DT.setOrientation(QtCore.Qt.Vertical) 62 | self.verticalSlider_DT.setObjectName("verticalSlider_DT") 63 | self.gridLayout_5.addWidget(self.verticalSlider_DT, 2, 1, 1, 1, QtCore.Qt.AlignHCenter) 64 | self.label_2 = QtWidgets.QLabel(self.gridLayoutWidget_4) 65 | self.label_2.setObjectName("label_2") 66 | self.gridLayout_5.addWidget(self.label_2, 0, 0, 1, 1) 67 | self.verticalSlider_DN = QtWidgets.QSlider(self.gridLayoutWidget_4) 68 | self.verticalSlider_DN.setMaximum(1000) 69 | self.verticalSlider_DN.setOrientation(QtCore.Qt.Vertical) 70 | self.verticalSlider_DN.setObjectName("verticalSlider_DN") 71 | self.gridLayout_5.addWidget(self.verticalSlider_DN, 2, 0, 1, 1, QtCore.Qt.AlignHCenter) 72 | self.doubleSpinBox_DN = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_4) 73 | self.doubleSpinBox_DN.setDecimals(3) 74 | self.doubleSpinBox_DN.setMaximum(1.0) 75 | self.doubleSpinBox_DN.setSingleStep(0.01) 76 | self.doubleSpinBox_DN.setObjectName("doubleSpinBox_DN") 77 | self.gridLayout_5.addWidget(self.doubleSpinBox_DN, 1, 0, 1, 1) 78 | self.label_3 = QtWidgets.QLabel(self.gridLayoutWidget_4) 79 | self.label_3.setObjectName("label_3") 80 | self.gridLayout_5.addWidget(self.label_3, 0, 1, 1, 1) 81 | self.frame_2 = QtWidgets.QFrame(self.frame_4) 82 | self.frame_2.setGeometry(QtCore.QRect(670, 200, 161, 51)) 83 | self.frame_2.setStyleSheet("background-color: rgb(234, 226, 228);") 84 | self.frame_2.setFrameShape(QtWidgets.QFrame.Panel) 85 | self.frame_2.setFrameShadow(QtWidgets.QFrame.Plain) 86 | self.frame_2.setLineWidth(0) 87 | self.frame_2.setObjectName("frame_2") 88 | self.label_18 = QtWidgets.QLabel(self.frame_2) 89 | self.label_18.setGeometry(QtCore.QRect(10, 0, 71, 51)) 90 | self.label_18.setObjectName("label_18") 91 | self.split_box0_90 = QtWidgets.QCheckBox(self.frame_2) 92 | self.split_box0_90.setGeometry(QtCore.QRect(100, 10, 57, 22)) 93 | self.split_box0_90.setStyleSheet("color: rgb(255, 0, 0);") 94 | self.split_box0_90.setObjectName("split_box0_90") 95 | self.verticalFrame_5 = QtWidgets.QFrame(self.frame_4) 96 | self.verticalFrame_5.setGeometry(QtCore.QRect(510, 20, 131, 135)) 97 | self.verticalFrame_5.setStyleSheet("") 98 | self.verticalFrame_5.setFrameShape(QtWidgets.QFrame.Box) 99 | self.verticalFrame_5.setFrameShadow(QtWidgets.QFrame.Sunken) 100 | self.verticalFrame_5.setObjectName("verticalFrame_5") 101 | self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.verticalFrame_5) 102 | self.verticalLayout_7.setObjectName("verticalLayout_7") 103 | self.label_26 = QtWidgets.QLabel(self.verticalFrame_5) 104 | self.label_26.setObjectName("label_26") 105 | self.verticalLayout_7.addWidget(self.label_26, 0, QtCore.Qt.AlignHCenter) 106 | self.verticalLayout = QtWidgets.QVBoxLayout() 107 | self.verticalLayout.setObjectName("verticalLayout") 108 | self.gridLayout_3 = QtWidgets.QGridLayout() 109 | self.gridLayout_3.setObjectName("gridLayout_3") 110 | self.label_27 = QtWidgets.QLabel(self.verticalFrame_5) 111 | self.label_27.setObjectName("label_27") 112 | self.gridLayout_3.addWidget(self.label_27, 1, 1, 1, 1) 113 | self.label_13 = QtWidgets.QLabel(self.verticalFrame_5) 114 | self.label_13.setObjectName("label_13") 115 | self.gridLayout_3.addWidget(self.label_13, 2, 0, 1, 1) 116 | self.doubleSpinBox_bulk = QtWidgets.QDoubleSpinBox(self.verticalFrame_5) 117 | self.doubleSpinBox_bulk.setObjectName("doubleSpinBox_bulk") 118 | self.gridLayout_3.addWidget(self.doubleSpinBox_bulk, 1, 0, 1, 1) 119 | self.label_12 = QtWidgets.QLabel(self.verticalFrame_5) 120 | self.label_12.setObjectName("label_12") 121 | self.gridLayout_3.addWidget(self.label_12, 0, 0, 1, 1) 122 | self.label_29 = QtWidgets.QLabel(self.verticalFrame_5) 123 | self.label_29.setObjectName("label_29") 124 | self.gridLayout_3.addWidget(self.label_29, 3, 1, 1, 1) 125 | self.doubleSpinBox_shear = QtWidgets.QDoubleSpinBox(self.verticalFrame_5) 126 | self.doubleSpinBox_shear.setObjectName("doubleSpinBox_shear") 127 | self.gridLayout_3.addWidget(self.doubleSpinBox_shear, 3, 0, 1, 1) 128 | self.verticalLayout.addLayout(self.gridLayout_3) 129 | self.verticalLayout_7.addLayout(self.verticalLayout) 130 | self.gridLayoutWidget = QtWidgets.QWidget(self.frame_4) 131 | self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 10, 299, 171)) 132 | self.gridLayoutWidget.setObjectName("gridLayoutWidget") 133 | self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) 134 | self.gridLayout.setContentsMargins(0, 0, 0, 0) 135 | self.gridLayout.setObjectName("gridLayout") 136 | self.label_28 = QtWidgets.QLabel(self.gridLayoutWidget) 137 | self.label_28.setObjectName("label_28") 138 | self.gridLayout.addWidget(self.label_28, 4, 0, 1, 1) 139 | self.spinBox_vs1 = QtWidgets.QSpinBox(self.gridLayoutWidget) 140 | self.spinBox_vs1.setMinimum(1) 141 | self.spinBox_vs1.setMaximum(1000000000) 142 | self.spinBox_vs1.setObjectName("spinBox_vs1") 143 | self.gridLayout.addWidget(self.spinBox_vs1, 2, 1, 1, 1) 144 | self.label_6 = QtWidgets.QLabel(self.gridLayoutWidget) 145 | self.label_6.setObjectName("label_6") 146 | self.gridLayout.addWidget(self.label_6, 1, 3, 1, 1) 147 | self.label_16 = QtWidgets.QLabel(self.gridLayoutWidget) 148 | self.label_16.setObjectName("label_16") 149 | self.gridLayout.addWidget(self.label_16, 0, 1, 1, 1) 150 | self.spinBox_p1 = QtWidgets.QSpinBox(self.gridLayoutWidget) 151 | self.spinBox_p1.setMinimum(1) 152 | self.spinBox_p1.setMaximum(1000000000) 153 | self.spinBox_p1.setObjectName("spinBox_p1") 154 | self.gridLayout.addWidget(self.spinBox_p1, 3, 1, 1, 1) 155 | self.spinBox_vp2 = QtWidgets.QSpinBox(self.gridLayoutWidget) 156 | self.spinBox_vp2.setMinimum(1) 157 | self.spinBox_vp2.setMaximum(1000000000) 158 | self.spinBox_vp2.setObjectName("spinBox_vp2") 159 | self.gridLayout.addWidget(self.spinBox_vp2, 1, 2, 1, 1) 160 | self.label_24 = QtWidgets.QLabel(self.gridLayoutWidget) 161 | self.label_24.setObjectName("label_24") 162 | self.gridLayout.addWidget(self.label_24, 0, 2, 1, 1) 163 | self.label = QtWidgets.QLabel(self.gridLayoutWidget) 164 | self.label.setObjectName("label") 165 | self.gridLayout.addWidget(self.label, 1, 0, 1, 1) 166 | self.label_4 = QtWidgets.QLabel(self.gridLayoutWidget) 167 | self.label_4.setObjectName("label_4") 168 | self.gridLayout.addWidget(self.label_4, 2, 0, 1, 1) 169 | self.label_7 = QtWidgets.QLabel(self.gridLayoutWidget) 170 | self.label_7.setObjectName("label_7") 171 | self.gridLayout.addWidget(self.label_7, 2, 3, 1, 1) 172 | self.label_5 = QtWidgets.QLabel(self.gridLayoutWidget) 173 | self.label_5.setObjectName("label_5") 174 | self.gridLayout.addWidget(self.label_5, 3, 0, 1, 1) 175 | self.spinBox_vs2 = QtWidgets.QSpinBox(self.gridLayoutWidget) 176 | self.spinBox_vs2.setMinimum(1) 177 | self.spinBox_vs2.setMaximum(1000000000) 178 | self.spinBox_vs2.setObjectName("spinBox_vs2") 179 | self.gridLayout.addWidget(self.spinBox_vs2, 2, 2, 1, 1) 180 | self.label_8 = QtWidgets.QLabel(self.gridLayoutWidget) 181 | self.label_8.setObjectName("label_8") 182 | self.gridLayout.addWidget(self.label_8, 3, 3, 1, 1) 183 | self.spinBox_thick = QtWidgets.QSpinBox(self.gridLayoutWidget) 184 | self.spinBox_thick.setMaximum(100000) 185 | self.spinBox_thick.setProperty("value", 1000) 186 | self.spinBox_thick.setObjectName("spinBox_thick") 187 | self.gridLayout.addWidget(self.spinBox_thick, 4, 1, 1, 1) 188 | self.spinBox_vp1 = QtWidgets.QSpinBox(self.gridLayoutWidget) 189 | self.spinBox_vp1.setFrame(True) 190 | self.spinBox_vp1.setMinimum(1) 191 | self.spinBox_vp1.setMaximum(1000000000) 192 | self.spinBox_vp1.setObjectName("spinBox_vp1") 193 | self.gridLayout.addWidget(self.spinBox_vp1, 1, 1, 1, 1) 194 | self.spinBox_p2 = QtWidgets.QSpinBox(self.gridLayoutWidget) 195 | self.spinBox_p2.setMinimum(1) 196 | self.spinBox_p2.setMaximum(1000000000) 197 | self.spinBox_p2.setObjectName("spinBox_p2") 198 | self.gridLayout.addWidget(self.spinBox_p2, 3, 2, 1, 1) 199 | self.frame = QtWidgets.QFrame(self.frame_4) 200 | self.frame.setGeometry(QtCore.QRect(340, 10, 151, 171)) 201 | self.frame.setStyleSheet("gridline-color: rgb(255, 170, 0);") 202 | self.frame.setFrameShape(QtWidgets.QFrame.Box) 203 | self.frame.setFrameShadow(QtWidgets.QFrame.Sunken) 204 | self.frame.setObjectName("frame") 205 | self.label_25 = QtWidgets.QLabel(self.frame) 206 | self.label_25.setGeometry(QtCore.QRect(20, 10, 111, 20)) 207 | self.label_25.setObjectName("label_25") 208 | self.gridLayoutWidget_3 = QtWidgets.QWidget(self.frame) 209 | self.gridLayoutWidget_3.setGeometry(QtCore.QRect(10, 30, 137, 76)) 210 | self.gridLayoutWidget_3.setObjectName("gridLayoutWidget_3") 211 | self.gridLayout_6 = QtWidgets.QGridLayout(self.gridLayoutWidget_3) 212 | self.gridLayout_6.setContentsMargins(0, 0, 0, 0) 213 | self.gridLayout_6.setObjectName("gridLayout_6") 214 | self.verticalLayout_4 = QtWidgets.QVBoxLayout() 215 | self.verticalLayout_4.setObjectName("verticalLayout_4") 216 | self.label_11 = QtWidgets.QLabel(self.gridLayoutWidget_3) 217 | self.label_11.setObjectName("label_11") 218 | self.verticalLayout_4.addWidget(self.label_11) 219 | self.doubleSpinBox_aspect = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_3) 220 | self.doubleSpinBox_aspect.setDecimals(3) 221 | self.doubleSpinBox_aspect.setMinimum(0.001) 222 | self.doubleSpinBox_aspect.setMaximum(100.0) 223 | self.doubleSpinBox_aspect.setSingleStep(0.01) 224 | self.doubleSpinBox_aspect.setObjectName("doubleSpinBox_aspect") 225 | self.verticalLayout_4.addWidget(self.doubleSpinBox_aspect) 226 | self.gridLayout_6.addLayout(self.verticalLayout_4, 0, 0, 1, 1) 227 | self.verticalLayout_5 = QtWidgets.QVBoxLayout() 228 | self.verticalLayout_5.setObjectName("verticalLayout_5") 229 | self.label_14 = QtWidgets.QLabel(self.gridLayoutWidget_3) 230 | self.label_14.setObjectName("label_14") 231 | self.verticalLayout_5.addWidget(self.label_14) 232 | self.spinBox_fract = QtWidgets.QSpinBox(self.gridLayoutWidget_3) 233 | self.spinBox_fract.setMaximum(100) 234 | self.spinBox_fract.setObjectName("spinBox_fract") 235 | self.verticalLayout_5.addWidget(self.spinBox_fract) 236 | self.gridLayout_6.addLayout(self.verticalLayout_5, 0, 1, 1, 1) 237 | self.verticalSlider_fract = QtWidgets.QSlider(self.frame) 238 | self.verticalSlider_fract.setGeometry(QtCore.QRect(100, 110, 20, 51)) 239 | self.verticalSlider_fract.setMaximum(100) 240 | self.verticalSlider_fract.setOrientation(QtCore.Qt.Vertical) 241 | self.verticalSlider_fract.setObjectName("verticalSlider_fract") 242 | self.verticalSlider_aspect = QtWidgets.QSlider(self.frame) 243 | self.verticalSlider_aspect.setGeometry(QtCore.QRect(40, 110, 20, 51)) 244 | self.verticalSlider_aspect.setMaximum(10000) 245 | self.verticalSlider_aspect.setOrientation(QtCore.Qt.Vertical) 246 | self.verticalSlider_aspect.setObjectName("verticalSlider_aspect") 247 | self.line = QtWidgets.QFrame(self.frame_4) 248 | self.line.setGeometry(QtCore.QRect(0, 190, 601, 16)) 249 | self.line.setFrameShape(QtWidgets.QFrame.HLine) 250 | self.line.setFrameShadow(QtWidgets.QFrame.Sunken) 251 | self.line.setObjectName("line") 252 | self.label_17 = QtWidgets.QLabel(self.frame_4) 253 | self.label_17.setGeometry(QtCore.QRect(585, 212, 20, 16)) 254 | self.label_17.setObjectName("label_17") 255 | self.horizontalLayoutWidget = QtWidgets.QWidget(self.frame_4) 256 | self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 210, 411, 31)) 257 | self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") 258 | self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget) 259 | self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) 260 | self.horizontalLayout_2.setObjectName("horizontalLayout_2") 261 | self.label_30 = QtWidgets.QLabel(self.horizontalLayoutWidget) 262 | self.label_30.setObjectName("label_30") 263 | self.horizontalLayout_2.addWidget(self.label_30, 0, QtCore.Qt.AlignHCenter) 264 | self.spinBox_ngeo = QtWidgets.QSpinBox(self.horizontalLayoutWidget) 265 | self.spinBox_ngeo.setMaximum(10000) 266 | self.spinBox_ngeo.setProperty("value", 96) 267 | self.spinBox_ngeo.setObjectName("spinBox_ngeo") 268 | self.horizontalLayout_2.addWidget(self.spinBox_ngeo) 269 | self.label_31 = QtWidgets.QLabel(self.horizontalLayoutWidget) 270 | self.label_31.setObjectName("label_31") 271 | self.horizontalLayout_2.addWidget(self.label_31, 0, QtCore.Qt.AlignHCenter) 272 | self.spinBox_rmin = QtWidgets.QSpinBox(self.horizontalLayoutWidget) 273 | self.spinBox_rmin.setMaximum(10000) 274 | self.spinBox_rmin.setProperty("value", 20) 275 | self.spinBox_rmin.setObjectName("spinBox_rmin") 276 | self.horizontalLayout_2.addWidget(self.spinBox_rmin) 277 | self.label_32 = QtWidgets.QLabel(self.horizontalLayoutWidget) 278 | self.label_32.setObjectName("label_32") 279 | self.horizontalLayout_2.addWidget(self.label_32) 280 | self.spinBox_rstep = QtWidgets.QSpinBox(self.horizontalLayoutWidget) 281 | self.spinBox_rstep.setMaximum(10000) 282 | self.spinBox_rstep.setProperty("value", 20) 283 | self.spinBox_rstep.setObjectName("spinBox_rstep") 284 | self.horizontalLayout_2.addWidget(self.spinBox_rstep) 285 | self.verticalLayoutWidget_2 = QtWidgets.QWidget(self.frame_4) 286 | self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(840, 20, 64, 161)) 287 | self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2") 288 | self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2) 289 | self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) 290 | self.verticalLayout_3.setObjectName("verticalLayout_3") 291 | self.label_10 = QtWidgets.QLabel(self.verticalLayoutWidget_2) 292 | self.label_10.setObjectName("label_10") 293 | self.verticalLayout_3.addWidget(self.label_10) 294 | self.doubleSpinBox_d = QtWidgets.QDoubleSpinBox(self.verticalLayoutWidget_2) 295 | self.doubleSpinBox_d.setDecimals(3) 296 | self.doubleSpinBox_d.setSingleStep(0.1) 297 | self.doubleSpinBox_d.setObjectName("doubleSpinBox_d") 298 | self.verticalLayout_3.addWidget(self.doubleSpinBox_d) 299 | self.label_9 = QtWidgets.QLabel(self.verticalLayoutWidget_2) 300 | self.label_9.setObjectName("label_9") 301 | self.verticalLayout_3.addWidget(self.label_9) 302 | self.doubleSpinBox_e = QtWidgets.QDoubleSpinBox(self.verticalLayoutWidget_2) 303 | self.doubleSpinBox_e.setDecimals(3) 304 | self.doubleSpinBox_e.setSingleStep(0.1) 305 | self.doubleSpinBox_e.setObjectName("doubleSpinBox_e") 306 | self.verticalLayout_3.addWidget(self.doubleSpinBox_e) 307 | self.label_15 = QtWidgets.QLabel(self.verticalLayoutWidget_2) 308 | self.label_15.setObjectName("label_15") 309 | self.verticalLayout_3.addWidget(self.label_15) 310 | self.doubleSpinBox_y = QtWidgets.QDoubleSpinBox(self.verticalLayoutWidget_2) 311 | self.doubleSpinBox_y.setDecimals(3) 312 | self.doubleSpinBox_y.setSingleStep(0.1) 313 | self.doubleSpinBox_y.setObjectName("doubleSpinBox_y") 314 | self.verticalLayout_3.addWidget(self.doubleSpinBox_y) 315 | self.frame_5 = QtWidgets.QFrame(self.frame_4) 316 | self.frame_5.setGeometry(QtCore.QRect(10, 260, 881, 31)) 317 | self.frame_5.setStyleSheet("") 318 | self.frame_5.setFrameShape(QtWidgets.QFrame.Panel) 319 | self.frame_5.setFrameShadow(QtWidgets.QFrame.Plain) 320 | self.frame_5.setObjectName("frame_5") 321 | self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.frame_5) 322 | self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(10, 0, 859, 29)) 323 | self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2") 324 | self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2) 325 | self.horizontalLayout.setContentsMargins(0, 0, 0, 0) 326 | self.horizontalLayout.setObjectName("horizontalLayout") 327 | self.checkBox_solo = QtWidgets.QCheckBox(self.horizontalLayoutWidget_2) 328 | self.checkBox_solo.setObjectName("checkBox_solo") 329 | self.horizontalLayout.addWidget(self.checkBox_solo) 330 | self.label_19 = QtWidgets.QLabel(self.horizontalLayoutWidget_2) 331 | self.label_19.setObjectName("label_19") 332 | self.horizontalLayout.addWidget(self.label_19) 333 | self.solo_espessura = QtWidgets.QSpinBox(self.horizontalLayoutWidget_2) 334 | self.solo_espessura.setEnabled(False) 335 | self.solo_espessura.setFrame(True) 336 | self.solo_espessura.setMinimum(1) 337 | self.solo_espessura.setMaximum(1000000000) 338 | self.solo_espessura.setProperty("value", 6) 339 | self.solo_espessura.setObjectName("solo_espessura") 340 | self.horizontalLayout.addWidget(self.solo_espessura) 341 | self.label_21 = QtWidgets.QLabel(self.horizontalLayoutWidget_2) 342 | self.label_21.setObjectName("label_21") 343 | self.horizontalLayout.addWidget(self.label_21) 344 | self.label_35 = QtWidgets.QLabel(self.horizontalLayoutWidget_2) 345 | self.label_35.setObjectName("label_35") 346 | self.horizontalLayout.addWidget(self.label_35) 347 | self.solo_densidade = QtWidgets.QSpinBox(self.horizontalLayoutWidget_2) 348 | self.solo_densidade.setEnabled(False) 349 | self.solo_densidade.setMaximum(1000000000) 350 | self.solo_densidade.setProperty("value", 1500) 351 | self.solo_densidade.setObjectName("solo_densidade") 352 | self.horizontalLayout.addWidget(self.solo_densidade) 353 | self.label_36 = QtWidgets.QLabel(self.horizontalLayoutWidget_2) 354 | self.label_36.setObjectName("label_36") 355 | self.horizontalLayout.addWidget(self.label_36) 356 | self.label_22 = QtWidgets.QLabel(self.horizontalLayoutWidget_2) 357 | self.label_22.setObjectName("label_22") 358 | self.horizontalLayout.addWidget(self.label_22, 0, QtCore.Qt.AlignRight) 359 | self.solo_vp = QtWidgets.QSpinBox(self.horizontalLayoutWidget_2) 360 | self.solo_vp.setEnabled(False) 361 | self.solo_vp.setFrame(True) 362 | self.solo_vp.setMinimum(1) 363 | self.solo_vp.setMaximum(1000000000) 364 | self.solo_vp.setProperty("value", 380) 365 | self.solo_vp.setObjectName("solo_vp") 366 | self.horizontalLayout.addWidget(self.solo_vp) 367 | self.label_20 = QtWidgets.QLabel(self.horizontalLayoutWidget_2) 368 | self.label_20.setObjectName("label_20") 369 | self.horizontalLayout.addWidget(self.label_20, 0, QtCore.Qt.AlignLeft) 370 | self.label_48 = QtWidgets.QLabel(self.horizontalLayoutWidget_2) 371 | self.label_48.setObjectName("label_48") 372 | self.horizontalLayout.addWidget(self.label_48) 373 | self.solo_vs = QtWidgets.QSpinBox(self.horizontalLayoutWidget_2) 374 | self.solo_vs.setEnabled(False) 375 | self.solo_vs.setFrame(True) 376 | self.solo_vs.setMinimum(1) 377 | self.solo_vs.setMaximum(1000000000) 378 | self.solo_vs.setProperty("value", 114) 379 | self.solo_vs.setObjectName("solo_vs") 380 | self.horizontalLayout.addWidget(self.solo_vs) 381 | self.label_49 = QtWidgets.QLabel(self.horizontalLayoutWidget_2) 382 | self.label_49.setObjectName("label_49") 383 | self.horizontalLayout.addWidget(self.label_49) 384 | self.pushButton_2 = QtWidgets.QPushButton(self.horizontalLayoutWidget_2) 385 | self.pushButton_2.setEnabled(False) 386 | self.pushButton_2.setObjectName("pushButton_2") 387 | self.horizontalLayout.addWidget(self.pushButton_2) 388 | self.gridLayout_9.addWidget(self.frame_4, 0, 0, 1, 1) 389 | self.gridTabWidget_5.addTab(self.tab_reflect_3, "") 390 | self.tab_anray_3 = QtWidgets.QWidget() 391 | self.tab_anray_3.setObjectName("tab_anray_3") 392 | self.horizontalLayoutWidget_5 = QtWidgets.QWidget(self.tab_anray_3) 393 | self.horizontalLayoutWidget_5.setGeometry(QtCore.QRect(710, 0, 200, 41)) 394 | self.horizontalLayoutWidget_5.setObjectName("horizontalLayoutWidget_5") 395 | self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_5) 396 | self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0) 397 | self.horizontalLayout_5.setObjectName("horizontalLayout_5") 398 | self.pushButton = QtWidgets.QPushButton(self.horizontalLayoutWidget_5) 399 | self.pushButton.setObjectName("pushButton") 400 | self.horizontalLayout_5.addWidget(self.pushButton) 401 | self.progressBar = QtWidgets.QProgressBar(self.horizontalLayoutWidget_5) 402 | self.progressBar.setProperty("value", 0) 403 | self.progressBar.setObjectName("progressBar") 404 | self.horizontalLayout_5.addWidget(self.progressBar) 405 | self.tabWidget = QtWidgets.QTabWidget(self.tab_anray_3) 406 | self.tabWidget.setGeometry(QtCore.QRect(10, 30, 911, 621)) 407 | self.tabWidget.setElideMode(QtCore.Qt.ElideNone) 408 | self.tabWidget.setUsesScrollButtons(True) 409 | self.tabWidget.setDocumentMode(True) 410 | self.tabWidget.setObjectName("tabWidget") 411 | self.tab_4 = QtWidgets.QWidget() 412 | self.tab_4.setObjectName("tab_4") 413 | self.widget_anray = QtWidgets.QWidget(self.tab_4) 414 | self.widget_anray.setGeometry(QtCore.QRect(0, 50, 911, 611)) 415 | self.widget_anray.setObjectName("widget_anray") 416 | self.frame_7 = QtWidgets.QFrame(self.tab_4) 417 | self.frame_7.setEnabled(False) 418 | self.frame_7.setGeometry(QtCore.QRect(330, 0, 221, 51)) 419 | self.frame_7.setStyleSheet("background-color: rgb(234, 226, 228);") 420 | self.frame_7.setFrameShape(QtWidgets.QFrame.Panel) 421 | self.frame_7.setFrameShadow(QtWidgets.QFrame.Plain) 422 | self.frame_7.setLineWidth(0) 423 | self.frame_7.setObjectName("frame_7") 424 | self.formLayoutWidget_2 = QtWidgets.QWidget(self.frame_7) 425 | self.formLayoutWidget_2.setGeometry(QtCore.QRect(90, 0, 128, 52)) 426 | self.formLayoutWidget_2.setObjectName("formLayoutWidget_2") 427 | self.formLayout_2 = QtWidgets.QFormLayout(self.formLayoutWidget_2) 428 | self.formLayout_2.setFieldGrowthPolicy(QtWidgets.QFormLayout.AllNonFixedFieldsGrow) 429 | self.formLayout_2.setFormAlignment(QtCore.Qt.AlignJustify|QtCore.Qt.AlignTop) 430 | self.formLayout_2.setContentsMargins(0, 0, 0, 0) 431 | self.formLayout_2.setObjectName("formLayout_2") 432 | self.split_box_anray_45_90 = QtWidgets.QCheckBox(self.formLayoutWidget_2) 433 | self.split_box_anray_45_90.setStyleSheet("color: rgb(255, 255, 0);") 434 | self.split_box_anray_45_90.setObjectName("split_box_anray_45_90") 435 | self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.split_box_anray_45_90) 436 | self.split_box_anray_0_45 = QtWidgets.QCheckBox(self.formLayoutWidget_2) 437 | self.split_box_anray_0_45.setStyleSheet("color: rgb(85, 0, 255);") 438 | self.split_box_anray_0_45.setObjectName("split_box_anray_0_45") 439 | self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.split_box_anray_0_45) 440 | self.split_box_anray_30_60 = QtWidgets.QCheckBox(self.formLayoutWidget_2) 441 | self.split_box_anray_30_60.setStyleSheet("color: rgb(0, 255, 0);") 442 | self.split_box_anray_30_60.setObjectName("split_box_anray_30_60") 443 | self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.split_box_anray_30_60) 444 | self.split_box_anray_0_90 = QtWidgets.QCheckBox(self.formLayoutWidget_2) 445 | self.split_box_anray_0_90.setStyleSheet("color: rgb(255, 0, 0);") 446 | self.split_box_anray_0_90.setObjectName("split_box_anray_0_90") 447 | self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.split_box_anray_0_90) 448 | self.label_34 = QtWidgets.QLabel(self.frame_7) 449 | self.label_34.setGeometry(QtCore.QRect(10, 0, 71, 51)) 450 | self.label_34.setObjectName("label_34") 451 | self.tabWidget.addTab(self.tab_4, "") 452 | self.tab_5 = QtWidgets.QWidget() 453 | self.tab_5.setObjectName("tab_5") 454 | self.widget_anray2 = QtWidgets.QWidget(self.tab_5) 455 | self.widget_anray2.setGeometry(QtCore.QRect(0, 0, 911, 661)) 456 | self.widget_anray2.setObjectName("widget_anray2") 457 | self.tabWidget.addTab(self.tab_5, "") 458 | self.gridTabWidget_5.addTab(self.tab_anray_3, "") 459 | self.tab_su = QtWidgets.QWidget() 460 | self.tab_su.setObjectName("tab_su") 461 | self.frame_8 = QtWidgets.QFrame(self.tab_su) 462 | self.frame_8.setEnabled(True) 463 | self.frame_8.setGeometry(QtCore.QRect(140, 10, 701, 171)) 464 | self.frame_8.setFrameShape(QtWidgets.QFrame.WinPanel) 465 | self.frame_8.setFrameShadow(QtWidgets.QFrame.Raised) 466 | self.frame_8.setObjectName("frame_8") 467 | self.gridLayoutWidget_2 = QtWidgets.QWidget(self.frame_8) 468 | self.gridLayoutWidget_2.setGeometry(QtCore.QRect(10, 30, 124, 95)) 469 | self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2") 470 | self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget_2) 471 | self.gridLayout_2.setContentsMargins(0, 0, 0, 0) 472 | self.gridLayout_2.setObjectName("gridLayout_2") 473 | self.doubleSpinBox_tmax = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_2) 474 | self.doubleSpinBox_tmax.setDecimals(3) 475 | self.doubleSpinBox_tmax.setSingleStep(0.1) 476 | self.doubleSpinBox_tmax.setProperty("value", 1.4) 477 | self.doubleSpinBox_tmax.setObjectName("doubleSpinBox_tmax") 478 | self.gridLayout_2.addWidget(self.doubleSpinBox_tmax, 1, 0, 1, 1) 479 | self.doubleSpinBox_tmin = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_2) 480 | self.doubleSpinBox_tmin.setDecimals(3) 481 | self.doubleSpinBox_tmin.setMinimum(0.0) 482 | self.doubleSpinBox_tmin.setSingleStep(0.1) 483 | self.doubleSpinBox_tmin.setObjectName("doubleSpinBox_tmin") 484 | self.gridLayout_2.addWidget(self.doubleSpinBox_tmin, 0, 0, 1, 1) 485 | self.Tmin = QtWidgets.QLabel(self.gridLayoutWidget_2) 486 | self.Tmin.setObjectName("Tmin") 487 | self.gridLayout_2.addWidget(self.Tmin, 0, 1, 1, 1) 488 | self.Tmax = QtWidgets.QLabel(self.gridLayoutWidget_2) 489 | self.Tmax.setObjectName("Tmax") 490 | self.gridLayout_2.addWidget(self.Tmax, 1, 1, 1, 1) 491 | self.doubleSpinBox_dt = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_2) 492 | self.doubleSpinBox_dt.setDecimals(4) 493 | self.doubleSpinBox_dt.setSingleStep(0.001) 494 | self.doubleSpinBox_dt.setProperty("value", 0.001) 495 | self.doubleSpinBox_dt.setObjectName("doubleSpinBox_dt") 496 | self.gridLayout_2.addWidget(self.doubleSpinBox_dt, 2, 0, 1, 1) 497 | self.label_23 = QtWidgets.QLabel(self.gridLayoutWidget_2) 498 | self.label_23.setObjectName("label_23") 499 | self.gridLayout_2.addWidget(self.label_23, 2, 1, 1, 1) 500 | self.sismo_button = QtWidgets.QPushButton(self.frame_8) 501 | self.sismo_button.setEnabled(False) 502 | self.sismo_button.setGeometry(QtCore.QRect(550, 90, 91, 27)) 503 | self.sismo_button.setObjectName("sismo_button") 504 | self.frame_9 = QtWidgets.QFrame(self.frame_8) 505 | self.frame_9.setEnabled(False) 506 | self.frame_9.setGeometry(QtCore.QRect(150, 10, 331, 21)) 507 | self.frame_9.setFrameShape(QtWidgets.QFrame.StyledPanel) 508 | self.frame_9.setFrameShadow(QtWidgets.QFrame.Sunken) 509 | self.frame_9.setObjectName("frame_9") 510 | self.horizontalLayoutWidget_4 = QtWidgets.QWidget(self.frame_9) 511 | self.horizontalLayoutWidget_4.setGeometry(QtCore.QRect(10, 0, 311, 24)) 512 | self.horizontalLayoutWidget_4.setObjectName("horizontalLayoutWidget_4") 513 | self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_4) 514 | self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0) 515 | self.horizontalLayout_4.setObjectName("horizontalLayout_4") 516 | self.label_41 = QtWidgets.QLabel(self.horizontalLayoutWidget_4) 517 | self.label_41.setObjectName("label_41") 518 | self.horizontalLayout_4.addWidget(self.label_41) 519 | self.radioButton_0 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_4) 520 | self.radioButton_0.setChecked(True) 521 | self.radioButton_0.setObjectName("radioButton_0") 522 | self.horizontalLayout_4.addWidget(self.radioButton_0) 523 | self.radioButton_30 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_4) 524 | self.radioButton_30.setObjectName("radioButton_30") 525 | self.horizontalLayout_4.addWidget(self.radioButton_30) 526 | self.radioButton_45 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_4) 527 | self.radioButton_45.setObjectName("radioButton_45") 528 | self.horizontalLayout_4.addWidget(self.radioButton_45) 529 | self.radioButton_60 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_4) 530 | self.radioButton_60.setObjectName("radioButton_60") 531 | self.horizontalLayout_4.addWidget(self.radioButton_60) 532 | self.radioButton_90 = QtWidgets.QRadioButton(self.horizontalLayoutWidget_4) 533 | self.radioButton_90.setObjectName("radioButton_90") 534 | self.horizontalLayout_4.addWidget(self.radioButton_90, 0, QtCore.Qt.AlignHCenter) 535 | self.gridLayoutWidget_6 = QtWidgets.QWidget(self.frame_8) 536 | self.gridLayoutWidget_6.setGeometry(QtCore.QRect(520, 30, 141, 52)) 537 | self.gridLayoutWidget_6.setObjectName("gridLayoutWidget_6") 538 | self.gridLayout_7 = QtWidgets.QGridLayout(self.gridLayoutWidget_6) 539 | self.gridLayout_7.setContentsMargins(0, 0, 0, 0) 540 | self.gridLayout_7.setObjectName("gridLayout_7") 541 | self.label_42 = QtWidgets.QLabel(self.gridLayoutWidget_6) 542 | self.label_42.setObjectName("label_42") 543 | self.gridLayout_7.addWidget(self.label_42, 0, 0, 1, 1, QtCore.Qt.AlignHCenter) 544 | self.label_43 = QtWidgets.QLabel(self.gridLayoutWidget_6) 545 | self.label_43.setObjectName("label_43") 546 | self.gridLayout_7.addWidget(self.label_43, 0, 1, 1, 1, QtCore.Qt.AlignHCenter) 547 | self.doubleSpinBox_freq = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_6) 548 | self.doubleSpinBox_freq.setProperty("value", 50.0) 549 | self.doubleSpinBox_freq.setObjectName("doubleSpinBox_freq") 550 | self.gridLayout_7.addWidget(self.doubleSpinBox_freq, 1, 0, 1, 1) 551 | self.doubleSpinBox_gama = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_6) 552 | self.doubleSpinBox_gama.setProperty("value", 4.0) 553 | self.doubleSpinBox_gama.setObjectName("doubleSpinBox_gama") 554 | self.gridLayout_7.addWidget(self.doubleSpinBox_gama, 1, 1, 1, 1) 555 | self.label_44 = QtWidgets.QLabel(self.frame_8) 556 | self.label_44.setGeometry(QtCore.QRect(560, 10, 56, 20)) 557 | self.label_44.setObjectName("label_44") 558 | self.frame_10 = QtWidgets.QFrame(self.frame_8) 559 | self.frame_10.setGeometry(QtCore.QRect(160, 40, 311, 121)) 560 | self.frame_10.setFrameShape(QtWidgets.QFrame.Box) 561 | self.frame_10.setFrameShadow(QtWidgets.QFrame.Raised) 562 | self.frame_10.setLineWidth(1) 563 | self.frame_10.setObjectName("frame_10") 564 | self.gridLayoutWidget_5 = QtWidgets.QWidget(self.frame_10) 565 | self.gridLayoutWidget_5.setGeometry(QtCore.QRect(90, 10, 211, 91)) 566 | self.gridLayoutWidget_5.setObjectName("gridLayoutWidget_5") 567 | self.gridLayout_4 = QtWidgets.QGridLayout(self.gridLayoutWidget_5) 568 | self.gridLayout_4.setContentsMargins(0, 0, 0, 0) 569 | self.gridLayout_4.setObjectName("gridLayout_4") 570 | self.radioButton_normx = QtWidgets.QRadioButton(self.gridLayoutWidget_5) 571 | self.radioButton_normx.setText("") 572 | self.radioButton_normx.setObjectName("radioButton_normx") 573 | self.gridLayout_4.addWidget(self.radioButton_normx, 1, 1, 1, 1) 574 | self.label_38 = QtWidgets.QLabel(self.gridLayoutWidget_5) 575 | self.label_38.setObjectName("label_38") 576 | self.gridLayout_4.addWidget(self.label_38, 1, 0, 1, 1) 577 | self.label_x_max = QtWidgets.QLabel(self.gridLayoutWidget_5) 578 | self.label_x_max.setObjectName("label_x_max") 579 | self.gridLayout_4.addWidget(self.label_x_max, 1, 2, 1, 1) 580 | self.label_45 = QtWidgets.QLabel(self.gridLayoutWidget_5) 581 | self.label_45.setObjectName("label_45") 582 | self.gridLayout_4.addWidget(self.label_45, 0, 0, 1, 1) 583 | self.radioButton_norm_def = QtWidgets.QRadioButton(self.gridLayoutWidget_5) 584 | self.radioButton_norm_def.setText("") 585 | self.radioButton_norm_def.setChecked(True) 586 | self.radioButton_norm_def.setObjectName("radioButton_norm_def") 587 | self.gridLayout_4.addWidget(self.radioButton_norm_def, 0, 1, 1, 1) 588 | self.doubleSpinBox_normalf = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_5) 589 | self.doubleSpinBox_normalf.setDecimals(4) 590 | self.doubleSpinBox_normalf.setMaximum(10000000.0) 591 | self.doubleSpinBox_normalf.setProperty("value", 1.0) 592 | self.doubleSpinBox_normalf.setObjectName("doubleSpinBox_normalf") 593 | self.gridLayout_4.addWidget(self.doubleSpinBox_normalf, 0, 2, 1, 1) 594 | self.label_z_max = QtWidgets.QLabel(self.gridLayoutWidget_5) 595 | self.label_z_max.setObjectName("label_z_max") 596 | self.gridLayout_4.addWidget(self.label_z_max, 2, 2, 1, 1) 597 | self.radioButton_normz = QtWidgets.QRadioButton(self.gridLayoutWidget_5) 598 | self.radioButton_normz.setText("") 599 | self.radioButton_normz.setObjectName("radioButton_normz") 600 | self.gridLayout_4.addWidget(self.radioButton_normz, 2, 1, 1, 1) 601 | self.label_40 = QtWidgets.QLabel(self.gridLayoutWidget_5) 602 | self.label_40.setObjectName("label_40") 603 | self.gridLayout_4.addWidget(self.label_40, 2, 0, 1, 1) 604 | self.label_37 = QtWidgets.QLabel(self.frame_10) 605 | self.label_37.setGeometry(QtCore.QRect(10, 30, 71, 41)) 606 | self.label_37.setAutoFillBackground(True) 607 | self.label_37.setObjectName("label_37") 608 | self.frame_12 = QtWidgets.QFrame(self.frame_8) 609 | self.frame_12.setEnabled(True) 610 | self.frame_12.setGeometry(QtCore.QRect(480, 120, 211, 41)) 611 | self.frame_12.setFrameShape(QtWidgets.QFrame.NoFrame) 612 | self.frame_12.setFrameShadow(QtWidgets.QFrame.Plain) 613 | self.frame_12.setLineWidth(0) 614 | self.frame_12.setObjectName("frame_12") 615 | self.checkBox_solo_sismo2 = QtWidgets.QCheckBox(self.frame_12) 616 | self.checkBox_solo_sismo2.setEnabled(False) 617 | self.checkBox_solo_sismo2.setGeometry(QtCore.QRect(30, 20, 21, 22)) 618 | self.checkBox_solo_sismo2.setText("") 619 | self.checkBox_solo_sismo2.setObjectName("checkBox_solo_sismo2") 620 | self.label_47 = QtWidgets.QLabel(self.frame_12) 621 | self.label_47.setEnabled(False) 622 | self.label_47.setGeometry(QtCore.QRect(40, 20, 161, 20)) 623 | self.label_47.setLineWidth(0) 624 | self.label_47.setObjectName("label_47") 625 | self.checkBox_solo_sismo = QtWidgets.QCheckBox(self.frame_12) 626 | self.checkBox_solo_sismo.setEnabled(False) 627 | self.checkBox_solo_sismo.setGeometry(QtCore.QRect(0, 0, 131, 21)) 628 | self.checkBox_solo_sismo.setObjectName("checkBox_solo_sismo") 629 | self.widget_sismo = QtWidgets.QWidget(self.tab_su) 630 | self.widget_sismo.setGeometry(QtCore.QRect(10, 200, 921, 481)) 631 | self.widget_sismo.setObjectName("widget_sismo") 632 | self.gridTabWidget_5.addTab(self.tab_su, "") 633 | self.tab = QtWidgets.QWidget() 634 | self.tab.setObjectName("tab") 635 | self.widget_sismo2 = QtWidgets.QWidget(self.tab) 636 | self.widget_sismo2.setGeometry(QtCore.QRect(20, 60, 921, 591)) 637 | self.widget_sismo2.setObjectName("widget_sismo2") 638 | self.frame_11 = QtWidgets.QFrame(self.tab) 639 | self.frame_11.setEnabled(False) 640 | self.frame_11.setGeometry(QtCore.QRect(600, 10, 221, 51)) 641 | self.frame_11.setStyleSheet("background-color: rgb(234, 226, 228);") 642 | self.frame_11.setFrameShape(QtWidgets.QFrame.Panel) 643 | self.frame_11.setFrameShadow(QtWidgets.QFrame.Plain) 644 | self.frame_11.setLineWidth(0) 645 | self.frame_11.setObjectName("frame_11") 646 | self.formLayoutWidget_3 = QtWidgets.QWidget(self.frame_11) 647 | self.formLayoutWidget_3.setGeometry(QtCore.QRect(90, 0, 128, 52)) 648 | self.formLayoutWidget_3.setObjectName("formLayoutWidget_3") 649 | self.formLayout_3 = QtWidgets.QFormLayout(self.formLayoutWidget_3) 650 | self.formLayout_3.setFieldGrowthPolicy(QtWidgets.QFormLayout.AllNonFixedFieldsGrow) 651 | self.formLayout_3.setFormAlignment(QtCore.Qt.AlignJustify|QtCore.Qt.AlignTop) 652 | self.formLayout_3.setContentsMargins(0, 0, 0, 0) 653 | self.formLayout_3.setObjectName("formLayout_3") 654 | self.radio_sismo_0_90 = QtWidgets.QRadioButton(self.formLayoutWidget_3) 655 | self.radio_sismo_0_90.setStyleSheet("") 656 | self.radio_sismo_0_90.setChecked(True) 657 | self.radio_sismo_0_90.setObjectName("radio_sismo_0_90") 658 | self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.radio_sismo_0_90) 659 | self.radio_sismo_45_90 = QtWidgets.QRadioButton(self.formLayoutWidget_3) 660 | self.radio_sismo_45_90.setStyleSheet("") 661 | self.radio_sismo_45_90.setObjectName("radio_sismo_45_90") 662 | self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.radio_sismo_45_90) 663 | self.radio_sismo_0_45 = QtWidgets.QRadioButton(self.formLayoutWidget_3) 664 | self.radio_sismo_0_45.setStyleSheet("") 665 | self.radio_sismo_0_45.setObjectName("radio_sismo_0_45") 666 | self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.radio_sismo_0_45) 667 | self.radio_sismo_30_60 = QtWidgets.QRadioButton(self.formLayoutWidget_3) 668 | self.radio_sismo_30_60.setStyleSheet("") 669 | self.radio_sismo_30_60.setObjectName("radio_sismo_30_60") 670 | self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.radio_sismo_30_60) 671 | self.label_46 = QtWidgets.QLabel(self.frame_11) 672 | self.label_46.setGeometry(QtCore.QRect(10, 0, 71, 51)) 673 | self.label_46.setObjectName("label_46") 674 | self.frame_13 = QtWidgets.QFrame(self.tab) 675 | self.frame_13.setEnabled(False) 676 | self.frame_13.setGeometry(QtCore.QRect(260, 20, 291, 41)) 677 | self.frame_13.setAutoFillBackground(False) 678 | self.frame_13.setFrameShape(QtWidgets.QFrame.NoFrame) 679 | self.frame_13.setFrameShadow(QtWidgets.QFrame.Plain) 680 | self.frame_13.setObjectName("frame_13") 681 | self.horizontalLayoutWidget_3 = QtWidgets.QWidget(self.frame_13) 682 | self.horizontalLayoutWidget_3.setGeometry(QtCore.QRect(30, 0, 255, 41)) 683 | self.horizontalLayoutWidget_3.setObjectName("horizontalLayoutWidget_3") 684 | self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_3) 685 | self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0) 686 | self.horizontalLayout_3.setObjectName("horizontalLayout_3") 687 | self.label_50 = QtWidgets.QLabel(self.horizontalLayoutWidget_3) 688 | self.label_50.setObjectName("label_50") 689 | self.horizontalLayout_3.addWidget(self.label_50) 690 | self.radioButton_plot_x = QtWidgets.QRadioButton(self.horizontalLayoutWidget_3) 691 | self.radioButton_plot_x.setChecked(True) 692 | self.radioButton_plot_x.setObjectName("radioButton_plot_x") 693 | self.horizontalLayout_3.addWidget(self.radioButton_plot_x) 694 | self.radioButton_plot_z = QtWidgets.QRadioButton(self.horizontalLayoutWidget_3) 695 | self.radioButton_plot_z.setObjectName("radioButton_plot_z") 696 | self.horizontalLayout_3.addWidget(self.radioButton_plot_z) 697 | self.frame_14 = QtWidgets.QFrame(self.tab) 698 | self.frame_14.setEnabled(False) 699 | self.frame_14.setGeometry(QtCore.QRect(110, 0, 131, 61)) 700 | self.frame_14.setFrameShape(QtWidgets.QFrame.StyledPanel) 701 | self.frame_14.setFrameShadow(QtWidgets.QFrame.Raised) 702 | self.frame_14.setObjectName("frame_14") 703 | self.gridLayoutWidget_7 = QtWidgets.QWidget(self.frame_14) 704 | self.gridLayoutWidget_7.setGeometry(QtCore.QRect(10, 10, 121, 41)) 705 | self.gridLayoutWidget_7.setObjectName("gridLayoutWidget_7") 706 | self.gridLayout_8 = QtWidgets.QGridLayout(self.gridLayoutWidget_7) 707 | self.gridLayout_8.setContentsMargins(0, 0, 0, 0) 708 | self.gridLayout_8.setObjectName("gridLayout_8") 709 | self.az_tmax = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_7) 710 | self.az_tmax.setSingleStep(0.01) 711 | self.az_tmax.setObjectName("az_tmax") 712 | self.gridLayout_8.addWidget(self.az_tmax, 1, 0, 1, 1) 713 | self.az_tmin = QtWidgets.QDoubleSpinBox(self.gridLayoutWidget_7) 714 | self.az_tmin.setSingleStep(0.01) 715 | self.az_tmin.setObjectName("az_tmin") 716 | self.gridLayout_8.addWidget(self.az_tmin, 0, 0, 1, 1) 717 | self.label_39 = QtWidgets.QLabel(self.gridLayoutWidget_7) 718 | self.label_39.setObjectName("label_39") 719 | self.gridLayout_8.addWidget(self.label_39, 1, 1, 1, 1) 720 | self.label_51 = QtWidgets.QLabel(self.gridLayoutWidget_7) 721 | self.label_51.setObjectName("label_51") 722 | self.gridLayout_8.addWidget(self.label_51, 0, 1, 1, 1) 723 | self.gridTabWidget_5.addTab(self.tab, "") 724 | MainWindow.setCentralWidget(self.centralwidget) 725 | self.menubar = QtWidgets.QMenuBar(MainWindow) 726 | self.menubar.setGeometry(QtCore.QRect(0, 0, 960, 27)) 727 | self.menubar.setObjectName("menubar") 728 | MainWindow.setMenuBar(self.menubar) 729 | self.statusbar = QtWidgets.QStatusBar(MainWindow) 730 | self.statusbar.setObjectName("statusbar") 731 | MainWindow.setStatusBar(self.statusbar) 732 | 733 | self.retranslateUi(MainWindow) 734 | self.gridTabWidget_5.setCurrentIndex(0) 735 | self.tabWidget.setCurrentIndex(0) 736 | QtCore.QMetaObject.connectSlotsByName(MainWindow) 737 | 738 | def retranslateUi(self, MainWindow): 739 | _translate = QtCore.QCoreApplication.translate 740 | MainWindow.setWindowTitle(_translate("MainWindow", "Ondas SV")) 741 | self.label_33.setText(_translate("MainWindow", "Ângulo crítico
")) 742 | self.label_2.setText(_translate("MainWindow", "DN
")) 743 | self.label_3.setText(_translate("MainWindow", "DT
")) 744 | self.label_18.setWhatsThis(_translate("MainWindow", "10%
spit
")) 745 | self.label_18.setText(_translate("MainWindow", "10%
Separação
Prop. preenchimento
")) 748 | self.label_27.setText(_translate("MainWindow", "*109 Pa
")) 749 | self.label_13.setText(_translate("MainWindow", "Shear
")) 750 | self.label_12.setText(_translate("MainWindow", "Bulk
")) 751 | self.label_29.setText(_translate("MainWindow", "*109 Pa
")) 752 | self.label_28.setText(_translate("MainWindow", "Espessura (m)
")) 753 | self.label_6.setText(_translate("MainWindow", "m/s
")) 754 | self.label_16.setText(_translate("MainWindow", "Camada 1
Isotrópica
Camada 2
HTI
VP
")) 757 | self.label_4.setText(_translate("MainWindow", "VS
")) 758 | self.label_7.setText(_translate("MainWindow", "m/s
")) 759 | self.label_5.setText(_translate("MainWindow", "Densidade
")) 760 | self.label_8.setText(_translate("MainWindow", "kg/m3
")) 761 | self.label_25.setText(_translate("MainWindow", "Prop. fraturas
")) 762 | self.label_11.setText(_translate("MainWindow", "Razão de
aspecto
Densidade
fraturamento
(%)
o
")) 765 | self.label_30.setText(_translate("MainWindow", "nogeo
")) 766 | self.label_31.setText(_translate("MainWindow", "dmin(m)
")) 767 | self.label_32.setText(_translate("MainWindow", "dstep(m)
")) 768 | self.label_10.setText(_translate("MainWindow", "|dv|
")) 769 | self.label_9.setText(_translate("MainWindow", "|ev|
")) 770 | self.label_15.setText(_translate("MainWindow", "|yv|
")) 771 | self.checkBox_solo.setText(_translate("MainWindow", "Solo")) 772 | self.label_19.setText(_translate("MainWindow", "Espessura")) 773 | self.label_21.setText(_translate("MainWindow", "(m)")) 774 | self.label_35.setText(_translate("MainWindow", "densidade")) 775 | self.label_36.setText(_translate("MainWindow", "(kg/m3)
")) 776 | self.label_22.setText(_translate("MainWindow", "Vp")) 777 | self.label_20.setText(_translate("MainWindow", "(m/s)")) 778 | self.label_48.setText(_translate("MainWindow", "Vs")) 779 | self.label_49.setText(_translate("MainWindow", "(m/s)")) 780 | self.pushButton_2.setText(_translate("MainWindow", "Plot")) 781 | self.gridTabWidget_5.setTabText(self.gridTabWidget_5.indexOf(self.tab_reflect_3), _translate("MainWindow", "Coeficiente de reflexão")) 782 | self.pushButton.setText(_translate("MainWindow", "Gerar arquivos")) 783 | self.split_box_anray_45_90.setText(_translate("MainWindow", "45/90")) 784 | self.split_box_anray_0_45.setText(_translate("MainWindow", "0/45")) 785 | self.split_box_anray_30_60.setText(_translate("MainWindow", "30/60")) 786 | self.split_box_anray_0_90.setText(_translate("MainWindow", "0/90")) 787 | self.label_34.setWhatsThis(_translate("MainWindow", "10%
spit
")) 788 | self.label_34.setText(_translate("MainWindow", "10%
Separação
Azimute(o)
")) 797 | self.radioButton_0.setText(_translate("MainWindow", "0")) 798 | self.radioButton_30.setText(_translate("MainWindow", "30")) 799 | self.radioButton_45.setText(_translate("MainWindow", "45")) 800 | self.radioButton_60.setText(_translate("MainWindow", "60")) 801 | self.radioButton_90.setText(_translate("MainWindow", "90")) 802 | self.label_42.setText(_translate("MainWindow", "Freq")) 803 | self.label_43.setText(_translate("MainWindow", "Gama")) 804 | self.label_44.setText(_translate("MainWindow", "Wavelet
")) 805 | self.label_38.setText(_translate("MainWindow", "|max (radial)|
")) 806 | self.label_x_max.setText(_translate("MainWindow", "...
")) 807 | self.label_45.setText(_translate("MainWindow", "|max|")) 808 | self.label_z_max.setText(_translate("MainWindow", "...
")) 809 | self.label_40.setText(_translate("MainWindow", "|max (vertical)|
")) 810 | self.label_37.setText(_translate("MainWindow", "Normalização
1/|max|
")) 811 | self.label_47.setText(_translate("MainWindow", "Plotar apenas no primeiro geofone
")) 812 | self.checkBox_solo_sismo.setText(_translate("MainWindow", "Reflexão do solo")) 813 | self.gridTabWidget_5.setTabText(self.gridTabWidget_5.indexOf(self.tab_su), _translate("MainWindow", "Sismogramas")) 814 | self.radio_sismo_0_90.setText(_translate("MainWindow", "0/90")) 815 | self.radio_sismo_45_90.setText(_translate("MainWindow", "45/90")) 816 | self.radio_sismo_0_45.setText(_translate("MainWindow", "0/45")) 817 | self.radio_sismo_30_60.setText(_translate("MainWindow", "30/60")) 818 | self.label_46.setWhatsThis(_translate("MainWindow", "10%
spit
")) 819 | self.label_46.setText(_translate("MainWindow", "Azimutes
")) 820 | self.label_50.setText(_translate("MainWindow", "Componente")) 821 | self.radioButton_plot_x.setText(_translate("MainWindow", "radial")) 822 | self.radioButton_plot_z.setText(_translate("MainWindow", "vertical")) 823 | self.label_39.setText(_translate("MainWindow", "Tmax")) 824 | self.label_51.setText(_translate("MainWindow", "Tmin")) 825 | self.gridTabWidget_5.setTabText(self.gridTabWidget_5.indexOf(self.tab), _translate("MainWindow", "Sismogramas/Azimutes")) 826 | 827 | 828 | if __name__ == "__main__": 829 | import sys 830 | app = QtWidgets.QApplication(sys.argv) 831 | MainWindow = QtWidgets.QMainWindow() 832 | ui = Ui_MainWindow() 833 | ui.setupUi(MainWindow) 834 | MainWindow.show() 835 | sys.exit(app.exec_()) 836 | 837 | -------------------------------------------------------------------------------- /images/P_anray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stdevelopr/seismic-fracture-modeling/21d3a6bda96eba222a2aba29460e078664963187/images/P_anray.png -------------------------------------------------------------------------------- /images/P_anray_sismo_reflec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stdevelopr/seismic-fracture-modeling/21d3a6bda96eba222a2aba29460e078664963187/images/P_anray_sismo_reflec.png -------------------------------------------------------------------------------- /images/P_formula.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stdevelopr/seismic-fracture-modeling/21d3a6bda96eba222a2aba29460e078664963187/images/P_formula.png -------------------------------------------------------------------------------- /images/P_formula_split_min.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stdevelopr/seismic-fracture-modeling/21d3a6bda96eba222a2aba29460e078664963187/images/P_formula_split_min.png -------------------------------------------------------------------------------- /images/P_sismo_azm_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stdevelopr/seismic-fracture-modeling/21d3a6bda96eba222a2aba29460e078664963187/images/P_sismo_azm_vertical.png --------------------------------------------------------------------------------