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")
Пример #2
0
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")
Пример #4
0
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")