上次的容器轴和旋转轴的夹角如果不能直接用一个公式赋值而是满足一个方程需要对其求解的话,我尝试用DEFINE_ADJUST解决了这个问题;
首先我们知道ADJUST这个宏是每个迭代步都会被调用的,我试着使用
static int last_ts=-1;
DEFINE_ADJUST(my_adjust)
{
int curr_ts=CURRENT_TIMESTEP;
if(last_ts!=curr_ts)
{
for(;收敛条件;)
{
//牛顿迭代法
}
}
使只在每一个时间步的开头,对夹角方程进行数值求解直至满足我们的收敛要求,其余时候这个宏为空,但是我导入UDF的时候一直报static这个语法的错误,我也不知道为什么我不能用静态变量,百思不得其解。
然后突然想到为什么一定要令ADJUST每个时间步调用一次呢,可以就在N-S方程迭代的过程中对该方程一起迭代计算嘛。
所以就改成了如下
DEFINE_ADJUST(my_adjust)
{
//牛顿迭代法
printf("夹角=%g",夹角);//用来在计算过程中观察是否在对方程进行迭代以及判断是否每个时间步的夹角都已经稳定了;
}
最后证明是可行的。