MAG Tugas
MAG Tugas
DISUSUN OLEH:
YOGYAKARTA
DESEMBER
2016
Tugas 1 : Modifikasi main program untuk membaca data format ASCII dari file
dalam harddisk dibawah menjadi main program dan subprogram.
10
100
100
101
DIMENSION X(2000,24)
CHARACTER(LEN=60) :: NMFILE
NMFILE='D:/MAG1/MULTI_TRACE.TXT'
NJ=2000
ND=24
NJ=500
ND=5
OPEN(UNIT=2,FILE=NMFILE)
DO 10 J=1,NJ
READ(2,100)(X(J,I),I=1,ND)
CONTINUE
FORMAT(32F6.2)
CALL SIMPAN_DATA(DAT,NT,ND,NMFL)
STOP
END
SUBROUTINE SIMPAN_DATA(DAT,NT,ND,NMFL)
DIMENSION DAT(2500,500)
CHARACTER(LEN=60) :: NMFILE
OPEN(UNIT=2,FILE=NMFILE)
DO 100 J=1,NT
WRITE(2,101)(DAT(J,I),I=1,2*ND)
CONTINUE
FORMAT(50F6.2)
CLOSE(2)
RETURN
END
10
20
30
SUBROUTINE KONVO(LX,X,LY,Y,LZ,Z)
DIMENSION X(1000),Y(1000),Z(1000)
LZ=LX+LY-1
DO 10 I=1,LZ
Z(I)=0.0
CONTINUE
DO 30 I=1,LX
DO 20 J=1,LY
K=I+J-1
Z(K)=Z(K)+X(I)*Y(J)
CONTINUE
CONTINUE
RETURN
END
START
LZ=LX+LY-1
DO 10 I=1,LZ
Z(I) = 0.0
DO 30 I=1,LX
DO 20 J=1,LY
K=I+J-1
Z(K)=Z(K)+X(I)*Y(J)
END
10
30
SUBROUTINE RICKER(N,FR,DT,R)
DIMENSION RICK(100),R(100)
PHI=3.14
N1=(N+1)/2
DO 10 I=1,N1
B=(PHI*FR*(I-1)*DT)**2
RICK(I)=(1-2*B)*EXP(-B)
CONTINUE
DO 30 I=1,N1
R(N1+I)=RICK(I)
R(I)=RICK(N1-I+1)
CONTINUE
RETURN
END
START
Baca N,FR,DT,R
Baca dimensi RICK, R
PHI = 3.14
N1=(N+1)/2
DO 10 I=1,N1
B=(PHI*FR*(I-1)*DT)**2
RICK(I)=(1-2*B)*EXP(-B)
DO 30 I=1, N1
R(N1+I)=RICK(I)
R(I)=RICK(N1-I+I)
END
11
13
12
22
23
21
20
100
111
10
20
CHARACTER(LEN=50)::NMFL
NMFL='D:/MAG/Lapisan_Miring_Negatif.TXT'
OPEN(UNIT=2,FILE=NMFL)
DT=0.001
N=55
F=40
CALL RICKER(N,F,DT,R)
V=1250
D0=250
DX=15
L=1500
M=32
ALP=-5.0
ALP=ALP*(3.14/180)
DO 11 I=1,M
D(I)=D0+FLOAT(I-1)*DX*SIN(ALP)
IT(I)=IFIX((2*D(I)/V)/DT)
CONTINUE
DO 12 I=1,M
DO 13 J=1,L
TM(J,I)=0.0
IF(J.EQ.IT(I))TM(IT(I),I)=1.0
CONTINUE
CONTINUE
L=1000
K=N+L-1
DO 21 I=1,M
DO 22 J=1,L
D(J)=TM(J,I)
CONTINUE
CALL KONVO(N,R,L,D,K,TR)
DO 23 J=1,K
TM(J,I)=TR(J)
CONTINUE
CONTINUE
DO 20 J=1,K
WRITE(2,100)(TM(J,I),I=1,M)
CONTINUE
FORMAT(40F10.2)
CONTINUE
STOP
END
SUBROUTINE KONVO(LX,X,LY,Y,LZ,Z)
DIMENSION X(1000),Y(1000),Z(1000)
LZ=LX+LY-1
DO 10 I=1,LZ
Z(I)=0.0
CONTINUE
DO 30 I=1,LX
DO 20 J=1,LY
K=I+J-1
Z(K)=Z(K)+X(I)*Y(J)
CONTINUE
30
10
30
CONTINUE
RETURN
END
SUBROUTINE RICKER(N,FR,DT,R)
DIMENSION RICK(100),R(100)
PHI=3.14
N1=(N+1)/2
DO 10 I=1,N1
B=(PHI*FR*(I-1)*DT)**2
RICK(I)=(1-2*B)*EXP(-B)
CONTINUE
DO 30 I=1,N1
R(N1+I)=RICK(I)
R(I)=RICK(N1-I+1)
CONTINUE
RETURN
END
Untuk menampilkan data pada tugas 4 tersebut, digunakan script MatLab seperti di
bawah ini:
ph = importdata('D:/MAG/Lapisan_Miring_Negatif.txt');
dx=0.0;
tt=0:0.001:3.0;
n=1000;
figure;
for i=1:32
for j=1:n
y(j)=ph(j,i);
end;
hold on;
axis ij;
plot(y(1:n)+dx,tt(1:n));
dx=dx+0.75;
end;
Tugas 5 : Cari dan tulis rumus perhitungan two way time untuk down dip
survey
x 2 +4 ho2
vo
80
10
31
21
20
50
60
40
100
DIMENSION Y(2500,200),NX(500),TX(200),Z(2500)
DIMENSION RC(200),TR(2500),AM(200)
CHARACTER(LEN=60) :: NMFILE
NMFILE='D:/MAG/End_Off_Split.TXT'
DT=0.001
NR=75
FR=40
NJ=2000
ND=24
A=1.0
ALP=10*(3.14/180)
DO 80 I=1,ND
AM(I)=A
A=A-0.025
CONTINUE
V=5000
DX=30
DZ=300
TE=(2*DZ)/V
CALL RICKER(NR,FR,DT,RC)
C DOWN DIP
TX(1)=2*TE
NX(1)=IFIX(TX(1)/DT)
X=0.0
DO 10 I=2,ND
X=X+DX
TX(I)=2*SQRT(TE**2-(TE*X*SIN(ALP)/V)+(X**2/V**2))
NX(I)=IFIX(TX(I)/DT)
CONTINUE
DO 21 I=1,50
DO 31 J=1,NJ
Y(J,I)=0.0
CONTINUE
CONTINUE
DO 20 I=25,2*ND
Y(NX(I-24),I)=AM(I-24)
CONTINUE
DO 40 I=1,2*ND
DO 50 J=1,NJ
Z(J)=Y(J,I)
CONTINUE
CALL KONVO(NJ,Z,NR,RC,JR,TR)
DO 60 J=1,NJ
Y(J,I)=TR(J)
CONTINUE
CONTINUE
OPEN(UNIT=2,FILE=NMFILE)
DO J=1,NJ
WRITE(2,100)(Y(J,I),I=1,2*ND)
FORMAT(50F6.2)
ENDDO
CLOSE(2)
STOP
END
10
20
30
10
30
SUBROUTINE KONVO(LX,X,LY,Y,LZ,Z)
DIMENSION X(1000),Y(1000),Z(1000)
LZ=LX+LY-1
DO 10 I=1,LZ
Z(I)=0.0
CONTINUE
DO 30 I=1,LX
DO 20 J=1,LY
K=I+J-1
Z(K)=Z(K)+X(I)*Y(J)
CONTINUE
CONTINUE
RETURN
END
SUBROUTINE RICKER(N,FR,DT,R)
DIMENSION RICK(100),R(100)
PHI=3.14
N1=(N+1)/2
DO 10 I=1,N1
B=(PHI*FR*(I-1)*DT)**2
RICK(I)=(1-2*B)*EXP(-B)
CONTINUE
DO 30 I=1,N1
R(N1+I)=RICK(I)
R(I)=RICK(N1-I+1)
CONTINUE
RETURN
END
Tugas 7 : Cari
rumus
perhitungan
time untuk up
survey
dan tulis
two way
dip