function [S, M, R, v, r] = PoissonAssembler2D(p,e,t,h); n = size(p,2); % Antal noder. (= antal kolonner i p) ntri = size(t,2); % Antal trianglar. (= antal kolonner i t) S = zeros(n,n); % Initiera styvhetsmatris. M = zeros(n,n); % Initiera massmatris. R = zeros(n,n); % Initiera randmatris. v = zeros(n,1); % Initiera lastvektor. r = zeros(n,1); % Initiera randvektor. for el = 1:ntri nodes = t(1:3,el); coords = p(:,nodes); Me = ElementMassmatrix(h); Se = ElementStiffnessmatrix(h); ve = ElementLoadvector(coords,h); M(nodes,nodes) = M(nodes,nodes) + Me; S(nodes,nodes) = S(nodes,nodes) + Se; v(nodes) = v(nodes) + ve; end % % Bidrag från randen, OBS : ÄNDRA INTE % for bel = 1:size(e,2) nodes = e(1:2,bel); coords = p(:,nodes); g_N = 0.0; g_D = 0.0; gamma = 1e5; sidelength = norm(coords(:,1)-coords(:,2)); phi = [.5 .5]; R(nodes,nodes) = R(nodes,nodes) + gamma*phi'*phi*sidelength; r(nodes) = r(nodes) + (gamma*g_D - g_N)*phi'*sidelength; end % subroutines ----------------------------------------------------------------- function Me = ElementMassmatrix(h) % % Komplettera med de rätta värdena på elementmassmatrisen Me. % Me = [ 0.0 , 0.0 , 0.0; 0.0 , 0.0 , 0.0; 0.0 , 0.0 , 0.0 ]; % function Se = ElementStiffnessmatrix(h) % % Komplettera med de rätta värdena på elementstyvhetsmatrisen Se. % Se = [ 0.0 , 0.0 , 0.0; 0.0 , 0.0 , 0.0; 0.0 , 0.0 , 0.0 ]; % function ve = ElementLoadvector(coords,h) % % Använd kvadratur för att beräkna elementlastvektorn ve. % triangelarea = 0.0; % x = coords(1,:); y = coords(2,:); ve = [ 0.0 ; 0.0 ; 0.0 ]; % % Lasten f. % function load = f(x,y) load = 0.0;