У меня есть проблема, как я могу решить PDE для двумерного уравнения Лапласа потока, используя метод конечных элементов (FEM) Галеркиена в переходном состоянии, используя метод итераций?Я повторяю, используя метод Гаусса Зейделя.но как я могу выполнить цикл для следующего шага по времени DT (временная область)
этот код является модемным после кода Фортрана Wang & Anderson 1982 для примера потока грунтовых вод Я закончил сборку матрицы жесткости и назначил узловые значения координат
Вот мой основной итерационный код
DT = 5;
KOUNT = 1;
KPRINT = 2;
TIME = DT;
for NSTEP = 1:100
for L = 1:NNODE
B(L) = 0.0;
for JJ = 1:NNODE
B(L) = B(L) + (P(L,JJ)*HOLD(JJ))/DT;
end
end
AMAX = 0.0;
for L = 1:NNODE
if (L == 1) || (L == 2) || (L == 21) || (L == 22)
continue
else
OLDVAL = HNEW(L);
SUM = 0.0;
for JJ = 1:NNODE
if (JJ == L)
continue
else
SUM = SUM + (G(L,JJ) + P(L,JJ)/DT)*HNEW(JJ);
end
end
end
HNEW(L) = (-SUM + B(L))/(G(L,L)+P(L,L)/DT);
ERR = abs(OLDVAL-HNEW(L));
if (ERR > AMAX)
AMAX = ERR;
elseif (AMAX > 0.01)
AMAX = 0.0;
HOLD(L) = HNEW(L);
end
if (KOUNT ~= KPRINT)
KOUNT = 0;
TIME = TIME + DT;
KOUNT = KOUNT + 1;
end
end
end
Я должен получить результат вывода нового значения HNEW в разное время с DT