请问OpenFOAM中如何在入口添加边界层厚度



  • 我计算的对象是超声速可压缩管流,因为实际情况中入口是有已经发展好的边界层的,所以如果入口条件直接给定速度或者压力,算出来的结果和真实的有边界层的入口是有很大差别的,所以希望能在计算开始的时候就在入口添加一定管道百分比厚度的边界层,我有两个思路,但不知道怎么在OpenFOAM里面实现:
    1.是直接给一定厚度白分比厚度的边界层,我在一片韩国人的论文里看到过这样的设置
    1583850308(1).png
    摘自Numerical study on the start and unstart phenomena in a scramjet inlet-isolator model
    但是我不知道他是怎么设置的,向各位老师和同学求助
    2.截取已经计算好的一个有边界层的Profile直接赋给进口,这个是我使用Fluent里面的用到的操作,相比自己设置入口边界层而言很方便,不需要自己给定壁面温度和压力,直接根据计算的Profile里面的:xiexie: 结果来就可以了,但是这个操作我也不知道在OpenFOAM里面应该怎么实现,我知道好像有一个setFieldsDict什么的文件,但不知道具体怎么设置,要是各位老师和同学知道怎么用的,希望教我一下,非常感谢!


  • OpenFOAM讲师

    关于你的第2个方法,profile是指速度分布么?OpenFOAM我知道有两种方法实现。1、用codedFixedValue。这个类似于FLUENT里面的DEFINE_PROFILE,但需要你最好给定一个profile的函数形式;2、用fixedValue。我的做法是先用writeCellCentres输出每个cell中心点的坐标,找到入口对应的那一部分,然后根据这些坐标算出来每个点的速度(如果速度是从实验结果来的,可能还需要一个简单的线性插值函数)。这时候fixedValue里面的value输入就应该变成 nonuniform List<vector>。你提到你在FLUENT里面也这样弄的,那这一部分应该没问题。



  • 嗯嗯我觉得老师说的这个方法很有启发,我准备先尝试一下第一种方法,谢谢老师:yes:



  • @cccrrryyy 老师您好,我觉得您的第二个方法能有帮助,而且从思路上我觉得是能实现的:xiexie:
    但是老师我对于具体的操作方法还不太清楚,我想问一下老师说的Paraview里面的Cellcenters我会,但具体的writeCellCentres怎么实现,怎么输出我还是不太清楚,我想输出一个界面有U、T、k、omega这些参数然后再将它插值到进口面,这个过程我还打算修改其X坐标为0(为了与进口匹配),同时关于0文件的里面inlet的设置该用什么边界条件具体什么格式我还不知道,有点手足无措的感觉,UserGuide上面讲解的也很粗造,不知道具体该怎么设置,想向老师请教一下老师具体是怎么实现的?谢谢老师~:xinxin:


  • OpenFOAM讲师

    @疾风GAVIN writeCellCentres是在算例路径下直接运行的命令行,输出结果在0文件夹下。一共4个文件,3个文件分别是每个cell中心点的3个方向的坐标,另外1个是cell的体积。每个文件的格式和FOAM那些场量的格式是一样的,也分为internalField和boundaryField,你需要的就是把boundaryField里面你关心的某个边界的坐标复制出来(就按照它原始的顺序,顺序千万不要弄乱了)。

    我一般的做法是,弄出坐标来之后用MATLAB(或者别的啥软件)运行个简单的程序得到每个cell对应的速度值(函数形式或者插值什么的),按照FOAM要求的格式弄好再弄到速度的边界条件里。



  • @cccrrryyy 老师,我这里为什么 会显示 symbol lookup error呀

    jifeng@jifeng-GL552VW:~/OpenFOAM/jifeng-6/yinJun/yinJun_2$ writeCellCentres 
    writeCellCentres: symbol lookup error: writeCellCentres: undefined symbol: _ZNK4Foam11regIOobject11writeObjectENS_8IOstream12streamFormatENS1_13versionNumberENS1_15compressionTypeE
    
    

  • OpenFOAM讲师

    @疾风GAVIN 好像高版本的使用方式改了?我在4.x和以下版本中都用过。代码在OpenFOAM-6/src/functionObjects/field/writeCellCentres/里面,你自己研究下看看~我之前输错了,貌似每个时间文件夹都会输出一遍- -writeCellCentres.png



  • 高版本:postProcess -func writeCellCentres


  • OpenFOAM讲师

    @东岳 感谢!



  • @东岳 谢谢老师!!!



  • 谢谢老师前面的讲解,但我按照顺序给0文件夹中的各个参数的进口赋值了nonuniform List<scalar>和nonuniform List<vector>的边界条件,但我在运行和时候出现了以下错误:

    --> FOAM FATAL IO ERROR: 
    Expected a ')' while reading binaryBlock, found on line 21 the doubleScalar 4.7
    
    file: /home/jifeng/OpenFOAM/jifeng-6/GraduateDesign/Straight_20_0_200_0.98U1BL/0/p at line 21.
    
        From function Foam::Istream& Foam::Istream::readEnd(const char*)
        in file db/IOstreams/IOstreams/Istream.C at line 109.
    
    FOAM exiting
    
    

    我参考了tutorials中用到同样设置的0文件夹,我没有找到设置的不正确的地方,下面是我的p文件:

    FoamFile
    {
    	version             2.0;
    	format              binary;
    	arch                "LSB;label=32;scalar=64";
    	class               volScalarField;
    	location            "0";
    	object              p;
    }
    
    
    dimensions	[1 -1 -2 0 0 0 0];
    internalField				uniform 100000.0;
    boundaryField
    {
    	inlet
    	{
    		type			fixedValue;
    		value			nonuniform List<scalar> 
    59
    (
    105559.3
    106142.5
    102728.5
    104058.5
    105988.4
    104673.2
    104496.1
    104798.2
    104722
    104710.9
    104719.2
    104720.1
    104730.8
    104733.2
    104734
    104727.2
    104725.6
    104750.9
    104773.8
    104843.1
    104878.7
    104986.6
    105056.3
    105129.8
    105207.8
    105255.9
    105315.9
    105348.5
    105349.4
    105378.3
    105346.6
    105345.5
    105313.3
    105254.7
    105207.5
    105124.8
    105053.1
    105003.3
    104907.8
    104863.5
    104812.3
    104775
    104754.5
    104753.6
    104754.6
    104755.9
    104752.2
    104744.7
    104736.2
    104719.5
    104742.3
    104709.9
    104497.9
    105188.1
    105279
    103137.2
    104778
    106991.6
    103429.3
    )
    ;
    	}
    	outlet
    	{
            	type            	waveTransmissive;
            	field           	p;
            	psi             	thermo:psi;
            	gamma           	1.4;
            	fieldInf        	100000.0;
            	lInf            	1;
            	value           	uniform 100000;
    	}
    	wall
    	{
    		type			zeroGradient;
    	}
    	frontAndBackPlanes
    	{
    		type			empty;
    	}
    }
    

    我并没有发现和tutorials里面不一样的地方,希望大家能帮我看一下原因,谢谢:xiexie:



  • @疾风GAVIN
    我的问题解决了,问题出在文件类型上,文件类型应该是C源代码,而不是纯文本文档,现在我已经实现给入口添加边界层的功能了,谢谢各位老师的解答



  • @疾风GAVIN请问OpenFOAM中如何在入口添加边界层厚度 中说:

    源代码,而不是纯文本文档,现在我已经实现给入口添加边界层的功能了

    你模拟的是风场?



  • @东岳 不算是风场吧,是超声速管流,因为我模型前面还有很长一段模型,但前面的部分我不关注,并且为了节省计算资源,我就先算好前面这一步的出口,然后赋值给我这部分的出口,以后不同的工况都直接用这个边界层进口就可以了,也不需要每次都算前面一部分,这是我的本科毕设,先算直管道,再算一定曲率的和变截面的管道,后面再算一些比较成熟的工程模型,从二维到三维。我现在用的用的求解器是rhoCentralFoam,湍流模型是komegaSST,但我发现算出来的的结果和Fluent的差距有点大,一直在调试,现在能算出边界层,但感觉不是很理想。昨天看了老师的rhoCentralFoam解析,发现rhoCentralFoam是很适合于求解超声速可压缩流体的,但还是没有调试好,我这边有一些算好的结果,要是要是有空的话,我可以发给老师老师帮我参考一下~



  • @东岳
    老师这是我目前算出来的一些结果:
    链接: https://pan.baidu.com/s/163fY1uXF_sCCcN9nt1MiCQ
    提取码: w3gp
    网格量很少的,我现在只是想通过调试把路给走通,方便以后的使用


Log in to reply
 

CFD中文网 2016 - 2020 | 京ICP备15017992号-2