[cig-commits] commit: add the okada files: dc3d.f and green_space.f90
Mercurial
hg at geodynamics.org
Tue May 8 15:57:13 PDT 2012
changeset: 80:7e49ec0e3c0f
tag: tip
user: Sylvain Barbot <sbarbot at caltech.edu>
date: Tue May 08 15:56:54 2012 -0700
files: examples/tutorials/run1.sh src/okada/dc3d.f src/okada/green_space.f90
description:
add the okada files: dc3d.f and green_space.f90
diff -r 542347c4da42 -r 7e49ec0e3c0f examples/tutorials/run1.sh
--- a/examples/tutorials/run1.sh Tue May 01 16:11:19 2012 -0700
+++ b/examples/tutorials/run1.sh Tue May 08 15:56:54 2012 -0700
@@ -50,14 +50,19 @@
#
# type relax --help to display options.
#
-# modify the number of threads used with
+# modify the number of threads used with all parallel programs in the session with
#
# export OMP_NUM_THREADS=N with sh and ksh shells
#
# or
#
-# setenv OMP_NUM_THREADS N with csh
+# setenv OMP_NUM_THREADS N with csh
#
+# alternatively, alter the number of threads used for the current command line with
+#
+# OMP_NUM_THREADS=N command
+#
+# where N is the desired number of threads.
WDIR=./output1
diff -r 542347c4da42 -r 7e49ec0e3c0f src/okada/dc3d.f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/okada/dc3d.f Tue May 08 15:56:54 2012 -0700
@@ -0,0 +1,665 @@
+ SUBROUTINE DC3D(ALPHA,X,Y,Z,DEPTH,DIP, 04610005
+ * AL1,AL2,AW1,AW2,DISL1,DISL2,DISL3, 04620005
+ * UX,UY,UZ,UXX,UYX,UZX,UXY,UYY,UZY,UXZ,UYZ,UZZ,IRET) 04630005
+ IMPLICIT REAL*8 (A-H,O-Z) 04640005
+ REAL*4 ALPHA,X,Y,Z,DEPTH,DIP,AL1,AL2,AW1,AW2,DISL1,DISL2,DISL3, 04650005
+ * UX,UY,UZ,UXX,UYX,UZX,UXY,UYY,UZY,UXZ,UYZ,UZZ,EPS 04660005
+C 04670005
+C******************************************************************** 04680005
+C***** ***** 04690005
+C***** DISPLACEMENT AND STRAIN AT DEPTH ***** 04700005
+C***** DUE TO BURIED FINITE FAULT IN A SEMIINFINITE MEDIUM ***** 04710005
+C***** CODED BY Y.OKADA ... SEP.1991 ***** 04720005
+C***** REVISED ... NOV.1991, APR.1992, MAY.1993, ***** 04730005
+C***** JUL.1993 ***** 04740005
+C******************************************************************** 04750005
+C 04760005
+C***** INPUT 04770005
+C***** ALPHA : MEDIUM CONSTANT (LAMBDA+MYU)/(LAMBDA+2*MYU) 04780005
+C***** X,Y,Z : COORDINATE OF OBSERVING POINT 04790005
+C***** DEPTH : DEPTH OF REFERENCE POINT 04800005
+C***** DIP : DIP-ANGLE (DEGREE) 04810005
+C***** AL1,AL2 : FAULT LENGTH RANGE 04820005
+C***** AW1,AW2 : FAULT WIDTH RANGE 04830005
+C***** DISL1-DISL3 : STRIKE-, DIP-, TENSILE-DISLOCATIONS 04840005
+C 04850005
+C***** OUTPUT 04860005
+C***** UX, UY, UZ : DISPLACEMENT ( UNIT=(UNIT OF DISL) 04870005
+C***** UXX,UYX,UZX : X-DERIVATIVE ( UNIT=(UNIT OF DISL) / 04880005
+C***** UXY,UYY,UZY : Y-DERIVATIVE (UNIT OF X,Y,Z,DEPTH,AL,AW) )04890005
+C***** UXZ,UYZ,UZZ : Z-DERIVATIVE 04900005
+C***** IRET : RETURN CODE ( =0....NORMAL, =1....SINGULAR ) 04910005
+C 04920005
+ COMMON /C0/DUMMY(5),SD,CD,dumm(5) 04930005
+ DIMENSION XI(2),ET(2),KXI(2),KET(2) 04940005
+ DIMENSION U(12),DU(12),DUA(12),DUB(12),DUC(12) 04950005
+ DATA F0,EPS/ 0.D0, 1.D-6 / 04960005
+C----- 04970005
+ IF(Z.GT.0.) WRITE(*,'('' ** POSITIVE Z WAS GIVEN IN SUB-DC3D'')') 04980005
+ DO 111 I=1,12 04990005
+ U (I)=F0 05000005
+ DUA(I)=F0 05010005
+ DUB(I)=F0 05020005
+ DUC(I)=F0 05030005
+ 111 CONTINUE 05040005
+ AALPHA=ALPHA 05050005
+ DDIP=DIP 05060005
+ CALL DCCON0(AALPHA,DDIP) 05070005
+C----- 05080005
+ ZZ=Z 05090005
+ DD1=DISL1 05100005
+ DD2=DISL2 05110005
+ DD3=DISL3 05120005
+ XI(1)=X-AL1 05130005
+ XI(2)=X-AL2 05140005
+ IF(DABS(XI(1)).LT.EPS) XI(1)=F0 05150005
+ IF(DABS(XI(2)).LT.EPS) XI(2)=F0 05160005
+C====================================== 05170005
+C===== REAL-SOURCE CONTRIBUTION ===== 05180005
+C====================================== 05190005
+ D=DEPTH+Z 05200005
+ P=Y*CD+D*SD 05210005
+ Q=Y*SD-D*CD 05220005
+ ET(1)=P-AW1 05230005
+ ET(2)=P-AW2 05240005
+ IF(DABS(Q).LT.EPS) Q=F0 05250005
+ IF(DABS(ET(1)).LT.EPS) ET(1)=F0 05260005
+ IF(DABS(ET(2)).LT.EPS) ET(2)=F0 05270005
+C-------------------------------- 05280005
+C----- REJECT SINGULAR CASE ----- 05290005
+C-------------------------------- 05300005
+C----- ON FAULT EDGE 05310014
+ IF(Q.EQ.F0 05320014
+ * .AND.( (XI(1)*XI(2).LE.F0 .AND. ET(1)*ET(2).EQ.F0) 05330014
+ * .OR.(ET(1)*ET(2).LE.F0 .AND. XI(1)*XI(2).EQ.F0) )) 05340014
+ * GO TO 99 05350005
+C----- ON NEGATIVE EXTENSION OF FAULT EDGE 05360014
+ KXI(1)=0 05370005
+ KXI(2)=0 05380005
+ KET(1)=0 05390005
+ KET(2)=0 05400005
+ R12=DSQRT(XI(1)*XI(1)+ET(2)*ET(2)+Q*Q) 05410005
+ R21=DSQRT(XI(2)*XI(2)+ET(1)*ET(1)+Q*Q) 05420005
+ R22=DSQRT(XI(2)*XI(2)+ET(2)*ET(2)+Q*Q) 05430005
+ IF(XI(1).LT.F0 .AND. R21+XI(2).LT.EPS) KXI(1)=1 05440011
+ IF(XI(1).LT.F0 .AND. R22+XI(2).LT.EPS) KXI(2)=1 05450011
+ IF(ET(1).LT.F0 .AND. R12+ET(2).LT.EPS) KET(1)=1 05460011
+ IF(ET(1).LT.F0 .AND. R22+ET(2).LT.EPS) KET(2)=1 05470011
+C===== 05480015
+ DO 223 K=1,2 05490005
+ DO 222 J=1,2 05500005
+ CALL DCCON2(XI(J),ET(K),Q,SD,CD,KXI(K),KET(J)) 05510014
+ CALL UA(XI(J),ET(K),Q,DD1,DD2,DD3,DUA) 05520005
+C----- 05530005
+ DO 220 I=1,10,3 05540005
+ DU(I) =-DUA(I) 05550005
+ DU(I+1)=-DUA(I+1)*CD+DUA(I+2)*SD 05560005
+ DU(I+2)=-DUA(I+1)*SD-DUA(I+2)*CD 05570005
+ IF(I.LT.10) GO TO 220 05580005
+ DU(I) =-DU(I) 05590005
+ DU(I+1)=-DU(I+1) 05600005
+ DU(I+2)=-DU(I+2) 05610005
+ 220 CONTINUE 05620005
+ DO 221 I=1,12 05630005
+ IF(J+K.NE.3) U(I)=U(I)+DU(I) 05640005
+ IF(J+K.EQ.3) U(I)=U(I)-DU(I) 05650005
+ 221 CONTINUE 05660005
+C----- 05670005
+ 222 CONTINUE 05680005
+ 223 CONTINUE 05690005
+C======================================= 05700005
+C===== IMAGE-SOURCE CONTRIBUTION ===== 05710005
+C======================================= 05720005
+ D=DEPTH-Z 05730005
+ P=Y*CD+D*SD 05740005
+ Q=Y*SD-D*CD 05750005
+ ET(1)=P-AW1 05760005
+ ET(2)=P-AW2 05770005
+ IF(DABS(Q).LT.EPS) Q=F0 05780005
+ IF(DABS(ET(1)).LT.EPS) ET(1)=F0 05790005
+ IF(DABS(ET(2)).LT.EPS) ET(2)=F0 05800005
+C-------------------------------- 05810005
+C----- REJECT SINGULAR CASE ----- 05820005
+C-------------------------------- 05830005
+C----- ON FAULT EDGE 05840015
+ IF(Q.EQ.F0 05850015
+ * .AND.( (XI(1)*XI(2).LE.F0 .AND. ET(1)*ET(2).EQ.F0) 05860015
+ * .OR.(ET(1)*ET(2).LE.F0 .AND. XI(1)*XI(2).EQ.F0) )) 05870015
+ * GO TO 99 05880015
+C----- ON NEGATIVE EXTENSION OF FAULT EDGE 05890015
+ KXI(1)=0 05900005
+ KXI(2)=0 05910005
+ KET(1)=0 05920005
+ KET(2)=0 05930005
+ R12=DSQRT(XI(1)*XI(1)+ET(2)*ET(2)+Q*Q) 05940005
+ R21=DSQRT(XI(2)*XI(2)+ET(1)*ET(1)+Q*Q) 05950005
+ R22=DSQRT(XI(2)*XI(2)+ET(2)*ET(2)+Q*Q) 05960005
+ IF(XI(1).LT.F0 .AND. R21+XI(2).LT.EPS) KXI(1)=1 05970011
+ IF(XI(1).LT.F0 .AND. R22+XI(2).LT.EPS) KXI(2)=1 05980011
+ IF(ET(1).LT.F0 .AND. R12+ET(2).LT.EPS) KET(1)=1 05990011
+ IF(ET(1).LT.F0 .AND. R22+ET(2).LT.EPS) KET(2)=1 06000011
+C===== 06010015
+ DO 334 K=1,2 06020005
+ DO 333 J=1,2 06030005
+ CALL DCCON2(XI(J),ET(K),Q,SD,CD,KXI(K),KET(J)) 06040014
+ CALL UA(XI(J),ET(K),Q,DD1,DD2,DD3,DUA) 06050005
+ CALL UB(XI(J),ET(K),Q,DD1,DD2,DD3,DUB) 06060005
+ CALL UC(XI(J),ET(K),Q,ZZ,DD1,DD2,DD3,DUC) 06070005
+C----- 06080005
+ DO 330 I=1,10,3 06090005
+ DU(I)=DUA(I)+DUB(I)+Z*DUC(I) 06100005
+ DU(I+1)=(DUA(I+1)+DUB(I+1)+Z*DUC(I+1))*CD 06110005
+ * -(DUA(I+2)+DUB(I+2)+Z*DUC(I+2))*SD 06120005
+ DU(I+2)=(DUA(I+1)+DUB(I+1)-Z*DUC(I+1))*SD 06130005
+ * +(DUA(I+2)+DUB(I+2)-Z*DUC(I+2))*CD 06140005
+ IF(I.LT.10) GO TO 330 06150005
+ DU(10)=DU(10)+DUC(1) 06160005
+ DU(11)=DU(11)+DUC(2)*CD-DUC(3)*SD 06170005
+ DU(12)=DU(12)-DUC(2)*SD-DUC(3)*CD 06180005
+ 330 CONTINUE 06190005
+ DO 331 I=1,12 06200005
+ IF(J+K.NE.3) U(I)=U(I)+DU(I) 06210005
+ IF(J+K.EQ.3) U(I)=U(I)-DU(I) 06220005
+ 331 CONTINUE 06230005
+C----- 06240005
+ 333 CONTINUE 06250005
+ 334 CONTINUE 06260005
+C===== 06270005
+ UX=U(1) 06280005
+ UY=U(2) 06290005
+ UZ=U(3) 06300005
+ UXX=U(4) 06310005
+ UYX=U(5) 06320005
+ UZX=U(6) 06330005
+ UXY=U(7) 06340005
+ UYY=U(8) 06350005
+ UZY=U(9) 06360005
+ UXZ=U(10) 06370005
+ UYZ=U(11) 06380005
+ UZZ=U(12) 06390005
+ IRET=0 06400005
+ RETURN 06410005
+C=========================================== 06420005
+C===== IN CASE OF SINGULAR (ON EDGE) ===== 06430005
+C=========================================== 06440005
+ 99 UX=F0 06450005
+ UY=F0 06460005
+ UZ=F0 06470005
+ UXX=F0 06480005
+ UYX=F0 06490005
+ UZX=F0 06500005
+ UXY=F0 06510005
+ UYY=F0 06520005
+ UZY=F0 06530005
+ UXZ=F0 06540005
+ UYZ=F0 06550005
+ UZZ=F0 06560005
+ IRET=1 06570005
+ RETURN 06580005
+ END 06590005
+ SUBROUTINE UA(XI,ET,Q,DISL1,DISL2,DISL3,U) 06600005
+ IMPLICIT REAL*8 (A-H,O-Z) 06610005
+ DIMENSION U(12),DU(12) 06620005
+C 06630005
+C******************************************************************** 06640005
+C***** DISPLACEMENT AND STRAIN AT DEPTH (PART-A) ***** 06650005
+C***** DUE TO BURIED FINITE FAULT IN A SEMIINFINITE MEDIUM ***** 06660005
+C******************************************************************** 06670005
+C 06680005
+C***** INPUT 06690005
+C***** XI,ET,Q : STATION COORDINATES IN FAULT SYSTEM 06700005
+C***** DISL1-DISL3 : STRIKE-, DIP-, TENSILE-DISLOCATIONS 06710005
+C***** OUTPUT 06720005
+C***** U(12) : DISPLACEMENT AND THEIR DERIVATIVES 06730005
+C 06740005
+ COMMON /C0/ALP1,ALP2,ALP3,ALP4,ALP5,SD,CD,SDSD,CDCD,SDCD,S2D,C2D 06750005
+ COMMON /C2/XI2,ET2,Q2,R,R2,R3,R5,Y,D,TT,ALX,ALE,X11,Y11,X32,Y32, 06760005
+ * EY,EZ,FY,FZ,GY,GZ,HY,HZ 06770005
+ DATA F0,F2,PI2/0.D0,2.D0,6.283185307179586D0/ 06780005
+C----- 06790005
+ DO 111 I=1,12 06800005
+ 111 U(I)=F0 06810005
+ XY=XI*Y11 06820005
+ QX=Q *X11 06830005
+ QY=Q *Y11 06840005
+C====================================== 06850005
+C===== STRIKE-SLIP CONTRIBUTION ===== 06860005
+C====================================== 06870005
+ IF(DISL1.NE.F0) THEN 06880005
+ DU( 1)= TT/F2 +ALP2*XI*QY 06890005
+ DU( 2)= ALP2*Q/R 06900005
+ DU( 3)= ALP1*ALE -ALP2*Q*QY 06910005
+ DU( 4)=-ALP1*QY -ALP2*XI2*Q*Y32 06920005
+ DU( 5)= -ALP2*XI*Q/R3 06930005
+ DU( 6)= ALP1*XY +ALP2*XI*Q2*Y32 06940005
+ DU( 7)= ALP1*XY*SD +ALP2*XI*FY+D/F2*X11 06950005
+ DU( 8)= ALP2*EY 06960005
+ DU( 9)= ALP1*(CD/R+QY*SD) -ALP2*Q*FY 06970005
+ DU(10)= ALP1*XY*CD +ALP2*XI*FZ+Y/F2*X11 06980005
+ DU(11)= ALP2*EZ 06990005
+ DU(12)=-ALP1*(SD/R-QY*CD) -ALP2*Q*FZ 07000005
+ DO 222 I=1,12 07010005
+ 222 U(I)=U(I)+DISL1/PI2*DU(I) 07020005
+ ENDIF 07030005
+C====================================== 07040005
+C===== DIP-SLIP CONTRIBUTION ===== 07050005
+C====================================== 07060005
+ IF(DISL2.NE.F0) THEN 07070005
+ DU( 1)= ALP2*Q/R 07080005
+ DU( 2)= TT/F2 +ALP2*ET*QX 07090005
+ DU( 3)= ALP1*ALX -ALP2*Q*QX 07100005
+ DU( 4)= -ALP2*XI*Q/R3 07110005
+ DU( 5)= -QY/F2 -ALP2*ET*Q/R3 07120005
+ DU( 6)= ALP1/R +ALP2*Q2/R3 07130005
+ DU( 7)= ALP2*EY 07140005
+ DU( 8)= ALP1*D*X11+XY/F2*SD +ALP2*ET*GY 07150005
+ DU( 9)= ALP1*Y*X11 -ALP2*Q*GY 07160005
+ DU(10)= ALP2*EZ 07170005
+ DU(11)= ALP1*Y*X11+XY/F2*CD +ALP2*ET*GZ 07180005
+ DU(12)=-ALP1*D*X11 -ALP2*Q*GZ 07190005
+ DO 333 I=1,12 07200005
+ 333 U(I)=U(I)+DISL2/PI2*DU(I) 07210005
+ ENDIF 07220005
+C======================================== 07230005
+C===== TENSILE-FAULT CONTRIBUTION ===== 07240005
+C======================================== 07250005
+ IF(DISL3.NE.F0) THEN 07260005
+ DU( 1)=-ALP1*ALE -ALP2*Q*QY 07270005
+ DU( 2)=-ALP1*ALX -ALP2*Q*QX 07280005
+ DU( 3)= TT/F2 -ALP2*(ET*QX+XI*QY) 07290005
+ DU( 4)=-ALP1*XY +ALP2*XI*Q2*Y32 07300005
+ DU( 5)=-ALP1/R +ALP2*Q2/R3 07310005
+ DU( 6)=-ALP1*QY -ALP2*Q*Q2*Y32 07320005
+ DU( 7)=-ALP1*(CD/R+QY*SD) -ALP2*Q*FY 07330005
+ DU( 8)=-ALP1*Y*X11 -ALP2*Q*GY 07340005
+ DU( 9)= ALP1*(D*X11+XY*SD) +ALP2*Q*HY 07350005
+ DU(10)= ALP1*(SD/R-QY*CD) -ALP2*Q*FZ 07360005
+ DU(11)= ALP1*D*X11 -ALP2*Q*GZ 07370005
+ DU(12)= ALP1*(Y*X11+XY*CD) +ALP2*Q*HZ 07380005
+ DO 444 I=1,12 07390005
+ 444 U(I)=U(I)+DISL3/PI2*DU(I) 07400005
+ ENDIF 07410005
+ RETURN 07420005
+ END 07430005
+ SUBROUTINE UB(XI,ET,Q,DISL1,DISL2,DISL3,U) 07440005
+ IMPLICIT REAL*8 (A-H,O-Z) 07450005
+ DIMENSION U(12),DU(12) 07460005
+C 07470005
+C******************************************************************** 07480005
+C***** DISPLACEMENT AND STRAIN AT DEPTH (PART-B) ***** 07490005
+C***** DUE TO BURIED FINITE FAULT IN A SEMIINFINITE MEDIUM ***** 07500005
+C******************************************************************** 07510005
+C 07520005
+C***** INPUT 07530005
+C***** XI,ET,Q : STATION COORDINATES IN FAULT SYSTEM 07540005
+C***** DISL1-DISL3 : STRIKE-, DIP-, TENSILE-DISLOCATIONS 07550005
+C***** OUTPUT 07560005
+C***** U(12) : DISPLACEMENT AND THEIR DERIVATIVES 07570005
+C 07580005
+ COMMON /C0/ALP1,ALP2,ALP3,ALP4,ALP5,SD,CD,SDSD,CDCD,SDCD,S2D,C2D 07590005
+ COMMON /C2/XI2,ET2,Q2,R,R2,R3,R5,Y,D,TT,ALX,ALE,X11,Y11,X32,Y32, 07600005
+ * EY,EZ,FY,FZ,GY,GZ,HY,HZ 07610005
+ DATA F0,F1,F2,PI2/0.D0,1.D0,2.D0,6.283185307179586D0/ 07620005
+C----- 07630005
+ RD=R+D 07640005
+ D11=F1/(R*RD) 07650005
+ AJ2=XI*Y/RD*D11 07660005
+ AJ5=-(D+Y*Y/RD)*D11 07670005
+ IF(CD.NE.F0) THEN 07680005
+ IF(XI.EQ.F0) THEN 07690005
+ AI4=F0 07700005
+ ELSE 07710005
+ X=DSQRT(XI2+Q2) 07720005
+ AI4=F1/CDCD*( XI/RD*SDCD 07730005
+ * +F2*DATAN((ET*(X+Q*CD)+X*(R+X)*SD)/(XI*(R+X)*CD)) ) 07740005
+ ENDIF 07750005
+ AI3=(Y*CD/RD-ALE+SD*DLOG(RD))/CDCD 07760005
+ AK1=XI*(D11-Y11*SD)/CD 07770005
+ AK3=(Q*Y11-Y*D11)/CD 07780005
+ AJ3=(AK1-AJ2*SD)/CD 07790005
+ AJ6=(AK3-AJ5*SD)/CD 07800005
+ ELSE 07810005
+ RD2=RD*RD 07820005
+ AI3=(ET/RD+Y*Q/RD2-ALE)/F2 07830005
+ AI4=XI*Y/RD2/F2 07840005
+ AK1=XI*Q/RD*D11 07850005
+ AK3=SD/RD*(XI2*D11-F1) 07860005
+ AJ3=-XI/RD2*(Q2*D11-F1/F2) 07870005
+ AJ6=-Y/RD2*(XI2*D11-F1/F2) 07880005
+ ENDIF 07890005
+C----- 07900005
+ XY=XI*Y11 07910005
+ AI1=-XI/RD*CD-AI4*SD 07920005
+ AI2= DLOG(RD)+AI3*SD 07930005
+ AK2= F1/R+AK3*SD 07940005
+ AK4= XY*CD-AK1*SD 07950005
+ AJ1= AJ5*CD-AJ6*SD 07960005
+ AJ4=-XY-AJ2*CD+AJ3*SD 07970005
+C===== 07980005
+ DO 111 I=1,12 07990005
+ 111 U(I)=F0 08000005
+ QX=Q*X11 08010005
+ QY=Q*Y11 08020005
+C====================================== 08030005
+C===== STRIKE-SLIP CONTRIBUTION ===== 08040005
+C====================================== 08050005
+ IF(DISL1.NE.F0) THEN 08060005
+ DU( 1)=-XI*QY-TT -ALP3*AI1*SD 08070005
+ DU( 2)=-Q/R +ALP3*Y/RD*SD 08080005
+ DU( 3)= Q*QY -ALP3*AI2*SD 08090005
+ DU( 4)= XI2*Q*Y32 -ALP3*AJ1*SD 08100005
+ DU( 5)= XI*Q/R3 -ALP3*AJ2*SD 08110005
+ DU( 6)=-XI*Q2*Y32 -ALP3*AJ3*SD 08120005
+ DU( 7)=-XI*FY-D*X11 +ALP3*(XY+AJ4)*SD 08130005
+ DU( 8)=-EY +ALP3*(F1/R+AJ5)*SD 08140005
+ DU( 9)= Q*FY -ALP3*(QY-AJ6)*SD 08150005
+ DU(10)=-XI*FZ-Y*X11 +ALP3*AK1*SD 08160005
+ DU(11)=-EZ +ALP3*Y*D11*SD 08170005
+ DU(12)= Q*FZ +ALP3*AK2*SD 08180005
+ DO 222 I=1,12 08190005
+ 222 U(I)=U(I)+DISL1/PI2*DU(I) 08200005
+ ENDIF 08210005
+C====================================== 08220005
+C===== DIP-SLIP CONTRIBUTION ===== 08230005
+C====================================== 08240005
+ IF(DISL2.NE.F0) THEN 08250005
+ DU( 1)=-Q/R +ALP3*AI3*SDCD 08260005
+ DU( 2)=-ET*QX-TT -ALP3*XI/RD*SDCD 08270005
+ DU( 3)= Q*QX +ALP3*AI4*SDCD 08280005
+ DU( 4)= XI*Q/R3 +ALP3*AJ4*SDCD 08290005
+ DU( 5)= ET*Q/R3+QY +ALP3*AJ5*SDCD 08300005
+ DU( 6)=-Q2/R3 +ALP3*AJ6*SDCD 08310005
+ DU( 7)=-EY +ALP3*AJ1*SDCD 08320005
+ DU( 8)=-ET*GY-XY*SD +ALP3*AJ2*SDCD 08330005
+ DU( 9)= Q*GY +ALP3*AJ3*SDCD 08340005
+ DU(10)=-EZ -ALP3*AK3*SDCD 08350005
+ DU(11)=-ET*GZ-XY*CD -ALP3*XI*D11*SDCD 08360005
+ DU(12)= Q*GZ -ALP3*AK4*SDCD 08370005
+ DO 333 I=1,12 08380005
+ 333 U(I)=U(I)+DISL2/PI2*DU(I) 08390005
+ ENDIF 08400005
+C======================================== 08410005
+C===== TENSILE-FAULT CONTRIBUTION ===== 08420005
+C======================================== 08430005
+ IF(DISL3.NE.F0) THEN 08440005
+ DU( 1)= Q*QY -ALP3*AI3*SDSD 08450005
+ DU( 2)= Q*QX +ALP3*XI/RD*SDSD 08460005
+ DU( 3)= ET*QX+XI*QY-TT -ALP3*AI4*SDSD 08470005
+ DU( 4)=-XI*Q2*Y32 -ALP3*AJ4*SDSD 08480005
+ DU( 5)=-Q2/R3 -ALP3*AJ5*SDSD 08490005
+ DU( 6)= Q*Q2*Y32 -ALP3*AJ6*SDSD 08500005
+ DU( 7)= Q*FY -ALP3*AJ1*SDSD 08510005
+ DU( 8)= Q*GY -ALP3*AJ2*SDSD 08520005
+ DU( 9)=-Q*HY -ALP3*AJ3*SDSD 08530005
+ DU(10)= Q*FZ +ALP3*AK3*SDSD 08540005
+ DU(11)= Q*GZ +ALP3*XI*D11*SDSD 08550005
+ DU(12)=-Q*HZ +ALP3*AK4*SDSD 08560005
+ DO 444 I=1,12 08570005
+ 444 U(I)=U(I)+DISL3/PI2*DU(I) 08580005
+ ENDIF 08590005
+ RETURN 08600005
+ END 08610005
+ SUBROUTINE UC(XI,ET,Q,Z,DISL1,DISL2,DISL3,U) 08620005
+ IMPLICIT REAL*8 (A-H,O-Z) 08630005
+ DIMENSION U(12),DU(12) 08640005
+C 08650005
+C******************************************************************** 08660005
+C***** DISPLACEMENT AND STRAIN AT DEPTH (PART-C) ***** 08670005
+C***** DUE TO BURIED FINITE FAULT IN A SEMIINFINITE MEDIUM ***** 08680005
+C******************************************************************** 08690005
+C 08700005
+C***** INPUT 08710005
+C***** XI,ET,Q,Z : STATION COORDINATES IN FAULT SYSTEM 08720005
+C***** DISL1-DISL3 : STRIKE-, DIP-, TENSILE-DISLOCATIONS 08730005
+C***** OUTPUT 08740005
+C***** U(12) : DISPLACEMENT AND THEIR DERIVATIVES 08750005
+C 08760005
+ COMMON /C0/ALP1,ALP2,ALP3,ALP4,ALP5,SD,CD,SDSD,CDCD,SDCD,S2D,C2D 08770005
+ COMMON /C2/XI2,ET2,Q2,R,R2,R3,R5,Y,D,TT,ALX,ALE,X11,Y11,X32,Y32, 08780005
+ * EY,EZ,FY,FZ,GY,GZ,HY,HZ 08790005
+ DATA F0,F1,F2,F3,PI2/0.D0,1.D0,2.D0,3.D0,6.283185307179586D0/ 08800005
+C----- 08810005
+ C=D+Z 08820005
+ X53=(8.D0*R2+9.D0*R*XI+F3*XI2)*X11*X11*X11/R2 08830005
+ Y53=(8.D0*R2+9.D0*R*ET+F3*ET2)*Y11*Y11*Y11/R2 08840005
+ H=Q*CD-Z 08850005
+ Z32=SD/R3-H*Y32 08860005
+ Z53=F3*SD/R5-H*Y53 08870005
+ Y0=Y11-XI2*Y32 08880005
+ Z0=Z32-XI2*Z53 08890005
+ PPY=CD/R3+Q*Y32*SD 08900005
+ PPZ=SD/R3-Q*Y32*CD 08910005
+ QQ=Z*Y32+Z32+Z0 08920005
+ QQY=F3*C*D/R5-QQ*SD 08930005
+ QQZ=F3*C*Y/R5-QQ*CD+Q*Y32 08940005
+ XY=XI*Y11 08950005
+ QX=Q*X11 08960005
+ QY=Q*Y11 08970005
+ QR=F3*Q/R5 08980005
+ CQX=C*Q*X53 08990005
+ CDR=(C+D)/R3 09000005
+ YY0=Y/R3-Y0*CD 09010005
+C===== 09020005
+ DO 111 I=1,12 09030005
+ 111 U(I)=F0 09040005
+C====================================== 09050005
+C===== STRIKE-SLIP CONTRIBUTION ===== 09060005
+C====================================== 09070005
+ IF(DISL1.NE.F0) THEN 09080005
+ DU( 1)= ALP4*XY*CD -ALP5*XI*Q*Z32 09090005
+ DU( 2)= ALP4*(CD/R+F2*QY*SD) -ALP5*C*Q/R3 09100005
+ DU( 3)= ALP4*QY*CD -ALP5*(C*ET/R3-Z*Y11+XI2*Z32) 09110005
+ DU( 4)= ALP4*Y0*CD -ALP5*Q*Z0 09120005
+ DU( 5)=-ALP4*XI*(CD/R3+F2*Q*Y32*SD) +ALP5*C*XI*QR 09130005
+ DU( 6)=-ALP4*XI*Q*Y32*CD +ALP5*XI*(F3*C*ET/R5-QQ) 09140005
+ DU( 7)=-ALP4*XI*PPY*CD -ALP5*XI*QQY 09150005
+ DU( 8)= ALP4*F2*(D/R3-Y0*SD)*SD-Y/R3*CD 09160005
+ * -ALP5*(CDR*SD-ET/R3-C*Y*QR) 09170005
+ DU( 9)=-ALP4*Q/R3+YY0*SD +ALP5*(CDR*CD+C*D*QR-(Y0*CD+Q*Z0)*SD) 09180005
+ DU(10)= ALP4*XI*PPZ*CD -ALP5*XI*QQZ 09190005
+ DU(11)= ALP4*F2*(Y/R3-Y0*CD)*SD+D/R3*CD -ALP5*(CDR*CD+C*D*QR) 09200005
+ DU(12)= YY0*CD -ALP5*(CDR*SD-C*Y*QR-Y0*SDSD+Q*Z0*CD) 09210005
+ DO 222 I=1,12 09220005
+ 222 U(I)=U(I)+DISL1/PI2*DU(I) 09230005
+ ENDIF 09240005
+C====================================== 09250005
+C===== DIP-SLIP CONTRIBUTION ===== 09260005
+C====================================== 09270005
+ IF(DISL2.NE.F0) THEN 09280005
+ DU( 1)= ALP4*CD/R -QY*SD -ALP5*C*Q/R3 09290005
+ DU( 2)= ALP4*Y*X11 -ALP5*C*ET*Q*X32 09300005
+ DU( 3)= -D*X11-XY*SD -ALP5*C*(X11-Q2*X32) 09310005
+ DU( 4)=-ALP4*XI/R3*CD +ALP5*C*XI*QR +XI*Q*Y32*SD 09320005
+ DU( 5)=-ALP4*Y/R3 +ALP5*C*ET*QR 09330005
+ DU( 6)= D/R3-Y0*SD +ALP5*C/R3*(F1-F3*Q2/R2) 09340005
+ DU( 7)=-ALP4*ET/R3+Y0*SDSD -ALP5*(CDR*SD-C*Y*QR) 09350005
+ DU( 8)= ALP4*(X11-Y*Y*X32) -ALP5*C*((D+F2*Q*CD)*X32-Y*ET*Q*X53) 09360005
+ DU( 9)= XI*PPY*SD+Y*D*X32 +ALP5*C*((Y+F2*Q*SD)*X32-Y*Q2*X53) 09370005
+ DU(10)= -Q/R3+Y0*SDCD -ALP5*(CDR*CD+C*D*QR) 09380005
+ DU(11)= ALP4*Y*D*X32 -ALP5*C*((Y-F2*Q*SD)*X32+D*ET*Q*X53) 09390005
+ DU(12)=-XI*PPZ*SD+X11-D*D*X32-ALP5*C*((D-F2*Q*CD)*X32-D*Q2*X53) 09400005
+ DO 333 I=1,12 09410005
+ 333 U(I)=U(I)+DISL2/PI2*DU(I) 09420005
+ ENDIF 09430005
+C======================================== 09440005
+C===== TENSILE-FAULT CONTRIBUTION ===== 09450005
+C======================================== 09460005
+ IF(DISL3.NE.F0) THEN 09470005
+ DU( 1)=-ALP4*(SD/R+QY*CD) -ALP5*(Z*Y11-Q2*Z32) 09480005
+ DU( 2)= ALP4*F2*XY*SD+D*X11 -ALP5*C*(X11-Q2*X32) 09490005
+ DU( 3)= ALP4*(Y*X11+XY*CD) +ALP5*Q*(C*ET*X32+XI*Z32) 09500005
+ DU( 4)= ALP4*XI/R3*SD+XI*Q*Y32*CD+ALP5*XI*(F3*C*ET/R5-F2*Z32-Z0)09510005
+ DU( 5)= ALP4*F2*Y0*SD-D/R3 +ALP5*C/R3*(F1-F3*Q2/R2) 09520005
+ DU( 6)=-ALP4*YY0 -ALP5*(C*ET*QR-Q*Z0) 09530005
+ DU( 7)= ALP4*(Q/R3+Y0*SDCD) +ALP5*(Z/R3*CD+C*D*QR-Q*Z0*SD) 09540005
+ DU( 8)=-ALP4*F2*XI*PPY*SD-Y*D*X32 09550005
+ * +ALP5*C*((Y+F2*Q*SD)*X32-Y*Q2*X53) 09560005
+ DU( 9)=-ALP4*(XI*PPY*CD-X11+Y*Y*X32) 09570005
+ * +ALP5*(C*((D+F2*Q*CD)*X32-Y*ET*Q*X53)+XI*QQY) 09580005
+ DU(10)= -ET/R3+Y0*CDCD -ALP5*(Z/R3*SD-C*Y*QR-Y0*SDSD+Q*Z0*CD) 09590005
+ DU(11)= ALP4*F2*XI*PPZ*SD-X11+D*D*X32 09600005
+ * -ALP5*C*((D-F2*Q*CD)*X32-D*Q2*X53) 09610005
+ DU(12)= ALP4*(XI*PPZ*CD+Y*D*X32) 09620005
+ * +ALP5*(C*((Y-F2*Q*SD)*X32+D*ET*Q*X53)+XI*QQZ) 09630005
+ DO 444 I=1,12 09640005
+ 444 U(I)=U(I)+DISL3/PI2*DU(I) 09650005
+ ENDIF 09660005
+ RETURN 09670005
+ END 09680005
+ SUBROUTINE DCCON0(ALPHA,DIP) 09690005
+ IMPLICIT REAL*8 (A-H,O-Z) 09700005
+C 09710005
+C******************************************************************* 09720005
+C***** CALCULATE MEDIUM CONSTANTS AND FAULT-DIP CONSTANTS ***** 09730005
+C******************************************************************* 09740005
+C 09750005
+C***** INPUT 09760005
+C***** ALPHA : MEDIUM CONSTANT (LAMBDA+MYU)/(LAMBDA+2*MYU) 09770005
+C***** DIP : DIP-ANGLE (DEGREE) 09780005
+C### CAUTION ### IF COS(DIP) IS SUFFICIENTLY SMALL, IT IS SET TO ZERO 09790005
+C 09800005
+ COMMON /C0/ALP1,ALP2,ALP3,ALP4,ALP5,SD,CD,SDSD,CDCD,SDCD,S2D,C2D 09810005
+ DATA F0,F1,F2,PI2/0.D0,1.D0,2.D0,6.283185307179586D0/ 09820005
+ DATA EPS/1.D-6/ 09830005
+C----- 09840005
+ ALP1=(F1-ALPHA)/F2 09850005
+ ALP2= ALPHA/F2 09860005
+ ALP3=(F1-ALPHA)/ALPHA 09870005
+ ALP4= F1-ALPHA 09880005
+ ALP5= ALPHA 09890005
+C----- 09900005
+ P18=PI2/360.D0 09910005
+ SD=DSIN(DIP*P18) 09920005
+ CD=DCOS(DIP*P18) 09930005
+ IF(DABS(CD).LT.EPS) THEN 09940005
+ CD=F0 09950005
+ IF(SD.GT.F0) SD= F1 09960005
+ IF(SD.LT.F0) SD=-F1 09970005
+ ENDIF 09980005
+ SDSD=SD*SD 09990005
+ CDCD=CD*CD 10000005
+ SDCD=SD*CD 10010005
+ S2D=F2*SDCD 10020005
+ C2D=CDCD-SDSD 10030005
+ RETURN 10040005
+ END 10050005
+ SUBROUTINE DCCON1(X,Y,D) 10060005
+ IMPLICIT REAL*8 (A-H,O-Z) 10070005
+C 10080005
+C********************************************************************** 10090005
+C***** CALCULATE STATION GEOMETRY CONSTANTS FOR POINT SOURCE ***** 10100005
+C********************************************************************** 10110005
+C 10120005
+C***** INPUT 10130005
+C***** X,Y,D : STATION COORDINATES IN FAULT SYSTEM 10140005
+C### CAUTION ### IF X,Y,D ARE SUFFICIENTLY SMALL, THEY ARE SET TO ZERO 10150005
+C 10160005
+ COMMON /C0/DUMMY(5),SD,CD,dumm(5) 10170005
+ COMMON /C1/P,Q,S,T,XY,X2,Y2,D2,R,R2,R3,R5,QR,QRX,A3,A5,B3,C3, 10180005
+ * UY,VY,WY,UZ,VZ,WZ 10190005
+ DATA F0,F1,F3,F5,EPS/0.D0,1.D0,3.D0,5.D0,1.D-6/ 10200005
+C----- 10210005
+ IF(DABS(X).LT.EPS) X=F0 10220005
+ IF(DABS(Y).LT.EPS) Y=F0 10230005
+ IF(DABS(D).LT.EPS) D=F0 10240005
+ P=Y*CD+D*SD 10250005
+ Q=Y*SD-D*CD 10260005
+ S=P*SD+Q*CD 10270005
+ T=P*CD-Q*SD 10280005
+ XY=X*Y 10290005
+ X2=X*X 10300005
+ Y2=Y*Y 10310005
+ D2=D*D 10320005
+ R2=X2+Y2+D2 10330005
+ R =DSQRT(R2) 10340005
+ IF(R.EQ.F0) RETURN 10350005
+ R3=R *R2 10360005
+ R5=R3*R2 10370005
+ R7=R5*R2 10380005
+C----- 10390005
+ A3=F1-F3*X2/R2 10400005
+ A5=F1-F5*X2/R2 10410005
+ B3=F1-F3*Y2/R2 10420005
+ C3=F1-F3*D2/R2 10430005
+C----- 10440005
+ QR=F3*Q/R5 10450005
+ QRX=F5*QR*X/R2 10460005
+C----- 10470005
+ UY=SD-F5*Y*Q/R2 10480005
+ UZ=CD+F5*D*Q/R2 10490005
+ VY=S -F5*Y*P*Q/R2 10500005
+ VZ=T +F5*D*P*Q/R2 10510005
+ WY=UY+SD 10520005
+ WZ=UZ+CD 10530005
+ RETURN 10540005
+ END 10550005
+ SUBROUTINE DCCON2(XI,ET,Q,SD,CD,KXI,KET) 10560005
+ IMPLICIT REAL*8 (A-H,O-Z) 10570005
+C 10580005
+C********************************************************************** 10590005
+C***** CALCULATE STATION GEOMETRY CONSTANTS FOR FINITE SOURCE ***** 10600005
+C********************************************************************** 10610005
+C 10620005
+C***** INPUT 10630005
+C***** XI,ET,Q : STATION COORDINATES IN FAULT SYSTEM 10640005
+C***** SD,CD : SIN, COS OF DIP-ANGLE 10650005
+C***** KXI,KET : KXI=1, KET=1 MEANS R+XI<EPS, R+ET<EPS, RESPECTIVELY 10660005
+C 10670005
+C### CAUTION ### IF XI,ET,Q ARE SUFFICIENTLY SMALL, THEY ARE SET TO ZER010680005
+C 10690005
+ COMMON /C2/XI2,ET2,Q2,R,R2,R3,R5,Y,D,TT,ALX,ALE,X11,Y11,X32,Y32, 10700005
+ * EY,EZ,FY,FZ,GY,GZ,HY,HZ 10710005
+ DATA F0,F1,F2,EPS/0.D0,1.D0,2.D0,1.D-6/ 10720005
+C----- 10730005
+ IF(DABS(XI).LT.EPS) XI=F0 10740005
+ IF(DABS(ET).LT.EPS) ET=F0 10750005
+ IF(DABS( Q).LT.EPS) Q=F0 10760005
+ XI2=XI*XI 10770005
+ ET2=ET*ET 10780005
+ Q2=Q*Q 10790005
+ R2=XI2+ET2+Q2 10800005
+ R =DSQRT(R2) 10810005
+ IF(R.EQ.F0) RETURN 10820005
+ R3=R *R2 10830005
+ R5=R3*R2 10840005
+ Y =ET*CD+Q*SD 10850005
+ D =ET*SD-Q*CD 10860005
+C----- 10870005
+ IF(Q.EQ.F0) THEN 10880005
+ TT=F0 10890005
+ ELSE 10900005
+ TT=DATAN(XI*ET/(Q*R)) 10910005
+ ENDIF 10920005
+C----- 10930005
+ IF(KXI.EQ.1) THEN 10940005
+ ALX=-DLOG(R-XI) 10950005
+ X11=F0 10960005
+ X32=F0 10970005
+ ELSE 10980005
+ RXI=R+XI 10990005
+ ALX=DLOG(RXI) 11000005
+ X11=F1/(R*RXI) 11010005
+ X32=(R+RXI)*X11*X11/R 11020005
+ ENDIF 11030005
+C----- 11040005
+ IF(KET.EQ.1) THEN 11050005
+ ALE=-DLOG(R-ET) 11060005
+ Y11=F0 11070005
+ Y32=F0 11080005
+ ELSE 11090005
+ RET=R+ET 11100005
+ ALE=DLOG(RET) 11110005
+ Y11=F1/(R*RET) 11120005
+ Y32=(R+RET)*Y11*Y11/R 11130005
+ ENDIF 11140005
+C----- 11150005
+ EY=SD/R-Y*Q/R3 11160005
+ EZ=CD/R+D*Q/R3 11170005
+ FY=D/R3+XI2*Y32*SD 11180005
+ FZ=Y/R3+XI2*Y32*CD 11190005
+ GY=F2*X11*SD-Y*Q*X32 11200005
+ GZ=F2*X11*CD+D*Q*X32 11210005
+ HY=D*Q*X32+XI*Q*Y32*SD 11220005
+ HZ=Y*Q*X32+XI*Q*Y32*CD 11230005
+ RETURN 11240005
+ END 11250005
diff -r 542347c4da42 -r 7e49ec0e3c0f src/okada/green_space.f90
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/okada/green_space.f90 Tue May 08 15:56:54 2012 -0700
@@ -0,0 +1,147 @@
+MODULE green_space
+
+ USE elastic3d
+
+ IMPLICIT NONE
+
+#include "../include.f90"
+
+ PRIVATE :: okada
+
+CONTAINS
+
+ !----------------------------------------------------------------------------
+ !> Subroutine Okada
+ !! converts Aki's to Okada's fault representation and evaluates the
+ !! displacement at position (xrec,yrec,zrec) due to a series of faults
+ !! with given slip, lengths, widths, rake, etc...
+ !!
+ !! lambda, mu = the two Lame constants in Pascal (SI unit)
+ !! (xs,ys,zs) = coordinates of the start point of strike
+ !! with x = north, y = east, z = downward.
+ !! all angles in degree.
+ !! (xrec,yrec,zrec) = cartesian coordinates of observations
+ !! disp = 3 displacement components: ux,uy,uz
+ !!
+ !! \author R. Wang - Created, Potsdam, Nov, 2001
+ !! \author S. Barbot (05/07/10) - Updated to Fortran90
+ !----------------------------------------------------------------------------
+ SUBROUTINE okada(lambda,mu,slip,opening,x1,x2,x3, &
+ width,length,strike,dipd,rake, &
+ xrec,yrec,zrec,disp)
+ IMPLICIT NONE
+ REAL*8, INTENT(IN) :: lambda,mu,slip,opening
+ REAL*8, INTENT(IN) :: x1,x2,x3,width,length,strike,dipd,rake
+ REAL*8, INTENT(IN) :: xrec,yrec,zrec
+ REAL*8, INTENT(OUT) :: disp(3)
+
+ ! from Okada's subroutine DC3D0:
+ INTEGER IRET
+ REAL*4 ALPHA,X,Y,Z,DEPTH,DIP,POT1,POT2,POT3,POT4,&
+ UX,UY,UZ,UXX,UYX,UZX,UXY,UYY,UZY,UXZ,UYZ,UZZ
+
+ ! more from Okada's subroutine DC3D:
+ REAL*4 AL1,AL2,AW1,AW2,DISL1,DISL2,DISL3
+
+ ! LOCAL CONSTANTS
+ REAL*8 degtorad,eps
+ PARAMETER(degtorad=1.745329252E-02,eps=1.0d-06)
+
+ INTEGER is
+ REAL*8 st,di,ra
+ REAL*8 csst,ssst,csra,ssra,csdi,ssdi
+
+ ! receiver and source independent variables
+ ALPHA=sngl((lambda+mu)/(lambda+2.d0*mu))
+ POT3=0.0
+ POT4=0.0
+ DISL3=0.0
+ AL1=0.0
+ AW2=0.0
+ Z=-zrec
+
+ ! initialization
+ disp(:)=0.d0
+
+ st=strike*degtorad
+ csst=dcos(st)
+ ssst=dsin(st)
+
+ di=dipd*degtorad
+ csdi=dcos(di)
+ ssdi=dsin(di)
+
+ ra=rake*degtorad
+ csra=dcos(ra)
+ ssra=dsin(ra)
+
+ ! transform from Aki's to Okada's system
+ X=sngl((xrec-x1)*csst+(yrec-x2)*ssst)
+ Y=sngl((xrec-x1)*ssst-(yrec-x2)*csst)
+ DEPTH=sngl(x3)
+ DIP=sngl(dipd)
+
+ ! finite source
+ AL2=sngl(length)
+ AW1=-sngl(width)
+ DISL1=sngl(slip*csra)
+ DISL2=sngl(slip*ssra)
+ DISL3=sngl(opening)
+
+ IRET=1
+ CALL DC3D(ALPHA,X,Y,Z,DEPTH,DIP,AL1,AL2,AW1,AW2, &
+ DISL1,DISL2,DISL3,UX,UY,UZ, &
+ UXX,UYX,UZX,UXY,UYY,UZY,UXZ,UYZ,UZZ,IRET)
+
+ IF (IRET .EQ. 0) THEN
+ ! transform from Okada's to Aki's system
+ disp(1)=disp(1)+dble(UX)*csst+dble(UY)*ssst
+ disp(2)=disp(2)+dble(UX)*ssst-dble(UY)*csst
+ disp(3)=disp(3)-dble(UZ)
+ ELSE
+ ! singular point at fault edge
+ disp=0._8
+ ENDIF
+
+ END SUBROUTINE okada
+
+ !--------------------------------------------------------------------
+ !> subroutine dislocations_okada
+ !! evaluate the deformation due to the motion of dislocation (shear
+ !! and opening)
+ !!
+ !! \author sylvain barbot (05/07/10) - original form
+ !--------------------------------------------------------------------
+ SUBROUTINE grnfct_okada(lambda,mu,slip,opening,x,y,z,width,length, &
+ strike,dip,rake,sx1,sx2,sx3,dx1,dx2,dx3,u1,u2,u3)
+ INTEGER, INTENT(IN) :: sx1,sx2,sx3
+#ifdef ALIGN_DATA
+ REAL*4, DIMENSION(sx1+2,sx2,sx3), INTENT(OUT) :: u1,u2,u3
+#else
+ REAL*4, DIMENSION(sx1,sx2,sx3), INTENT(OUT) :: u1,u2,u3
+#endif
+ REAL*8, INTENT(IN) :: lambda,mu,dx1,dx2,dx3
+ REAL*8, INTENT(IN) :: slip,opening,x,y,z,width,length,strike,dip,rake
+
+ INTEGER :: i1,i2,i3
+ REAL*8 :: dum,x1,x2,x3
+ REAL*8, DIMENSION(3) :: disp
+
+ DO i3=1,sx3
+ x3=DBLE(i3-1)*dx3
+ DO i2=1,sx2
+ DO i1=1,sx1
+ CALL shiftedcoordinates(i1,i2,i3,sx1,sx2,sx3, &
+ dx1,dx2,dx3,x1,x2,dum)
+ CALL okada(lambda,mu,slip,opening,x,y,z, &
+ width,length,strike,dip,rake,x1,x2,x3,disp)
+ u1(i1,i2,i3)=u1(i1,i2,i3)+REAL(disp(1),4)
+ u2(i1,i2,i3)=u2(i1,i2,i3)+REAL(disp(2),4)
+ u3(i1,i2,i3)=u3(i1,i2,i3)+REAL(disp(3),4)
+ END DO
+ END DO
+ END DO
+
+ END SUBROUTINE grnfct_okada
+
+END MODULE green_space
More information about the CIG-COMMITS
mailing list