Ошибка при использовании grad (rho) или fv c :: laplacian ((A, rho) в OpenFOAM - ошибка: нет соответствующей функции для вызова - PullRequest
0 голосов
/ 03 апреля 2020

Мне нужно изменить уравнение энергии турбулентного кинетика 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?

Дайте мне знать, если вы нужна дополнительная информация.

...