import sys import getpass s = '/home/'+getpass.getuser() sys.path.insert(1, '%s/PhD_codes/DPTQM/Structural codes/Liouvillian block diagonalization'%s) #Scientific libraries import numpy as np from qutip import * from qutip.piqs import * import block_diagonalize import scipy.sparse as spr from scipy import optimize import scipy.linalg as scila import itertools import copy import functools as ft import time from tqdm.auto import tqdm #FFT from scipy import fft def ft( U, axis=-1): return fft.fftshift(fft.fft(fft.ifftshift( U,axes=axis), axis=axis, norm='ortho'),axes=axis) def ift(U, axis=-1): return fft.fftshift(fft.ifft(fft.ifftshift(U,axes=axis), axis=axis, norm='ortho'),axes=axis) def ftfreq(N,d): return fft.fftshift(fft.fftfreq(N,d)) def ft2(U) : return fft.fftshift(fft.fft2( fft.ifftshift(U), norm='ortho')) def ift2(U): return fft.fftshift(fft.ifft2(fft.ifftshift(U), norm='ortho')) #File management import pickle import glob #Plotting from matplotlib import pyplot as plt from matplotlib import rc, rcParams, gridspec import matplotlib.colors as colors import matplotlib.cm as cm import colormaps as cmaps from matplotlib.colors import LogNorm, SymLogNorm from matplotlib import patches as mpatches from mpl_toolkits.axes_grid1.inset_locator import inset_axes from mpl_toolkits.axes_grid1 import make_axes_locatable from cycler import cycler import matplotlib.ticker as ticker import matplotlib.ticker import seaborn as sns plt.rcParams["figure.figsize"] = (6,3.6) rcParams['figure.dpi'] = 80 #Plot configurations font_size = 20 letter_size = 22 label_size = 22 title_font = 26 legend_size = 19 rc('font', family='serif', size=font_size) rc('text', usetex=True) rcParams['lines.linewidth'] = 2 rcParams['axes.labelsize'] = label_size rcParams['xtick.minor.visible'] = True rcParams['xtick.major.size'] = 6 rcParams['xtick.minor.size'] = 3 rcParams['xtick.major.width'] = 1.1 rcParams['xtick.minor.width'] = 0.55 rcParams['xtick.direction'] = 'out' rcParams['ytick.minor.visible'] = True rcParams['ytick.major.size'] = 6 rcParams['ytick.minor.size'] = 3 rcParams['ytick.major.width'] = 1.1 rcParams['ytick.minor.width'] = 0.55 rcParams['ytick.direction'] = 'out' rcParams['legend.fontsize'] = legend_size rcParams['axes.formatter.limits'] = -4, 4 class MyLocator(ticker.AutoMinorLocator): def __init__(self, n=2): super().__init__(n=n) ticker.AutoMinorLocator = MyLocator marker_sz = 10 location ='upper left' properties ={'size':12} width_plot = 6 heigth_plot = 3.6 reduced_labels = 0.7*label_size greiner = { 'red': ((0., 1, 1,), (.2, 0, 0), (.48, 0, 0), (.728, 1, 1), (0.912, 1, 1), (1, .5, .5)), 'green': ((0., 1, 1), (.2, 0, 0), (.3, 0, 0), (.5, 1, 1), (.712, 1, 1), (.928, 0, 0), (1, 0, 0)), 'blue': ((0., 1, 1), (.2, .5, .5), (.288, 1, 1), (.472, 1, 1), (.72, 0, 0), (1, 0, 0)) } greiner = colors.LinearSegmentedColormap('greiner', greiner)