Source code for triqs.gf.mesh_point

# Copyright (c) 2017 Commissariat à l'énergie atomique et aux énergies alternatives (CEA)
# Copyright (c) 2017 Centre national de la recherche scientifique (CNRS)
# Copyright (c) 2019-2023 Simons Foundation
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You may obtain a copy of the License at
#     https:#www.gnu.org/licenses/gpl-3.0.txt
#
# Authors: Michel Ferrero, Olivier Parcollet, Nils Wentzell


[docs] class MeshValueGenerator:
[docs] def __init__(self, m): self.m = m
def __iter__(self): return (x.value for x in self.m)
[docs] class MeshPoint :
[docs] def __init__(self, index, data_index, mesh_hash, value = None, weight = None): """ None : a mesh point just to use in the G[...] """ self.index = index self.data_index = data_index self.mesh_hash = mesh_hash self.value = value self.weight = weight
def _get_val(self, x): return (x.value if hasattr(x, 'value') else x) def __add__(self, x): return self.value + self._get_val(x) def __radd__(self, x): return self._get_val(x) + self.value def __sub__(self, x): return self.value - self._get_val(x) def __rsub__(self, x): return self._get_val(x) - self.value def __neg__(self): return - self.value def __mul__(self, x): return self.value * self._get_val(x) def __rmul__(self, x): return self._get_val(x) * self.value def __truediv__(self, x): return self.value / self._get_val(x) def __rtruediv__(self, x): return self._get_val(x) / self.value def __call__(self, *args, **kw): return self.value(*args, **kw) def __getitem__(self, *args): return self.value.__getitem__(*args) def __float__(self): return float(self.value) def __int__(self): return int(self.value) def __complex__(self): return complex(self.value) def __str__(self): return "mesh_point(index = %s, data_index = %s, value = %s)"%(self.index, self.data_index, self.value) @property def real(self): return self.value.real @property def imag(self): return self.value.imag