nucleardatapy 0.2.1__py3-none-any.whl → 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. nucleardatapy/__init__.py +3 -1
  2. nucleardatapy/astro/setup_gw.py +18 -18
  3. nucleardatapy/astro/setup_mr.py +9 -1
  4. nucleardatapy/astro/setup_mup.py +10 -10
  5. nucleardatapy/corr/setup_EsymDen.py +0 -5
  6. nucleardatapy/corr/setup_EsymLsym.py +50 -17
  7. nucleardatapy/corr/setup_KsatQsat.py +170 -69
  8. nucleardatapy/crust/setup_crust.py +363 -125
  9. nucleardatapy/data/astro/NICER/J0740+6620.dat +1 -0
  10. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-E2A-NM.dat +8 -8
  11. nucleardatapy/data/matter/nep/NEPESkyrme.dat +2 -3
  12. nucleardatapy/data/matter/nep/NEPGSkyrme.dat +7 -0
  13. nucleardatapy/data/matter/nep/NEPSkyrme.dat +4 -2
  14. nucleardatapy/data/matter/nep/NEPxEFT.dat +8 -0
  15. nucleardatapy/data/matter/nep/best67DDSkyrme.dat +28 -0
  16. nucleardatapy/data/matter/nep/best90DDSkyrme.dat +46 -0
  17. nucleardatapy/data/matter/nep/best95DDSkyrme.dat +54 -0
  18. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-NM.dat +996 -996
  19. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-SM.dat +991 -991
  20. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-NM.dat +1002 -0
  21. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-SM.dat +1002 -0
  22. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-NM.dat +102 -0
  23. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-SM.dat +102 -0
  24. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-NM.dat +102 -0
  25. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-SM.dat +102 -0
  26. nucleardatapy/env.py +1 -1
  27. nucleardatapy/eos/__init__.py +4 -3
  28. nucleardatapy/eos/setupCC.py +429 -0
  29. nucleardatapy/eos/setup_am.py +39 -14
  30. nucleardatapy/eos/setup_am_Beq.py +40 -15
  31. nucleardatapy/eos/setup_am_Leq.py +40 -15
  32. nucleardatapy/fig/__init__.py +24 -15
  33. nucleardatapy/fig/astro_setupGW_fig.py +5 -5
  34. nucleardatapy/fig/astro_setupMR_fig.py +12 -10
  35. nucleardatapy/fig/astro_setupMasses_fig.py +4 -4
  36. nucleardatapy/fig/astro_setupMtov_fig.py +4 -4
  37. nucleardatapy/fig/astro_setupMup_fig.py +5 -5
  38. nucleardatapy/fig/corr_setupEsymDen_fig.py +12 -5
  39. nucleardatapy/fig/corr_setupEsymLsym_fig.py +18 -5
  40. nucleardatapy/fig/corr_setupKsatQsat_fig.py +19 -15
  41. nucleardatapy/fig/crust_setupCrust_fig.py +5 -5
  42. nucleardatapy/fig/eos_setupAMBeq_fig.py +523 -66
  43. nucleardatapy/fig/eos_setupAMLeq_fig.py +18 -18
  44. nucleardatapy/fig/eos_setupAM_asy_lep_fig.py +364 -0
  45. nucleardatapy/fig/eos_setupAM_asy_nuc_fig.py +337 -0
  46. nucleardatapy/fig/eos_setupAM_asy_tot_fig.py +343 -0
  47. nucleardatapy/fig/eos_setupAM_fig.py +504 -0
  48. nucleardatapy/fig/eos_setupCC_fig.py +240 -0
  49. nucleardatapy/fig/hnuc_setupChart_fig.py +2 -2
  50. nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +3 -3
  51. nucleardatapy/fig/matter_all_fig.py +954 -0
  52. nucleardatapy/fig/matter_setupCheck_fig.py +103 -0
  53. nucleardatapy/fig/matter_setupFFGLep_fig.py +70 -0
  54. nucleardatapy/fig/matter_setupFFGNuc_fig.py +267 -104
  55. nucleardatapy/fig/matter_setupHIC_fig.py +98 -58
  56. nucleardatapy/fig/matter_setupMicroEsym_fig.py +248 -63
  57. nucleardatapy/fig/matter_setupMicro_LP_fig.py +175 -78
  58. nucleardatapy/fig/matter_setupMicro_band_fig.py +115 -47
  59. nucleardatapy/fig/matter_setupMicro_effmass_fig.py +248 -73
  60. nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +41 -18
  61. nucleardatapy/fig/matter_setupMicro_fig.py +299 -67
  62. nucleardatapy/fig/matter_setupMicro_gap_fig.py +219 -92
  63. nucleardatapy/fig/matter_setupNEPStats_fig.py +96 -0
  64. nucleardatapy/fig/matter_setupPhenoEsym_fig.py +193 -55
  65. nucleardatapy/fig/matter_setupPheno_fig.py +385 -88
  66. nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +59 -48
  67. nucleardatapy/fig/nuc_setupBEExp_fig.py +48 -41
  68. nucleardatapy/fig/nuc_setupBETheo_fig.py +59 -31
  69. nucleardatapy/fig/nuc_setupISGMRExp_fig.py +5 -5
  70. nucleardatapy/fig/nuc_setupRchExp_fig.py +2 -2
  71. nucleardatapy/fig/nuc_setupRchTheo_fig.py +21 -20
  72. nucleardatapy/fig/nuc_setupRnpExp_fig.py +77 -109
  73. nucleardatapy/fig/nuc_setupRnpTheo_fig.py +92 -93
  74. nucleardatapy/hello.py +6 -0
  75. nucleardatapy/hnuc/setup_re1L_exp.py +6 -6
  76. nucleardatapy/hnuc/setup_re1Xi_exp.py +5 -5
  77. nucleardatapy/hnuc/setup_re2L_exp.py +6 -6
  78. nucleardatapy/matter/__init__.py +14 -14
  79. nucleardatapy/matter/setup_check.py +6 -6
  80. nucleardatapy/matter/setup_ffg.py +66 -39
  81. nucleardatapy/matter/setup_hic.py +91 -74
  82. nucleardatapy/matter/setup_micro.py +1623 -1009
  83. nucleardatapy/matter/setup_micro_band.py +6 -6
  84. nucleardatapy/matter/setup_micro_esym.py +11 -13
  85. nucleardatapy/matter/setup_micro_gap.py +24 -17
  86. nucleardatapy/matter/setup_micro_lp.py +2 -2
  87. nucleardatapy/matter/setup_nep.py +175 -92
  88. nucleardatapy/matter/{setup_nep_model_dist.py → setup_nep_stat_model.py} +13 -8
  89. nucleardatapy/matter/{setup_nep_dist.py → setup_nep_stat_models.py} +12 -8
  90. nucleardatapy/matter/setup_pheno.py +121 -45
  91. nucleardatapy/matter/setup_pheno_esym.py +8 -13
  92. nucleardatapy/nuc/setup_be_exp.py +304 -292
  93. nucleardatapy/nuc/setup_be_theo.py +273 -97
  94. nucleardatapy/nuc/setup_isgmr_exp.py +4 -4
  95. nucleardatapy/nuc/setup_rnp_exp.py +1 -0
  96. nucleardatapy/nuc/setup_rnp_theo.py +2 -1
  97. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.0.dist-info}/METADATA +48 -16
  98. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.0.dist-info}/RECORD +127 -120
  99. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.0.dist-info}/WHEEL +1 -1
  100. tests/test_corr_setupKsatQsat.py +3 -1
  101. tests/test_matter_setupMicro.py +37 -10
  102. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-NM.dat +0 -1002
  103. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-SM.dat +0 -1002
  104. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-NM.dat +0 -1002
  105. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-SM.dat +0 -1002
  106. nucleardatapy/fig/eos_setupAM_e_asy_lep_fig.py +0 -125
  107. nucleardatapy/fig/eos_setupAM_e_asy_nuc_fig.py +0 -115
  108. nucleardatapy/fig/eos_setupAM_e_asy_tot_fig.py +0 -117
  109. nucleardatapy/fig/eos_setupAM_e_fig.py +0 -173
  110. nucleardatapy/fig/matter_ENM_fig.py +0 -128
  111. nucleardatapy/fig/matter_ESM_fig.py +0 -140
  112. nucleardatapy/fig/matter_Esym_fig.py +0 -134
  113. nucleardatapy/fig/matter_cs2_fig.py +0 -83
  114. nucleardatapy/fig/matter_preNM_fig.py +0 -146
  115. nucleardatapy/fig/matter_preSM_fig.py +0 -144
  116. nucleardatapy/fig/matter_setupNEPModelDist_fig.py +0 -68
  117. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-NM-AV18.dat → 2006-EBHF-NM-AV18.dat} +0 -0
  118. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-SM-AV18.dat → 2006-EBHF-SM-AV18.dat} +0 -0
  119. /nucleardatapy/data/crust/{2022-crustGMRS-BSK14.dat → 2022-GMRS-BSK14.dat} +0 -0
  120. /nucleardatapy/data/crust/{2022-crustGMRS-BSK16.dat → 2022-GMRS-BSK16.dat} +0 -0
  121. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL59.dat → 2022-GMRS-DHSL59.dat} +0 -0
  122. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL69.dat → 2022-GMRS-DHSL69.dat} +0 -0
  123. /nucleardatapy/data/crust/{2022-crustGMRS-F0.dat → 2022-GMRS-F0.dat} +0 -0
  124. /nucleardatapy/data/crust/{2022-crustGMRS-H1.dat → 2022-GMRS-H1.dat} +0 -0
  125. /nucleardatapy/data/crust/{2022-crustGMRS-H2.dat → 2022-GMRS-H2.dat} +0 -0
  126. /nucleardatapy/data/crust/{2022-crustGMRS-H3.dat → 2022-GMRS-H3.dat} +0 -0
  127. /nucleardatapy/data/crust/{2022-crustGMRS-H4.dat → 2022-GMRS-H4.dat} +0 -0
  128. /nucleardatapy/data/crust/{2022-crustGMRS-H5.dat → 2022-GMRS-H5.dat} +0 -0
  129. /nucleardatapy/data/crust/{2022-crustGMRS-H7.dat → 2022-GMRS-H7.dat} +0 -0
  130. /nucleardatapy/data/crust/{2022-crustGMRS-LNS5.dat → 2022-GMRS-LNS5.dat} +0 -0
  131. /nucleardatapy/data/crust/{2022-crustGMRS-RATP.dat → 2022-GMRS-RATP.dat} +0 -0
  132. /nucleardatapy/data/crust/{2022-crustGMRS-SGII.dat → 2022-GMRS-SGII.dat} +0 -0
  133. /nucleardatapy/data/crust/{2022-crustGMRS-SLY5.dat → 2022-GMRS-SLY5.dat} +0 -0
  134. /nucleardatapy/data/matter/micro/{2013-QMC-NM.dat → 2013-MBPT-NM.dat} +0 -0
  135. /nucleardatapy/data/{NeutronSkin/ddrhNskin-208Pb.dat → rnp/ddrhrnp-208Pb.dat} +0 -0
  136. /nucleardatapy/data/{NeutronSkin/ddrhNskin-48Ca.dat → rnp/ddrhrnp-48Ca.dat} +0 -0
  137. /nucleardatapy/data/{NeutronSkin/nlrhNskin-208Pb.dat → rnp/nlrhrnp-208Pb.dat} +0 -0
  138. /nucleardatapy/data/{NeutronSkin/nlrhNskin-48Ca.dat → rnp/nlrhrnp-48Ca.dat} +0 -0
  139. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-208Pb.dat → rnp/skyrmernp-208Pb.dat} +0 -0
  140. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-48Ca.dat → rnp/skyrmernp-48Ca.dat} +0 -0
  141. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.0.dist-info}/licenses/LICENSE +0 -0
  142. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,103 @@
1
+ import numpy as np
2
+ import matplotlib.pyplot as plt
3
+
4
+ import nucleardatapy as nuda
5
+
6
+ def matter_setupCheck_fig( pname, mb, models, band ):
7
+ """
8
+ Plot nucleonic energy per particle E/A in matter.\
9
+ The plot is 1x1 with: E/A versus den.
10
+
11
+ :param pname: name of the figure (*.png)
12
+ :type pname: str.
13
+ :param mb: many-body (mb) approach considered.
14
+ :type mb: str.
15
+ :param models: models to run on.
16
+ :type models: array of str.
17
+ :param band: object instantiated on the reference band.
18
+ :type band: object.
19
+ :param matter: can be 'SM' or 'NM'.
20
+ :type matter: str.
21
+
22
+ """
23
+ #
24
+ print(f'Plot name: {pname}')
25
+ matter = band.matter
26
+ #
27
+ fig, axs = plt.subplots(1,1)
28
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
29
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=0.95, top=0.85, wspace=0.05, hspace=0.05 )
30
+ #
31
+ axs.set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)')
32
+ axs.set_xlim([0, 0.33])
33
+ if matter.lower() == 'nm':
34
+ axs.set_ylabel(r'$E_\text{NM}^\text{int}/A$ (MeV)')
35
+ axs.set_ylim([0, 30])
36
+ delta = 1.0
37
+ elif matter.lower() == 'sm':
38
+ axs.set_ylabel(r'$E_\text{SM}^\text{int}/A$ (MeV)')
39
+ axs.set_ylim([-20, 10])
40
+ delta = 0.0
41
+ #
42
+ for model in models:
43
+ #
44
+ mic = nuda.matter.setupMicro( model = model, var2 = delta )
45
+ if nuda.env.verb_output: mic.print_outputs( )
46
+ #
47
+ print('model:',model,' delta:',delta)
48
+ #
49
+ check = nuda.matter.setupCheck( eos = mic, band = band )
50
+ #
51
+ if check.isInside:
52
+ lstyle = 'solid'
53
+ else:
54
+ lstyle = 'dashed'
55
+ #
56
+ if mic.e_err:
57
+ #
58
+ print('=> model (with err):',model,mic.e_err)
59
+ if 'NLEFT' in model:
60
+ #
61
+ print(' => model (NLEFT):',model)
62
+ if matter.lower() == 'nm':
63
+ axs.errorbar( mic.nm_den, mic.nm_e2adata_int, yerr=mic.nm_e2adata_err, linestyle = 'dotted', markevery=mic.every, linewidth = 1, alpha=0.6 )
64
+ 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 )
65
+ elif matter.lower() == 'sm':
66
+ axs.errorbar( mic.sm_den, mic.sm_e2adata_int, yerr=mic.sm_e2adata_err, linestyle = 'dotted', markevery=mic.every, linewidth = 1, alpha=0.6 )
67
+ 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 )
68
+ #
69
+ if mic.marker:
70
+ #
71
+ print('with marker:',mic.marker)
72
+ if matter.lower() == 'nm':
73
+ 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 )
74
+ elif matter.lower() == 'sm':
75
+ 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 )
76
+ #
77
+ else:
78
+ #
79
+ print('with no marker:',mic.marker)
80
+ if matter.lower() == 'nm':
81
+ 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 )
82
+ elif matter.lower() == 'sm':
83
+ 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 )
84
+ else:
85
+ print('=> model (no err):',model,mic.e_err)
86
+ if 'fit' in model:
87
+ axs.plot( mic.den, mic.e2a_int, marker=mic.marker, linestyle=lstyle, markevery=mic.every, label=mic.label )
88
+ else:
89
+ if matter.lower() == 'nm':
90
+ axs.plot( mic.nm_den, mic.nm_e2a_int, marker=mic.marker, linestyle=lstyle, markevery=mic.every, label=mic.label )
91
+ elif matter.lower() == 'sm':
92
+ axs.plot( mic.sm_den, mic.sm_e2a_int, marker=mic.marker, linestyle=lstyle, markevery=mic.every, label=mic.label )
93
+ #
94
+ 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 )
95
+ axs.plot( band.den, (band.e2a_int-band.e2a_std), color='k', linestyle='dashed' )
96
+ axs.plot( band.den, (band.e2a_int+band.e2a_std), color='k', linestyle='dashed' )
97
+ #
98
+ fig.legend(loc='upper left',bbox_to_anchor=(0.1,1.0),fontsize='8',ncol=3,frameon=False)
99
+ #
100
+ if pname is not None:
101
+ plt.savefig(pname, dpi=300)
102
+ plt.close()
103
+ #
@@ -0,0 +1,70 @@
1
+ import numpy as np
2
+ import matplotlib as mpl
3
+ import matplotlib.pyplot as plt
4
+ import nucleardatapy as nuda
5
+
6
+ mpl.use("Agg") # Use a non-interactive backend
7
+
8
+ def matter_setupFFGLep_fig( pname, den_el=None, den_mu1=None, den_mu2=None, den_mu3=None ):
9
+ """
10
+ Plot leptonic FFG energy per particle E/A and pressure in NM and SM.\
11
+ The plot is 2x2 with:\
12
+ [0,0]: E/A versus den. [0,1]: E/A versus kfn.\
13
+ [1,0]: pre versus den. [1,1]: pre versus kfn.\
14
+
15
+ :param pname: name of the figure (*.png)
16
+ :type pname: str.
17
+ :param den: density.
18
+ :type den: float or numpy vector of real numbers.
19
+ :param kfn: neutron Fermi momentum.
20
+ :type kfn: float or numpy vector of real numbers.
21
+
22
+ """
23
+ #
24
+ print(f"Plot name: {pname}")
25
+ #
26
+ if den_el is None: den_el=np.linspace(0.01, 0.1, num=20)
27
+ if den_mu1 is None: den_mu1 = 0.1*np.linspace(0.01, 0.1, num=20)
28
+ if den_mu2 is None: den_mu2 = 0.2*np.linspace(0.01, 0.1, num=20)
29
+ if den_mu3 is None: den_mu3 = 0.5*np.linspace(0.01, 0.1, num=20)
30
+ #
31
+ fig, axs = plt.subplots(2, 1)
32
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
33
+ fig.subplots_adjust( left=0.12, bottom=0.12, right=None, top=0.9, wspace=0.05, hspace=0.05 )
34
+ #
35
+ axs[0].set_ylabel(r"$e^\text{FFG}$ (MeV)", fontsize="14")
36
+ axs[0].set_xlim([0, 0.1])
37
+ axs[0].set_ylim([0, 200])
38
+ axs[0].tick_params("x", labelbottom=False)
39
+ #
40
+ axs[1].set_xlabel(r"$n_\text{el}$ (fm$^{-3}$)", fontsize="14")
41
+ axs[1].set_ylabel(r"$p^\text{FFG}$ (MeV fm$^{-3}$)", fontsize="14")
42
+ axs[1].set_xlim([0, 0.1])
43
+ axs[1].set_ylim([-0.01, 6])
44
+ #
45
+ lep1 = nuda.matter.setupFFGLep( den_el=den_el, den_mu=den_mu1 )
46
+ lep2 = nuda.matter.setupFFGLep( den_el=den_el, den_mu=den_mu2 )
47
+ lep3 = nuda.matter.setupFFGLep( den_el=den_el, den_mu=den_mu3 )
48
+ #
49
+ if any(lep1.e2n_el):
50
+ print(r"plot $\delta=0$ (SM)")
51
+ axs[0].plot( lep1.den_el, lep1.e2n_el, linestyle="solid", color=nuda.param.col[0], label='electrons' )
52
+ axs[0].plot( lep1.den_el, lep1.e2n_mu, linestyle="dashed", color=nuda.param.col[1], label='muons (10%)' )
53
+ axs[0].plot( lep1.den_el, lep2.e2n_mu, linestyle="dashed", color=nuda.param.col[2], label='muons (20%)' )
54
+ axs[0].plot( lep1.den_el, lep3.e2n_mu, linestyle="dashed", color=nuda.param.col[3], label='muons (50%)' )
55
+ axs[1].plot( lep1.den_el, lep1.pre_el, linestyle="solid", color=nuda.param.col[0] )
56
+ axs[1].plot( lep1.den_el, lep1.pre_mu, linestyle="dashed", color=nuda.param.col[1] )
57
+ axs[1].plot( lep1.den_el, lep2.pre_mu, linestyle="dashed", color=nuda.param.col[2] )
58
+ axs[1].plot( lep1.den_el, lep3.pre_mu, linestyle="dashed", color=nuda.param.col[3] )
59
+ if nuda.env.verb_output: lep.print_outputs()
60
+ #
61
+ #axs[0, 0].text(0.2, 16, r"$m=$" + str(mss[0]) + "$m_N$", rotation=8)
62
+ #axs[0, 0].text(0.2, 32, r"$m=$" + str(mss[1]) + "$m_N$", rotation=13)
63
+ #axs[0, 0].text(0.2, 50, r"$m=$" + str(mss[2]) + "$m_N$", rotation=20)
64
+ axs[0].legend(loc='lower right',fontsize='10')
65
+ #fig.legend( loc="upper left", bbox_to_anchor=(0.2, 0.97), fontsize="6", ncol=4, frameon=False )
66
+ #
67
+ if pname is not None:
68
+ plt.savefig(pname, dpi=300)
69
+ plt.close()
70
+ #
@@ -1,11 +1,13 @@
1
-
2
1
  import numpy as np
3
2
  import matplotlib as mpl
4
3
  import matplotlib.pyplot as plt
5
- mpl.use("Agg") # Use a non-interactive backend
6
4
  import nucleardatapy as nuda
7
5
 
8
- def matter_setupFFGNuc_EP_fig( pname, mss = [ 1.0 ], den = np.linspace(0.01,0.35,10), kfn = np.linspace(0.5,2.0,10) ):
6
+ mpl.use("Agg") # Use a non-interactive backend
7
+
8
+ def matter_setupFFGNuc_EP_fig(
9
+ pname, mss=[1.0], den=np.linspace(0.01, 0.35, 10), kf=np.linspace(0.5, 2.0, 10)
10
+ ):
9
11
  """
10
12
  Plot nucleonic FFG energy per particle E/A and pressure in NM and SM.\
11
13
  The plot is 2x2 with:\
@@ -21,87 +23,186 @@ def matter_setupFFGNuc_EP_fig( pname, mss = [ 1.0 ], den = np.linspace(0.01,0.35
21
23
 
22
24
  """
23
25
  #
24
- print(f'Plot name: {pname}')
26
+ print(f"Plot name: {pname}")
25
27
  #
26
- denkfn = nuda.matter.den( kfn )
28
+ denkf = nuda.matter.den(kf)
27
29
  delta0 = np.zeros(den.size)
28
30
  delta1 = np.ones(den.size)
29
31
  #
30
- fig, axs = plt.subplots(2,2)
31
- fig.tight_layout() # Or equivalently, "plt.tight_layout()"
32
- fig.subplots_adjust(left=0.12, bottom=0.12, right=None, top=0.9, wspace=0.05, hspace=0.05 )
33
- #
34
- axs[0,0].set_ylabel(r'$e_\text{FFG,int}$')
35
- axs[0,0].set_xlim([0, 0.33])
36
- axs[0,0].set_ylim([0, 100])
37
- axs[0,0].tick_params('x', labelbottom=False)
38
- #
39
- axs[1,0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)')
40
- axs[1,0].set_ylabel(r'$p_\text{FFG}$ (MeV fm$^{-3}$)')
41
- axs[1,0].set_xlim([0, 0.33])
42
- axs[1,0].set_ylim([0, 23])
43
- #
44
- #axs[0,1].set_ylabel(r'$\Delta/E_F$')
45
- axs[0,1].set_xlim([0.5, 2.0])
46
- axs[0,1].set_ylim([0, 100])
47
- axs[0,1].tick_params('y', labelleft=False)
48
- axs[0,1].tick_params('x', labelbottom=False)
49
- #
50
- axs[1,1].set_xlabel(r'$k_{F_n}$ (fm$^{-1}$)')
51
- #axs[1,1].set_ylabel(r'$\Delta$ (MeV)')
52
- axs[1,1].set_xlim([0.5, 2.0])
53
- axs[1,1].set_ylim([0, 23])
54
- axs[1,1].tick_params('y', labelleft=False)
55
- #
56
- for ims,ms in enumerate(mss):
57
- ffg0 = nuda.matter.setupFFGNuc( den, delta0, ms )
58
- ffg0kf = nuda.matter.setupFFGNuc( denkfn, delta0, ms )
59
- ffg1 = nuda.matter.setupFFGNuc( den, delta1, ms )
60
- ffg1kf = nuda.matter.setupFFGNuc( denkfn, delta1, ms )
32
+ fig, axs = plt.subplots(2, 2)
33
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
34
+ fig.subplots_adjust( left=0.12, bottom=0.12, right=None, top=0.9, wspace=0.05, hspace=0.05 )
35
+ #
36
+ axs[0, 0].set_ylabel(r"$e^\text{FFG}_\text{int}$ (MeV)")
37
+ axs[0, 0].set_xlim([0, 0.33])
38
+ axs[0, 0].set_ylim([0, 100])
39
+ axs[0, 0].tick_params("x", labelbottom=False)
40
+ #
41
+ axs[1, 0].set_xlabel(r"$n_\text{nuc}$ (fm$^{-3}$)")
42
+ axs[1, 0].set_ylabel(r"$p^\text{FFG}$ (MeV fm$^{-3}$)")
43
+ axs[1, 0].set_xlim([0, 0.33])
44
+ axs[1, 0].set_ylim([0, 23])
45
+ #
46
+ # axs[0,1].set_ylabel(r'$\Delta/E_F$')
47
+ #axs[0, 1].set_xlim([0.5, 2.0])
48
+ #axs[0, 1].set_ylim([0, 100])
49
+ axs[0, 1].tick_params("y", labelleft=False)
50
+ axs[0, 1].tick_params("x", labelbottom=False)
51
+ #
52
+ axs[1, 1].set_xlabel(r"$k_{F}$ (fm$^{-1}$)")
53
+ # axs[1,1].set_ylabel(r'$\Delta$ (MeV)')
54
+ #axs[1, 1].set_xlim([0.5, 2.0])
55
+ #axs[1, 1].set_ylim([0, 23])
56
+ axs[1, 1].tick_params("y", labelleft=False)
57
+ #
58
+ for ims, ms in enumerate(mss):
59
+ ffg0 = nuda.matter.setupFFGNuc(den, delta0, ms)
60
+ ffg0kf = nuda.matter.setupFFGNuc(denkf, delta0, ms)
61
+ ffg1 = nuda.matter.setupFFGNuc(den, delta1, ms)
62
+ ffg1kf = nuda.matter.setupFFGNuc(denkf, delta1, ms)
61
63
  #
62
- if any(ffg0.e2a_int_nr):
63
- print(r'plot $\delta=0$ (SM)')
64
+ if any(ffg0.e2a_int_nr):
65
+ print(r"plot $\delta=0$ (SM)")
64
66
  if ims == 0:
65
- axs[0,0].plot( ffg0.den, ffg0.e2a_int, linestyle='solid', color=nuda.param.col[0], label=ffg0.label )
66
- axs[0,0].plot( ffg0.den, ffg0.e2a_int_nr, linestyle='None', marker='o', color=nuda.param.col[0], label='NR'+ffg0.label )
67
+ axs[0, 0].plot(
68
+ ffg0.den,
69
+ ffg0.e2a_int,
70
+ linestyle="solid",
71
+ color=nuda.param.col[0],
72
+ label=ffg0.label,
73
+ )
74
+ axs[0, 0].plot(
75
+ ffg0.den,
76
+ ffg0.e2a_int_nr,
77
+ linestyle="None",
78
+ marker="o",
79
+ color=nuda.param.col[0],
80
+ label="NR" + ffg0.label,
81
+ )
67
82
  else:
68
- axs[0,0].plot( ffg0.den, ffg0.e2a_int, linestyle='solid', color=nuda.param.col[0] )
69
- axs[0,0].plot( ffg0.den, ffg0.e2a_int_nr, linestyle='None', marker='o', color=nuda.param.col[0] )
70
- axs[1,0].plot( ffg0.den, ffg0.pre, linestyle='solid', color=nuda.param.col[0] )
71
- axs[1,0].plot( ffg0.den, ffg0.pre_nr, linestyle='None', marker='o', color=nuda.param.col[0] )
72
- axs[0,1].plot( ffg0kf.kf_n, ffg0kf.e2a_int, linestyle='solid', color=nuda.param.col[0] )
73
- axs[0,1].plot( ffg0kf.kf_n, ffg0kf.e2a_int_nr, linestyle='None', marker='o', color=nuda.param.col[0] )
74
- axs[1,1].plot( ffg0kf.kf_n, ffg0kf.pre, linestyle='solid', color=nuda.param.col[0] )
75
- axs[1,1].plot( ffg0kf.kf_n, ffg0kf.pre_nr, linestyle='None', marker='o', color=nuda.param.col[0] )
76
- if nuda.env.verb_output: ffg0.print_outputs( )
77
- if any(ffg1.e2a_int_nr):
78
- print(r'plot $\delta=1$ (NM)')
83
+ axs[0, 0].plot(
84
+ ffg0.den, ffg0.e2a_int, linestyle="solid", color=nuda.param.col[0]
85
+ )
86
+ axs[0, 0].plot(
87
+ ffg0.den,
88
+ ffg0.e2a_int_nr,
89
+ linestyle="None",
90
+ marker="o",
91
+ color=nuda.param.col[0],
92
+ )
93
+ axs[1, 0].plot(
94
+ ffg0.den, ffg0.pre, linestyle="solid", color=nuda.param.col[0]
95
+ )
96
+ axs[1, 0].plot(
97
+ ffg0.den,
98
+ ffg0.pre_nr,
99
+ linestyle="None",
100
+ marker="o",
101
+ color=nuda.param.col[0],
102
+ )
103
+ axs[0, 1].plot(
104
+ ffg0kf.kf_nuc, ffg0kf.e2a_int, linestyle="solid", color=nuda.param.col[0]
105
+ )
106
+ axs[0, 1].plot(
107
+ ffg0kf.kf_nuc,
108
+ ffg0kf.e2a_int_nr,
109
+ linestyle="None",
110
+ marker="o",
111
+ color=nuda.param.col[0],
112
+ )
113
+ axs[1, 1].plot(
114
+ ffg0kf.kf_nuc, ffg0kf.pre, linestyle="solid", color=nuda.param.col[0]
115
+ )
116
+ axs[1, 1].plot(
117
+ ffg0kf.kf_nuc,
118
+ ffg0kf.pre_nr,
119
+ linestyle="None",
120
+ marker="o",
121
+ color=nuda.param.col[0],
122
+ )
123
+ if nuda.env.verb_output:
124
+ ffg0.print_outputs()
125
+ if any(ffg1.e2a_int_nr):
126
+ print(r"plot $\delta=1$ (NM)")
79
127
  if ims == 0:
80
- axs[0,0].plot( ffg1.den, ffg1.e2a_int, linestyle='dashed', color=nuda.param.col[1], label=ffg1.label )
81
- axs[0,0].plot( ffg1.den, ffg1.e2a_int_nr, linestyle='None', marker='o', color=nuda.param.col[1], label='NR'+ffg1.label )
128
+ axs[0, 0].plot(
129
+ ffg1.den,
130
+ ffg1.e2a_int,
131
+ linestyle="dashed",
132
+ color=nuda.param.col[1],
133
+ label=ffg1.label,
134
+ )
135
+ axs[0, 0].plot(
136
+ ffg1.den,
137
+ ffg1.e2a_int_nr,
138
+ linestyle="None",
139
+ marker="o",
140
+ color=nuda.param.col[1],
141
+ label="NR" + ffg1.label,
142
+ )
82
143
  else:
83
- axs[0,0].plot( ffg1.den, ffg1.e2a_int, linestyle='dashed', color=nuda.param.col[1] )
84
- axs[0,0].plot( ffg1.den, ffg1.e2a_int_nr, linestyle='None', marker='o', color=nuda.param.col[1] )
85
- axs[1,0].plot( ffg1.den, ffg1.pre, linestyle='dashed', color=nuda.param.col[1] )
86
- axs[1,0].plot( ffg1.den, ffg1.pre_nr, linestyle='None', marker='o', color=nuda.param.col[1] )
87
- axs[0,1].plot( ffg1kf.kf_n, ffg1kf.e2a_int, linestyle='dashed', color=nuda.param.col[1] )
88
- axs[0,1].plot( ffg1kf.kf_n, ffg1kf.e2a_int_nr, linestyle='None', marker='o', color=nuda.param.col[1] )
89
- axs[1,1].plot( ffg1kf.kf_n, ffg1kf.pre, linestyle='dashed', color=nuda.param.col[1] )
90
- axs[1,1].plot( ffg1kf.kf_n, ffg1kf.pre_nr, linestyle='None', marker='o', color=nuda.param.col[1] )
91
- if nuda.env.verb_output: ffg1.print_outputs( )
144
+ axs[0, 0].plot(
145
+ ffg1.den, ffg1.e2a_int, linestyle="dashed", color=nuda.param.col[1]
146
+ )
147
+ axs[0, 0].plot(
148
+ ffg1.den,
149
+ ffg1.e2a_int_nr,
150
+ linestyle="None",
151
+ marker="o",
152
+ color=nuda.param.col[1],
153
+ )
154
+ axs[1, 0].plot(
155
+ ffg1.den, ffg1.pre, linestyle="dashed", color=nuda.param.col[1]
156
+ )
157
+ axs[1, 0].plot(
158
+ ffg1.den,
159
+ ffg1.pre_nr,
160
+ linestyle="None",
161
+ marker="o",
162
+ color=nuda.param.col[1],
163
+ )
164
+ axs[0, 1].plot(
165
+ ffg1kf.kf_nuc, ffg1kf.e2a_int, linestyle="dashed", color=nuda.param.col[1]
166
+ )
167
+ axs[0, 1].plot(
168
+ ffg1kf.kf_nuc,
169
+ ffg1kf.e2a_int_nr,
170
+ linestyle="None",
171
+ marker="o",
172
+ color=nuda.param.col[1],
173
+ )
174
+ axs[1, 1].plot(
175
+ ffg1kf.kf_nuc, ffg1kf.pre, linestyle="dashed", color=nuda.param.col[1]
176
+ )
177
+ axs[1, 1].plot(
178
+ ffg1kf.kf_nuc,
179
+ ffg1kf.pre_nr,
180
+ linestyle="None",
181
+ marker="o",
182
+ color=nuda.param.col[1],
183
+ )
184
+ if nuda.env.verb_output:
185
+ ffg1.print_outputs()
92
186
  #
93
- axs[0,0].text(0.2,16,r'$m^*/m=$'+str(mss[0]),rotation=8)
94
- axs[0,0].text(0.2,32,r'$m^*/m=$'+str(mss[1]),rotation=13)
95
- axs[0,0].text(0.2,50,r'$m^*/m=$'+str(mss[2]),rotation=20)
96
- #axs[1,0].legend(loc='upper right',fontsize='xx-small')
97
- fig.legend(loc='upper left',bbox_to_anchor=(0.2,0.97),fontsize='6',ncol=4,frameon=False)
187
+ axs[0, 0].text(0.2, 16, r"$m=$" + str(mss[0]) + "$m_N$", rotation=8)
188
+ axs[0, 0].text(0.2, 32, r"$m=$" + str(mss[1]) + "$m_N$", rotation=13)
189
+ axs[0, 0].text(0.2, 50, r"$m=$" + str(mss[2]) + "$m_N$", rotation=20)
190
+ # axs[1,0].legend(loc='upper right',fontsize='xx-small')
191
+ fig.legend(
192
+ loc="upper left",
193
+ bbox_to_anchor=(0.2, 0.97),
194
+ fontsize="6",
195
+ ncol=4,
196
+ frameon=False,
197
+ )
98
198
  #
99
- if pname is not None:
199
+ if pname is not None:
100
200
  plt.savefig(pname, dpi=300)
101
201
  plt.close()
102
202
  #
103
203
 
104
- def matter_setupFFGNuc_EOS_fig( pname, mss = [ 1.0 ], den = np.linspace(0.01,0.35,10) ):
204
+
205
+ def matter_setupFFGNuc_EOS_fig(pname, mss=[1.0], den=np.linspace(0.01, 0.35, 10)):
105
206
  """
106
207
  Plot nucleonic FFG EOS in NM and SM.\
107
208
  The plot is 1x2 with:\
@@ -115,59 +216,121 @@ def matter_setupFFGNuc_EOS_fig( pname, mss = [ 1.0 ], den = np.linspace(0.01,0.3
115
216
 
116
217
  """
117
218
  #
118
- print(f'Plot name: {pname}')
219
+ print(f"Plot name: {pname}")
119
220
  #
120
221
  delta0 = np.zeros(den.size)
121
222
  delta1 = np.ones(den.size)
122
223
  #
123
- fig, axs = plt.subplots(2,1)
124
- fig.tight_layout() # Or equivalently, "plt.tight_layout()"
125
- fig.subplots_adjust(left=0.12, bottom=0.12, right=None, top=0.9, wspace=0.05, hspace=0.05 )
224
+ fig, axs = plt.subplots(2, 1)
225
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
226
+ fig.subplots_adjust( left=0.12, bottom=0.12, right=None, top=0.9, wspace=0.05, hspace=0.05 )
126
227
  #
127
- axs[0].set_ylabel(r'$p_\text{FFG}$')
228
+ axs[0].set_ylabel(r"$p^\text{FFG}$ (MeV fm$^{-3}$)", fontsize="14")
128
229
  axs[0].set_xlim([0, 360])
129
230
  axs[0].set_ylim([0, 20])
130
- axs[0].tick_params('x', labelbottom=False)
231
+ axs[0].tick_params("x", labelbottom=False)
131
232
  #
132
- axs[1].set_xlabel(r'$\rho$ (MeV fm$^{-3}$)')
133
- axs[1].set_ylabel(r'$c_\text{s,FFG}^2$')
233
+ axs[1].set_xlabel(r"$\epsilon^\text{FFG}$ (MeV fm$^{-3}$)", fontsize="14")
234
+ axs[1].set_ylabel(r"$(c^\text{FFG}_\text{s}/c)^2$", fontsize="14")
134
235
  axs[1].set_xlim([0, 360])
135
236
  axs[1].set_ylim([0, 0.28])
136
237
  #
137
- for ims,ms in enumerate(mss):
138
- ffg0 = nuda.matter.setupFFGNuc( den, delta0, ms )
139
- ffg1 = nuda.matter.setupFFGNuc( den, delta1, ms )
238
+ for ims, ms in enumerate(mss):
239
+ ffg0 = nuda.matter.setupFFGNuc(den, delta0, ms)
240
+ ffg1 = nuda.matter.setupFFGNuc(den, delta1, ms)
140
241
  #
141
- if any(ffg0.e2a_int_nr):
142
- print(r'plot $\delta=0$ (SM)')
242
+ if any(ffg0.e2a_int_nr):
243
+ print(r"plot $\delta=0$ (SM)")
143
244
  if ims == 0:
144
- axs[0].plot( ffg0.e2v, ffg0.pre, linestyle='solid', color=nuda.param.col[0], label=ffg0.label )
145
- axs[0].plot( ffg0.e2v, ffg0.pre_nr, linestyle='None', marker='o', color=nuda.param.col[0], label='NR'+ffg0.label )
245
+ axs[0].plot(
246
+ ffg0.eps,
247
+ ffg0.pre,
248
+ linestyle="solid",
249
+ color=nuda.param.col[0],
250
+ label=ffg0.label,
251
+ )
252
+ axs[0].plot(
253
+ ffg0.eps,
254
+ ffg0.pre_nr,
255
+ linestyle="None",
256
+ marker="o",
257
+ color=nuda.param.col[0],
258
+ label="NR" + ffg0.label,
259
+ )
146
260
  else:
147
- axs[0].plot( ffg0.e2v, ffg0.pre, linestyle='solid', color=nuda.param.col[0] )
148
- axs[0].plot( ffg0.e2v, ffg0.pre_nr, linestyle='None', marker='o', color=nuda.param.col[0] )
149
- axs[1].plot( ffg0.e2v, ffg0.cs2, linestyle='solid', color=nuda.param.col[0] )
150
- axs[1].plot( ffg0.e2v, ffg0.cs2_nr, linestyle='None', marker='o', color=nuda.param.col[0] )
151
- if nuda.env.verb_output: ffg0.print_outputs( )
152
- if any(ffg1.e2a_int_nr):
153
- print(r'plot $\delta=1$ (NM)')
261
+ axs[0].plot(
262
+ ffg0.eps, ffg0.pre, linestyle="solid", color=nuda.param.col[0]
263
+ )
264
+ axs[0].plot(
265
+ ffg0.eps,
266
+ ffg0.pre_nr,
267
+ linestyle="None",
268
+ marker="o",
269
+ color=nuda.param.col[0],
270
+ )
271
+ axs[1].plot(ffg0.eps, ffg0.cs2, linestyle="solid", color=nuda.param.col[0])
272
+ axs[1].plot(
273
+ ffg0.eps,
274
+ ffg0.cs2_nr,
275
+ linestyle="None",
276
+ marker="o",
277
+ color=nuda.param.col[0],
278
+ )
279
+ if nuda.env.verb_output:
280
+ ffg0.print_outputs()
281
+ if any(ffg1.e2a_int_nr):
282
+ print(r"plot $\delta=1$ (NM)")
154
283
  if ims == 0:
155
- axs[0].plot( ffg1.e2v, ffg1.pre, linestyle='dashed', color=nuda.param.col[1], label=ffg1.label )
156
- axs[0].plot( ffg1.e2v, ffg1.pre_nr, linestyle='None', marker='o', color=nuda.param.col[1], label='NR'+ffg1.label )
284
+ axs[0].plot(
285
+ ffg1.eps,
286
+ ffg1.pre,
287
+ linestyle="dashed",
288
+ color=nuda.param.col[1],
289
+ label=ffg1.label,
290
+ )
291
+ axs[0].plot(
292
+ ffg1.eps,
293
+ ffg1.pre_nr,
294
+ linestyle="None",
295
+ marker="o",
296
+ color=nuda.param.col[1],
297
+ label="NR" + ffg1.label,
298
+ )
157
299
  else:
158
- axs[0].plot( ffg1.e2v, ffg1.pre, linestyle='dashed', color=nuda.param.col[1] )
159
- axs[0].plot( ffg1.e2v, ffg1.pre_nr, linestyle='None', marker='o', color=nuda.param.col[1] )
160
- axs[1].plot( ffg1.e2v, ffg1.cs2, linestyle='dashed', color=nuda.param.col[1] )
161
- axs[1].plot( ffg1.e2v, ffg1.cs2_nr, linestyle='None', marker='o', color=nuda.param.col[1] )
162
- if nuda.env.verb_output: ffg1.print_outputs( )
300
+ axs[0].plot(
301
+ ffg1.eps, ffg1.pre, linestyle="dashed", color=nuda.param.col[1]
302
+ )
303
+ axs[0].plot(
304
+ ffg1.eps,
305
+ ffg1.pre_nr,
306
+ linestyle="None",
307
+ marker="o",
308
+ color=nuda.param.col[1],
309
+ )
310
+ axs[1].plot(ffg1.eps, ffg1.cs2, linestyle="dashed", color=nuda.param.col[1])
311
+ axs[1].plot(
312
+ ffg1.eps,
313
+ ffg1.cs2_nr,
314
+ linestyle="None",
315
+ marker="o",
316
+ color=nuda.param.col[1],
317
+ )
318
+ if nuda.env.verb_output:
319
+ ffg1.print_outputs()
163
320
  #
164
- axs[1].text(300,0.07,r'$m^*/m=$'+str(mss[0]),rotation=3)
165
- axs[1].text(240,0.12,r'$m^*/m=$'+str(mss[1]),rotation=4)
166
- axs[1].text(180,0.2,r'$m^*/m=$'+str(mss[2]),rotation=5)
167
- #axs[1,0].legend(loc='upper right',fontsize='xx-small')
168
- fig.legend(loc='upper left',bbox_to_anchor=(0.15,0.97),fontsize='8',ncol=4,frameon=False)
321
+ axs[1].text(300, 0.07, r"$m=$" + str(mss[0]) + "$m_N$", rotation=3)
322
+ axs[1].text(240, 0.12, r"$m=$" + str(mss[1]) + "$m_N$", rotation=4)
323
+ axs[1].text(180, 0.20, r"$m=$" + str(mss[2]) + "$m_N$", rotation=5)
324
+ # axs[1,0].legend(loc='upper right',fontsize='xx-small')
325
+ fig.legend(
326
+ loc="upper left",
327
+ bbox_to_anchor=(0.15, 0.97),
328
+ fontsize="8",
329
+ ncol=4,
330
+ frameon=False,
331
+ )
169
332
  #
170
- if pname is not None:
333
+ if pname is not None:
171
334
  plt.savefig(pname, dpi=300)
172
335
  plt.close()
173
336
  #