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
@@ -3,159 +3,296 @@ import matplotlib.pyplot as plt
3
3
 
4
4
  import nucleardatapy as nuda
5
5
 
6
- def matter_setupMicro_gap_1s0_fig( pname, models, matter = 'NM' ):
6
+ def matter_setupMicro_gap_1s0_fig(pname, models, matter="NM"):
7
7
  """
8
- Plot the correlation between Esym and Lsym.\
9
- The plot is 1x1 with:\
10
- [0]: Esym - Lsym correlation plot
8
+ Plot the 1S0 pairing gap in `matter`.
9
+
10
+ The plot is 2x2 with:
11
+
12
+ [0,0]: gap versus den. [0,1]: gap versus kfn.
13
+
14
+ [1,0]: gap/EF versus den. [1,1]: gap/EF versus kfn.
11
15
 
12
16
  :param pname: name of the figure (*.png)
13
17
  :type pname: str.
14
- :param constraints: list of constraints to run on.
15
- :type constraints: array of str.
16
-
18
+ :param models: models to run on.
19
+ :type models: array of str.
20
+ :param matter: can be 'SM' or 'NM' (default).
21
+ :type matter: str.
17
22
  """
18
23
  #
19
- print(f'Plot name: {pname}')
24
+ print(f"Plot name: {pname}")
20
25
  #
21
- print('models:',models)
26
+ print("models:", models)
22
27
  #
23
- fig, axs = plt.subplots(2,2)
24
- fig.tight_layout() # Or equivalently, "plt.tight_layout()"
25
- fig.subplots_adjust(left=0.12, bottom=0.12, right=None, top=0.8, wspace=0.05, hspace=0.05 )
28
+ fig, axs = plt.subplots(2, 2)
29
+ fig.subplots_adjust( left=0.12, bottom=0.12, right=0.95, top=0.85, wspace=0.05, hspace=0.05 )
26
30
  #
27
- axs[0,0].set_ylabel(r'$\Delta_{1S0}$ (MeV)')
28
- axs[0,0].set_xlim([0, 0.048])
31
+ axs[0,0].set_ylabel(r"$\Delta_{1S0}$ (MeV)", fontsize="14")
32
+ axs[0,0].set_xlim([0, 0.09])
29
33
  axs[0,0].set_ylim([0, 3.0])
30
- axs[0,0].tick_params('x', labelbottom=False)
34
+ axs[0,0].tick_params("x", labelbottom=False)
31
35
  #
32
36
  axs[0,1].set_xlim([0, 1.6])
33
37
  axs[0,1].set_ylim([0, 3.0])
34
- axs[0,1].tick_params('x', labelbottom=False)
35
- axs[0,1].tick_params('y', labelleft=False)
38
+ axs[0,1].tick_params("x", labelbottom=False)
39
+ axs[0,1].tick_params("y", labelleft=False)
36
40
  #
37
- axs[1,0].set_ylabel(r'$\Delta_{1S0}/E_F$')
38
- axs[1,0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)')
39
- axs[1,0].set_xlim([0, 0.048])
40
- axs[1,0].set_ylim([0, 0.78])
41
+ axs[1,0].set_ylabel(r"$\Delta_{1S0}/E_F$", fontsize="14")
42
+ axs[1,0].set_xlabel(r"$n_\text{nuc}$ (fm$^{-3}$)", fontsize="14")
43
+ axs[1,0].set_xlim([0, 0.09])
44
+ axs[1,0].set_ylim([0, 0.65])
41
45
  #
42
- axs[1,1].set_xlabel(r'$k_{F_n}$ (fm$^{-1}$)')
46
+ axs[1,1].set_xlabel(r"$k_{F}$ (fm$^{-1}$)", fontsize="14")
43
47
  axs[1,1].set_xlim([0, 1.6])
44
- axs[1,1].set_ylim([0, 0.78])
45
- axs[1,1].tick_params('y', labelleft=False)
48
+ axs[1,1].set_ylim([0, 0.65])
49
+ axs[1,1].tick_params("y", labelleft=False)
46
50
  #
47
51
  for model in models:
48
52
  #
49
- gap = nuda.matter.setupMicroGap( model = model, matter = matter )
53
+ gap = nuda.matter.setupMicroGap(model=model, matter=matter)
50
54
  #
51
- if matter.lower() == 'nm':
55
+ if matter.lower() == "nm":
52
56
  if gap.nm_gap_1s0 is not None:
53
57
  if gap.nm_gap_1s0_err is not None:
54
- axs[0,0].errorbar( gap.nm_den_1s0, gap.nm_gap_1s0, yerr=gap.nm_gap_1s0_err, marker=gap.marker, markevery=gap.every, linestyle='none', label=gap.label )
55
- axs[0,1].errorbar( gap.nm_kfn_1s0, gap.nm_gap_1s0, yerr=gap.nm_gap_1s0_err, marker=gap.marker, markevery=gap.every, linestyle='none' )
56
- axs[1,0].errorbar( gap.nm_den_1s0, gap.nm_gap_1s0/nuda.eF_n(gap.nm_kfn_1s0), yerr=gap.nm_gap_1s0_err/nuda.eF_n(gap.nm_kfn_1s0), marker=gap.marker, markevery=gap.every, linestyle='none' )
57
- axs[1,1].errorbar( gap.nm_kfn_1s0, gap.nm_gap_1s0/nuda.eF_n(gap.nm_kfn_1s0), yerr=gap.nm_gap_1s0_err/nuda.eF_n(gap.nm_kfn_1s0), marker=gap.marker, markevery=gap.every, linestyle='none' )
58
+ axs[0, 0].errorbar(gap.nm_den_1s0, gap.nm_gap_1s0, yerr=gap.nm_gap_1s0_err,
59
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle, label=gap.label )
60
+ axs[0, 1].errorbar(gap.nm_kfn_1s0, gap.nm_gap_1s0, yerr=gap.nm_gap_1s0_err,
61
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
62
+ axs[1, 0].errorbar(gap.nm_den_1s0, gap.nm_gap_1s0 / nuda.eF_n(gap.nm_kfn_1s0), yerr=gap.nm_gap_1s0_err / nuda.eF_n(gap.nm_kfn_1s0),
63
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
64
+ axs[1, 1].errorbar(gap.nm_kfn_1s0, gap.nm_gap_1s0 / nuda.eF_n(gap.nm_kfn_1s0), yerr=gap.nm_gap_1s0_err / nuda.eF_n(gap.nm_kfn_1s0),
65
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
58
66
  else:
59
- axs[0,0].plot( gap.nm_den_1s0, gap.nm_gap_1s0, marker=gap.marker, markevery=gap.every, linestyle='none', label=gap.label )
60
- axs[0,1].plot( gap.nm_kfn_1s0, gap.nm_gap_1s0, marker=gap.marker, markevery=gap.every, linestyle='none' )
61
- axs[1,0].plot( gap.nm_den_1s0, gap.nm_gap_1s0/nuda.eF_n(gap.nm_kfn_1s0), marker=gap.marker, markevery=gap.every, linestyle='none' )
62
- axs[1,1].plot( gap.nm_kfn_1s0, gap.nm_gap_1s0/nuda.eF_n(gap.nm_kfn_1s0), marker=gap.marker, markevery=gap.every, linestyle='none' )
63
- elif matter.lower() == 'sm':
67
+ axs[0, 0].plot(gap.nm_den_1s0, gap.nm_gap_1s0,
68
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle, label=gap.label)
69
+ axs[0, 1].plot(gap.nm_kfn_1s0, gap.nm_gap_1s0,
70
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
71
+ axs[1, 0].plot(gap.nm_den_1s0, gap.nm_gap_1s0 / nuda.eF_n(gap.nm_kfn_1s0),
72
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
73
+ axs[1, 1].plot(gap.nm_kfn_1s0, gap.nm_gap_1s0 / nuda.eF_n(gap.nm_kfn_1s0),
74
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
75
+ elif matter.lower() == "sm":
64
76
  if gap.sm_gap_1s0 is not None:
65
77
  if gap.sm_gap_1s0_err is not None:
66
- axs[0,0].errorbar( gap.sm_den_1s0, gap.sm_gap_1s0, yerr=gap.sm_gap_1s0_err, marker=gap.marker, markevery=gap.every, linestyle='none', label=gap.label )
67
- axs[0,1].errorbar( gap.sm_kfn_1s0, gap.sm_gap_1s0, yerr=gap.sm_gap_1s0_err, marker=gap.marker, markevery=gap.every, linestyle='none' )
68
- axs[1,0].errorbar( gap.sm_den_1s0, gap.sm_gap_1s0/nuda.eF_n(gap.sm_kfn_1s0), yerr=gap.sm_gap_1s0_err/nuda.eF_n(gap.sm_kfn_1s0), marker=gap.marker, markevery=gap.every, linestyle='none' )
69
- axs[1,1].errorbar( gap.sm_kfn_1s0, gap.sm_gap_1s0/nuda.eF_n(gap.sm_kfn_1s0), yerr=gap.sm_gap_1s0_err/nuda.eF_n(gap.sm_kfn_1s0), marker=gap.marker, markevery=gap.every, linestyle='none' )
78
+ axs[0, 0].errorbar(gap.sm_den_1s0, gap.sm_gap_1s0, yerr=gap.sm_gap_1s0_err,
79
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle, label=gap.label )
80
+ axs[0, 1].errorbar(gap.sm_kfn_1s0, gap.sm_gap_1s0, yerr=gap.sm_gap_1s0_err,
81
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
82
+ axs[1, 0].errorbar(gap.sm_den_1s0, gap.sm_gap_1s0 / (2*nuda.eF_n(gap.sm_kfn_1s0)), yerr=gap.sm_gap_1s0_err / nuda.eF_n(gap.sm_kfn_1s0),
83
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
84
+ axs[1, 1].errorbar(gap.sm_kfn_1s0, gap.sm_gap_1s0 / (2*nuda.eF_n(gap.sm_kfn_1s0)), yerr=gap.sm_gap_1s0_err / nuda.eF_n(gap.sm_kfn_1s0),
85
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
70
86
  else:
71
- axs[0,0].plot( gap.sm_den_1s0, gap.sm_gap_1s0, marker=gap.marker, markevery=gap.every, linestyle='none', label=gap.label )
72
- axs[0,1].plot( gap.sm_kfn_1s0, gap.sm_gap_1s0, marker=gap.marker, markevery=gap.every, linestyle='none' )
73
- axs[1,0].plot( gap.sm_den_1s0, gap.sm_gap_1s0/nuda.eF_n(gap.sm_kfn_1s0), marker=gap.marker, markevery=gap.every, linestyle='none' )
74
- axs[1,1].plot( gap.sm_kfn_1s0, gap.sm_gap_1s0/nuda.eF_n(gap.sm_kfn_1s0), marker=gap.marker, markevery=gap.every, linestyle='none' )
75
- if nuda.env.verb_output: gap.print_outputs( )
87
+ axs[0, 0].plot(gap.sm_den_1s0, gap.sm_gap_1s0,
88
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle, label=gap.label )
89
+ axs[0, 1].plot(gap.sm_kfn_1s0, gap.sm_gap_1s0,
90
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
91
+ axs[1, 0].plot(gap.sm_den_1s0, gap.sm_gap_1s0 / (2*nuda.eF_n(gap.sm_kfn_1s0)),
92
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
93
+ axs[1, 1].plot(gap.sm_kfn_1s0, gap.sm_gap_1s0 / (2*nuda.eF_n(gap.sm_kfn_1s0)),
94
+ marker=gap.marker, markevery=gap.every, linestyle=gap.lstyle )
95
+ if nuda.env.verb_output:
96
+ gap.print_outputs()
76
97
  #
77
- #axs[1,0].legend(loc='upper right',fontsize='8')
78
- fig.legend(loc='upper left',bbox_to_anchor=(0.08,1.0),columnspacing=2,fontsize='8',ncol=3,frameon=False)
98
+ # axs[1,0].legend(loc='upper right',fontsize='8')
99
+ fig.legend(loc="upper left", bbox_to_anchor=(0.1, 1.0), columnspacing=2, fontsize="8", ncol=3, frameon=False )
79
100
  #
80
101
  if pname is not None:
81
- plt.savefig(pname, dpi=300)
82
- plt.close()
102
+ plt.savefig(pname, dpi=300)
103
+ plt.close()
104
+
83
105
 
84
- def matter_setupMicro_gap_3pf2_fig( pname, models, matter = 'NM' ):
106
+ def matter_setupMicro_gap_3pf2_fig(pname, models, matter="NM"):
85
107
  """
86
- Plot the correlation between Esym and Lsym.\
87
- The plot is 1x1 with:\
88
- [0]: Esym - Lsym correlation plot
108
+ Plot the 3PF2 pairing gap in `matter`.
109
+
110
+ The plot is 2x2 with:
111
+
112
+ [0,0]: gap versus den. [0,1]: gap versus kfn.
113
+
114
+ [1,0]: gap/EF versus den. [1,1]: gap/EF versus kfn.
89
115
 
90
116
  :param pname: name of the figure (*.png)
91
117
  :type pname: str.
92
- :param constraints: list of constraints to run on.
93
- :type constraints: array of str.
94
-
118
+ :param models: models to run on.
119
+ :type models: array of str.
120
+ :param matter: can be 'SM' or 'NM' (default).
121
+ :type matter: str.
95
122
  """
96
123
  #
97
- print(f'Plot name: {pname}')
124
+ print(f"Plot name: {pname}")
98
125
  #
99
126
  # plot 3PF2 pairing gap in NM
100
- print('models:',models)
127
+ print("models:", models)
101
128
  #
102
- fig, axs = plt.subplots(2,2)
103
- fig.tight_layout() # Or equivalently, "plt.tight_layout()"
104
- fig.subplots_adjust(left=0.12, bottom=0.12, right=None, top=0.8, wspace=0.05, hspace=0.05 )
129
+ fig, axs = plt.subplots(2, 2)
130
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
131
+ fig.subplots_adjust(left=0.12, bottom=0.12, right=0.95, top=0.85, wspace=0.05, hspace=0.05 )
105
132
  #
106
- axs[0,0].set_ylabel(r'$\Delta_{3PF2}$ (MeV)')
107
- axs[0,0].set_xlim([0, 0.38])
108
- axs[0,0].set_ylim([0, 0.6])
109
- axs[0,0].tick_params('x', labelbottom=False)
133
+ axs[0, 0].set_ylabel(r"$\Delta_{3PF2}$ (MeV)", fontsize="14")
134
+ axs[0, 0].set_xlim([0, 0.38])
135
+ axs[0, 0].set_ylim([0, 0.6])
136
+ axs[0, 0].tick_params("x", labelbottom=False)
110
137
  #
111
- axs[0,1].set_xlim([0.6, 2.3])
112
- axs[0,1].set_ylim([0, 0.6])
113
- axs[0,1].tick_params('x', labelbottom=False)
114
- axs[0,1].tick_params('y', labelleft=False)
138
+ axs[0, 1].set_xlim([0.6, 2.3])
139
+ axs[0, 1].set_ylim([0, 0.6])
140
+ axs[0, 1].tick_params("x", labelbottom=False)
141
+ axs[0, 1].tick_params("y", labelleft=False)
115
142
  #
116
- axs[1,0].set_ylabel(r'$100\times \Delta_{3PF2}/E_F$')
117
- axs[1,0].set_xlabel(r'$n_\text{nuc}$ (fm$^{-3}$)')
118
- axs[1,0].set_xlim([0, 0.38])
119
- axs[1,0].set_ylim([0, 0.78])
143
+ axs[1, 0].set_ylabel(r"$100\times \Delta_{3PF2}/E_F$", fontsize="14")
144
+ axs[1, 0].set_xlabel(r"$n_\text{nuc}$ (fm$^{-3}$)", fontsize="14")
145
+ axs[1, 0].set_xlim([0, 0.38])
146
+ axs[1, 0].set_ylim([0, 0.78])
120
147
  #
121
- axs[1,1].set_xlabel(r'$k_{F_n}$ (fm$^{-1}$)')
122
- axs[1,1].set_xlim([0.6, 2.3])
123
- axs[1,1].set_ylim([0, 0.78])
124
- axs[1,1].tick_params('y', labelleft=False)
148
+ axs[1, 1].set_xlabel(r"$k_{F}$ (fm$^{-1}$)", fontsize="14")
149
+ axs[1, 1].set_xlim([0.6, 2.3])
150
+ axs[1, 1].set_ylim([0, 0.78])
151
+ axs[1, 1].tick_params("y", labelleft=False)
125
152
  #
126
153
  for model in models:
127
154
  #
128
- gap = nuda.matter.setupMicroGap( model = model, matter = matter )
155
+ gap = nuda.matter.setupMicroGap(model=model, matter=matter)
129
156
  #
130
- if matter.lower() == 'nm':
157
+ if matter.lower() == "nm":
131
158
  if gap.nm_gap_3pf2 is not None:
132
159
  if gap.nm_gap_3pf2_err is not None:
133
- axs[0,0].errorbar( gap.nm_den_3pf2, gap.nm_gap_3pf2, yerr=gap.nm_gap_3pf2_err, marker=gap.marker, markevery=gap.every, linestyle='none', label=gap.label )
134
- axs[0,1].errorbar( gap.nm_kfn_3pf2, gap.nm_gap_3pf2, yerr=gap.nm_gap_3pf2_err, marker=gap.marker, markevery=gap.every, linestyle='none' )
135
- axs[1,0].errorbar( gap.nm_den_3pf2, 100*gap.nm_gap_3pf2/nuda.eF_n(gap.nm_kfn_3pf2), yerr=gap.nm_gap_3pf2_err/nuda.eF_n(gap.nm_kfn_3pf2), marker=gap.marker, markevery=gap.every, linestyle='none' )
136
- axs[1,1].errorbar( gap.nm_kfn_3pf2, 100*gap.nm_gap_3pf2/nuda.eF_n(gap.nm_kfn_3pf2), yerr=gap.nm_gap_3pf2_err/nuda.eF_n(gap.nm_kfn_3pf2), marker=gap.marker, markevery=gap.every, linestyle='none' )
160
+ axs[0, 0].errorbar(
161
+ gap.nm_den_3pf2,
162
+ gap.nm_gap_3pf2,
163
+ yerr=gap.nm_gap_3pf2_err,
164
+ marker=gap.marker,
165
+ markevery=gap.every,
166
+ linestyle=gap.lstyle,
167
+ label=gap.label,
168
+ )
169
+ axs[0, 1].errorbar(
170
+ gap.nm_kfn_3pf2,
171
+ gap.nm_gap_3pf2,
172
+ yerr=gap.nm_gap_3pf2_err,
173
+ marker=gap.marker,
174
+ markevery=gap.every,
175
+ linestyle=gap.lstyle,
176
+ )
177
+ axs[1, 0].errorbar(
178
+ gap.nm_den_3pf2,
179
+ 100 * gap.nm_gap_3pf2 / nuda.eF_n(gap.nm_kfn_3pf2),
180
+ yerr=gap.nm_gap_3pf2_err / nuda.eF_n(gap.nm_kfn_3pf2),
181
+ marker=gap.marker,
182
+ markevery=gap.every,
183
+ linestyle=gap.lstyle,
184
+ )
185
+ axs[1, 1].errorbar(
186
+ gap.nm_kfn_3pf2,
187
+ 100 * gap.nm_gap_3pf2 / nuda.eF_n(gap.nm_kfn_3pf2),
188
+ yerr=gap.nm_gap_3pf2_err / nuda.eF_n(gap.nm_kfn_3pf2),
189
+ marker=gap.marker,
190
+ markevery=gap.every,
191
+ linestyle=gap.lstyle,
192
+ )
137
193
  else:
138
- axs[0,0].plot( gap.nm_den_3pf2, gap.nm_gap_3pf2, marker=gap.marker, markevery=gap.every, linestyle='none', label=gap.label )
139
- axs[0,1].plot( gap.nm_kfn_3pf2, gap.nm_gap_3pf2, marker=gap.marker, markevery=gap.every, linestyle='none' )
140
- axs[1,0].plot( gap.nm_den_3pf2, 100*gap.nm_gap_3pf2/nuda.eF_n(gap.nm_kfn_3pf2), marker=gap.marker, markevery=gap.every, linestyle='none' )
141
- axs[1,1].plot( gap.nm_kfn_3pf2, 100*gap.nm_gap_3pf2/nuda.eF_n(gap.nm_kfn_3pf2), marker=gap.marker, markevery=gap.every, linestyle='none' )
142
- elif matter.lower() == 'sm':
194
+ axs[0, 0].plot(
195
+ gap.nm_den_3pf2,
196
+ gap.nm_gap_3pf2,
197
+ marker=gap.marker,
198
+ markevery=gap.every,
199
+ linestyle=gap.lstyle,
200
+ label=gap.label,
201
+ )
202
+ axs[0, 1].plot(
203
+ gap.nm_kfn_3pf2,
204
+ gap.nm_gap_3pf2,
205
+ marker=gap.marker,
206
+ markevery=gap.every,
207
+ linestyle=gap.lstyle,
208
+ )
209
+ axs[1, 0].plot(
210
+ gap.nm_den_3pf2,
211
+ 100 * gap.nm_gap_3pf2 / nuda.eF_n(gap.nm_kfn_3pf2),
212
+ marker=gap.marker,
213
+ markevery=gap.every,
214
+ linestyle=gap.lstyle,
215
+ )
216
+ axs[1, 1].plot(
217
+ gap.nm_kfn_3pf2,
218
+ 100 * gap.nm_gap_3pf2 / nuda.eF_n(gap.nm_kfn_3pf2),
219
+ marker=gap.marker,
220
+ markevery=gap.every,
221
+ linestyle=gap.lstyle,
222
+ )
223
+ elif matter.lower() == "sm":
143
224
  if gap.sm_gap_3pf2 is not None:
144
225
  if gap.sm_gap_3pf2_err is not None:
145
- axs[0,0].errorbar( gap.sm_den_3pf2, gap.sm_gap_3pf2, yerr=gap.sm_gap_3pf2_err, marker=gap.marker, markevery=gap.every, linestyle='none', label=gap.label )
146
- axs[0,1].errorbar( gap.sm_kfn_3pf2, gap.sm_gap_3pf2, yerr=gap.sm_gap_3pf2_err, marker=gap.marker, markevery=gap.every, linestyle='none' )
147
- axs[1,0].errorbar( gap.sm_den_3pf2, 100*gap.sm_gap_3pf2/nuda.eF_n(gap.sm_kfn_3pf2), yerr=gap.sm_gap_3pf2_err/nuda.eF_n(gap.sm_kfn_3pf2), marker=gap.marker, markevery=gap.every, linestyle='none' )
148
- axs[1,1].errorbar( gap.sm_kfn_3pf2, 100*gap.sm_gap_3pf2/nuda.eF_n(gap.sm_kfn_3pf2), yerr=gap.sm_gap_3pf2_err/nuda.eF_n(gap.sm_kfn_3pf2), marker=gap.marker, markevery=gap.every, linestyle='none' )
226
+ axs[0, 0].errorbar(
227
+ gap.sm_den_3pf2,
228
+ gap.sm_gap_3pf2,
229
+ yerr=gap.sm_gap_3pf2_err,
230
+ marker=gap.marker,
231
+ markevery=gap.every,
232
+ linestyle=gap.lstyle,
233
+ label=gap.label,
234
+ )
235
+ axs[0, 1].errorbar(
236
+ gap.sm_kfn_3pf2,
237
+ gap.sm_gap_3pf2,
238
+ yerr=gap.sm_gap_3pf2_err,
239
+ marker=gap.marker,
240
+ markevery=gap.every,
241
+ linestyle=gap.lstyle,
242
+ )
243
+ axs[1, 0].errorbar(
244
+ gap.sm_den_3pf2,
245
+ 100 * gap.sm_gap_3pf2 / (2*nuda.eF_n(gap.sm_kfn_3pf2)),
246
+ yerr=gap.sm_gap_3pf2_err / (2*nuda.eF_n(gap.sm_kfn_3pf2)),
247
+ marker=gap.marker,
248
+ markevery=gap.every,
249
+ linestyle=gap.lstyle,
250
+ )
251
+ axs[1, 1].errorbar(
252
+ gap.sm_kfn_3pf2,
253
+ 100 * gap.sm_gap_3pf2 / (2*nuda.eF_n(gap.sm_kfn_3pf2)),
254
+ yerr=gap.sm_gap_3pf2_err / (2*nuda.eF_n(gap.sm_kfn_3pf2)),
255
+ marker=gap.marker,
256
+ markevery=gap.every,
257
+ linestyle=gap.lstyle,
258
+ )
149
259
  else:
150
- axs[0,0].plot( gap.sm_den_3pf2, gap.sm_gap_3pf2, marker=gap.marker, markevery=gap.every, linestyle='none', label=gap.label )
151
- axs[0,1].plot( gap.sm_kfn_3pf2, gap.sm_gap_3pf2, marker=gap.marker, markevery=gap.every, linestyle='none' )
152
- axs[1,0].plot( gap.sm_den_3pf2, 100*gap.sm_gap_3pf2/nuda.eF_n(gap.sm_kfn_3pf2), marker=gap.marker, markevery=gap.every, linestyle='none' )
153
- axs[1,1].plot( gap.sm_kfn_3pf2, 100*gap.sm_gap_3pf2/nuda.eF_n(gap.sm_kfn_3pf2), marker=gap.marker, markevery=gap.every, linestyle='none' )
154
- if nuda.env.verb_output: gap.print_outputs( )
260
+ axs[0, 0].plot(
261
+ gap.sm_den_3pf2,
262
+ gap.sm_gap_3pf2,
263
+ marker=gap.marker,
264
+ markevery=gap.every,
265
+ linestyle=gap.lstyle,
266
+ label=gap.label,
267
+ )
268
+ axs[0, 1].plot(
269
+ gap.sm_kfn_3pf2,
270
+ gap.sm_gap_3pf2,
271
+ marker=gap.marker,
272
+ markevery=gap.every,
273
+ linestyle=gap.lstyle,
274
+ )
275
+ axs[1, 0].plot(
276
+ gap.sm_den_3pf2,
277
+ 100 * gap.sm_gap_3pf2 / (2*nuda.eF_n(gap.sm_kfn_3pf2)),
278
+ marker=gap.marker,
279
+ markevery=gap.every,
280
+ linestyle=gap.lstyle,
281
+ )
282
+ axs[1, 1].plot(
283
+ gap.sm_kfn_3pf2,
284
+ 100 * gap.sm_gap_3pf2 / (2*nuda.eF_n(gap.sm_kfn_3pf2)),
285
+ marker=gap.marker,
286
+ markevery=gap.every,
287
+ linestyle=gap.lstyle,
288
+ )
289
+ if nuda.env.verb_output:
290
+ gap.print_outputs()
155
291
  #
156
- #axs[1,0].legend(loc='upper right',fontsize='8')
157
- fig.legend(loc='upper left',bbox_to_anchor=(0.04,1.0),columnspacing=2,fontsize='8',ncol=3,frameon=False)
292
+ # axs[1,0].legend(loc='upper right',fontsize='8')
293
+ fig.legend(loc="upper left", bbox_to_anchor=(0.1, 0.95), columnspacing=2, fontsize="8", ncol=3, frameon=False )
158
294
  #
159
295
  if pname is not None:
160
- plt.savefig(pname, dpi=300)
161
- plt.close()
296
+ plt.savefig(pname, dpi=300)
297
+ plt.close()
298
+ #
@@ -0,0 +1,106 @@
1
+ import numpy as np
2
+ import matplotlib.pyplot as plt
3
+
4
+ import nucleardatapy as nuda
5
+
6
+
7
+ def matter_setupNEPStats_fig(pname, models):
8
+ """
9
+ Plot the PDF for NEPs.
10
+
11
+ The plot is 5x2 with:
12
+
13
+ [0,0]: Esat. [0,1]: Esym.
14
+
15
+ [1,0]: nsat. [1,1]: Lsym.
16
+
17
+ [2,0]: Ksat. [2,1]: Ksym.
18
+
19
+ [3,0]: Qsat. [3,1]: Qsym.
20
+
21
+ [4,0]: m*sat/m. [4,1]: Delta m*sat/m.
22
+
23
+ :param pname: name of the figure (*.png)
24
+ :type pname: str.
25
+ :param models: models to run on.
26
+ :type models: array of str.
27
+
28
+ """
29
+ #
30
+ print(f"Plot name: {pname}")
31
+ #
32
+ fig, axs = plt.subplots(5, 2)
33
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
34
+ fig.subplots_adjust( left=0.12, bottom=0.06, right=0.95, top=0.9, wspace=0.3, hspace=0.4 )
35
+ #
36
+ axs[0, 0].set_ylabel(r"$E_\text{sat}$")
37
+ axs[0, 0].set_xlim([-16.5, -15])
38
+ axs[1, 0].set_ylabel(r"$n_\text{sat}$")
39
+ axs[1, 0].set_xlim([0.14, 0.18])
40
+ axs[2, 0].set_ylabel(r"$K_\text{sat}$")
41
+ axs[2, 0].set_xlim([180, 360])
42
+ axs[3, 0].set_ylabel(r"$Q_\text{sat}$")
43
+ axs[3, 0].set_xlim([-1000, 1000])
44
+ axs[4, 0].set_ylabel(r"$m_\text{sat}^{*}/m$")
45
+ axs[4, 0].set_xlim([0.35, 1.2])
46
+ axs[0, 1].set_ylabel(r"$E_\text{sym}$")
47
+ axs[0, 1].set_xlim([26, 40])
48
+ axs[1, 1].set_ylabel(r"$L_\text{sym}$")
49
+ axs[1, 1].set_xlim([0, 120])
50
+ axs[2, 1].set_ylabel(r"$K_\text{sym}$")
51
+ axs[2, 1].set_xlim([-400, 220])
52
+ axs[3, 1].set_ylabel(r"$Q_\text{sym}$")
53
+ axs[3, 1].set_xlim([-50, 900])
54
+ axs[4, 1].set_ylabel(r"$\Delta m_\text{sat}^{*}/m$")
55
+ axs[4, 1].set_xlim([-0.5, 1.1])
56
+ #
57
+ # Built distribution of NEP
58
+ #
59
+ for model in models:
60
+ #
61
+ dist = nuda.matter.setupNEPStat_model(model)
62
+ #
63
+ xbins = np.arange(-16.5, -15.0, 0.15)
64
+ if len(dist.Esat) != 0:
65
+ axs[0, 0].hist(dist.Esat, bins=xbins, alpha=0.5, weights=1/len(dist.Esat) * np.ones(len(dist.Esat)) )
66
+ xbins = np.arange(0.14, 0.18, 0.004)
67
+ if len(dist.nsat) != 0:
68
+ axs[1, 0].hist(dist.nsat, bins=xbins, alpha=0.5, weights=1/len(dist.nsat) * np.ones(len(dist.nsat)) )
69
+ xbins = np.arange(180, 320, 20)
70
+ if len(dist.Ksat) != 0:
71
+ axs[2, 0].hist(dist.Ksat, bins=xbins, alpha=0.5, weights=1/len(dist.Ksat) * np.ones(len(dist.Ksat)), label=model )
72
+ xbins = np.arange(-1000, 1000, 200)
73
+ if len(dist.Qsat) != 0:
74
+ axs[3, 0].hist(dist.Qsat, bins=xbins, alpha=0.5, weights=1/len(dist.Qsat) * np.ones(len(dist.Qsat)) )
75
+ xbins = np.arange(0.5, 1.2, 0.1)
76
+ if len(dist.msat) != 0:
77
+ axs[4, 0].hist(dist.msat, bins=xbins, alpha=0.5, weights=1/len(dist.msat) * np.ones(len(dist.msat)) )
78
+ xbins = np.arange(25, 40, 1.0)
79
+ if len(dist.Esym) != 0:
80
+ axs[0, 1].hist(dist.Esym, bins=xbins, alpha=0.5, weights=1/len(dist.Esym) * np.ones(len(dist.Esym)) )
81
+ xbins = np.arange(0, 120, 10)
82
+ if len(dist.Lsym) != 0:
83
+ axs[1, 1].hist(dist.Lsym, bins=xbins, alpha=0.5, weights=1/len(dist.Lsym) * np.ones(len(dist.Lsym)) )
84
+ xbins = np.arange(-400, 400, 100)
85
+ if len(dist.Ksym) != 0:
86
+ axs[2, 1].hist(dist.Ksym, bins=xbins, alpha=0.5, weights=1/len(dist.Ksym) * np.ones(len(dist.Ksym)) )
87
+ xbins = np.arange(0, 1100, 100)
88
+ if len(dist.Qsym) != 0:
89
+ axs[3, 1].hist(dist.Qsym, bins=xbins, alpha=0.5, weights=1/len(dist.Qsym) * np.ones(len(dist.Qsym)) )
90
+ xbins = np.arange(-0.6, 1.0, 0.1)
91
+ if len(dist.Dmsat) != 0:
92
+ axs[4, 1].hist(dist.Dmsat, bins=xbins, alpha=0.5, weights=1/len(dist.Dmsat) * np.ones(len(dist.Dmsat)) )
93
+ #
94
+ # axs[0,0].legend(loc='lower right',fontsize='10',ncol=2)
95
+ fig.legend(
96
+ loc="upper left",
97
+ bbox_to_anchor=(0.02, 0.99),
98
+ columnspacing=2,
99
+ fontsize="7.5",
100
+ ncol=7,
101
+ frameon=False,
102
+ )
103
+ #
104
+ if pname is not None:
105
+ plt.savefig(pname, dpi=300)
106
+ plt.close()