24小时热门版块排行榜    

查看: 1965  |  回复: 10

phoever

新虫 (初入文坛)

[求助] fluent平移温度场的UDF问题 已有2人参与

非稳态计算,一个100mm*100mm*100mm的铁块,每1mm一个单元,希望UDF能使温度场在X轴负方向上每一个时间步移动一格。算法是先用循环把整个温度场根据坐标存到数组里,再用另一个循环重新给温度场赋值,右边界上不做改变。但是这个UDF运行就会报错。代码如下:
#include "udf.h"
DEFINE_EXECUTE_AT_END(move_temperature)
{
        Domain *d;
        real a[ND_ND];
        int x,y,z;
        real T[100][100][100];
        int i;
        Thread *t;
        cell_t c;
        d = Get_Domain(1);
        thread_loop_c(t,d)
        {
                begin_c_loop(c,t)
                {
                        C_CENTROID(a,c,t);
                        x=a[0]*1000+49.5;
                        y=a[1]*1000+49.5;
                        z=a[2]*1000+49.5;
                        T[x][y][z]=C_T(c,t);
                }
                end_c_loop(c,t)
        }
        thread_loop_c(t,d)
        {
                begin_c_loop(c,t)
                {
                        C_CENTROID(a,c,t);
                        x=a[0]*1000+49.5;
                        y=a[1]*1000+49.5;
                        z=a[2]*1000+49.5;
                        if(x!=49.5) C_T(c,t)=T[x+1][y][z];
                }
                end_c_loop(c,t)
        }
}

这是报错信息,设置的残差为1e-06。
Updating solution at time levels N and N-1.
done.
  iter continuity x-velocity y-velocity z-velocity     energy     time/iter
     1 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 9.3887e-06  0:00:19   19
!    2 solution is converged
     2 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 5.7086e-07  0:00:14   18

Error:
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: ()
请问是哪里出了问题呢?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

CFD_light

铁虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
想法很新颖,不过显然写错了
模拟的最高境界:同形不同理
2楼2015-07-21 10:03:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhouxman

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
x=a[0]*1000+49.5;
                        y=a[1]*1000+49.5;
                        z=a[2]*1000+49.5;
                        T[x][y][z]=C_T(c,t);
这里x y z是数组的索引,这样计算   你确保会不出现 非自然数??

可以写源项 温度场为时间的函数 即可
3楼2015-07-21 10:46:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

phoever

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by zhouxman at 2015-07-21 10:46:09
x=a*1000+49.5;
                        y=a*1000+49.5;
                        z=a*1000+49.5;
                        T=C_T(c,t);
这里x y z是数组的索引,这样计算   你确保会不出现 非自然数??

可 ...

具体怎么做呢?因为温度场并不均匀,而要做的是平移温度场。如果靠计算差值来达到目的的话仍然要读取各位置的温度场。
4楼2015-07-21 14:00:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

phoever

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by CFD_light at 2015-07-21 10:03:02
想法很新颖,不过显然写错了

请问哪里错了?
5楼2015-07-21 14:01:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhouxman

金虫 (小有名气)

【答案】应助回帖

引用回帖:
4楼: Originally posted by phoever at 2015-07-21 14:00:22
具体怎么做呢?因为温度场并不均匀,而要做的是平移温度场。如果靠计算差值来达到目的的话仍然要读取各位置的温度场。...

你是施加温度场还是热源?  帮助文档里面很多源项的例子  随便找一个 就可以看懂的
6楼2015-07-21 14:33:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

phoever

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by zhouxman at 2015-07-21 14:33:02
你是施加温度场还是热源?  帮助文档里面很多源项的例子  随便找一个 就可以看懂的...

我想用这样施加温度场的,因为不清楚问题出在哪所以提出这个问题的。如果需要的话我也可以上传cas文件和c函数。
另外,热源项的话是用温度梯度来做吗?但是我想知道C_T_G提供的温度梯度是前差还是后差抑或是这两者的平均?我的理解是根据温度梯度算出前后两点之前温度的差值,再根据热容和体积算出需要附加的热源项,但是这样做感觉比直接施加温度场要复杂很多。
7楼2015-07-21 17:14:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhouxman

金虫 (小有名气)

引用回帖:
7楼: Originally posted by phoever at 2015-07-21 17:14:13
我想用这样施加温度场的,因为不清楚问题出在哪所以提出这个问题的。如果需要的话我也可以上传cas文件和c函数。
另外,热源项的话是用温度梯度来做吗?但是我想知道C_T_G提供的温度梯度是前差还是后差抑或是这两者 ...

没有必要上传文件,你描述一下你要做什么。
8楼2015-07-21 19:41:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

phoever

新虫 (初入文坛)

引用回帖:
8楼: Originally posted by zhouxman at 2015-07-21 19:41:14
没有必要上传文件,你描述一下你要做什么。...

这两天有事没上网
是这样的,算法的内容我上面已经说过了,想通过一个数组存储温度场,然后再根据这个数组重新给温度场赋值,理论上应该没有问题但程序会报错。我不太清楚为什么会出现这种错误因此想请教一下。
9楼2015-07-24 17:00:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhouxman

金虫 (小有名气)

引用回帖:
9楼: Originally posted by phoever at 2015-07-24 17:00:53
这两天有事没上网
是这样的,算法的内容我上面已经说过了,想通过一个数组存储温度场,然后再根据这个数组重新给温度场赋值,理论上应该没有问题但程序会报错。我不太清楚为什么会出现这种错误因此想请教一下。...

我说
                        y=a*1000+49.5;
                        z=a*1000+49.5;
                        T=C_T(c,t);
这里x y z是数组的索引,这样计算   你确保会不出现 非自然数??


这样肯定会出现非自然数的数组索引的。不出错才怪
10楼2015-07-24 21:51:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 phoever 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 考研调剂 +4 呼呼?~+123456 2026-03-24 4/200 2026-03-24 23:16 by barlinike
[考研] 调剂 +4 13853210211 2026-03-24 4/200 2026-03-24 19:44 by ms629
[考研] 招08考数学 +7 laoshidan 2026-03-20 16/800 2026-03-24 17:52 by 乌拉儿山脉
[考研] 300求调剂,材料科学英一数二 +5 leaflight 2026-03-24 5/250 2026-03-24 16:25 by laoshidan
[材料工程] 一志愿C9材料与化工专业总分300求调剂 +4 曼111 2026-03-24 5/250 2026-03-24 15:44 by 星空星月
[考研] 一志愿华东理工大学081700,初试分数271 +5 kotoko_ik 2026-03-23 6/300 2026-03-24 10:29 by 学术搬砖er
[考研] 284求调剂 +10 Zhao anqi 2026-03-22 10/500 2026-03-24 00:08 by Equinoxhua
[考研] 291求调剂 +8 hhhhxn.. 2026-03-23 8/400 2026-03-23 23:15 by peike
[考研] 350求调剂 +6 weudhdk 2026-03-19 6/300 2026-03-23 15:47 by tangyuan0840221
[考研] 北科281学硕材料求调剂 +8 tcxiaoxx 2026-03-20 9/450 2026-03-23 12:16 by tcxiaoxx
[考研] 一志愿西安交通大学材料工程专业 282分求调剂 +11 枫桥ZL 2026-03-18 13/650 2026-03-22 20:26 by edmund7
[考研] 287求调剂 +8 晨昏线与星海 2026-03-19 9/450 2026-03-22 17:01 by i_cooler
[考研] 一志愿华中科技大学071000,求调剂 +4 沿岸有贝壳6 2026-03-21 4/200 2026-03-22 07:21 by ilovexiaobin
[考研] 265求调剂 +12 梁梁校校 2026-03-19 14/700 2026-03-21 13:38 by lature00
[考研] 求调剂 +3 白QF 2026-03-21 3/150 2026-03-21 13:12 by zhukairuo
[考研] 330求调剂0854 +3 assdll 2026-03-21 3/150 2026-03-21 13:01 by 搏击518
[考研] 317求调剂 +5 申子申申 2026-03-19 9/450 2026-03-20 22:26 by JourneyLucky
[考研] 中南大学化学学硕337求调剂 +3 niko- 2026-03-19 6/300 2026-03-20 21:58 by luoyongfeng
[考研] 295材料求调剂,一志愿武汉理工085601专硕 +5 Charlieyq 2026-03-19 5/250 2026-03-20 20:35 by JourneyLucky
[考研] 材料学求调剂 +4 Stella_Yao 2026-03-20 4/200 2026-03-20 20:28 by ms629
信息提示
请填处理意见