BodyFieldsContainer
#
- class ansys.dpf.core.custom_fields_container.BodyFieldsContainer(fields_container=None, server=None)#
Bases:
ansys.dpf.core.fields_container.FieldsContainer
Represents a fields container with fields split by a body.
Instances of this class are created when a model result is split by a body, which is an MAPDL material property.
- Parameters:
fields_container (ansys.grpc.dpf.collection_message_pb2.Collection or FieldsContainer, optional) – Fields container created from either a collection message or by copying an existing fields container. The default is
None
.server (server.DPFServer, optional) – Server with the channel connected to the remote or local instance. The default is
None
, in which case an attempt is made to use the global server.
Examples
>>> from ansys.dpf import core as dpf >>> from ansys.dpf.core import examples >>> model = dpf.Model(examples.download_all_kinds_of_complexity_modal()) >>> fc = model.results.displacement.on_all_time_freqs.split_by_body.eval() >>> fc.get_mat_scoping().ids[3] np.int32(45) >>> len(fc.get_fields_by_mat_id(45)) 45 >>> f_time_2 = fc.get_field_by_mat_id(45, timeid=2)
Overview#
Retrieve a list of all fields for a material ID. |
|
Retrieve a field with a given material ID. |
|
Retrieve the material or body scoping containing material IDs. |
|
Create a field subtype. |
|
Retrieve fields at a requested time ID or complex ID. |
|
Retrieve a field at a requested time ID or complex ID. |
|
Retrieve the fields at a requested index or label space. |
|
Retrieve the field at a requested index or label space. |
|
Retrieve the complex field at a requested time. |
|
Retrieve the complex fields at a requested time. |
|
Retrieve the complex field at a requested time. |
|
Add or update a field at a requested label space. |
|
Add or update a field at a requested time ID. |
|
Add or update an imaginary field at a requested time ID. |
|
Select fields containing only the component index. |
|
Create a deep copy of the fields container’s data (and its fields) on a given server. |
|
Retrieve the time scoping containing the time sets. |
|
Plot the fields in the FieldsContainer for the given LabelSpace. |
|
Create an animation based on the Fields contained in the FieldsContainer. |
|
Set labels for scoping the collection. |
|
Add the requested label to scope the collection. |
|
Check if a collection has a specified label. |
|
Retrieve the indices of the entries corresponding a requested label space . |
|
Retrieve the label space of an entry at a requested index. |
|
Retrieve the IDs assigned to an input label. |
|
Retrieve the scoping for an input label. |
|
Set the support of the collection for a given label. |
|
Get the support of the collection for a given label. |
Time frequency support. |
|
Name of the Collection. |
|
Provides for getting scoping labels as a property. |
Create a collection of integral type with a list. |
Return a label space dictionary mapping scoping to given id. |
|
Retrieve the field at a requested index. |
|
Add two fields or two fields containers. |
|
Subtract two fields or two fields containers. |
|
Compute element-wise field[i]^2. |
|
Multiply two fields or two fields containers. |
|
Describe the entity. |
|
Retrieve the number of entries. |
|
Delete the entry. |
|
Provide for looping through entry items. |
Import detail#
from ansys.dpf.core.custom_fields_container import BodyFieldsContainer
Property detail#
- property BodyFieldsContainer.time_freq_support#
Time frequency support.
- property BodyFieldsContainer.name#
Name of the Collection.
Notes
Available starting with DPF 2024 R2 pre0.
- Return type:
str
- property BodyFieldsContainer.labels: List[str]#
Provides for getting scoping labels as a property.
- Returns:
List of labels scoping the collection.
- Return type:
List[str]
Attribute detail#
- BodyFieldsContainer.entries_type: type[TYPE] | None#
- BodyFieldsContainer.owned = False#
Method detail#
- BodyFieldsContainer.get_fields_by_mat_id(matid, timeid=None, complexid=None)#
Retrieve a list of all fields for a material ID.
You can filter the list of fields for a material ID based on a given time, complex type, or both.
- Parameters:
matid (int, optional) – Material ID. To request available material IDs, you can use the get_mat_scoping method.
timeid (int, optional) – Time ID for filtering fields with the given material ID.
complexid (int, optional) – Complex type ID for filtering fields with the given material ID. 0 is for real numbers, and 1 is for imaginary numbers.
- Returns:
List of fields corresponding to the request.
- Return type:
List
Examples
>>> from ansys.dpf import core as dpf >>> from ansys.dpf.core import examples >>> model = dpf.Model(examples.download_all_kinds_of_complexity_modal()) >>> fc = model.results.displacement.on_all_time_freqs.split_by_body.eval() >>> len(fc.get_fields_by_mat_id(1)) 45 >>> len(fc.get_fields_by_mat_id(1, timeid=3)) 1
- BodyFieldsContainer.get_field_by_mat_id(matid, timeid=None, complexid=None)#
Retrieve a field with a given material ID.
You can filter the field based on a given time, complex type, or both.
- Parameters:
matid (int, optional) – Material ID. To request available material IDs, you can use the get_mat_scoping method.
timeid (int, optional) – Time ID for filtering fields with the given material ID.
complexid (int, optional) – Complex type ID for filtering fields with the given material ID. 0 is for real numbers, and 1 is for imaginary numbers.
- Returns:
Field corresponding to the request.
- Return type:
Examples
>>> from ansys.dpf import core as dpf >>> from ansys.dpf.core import examples >>> model = dpf.Model(examples.download_all_kinds_of_complexity_modal()) >>> fc = model.results.displacement.on_all_time_freqs.split_by_body.eval() >>> f_time_2 = fc.get_field_by_mat_id(45, timeid=2)
- BodyFieldsContainer.get_mat_scoping()#
Retrieve the material or body scoping containing material IDs.
- Returns:
Field corresponding to the request. Scoping containing the material IDs available in the fields container.
- Return type:
- BodyFieldsContainer.create_subtype(obj_by_copy)#
Create a field subtype.
- BodyFieldsContainer.get_fields_by_time_complex_ids(timeid=None, complexid=None)#
Retrieve fields at a requested time ID or complex ID.
- Parameters:
timeid (int, optional) – Time ID or frequency ID, which is the one-based index of the result set.
complexid (int, optional) – Complex ID, where
1
is for imaginary and0
is for real.
- Returns:
fields – Fields corresponding to the request.
- Return type:
list[Field]
Examples
Extract the fifth time set of a transient analysis.
>>> from ansys.dpf import core as dpf >>> from ansys.dpf.core import examples >>> transient = examples.download_transient_result() >>> model = dpf.Model(transient) >>> len(model.metadata.time_freq_support.time_frequencies) 35 >>> disp = model.results.displacement() >>> disp.inputs.time_scoping.connect([1,5]) >>> fields_container = disp.outputs.fields_container() >>> field_set_5 =fields_container.get_fields_by_time_complex_ids(5)
- BodyFieldsContainer.get_field_by_time_complex_ids(timeid=None, complexid=None)#
Retrieve a field at a requested time ID or complex ID.
An exception is raised if the number of fields matching the request is greater than one.
- Parameters:
timeid (int, optional) – Time ID or frequency ID, which is the one-based index of the result set.
complexid (int, optional) – Complex ID, where
1
is for imaginary and0
is for real.
- Returns:
fields – Field corresponding to the request
- Return type:
Examples
Extract the fifth time set of a transient analysis.
>>> from ansys.dpf import core as dpf >>> from ansys.dpf.core import examples >>> transient = examples.download_transient_result() >>> model = dpf.Model(transient) >>> len(model.metadata.time_freq_support.time_frequencies) 35 >>> disp = model.results.displacement() >>> disp.inputs.time_scoping.connect([1,5]) >>> fields_container = disp.outputs.fields_container() >>> field_set_5 =fields_container.get_fields_by_time_complex_ids(5)
- BodyFieldsContainer.__time_complex_label_space__(timeid=None, complexid=None)#
Return a label space dictionary mapping scoping to given id.
- Parameters:
timeid (int, optional) – time based id, by default None
complexid (int, optional) – complex id, by default None
- Returns:
mapping of space type to given id.
- Return type:
dict[str,int]
- BodyFieldsContainer.get_fields(label_space)#
Retrieve the fields at a requested index or label space.
- Parameters:
label_space (dict[str,int]) – Scoping of the requested fields. For example,
{"time": 1, "complex": 0}
.- Returns:
fields – Fields corresponding to the request.
- Return type:
list[Field]
Examples
>>> from ansys.dpf import core as dpf >>> fc= dpf.FieldsContainer() >>> fc.labels =['time','complex'] >>> #real fields >>> for i in range(0,20): ... mscop = {"time":i+1,"complex":0} ... fc.add_field(mscop,dpf.Field(nentities=i+10)) >>> #imaginary fields >>> for i in range(0,20): ... mscop = {"time":i+1,"complex":1} ... fc.add_field(mscop,dpf.Field(nentities=i+10))
>>> fields = fc.get_fields({"time":2}) >>> # imaginary and real fields of time 2 >>> len(fields) 2
- BodyFieldsContainer.get_field(label_space_or_index)#
Retrieve the field at a requested index or label space.
An exception is raised if the number of fields matching the request is greater than one.
- Parameters:
label_space_or_index (dict[str,int], int) – Scoping of the requested fields. For example,
{"time": 1, "complex": 0}
or the index of the field.- Returns:
field – Field corresponding to the request.
- Return type:
Examples
>>> from ansys.dpf import core as dpf >>> fc = dpf.fields_container_factory.over_time_freq_fields_container( ... [dpf.Field(nentities=10)] ... ) >>> field = fc.get_field({"time":1})
- BodyFieldsContainer.get_field_by_time_id(timeid=None)#
Retrieve the complex field at a requested time.
- Parameters:
timeid (int, optional) – Time ID, which is the one-based index of the result set.
- Returns:
fields – Fields corresponding to the request.
- Return type:
- BodyFieldsContainer.get_imaginary_fields(timeid=None)#
Retrieve the complex fields at a requested time.
- Parameters:
timeid (int, optional) – Time ID, which is the one-based index of the result set.
- Returns:
fields – Fields corresponding to the request.
- Return type:
list[Field]
- BodyFieldsContainer.get_imaginary_field(timeid=None)#
Retrieve the complex field at a requested time.
- Parameters:
timeid (int, optional) – Time ID, which is the one-based index of the result set.
- Returns:
fields – Field corresponding to the request.
- Return type:
- BodyFieldsContainer.__getitem__(key) ansys.dpf.core.field.Field #
Retrieve the field at a requested index.
- Parameters:
key (int) – Index.
- Returns:
field – Field corresponding to the request.
- Return type:
- BodyFieldsContainer.add_field(label_space, field)#
Add or update a field at a requested label space.
- Parameters:
label_space (dict[str,int]) – Label space of the requested field. For example, {“time”:1, “complex”:0}.
field (Field) – DPF field to add or update.
Examples
>>> from ansys.dpf import core as dpf >>> fc= dpf.FieldsContainer() >>> fc.labels =['time','complex'] >>> for i in range(0,20): #real fields ... mscop = {"time":i+1,"complex":0} ... fc.add_field(mscop,dpf.Field(nentities=i+10)) >>> for i in range(0,20): #imaginary fields ... mscop = {"time":i+1,"complex":1} ... fc.add_field(mscop,dpf.Field(nentities=i+10))
- BodyFieldsContainer.add_field_by_time_id(field, timeid=1)#
Add or update a field at a requested time ID.
- Parameters:
field (Field) – DPF field to add or update.
timeid (int, optional) – Time ID for the requested time set. The default is
1
.
- BodyFieldsContainer.add_imaginary_field(field, timeid=1)#
Add or update an imaginary field at a requested time ID.
- Parameters:
field (Field) – DPF field to add or update.
timeid (int, optional) – Time ID for the requested time set. The default is
1
.
- BodyFieldsContainer.select_component(index)#
Select fields containing only the component index.
Fields can be selected only by component index as multiple fields may contain a different number of components.
- Parameters:
index (int) – Index of the component.
- Returns:
fields – Fields container with one component selected in each field.
- Return type:
Examples
Select using a component index.
>>> from ansys.dpf import core as dpf >>> from ansys.dpf.core import examples >>> transient = examples.download_transient_result() >>> model = dpf.Model(transient) >>> disp = model.results.displacement() >>> disp.inputs.time_scoping.connect([1,5]) >>> fields_container = disp.outputs.fields_container() >>> disp_x_fields = fields_container.select_component(0) >>> my_field = disp_x_fields[0]
- BodyFieldsContainer.deep_copy(server=None)#
Create a deep copy of the fields container’s data (and its fields) on a given server.
This method is useful for passing data from one server instance to another.
- Parameters:
server (ansys.dpf.core.server, optional) – Server with the channel connected to the remote or local instance. The default is
None
, in which case an attempt is made to use the global server.- Returns:
fields_container_copy
- Return type:
Examples
>>> from ansys.dpf import core as dpf >>> from ansys.dpf.core import examples >>> transient = examples.download_transient_result() >>> model = dpf.Model(transient) >>> disp = model.results.displacement() >>> disp.inputs.time_scoping.connect([1,5]) >>> fields_container = disp.outputs.fields_container() >>> other_server = dpf.start_local_server(as_global=False) >>> deep_copy = fields_container.deep_copy(server=other_server)
- BodyFieldsContainer.get_time_scoping()#
Retrieve the time scoping containing the time sets.
- Returns:
scoping – Scoping containing the time set IDs available in the fields container.
- Return type:
- BodyFieldsContainer.plot(label_space: dict = None, **kwargs)#
Plot the fields in the FieldsContainer for the given LabelSpace.
Check the labels available for the FieldsContainer with
labels()
.- Parameters:
label_space – A dictionary (LabelSpace) of labels of the
FieldsContainer
with associated values to select for plotting. This is used to filter the data to plot, for example: - iflabel_space={'time': 10}
: a single time step (mandatory for transient) - iflabel_space={'complex': 0, 'part': 12}
: real part of complex data for a part Seeget_fields()
. If None is given, it renders all fields available, which may not make sense.**kwargs – For more information on accepted keyword arguments, see
plot()
andDpfPlotter
.
- BodyFieldsContainer.animate(save_as: str = None, deform_by: FieldsContainer | ansys.dpf.core.Result | ansys.dpf.core.Operator = None, scale_factor: float | Sequence[float] = 1.0, shell_layer: ansys.dpf.core.common.shell_layers = shell_layers.top, **kwargs)#
Create an animation based on the Fields contained in the FieldsContainer.
This method creates a movie or a gif based on the time ids of a FieldsContainer. For kwargs see pyvista.Plotter.open_movie/add_text/show.
- Parameters:
save_as – Path of file to save the animation to. Defaults to None. Can be of any format supported by pyvista.Plotter.write_frame (.gif, .mp4, …).
deform_by – Used to deform the plotted mesh. Must return a FieldsContainer of the same length as self, containing 3D vector Fields of distances. Defaults to None, which takes self if possible. Set as False to force static animation.
scale_factor (float, list, optional) – Scale factor to apply when warping the mesh. Defaults to 1.0. Can be a list to make scaling frequency-dependent.
shell_layer – Enum used to set the shell layer if the field to plot contains shell elements. Defaults to top layer.
**kwargs – Additional keyword arguments for the animator. Used by
pyvista.Plotter()
(off_screen, cpos, …), or bypyvista.Plotter.open_movie()
(framerate, quality, …)
- BodyFieldsContainer.__add__(fields_b)#
Add two fields or two fields containers.
- Returns:
add
- Return type:
operators.math.add_fc
- BodyFieldsContainer.__sub__(fields_b)#
Subtract two fields or two fields containers.
- Returns:
minus
- Return type:
operators.math.minus_fc
- BodyFieldsContainer.__pow__(value)#
Compute element-wise field[i]^2.
- BodyFieldsContainer.__mul__(value)#
Multiply two fields or two fields containers.
- Returns:
mul
- Return type:
operators.math.generalized_inner_product_fc
- static BodyFieldsContainer.integral_collection(inpt, server: ansys.dpf.core.server_types.BaseServer = None)#
Create a collection of integral type with a list.
The collection of integral is the equivalent of an array of data sent server side. It can be used to efficiently stream large data to the server.
- Parameters:
inpt (list[float], list[int], numpy.array) – list to transfer server side
- Return type:
Notes
Used by default by the
'Operator'
and the``’Workflow’`` when a list is connected or returned.
- BodyFieldsContainer.set_labels(labels)#
Set labels for scoping the collection.
- Parameters:
labels (list[str], optional) – Labels to scope entries to. For example,
["time", "complex"]
.
- BodyFieldsContainer.add_label(label, default_value=None)#
Add the requested label to scope the collection.
- Parameters:
label (str) – Labels to scope the entries to. For example,
"time"
.default_value (int, optional) – Default value for existing fields in the collection. The default is
None
.
Examples
>>> from ansys.dpf import core as dpf >>> coll = dpf.FieldsContainer() >>> coll.add_label('time')
- BodyFieldsContainer.has_label(label) bool #
Check if a collection has a specified label.
- Parameters:
label (str) – Label to search for. For example,
"time"
.- Returns:
True
when successful,False
when failed.- Return type:
bool
Examples
>>> from ansys.dpf import core as dpf >>> coll = dpf.FieldsContainer() >>> coll.add_label('time') >>> coll.has_label('time') True
>>> coll.has_label('complex') False
- BodyFieldsContainer.get_entries_indices(label_space)#
Retrieve the indices of the entries corresponding a requested label space .
Notes
Available starting with DPF 2025R1.
- Parameters:
label_space (dict[str,int]) – Label space or index. For example,
{"time": 1, "complex": 0}
or the index of the field.- Returns:
indices – Indices of the entries corresponding to the request.
- Return type:
list[int], list[Field], list[MeshedRegion]
- BodyFieldsContainer.get_label_space(index)#
Retrieve the label space of an entry at a requested index.
- Parameters:
index (int) – Index of the entry.
- Returns:
label_space – Scoping of the requested entry. For example,
{"time": 1, "complex": 0}
.- Return type:
dict(str:int)
- BodyFieldsContainer.get_available_ids_for_label(label='time')#
Retrieve the IDs assigned to an input label.
- Parameters:
label (str) – Name of the input label. The default is
"time"
.- Returns:
ids – List of IDs assigned to the input label.
- Return type:
list[int]
- BodyFieldsContainer.get_label_scoping(label='time')#
Retrieve the scoping for an input label.
This method allows you to retrieve a list of IDs for a given input label in the collection. For example, if the label
el_type
exists in the collection, you can use the get_lable_scoping method to retrieve a list of IDS with this label. You can then use these IDs to request a given entity inside the collection.- Parameters:
label (str) – Name of the input label.
- Returns:
scoping – IDs scoped to the input label.
- Return type:
- BodyFieldsContainer.set_support(label: str, support: ansys.dpf.core.support.Support) None #
Set the support of the collection for a given label.
Notes
Available starting with DPF 2023 R1.
- BodyFieldsContainer.get_support(label: str) ansys.dpf.core.support.Support #
Get the support of the collection for a given label.
Notes
Available starting with DPF 2023 R1.
- BodyFieldsContainer.__str__()#
Describe the entity.
- Returns:
description – Description of the entity.
- Return type:
str
- BodyFieldsContainer.__len__()#
Retrieve the number of entries.
- BodyFieldsContainer.__del__()#
Delete the entry.
- BodyFieldsContainer.__iter__()#
Provide for looping through entry items.