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. functionObjects导出数据没有内部值只有边界是caculated

functionObjects导出数据没有内部值只有边界是caculated

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

    各位好,我想在运行算例的时候输出LES的delta大小以及一些其他的SGS数据(最简单的就是Uprime=U-Umean)
    我在cfdonline上找个帖子,但是代码看起来是2.X版本的,我将它放到CreateFields.H里面

    volScalarField LESdelta
        (
            IOobject
            (
                "LESdelta",
                runTime.timeName(),
                mesh,
                IOobject::NO_READ,
                IOobject::NO_WRITE
            ),
            mesh,
            dimensionedScalar("LESdelta", dimLength, SMALL)
        );
    
        if (mesh.objectRegistry::foundObject<volScalarField>("delta"))
        {
            const volScalarField& delta =
                mesh.objectRegistry::lookupObject<volScalarField>("delta");
    
            //LESdelta.internalField() = delta.internalField();原代码,4.0以后internalField这个功能被ref()取代了
              LESdelta.ref()=delta;//修改的,感觉不太合适,至少编译不报错           
        }
    

    导出的delta文件只有一个很小的内部值,边界是caculated,很明显数据没提出来

    其次是Uprime,也是看这个帖子https://github.com/syavash20/TurbLab/tree/master/LESpimpleFoam
    在creatFields设置了该量之后,

    Info<< "Reading field UMean\n" << endl;
    volVectorField UMean
    (
        IOobject
        (
            "UMean",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT,
            IOobject::NO_WRITE
        ),
        mesh
    );
    

    去.C文件加一句

    UPrime = (U-UMean);
    

    这个导出文件是内部场直接没有,直接uniform 0,边界条件是一堆caculated(已经按照文档所说先算一会给个初始的Umean场了)
    所以为什么会没有数据呢?

    1 条回复 最后回复
  • 荷 离线
    荷 离线
    荷兰后腰阿贾克斯
    写于 最后由 编辑
    #2

    自我发这个帖子后我发现了几种可能的原因,供后来的Foamer参考吧

    1、最一般的情况就是在自己的求解器(一般是修改过后的------这样才容易出这种问题),里面createFields.H文件未将值初始化,可以看到我在代码中以及给出了初始值,但是系统未识别,后将“SMALL”改成“VSMALL”才能适应v2012以后的版本。
    当然你也可以在0文件中新建一个相关变量的文件,然后给它一个初始条件就行————简而言之,变量需要初始值。

    2、在加代码的时候声明了变量比如volVectorFields,volVectorFields Uprime = ( U - Umean);但是没有赋值这一步,所以系统没输出这个变量,要想输出的话在后面加一段Uprime111 = Uprime,你就会在结果中得到一个Uprime111了。

    3、如果你的变量是通过运算得来的,那么有可能系统无法完成你的计算所以没结果,首先可以通过Debug的方法检查是哪一步计算算不出来,然后根据自己的情况进行更改吧,我这里报错还是SMALL在2012无法识别的问题。

    祝好

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

    :146: :146: :146:

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

    1 条回复 最后回复

  • 登录

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