hydrus-1d
Hydrus是基于Windows系统界面开发的环境土壤物理模拟软件,是模拟一维和多维变饱和多孔介质的水流、溶质(污染物等)运移、根系吸水和溶质吸收、热量传输等方面的强有力工具。该模型具有灵活方便的图形操作界面,深受各国学者推崇,广泛应用于环境、水文地质、农业、水利等领域。
phydrus
Phydrus:HYDRUS-1D的Python实现
phydrus包括创建模型、进行模拟、生成模拟输出文件和土壤模型剖面信息、阅读输出文件、绘制模拟结果图件等功能
github网址:phydrus
官方文档网址:phydrus文档
示例
import os
import matplotlib.pyplot as plt
import phydrus as ps
# create model
# 自动创建test文件夹作为工作空间
workspace = 'test'
# 连接到hydrus执行文件,mac系统也可以
exe = os.path.join(os.getcwd(), 'hydrus')
# 以天为时间单元,以cm为土壤剖面长度单元
model = ps.Model(exe_name=exe, ws_name=workspace, name='model', time_unit='days', length_unit='cm')
# 添加时间信息,模拟1天,每0.1天的间隔记录一次
model.add_time_info(tinit=0, tmax=1, print_times=True,
printinit=0, printmax=1, dtprint=0.1)
# 设置水分流动的顶部和底部边界条件
# model=0 : van Genuchten"s [1980] model with 6 parameters.
# top_bc=0 : Constant Pressure Head.
# bot_bc=4 : Free Drainage.
# 选择VG模型,上边界为定压边界,下边界为自由排水边界,最大迭代次数设置为100
model.add_waterflow(model=0, top_bc=0, bot_bc=4, maxit=100)
# 添加土壤类型,只设置一种土壤
soil = model.get_empty_material_df(n=1)
# 注意loc是闭区间
# model=0 : ["thr", "ths", "Alfa", "n", "Ks", "l"]
soil.loc[1:1] = [[0.078, 0.43, 0.036, 1.56, 24.96, 0.5]]
model.add_material(soil)
# print(soil.loc[1:1])
# 添加土层的底边界,1m的土柱
bottom = list(range(-1, -101, -1))
# 划分节点
nodes = 100
# 定义初始水头,定义沿剖面变化的初始水头
ihead = list(range(-1, -101, -1))
# 创建土壤剖面
profile = ps.create_profile(bot=bottom, dx=1, h=ihead, mat=1)
model.add_profile(profile)
ax = model.plots.profile(figsize=(3, 6))
ax.set_xlim(xmax=0, xmin=-100)
plt.show()
# 添加观测节点
model.add_obs_nodes([-20, -40, -60, -80, -100])
# 写入到输入文件,并进行模拟
model.write_input()
model.simulate()
初始水头信息
执行模拟后自动生成相关文件夹和文件
# 观察不同观测节点水头随时间的变化
model.plots.obs_points(data='h', figsize=(6, 4))
plt.show()
设置的5个观测节点水头随时间的变化