function M = MinNya2DMassmatrisAssemblerare(p, t)

nnodes = size(p, 2);  % Antal noder. (= antal kolonner i p)
ntri = size(t, 2);    % Antal trianglar. (= antal kolonner i t)

M = zeros(nnodes, nnodes);  % Initiera massmatris.

for n = 1:ntri
  
  % Ta reda på hörnens nodnummer:
  
  i = t(1, n);  % Nodnummer för hörn nummer 1 i triangel nummer n.
  j = t(2, n);  % Nodnummer för hörn nummer 2 i triangel nummer n.
  k = t(3, n);  % Nodnummer för hörn nummer 3 i triangel nummer n.
                %
                % 1 -> 2 -> 3 moturs riktning.
		
  % Ta reda på hörnens koordinater:
  
  xnodi = p(1, i);  % x-koordinat för nod nummer i.
  xnodj = p(1, j);  % x-koordinat för nod nummer j.
  xnodk = p(1, k);  % x-koordinat för nod nummer k.
  
  ynodi = p(2, i);  % y-koordinat för nod nummer i.
  ynodj = p(2, j);  % y-koordinat för nod nummer j.
  ynodk = p(2, k);  % y-koordinat för nod nummer k.
  
  % Räkna ut koordinaterna för triangelsidornas mittpunkter:
  
  xmittij = (xnodi + xnodj)/2;
  xmittik = (xnodi + xnodk)/2;
  xmittjk = (xnodj + xnodk)/2;
  
  ymittij = (ynodi + ynodj)/2;
  ymittik = (ynodi + ynodk)/2;
  ymittjk = (ynodj + ynodk)/2;
  
  % Räkna ut triangelns area:
  % Jämför Problem 4 i ``Problems Week 6''.
  
  triangelarea = ((xnodj - xnodi)*(ynodk - ynodi) - ...
                  (xnodk - xnodi)*(ynodj - ynodi))/2;
  
  % ... gör att man kan fortsätta skriva på nästa rad.
  
  % Räkna ut värdena på phi_i, phi_j, och phi_k,
  % i triangelsidornas mittpunkter:

  phi_imittij = 1/2;       % Värdet mitt på sida S_ij av phi_i.
  phi_imittik = 1/2;       % Värdet mitt på sida S_ik av phi_i.
  phi_imittjk = 0;         % Värdet mitt på sida S_jk av phi_i.
  
  phi_jmittij = 1/2;       % Värdet mitt på sida S_ij av phi_j.
  phi_jmittik = 0;         % Värdet mitt på sida S_ik av phi_j.
  phi_jmittjk = 1/2;       % Värdet mitt på sida S_jk av phi_j.
  
  phi_kmittij = 0;         % Värdet mitt på sida S_ij av phi_k.
  phi_kmittik = 1/2;       % Värdet mitt på sida S_ik av phi_k.
  phi_kmittjk = 1/2;       % Värdet mitt på sida S_jk av phi_k.
  
  % Bidragen till massmatrisen från triangel nummer n
  % beräknas med mittpunktskvadratur:

  M(i, i) = M(i, i) + ...
      (phi_imittij*phi_imittij + ...
       phi_imittik*phi_imittik + ...
       phi_imittjk*phi_imittjk)*triangelarea/3;
   
  M(i, j) = M(i, j) + ...
      (phi_jmittij*phi_imittij + ...
       phi_jmittik*phi_imittik + ...
       phi_jmittjk*phi_imittjk)*triangelarea/3;
   
  M(i, k) = M(i, k) + ...
      (phi_kmittij*phi_imittij + ...
       phi_kmittik*phi_imittik + ...
       phi_kmittjk*phi_imittjk)*triangelarea/3;

  M(j, i) = M(j, i) + ...
      (phi_imittij*phi_jmittij + ...
       phi_imittik*phi_jmittik + ...
       phi_imittjk*phi_jmittjk)*triangelarea/3;
   
  M(j, j) = M(j, j) + ...
      (phi_jmittij*phi_jmittij + ...
       phi_jmittik*phi_jmittik + ...
       phi_jmittjk*phi_jmittjk)*triangelarea/3;
   
  M(j, k) = M(j, k) + ...
      (phi_kmittij*phi_jmittij + ...
       phi_kmittik*phi_jmittik + ...
       phi_kmittjk*phi_jmittjk)*triangelarea/3;
   
  M(k, i) = M(k, i) + ...
      (phi_imittij*phi_kmittij + ...
       phi_imittik*phi_kmittik + ...
       phi_imittjk*phi_kmittjk)*triangelarea/3;
   
  M(k, j) = M(k, j) + ...
      (phi_jmittij*phi_kmittij + ...
       phi_jmittik*phi_kmittik + ...
       phi_jmittjk*phi_kmittjk)*triangelarea/3;
   
  M(k, k) = M(k, k) + ...
      (phi_kmittij*phi_kmittij + ...
       phi_kmittik*phi_kmittik + ...
       phi_kmittjk*phi_kmittjk)*triangelarea/3;
   
end
