function [K, F] = CalculateLaplace_mult_rot(model, lambda_wall, lambda_fluid, lambda_air)
mesh = model.Mesh;
nodes = mesh.Nodes;
elements = mesh.Elements;

Nnodes = size(nodes,2);
Nelems = size(elements,2);

K = sparse(Nnodes, Nnodes);
F = zeros(Nnodes,1);

regions = zeros(Nelems,1);
regions(findElements(mesh,'region','Face',1)) = 1;
regions(findElements(mesh,'region','Face',2)) = 2;
regions(findElements(mesh,'region','Face',3)) = 3;

for e = 1:Nelems
    vert = elements(:,e);

    x = nodes(1,vert);   % r-coordinates
    y = nodes(2,vert);   % z-coordinates

    Ae = polyarea(x,y);

    b = [y(2)-y(3); y(3)-y(1); y(1)-y(2)];
    c = [x(3)-x(2); x(1)-x(3); x(2)-x(1)];

    rbar = mean(x);      % <-- axisymmetric weight
    switch regions(e)
        case 1
            lambda = lambda_wall;
        case 2
            lambda = lambda_fluid;
        case 3
            lambda = lambda_air;
    end
    Ke = rbar * (lambda/(4*Ae)) * (b*b.' + c*c.');
    K(vert,vert) = K(vert,vert) + Ke;
end
end
