@classmethod
def subnodes(cls, nsubdiv):
    conlst = []
    jump = 0
    for n in range(nsubdiv, 0, (- 1)):
        for row in range(n, 0, (- 1)):
            l = ((((n - row) * ((n + row) + 3)) // 2) + jump)
            u = ((l + row) + 1)
            ln = ((((((n + 1) * (n + 2)) // 2) + l) - n) + row)
            un = (ln + row)
            rowm1 = np.arange((row - 1))[(..., None)]
            offs = [(l, (l + 1), u, ln), ((l + 1), u, ln, (ln + 1)), (u, (u + 1), (ln + 1), un), (u, ln, (ln + 1), un), ((l + 1), u, (u + 1), (ln + 1)), ((u + 1), (ln + 1), un, (un + 1))]
            conlst.extend(((rowm1 + off) for off in offs[:(- 1)]))
            conlst.append((rowm1[:(- 1)] + offs[(- 1)]))
            conlst.append([((ix + row) - 1) for ix in offs[0]])
        jump += (((n + 1) * (n + 2)) // 2)
    return np.hstack((np.ravel(c) for c in conlst))
@classmethod
def subnodes(cls, nsubdiv):
    conlst = []
    jump = 0
    for n in range(nsubdiv, 0, (- 1)):
        for row in range(n, 0, (- 1)):
            l = ((((n - row) * ((n + row) + 3)) // 2) + jump)
            u = ((l + row) + 1)
            ln = ((((((n + 1) * (n + 2)) // 2) + l) - n) + row)
            un = (ln + row)
            rowm1 = np.arange((row - 1))[(..., None)]
            offs = [(l, (l + 1), u, ln), ((l + 1), u, ln, (ln + 1)), (u, (u + 1), (ln + 1), un), (u, ln, (ln + 1), un), ((l + 1), u, (u + 1), (ln + 1)), ((u + 1), (ln + 1), un, (un + 1))]
            conlst.extend(((rowm1 + off) for off in offs[:(- 1)]))
            conlst.append((rowm1[:(- 1)] + offs[(- 1)]))
            conlst.append([((ix + row) - 1) for ix in offs[0]])
        jump += (((n + 1) * (n + 2)) // 2)
    return np.hstack((np.ravel(c) for c in conlst))