def myfunc( subtraj ): nuclear_traj = subtraj_time_info[subtraj][0] start_time = subtraj_time_info[subtraj][1] print("\nsubtraj", subtraj) print("nuclear trajectory", nuclear_traj) print("start time =", start_time) print("end time =", start_time + subtraj_len) md_time = [ i for i in range( subtraj_len ) ] md_time = np.array( md_time ) * params["dt"] * units.au2fs # Obtain the subtrajectory for i in range(start_time, start_time + subtraj_len): hvib_mb_subtrajs[ subtraj ].append( hvib_mb[nuclear_traj][i] ) hvib_mixed_sd_subtrajs[ subtraj ].append( hvib_mixed_sd[nuclear_traj][i] ) # Compute properties mb_energies = compute_state_energies_vs_time( hvib_mb_subtrajs[ subtraj ] ) mb_tnacs = compute_tnacs( hvib_mb_subtrajs[ subtraj ] ) mb_tau, mb_rates = decoherence_times.decoherence_times( hvib_mb_subtrajs[ subtraj ] ) mixed_sd_energies = compute_state_energies_vs_time( hvib_mixed_sd_subtrajs[ subtraj ] ) mixed_sd_tnacs = compute_tnacs( hvib_mixed_sd_subtrajs[ subtraj ] ) mixed_sd_tau, mixed_sd_rates = decoherence_times.decoherence_times( hvib_mixed_sd_subtrajs[ subtraj ] ) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1,1,1) plt.xlabel('Time, fs', fontsize=10) plt.ylabel('Energy, eV', fontsize=10) plt.ylim(0,14) for mb_index in range( nstates_mb ): plt.plot(md_time, mb_energies[mb_index]*units.au2ev, label="", linewidth=1) plt.tight_layout() plt.savefig("MB_energies_"+str(subtraj)+".png", dpi=300) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1,1,1) plt.xlabel("State Index") plt.ylabel("State Index") plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.xlim(0,nstates_mb-1) plt.ylim(0,nstates_mb-1) plt.xticks(range(0,nstates_mb,2)) plt.yticks(range(0,nstates_mb,2)) plt.imshow( mb_tnacs, cmap='hot', interpolation='nearest', vmin=0, vmax=80) cb = plt.colorbar(label="meV") cb.ax.tick_params(labelsize=10) plt.tight_layout() plt.savefig("MB_tnacs.png") plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1,1,1) plt.xlabel('Time, fs', fontsize=10) plt.ylabel('Energy, eV', fontsize=10) plt.ylim(0,14) for sd_index in range( nstates_mixed_sd ): plt.plot(md_time, mixed_sd_energies[sd_index]*units.au2ev, label="", linewidth=1) plt.tight_layout() plt.savefig("SP_Energies_"+str(subtraj)+".png", dpi=300) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1,1,1) plt.xlabel("State Index") plt.ylabel("State Index") plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.xlim(0,nstates_mixed_sd-1) plt.ylim(0,nstates_mixed_sd-1) plt.xticks(range(0,nstates_mixed_sd,5)) plt.yticks(range(0,nstates_mixed_sd,5)) plt.imshow( mixed_sd_tnacs, cmap='hot', interpolation='nearest', vmin=0, vmax=80) cb = plt.colorbar(label="meV") cb.ax.tick_params(labelsize=10) plt.tight_layout() plt.savefig("SP_tnacs.png")
def myfunc(subtraj): start_time = subtraj * subtraj_increment print("\nsubtraj ", subtraj) print("start time = ", start_time) print("end time = ", start_time + subtraj_len) md_time = [i for i in range(subtraj_len)] md_time = np.array(md_time) * params["dt"] * units.au2fs # Obtain the subtrajectory for i in range(start_time, start_time + subtraj_len): hvib_mb_subtrajs[subtraj].append(hvib_mb[0][i]) hvib_sd_subtrajs[subtraj].append(hvib_sd[0][i]) # Compute mb energy gaps and decoherence times params["nsteps"] = subtraj_len params["init_times"] = [0] tau_mb, rates_mb = decoherence_times.decoherence_times( hvib_mb_subtrajs[subtraj]) dE_mb = decoherence_times.energy_gaps(hvib_mb_subtrajs[subtraj]) avg_deco_mb = tau_mb * units.au2fs print("Finished gather data for MD time", params["init_times"][0] + params["nsteps"], "steps.") print("Dephasing time between mb states 0 and 1 is:", tau_mb.get(0, 1) * units.au2fs, "fs") # Compute sd energy gaps and decoherence times params["nsteps"] = subtraj_len params["init_times"] = [0] tau_sd, rates_sd = decoherence_times.decoherence_times( hvib_sd_subtrajs[subtraj]) dE_sd = decoherence_times.energy_gaps(hvib_sd_subtrajs[subtraj]) avg_deco_sd = tau_sd * units.au2fs print("Finished gather data for MD time", params["init_times"][0] + params["nsteps"], "steps.") print("Dephasing time between sd states 0 and 1 is:", tau_sd.get(0, 1) * units.au2fs, "fs") # Compute mb energies mb_subtraj_energy = [] params["nstates"] = 31 for mb_index in range(params["nstates"]): mb_subtraj_energy.append([]) for step in range(params["nsteps"]): mb_subtraj_energy[mb_index].append( hvib_mb_subtrajs[subtraj][step].get(mb_index, mb_index).real - hvib_mb_subtrajs[subtraj][step].get(0, 0).real) mb_subtraj_energy = np.array(mb_subtraj_energy) tmp_mb_energies.append(mb_subtraj_energy) # Compute sd energies params["nstates"] = 64 sd_subtraj_energy = [] for sd_index in range(params["nstates"]): sd_subtraj_energy.append([]) for step in range(params["nsteps"]): sd_subtraj_energy[sd_index].append( hvib_sd_subtrajs[subtraj][step].get(sd_index, sd_index).real - hvib_sd_subtrajs[subtraj][step].get(0, 0).real) sd_subtraj_energy = np.array(sd_subtraj_energy) tmp_sd_energies.append(sd_subtraj_energy) ############################################### ############################################### # Now it is time to run the NAMD params["T"] = 300.0 params["ntraj"] = 250 params["sh_method"] = 1 params["Boltz_opt"] = 1 params["nsteps"] = subtraj_len params["init_times"] = [0] istates = [14, 18] for istate in istates: params["istate"] = istate # Recall index from 0 ### FSSH params["decoherence_method"] = 0 start = time.time() # mb fssh params["outfile"] = "_out_mb_fssh_subtraj_" + str( subtraj) + "_istate" + str(istate) + ".txt" params["nstates"] = 31 # total number of mb electronic states res_mb_fssh = step4.run([hvib_mb_subtrajs[subtraj]], params) mb_nbra_namd = data_conv.MATRIX2nparray(res_mb_fssh) tmp_fssh_mb.append(mb_nbra_namd) mb_hot_energy_fssh = (mb_nbra_namd[:, 95] - mb_nbra_namd[:, 1]) * units.au2ev #sys.exit(0) #sd fssh params["outfile"] = "_out_sd_fssh_subtraj_" + str( subtraj) + "_istate" + str(istate) + ".txt" params["nstates"] = 64 # total number of sd electronic states res_sd_fssh = step4.run([hvib_sd_subtrajs[subtraj]], params) sd_nbra_namd = data_conv.MATRIX2nparray(res_sd_fssh) tmp_fssh_sd.append(sd_nbra_namd) sd_hot_energy_fssh = (sd_nbra_namd[:, 194] - sd_nbra_namd[:, 1]) * units.au2ev end = time.time() print("Time to run NBRA NAMD = ", end - start) ### IDA params["decoherence_method"] = 1 start = time.time() # mb ida params["outfile"] = "_out_mb_ida_subtraj_" + str( subtraj) + "_istate" + str(istate) + ".txt" params["nstates"] = 31 # total number of mb electronic states res_mb_ida = step4.run([hvib_mb_subtrajs[subtraj]], params) mb_nbra_namd = data_conv.MATRIX2nparray(res_mb_ida) tmp_ida_mb.append(mb_nbra_namd) mb_hot_energy_ida = (mb_nbra_namd[:, 95] - mb_nbra_namd[:, 1]) * units.au2ev #sd ida params["outfile"] = "_out_sd_ida_subtraj_" + str( subtraj) + "_istate" + str(istate) + ".txt" params["nstates"] = 64 # total number of sd electronic states res_sd_ida = step4.run([hvib_sd_subtrajs[subtraj]], params) sd_nbra_namd = data_conv.MATRIX2nparray(res_sd_ida) tmp_ida_sd.append(sd_nbra_namd) sd_hot_energy_ida = (sd_nbra_namd[:, 194] - sd_nbra_namd[:, 1]) * units.au2ev end = time.time() print("Time to run NBRA NAMD = ", end - start) ### mSDM params["decoherence_method"] = 2 start = time.time() # mb msdm params["outfile"] = "_out_mb_msdm_subtraj_" + str( subtraj) + "_istate" + str(istate) + ".txt" params["nstates"] = 31 # total number of mb electronic states res_mb_msdm = step4.run([hvib_mb_subtrajs[subtraj]], params) mb_nbra_namd = data_conv.MATRIX2nparray(res_mb_msdm) tmp_msdm_mb.append(mb_nbra_namd) mb_hot_energy_msdm = (mb_nbra_namd[:, 95] - mb_nbra_namd[:, 1]) * units.au2ev #sd msdm params["outfile"] = "_out_sd_msdm_subtraj_" + str( subtraj) + "_istate" + str(istate) + ".txt" params["nstates"] = 64 # total number of sd electronic states res_sd_msdm = step4.run([hvib_sd_subtrajs[subtraj]], params) sd_nbra_namd = data_conv.MATRIX2nparray(res_sd_msdm) tmp_msdm_sd.append(sd_nbra_namd) sd_hot_energy_msdm = (sd_nbra_namd[:, 194] - sd_nbra_namd[:, 1]) * units.au2ev end = time.time() print("Time to run NBRA NAMD = ", end - start) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('(CdSe)$_{33}$ MB traj' + str(subtraj) + ' istate' + str(istate) + '', fontsize=10) plt.xlabel('Time, fs', fontsize=10) plt.ylabel('Energy, eV', fontsize=10) plt.ylim(0, 3.5) plt.yticks([0, 1, 2, 3]) for sd_index in range(31): plt.plot(md_time, mb_subtraj_energy[sd_index] * units.au2ev, label="", linewidth=1, color="gray") plt.plot(md_time, mb_hot_energy_fssh, linewidth=2.5, color="red", label="FSSH") plt.plot(md_time, mb_hot_energy_ida, linewidth=2.5, color="green", label="IDA") plt.plot(md_time, mb_hot_energy_msdm, linewidth=2.5, color="blue", label="mSDM") plt.tight_layout() plt.legend(fontsize=8, ncol=3, loc="lower left") plt.savefig("CdSe33_MB_Dyn_" + str(subtraj) + "_" + str(istate) + ".png", dpi=300) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('(CdSe)$_{33}$ SP traj' + str(subtraj) + ' istate' + str(istate) + '', fontsize=10) plt.xlabel('Time, fs', fontsize=10) plt.ylabel('Energy, eV', fontsize=10) plt.ylim(0, 3.5) plt.yticks([0, 1, 2, 3]) for sd_index in range(64): plt.plot(md_time, sd_subtraj_energy[sd_index] * units.au2ev, label="", linewidth=1, color="gray") plt.plot(md_time, sd_hot_energy_fssh, linewidth=2.5, color="red", label="FSSH") plt.plot(md_time, sd_hot_energy_ida, linewidth=2.5, color="green", label="IDA") plt.plot(md_time, sd_hot_energy_msdm, linewidth=2.5, color="blue", label="mSDM") plt.tight_layout() plt.legend(fontsize=8, ncol=3, loc="lower left") plt.savefig("CdSe33_" + str(subtraj) + "_SP_Dyn_" + str(istate) + ".png", dpi=300)
def myfunc(subtraj): nuclear_traj = subtraj_time_info[subtraj][0] start_time = subtraj_time_info[subtraj][1] print("\nsubtraj", subtraj) print("nuclear trajectory", nuclear_traj) print("start time =", start_time) print("end time =", start_time + subtraj_len) md_time = [i for i in range(2000)] md_time = np.array(md_time) * params["dt"] * units.au2fs # Obtain the subtrajectory for i in range(start_time, start_time + subtraj_len): hvib_mb_subtrajs[subtraj].append(hvib_mb[nuclear_traj][i]) hvib_mixed_sd_subtrajs[subtraj].append(hvib_mixed_sd[nuclear_traj][i]) hvib_elec_sd_subtrajs[subtraj].append(hvib_elec_sd[nuclear_traj][i]) hvib_hole_sd_subtrajs[subtraj].append(hvib_hole_sd[nuclear_traj][i]) # Compute properties mb_energies = compute_state_energies_vs_time(hvib_mb_subtrajs[subtraj]) mb_tnacs = compute_tnacs(hvib_mb_subtrajs[subtraj]) mb_tau, mb_rates = decoherence_times.decoherence_times( hvib_mb_subtrajs[subtraj]) mixed_sd_energies = compute_state_energies_vs_time( hvib_mixed_sd_subtrajs[subtraj]) mixed_sd_tnacs = compute_tnacs(hvib_mixed_sd_subtrajs[subtraj]) mixed_sd_tau, mixed_sd_rates = decoherence_times.decoherence_times( hvib_mixed_sd_subtrajs[subtraj]) elec_sd_energies = compute_state_energies_vs_time( hvib_elec_sd_subtrajs[subtraj]) elec_sd_tnacs = compute_tnacs(hvib_elec_sd_subtrajs[subtraj]) elec_sd_tau, elec_sd_rates = decoherence_times.decoherence_times( hvib_elec_sd_subtrajs[subtraj]) hole_sd_energies = compute_state_energies_vs_time( hvib_hole_sd_subtrajs[subtraj]) hole_sd_tnacs = compute_tnacs(hvib_hole_sd_subtrajs[subtraj]) hole_sd_tau, hole_sd_rates = decoherence_times.decoherence_times( hvib_hole_sd_subtrajs[subtraj]) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('(CdSe)$_{33}$ Many-body', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) plt.xlabel('Time, fs', fontsize=10) plt.ylabel('Energy, eV', fontsize=10) plt.ylim(0, 3) plt.yticks([0, 1, 2, 3]) for mb_index in range(nstates_mb): plt.plot(md_time, mb_energies[mb_index] * units.au2ev, label="", linewidth=0.5, color="black") plt.tight_layout() plt.savefig("Cd33Se33_mb_Energies_" + str(subtraj) + ".png", dpi=300) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('(CdSe)$_{33}$ MB NACs', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) plt.xlabel("Many-body basis") plt.ylabel("Many-body basis") plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.xlim(0, nstates_mb - 1) plt.ylim(0, nstates_mb - 1) plt.xticks(range(0, nstates_mb, 10)) plt.yticks(range(0, nstates_mb, 10)) plt.imshow(mb_tnacs, cmap='hot', interpolation='nearest', vmin=0, vmax=50) cb = plt.colorbar(label="meV") cb.ax.tick_params(labelsize=10) plt.tight_layout() plt.savefig("Cd33Se33_mb_tnacs.png") plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('(CdSe)$_{33}$ Single-Particle', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) plt.xlabel('Time, fs', fontsize=10) plt.ylabel('Energy, eV', fontsize=10) plt.ylim(0, 3) plt.yticks([0, 1, 2, 3]) for sd_index in range(nstates_mixed_sd): plt.plot(md_time, mixed_sd_energies[sd_index] * units.au2ev, label="", linewidth=0.5, color="black") plt.tight_layout() plt.savefig("Cd33Se33_mixed_sd_Energies_" + str(subtraj) + ".png", dpi=300) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('(CdSe)$_{33}$ SD NACs', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) plt.xlabel("Slater determinant basis") plt.ylabel("Slater determinant basis") plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.xlim(0, nstates_mixed_sd - 1) plt.ylim(0, nstates_mixed_sd - 1) plt.xticks(range(0, nstates_mixed_sd, 10)) plt.yticks(range(0, nstates_mixed_sd, 10)) plt.imshow(mixed_sd_tnacs, cmap='hot', interpolation='nearest', vmin=0, vmax=50) cb = plt.colorbar(label="meV") cb.ax.tick_params(labelsize=10) plt.tight_layout() plt.savefig("Cd33Se33_mixed_sd_tnacs.png") plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('(CdSe)$_{33}$ e$^{-}$', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) plt.xlabel('Time, fs', fontsize=10) plt.ylabel('Energy, eV', fontsize=10) plt.ylim(0, 3) plt.yticks([0, 1, 2, 3]) for sd_index in range(nstates_elec_sd): plt.plot(md_time, elec_sd_energies[sd_index] * units.au2ev, label="", linewidth=0.5, color="black") plt.tight_layout() plt.savefig("Cd33Se33_elec_sd_Energies_" + str(subtraj) + ".png", dpi=300) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('(CdSe)$_{33}$ e$^{-}$ NACs', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) plt.xlabel("H**O \u279E LUMO+N basis") plt.ylabel("H**O \u279E LUMO+N basis") plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.xlim(0, nstates_elec_sd - 1) plt.ylim(0, nstates_elec_sd - 1) plt.xticks(range(0, nstates_elec_sd, 3)) plt.yticks(range(0, nstates_elec_sd, 3)) plt.imshow(elec_sd_tnacs, cmap='hot', interpolation='nearest', vmin=0, vmax=50) cb = plt.colorbar(label="meV") cb.ax.tick_params(labelsize=10) plt.tight_layout() plt.savefig("Cd33Se33_elec_sd_tnacs.png") plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('(CdSe)$_{33}$ h$^{+}$', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) plt.xlabel('Time, fs', fontsize=10) plt.ylabel('Energy, eV', fontsize=10) plt.ylim(0, 3) plt.yticks([0, 1, 2, 3]) for sd_index in range(nstates_hole_sd): plt.plot(md_time, hole_sd_energies[sd_index] * units.au2ev, label="", linewidth=0.5, color="black") plt.tight_layout() plt.savefig("Cd33Se33_hole_sd_Energies_" + str(subtraj) + ".png", dpi=300) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('(CdSe)$_{33}$ h$^{+}$ NACs', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) plt.xlabel("H**O-N \u279E LUMO basis") plt.ylabel("H**O-N \u279E LUMO basis") plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.xlim(0, nstates_hole_sd - 1) plt.ylim(0, nstates_hole_sd - 1) plt.xticks(range(0, nstates_hole_sd, 5)) plt.yticks(range(0, nstates_hole_sd, 5)) plt.imshow(hole_sd_tnacs, cmap='hot', interpolation='nearest', vmin=0, vmax=50) cb = plt.colorbar(label="meV") cb.ax.tick_params(labelsize=10) plt.tight_layout() plt.savefig("Cd33Se33_hole_sd_tnacs.png")
def myfunc(subtraj): nuclear_traj = subtraj_time_info[subtraj][0] start_time = subtraj_time_info[subtraj][1] print("\nsubtraj", subtraj) print("nuclear trajectory", nuclear_traj) print("start time =", start_time) print("end time =", start_time + subtraj_len) md_time = [i for i in range(subtraj_len)] md_time = np.array(md_time) * params["dt"] * units.au2fs # Obtain the subtrajectory for i in range(start_time, start_time + subtraj_len): hvib_mb_subtrajs[subtraj].append(hvib_mb[nuclear_traj][i]) hvib_mixed_sd_subtrajs[subtraj].append(hvib_mixed_sd[nuclear_traj][i]) # Compute properties mb_energies = compute_state_energies_vs_time(hvib_mb_subtrajs[subtraj]) mb_tnacs = compute_tnacs(hvib_mb_subtrajs[subtraj]) mb_tau, mb_rates = decoherence_times.decoherence_times( hvib_mb_subtrajs[subtraj]) mixed_sd_energies = compute_state_energies_vs_time( hvib_mixed_sd_subtrajs[subtraj]) mixed_sd_tnacs = compute_tnacs(hvib_mixed_sd_subtrajs[subtraj]) mixed_sd_tau, mixed_sd_rates = decoherence_times.decoherence_times( hvib_mixed_sd_subtrajs[subtraj]) print("\nTesting np.mean np.std for mb case") for state in range(nstates_mb): s1_energy = np.mean(mb_energies[1]) print("State", state, np.mean(mb_energies[state] - s1_energy) * units.au2ev) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) #plt.title('Cubic, MB', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) plt.title('Cubic', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) plt.xlabel('Time, fs', fontsize=10) plt.ylabel('Energy, eV', fontsize=10) plt.ylim(1.5, 2.8) plt.yticks([2, 2.8]) for mb_index in range(nstates_mb): plt.plot(md_time, mb_energies[mb_index] * units.au2ev, label="", linewidth=0.5, color="black") plt.tight_layout() #plt.legend(fontsize=8, ncol=3, loc="lower left") plt.savefig("CsPbI3_222cubic_mb_Energies_" + str(subtraj) + ".png", dpi=300) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('Cubic, MB', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) #plt.xlabel("Many-body basis") #plt.ylabel("Many-body basis") plt.xlabel("State Index") plt.ylabel("State Index") plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.xlim(0, nstates_mb - 1) plt.ylim(0, nstates_mb - 1) plt.xticks(range(0, nstates_mb, 50)) plt.yticks(range(0, nstates_mb, 50)) plt.imshow(mb_tnacs, cmap='hot', interpolation='nearest', vmin=0, vmax=30) cb = plt.colorbar(label="meV") cb.ax.tick_params(labelsize=10) plt.tight_layout() plt.savefig("CsPbI3_222cubic_mb_tnacs.png") plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('Cubic, SP', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) plt.xlabel('Time, fs', fontsize=10) plt.ylabel('Energy, eV', fontsize=10) plt.ylim(1, 3.6) plt.yticks([1, 2, 3]) for sd_index in range(nstates_mixed_sd): plt.plot(md_time, mixed_sd_energies[sd_index] * units.au2ev, label="", linewidth=1) plt.tight_layout() #plt.legend(fontsize=8, ncol=3, loc="lower left") plt.savefig("CsPbI3_222cubic_mixed_sd_Energies_" + str(subtraj) + ".png", dpi=300) plt.figure(num=None, figsize=(3.21, 2.41), dpi=300, edgecolor='black', frameon=True) plt.subplot(1, 1, 1) plt.title('Cubic, SP', fontsize=10) # traj'+str(subtraj)+'', fontsize=10) #plt.xlabel("Slater determinant basis") #plt.ylabel("Slater determinant basis") plt.xlabel("State Index") plt.ylabel("State Index") plt.xticks(fontsize=10) plt.yticks(fontsize=10) plt.xlim(0, nstates_mixed_sd - 1) plt.ylim(0, nstates_mixed_sd - 1) plt.xticks(range(0, nstates_mixed_sd, 50)) plt.yticks(range(0, nstates_mixed_sd, 50)) plt.imshow(mixed_sd_tnacs, cmap='hot', interpolation='nearest', vmin=0, vmax=30) cb = plt.colorbar(label="meV") cb.ax.tick_params(labelsize=10) plt.tight_layout() plt.savefig("CsPbI3_222cubic_mixed_sd_tnacs.png")