import numpy as np
import matplotlib.pyplot as plt
import nucleardatapy as nuda
[docs]
def matter_setupCheck_fig( pname, mb, models, band, matter ):
"""
Check E/A from models in `models` and show the reference band.
The plot is 1x1 with:
[0]: E/A versus den.
:param pname: name of the figure (*.png)
:type pname: str.
:param mb: many-body (mb) approach considered.
:type mb: str.
:param models: models to run on.
:type models: array of str.
:param band: object instantiated on the reference band.
:type band: object.
:param matter: can be 'SM' or 'NM'.
:type matter: str.
"""
#
print(f'Plot name: {pname}')
matter = band.matter
#
fig, axs = plt.subplots(1,1)
fig.tight_layout() # Or equivalently, "plt.tight_layout()"
fig.subplots_adjust(left=0.10, bottom=0.12, right=0.95, top=0.85, wspace=0.05, hspace=0.05 )
#
axs.set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)')
axs.set_xlim([0, 0.33])
if matter.lower() == 'nm':
axs.set_ylabel(r'$E_\text{NM}^\text{int}/A$ (MeV)')
axs.set_ylim([0, 30])
delta = 1.0
elif matter.lower() == 'sm':
axs.set_ylabel(r'$E_\text{SM}^\text{int}/A$ (MeV)')
axs.set_ylim([-20, 10])
delta = 0.0
#
for model in models:
#
mic = nuda.matter.setupMicro( model = model, var2 = delta )
if nuda.env.verb_output: mic.print_outputs( )
#
print('model:',model,' delta:',delta)
#
check = nuda.matter.setupCheck( eos = mic, band = band )
#
if check.isInside:
lstyle = 'solid'
else:
lstyle = 'dashed'
#
if mic.e_err:
#
print('=> model (with err):',model,mic.e_err)
if 'NLEFT' in model:
#
print(' => model (NLEFT):',model)
if matter.lower() == 'nm':
axs.errorbar( mic.nm_den, mic.nm_e2adata_int, yerr=mic.nm_e2adata_err, linestyle = 'dotted', markevery=mic.every, linewidth = 1, alpha=0.6 )
axs.fill_between( mic.nm_den, y1=(mic.nm_e2a_int-mic.nm_e2a_err), y2=(mic.nm_e2a_int+mic.nm_e2a_err), alpha=0.3 )
elif matter.lower() == 'sm':
axs.errorbar( mic.sm_den, mic.sm_e2adata_int, yerr=mic.sm_e2adata_err, linestyle = 'dotted', markevery=mic.every, linewidth = 1, alpha=0.6 )
axs.fill_between( mic.sm_den, y1=(mic.sm_e2a_int-mic.sm_e2a_err), y2=(mic.sm_e2a_int+mic.sm_e2a_err), alpha=0.3 )
#
if mic.marker:
#
print('with marker:',mic.marker)
if matter.lower() == 'nm':
axs.errorbar( mic.nm_den, mic.nm_e2a_int, yerr=mic.nm_e2a_err, marker=mic.marker, markevery=mic.every, linestyle=lstyle, label=mic.label, errorevery=mic.every )
elif matter.lower() == 'sm':
axs.errorbar( mic.sm_den, mic.sm_e2a_int, yerr=mic.sm_e2a_err, marker=mic.marker, markevery=mic.every, linestyle=lstyle, label=mic.label, errorevery=mic.every )
#
else:
#
print('with no marker:',mic.marker)
if matter.lower() == 'nm':
axs.errorbar( mic.nm_den, mic.nm_e2a_int, yerr=mic.nm_e2a_err, marker=mic.marker, markevery=mic.every, linestyle=lstyle, label=mic.label, errorevery=mic.every )
elif matter.lower() == 'sm':
axs.errorbar( mic.sm_den, mic.sm_e2a_int, yerr=mic.sm_e2a_err, marker=mic.marker, markevery=mic.every, linestyle=lstyle, label=mic.label, errorevery=mic.every )
else:
print('=> model (no err):',model,mic.e_err)
if 'fit' in model:
axs.plot( mic.den, mic.e2a_int, marker=mic.marker, linestyle=lstyle, markevery=mic.every, label=mic.label )
else:
if matter.lower() == 'nm':
axs.plot( mic.nm_den, mic.nm_e2a_int, marker=mic.marker, linestyle=lstyle, markevery=mic.every, label=mic.label )
elif matter.lower() == 'sm':
axs.plot( mic.sm_den, mic.sm_e2a_int, marker=mic.marker, linestyle=lstyle, markevery=mic.every, label=mic.label )
#
axs.fill_between( band.den, y1=(band.e2a_int-band.e2a_std), y2=(band.e2a_int+band.e2a_std), color=band.color, alpha=band.alpha, visible=True )
axs.plot( band.den, (band.e2a_int-band.e2a_std), color='k', linestyle='dashed' )
axs.plot( band.den, (band.e2a_int+band.e2a_std), color='k', linestyle='dashed' )
#
fig.legend(loc='upper left',bbox_to_anchor=(0.1,1.0),fontsize='8',ncol=3,frameon=False)
#
if pname is not None:
plt.savefig(pname, dpi=300)
plt.close()
#