Module demo.draw_ktuy
draw_ktuy.py
KTUY質量公式を使って計算した核図表と液滴モデルとの質量欠損差を描画するコード
Functions
def main() ‑> None
-
Expand source code
def main() -> None: """ メイン関数 """ base_inputpath = src_path / 'input' ktuy = pd.read_csv(base_inputpath / 'ktuy05_exist.csv') ame20 = pd.read_csv(base_inputpath / 'ame2020_wb.csv') ktuy_magic = pd.read_csv(base_inputpath / 'magic_number_ktuy05.csv') sabilities = pd.read_csv(base_inputpath / 'stable_nuclei.csv') # 質量欠損差を計算 ame20['diff'] = (ame20.M_ex - ame20.M_wb) / 1.e3 n_vals = np.sort(ame20['N'].unique()) z_vals = np.sort(ame20['Z'].unique()) n_edges = np.r_[n_vals - 0.5, n_vals[-1] + 0.5] z_edges = np.r_[z_vals - 0.5, z_vals[-1] + 0.5] # KTUY質量公式において存在できる原子核を抜き出す exist = ktuy[ktuy['exist'] == True] ms = 2 grid = ( ame20 .pivot(index='Z', columns='N', values='diff') .reindex(index=z_vals, columns=n_vals) .to_numpy() ) fig, ax = plt.subplots(figsize=(10, 6)) cmap = plt.cm.viridis X, Y = np.meshgrid(n_edges, z_edges) ax.scatter(exist["N"], exist["Z"], s=ms, c='gray', marker=',', label='KTUY05') for i in range(len(ktuy_magic)): if not (np.isnan(ktuy_magic.N[i])) and (ktuy_magic.N[i] < exist.N.max()): valmagic = [float(ktuy_magic.N[i]), float(ktuy_magic.N[i])] ax.plot(valmagic, [0, exist.Z.max()], color="gray", zorder=-1, lw=0.75, ls='-.') if not (np.isnan(ktuy_magic.Z[i])) and (ktuy_magic.Z[i] < exist.Z.max()): valmagic = [float(ktuy_magic.Z[i]), float(ktuy_magic.Z[i])] ax.plot([0, exist.N.max()], valmagic, color="gray", zorder=-1, lw=0.75, ls='-.') c = ax.pcolormesh(X, Y, grid, cmap=cmap, shading='flat') ax.scatter(sabilities["N"], sabilities["Z"], s=ms, c='black', marker=',', label='Stable') divider = make_axes_locatable(ax) cax = divider.append_axes("right", size="5%", pad=0.1) cbar = fig.colorbar(c, cax=cax) cbar.set_label(r'Mass Difference between AME2020 and Bethe-Weizsäcker [MeV]') ax.set_xlabel('Neutron Number (N)') ax.set_ylabel('Proton Number (Z)') ax.set_xlim(0, exist.N.max()) ax.set_ylim(0, exist.Z.max()) ax.legend(loc='upper left') ax.set_aspect("equal") plt.tight_layout() plt.show()
メイン関数