Традиционные методы конечных элементов , такие как традиционный Galerkin FE , который , кажется, реализован в борьбе Matlab (например, нефизические колебания)в решении) с несамосопряженными уравнениями, такими как параболическое уравнение адвекции-диффузии без изменений в числовой схеме.
Вы, тем не менее, можете сделать это с помощью указав непостоянную f . У меня в настоящее время нет доступа к лицензии Matlab , но в соответствии с документацией вы можете получить доступ к состоянию структур, которое должно содержать пассивный скаляр и его градиенты, а также местоположение, содержащее координаты. Это должно позволить вам задать либо постоянную скорость, либо построить аналитический профиль скорости (например, профиль Poiseuille ) с координатами. (Может быть, в этой функции можно также использовать точечный профиль скорости?)
Попробуйте установить m = 0 , d = 1 , c = D (коэффициент диффузии), a = 0 и вычисляют f с использованием двух структур: состояние (state.ux, состояние.uy, state.uz - градиенты транспортируемого скаляра u) и location (location.x, location.y и location.z) для наложения аналитического профиля скорости. Следующий псевдокод должен дать уравнение диффузии-адвекции с постоянной скоростью в направлении х.
% set density
rho = 1;
% set viscosity
D = 1;
% set constant velocity
vel = [1, 0, 0];
% set coefficients for diffusion equation
specifyCoefficients(model,'m',0,...
'd',rho,...
'c',D,...
'a',0,...
'f',@fcoeffunction);
...
%% function for determining f
function f = fcoeffunction(location,state)
f = - rho*( vel(1)*state.ux + vel(2)*state.uy + vel(3)*state.uz); %calculate f from constant velocities
end
Теоретически это должно дать вам уравнение адвекции-диффузии. По сути, мы моделируем адвекционную часть с помощью искусственного источника , который обращается к градиентам скалярного количества. Это похоже на то, что вы можете сделать в 1D с pdepe , где вы можете получить доступ к градиенту с помощью dudx.