Hello everyone, I'm klarc. I recently discovered Tkwant, and the part about obtaining the green lesser function of a system seemed interesting to me. Using the tutorial available in section 2.7 I increased the onsite energies of a potential using a Heaviside step. But for some strange reason I got an error. Here's the code: def onsite_C(site, time): (x,) = site.pos return (V/2) if time >= 0 else 0
def make_double_impurity_system(gamma_L, gamma_C, gamma_R, eps_L, eps_R): # system building lat = kwant.lattice.chain(a=1, norbs=1) syst = kwant.Builder() # central scattering region syst[(lat(x) for x in [-1, 2])] = 0 syst[lat(0)] = onsite_C syst[lat(1)] = onsite_C syst[(lat(0), lat(-1))] = -gamma_L syst[(lat(1), lat(0))] = -gamma_C syst[(lat(2), lat(1))] = -gamma_R # add leads sym1 = kwant.TranslationalSymmetry((-1,)) lead_left = kwant.Builder(sym1) lead_left[lat(0)] = onsite_L lead_left[lat.neighbors()] = -1 syst.attach_lead(lead_left) sym2 = kwant.TranslationalSymmetry((1,)) lead_right = kwant.Builder(sym2) lead_right[lat(2)] = onsite_R lead_right[lat.neighbors()] = -1 syst.attach_lead(lead_right) return syst, lat occupations = [tkwant.manybody.lead_occupation(chemical_potential=mu_L), tkwant.manybody.lead_occupation(chemical_potential=mu_R)] green = tkwant.manybody.GreenFunction(syst, max(times), occupations) idx = tkwant.system.siteId(syst, lat) site_0 = idx(0) site_1 = idx(2) green_lesser = [] for time in tqdm(times, desc='Calculando'): green.evolve(time, 0) green.refine_intervals() green_lesser.append(green.lesser(site_0, site_1)) and error: --------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[299], line 9 6 green.evolve(time, 0) 7 green.refine_intervals() ----> 9 green_lesser.append(green.lesser(site_0, site_1)) File ~/anaconda3/envs/tkwant_env/lib/python3.10/site-packages/tkwant/greenfunctions.py:378, in GreenFunction.lesser(self, i, j, root) 376 if self._green_lesser is None: 377 self._init_lesser() --> 378 self._do_jobs(self._jobs_lesser) 379 return self._green_lesser.evaluate(i, j, root) File ~/anaconda3/envs/tkwant_env/lib/python3.10/site-packages/tkwant/greenfunctions.py:477, in GreenFunction._do_jobs(self, joblist) 475 logger.debug('jobname={}, args={}, kwargs={}'.format(jobname, args, kwargs)) 476 job = getattr(self, jobname) --> 477 job(*args, **kwargs) 478 joblist.clear() File ~/anaconda3/envs/tkwant_env/lib/python3.10/site-packages/tkwant/greenfunctions.py:490, in GreenFunction._evolve_lesser(self, time0, time1, **kwargs) 488 def _evolve_lesser(self, time0, time1, **kwargs): 489 logger.debug('evolve G^<') --> 490 self._green_lesser.evolve(time0, time1) File ~/anaconda3/envs/tkwant_env/lib/python3.10/site-packages/tkwant/greenfunctions.py:53, in _GreenGeneric.evolve(self, time0, time1) ... File tkwant/onebody/kernels.pyx:361, in tkwant.onebody.kernels.Interpolation.eval() File tkwant/onebody/kernels.pyx:416, in tkwant.onebody.kernels.Interpolation._estimate_stepsize() TypeError: Cannot convert 'complex' with non-zero imaginary component to 'double' (this most likely comes from the '**' operator; use 'cython.cpow(True)' to return 'nan' instead of a complex number). Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...