|
|
发表于 2012-12-29 21:39:06
|
显示全部楼层
两个办法
一个是利用UDS提供的UDSI_G这个宏,也就是参量的梯度。你可以把数据用DEFINE_ADJUST存储到一个UDS里面,用到梯度的时候直接调用就可以了。至于你说矢量的话,你就用3个UDS好了。用哪个梯度就调用哪个UDS。
另外一个是自己写。采用一阶差分的话梯度大小可表示为 dC/dx=(ci-c0)/dx,方向比较麻烦,如果是结构化网格的话,就是垂直于接触面。给你一个思路,对于要求梯度的cell_0,总的梯度等于各个分方向梯度矢量和。我们可以找到c0的所有的面,以此计算各个面上的梯度,大小按照上面说的计算,方向你可以选cell中心点连线方向,也可以取垂直于界面,具体你再思考吧。然后把这个矢量求和,你就得到了一个标量C的梯度了。而对于一个矢量的梯度,相当于它三个分量分别作梯度。用到那个就算那个。
第二种方法如果做好了的话,其实比第一种好,因为在计算的时候第二种的梯度可以随时调用出来,而第一种你都是调用上一个迭代结果的梯度。计算性能上,应该是第二种好一点。 |
|