nucleardatapy 0.2.1__py3-none-any.whl → 1.0.1__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 (172) hide show
  1. nucleardatapy/__init__.py +3 -1
  2. nucleardatapy/astro/setup_gw.py +18 -18
  3. nucleardatapy/astro/setup_mr.py +123 -33
  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/create_folder.py +2 -2
  9. nucleardatapy/crust/setup_crust.py +364 -126
  10. nucleardatapy/data/astro/HESS/J1731-347.dat +4 -0
  11. nucleardatapy/data/astro/NICER/J0030+0451.dat +6 -6
  12. nucleardatapy/data/astro/NICER/J0437-4715.dat +4 -3
  13. nucleardatapy/data/astro/NICER/J0614-3329.dat +4 -0
  14. nucleardatapy/data/astro/NICER/J0740+6620.dat +5 -4
  15. nucleardatapy/data/hnuclei/1991-2L-Yamamoto.csv +6 -0
  16. nucleardatapy/data/hnuclei/2013-2L-Ahn.csv +1 -1
  17. nucleardatapy/data/hnuclei/2019-2L-Ekawa.csv +7 -0
  18. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-E2A-NM.dat +8 -8
  19. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-414-E2A.dat +21 -0
  20. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-414-TD.dat +22 -0
  21. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-450-E2A.dat +20 -0
  22. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-450-TD.dat +22 -0
  23. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-500-E2A.dat +23 -0
  24. nucleardatapy/data/matter/micro/2020-SCGF-NM-N3LO-500-TD.dat +22 -0
  25. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-414-E2A.dat +15 -0
  26. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-414-TD.dat +21 -0
  27. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-450-E2A.dat +15 -0
  28. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-450-TD.dat +21 -0
  29. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-500-E2A.dat +20 -0
  30. nucleardatapy/data/matter/micro/2020-SCGF-SM-N3LO-500-TD.dat +20 -0
  31. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLO450.dat +28 -0
  32. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLO500.dat +28 -0
  33. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLOgo394.dat +28 -0
  34. nucleardatapy/data/matter/micro/2024-ABI-NM-DeltaNNLOgo450.dat +28 -0
  35. nucleardatapy/data/matter/micro/2024-ABI-NM-NNLOsat.dat +28 -0
  36. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLO450.dat +28 -0
  37. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLO500.dat +28 -0
  38. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLOgo394.dat +28 -0
  39. nucleardatapy/data/matter/micro/2024-ABI-SM-DeltaNNLOgo450.dat +28 -0
  40. nucleardatapy/data/matter/micro/2024-ABI-SM-NNLOsat.dat +28 -0
  41. nucleardatapy/data/matter/nep/NEPESkyrme.dat +2 -3
  42. nucleardatapy/data/matter/nep/NEPGSkyrme.dat +7 -0
  43. nucleardatapy/data/matter/nep/NEPSkyrme.dat +4 -2
  44. nucleardatapy/data/matter/nep/NEPxEFT.dat +8 -0
  45. nucleardatapy/data/matter/nep/best67DDSkyrme.dat +28 -0
  46. nucleardatapy/data/matter/nep/best90DDSkyrme.dat +46 -0
  47. nucleardatapy/data/matter/nep/best95DDSkyrme.dat +54 -0
  48. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-NM.dat +996 -996
  49. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-SM.dat +991 -991
  50. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-NM.dat +1002 -0
  51. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-SM.dat +1002 -0
  52. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-NM.dat +102 -0
  53. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-SM.dat +102 -0
  54. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-NM.dat +102 -0
  55. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-SM.dat +102 -0
  56. nucleardatapy/env.py +1 -1
  57. nucleardatapy/eos/__init__.py +4 -3
  58. nucleardatapy/eos/setupCC.py +429 -0
  59. nucleardatapy/eos/setup_am.py +39 -14
  60. nucleardatapy/eos/setup_am_Beq.py +40 -15
  61. nucleardatapy/eos/setup_am_Leq.py +40 -15
  62. nucleardatapy/fig/__init__.py +24 -15
  63. nucleardatapy/fig/astro_setupGW_fig.py +9 -7
  64. nucleardatapy/fig/astro_setupMR_fig.py +26 -18
  65. nucleardatapy/fig/astro_setupMasses_fig.py +8 -6
  66. nucleardatapy/fig/astro_setupMtov_fig.py +10 -6
  67. nucleardatapy/fig/astro_setupMup_fig.py +9 -7
  68. nucleardatapy/fig/corr_setupEsymDen_fig.py +22 -9
  69. nucleardatapy/fig/corr_setupEsymLsym_fig.py +25 -8
  70. nucleardatapy/fig/corr_setupKsatQsat_fig.py +23 -17
  71. nucleardatapy/fig/crust_setupCrust_fig.py +11 -9
  72. nucleardatapy/fig/eos_setupAMBeq_fig.py +641 -156
  73. nucleardatapy/fig/eos_setupAMLeq_fig.py +53 -50
  74. nucleardatapy/fig/eos_setupAM_asy_lep_fig.py +373 -0
  75. nucleardatapy/fig/eos_setupAM_asy_nuc_fig.py +346 -0
  76. nucleardatapy/fig/eos_setupAM_asy_tot_fig.py +352 -0
  77. nucleardatapy/fig/eos_setupAM_fig.py +519 -0
  78. nucleardatapy/fig/eos_setupCC_fig.py +270 -0
  79. nucleardatapy/fig/hnuc_setupChart_fig.py +19 -16
  80. nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +15 -5
  81. nucleardatapy/fig/matter_all_fig.py +971 -0
  82. nucleardatapy/fig/matter_setupCheck_fig.py +106 -0
  83. nucleardatapy/fig/matter_setupFFGLep_fig.py +74 -0
  84. nucleardatapy/fig/matter_setupFFGNuc_fig.py +286 -115
  85. nucleardatapy/fig/matter_setupHIC_fig.py +107 -67
  86. nucleardatapy/fig/matter_setupMicroEsym_fig.py +259 -73
  87. nucleardatapy/fig/matter_setupMicro_LP_fig.py +185 -82
  88. nucleardatapy/fig/matter_setupMicro_band_fig.py +126 -53
  89. nucleardatapy/fig/matter_setupMicro_effmass_fig.py +253 -77
  90. nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +45 -20
  91. nucleardatapy/fig/matter_setupMicro_fig.py +317 -77
  92. nucleardatapy/fig/matter_setupMicro_gap_fig.py +237 -100
  93. nucleardatapy/fig/matter_setupNEPStats_fig.py +106 -0
  94. nucleardatapy/fig/matter_setupPhenoEsym_fig.py +204 -65
  95. nucleardatapy/fig/matter_setupPheno_fig.py +395 -93
  96. nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +93 -73
  97. nucleardatapy/fig/nuc_setupBEExp_fig.py +97 -87
  98. nucleardatapy/fig/nuc_setupBETheo_fig.py +114 -81
  99. nucleardatapy/fig/nuc_setupISGMRExp_fig.py +12 -15
  100. nucleardatapy/fig/nuc_setupRchExp_fig.py +14 -22
  101. nucleardatapy/fig/nuc_setupRchTheo_fig.py +37 -40
  102. nucleardatapy/fig/nuc_setupRnpExp_fig.py +86 -106
  103. nucleardatapy/fig/nuc_setupRnpTheo_fig.py +105 -94
  104. nucleardatapy/hello.py +6 -0
  105. nucleardatapy/hnuc/setup_re1L_exp.py +6 -6
  106. nucleardatapy/hnuc/setup_re1Xi_exp.py +5 -5
  107. nucleardatapy/hnuc/setup_re2L_exp.py +36 -13
  108. nucleardatapy/matter/__init__.py +14 -14
  109. nucleardatapy/matter/setup_check.py +6 -6
  110. nucleardatapy/matter/setup_ffg.py +66 -39
  111. nucleardatapy/matter/setup_hic.py +91 -74
  112. nucleardatapy/matter/setup_micro.py +2033 -1007
  113. nucleardatapy/matter/setup_micro_band.py +6 -6
  114. nucleardatapy/matter/setup_micro_esym.py +56 -54
  115. nucleardatapy/matter/setup_micro_gap.py +24 -17
  116. nucleardatapy/matter/setup_micro_lp.py +2 -2
  117. nucleardatapy/matter/setup_nep.py +175 -92
  118. nucleardatapy/matter/{setup_nep_model_dist.py → setup_nep_stat_model.py} +13 -8
  119. nucleardatapy/matter/{setup_nep_dist.py → setup_nep_stat_models.py} +12 -8
  120. nucleardatapy/matter/setup_pheno.py +129 -49
  121. nucleardatapy/matter/setup_pheno_esym.py +22 -19
  122. nucleardatapy/nuc/setup_be_exp.py +306 -292
  123. nucleardatapy/nuc/setup_be_theo.py +288 -105
  124. nucleardatapy/nuc/setup_isgmr_exp.py +4 -4
  125. nucleardatapy/nuc/setup_rnp_exp.py +1 -0
  126. nucleardatapy/nuc/setup_rnp_theo.py +2 -1
  127. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/METADATA +48 -16
  128. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/RECORD +157 -124
  129. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/WHEEL +1 -1
  130. tests/test_corr_setupKsatQsat.py +3 -1
  131. tests/test_matter_setupMicro.py +37 -10
  132. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-NM.dat +0 -1002
  133. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-SM.dat +0 -1002
  134. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-NM.dat +0 -1002
  135. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-SM.dat +0 -1002
  136. nucleardatapy/fig/eos_setupAM_e_asy_lep_fig.py +0 -125
  137. nucleardatapy/fig/eos_setupAM_e_asy_nuc_fig.py +0 -115
  138. nucleardatapy/fig/eos_setupAM_e_asy_tot_fig.py +0 -117
  139. nucleardatapy/fig/eos_setupAM_e_fig.py +0 -173
  140. nucleardatapy/fig/matter_ENM_fig.py +0 -128
  141. nucleardatapy/fig/matter_ESM_fig.py +0 -140
  142. nucleardatapy/fig/matter_Esym_fig.py +0 -134
  143. nucleardatapy/fig/matter_cs2_fig.py +0 -83
  144. nucleardatapy/fig/matter_preNM_fig.py +0 -146
  145. nucleardatapy/fig/matter_preSM_fig.py +0 -144
  146. nucleardatapy/fig/matter_setupNEPModelDist_fig.py +0 -68
  147. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-NM-AV18.dat → 2006-EBHF-NM-AV18.dat} +0 -0
  148. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-SM-AV18.dat → 2006-EBHF-SM-AV18.dat} +0 -0
  149. /nucleardatapy/data/crust/{2022-crustGMRS-BSK14.dat → 2022-GMRS-BSK14.dat} +0 -0
  150. /nucleardatapy/data/crust/{2022-crustGMRS-BSK16.dat → 2022-GMRS-BSK16.dat} +0 -0
  151. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL59.dat → 2022-GMRS-DHSL59.dat} +0 -0
  152. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL69.dat → 2022-GMRS-DHSL69.dat} +0 -0
  153. /nucleardatapy/data/crust/{2022-crustGMRS-F0.dat → 2022-GMRS-F0.dat} +0 -0
  154. /nucleardatapy/data/crust/{2022-crustGMRS-H1.dat → 2022-GMRS-H1.dat} +0 -0
  155. /nucleardatapy/data/crust/{2022-crustGMRS-H2.dat → 2022-GMRS-H2.dat} +0 -0
  156. /nucleardatapy/data/crust/{2022-crustGMRS-H3.dat → 2022-GMRS-H3.dat} +0 -0
  157. /nucleardatapy/data/crust/{2022-crustGMRS-H4.dat → 2022-GMRS-H4.dat} +0 -0
  158. /nucleardatapy/data/crust/{2022-crustGMRS-H5.dat → 2022-GMRS-H5.dat} +0 -0
  159. /nucleardatapy/data/crust/{2022-crustGMRS-H7.dat → 2022-GMRS-H7.dat} +0 -0
  160. /nucleardatapy/data/crust/{2022-crustGMRS-LNS5.dat → 2022-GMRS-LNS5.dat} +0 -0
  161. /nucleardatapy/data/crust/{2022-crustGMRS-RATP.dat → 2022-GMRS-RATP.dat} +0 -0
  162. /nucleardatapy/data/crust/{2022-crustGMRS-SGII.dat → 2022-GMRS-SGII.dat} +0 -0
  163. /nucleardatapy/data/crust/{2022-crustGMRS-SLY5.dat → 2022-GMRS-SLY5.dat} +0 -0
  164. /nucleardatapy/data/matter/micro/{2013-QMC-NM.dat → 2013-MBPT-NM.dat} +0 -0
  165. /nucleardatapy/data/{NeutronSkin/ddrhNskin-208Pb.dat → rnp/ddrhrnp-208Pb.dat} +0 -0
  166. /nucleardatapy/data/{NeutronSkin/ddrhNskin-48Ca.dat → rnp/ddrhrnp-48Ca.dat} +0 -0
  167. /nucleardatapy/data/{NeutronSkin/nlrhNskin-208Pb.dat → rnp/nlrhrnp-208Pb.dat} +0 -0
  168. /nucleardatapy/data/{NeutronSkin/nlrhNskin-48Ca.dat → rnp/nlrhrnp-48Ca.dat} +0 -0
  169. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-208Pb.dat → rnp/skyrmernp-208Pb.dat} +0 -0
  170. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-48Ca.dat → rnp/skyrmernp-48Ca.dat} +0 -0
  171. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/licenses/LICENSE +0 -0
  172. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,971 @@
1
+ import numpy as np
2
+ import matplotlib.pyplot as plt
3
+
4
+ import nucleardatapy as nuda
5
+
6
+ def matter_all_e2a_fig( pname, micro_mbs, pheno_models, band_check, band_plot, matter ):
7
+ """
8
+ Plot nucleonic energy per particle E/A in matter.
9
+
10
+ The plot is 1x2 with:
11
+
12
+ [0]: E/A versus den (micro). [1]: E/A versus den (pheno).
13
+
14
+ :param pname: name of the figure (*.png)
15
+ :type pname: str.
16
+ :param micro_mbs: many-body (mb) approach considered.
17
+ :type micro_mbs: str.
18
+ :param pheno_models: models to run on.
19
+ :type pheno_models: array of str.
20
+ :param band_check: object instantiated on the reference band.
21
+ :type band_check: object.
22
+ :param band_plot: object instantiated on the reference band.
23
+ :type band_plot: object.
24
+ :param matter: can be 'SM' or 'NM'.
25
+ :type matter: str.
26
+ """
27
+ #
28
+ print(f'Plot name: {pname}')
29
+ #
30
+ fig, axs = plt.subplots(1,2)
31
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=0.95, top=0.9, wspace=0.05, hspace=0.3 )
32
+ #
33
+ if matter.lower() == 'nm':
34
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
35
+ axs[0].set_ylabel(r'$e_\text{int,NM}(n_\text{nuc})$ (MeV)', fontsize = '14' )
36
+ axs[0].set_xlim([0, 0.33])
37
+ axs[0].set_ylim([0, 35])
38
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
39
+ #axs[1].set_ylabel(r'$e_{sym}(n)$')
40
+ axs[1].set_xlim([0, 0.33])
41
+ axs[1].set_ylim([0, 35])
42
+ axs[1].tick_params('y', labelleft=False)
43
+ elif matter.lower() == 'sm':
44
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
45
+ axs[0].set_ylabel(r'$e_\text{int,SM}(n_\text{nuc})$ (MeV)', fontsize = '14' )
46
+ axs[0].set_xlim([0, 0.33])
47
+ axs[0].set_ylim([-22, 5])
48
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
49
+ #axs[1].set_ylabel(r'$e_{sym}(n)$')
50
+ axs[1].set_xlim([0, 0.33])
51
+ axs[1].set_ylim([-22, 5])
52
+ axs[1].tick_params('y', labelleft=False)
53
+ #
54
+ mb_check = []
55
+ #
56
+ for kmb,mb in enumerate(micro_mbs):
57
+ #
58
+ models, models_lower = nuda.matter.micro_models_mb( mb )
59
+ print('models in matter code:',models)
60
+ #
61
+ for model in models:
62
+ #
63
+ if matter.lower() == 'sm' and 'NM' in model:
64
+ continue
65
+ #
66
+ if 'fit' in model: continue
67
+ #
68
+ micro = nuda.matter.setupMicro( model = model )
69
+ if nuda.env.verb: micro.print_outputs( )
70
+ #
71
+ check = nuda.matter.setupCheck( eos = micro, band = band_check )
72
+ #
73
+ if check.isInside:
74
+ lstyle = 'solid'
75
+ else:
76
+ lstyle = 'dashed'
77
+ #continue
78
+ #
79
+ if matter.lower() == 'nm':
80
+ #
81
+ if micro.nm_e2a_int is not None:
82
+ print('mb:',mb,'model:',model)
83
+ if mb in mb_check:
84
+ if micro.marker:
85
+ if micro.e_err:
86
+ axs[0].errorbar( micro.nm_den, micro.nm_e2a_int, yerr=micro.nm_e2a_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
87
+ else:
88
+ axs[0].plot( micro.nm_den, micro.nm_e2a_int, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
89
+ else:
90
+ if micro.e_err:
91
+ axs[0].errorbar( micro.nm_den, micro.nm_e2a_int, yerr=micro.nm_e2a_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
92
+ else:
93
+ axs[0].plot( micro.nm_den, micro.nm_e2a_int, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
94
+ else:
95
+ mb_check.append(mb)
96
+ if micro.marker:
97
+ if micro.e_err:
98
+ axs[0].errorbar( micro.nm_den, micro.nm_e2a_int, yerr=micro.nm_e2a_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
99
+ else:
100
+ axs[0].plot( micro.nm_den, micro.nm_e2a_int, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, color=nuda.param.col[kmb] )
101
+ else:
102
+ if micro.e_err:
103
+ axs[0].errorbar( micro.nm_den, micro.nm_e2a_int, yerr=micro.nm_e2a_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
104
+ else:
105
+ axs[0].plot( micro.nm_den, micro.nm_e2a_int, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, color=nuda.param.col[kmb] )
106
+ #
107
+ elif matter.lower() == 'sm':
108
+ #
109
+ if micro.sm_e2a_int is not None:
110
+ print('mb:',mb,'model:',model)
111
+ if mb in mb_check:
112
+ if micro.marker:
113
+ print('with marker 1:',micro.marker)
114
+ if micro.e_err:
115
+ print('with error',micro.e_err)
116
+ axs[0].errorbar( micro.sm_den, micro.sm_e2a_int, yerr=micro.sm_e2a_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
117
+ else:
118
+ print('with no error',micro.e_err)
119
+ axs[0].plot( micro.sm_den, micro.sm_e2a_int, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
120
+ else:
121
+ print('with no marker',micro.marker)
122
+ if micro.e_err:
123
+ print('with error',micro.e_err)
124
+ axs[0].errorbar( micro.sm_den, micro.sm_e2a_int, yerr=micro.sm_e2a_err, marker=micro.marker, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
125
+ else:
126
+ print('with no error',micro.e_err)
127
+ axs[0].plot( micro.sm_den, micro.sm_e2a_int, marker=micro.marker, linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
128
+ else:
129
+ mb_check.append(mb)
130
+ if micro.marker:
131
+ print('with marker 2:',micro.marker)
132
+ if micro.e_err:
133
+ print('with error',micro.e_err)
134
+ axs[0].errorbar( micro.sm_den, micro.sm_e2a_int, yerr=micro.sm_e2a_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
135
+ else:
136
+ print('with no error',micro.e_err)
137
+ axs[0].plot( micro.sm_den, micro.sm_e2a_int, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, color=nuda.param.col[kmb] )
138
+ else:
139
+ print('with no marker',micro.marker)
140
+ if micro.e_err:
141
+ print('with error',micro.e_err)
142
+ axs[0].errorbar( micro.sm_den, micro.sm_e2a_int, yerr=micro.sm_e2a_err, marker=micro.marker, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
143
+ else:
144
+ print('with no error',micro.e_err)
145
+ axs[0].plot( micro.sm_den, micro.sm_e2a_int, marker=micro.marker, linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
146
+ # end of matter
147
+ # end of model
148
+ # end of mb
149
+ axs[0].fill_between( band_plot.den, y1=(band_plot.e2a_int-band_plot.e2a_std), y2=(band_plot.e2a_int+band_plot.e2a_std), color=band_plot.color, alpha=band_plot.alpha, visible=True )
150
+ axs[0].plot( band_plot.den, (band_plot.e2a_int-band_plot.e2a_std), color='k', linestyle='dashed', zorder = 100 )
151
+ axs[0].plot( band_plot.den, (band_plot.e2a_int+band_plot.e2a_std), color='k', linestyle='dashed', zorder = 100 )
152
+ #
153
+ model_check = []
154
+ #
155
+ for kmodel,model in enumerate(pheno_models):
156
+ #
157
+ params, params_lower = nuda.matter.pheno_params( model = model )
158
+ #
159
+ for param in params:
160
+ #
161
+ pheno = nuda.matter.setupPheno( model = model, param = param )
162
+ if nuda.env.verb: pheno.print_outputs( )
163
+ #
164
+ check = nuda.matter.setupCheck( eos = pheno, band = band_check )
165
+ #
166
+ if check.isInside:
167
+ lstyle = 'solid'
168
+ else:
169
+ lstyle = 'dashed'
170
+ #continue
171
+ #
172
+ if matter.lower() == 'nm':
173
+ #
174
+ if pheno.nm_e2a_int is not None:
175
+ print('model:',model,' param:',param)
176
+ if model in model_check:
177
+ axs[1].plot( pheno.nm_den, pheno.nm_e2a_int, linestyle=lstyle, color=nuda.param.col[kmodel] )
178
+ else:
179
+ model_check.append(model)
180
+ axs[1].plot( pheno.nm_den, pheno.nm_e2a_int, linestyle=lstyle, color=nuda.param.col[kmodel], label=model )
181
+ #
182
+ elif matter.lower() == 'sm':
183
+ #
184
+ if pheno.sm_e2a_int is not None:
185
+ print('model:',model,' param:',param)
186
+ if model in model_check:
187
+ axs[1].plot( pheno.sm_den, pheno.sm_e2a_int, linestyle=lstyle, color=nuda.param.col[kmodel] )
188
+ else:
189
+ model_check.append(model)
190
+ axs[1].plot( pheno.sm_den, pheno.sm_e2a_int, linestyle=lstyle, color=nuda.param.col[kmodel], label=model )
191
+ # end of param
192
+ # end of model
193
+ axs[1].fill_between( band_plot.den, y1=(band_plot.e2a_int-band_plot.e2a_std), y2=(band_plot.e2a_int+band_plot.e2a_std), color=band_plot.color, alpha=band_plot.alpha, visible=True )
194
+ axs[1].plot( band_plot.den, (band_plot.e2a_int-band_plot.e2a_std), color='k', linestyle='dashed', zorder = 100 )
195
+ axs[1].plot( band_plot.den, (band_plot.e2a_int+band_plot.e2a_std), color='k', linestyle='dashed', zorder = 100 )
196
+ #
197
+ #axs[1].legend(loc='upper left',fontsize='8', ncol=2)
198
+ #axs[0,1].legend(loc='upper left',fontsize='xx-small', ncol=2)
199
+ if matter.lower() == 'nm':
200
+ axs[0].text(0.06,2,'microscopic models',fontsize='12')
201
+ axs[1].text(0.06,2,'phenomenological models',fontsize='12')
202
+ fig.legend(loc='upper left',bbox_to_anchor=(0.07,1.0),columnspacing=2,fontsize='8',ncol=6,frameon=False)
203
+ elif matter.lower() == 'sm':
204
+ axs[0].text(0.03,2,'microscopic models',fontsize='12')
205
+ axs[1].text(0.03,2,'phenomenological models',fontsize='12')
206
+ fig.legend(loc='upper left',bbox_to_anchor=(0.15,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
207
+ #
208
+ if pname is not None:
209
+ plt.savefig(pname, dpi=200)
210
+ #
211
+ plt.close()
212
+ #
213
+
214
+ def matter_all_Esym_fig( pname, micro_mbs, pheno_models, band_check, band_plot ):
215
+ """
216
+ Plot nucleonic symmetry energy.
217
+
218
+ The plot is 1x2 with:
219
+
220
+ [0]: Esym versus den (micro). [1]: Esym versus den (pheno).
221
+
222
+ :param pname: name of the figure (*.png)
223
+ :type pname: str.
224
+ :param micro_mbs: many-body (mb) approach considered.
225
+ :type micro_mbs: str.
226
+ :param pheno_models: models to run on.
227
+ :type pheno_models: array of str.
228
+ :param band_check: object instantiated on the reference band.
229
+ :type band_check: object.
230
+ :param band_plot: object instantiated on the reference band.
231
+ :type band_plot: object.
232
+ """
233
+ #
234
+ print(f'Plot name: {pname}')
235
+ #
236
+ matter = 'Esym'
237
+ #
238
+ fig, axs = plt.subplots(1,2)
239
+ #fig.tight_layout() # Or equivalently, "plt.tight_layout()"
240
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=0.95, top=0.9, wspace=0.05, hspace=0.05 )
241
+ #
242
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
243
+ axs[0].set_ylabel(r'$e_\text{sym}(n_\text{nuc})$ (MeV)', fontsize = '14' )
244
+ axs[0].set_xlim([0, 0.33])
245
+ axs[0].set_ylim([0, 60])
246
+ #
247
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
248
+ #axs[1].set_ylabel(r'$e_{sym}(n)$')
249
+ axs[1].set_xlim([0, 0.33])
250
+ axs[1].set_ylim([0, 60])
251
+ axs[1].tick_params('y', labelleft=False)
252
+ #
253
+ mb_check = []
254
+ #
255
+ for kmb,mb in enumerate(micro_mbs):
256
+ #
257
+ models, models_lower = nuda.matter.micro_esym_models_mb( mb )
258
+ #
259
+ for model in models:
260
+ #
261
+ if 'fit' in model: continue
262
+ #
263
+ micro = nuda.matter.setupMicroEsym( model = model )
264
+ if nuda.env.verb: micro.print_outputs( )
265
+ #
266
+ check = nuda.matter.setupCheck( eos = micro, band = band_check )
267
+ #
268
+ if check.isInside:
269
+ lstyle = 'solid'
270
+ else:
271
+ lstyle = 'dashed'
272
+ #
273
+ if micro.esym is not None:
274
+ print('mb:',mb,'model:',model)
275
+ if mb in mb_check:
276
+ if micro.marker:
277
+ if micro.err:
278
+ axs[0].errorbar( micro.den, micro.esym, yerr=micro.esym_err, marker=micro.marker, linestyle=lstyle, markevery=micro.every, errorevery=micro.every, color=nuda.param.col[kmb] )
279
+ else:
280
+ axs[0].plot( micro.den, micro.esym, marker=micro.marker, linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
281
+ else:
282
+ if micro.err:
283
+ axs[0].errorbar( micro.den, micro.esym, yerr=micro.esym_err, marker=micro.marker, linestyle=lstyle, markevery=micro.every, errorevery=micro.every, color=nuda.param.col[kmb] )
284
+ else:
285
+ axs[0].plot( micro.den, micro.esym, marker=micro.marker, linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
286
+ else:
287
+ mb_check.append(mb)
288
+ if micro.marker:
289
+ if micro.err:
290
+ axs[0].errorbar( micro.den, micro.esym, yerr=micro.esym_err, marker=micro.marker, linestyle=lstyle, label=mb, markevery=micro.every, errorevery=micro.every, color=nuda.param.col[kmb] )
291
+ else:
292
+ axs[0].plot( micro.den, micro.esym, marker=micro.marker, linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
293
+ else:
294
+ if micro.err:
295
+ axs[0].errorbar( micro.den, micro.esym, yerr=micro.esym_err, marker=micro.marker, linestyle=lstyle, label=mb, markevery=micro.every, errorevery=micro.every, color=nuda.param.col[kmb] )
296
+ else:
297
+ axs[0].plot( micro.den, micro.esym, marker=micro.marker, linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
298
+ # end of model
299
+ # end of mb
300
+ axs[0].fill_between( band_plot.den, y1=(band_plot.e2a_int-band_plot.e2a_std), y2=(band_plot.e2a_int+band_plot.e2a_std), color=band_plot.color, alpha=band_plot.alpha, visible=True )
301
+ axs[0].plot( band_plot.den, (band_plot.e2a_int-band_plot.e2a_std), color='k', linestyle='dashed', zorder=100 )
302
+ axs[0].plot( band_plot.den, (band_plot.e2a_int+band_plot.e2a_std), color='k', linestyle='dashed', zorder=100 )
303
+ #
304
+ model_check = []
305
+ #
306
+ for kmodel,model in enumerate(pheno_models):
307
+ #
308
+ params, params_lower = nuda.matter.pheno_params( model = model )
309
+ #
310
+ for param in params:
311
+ #
312
+ pheno = nuda.matter.setupPhenoEsym( model = model, param = param )
313
+ if nuda.env.verb: pheno.print_outputs( )
314
+ #
315
+ check = nuda.matter.setupCheck( eos = pheno, band = band_check )
316
+ #
317
+ if check.isInside:
318
+ lstyle = 'solid'
319
+ else:
320
+ lstyle = 'dashed'
321
+ #
322
+ if pheno.esym is not None:
323
+ print('model:',model,' param:',param)
324
+ if model in model_check:
325
+ axs[1].plot( pheno.den, pheno.esym, linestyle=lstyle, color=nuda.param.col[kmodel] )
326
+ else:
327
+ model_check.append(model)
328
+ axs[1].plot( pheno.den, pheno.esym, linestyle=lstyle, color=nuda.param.col[kmodel], label=model )
329
+ # end of param
330
+ # end of model
331
+ axs[1].fill_between( band_plot.den, y1=(band_plot.e2a_int-band_plot.e2a_std), y2=(band_plot.e2a_int+band_plot.e2a_std), color=band_plot.color, alpha=band_plot.alpha, visible=True )
332
+ axs[1].plot( band_plot.den, (band_plot.e2a_int-band_plot.e2a_std), color='k', linestyle='dashed', zorder=100 )
333
+ axs[1].plot( band_plot.den, (band_plot.e2a_int+band_plot.e2a_std), color='k', linestyle='dashed', zorder=100 )
334
+ #
335
+ axs[0].text(0.05,5,'microscopic models',fontsize='12')
336
+ axs[1].text(0.05,5,'phenomenological models',fontsize='12')
337
+ #
338
+ #axs[1].legend(loc='upper left',fontsize='8', ncol=2)
339
+ #axs[0,1].legend(loc='upper left',fontsize='xx-small', ncol=2)
340
+ fig.legend(loc='upper left',bbox_to_anchor=(0.2,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
341
+ #
342
+ if pname is not None:
343
+ plt.savefig(pname, dpi=200)
344
+ plt.close()
345
+ #
346
+
347
+ def matter_all_pre_fig( pname, micro_mbs, pheno_models, band_check, matter ):
348
+ """
349
+ Plot nucleonic pressure in matter.
350
+
351
+ The plot is 1x2 with:
352
+
353
+ [0]: pre versus den (micro). [1]: pre versus den (pheno).
354
+
355
+ :param pname: name of the figure (*.png)
356
+ :type pname: str.
357
+ :param micro_mbs: many-body (mb) approach considered.
358
+ :type micro_mbs: str.
359
+ :param pheno_models: models to run on.
360
+ :type pheno_models: array of str.
361
+ :param band_check: object instantiated on the reference band.
362
+ :type band_check: object.
363
+ :param band_plot: object instantiated on the reference band.
364
+ :type band_plot: object.
365
+ :param matter: can be 'SM' or 'NM'.
366
+ :type matter: str.
367
+ """
368
+ #
369
+ print(f'Plot name: {pname}')
370
+ #
371
+ fig, axs = plt.subplots(1,2)
372
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=0.95, top=0.9, wspace=0.05, hspace=0.3 )
373
+ #
374
+ p_den = 0.32
375
+ if matter.lower() == 'nm':
376
+ p_cen = 23.0
377
+ p_std = 14.5
378
+ p_micro_cen = 17.0
379
+ p_micro_std = 8.5
380
+ p_pheno_cen = 23.0
381
+ p_pheno_std = 14.5
382
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
383
+ axs[0].set_ylabel(r'$p_\text{NM}(n_\text{nuc})$ (MeV fm$^{-3}$)', fontsize = '14' )
384
+ axs[0].set_xlim([0, 0.35])
385
+ axs[0].set_ylim([-2, 45])
386
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
387
+ #axs[1].set_ylabel(r'$e_{sym}(n)$')
388
+ axs[1].set_xlim([0, 0.35])
389
+ axs[1].set_ylim([-2, 45])
390
+ axs[1].tick_params('y', labelleft=False)
391
+ elif matter.lower() == 'sm':
392
+ p_cen = 16.0
393
+ p_std = 12.0
394
+ p_micro_cen = 10.0
395
+ p_micro_std = 6.0
396
+ p_pheno_cen = 19.0
397
+ p_pheno_std = 9.0
398
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
399
+ axs[0].set_ylabel(r'$p_\text{SM}(n_\text{nuc})$ (MeV fm$^{-3}$)', fontsize = '14' )
400
+ axs[0].set_xlim([0, 0.35])
401
+ axs[0].set_ylim([-2, 45])
402
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
403
+ #axs[1].set_ylabel(r'$e_{sym}(n)$')
404
+ axs[1].set_xlim([0, 0.35])
405
+ axs[1].set_ylim([-2, 45])
406
+ axs[1].tick_params('y', labelleft=False)
407
+ #
408
+ mb_check = []
409
+ #
410
+ for kmb,mb in enumerate(micro_mbs):
411
+ #
412
+ models, models_lower = nuda.matter.micro_models_mb( mb )
413
+ #
414
+ for model in models:
415
+ #
416
+ if 'fit' in model: continue
417
+ #
418
+ micro = nuda.matter.setupMicro( model = model )
419
+ if nuda.env.verb: micro.print_outputs( )
420
+ #
421
+ check = nuda.matter.setupCheck( eos = micro, band = band_check )
422
+ #
423
+ if check.isInside:
424
+ lstyle = 'solid'
425
+ else:
426
+ lstyle = 'dashed'
427
+ #continue
428
+ #
429
+ if matter.lower() == 'nm':
430
+ #
431
+ if micro.nm_pre is not None:
432
+ print('mb:',mb,'model:',model)
433
+ if mb in mb_check:
434
+ if micro.marker:
435
+ if micro.p_err:
436
+ axs[0].errorbar( micro.nm_den, micro.nm_pre, yerr=micro.nm_pre_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
437
+ else:
438
+ axs[0].plot( micro.nm_den, micro.nm_pre, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
439
+ else:
440
+ if micro.p_err:
441
+ axs[0].errorbar( micro.nm_den, micro.nm_pre, yerr=micro.nm_pre_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
442
+ else:
443
+ axs[0].plot( micro.nm_den, micro.nm_pre, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
444
+ else:
445
+ mb_check.append(mb)
446
+ if micro.marker:
447
+ if micro.p_err:
448
+ axs[0].errorbar( micro.nm_den, micro.nm_pre, yerr=micro.nm_pre_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
449
+ else:
450
+ axs[0].plot( micro.nm_den, micro.nm_pre, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, color=nuda.param.col[kmb] )
451
+ else:
452
+ if micro.p_err:
453
+ axs[0].errorbar( micro.nm_den, micro.nm_pre, yerr=micro.nm_pre_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
454
+ else:
455
+ axs[0].plot( micro.nm_den, micro.nm_pre, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, color=nuda.param.col[kmb] )
456
+ #
457
+ elif matter.lower() == 'sm':
458
+ #
459
+ if micro.sm_pre is not None:
460
+ print('mb:',mb,'model:',model)
461
+ if mb in mb_check:
462
+ if micro.marker:
463
+ print('with marker 1:',micro.marker)
464
+ if micro.p_err:
465
+ print('with error',micro.p_err)
466
+ axs[0].errorbar( micro.sm_den, micro.sm_pre, yerr=micro.sm_pre_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
467
+ else:
468
+ print('with no error',micro.p_err)
469
+ axs[0].plot( micro.sm_den, micro.sm_pre, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
470
+ else:
471
+ print('with no marker',micro.marker)
472
+ if micro.p_err:
473
+ print('with error',micro.p_err)
474
+ axs[0].errorbar( micro.sm_den, micro.sm_pre, yerr=micro.sm_pre_err, marker=micro.marker, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
475
+ else:
476
+ print('with no error',micro.p_err)
477
+ axs[0].plot( micro.sm_den, micro.sm_pre, marker=micro.marker, linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
478
+ else:
479
+ mb_check.append(mb)
480
+ if micro.marker:
481
+ print('with marker 2:',micro.marker)
482
+ if micro.p_err:
483
+ print('with error',micro.p_err)
484
+ axs[0].errorbar( micro.sm_den, micro.sm_pre, yerr=micro.sm_pre_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
485
+ else:
486
+ print('with no error',micro.p_err)
487
+ axs[0].plot( micro.sm_den, micro.sm_pre, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, color=nuda.param.col[kmb] )
488
+ else:
489
+ print('with no marker',micro.marker)
490
+ if micro.p_err:
491
+ print('with error',micro.p_err)
492
+ axs[0].errorbar( micro.sm_den, micro.sm_pre, yerr=micro.sm_pre_err, marker=micro.marker, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
493
+ else:
494
+ print('with no error',micro.p_err)
495
+ axs[0].plot( micro.sm_den, micro.sm_pre, marker=micro.marker, linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
496
+ # end of matter
497
+ # end of model
498
+ # end of mb
499
+ #
500
+ axs[0].errorbar( p_den, p_cen, yerr=p_std, color='k' )
501
+ axs[0].errorbar( p_den+0.005, p_micro_cen, yerr=p_micro_std, color='r' )
502
+ #
503
+ model_check = []
504
+ #
505
+ for kmodel,model in enumerate(pheno_models):
506
+ #
507
+ params, params_lower = nuda.matter.pheno_params( model = model )
508
+ #
509
+ for param in params:
510
+ #
511
+ pheno = nuda.matter.setupPheno( model = model, param = param )
512
+ if nuda.env.verb: pheno.print_outputs( )
513
+ #
514
+ check = nuda.matter.setupCheck( eos = pheno, band = band_check )
515
+ #
516
+ if check.isInside:
517
+ lstyle = 'solid'
518
+ else:
519
+ lstyle = 'dashed'
520
+ #continue
521
+ #
522
+ if matter.lower() == 'nm':
523
+ #
524
+ if pheno.nm_pre is not None:
525
+ print('model:',model,' param:',param)
526
+ if model in model_check:
527
+ axs[1].plot( pheno.nm_den, pheno.nm_pre, linestyle=lstyle, color=nuda.param.col[kmodel] )
528
+ else:
529
+ model_check.append(model)
530
+ axs[1].plot( pheno.nm_den, pheno.nm_pre, linestyle=lstyle, color=nuda.param.col[kmodel], label=model )
531
+ #
532
+ elif matter.lower() == 'sm':
533
+ #
534
+ if pheno.sm_pre is not None:
535
+ print('model:',model,' param:',param)
536
+ if model in model_check:
537
+ axs[1].plot( pheno.sm_den, pheno.sm_pre, linestyle=lstyle, color=nuda.param.col[kmodel] )
538
+ else:
539
+ model_check.append(model)
540
+ axs[1].plot( pheno.sm_den, pheno.sm_pre, linestyle=lstyle, color=nuda.param.col[kmodel], label=model )
541
+ # end of param
542
+ # end of model
543
+ #
544
+ axs[1].errorbar( p_den, p_cen, yerr=p_std, color='k' )
545
+ axs[1].errorbar( p_den+0.005, p_pheno_cen, yerr=p_pheno_std, color='r' )
546
+ #axs[1].legend(loc='upper left',fontsize='8', ncol=2)
547
+ #axs[0,1].legend(loc='upper left',fontsize='xx-small', ncol=2)
548
+ if matter.lower() == 'nm':
549
+ axs[0].text(0.02,40,'microscopic models',fontsize='12')
550
+ axs[1].text(0.02,40,'phenomenological models',fontsize='12')
551
+ fig.legend(loc='upper left',bbox_to_anchor=(0.1,1.0),columnspacing=2,fontsize='8',ncol=6,frameon=False)
552
+ elif matter.lower() == 'sm':
553
+ axs[0].text(0.02,40,'microscopic models',fontsize='12')
554
+ axs[1].text(0.02,40,'phenomenological models',fontsize='12')
555
+ fig.legend(loc='upper left',bbox_to_anchor=(0.15,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
556
+ #
557
+ if pname is not None:
558
+ plt.savefig(pname, dpi=200)
559
+ #
560
+ plt.close()
561
+ #
562
+
563
+ def matter_all_eos_fig( pname, micro_mbs, pheno_models, band_check, matter ):
564
+ """
565
+ Plot EoS in matter.
566
+
567
+ The plot is 1x2 with:
568
+
569
+ [0]: pre versus eps (micro). [1]: pre versus eps (pheno).
570
+
571
+ :param pname: name of the figure (*.png)
572
+ :type pname: str.
573
+ :param micro_mbs: many-body (mb) approach considered.
574
+ :type micro_mbs: str.
575
+ :param pheno_models: models to run on.
576
+ :type pheno_models: array of str.
577
+ :param band_check: object instantiated on the reference band.
578
+ :type band_check: object.
579
+ :param matter: can be 'SM' or 'NM'.
580
+ :type matter: str.
581
+ """
582
+ #
583
+ print(f'Plot name: {pname}')
584
+ #
585
+ fig, axs = plt.subplots(1,2)
586
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=0.95, top=0.9, wspace=0.05, hspace=0.3 )
587
+ #
588
+ p_eps = 312.0
589
+ if matter.lower() == 'nm':
590
+ p_cen = 23.0
591
+ p_std = 14.5
592
+ p_micro_cen = 17.0
593
+ p_micro_std = 8.5
594
+ p_pheno_cen = 23.0
595
+ p_pheno_std = 14.5
596
+ axs[0].set_xlabel(r'$\epsilon_\text{NM}$ (MeV fm$^{-3}$)', fontsize = '14' )
597
+ axs[0].set_ylabel(r'$p_\text{NM}(n_\text{nuc})$ (MeV fm$^{-3}$)', fontsize = '14' )
598
+ axs[0].set_xlim([0, 350])
599
+ axs[0].set_ylim([-2, 45])
600
+ axs[1].set_xlabel(r'$\epsilon_\text{NM}$ (MeV fm$^{-3}$)', fontsize = '14' )
601
+ #axs[1].set_ylabel(r'$e_{sym}(n)$')
602
+ axs[1].set_xlim([0, 350])
603
+ axs[1].set_ylim([-2, 45])
604
+ axs[1].tick_params('y', labelleft=False)
605
+ elif matter.lower() == 'sm':
606
+ p_cen = 18.75
607
+ p_std = 14.25
608
+ p_micro_cen = 11.0
609
+ p_micro_std = 6.5
610
+ p_pheno_cen = 22.0
611
+ p_pheno_std = 11.0
612
+ axs[0].set_xlabel(r'$\epsilon_\text{SM}$ (MeV fm$^{-3}$)', fontsize = '14' )
613
+ axs[0].set_ylabel(r'$p_\text{SM}(n_\text{nuc})$ (MeV fm$^{-3}$)', fontsize = '14' )
614
+ axs[0].set_xlim([0, 350])
615
+ axs[0].set_ylim([-2, 45])
616
+ axs[1].set_xlabel(r'$\epsilon_\text{SM}$ (MeV fm$^{-3}$)', fontsize = '14' )
617
+ #axs[1].set_ylabel(r'$e_{sym}(n)$')
618
+ axs[1].set_xlim([0, 350])
619
+ axs[1].set_ylim([-2, 45])
620
+ axs[1].tick_params('y', labelleft=False)
621
+ #
622
+ mb_check = []
623
+ #
624
+ for kmb,mb in enumerate(micro_mbs):
625
+ #
626
+ models, models_lower = nuda.matter.micro_models_mb( mb )
627
+ #
628
+ for model in models:
629
+ #
630
+ if 'fit' in model: continue
631
+ #
632
+ micro = nuda.matter.setupMicro( model = model )
633
+ if nuda.env.verb: micro.print_outputs( )
634
+ #
635
+ check = nuda.matter.setupCheck( eos = micro, band = band_check )
636
+ #
637
+ if check.isInside:
638
+ lstyle = 'solid'
639
+ else:
640
+ lstyle = 'dashed'
641
+ #continue
642
+ #
643
+ if matter.lower() == 'nm':
644
+ #
645
+ if micro.nm_pre is not None:
646
+ print('mb:',mb,'model:',model)
647
+ if mb in mb_check:
648
+ if micro.marker:
649
+ if micro.p_err:
650
+ axs[0].errorbar( micro.nm_eps, micro.nm_pre, yerr=micro.nm_pre_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
651
+ else:
652
+ axs[0].plot( micro.nm_eps, micro.nm_pre, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
653
+ else:
654
+ if micro.p_err:
655
+ axs[0].errorbar( micro.nm_eps, micro.nm_pre, yerr=micro.nm_pre_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
656
+ else:
657
+ axs[0].plot( micro.nm_eps, micro.nm_pre, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
658
+ else:
659
+ mb_check.append(mb)
660
+ if micro.marker:
661
+ if micro.p_err:
662
+ axs[0].errorbar( micro.nm_eps, micro.nm_pre, yerr=micro.nm_pre_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
663
+ else:
664
+ axs[0].plot( micro.nm_eps, micro.nm_pre, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, color=nuda.param.col[kmb] )
665
+ else:
666
+ if micro.p_err:
667
+ axs[0].errorbar( micro.nm_eps, micro.nm_pre, yerr=micro.nm_pre_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
668
+ else:
669
+ axs[0].plot( micro.nm_eps, micro.nm_pre, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, color=nuda.param.col[kmb] )
670
+ #
671
+ elif matter.lower() == 'sm':
672
+ #
673
+ if micro.sm_pre is not None:
674
+ print('mb:',mb,'model:',model)
675
+ if mb in mb_check:
676
+ if micro.marker:
677
+ print('with marker 1:',micro.marker)
678
+ if micro.p_err:
679
+ print('with error',micro.p_err)
680
+ axs[0].errorbar( micro.sm_eps, micro.sm_pre, yerr=micro.sm_pre_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
681
+ else:
682
+ print('with no error',micro.p_err)
683
+ axs[0].plot( micro.sm_eps, micro.sm_pre, marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
684
+ else:
685
+ print('with no marker',micro.marker)
686
+ if micro.p_err:
687
+ print('with error',micro.p_err)
688
+ axs[0].errorbar( micro.sm_eps, micro.sm_pre, yerr=micro.sm_pre_err, marker=micro.marker, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
689
+ else:
690
+ print('with no error',micro.p_err)
691
+ axs[0].plot( micro.sm_eps, micro.sm_pre, marker=micro.marker, linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
692
+ else:
693
+ mb_check.append(mb)
694
+ if micro.marker:
695
+ print('with marker 2:',micro.marker)
696
+ if micro.p_err:
697
+ print('with error',micro.p_err)
698
+ axs[0].errorbar( micro.sm_eps, micro.sm_pre, yerr=micro.sm_pre_err, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
699
+ else:
700
+ print('with no error',micro.p_err)
701
+ axs[0].plot( micro.sm_eps, micro.sm_pre, marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, color=nuda.param.col[kmb] )
702
+ else:
703
+ print('with no marker',micro.marker)
704
+ if micro.p_err:
705
+ print('with error',micro.p_err)
706
+ axs[0].errorbar( micro.sm_eps, micro.sm_pre, yerr=micro.sm_pre_err, marker=micro.marker, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
707
+ else:
708
+ print('with no error',micro.p_err)
709
+ axs[0].plot( micro.sm_eps, micro.sm_pre, marker=micro.marker, linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
710
+ # end of matter
711
+ # end of model
712
+ # end of mb
713
+ #
714
+ axs[0].errorbar( p_eps, p_cen, yerr=p_std, color='k' )
715
+ axs[0].errorbar( p_eps+5, p_micro_cen, yerr=p_micro_std, color='r' )
716
+ #
717
+ model_check = []
718
+ #
719
+ for kmodel,model in enumerate(pheno_models):
720
+ #
721
+ params, params_lower = nuda.matter.pheno_params( model = model )
722
+ #
723
+ for param in params:
724
+ #
725
+ pheno = nuda.matter.setupPheno( model = model, param = param )
726
+ if nuda.env.verb: pheno.print_outputs( )
727
+ #
728
+ check = nuda.matter.setupCheck( eos = pheno, band = band_check )
729
+ #
730
+ if check.isInside:
731
+ lstyle = 'solid'
732
+ else:
733
+ lstyle = 'dashed'
734
+ #continue
735
+ #
736
+ if matter.lower() == 'nm':
737
+ #
738
+ if pheno.nm_pre is not None:
739
+ print('model:',model,' param:',param)
740
+ if model in model_check:
741
+ axs[1].plot( pheno.nm_eps, pheno.nm_pre, linestyle=lstyle, color=nuda.param.col[kmodel] )
742
+ else:
743
+ model_check.append(model)
744
+ axs[1].plot( pheno.nm_eps, pheno.nm_pre, linestyle=lstyle, color=nuda.param.col[kmodel], label=model )
745
+ #
746
+ elif matter.lower() == 'sm':
747
+ #
748
+ if pheno.sm_pre is not None:
749
+ print('model:',model,' param:',param)
750
+ if model in model_check:
751
+ axs[1].plot( pheno.sm_eps, pheno.sm_pre, linestyle=lstyle, color=nuda.param.col[kmodel] )
752
+ else:
753
+ model_check.append(model)
754
+ axs[1].plot( pheno.sm_eps, pheno.sm_pre, linestyle=lstyle, color=nuda.param.col[kmodel], label=model )
755
+ # end of param
756
+ # end of model
757
+ #
758
+ axs[1].errorbar( p_eps, p_cen, yerr=p_std, color='k' )
759
+ axs[1].errorbar( p_eps+5, p_pheno_cen, yerr=p_pheno_std, color='r' )
760
+ #axs[1].legend(loc='upper left',fontsize='8', ncol=2)
761
+ #axs[0,1].legend(loc='upper left',fontsize='xx-small', ncol=2)
762
+ if matter.lower() == 'nm':
763
+ axs[0].text(10,40,'microscopic models',fontsize='12')
764
+ axs[1].text(10,40,'phenomenological models',fontsize='12')
765
+ fig.legend(loc='upper left',bbox_to_anchor=(0.1,1.0),columnspacing=2,fontsize='8',ncol=6,frameon=False)
766
+ elif matter.lower() == 'sm':
767
+ axs[0].text(10,40,'microscopic models',fontsize='12')
768
+ axs[1].text(10,40,'phenomenological models',fontsize='12')
769
+ fig.legend(loc='upper left',bbox_to_anchor=(0.15,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
770
+ #
771
+ if pname is not None:
772
+ plt.savefig(pname, dpi=200)
773
+ #
774
+ plt.close()
775
+ #
776
+
777
+ def matter_all_cs2_fig( pname, micro_mbs, pheno_models, band_check, matter ):
778
+ """
779
+ Plot nucleonic sound speed in matter.
780
+
781
+ The plot is 1x2 with:
782
+
783
+ [0]: cs2 versus den (micro). [1]: cs2 versus den (pheno).
784
+
785
+ :param pname: name of the figure (*.png)
786
+ :type pname: str.
787
+ :param micro_mbs: many-body (mb) approach considered.
788
+ :type micro_mbs: str.
789
+ :param pheno_models: models to run on.
790
+ :type pheno_models: array of str.
791
+ :param band_check: object instantiated on the reference band.
792
+ :type band_check: object.
793
+ :param matter: can be 'SM' or 'NM'.
794
+ :type matter: str.
795
+ """
796
+ #
797
+ print(f'Plot name: {pname}')
798
+ #
799
+ fig, axs = plt.subplots(1,2)
800
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=0.95, top=0.9, wspace=0.05, hspace=0.3 )
801
+ #
802
+ if matter.lower() == 'nm':
803
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
804
+ axs[0].set_ylabel(r'$c_\text{s,NM}^2/c^2(n_\text{nuc})$', fontsize = '14' )
805
+ axs[0].set_xlim([0, 0.35])
806
+ axs[0].set_ylim([-0.01, 0.4])
807
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
808
+ #axs[1].set_ylabel(r'$e_{sym}(n)$')
809
+ axs[1].set_xlim([0, 0.35])
810
+ axs[1].set_ylim([-0.01, 0.4])
811
+ axs[1].tick_params('y', labelleft=False)
812
+ elif matter.lower() == 'sm':
813
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
814
+ axs[0].set_ylabel(r'$c_\text{s,SM}^2/c^2(n_\text{nuc})$', fontsize = '14' )
815
+ axs[0].set_xlim([0, 0.35])
816
+ axs[0].set_ylim([-0.02, 0.3])
817
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)', fontsize = '14' )
818
+ #axs[1].set_ylabel(r'$e_{sym}(n)$')
819
+ axs[1].set_xlim([0, 0.35])
820
+ axs[1].set_ylim([-0.02, 0.3])
821
+ axs[1].tick_params('y', labelleft=False)
822
+ #
823
+ mb_check = []
824
+ #
825
+ for kmb,mb in enumerate(micro_mbs):
826
+ #
827
+ models, models_lower = nuda.matter.micro_models_mb( mb )
828
+ #
829
+ for model in models:
830
+ #
831
+ if 'fit' in model: continue
832
+ #
833
+ micro = nuda.matter.setupMicro( model = model )
834
+ if nuda.env.verb: micro.print_outputs( )
835
+ #
836
+ check = nuda.matter.setupCheck( eos = micro, band = band_check )
837
+ #
838
+ if check.isInside:
839
+ lstyle = 'solid'
840
+ else:
841
+ lstyle = 'dashed'
842
+ #continue
843
+ #
844
+ if matter.lower() == 'nm':
845
+ #
846
+ if micro.nm_cs2 is not None:
847
+ print('mb:',mb,'model:',model)
848
+ if mb in mb_check:
849
+ if micro.marker:
850
+ if micro.cs2_err:
851
+ axs[0].errorbar( micro.nm_den[:-1], micro.nm_cs2[:-1], yerr=micro.nm_cs2_err[:-1], marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
852
+ else:
853
+ axs[0].plot( micro.nm_den[:-1], micro.nm_cs2[:-1], marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
854
+ else:
855
+ if micro.cs2_err:
856
+ axs[0].errorbar( micro.nm_den[:-1], micro.nm_cs2[:-1], yerr=micro.nm_cs2_err[:-1], marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
857
+ else:
858
+ axs[0].plot( micro.nm_den[:-1], micro.nm_cs2[:-1], marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
859
+ else:
860
+ mb_check.append(mb)
861
+ if micro.marker:
862
+ if micro.cs2_err:
863
+ axs[0].errorbar( micro.nm_den[:-1], micro.nm_cs2[:-1], yerr=micro.nm_cs2_err[:-1], marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
864
+ else:
865
+ axs[0].plot( micro.nm_den[:-1], micro.nm_cs2[:-1], marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, color=nuda.param.col[kmb] )
866
+ else:
867
+ if micro.cs2_err:
868
+ axs[0].errorbar( micro.nm_den[:-1], micro.nm_cs2[:-1], yerr=micro.nm_cs2_err[:-1], marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
869
+ else:
870
+ axs[0].plot( micro.nm_den[:-1], micro.nm_cs2[:-1], marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, color=nuda.param.col[kmb] )
871
+ #
872
+ elif matter.lower() == 'sm':
873
+ #
874
+ if micro.sm_pre is not None:
875
+ print('mb:',mb,'model:',model)
876
+ if mb in mb_check:
877
+ if micro.marker:
878
+ print('with marker 1:',micro.marker)
879
+ if micro.cs2_err:
880
+ print('with error',micro.cs2_err)
881
+ axs[0].errorbar( micro.sm_den[:-1], micro.sm_cs2[:-1], yerr=micro.sm_cs2_err[:-1], marker=micro.marker, markevery=micro.every, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
882
+ else:
883
+ print('with no error',micro.cs2_err)
884
+ axs[0].plot( micro.sm_den[:-1], micro.sm_cs2[:-1], marker=micro.marker, markevery=micro.every, linestyle=lstyle, color=nuda.param.col[kmb] )
885
+ else:
886
+ print('with no marker',micro.marker)
887
+ if micro.cs2_err:
888
+ print('with error',micro.cs2_err)
889
+ axs[0].errorbar( micro.sm_den[:-1], micro.sm_cs2[:-1], yerr=micro.sm_cs2_err[:-1], marker=micro.marker, linestyle=lstyle, errorevery=micro.every, color=nuda.param.col[kmb] )
890
+ else:
891
+ print('with no error',micro.cs2_err)
892
+ axs[0].plot( micro.sm_den[:-1], micro.sm_cs2[:-1], marker=micro.marker, linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
893
+ else:
894
+ mb_check.append(mb)
895
+ if micro.marker:
896
+ print('with marker 2:',micro.marker)
897
+ if micro.cs2_err:
898
+ print('with error',micro.cs2_err)
899
+ axs[0].errorbar( micro.sm_den[:-1], micro.sm_cs2[:-1], yerr=micro.sm_cs2_err[:-1], marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
900
+ else:
901
+ print('with no error',micro.cs2_err)
902
+ axs[0].plot( micro.sm_den[:-1], micro.sm_cs2[:-1], marker=micro.marker, markevery=micro.every, linestyle=lstyle, label=mb, color=nuda.param.col[kmb] )
903
+ else:
904
+ print('with no marker',micro.marker)
905
+ if micro.cs2_err:
906
+ print('with error',micro.cs2_err)
907
+ axs[0].errorbar( micro.sm_den[:-1], micro.sm_cs2[:-1], yerr=micro.sm_cs2_err[:-1], marker=micro.marker, linestyle=lstyle, label=mb, errorevery=micro.every, color=nuda.param.col[kmb] )
908
+ else:
909
+ print('with no error',micro.cs2_err)
910
+ axs[0].plot( micro.sm_den[:-1], micro.sm_cs2[:-1], marker=micro.marker, linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
911
+ # end of matter
912
+ # end of model
913
+ # end of mb
914
+ #
915
+ model_check = []
916
+ #
917
+ for kmodel,model in enumerate(pheno_models):
918
+ #
919
+ params, params_lower = nuda.matter.pheno_params( model = model )
920
+ #
921
+ for param in params:
922
+ #
923
+ pheno = nuda.matter.setupPheno( model = model, param = param )
924
+ if nuda.env.verb: pheno.print_outputs( )
925
+ #
926
+ check = nuda.matter.setupCheck( eos = pheno, band = band_check )
927
+ #
928
+ if check.isInside:
929
+ lstyle = 'solid'
930
+ else:
931
+ lstyle = 'dashed'
932
+ #continue
933
+ #
934
+ if matter.lower() == 'nm':
935
+ #
936
+ if pheno.nm_cs2 is not None:
937
+ print('model:',model,' param:',param)
938
+ if model in model_check:
939
+ axs[1].plot( pheno.nm_den[:-1], pheno.nm_cs2[:-1], linestyle=lstyle, color=nuda.param.col[kmodel] )
940
+ else:
941
+ model_check.append(model)
942
+ axs[1].plot( pheno.nm_den[:-1], pheno.nm_cs2[:-1], linestyle=lstyle, color=nuda.param.col[kmodel], label=model )
943
+ #
944
+ elif matter.lower() == 'sm':
945
+ #
946
+ if pheno.sm_cs2 is not None:
947
+ print('model:',model,' param:',param)
948
+ if model in model_check:
949
+ axs[1].plot( pheno.sm_den[:-1], pheno.sm_cs2[:-1], linestyle=lstyle, color=nuda.param.col[kmodel] )
950
+ else:
951
+ model_check.append(model)
952
+ axs[1].plot( pheno.sm_den[:-1], pheno.sm_cs2[:-1], linestyle=lstyle, color=nuda.param.col[kmodel], label=model )
953
+ # end of param
954
+ # end of model
955
+ #
956
+ #axs[1].legend(loc='upper left',fontsize='8', ncol=2)
957
+ #axs[0,1].legend(loc='upper left',fontsize='xx-small', ncol=2)
958
+ if matter.lower() == 'nm':
959
+ axs[0].text(0.02,0.3,'microscopic models',fontsize='12')
960
+ axs[1].text(0.02,0.3,'phenomenological models',fontsize='12')
961
+ fig.legend(loc='upper left',bbox_to_anchor=(0.1,1.0),columnspacing=2,fontsize='8',ncol=6,frameon=False)
962
+ elif matter.lower() == 'sm':
963
+ axs[0].text(0.02,0.2,'microscopic models',fontsize='12')
964
+ axs[1].text(0.02,0.2,'phenomenological models',fontsize='12')
965
+ fig.legend(loc='upper left',bbox_to_anchor=(0.15,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
966
+ #
967
+ if pname is not None:
968
+ plt.savefig(pname, dpi=200)
969
+ #
970
+ plt.close()
971
+ #