本文档介绍了针对水平层状大地电结构进行电测深响应正向模拟计算的专用程序,用于地球物理勘探领域。
1DFORWARD.FOR 和 LDFORWARD.FOR 主程序
```fortran
real ps(30), r(20), p(30), h(9), sd(9)
character*50 char, name1, name2
integer nlayer, max
write(*,*)请输入模型文件名:
read(*,*)name1
open(2,file=name1)
write(*,*)请输入视电阻率文件名:
read(*,*)name2
open(1,file=name2)
read(2,*)
read(2,*)nlayer
do i=1,nlayer
read(2,*)p(i)
end do
read(2,*)
do i=1,nlayer-1
read(2,*)h(i)
end do
max = 20
do i=1,max
r(i)=10.* *(i/5.)
end do
call zyld(p,h,nlayer,r ,max,ps)
do i=1,max
write(1,*)r(i),ps(i)
end do
sd(1) = 0.
do i=2,nlayer+1
sd(i)=sd(i-1)+h(i-1)
end do
open(25,file=model.dat)
write(25,*), 1, p(1)
write(25,*), h(1), p(1)
do i=2,nlayer
write(25,*) sd(i), p(i)
write(25,*) sd(i+1), p(i)
end do
write(*,*)模型曲线的文件为model.dat
pause
```
一维正演子程序
```fortran
subroutine zyld(p,h,nl,r,max,ps)
real ps(max), t(nl), ck(20), r(max)
integer nl, max
data ck/0.003042,-0.001198,0.01284, &
0.0235, 0.08688, 0.2374, &
0.6194 , 1.1817,-3.4507, &
-3.4507,2.7044,-1.1324, &
0.393 ,-0.1436, 0.05812 , &
-0.02521, 0.01125,-0.04978, &
0.2072,-3.18/
t(nl) = p(nl)
do i=1,max
ps(i)=0.
do k=1,20
m= 0.11396*10.* *(k/6.) / r(i)
do j=nl-1,1,-1
t(j)=p(j)*((t(j+1)+p(j)+(t(j+1)-p(j))*exp(-2.*m*h(j)))&
/ ((t(j+1)+p(j))-(t(j+1)-p(j))*exp((-2.*m*h(j)))
end do
ps(i) = ps(i)+ t(1)*ck(k)
end do
end do
return
end subroutine zyld
```