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中求解一元高次方程

如何在openfoam中求解一元高次方程

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

    求根可以直接写成任意一个rootFinding函数,可以放在任何subModels下面的.C文件里面?

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

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

    @东岳 大哥,这对我来说有点超纲

    游荡

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

    求解该方程会在下面的这个class里面,但是我不知道在哪能定义f那个函数

    template<class CloudType>
    void Foam::IVT41_StochasticDDCollModel<CloudType>::postMove
    (
        parcelType& p,
        const label cellI,
        const scalar dt,
        const point&,
        bool&
    ) {
    
    //*code
    
    }
    
    

    游荡

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

    @东岳 48a2851c-11ac-4cf6-931d-a3bdbf2855e9-image.png
    上图的函数会在lagrangian/intermediate/submodel/CloudFunctionObjects 里,是自定义的一个模型

    游荡

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

    @东岳 是我着相了。。。我好傻,直接算就好了,干嘛搞一个class function。。。

    scalar k1 = 8.5;
    scalar k2 = 0.45;
    scalar rbu_avg;
    scalar x0 = 0.0;
    scalar x2_rlarge = Dmax/2.0;
    scalar x1_rsmall = Dmin/2.0;
    scalar sat_counter = 0;
    scalar eps = 0.0;
    do
    {
    	scalar x0 = (x2_rlarge + x1_rsmall) / 2.0;
    	scalar x0_ytempavg   = 0.75/sqrt(x0) * k1 *k2 * We0 * pow(x0,7.0/2.0) + pow(x0,2.0) - 1.0 ;
    	scalar x2_ytemplarge = 0.75/sqrt(x2_rlarge) * k1 *k2 * We0 * pow(x2_rlarge,7.0/2.0) + pow(x2_rlarge,2.0) - 1.0 ;
    	scalar x1_ytempsmall = 0.75/sqrt(x1_rsmall) * k1 *k2 * We0 * pow(x1_rsmall,7.0/2.0) + pow(x1_rsmall,2.0) - 1.0 ;
    
    	if( x0_ytempavg * x1_ytempsmall > 0)
    		{
    			x1_rsmall=x0;
    		}
    		else if (x0_ytempavg * x1_ytempsmall < 0)
    		{
    			x2_rlarge = x0;
    		}
    	eps = fabs( x0_ytempavg);
    
    	sat_counter +=1;
    
    	if (sat_counter > 100000)
    	{
    		break;
    	}
    }while(eps > 1e-6);
    
    rbu_avg = x0;
    

    游荡

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

    @星星星星晴 是的

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

    1 条回复 最后回复
  • J 离线
    J 离线
    JqBu
    在 中回复了 星星星星晴 最后由 JqBu 编辑
    #12

    @星星星星晴 老师您好,我遇到了和您一样的问题,但是我把您这段代码算下来,遇到了几个问题:
    1.把这段代码放在OpenFOAM里的时候,会报错说重载的pow()模棱两可,“call of overloaded ‘pow(Foam::scalar&, Foam::scalar)’ is ambiguous”
    2.我用这段代码计算一元高次方程时候总不收敛,请问您之前有这问题吗?
    3.我也关注了您这篇帖子这部分内容,我看2007年的论文“A new predictive model for fragmenting and non-fragmenting binary droplet collisions”里说先把2.7次幂转换成4次幂和3次幂的两个方程,再用Runge-Kutta法进行了四次迭代,但是我没搞懂怎么用Runge-Kutta求解非微分方程,请问老师您后来尝试过用论文里的方法求解方程吗?或者对帖子里这段代码有什么改进吗?

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

    @jqbu 哎呀 难得有个同行,这部分后来我没用二分法
    找到了一个 Newton-Raphson method iteration method。
    可能是当年弄的时候有问题?我也忘了,有点久远。
    反正我这边算起来还行,就再也没动过。

    游荡

    J 1 条回复 最后回复
  • 星 离线
    星 离线
    星星星星晴
    在 中回复了 JqBu 最后由 编辑
    #14

    @jqbu 聊一下~ 你是哪个学校的啊?

    游荡

    1 条回复 最后回复
  • J 离线
    J 离线
    JqBu
    写于 最后由 编辑
    #15

    老师好,我是天津大学的学生,请问老师方便留个邮箱后续沟通吗?

    星 1 条回复 最后回复
  • J 离线
    J 离线
    JqBu
    在 中回复了 星星星星晴 最后由 编辑
    #16

    @星星星星晴 谢谢老师,我也尝试一下这个牛顿迭代法:xinxin:

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

    @jqbu 好的,看我资料~

    游荡

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

    @jqbu m.sui20@foxmail.com 我记得之前资料能显示邮件的。。现在不知道怎么设置回去了

    游荡

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

    @jqbu 在 如何在openfoam中求解一元高次方程 中说:

    会报错说重载的pow()模棱两可,“call of overloaded ‘pow(Foam::scalar&, Foam::scalar)’ is ambiguous”

    用:::pow()或者Foam::pow

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

    1 条回复 最后回复

  • 登录

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