Matlab Pde Toolbox: Plote a solução em uma linha ou em uma subvariedade

9

Estou usando a caixa de ferramentas Matlab pde para resolver uma certa equação elíptica em 2D.

A solução está correta, embora eu precise plotá-la ao longo de uma determinada linha, ou seja, cortar uma fatia plana da malha 3D que representa a solução.

Não consigo descobrir uma maneira que envolva as funções da caixa de ferramentas de maneira inteligente (ou seja, não envolva interpolação de baixo nível na malha triangular).

Qualquer ajuda apreciada.

Acorbe
fonte

Respostas:

3

Postei a mesma pergunta na central do MATLAB , e Bill Greene gentilmente forneceu uma resposta .

Eu relato e estendo brevemente para que possa ser útil para outras pessoas.

Solução de Bill:

Aqui está uma maneira de criar esse enredo. Suponha que você tenha a matriz de pontos criada pelo mesher PDE Toolbox, pe um vetor de solução, u. A função abaixo criará um gráfico dessa solução ao longo de uma linha definida pelos locais x e y dos dois pontos finais. Meu exemplo é para uma solução em um quadrado de unidade e quero um gráfico ao longo da linha (0, 0,5) a (1, 0,5). Eu quero incluir 25 pontos no enredo. Como você pode ver, o trabalho real está sendo realizado pela TriScatteredInterpfunção do núcleo MATLAB.

plotAlongLine(p, u, [0,.5], [1,.5], 25);

function plotAlongLine(p, u, xy1, xy2, numpts)
    x = linspace(xy1(1),xy2(1),numpts);
    y = linspace(xy1(2),xy2(2),numpts);
    F = TriScatteredInterp(p(1,:)', p(2,:)', u);
    uxy = F(x,y);
    figure; plot(x, uxy);  //REM: x is chosen here as a curvilinear coordinate
end

Gostaria de observar ainda que a função anterior permite plotar a solução uou suas funções f(u), desde que udefinida em nós de malha (como normalmente acontece para soluções aproximadas do FEM).

Se for necessário plotar seções de funções definidas em centros de malha (por exemplo, funções de grad u), ela poderá usar antecipadamente a função pdeprtnique produz funções com valor de nó a partir de funções com valor central .

Acorbe
fonte