Skip to content

Commit dd79d2f

Browse files
authored
refactor kin_energy unit change logic (#806)
1 parent 6aa4fac commit dd79d2f

File tree

3 files changed

+15
-51
lines changed

3 files changed

+15
-51
lines changed

src/python/impactx/dashboard/Input/defaults.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class DashboardDefaults:
1616
"charge_qe": -1,
1717
"mass_MeV": 0.51099895,
1818
"npart": 1000,
19-
"kin_energy": 2e3,
19+
"kin_energy_on_ui": 2e3,
2020
"kin_energy_MeV": 2e3,
2121
"kin_energy_unit": "MeV",
2222
"bunch_charge_C": 1e-9,
@@ -80,7 +80,7 @@ class DashboardDefaults:
8080

8181
TYPES = {
8282
"npart": "int",
83-
"kin_energy": "float",
83+
"kin_energy_on_ui": "float",
8484
"bunch_charge_C": "float",
8585
"mass_MeV": "float",
8686
"charge_qe": "int",

src/python/impactx/dashboard/Input/inputParameters/inputFunctions.py

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -30,36 +30,11 @@ class InputFunctions:
3030
"""
3131

3232
@staticmethod
33-
def value_of_kin_energy_MeV(kineticEnergyOnDisplayValue, OldUnit):
33+
def update_kin_energy_sim_value() -> None:
3434
"""
35-
Converts the kinetic energy to MeV.
36-
:param kineticEnergyOnDisplayValue: The kinetic energy value that is displayed in the UI.
37-
:param OldUnit: The previous unit of kin_energy prior to change.
38-
:return: The kinetic energy value converted to MeV.
35+
Converts UI input to MeV for internal simulation value.
3936
"""
4037

4138
state.kin_energy_MeV = (
42-
kineticEnergyOnDisplayValue
43-
* CONVERSION_FACTORS[OldUnit]
44-
/ CONVERSION_FACTORS["MeV"]
39+
state.kin_energy_on_ui * CONVERSION_FACTORS[state.kin_energy_unit]
4540
)
46-
return state.kin_energy_MeV
47-
48-
@staticmethod
49-
def update_kin_energy_on_display(old_unit, new_unit, kin_energy_value):
50-
"""
51-
Updates the kinetic energy value in the UI.
52-
:param old_unit: The previous unit of kin_energy prior to change.
53-
:param new_unit: The new unit of kin_energy changed to by user.
54-
:param kin_energy_value: The kinetic energy value in the current unit.
55-
:return: The kinetic energy value converted to the new unit.
56-
"""
57-
58-
value_in_mev = InputFunctions.value_of_kin_energy_MeV(
59-
kin_energy_value, old_unit
60-
)
61-
kin_energy_value_on_display = (
62-
value_in_mev * CONVERSION_FACTORS["MeV"] / CONVERSION_FACTORS[new_unit]
63-
)
64-
65-
return kin_energy_value_on_display

src/python/impactx/dashboard/Input/inputParameters/inputMain.py

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -40,24 +40,14 @@ def validate_and_convert_to_correct_type(state_name):
4040

4141
if getattr(state, state_name) != converted_value:
4242
setattr(state, state_name, converted_value)
43-
if state_name == "kin_energy":
44-
state.kin_energy_MeV = InputFunctions.value_of_kin_energy_MeV(
45-
converted_value, state.kin_energy_unit
46-
)
47-
48-
49-
@ctrl.add("kin_energy_unit_change")
50-
def on_convert_kin_energy_change(new_unit):
51-
old_unit = state.old_kin_energy_unit
52-
if old_unit != new_unit and float(state.kin_energy) > 0:
53-
state.kin_energy = InputFunctions.update_kin_energy_on_display(
54-
old_unit, new_unit, state.kin_energy
55-
)
56-
state.kin_energy_unit = new_unit
57-
state.old_kin_energy_unit = new_unit
58-
state.kin_energy_MeV = InputFunctions.value_of_kin_energy_MeV(
59-
float(state.kin_energy), new_unit
60-
)
43+
if state_name == "kin_energy_on_ui":
44+
on_kin_energy_unit_change()
45+
46+
47+
@state.change("kin_energy_unit")
48+
def on_kin_energy_unit_change(**kwargs) -> None:
49+
if state.kin_energy_on_ui != 0:
50+
InputFunctions.update_kin_energy_sim_value()
6151

6252

6353
# -----------------------------------------------------------------------------
@@ -115,15 +105,14 @@ def card(self):
115105
with vuetify.VCol(cols=8, classes="py-0"):
116106
TrameFunctions.text_field(
117107
label="Kinetic Energy",
118-
v_model_name="kin_energy",
119-
input=(ctrl.input_change, "['kin_energy']"),
108+
v_model_name="kin_energy_on_ui",
109+
input=(ctrl.input_change, "['kin_energy_on_ui']"),
120110
classes="mr-2",
121111
)
122112
with vuetify.VCol(cols=4, classes="py-0"):
123113
TrameFunctions.select(
124114
label="Unit",
125115
v_model_name="kin_energy_unit",
126-
input=(ctrl.kin_energy_unit_change, "[$event]"),
127116
)
128117
with vuetify.VRow(classes="my-2"):
129118
with vuetify.VCol(cols=12, classes="py-0"):

0 commit comments

Comments
 (0)