Source code for pyleecan.Functions.MeshSolution.get_indices_limited
# -*- coding: utf-8 -*-
[docs]def get_indices_limited(
meshsolution,
label=None,
group_names=None,
max_value=float("Inf"),
min_value=float("-Inf"),
):
"""Get the indices of the specified groups of a MeshSolution,
with the field 'label' values magnitude must be within the given limits.
Parameters
----------
meshsolution : MeshSolution
a MeshSolution object
label : str
label of a MeshSolution solution field
group_names : list of str
list of the groups names or string of a single group
max_value : float
max. field magnitude (over time)
min_value : float
min. field magnitude (over time)
Return
------
area : float
surface area of the specified groups and indices
"""
grp = meshsolution.get_group(group_names=group_names)
msh = grp.get_mesh()
indices = msh.cell["triangle"].indice
field = grp.get_field(label=label)
# TODO check field size and axes
field_mag = (field[:, :, 0] ** 2 + field[:, :, 1] ** 2) ** (1 / 2)
field_max = field_mag.max(axis=0)
field_min = field_mag.min(axis=0)
idx_max = field_max >= max_value
idx_min = field_min <= min_value
idx = idx_max + idx_min
if any(idx):
inds = indices[idx]
else:
inds = []
return inds