Matlab Pde Toolbox: Tracer la solution sur une ligne ou sur un sous-collecteur

9

J'utilise la boîte à outils Matlab pde pour résoudre une certaine équation elliptique en 2D.

La solution est très bien, même si j'ai besoin de la tracer le long d'une ligne donnée, c'est-à-dire de couper une tranche plane du maillage 3D représentant la solution.

Je ne peux pas trouver un moyen qui implique intelligemment les fonctions de la boîte à outils (c'est-à-dire n'impliquant pas d'interpolation de bas niveau sur le maillage triangulaire).

Toute aide appréciée.

Acorbe
la source

Réponses:

3

J'ai posté la même question sur MATLAB Central , et Bill Greene a aimablement fourni une réponse .

Je fais un bref rapport et je l'étend pour qu'il puisse être utile à d'autres.

Solution de Bill:

Voici une façon de créer un tel complot. Supposons que vous ayez la matrice de points créée par le mailleur PDE Toolbox, p, et un vecteur de solution, u. La fonction ci-dessous créera un tracé de cette solution le long d'une ligne définie par les emplacements x et y des deux points d'extrémité. Mon exemple est pour une solution sur un carré unitaire et je veux un tracé le long de la ligne (0, 0,5) à (1, 0,5). Je veux inclure 25 points dans l'intrigue. Comme vous pouvez le voir, le vrai travail est effectué par la TriScatteredInterpfonction du noyau 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

Je voudrais en outre remarquer que la fonction précédente permet de tracer la solution uou ses fonctions f(u), à condition qu'elle usoit définie sur des nœuds de maillage (comme cela se produit généralement pour les solutions approchées FEM).

Si l'on a besoin de tracer des sections de fonctions définies sur des centres de maillage (par exemple des fonctions de grad u), elle peut utiliser à l'avance la fonction pdeprtniqui produit des fonctions de valeur de nœud à partir de fonctions de valeur de centre .

Acorbe
la source