Fortran不同dim值下数组切片处理结果不一致问题问询
Fortran子例程
shiftxe_pos维度相关数值差异排查求助 我开发了Fortran子例程shiftxe_pos,用于处理4D数组fe的切片fe(1,1,:,:)。当dim=1时,该切片等价于2D数组;当dim>1时,切片内容与dim=1时完全一致,但子例程处理后的结果却存在差异:指定位置(nx/8,nv/2)的输出与输入比值,在dim=1时为1.0000000000,dim>1时为1.0000075左右。
已尝试以下方案均未解决问题:
- 提升数值精度
- 调整网格参数(dx/dv/dt)
- 关闭编译优化
- 修正
intent(in)与intent(inout)参数传递冲突
仅简化版平流方案有效,但无法满足业务需求,希望获得技术排查思路与解决方案。
相关代码定义:
integer, parameter :: dp = kind(1.0d0) real(dp), dimension(dim, dim, -1:nx, nv) :: fe
子例程核心参数:
real(dp), dimension(-1:nx, nv), intent(in) :: fe_local real(dp), dimension(-1:nx, nv), intent(inout) :: fe_out
内容的提问来源于stack exchange,提问作者FORTRAN_victim
相关产品推荐
相关产品推荐

