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. Euler-Lagrange的一些解析,sprayFoam

Euler-Lagrange的一些解析,sprayFoam

已定时 已固定 已锁定 已移动 OpenFOAM
87 帖子 14 发布者 82.1k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 星 离线
    星 离线
    星星星星晴
    在 中回复了 vbcwl 最后由 编辑
    #21

    @vbcwl
    在kinematicparcel.C中

    流体对粒子判断受力是通过Fcp.Sp()和Fncp.Su()这两项,显性隐性的区别,calcVelocity方程计算新速度。
    calcDispersion方程是dispersionmodel里计算新流场速度,OF自带是基于k-e的

    粒子对流体:UTrans这一项传递的

    粒子之间:kinematicCloud中的 stochasticCollision().update(td, solution_.trackTime());这一项

    粒子与壁面:hitFace, hitpatch这个方程等,具体调用哪个 这部分我不是很熟悉
    OpenFOAM-8/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/ 具体模型是在这个部分

    具体你用了某个模型的话一定要看好code,有的模型kicematicparcel是没有的

    游荡

    vbcwlV 1 条回复 最后回复
  • vbcwlV 离线
    vbcwlV 离线
    vbcwl
    在 中回复了 星星星星晴 最后由 编辑
    #22

    @星星星星晴 多谢提醒,一定在了解code以及公式之后在使用模型

    LBE

    1 条回复 最后回复
  • chengan.wangC 离线
    chengan.wangC 离线
    chengan.wang
    在 中回复了 星星星星晴 最后由 编辑
    #23

    @星星星星晴 您好,谢谢回复

    [2] file: /home/chengan/OpenFOAM/chengan-2.4.0/run/sprayFoam/watermist/processor2/0/uniform/lagrangian/sprayCloud/sprayCloudOutputProperties.cloudFunctionObject.particleCollector2.massFlowRate at line 0.
    [2] 
    [2]     From function operator>>(Istream&, Scalar&)
    [2]     in file lnInclude/Scalar.C at line 93.
    [2] 
    FOAM parallel run exiting
    [2] 
    
    particleCollector output:
    --------------------------------------------------------------------------
    MPI_ABORT was invoked on rank 2 in communicator MPI_COMM_WORLD
    with errorcode 1.
    

    这个问题我大概知道怎么回事了,当resetOnWrite no;如果我采用单核计算,这个错误问题就没有出现;resetOnWrite yes;才能用多核并行,但我不知道有没有啥影响。

    第二个问题,我直接在OpenFOAM-2.4.0下面的ParticleCollector.C文件修改,然后在intermediate文件夹下编译,wclean; wmake libso。其它没有动。但是运行结束后在postProcessing文件夹里面没有找到output.txt文件,感觉是没有调用新编译的库文件函数?您的编译方法参考教程能方便发一下么?
    Screenshot from 2022-08-27 16-26-52.png
    Screenshot from 2022-08-27 16-30-31.png

    第三个问题,我用polygon做了一个切片,

        particleCollector2
        {
            type            particleCollector;
    
            mode            polygon;
            polygons
            (
                (
                    (-0.01 0.06 -0.01)
                    (-0.01 0.06 0.01)
                    (0.01 0.06 0.01)
                    (0.01 0.06 -0.01)
                )
            );
            normal          (0 0 1);
    
            negateParcelsOppositeNormal no;
            removeCollected no;
            surfaceFormat   vtk;
            resetOnWrite    yes; 
            log             yes;
        }
    
    

    Screenshot from 2022-08-27 16-43-54.png

    很明显,粒子已经通过我设计的多边形,但是质量流量等于0,这又是什么原因呢?

    1 条回复 最后回复
  • 星 离线
    星 离线
    星星星星晴
    写于 最后由 编辑
    #24

    @chengan-wang

    1. 我没有试过resetOnWrite 这部分,所以我也不知道你这么弄有没有问题。我仅仅是使用output的文件作后处理,套用了particlecollector这个cloudfunction而已,对于其他的东西我并不在意,而且之前总出错,与其用一个无法确定是否正确的东西,不如原始一点自己处理。

    2. 编译教程你可以在google上找很多,最主要的是你编译了一个东西以后,要对其重命名,然后相关引用到该lib的都要引用你新编译的模型,仔细看了一下,你在solver部分是有问题的,但是你编译了spray这个文件了么?编译的新spray有没有用到新的intermediate?solver没有引用新的spray。

    3.如果你像我说的删除掉那部分code的话,自然没有质量的计算啊,所以后处理就是自己写个python script或者你用matlab或者什么后处理文件,因为你文件里面包含了所有hitpatch的数据。

    游荡

    chengan.wangC 1 条回复 最后回复
  • chengan.wangC 离线
    chengan.wangC 离线
    chengan.wang
    在 中回复了 星星星星晴 最后由 编辑
    #25

    @星星星星晴 谢谢

    1. 我直接改原始文件内容,然后在原始的安装包编译,也不用改名,我的理解是既然动态链接,不改文件名,就自然调用了,所以spray这个文件没有重新编译。原始的安装包2.4就是一系列文件编译,我改了其中一个文件内容,相当于安装包版本升级了一下编译,这种理解不对么?
    2. 我没有删除掉code,没有质量的计算,所以觉得很奇怪。
    星 1 条回复 最后回复
  • 星 离线
    星 离线
    星星星星晴
    在 中回复了 chengan.wang 最后由 编辑
    #26

    @chengan-wang

    1. 额,这我就不是很了解了,我也不是code大神,仅仅是使用推荐的方法进行编译,这肯定不会错,正常情况下,建议无论更改了 什么,最好是重新编译一下相关的东西,以免发生错误。有些东西没办法解释。。。就是这么做,也不会思考为什么。

    你修改原始包也没问题,但是不用重新命名。
    但是如果有些东西你自己编译错了,很可能会引发连锁反应,这也是为什么人家推荐用的是

    $USER_LIB_SRC
    
    $LIB_SRC
    

    不是在人家原始的包里面做修改的原因,这样用以区别你自己的东西和原始的东西。
    另外并不是所有人都有root的权限的。
    我个人觉得还是人家推荐的方式比较好。

    1. 这我就不是很清楚了。

    游荡

    chengan.wangC 2 条回复 最后回复
  • chengan.wangC 离线
    chengan.wangC 离线
    chengan.wang
    在 中回复了 星星星星晴 最后由 编辑
    #27

    @星星星星晴 谢谢哈,麻烦您这么久

    1 条回复 最后回复
  • chengan.wangC 离线
    chengan.wangC 离线
    chengan.wang
    在 中回复了 星星星星晴 最后由 编辑
    #28

    @星星星星晴 您好,第三个错误我找到了,normal之前设置不对 改成(0 1 0);就可以了。搞不懂为啥坐标都给了,自己还要定义面的法线方向。

    通过和您交流和自己实践理解,感觉对这个后处理问题最好还是用“2. 输出文件”方法,“1. 将拉格朗日场转到EULER场”这种方法我没有尝试,但是感觉应该属于空间插值,准确行应该是不如直接统计自己指定特定位置上的数据。

    还有两个小疑问,如果我统计某一条线上的数据,实际上粒子很难碰到这条线,所以我应该设置一个很细长的面或者是圆柱吧?

    另外就是有什么比较快捷的方式在polygons设置很多个平面吗?比如20个切面,或者50个。我可以提前编辑好,累加粘贴,但是感觉太麻烦了

            polygons
            (
                (
                    (-0.01 0.06 -0.01)
                    (-0.01 0.06 0.01)
                    (0.01 0.06 0.01)
                    (0.01 0.06 -0.01)
                )
            );
    
    星 1 条回复 最后回复
  • 星 离线
    星 离线
    星星星星晴
    在 中回复了 chengan.wang 最后由 编辑
    #29

    @chengan-wang 在 Euler-Lagrange的一些解析,sprayFoam 中说:

    第三个错误我找到了,normal之前设置不对 改成(0 1 0);就可以了。搞不懂为啥坐标都给了,自己还要定义面的法线方向。
    通过和您交流和自己实践理解,感觉对这个后处理问题最好还是用“2. 输出文件”方法,“1. 将拉格朗日场转到EULER场”这种方法我没有尝试,但是感觉应该属于空间插值,准确行应该是不如直接统计自己指定特定位置上的数据。

    1. 个人认为,定义法向是因为平面可以正面接受parcel 或者背面接受parcel

    2. 不属于空间差值,就相当于一个cell不停的累加数据,比如你想要这个cell内平均的拉格朗日颗粒的直径,通过方法1可以这样,cell内不停的积累数据,然后做一个时间平均,也可以统计cell内通过多少parcel,统计数量等,最大的问题在于不能精确到每个parcel但是可以相对简洁的做统计,比后处理要快,而且是可以可视化的。最大的问题在于如何平均,时间平均还是数目平均,有的时候平均会消除一些统计学数据,见仁见智吧,每个方法都有其相对的好处。

    3. 我不用polygons 所以没对这个部分看,我直接是circle做一个截面。

    游荡

    1 条回复 最后回复
  • vbcwlV 离线
    vbcwlV 离线
    vbcwl
    在 中回复了 星星星星晴 最后由 编辑
    #30

    @星星星星晴 前辈您好,想向您请教一下,openFoam如何调用硬球模型呢?

    LBE

    星 1 条回复 最后回复
  • 星 离线
    星 离线
    星星星星晴
    在 中回复了 vbcwl 最后由 编辑
    #31

    @vbcwl 硬球模型?碰撞?

    默认是这个弹簧模型
    OpenFOAM-8/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairModel/PairSpringSliderDashpot/

    默认的话是这个在kinematiccloud里面,不同的cloud调用的一些模型是不一样的,你要具体看你用的是什么cloud,具体看吧,

    游荡

    vbcwlV 1 条回复 最后回复
  • vbcwlV 离线
    vbcwlV 离线
    vbcwl
    在 中回复了 星星星星晴 最后由 编辑
    #32

    @星星星星晴 前辈您好,我是参考的GOFUN在pimpleFoam上加的粒子。然后这里只有那个PairSpringSliderDashPot软求模型,请问您知道怎么才能调用src/lagrangian/DSMC/submodels/bindaryCollisionModel/LarsenBorgnakkeVariableHardSphere这个可变硬球模型么?

    LBE

    星 2 条回复 最后回复
  • 星 离线
    星 离线
    星星星星晴
    在 中回复了 vbcwl 最后由 编辑
    #33

    @vbcwl
    dsmcFoam吧
    我搜了一下,希望有所帮助,如果有条件请尽量使用某G搜材料,百度太废物

    下面是有人写的解析
    https://zhulianhua.github.io/2016/10/07/of-dsmcFoam/

    这还有一片代尔夫特大学的硕士毕业论文
    https://repository.tudelft.nl/islandora/object/uuid:b0922fd5-9472-4037-9b9c-80af46736ad9/datastream/OBJ/download

    游荡

    1 条回复 最后回复
  • 星 离线
    星 离线
    星星星星晴
    在 中回复了 vbcwl 最后由 编辑
    #34

    @vbcwl 理论上gofun那个方法引入所有的cloud都没问题,只要提供cloud需要的相关field就行,所以你可以尝试在gofun的基础上修改kinematiccloud为dsmccloud 或者你可以修改dsmcfoam 加上pimple 计算即可

    游荡

    vbcwlV 李东岳李 3 条回复 最后回复
  • vbcwlV 离线
    vbcwlV 离线
    vbcwl
    在 中回复了 星星星星晴 最后由 编辑
    #35

    @星星星星晴 感谢前辈:146:

    LBE

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

    @星星星星晴 感谢分享 大佬大佬 :duang: 恨不得送你3个本子

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

    星 1 条回复 最后回复
  • 星 离线
    星 离线
    星星星星晴
    在 中回复了 李东岳 最后由 编辑
    #37

    @李东岳 想找个工作啊

    游荡

    1 条回复 最后回复
  • vbcwlV 离线
    vbcwlV 离线
    vbcwl
    在 中回复了 星星星星晴 最后由 编辑
    #38

    @星星星星晴 我尝试着调用dsmc的cloud,但是在UEqn.H中加入粒子对流体的作用力时无法成功添加,图片上传一直失败,我手打一下报错信息。如果参考GOFUN那个,直接 +invrhoInfdsmcCloud.SU(U) 报错为:expect primary-expression before'.' token +invrhoInfdsmcCloud.SU(U) ,如果吧dsmcCloud改为dsmc 在UEqn后面加+invrhoInf*dsmc.SU(U),报错为has no member named 'SU',请问您知道该怎么把粒子力加到UEqn.H里么

    LBE

    星 1 条回复 最后回复
  • 星 离线
    星 离线
    星星星星晴
    在 中回复了 vbcwl 最后由 编辑
    #39

    @vbcwl 添加该项主要是为了2-way coupling,另外可能调用dsmccloud并不是这样的,请参考之前给你的那个解析,每个cloud调用的方法可能不一样,你可以参考一下其他的cloud是怎么被调用的。
    看看其他求解器

    Info<< nl << "Constructing dsmcCloud " << endl;
        dsmcCloud dsmc("dsmc", mesh);
        Info<< "\nStarting time loop\n" << endl;
        while (runTime.loop())
        {
            Info<< "Time = " << runTime.timeName() << nl << endl;
            dsmc.evolve(); //<<------ 这里是演化步
            dsmc.info();  //<<------ dump到屏幕一些基本信息
            runTime.write(); //<<------- 这里很关键,到底写的是什么
            Info<< nl << "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
                << "  ClockTime = " << runTime.elapsedClockTime() << " s"
                << nl << endl;
        }
        Info<< "End\n" << endl;
    
    

    游荡

    chengan.wangC 1 条回复 最后回复
  • chengan.wangC 离线
    chengan.wangC 离线
    chengan.wang
    在 中回复了 星星星星晴 最后由 编辑
    #40

    @星星星星晴 您好,您推荐的2. 输出文件方法我基本弄明白了,特别适合输出一个平面上不同时刻的统计数据,然后用python数据处理。
    我遇到的问题主要是输出三维规则网格空间点上的水滴质量,把这个数据导入到别的程序中。我尝试过用paraview输出粒子所在空间点数据,因为很不规则,所以之后用python三维插值,但是效果很差。
    所以我觉得您提出的1. 将拉格朗日场转到EULER场比较适合我的情况。但是关于这个代码使用还想请教您几个问题:
    1.

    template<class CloudType>
    Foam::volScalarField& Foam::IVT8_StochasticCollisionModel_2022<CloudType>::PPC() {
    	if (!PPCPtr_.valid() ) {
    		const fvMesh& mesh = this->owner().mesh();
    		PPCPtr_.reset
    		(
    		    new volScalarField
    		    (
    		        IOobject
    		        (
    		            this->owner().name() + ":PPC",
    		            mesh.time().timeName(),
    		            mesh,
    		            IOobject::READ_IF_PRESENT,
    		            IOobject::AUTO_WRITE
    		        ),
    		        mesh,
    		        dimensionedScalar ("zero", dimless, 0.0),
    		        zeroGradientFvPatchScalarField::typeName
    		    )
    		);
    	}
    
    	return PPCPtr_();
    }
    

    这段代码应该是定义了一个函数,应该放在求解器的哪个文件中呢?
    Screenshot from 2022-09-08 15-46-58.png
    或者是自己重新定义一个头文件?

    1. 这个函数中的PPC应该是一个通用模板吧?比如我想输出 p.mass()质量的数据到EULER场,这个PPC直接用mass替换?

    2. 调用的时候您说用下面的代码,我想知道这段代码又是放在对应的哪个文件中呢?

    scalar& PPC = PPCPtr_->primitiveFieldRef() [cellI];
    PPC += 1.0;
    
    星 1 条回复 最后回复

  • 登录

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