重磁实验二.docx
- 文档编号:2441183
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:21
- 大小:215.62KB
重磁实验二.docx
《重磁实验二.docx》由会员分享,可在线阅读,更多相关《重磁实验二.docx(21页珍藏版)》请在冰豆网上搜索。
重磁实验二
《重、磁资料处理与解释》上机实验报告
实验二:
频率域位场处理和转换实验
姓名:
学号:
专业:
地球物理学
指导教师:
王万银、纪晓琳
完成时间:
2017.1.10
目录
1基本原理3
2输入/输出数据格式设计3
2.1输入/输出数据文件名3
2.2重要变量名3
3总体设计4
4测试结果5
5结论及建议6
附录:
源程序代码7
1基本原理
当已知实测平面的异常时,换算场源以外的异常称之为延拓,分为向上延拓和向下延拓。
半空间狄利克莱问题解析解:
其中:
称为延拓因子,为计算面Z坐标,Z轴向下为正方向,为计算面频率域位场,为延拓面的频率域位场。
2输入/输出数据格式设计
2.1输入/输出数据文件名
输入数据和输出数据文件名均保存在“parameter.txt”中。
第一行为输入的低高度观测面数据文件;第二行为输出的高高度观测面数据文件;第三行~第四行依次为输入的扩边比例因子和延拓高度。
A20_mag.grd
A53_mag.grd
1.5
3.3
2.2重要变量名
filename_Field:
低高度观测面数据文件
filename_Conti:
高高度观测面数据文件
Field(m,n):
低高度观测面数据
Conti(m,n):
高高度观测面数据
error:
延拓后的均方误差
factor_x:
扩边比例因子(>1.0)
height:
延拓高度(>0:
向上延拓,<0:
向下延拓)
Factor_Conti:
延拓因子
point:
点数
line:
线数
m:
扩边以后总点数(满足2的幂次方)
n:
扩边以后总线数(满足2的幂次方)
3总体设计
I
输入有关参数:
filename_Field,filename_Conti,factor_x,height
从文件输入有关参数:
point,line
计算有关参数:
m,m1,m2,n,n1,n2
从文件输入有关数据:
xmin,xmax,ymin,ymax,dx,dy,Field
P
进行扩边处理
傅里叶正变换
计算延拓因子
进行乘积运算
傅里叶反变换
O
输出计算结果:
Conti,error
4测试结果
5结论及建议
(1)由高高度观测面位场等值线图(图2)可以看出,向上延拓的效果较好,能清晰地反映磁异常位置,等值线光滑,均方误差仅为1.660418。
(2)与低高度观测(图1)相比,向上延拓3.3m的高高度观测(图2)得到的磁异常幅度有所降低,位场等值线图明显对1、2号这两个局部异常体进行了压制,突出了3号区域异常体。
(3)本次程序设计过程中的一些认识:
扩边参数m,n计算完成后再开辟数组,否则会导致在扩边过程中数组空间不够用;
二维扩边可利用一维扩边子程序,将大大减轻二维的繁琐程度;
对老师提供的FFT和计算圆频率的子程序要理解输入/输出参数的含义并灵活运用;
理解延拓因子的计算公式中各个参量的含义才能进行程序实现;
最大的感受就是在一开始虽然对整体的程序流程有了大致的把握,但落实到具体的程序编写时却发现了对各种细节理解的偏颇之处,正所谓纸上谈兵就是如此吧,只有在实践中才能真正地理解和提升。
附录:
源程序代码
!
******************************************************************c
!
!
功能:
频率域位场延拓
!
!
文件参数说明:
!
filename_Field:
低高度观测面数据文件
!
filename_Conti:
高高度观测面数据文件
!
!
输入参数说明:
!
factor_x:
扩边比例因子(>1.0)
!
height:
延拓高度(>0:
向上延拓,<0:
向下延拓)
!
point:
点数
!
line:
线数
!
xmin,xmax:
点坐标的最大值,最小值
!
ymin,ymax:
线坐标的最大值,最小值
!
dx:
x方向点距
!
dy:
y方向线距
!
!
扩边参数说明:
!
m1,m2:
实际数据起点位置和终点位置(m2-m1+1=point)
!
m:
扩边以后总点数(满足2的幂次方)
!
n1,n2:
实际数据起点位置和终点位置(n2-n1+1=line)
!
n:
扩边以后总线数(满足2的幂次方)
!
!
输入数据说明:
!
Field(m,n):
低高度观测面数据
!
Freal(m,n):
低高度观测面数据数据实部
!
Fimage(m,n):
低高度观测面数据数据虚部
!
!
延拓参数说明:
!
U(m):
x方向对应的圆频率
!
V(n):
y方向对应的圆频率
!
W(m,n):
径向圆频率
!
Factor_Conti:
延拓因子
!
!
输出数据说明:
!
Conti(m,n):
高高度观测面数据
!
Creal(m,n):
高高度观测面数据数据实部
!
Cimage(m,n):
高高度观测面数据数据虚部
!
error:
延拓后的均方误差
!
------------------------------------------------------------------c
ProgramPotenConti
implicitnone
character*(80)filename_Field,filename_Conti
realfactor_x,height
integerpoint,line
realxmin,xmax,ymin,ymax,dx,dy
integerm,m1,m2,n,n1,n2
realerror
real,allocatable:
:
Field(:
:
),Freal(:
:
),Fimage(:
:
)
real,allocatable:
:
Conti(:
:
),Creal(:
:
),Cimage(:
:
)
real,allocatable:
:
U(:
),V(:
),W(:
:
)
real,allocatable:
:
Factor_Conti(:
:
)
!
读取文件名及参数
callGet_parameter(filename_Field,filename_Conti,factor_x,height)
!
读取点线数
callGet_point_line(filename_Field,point,line)
!
计算扩边数据
callGET_M1M2m(point,factor_x,m,m1,m2)
callGET_M1M2m(line,factor_x,n,n1,n2)
!
开辟数组
allocate(Field(1:
m,1:
n),Freal(1:
m,1:
n),Fimage(1:
m,1:
n))
allocate(Conti(1:
m,1:
n),Creal(1:
m,1:
n),Cimage(1:
m,1:
n))
allocate(U(1:
m),V(1:
n),W(1:
m,1:
n))
allocate(Factor_Conti(1:
m,1:
n))
!
读取低高度观测面数据
callInput_Field(filename_Field,m,m1,m2,n,n1,n2,xmin,xmax,ymin,ymax,dx,dy,Field)
!
二维扩边
callExpend_cos_2D(m,m1,m2,n,n1,n2,Field)
!
2DFFT正变换
Freal=Field
Fimage=0.0
callFFT2(Freal,Fimage,m,n,2)
!
计算二维圆频率
callWAVE2(m,n,dx,dy,U,V,W)
!
计算延拓因子
callCalculate_Factor_Conti(m,n,W,height,Factor_Conti)
!
乘以延拓因子
callProduct_Factor_Conti(m,n,Freal,Fimage,Factor_Conti,Creal,Cimage)
!
2DFFT反变换
callFFT2(Creal,Cimage,m,n,1)
!
输出高高度观测面数据
Conti=Creal
callOutput_Conti(filename_Conti,point,line,m,m1,m2,n,n1,n2,xmin,xmax,ymin,ymax,Conti)
!
计算延拓后均方误差
callCalculate_error(m,m1,m2,n,n1,n2,Field,Conti,error)
EndProgramPotenConti
!
读取文件名及参数子程序
SubroutineGet_parameter(filename_Field,filename_Conti,factor_x,height)
implicitnone
character*(*)filename_Field,filename_Conti
realfactor_x,height
open(10,file='parameter.txt',status='old')
read(10,*)filename_Field
read(10,*)filename_Conti
read(10,*)factor_x
read(10,*)height
close(10)
EndSubroutineGet_parameter
!
读取点线数子程序
SubroutineGet_point_line(filename_Field,point,line)
implicitnone
character*(*)filename_Field
integerpoint,line
open(20,file=filename_Field,status='old')
read(20,*)
read(20,*)point,line
close(20)
EndSubroutineGet_point_line
!
******************************************************************c
!
!
功能:
扩边数据位置确定子程序
!
!
输入参数说明:
!
mpoint:
实际数据个数
!
factor_x:
扩边比例因子(>1.0)
!
!
输出参数说明:
!
m1,m2:
实际数据起点位置和终点位置(m2-m1+1=mpoint)
!
m:
扩边以后总点数(满足2的幂次方)
!
------------------------------------------------------------------c
SUBROUTINEGET_M1M2m(mpoint,factor_x,m,m1,m2)
implicitnone
INTEGERmpoint,m,m1,m2
REALfactor_x
integermtemp,mu
mtemp=mpoint
dowhile((mod(mtemp,2).eq.0).and.(mtemp.ne.0))
mtemp=mtemp/2
enddo
if(mtemp.eq.1)then
m=mpoint*2
else
mu=int(log(float(mpoint))/0.693147+factor_x)
m=2**mu
endif
m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)