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中文网

深蓝深

深蓝

@深蓝
关于
帖子
28
主题
11
群组
0
粉丝
4
关注
1

帖子

最新

  • 有没有openfoam网格文件,写好的正则表达式匹配代码
    深蓝深 深蓝

    小弟需要从openfoam中读取ployMesh文件中的各跟网格相关的文件(boudnary,points,faces等),以及结果文件(U和T),请问有没有现成的正则表达式代码来匹配这些信息啊。

    虽然现在chatgpt能帮助处理下这种工作,但是都不很规范,通用性不是太好。

    (想抄一点现成的代码:xiexie: )


  • 关于置换通风室内气流模拟不收敛问题
    深蓝深 深蓝

    @仲阳 迟复为歉,我的方法是修改壁面普朗特数为0.005,参考张腾飞论文的论文:ZHANG T T, ZHOU H, WANG S. An adjustment to the standard temperature wall function for CFD modeling of indoor convective heat transfer[J]. Building and environment, 2013, 68: 159–169. 如果有问题可以进一步与我联系,乐意回答,我已经给你发送邮件。


  • Fluent中PBM模型中怎么输入已知的粒径分布
    深蓝深 深蓝

    @bestucan 好的,我再去看一看帮助文件,谢谢老师啦:146:


  • Fluent中PBM模型中怎么输入已知的粒径分布
    深蓝深 深蓝

    在使用PBM模型模拟冰浆储存过程中冰颗粒的粒径变化时,冰颗粒的初始粒径分布如下图所示,其中粒径分组是以100为单位递增。请问有大佬知道在fluent中怎么以相同的方式输入粒径分组吗,求求了

    a3a1741d-48a3-49bf-b415-6fa012401815-image.png


  • OpenFOAM python PINN tensorflow gpu (小白,莫笑)
    深蓝深 深蓝

    @mengqiang 我想到的能够用ISIGHT做集成,用ISIGHT调用fluent计算,然后用fluent自动后处理(都用TUI命令),再用ISIGHT调用python进行神经网络训练模型. 这样就不用学openfoam了,fluent也挺好用. 而且ISIGHT还能调用matlab...

    但是感觉不用这么折腾啊,为啥非要集成到一块. 用处理好的数据训练PINN也行啊. 我在用PINN做反演(污染物的溯源):chouchou:


  • fluent数据处理成二维数组
    深蓝深 深蓝

    问题: fluent结果怎么处理为二维数组
    详述: fluent导出的结果为(坐标,坐标,值)的格式,(值)是一个一维数组,但是在神经网络训练的时候需要(值)为二维数组,请问怎么才能转换?示意图如下:
    微信截图_20220214144723.png

    难点:
    1、数据量很大,大概有几万个点
    2、fluent导出的数据很不规矩,(比如x=1的时候应该有y=a,y=b,y=c,x=2的时候应该有y=a,y=b,y=c),但是fluent导出的数,x=1的时候有y=a,y=b,y=c,x=2的时候可能只有y=c(不好解释啊:135: )。二维数组非常稀疏,如下图微信截图_20220214150241.png

    其实我就想要个二维数组来表示二维的物理量场,请大哥大姐们帮帮忙啊:chouchou:


  • UDF宏自变量命名问题
    深蓝深 深蓝

    @ejector 变量的名词不重要,注意变量的类型就行


  • UDS方程计算出来的污染物总量不守恒
    深蓝深 深蓝

    @bestucan 谢谢您的回复
    我已经找到解决办法了,在fluent中通过连续用C_UDSI(c,t,0)_G的办法不可行,又找到另外一种办法,如下:
    未命名1631102135.png
    是通过计算每个cell与周围cell的“浓度差”进行计算的。但是因为fluent只能获取到一个面左右两个网格(c0,c1)的信息,所以这种方法二阶导数最高只有二阶截断误差。想要有四阶阶段误差需要有9个节点的信息(二维),fluent的udf只能获得5个节点的信息。:ok2:


  • UDS方程计算出来的污染物总量不守恒
    深蓝深 深蓝

    @李东岳 是的,确实是这样的


  • 请教一下,这个蓝色和橙色的云图可以用什么软件做?
    深蓝深 深蓝

    这一看就是玉国论文中的图,你也研究室内污染物的传播?我们是同道中人啊:146:


  • UDS方程计算出来的污染物总量不守恒
    深蓝深 深蓝

    @bestucan 谢谢您得持续回复。

    我进行了三次尝试,200*200=40000个网格,密度=1.0时,整个计算域都添加源项,1.0s后,总量为40000,如果是300*300=90000个网格,其他不变时,总量为90000,如果密度变成2.0,总量就是45000。可见跟密度有有关系的,在UDS对流项的宏(DEFINE_UDS_FLUX)里面需要获取网格的密度,UDF手册的表述如下:
    未命名1630154273.png

    我把uds对流项中的密度都设置成1.0常数,没有效果。
    我尝试把uds扩散项设置成常数也没有效果,分析应该是DEFINE_SOURCE宏返回值是一个扩散系数,密度项已经包含在默认的计算中了。
    对流项代码如下:

    DEFINE_UDS_FLUX(QR_flux,f,t,i)
    {
        cell_t c0, c1 = -1;
        Thread *t0, *t1 = NULL;
    
        real NV_VEC(psi_vec), NV_VEC(A), flux = 0.0;
    
        c0 = F_C0(f,t);
        t0 = F_C0_THREAD(f,t);
        F_AREA(A, f, t);
    	
    /* If face lies at domain boundary, use face values. */
    /* BOUNDARY_FACE_THREAD_P(t) expands to a function that returns TRUE if Thread *t is a boundary face thread. */
    
      	if(BOUNDARY_FACE_THREAD_P(t))
        	{
          		real dens;
    	  
    /* Depending on its BC, density may not be set on face thread. */
    /* Test whether the memory for SV_DENSITY has already been allocated on a given Thread or not. */
    
          		if(NNULLP(THREAD_STORAGE(t,SV_DENSITY)))			
            		dens = F_R(f,t);
        		else
            		dens = C_R(c0,t0);
    
          		NV_DS(psi_vec,  =, F_U(f,t), F_V(f,t), F_W(f,t), *, dens);
    
          		flux = 1 * NV_DOT(psi_vec, A);
        	}
      
    /* If face lies IN the domain, use average of adjacent cells. */
      
      	else
       		 {
          		c1 = F_C1(f,t);
          		t1 = F_C1_THREAD(f,t); 
    
          		NV_DS(psi_vec,  =, C_U(c0,t0),C_V(c0,t0),C_W(c0,t0),*,C_R(c0,t0));
          		NV_DS(psi_vec, +=, C_U(c1,t1),C_V(c1,t1),C_W(c1,t1),*,C_R(c1,t1));
    
          		flux = 1 * NV_DOT(psi_vec, A)/2.0;
        	}
    
      	return flux;
        
    }
    

    ###另外还有个小问题想请教您一下:
    未命名1630154958.png
    问题:UDS的方程中,瞬态项和对流项的处理都有现成可用的宏,我的方程中需要添加一个四阶导数项,看来只能放在源项中,源项处理四阶导数项的话,需要自己编写四阶导数吗,源项的线性化怎么处理……,您对处理这个四阶导数项有什么建议:chouchou:

    再次谢谢您得回复!!:xinxin2:
    尝试的代码如下:

    
    DEFINE_SOURCE(QR_source_2d, c, t, dS, eqn)
    {
    	real source;
    	real epsilon; 														/*stability coefficient*/
    	real rho;
    
    		
    C_UDSI(c,t,1) = C_UDSI_G(c,t,0)[0];							/*DcDx, returns the x-component of the UDS gradient vector*/	
    C_UDSI(c,t,2) = C_UDSI_G(c,t,1)[0];							/*DcDxx, returns the x-component of the UDS gradient vector*/	
    C_UDSI(c,t,3) = C_UDSI_G(c,t,2)[0];							/*DcDxxx, returns the x-component of the UDS gradient vector*/	
    C_UDSI(c,t,4) = C_UDSI_G(c,t,3)[0];							/*DcDxxxx, returns the x-component of the UDS gradient vector*/		
    C_UDSI(c,t,5) = C_UDSI_G(c,t,0)[1];							/*DcDy, returns the y-component of the UDS gradient vector*/	
    C_UDSI(c,t,6) = C_UDSI_G(c,t,5)[1];							/*DcDy, returns the y-component of the UDS gradient vector*/	
    C_UDSI(c,t,7) = C_UDSI_G(c,t,6)[1];							/*DcDyyy, returns the y-component of the UDS gradient vector*/	
    C_UDSI(c,t,8) = C_UDSI_G(c,t,7)[1];							/*DcDyyyy, returns the y-component of the UDS gradient vector*/
    
    epsilon = 5*pow(10,-6);
    rho = C_R(c,t);
    source = rho * epsilon * (C_UDSI(c,t,4) + C_UDSI(c,t,8));	/*dcdxxxx+dcdyyyy*/
    			
    dS[eqn] = 0;												/*source linearization*/
    			
    return source;
    					
    }
    
    
    

  • UDS方程计算出来的污染物总量不守恒
    深蓝深 深蓝

    @bestucan 谢谢您得回复,通过您得建议,经过我几次尝试,结果如下:

    方法一:
    初始化所有区域的uds=0,u=2m/s,空气密度为1kg/m3
    Patch方块的uds=1
    方块的网格数量为29*29
    uds的总和为 29*29*1=841
    经过0.5s的发展如右图,uds的总和还是841
    Note:
    1、如果密度为2 kg/m3,则uds的总和为420
    8191.png

    方法二:
    初始化所有区域的uds=0,空气密度为1kg/m3
    设置方块的source=1
    方块的网格数量为29*29
    进过0.5s的释放和发展如右图(线性增加),uds的总和为420
    Note:
    1、 如果密度为0.5 kg/m3,则uds的总和为840
    2、 如果是稳态计算,uds是线性增加的
    8192.png
    8193.png
    所以,source的单位应该是generation-rate*density/cell numbers

    这里面需要计算网格的数量,我想udf怎么得到网格的数量呢,找了半天没有合适的,C_NNODES可以用来计算cell的节点数量,F_NNODES可以计算网格面上节点的数量,C_NFACES可以计算网格中面的数量,是否能间接得到网格的数量,但是udf手册中没有这个实例,但是在计算的时候编译一直通过不了,呜呜呜:135: ,代码如下:

    #include "udf.h"
    #include "mem.h"
    DEFINE_ON_DEMAND(name)
    {	
    	int sum=0;
    	Thread *t;
    	cell_t c;	
    		begin_c_loop(c, t)
    			{									
    			  {
    			    sum+=C_NNODES(c, t);
    			  }
    			}
    		end_c_loop(c, t)
    			
    	Message0("\n num=%f\n",num/4.0);
    		
    }
    
    

  • UDS方程计算出来的污染物总量不守恒
    深蓝深 深蓝

    @bestucan 谢谢您得回复,在fluent 的udf手册中写道,源项的单位是generation-rate/volume,单位体积的生成率在往外传递的时候不应该是一个通量吗?设置的“值”或是设置“通量”是否是对应的边界条件,而这个地方设置的是源项。

    如果我的目的是放置一个1kg的污染物在这儿,看他随时间扩散后质量的变化情况,请问改怎么设置啊。
    818.png


  • UDS方程计算出来的污染物总量不守恒
    深蓝深 深蓝

    问题: UDS方程在封闭计算域内的计算出来的污染物总量不守恒。
    详细描述:
    我需要用FLUENT的UDS方程计算污染物的传播
    UDS标量方法:
    $$\frac { \partial \rho \phi } { \partial t } + \frac { \partial \rho U \phi} { \partial x } = \frac { \partial } { \partial x } (\Gamma _ { \Phi ,eff } \frac { \partial \phi } { \partial x } ) + S _ { 0 }$$
    我在一个正方形内计算污染物的扩散,无进出口,长宽为10m* 10m,具体如图:
    图片2.png
    在计算域中间设置了UDS的源项,源的大小为0.2m*0.2m,释放时间为0.1s,代码很简单,如下:
    第一种方法:

    DEFINE_SOURCE(aerosol_source,c,t,dS,eqn)
    {
       real x[ND_ND];
       real con, source;
       C_CENTROID(x,c,t);
      
       if(x[0]>4.5&&x[0]<5.0&&x[1]>4.5&&x[1]<5.0)
           {
            source=1;
            }
       else
           {
            source=0;
            }
    
       dS[eqn] = 0;
       return source;
    }
    
    

    第二种方法
    或者Mark一个区域出来,把这个区域的source设为1,其他区域的source设为0。如图:
    图片8.png

    所说的守恒就是源的释放量(udf手册说DEFINE_SOURCE宏的source的单位是产生率/m3,如果是质量源就是kg/(s-m3))乘释放时间,再乘释放体积应该等于总量,但是上述两种source设置方法得到的结果在计算域中统计都不守恒。
    这两种方法计算出来结果还不同,如下:
    第一种方法:
    图片3.png
    图片5.png
    第二种方法:
    图片4.png
    图片6.png
    第一种方法为15.99,第二种方法为2.04。
    疑问:
    按理来说应该等于$0.2* 0.2*0.1=0.004$,这算出来跟释放源完全不守恒,请问大家这是什么原因呢?:135:


  • 关于Fluent UDF有哪些明显的局限性?
    深蓝深 深蓝

    最近几天恶补了一把UDF,觉得挺万能的,自己的使用经验比较匮乏,请问在使用过程中有哪些明显的局限性呢?


  • ANSYS2020字体太大,显示不全
    深蓝深 深蓝

    @CambridgeARDC 哈哈,我换回了2019版本,等等2020的R2吧,可能会解决问题


  • ANSYS2020字体太大,显示不全
    深蓝深 深蓝

    good idea!


  • ANSYS2020字体太大,显示不全
    深蓝深 深蓝

    各位老哥,请教一个小问题。

    今天我安装了ANSYS2020的版本,装完后碰到一个小问题——fluent和cfd-post的界面字体太大了(如图1和图2所示),根本没法使用。其他的软件(如ICEM,workbench,SCDM)字体大小显示都正常。

    我尝试的办法:
    1、改高分屏的分辨率兼容性(如图3),结果有一定的效果,但是界面的分辨率下降率不少,看着好难受,并且界面还是排布不开(如图4)。
    2、另外找了一个安装包,下载安装后,面临同样的问题。
    3、在网站查找了修改fluent字体大小的方法:“首先在安装路径里找到一个文件cxdisplay.qss;将文件用记事本打开后,查找font;最后将相关的字体改大保存即可。”尝试修改后,根本没效果。

    重启什么的也试了很多次了。

    请各位老哥帮忙看了下这怎么办呀!多谢!:quwan:

    附图:
    1.png 图1
    2.png 图2
    3.png 图3
    4.png 图4


  • 相变UDF求助
    深蓝深 深蓝

    @Mikasa 我写的UDF与你的程序相似,同样出现了在FLUENT当中添加mass transfer就发散的问题,请问您是怎样解决的?


  • UDF求计算域中某网格到壁面的最近距离(C_WALL_DIST宏)
    深蓝深 深蓝

    谢谢李老师的回复。
    我想求的不是网格中心到网格边上的距离,是网格中心到最近的壁面边界的距离(比如说在一个房间内,房间内部的某个网格到最近墙壁的距离)。
    谢谢李老师的提醒,我突然想到一个办法,就是对每个网格中心点的x,y,z坐标进行大小判断,找出最小的那个,感觉可以,我先试试。
    :xiabanle:

  • 登录

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