F_CENTROID(x,f,t)和C_CENTROID(x,f,t)的一些疑问
-
当计算基于位置变化的的变量时可以使用F_CENTROID(x,f,t)和C_CENTROID(x,f,t),比如
DEFINE_PROFILE(name,thread,index) { 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, index) = 20. - y*y/(.0745*.0745)*20.; } end_f_loop(f, thread) }
如果直接在边界上使用,可以知道基于哪一个面进行计算,那么
F_CENTROID(x,f,t)
是否可以定义非边界的条件,如果可以定义,又是如何计算位置的?对于不是添加在边界上的
DEFINE_PROFILE
,比如计算空隙率的UDF
DEFINE_PROFILE(porosity,thread,index) { real x[ND_ND]; real y; face_t f; begin_f_loop(f, thread) { C_CENTROID(x,f,thread); y = x[1]; if(y>0) F_PROFILE(f, thread, index) = 0.1+0.1*pow(y,3)+0.1*pow(y,5)+0.1*pow(y,6); } end_f_loop(f, thread) }
在参考文献中,使用旋转轴对称的模型,
y
表示r/R
,为什么同样对于普通三维模型,二维模型,
x[1]
表示什么,C_CENTROID(x,f,t)
究竟是如何计算的?对于提交的问题是不是没办法再次修改?
-
-
@noodles 请问在
C_CENTROID(x,f,t)
中,这个Y
坐标是相对于谁算出来的? -
@两月三年 相对于谁不重要吧,只要整个模型保证同一个参考坐标就行了吧
-
问题是都不知道是相对于谁,怎么设置函数
-
@两月三年 看你hook在哪个domain 和 thread。比如说defined_profile是中是有某个边界的thread。那么你的F_centroid可以计算这个thread的值。
-
@astremon 问题是有时候这个函数不是加载在边界上,比如我问题中的函数就是加载多孔介质的孔隙率,表示径向方向上孔隙率的变化,如果使用旋转对称的话 x[1] 表示 r/R的话,,那对于直接的三位圆柱,三位立方体,x[1]会分别代表什么意思呢?都是基于中心点的位置计算的吗?谢谢🙏
-
@两月三年 轴对称还是一个二维模型。x[1]表示y方向或叫r径向方向,还是扫描的一条线,一遍是基于对称轴。三维的话,固定x[1],不就是扫描了一个面了吗,这个就需要你精确定位了。
-
@astremon 那么对于轴对称模型的话,(这个
x[1]
表示r
还是r/R
? 我先假定为r/R
吧)- 比如一个二维矩形轴对称为圆柱,那么对于添加在平行于对称轴的边界上的
DEFINE_PROFILE
是基于这个边界然后按照距边界的距离来计算,是从0
到对称轴r/R
吗,还是反过来或者其他? - 对于一个三维圆柱
(假定为上面旋转之后的直接的三维模型)
,这个边界是从0
到对称轴r/R
吗,还是反过来或者其他?
另外对于一个三维的模型,
DEFINE_PROFILE
如果不是添加在壁面,而是孔隙率这样的一个整体的范围,那么就没有类似于边界这样的基准了,一个面的话也还是需要知道从哪里开始计算吧?谢谢您!
- 比如一个二维矩形轴对称为圆柱,那么对于添加在平行于对称轴的边界上的
-
你的全局坐标 在旋转轴域
你的udf问题我看了很多 实际上你这个自我摸索的方式 在方式上是很落后的
建议你跟我联系一下 -
上面是非旋转轴域
更正 旋转轴见手册 -
@l-j刘侃 额,你好,这个要怎么联系您呢,cfd中文网好像没有私信的功能。。。。
论坛登录问题反馈可联系 li.dy@dyfluid.com