如何在Matlab迭代中随时间循环PDE时间相关问题

时间:2019-04-03 06:32:14

标签: matlab

我有问题如何在瞬态条件下使用迭代方法使用Galerkien有限元方法(FEM)求解二维流Laplace方程的PDE? 我使用高斯塞德尔方法进行迭代。但是我该如何为下一个时间步DT(时域)循环

在Wang和Anderson 1982年Fortran地下水流示例代码完成之后,该代码是适度的。我完成了刚度矩阵的组装并分配了节点坐标值

这是我的主要迭代代码

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  

我应该用DT在不同的时间获取HNEW的新值的输出结果

0 个答案:

没有答案