CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    编译求解器时遇到:assignment of read-only location,求各位老师解答!

    OpenFOAM
    2
    5
    1080
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • strive_DUT
      strive_DUT 最后由 李东岳 编辑

      编译求解器时遇到这样一个问题:

      assignment of read-only location ‘(& rho.Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>::internalField())->Foam::DimensionedField<double, Foam::volMesh>::<anonymous>.Foam::Field<double>::<anonymous>.Foam::List<double>::<anonymous>.Foam::UList<double>::operator[](celli)’
      

      TIM图片20191122091402.jpg
      提示有问题的代码是这样的:

      rho.internalField()[celli] = rho0 - ((rho0*Ru*TCells[celli])/(Mw - b*rho0) - (a*aa*rho0*rho0)/(Mw*Mw + 2.0*b*Mw*rho0 - b*b*rho0*rho0) - pCells[celli])/((Ru*TCells[celli])/(Mw - b*rho0) - (2.0*a*aa*rho0)/(Mw*Mw + 2.0*b*rho0*Mw - b*b*rho0*rho0) + (Ru*TCells[celli]*b*rho0)/Foam::pow(Mw - b*rho0,2) + (a*aa*rho0*rho0*(2.0*Mw*b - 2.0*b*b*rho0))/Foam::pow(Mw*Mw + 2.0*b*rho0*Mw - b*b*rho0*rho0,2));
      

      这段代码之前是在foam-extend版本编译成功的,现在在OpenFOAM-7上编译报错的。。。。

      1 条回复 最后回复 回复 引用
      • 李东岳
        李东岳 管理员 最后由 编辑

        rho.ref().[celli]
        

        CFD高性能服务器 http://dyfluid.com/servers.html
        2023年,线下CFD课,预热一下 http://dyfluid.com/class.html

        1 条回复 最后回复 回复 引用
        • strive_DUT
          strive_DUT 最后由 编辑

          李老师您好!您的意思是internalField()用ref()代替吗?

          李东岳 1 条回复 最后回复 回复 引用
          • 李东岳
            李东岳 管理员 @strive_DUT 最后由 编辑

            @strive_DUT 是的,你试试

            CFD高性能服务器 http://dyfluid.com/servers.html
            2023年,线下CFD课,预热一下 http://dyfluid.com/class.html

            strive_DUT 1 条回复 最后回复 回复 引用
            • strive_DUT
              strive_DUT @李东岳 最后由 编辑

              @东岳 是的,李老师,感谢李老师!两个版本的定义不一样!OpenFOAM-4中GeometricField字典中是这样定义的:TIM截图20191122141846.png
              而foam-extend-4.0中是这样定义的:TIM截图20191122141934.png

              1 条回复 最后回复 回复 引用
              • First post
                Last post