def build_X_vector_U3(N_value, L_value, xi_value): import numpy as np from energy_basis_elements_I import energy_basis_I # n_vec = np.arange(L_value, N_value + 1, 2) # x_vec = [] # for n in n_vec: x_vec.append(energy_basis_I(N_value, n, L_value, xi_value)) # return np.array(x_vec)/N_value
print "N = ", Nval, ", L = ", Lval, ", xi = ", xi ## Read eigenvalues (absolute eigenvalues) and eigenvectors Eigenvalues = read_energy_data("../../test/eigval_"+basis+"_N"+str(Nval)+"_L"+str(Lval)+".dat") Eigenstates = read_eigenstates("../../test/eigvec_"+basis+"_N"+str(Nval)+"_L"+str(Lval)+".dat") E0 = Eigenvalues[0] Eigenvalues = Eigenvalues - E0 # Escitation energies # Computing survival probability print "Computing survival probability ... " # sp=np.zeros((time_grid.shape[0],len(basis_states_indexes)+1),order="F") # +1 for the abscyssa values # for index, index_state in enumerate(basis_states_indexes): if (index == -1): # Find basis state close to separatrix if basis is "u3": basisen = energy_basis_I(Nval,np.arange(0,Nval+1,2), Lval, xi) else: basisen = energy_basis_II(Nval,np.arange(0,Nval+1,2), Lval, xi) # ecrit = (1-5*xi)**2/(16*xi) # Note that basisen is not normalized diffen = (basisen-E0)/Nval-ecrit ## crit_index = np.abs(diffen).argmin() + 1 if (crit_index <=1): crit_index = np.abs(diffen[2:]).argmin()+3 print "crit_index = ", crit_index sp[:,index_state] = survival_probability_basis_states(Eigenvalues,Eigenstates,crit_index,crit_index,time_grid=time_grid)[0] # Last column else: sp[:,index+1] = survival_probability_basis_states(Eigenvalues,Eigenstates,index_state,index_state,time_grid=time_grid)[0] # index + 1 to leave space for time abscyssa ##