├── 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.
19 | You can find instructions here: http://w3d.cz/software/sw3dcd21/anray/anray.htm

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 | ![alt tag](/images/P_formula_split_min.png) 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 | ![alt tag](/images/P_anray.png) 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 | ![alt tag](/images/P_anray_sismo_reflec.png) 34 | The last tab compare the amplitudes for differents azimuths. 35 | ![alt tag](/images/P_sismo_azm_vertical.png) 36 | -------------------------------------------------------------------------------- /Thesis.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stdevelopr/seismic-fracture-modeling/21d3a6bda96eba222a2aba29460e078664963187/Thesis.pdf -------------------------------------------------------------------------------- /anray/a42.for: -------------------------------------------------------------------------------- 1 | C

   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

")) 734 | self.split_box0_90.setText(_translate("MainWindow", "0/90")) 735 | self.label_26.setText(_translate("MainWindow", "

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

")) 743 | self.label_24.setText(_translate("MainWindow", "

Camada 2
HTI

")) 744 | self.label.setText(_translate("MainWindow", "

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

")) 751 | self.label_14.setText(_translate("MainWindow", "

Densidade
fraturamento
(%)

")) 752 | self.label_17.setText(_translate("MainWindow", "

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

")) 777 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("MainWindow", "HTI")) 778 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_5), _translate("MainWindow", "Solo")) 779 | self.gridTabWidget_5.setTabText(self.gridTabWidget_5.indexOf(self.tab_anray_3), _translate("MainWindow", "Componentes/Anray")) 780 | self.Tmin.setText(_translate("MainWindow", "Tmin(s)")) 781 | self.Tmax.setText(_translate("MainWindow", "Tmax(s)")) 782 | self.label_23.setText(_translate("MainWindow", "dt(s)")) 783 | self.sismo_button.setText(_translate("MainWindow", "Plotar")) 784 | self.label_41.setText(_translate("MainWindow", "

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

")) 746 | self.split_box0_90.setText(_translate("MainWindow", "0/90")) 747 | self.label_26.setText(_translate("MainWindow", "

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

")) 755 | self.label_24.setText(_translate("MainWindow", "

Camada 2
HTI

")) 756 | self.label.setText(_translate("MainWindow", "

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

")) 763 | self.label_14.setText(_translate("MainWindow", "

Densidade
fraturamento
(%)

")) 764 | self.label_17.setText(_translate("MainWindow", "

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

")) 789 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("MainWindow", "HTI")) 790 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_5), _translate("MainWindow", "Solo")) 791 | self.gridTabWidget_5.setTabText(self.gridTabWidget_5.indexOf(self.tab_anray_3), _translate("MainWindow", "Componentes/Anray")) 792 | self.Tmin.setText(_translate("MainWindow", "Tmin(s)")) 793 | self.Tmax.setText(_translate("MainWindow", "Tmax(s)")) 794 | self.label_23.setText(_translate("MainWindow", "dt(s)")) 795 | self.sismo_button.setText(_translate("MainWindow", "Plotar")) 796 | self.label_41.setText(_translate("MainWindow", "

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 --------------------------------------------------------------------------------