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

    各位前辈

    forAll(sens,i)
    {
       if(~) 
         sens[i]=1.2;
    }
    

    sens 类型为 volScalarField,这样的操作该怎么实现?

    1 条回复 最后回复
  • M 离线
    M 离线
    Mr.H
    写于 最后由 编辑
    #2

    @东岳 求问大神

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

    看起来你已经实现了?

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

    M 1 条回复 最后回复
  • M 离线
    M 离线
    Mr.H
    在 中回复了 李东岳 最后由 编辑
    #4

    @东岳 对,谢谢大神,之前有个变量类型写错了。 不过我还有2个问题:
    1、为何 volScalarField 在声明的时候必须进行初始化?
    2、怎样把 scalar 赋值给 volScalarField 的变量?

    M 1 条回复 最后回复
  • M 离线
    M 离线
    Mr.H
    在 中回复了 Mr.H 最后由 编辑
    #5

    对于第二个问题,我的解决方法是 volScalarField 1=scalar * volScalarField 2
    volScalarField 2 是值为1 的单位向量。 但有没有更专业的处理方法?

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

    为何 volScalarField 在声明的时候必须进行初始化?

    这像是一个规则,目前OpenFOAM不允许这样。

    怎样把 scalar 赋值给 volScalarField 的变量?

    要内部场:

    T.primitiveFieldRef() = 0.0;
    

    要边界场:

    T.BoundaryFieldRef() = 0.0;
    

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

    1 条回复 最后回复
  • A 离线
    A 离线
    ars
    写于 最后由 编辑
    #7

    请问,是不是不能对标量场进行对数log运算?需要把标量场的值转化为实数才可以取对数?
    比如volscalarField p ,想求得log(p)应该如何操作?

    浪 1 条回复 最后回复
  • 浪 离线
    浪 离线
    浪迹天大
    在 中回复了 ars 最后由 编辑
    #8

    @ars Foam::log(p)可以吗?

    OpenFOAM 学习交流:https://openfoam.top

    A 1 条回复 最后回复
  • A 离线
    A 离线
    ars
    在 中回复了 浪迹天大 最后由 编辑
    #9

    @浪迹天大 您的意思是通过这样定义一个scalar?如果是这样的话,试了一下,不行。
    我是在functionObjects中想计算一个物理量C。
    所以在里面定义了volscalarField C。而这个物理量的表达式是通过物理量A,B,D所构成的表达式来进行计算的。
    A,B也是自己定义的volscalarField,D是volvectorField;
    表达式大概为C=A/(log(mag(D)/B)。编译时没有问题,但计算这个物理量C时,却报错:
    Argument of trancendental function not dimensionless
    把log去掉就完全ok。

    Z 1 条回复 最后回复
  • Z 离线
    Z 离线
    Zephyr
    在 中回复了 ars 最后由 编辑
    #10

    @ars Openfoam有dimension检查, log是超越函数,要求里面的数必须是无量纲的,因此你只能用这种形式log(p/pInf) 把p的单位消掉。

    A 1 条回复 最后回复
  • A 离线
    A 离线
    ars
    在 中回复了 Zephyr 最后由 编辑
    #11

    @Zephyr 您是指这个吗?这样能去单位?
    pInf()——Return the pressure at infinity.
    但是我需要取对数的不是压力这个物理量。
    按这个做法,编译没法通过。
    请问,openFoam 里面如何去单位?希望详述一下。

    Z 1 条回复 最后回复
  • Z 离线
    Z 离线
    Zephyr
    在 中回复了 ars 最后由 李东岳 编辑
    #12

    @ars 假设你要算一个log(t), 编译肯定是通过不了的,因为t在openfoam里是有单位的,单位是秒,那么你可以定义一个常数1

    dimensionedScalar oneSecond
        (
        	"oneSecond",
        	dimTime, // 和变量t具有相同dimension
        	1
        );
    

    然后计算log(t/oneSecond),这个oneSecond没有任何物理意义,只是帮助你把变量t的单位去掉好通过编译,你要计算的log(p)也是同理

    第二种方法:直接把openfoam的单位检查关掉,这个我没有研究过,你可以求助谷歌

    H 1 条回复 最后回复
  • H 离线
    H 离线
    hongjiewang
    在 中回复了 Zephyr 最后由 编辑
    #13

    @Zephyr 请问我在库中采用了log(p/pSat_),编译可以通过,但是跑算例时会发散,提示这样的错误:Foam::log(Foam::Field<double>&, Foam::UList<double> const&) at ??:? 是因为里面的数太小了吗

    Z 1 条回复 最后回复
  • Z 离线
    Z 离线
    Zephyr
    在 中回复了 hongjiewang 最后由 编辑
    #14

    @hongjiewang 我直接好家伙,这都两年了居然还回复我。
    由于种种原因我现在已经不怎么玩OF了,只能给你一些比较通用的建议。首先看这一堆问号大概是segment fault错误,那么我首先猜是产生了异常值导致求解器爆炸,log函数最容易出现的问题就是传入0值和负值,建议你首先检查数值问题。如果不是数值问题,那就单步调试之类的慢慢debug看看怎么回事,你的两个变量是否正确初始化了等等

    李东岳李 1 条回复 最后回复
  • B 离线
    B 离线
    biaowai
    写于 最后由 编辑
    #15

    受教了,exp(),log()都不能计算量纲场,求ln(A)运算,用log(A/Aref)*Aref

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 Zephyr 最后由 编辑
    #16

    @Zephyr 我直接好家伙,楼上4年后回复你了

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

    1 条回复 最后回复

  • 登录

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