Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 求助:如何在边界a上索引边界b的值,且可以并行(包含多种边界值获取方式)

求助:如何在边界a上索引边界b的值,且可以并行(包含多种边界值获取方式)

已定时 已固定 已锁定 已移动 OpenFOAM
3 帖子 2 发布者 2.0k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 四 离线
    四 离线
    四季之中的隐星
    写于 最后由 编辑
    #1

    为了实现一些特殊需求,所以需要两个边界相互交互。但是修改后的边界条件仅在串行条件下可以运行。

    下述代码为例:

    //~in patch
    label patchi = this->patch().boundaryMesh().findPatchID(patchName_);
    const volScalarField& paraGet = this->db().objectRegistry::lookupObject<volScalarField>("paraA");//这一步可以正常运行
    const scalarField& para = paraGet.boundaryField()[patchi];//这一步OK
    Info << para << endl;//这一步在并行条件下会报错,也就是引用的对象在使用的时候会报错
    

    在此基础上,我修改了代码,发现如果不是引用,直接取值,也会报错,因此可以断定是取边界值的函数在并行条件下有问题。

    报错代码

    //~in patch
    label patchi = this->patch().boundaryMesh().findPatchID(patchName_);
    const volScalarField& paraGet = this->db().objectRegistry::lookupObject<volScalarField>("paraA");//这一步可以正常运行
    const scalarField para = paraGet.boundaryField()[patchi];////这一步在并行条件下会报错
    

    最后,也尝试过从网格转移获取边界值,但是并行时也会在取值时报错。

    //~in patch
    label patchi = this->patch().boundaryMesh().findPatchID(patchName_);
    const volScalarField& paraGet = this->db().objectRegistry::lookupObject<volScalarField>("paraA");//这一步可以正常运行
    const fvMesh& mesh = patch().boundaryMesh().mesh();//正常运行
    const fvPatchField<scalar>& para = mesh.boundary()[patchi].lookupPatchField<volScalarField, scalar>("paraA");//这一步可以正常运行
    Info << para << endl;//这一步在并行条件下会报错,也就是引用的对象在使用的时候会报错
    

    所以想向各位老师和同僚请教下怎么处理这种问题

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #2

    Info改成Pout试试?

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    四 1 条回复 最后回复
  • 四 离线
    四 离线
    四季之中的隐星
    在 中回复了 李东岳 最后由 编辑
    #3

    @李东岳 谢谢李老师的回复,这个问题我最后发现是一个很简单的错误导致的。因为decompsePar没有把边界场进行拆分:136: ,导致各个处理器文件夹下的场定义缺失所以发生了错误

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]