【SWAT】ArcSWAT各种报错及解决方案汇总(随缘更新)

本文汇总了ArcSWAT安装及运行过程中遇到的各种错误,包括加载类型库/DLL错误、SUFI2运行错误、SOL_BD越界错误、HRU Definition报错457等,并提供了详细的解决方案,如更换版本、检查输入文件格式、调整参数范围等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SWAT-CUP安装出错,提示加载类型库/DLL时出错

说明

我在win11上安装SWAT-CUP 2017版时,提示加载类型库/DLL时出错,采用DirectX Repair修复库文件后,并未得到解决。记录一下解决方案。
在这里插入图片描述

方案一

拷贝其他电脑成功安装CUP目录

方案二

解压安装包,找到CUP可执行文件所在文件夹
在这里插入图片描述

方案三

安装SWAT-CUP 2019,按照前处理、运行模型、后处理的顺序,在CUP目录依次执行SUFI2_Pre.bat、SUFI2_run.bat、SUFI2_Post.bat

方案四

安装SWAT-CUP 2019,购买许可
在这里插入图片描述

SUFI2_goal_fn.exe找不到SUFI2.OUT\beh_**

在这里插入图片描述
在这里插入图片描述
根据官方文档,SWATCUP目标函数计算时候,主要输入输出文件有
在这里插入图片描述
其中

  • Echo\echo_goal_fn.txt ==>> 目标函数计算的日志
  • SUFI2.OUT\goal.txt ==>> 目标函数计算结果
  • SUFI2.OUT\best_sim.txt ==>> 最优目标函数对应的模拟结果
  • SUFI2.OUT\best_par.txt ==>> 最优目标函数对应的最优参数
  • SUFI2.OUT\beh_ pars.txt ==>> 可行参数集
  • SUFI2.OUT\no_beh_sims.txt ==>> 可行的模拟次数
  • SUFI2.OUT\best_sim_nr.txt ==>> 最优目标函数对应的模拟序号

因此可能的原因有:
1、SWAT.exe版本不一致,可以直接将arcswat目录下的swat.exe替换到swatcup目录下。
2、输入文件格式有问题,由于此步已经到了post,所以调试的时候,可以每次只选择post执行
在这里插入图片描述

  • 具体需要调试的是observed.txt等目标函数计算的输入文件
  • 首先得确保基本格式的正确
    在这里插入图片描述
  • 其次可以调整可行方案的最小目标函数阈值(min value of objective function threshold for the behavioral solutions),通常NS较小的时候,不存在可行方案会报找不到的错误

SUFI2_95ppu_beh.exe Cannot open input file /SUFI2.OUT/no_beh_sims.txt

在这里插入图片描述
计算步骤到了最后一步,说明前面的计算都顺利,不存在格式问题。只是因为NS小于可行方案的最小目标函数阈值,不存在可行方案。
在这里插入图片描述

ArcSWAT运行报错array SOL_BD has value of 7 which is greater than the upper bound of 6

报错原因

土壤数据库user_soil存在问题

原因1,土壤深度设置有误

详细参考:https://blog.csdn.net/Chris_Ning/article/details/98242315
在这里插入图片描述

原因2,参数的范围越界

user_soil中参数范围说明,详见solrng表
solrng

解决办法

说明1

经反复测试,user_soil中的参数,NLAYER的值须为大于0的整数,SOL_ZMX>=SOL_Z1>0,而其他参数设置为0均不会报错。

说明2

对于11927水体WR对应的参数,博主参数设置直接采用default中的WATER,如有其他思路请留言指教
在这里插入图片描述

ArcSWAT在HRU Definition报错Error 457

说明

ArcSWAT在HRU Definition时,如果设置不当会出现457错误,457错误是VB (Visual Basic) 中的常见错误,表示“此键已经与集合中的一个元素关联”。这个错误通常在使用Dictionary对象时出现,当你尝试将一个新的键值对添加到已经存在的键中时,就会出现这个错误。

错误原因

当手动双击添加土壤/土地利用类型,定义为相同类型的土壤/土地利用,重分类后不会自动合并,存在相同的类型名,此时会报错。
在这里插入图片描述

An error has occured in the application. Record the call stack sequenceand the description of the error.
Error Call Stack Sequence
cmdOK LUSoilsfunctions.vb Line:475
Error Number
457
Description
此键已与此集合的某个元素关联。

在这里插入图片描述

解决办法

避免重分类后出现相同的类型名

1、手动点击时,不要使用相同土地利用/土壤名

在这里插入图片描述

2、使用LookUp Table,可以根据索引自动合并相同名称类型

土地利用

"VALUE","Landuse"
20,FRST
30,PAST
40,PAST
50,PAST
60,WATR
80,URHD
90,URHD

土壤

VALUE,NAME
11627,Acf
11783,Acf
11927,WR

ArcSWAT运行时报错forrtl: severe (64): input conversion error

在这里插入图片描述

ArcSWAT运行时报错forrtl:error(72):floating overflow

在这里插入图片描述

原因

上述两个报错都可能是越界问题,输入文件中的变量值超出数据库变量的值域范围,特别的对于气象数据fork,缺测数据表示为:

  1. pcp1.pcp -------> -99.0
  2. tmp1.tmp -------> -99.0
  3. slr.slr -------> -099.000
  4. wnd.wnd -------> -099.000
  5. hmd.hmd -------> -099.000

debug

建议检查当前textinout中报错文件,比如本次报错文件为tmp1.tmp,
在这里插入图片描述
检查后发现,温度为-100.明显异常,修改温度的fork文件,重新加载,运行成功!
在这里插入图片描述

ArcSWAT TxtInout中pcp1.pcp、Tmp1.Tmp中的气象站数量和fork中气象站数量不一致

说明

SWAT采用泰森多边形计算流域面降雨,可根据降雨站点及流域边界分析确定SWAT模型所选择的具体站点。可以发现所选择的站点并非全部站点,而是流域内部站点及部分流域外站点。

其他说明

观察file.cio中的Climate可以发现NRTOT、NRGFIL控制着降雨站点的数量,这些参数都是自动生成的

Climate:
               0    | IGEN : Random number seed cycle code
               1    | PCPSIM : precipitation simulation code: 1=measured, 2=simulated
               0    | IDT : Rainfall data time step
               0    | IDIST : rainfall distribution code: 0 skewed, 1 exponential
           1.300    | REXP : Exponent for IDIST=1
               1    | NRGAGE: number of pcp files used in simulation
               4    | NRTOT: number of precip gage records used in simulation
               4    | NRGFIL: number of gage records in each pcp file
               1    | TMPSIM: temperature simulation code: 1=measured, 2=simulated
               1    | NTGAGE: number of tmp files used in simulation
               4    | NTTOT: number of temp gage records used in simulation
               4    | NTGFIL: number of gage records in each tmp file
               2    | SLRSIM : Solar radiation simulation Code: 1=measured, 2=simulated
               0    | NSTOT: number of solar radiation records in slr file
               2    | RHSIM : relative humidity simulation code: 1=measured, 2=simulated
               0    | NHTOT: number of relative humidity records in hmd file
               2    | WINDSIM : Windspeed simulation code: 1=measured, 2=simulated
               0    | NWTOT: number of wind speed records in wnd file
               0    | FCSTYR: beginning year of forecast period
               0    | FCSTDAY: beginning julian date of forecast period
               0    | FCSTCYCLES: number of time to simulate forecast period

根据SWAT输入输出手册:
NRTOT:为模拟中用到的降雨台站文件(.pep)的个数。至多可用18个文件。如果使用实测降水数据,为必选项;
NTTOT:模拟中用到的降雨台站记录的总数。如果每个.pep文件只包括一条降雨台站记录,则NRTOT=NRGAGE;否则NRTOT>NRGAGE。一次模拟至多可用5400条降雨台站记录。如果使用实测降水数据,为必选项。
NRGFIL:各.pcp文件中降雨台站记录的数量,一个.pep文件中至多有300条降雨台站记录。如果使用实测降水数据,为必选项。
温度数据类似。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

SWATCUP回代SWAT时报错CTL_E_PATHNOTFOUND

在这里插入图片描述

点击Copy to Default时,SWAT会先删除Default中的TxtInOut,然后将指定Scenario中的TxtInOut复制到Default,因此需要确保默认Scenario中的TxtInOut目录,否则会报错"CTL_E_PATHNOTFOUND"。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KmBase

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值