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. 关于进行瞬态计算矩阵迭代过程的数据操作

关于进行瞬态计算矩阵迭代过程的数据操作

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

    输出每个迭代步的结果

    稀疏矩阵求解器 每次 迭代的U之类的么,比如一个时间步迭代321次,要输出321个U?

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

    H 1 条回复 最后回复
  • H 离线
    H 离线
    huangyuhui723
    在 中回复了 李东岳 最后由 编辑
    #5

    @李东岳 是的李老师,就是这个意思

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

    比如PBICGSTAB,这个psi就是你的迭代的场:

    Foam::solverPerformance Foam::PBiCGStab::solve
    (
        scalarField& psi,
        const scalarField& source,
        const direction cmpt
    ) const
    

    你可以把psi每个迭代步都输出

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

    H 1 条回复 最后回复
  • H 离线
    H 离线
    huangyuhui723
    在 中回复了 李东岳 最后由 编辑
    #7

    @李东岳 谢谢李老师,这个迭代过程我大概了解了。关于这个输出我也想顺便请教一下,对单个field是用什么命令输出呢,是psi.write(os)这个命令么?

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

    wirte()这个是比较顶层的方式。你要用的话应该可以写,但我不确定写在哪里去了。我觉得你要在成员函数里面写一系列场,然后在顶层输出。

    不过这个是纯编程问题,还得自己尝试。

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

    H 2 条回复 最后回复
  • H 离线
    H 离线
    huangyuhui723
    在 中回复了 李东岳 最后由 编辑
    #9

    @李东岳 好的,大概了解了,谢谢李老师,那我这边去尝试一下。

    1 条回复 最后回复
  • H 离线
    H 离线
    huangyuhui723
    在 中回复了 李东岳 最后由 编辑
    #10

    @李东岳 李老师您好,按照您提供的思路我尝试对矩阵求解器的类进行了修改(以PCG为例),我修改了PCG.H和PCG.C,但是在数据输出这块还有点问题想请教一下。我本来想按您说的把场提取到顶层输出,所以想在PCG的solve中多加一个输入用来存储一系列迭代的场,然后再到顶层输出。但我发现这个添加函数输入项的过程牵一发动全身,从lduMatrix、fvMatrix到fvm等一系列的类和源码都需要进行调整,感觉有点杀鸡用牛刀了。但是如果直接在PCG.C中输出好像获取不了时间步的信息,不知道怎么记录输出不同时间步的结果。所以想再次请教一下有没有更好的方法实现这一过程?谢谢。

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

    你这个是不是应该每个时间步,输出多个场,是不是不应该记录时间步信息?

    是要改很多私有成员变量啥的,来回嵌套。我想想有没有什么好办法。

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

    H 2 条回复 最后回复
  • H 离线
    H 离线
    huangyuhui723
    在 中回复了 李东岳 最后由 编辑
    #12

    @李东岳 在 关于进行瞬态计算矩阵迭代过程的数据操作 中说:

    是不是不应该记录时间步信息?

    李老师您好,这里是因为我考虑的每个时间步都要输出多个场,所以每个时间步输出数据的filename应当是与当前时间步相关的。所以只在PCG类里做改动无法读取时间步信息的话,无法定义合适的filename,对后处理会带来麻烦。而且没有时间步这种全局变量信息,仅在PCG类里做改动无法定义合适的filename的话,为了不覆盖之前的输出,似乎只能在同一个file里add数据,这种方法感觉是可以记录所有时间步及其迭代步信息的,但是后处理也比较麻烦,需要重新核对时间步,感觉不够优雅,所以我希望有更好的解决方法。个人技术和思考比较浅薄,感谢大佬赐教。

    1 条回复 最后回复
  • H 离线
    H 离线
    huangyuhui723
    在 中回复了 李东岳 最后由 编辑
    #13

    @李东岳 在 关于进行瞬态计算矩阵迭代过程的数据操作 中说:

    是要改很多私有成员变量啥的,来回嵌套。我想想有没有什么好办法。

    谢谢李老师关注,确实我本来也以为改一改矩阵求解器就行,结果发现OF里嵌套继承的类太多了,越改越麻,所以才来提问,希望有更好的方法。

    1 条回复 最后回复

  • 登录

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