statiqueUR.m 2.3 KB

1
  1. function [U,R] = statiqueUR % Calcul, assemblage et resolution d'un probleme statique KU = F % la resolution apres elimination des CL (ligne - colonne) %================================================================ % appel : [U,R] = statiqueUR % en sortie valeurs nodale du champ inconnu (deplacements) % et des flux inconnus (reactions) % % H.Oudin % Vos commentaires pour ameliorer ce script seront bienvenus. % mailto : herve.oudin@ec-nantes.fr %================================================================ global nddln nddlt nelt nnode ncld global Connec Typel Ncl Vcl F t0=cputime; %----- initialisation du temps de calcul K=zeros(nddlt); %----- initialisation de la matrice rigidite Fg=zeros(nddlt,1); %----- initialisation du vecteur force generalisee Kr=zeros(ncld,nddlt);R=zeros(ncld,1); for iel=1:nelt %----- boucle sur les elements [Ke,Fe] = feval(Typel(iel,:),iel); loce=[]; %----- localisation des ddl de l'element for i=1:nnode if Connec(iel,i) > 0 loce=[loce,(Connec(iel,i)-1)*nddln+[1:nddln]]; end end; K(loce,loce)=K(loce,loce) + Ke; %----- assemblage Fg(loce)=Fg(loce) + Fe; end F = F + Fg; %----- vecteur du chargement ir=0; for i=1:nddlt %----- prise en compte des conditions aux limites if ( Ncl(i) == 1 ) %----- valeurs imposes dans F F = F - K(:,i)*Vcl(i); ir=ir+1; end end for i=nddlt:-1:1 if ( Ncl(i) == 1 ) Kr(ir,:) = K(i,:); %----- pour le calcul des reactions Kr(:,i) = []; R(ir,1) = -F(i); ir = ir-1; K(i,:) = []; K(:,i) = []; %----- supression ligne colonne dans K F(i)=[]; %----- supression ligne dans F end end %disp(K);disp(F); Sol = K\ F; %----- resolution %disp(Sol); ir=0; for i=1:nddlt %----- on replace les valeurs imposees if ( Ncl(i) == 1 ) U(i,1) = Vcl(i); else ir=ir+1; U(i,1)=Sol(ir); end end R(:,1) = R(:,1) + Kr*Sol; %----- calcul des reactions (ddl imposes) ir=nddlt-ir; %----- on etend a l'ensemble des ddl for i=nddlt:-1:1 if ( Ncl(i) == 0 ) R(i,1) = 0; else R(i,1)=R(ir,1);ir=ir-1; end end