Skip to content

Commit ede4392

Browse files
authored
Merge branch 'master' into ci/add_doc_build_cache
2 parents 70c9e45 + f90f640 commit ede4392

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

examples/02-modal_analyses/01-plot_and_animate_modes.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,6 @@
7272
# To suppress window pop-up, set the `off_screen` argument to True.
7373
# ~~~~~~~~~~~~~~~~~~~~
7474

75-
animation.animate_mode(disp, mode_number=1, save_as="tmp.gif", off_screen=True)
75+
animation.animate_mode(
76+
disp, mode_number=1, save_as="tmp.gif", off_screen=True, deform_scale_factor=10.0
77+
)

src/ansys/dpf/core/animation.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,14 @@ def animate_mode(
9595
)
9696

9797
# Get fields
98+
available_mode_numbers = fields_container.get_available_ids_for_label("time")
99+
100+
if not mode_number in available_mode_numbers:
101+
raise ValueError(f"The mode {mode_number} data is not available in field container.")
98102
fields_mode = fields_container.get_fields({"time": mode_number})
103+
mode_frequencies_field = fields_container.time_freq_support.time_frequencies
104+
mode_frequencies = mode_frequencies_field.data
105+
mode_frequency = mode_frequencies[available_mode_numbers.index(mode_number)]
99106

100107
# Merge fields if needed
101108
if len(fields_mode) > 1:
@@ -108,6 +115,7 @@ def animate_mode(
108115

109116
max_data = float(np.max(field_mode.data))
110117
loop_over = dpf.fields_factory.field_from_array(scale_factor_per_frame)
118+
loop_over.unit = mode_frequencies_field.unit
111119

112120
# Create workflow
113121
wf = dpf.Workflow()
@@ -120,6 +128,7 @@ def animate_mode(
120128

121129
wf.set_input_name("weights", scaling_op.inputs.weights)
122130
wf.set_output_name("field", scaling_op.outputs.field)
131+
wf.set_output_name("deform_by", scaling_op.outputs.field)
123132

124133
anim = Animator(workflow=wf, **kwargs)
125134

@@ -129,6 +138,8 @@ def animate_mode(
129138
output_name="field",
130139
save_as=save_as,
131140
mode_number=mode_number,
141+
mode_frequency=mode_frequency,
132142
clim=[0, max_data],
143+
scale_factor=deform_scale_factor,
133144
**kwargs,
134145
)

src/ansys/dpf/core/animator.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def animate_workflow(
5959
input_name="loop_over",
6060
save_as="",
6161
mode_number=None,
62+
mode_frequency=None,
6263
scale_factor=1.0,
6364
shell_layer=core.shell_layers.top,
6465
**kwargs,
@@ -70,7 +71,7 @@ def animate_workflow(
7071
scale_factor = [False] * len(indices)
7172
type_scale = type(scale_factor)
7273
if type_scale in [int, float]:
73-
scale_factor = [scale_factor] * len(indices)
74+
scale_factor = [float(scale_factor)] * len(indices)
7475
elif type_scale == list:
7576
pass
7677
# elif type_scale in [core.field.Field, core.fields_container.FieldsContainer]:
@@ -121,6 +122,7 @@ def render_frame(frame):
121122
self.add_field(
122123
field,
123124
deform_by=deform,
125+
scale_factor=scale_factor[frame],
124126
scale_factor_legend=scale_factor[frame],
125127
shell_layer=shell_layer,
126128
**kwargs,
@@ -132,9 +134,9 @@ def render_frame(frame):
132134
str_template.format(indices[frame], unit, freq_fmt), **kwargs_in
133135
)
134136
else:
135-
str_template = "frq={0:{2}} {1}"
137+
str_template = "mode={3}\nfrq={0:{2}} {1}"
136138
self._plotter.add_text(
137-
str_template.format(mode_number, unit, freq_fmt), **kwargs_in
139+
str_template.format(mode_frequency, unit, freq_fmt, mode_number), **kwargs_in
138140
)
139141

140142
if cpos:

0 commit comments

Comments
 (0)