function [fixeddofs2, freedofs2, F] = FEA_init_nonregular(nodes, fixeddofs, loadnid,vF)

    nodeNum = size(nodes, 1);

    % after remove, all dofs in orignal idx representation
    alldofs1 = [2 * nodes(:, 3) - 1, 2 * nodes(:, 3)];
    [~, r1] = intersect(alldofs1(:, 1), fixeddofs);
    [~, r2] = intersect(alldofs1(:, 2), fixeddofs);
    fixeddofs2 = [2 * r1 - 1; 2 * r2];

    alldofs2 = nodeNum * 2;
    freedofs2 = setdiff(1:alldofs2, fixeddofs2);

    [~, r1] = intersect(alldofs1(:, 1), loadnid);
    [~, r2] = intersect(alldofs1(:, 2), loadnid);
    loadnid2 = [2 * r1 - 1; 2 * r2];
    F = sparse(loadnid2, 1, vF, alldofs2, 1);
end