|  | @@ -0,0 +1,146 @@
 | 
	
		
			
				|  |  | +close all ; clc;
 | 
	
		
			
				|  |  | +%  Script de calcul statique du treillis traite le TP1
 | 
	
		
			
				|  |  | +% 
 | 
	
		
			
				|  |  | +% Fonctions utilisees
 | 
	
		
			
				|  |  | +%   statiqueUR      : calcul de la reponse statique [U,R]
 | 
	
		
			
				|  |  | +%   plotstr         : trace du maillage avec ne noeuds et elements
 | 
	
		
			
				|  |  | +%   plotdef         : trace de la deformee
 | 
	
		
			
				|  |  | +%   resultante      : calcul de la resultante en x, y, z d'un vecteur nodal
 | 
	
		
			
				|  |  | +%   barre_stress    : calcul de la contrainte dans un element barre
 | 
	
		
			
				|  |  | +%
 | 
	
		
			
				|  |  | +% Initialisation des variables globales pour un treillis
 | 
	
		
			
				|  |  | +%   nddln : nb de ddl par noeud
 | 
	
		
			
				|  |  | +% 	nnod  : nb de noeuds 
 | 
	
		
			
				|  |  | +%  	nddlt : nb de ddl total(=ndln*nnod)   
 | 
	
		
			
				|  |  | +%	  nelt  : nb d'elements  
 | 
	
		
			
				|  |  | +% 	nnode : nb de noeuds par element (2)
 | 
	
		
			
				|  |  | +% 	ndim  : dimension du probleme (1D,2D ou 3D)
 | 
	
		
			
				|  |  | +%   ncld  : nb de conditions de champ impose (dirichlet)
 | 
	
		
			
				|  |  | +%
 | 
	
		
			
				|  |  | +% 	Coord(nnod,ndim): coordonnees des noeuds
 | 
	
		
			
				|  |  | +%   Connec(nelt,2)	: connectivites	des elements
 | 
	
		
			
				|  |  | +%   Typel(nelt)     : Type des elements (barre_ke)
 | 
	
		
			
				|  |  | +% 	Nprop(nelt)		  : Ne de caracteristique pour chaque element
 | 
	
		
			
				|  |  | +%   Prop(nprop,ncar): Tableau des caracteristiques mecaniques (ES, f)     
 | 
	
		
			
				|  |  | +%	  Ncl(1,nddlt)	  : vaut 1 si le ddl est impose (deplacements imposes)
 | 
	
		
			
				|  |  | +%	  Vcl(1,nddlt)	  : valeur du deplacement impose 
 | 
	
		
			
				|  |  | +%	  F (nddlt,1)		  : vecteur des charges nodales donnees
 | 
	
		
			
				|  |  | +%
 | 
	
		
			
				|  |  | +% L'objectif de scripts de donnees est d'initialiser ses variables globales,
 | 
	
		
			
				|  |  | +% avant de lancer les calculs et d'exploiter les resultats (post-traitement).
 | 
	
		
			
				|  |  | +% 
 | 
	
		
			
				|  |  | +global nddln nnod nddlt nelt nnode ndim ncld
 | 
	
		
			
				|  |  | +global Coord Connec Typel Nprop Prop Ncl Vcl F
 | 
	
		
			
				|  |  | +disp(' ');
 | 
	
		
			
				|  |  | +disp('Structure etudiee : treillis traite dans TP1');
 | 
	
		
			
				|  |  | +disp('Travail de Jovian');
 | 
	
		
			
				|  |  | +disp('Unites : mm, MPa, kN'); % 1N / mm^2 = 1MPa
 | 
	
		
			
				|  |  | +disp('==================');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +% Definition du maillage (X, Y)
 | 
	
		
			
				|  |  | +Coord = [ 0   , 0 ; ...
 | 
	
		
			
				|  |  | +          500 , 0 ; ...
 | 
	
		
			
				|  |  | +          300 , -150 ];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +% Nombre de noeuds (3) et dimension du problème (3D)
 | 
	
		
			
				|  |  | +[nnod, ndim] = size(Coord);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +% Deux degrés de libertés par noeud : u (deplacement selon x) et v (selon y)
 | 
	
		
			
				|  |  | +nddln = 2;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +% Nb de ddl total
 | 
	
		
			
				|  |  | +nddlt = nddln * nnod;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +% Definition de la matrice de connectivite i , j
 | 
	
		
			
				|  |  | +Connec=[ 1 , 2 ; ...
 | 
	
		
			
				|  |  | +         1 , 3 ; ...
 | 
	
		
			
				|  |  | +         2 , 3 ];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +[nelt, nnode] = size(Connec);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +% Definition du modele EF : type des elements
 | 
	
		
			
				|  |  | +Typel = 'barre_ke';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +for i = 1 : nelt
 | 
	
		
			
				|  |  | +    Typel = char('barre_ke', Typel);
 | 
	
		
			
				|  |  | +end
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +% Definition des caracteristiques mecaniques elementaires (ES fx fy)
 | 
	
		
			
				|  |  | +E = 210000 %MPa
 | 
	
		
			
				|  |  | +S1 = 4900 %mm^2
 | 
	
		
			
				|  |  | +S2 = 2500 %mm^2
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Nprop = [1; 2; 2];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +% Tableau : ES fx fy
 | 
	
		
			
				|  |  | +Prop = [  E*S2 0 0; ...
 | 
	
		
			
				|  |  | +          E*S1 0 0];
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  | +% definition des CL en deplacement
 | 
	
		
			
				|  |  | +% Ne du noeud, type sur u et v (1 ddl impose ,0 ddl libre)
 | 
	
		
			
				|  |  | +CL = [  1 , 0 , 1 ; ...
 | 
	
		
			
				|  |  | +        2 , 1 , 1 ];
 | 
	
		
			
				|  |  | +     
 | 
	
		
			
				|  |  | +Ncl = zeros(1, nddlt);
 | 
	
		
			
				|  |  | +ncld = 0;
 | 
	
		
			
				|  |  | +Vcl = zeros(1, nddlt);  % Valeurs des deplacements imposes
 | 
	
		
			
				|  |  | +%Vcl(2)=1; % à utiliser pour imposer une valeur non nulle sur un ddl i
 | 
	
		
			
				|  |  | +for i = 1 : size(CL, 1)
 | 
	
		
			
				|  |  | +   for j = 1 : nddln 
 | 
	
		
			
				|  |  | +       if CL(i, 1+j) == 1 
 | 
	
		
			
				|  |  | +           Ncl(1, (CL(i,1)-1) * nddln + j) = 1;
 | 
	
		
			
				|  |  | +           ncld = ncld + 1; 
 | 
	
		
			
				|  |  | +       end
 | 
	
		
			
				|  |  | +   end
 | 
	
		
			
				|  |  | +end
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +% Definition des charges nodales (Ne du noeud , Fx , Fy)
 | 
	
		
			
				|  |  | +Charg = [ 3 0 -950000 ];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +% Vecteur sollicitation
 | 
	
		
			
				|  |  | +F = zeros(nddlt, 1);
 | 
	
		
			
				|  |  | +for iclf = 1:size(Charg, 1)           
 | 
	
		
			
				|  |  | +	noeud = Charg(iclf,1);  
 | 
	
		
			
				|  |  | +	for i = 1 : nddln
 | 
	
		
			
				|  |  | +       F((noeud-1)*nddln+i)=F((noeud-1)*nddln+i) + Charg(iclf,i+1);
 | 
	
		
			
				|  |  | +    end
 | 
	
		
			
				|  |  | +end
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +[Fx, Fy, Fz] = feval('resultante', F); % Resultante des charges nodales
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +disp('Les variables globales sont initialisees');
 | 
	
		
			
				|  |  | +disp('Fin de lecture des donnees');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +% Trace du maillage pour validation des donnees 
 | 
	
		
			
				|  |  | +plotstr                     
 | 
	
		
			
				|  |  | +reponse = input('Voulez-vous continuer? O/N [O]: ','s');
 | 
	
		
			
				|  |  | +if isempty(reponse) | reponse =='O'
 | 
	
		
			
				|  |  | +    U = zeros(nddlt, 1);
 | 
	
		
			
				|  |  | +    R = zeros(nddlt, 1);
 | 
	
		
			
				|  |  | +    [U(:, 1), R(:, 1)] = statiqueUR; % Resolution du probleme
 | 
	
		
			
				|  |  | +% Format d'impression des vecteurs
 | 
	
		
			
				|  |  | +    form =' %8.3e   %8.3e   %8.3e  '; format = [form(1:8*nddln),' \n']; 
 | 
	
		
			
				|  |  | +    disp(' ');disp('------- deplacements nodaux sur (x,y,z) ----------');
 | 
	
		
			
				|  |  | +    fprintf(format,U)
 | 
	
		
			
				|  |  | +    plotdef(U)
 | 
	
		
			
				|  |  | +% Post-traitement
 | 
	
		
			
				|  |  | +    disp(' ');disp('------- Efforts aux appuis  ----------');
 | 
	
		
			
				|  |  | +    fprintf(format,R(:,1));
 | 
	
		
			
				|  |  | +    [Rx,Ry,Rz] = feval('resultante', R); % Resultantes et reactions
 | 
	
		
			
				|  |  | +    disp(' ');
 | 
	
		
			
				|  |  | +    fprintf('La resultante des charges nodales    en (x,y,z) est : %8.3e   %8.3e   %8.3e \n',Fx,Fy,Fz);                    
 | 
	
		
			
				|  |  | +    fprintf('La resultante des charges reparties  en (x,y,z) est : %8.3e   %8.3e   %8.3e \n',-Rx-Fx,-Ry-Fy,-Rz-Fz);
 | 
	
		
			
				|  |  | +    fprintf('La resultante des efforts aux appuis en (x,y,z) est : %8.3e   %8.3e   %8.3e \n',Rx,Ry,Rz);
 | 
	
		
			
				|  |  | +    disp(' ');disp('------- Contraintes sur les elements ----------');
 | 
	
		
			
				|  |  | +    for iel=1:nelt          %----- boucle sur les elements
 | 
	
		
			
				|  |  | +        loce=[]; for i=1:nnode loce=[loce,(Connec(iel,i)-1)*nddln+[1:nddln]];end
 | 
	
		
			
				|  |  | +        Ue=U(loce);
 | 
	
		
			
				|  |  | +        Ne = feval('barre_stress',iel,Ue);
 | 
	
		
			
				|  |  | +        fprintf('Dans l''element %3i l''effort normal est %8.3e\n',iel,Ne)
 | 
	
		
			
				|  |  | +    end 
 | 
	
		
			
				|  |  | +    clear all
 | 
	
		
			
				|  |  | +    return
 | 
	
		
			
				|  |  | +else
 | 
	
		
			
				|  |  | +disp(' ');disp('---------------- arret du calcul----------------');
 | 
	
		
			
				|  |  | +clear all
 | 
	
		
			
				|  |  | +end
 |