20 여년전 석사시절에 Ray-Tracing 모형으로 과거 쓰나미 재현한 것인데,
이것도 남아 있는 자료가 거의 없네요. -_-
- How to run the model
allpac.f의 몇몇 variables를 수정하고 run을 시키면 c.bin, dcdf.bin, dcdt.bin의 결과 화일을 얻을 수 있다.
maxlat, maxlon - 위도와 경도의 범위를 간격으로 나눈 값 (nlat, nlon) 보다 크면 됨.
nlat = int((alat1 - alat0)/(latm/60.) + 0.5) + 1
nlon = int((alon1 - alon0)/(lonm/60.) + 0.5) + 1
alon0, alon1, lonm - 주어진 지역의 서쪽과 동쪽의 경도(degree), 경도 간격(minute)
alat0, alat1, latm - 주어진 지역의 남쪽과 북쪽의 위도(degree), 위도 간격(minute)
rtrace.f의 몇몇 variables를 수정하고 run을 시키면 ray2.xy, time.xy의 결과 화일을 얻을 수 있다.
ny, npnt, mazmt, npltsz -
dt, depmin - Delta Time (sec), Minimum Depth (meter)
elat0, elon0 - Tsunami가 일어난 위치
theta0, dthdeg, raynum - theth0에서 부터 dthdeg 간격으로 raynum개의 ray를 추적 (ex. 0, 2, 180)
hstop, hplend, htick -
## Note ### - cread 함수내의 배열 크기를 c.bin에 생성된 크기와 같게 맞춰 줄 것. ###
결과는 c.bin을 color로 그리고 ray2.xy는 line으로 time.xy는 'x'표시로 그리면 된다.
- How to port on Digital Unix v4.0D
allpac.f
allpac에서 읽는 수심 데이타는 ETOPO5의 binary data인데 현재 가지고 있는 etopo5.b가 제대로 읽히지 않아서 다음과 같이 고쳤다.
원래 소스에서는 b_read.c라는 C function으로 binary를 읽고 있는데 Digital Unix는 little_endian이므로 읽으면서 바로 swap을 시켜야 한다. 그래서 여러가지 방법으로 swap을 시켜봤지만 제대로 데이타를 읽지 못해서 이 방법은 포기하고 fortran에서 직접 읽는 방법을 취하였다. 그 방법은 우선 화일을 form='unformatted', access='direct', recl=2160, convert='big_endian'으로 오픈하고 'call b_read(idat)' 부분은 지우고 'read(5,rec=irec) (idat(k),k=1,4320)으로 읽는데 irec의 값은 1부터 2160까지 증가 시켜주면 된다.
그외에는 별로 문제가 없는 것 같으므로 혹시 다른 문제가 있으면 알려 주시면 고맙겠습니다.