% Stabkraefte eines 2D-Fachwerks
function sk = Stabkraefte2D (xy , km , ep , uv)

[ne,n] = size  (km)   ;
sk     = zeros (ne,1) ;
uvelem = zeros (4 ,1) ;
kkelem = zeros (4 ,1) ;

midsk = 0 ;
for i=1:ne                                      % Schleife ueber alle Elemente (Staebe)
   [em eb] = elemat_m (i , 2 , xy , km , ep) ;  % Elementsteifigkeitsbeziehung
   k1 = km (i,1) ;                              % Nummern der ...
   k2 = km (i,2) ;                              % ...  Elementknoten
   uvelem (1:2) = uv (k1,:) ;                   % Vektor der Verschiebungen
   uvelem (3:4) = uv (k2,:) ;                   % ... der beiden Elementknoten
   kkelem = em*uvelem - eb  ;                   % Element-Knotenkräfte
   sl = sqrt ((xy(k2,1)-xy(k1,1))^2+(xy(k2,2)-xy(k1,2))^2) ;  % Stablaenge
   sk (i) = (kkelem(3)*(xy(k2,1)-xy(k1,1)) + kkelem(4)*(xy(k2,2)-xy(k1,2))) / sl ;
   midsk = midsk + abs(sk (i)) ;              % sk(i) ist die Stabkraft des Stabs i    
end

midsk = midsk / ne ;
for i=1:ne
    if abs(sk(i)) < midsk * 1.e-8     % Wenn Stabkraft deutlich kleiner ist als der
        sk (i) = 0 ;                  % Mittelwert aller Stabkraefte --> Nullstab
    end
end