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