% Esta funcion recupera la corriente estandarizada
%      J = (L*W)\Jest     (J - Densidad de corriente).
%                      (Jest - Densidad de corriente estandarizada).
% Para ello aprovecha la estructura en bloques de la
% matriz L (Laplaciano) y realiza una factorizacion de 
% Cholesky para cada bloque de la misma:
%      Lb = R'*R.
%
% Sintaxis:
%
%           Jb=ljinvl(R,J,ord,W);
%
% Entrada:
%           R - Matriz triangular de la factorizacion de
%               Cholesky del Laplaciano.
%           J - Densidad de corriente.
%         ord - Vector de permutaciones para la factorizacion
%               de Cholesky.
%           W - Vector de pesos.
% Salida:
%          Jb - Corriente recuperada.
%
% Para mas informacion ver Readme.doc. 
%
% Autor: Nelson J. Trujillo Barreto.

function Jb=ljinvl(R,J,ord,W);

nr=size(R,1);
nj=size(J,1);  
Jb=zeros(size(J));
cantblq=nj/nr;

for i=1:cantblq ;
    Jbl=J(i:cantblq:nj,:);
    Jbl=Jbl(ord,:);          
    Z=R'\Jbl;

    Z1=R\Z;
    bldiagW=W(i:cantblq:nj);
    Jbl=spdiags(bldiagW(ord),0,nr,nr)\Z1;

    Jbl(ord,:)=Jbl;
    Jb(i:cantblq:nj,:)=Jbl;
end;
