def METHOD_NAME(self, node, A, B, isFreeNode):
    NN = self.mesh.number_of_nodes() 
    isBdNode = np.logical_not(isFreeNode)
    newNode = np.zeros((NN, 2), dtype=np.float)
    newNode[isBdNode, :] = node[isBdNode, :]        
    b = -B*node[:, 1] - A*newNode[:, 0]
    newNode[isFreeNode, 0], info = cg(A[np.ix_(isFreeNode, isFreeNode)],
            b[isFreeNode], x0=node[isFreeNode, 0], tol=1e-6)
    b = B*node[:, 0] - A*newNode[:, 1]
    newNode[isFreeNode, 1], info = cg(A[np.ix_(isFreeNode, isFreeNode)],
            b[isFreeNode], x0=node[isFreeNode, 1], tol=1e-6)
    node[isFreeNode, :] = newNode[isFreeNode, :]
    return