import numpy as np
import matplotlib.pyplot as plt
import nucleardatapy as nuda
[docs]
def matter_setupMicro_gap_1s0_fig(pname, models, matter="NM"):
"""
Plot the 1S0 pairing gap in `matter`.
The plot is 2x2 with:
[0,0]: gap versus den. [0,1]: gap versus kfn.
[1,0]: gap/EF versus den. [1,1]: gap/EF versus kfn.
:param pname: name of the figure (*.png)
:type pname: str.
:param models: models to run on.
:type models: array of str.
:param matter: can be 'SM' or 'NM' (default).
:type matter: str.
"""
#
print(f"Plot name: {pname}")
#
print("models:", models)
#
fig, axs = plt.subplots(2, 2)
fig.subplots_adjust( left=0.12, bottom=0.12, right=0.95, top=0.85, wspace=0.05, hspace=0.05 )
#
axs[0,0].set_ylabel(r"$\Delta_{1S0}$ (MeV)", fontsize="14")
axs[0,0].set_xlim([0, 0.09])
axs[0,0].set_ylim([0, 3.0])
axs[0,0].tick_params("x", labelbottom=False)
#
axs[0,1].set_xlim([0, 1.6])
axs[0,1].set_ylim([0, 3.0])
axs[0,1].tick_params("x", labelbottom=False)
axs[0,1].tick_params("y", labelleft=False)
#
axs[1,0].set_ylabel(r"$\Delta_{1S0}/E_F$", fontsize="14")
axs[1,0].set_xlabel(r"$n_\text{nuc}$ (fm$^{-3}$)", fontsize="14")
axs[1,0].set_xlim([0, 0.09])
axs[1,0].set_ylim([0, 0.65])
#
axs[1,1].set_xlabel(r"$k_{F}$ (fm$^{-1}$)", fontsize="14")
axs[1,1].set_xlim([0, 1.6])
axs[1,1].set_ylim([0, 0.65])
axs[1,1].tick_params("y", labelleft=False)
#
for model in models:
#
gap = nuda.matter.setupMicroGap(model=model, matter=matter)
#
if matter.lower() == "nm":
if gap.nm_gap_1s0 is not None:
if gap.nm_gap_1s0_err is not None:
axs[0, 0].errorbar(gap.nm_den_1s0, gap.nm_gap_1s0, yerr=gap.nm_gap_1s0_err,
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle, label=gap.label )
axs[0, 1].errorbar(gap.nm_kfn_1s0, gap.nm_gap_1s0, yerr=gap.nm_gap_1s0_err,
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
axs[1, 0].errorbar(gap.nm_den_1s0, gap.nm_gap_1s0 / nuda.eF_n(gap.nm_kfn_1s0), yerr=gap.nm_gap_1s0_err / nuda.eF_n(gap.nm_kfn_1s0),
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
axs[1, 1].errorbar(gap.nm_kfn_1s0, gap.nm_gap_1s0 / nuda.eF_n(gap.nm_kfn_1s0), yerr=gap.nm_gap_1s0_err / nuda.eF_n(gap.nm_kfn_1s0),
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
else:
axs[0, 0].plot(gap.nm_den_1s0, gap.nm_gap_1s0,
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle, label=gap.label)
axs[0, 1].plot(gap.nm_kfn_1s0, gap.nm_gap_1s0,
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
axs[1, 0].plot(gap.nm_den_1s0, gap.nm_gap_1s0 / nuda.eF_n(gap.nm_kfn_1s0),
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
axs[1, 1].plot(gap.nm_kfn_1s0, gap.nm_gap_1s0 / nuda.eF_n(gap.nm_kfn_1s0),
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
elif matter.lower() == "sm":
if gap.sm_gap_1s0 is not None:
if gap.sm_gap_1s0_err is not None:
axs[0, 0].errorbar(gap.sm_den_1s0, gap.sm_gap_1s0, yerr=gap.sm_gap_1s0_err,
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle, label=gap.label )
axs[0, 1].errorbar(gap.sm_kfn_1s0, gap.sm_gap_1s0, yerr=gap.sm_gap_1s0_err,
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
axs[1, 0].errorbar(gap.sm_den_1s0, gap.sm_gap_1s0 / (2*nuda.eF_n(gap.sm_kfn_1s0)), yerr=gap.sm_gap_1s0_err / nuda.eF_n(gap.sm_kfn_1s0),
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
axs[1, 1].errorbar(gap.sm_kfn_1s0, gap.sm_gap_1s0 / (2*nuda.eF_n(gap.sm_kfn_1s0)), yerr=gap.sm_gap_1s0_err / nuda.eF_n(gap.sm_kfn_1s0),
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
else:
axs[0, 0].plot(gap.sm_den_1s0, gap.sm_gap_1s0,
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle, label=gap.label )
axs[0, 1].plot(gap.sm_kfn_1s0, gap.sm_gap_1s0,
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
axs[1, 0].plot(gap.sm_den_1s0, gap.sm_gap_1s0 / (2*nuda.eF_n(gap.sm_kfn_1s0)),
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
axs[1, 1].plot(gap.sm_kfn_1s0, gap.sm_gap_1s0 / (2*nuda.eF_n(gap.sm_kfn_1s0)),
marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
if nuda.env.verb_output:
gap.print_outputs()
#
# axs[1,0].legend(loc='upper right',fontsize='8')
fig.legend(loc="upper left", bbox_to_anchor=(0.1, 1.0), columnspacing=2, fontsize="8", ncol=3, frameon=False )
#
if pname is not None:
plt.savefig(pname, dpi=300)
plt.close()
[docs]
def matter_setupMicro_gap_3pf2_fig(pname, models, matter="NM"):
"""
Plot the 3PF2 pairing gap in `matter`.
The plot is 2x2 with:
[0,0]: gap versus den. [0,1]: gap versus kfn.
[1,0]: gap/EF versus den. [1,1]: gap/EF versus kfn.
:param pname: name of the figure (*.png)
:type pname: str.
:param models: models to run on.
:type models: array of str.
:param matter: can be 'SM' or 'NM' (default).
:type matter: str.
"""
#
print(f"Plot name: {pname}")
#
# plot 3PF2 pairing gap in NM
print("models:", models)
#
fig, axs = plt.subplots(2, 2)
fig.tight_layout() # Or equivalently, "plt.tight_layout()"
fig.subplots_adjust(left=0.12, bottom=0.12, right=0.95, top=0.85, wspace=0.05, hspace=0.05 )
#
axs[0, 0].set_ylabel(r"$\Delta_{3PF2}$ (MeV)", fontsize="14")
axs[0, 0].set_xlim([0, 0.38])
axs[0, 0].set_ylim([0, 0.6])
axs[0, 0].tick_params("x", labelbottom=False)
#
axs[0, 1].set_xlim([0.6, 2.3])
axs[0, 1].set_ylim([0, 0.6])
axs[0, 1].tick_params("x", labelbottom=False)
axs[0, 1].tick_params("y", labelleft=False)
#
axs[1, 0].set_ylabel(r"$100\times \Delta_{3PF2}/E_F$", fontsize="14")
axs[1, 0].set_xlabel(r"$n_\text{nuc}$ (fm$^{-3}$)", fontsize="14")
axs[1, 0].set_xlim([0, 0.38])
axs[1, 0].set_ylim([0, 0.78])
#
axs[1, 1].set_xlabel(r"$k_{F}$ (fm$^{-1}$)", fontsize="14")
axs[1, 1].set_xlim([0.6, 2.3])
axs[1, 1].set_ylim([0, 0.78])
axs[1, 1].tick_params("y", labelleft=False)
#
for model in models:
#
gap = nuda.matter.setupMicroGap(model=model, matter=matter)
#
if matter.lower() == "nm":
if gap.nm_gap_3pf2 is not None:
if gap.nm_gap_3pf2_err is not None:
axs[0, 0].errorbar(
gap.nm_den_3pf2,
gap.nm_gap_3pf2,
yerr=gap.nm_gap_3pf2_err,
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
label=gap.label,
)
axs[0, 1].errorbar(
gap.nm_kfn_3pf2,
gap.nm_gap_3pf2,
yerr=gap.nm_gap_3pf2_err,
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
)
axs[1, 0].errorbar(
gap.nm_den_3pf2,
100 * gap.nm_gap_3pf2 / nuda.eF_n(gap.nm_kfn_3pf2),
yerr=gap.nm_gap_3pf2_err / nuda.eF_n(gap.nm_kfn_3pf2),
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
)
axs[1, 1].errorbar(
gap.nm_kfn_3pf2,
100 * gap.nm_gap_3pf2 / nuda.eF_n(gap.nm_kfn_3pf2),
yerr=gap.nm_gap_3pf2_err / nuda.eF_n(gap.nm_kfn_3pf2),
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
)
else:
axs[0, 0].plot(
gap.nm_den_3pf2,
gap.nm_gap_3pf2,
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
label=gap.label,
)
axs[0, 1].plot(
gap.nm_kfn_3pf2,
gap.nm_gap_3pf2,
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
)
axs[1, 0].plot(
gap.nm_den_3pf2,
100 * gap.nm_gap_3pf2 / nuda.eF_n(gap.nm_kfn_3pf2),
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
)
axs[1, 1].plot(
gap.nm_kfn_3pf2,
100 * gap.nm_gap_3pf2 / nuda.eF_n(gap.nm_kfn_3pf2),
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
)
elif matter.lower() == "sm":
if gap.sm_gap_3pf2 is not None:
if gap.sm_gap_3pf2_err is not None:
axs[0, 0].errorbar(
gap.sm_den_3pf2,
gap.sm_gap_3pf2,
yerr=gap.sm_gap_3pf2_err,
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
label=gap.label,
)
axs[0, 1].errorbar(
gap.sm_kfn_3pf2,
gap.sm_gap_3pf2,
yerr=gap.sm_gap_3pf2_err,
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
)
axs[1, 0].errorbar(
gap.sm_den_3pf2,
100 * gap.sm_gap_3pf2 / (2*nuda.eF_n(gap.sm_kfn_3pf2)),
yerr=gap.sm_gap_3pf2_err / (2*nuda.eF_n(gap.sm_kfn_3pf2)),
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
)
axs[1, 1].errorbar(
gap.sm_kfn_3pf2,
100 * gap.sm_gap_3pf2 / (2*nuda.eF_n(gap.sm_kfn_3pf2)),
yerr=gap.sm_gap_3pf2_err / (2*nuda.eF_n(gap.sm_kfn_3pf2)),
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
)
else:
axs[0, 0].plot(
gap.sm_den_3pf2,
gap.sm_gap_3pf2,
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
label=gap.label,
)
axs[0, 1].plot(
gap.sm_kfn_3pf2,
gap.sm_gap_3pf2,
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
)
axs[1, 0].plot(
gap.sm_den_3pf2,
100 * gap.sm_gap_3pf2 / (2*nuda.eF_n(gap.sm_kfn_3pf2)),
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
)
axs[1, 1].plot(
gap.sm_kfn_3pf2,
100 * gap.sm_gap_3pf2 / (2*nuda.eF_n(gap.sm_kfn_3pf2)),
marker=gap.marker,
markevery=gap.every,
linestyle=gap.lstyle,
)
if nuda.env.verb_output:
gap.print_outputs()
#
# axs[1,0].legend(loc='upper right',fontsize='8')
fig.legend(loc="upper left", bbox_to_anchor=(0.1, 0.95), columnspacing=2, fontsize="8", ncol=3, frameon=False )
#
if pname is not None:
plt.savefig(pname, dpi=300)
plt.close()
#