Advertisement
Guest User

Untitled

a guest
Mar 15th, 2017
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.30 KB | None | 0 0
  1. function Aufgabe_2_Optimierung
  2. clc
  3. disp('|')
  4. %if caught error %Stoppt den Run und springt zu der Stelle an welcher der Code
  5. %Probleme verursacht
  6. %% Randbedingungen
  7. disp('Optimierung eines [0/90/+45/-45]s -Laminats hinsichtlich Gewicht/ Schichtdicke')
  8. disp('--------------------------------------------------------------------------')
  9. global k alpha Anz_Lastfaelle n_dach R_pz R_pd R_sz R_sd R_sp Q_12 t_Laminat sigma_12
  10.  
  11. % Schichtanzahl: [0/90/+45/-45/-45+45/90/0]
  12. k=8;
  13.  
  14. % Faserrichtung (Referenz zur Laminat-x-Achse)
  15. alpha=[0,90,+45,-45]*pi/180;
  16. for kk=1:k/2
  17. alpha(k+1-kk)=alpha(kk);
  18. end
  19.  
  20. % Lastvektor (nur In-plane-Lasten: Kraftflüsse) % Projektnr.:5
  21. Anz_Lastfaelle=3;
  22. n_dach{1}=[860,340,-1045]'; % [nx,ny,nxy]
  23. n_dach{2}=[465,-270,870]';
  24. n_dach{3}=[420,-1005,985]';
  25.  
  26. % Festigkeitskennwerte
  27. R_pz =1450; % Zugfestigkeit parallel (in Faserrichtung)
  28. R_pd =-1400; % Druckfestigkeit parallel (in Faserrichtung)
  29. R_sz =55; % Zugfestigkeit senkrecht (quer zur Faserrichtung)
  30. R_sd =-1400; % Druckfestigkeit senkrecht (quer zur Faserrichtung)
  31. R_sp =90; % Schubfestigkeit
  32.  
  33. % Materialkonstanten
  34. E_p =125000; % E-Modul in Faserrichtung
  35. E_s =8000; % E-Modul quer zur Faserrichtung
  36. G_sp =5000; % Schub-Modul senkrecht/parallel
  37. v_sp =0.3; % Poisson senkrecht/parallel
  38. v_ps=E_s/E_p*v_sp; % Poisson parallel/senkrecht
  39. % Nachgiebigkeit- bzw. Steifigkeitsmatrix Schicht (2D):
  40. S_12=[1/E_p, -v_ps/E_s, 0;-v_sp/E_p, 1/E_s, 0;0,0,1/G_sp];
  41. Q_12=inv(S_12);
  42.  
  43. %% Optimierung
  44. % Initialiserungs-Schichtdicken
  45. t_init=[0.1,0.1,0.1];
  46.  
  47.  
  48. % lineare Nebenbedingungen
  49. Aeq=[];Beq=[]; % Aeq * t = Beq
  50. A=[]; B=[]; % A * t ? B
  51. % zulässiges Schichtdicken-Intervall: LB ? t ? UB
  52. LB=[0.01,0.01,0.01]; % untere Grenze: nur positive Werte
  53. UB=[5.00,5.00,5.00]; % obere Grenze
  54. % Funktionsaufruf
  55. [t,t_Laminat]=fmincon(@Zielfunktion,t_init,A,B,Aeq,Beq,LB,UB,@Nebenbedingung);
  56.  
  57. % Ausgabe
  58. disp('--------------------------------------------------------------------------')
  59. disp('Schichtdicken:')
  60. disp([' 0°-Schicht(t_0) : ',num2str(t(1)),' mm'])
  61. disp([' 90°-Schicht(t_90): ',num2str(t(2)),' mm'])
  62. disp([' +-45°-Schicht(t_45): ',num2str(t(3)),' mm'])
  63. disp(['Laminatdicke (t_Laminat) = 2*(t_0+t_90+2*t_45): ',num2str(t_Laminat),' mm'])
  64.  
  65. %% Ausgabe Einzelschichtspannungen für optimierte Schichtdicke
  66. disp('--------------------------------------------------------------------------')
  67. disp('Scheibenverzerrungen & Einzelschichtspannungen für optimierte Schichtdicke')
  68. bez = '%2d. &%2d. Schicht (%3d°): % 10.3f % 10.3f % 10.3f \n';
  69.  
  70. for ll=1:Anz_Lastfaelle
  71. disp('--------------------------------------------------------------------------')
  72. disp(['Lastfall: ',num2str(ll)])
  73. disp('Einzelschichtspannungen:')
  74. disp(' Schicht (Faserwinkel): Sigma_1 Sigma_2 Tau_21')
  75. for kk=1:k/2
  76. fprintf(bez,kk,k+1-kk,alpha(kk)*180/pi,sigma_12{ll}(1,kk),sigma_12{ll}(2,kk),sigma_12{ll}(3,kk));
  77. end
  78. end
  79.  
  80. end
  81.  
  82.  
  83. function t_Laminat=Zielfunktion(t)
  84. % Schichtdicken des [0/90/+45/-45]s-Laminats; t_+45=t_-45=t_45
  85. t_0 =t(1);
  86. t_90=t(2);
  87. t_45=t(3);
  88. % Gesamtschichtdicke des kompletten Laminats
  89. t_Laminat=2*(t_0+t_90+2*t_45);
  90. end
  91.  
  92. function [C, Ceq]=Nebenbedingung(t)
  93. global k alpha Anz_Lastfaelle n_dach R_pz R_pd R_sz R_sd R_sp Q_12 t_Laminat sigma_12
  94.  
  95. %% Schichtdicke
  96. t_0 = t(1);
  97. t_90= t(2);
  98. t_45= t(3);
  99. % Lagenaufbau
  100. t_schicht=[t_0,t_90,t_45,t_45,t_45,t_45,t_90,t_0];
  101.  
  102. %% Aufbau A-Matrix
  103. % z-Koordianten (Mittelebene: z=0)
  104. z = -t_Laminat/2;
  105. for kk=1:k
  106. z(kk+1)=z(kk)+t_schicht(kk);
  107. end
  108.  
  109. % A-Matrix
  110. sum_A=zeros(3,3);
  111. for kk=1:k
  112. % Transformationen
  113. Te_xy12{kk}=[(cos(alpha(kk)))^2, (sin(alpha(kk)))^2, 1/2*sin(2*alpha(kk));...
  114. (sin(alpha(kk)))^2, (cos(alpha(kk)))^2, -1/2*sin(2*alpha(kk));...
  115. -sin(2*alpha(kk)), sin(2*alpha(kk)), cos(2*alpha(kk))];
  116. Ts_12xy{kk}=Te_xy12{kk}';
  117. % Steifigkeitsmatrix Laminat (2D)
  118. Q_xy{kk}=Ts_12xy{kk}*Q_12*Te_xy12{kk};
  119. % Elemente der A-Matrix
  120. for ii=1:3
  121. for jj=1:3
  122. A(ii,jj)=sum_A(ii,jj)+Q_xy{kk}(ii,jj)*(z(kk+1)-z(kk));
  123. sum_A(ii,jj)=A(ii,jj);
  124. end
  125. end
  126. end
  127. A_inv=inv(A);
  128.  
  129. %% Einzelschichtdehnungen und -Spannungen
  130. for ll=1:Anz_Lastfaelle
  131. % MSV-Verzerrungen epsilon_dach = Scheibenverzerrungen epsilon_0
  132. epsilon_dach=A_inv*n_dach{ll};
  133. for kk=1:k/2
  134. % Einzelschichtdehnungen
  135. epsilon_12{kk}=Te_xy12{kk}*epsilon_dach;
  136. % Einzelschichtspannungen
  137. sigma_12{ll}(:,kk)=Q_12*epsilon_12{kk};
  138. end
  139. end
  140.  
  141. %% nichtlineare Ungleichheitsnebenbedingungen
  142. jj=1; % Iterationsindex
  143. % Schleife über Lastfälle
  144. for ll=1:Anz_Lastfaelle
  145. % Schleife über eine Laminat-Symmetriehälfte
  146. for kk=1:k/2 % k=8: Anzahl Schichten
  147. C(jj) = sigma_12{ll}(1,kk)-R_pz; % 1.NB
  148. jj=jj+1;
  149. C(jj) = -(sigma_12{ll}(1,kk)-R_pd); % 2.NB
  150. jj=jj+1;
  151. C(jj) = sigma_12{ll}(2,kk)-R_sz; % 3.NB
  152. jj=jj+1;
  153. C(jj) = -(sigma_12{ll}(2,kk)-R_sd); % 4.NB
  154. jj=jj+1;
  155. C(jj) = abs(sigma_12{ll}(3,kk))-R_sp; % 5.NB
  156. jj=jj+1;
  157. end
  158. end
  159.  
  160. %% nichtlineare Gleichheitsnebenbedingungen
  161. Ceq=[];
  162. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement