APP下载

基于Python和Fortran程序实现瞬变电磁法一维反演软件的设计与开发

2023-10-30孙大利李方舟费靖淇

科学与信息化 2023年20期
关键词:演算法调用反演

孙大利 李方舟 费靖淇

中国地震局第一监测中心 天津 300171

引言

近年来随着城市化的不断发展,城市规模的不断扩大,地上有限的空间资源难以满足人们日常生活、工作的需求。与之相对的地下空间,大部分城市的开发程度还很低,具有广阔的发展前景[1]。地球物理勘探可以有效探测到地下异常信号,通过对异常信号的反演得到地下异常结构分布,用以辅助地质勘查解释,为城市地下空间的科学合理的利用提供保障。

在城市地下空间开发过程中,地下水的分布对工程的进展有着极大的影响,瞬变电磁法是一种地球物理勘探方法,应用于矿产勘探和地下水调查等,对于地下水分布具有良好的反映,但是瞬变电磁法勘探原理较为复杂,数据处理更是专业性强、难度大,需要专业的技术人员进行分析处理,难以普及。针对这一问题,亟须设计和开发一款瞬变电磁法反演软件,实现数据处理流程的自动化,降低应用门槛。目前,主流的编程语言Python具有丰富的标准库,扩展性和可嵌入性强,可以提供简洁的交互界面,用以满足普通用户的使用,但是对于复杂的数值计算执行效率低,占用内存较大,耗时长。而Fortran语言语法格式接近数学公式的自然描述,执行效率高,在数值计算领域运用广泛,可以满足瞬变电磁反演算法的复杂计算。

综上所述,本文基于Python和Fortran语言联合设计开发,核心算法采用瞬变电磁法中心回线系统Occam一维反演算法,使用Fortran语言编写,外部交互界面使用Python语言编写,最后在将两部分衔接形成完整的反演软件,实现自动化处理功能。

1 算法介绍

瞬变电磁法反演算法的核心是构建目标函数,选取最优算法,通过调整搜索策略,使得实际探测数据与理论数据具有较好的拟合度,来到达探测地下电性结构分布特征的目的。Occam反演算法是1987年StevenC.Cconstable首次提出的,由于反演过程是非唯一不确定的,具有多解性,在求解策略上,Occam反演算法通过引入粗糙度,选择模型尽可能简单平滑的解,从而减少对实测数据的过度解释,并且消除简单分成模型中的任意不连续性[2],在保证算法稳定的同时,加快收敛速度,提高处理效率。本文模拟的数据采集装置是中心回线系统,通过移动线圈进行工作,适合城市地下空间探测。

2 软件设计开发

程序主要分为3大部分,包括主程序、Occam反演算法程序和操作程序。

主程序:采用Pyside2内置可执行程序QtDesigner设计界面组件和布局,生成ui文件,然后在主程序中调用PySide2模块中的QtWidgets、QtUiTools、QtCore用于导入ui文件,生成界面窗口、加载界面组件,并初始化事件触发信号和按钮。

Occam反演算法程序:采用Fortran语言编写,使用visual studio编译器生成可执行文件保存到软件所在目录下,等待调用。

操作程序:包括输入部分、运行Fortran程序和输出部分,输入部分调用shutil模块和QUiLoader函数,用于导入实测数据文件,以及将界面内用户输入信息传入相应变量中。运行Fortran程序部分调用subprocess和threading模块,创造子线程调用外部可执行程序。最后输出部分调用numpy、matplotlib模块,将计算后输出数据数组化并绘制折线图[3]。

2.1 基于Fortran语言实现Occam反演算法

电磁法勘探一般实测数据和地下模型之间的关系可以表示为:

反演问题是已知实测数据d反过来求解真实模型空间m,根据Occam反演算法我们需要在求解式中加入正则化项,从而在众多满足数据拟合条件的解中选取最简单光滑的解模型。基于上述原理,可以得到目标函数,同时定义:

式中,d表示实测数据向量,m表示模型参数空间向量,X为期望拟合差,W为对角加权矩阵为拉格朗日乘子,为粗糙度矩阵。

求取目标函数的极小值,即可直接获得此次迭代的新模型:

2.2 基于Pyside2模块开发交互界面

软件交互界面主要框架采用由诺基亚公司开发的Python图形化界面开源库Pyside,所有操作均通过用户界面上创建的相应输入区和按钮完成,主要包括参数设计区、运行日志区和结果输出区。

其中参数设计设置“选择文件”按钮,用于快速导入实际采集到的数据,设置“修改参数”按钮,驱动内部程序根据用户在文本框内输入的内容,修改模型初始化参数;运行日志区会根据用户点击操作实时反馈内部程序运行信息,提示进程并反馈错误操作;结果输出区会根据算法程序得到的反演记过绘制折线图,直观反映地下电性分布结构,同时所在路径下会生成结果文件,输出并保存计算结果。图1展示运行初始化和模型参数加载成功界面。

图1 界面展示

图2 反演结果示例

2.3 实例演示

使用瞬变电磁中心回线装置探测某区域,装置直径10m,电流1A,得到单点的实测数据。使用一维Occam反演软件进行处理,如图4所示,在界面上生成折线图,并将反演数据保存。可以看到经过软件处理后的结果呈现出多层状的分布,代表着地下不同电阻率地层的分布情况,电阻率低的分层是含有地下水的可能性最高,可以作为地下空间开发时的辅助意见。

3 结束语

本文设计的软件,通过简洁的输入模块和直观的输出模块,将复杂的参数调整、核心计算和数据可视化等操作封装在内部模块中,用户只需要进行简单的操作,就可以得到瞬变电磁法探测数据的处理结果,省去了中间专业化的处理,极大地简化了实际操作流程,可以更快更高效的将该方法运用到实际地下空间开发中。通过对实际案例的应用和测试,取得了很好的实践效果。

猜你喜欢

演算法调用反演
反演对称变换在解决平面几何问题中的应用
《四庫全書總目》子部天文演算法、術數類提要獻疑
单多普勒天气雷达非对称VAP风场反演算法
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
基于低频软约束的叠前AVA稀疏层反演
基于自适应遗传算法的CSAMT一维反演
基于系统调用的恶意软件检测技术研究
运动平台下X波段雷达海面风向反演算法
叠前同步反演在港中油田的应用