请教各位关于Intel的MKL库中的函数在OpenFOAM中的使用问题
-
如题,最近遇到一个通过更新焓求解温度的迭代问题,使用了牛顿迭代等方式,因为热物性变化比较剧烈,导致牛顿迭代非常不稳定,总是在某个工况下不收敛,看文献中使用了Intel的MKL库中的信赖域算法,没有出现稳定性问题,请问有没有了解如何在OpenFOAM中如何应用这个算法的,求指点!
-
@李东岳 李老师,信赖域算法也是一种搜索最优解的方法。目前我用的迭代方式如下,其中h_fix是固定值,h_metlab和Cp需要根据更新的温度进行重新计算:
F = (h_fix - h_metlab) / h_fix; // Objective function to be minimized scalar eps = Foam::mag(F*F); // Residuum if (eps <= 1e-3) { converged = true; TEQ = T; break; } //如果残差不被满足,更新temp,重新计算H_mix else { // Update temperature scalar alpha = 0.1; scalar delta_h = (h_metlab - h_fix); scalar dT = - delta_h / Cp; scalar C = 1.0 / (1 + Foam::mag(dT * alpha)); T = T + dT * C; }