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. 边界条件write函数触发

边界条件write函数触发

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

    OpenFoam中的边界条件里面都有一个函数write,用于输出一些信息,如oscillatingFixedValue这个边界里面的write函数:0_1480843778367_Screenshot from 2016-12-04 17-27-35.png
    这个函数是怎么触发的呢?

    W 1 条回复 最后回复
  • W 离线
    W 离线
    wwzhao 超神
    在 中回复了 supersoldier 最后由 编辑
    #2

    @supersoldier 通过求解器里面的runTime.write()触发,runTime.write()将调用Foam::Time::write()向磁盘写入所有注册对象。

    1 条回复 最后回复
  • supersoldierS 离线
    supersoldierS 离线
    supersoldier
    写于 最后由 supersoldier 编辑
    #3

    @wwzhao 嗯,我调试了一下,确实向您说的是runTime.write()这个函数触发的。我用Info输出了一下os发现是数字1,按理说是写到一个文件里,但运行后,case目录下并没有输出相关文件。在想是不是要在etc目录下的controlDict中设置一下DebugSwitches开关,不过还是没成功。这个函数的输出可以改成Info输出,显示一些信息,但是很想知道这个函数的输出是怎么回事。
    0_1481119177474_Screenshot from 2016-12-07 21-58-53.png

    W 1 条回复 最后回复
  • W 离线
    W 离线
    wwzhao 超神
    在 中回复了 supersoldier 最后由 编辑
    #4

    @supersoldier 你是不是搞错了,Info<< 是向终端输出,向文件输出的对应语句是 os << 。

    supersoldierS 1 条回复 最后回复
  • supersoldierS 离线
    supersoldierS 离线
    supersoldier
    在 中回复了 wwzhao 最后由 编辑
    #5

    @wwzhao Info<<os<<endl; 是我自己写的,是输出到终端,现在想知道os.writeKeyword("neighbourFieldName")<< neighbourFieldName_
    << token::END_STATEMENT << nl;是输出到什么地方去了。

    W 1 条回复 最后回复
  • W 离线
    W 离线
    wwzhao 超神
    在 中回复了 supersoldier 最后由 编辑
    #6

    @supersoldier

    现在想知道os.writeKeyword(“neighbourFieldName”)<< neighbourFieldName_
    << token::END_STATEMENT << nl;是输出到什么地方去了。

    这个输出到相应的GeometricField的边界当中了。

    这么说你可能不大明白,举个例子,比如你的计算域有个边界名为solid,温度场T在这个边界上的边界条件为fluidSolidCombustionTemperature,那么这个os.writeKeyword函数将把内容输出到每个时间步的T文件里面的 boundaryField 里面,类似这样:

    boundaryField
    {
    ...
        solid
        {
            type fluidSolidCombustionTemperature;
            neighbourFieldName T;
            kappa xxx;
        }
    ...
    }
    
    supersoldierS 2 条回复 最后回复
  • supersoldierS 离线
    supersoldierS 离线
    supersoldier
    在 中回复了 wwzhao 最后由 编辑
    #7

    @wwzhao 嗯 看了一下好像是这样,谢谢解答:happy:

    1 条回复 最后回复
  • supersoldierS 离线
    supersoldierS 离线
    supersoldier
    在 中回复了 wwzhao 最后由 编辑
    #8

    @wwzhao 再请教一个问题,您是怎么知道这个输出的位置或是这个函数的原理的,我一开始通过输出、调试这个函数并没有搞懂它是怎么回事。很想知道您当时是通过什么途径来弄清楚的? 感觉好多OpenFOAM的函数分析起来不是很好弄清楚,可能是我对OpenFOAM的原理和C++理解掌握的还不够:sad:

    W 1 条回复 最后回复
  • W 离线
    W 离线
    wwzhao 超神
    在 中回复了 supersoldier 最后由 编辑
    #9

    @supersoldier OpenFOAM大量使用了C++面向对象的设计思想,不能用一般面向过程的编程思维去阅读代码。了解面向过程的设计思想有助于去理解OpenFOAM的框架和具体实现。

    1 条回复 最后回复

  • 登录

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