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
5 帖子 2 发布者 4.7k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • M 离线
    M 离线
    Mania
    写于 最后由 编辑
    #1

    想把入口设置成大气边界层,
    对于高度z小于300,速度x=20*(z/25)^0.15,
    高度300=<z<1000,x=29.03
    (整个流场高度就是1000m,所以这里就有一个小疑问,需不需要写上<1000的条件,Q1)

    代码我是先再论坛里搜了一下,然后自己琢磨的,没有写过代码所以希望哪位大神能指点一下

    dimensions      [0 1 -1 0 0 0 0];
    
    internalField   uniform (0 0 0);
    
    boundaryField
    {
        INLET
        {
    	type			codedfixedValue;
    	value			uniform (x 0 0);
    	name          	uuu;//我看有的帖子里说name是一定要有的,但是后面的可以随便写,是这样的么Q2;还有的写的是redirectType    XXX;,所以也想请教一下有什么区别,还是说是不一样的情况Q3
    
    	code
            #{
    		const fvPatch& boundaryPatch = patch();//这个意思是获取inlet这个边界面么Q4
    		scalar z = boundaryPatch.z();//这里我是想定义高度z,但是不知道怎么定义,就这样写的,感觉肯定不对Q5
    		
    		forAll( patch())
    		
    		if z<300  x==20*(z/25)^0.15;
    		
    		if 300=<z<1000 x=29.03
    	
    	 #};
        }
    
        
    }
    
    

    希望有大佬能指点一下,非常感谢

    1 条回复 最后回复
  • M 离线
    M 离线
    Mania
    写于 最后由 编辑
    #2

    发现用代码高亮反而让人看的不方便
    dimensions [0 1 -1 0 0 0 0];

    internalField uniform (0 0 0);

    boundaryField
    {
    INLET
    {
    type codedfixedValue;
    value uniform (x 0 0);
    name uuu;//我看有的帖子里说name是一定要有的,但是后面的可以随便写,是这样的么Q2;还有的写的是redirectType XXX;,所以也想请教一下有什么区别,还是说是不一样的情况Q3

    code
        #{
    	const fvPatch& boundaryPatch = patch();//这个意思是获取inlet这个边界面么Q4
    	scalar z = boundaryPatch.z();//这里我是想定义高度z,但是不知道怎么定义,就这样写的,感觉肯定不对Q5
    	
    	forAll( patch())
    	
    	if z<300  x==20*(z/25)^0.15;
    	
    	if 300=<z<1000 x=29.03
    
     #};
    }
    

    }

    1 条回复 最后回复
  • C 离线
    C 离线
    calrel
    写于 最后由 李东岳 编辑
    #3
    code
            #{
                const fvPatch& boundaryPatch = this -> patch();
                vectorField U = boundaryPatch.Cf();
                forAll (boundaryPatch, faceI)
                {
                    scalar y = boundaryPatch.Cf()[faceI].y();
                    U[faceI] = vector(* , * , *);
                }
                opertor == (U);
             #};
    

    我是这样整的,运行没问题,但当时有别的事,没有继续算下去,你试试吧

    M 1 条回复 最后回复
  • M 离线
    M 离线
    Mania
    在 中回复了 calrel 最后由 编辑
    #4

    @calrel 好的~~~谢谢你,我前两天电脑画网格卡死了,没能上网及时回复你,现在试试,非常感谢

    1 条回复 最后回复
  • M 离线
    M 离线
    Mania
    写于 最后由 李东岳 编辑
    #5

    以前没学过c+,这几天看了看琢磨一下,
    最后我是这样设置的

    INLET
        {
    		type            codedFixedValue;
    		value           uniform (0 0 0);
    		name			IN;
    		code
    		#{
    				const vectorField& Cf = patch().Cf();
    
    				vectorField& field = *this;
    
    				forAll(Cf,faceI)
    				{
    					if( Cf[faceI].z()<300)
    					{
    						field[faceI] = vector(20*pow((Cf[faceI].z()/10), 0.15), 0, 0);
    					}else{
    						field[faceI] = vector(30, 0, 0);
    					}
    				}
    		#};
    
    1 条回复 最后回复

  • 登录

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