高算linux平台如何安装gprmax

刚开始不知道如何下手,用了grok后知道如何操作了。

1准备工具

(1)安装XSHELL +xftp

(2)把 Anoaconda+gprmax下载到本地

(3)用xftp 上传 下载的文件

还有就是学校的可视化桌面

2 XSHELL中进行软件安装

2.1 安装 Anaconda

直接根目录是无法找到安装包

指定我的位置,在007172后面

cd "/storage/public/home/007172/zhangjun"

ls 查看,结果如下

Anaconda3-5.3.1-Linux-x86_64.sh gprMax-master.zip

给安装脚本添加执行权限(保险起见):

chmod +x Anaconda3-5.3.1-Linux-x86_64.sh

运行安装(推荐使用批量模式,避免手动一路回车)

验证效果

1. 手动把 anaconda3 的 bin 目录添加到当前会话的 PATH export PATH=~/anaconda3/bin:$PATH

2. 验证 conda 是否可用 conda --version

在 Xshell 终端中执行以下命令(一步步复制粘贴):

Bash

复制代码
# 1. 手动把 anaconda3 的 bin 目录添加到当前会话的 PATH
export PATH=~/anaconda3/bin:$PATH

# 2. 验证 conda 是否可用
conda --version

如果显示版本号(如 conda 4.x.x),就成功了!这时你可以继续用 conda 创建环境、安装 gprMax 等。

让它永久生效(每次登录都自动加载):

Bash

复制代码
# 把上面那行 export 命令添加到你的 ~/.bashrc 文件末尾
echo 'export PATH=~/anaconda3/bin:$PATH' >> ~/.bashrc

# 立即生效(或下次重连 SSH 自动生效)
source ~/.bashrc

注意 zhangjun这个是我的文件夹,你们的可能不同。

步骤1:进入压缩包所在目录并解压

Bash

复制代码
cd /storage/public/home/007172/zhangjun
ls                    # 确认看到 gprMax-master.zip
unzip gprMax-master.zip

解压后会生成一个文件夹 gprMax-master,里面就是源码。

步骤2:进入解压后的目录

Bash

复制代码
cd gprMax-master
ls                    # 你会看到 conda_env.yml、setup.py 等文件

X步骤3:创建 gprMax 专用 conda 环境(推荐)(不需要)

(经过测试,不需要 进行配置)我走了弯路。如果联网可以

你的 Anaconda 是老版本(Python 3.7),官方最新的 conda_env.yml 可能要求更高 Python 版本,直接用它可能会报错。所以分两种情况:

推荐方式(手动创建环境,兼容性最好)

Bash

复制代码
conda create -n gprMax python=3.7 numpy scipy matplotlib cython h5py colorama tqdm -y

这会创建一个叫 gprMax 的干净环境,安装 gprMax 所需的核心依赖。

报错了

解决:

你的报错是典型的 网络连接问题:conda 无法连接到官方仓库 repo.anaconda.com(错误:Errno -2 Name or service not known,表示域名解析失败或被屏蔽)。

这在国内高性能计算服务器(HPC)上非常常见,因为国外服务器访问慢、超时或被限制。你的 Anaconda 是老版本(5.3.1,2018 年),默认只用官方源,更容易出问题。

解决方案:切换到国内镜像源(清华 TUNA 镜像,速度快、稳定)

在 Xshell 终端中一步步执行以下命令(先确保 conda 可用,如果你之前手动加了 PATH,先执行 export PATH=~/anaconda3/bin:$PATH):

Bash

复制代码
# 1. 移除默认的官方通道(避免继续尝试连接国外源)
conda config --remove-key channels

# 2. 添加清华大学的 Anaconda 镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/

# 3. 显示通道 URL(让 conda 显示用的是哪个源,便于确认)
conda config --set show_channel_urls yes

# 4. (可选)临时禁用 SSL 验证(如果还有 HTTPS 问题)
conda config --set ssl_verify false

现在重新创建 gprMax 环境

Bash

复制代码
# 回到 gprMax-master 目录(如果不在)
cd /storage/public/home/007172/zhangjun/gprMax-master

# 创建环境(用 Python 3.7 兼容你的老 Anaconda)
conda create -n gprMax python=3.7 numpy scipy matplotlib cython h5py colorama tqdm -y

不能上网,无法解决!

不用配置环境

备用方式(尝试官方 yml 文件)

Bash

复制代码
conda env create -f conda_env.yml

如果报 Python 版本不兼容的错误,就直接用上面的推荐方式。

步骤3到上上面都不需要。

2.2 遇到的问题

学校的linux服务器不能联网,无法配置环境。

为什么需要清华、中科大等镜像?

  • 你的服务器无法访问国外默认源(repo.anaconda.com),所以会报 "CONNECTION FAILED" 或域名解析错误。
  • 清华、中科大、阿里云等国内镜像复制了国外源的内容,但放在国内服务器上,访问速度快且稳定。
  • 配置镜像后,conda 就去这些国内地址下载包,而不是去国外被挡的地址。
  • 如果不配置镜像,且服务器又完全无法访问国外网站,就只能走纯离线方式(手动下载包上传)。

不联网,能否配置/创建环境?

可以,但必须手动上传所需的所有包(这就是之前我给你提到的"离线方案")。

因为你的 Anaconda 5.3.1 自带了部分包(如 numpy、scipy、matplotlib 的旧版本可能已经包含),我们可以尽量利用已有的包,只补齐缺失的少数几个,从而减少需要上传的文件数量。

最简化离线安装 gprMax 方案(推荐你现在用这个)

你的 Anaconda 5.3.1(2018 年版)其实已经自带了 gprMax 所需的大部分依赖!我们只需补齐 2-3 个小包即可。

在 Xshell 执行以下命令(全程不联网):

Bash

复制代码
# 1. 确保 conda 可用
export PATH=~/anaconda3/bin:$PATH

# 2. 进入 gprMax 目录
cd /storage/public/home/007172/zhangjun/gprMax-master

# 3. 检查 base 环境里已经有什么包(很可能已经够用)
conda list | grep -E "numpy|scipy|matplotlib|cython|h5py|colorama|tqdm"

运行后你很可能看到:

  • numpy、scipy、matplotlib、cython、h5py 都已经存在(Anaconda 老版本默认带这些)
  • 只缺少 colorama 和 tqdm(这两个很小)

如果缺少 colorama 和 tqdm:

  1. 在你本地有网的电脑下载这两个包(非常小,总共不到 1MB):
  2. 用 Xftp 上传这两个 .whl 文件到服务器(随便放哪)
  3. 在服务器安装:

Bash

复制代码
pip install /路径/to/colorama-0.4.6-py2.py3-none-any.whl
pip install /路径/to/tqdm-4.66.5-py2.py3-none-any.whl

检查结果(所有包都有了)

007172@ln01 zhangjun export PATH=\~/anaconda3/bin:PATH

007172@ln01 zhangjun$ cd /storage/public/home/007172/zhangjun/gprMax-master

007172@ln01 gprMax-master$ conda list | grep -E "numpy|scipy|matplotlib|cython|h5py|colorama|tqdm"

colorama 0.3.9 py37_0 defaults

cython 0.28.5 py37hf484d3e_0 defaults

h5py 2.8.0 py37h989c5e5_3 defaults

matplotlib 2.2.3 py37hb69df0a_0 defaults

numpy 1.15.1 py37h1d66e8a_0 defaults

numpy-base 1.15.1 py37h81de0dd_0 defaults

numpydoc 0.8.0 py37_0 defaults

scipy 1.1.0 py37hfa4b5c9_1 defaults

tqdm 4.26.0 py37h28b3542_0 defaults

从你执行 conda list 的结果来看,gprMax 所需的所有依赖包都已经齐全,而且版本完全兼容(都是 Python 3.7 的):

  • numpy ✓
  • scipy ✓
  • matplotlib ✓
  • cython ✓
  • h5py ✓
  • colorama ✓
  • tqdm ✓

你现在完全不需要联网、不需要上传任何额外包、不需要创建新环境,可以直接安装并运行 gprMax 了!

2.2 gprmax 运行

目前的情况总结:

  • 你已经上传了 gprMax 的压缩包(gprMax-master.zip)并解压了源码。
  • Anaconda 也已经安装好了(conda 命令可用)。
  • gprMax 本身还没有真正"安装"------现在你只有源码文件夹,里面有 setup.py、tests 等文件,但 Python 还不知道怎么调用 gprMax。

只有执行安装步骤后,你才能:

  • 用 python -m gprMax xxx.in 运行模型文件
  • 生成输出(如 .h5、.out 文件)
  • 正常进行 GPR 电磁仿真

你现在只需要完成最后的几步安装(非常简单)

在 Xshell 终端中执行以下命令(假设你之前已经能用 conda):

Bash

复制代码
# 1. 先确保 conda 可用(如果当前会话 conda 命令无效,先运行这行)
export PATH=~/anaconda3/bin:$PATH

# 2. 进入 gprMax 源码目录
cd /storage/public/home/007172/zhangjun/gprMax-master

# 3. 创建一个专用环境(解决之前联网报错的最简单方法:用 base 环境直接安装)
#    因为你服务器无法联网,我们直接在 base 环境安装所需包(你的 Anaconda 自带了很多)
conda install numpy scipy matplotlib cython h5py -y
pip install colorama tqdm   # 这两个小包用 pip 安装,几乎不依赖网络

# 4. 直接安装 gprMax(不需要单独创建新环境)
python setup.py build
python setup.py install

1. 确保在 gprMax-master 目录下(你现在已经在)

pwd # 确认路径是 /storage/public/home/007172/zhangjun/gprMax-master

2. 构建并安装 gprMax

python setup.py build

python setup.py install

从你的安装记录看,gprMax 主程序已经成功安装 (看到了 "Installed ... gprMax-3.1.7-py3.7-linux-x86_64.egg"),但在最后检查依赖时,报错缺少 terminaltables 这个包。

terminaltables 是 gprMax 用来在终端打印漂亮表格的可选依赖 (用于显示进度、模型信息等美化输出),不是核心依赖 。缺少它不会影响 gprMax 的仿真计算和输出结果(.h5、.out 文件照样生成),只会让命令行输出看起来稍丑一些(没有表格边框)。

https://pypi.org/project/terminaltables/?referrer=grok.com#files

本地下载这个库,用xftp上传

可以用下面备用命令强制安装:

Bash

复制代码
pip install --no-index --find-links=. terminaltables-3.1.10.tar.gz

上述不行。

需要下载.whl 文件

在 Xshell 中一步步安装(直接复制粘贴执行)

Bash

复制代码
# 1. 先确保 conda 和 pip 可用
export PATH=~/anaconda3/bin:$PATH

# 2. 进入文件所在目录
cd /storage/public/home/007172/zhangjun

# 3. 确认 whl 文件在那儿
ls | grep terminaltables
# 你应该看到 terminaltables-3.1.10-py2.py3-none-any.whl

# 4. 用 pip 直接安装这个 whl 文件(最简单)
pip install terminaltables-3.1.10-py2.py3-none-any.whl

只是一个无关的警告,它来自系统里某个旧包(twisted)对 PyHamcrest 的依赖要求,但 terminaltables 本身完全不依赖 twisted 或 PyHamcrest,所以这个警告可以完全忽略,不会影响 gprMax 的任何功能。

现在立即测试 gprMax,查看效果

在 Xshell 中执行:

Bash

复制代码
# 确保 conda/pip 可用(保险起见)
export PATH=~/anaconda3/bin:$PATH

# 进入 gprMax 目录
cd /storage/public/home/007172/zhangjun/gprMax-master

# 运行官方测试模型
python -m gprMax tests/cylinder_Bscan_2D.in

5. 立即测试是否成功(最关键的一步!)

Bash

复制代码
python -m gprMax tests/cylinder_Bscan_2D.in
  • 如果看到类似: text

    复制代码
    === Electromagnetic modelling software based on the Finite-Difference Time-Domain (FDTD) method
    ...
    Writing geometry view file...
    Simulation completed...
  • 并生成文件(如 cylinder_Bscan_2D.h5、cylinder_Bscan_2D.out),就说明安装完全成功,以后可以直接跑你自己的模型了!

我没有 cylinder------Bscan------2D.in

但是有其他的:

,benchmarking 文件夹里有从小到大的模型文件,如 bench_100x100x100.in(最小的 100³ 网格,运行几秒钟)。

在 Xshell 中执行:

Bash

复制代码
# 确保 conda 可用
export PATH=~/anaconda3/bin:$PATH

# 进入 gprMax-master 目录
cd /storage/public/home/007172/zhangjun/gprMax-master

# 运行最小的基准模型(加上 -benchmark 模式,会输出性能信息)
python -m gprMax tests/benchmarking/bench_100x100x100.in -benchmark

成功标志

  • 看到漂亮表格(模型信息、网格大小等)
  • 进度条跑到 100%
  • 运行结束,生成 bench_100x100x100.out 文件(用 ls 查看)

测试通过了

成功了! 老张还能继续工作!

结果可以用xftp 下载

以后怎么用(超级简单)

每次想跑 gprMax,只需:

Bash

复制代码
cd 你放模型的目录
python -m gprMax 你的模型文件.in

不需要每次 activate 环境,因为我们直接装在 base 里了。

3 补充运行案例

3.1 仿真路径修改

syl给我发了仿真文件,包括

数据用xftp上传到一个目录

/storage/public/home/007172/zhangjun/gprMax-master/tests/simulate

在.in文件里有相对路径

你的 rail_banjie251222.in 文件中这一行:

text

复制代码
#geometry_objects_read: 0 0 0 E:\SYL\graduate\banjie\banjie251222.h5 E:\SYL\graduate\banjie\materials.txt

用了 Windows 绝对路径(E:...),在 Linux 服务器上完全找不到,必须改成相对路径或服务器上的实际路径。

用 nano 编辑器修改 .in 文件:(这个方法比较笨,直接在xftp用记事本打开修改即可,下面几部就可跳过)

Bash

复制代码
export PATH=~/anaconda3/bin:$PATH
cd /storage/public/home/007172/zhangjun/gprMax-master/tests/simulate

nano rail_banjie251222.in

找到那一行,改成:

text

复制代码
#geometry_objects_read: 0 0 0 banjie251222.h5 materials.txt

意思是:几何文件和材料文件就在当前目录下(.in 文件所在目录)。

保存退出:

  • Ctrl + O → 回车(保存)
  • Ctrl + X(退出)

跳过nano修改,回到正文:

第三步:运行仿真

在同一个目录下运行:

Bash

复制代码
export PATH=~/anaconda3/bin:$PATH
cd /storage/public/home/007172/zhangjun/gprMax-master/tests/simulate

python -m gprMax rail_banjie251222.in

成功标志

  • 看到标题 "rail_banjie"
  • 显示域大小 10×2×0.2 m,分辨率 5 mm,时间窗 20 ns
  • 加载几何文件 banjie251222.h5 和材料(air、zhenmu、stone、dianceng、soil、qingdudubanjie)
  • 显示漂亮表格(材料表、源/接收器等)
  • 进度条从 Model 1/... 开始跑(因为有 src_steps 和 rx_steps 0.05 m,会自动跑多道,形成 B-scan)
  • 最终生成文件:
    • rail_banjie251222.out(文本输出)
    • rail_banjie251222.h5(HDF5 数据,可用于后续成图)
    • 可能还有 geometry 文件 .vti(用 Paraview 看 3D 几何)

耗时5min

但是有报错, 报错原因是网格太大了。(H5文件的网格要修改才能行,否则下面运行报错)

如何消除或减轻这个警告(推荐做法)

你的模型参数:

  • 中心频率:Ricker 波形,频率 2 GHz(#waveform: ricker 1 2e9)
  • 最高介电常数:10(qingdudubanjie)
方案1:最简单(推荐)------ 减小网格尺寸

把 #dx_dy_dz: 0.005 0.005 0.005 改为更细的网格,比如:

text

复制代码
#dx_dy_dz: 0.002 0.002 0.002   # 2 mm 网格

或折中:

text

复制代码
#dx_dy_dz: 0.003 0.003 0.003   # 3 mm 网格

代价:网格数增加 4-8 倍,计算时间和内存显著增加(你的域 10×2×0.2 m,5 mm 网格约 80 万单元,2 mm 网格约 5 百万单元)。

方案2:降低激励频率(保持网格不变)

把波形频率从 2 GHz 降到 1 GHz 或 1.5 GHz:

text

复制代码
#waveform: ricker 1 1.5e9 my_ricker

频率降低,波长变长,相同网格下采样点数增加,色散误差减小。 适合铁路探测(低频穿透深)。

方案3:两者结合

频率降到 1.5 GHz + 网格 3 mm,通常就能把采样点数提高到 10 以上,警告消失。

输出结果:

第四步:查看结果(B-scan 雷达图)

你的模型用了 src_steps 和 rx_steps 0.05 m,应该是跑一个 B-scan(多道剖面)。

跑完后,合并输出(如果没自动合并):

Bash

复制代码
python -m tools.outputfiles_merge rail_banjie251222.out

会生成 rail_banjie251222_merged.h5

然后画 B-scan 图并保存为图片(服务器无 GUI,用自定义脚本):

Bash

复制代码
cat << EOF > plot_bscan.py
import h5py
import matplotlib.pyplot as plt
import numpy as np

f = h5py.File('rail_banjie251222_merged.h5', 'r')

# 假设接收 Ez 分量(铁路轨下常见垂直电场),如不对可改 Ex/Ey
path = '/rxs/rx1/Ez'   # 如果有多接收器,改 rx1/rx2...
data = np.array(f[path])

# 时间轴转 ns
time = np.linspace(0, 20, data.shape[0])  # 20 ns 时间窗

plt.figure(figsize=(12,6))
plt.imshow(data.T, extent=[0, data.shape[1]*0.05, time[-1], 0], 
           aspect='auto', cmap='gray', vmin=-np.max(np.abs(data)), vmax=np.max(np.abs(data)))
plt.xlabel('Distance (m)')
plt.ylabel('Time (ns)')
plt.title('GPR B-scan (rail_banjie251222)')
plt.colorbar(label='Amplitude')
plt.tight_layout()
plt.savefig('rail_banjie251222_Bscan.png', dpi=150)
plt.close()
print("B-scan 已保存为 rail_banjie251222_Bscan.png")
EOF

python plot_bscan.py

运行后会生成 rail_banjie251222_Bscan.png,用 Xftp 下载到本地看,就是你的铁路半截面 GPR 雷达图(黑白灰度图,异常体会有双曲线反射)。

相关推荐
Shota Kishi7 小时前
SLV 新增 allnodes-jito 支持:Solana 验证者多客户端运维与 AI agent 自动化解析
运维·自动化·区块链
闪电悠米7 小时前
黑马点评-Redisson-01_why_redisson
java·服务器·网络·数据库·缓存·wpf
hj2862518 小时前
linux下一步学习内容
linux·运维
睡不醒男孩0308238 小时前
数据库高可用运维实操指南:基于CLup的PostgreSQL生产环境自动化管理
运维·数据库·postgresql
V搜xhliang02469 小时前
临床科研新范式:从选题到投稿,AI智能体如何接管全流程?
运维·数据结构·人工智能·算法·microsoft·数据挖掘·自动化
tudoSearcher9 小时前
日志、指标、链路追踪:可观测性三支柱深度解析
运维·服务器·网络·prometheus
xier_ran9 小时前
【infra之路】Linux基础命令与系统排查
linux·运维·服务器
zh路西法9 小时前
【Linux 串口通信】基于 C++ 多线程的同步/异步串口实现
linux·运维·c++·python
c238569 小时前
linux基础2
linux·运维·服务器
子兮曰9 小时前
WSL 配 GPU 用 Docker 的折腾指南(2026 年版)
linux·前端·后端