public static SpMat getAddReqEdges(GraphModel gILU, SpMat m, SpMat mR, SpMat mP,Vector<Integer> order) {
        SpMat addM = new SpMat(m.rows(),m.cols());
        //for (int i = 0; i < m.getRowDimension(); i++) {
        //    for (int j = 0; j < m.getColumnDimension(); j++) {
        for(int i : order) {
            for(int j : order) {
                if(mP.contains(i, j)) {
                    boolean isAdd = true;
                    if(i > j) {
                        for (Vertex v : gILU.directNeighbors(gILU.getVertex(j))) {
                            if (v.getId() > j) {
                                isAdd = false;
                                break;
                            }
                        }
                    } else {
                        for (Vertex v : gILU.directNeighbors(gILU.getVertex(i))) {
                            if (v.getId() > i) {
                                isAdd=false;
                                break;
                            }
                        }
                    }
                    if(isAdd) {
                        addM.set(i, j);
                        gILU.addEdge(new Edge(gILU.getVertex(i), gILU.getVertex(j)));
                    }
                }
            }
        }
        return addM;
    }