So i need to resolve the 2D poisson equation using Finite Element Method, i have an L shaped domain . So first of all i generated Triangular free mesh on the domain. but i dont know how to solve the eqution using my script. The conditions at the boundary is : u(x,t)=0
thank you.
% mesh generation
N = 1;
Visualize_Plot = true; % se vero visualizza il grafico
% Input Boundary :
% mi fa scegliere il file text dalla cartella
% [file,path] = uigetfile('*.txt');
% boundary = importdata(fullfile(path,file));
% oppure importo direttamente conoscendo il nome del file
boundary = importdata(fullfile('coordinate.txt'));
% dentro al file .txt c'è una matrice con prima colonna le x e la seconda colonna le y
tic
% if Visualize_Plot
% figure
% end
[T]= CreateMesh(boundary,N,Visualize_Plot);
min = min(min(boundary(:,1)),min(boundary(:,2))); % calcolo il valore minimo delle coordinate
max = max(max(boundary(:,1)),max(boundary(:,2))); % il valore max delle coordinate
margXY = 0.1*(max - min); % margine del 10%
if Visualize_Plot
figure(1)
xlim([min-margXY , max+margXY]) % imposto il limite dell'asse delle x
ylim(xlim) % stessa cosa per l'asse delle y
xlabel('x')
ylabel('y')
title('Mesh generation')
end
toc
function [T] = CreateMesh(boundary,N,PLOT)
% matrice che ha al suo interno la descrizione del poligono
Geom = [2 % ci indica che è un poligono
size(boundary,1)-1 % Numero di segmenti
boundary(1:end-1,1) % x-coordinate
boundary(1:end-1,2)]; % y-coordinate
[dl,~] = decsg(Geom);
r = min(sqrt(sum((boundary(1:end-1,1:2) - boundary(2:end,1:2)).^2,2))); % calcolo la distanza minima tra 2 vertici consecutivi del contorno
% genero una mesh iniziale con
[p,~,t] = initmesh(dl,'Hgrad',1.3,'Hmax',r/N);
% Hmax : la dimensione massima della mesh
% Hgrad : Mesh growth rate
T = zeros(size(t,2),6);
hold on
for i=1:size(t,2) % su ciascun triangolo nella mesh (t è il num di trangoli)
T(i,:) = [p(1,t(1,i)),p(2,t(1,i)),p(1,t(2,i)),p(2,t(2,i)),p(1,t(3,i)),p(2,t(3,i))];
% memorizza i vertici del traingolo
if PLOT
plot([p(1,t(1,i)),p(1,t(2,i)),p(1,t(3,i)),p(1,t(1,i))],...
[p(2,t(1,i)),p(2,t(2,i)),p(2,t(3,i)),p(2,t(1,i))],...
'color',[0.5 0.5 0.5])
end
end
plot(boundary(:,1),boundary(:,2),'b')
hold off