24小时热门版块排行榜    

查看: 2171  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 重要来源:本周末出结果 +3 瞬息宇宙 2026-08-12 3/150 2026-08-13 06:40 by 玲珑133
[基金申请] FileCode能看出啥? +8 要乐观耀哥 2026-08-10 23/1150 2026-08-13 00:35 by 要乐观耀哥
[基金申请] 好奇怪的filecode +5 布布和一二 2026-08-08 6/300 2026-08-12 16:11 by 云上清扬
[论文投稿] 职称评审,求友友推荐见刊最快的期刊 +4 工厂打螺丝 2026-08-08 4/200 2026-08-12 09:18 by hansi2025
[基金申请] 综述论文作为代表作会不会影响评审专家的印象分? +11 yufeiwaner 2026-08-09 13/650 2026-08-12 08:17 by yufeiwaner
[基金申请] 小木虫上这么多卖论文的,真有人买论文么?感觉没必要啊 +8 Tide man 2026-08-10 9/450 2026-08-11 20:39 by beefly
[基金申请] 有时候,自然基金真的不能太认真 (我的申报经验) +3 majunge000 2026-08-11 4/200 2026-08-11 20:13 by lch2012
[基金申请] 为什么网上很多人说本周 12号出结果 +6 瞬息宇宙 2026-08-10 7/350 2026-08-11 19:25 by Tide man
[硕博家园] 读博的好处 +3 lnee 2026-08-11 3/150 2026-08-11 18:10 by 希望我好好的
[基金申请] 基金中了 +15 laoda193707 2026-08-06 15/750 2026-08-11 00:11 by jiafei2190
[基金申请] 关于代码变化问题,想知道的进来 +17 且听虎啸 2026-08-07 24/1200 2026-08-10 18:35 by zhangduo2008
[基金申请] 2026国自然放榜时间 +9 布布和一二 2026-08-08 9/450 2026-08-10 11:22 by xxxx2020
[基金申请] filecode与中标关系的预测 +5 布布和一二 2026-08-07 5/250 2026-08-09 16:15 by 袁向阳007
[基金申请] 关于filecode,很负责任的告诉大家 +6 爱看书的可乐 2026-08-08 7/350 2026-08-08 22:13 by a_niu
[基金申请] 关于豆爷回答的JTJC与%2F数量 +5 yang182083 2026-08-06 7/350 2026-08-08 18:29 by zhanghaozhu
[基金申请] 国基金的申报应该改成非等额制,评价高的钱多评价低的钱少,但是增加资助率 +7 a089 2026-08-07 7/350 2026-08-08 18:05 by gltch
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
[基金申请] 化学口download_prp&fileCode的固定段好像这几天一直没变,有变的大神么? +3 Tide man 2026-08-07 4/200 2026-08-07 22:39 by Tide man
[基金申请] 固定端突然变了,今天 +6 archvillain 2026-08-06 10/500 2026-08-07 16:03 by 医学老男孩
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
信息提示
请填处理意见