Как я могу зациклить зависящую от времени проблему PDE во времени в итерации Matlab - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть проблема, как я могу решить 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...