请问大神fluentdata中UDF的ID问题

小木虫 --- 700万学术达人喜爱的学术科研平台
热门搜索:
&&FLUENT中关于UDF问题
FLUENT中关于UDF问题
动网格那三个宏都什么意思啊(DEFINE_GC_MOTION,&&DEFINE_GEOM, DEFINE_GRID_MOTION)&&
,要实现一个三维网格直线匀加速运动用那个好呢,运动规律V=200t,
函数该怎么编写啊,
这个就可以实现x方向的加速度200m/s的运动吗。TIME&0.0007是什么额意思呢,还有第一个cg-vel=200这个应该是cg-vel【0】吧,
学术必备与600万学术达人在线互动!
扫描下载送金币FLuent 中多步反应UDF如何分别获得各反应的ID_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
FLuent 中多步反应UDF如何分别获得各反应的ID
如题,正在编一个三步反应的udf,但是不懂怎么获取哥哥反应的ID。
#include &udf.h&
DEFINE_VR_RATE(vol_reac_rate,c,t,r,wk,yk,rate,rr_t)
rate[1] = 0.1;
rate[3] = 1.;
rate[2] = 2.;
比如用 rate[...
您的回答被采纳后将获得:
系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏30(财富值+成长值)
我有更好的答案
编译UDF执行起来较快。UDF中可使用标准C语言的库函数,也可使用Fluent Inc用户自定义函数,或UDF.提供的预定义宏,是用户自编的程序,它可以动态的连接到Fluent求解器上来提高求解器性能。用户自定义函数用C语言编写。使用DEFINE宏来定义。解释UDF用起来简单,但是有源代码和速度方面的限制不足,通过这些预定义宏,可以获得Fluent求解器得到的数据。UDF使用时可以被当作解释函数或编译函数。解释函数在运行时读入并解释。而编译UDF则在编译时被嵌入共享库中并与Fluent连接,也没有源代码限制,但设置和使用较为麻烦
各个反应的id就是定义化学反应用户界面上的id
为您推荐:
其他类似问题
udf的相关知识
换一换
回答问题,赢新手礼包只需一步,快速开始
扫一扫,访问微社区
后使用快捷导航没有帐号?
查看: 1048|回复: 4
求助:UDF在load时出现错误的问题
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
我的系统是win7 64位,fluent版本14.5.7,vs2010,这段时间做个模拟需要用到udf(采用自某优秀硕士学位论文),在build的时候貌似正常,但是在load时会出错,请教各位大神,这到底是什么问题呢?
看了很多关于环境变量的帖子,我也照着设置过,环境变量如下:
include&&E:\Program Files\Visual Studio 10\VC\C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\IE:\Program Files\Visual Studio 10\VC\atlmfc\include
lib& &E:\Program Files\Visual Studio 10\VC\lib\amd64;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64;E:\Program Files\Visual Studio 10\VC\atlmfc\lib\amd64
path& &C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\IDE;E:\Program Files\Visual Studio 10\VC\C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;e:\program files\ansys inc\v145\fluent\ntbin\win64;E:\Program Files\ANSYS Inc\v145\fluent\fluent14.5.7\src\
FLUENT_INC& & e:\program files\ansys inc\v145\fluent
udf源文件如下:
#include &udf.h&
real NV_VEC(A);
real NV_VEC(B);
real sum_T_A;
real sum_A;
Thread *thread_
DEFINE_ADJUST(adjust,d)
& & sum_T_A=0;
&&sum_A=0;
&&domain=Get_Domain(3);
&&thread_out=Lookup_Thread(domain,2);
&&begin_f_loop(f,thread_out)
& && & F_AREA(A,f,thread_out);
& && & sum_A+=NV_MAG(A);
& && & avg_temp=F_FLUX(f,thread_out)*NV_MAG(A);
& && & sum_T_A+=avg_
& &&&end_f_loop(f,thread_out)
& & avg_temp=sum_T_A/sum_A;
& && &printf(&Volume integral of turbulent dissipation:%g\n&,sum_T_A);
& && &printf(&Volume integral of turbulent dissipation:%g\n&,sum_A);
DEFINE_PROFLIE(inlet_FLUX,t,i)
& & begin_f_loop(f,t)
& && &&&F_PROFILE(f,t,i)=avg_temp*;
& & end_f_loop(f,t)
原来流体中文网只有在别人分享资源的时候才有人
试试这个方法:右键桌面上fluent,复制应用程序路径,然后在开始菜单打开visual studio tool&visual studio x64 命令提示符,把fluent路径粘贴进去,enter打开,再编译加载。
十分感谢,我去试试&
试试这个方法:右键桌面上fluent,复制应用程序路径,然后在开始菜单打开visual studio tool&visual studio ...
十分感谢,我去试试
还有个问题就是现在fluent不同版本的udf不一定通用。
所以建议检查下udf是否符合你用的新版本的udf规则。
Powered by
&nbsp &nbsp[转载]fluent里的常见问题(二)
13 & 求解器为flunet5/6在设置边界条件时,specify
types下的types中有三项关于interior,interface,internal设置,在什么情况下设置相应的条件?它们之间的区别是什么?interior好像是把边界设置为内容默认的一部分;interface是两个不同区域的边界区,比如说离心泵的叶轮旋转区和叶轮出口的交界面;internal;请问以上三种每个的功能?最好能举一两个例子说明一下,因为这三个都是内部条件吧,好像用的很多。interface,interior,internal
boundary区别?
  在Fluent中,Interface意思为“交接面”,主要用途有三个:多重坐标系模型中静态区域与运动区域之间的交接面的定义;滑移网格交接处的交接面定义,例如:两车交会,转子与定子叶栅模型,等等,在Fluent中,interface的交接重合处默认为interior,非重合处默认为wall;非一致网格交接处,例如:上下网格网格间距不同等。Interior意思为“内部的”,在Fluent中指计算区域。Internal意思为“内部的”,比如说内能,内部放射率等,具体应用不太清楚。
FLUENT并行计算中Flexlm如何对多个License的管理?
  在FLEXlm LMTOOLS Utility-〉config
services-&service name里选好你要启动的软件的配备的service
name,然后配置好下边的path to the lmgrd.exe file和path to the license
file,然后save service,转到FLEXlm LMTOOLS Utility-&config
services-〉start/stop/reread下,选中要启动的license,start server即可
15 在“solver”中2D
、axisymmetric和axisymmetric swirl如何区别?对于2D和3D各有什么适用范围?
  从字面的意思很好理解axisymmetric和axisymmetric
swirl的差别:axisymmetric:是轴对称的意思,也就是关于一个坐标轴对称,2D的axisymmetric问题仍为2D问题。而axisymmetric
swirl:是轴对称旋转的意思,就是一个区域关于一条坐标轴回转所产生的区域,这产生的将是一个回转体,是3D的问题。在Fluent中使用这个,是将一个3D的问题简化为2D问题,减少计算量,需要注意的是,在Fluent中,回转轴必须是x轴。
在设置速度边界条件时,提到了“Velocity
formulation(Absolute和Relative)”都是指的动量方程的相对速度表示和绝对速度表示,这两个速度如何理解?&
  在定义速度入口边界条件时,Reference
Frame中有Absolute和Relative to Adjacent Cell
Zone的选项,关于这个,Fluent用户手册上是这样写的:“ If the cell zone adjacent to the
velocity inlet is moving, you can choose to specify relative or
absolute velocities by selecting Relative to Adjacent Cell Zone or
Absolute in the Reference Frame drop-down list. If the adjacent
cell zone is not moving, Absolute and Relative to Adjacent Cell
Zone will be equivalent, so you need not visit the list. ”
如果速度入口处的单元在计算的过程中有运动发生的情况(如果你使用了运动参考系或者滑移网格),你可以选择使用指定相对于邻近单元区域的速度或在参考坐标系中的绝对速度来定于入口处的速度;如果速度入口处的相邻单元在计算过程中没有发生运动,那么这两种方法所定义的速度是等价的。&
  Specifying Relative or Absolute
Velocity If the cell zone adjacent to the wall is moving (e.g., if
you are using a moving reference frame or a sliding mesh), you can
choose to specify velocities relative to the zone motion by
enabling the Relative to Adjacent Cell Zone option. If you choose
to specify relative velocities, a velocity of zero means that the
wall is stationary in the relative frame, and therefore moving at
the speed of the adjacent cell zone in the absolute frame. If you
choose to specify absolute velocities (by enabling the Absolute
option), a velocity of zero means that the wall is stationary in
the absolute frame, and therefore moving at the speed of the
adjacent cell zone--but in the opposite direction--in the relative
reference frame. If you are using one or more moving reference
frames, sliding meshes, or mixing planes, and you want the wall to
be fixed in the moving frame, it is recommended that you specify
relative velocities (the default) rather than absolute velocities.
Then, if you modify the speed of the adjacent cell zone, you will
not need to make any changes to the wall velocities, as you would
if you specified absolute velocities. Note that if the adjacent
cell zone is not moving, the absolute and relative options are
equivalent.&
  这个问题好像问的不是特别清楚,在Fluent6.3中,问题出现的这个Velocity
formulation(Absolute和Relative)设置,应该是设置求解器时出现的选项,在使用Pressure-based的求解器时,Fluent允许用户定义的速度形式有绝对的和相对的,使用相对的速度形式是为了在Fluent中使用运动参考系以及滑移网格方便定义速度,关于这两个速度的理解很简单,可以参考上面的说明;如果使用Density-based的求解器,这个求解器的算法只允许统一使用绝对的速度形式。
对于出口有回流的问题,在出口应该选用什么样的边界条件(压力出口边界条件、质量出口边界条件等)计算效果会更好?答:给定流动出口的静压。对于有回流的出口,压力出口边界条件比质量出口边界条件边界条件更容易收敛。
压力出口边界条件压力根据内部流动计算结果给定。其它量都是根据内部流动外推出边界条件。该边界条件可以处理出口有回流问题,合理的给定出口回流条件,有利于解决有回流出口问题的收敛困难问题。
出口回流条件需要给定:回流总温(如果有能量方程),湍流参数(湍流计算),回流组分质量分数(有限速率模型模拟组分输运),混合物质量分数及其方差(PDF&&
计算燃烧)。如果有回流出现,给的表压将视为总压,所以不必给出回流压力。回流流动方向与出口边界垂直。
对于不同求解器,离散格式的选择应注意哪些细节?实际计算中一阶迎风差分与二阶迎风差分有什么异同?
  离散格式对求解器性能的影响&
  控制方程的扩散项一般采用中心差分格式离散,而对流项则可采用多种不同的格式进行离散。Fluent允许用户为对流项选择不同的离散格式(注意:粘性项总是自动地使用二阶精度的离散格式)。默认情况下,当使用分离式求解器时,所有方程中的对流项均用一阶迎风格式离散;当使用耦合式求解器时,流动方程使用二阶精度格式,其他方程使用一阶精度格式进行离散。此外,当选择分离式求解器时,用户还可为压力选择插值方式。
当流动与网格对齐时,如使用四边形或六面体网格模拟层流流动,使用一阶精度离散格式是可以接受的。但当流动斜穿网格线时,一阶精度格式将产生明显的离散误差(数值扩散)。因此,对于2D三角形及3D四面体网格,注意使用二阶精度格式,特别是对复杂流动更是如此。一般来讲,在一阶精度格式下容易收敛,但精度较差。有时,为了加快计算速度,可先在一阶精度格式下计算,然后再转到二阶精度格式下计算。如果使用二阶精度格式遇到难于收敛的情况,则可考虑改换一阶精度格式。
对于转动及有旋流的计算,在使用四边形及六面体网格式,具有三阶精度的QUICK格式可能产生比二阶精度更好的结果。但是,一般情况下,用二阶精度就已足够,即使使用QUICK格式,结果也不一定好。乘方格式(Power-law
Scheme)一般产生与一阶精度格式相同精度的结果。中心差分格式一般只用于大涡模拟,而且要求网格很细的情况。
对于FLUENT的耦合解算器,对时间步进格式的主要控制是Courant数(CFL),那么Courant数对计算结果有何影响?
  courant
number实际上是指时间步长和空间步长的相对关系,系统自动减小courant数,这种情况一般出现在存在尖锐外形的计算域,当局部的流速过大或者压差过大时出错,把局部的网格加密再试一下。
在Fluent中,用courant number来调节计算的稳定性与收敛性。一般来说,随着courant
number的从小到大的变化,收敛速度逐渐加快,但是稳定性逐渐降低。所以具体的问题,在计算的过程中,最好是把courant
number从小开始设置,看看迭代残差的收敛情况,如果收敛速度较慢而且比较稳定的话,可以适当的增加courant
number的大小,根据自己具体的问题,找出一个比较合适的courant
number,让收敛速度能够足够的快,而且能够保持它的稳定性。
在分离求解器中,FLUENT提供了压力速度耦和的三种方法:SIMPLE,SIMPLEC及PISO,它们的应用有什么不同
  在FLUENT中,可以使用标准SIMPLE算法和SIMPLEC(SIMPLE-Consistent)算法,默认是SIMPLE算法,但是对于许多问题如果使用SIMPLEC可能会得到更好的结果,尤其是可以应用增加的亚松驰迭代时,具体介绍如下:
对于相对简单的问题(如:没有附加模型激活的层流流动),其收敛性已经被压力速度耦合所限制,你通常可以用SIMPLEC算法很快得到收敛解。在SIMPLEC中,压力校正亚松驰因子通常设为1.0,它有助于收敛。但是,在有些问题中,将压力校正松弛因子增加到1.0可能会导致不稳定。
对于所有的过渡流动计算,强烈推荐使用PISO算法邻近校正。它允许你使用大的时间步,而且对于动量和压力都可以使用亚松驰因子1.0。对于定常状态问题,具有邻近校正的PISO并不会比具有较好的亚松驰因子的SIMPLE或SIMPLEC好。对于具有较大扭曲网格上的定常状态和过渡计算推荐使用PISO倾斜校正。当你使用PISO邻近校正时,对所有方程都推荐使用亚松驰因子为1.0或者接近1.0。如果你只对高度扭曲的网格使用PISO倾斜校正,请设定动量和压力的亚松驰因子之和为1.0比如:压力亚松驰因子0.3,动量亚松驰因子0.7)。如果你同时使用PISO的两种校正方法,推荐参阅PISO邻近校正中所用的方法
对于大多数情况,在选择选择压力插值格式时,标准格式已经足够了,但是对于特定的某些模型使用其它格式有什么特别的要求?
  压力插值方式的列表只在使用Pressure-based求解器中出现。一般情况下可选择Standard;对于含有高回旋数的流动,高Rayleigh数的自然对流,高速旋转流动,多孔介质流动,高曲率计算区域等流动情况,选择PRESTO格式;对于可压缩流动,选择Second
Order;当然也可以选择Second Order以提高精度;对于含有大体力的流动,选择Body Force
Weighted。注意:Second
Order格式不可以用于多孔介质;在使用VOF和Mixture多相流模型时,只能使用PRESTO或Body Force
Weighted格式。关于压力插值格式的详细内容,请参考Fluent用户手册
讨论在数值模拟过程中采用四面体网格计算效果好,还是采用六面体网格更妙呢?
  在2D中,FLUENT
可以使用三角形和四边形单元以及它们的混合单元所构成的网格。在3D中,它可以使用四面体,六面体,棱锥,和楔形单元所构成的网格。选择那种类型的单元取决于你的应用。当选择网格类型的时候,应当考虑以下问题:
&& 设置时间(setup time)
&& 计算成本(computational expense)
&& 数值耗散(numerical diffusion
1.设置时间
在工程实践中,许多流动问题都涉及到比较复杂的几何形状。一般来说,对于这样的问题,建立结构或多块(是由四边形或六面体元素组成的)网格是极其耗费时间的。所以对于复杂几何形状的问题,设置网格的时间是使用三角形或四面体单元的非结构网格的主要动机。然而,如果所使用的几何相对比较简单,那么使用哪种网格在设置时间方面可能不会有明显的节省。
如果你已经有了一个建立好的结构代码的网格,例如FLUENT
4,很明显,在FLUENT中使用这个网格比重新再生成一个网格要节省时间。这也许是你在FLUENT
模拟中使用四边形或六面体单元的一个非常强的动机。注意,对于从其它代码导入结构网格,包括FLUENT 4,FLUENT
有一个筛选的范围。&
2.计算成本
当几何比较复杂或流程的长度尺度的范围比较大的时候,可以创建是一个三角形/四面体网格,因为它与由四边形/六面体元素所组成的且与之等价的网格比较起来,单元要少的多。这是因为一个三角形/
四面体网格允许单元群集在被选择的流动区域中,而结构四边形/六面体网格一般会把单元强加到所不需要的区域中。对于中等复杂几何,非结构四边形/六面体网格能构提供许多三角形/
四面体网格所能提供的优越条件。
在一些情形下使用四边形/六面体元素是比较经济的,四边形/六面体元素的一个特点是它们允许一个比三角形/四面体单元大的多的纵横比。一个三角形/
四面体单元中的一个大的纵横比总是会影响单元的偏斜(skewness),而这不是所希望的,因为它可能妨碍计算的精确与收敛。所以,如果你有一个相对简单的几何,在这个几何中流动与几何形状吻合的很好,例如一个瘦长管道,你可以运用一个高纵横比的四边形/六面体单元的网格。这个网格拥有的单元可能比三角形/
四面体少的多。
&3.数值耗散
在多维情形中,一个错误的主要来源是数值耗散,术语也为伪耗散(false
diffusion)。之所以称为“伪耗散”是因为耗散不是一个真实现象,而是它对一个流动计算的影响近似于增加真实耗散系数的影响。
关于数值耗散的观点有: 当真实耗散小,即情形出现对流受控时(即本身物理耗散比较小时),数值的耗散是最值得注意的。
关于流体流动的所有实际的数值设计包括有限数量的数值耗散。这是因为数值耗散起于切断错误,而切断错误是一个表达离散形式的流体流动方程的结果。
用于FLUENT 中的二阶离散方案有助于减小数值耗散对解的影响。
数值耗散的总数反过来与网格的分解有关。因此,处理数值耗散的一个方法是改进网格。 当流动与网格相吻一致时,数值耗散减到最小。
最后这一点与网格的选择非常有关。很明显,如果你选择一个三角形/
四面体网格,那么流动与网格总不能一致。另一方面,如果你使用一个四边形/六面体网格,这种情况也可能会发生,但对于复杂的流动则不会。在一个简单流动中,例如过一长管道的流动,你可以依靠一个四边形/六面体网格以尽可能的降低数值的耗散。在这种情形,使用一个四边形/六面体网格可能有些有利条件,因为与使用一个三角形/
四面体单元比起来,你将能够使用比较少的单元而得到一个更好的解。
在UDF中compiled型的执行方式和interpreted型的执行方式有什么不同
  编译型UDF: 采用与FLUENT
本身执行命令相同的方式构建的。采用一个称为Makefile的脚本来引导c 编译器构造一个当地目标编码库(目标编码库包含有将高级c
语言源代码转换为机器语言。)这个共享库在运行时通过“动态加载”过程载入到FLUENT
中。目标库特指那些使用的计算机体系结构,和运行的特殊FLUENT 版本。因此,FLUENT
版本升级,计算机操作系统改变以及在另一台不同类型的计算机上运行时,这个库必须进行重构。 编译型UDF
通过用户界面将原代码进行编译,分为两个过程。这两个过程是:访问编译UDF
面板,从源文件第一次构建共享库的目标文件中;然后加载共享库到FLUENT 中。 采用与FLUENT
本身执行命令相同的方式构建的。采用一个称为Makefile的脚本来引导c 编译器构造一个当地目标编码库(目标编码库包含有将高级c
语言源代码转换为机器语言。)这个共享库在运行时通过“动态加载”过程载入到FLUENT
中。目标库特指那些使用的计算机体系结构,和运行的特殊FLUENT 版本。因此,FLUENT
版本升级,计算机操作系统改变以及在另一台不同类型的计算机上运行时,这个库必须进行重构。 编译型UDF
通过用户界面将原代码进行编译,分为两个过程。这两个过程是:访问编译UDF
面板,从源文件第一次构建共享库的目标文件中;然后加载共享库到FLUENT 中。
   解释型UDF: 解释型UDF
同样也是通过图形用户界面解释原代码,却只有单一过程。这一过程伴随着运行,包含对解释型UDF
面板的访问,这一面板位于源文件中的解释函数。 在FLUENT内部,源代码通过c 编译器被编译为即时的、体系结构独立的机器语言。UDF
调用时,机器编码通过内部模拟器或者解释器执行。额外层次的代码导致操作不利,但是允许解释型UDF 在不同计算结构,操作系统和FLUENT
版本上很容易实现共享。如果迭代速度成为焦点时,解释型UDF 可以不用修改就用编译编码直接运行。 解释型UDF
使用的解释器不需要有标准的c 编译器的所有功能。特别是解释型UDF 不含有下列C 程序语言部分: goto 语句声明;无ANSI-C
语法原形;没有直接数据结构引用;局部结构的声明;联合函数指针;函数阵列; 解释型UDF与编译型UDF的区别: 在解释型与编译型UDF
之间的主要的不同之处是很重要的,例如当你想在UDF 中引进新的数据结构时。解释型不能通过直接数据引用获得FLUENT
解算器的数据;只能间接的通过FLUENT 预先提供的宏来获取数据。具体请参考第7 章。&
  在解释型与编译型UDF
之间的主要的不同之处是很重要的,例如当你想在UDF 中引进新的数据结构时。解释型不能通过直接数据引用获得FLUENT
解算器的数据;只能间接的通过FLUENT 预先提供的宏来获取数据。具体请参考第7 章。
总结一下,当选择写解释型或者编译型UDF时,记住以下几条: 解释型UDF:对别的运行系统是可移植的,可以作为编译型运行,不需要c
编译器,比编译型的要慢,在使用C 程序语言时有限制,不能链接到编译系统或者用户库,只能通过预先提供的宏访问FLUENT 中存储的数据。
编译型UDF:运行要快于解释型UDF,对C 程序语言没有限制,可以使用任何ANSI-compliant c
编译器进行编译,可以调用其他语言写的函数(特别是独立于系统和编译器的),如果包含某些解释器不能处理的c 语言部分时用解释型UDF
是不行的。 总之,当决定哪一类型的udf 应用到你的模型时: 对小的,直接的函数用解释型;对复杂函数使用编译型
courant数:在模拟高压的流场的时候,迭代的时候总是自动减小其数值,这是什么原因造成的,为什么?怎么修改?
  这是流场的压力梯度较大,Fluent自身逐步降低时间步长,防止计算发散。我一般的处理办法是:先将边界条件上的压力设置较低点,使得压力梯度较小一点,等到收敛的感觉差不多,在这个基础上,逐渐把压力增大,这样就不容易发散。
能否同时设置进口和出口都为压力的边界条件?在这样的边界条件设置情况下发现没有收敛,研究的物理模型只是知道进口和出口的压力,不知道怎么修改才能使其收敛?&
  当然可以同时设置进口和出口都为压力的边界条件。如果没有收敛,需要首先看看求解器、湍流模型、气体性质和边界条件时有没有出现warning;其次,还是我上边的帖子所说的,对于可压流动,采用压力边界条件,不能一下把压力和温度加到所需值,应该首先设置较低的压力或温度,然后逐渐增大,最后达到自己所需的值。
&想把gambit的图形保存成图片,可是底色总是黑色,怎么改为白色呀。用windows中画图板的反色,好像失真很多。如何处理?
  答:首先点开GAMBIT的EDIT菜单,其次点GRAPHICS,在下拉列表中点到 WINDOWS BACKGROUND
COLOR&& BLACK
一项&& 在下面VALUE
中填写WHITE,再点左面的MODIFY,就可以了.
网格数量和内存之间的关系是什么?大概有这样一个估计:“1k网格=1M内存。”对于一台有1G内存的计算机,你能接受的计算网格数最好少于100万,当然这只是一个粗略的说法,影响计算速度的因素还有Fluent计算的设置等。
在计算过程中其它指数都收敛了,就continuity不收敛是怎么回事?在初始化设置中,那些项影响continuity的收敛?在计算过程中其他指数都收敛了,就continuity不收敛,这种情况一般出现在多相流中,在初始化设置中,可能把上次计算结果的进口参数作为初始化设置,可以加快continuity的收敛,不过更重要的是改进网格质量
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。只需一步,快速开始
扫一扫,访问微社区
后使用快捷导航没有帐号?
查看: 6802|回复: 9
UDF编译通过了,可是初始化却fatal signal
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
大家好,我编的udf在编译的时候没有提示错误,可是初始化的时候却出现这样的错误,请问udf错在哪里呢?谢谢
FLUENT received fatal signal (ACCESS_VIOLATION)
1. Note exact events leading to error.
2. Save case/data under new name.
3. Exit program and restart to continue.
4. Report error to your distributor.
Error Object: ()
我的问题是氯化锂溶液除去湿空气中的水蒸气,两相流用VOF模型,主相是湿空气,次相是溶液,湿空气和氯化锂溶液分别用组分输运模型,湿空气的组分有水蒸气和空气,溶液的组分是LiCl和液态水,我想定义氯化锂溶液的密度,这个密度是跟溶液的温度和质量分数有关系的,关系式有点复杂,程序如下:
#include &udf.h&
DEFINE_PROPERTY(cell_density,cell,thread)
& &real rho_
& &int phase_domain_index = 1; /* 次相是 1&&*/
& &Thread *liq= THREAD_SUB_THREAD(thread,phase_domain_index); /* 得到次相指针*/
& &real T=C_T(cell,liq); /*得到次相温度*/
& &real MF=C_YI(cell,liq,0);&&/* 得到次相中LiCl的质量分数,在material里在LiCl是在第一个位置,所以是0*/
& &rho_licl=(322*(1+1.*pow((1-(T+273.15)/647.3),0.3)
& && && &&&+1.*pow((1-(T+273.15)/647.3),0.)
& && && &&&-0.*pow((1-(T+273.15)/647.3),1.)
& && && &&&-1.*pow((1-(T+273.15)/647.3),5.333333)
& && && &&&-44.*pow((1-(T+273.15)/647.3),14.333)
& && && &&&-8632*pow((1-(T+273.15)/647.3),36.66667)))
& && && &&&*(1+0.540966*(MF/(1-MF))-0.303792*pow((MF/(1-MF)),2)
& && && &&&+0.100791*pow((MF/(1-MF)),3));&&/*密度和温度质量分数的关系式*/
& &return rho_
#include &udf.h&
DEFINE_PROPERTY(cell_density,cell,thread)
& &Thread *
& &liq = THREAD_SUB_THREAD(thread, 1);
& &real rho_
& &real T=C_T(cell,liq); /*得到次相温度*/
& &real MF=C_YI(cell,liq,0);&&/* 得到次相中LiCl的质量分数,在material里在LiCl是在第一个位置,所以是0*/
& &rho_licl=(322*(1+1.*pow((1-(T+273.15)/647.3),0.3)
& && && &&&+1.*pow((1-(T+273.15)/647.3),0.)
& && && &&&-0.*pow((1-(T+273.15)/647.3),1.)
& && && &&&-1.*pow((1-(T+273.15)/647.3),5.333333)
& && && &&&-44.*pow((1-(T+273.15)/647.3),14.333)
& && && &&&-8632*pow((1-(T+273.15)/647.3),36.66667)))
& && && &&&*(1+0.540966*(MF/(1-MF))-0.303792*pow((MF/(1-MF)),2)
& && && &&&+0.100791*pow((MF/(1-MF)),3));&&/*密度和温度质量分数的关系式*/
& &return rho_
你试一下,如果行的话,能给点积分吗你有这么多呢
你好,谢谢你的回复,我试了一下,发现有错误诶&
#include &udf.h&
DEFINE_PROPERTY(cell_density,cell,thread)
你好,谢谢你的回复,我试了一下,发现有错误诶
仔细看了一下,发现我的程序没有做任何改进,真是不好意思,期待高手解决你的问题哈!&
你好,谢谢你的回复,我试了一下,发现有错误诶
仔细看了一下,发现我的程序没有做任何改进,真是不好意思,期待高手解决你的问题哈!
好的,还是谢谢你哈~~&
仔细看了一下,发现我的程序没有做任何改进,真是不好意思,期待高手解决你的问题哈!
好的,还是谢谢你哈~~
大家好,我查看了帮助文件后已经把udf改成了如下,可是还是同样的错误啊,到底是为什么呢。。。求高手指点
#include &udf.h&
DEFINE_PROPERTY(cell_density,cell,thread)
& & int phase_domain_
& & Thread *cell_
& & Domain *
& & Domain *mixture_
& & real rho_
& & sub_domain_loop(subdomain, mixture_domain, phase_domain_index)&&/* loop over all subdomains (phases) in the superdomain (mixture) */
& && && & if (DOMAIN_ID(subdomain) == 2) /* loop if secondary phase */
& && && && &&&thread_loop_c (cell_thread,subdomain) /* loop over all cell threads in the secondary phase domain */
& && && && && &&&{
& && && && && && && &begin_c_loop_all (cell,cell_thread) /* loop over all cells in secondary phase cell threads */
& && && && && && && &&&{
& && && && && && && && &&&real T=C_T(cell,cell_thread); /*得到次相温度*/
& && && && && && && && &&&real MF=C_YI(cell,cell_thread,0);&&/* 得到次相中LiCl的质量分数,在material里在LiCl是在第一个位置,所以是0*/
& && && && && && && && &&&rho_licl=(322*(1+1.*pow((1-(T+273.15)/647.3),0.3)
& && && && && && && && && && && &&&+1.*pow((1-(T+273.15)/647.3),0.)
& && && && && && && && && && && &&&-0.*pow((1-(T+273.15)/647.3),1.)
& && && && && && && && && && && &&&-1.*pow((1-(T+273.15)/647.3),5.333333)
& && && && && && && && && && && &&&-44.*pow((1-(T+273.15)/647.3),14.333)
& && && && && && && && && && && &&&-8632*pow((1-(T+273.15)/647.3),36.66667)))
& && && && && && && && && && && &&&*(1+0.540966*(MF/(1-MF))-0.303792*pow((MF/(1-MF)),2)
& && && && && && && && && && && &&&+0.100791*pow((MF/(1-MF)),3));&&/*密度和温度质量分数的关系式*/
& && && && && && && && &&&return rho_
& && && && && && && &&&}
& && && && && && &&&end_c_loop_all (cell,cell_thread)
& && && && && &&&}
interpreted还是compiled?最好用compiled
因为实在找不到你udf的错误了,所以可能是你的设置出错了,一个小的建议,你在初始化的时候,patch次相中LiCl的质量分数为0.5,在用这个udf compile一下试试,我觉得有也很可能是pow((MF/(1-MF)),3))分母为0造成的。
谢谢你啊,不过我已经解决啦,其实只要改一点点就可以啦,另外define——property宏不能用循环的。。
#include "udf.h"
DEFINE_PROPERTY(cell_density,cell,thread)
real T=C_T(cell,th&
因为实在找不到你udf的错误了,所以可能是你的设置出错了,一个小的建议,你在初始化的时候,patch次相 ...
谢谢你啊,不过我已经解决啦,其实只要改一点点就可以啦,另外define——property宏不能用循环的。。
#include &udf.h&
DEFINE_PROPERTY(cell_density,cell,thread)
& &real rho_
& &real T=C_T(cell,thread); /*得到次相温度*/
& &real MF=C_YI(cell,thread,0);&&/* 得到次相中LiCl的质量分数,在material里在LiCl是在第一个位置,所以是0*/
& &rho_licl=(322*(1+1.*pow((1-(T+273.15)/647.3),0.3)
& && && &&&+1.*pow((1-(T+273.15)/647.3),0.)
& && && &&&-0.*pow((1-(T+273.15)/647.3),1.)
& && && &&&-1.*pow((1-(T+273.15)/647.3),5.333333)
& && && &&&-44.*pow((1-(T+273.15)/647.3),14.333)
& && && &&&-8632*pow((1-(T+273.15)/647.3),36.66667)))
& && && &&&*(1+0.540966*(MF/(1-MF))-0.303792*pow((MF/(1-MF)),2)
& && && &&&+0.100791*pow((MF/(1-MF)),3));&&/*密度和温度质量分数的关系式*/
& &return rho_
因为实在找不到你udf的错误了,所以可能是你的设置出错了,一个小的建议,你在初始化的时候,patch次相 ...
您好,我遇到了和你特别相同的问题,我的也是多相流的主相的密度的问题,fluent也是提示同样的错误,我想问一下,您是怎么解决的这个问题,谢谢!
Powered by
&nbsp &nbsp

我要回帖

更多关于 fluentvalidation 的文章

 

随机推荐