Dispersive optical model interfaceΒΆ
This notebook demonstrates the supported jitr.optical_potentials.dom interface. For a given parameter set, we plot the potential curves \(U(r)\) at multiple different energies.
1import numpy as np
2from matplotlib import pyplot as plt
3
4from jitr.optical_potentials import dom
5from jitr.reactions import ElasticReaction
6from jitr.utils.kinematics import classical_kinematics_cm
1params = {
2 "v0": 52.0,
3 "v1": 0.006,
4 "rv": 1.25,
5 "av": 0.65,
6 "wv0": 12.0,
7 "wv1": 24.0,
8 "rw": 1.28,
9 "aw": 0.62,
10 "ws0": 15.0,
11 "ws1": 12.5,
12 "ws2": 0.021,
13 "rd": 1.28,
14 "ad": 0.55,
15 "vso0": 6.0,
16 "wso0": -3,
17 "wso1": 25.0,
18 "rso": 1.05,
19 "aso": 0.59,
20 "rC": 1.25,
21}
22
23model = dom.DOM()
24param_names = model.params
25param_values = [params[name] for name in param_names]
26param_names
['v0',
'v1',
'rv',
'av',
'wv0',
'wv1',
'rw',
'aw',
'ws0',
'ws1',
'ws2',
'rd',
'ad',
'vso0',
'wso0',
'wso1',
'rso',
'aso',
'rC']
1reaction = ElasticReaction((24, 12), (1, 1))
2r_grid = np.linspace(0.1, 12.0, 300)
1for E in [-100, -30, 0, 10, 30, 50, 100, 200]:
2 kinematics = classical_kinematics_cm(
3 reaction.target.m0,
4 reaction.projectile.m0,
5 Ecm=E,
6 Zz=reaction.target.Z * reaction.projectile.Z,
7 )
8
9 U_central, U_spin_orbit, U_coulomb = model(
10 r_grid, reaction, kinematics, *param_values
11 )
12
13 fig, axes = plt.subplots(2, 2, figsize=(11, 7), sharex=True)
14 fig.suptitle(f"$E$ = {E} MeV")
15
16 axes[0, 0].plot(r_grid, U_central.real, label="Re U_central")
17 axes[0, 0].plot(r_grid, U_central.imag, label="Im U_central")
18 axes[0, 0].set_ylabel("MeV")
19 axes[0, 0].set_title("Central DOM term")
20 axes[0, 0].legend()
21 axes[0, 0].grid(alpha=0.3)
22
23 axes[0, 1].plot(r_grid, U_spin_orbit.real, label="Re U_so")
24 axes[0, 1].plot(r_grid, U_spin_orbit.imag, label="Im U_so")
25 axes[0, 1].set_title("Spin-orbit DOM term")
26 axes[0, 1].legend()
27 axes[0, 1].grid(alpha=0.3)
28
29 axes[1, 0].plot(r_grid, U_coulomb, color="black")
30 axes[1, 0].set_xlabel("r [fm]")
31 axes[1, 0].set_ylabel("MeV")
32 axes[1, 0].set_title("Coulomb term")
33 axes[1, 0].grid(alpha=0.3)
34
35 axes[1, 1].plot(r_grid, (U_central + U_coulomb).real, label="Re total central")
36 axes[1, 1].plot(r_grid, (U_central + U_coulomb).imag, label="Im total central")
37 axes[1, 1].set_xlabel("r [fm]")
38 axes[1, 1].set_title("Central + Coulomb")
39 axes[1, 1].legend()
40 axes[1, 1].grid(alpha=0.3)
41
42 fig.tight_layout()