Мне нужно изменить уравнение энергии турбулентного кинетика c в OpenFOAM (OF):
tmp<fvScalarMatrix> kEqn
(
fvm::ddt(alpha, rho, k_)
+ fvm::div(alphaRhoPhi, k_)
- fvm::laplacian((alpha*rho*DkEff(F1)), k_)
==
...
Я хочу преобразовать из:
fvm::laplacian((alpha*rho*DkEff(F1)), k_)
до
fvm::laplacian((alpha*DkEff(F1)), rho*k_)
Так как оператор Лапласа не может работать с rho * k, я использую правило цепочки, чтобы преобразовать его в:
fvm::laplacian((alpha*rho*DkEff(F1)), k_) + fvc::laplacian((alpha*k_*DkEff(F1)), rho)
Однако я имею проблема с fv c :: laplacian ((alpha k_ DkEff (F1)), rho).
Ошибка «error: нет подходящей функции для вызова laplacian» (Foam :: tmp>, const rhoField &) '"
Другая ошибка:" note: сбой вывода / замены аргумента шаблона "
Проблема связана с rho. Я также попытался использовать расхождение + град, чтобы представить eqn:
fvc::div(alpha*k_*DkEff(F1)*fvc::grad(rho))
и использовать this-> rho_ вместо rho
Все это не может работать. Будучи новичком в программировании OF и не разбираясь в C ++, я не понимаю, в чем дело. Я проверяю, и оба rho и k кажутся volScalarField, но почему нельзя заменить rho работать?
Нужно ли выполнять некоторую интерполяцию и т.д. c?
Дайте мне знать, если вы нужна дополнительная информация.