• mfix输出自定义数据


    更新:

    之前提供的方法虽然没有什么问题,但是需要修改的代码太多,比较麻烦,后来又研究了一下,发现实际上数据自定义输出这一块是有现成接口的。

    1)输出网格数据

    参考https://www.cnblogs.com/Jay-CFD/p/10786299.html 这篇文章的方法二,利用 ReactionRates 这个变量来储存和输出。

    2)输出颗粒数据

    利用软件提供的user scalar tracking功能:

    然后只要在需要输出的变量处,把变量保存到 DES_USR_VAR 中即可,例如,我这里要输出颗粒Y方向的加速度:

    输出部分在:

    这里一般不需要修改,可以看到,DES_USR_VAR(:,:)这个数组第一个元素代表第几种自定义DEM标量,第二个元素为颗粒编号。

    重新编译运行就可以看到输出变量了:

    ------------------------------以下为原文---------------------------------

    有时候需要输出一些自定义的网格或者DEM颗粒信息,比如输出颗粒的受力,这里举例颗粒自定义数据的输出。网格自定义输出方法类似。

    首先用FileLocatorPro(网上很多绿色版),搜索一下代码里model文件下的关键字 PostCohesive,如下:

     

    这个变量是专门用来存储颗粒粘性力,以供后处理用的,因此只需要仿照里面的代码添加就可以了。

    下面安装顺序逐一添加代码。

    上面代码是释放内存空间,对于可分配数组,使用完以后需要手动释放,需要使用的时候再为其分配空间。

     这里由于我要输出的是颗粒和壁面重合的值,这部分数据在calc_collision_wall_mod.f里计算得到,所以获取需要输出的数据这部分比较灵活,需要自己去找到对应的代码位置。

     并且这里需要注意一下,这里由于业务逻辑里,只有靠近壁面的颗粒才会计算重叠的值,其他颗粒在循环的时候直接跳过,所以最好在每次进入循环的开始先将内存区置零。

     

     

     这里先给颗粒信息分配内存,然后还得调用real_grow函数,因为颗粒数量有可能计算过程中增加。

     这里是交换颗粒信息,具体作用还没细看。

     在模块里定义可分配数组。当然这部分也可以在usr_mod.f里定义,只要记得在使用到的地方use一下就行了。

     将内存区置零。

     

     写出数据。

     写出数据。似乎对于DEM,定义了两个写出的函数,区别没仔细研究,都加上不会错。

    最后重新cmake一下然后编译即可。有时候自己添加代码直接make会有些莫名奇妙的报错,重新cmake一下一般能解决。

    最后的效果:

    显示的是颗粒和壁面的重合的值。

    对于网格数据,用类似的方法,搜一下VORTICITY这个关键字:

     

    按照上面类似的方法操作即可。

  • 相关阅读:
    Algs4-1.3.44文本编辑器的缓冲区
    Algs4-1.3.42复制栈
    Algs4-1.3.41复制队列采用for方式实现
    Algs4-1.3.39环形缓冲区
    Algs4-1.3.40前移编码
    Algs4-1.3.38删除第k个元素-数组实现
    安全测试的一些漏洞和测试方法
    Java内存自动回收,为什么会有内存泄露?
    三款主流静态源代码安全检测工具比较
    Fortify源码安全检测工具
  • 原文地址:https://www.cnblogs.com/Jay-CFD/p/10621274.html
Copyright © 2020-2023  润新知