24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1751  |  回复: 4

wildwolf00

金虫 (小有名气)

[求助] 想让源项随坐标变化,UDF该怎么写?

想让源项随坐标变化,例如source=Q*(x-y^2+10),这个x,y是网格坐标,要如何编写呢?弄了一天了,没成功
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hotsonliao

金虫 (小有名气)

你最好把问题描述清楚,或者把代码附上,这样才能发现问题在哪
2楼2013-07-16 22:03:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wildwolf00

金虫 (小有名气)

有两种想法,一种是将此坐标的函数存储在UDM中,在定义源项的时候从UDM中读取例如
DEFINE_***()
{
real xc[ND_ND];
C_CENTROID(xc,c,t);
C_UDMI(c,t,0)=xc[0]-pow(xc[1],2)+10;
}
DEFINE_SOURCE(source,c,t,dS,eqn)
{
***
return Q*C_UDMI(c,t,0)
}
这里第一个定义用***是因为不知道该用什么,我用过INIT和PROPERTY,都不行,C_UDMI中始终没有被赋值,一直是0
第二种是直接在定义源项的时候读取坐标
DEFINE_SOURCE(source,c,t,dS,eqn)
{
***
real xc[ND_ND];
C_CENTROID(xc,c,t);
return Q*(xc[0]-pow(xc[1],2)+10);
}
这个也是存在相同的问题,坐标根本没读出来,源项无变化
3楼2013-07-17 10:05:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

玲玲0328

新虫 (正式写手)

引用回帖:
3楼: Originally posted by wildwolf00 at 2013-07-17 10:05:26
有两种想法,一种是将此坐标的函数存储在UDM中,在定义源项的时候从UDM中读取例如
DEFINE_***()
{
real xc;
C_CENTROID(xc,c,t);
C_UDMI(c,t,0)=xc-pow(xc,2)+10;
}
DEFINE_SOURCE(source,c,t,dS,eqn)
{
* ...

请问楼主解决这个问题了吗?我现在也遇到这个问题,我需要提取网格坐标计算坐标离壁面的距离,但是也没有提取成功。
4楼2018-12-10 15:07:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

amy_en

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by wildwolf00 at 2013-07-17 10:05:26
有两种想法,一种是将此坐标的函数存储在UDM中,在定义源项的时候从UDM中读取例如
DEFINE_***()
{
real xc;
C_CENTROID(xc,c,t);
C_UDMI(c,t,0)=xc-pow(xc,2)+10;
}
DEFINE_SOURCE(source,c,t,dS,eqn)
{
* ...

楼主的问题解决了么,我最近也在做这个方面的仿真研究,我是通过if勾勒出一个区域,然后在这个区域内添加源项的,问题也和你差不多。我的代码如下:
C_CENTROID(x,c,t);
if(x[0]<0.0057&x[1]<0.042&x[2]<0.022)
{
        source=500000;
}
else{
    source = 0;
}
dS[eqn]=0;
return source;
}
请楼主帮忙看看哪里有问题
5楼2020-07-21 15:26:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wildwolf00 的主题更新
信息提示
请填处理意见