Advertisement
PashaYa

Untitled

Jan 20th, 2019
533
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 5.01 KB | None | 0 0
  1. %[new_tension ,new_overloaded_elements ,new_overloaded_contact_elements] = tension_in_element (M ,N ,Cs ,Cn ,sigma_critical ,D ,tension ,overloaded_elements ,point_global_number_sum ,coordinate_sum ,overloaded_contact_elements ,delta_U)
  2.  
  3. function [new_tension ,new_overloaded_elements ,new_overloaded_contact_elements ,virtual_tension ,a ,b] = tension_in_element (M ,N ,Cs ,Cn ,sigma_critical ,D ,tension ,overloaded_elements ,point_global_number_sum ,coordinate_sum ,overloaded_contact_elements ,delta_U)
  4.        
  5.         % Create the vector of tension
  6.             new_tension = zeros(size(tension ,1) ,size(tension ,2));
  7.            
  8.         % Create the local vector of tension
  9.        
  10.             virtual_tension = zeros(length(point_global_number_sum),3);
  11.             for i = 1:length(point_global_number_sum)
  12.                
  13.                 % Overload check at element
  14.                     % Overload check at element
  15.                     if i <= (N-1)*(M-1) && overloaded_elements(i) == 0
  16.                         D_local = D;
  17.                     elseif i <= (N-1)*(M-1) && overloaded_elements(i) > 0
  18.                         D_local = D/2;
  19.                     elseif i > M*(N-1) && overloaded_elements(i - (N-1)) == 0
  20.                         D_local = D;
  21.                     else
  22.                         D_local = D;
  23.                     end
  24.                 % Tension determ
  25.                     a = ( abs(coordinate_sum(point_global_number_sum(i,1) ,1) - coordinate_sum(point_global_number_sum(i,2) ,1)) + ...
  26.                                 abs(coordinate_sum(point_global_number_sum(i,3) ,1) - coordinate_sum(point_global_number_sum(i,4) ,1)) )/4;
  27.                     b = ( abs(coordinate_sum(point_global_number_sum(i,1) ,2) - coordinate_sum(point_global_number_sum(i,4) ,2)) + ...
  28.                         abs(coordinate_sum(point_global_number_sum(i,2) ,2) - coordinate_sum(point_global_number_sum(i,3) ,2)) )/4;
  29.                    
  30.                     U = zeros(8,1);
  31.                     for k = 1:1:4
  32.                         for l = 1:1:2
  33.                             U(2*k-mod(l,2)) = delta_U(2*point_global_number_sum(i,k)-mod(l,2));
  34.                         end
  35.                     end
  36.                     for k = 1:1:2
  37.                         xi = 0 + ((-1)^k)*1/sqrt(3);
  38.                         for l = 1:1:2
  39.                             eta = 0 + ((-1)^l)*1/sqrt(3);
  40.                             B = [-b*(1-eta),          0, b*(1-eta),         0, b*(1+eta),         0, -b*(1+eta),          0;
  41.                                           0,  -a*(1-xi),         0, -a*(1+xi),         0,  a*(1+xi),          0,   a*(1-xi);
  42.                                   -a*(1-xi), -b*(1-eta), -a*(1+xi), b*(1-eta),  a*(1+xi), b*(1+eta),   a*(1-xi), -b*(1+eta)]/(4*a*b);
  43.                             virtual_tension_local = D_local*B*U;
  44.                         end
  45.                     end
  46.                    
  47.                     virtual_tension(i ,:) = virtual_tension_local(:);
  48.             end
  49.            
  50.             for i = 1:length(tension)
  51.                 if i <= length(tension)/2
  52.                     new_tension(i ,:) =  virtual_tension(i ,:);
  53.                 else
  54.                     k = i + ( length(point_global_number_sum) - length(tension) );
  55.                     new_tension(i ,:) =  virtual_tension(k ,:);
  56.                 end
  57.             end
  58.            
  59.         % Create new vector for overload check at element
  60.             new_overloaded_elements = overloaded_elements;
  61.            
  62.             for i = 1:length(overloaded_elements)
  63.                 if abs(new_tension(i ,:)) >= abs(sigma_critical)
  64.                     new_overloaded_elements(i) = 1;
  65.                 end
  66.             end
  67.            
  68.         % Create new vector for overload check at element
  69.             new_overloaded_contact_elements = overloaded_contact_elements;
  70.            
  71.             for i = 1:2*( N -1 )
  72.                 %index for contacts elemetns
  73.                 if i > ( N -1 )
  74.                     j = i - ( N -1 );
  75.                 else
  76.                     j = i;
  77.                 end
  78.                
  79.                 if new_tension((N - 1)*(M - 1) - (N - 1) + i ,2) >= Cn || new_overloaded_contact_elements(j ,2) > 0
  80.                    
  81.                     new_overloaded_contact_elements(j ,2) = 1;
  82.                 elseif abs(new_tension((N - 1)*(M - 1) - (N - 1) + i ,1)) >= Cs || new_overloaded_contact_elements(j ,1) > 0
  83.                    
  84.                     new_overloaded_contact_elements(j ,1) = 1;                    
  85.                 end
  86.             end
  87. %         % Search the point of gap
  88. %             gap_points = new_overloaded_contact_elements(: ,2);
  89. %             for i = 1:lenght(new_overloaded_contact_elements)
  90. %                 if i == 1 || i == lenght(new_overloaded_contact_elements)
  91. %                     if gap_points(i) > 1
  92. %                         new_overloaded_contact_elements(i ,2) = 1;
  93. %                     end
  94. %                 elseif gap_points(i) > 0 && gap_points(i - 1) 0
  95. %             end
  96.            
  97. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement