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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. nucleardatapy/__init__.py +3 -1
  2. nucleardatapy/astro/setup_gw.py +18 -18
  3. nucleardatapy/astro/setup_mr.py +9 -1
  4. nucleardatapy/astro/setup_mup.py +10 -10
  5. nucleardatapy/corr/setup_EsymDen.py +0 -5
  6. nucleardatapy/corr/setup_EsymLsym.py +50 -17
  7. nucleardatapy/corr/setup_KsatQsat.py +170 -69
  8. nucleardatapy/crust/setup_crust.py +363 -125
  9. nucleardatapy/data/astro/NICER/J0740+6620.dat +1 -0
  10. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-E2A-NM.dat +8 -8
  11. nucleardatapy/data/matter/nep/NEPESkyrme.dat +2 -3
  12. nucleardatapy/data/matter/nep/NEPGSkyrme.dat +7 -0
  13. nucleardatapy/data/matter/nep/NEPSkyrme.dat +4 -2
  14. nucleardatapy/data/matter/nep/NEPxEFT.dat +8 -0
  15. nucleardatapy/data/matter/nep/best67DDSkyrme.dat +28 -0
  16. nucleardatapy/data/matter/nep/best90DDSkyrme.dat +46 -0
  17. nucleardatapy/data/matter/nep/best95DDSkyrme.dat +54 -0
  18. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-NM.dat +996 -996
  19. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-SM.dat +991 -991
  20. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-NM.dat +1002 -0
  21. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-SM.dat +1002 -0
  22. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-NM.dat +102 -0
  23. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-SM.dat +102 -0
  24. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-NM.dat +102 -0
  25. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-SM.dat +102 -0
  26. nucleardatapy/env.py +1 -1
  27. nucleardatapy/eos/__init__.py +4 -3
  28. nucleardatapy/eos/setupCC.py +429 -0
  29. nucleardatapy/eos/setup_am.py +39 -14
  30. nucleardatapy/eos/setup_am_Beq.py +40 -15
  31. nucleardatapy/eos/setup_am_Leq.py +40 -15
  32. nucleardatapy/fig/__init__.py +24 -15
  33. nucleardatapy/fig/astro_setupGW_fig.py +5 -5
  34. nucleardatapy/fig/astro_setupMR_fig.py +12 -10
  35. nucleardatapy/fig/astro_setupMasses_fig.py +4 -4
  36. nucleardatapy/fig/astro_setupMtov_fig.py +4 -4
  37. nucleardatapy/fig/astro_setupMup_fig.py +5 -5
  38. nucleardatapy/fig/corr_setupEsymDen_fig.py +12 -5
  39. nucleardatapy/fig/corr_setupEsymLsym_fig.py +18 -5
  40. nucleardatapy/fig/corr_setupKsatQsat_fig.py +19 -15
  41. nucleardatapy/fig/crust_setupCrust_fig.py +5 -5
  42. nucleardatapy/fig/eos_setupAMBeq_fig.py +523 -66
  43. nucleardatapy/fig/eos_setupAMLeq_fig.py +18 -18
  44. nucleardatapy/fig/eos_setupAM_asy_lep_fig.py +364 -0
  45. nucleardatapy/fig/eos_setupAM_asy_nuc_fig.py +337 -0
  46. nucleardatapy/fig/eos_setupAM_asy_tot_fig.py +343 -0
  47. nucleardatapy/fig/eos_setupAM_fig.py +504 -0
  48. nucleardatapy/fig/eos_setupCC_fig.py +240 -0
  49. nucleardatapy/fig/hnuc_setupChart_fig.py +2 -2
  50. nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +3 -3
  51. nucleardatapy/fig/matter_all_fig.py +954 -0
  52. nucleardatapy/fig/matter_setupCheck_fig.py +103 -0
  53. nucleardatapy/fig/matter_setupFFGLep_fig.py +70 -0
  54. nucleardatapy/fig/matter_setupFFGNuc_fig.py +267 -104
  55. nucleardatapy/fig/matter_setupHIC_fig.py +98 -58
  56. nucleardatapy/fig/matter_setupMicroEsym_fig.py +248 -63
  57. nucleardatapy/fig/matter_setupMicro_LP_fig.py +175 -78
  58. nucleardatapy/fig/matter_setupMicro_band_fig.py +115 -47
  59. nucleardatapy/fig/matter_setupMicro_effmass_fig.py +248 -73
  60. nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +41 -18
  61. nucleardatapy/fig/matter_setupMicro_fig.py +299 -67
  62. nucleardatapy/fig/matter_setupMicro_gap_fig.py +219 -92
  63. nucleardatapy/fig/matter_setupNEPStats_fig.py +96 -0
  64. nucleardatapy/fig/matter_setupPhenoEsym_fig.py +193 -55
  65. nucleardatapy/fig/matter_setupPheno_fig.py +385 -88
  66. nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +59 -48
  67. nucleardatapy/fig/nuc_setupBEExp_fig.py +48 -41
  68. nucleardatapy/fig/nuc_setupBETheo_fig.py +59 -31
  69. nucleardatapy/fig/nuc_setupISGMRExp_fig.py +5 -5
  70. nucleardatapy/fig/nuc_setupRchExp_fig.py +2 -2
  71. nucleardatapy/fig/nuc_setupRchTheo_fig.py +21 -20
  72. nucleardatapy/fig/nuc_setupRnpExp_fig.py +77 -109
  73. nucleardatapy/fig/nuc_setupRnpTheo_fig.py +92 -93
  74. nucleardatapy/hello.py +6 -0
  75. nucleardatapy/hnuc/setup_re1L_exp.py +6 -6
  76. nucleardatapy/hnuc/setup_re1Xi_exp.py +5 -5
  77. nucleardatapy/hnuc/setup_re2L_exp.py +6 -6
  78. nucleardatapy/matter/__init__.py +14 -14
  79. nucleardatapy/matter/setup_check.py +6 -6
  80. nucleardatapy/matter/setup_ffg.py +66 -39
  81. nucleardatapy/matter/setup_hic.py +91 -74
  82. nucleardatapy/matter/setup_micro.py +1623 -1009
  83. nucleardatapy/matter/setup_micro_band.py +6 -6
  84. nucleardatapy/matter/setup_micro_esym.py +11 -13
  85. nucleardatapy/matter/setup_micro_gap.py +24 -17
  86. nucleardatapy/matter/setup_micro_lp.py +2 -2
  87. nucleardatapy/matter/setup_nep.py +175 -92
  88. nucleardatapy/matter/{setup_nep_model_dist.py → setup_nep_stat_model.py} +13 -8
  89. nucleardatapy/matter/{setup_nep_dist.py → setup_nep_stat_models.py} +12 -8
  90. nucleardatapy/matter/setup_pheno.py +121 -45
  91. nucleardatapy/matter/setup_pheno_esym.py +8 -13
  92. nucleardatapy/nuc/setup_be_exp.py +304 -292
  93. nucleardatapy/nuc/setup_be_theo.py +273 -97
  94. nucleardatapy/nuc/setup_isgmr_exp.py +4 -4
  95. nucleardatapy/nuc/setup_rnp_exp.py +1 -0
  96. nucleardatapy/nuc/setup_rnp_theo.py +2 -1
  97. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.0.dist-info}/METADATA +48 -16
  98. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.0.dist-info}/RECORD +127 -120
  99. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.0.dist-info}/WHEEL +1 -1
  100. tests/test_corr_setupKsatQsat.py +3 -1
  101. tests/test_matter_setupMicro.py +37 -10
  102. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-NM.dat +0 -1002
  103. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-SM.dat +0 -1002
  104. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-NM.dat +0 -1002
  105. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-SM.dat +0 -1002
  106. nucleardatapy/fig/eos_setupAM_e_asy_lep_fig.py +0 -125
  107. nucleardatapy/fig/eos_setupAM_e_asy_nuc_fig.py +0 -115
  108. nucleardatapy/fig/eos_setupAM_e_asy_tot_fig.py +0 -117
  109. nucleardatapy/fig/eos_setupAM_e_fig.py +0 -173
  110. nucleardatapy/fig/matter_ENM_fig.py +0 -128
  111. nucleardatapy/fig/matter_ESM_fig.py +0 -140
  112. nucleardatapy/fig/matter_Esym_fig.py +0 -134
  113. nucleardatapy/fig/matter_cs2_fig.py +0 -83
  114. nucleardatapy/fig/matter_preNM_fig.py +0 -146
  115. nucleardatapy/fig/matter_preSM_fig.py +0 -144
  116. nucleardatapy/fig/matter_setupNEPModelDist_fig.py +0 -68
  117. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-NM-AV18.dat → 2006-EBHF-NM-AV18.dat} +0 -0
  118. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-SM-AV18.dat → 2006-EBHF-SM-AV18.dat} +0 -0
  119. /nucleardatapy/data/crust/{2022-crustGMRS-BSK14.dat → 2022-GMRS-BSK14.dat} +0 -0
  120. /nucleardatapy/data/crust/{2022-crustGMRS-BSK16.dat → 2022-GMRS-BSK16.dat} +0 -0
  121. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL59.dat → 2022-GMRS-DHSL59.dat} +0 -0
  122. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL69.dat → 2022-GMRS-DHSL69.dat} +0 -0
  123. /nucleardatapy/data/crust/{2022-crustGMRS-F0.dat → 2022-GMRS-F0.dat} +0 -0
  124. /nucleardatapy/data/crust/{2022-crustGMRS-H1.dat → 2022-GMRS-H1.dat} +0 -0
  125. /nucleardatapy/data/crust/{2022-crustGMRS-H2.dat → 2022-GMRS-H2.dat} +0 -0
  126. /nucleardatapy/data/crust/{2022-crustGMRS-H3.dat → 2022-GMRS-H3.dat} +0 -0
  127. /nucleardatapy/data/crust/{2022-crustGMRS-H4.dat → 2022-GMRS-H4.dat} +0 -0
  128. /nucleardatapy/data/crust/{2022-crustGMRS-H5.dat → 2022-GMRS-H5.dat} +0 -0
  129. /nucleardatapy/data/crust/{2022-crustGMRS-H7.dat → 2022-GMRS-H7.dat} +0 -0
  130. /nucleardatapy/data/crust/{2022-crustGMRS-LNS5.dat → 2022-GMRS-LNS5.dat} +0 -0
  131. /nucleardatapy/data/crust/{2022-crustGMRS-RATP.dat → 2022-GMRS-RATP.dat} +0 -0
  132. /nucleardatapy/data/crust/{2022-crustGMRS-SGII.dat → 2022-GMRS-SGII.dat} +0 -0
  133. /nucleardatapy/data/crust/{2022-crustGMRS-SLY5.dat → 2022-GMRS-SLY5.dat} +0 -0
  134. /nucleardatapy/data/matter/micro/{2013-QMC-NM.dat → 2013-MBPT-NM.dat} +0 -0
  135. /nucleardatapy/data/{NeutronSkin/ddrhNskin-208Pb.dat → rnp/ddrhrnp-208Pb.dat} +0 -0
  136. /nucleardatapy/data/{NeutronSkin/ddrhNskin-48Ca.dat → rnp/ddrhrnp-48Ca.dat} +0 -0
  137. /nucleardatapy/data/{NeutronSkin/nlrhNskin-208Pb.dat → rnp/nlrhrnp-208Pb.dat} +0 -0
  138. /nucleardatapy/data/{NeutronSkin/nlrhNskin-48Ca.dat → rnp/nlrhrnp-48Ca.dat} +0 -0
  139. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-208Pb.dat → rnp/skyrmernp-208Pb.dat} +0 -0
  140. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-48Ca.dat → rnp/skyrmernp-48Ca.dat} +0 -0
  141. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.0.dist-info}/licenses/LICENSE +0 -0
  142. {nucleardatapy-0.2.1.dist-info → nucleardatapy-1.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,337 @@
1
+ import numpy as np
2
+ import matplotlib.pyplot as plt
3
+
4
+ import nucleardatapy as nuda
5
+
6
+ def eos_setupAM_e2a_asy_nuc_fig( pname, micro_mbs, pheno_models, asy, band ):
7
+ """
8
+ Plot nuclear chart (N versus Z).\
9
+ The plot is 1x2 with:\
10
+ [0]: nuclear chart.
11
+
12
+ :param pname: name of the figure (*.png)
13
+ :type pname: str.
14
+ :param table: table.
15
+ :type table: str.
16
+ :param version: version of table to run on.
17
+ :type version: str.
18
+ :param theo_tables: object instantiated on the reference band.
19
+ :type theo_tables: object.
20
+
21
+ """
22
+ #
23
+ print(f'Plot name: {pname}')
24
+ #
25
+ fig, axs = plt.subplots(1,2)
26
+ #fig.tight_layout() # Or equivalently, "plt.tight_layout()"
27
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=0.95, top=0.90, wspace=0.05, hspace=0.3 )
28
+ #
29
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)',fontsize='14')
30
+ axs[0].set_ylabel(r'$e_\text{nuc}^\text{int}$ (MeV)',fontsize='14')
31
+ axs[0].set_xlim([0, 0.33])
32
+ axs[0].set_ylim([-10, 35])
33
+ #
34
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)',fontsize='14')
35
+ #axs[1].set_ylabel(r'$E/A$')
36
+ axs[1].set_xlim([0, 0.33])
37
+ axs[1].set_ylim([-10, 35])
38
+ axs[1].tick_params('y', labelleft=False)
39
+ #
40
+ mb_check = []
41
+ #
42
+ for kmb,mb in enumerate(micro_mbs):
43
+ #
44
+ print('mb:',mb,kmb)
45
+ #
46
+ models, models_lower = nuda.matter.micro_esym_models_mb( mb )
47
+ #
48
+ print('models:',models)
49
+ #
50
+ if mb == 'VAR':
51
+ models.remove('1998-VAR-AM-APR-fit')
52
+ models_lower.remove('1998-var-am-apr-fit')
53
+ #
54
+ for model in models:
55
+ #
56
+ micro = nuda.eos.setupAM( model = model, kind = 'micro', asy = asy )
57
+ if nuda.env.verb_output: micro.print_outputs( )
58
+ #
59
+ check = nuda.matter.setupCheck( eos = micro, band = band )
60
+ #
61
+ if check.isInside:
62
+ lstyle = 'solid'
63
+ else:
64
+ lstyle = 'dashed'
65
+ #continue
66
+ #
67
+ if micro.e2a_int_nuc is not None:
68
+ if mb in mb_check:
69
+ axs[0].plot( micro.den, micro.e2a_int_nuc, marker='o', linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
70
+ else:
71
+ mb_check.append(mb)
72
+ axs[0].plot( micro.den, micro.e2a_int_nuc, marker='o', linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
73
+ # end of model
74
+ # end of mb
75
+ axs[0].text(0.02,-8,'microscopic models',fontsize='10')
76
+ axs[0].text(0.02,-9.5,r'for $\delta=$'+str(asy),fontsize='10')
77
+ #
78
+ model_check = []
79
+ #
80
+ for kmodel,model in enumerate(pheno_models):
81
+ #
82
+ params, params_lower = nuda.matter.pheno_esym_params( model = model )
83
+ #
84
+ for param in params:
85
+ #
86
+ pheno = nuda.eos.setupAM( model = model, param = param, kind = 'pheno', asy = asy )
87
+ if nuda.env.verb_output: pheno.print_outputs( )
88
+ #
89
+ check = nuda.matter.setupCheck( eos = pheno, band = band )
90
+ #
91
+ if check.isInside:
92
+ lstyle = 'solid'
93
+ else:
94
+ lstyle = 'dashed'
95
+ #continue
96
+ #
97
+ if pheno.e2a_int_nuc is not None:
98
+ print('model:',model,' param:',param)
99
+ if model in model_check:
100
+ axs[1].plot( pheno.den, pheno.e2a_int_nuc, linestyle=lstyle, markevery=pheno.every, color=nuda.param.col[kmodel] )
101
+ else:
102
+ model_check.append(model)
103
+ axs[1].plot( pheno.den, pheno.e2a_int_nuc, linestyle=lstyle, label=model, markevery=pheno.every, color=nuda.param.col[kmodel] )
104
+ # end of param
105
+ # end of model
106
+ #
107
+ axs[1].text(0.02,-8,'phenomenological models',fontsize='10')
108
+ axs[1].text(0.02,-9.5,r'for $\delta=$'+str(asy),fontsize='10')
109
+ #
110
+ fig.legend(loc='upper left',bbox_to_anchor=(0.15,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
111
+ #
112
+ if pname is not None:
113
+ plt.savefig(pname, dpi=200)
114
+ plt.close()
115
+ #
116
+
117
+ def eos_setupAM_pre_asy_nuc_fig( pname, micro_mbs, pheno_models, asy, band ):
118
+ """
119
+ Plot nuclear chart (N versus Z).\
120
+ The plot is 1x2 with:\
121
+ [0]: nuclear chart.
122
+
123
+ :param pname: name of the figure (*.png)
124
+ :type pname: str.
125
+ :param table: table.
126
+ :type table: str.
127
+ :param version: version of table to run on.
128
+ :type version: str.
129
+ :param theo_tables: object instantiated on the reference band.
130
+ :type theo_tables: object.
131
+
132
+ """
133
+ #
134
+ print(f'Plot name: {pname}')
135
+ #
136
+ fig, axs = plt.subplots(1,2)
137
+ #fig.tight_layout() # Or equivalently, "plt.tight_layout()"
138
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=0.95, top=0.90, wspace=0.05, hspace=0.3 )
139
+ #
140
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)',fontsize='14')
141
+ axs[0].set_ylabel(r'$p_\text{nuc}$ (MeV fm$^{-3}$)',fontsize='14')
142
+ axs[0].set_xlim([0, 0.33])
143
+ axs[0].set_ylim([-10, 35])
144
+ #
145
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)',fontsize='14')
146
+ #axs[1].set_ylabel(r'$E/A$')
147
+ axs[1].set_xlim([0, 0.33])
148
+ axs[1].set_ylim([-10, 35])
149
+ axs[1].tick_params('y', labelleft=False)
150
+ #
151
+ mb_check = []
152
+ #
153
+ for kmb,mb in enumerate(micro_mbs):
154
+ #
155
+ print('mb:',mb,kmb)
156
+ #
157
+ models, models_lower = nuda.matter.micro_esym_models_mb( mb )
158
+ #
159
+ print('models:',models)
160
+ #
161
+ if mb == 'VAR':
162
+ models.remove('1998-VAR-AM-APR-fit')
163
+ models_lower.remove('1998-var-am-apr-fit')
164
+ #
165
+ for model in models:
166
+ #
167
+ micro = nuda.eos.setupAM( model = model, kind = 'micro', asy = asy )
168
+ if nuda.env.verb_output: micro.print_outputs( )
169
+ #
170
+ check = nuda.matter.setupCheck( eos = micro, band = band )
171
+ #
172
+ if check.isInside:
173
+ lstyle = 'solid'
174
+ else:
175
+ lstyle = 'dashed'
176
+ #continue
177
+ #
178
+ if micro.pre_nuc is not None:
179
+ if mb in mb_check:
180
+ axs[0].plot( micro.den, micro.pre_nuc, marker='o', linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
181
+ else:
182
+ mb_check.append(mb)
183
+ axs[0].plot( micro.den, micro.pre_nuc, marker='o', linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
184
+ # end of model
185
+ # end of mb
186
+ axs[0].text(0.02,-8,'microscopic models',fontsize='10')
187
+ axs[0].text(0.02,-9.5,r'for $\delta=$'+str(asy),fontsize='10')
188
+ #
189
+ model_check = []
190
+ #
191
+ for kmodel,model in enumerate(pheno_models):
192
+ #
193
+ params, params_lower = nuda.matter.pheno_esym_params( model = model )
194
+ #
195
+ for param in params:
196
+ #
197
+ pheno = nuda.eos.setupAM( model = model, param = param, kind = 'pheno', asy = asy )
198
+ if nuda.env.verb_output: pheno.print_outputs( )
199
+ #
200
+ check = nuda.matter.setupCheck( eos = pheno, band = band )
201
+ #
202
+ if check.isInside:
203
+ lstyle = 'solid'
204
+ else:
205
+ lstyle = 'dashed'
206
+ #continue
207
+ #
208
+ if pheno.pre_nuc is not None:
209
+ print('model:',model,' param:',param)
210
+ if model in model_check:
211
+ axs[1].plot( pheno.den, pheno.pre_nuc, linestyle=lstyle, markevery=pheno.every, color=nuda.param.col[kmodel] )
212
+ else:
213
+ model_check.append(model)
214
+ axs[1].plot( pheno.den, pheno.pre_nuc, linestyle=lstyle, label=model, markevery=pheno.every, color=nuda.param.col[kmodel] )
215
+ # end of param
216
+ # end of model
217
+ #
218
+ axs[1].text(0.02,-8,'phenomenological models',fontsize='10')
219
+ axs[1].text(0.02,-9.5,r'for $\delta=$'+str(asy),fontsize='10')
220
+ #
221
+ fig.legend(loc='upper left',bbox_to_anchor=(0.15,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
222
+ #
223
+ if pname is not None:
224
+ plt.savefig(pname, dpi=200)
225
+ plt.close()
226
+ #
227
+
228
+ def eos_setupAM_cs2_asy_nuc_fig( pname, micro_mbs, pheno_models, asy, band ):
229
+ """
230
+ Plot nuclear chart (N versus Z).\
231
+ The plot is 1x2 with:\
232
+ [0]: nuclear chart.
233
+
234
+ :param pname: name of the figure (*.png)
235
+ :type pname: str.
236
+ :param table: table.
237
+ :type table: str.
238
+ :param version: version of table to run on.
239
+ :type version: str.
240
+ :param theo_tables: object instantiated on the reference band.
241
+ :type theo_tables: object.
242
+
243
+ """
244
+ #
245
+ print(f'Plot name: {pname}')
246
+ #
247
+ fig, axs = plt.subplots(1,2)
248
+ #fig.tight_layout() # Or equivalently, "plt.tight_layout()"
249
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=0.95, top=0.90, wspace=0.05, hspace=0.3 )
250
+ #
251
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)',fontsize='14')
252
+ axs[0].set_ylabel(r'$c_\text{s,nuc}^2/c^2$',fontsize='14')
253
+ axs[0].set_xlim([0, 0.33])
254
+ axs[0].set_ylim([-0.05, 0.25])
255
+ #
256
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)',fontsize='14')
257
+ #axs[1].set_ylabel(r'$E/A$')
258
+ axs[1].set_xlim([0, 0.33])
259
+ axs[1].set_ylim([-0.05, 0.25])
260
+ axs[1].tick_params('y', labelleft=False)
261
+ #
262
+ mb_check = []
263
+ #
264
+ for kmb,mb in enumerate(micro_mbs):
265
+ #
266
+ print('mb:',mb,kmb)
267
+ #
268
+ models, models_lower = nuda.matter.micro_esym_models_mb( mb )
269
+ #
270
+ print('models:',models)
271
+ #
272
+ if mb == 'VAR':
273
+ models.remove('1998-VAR-AM-APR-fit')
274
+ models_lower.remove('1998-var-am-apr-fit')
275
+ #
276
+ for model in models:
277
+ #
278
+ micro = nuda.eos.setupAM( model = model, kind = 'micro', asy = asy )
279
+ if nuda.env.verb_output: micro.print_outputs( )
280
+ #
281
+ check = nuda.matter.setupCheck( eos = micro, band = band )
282
+ #
283
+ if check.isInside:
284
+ lstyle = 'solid'
285
+ else:
286
+ lstyle = 'dashed'
287
+ #continue
288
+ #
289
+ if micro.cs2_nuc is not None:
290
+ if mb in mb_check:
291
+ axs[0].plot( micro.den, micro.cs2_nuc, marker='o', linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
292
+ else:
293
+ mb_check.append(mb)
294
+ axs[0].plot( micro.den, micro.cs2_nuc, marker='o', linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
295
+ # end of model
296
+ # end of mb
297
+ axs[0].text(0.02,-8,'microscopic models',fontsize='10')
298
+ axs[0].text(0.02,-9.5,r'for $\delta=$'+str(asy),fontsize='10')
299
+ #
300
+ model_check = []
301
+ #
302
+ for kmodel,model in enumerate(pheno_models):
303
+ #
304
+ params, params_lower = nuda.matter.pheno_esym_params( model = model )
305
+ #
306
+ for param in params:
307
+ #
308
+ pheno = nuda.eos.setupAM( model = model, param = param, kind = 'pheno', asy = asy )
309
+ if nuda.env.verb_output: pheno.print_outputs( )
310
+ #
311
+ check = nuda.matter.setupCheck( eos = pheno, band = band )
312
+ #
313
+ if check.isInside:
314
+ lstyle = 'solid'
315
+ else:
316
+ lstyle = 'dashed'
317
+ #continue
318
+ #
319
+ if pheno.cs2_nuc is not None:
320
+ print('model:',model,' param:',param)
321
+ if model in model_check:
322
+ axs[1].plot( pheno.den, pheno.cs2_nuc, linestyle=lstyle, markevery=pheno.every, color=nuda.param.col[kmodel] )
323
+ else:
324
+ model_check.append(model)
325
+ axs[1].plot( pheno.den, pheno.cs2_nuc, linestyle=lstyle, label=model, markevery=pheno.every, color=nuda.param.col[kmodel] )
326
+ # end of param
327
+ # end of model
328
+ #
329
+ axs[1].text(0.02,-8,'phenomenological models',fontsize='10')
330
+ axs[1].text(0.02,-9.5,r'for $\delta=$'+str(asy),fontsize='10')
331
+ #
332
+ fig.legend(loc='upper left',bbox_to_anchor=(0.15,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
333
+ #
334
+ if pname is not None:
335
+ plt.savefig(pname, dpi=200)
336
+ plt.close()
337
+ #
@@ -0,0 +1,343 @@
1
+ import numpy as np
2
+ import matplotlib.pyplot as plt
3
+
4
+ import nucleardatapy as nuda
5
+
6
+ def eos_setupAM_e2a_asy_tot_fig( pname, micro_mbs, pheno_models, asy, band ):
7
+ """
8
+ Plot nuclear chart (N versus Z).\
9
+ The plot is 1x2 with:\
10
+ [0]: nuclear chart.
11
+
12
+ :param pname: name of the figure (*.png)
13
+ :type pname: str.
14
+ :param table: table.
15
+ :type table: str.
16
+ :param version: version of table to run on.
17
+ :type version: str.
18
+ :param theo_tables: object instantiated on the reference band.
19
+ :type theo_tables: 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.90, wspace=0.05, hspace=0.3 )
27
+ #
28
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)',fontsize='14')
29
+ axs[0].set_ylabel(r'$e_\text{tot}^\text{int}$ (MeV)',fontsize='14')
30
+ axs[0].set_xlim([0, 0.33])
31
+ axs[0].set_ylim([-10, 35])
32
+ #
33
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)',fontsize='14')
34
+ #axs[1].set_ylabel(r'$E/A$')
35
+ axs[1].set_xlim([0, 0.33])
36
+ axs[1].set_ylim([-10, 35])
37
+ axs[1].tick_params('y', labelleft=False)
38
+ #
39
+ mb_check = []
40
+ #
41
+ for kmb,mb in enumerate(micro_mbs):
42
+ #
43
+ print('mb:',mb,kmb)
44
+ #
45
+ models, models_lower = nuda.matter.micro_esym_models_mb( mb )
46
+ #
47
+ print('models:',models)
48
+ #
49
+ if mb == 'VAR':
50
+ models.remove('1998-VAR-AM-APR-fit')
51
+ models_lower.remove('1998-var-am-apr-fit')
52
+ #
53
+ for model in models:
54
+ #
55
+ micro = nuda.eos.setupAM( model = model, kind = 'micro', asy = asy )
56
+ if nuda.env.verb_output: micro.print_outputs( )
57
+ #
58
+ check = nuda.matter.setupCheck( eos = micro, band = band )
59
+ #
60
+ if check.isInside:
61
+ lstyle = 'solid'
62
+ else:
63
+ lstyle = 'dashed'
64
+ #continue
65
+ #
66
+ if micro.e2a_int_tot is not None:
67
+ print('model:',model)
68
+ if mb in mb_check:
69
+ axs[0].plot( micro.den, micro.e2a_int_tot, marker='o', linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
70
+ else:
71
+ mb_check.append(mb)
72
+ axs[0].plot( micro.den, micro.e2a_int_tot, marker='o', linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
73
+ # end of model
74
+ # end of mb
75
+ #
76
+ axs[0].text(0.02,-8,'microscopic models',fontsize='10')
77
+ axs[0].text(0.02,-9.5,r'for $\delta=$'+str(asy),fontsize='10')
78
+ #
79
+ model_check = []
80
+ #
81
+ for kmodel,model in enumerate(pheno_models):
82
+ #
83
+ params, params_lower = nuda.matter.pheno_esym_params( model = model )
84
+ #
85
+ for param in params:
86
+ #
87
+ pheno = nuda.eos.setupAM( model = model, param = param, kind = 'pheno', asy = asy )
88
+ if nuda.env.verb_output: pheno.print_outputs( )
89
+ #
90
+ check = nuda.matter.setupCheck( eos = pheno, band = band )
91
+ #
92
+ if check.isInside:
93
+ lstyle = 'solid'
94
+ else:
95
+ lstyle = 'dashed'
96
+ #continue
97
+ #
98
+ if pheno.e2a_int_tot is not None:
99
+ print('model:',model,' param:',param)
100
+ #beta.label=None
101
+ if model in model_check:
102
+ axs[1].plot( pheno.den, pheno.e2a_int_tot, linestyle=lstyle, markevery=pheno.every, color=nuda.param.col[kmodel] )
103
+ else:
104
+ model_check.append(model)
105
+ axs[1].plot( pheno.den, pheno.e2a_int_tot, linestyle=lstyle, label=model, markevery=pheno.every, color=nuda.param.col[kmodel] )
106
+ # end of param
107
+ # end of model
108
+ #
109
+ axs[1].text(0.02,-8,'phenomenological models',fontsize='10')
110
+ axs[1].text(0.02,-9.5,r'for $\delta=$'+str(asy),fontsize='10')
111
+ #
112
+ fig.legend(loc='upper left',bbox_to_anchor=(0.15,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
113
+ #
114
+ if pname is not None:
115
+ plt.savefig(pname, dpi=200)
116
+ plt.close()
117
+ #
118
+
119
+ def eos_setupAM_pre_asy_tot_fig( pname, micro_mbs, pheno_models, asy, band ):
120
+ """
121
+ Plot nuclear chart (N versus Z).\
122
+ The plot is 1x2 with:\
123
+ [0]: nuclear chart.
124
+
125
+ :param pname: name of the figure (*.png)
126
+ :type pname: str.
127
+ :param table: table.
128
+ :type table: str.
129
+ :param version: version of table to run on.
130
+ :type version: str.
131
+ :param theo_tables: object instantiated on the reference band.
132
+ :type theo_tables: object.
133
+
134
+ """
135
+ #
136
+ print(f'Plot name: {pname}')
137
+ #
138
+ fig, axs = plt.subplots(1,2)
139
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=0.95, top=0.90, wspace=0.05, hspace=0.3 )
140
+ #
141
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)',fontsize='14')
142
+ axs[0].set_ylabel(r'$p_\text{tot}$ (MeV fm$^{-3}$)',fontsize='14')
143
+ axs[0].set_xlim([0, 0.33])
144
+ axs[0].set_ylim([-10, 35])
145
+ #
146
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)',fontsize='14')
147
+ #axs[1].set_ylabel(r'$E/A$')
148
+ axs[1].set_xlim([0, 0.33])
149
+ axs[1].set_ylim([-10, 35])
150
+ axs[1].tick_params('y', labelleft=False)
151
+ #
152
+ mb_check = []
153
+ #
154
+ for kmb,mb in enumerate(micro_mbs):
155
+ #
156
+ print('mb:',mb,kmb)
157
+ #
158
+ models, models_lower = nuda.matter.micro_esym_models_mb( mb )
159
+ #
160
+ print('models:',models)
161
+ #
162
+ if mb == 'VAR':
163
+ models.remove('1998-VAR-AM-APR-fit')
164
+ models_lower.remove('1998-var-am-apr-fit')
165
+ #
166
+ for model in models:
167
+ #
168
+ micro = nuda.eos.setupAM( model = model, kind = 'micro', asy = asy )
169
+ if nuda.env.verb_output: micro.print_outputs( )
170
+ #
171
+ check = nuda.matter.setupCheck( eos = micro, band = band )
172
+ #
173
+ if check.isInside:
174
+ lstyle = 'solid'
175
+ else:
176
+ lstyle = 'dashed'
177
+ #continue
178
+ #
179
+ if micro.pre_tot is not None:
180
+ print('model:',model)
181
+ if mb in mb_check:
182
+ axs[0].plot( micro.den, micro.pre_tot, marker='o', linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
183
+ else:
184
+ mb_check.append(mb)
185
+ axs[0].plot( micro.den, micro.pre_tot, marker='o', linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
186
+ # end of model
187
+ # end of mb
188
+ #
189
+ axs[0].text(0.02,-8,'microscopic models',fontsize='10')
190
+ axs[0].text(0.02,-9.5,r'for $\delta=$'+str(asy),fontsize='10')
191
+ #
192
+ model_check = []
193
+ #
194
+ for kmodel,model in enumerate(pheno_models):
195
+ #
196
+ params, params_lower = nuda.matter.pheno_esym_params( model = model )
197
+ #
198
+ for param in params:
199
+ #
200
+ pheno = nuda.eos.setupAM( model = model, param = param, kind = 'pheno', asy = asy )
201
+ if nuda.env.verb_output: pheno.print_outputs( )
202
+ #
203
+ check = nuda.matter.setupCheck( eos = pheno, band = band )
204
+ #
205
+ if check.isInside:
206
+ lstyle = 'solid'
207
+ else:
208
+ lstyle = 'dashed'
209
+ #continue
210
+ #
211
+ if pheno.pre_tot is not None:
212
+ print('model:',model,' param:',param)
213
+ #beta.label=None
214
+ if model in model_check:
215
+ axs[1].plot( pheno.den, pheno.pre_tot, linestyle=lstyle, markevery=pheno.every, color=nuda.param.col[kmodel] )
216
+ else:
217
+ model_check.append(model)
218
+ axs[1].plot( pheno.den, pheno.pre_tot, linestyle=lstyle, label=model, markevery=pheno.every, color=nuda.param.col[kmodel] )
219
+ # end of param
220
+ # end of model
221
+ #
222
+ axs[1].text(0.02,-8,'phenomenological models',fontsize='10')
223
+ axs[1].text(0.02,-9.5,r'for $\delta=$'+str(asy),fontsize='10')
224
+ #
225
+ fig.legend(loc='upper left',bbox_to_anchor=(0.15,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
226
+ #
227
+ if pname is not None:
228
+ plt.savefig(pname, dpi=200)
229
+ plt.close()
230
+ #
231
+
232
+ def eos_setupAM_cs2_asy_tot_fig( pname, micro_mbs, pheno_models, asy, band ):
233
+ """
234
+ Plot nuclear chart (N versus Z).\
235
+ The plot is 1x2 with:\
236
+ [0]: nuclear chart.
237
+
238
+ :param pname: name of the figure (*.png)
239
+ :type pname: str.
240
+ :param table: table.
241
+ :type table: str.
242
+ :param version: version of table to run on.
243
+ :type version: str.
244
+ :param theo_tables: object instantiated on the reference band.
245
+ :type theo_tables: object.
246
+
247
+ """
248
+ #
249
+ print(f'Plot name: {pname}')
250
+ #
251
+ fig, axs = plt.subplots(1,2)
252
+ fig.subplots_adjust(left=0.10, bottom=0.12, right=0.95, top=0.90, wspace=0.05, hspace=0.3 )
253
+ #
254
+ axs[0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)',fontsize='14')
255
+ axs[0].set_ylabel(r'$c_\text{s,tot}^2/c^2$',fontsize='14')
256
+ axs[0].set_xlim([0, 0.33])
257
+ axs[0].set_ylim([-0.05, 0.25])
258
+ #
259
+ axs[1].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)',fontsize='14')
260
+ #axs[1].set_ylabel(r'$E/A$')
261
+ axs[1].set_xlim([0, 0.33])
262
+ axs[1].set_ylim([-0.05, 0.25])
263
+ axs[1].tick_params('y', labelleft=False)
264
+ #
265
+ mb_check = []
266
+ #
267
+ for kmb,mb in enumerate(micro_mbs):
268
+ #
269
+ print('mb:',mb,kmb)
270
+ #
271
+ models, models_lower = nuda.matter.micro_esym_models_mb( mb )
272
+ #
273
+ print('models:',models)
274
+ #
275
+ if mb == 'VAR':
276
+ models.remove('1998-VAR-AM-APR-fit')
277
+ models_lower.remove('1998-var-am-apr-fit')
278
+ #
279
+ for model in models:
280
+ #
281
+ micro = nuda.eos.setupAM( model = model, kind = 'micro', asy = asy )
282
+ if nuda.env.verb_output: micro.print_outputs( )
283
+ #
284
+ check = nuda.matter.setupCheck( eos = micro, band = band )
285
+ #
286
+ if check.isInside:
287
+ lstyle = 'solid'
288
+ else:
289
+ lstyle = 'dashed'
290
+ #continue
291
+ #
292
+ if micro.cs2_tot is not None:
293
+ print('model:',model)
294
+ if mb in mb_check:
295
+ axs[0].plot( micro.den, micro.cs2_tot, marker='o', linestyle=lstyle, markevery=micro.every, color=nuda.param.col[kmb] )
296
+ else:
297
+ mb_check.append(mb)
298
+ axs[0].plot( micro.den, micro.cs2_tot, marker='o', linestyle=lstyle, label=mb, markevery=micro.every, color=nuda.param.col[kmb] )
299
+ # end of model
300
+ # end of mb
301
+ #
302
+ axs[0].text(0.02,-8,'microscopic models',fontsize='10')
303
+ axs[0].text(0.02,-9.5,r'for $\delta=$'+str(asy),fontsize='10')
304
+ #
305
+ model_check = []
306
+ #
307
+ for kmodel,model in enumerate(pheno_models):
308
+ #
309
+ params, params_lower = nuda.matter.pheno_esym_params( model = model )
310
+ #
311
+ for param in params:
312
+ #
313
+ pheno = nuda.eos.setupAM( model = model, param = param, kind = 'pheno', asy = asy )
314
+ if nuda.env.verb_output: pheno.print_outputs( )
315
+ #
316
+ check = nuda.matter.setupCheck( eos = pheno, band = band )
317
+ #
318
+ if check.isInside:
319
+ lstyle = 'solid'
320
+ else:
321
+ lstyle = 'dashed'
322
+ #continue
323
+ #
324
+ if pheno.cs2_tot is not None:
325
+ print('model:',model,' param:',param)
326
+ #beta.label=None
327
+ if model in model_check:
328
+ axs[1].plot( pheno.den, pheno.cs2_tot, linestyle=lstyle, markevery=pheno.every, color=nuda.param.col[kmodel] )
329
+ else:
330
+ model_check.append(model)
331
+ axs[1].plot( pheno.den, pheno.cs2_tot, linestyle=lstyle, label=model, markevery=pheno.every, color=nuda.param.col[kmodel] )
332
+ # end of param
333
+ # end of model
334
+ #
335
+ axs[1].text(0.02,-8,'phenomenological models',fontsize='10')
336
+ axs[1].text(0.02,-9.5,r'for $\delta=$'+str(asy),fontsize='10')
337
+ #
338
+ fig.legend(loc='upper left',bbox_to_anchor=(0.15,1.0),columnspacing=2,fontsize='8',ncol=5,frameon=False)
339
+ #
340
+ if pname is not None:
341
+ plt.savefig(pname, dpi=200)
342
+ plt.close()
343
+ #