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