Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
UnitHelper.py
1import shamrock
2
3
4def plot_codeu_to_unit(unit_system, name):
5 si = shamrock.UnitSystem()
6 si_cte = shamrock.Constants(shamrock.UnitSystem())
7
8 if name is None or name == "unitless":
9 return "[unitless]", 1
10
11 elif name == "code_unit":
12 return "[code unit]", 1
13
14 # Distances
15 elif name == "m":
16 return "[m]", unit_system.to("m")
17 elif name == "cm":
18 return "[cm]", unit_system.to("m", pref="c")
19 elif name == "km":
20 return "[km]", unit_system.to("m", pref="k")
21 elif name == "au":
22 return "[au]", unit_system.to("au")
23 elif name == "pc":
24 return "[pc]", unit_system.to("pc")
25
26 # Times
27 elif name == "second":
28 return "[second]", unit_system.to("s")
29 elif name == "minute":
30 return "[minute]", unit_system.to("mn")
31 elif name == "hour":
32 return "[hour]", unit_system.to("hr")
33 elif name == "day":
34 return "[day]", unit_system.to("dy")
35 elif name == "year":
36 return "[year]", unit_system.to("yr")
37 elif name == "Myr":
38 return "[Myr]", unit_system.to("yr", pref="M")
39 elif name == "Gyr":
40 return "[Gyr]", unit_system.to("yr", pref="G")
41
42 # Inverse times
43 elif name == "s^-1":
44 return "[s$^{-1}$]", unit_system.to("s", power=-1)
45 elif name == "yr^-1":
46 return "[yr$^{-1}$]", unit_system.to("yr", power=-1)
47
48 # Surface densities
49 elif name == "kg.m^-2":
50 return "[$\\mathrm{{kg}} \\cdot \\mathrm{{m}}^{-2}$]", unit_system.to(
51 "kg"
52 ) * unit_system.to("m", power=-2)
53 elif name == "g.cm^-2":
54 return "[$\\mathrm{{g}} \\cdot \\mathrm{{cm}}^{-2}$]", unit_system.to(
55 "kg", pref="m"
56 ) * unit_system.to("m", power=-2, pref="c")
57
58 # Density
59 elif name == "kg.m^-3":
60 return "[$\\mathrm{{kg}} \\cdot \\mathrm{{m}}^{-3}$]", unit_system.to(
61 "kg"
62 ) * unit_system.to("m", power=-3)
63 elif name == "g.cm^-3":
64 return "[$\\mathrm{{g}} \\cdot \\mathrm{{cm}}^{-3}$]", unit_system.to(
65 "kg", pref="m"
66 ) * unit_system.to("m", power=-3, pref="c")
67
68 # Velocity
69 elif name == "m.s^-1":
70 return "[$\\mathrm{{m}} \\cdot \\mathrm{{s}}^{-1}$]", unit_system.to("m") * unit_system.to(
71 "s", power=-1
72 )
73 elif name == "lightspeed":
74 return "[$\\mathrm{{c}}$]", unit_system.to("m") * unit_system.to("s", power=-1) / si_cte.c()
75
76 # Acceleration
77 elif name == "m.s^-2":
78 return "[$\\mathrm{{m}} \\cdot \\mathrm{{s}}^{-2}$]", unit_system.to("m") * unit_system.to(
79 "s", power=-2
80 )
81
82 # Magnetic field
83 elif name == "T":
84 return "[T]", unit_system.to("T")
85
86 else:
87 raise ValueError(f"Unknown unit: {name}")