C
SUBROUTINE SOURCE(lin,lou,MPRINT,MWAVE,MTYPE,az,dcl,AMSOUR,phsour) C SAVE H1,H2,H3,SF DIMENSION IPAR(4),PAR(6),T(3,3),H1(3),H2(3),H3(3),SF(3) COMMON/SOUR/ROS,VPS,VSS COMMON AUXP,AUXS C C RADIATION PATTERNS OF THE SOURCE C C FOR MWAVE.EQ.0, READ THE INPUT DATA FOR RADIATION PATTERNS C FOR MWAVE.NE.0, COMPUTE THE RADIATION PATTERNS C c READ THE INPUT DATA c PI=4.*ATAN(1.) IF(MWAVE.NE.0) GO TO 1 IF(MTYPE.LE.0) RETURN READ(lin,*) IPAR,PAR WRITE(lou,100) IPAR,PAR C C THE RADIATION PATTERN DOES NOT DEPEND ON THE RAY C PARAMETER (MTYPE=0) C 1 IF(MTYPE.LT.0) RETURN AMSOUR=1. PHSOUR=0. IF(MTYPE.EQ.0) RETURN C C THE RADIATION PATTERN DEPENDS ON THE RAY PARAMETER C (MTYPE.GT.0) C C COMPUTE THE RADIATION PATTERNS C GO TO (11,21,31),MTYPE C C C.....SINGLE FORCE C 11 CONTINUE IF(MWAVE.NE.0)GO TO 12 AUX1=PAR(2)/(4.*PI*ROS) AUXP=AUX1/(VPS*VPS) AUXS=AUX1/(VSS*VSS) sfaz=PAR(1) sfdc=PAR(3) sf(1)=cos(sfaz)*cos(sfdc) sf(2)=sin(sfaz)*cos(sfdc) sf(3)=sin(sfdc) RETURN C 12 csa=cos(az) sna=sin(az) csdl=cos(dcl) sndl=sin(dcl) if(mwave.lt.3)go to 14 C C P WAVE h3(1)=csa*csdl h3(2)=sna*csdl h3(3)=sndl amsour=0. do 13 i=1,3 amsour=amsour+h3(i)*sf(i) 13 continue AMSOUR=AUXP*amsour GO TO 51 C 14 if(mwave.eq.2)go to 16 c C S1 WAVE h1(1)=csa*sndl h1(2)=sna*sndl h1(3)=-csdl amsour=0. do 15 i=1,3 amsour=amsour+h1(i)*sf(i) 15 continue AMSOUR=AUXS*amsour GO TO 51 C c S2 WAVE 16 h2(1)=-sna h2(2)=csa h2(3)=0. amsour=0. do 17 i=1,3 amsour=amsour+h2(i)*sf(i) 17 continue amsour=auxs*amsour go to 51 C C.....DOUBLE COUPLE C 21 CONTINUE IF(MWAVE.NE.0)GO TO 22 SM=PAR(2) FS=PAR(3) D=PAR(1) AL=PAR(4) SNF=SIN(FS) CSF=COS(FS) SND=SIN(D) CSD=COS(D) SNL=SIN(AL) CSL=COS(AL) A=CSL*CSF+CSD*SNL*SNF B=CSL*SNF-CSD*SNL*CSF C=SNF*SND D=SNL*SND T(1,1)=-2.*A*C T(1,2)=SND*(A*CSF-B*SNF) T(2,1)=T(1,2) T(1,3)=-(A*CSD-C*D) T(3,1)=T(1,3) T(2,2)=2.*SND*csf*b T(2,3)=-(B*CSD+D*SND*CSF) T(3,2)=T(2,3) T(3,3)=2.*D*CSD IF(MPRINT.GE.1)WRITE(lou,102)T AUX1=SM/(4.*PI*ROS) AUXP=AUX1/(VPS*VPS*VPS) AUXS=AUX1/(VSS*VSS*VSS) RETURN C 22 csa=cos(az) sna=sin(az) csdl=cos(dcl) sndl=sin(dcl) h3(1)=csa*csdl h3(2)=sna*csdl h3(3)=sndl IF(MWAVE.lt.3)GO TO 24 C C P WAVE AMSOUR=0. DO 23 I=1,3 DO 23 J=1,3 AMSOUR=AMSOUR+h3(I)*T(I,J)*h3(J) 23 CONTINUE AMSOUR=AUXP*AMSOUR GO TO 51 C C S1 WAVE 24 IF(MWAVE.EQ.2)GO TO 26 h1(1)=csa*sndl h1(2)=sna*sndl h1(3)=-csdl AMSOUR=0. DO 25 I=1,3 DO 25 J=1,3 AMSOUR=AMSOUR+h1(I)*T(I,J)*h3(J) 25 CONTINUE AMSOUR=AUXS*AMSOUR GO TO 51 C C S2 WAVE 26 h2(1)=-sna h2(2)=csa h2(3)=0. amsour=0. do 27 i=1,3 do 27 j=1,3 amsour=amsour+h2(i)*t(i,j)*h3(j) 27 continue amsour=amsour*auxs GO TO 51 C C.....EXPLOSIVE (IMPLOSIVE) SOURCE C 31 CONTINUE IF(MWAVE.NE.0)GO TO 32 AUX1=4.*PI*ROS*VPS*VPS*VPS AUXP=PAR(1)*FLOAT(IPAR(1))/AUX1 RETURN 32 IF(MWAVE.ne.3) GO TO 33 C C P WAVE AMSOUR=AUXP GO TO 51 C C S WAVE 33 AMSOUR=0. PHSOUR=0. RETURN C C 51 PHSOUR=0. 50 IF(AMSOUR)52,53,53 52 AMSOUR=-AMSOUR PHSOUR=PHSOUR-PI C 100 FORMAT(4I5,6F10.5) 101 FORMAT(8F10.5) 102 FORMAT(//2X,3(3E15.5/)) C 53 RETURN END C