请教一个入口非均匀风速设置的问题



  • 想把入口设置成大气边界层,
    对于高度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
    	
    	 #};
        }
    
        
    }
    
    

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



  • 发现用代码高亮反而让人看的不方便
    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
    
     #};
    }
    

    }



  • code
            #{
                const fvPatch& boundaryPatch = this -> patch();
                vectorField U = boundaryPatch.Cf();
                forAll (boundaryPatch, faceI)
                {
                    scalar y = boundaryPatch.Cf()[faceI].y();
                    U[faceI] = vector(* , * , *);
                }
                opertor == (U);
             #};
    

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



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



  • 以前没学过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);
    					}
    				}
    		#};
    

Log in to reply