在fluent计算一个非稳态的情况,需要对一个面的压力值进行按时间步长的输出。在udf中有一个输出宏,但却是每一步都输出,我不想输出那么多,请问应如何编写程序?或者用什么宏?
转载
答:我个人认为主要有三项:
网格的正交性,雅可比值,扭角,和光滑性。
对于一般的cfd程序,结构化网格要求正交性和光滑性(就是你说的
最大最小比率相差不大,想不出一个名次就用这个了)要比较好
但是对于fluent这样基于非结构网格的,尤其是其中程序中
加入了很多加快收敛速度的方法的软件,后者要求就不要太高
我觉得真正需要考虑网格影响的,一般应该在结构网格上才需要
基于非结构网格的有限体积法,计算通量的时候存在相邻节点的通量计算本身就
http://vasp1860.blog.edu.cn/2011/704686.html
一般来说,在刀片服务器或超算中心上计算工程问题要分为三个步骤:上载数据、运行计算、下载结果。设置等操作(如边界条件设置、初始化、计算域分块等)应该尽可能在工作站或PC上完成(除了用户定义函数的编译工作等)。接下来以FLUENT为例逐一介绍:
1、上载数据
Fluent计算需要至少4个文件,*.cas
Matlab绘图-很详细,很全面
Matlab绘图
强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。
是一个二维的对流扩散问题,对流在X方向, 扩散作用在Y 方向,所以方程为 dC/dt=D*d2C/dy2-V*dC/dx (注:
D= Diffusion coefficient, C=concentration, V=
流体速度,并假设它与表面的垂直方向Y成正比,即:V=a*Y. d2C/dy2表示浓度对Y的二阶导数。 ) 边界条件为:
1 ,C = C0 when y = 0 and 0<x<L (表示在表面(y =
0)存在药品(扩散物质)的区域(0<x<L)浓度是饱和的C0)
2, C = 0 when y> 0.1cm for all x
(表示对难容物质来说,由于流动的因素,离表面一定距离后不存在溶质)
3, C = 0 when x = 0 for all y (因为在存在药品区域之前是 没有浓度的)
4, C = 0 when y = 0 and x> L (表示 在不存在药品的表面也没有浓度)
本人用论文中介绍的显示差分算法在MATLAB 编程 [C(i , j , k+1)- C(i , j , k)]/dt =
D/(dy)^2 * [ C(i , j-1 , k) - 2*C(i , j , k) + C(i , j+1 , k)] -
V/dx * [C(i , j , k) - C(i -1, j , k)]
下面是我的代码:
问题是,虽然可以得到仿真(步长设置不好还容易发散),但是明显没有对流项的作用,画出的图应该是从左到右被“冲”的感觉,实在找不到问题出在哪儿了,恳请大侠赐教,
〖求助〗linux下Fluent的UDF设定边界条件的使用
我采用帮助中给的第一个UDF例子
#include 'udf.h'
DEFINE_PROFILE(inlet_x_velocity, thread, position)
{
real x[ND_ND];
real y;
face_t f;
begin_f_loop(f, thread)
{
F_CENTROID(x,f,thread);
y = x[1];
F_PROFILE(f, thread, position)
= 20. - y*y/(.0745*.0745)*20.;
}
end_f_loop(f, thread)
}
在linux下interprete时发生有以下错误提示
cpp -I/program/Fluent.Inc/fluent6.2.16/src
-I/program/Fluent.Inc/fluent6.2.16/cortex/src
-I/program/Fluent.Inc/fluent6.2.16/client/src
-I/program/Fluent.Inc/fluent6.2.16/multiport/src -I.
-DUDFCONFIG_H='<udfconfig.h>' /root/
x = 1:100;
y = sin(x);
plot(x,y); %画曲线
Xtick_pos = x(1:length(x)/10:length(x));
%或者可以写为 Xtick_pos = [0 20 50 100];
%确定label显示的位置
Xtick_label = x(1:length(x)/10:length(x));
%或者可以写为 Xtick_label ={'a','b','c','d'};
set(gca, 'XTickLabel',Xtick_label, 'XTick',Xtick_pos);
%此命令替换了横坐标label的内容