view +blockmatrix/fromMatrix.m @ 969:adae8063ea2f feature/poroelastic

Remove silly getBoundaryOperator* methods in multiblock.DiffOp and make the getBoundaryOperator and getBoundaryQuadrature methods use the scheme.getBoundaryOperator/Quadrature methods instead of properties.
author Martin Almquist <malmquist@stanford.edu>
date Tue, 25 Dec 2018 07:21:19 +0100
parents 3974dccff55b
children
line wrap: on
line source

function bm = fromMatrix(A, div)
    d1 = div{1};
    d2 = div{2};
    [n, m] = size(A);
    if n ~= sum(d1) || m ~= sum(d2)
        error('blockmatrix:fromMatrix:NonMatchingDim','The dimensions in div does not sum to the dimensions in A.');
    end

    bm = cell(length(d1), length(d2));
    I = 1;
    for i = 1:length(d1)
        J = 1;
        for j = 1:length(d2)
            Asub = A(I:(I + d1(i)-1), J:(J + d2(j)-1));
            if nnz(Asub) == 0
                bm{i,j} = sparse(d1(i), d2(j));
            else
                bm{i,j} = Asub;
            end
            J = J + d2(j);
        end
        I = I + d1(i);
    end
end