GEOS-Chem Cloud-J模块运行时错误分析与解决方案

GEOS-Chem Cloud-J模块运行时错误分析与解决方案

【免费下载链接】geos-chem GEOS-Chem "Science Codebase" repository. Contains GEOS-Chem science routines, run directory generation scripts, and interface code. This repository is used as a submodule within the GCClassic and GCHP wrappers, as well as in other modeling contexts (external ESMs). 【免费下载链接】geos-chem 项目地址: https://gitcode.com/gh_mirrors/ge/geos-chem

问题背景

在GEOS-Chem 14.5.0版本的运行过程中,用户在使用4x5分辨率的MERRA-2气象场进行全化学基准测试时,遇到了两个关键问题:

  1. Cloud-J模块中的格式化输出错误
  2. HETP模块中的浮点异常错误

Cloud-J模块错误分析

在Cloud-J模块的cldj_fjx_sub_mod.F90文件中,当启用verbose调试输出时,程序会尝试打印所有光解速率(J-values)。错误发生在格式化输出语句中,系统期望获得整数但实际获得了实数。

错误信息显示:

Fortran runtime error: Expected INTEGER for item 74 in formatted transfer, got REAL
(i3,1p, 72e9.2)

该错误出现在调试输出部分,不会影响实际计算。经过分析,这是由于输出格式与数据类型不匹配导致的,特别是在处理某些光解速率接近零的物种时。

HETP模块浮点异常

在HETP模块的hetp_mod.F90文件中,出现了更严重的浮点异常错误。这是由于变量gmax在未初始化情况下被使用导致的。

问题出现在气溶胶热力学计算中,当soln逻辑变量为false时,gmax会被赋予一系列γ值中的最大值。但如果soln为true,gmax将保持未初始化状态,可能导致后续计算中出现NaN或无限大的值。

解决方案

Cloud-J模块解决方案

对于Cloud-J模块的问题,有两种解决方案:

  1. 关闭verbose调试输出(推荐方案,因为verbose会显著降低运行速度)
  2. 修改源代码中的格式化输出语句,确保数据类型匹配

HETP模块解决方案

对于HETP模块的问题,需要在hetp_mod.F90文件中添加gmax变量的初始化:

! 在变量初始化部分添加
gmax = 0.0_dp

这样可以确保无论soln的值如何,gmax都有一个合理的初始值,避免出现浮点异常。

最佳实践建议

  1. 生产环境中应避免使用verbose调试模式,这会显著降低运行速度
  2. 在调试完成后,应重新编译不使用调试标志的版本
  3. 对于Fortran代码,应特别注意变量的初始化,特别是条件分支中可能未被赋值的变量
  4. 使用现代编译器时,可以开启更严格的编译选项来捕获这类未初始化变量的问题

总结

本文分析了GEOS-Chem 14.5.0版本中出现的两个关键运行时错误,并提供了具体的解决方案。这些问题虽然不会影响核心计算逻辑,但可能导致程序异常终止。通过合理的代码修改和运行配置,可以确保模型的稳定运行。对于使用GEOS-Chem的研究人员,建议在正式运行前进行充分的测试,并遵循推荐的编译和运行配置。

【免费下载链接】geos-chem GEOS-Chem "Science Codebase" repository. Contains GEOS-Chem science routines, run directory generation scripts, and interface code. This repository is used as a submodule within the GCClassic and GCHP wrappers, as well as in other modeling contexts (external ESMs). 【免费下载链接】geos-chem 项目地址: https://gitcode.com/gh_mirrors/ge/geos-chem

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值