刚开始不知道如何下手,用了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:
- 在你本地有网的电脑下载这两个包(非常小,总共不到 1MB):
- https://pypi.org/project/colorama/#files → 下载 colorama-0.4.6-py2.py3-none-any.whl
- https://pypi.org/project/tqdm/#files → 下载 tqdm-4.66.5-py2.py3-none-any.whl(或任意版本)
- 用 Xftp 上传这两个 .whl 文件到服务器(随便放哪)
- 在服务器安装:
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](https://pypi.org/project/terminaltables/?referrer=grok.com#files "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 雷达图(黑白灰度图,异常体会有双曲线反射)。

