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
6 帖子 2 发布者 4.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 小 离线
    小 离线
    小考拉
    写于 最后由 编辑
    #1

    各位前辈们好!

    我现在定义了一个张量 volTensorField S,现在想输出其中的 S.xx()这个分量的值,查看了一些前辈之前的讨论帖子:链接文本

    请问对于 类型为volTensorField的张量S怎样输出它的分量S.xx()呢?

    1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    写于 最后由 bestucan 编辑
    #2

    看源代码
    https://cpp.openfoam.org/v8/volFieldsFwd_8H_source.html
    这里62行有 volTensorField 的定义,和 GeometricField 有关

    https://cpp.openfoam.org/v8/GeometricField_8H_source.html
    这里是 GeometricField 的定义,80行有三个形式参数的名字,对着上一个链接 volTensorField 的定义搜,vol 作为特征词搜到的结果最少,在538行,看起来是你要的。如果不是这个,那就在这里搜 return,找成员函数。或者猛啃C++,接着挖
    :xiezuoye:

    滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

    异步沟通方式(《posting style》from wiki)(下载后打开):
    https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
    提问的智慧(github在gitee的镜像):
    https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way

    1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    写于 最后由 bestucan 编辑
    #3

    https://cfd-china.com/topic/4128/修改湍流模型-定义表达式的问题

    他这个帖子刚好用到那个internal那个函数。

    两个示例用法

    ./utilities/postProcessing/postProcess/postProcess.C:    ReadFields(volTensorField);
    ./utilities/postProcessing/postProcess/postProcess.C:    ReadFields(volTensorField::Internal);
    

    滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

    异步沟通方式(《posting style》from wiki)(下载后打开):
    https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
    提问的智慧(github在gitee的镜像):
    https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way

    小 1 条回复 最后回复
  • 小 离线
    小 离线
    小考拉
    写于 最后由 编辑
    #4

    哇,感谢前辈回复,我仔细去学习一下

    1 条回复 最后回复
  • 小 离线
    小 离线
    小考拉
    在 中回复了 bestucan 最后由 编辑
    #5

    @bestucan 前辈您好!很抱歉再次打扰您,针对您之前的回复,我认真研读了一下,但还是存在一些困难,还希望您能够指点一个思路,感激不尽!

    我现在在用非线性SGS模型,为了防止计算崩掉,就要限制SGS模型计算的Tij,可是Tij是一个类型为 volTensorField的张量,我现在无法提取出来这个Tij的每一个分量,进行限制。

    我刚刚简单试验了一下如下代码:

    const volSymmTensorField S = symm(gradU);    
    
    const volScalarField Z = S.zz();
    

    ,报错如下:

    DNM.C: In member function ‘Foam::dimensionedVector Foam::compressible::LESNonlinearModels::DCNM::C(const volTensorField&) const’:
    DNM.C:83:28: error: ‘const volSymmTensorField’ has no member named ‘zz’
     const volScalarField Z = S.zz();
    

    我目前的思路是参考tensor的定义成员xx xy xz的思路,将volTensorField中也定义一个xx xy xz等9个分量,,但不知道这样可行否,,同时由于这个原始的湍流模型代码比较老(是2.4版本的),我如何能快速找到tensor 和 volTensorField的定义和代码呢?

    希望前辈百忙之中再指点一下,谢谢!

    bestucanB 1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 小考拉 最后由 编辑
    #6

    @小考拉

    不忙不忙,就是不太懂:mihu:
    但是探索不懂的东西的方法都是相通的。你要解决的问题我没解决过,所以要解决花费的时间比较多。思路就是看代码。你也在看,但我们看的版本对不上,开源软件有个特点,太自由了,所以版本间的差距特别大。

    在你的代码中找相关定义的方法:

    grep -R 'volTensorField' ./
    

    先用 cd 命令 切换到源代码所在的目录 ~/OpenFOAM/OpenFOAM-version/
    然后运行上面的那条命令。-R 是递归查找,包括子文件夹,'volTensorField' 是查找的内容,区别大小写, ./代表当前路径。

    另外,在 ~/OpenFOAM/OpenFOAM-version/里查,查的太多。可以分别去这个文件夹下的src或者applications下面查。如果还是太多,就把输出重定向到一个文件再看。不过没颜色不太好看。

    grep -R 'volTensorField' ./ > grep.log
    

    滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

    异步沟通方式(《posting style》from wiki)(下载后打开):
    https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
    提问的智慧(github在gitee的镜像):
    https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way

    1 条回复 最后回复

  • 登录

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