éviter les boucles

Fermé
tusent32 Messages postés 1 Date d'inscription lundi 26 août 2013 Statut Membre Dernière intervention 26 août 2013 - 26 août 2013 à 16:46
Bonjour, J'ai une code, Pourriez-vous m'aider de éviter les boucles. Merci bien.


function [H_new,P_new,Q_new,R11_new,S11_new]=History(Connect8,ConnectElemPhase,...
Prop,Uresult_old,MatD,nbproc)


H_new=zeros(8*size(Connect8,1),1,'single');
P_new=zeros(6,6,8*size(Connect8,1),'single');
Q_new=zeros(6,6,8*size(Connect8,1),'single');
R11_new=zeros(8*size(Connect8,1),1);
S11_new=zeros(8*size(Connect8,1),1);



pas=ceil((size(Connect8,1))/nbproc);


parfor KK=1:nbproc

if KK<nbproc
listeCL=1+(KK-1)*pas:pas*KK;
Compte=(KK-1)*pas*8+1;
else
listeCL=1+(KK-1)*pas:(size(Connect8,1));
Compte=(KK-1)*pas*8+1;
end




H_new2=zeros(8*size(Connect8,1),1,'single');
P_new2=zeros(6,6,8*size(Connect8,1),'single');
Q_new2=zeros(6,6,8*size(Connect8,1),'single');
R11_new2=zeros(8*size(Connect8,1),1);
S11_new2=zeros(8*size(Connect8,1),1);
ConnectElemPhase2=ConnectElemPhase;
Prop2=Prop;
%dresult_old2=dresult_old;
%Ne2=Ne;
Uresult_old2=Uresult_old;
MatD2=MatD;



%LOOP OVER ALL CUBE ELEMENTS
for i0=1:length(listeCL);

i=listeCL(i0);

%1) Define the cube element

n1=Connect8(i,1);n2=Connect8(i,2);n3=Connect8(i,3);n4=Connect8(i,4);
n5=Connect8(i,5);n6=Connect8(i,6);n7=Connect8(i,7);n8=Connect8(i,8);
CubNodes=[n1 n2 n3 n4 n5 n6 n7 n8];

%2 Mat Properties

if ConnectElemPhase2(i)==1
%the point lies within the inclusion
lambda=Prop2(1);
mu=Prop2(2);
elseif ConnectElemPhase2(i)==2
%the point lies within the matrix
lambda=Prop2(3);
mu=Prop2(4);
end


%3 Matrix Phase Field (dans les noeuds d'element i)
%df=[dresult_old2(n1) dresult_old2(n2) dresult_old2(n3) dresult_old2(n4) dresult_old2(n5) dresult_old2(n6) dresult_old2(n7) dresult_old2(n8)];

%LOOP OVER ALL POINTS GAUSS

for kG=1:8





kkk=0;
Assemble=zeros(1,3*length(CubNodes));
for iii=1:length(CubNodes)
kkk=kkk+1;
Assemble(kkk)=CubNodes(iii)*3-2;
kkk=kkk+1;
Assemble(kkk)=CubNodes(iii)*3-1;
kkk=kkk+1;
Assemble(kkk)=CubNodes(iii)*3;
end

Ui=Uresult_old2(Assemble);

%Computer Strain

Epsilon=MatD2(:,:,kG)*Ui;


%Computer Part Positive of strain et Tensor Projection

[P,Q,R,S,D]=TensorProjection(Epsilon);
R11=R(1,1);
S11=S(1,1);


P_new2(:,:,Compte)=P;
Q_new2(:,:,Compte)=Q;
R11_new2(Compte)=R11;
S11_new2(Compte)=S11;

E1=D(1,1);
E2=D(2,2);
E3=D(3,3);
E1p=(E1+abs(E1))/2;
E2p=(E2+abs(E2))/2;
E3p=(E3+abs(E3))/2;

Trace=E1+E2+E3;

TraceP=(Trace+abs(Trace))/2;

H_new2(Compte)= 0.5*lambda*(TraceP)^2 +mu*((E1p)^2 + (E2p)^2 +(E3p)^2);


Compte=Compte+1;


end




end

%dG_new=dG_new+dG_new2;
H_new=H_new+H_new2;
P_new=P_new+P_new2;
Q_new=Q_new+Q_new2;
R11_new=R11_new+R11_new2;
S11_new=S11_new+S11_new2;



end