C
C Subroutine file 'hder.for' to calculate the phase-space derivatives C of the Hamiltonian in anisotropic media. C C Version: 7.20 C Date: 2015, May 19 C Coded by Ludek Klimes C C....................................................................... C C This file consists of the following external procedures: C HDER... Subroutine designed to calculate the phase-space C derivatives of the Hamiltonian in anisotropic media. C GAA... Subroutine calculating the eigenvalues and eigenvectors C of the Christoffel matrix, with entries GABX, GABP, GAAXX, C GAAXP and GAAPP calculating the first-order and C second-order phase-space derivatives of the Christoffel C matrix, transformed into the given eigenvectors of the C Christoffel matrix. C C======================================================================= C SUBROUTINE HDER(ICB,A,P1,P2,P3,HP,HS,H,H1,H2,H3,H4,H5,H6, * H11,H12,H22,H13,H23,H33,H14,H24,H34,H44, * H15,H25,H35,H45,H55,H16,H26,H36,H46,H56,H66, * E,IERR) INTEGER ICB,IERR REAL A(10,21),P1,P2,P3,HP,HS,H,H1,H2,H3,H4,H5,H6 REAL H11,H12,H22,H13,H23,H33,H14,H24,H34,H44 REAL H15,H25,H35,H45,H55,H16,H26,H36,H46,H56,H66,E(9) C C Subroutine designed to calculate the phase-space derivatives of the C Hamiltonian. C C Input: C ICB... Wave type: C ICB.GT.0: P wave, C ICB.LT.0: S wave. C A... Density-reduced elastic moduli and their first and second C spatial derivatives. C The order of the value, first and second partial C derivatives of each parameter Aij (second array index)is: C Aij,Aij1,Aij2,Aij3,Aij11,Aij12,Aij22,Aij13,Aij23,Aij33. C The order of parameters (second array index) is: C A11,A12,A22,A13,A23,A33,A14,A24,A34,A44,A15,A25,A35,A45, C A55,A16,A26,A36,A46,A56,A66. C P1,P2,P3... Slowness vector. C C Output: C HP,HS.. Twice the value of the homogeneous Hamiltonian of the C second degree corresponding to P and S waves, C respectively. HP equals the P-wave eigenvalue of the C Christoffel matrix, definition of HS depends on the value C of the input SEP parameter DEGREE. C H... Twice the value of the homogeneous Hamiltonian of the C second degree corresponding to the given wave (for P wave, C H equals the P-wave eigenvalue of the Christoffel matrix). C H should be equal to 1 if P1,P2,P3 is the slowness vector. C H1,H2,H3,H4,H5,H6... First partial phase-space derivatives of the C second degree Hamiltonian. The derivatives are calculated C for the normalized slowness vector (divided by the square C root of the value of the Hamiltonian). C H11,H12,H22,H13,H23,H33,H14,H24,H34,H44,H15,H25,H35,H45,H55,H16, C H26,H36,H46,H56,H66... Second partial phase-space derivatives of C the second degree Hamiltonian. The derivatives are C calculated for the normalized slowness vector (divided by C the square root of the value of the Hamiltonian). C E... Components of the eigenvectors of the Christoffel matrix: C E(1:3),E(4:6): S-wave eigenvectors. C E(7:9): P-wave eigenvector. C IERR... Error indicator when tracing the anisotropic-ray-theory C S-wave rays. C If KSWAVE=1 or KSWAVE=2, and the relative difference C between the S-wave eigenvalues of the Christoffel matrix C is smaller than input SEP parameter DSWAVE, IERR=1. C In this case, H1,H2,...,H6 are considerably inaccurate, C and H11,H12,...,H66 are defined but meaningless. C Otherwise, IERR=0. C C Input SEP parameters: C DEGREE='real'... Degree of the homogeneous Hamiltonian to be C arithmetically averaged for common S-wave ray tracing. C Default: DEGREE=-1 C KSWAVE=integer... Selection of the anisotropic-ray-theory S-wave C rays instead of common S-wave rays. C Affects only S waves (ICB.LT.0). C General anisotropy (TIA1=0, TIA2=0 and TIA3=0): C KSWAVE=1: Slower anisotropic-ray-theory S-wave rays. C KSWAVE=2: Faster anisotropic-ray-theory S-wave rays. C Else (default): Common S-wave rays. C Approximately transversely isotropic medium: C KSWAVE=1: Anisotropic-ray-theory SH-wave rays. C KSWAVE=2: Anisotropic-ray-theory SV-wave rays. C Else (default): Common S-wave rays. C Default: KSWAVE=0 C TIA1=real, TIA2=real, TIA3=real: Symmetry axis of a transversely C isotropic or approximately transversely isotropic (TI) C medium. It can be specified only if DEGREE=2. C If specified when tracing the anisotropic-ray-theory C S-wave rays instead of common S-wave rays, the rays are C separated into SH rays (KSWAVE=1) and SV rays (KSWAVE=2). C Default: TIA1=0, TIA2=0, TIA3=0 (no TI symmetry specified) C DSWAVE='real'... Minimum relative difference between the S-wave C eigenvalues G1 and G2 of the Christoffel matrix. If the C difference is smaller, output error indicator IERR is C set to 1 in order to have a possibility to terminate ray C tracing. C Used only if ICB.LT.0 and (KSWAVE=1 or KSWAVE=2). C The relative difference is defined as ABS(G1-G2)/GS, C where GS=(G1+G2)/2. C The maximum angular numerical error of the eigenvectors C of the Christoffel matrix in radians is roughly equal to C (relative rounding error)/DSWAVE. C Note that for DSWAVE smaller than its default value C the KMAH index and the matrix of geometrical spreading C may be considerably erroneous. C Default: DSWAVE=0.00001 C C Subroutines and external functions required: EXTERNAL GAA,GABX,GABP,GAAXX,GAAXP,GAAPP,ERROR,RSEP3I,RSEP3R C Subroutine GAA and its entries GABX,GABP,GAAXX,GAAXP,GAAPP... C This file. C ERROR.. File 'error.for'. C RSEP3I,RSEP3R... File 'sep.for'. C EIGEN.. File 'eigen.for'. C C Date: 2015, May 19 C Coded by Ludek Klimes C C----------------------------------------------------------------------- C C Temporary storage locations: LOGICAL LANIRT,LTI REAL HSN,HS2,E11,E21,E31,E12,E22,E32,E13,E23,E33,PP1,PP2,PP3 REAL G11,G22,G33,GSV REAL G111,G121,G221,G131,G231,G331 REAL G112,G122,G222,G132,G232,G332 REAL G113,G123,G223,G133,G233,G333 REAL G114,G124,G224,G134,G234,G334 REAL G115,G125,G225,G135,G235,G335 REAL G116,G126,G226,G136,G236,G336 REAL G1111,G1211,G2211,G1311,G2311,G3311 REAL G1112,G1212,G2212,G1312,G2312,G3312 REAL G1122,G1222,G2222,G1322,G2322,G3322 REAL G1113,G1213,G2213,G1313,G2313,G3313 REAL G1123,G1223,G2223,G1323,G2323,G3323 REAL G1133,G1233,G2233,G1333,G2333,G3333 REAL G1114,G1214,G2214,G1314,G2314,G3314 REAL G1124,G1224,G2224,G1324,G2324,G3324 REAL G1134,G1234,G2234,G1334,G2334,G3334 REAL G1144,G1244,G2244,G1344,G2344,G3344 REAL G1115,G1215,G2215,G1315,G2315,G3315 REAL G1125,G1225,G2225,G1325,G2325,G3325 REAL G1135,G1235,G2235,G1335,G2335,G3335 REAL G1145,G1245,G2245,G1345,G2345,G3345 REAL G1155,G1255,G2255,G1355,G2355,G3355 REAL G1116,G1216,G2216,G1316,G2316,G3316 REAL G1126,G1226,G2226,G1326,G2326,G3326 REAL G1136,G1236,G2236,G1336,G2336,G3336 REAL G1146,G1246,G2246,G1346,G2346,G3346 REAL G1156,G1256,G2256,G1356,G2356,G3356 REAL G1166,G1266,G2266,G1366,G2366,G3366 C Weighting factors for P-wave rays and common S-wave rays REAL W11,W22,W33,W1111,W1212,W2222,W1313,W2323,WH C Additional weighting factors for SH and SV reference rays REAL W12,W13,W23 REAL W1113,W1213,W2213,W1123,W1223,W2223,W1323,W1333,W2333 REAL TE1,TE2,TE3,TETE,TE11,TE12,TE22,TE13,TE23,TE33 REAL AUX C C Degree of the homogeneous Hamiltonian and other input data: INTEGER KSWAVE REAL DEGREE,DEGRE2,TIA1,TIA2,TIA3,DSWAVE SAVE DEGREE,DEGRE2,TIA1,TIA2,TIA3,DSWAVE,KSWAVE DATA DEGREE/0./ C C....................................................................... C IF(DEGREE.EQ.0.) THEN CALL RSEP3R('DEGREE',DEGREE,-1.) DEGRE2=0.5*DEGREE CALL RSEP3I('KSWAVE',KSWAVE,0) CALL RSEP3R('TIA1' ,TIA1 ,0.) CALL RSEP3R('TIA2' ,TIA2 ,0.) CALL RSEP3R('TIA3' ,TIA3 ,0.) CALL RSEP3R('DSWAVE',DSWAVE,0.00001) IF(KSWAVE.GE.1.AND.KSWAVE.LE.2.AND.DSWAVE.LE.0.0) THEN C 5A3 CALL ERROR('5A3 in HDER: SEP parameter DSWAVE not positive') END IF END IF IERR=0 LTI=.FALSE. C C Eigenvalues and eigenvectors of the Christoffel matrix: CALL GAA(A,P1,P2,P3,G11,G22,G33, * E11,E21,E31,E12,E22,E32,E13,E23,E33) E(1)=E11 E(2)=E21 E(3)=E31 E(4)=E12 E(5)=E22 E(6)=E32 E(7)=E13 E(8)=E23 E(9)=E33 C C Twice the homogeneous Hamiltonian of the second degree: HP=G33 IF(KSWAVE.EQ.1.AND.ICB.LT.0) THEN C Anisotropic-ray-theory S-wave ray tracing (general or TI) IF(TIA1.EQ.0..AND.TIA2.EQ.0..AND.TIA3.EQ.0.) THEN C Slower anisotropic-ray-theory S-wave ray C Setting anisotropic-ray-theory ray tracing LANIRT=.TRUE. IF(ABS(G11-G22).LE.DSWAVE*0.5*(G11+G22)) THEN IERR=1 END IF C Exchanging P wave and slower S wave HS=G11 G11=G33 G33=HS AUX=E11 E11=E13 E13=AUX AUX=E21 E21=E23 E23=AUX AUX=E31 E31=E33 E33=AUX ELSE C SH reference ray in an approximately TI medium IF(DEGREE.NE.2) THEN C 5A4 CALL ERROR('5A4 in HDER: DEGREE must be 2 in a TI medium') END IF LANIRT=.FALSE. LTI=.TRUE. TE1=TIA1*E11+TIA2*E21+TIA3*E31 TE2=TIA1*E12+TIA2*E22+TIA3*E32 TE3=TIA1*E13+TIA2*E23+TIA3*E33 TETE=TE1*TE1+TE2*TE2 TE11=TE1*TE1/TETE TE12=TE1*TE2/TETE TE22=TE2*TE2/TETE TE13=TE1*TE3/TETE TE23=TE2*TE3/TETE TE33=TE3*TE3/TETE GSV=TE11*G11+TE22*G22 C Half the weighting factors by Klimes (2015) times multiplicity W11=0.5*TE22 W22=0.5*TE11 W12= -TE12 W13= -TE13*(GSV-G11)/(G33-G11) W23= -TE23*(GSV-G22)/(G33-G22) HS=2.*(W11*G11+W22*G22) END IF ELSE IF(KSWAVE.EQ.2.AND.ICB.LT.0) THEN C Anisotropic-ray-theory S-wave ray tracing (general or TI) IF(TIA1.EQ.0..AND.TIA2.EQ.0..AND.TIA3.EQ.0.) THEN C Faster anisotropic-ray-theory S-wave ray C Setting anisotropic-ray-theory ray tracing LANIRT=.TRUE. IF(ABS(G11-G22).LE.DSWAVE*0.5*(G11+G22)) THEN IERR=1 END IF C Exchanging P wave and faster S wave HS=G22 G22=G33 G33=HS AUX=E12 E12=E13 E13=AUX AUX=E22 E22=E23 E23=AUX AUX=E32 E32=E33 E33=AUX ELSE C SV reference ray in an approximately TI medium IF(DEGREE.NE.2) THEN C 5A5 CALL ERROR('5A5 in HDER: DEGREE must be 2 in a TI medium') END IF LANIRT=.FALSE. LTI=.TRUE. TE1=TIA1*E11+TIA2*E21+TIA3*E31 TE2=TIA1*E12+TIA2*E22+TIA3*E32 TE3=TIA1*E13+TIA2*E23+TIA3*E33 TETE=TE1*TE1+TE2*TE2 TE11=TE1*TE1/TETE TE12=TE1*TE2/TETE TE22=TE2*TE2/TETE TE13=TE1*TE3/TETE TE23=TE2*TE3/TETE TE33=TE3*TE3/TETE GSV=TE11*G11+TE22*G22 C Half the weighting factors by Klimes (2015) times multiplicity W11=0.5*TE11 W22=0.5*TE22 W12= TE12 W13= TE13*(GSV-G11)/(G33-G11) W23= TE23*(GSV-G22)/(G33-G22) HS=GSV END IF ELSE C Setting S-wave common ray tracing LANIRT=.FALSE. C Averaging S-wave eigenvalues of the Christoffel matrix HSN=0.5*(G11**DEGRE2+G22**DEGRE2) HS2=HSN**(1./DEGRE2) HS=HS2 END IF IF(ICB.GT.0) THEN C P wave: C Setting anisotropic-ray-theory ray tracing LANIRT=.TRUE. H=G33 ELSE IF(ICB.LT.0) THEN C S wave: H=HS ELSE C 5A2 CALL ERROR('5A2 in HDER: Zero wave type') C This error should not appear, contact the authors. END IF C C Normalized slowness vector: PP1=P1/SQRT(H) PP2=P2/SQRT(H) PP3=P3/SQRT(H) C C Phase-space derivatives of the Christoffel matrix transformed into C its own eigenvectors required both for P and S waves: CALL GABX(A,PP1,PP2,PP3,E11,E21,E31,E13,E23,E33,G131,G132,G133) CALL GABP(H, E11,E21,E31,E13,E23,E33,G134,G135,G136) CALL GABX(A,PP1,PP2,PP3,E12,E22,E32,E13,E23,E33,G231,G232,G233) CALL GABP(H, E12,E22,E32,E13,E23,E33,G234,G235,G236) C IF(LANIRT) THEN C P wave or anisotropic-ray-theory S wave: C C Phase-space derivatives of the Christoffel matrix transformed C into its own eigenvectors: CALL GAAXX(A,PP1,PP2,PP3,E13,E23,E33, * G3311,G3312,G3322,G3313,G3323,G3333) CALL GAAXP(A,PP1,PP2,PP3,E13,E23,E33, * G3314,G3324,G3334,G3315,G3325,G3335,G3316,G3326,G3336) CALL GAAPP( E13,E23,E33, * G3344,G3345,G3355,G3346,G3356,G3366) G331=0.5*(G3314*PP1+G3315*PP2+G3316*PP3) G332=0.5*(G3324*PP1+G3325*PP2+G3326*PP3) G333=0.5*(G3334*PP1+G3335*PP2+G3336*PP3) G334= G3344*PP1+G3345*PP2+G3346*PP3 G335= G3345*PP1+G3355*PP2+G3356*PP3 G336= G3346*PP1+G3356*PP2+G3366*PP3 C W33=0.5 H1=W33*G331 H2=W33*G332 H3=W33*G333 H4=W33*G334 H5=W33*G335 H6=W33*G336 C IF(IERR.EQ.0) THEN W1313=G33/(G33-G11) W2323=G33/(G33-G22) ELSE W1313=0.0 W2323=0.0 END IF H11=W33*G3311+W1313*G131*G131+W2323*G231*G231 H12=W33*G3312+W1313*G131*G132+W2323*G231*G232 H22=W33*G3322+W1313*G132*G132+W2323*G232*G232 H13=W33*G3313+W1313*G131*G133+W2323*G231*G233 H23=W33*G3323+W1313*G132*G133+W2323*G232*G233 H33=W33*G3333+W1313*G133*G133+W2323*G233*G233 H14=W33*G3314+W1313*G131*G134+W2323*G231*G234 H24=W33*G3324+W1313*G132*G134+W2323*G232*G234 H34=W33*G3334+W1313*G133*G134+W2323*G233*G234 H44=W33*G3344+W1313*G134*G134+W2323*G234*G234 H15=W33*G3315+W1313*G131*G135+W2323*G231*G235 H25=W33*G3325+W1313*G132*G135+W2323*G232*G235 H35=W33*G3335+W1313*G133*G135+W2323*G233*G235 H45=W33*G3345+W1313*G134*G135+W2323*G234*G235 H55=W33*G3355+W1313*G135*G135+W2323*G235*G235 H16=W33*G3316+W1313*G131*G136+W2323*G231*G236 H26=W33*G3326+W1313*G132*G136+W2323*G232*G236 H36=W33*G3336+W1313*G133*G136+W2323*G233*G236 H46=W33*G3346+W1313*G134*G136+W2323*G234*G236 H56=W33*G3356+W1313*G135*G136+W2323*G235*G236 H66=W33*G3366+W1313*G136*G136+W2323*G236*G236 ELSE C S wave: C C Phase-space derivatives of the Christoffel matrix transformed C into its own eigenvectors: CALL GABX(A,PP1,PP2,PP3,E11,E21,E31,E12,E22,E32,G121,G122,G123) CALL GABP(H, E11,E21,E31,E12,E22,E32,G124,G125,G126) CALL GAAXX(A,PP1,PP2,PP3,E11,E21,E31, * G1111,G1112,G1122,G1113,G1123,G1133) CALL GAAXP(A,PP1,PP2,PP3,E11,E21,E31, * G1114,G1124,G1134,G1115,G1125,G1135,G1116,G1126,G1136) CALL GAAPP( E11,E21,E31, * G1144,G1145,G1155,G1146,G1156,G1166) G111=0.5*(G1114*PP1+G1115*PP2+G1116*PP3) G112=0.5*(G1124*PP1+G1125*PP2+G1126*PP3) G113=0.5*(G1134*PP1+G1135*PP2+G1136*PP3) G114= G1144*PP1+G1145*PP2+G1146*PP3 G115= G1145*PP1+G1155*PP2+G1156*PP3 G116= G1146*PP1+G1156*PP2+G1166*PP3 CALL GAAXX(A,PP1,PP2,PP3,E12,E22,E32, * G2211,G2212,G2222,G2213,G2223,G2233) CALL GAAXP(A,PP1,PP2,PP3,E12,E22,E32, * G2214,G2224,G2234,G2215,G2225,G2235,G2216,G2226,G2236) CALL GAAPP( E12,E22,E32, * G2244,G2245,G2255,G2246,G2256,G2266) G221=0.5*(G2214*PP1+G2215*PP2+G2216*PP3) G222=0.5*(G2224*PP1+G2225*PP2+G2226*PP3) G223=0.5*(G2234*PP1+G2235*PP2+G2236*PP3) G224= G2244*PP1+G2245*PP2+G2246*PP3 G225= G2245*PP1+G2255*PP2+G2256*PP3 G226= G2246*PP1+G2256*PP2+G2266*PP3 C IF(LTI) THEN C SH or SV reference ray in an approximately TI medium. C Weighting factors for SV reference rays (Klimes, 2015, sec.4): C Weighting factors also used for common S-wave rays W1111=0. W2222=0. W1212=0. WH=0. W1313=((2.*GSV-G11-G11)*(TE11-0.25)*TE33-0.5*(G33-GSV)*TE11) * *HS/((G33-G11)*(G33-G11)) W2323=((2.*GSV-G22-G22)*(TE22-0.25)*TE33-0.5*(G33-GSV)*TE22) * *HS/((G33-G22)*(G33-G22)) C Additional weighting factors for SH and SV reference rays W1323=((2.*GSV-G11-G22)*(TE12 )*TE33-0.5*(G33-GSV)*TE12) * *HS/((G33-G11)*(G33-G22)) W1113=(TE11*TE13- TE13*(G33-GSV)/(G33-G11))*HS/(G33-G11) W1213=(TE12*TE13-0.5*TE23*(G33-GSV)/(G33-G22))*HS/(G33-G11) W2213= TE22*TE13 *HS/(G33-G11) W1123= TE11*TE23 *HS/(G33-G22) W1223=(TE12*TE23-0.5*TE13*(G33-GSV)/(G33-G11))*HS/(G33-G22) W2223=(TE22*TE23- TE23*(G33-GSV)/(G33-G22))*HS/(G33-G22) W1333=-W13*HS/(G33-G11) W2333=-W23*HS/(G33-G22) IF(KSWAVE.EQ.1) THEN C Weighting factors for SH reference rays: C Weighting factors also used for common S-wave rays W1313=-0.5*HS/(G33-G11)-W1313 W2323=-0.5*HS/(G33-G22)-W2323 C Additional weighting factors for SH and SV reference rays W1323=-W1323 W1113=-W1113 W1213=-W1213 W2213=-W2213 W1123=-W1123 W1223=-W1223 W2223=-W2223 END IF C Half the weighting factors by Klimes (2015) times multiplicity W1313=2.*W1313 W2323=2.*W2323 W1323=2.*W1323 C W1113=1.*W1113 W1213=2.*W1213 C W2213=1.*W2213 C W1123=1.*W1123 W1223=2.*W1223 C W2223=1.*W2223 C W1333=1.*W1333 C W2333=1.*W2333 ELSE C Common S-wave ray W11=0.25*G11**(DEGRE2-1.)*HS2/HSN W22=0.25*G22**(DEGRE2-1.)*HS2/HSN W1313=2.*W11*HS2/(G11-G33) W2323=2.*W22*HS2/(G22-G33) W1111=(DEGRE2-1.)*W11*HS2/G11 W2222=(DEGRE2-1.)*W22*HS2/G22 IF(DEGREE.EQ.-2) THEN W1212=-(G11+G22)/(G11*G22)**2 ELSE IF(DEGREE.EQ.-1) THEN W1212=-(G11+SQRT(G11*G22)+G22)/(G11*SQRT(G22)+G22*SQRT(G11)) * /(G11*G22) ELSE IF(DEGREE.EQ.1) THEN W1212=-1./(G11*SQRT(G22)+G22*SQRT(G11)) ELSE IF(DEGREE.EQ.2) THEN W1212=0. ELSE C 5A1 CALL ERROR('5A1 in HDER: Wrong degree of Hamiltonian') C Only homogeneous Hamiltonians of degrees -2, -1, 1 and 2 are C now allowed. END IF W1212=0.5*W1212*HS2*HS2/HSN WH=(2.-DEGREE) END IF C H1=W11*G111+W22*G221 H2=W11*G112+W22*G222 H3=W11*G113+W22*G223 H4=W11*G114+W22*G224 H5=W11*G115+W22*G225 H6=W11*G116+W22*G226 IF(LTI) THEN H1=W12*G121+W13*G131+W23*G231+H1 H2=W12*G122+W13*G132+W23*G232+H2 H3=W12*G123+W13*G133+W23*G233+H3 H4=W12*G124+W13*G134+W23*G234+H4 H5=W12*G125+W13*G135+W23*G235+H5 H6=W12*G126+W13*G136+W23*G236+H6 END IF C H11=W11*G1111+W1111*G111*G111+W1313*G131*G131+W1212*G121*G121 H12=W11*G1112+W1111*G111*G112+W1313*G131*G132+W1212*G121*G122 H22=W11*G1122+W1111*G112*G112+W1313*G132*G132+W1212*G122*G122 H13=W11*G1113+W1111*G111*G113+W1313*G131*G133+W1212*G121*G123 H23=W11*G1123+W1111*G112*G113+W1313*G132*G133+W1212*G122*G123 H33=W11*G1133+W1111*G113*G113+W1313*G133*G133+W1212*G123*G123 H14=W11*G1114+W1111*G111*G114+W1313*G131*G134+W1212*G121*G124 H24=W11*G1124+W1111*G112*G114+W1313*G132*G134+W1212*G122*G124 H34=W11*G1134+W1111*G113*G114+W1313*G133*G134+W1212*G123*G124 H44=W11*G1144+W1111*G114*G114+W1313*G134*G134+W1212*G124*G124 H15=W11*G1115+W1111*G111*G115+W1313*G131*G135+W1212*G121*G125 H25=W11*G1125+W1111*G112*G115+W1313*G132*G135+W1212*G122*G125 H35=W11*G1135+W1111*G113*G115+W1313*G133*G135+W1212*G123*G125 H45=W11*G1145+W1111*G114*G115+W1313*G134*G135+W1212*G124*G125 H55=W11*G1155+W1111*G115*G115+W1313*G135*G135+W1212*G125*G125 H16=W11*G1116+W1111*G111*G116+W1313*G131*G136+W1212*G121*G126 H26=W11*G1126+W1111*G112*G116+W1313*G132*G136+W1212*G122*G126 H36=W11*G1136+W1111*G113*G116+W1313*G133*G136+W1212*G123*G126 H46=W11*G1146+W1111*G114*G116+W1313*G134*G136+W1212*G124*G126 H56=W11*G1156+W1111*G115*G116+W1313*G135*G136+W1212*G125*G126 H66=W11*G1166+W1111*G116*G116+W1313*G136*G136+W1212*G126*G126 H11=W22*G2211+W2222*G221*G221+W2323*G231*G231+WH*H1*H1+H11 H12=W22*G2212+W2222*G221*G222+W2323*G231*G232+WH*H1*H2+H12 H22=W22*G2222+W2222*G222*G222+W2323*G232*G232+WH*H2*H2+H22 H13=W22*G2213+W2222*G221*G223+W2323*G231*G233+WH*H1*H3+H13 H23=W22*G2223+W2222*G222*G223+W2323*G232*G233+WH*H2*H3+H23 H33=W22*G2233+W2222*G223*G223+W2323*G233*G233+WH*H3*H3+H33 H14=W22*G2214+W2222*G221*G224+W2323*G231*G234+WH*H1*H4+H14 H24=W22*G2224+W2222*G222*G224+W2323*G232*G234+WH*H2*H4+H24 H34=W22*G2234+W2222*G223*G224+W2323*G233*G234+WH*H3*H4+H34 H44=W22*G2244+W2222*G224*G224+W2323*G234*G234+WH*H4*H4+H44 H15=W22*G2215+W2222*G221*G225+W2323*G231*G235+WH*H1*H5+H15 H25=W22*G2225+W2222*G222*G225+W2323*G232*G235+WH*H2*H5+H25 H35=W22*G2235+W2222*G223*G225+W2323*G233*G235+WH*H3*H5+H35 H45=W22*G2245+W2222*G224*G225+W2323*G234*G235+WH*H4*H5+H45 H55=W22*G2255+W2222*G225*G225+W2323*G235*G235+WH*H5*H5+H55 H16=W22*G2216+W2222*G221*G226+W2323*G231*G236+WH*H1*H6+H16 H26=W22*G2226+W2222*G222*G226+W2323*G232*G236+WH*H2*H6+H26 H36=W22*G2236+W2222*G223*G226+W2323*G233*G236+WH*H3*H6+H36 H46=W22*G2246+W2222*G224*G226+W2323*G234*G236+WH*H4*H6+H46 H56=W22*G2256+W2222*G225*G226+W2323*G235*G236+WH*H5*H6+H56 H66=W22*G2266+W2222*G226*G226+W2323*G236*G236+WH*H6*H6+H66 IF(LTI) THEN CALL GABX(A,PP1,PP2,PP3,E13,E23,E33,E13,E23,E33, * G331,G332,G333) CALL GABP(H, E13,E23,E33,E13,E23,E33, * G334,G335,G336) CALL GABXX(A,PP1,PP2,PP3,E11,E21,E31,E12,E22,E32, * G1211,G1212,G1222,G1213,G1223,G1233) CALL GABXP(A,PP1,PP2,PP3,E11,E21,E31,E12,E22,E32, * G1214,G1224,G1234,G1215,G1225,G1235,G1216,G1226,G1236) CALL GABPP( E11,E21,E31,E12,E22,E32, * G1244,G1245,G1255,G1246,G1256,G1266) CALL GABXX(A,PP1,PP2,PP3,E11,E21,E31,E13,E23,E33, * G1311,G1312,G1322,G1313,G1323,G1333) CALL GABXP(A,PP1,PP2,PP3,E11,E21,E31,E13,E23,E33, * G1314,G1324,G1334,G1315,G1325,G1335,G1316,G1326,G1336) CALL GABPP( E11,E21,E31,E13,E23,E33, * G1344,G1345,G1355,G1346,G1356,G1366) CALL GABXX(A,PP1,PP2,PP3,E12,E22,E32,E13,E23,E33, * G2311,G2312,G2322,G2313,G2323,G2333) CALL GABXP(A,PP1,PP2,PP3,E12,E22,E32,E13,E23,E33, * G2314,G2324,G2334,G2315,G2325,G2335,G2316,G2326,G2336) CALL GABPP( E12,E22,E32,E13,E23,E33, * G2344,G2345,G2355,G2346,G2356,G2366) C H11=W12*G1211+W13*G1311+W23*G2311+H11 H12=W12*G1212+W13*G1312+W23*G2312+H12 H22=W12*G1222+W13*G1322+W23*G2322+H22 H13=W12*G1213+W13*G1313+W23*G2313+H13 H23=W12*G1223+W13*G1323+W23*G2323+H23 H33=W12*G1233+W13*G1333+W23*G2333+H33 H14=W12*G1214+W13*G1314+W23*G2314+H14 H24=W12*G1224+W13*G1324+W23*G2324+H24 H34=W12*G1234+W13*G1334+W23*G2334+H34 H44=W12*G1244+W13*G1344+W23*G2344+H44 H15=W12*G1215+W13*G1315+W23*G2315+H15 H25=W12*G1225+W13*G1325+W23*G2325+H25 H35=W12*G1235+W13*G1335+W23*G2335+H35 H45=W12*G1245+W13*G1345+W23*G2345+H45 H55=W12*G1255+W13*G1355+W23*G2355+H55 H16=W12*G1216+W13*G1316+W23*G2316+H16 H26=W12*G1226+W13*G1326+W23*G2326+H26 H36=W12*G1236+W13*G1336+W23*G2336+H36 H46=W12*G1246+W13*G1346+W23*G2346+H46 H56=W12*G1256+W13*G1356+W23*G2356+H56 H66=W12*G1266+W13*G1366+W23*G2366+H66 C H11=(W1113*G111+W1213*G121+W2213*G221+W1333*G331)*G131+H11 H12=(W1113*G111+W1213*G121+W2213*G221+W1333*G331)*G132+H12 H22=(W1113*G112+W1213*G122+W2213*G222+W1333*G332)*G132+H22 H13=(W1113*G111+W1213*G121+W2213*G221+W1333*G331)*G133+H13 H23=(W1113*G112+W1213*G122+W2213*G222+W1333*G332)*G133+H23 H33=(W1113*G113+W1213*G123+W2213*G223+W1333*G333)*G133+H33 H14=(W1113*G111+W1213*G121+W2213*G221+W1333*G331)*G134+H14 H24=(W1113*G112+W1213*G122+W2213*G222+W1333*G332)*G134+H24 H34=(W1113*G113+W1213*G123+W2213*G223+W1333*G333)*G134+H34 H44=(W1113*G114+W1213*G124+W2213*G224+W1333*G334)*G134+H44 H15=(W1113*G111+W1213*G121+W2213*G221+W1333*G331)*G135+H15 H25=(W1113*G112+W1213*G122+W2213*G222+W1333*G332)*G135+H25 H35=(W1113*G113+W1213*G123+W2213*G223+W1333*G333)*G135+H35 H45=(W1113*G114+W1213*G124+W2213*G224+W1333*G334)*G135+H45 H55=(W1113*G115+W1213*G125+W2213*G225+W1333*G335)*G135+H55 H16=(W1113*G111+W1213*G121+W2213*G221+W1333*G331)*G136+H16 H26=(W1113*G112+W1213*G122+W2213*G222+W1333*G332)*G136+H26 H36=(W1113*G113+W1213*G123+W2213*G223+W1333*G333)*G136+H36 H46=(W1113*G114+W1213*G124+W2213*G224+W1333*G334)*G136+H46 H56=(W1113*G115+W1213*G125+W2213*G225+W1333*G335)*G136+H56 H66=(W1113*G116+W1213*G126+W2213*G226+W1333*G336)*G136+H66 C H11=(W1113*G111+W1213*G121+W2213*G221+W1333*G331)*G131+H11 H12=(W1113*G112+W1213*G122+W2213*G222+W1333*G332)*G131+H12 H22=(W1113*G112+W1213*G122+W2213*G222+W1333*G332)*G132+H22 H13=(W1113*G113+W1213*G123+W2213*G223+W1333*G333)*G131+H13 H23=(W1113*G113+W1213*G123+W2213*G223+W1333*G333)*G132+H23 H33=(W1113*G113+W1213*G123+W2213*G223+W1333*G333)*G133+H33 H14=(W1113*G114+W1213*G124+W2213*G224+W1333*G334)*G131+H14 H24=(W1113*G114+W1213*G124+W2213*G224+W1333*G334)*G132+H24 H34=(W1113*G114+W1213*G124+W2213*G224+W1333*G334)*G133+H34 H44=(W1113*G114+W1213*G124+W2213*G224+W1333*G334)*G134+H44 H15=(W1113*G115+W1213*G125+W2213*G225+W1333*G335)*G131+H15 H25=(W1113*G115+W1213*G125+W2213*G225+W1333*G335)*G132+H25 H35=(W1113*G115+W1213*G125+W2213*G225+W1333*G335)*G133+H35 H45=(W1113*G115+W1213*G125+W2213*G225+W1333*G335)*G134+H45 H55=(W1113*G115+W1213*G125+W2213*G225+W1333*G335)*G135+H55 H16=(W1113*G116+W1213*G126+W2213*G226+W1333*G336)*G131+H16 H26=(W1113*G116+W1213*G126+W2213*G226+W1333*G336)*G132+H26 H36=(W1113*G116+W1213*G126+W2213*G226+W1333*G336)*G133+H36 H46=(W1113*G116+W1213*G126+W2213*G226+W1333*G336)*G134+H46 H56=(W1113*G116+W1213*G126+W2213*G226+W1333*G336)*G135+H56 H66=(W1113*G116+W1213*G126+W2213*G226+W1333*G336)*G136+H66 C H11=(W1123*G111+W1223*G121+W2223*G221+W2333*G331)*G231+H11 H12=(W1123*G111+W1223*G121+W2223*G221+W2333*G331)*G232+H12 H22=(W1123*G112+W1223*G122+W2223*G222+W2333*G332)*G232+H22 H13=(W1123*G111+W1223*G121+W2223*G221+W2333*G331)*G233+H13 H23=(W1123*G112+W1223*G122+W2223*G222+W2333*G332)*G233+H23 H33=(W1123*G113+W1223*G123+W2223*G223+W2333*G333)*G233+H33 H14=(W1123*G111+W1223*G121+W2223*G221+W2333*G331)*G234+H14 H24=(W1123*G112+W1223*G122+W2223*G222+W2333*G332)*G234+H24 H34=(W1123*G113+W1223*G123+W2223*G223+W2333*G333)*G234+H34 H44=(W1123*G114+W1223*G124+W2223*G224+W2333*G334)*G234+H44 H15=(W1123*G111+W1223*G121+W2223*G221+W2333*G331)*G235+H15 H25=(W1123*G112+W1223*G122+W2223*G222+W2333*G332)*G235+H25 H35=(W1123*G113+W1223*G123+W2223*G223+W2333*G333)*G235+H35 H45=(W1123*G114+W1223*G124+W2223*G224+W2333*G334)*G235+H45 H55=(W1123*G115+W1223*G125+W2223*G225+W2333*G335)*G235+H55 H16=(W1123*G111+W1223*G121+W2223*G221+W2333*G331)*G236+H16 H26=(W1123*G112+W1223*G122+W2223*G222+W2333*G332)*G236+H26 H36=(W1123*G113+W1223*G123+W2223*G223+W2333*G333)*G236+H36 H46=(W1123*G114+W1223*G124+W2223*G224+W2333*G334)*G236+H46 H56=(W1123*G115+W1223*G125+W2223*G225+W2333*G335)*G236+H56 H66=(W1123*G116+W1223*G126+W2223*G226+W2333*G336)*G236+H66 C H11=(W1123*G111+W1223*G121+W2223*G221+W2333*G331)*G231+H11 H12=(W1123*G112+W1223*G122+W2223*G222+W2333*G332)*G231+H12 H22=(W1123*G112+W1223*G122+W2223*G222+W2333*G332)*G232+H22 H13=(W1123*G113+W1223*G123+W2223*G223+W2333*G333)*G231+H13 H23=(W1123*G113+W1223*G123+W2223*G223+W2333*G333)*G232+H23 H33=(W1123*G113+W1223*G123+W2223*G223+W2333*G333)*G233+H33 H14=(W1123*G114+W1223*G124+W2223*G224+W2333*G334)*G231+H14 H24=(W1123*G114+W1223*G124+W2223*G224+W2333*G334)*G232+H24 H34=(W1123*G114+W1223*G124+W2223*G224+W2333*G334)*G233+H34 H44=(W1123*G114+W1223*G124+W2223*G224+W2333*G334)*G234+H44 H15=(W1123*G115+W1223*G125+W2223*G225+W2333*G335)*G231+H15 H25=(W1123*G115+W1223*G125+W2223*G225+W2333*G335)*G232+H25 H35=(W1123*G115+W1223*G125+W2223*G225+W2333*G335)*G233+H35 H45=(W1123*G115+W1223*G125+W2223*G225+W2333*G335)*G234+H45 H55=(W1123*G115+W1223*G125+W2223*G225+W2333*G335)*G235+H55 H16=(W1123*G116+W1223*G126+W2223*G226+W2333*G336)*G231+H16 H26=(W1123*G116+W1223*G126+W2223*G226+W2333*G336)*G232+H26 H36=(W1123*G116+W1223*G126+W2223*G226+W2333*G336)*G233+H36 H46=(W1123*G116+W1223*G126+W2223*G226+W2333*G336)*G234+H46 H56=(W1123*G116+W1223*G126+W2223*G226+W2333*G336)*G235+H56 H66=(W1123*G116+W1223*G126+W2223*G226+W2333*G336)*G236+H66 C H11=W1323*(G131*G231+G131*G231)+H11 H12=W1323*(G131*G232+G132*G231)+H12 H22=W1323*(G132*G232+G132*G232)+H22 H13=W1323*(G131*G233+G133*G231)+H13 H23=W1323*(G132*G233+G133*G232)+H23 H33=W1323*(G133*G233+G133*G233)+H33 H14=W1323*(G131*G234+G134*G231)+H14 H24=W1323*(G132*G234+G134*G232)+H24 H34=W1323*(G133*G234+G134*G233)+H34 H44=W1323*(G134*G234+G134*G234)+H44 H15=W1323*(G131*G235+G135*G231)+H15 H25=W1323*(G132*G235+G135*G232)+H25 H35=W1323*(G133*G235+G135*G233)+H35 H45=W1323*(G134*G235+G135*G234)+H45 H55=W1323*(G135*G235+G135*G235)+H55 H16=W1323*(G131*G236+G136*G231)+H16 H26=W1323*(G132*G236+G136*G232)+H26 H36=W1323*(G133*G236+G136*G233)+H36 H46=W1323*(G134*G236+G136*G234)+H46 H56=W1323*(G135*G236+G136*G235)+H56 H66=W1323*(G136*G236+G136*G236)+H66 END IF END IF RETURN END C C======================================================================= C SUBROUTINE GAA(A,P1,P2,P3, * G11,G22,G33,E11,E21,E31,E12,E22,E32,E13,E23,E33) C Subroutine calculating the eigenvalues and eigenvectors of the C Christoffel matrix. C C ENTRY GABX(A,P1,P2,P3,E1A,E2A,E3A,E1B,E2B,E3B,GAB1,GAB2,GAB3) C Subroutine calculating the first spatial derivatives of the C Christoffel matrix. C C ENTRY GABP(H,E1A,E2A,E3A,E1B,E2B,E3B,GAB4,GAB5,GAB6) C Subroutine calculating the first partial derivatives of the C Christoffel matrix with respect to the slowness vector. C C ENTRY GAAXX(A,P1,P2,P3,E1A,E2A,E3A, C * GAB11,GAB12,GAB22,GAB13,GAB23,GAB33) C Subroutine calculating the second spatial derivatives of the C diagonal elements of the Christoffel matrix. C C ENTRY GAAXP(A,P1,P2,P3,E1A,E2A,E3A, C * GAB14,GAB24,GAB34,GAB15,GAB25,GAB35,GAB16,GAB26,GAB36) C Subroutine calculating the second mixed derivatives of the C diagonal elements of the Christoffel matrix. C C ENTRY GAAPP(E1A,E2A,E3A,GAB44,GAB45,GAB55,GAB46,GAB56,GAB66) C Subroutine calculating the second slowness derivatives of the C diagonal elements of the Christoffel matrix. C C ENTRY GABXX(A,P1,P2,P3,E1A,E2A,E3A,E1B,E2B,E3B, C * GAB11,GAB12,GAB22,GAB13,GAB23,GAB33) C Subroutine calculating the second spatial derivatives of the C off-diagonal elements of the Christoffel matrix. C C ENTRY GABXP(A,P1,P2,P3,E1A,E2A,E3A,E1B,E2B,E3B, C * GAB14,GAB24,GAB34,GAB15,GAB25,GAB35,GAB16,GAB26,GAB36) C Subroutine calculating the second mixed derivatives of the C off-diagonal elements of the Christoffel matrix. C C ENTRY GABPP(E1A,E2A,E3A,E1B,E2B,E3B, c * GAB44,GAB45,GAB55,GAB46,GAB56,GAB66) C Subroutine calculating the second slowness derivatives of the C off-diagonal elements of the Christoffel matrix. C REAL A(10,21),H,P1,P2,P3,E1A,E2A,E3A,E1B,E2B,E3B REAL G11,G22,G33,E11,E21,E31,E12,E22,E32,E13,E23,E33 REAL GAB1,GAB2,GAB3,GAB4,GAB5,GAB6 REAL GAB11,GAB12,GAB22,GAB13,GAB23,GAB33 REAL GAB14,GAB24,GAB34,GAB15,GAB25,GAB35,GAB16,GAB26,GAB36 REAL GAB44,GAB45,GAB55,GAB46,GAB56,GAB66 C C Input: C A... Elastic moduli and their first and second spatial C derivatives. C H... Value of the homogeneous Hamiltonian of the second degree C corresponding to the slowness vector before normalization C (division by the square root of the value of the C Hamiltonian). H is used to rescale the quantities C calculated previously by subroutine GAA and used by entry C GAAP. If there is no rescaling of the slowness vector C between invocations of subroutines GAA and GAAP, set H=1. C P1,P2,P3... Slowness vector. C E1A,E2A,E3A... One of the eigenvectors of the Christoffel matrix, C previously calculated by subroutine GAA. C E1B,E2B,E3B... Another eigenvector of the Christoffel matrix. C C Output: C G11,G22,G33... Eigenvalues of the Christoffel matrix. C Eigenvalue G33 corresponds to the P wave. C E11,E21,E31,E12,E22,E32,E13,E23,E33... Eigenvectors of the C Christoffel matrix. C GAB1,GAB2,GAB3,GAB4,GAB5,GAB6... First partial phase-space C derivatives of the Christoffel matrix, multiplied by C the given eigenvectors EA and EB. C GAB11,GAB12,GAB22,GAB13,GAB23,GAB33,GAB14,GAB24,GAB34,GAB15,GAB25, C GAB35,GAB16,GAB26,GAB36,GAB44,GAB45,GAB55,GAB46,GAB56,GAB66... C Second partial phase-space derivatives of derivatives of C the Christoffel matrix, twice multiplied by the given C eigenvector EA, or multiplied by the given eigenvectors EA C and EB. C C Subroutines and external functions required: EXTERNAL EIGEN C EIGEN.. File 'eigen.for'. C C Date: 2015, April 29 C Coded by Ludek Klimes C C----------------------------------------------------------------------- C C Quantities to be saved: C C Elastic moduli A(i,j,k,l): REAL AIJKL(21) SAVE AIJKL REAL A11,A12,A22,A13,A23,A33,A14,A24,A34,A44 REAL A15,A25,A35,A45,A55,A16,A26,A36,A46,A56,A66 REAL A1111 REAL A1122,A2211 REAL A2222 REAL A1133,A3311 REAL A2233,A3322 REAL A3333 REAL A1123,A1132,A2311,A3211 REAL A2223,A2232,A2322,A3222 REAL A3323,A3332,A2333,A3233 REAL A2323,A3223,A2332,A3232 REAL A1113,A1131,A1311,A3111 REAL A2213,A2231,A1322,A3122 REAL A3313,A3331,A1333,A3133 REAL A2313,A3213,A2331,A3231,A1323,A3123,A1332,A3132 REAL A1313,A3113,A1331,A3131 REAL A1112,A1121,A1211,A2111 REAL A2212,A2221,A1222,A2122 REAL A3312,A3321,A1233,A2133 REAL A2312,A3212,A2321,A3221,A1223,A2123,A1232,A2132 REAL A1312,A3112,A1321,A3121,A1213,A2113,A1231,A2131 REAL A1212,A2112,A1221,A2121 EQUIVALENCE (AIJKL( 1),A11,A1111) EQUIVALENCE (AIJKL( 2),A12,A1122,A2211) EQUIVALENCE (AIJKL( 3),A22,A2222) EQUIVALENCE (AIJKL( 4),A13,A1133,A3311) EQUIVALENCE (AIJKL( 5),A23,A2233,A3322) EQUIVALENCE (AIJKL( 6),A33,A3333) EQUIVALENCE (AIJKL( 7),A14,A1123,A1132,A2311,A3211) EQUIVALENCE (AIJKL( 8),A24,A2223,A2232,A2322,A3222) EQUIVALENCE (AIJKL( 9),A34,A3323,A3332,A2333,A3233) EQUIVALENCE (AIJKL(10),A44,A2323,A3223,A2332,A3232) EQUIVALENCE (AIJKL(11),A15,A1113,A1131,A1311,A3111) EQUIVALENCE (AIJKL(12),A25,A2213,A2231,A1322,A3122) EQUIVALENCE (AIJKL(13),A35,A3313,A3331,A1333,A3133) EQUIVALENCE (AIJKL(14),A45,A2313,A3213,A2331,A3231, * A1323,A1332,A3123,A3132) EQUIVALENCE (AIJKL(15),A55,A1313,A3113,A1331,A3131) EQUIVALENCE (AIJKL(16),A16,A1112,A1121,A1211,A2111) EQUIVALENCE (AIJKL(17),A26,A2212,A2221,A1222,A2122) EQUIVALENCE (AIJKL(18),A36,A3312,A3321,A1233,A2133) EQUIVALENCE (AIJKL(19),A46,A2312,A3212,A2321,A3221, * A1223,A1232,A2123,A2132) EQUIVALENCE (AIJKL(20),A56,A1312,A3112,A1321,A3121, * A1213,A1231,A2113,A2131) EQUIVALENCE (AIJKL(21),A66,A1212,A2112,A1221,A2121) C C A(i,j,k)=A(i,j,k,l)*P(l): REAL A111,A211,A311,A121,A221,A321,A131,A231,A331 REAL A112,A212,A312,A122,A222,A322,A132,A232,A332 REAL A113,A213,A313,A123,A223,A323,A133,A233,A333 SAVE A111,A121,A221,A131,A231,A331 SAVE A112,A122,A222,A132,A232,A332 SAVE A113,A123,A223,A133,A233,A333 EQUIVALENCE (A121,A211),(A131,A311),(A231,A321) EQUIVALENCE (A122,A212),(A132,A312),(A232,A322) EQUIVALENCE (A123,A213),(A133,A313),(A233,A323) C C----------------------------------------------------------------------- C C Temporary storage locations: C INTEGER I REAL G(10),E(9),E4A,E5A,E6A,E4B,E5B,E6B,W1,W2,W3,W4,W5,W6 REAL W1A,W2A,W3A,W4A,W5A,W6A,W1B,W2B,W3B,W4B,W5B,W6B REAL W11,W12,W22,W13,W23,W33,W14,W24,W34,W44 REAL W15,W25,W35,W45,W55,W16,W26,W36,W46,W56,W66 C C I... Loop variable. C G... Christoffel matrix, its eigenvalues, or their derivatives. C E... Eigenvectors of the Christoffel matrix. C EA4,EA5,EA6... Copy of a component of the given eigenvector to C clearly arrange the Voigt notation in some equations. C W**... Weighting factors. Indices correspond to Voigt notation. C C----------------------------------------------------------------------- C C SUBROUTINE GAA(A,P1,P2,P3,G11,G22,G33, C * E11,E21,E31,E12,E22,E32,E13,E23,E33) C C Storing the elastic moduli: DO 10 I=1,21 AIJKL(I)=A(1,I) 10 CONTINUE C C Christoffel matrix: A111=A1111*P1+A1112*P2+A1113*P3 A121=A1211*P1+A1212*P2+A1213*P3 A221=A2211*P1+A2212*P2+A2213*P3 A131=A1311*P1+A1312*P2+A1313*P3 A231=A2311*P1+A2312*P2+A2313*P3 A331=A3311*P1+A3312*P2+A3313*P3 A112=A1121*P1+A1122*P2+A1123*P3 A122=A1221*P1+A1222*P2+A1223*P3 A222=A2221*P1+A2222*P2+A2223*P3 A132=A1321*P1+A1322*P2+A1323*P3 A232=A2321*P1+A2322*P2+A2323*P3 A332=A3321*P1+A3322*P2+A3323*P3 A113=A1131*P1+A1132*P2+A1133*P3 A123=A1231*P1+A1232*P2+A1233*P3 A223=A2231*P1+A2232*P2+A2233*P3 A133=A1331*P1+A1332*P2+A1333*P3 A233=A2331*P1+A2332*P2+A2333*P3 A333=A3331*P1+A3332*P2+A3333*P3 G(1)=P1*A111+P2*A211+P3*A311 G(2)=P1*A112+P2*A212+P3*A312 G(3)=P1*A122+P2*A222+P3*A322 G(4)=P1*A113+P2*A213+P3*A313 G(5)=P1*A123+P2*A223+P3*A323 G(6)=P1*A133+P2*A233+P3*A333 C C Eigenvalues and eigenvectors of the Christoffel matrix: CALL EIGEN(G,E,3,0) G33=G(1) G22=G(3) G11=G(6) E13=E(1) E23=E(2) E33=E(3) E12=E(4) E22=E(5) E32=E(6) E11=E(7) E21=E(8) E31=E(9) RETURN C C----------------------------------------------------------------------- C ENTRY GABX(A,P1,P2,P3,E1A,E2A,E3A,E1B,E2B,E3B,GAB1,GAB2,GAB3) C C Subroutine calculating the first spatial derivatives of the C Christoffel matrix. C W1A=E1A*P1 W2A=E2A*P2 W3A=E3A*P3 W4A=E2A*P3+E3A*P2 W5A=E1A*P3+E3A*P1 W6A=E1A*P2+E2A*P1 W1B=E1B*P1 W2B=E2B*P2 W3B=E3B*P3 W4B=E2B*P3+E3B*P2 W5B=E1B*P3+E3B*P1 W6B=E1B*P2+E2B*P1 W11=W1A*W1B W12=W1A*W2B+W1B*W2A W22=W2A*W2B W13=W1A*W3B+W1B*W3A W23=W2A*W3B+W2B*W3A W33=W3A*W3B W14=W1A*W4B+W1B*W4A W24=W2A*W4B+W2B*W4A W34=W3A*W4B+W3B*W4A W44=W4A*W4B W15=W1A*W5B+W1B*W5A W25=W2A*W5B+W2B*W5A W35=W3A*W5B+W3B*W5A W45=W4A*W5B+W4B*W5A W55=W5A*W5B W16=W1A*W6B+W1B*W6A W26=W2A*W6B+W2B*W6A W36=W3A*W6B+W3B*W6A W46=W4A*W6B+W4B*W6A W56=W5A*W6B+W5B*W6A W66=W6A*W6B DO 20 I=2,4 G(I)=W11*A(I, 1)+W12*A(I, 2)+W22*A(I, 3)+W13*A(I, 4)+W23*A(I, 5) * +W33*A(I, 6)+W14*A(I, 7)+W24*A(I, 8)+W34*A(I, 9)+W44*A(I,10) * +W15*A(I,11)+W25*A(I,12)+W35*A(I,13)+W45*A(I,14)+W55*A(I,15) * +W16*A(I,16)+W26*A(I,17)+W36*A(I,18)+W46*A(I,19)+W56*A(I,20) * +W66*A(I,21) 20 CONTINUE GAB1=G(2) GAB2=G(3) GAB3=G(4) RETURN C C----------------------------------------------------------------------- C ENTRY GABP(H,E1A,E2A,E3A,E1B,E2B,E3B,GAB4,GAB5,GAB6) C C Subroutine calculating the first partial derivatives of the C Christoffel matrix with respect to the slowness vector. C W1=SQRT(H) W11=E1A*E1B*2. W12=E1A*E2B+E2A*E1B W22=E2A*E2B*2. W13=E1A*E3B+E3A*E1B W23=E2A*E3B+E3A*E2B W33=E3A*E3B*2. C GAB(i+3)=[A(i,j,k,l)+A(i,k,j,l)]*EA(j)*EB(k)*P(l): GAB4=A111*W11+(A112+A121)*W12+(A113+A131)*W13 * +A122 *W22+(A123+A132)*W23+A133*W33 GAB5=A211*W11+(A212+A221)*W12+(A213+A231)*W13 * +A222 *W22+(A223+A232)*W23+A233*W33 GAB6=A311*W11+(A312+A321)*W12+(A313+A331)*W13 * +A322 *W22+(A323+A332)*W23+A333*W33 GAB4=GAB4/W1 GAB5=GAB5/W1 GAB6=GAB6/W1 RETURN C C----------------------------------------------------------------------- C ENTRY GAAXX(A,P1,P2,P3,E1A,E2A,E3A, * GAB11,GAB12,GAB22,GAB13,GAB23,GAB33) C C Subroutine calculating the spatial derivatives of the Christoffel C matrix. C W1=E1A*P1 W2=E2A*P2 W3=E3A*P3 W4=E2A*P3+E3A*P2 W5=E1A*P3+E3A*P1 W6=E1A*P2+E2A*P1 W11=W1*W1 W12=W1*W2*2. W22=W2*W2 W13=W1*W3*2. W23=W2*W3*2. W33=W3*W3 W14=W1*W4*2. W24=W2*W4*2. W34=W3*W4*2. W44=W4*W4 W15=W1*W5*2. W25=W2*W5*2. W35=W3*W5*2. W45=W4*W5*2. W55=W5*W5 W16=W1*W6*2. W26=W2*W6*2. W36=W3*W6*2. W46=W4*W6*2. W56=W5*W6*2. W66=W6*W6 DO 40 I=5,10 G(I)=W11*A(I, 1)+W12*A(I, 2)+W22*A(I, 3)+W13*A(I, 4)+W23*A(I, 5) * +W33*A(I, 6)+W14*A(I, 7)+W24*A(I, 8)+W34*A(I, 9)+W44*A(I,10) * +W15*A(I,11)+W25*A(I,12)+W35*A(I,13)+W45*A(I,14)+W55*A(I,15) * +W16*A(I,16)+W26*A(I,17)+W36*A(I,18)+W46*A(I,19)+W56*A(I,20) * +W66*A(I,21) 40 CONTINUE GAB11=G(5) GAB12=G(6) GAB22=G(7) GAB13=G(8) GAB23=G(9) GAB33=G(10) RETURN C C----------------------------------------------------------------------- C ENTRY GAAXP(A,P1,P2,P3,E1A,E2A,E3A, * GAB14,GAB24,GAB34,GAB15,GAB25,GAB35,GAB16,GAB26,GAB36) C C Subroutine calculating the mixed derivatives of the Christoffel C matrix. C W1=E1A*P1 W2=E2A*P2 W3=E3A*P3 W4=E2A*P3+E3A*P2 W5=E1A*P3+E3A*P1 W6=E1A*P2+E2A*P1 C E4A=dW4/dPi, E5A=dW5/dPi, E6A=dW6/dPi C C Derivative with respect to P1 (nonzero E1A,E5A,E6A): E5A=E3A E6A=E2A W11=E1A*W1 W12=E1A*W2 W13=E1A*W3 W14=E1A*W4 W15=E1A*W5+E5A*W1 W25=E5A*W2 W35=E5A*W3 W45=E5A*W4 W55=E5A*W5 W16=E1A*W6+E6A*W1 W26=E6A*W2 W36=E6A*W3 W46=E6A*W4 W56=E5A*W6+E6A*W5 W66=E6A*W6 DO 51 I=2,4 G(I)=W11*A(I, 1)+W12*A(I, 2)+W13*A(I, 4)+W14*A(I, 7)+W15*A(I,11) * +W25*A(I,12)+W35*A(I,13)+W45*A(I,14)+W55*A(I,15)+W16*A(I,16) * +W26*A(I,17)+W36*A(I,18)+W46*A(I,19)+W56*A(I,20)+W66*A(I,21) 51 CONTINUE GAB14=2.*G(2) GAB24=2.*G(3) GAB34=2.*G(4) C C Derivative with respect to P2 (nonzero EA2,EA4,EA6): E4A=E3A E6A=E1A W12=E2A*W1 W22=E2A*W2 W23=E2A*W3 W14=E4A*W1 W24=E2A*W4+E4A*W2 W34=E4A*W3 W44=E4A*W4 W25=E2A*W5 W45=E4A*W5 W16=E6A*W1 W26=E2A*W6+E6A*W2 W36=E6A*W3 W46=E4A*W6+E6A*W4 W56=E6A*W5 W66=E6A*W6 DO 52 I=2,4 G(I)=W12*A(I, 2)+W22*A(I, 3)+W23*A(I, 5)+W14*A(I, 7)+W24*A(I, 8) * +W34*A(I, 9)+W44*A(I,10)+W25*A(I,12)+W45*A(I,14)+W16*A(I,16) * +W26*A(I,17)+W36*A(I,18)+W46*A(I,19)+W56*A(I,20)+W66*A(I,21) 52 CONTINUE GAB15=2.*G(2) GAB25=2.*G(3) GAB35=2.*G(4) C C Derivative with respect to P3 (nonzero EA3,EA4,EA5): E4A=E2A E5A=E1A W13=E3A*W1 W23=E3A*W2 W33=E3A*W3 W14=E4A*W1 W24=E4A*W2 W34=E3A*W4+E4A*W3 W44=E4A*W4 W15=E5A*W1 W25=E5A*W2 W35=E3A*W5+E5A*W3 W45=E4A*W5+E5A*W4 W55=E5A*W5 W36=E3A*W6 W46=E4A*W6 W56=E5A*W6 DO 53 I=2,4 G(I)=W13*A(I, 4)+W23*A(I, 5)+W33*A(I, 6)+W14*A(I, 7)+W24*A(I, 8) * +W34*A(I, 9)+W44*A(I,10)+W15*A(I,11)+W25*A(I,12)+W35*A(I,13) * +W45*A(I,14)+W55*A(I,15)+W36*A(I,18)+W46*A(I,19)+W56*A(I,20) 53 CONTINUE GAB16=2.*G(2) GAB26=2.*G(3) GAB36=2.*G(4) RETURN C C----------------------------------------------------------------------- C ENTRY GAAPP(E1A,E2A,E3A,GAB44,GAB45,GAB55,GAB46,GAB56,GAB66) C C Subroutine calculating the slowness derivatives of the Christoffel C matrix. C W11=E1A*E1A*2. W12=E1A*E2A*2. W22=E2A*E2A*2. W13=E1A*E3A*2. W23=E2A*E3A*2. W33=E3A*E3A*2. C GAB(i+3,l+3)=[A(i,j,k,l)+A(i,k,j,l)]*EA(j)*EA(k): GAB44=A1111*W11+(A1121+A1211)*W12+(A1131+A1311)*W13 * +A1221 *W22+(A1231+A1321)*W23+A1331*W33 GAB45=A1112*W11+(A1122+A1212)*W12+(A1132+A1312)*W13 * +A1222 *W22+(A1232+A1322)*W23+A1332*W33 GAB55=A2112*W11+(A2122+A2212)*W12+(A2132+A2312)*W13 * +A2222 *W22+(A2232+A2322)*W23+A2332*W33 GAB46=A1113*W11+(A1123+A1213)*W12+(A1133+A1313)*W13 * +A1223 *W22+(A1233+A1323)*W23+A1333*W33 GAB56=A2113*W11+(A2123+A2213)*W12+(A2133+A2313)*W13 * +A2223 *W22+(A2233+A2323)*W23+A2333*W33 GAB66=A3113*W11+(A3123+A3213)*W12+(A3133+A3313)*W13 * +A3223 *W22+(A3233+A3323)*W23+A3333*W33 RETURN C C----------------------------------------------------------------------- C ENTRY GABXX(A,P1,P2,P3,E1A,E2A,E3A,E1B,E2B,E3B, * GAB11,GAB12,GAB22,GAB13,GAB23,GAB33) C C Subroutine calculating the spatial derivatives of the Christoffel C matrix. C W1A=E1A*P1 W2A=E2A*P2 W3A=E3A*P3 W4A=E2A*P3+E3A*P2 W5A=E1A*P3+E3A*P1 W6A=E1A*P2+E2A*P1 W1B=E1B*P1 W2B=E2B*P2 W3B=E3B*P3 W4B=E2B*P3+E3B*P2 W5B=E1B*P3+E3B*P1 W6B=E1B*P2+E2B*P1 W11=W1A*W1B W12=W1A*W2B+W1B*W2A W22=W2A*W2B W13=W1A*W3B+W1B*W3A W23=W2A*W3B+W2B*W3A W33=W3A*W3B W14=W1A*W4B+W1B*W4A W24=W2A*W4B+W2B*W4A W34=W3A*W4B+W3B*W4A W44=W4A*W4B W15=W1A*W5B+W1B*W5A W25=W2A*W5B+W2B*W5A W35=W3A*W5B+W3B*W5A W45=W4A*W5B+W4B*W5A W55=W5A*W5B W16=W1A*W6B+W1B*W6A W26=W2A*W6B+W2B*W6A W36=W3A*W6B+W3B*W6A W46=W4A*W6B+W4B*W6A W56=W5A*W6B+W5B*W6A W66=W6A*W6B DO 70 I=5,10 G(I)=W11*A(I, 1)+W12*A(I, 2)+W22*A(I, 3)+W13*A(I, 4)+W23*A(I, 5) * +W33*A(I, 6)+W14*A(I, 7)+W24*A(I, 8)+W34*A(I, 9)+W44*A(I,10) * +W15*A(I,11)+W25*A(I,12)+W35*A(I,13)+W45*A(I,14)+W55*A(I,15) * +W16*A(I,16)+W26*A(I,17)+W36*A(I,18)+W46*A(I,19)+W56*A(I,20) * +W66*A(I,21) 70 CONTINUE GAB11=G(5) GAB12=G(6) GAB22=G(7) GAB13=G(8) GAB23=G(9) GAB33=G(10) RETURN C C----------------------------------------------------------------------- C ENTRY GABXP(A,P1,P2,P3,E1A,E2A,E3A,E1B,E2B,E3B, * GAB14,GAB24,GAB34,GAB15,GAB25,GAB35,GAB16,GAB26,GAB36) C C Subroutine calculating the mixed derivatives of the Christoffel C matrix. C W1A=E1A*P1 W2A=E2A*P2 W3A=E3A*P3 W4A=E2A*P3+E3A*P2 W5A=E1A*P3+E3A*P1 W6A=E1A*P2+E2A*P1 W1B=E1B*P1 W2B=E2B*P2 W3B=E3B*P3 W4B=E2B*P3+E3B*P2 W5B=E1B*P3+E3B*P1 W6B=E1B*P2+E2B*P1 C E4A=dW4A/dPi, E5A=dW5A/dPi, E6A=dW6A/dPi C E4B=dW4B/dPi, E5B=dW5B/dPi, E6B=dW6B/dPi C C Derivative with respect to P1 (nonzero E1A,E5A,E6A,E1B,E5B,E6B): E5A=E3A E6A=E2A E5B=E3B E6B=E2B W11=E1A*W1B+W1A*E1B W12=E1A*W2B+W2A*E1B W13=E1A*W3B+W3A*E1B W14=E1A*W4B+W4A*E1B W15=E1A*W5B+W5A*E1B+E5A*W1B+W1A*E5B W25=E5A*W2B+W2A*E5B W35=E5A*W3B+W3A*E5B W45=E5A*W4B+W4A*E5B W55=E5A*W5B+W5A*E5B W16=E1A*W6B+W6A*E1B+E6A*W1B+W1A*E6B W26=E6A*W2B+W2A*E6B W36=E6A*W3B+W3A*E6B W46=E6A*W4B+W4A*E6B W56=E5A*W6B+W6A*E5B+E6A*W5B+W5A*E6B W66=E6A*W6B+W6A*E6B DO 81 I=2,4 G(I)=W11*A(I, 1)+W12*A(I, 2)+W13*A(I, 4)+W14*A(I, 7)+W15*A(I,11) * +W25*A(I,12)+W35*A(I,13)+W45*A(I,14)+W55*A(I,15)+W16*A(I,16) * +W26*A(I,17)+W36*A(I,18)+W46*A(I,19)+W56*A(I,20)+W66*A(I,21) 81 CONTINUE GAB14=G(2) GAB24=G(3) GAB34=G(4) C C Derivative with respect to P2 (nonzero EA2,EA4,EA6,EB2,EB4,EB6): E4A=E3A E6A=E1A E4B=E3B E6B=E1B W12=E2A*W1B+W1A*E2B W22=E2A*W2B+W2A*E2B W23=E2A*W3B+W3A*E2B W14=E4A*W1B+W1A*E4B W24=E2A*W4B+W4A*E2B+E4A*W2B+W2A*E4B W34=E4A*W3B+W3A*E4B W44=E4A*W4B+W4A*E4B W25=E2A*W5B+W5A*E2B W45=E4A*W5B+W5A*E4B W16=E6A*W1B+W1A*E6B W26=E2A*W6B+W6A*E2B+E6A*W2B+W2A*E6B W36=E6A*W3B+W3A*E6B W46=E4A*W6B+W6A*E4B+E6A*W4B+W4A*E6B W56=E6A*W5B+W5A*E6B W66=E6A*W6B+W6A*E6B DO 82 I=2,4 G(I)=W12*A(I, 2)+W22*A(I, 3)+W23*A(I, 5)+W14*A(I, 7)+W24*A(I, 8) * +W34*A(I, 9)+W44*A(I,10)+W25*A(I,12)+W45*A(I,14)+W16*A(I,16) * +W26*A(I,17)+W36*A(I,18)+W46*A(I,19)+W56*A(I,20)+W66*A(I,21) 82 CONTINUE GAB15=G(2) GAB25=G(3) GAB35=G(4) C C Derivative with respect to P3 (nonzero EA3,EA4,EA5,EB3,EB4,EB5): E4A=E2A E5A=E1A E4B=E2B E5B=E1B W13=E3A*W1B+W1A*E3B W23=E3A*W2B+W2A*E3B W33=E3A*W3B+W3A*E3B W14=E4A*W1B+W1A*E4B W24=E4A*W2B+W2A*E4B W34=E3A*W4B+W4A*E3B+E4A*W3B+W3A*E4B W44=E4A*W4B+W4A*E4B W15=E5A*W1B+W1A*E5B W25=E5A*W2B+W2A*E5B W35=E3A*W5B+W5A*E3B+E5A*W3B+W3A*E5B W45=E4A*W5B+W5A*E4B+E5A*W4B+W4A*E5B W55=E5A*W5B+W5A*E5B W36=E3A*W6B+W6A*E3B W46=E4A*W6B+W6A*E4B W56=E5A*W6B+W6A*E5B DO 83 I=2,4 G(I)=W13*A(I, 4)+W23*A(I, 5)+W33*A(I, 6)+W14*A(I, 7)+W24*A(I, 8) * +W34*A(I, 9)+W44*A(I,10)+W15*A(I,11)+W25*A(I,12)+W35*A(I,13) * +W45*A(I,14)+W55*A(I,15)+W36*A(I,18)+W46*A(I,19)+W56*A(I,20) 83 CONTINUE GAB16=G(2) GAB26=G(3) GAB36=G(4) RETURN C C----------------------------------------------------------------------- C ENTRY GABPP(E1A,E2A,E3A,E1B,E2B,E3B, * GAB44,GAB45,GAB55,GAB46,GAB56,GAB66) C C Subroutine calculating the slowness derivatives of the Christoffel C matrix. C W11=E1A*E1B*2. W12=E1A*E2B+E2A*E1B W22=E2A*E2B*2. W13=E1A*E3B+E3A*E1B W23=E2A*E3B+E3A*E2B W33=E3A*E3B*2. C GAB(i+3,l+3)=[A(i,j,k,l)+A(i,k,j,l)]*EA(j)*EB(k): GAB44=A1111*W11+(A1121+A1211)*W12+(A1131+A1311)*W13 * +A1221 *W22+(A1231+A1321)*W23+A1331*W33 GAB45=A1112*W11+(A1122+A1212)*W12+(A1132+A1312)*W13 * +A1222 *W22+(A1232+A1322)*W23+A1332*W33 GAB55=A2112*W11+(A2122+A2212)*W12+(A2132+A2312)*W13 * +A2222 *W22+(A2232+A2322)*W23+A2332*W33 GAB46=A1113*W11+(A1123+A1213)*W12+(A1133+A1313)*W13 * +A1223 *W22+(A1233+A1323)*W23+A1333*W33 GAB56=A2113*W11+(A2123+A2213)*W12+(A2133+A2313)*W13 * +A2223 *W22+(A2233+A2323)*W23+A2333*W33 GAB66=A3113*W11+(A3123+A3213)*W12+(A3133+A3313)*W13 * +A3223 *W22+(A3233+A3323)*W23+A3333*W33 RETURN END C C======================================================================= C