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
8 帖子 3 发布者 5.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 波 离线
    波 离线
    波流力
    写于2020年7月24日 02:54 最后由 编辑
    #1

    请教大家一个编程问题,如何将这个监测受力的文件编写成一个函数,并且只提供边界名称作为参数,以后受力监测只需要调用该函数,并且提供边界名称即可,希望能得到大家的帮助。

    forces_object
    {
    type forces;
    functionObjectLibs ("libforces.so");
    
    //writeControl outputTime;
    writeControl   timeStep;
    writeInterval  1;
    
    //// Patches to sample
    //patches ("body1" "body2" "body3");
    patches ("cylinder");
    
    //// Name of fields
    pName p;
    Uname U;
    
    //// Density
    rho rhoInf;
    rhoInf 1.;
    
    //// Centre of rotation
    CofR (0 0 0);
    }
    
    X 1 条回复 最后回复 2020年7月24日 14:04
  • X 在线
    X 在线
    xpqiu 超神
    在 2020年7月24日 14:04 中回复了 波流力 最后由 编辑
    #2

    @波流力 找到 src/functionObjects/forces 目录,改造下面的 forces.H 和 forces.C,看懂他是怎么计算受力的,然后把有用的部分拿出来,写成一个新函数。需要处理的问题主要有两个,一个是把跟 functionObjects框架的部分剥离,另一个是用其他方式提供本来是有functionObjects框架提供的变量,主要是湍流接口,U场和p场。

    波 1 条回复 最后回复 2020年7月24日 14:15
  • 波 离线
    波 离线
    波流力
    在 2020年7月24日 14:15 中回复了 xpqiu 最后由 编辑
    #3

    @xpqiu 好的,非常感谢,我试试看能不能弄,解决不了就使用他原来的函数,就是太麻烦了。因为我做的是群桩的数值模拟,要监测近百根圆柱的受力实在太麻烦了。

    X 1 条回复 最后回复 2020年7月24日 14:58
  • X 在线
    X 在线
    xpqiu 超神
    在 2020年7月24日 14:58 中回复了 波流力 最后由 编辑
    #4

    @波流力 是要每个圆柱的受力分开监控吗?

    波 1 条回复 最后回复 2020年7月25日 02:00
  • 波 离线
    波 离线
    波流力
    写于2020年7月25日 01:59 最后由 编辑
    #5

    是的,需要分别监测单根圆柱的受力大小。

    1 条回复 最后回复
  • 波 离线
    波 离线
    波流力
    在 2020年7月25日 02:00 中回复了 xpqiu 最后由 编辑
    #6

    @xpqiu 试看了一下代码,基础太差了,搞不成~~~~~~~

    1 条回复 最后回复
  • B 离线
    B 离线
    BlookCFD
    写于2020年7月25日 02:45 最后由 编辑
    #7

    把patches以外的内容,单独写成一个文件,然后include进来,应该就可以

    波 1 条回复 最后回复 2020年7月25日 05:52
  • 波 离线
    波 离线
    波流力
    在 2020年7月25日 05:52 中回复了 BlookCFD 最后由 李东岳 编辑 2020年7月25日 15:18
    #8

    @BlookCFD 解决了,受到下面代码的启发,即重复利用代码,更新边界名称即可

      p
        {
            solver           GAMG;
            tolerance        1e-6;
            relTol           0;
            smoother         GaussSeidel;
            nPreSweeps       0;
            nPostSweeps      2;
            cacheAgglomeration on;
            agglomerator     faceAreaPair;
            nCellsInCoarsestLevel 100;
            mergeLevels      1;
        }
    
        pFinal
        {
            $p;
            relTol          0;
        }
    
    最后的要实现结果如下图:
     forceCoeffs_object
        {
    	// rhoInf - reference density
    	// CofR - Centre of rotation
    	// dragDir - Direction of drag coefficient
    	// liftDir - Direction of lift coefficient
    	// pitchAxis - Pitching moment axis
    	// magUinf - free stream velocity magnitude
    	// lRef - reference length
    	// Aref - reference area
    	type forceCoeffs;
    	functionObjectLibs ("libforces.so");
    	//patches ("body1" "body2" "body3");
    	patches (C0);
    
    	pName p;
    	Uname U;
    	rho rhoInf;
    	rhoInf 1.0;
    
    	//// Dump to file
    	log true;
    
    	CofR (0.0 0 0);
    	liftDir (0 1 0);
    	dragDir (1 0 0);
    	pitchAxis (0 0 1);
    	magUInf 1.0;
    	lRef 1.0;         // reference lenght for moments!!!
    	Aref 2.0;         // reference area 1 for 2d
    
            writeControl   timeStep;
            writeInterval  1;
        }
    
    //监测新的边界条件,只需要重复利用代码,更新边界名称即可
    C1
    {
    $forceCoeffs_object
    	patches (C1);
    
    }
    1 条回复 最后回复
2020年7月24日 02:54

8/8

2020年7月25日 05:52

2020年7月25日 05:52
  • 登录

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