The context is a finite element assembly routine where I need to loop over a bunch of mesh elements. In principle, each iteration computes a small local matrix (3×3 in this case) and inserts it into the much larger global matrix according to the indices ie and je.
The iterations are completely independent of each other as I'm pretty sure as my code stands now, it could run through the outer loop in any order without any problems. But of course, this version isn't accepted by MATLAB for parfor format. Can anyone help me out here?
NLoc = 3; Klocal = zeros(NLoc); blocal = zeros(NLoc,1); Aglobal = zeros(NLoc*nElem); bglobal = zeros(NLoc*nElem,1); for k=1:nElem kk = NLoc*(k-1); Klocal = function1(nElem,k); blocal = function2(nElem,k); for i=1:NLoc ie = i+kk; bglobal(ie) = bglobal(ie) + blocal(i); for j=1:NLoc je = j+kk; Aglobal(ie,je) = Aglobal(ie,je) + Klocal(i,j); end end end
Best Answer