Actually, there is something I don't quite understand in your code
k_min = 0.0
k_max = 0.02
k_n = 41
k = numpy.array([(0,x,0) for x in numpy.linspace(k_min,k_max,k_n)])
w = numpy.array([ 2 -(numpy.linalg.norm(i) == 0) for i in k])
the k space you define are from (0,0,0) to (0,0.02,0) ,and what does w mean, I see it define as "kpoints_weights=w", this is what you mean by "user-define k-point around where the band cross the fermi level" ? because in my operation of ATK, I haven't met such settings. Could you explain a bit in detail to me ?