diff --git a/doc/source/_static/dpf_operators.html b/doc/source/_static/dpf_operators.html index f765719f93..eed2edc7fb 100644 --- a/doc/source/_static/dpf_operators.html +++ b/doc/source/_static/dpf_operators.html @@ -2117,7 +2117,7 @@

Configurating operators

All coordinates are global coordinates. Euler Angles need to be included in the database. Get the XZ shear component (02 component).">

Inputs

Outputs

Configurations

Scripting

result: cms dst table provider

Inputs

Outputs

Configurations

Scripting

result: spectrum data

Inputs

Outputs

Configurations

Scripting

invariant: eigen vectors (on field)

Inputs

Outputs

Configurations

Scripting

result: mapdl material properties

Inputs

Outputs

Configurations

Scripting

result: mapdl_section

Inputs

Outputs

Configurations

Scripting

result: rom data provider

Inputs

Outputs

Configurations

Scripting

result: transform invariant terms rbd

Inputs

Outputs

Configurations

Scripting

result: compute invariant terms motion

Inputs

Outputs

Configurations

Scripting

result: write motion dfmf file

Inputs

Outputs

Configurations

Scripting

result: split to acmo facet indices

Inputs

Outputs

Configurations

Scripting

math: qr solve

Inputs

Outputs

Configurations

Scripting

serialization: migrate to vtk

Inputs

Outputs

Configurations

Scripting

result: cyclic expanded element heat flux

Inputs

Outputs

Configurations

Scripting

mesh: mesh plan clipper

Inputs

Outputs

Configurations

Scripting

mesh: mesh_to_graphics_edges

Inputs

Outputs

Configurations

Scripting

mesh: combine levelset

Inputs

Outputs

Configurations

Scripting

mesh: exclude levelset

Inputs

Outputs

Configurations

Scripting

mesh: make plane levelset

Inputs

Outputs

Configurations

Scripting

mesh: make sphere levelset

Inputs

Outputs

Configurations

Scripting

mesh: mesh extraction

Inputs

Outputs

Configurations

Scripting

mesh: wireframe

Inputs

Outputs

Configurations

Scripting

mesh: mesh to tetra

Inputs

Outputs

Configurations

Scripting

mapping: fft

Inputs

Outputs

Configurations

Scripting

math: fft gradient evaluation

Inputs

Outputs

Configurations

Scripting

math: fft multi harmonic solution minmax

Inputs

Outputs

Configurations

Scripting

math: svd

Inputs

Outputs

Configurations

Scripting

mapping: prep sampling fft

Inputs

Outputs

Configurations

Scripting

math: fft filtering and cubic fitting

Inputs

Outputs

Configurations

Scripting

math: window triangular

Inputs

Outputs

Configurations

Scripting

math: window hanning

Inputs

Outputs

Configurations

Scripting

math: window hamming

Inputs

Outputs

Configurations

Scripting

math: window welch

Inputs

Outputs

Configurations

Scripting

math: window blackman

Inputs

Outputs

Configurations

Scripting

math: window triangular (fields container)

Inputs

Outputs

Configurations

Scripting

math: window hanning (fields container)

Inputs

Outputs

Configurations

Scripting

math: window hamming (fields container)

Inputs

Outputs

Configurations

Scripting

math: window welch (fields container)

Inputs

Outputs

Configurations

Scripting

math: window blackman (fields container)

Inputs

Outputs

Configurations

Scripting

serialization: hdf5dpf generate result file

Inputs

Outputs

Configurations

Scripting

result: migrate to h5dpf

Inputs

Outputs

Configurations

Scripting

result: cgns result provider

Inputs

Outputs

Configurations

Scripting

utility: hdf5dpf workflow provider

Inputs

Outputs

Configurations

Scripting

other: hdf5dpf mesh property provider

Inputs

Outputs

Configurations

Scripting

serialization: migrate to vtu

Inputs

Outputs

Configurations

Scripting

serialization: vtu export

Inputs

Outputs

Configurations

Scripting

result: compute total strain Y

Inputs

Outputs

Configurations

Scripting

math: window triangular

Inputs

Outputs

Configurations

Scripting

math: window hanning

Inputs

Outputs

Configurations

Scripting

math: window hamming

Inputs

Outputs

Configurations

Scripting

math: window welch

Inputs

Outputs

Configurations

Scripting

math: window blackman

Inputs

Outputs

Configurations

Scripting

math: window triangular (fields container)

Inputs

Outputs

Configurations

Scripting

math: window hanning (fields container)

Inputs

Outputs

Configurations

Scripting

math: window hamming (fields container)

Inputs

Outputs

Configurations

Scripting

math: window welch (fields container)

Inputs

Outputs

Configurations

Scripting

math: window blackman (fields container)

Inputs

Outputs

Configurations

Scripting

serialization: hdf5dpf generate result file

Inputs

Outputs

Configurations

Scripting

result: migrate to h5dpf

Inputs

Outputs

Configurations

Scripting

result: cgns result provider

Inputs

Outputs

Configurations

Scripting

utility: hdf5dpf workflow provider

Inputs

Outputs

Configurations

Scripting

other: hdf5dpf mesh property provider

Inputs

Outputs

Configurations

Scripting

serialization: migrate to vtu

Inputs

Outputs

Configurations

Scripting

serialization: vtu export

Inputs

Outputs

Configurations

Scripting

result: compute total strain Y

", "string_field"], + optional=True, + document="""List of names of mesh properties to export.""", + ), }, map_output_pin_spec={ 0: PinSpecification( @@ -257,6 +275,8 @@ class InputsVtuExport(_Inputs): >>> op.inputs.as_point_cloud.connect(my_as_point_cloud) >>> my_export_faces = bool() >>> op.inputs.export_faces.connect(my_export_faces) + >>> my_mesh_properties = dpf.StringField() + >>> op.inputs.mesh_properties.connect(my_mesh_properties) """ def __init__(self, op: Operator): @@ -277,6 +297,8 @@ def __init__(self, op: Operator): self._inputs.append(self._as_point_cloud) self._export_faces = Input(vtu_export._spec().input_pin(102), 102, op, -1) self._inputs.append(self._export_faces) + self._mesh_properties = Input(vtu_export._spec().input_pin(103), 103, op, -1) + self._inputs.append(self._mesh_properties) @property def directory(self): @@ -342,14 +364,15 @@ def mesh(self): def fields1(self): """Allows to connect fields1 input to the operator. - Nodal, face, or elemental fields (over time) - to export. when there is no support - available in the exported mesh, that - data is ignored. + Nodal, face, or elemental field, fields + container (over time), or property + field to export. when there is no + support available in the exported + mesh, that data is ignored. Parameters ---------- - my_fields1 : Field or FieldsContainer + my_fields1 : Field or FieldsContainer or PropertyField Examples -------- @@ -365,14 +388,15 @@ def fields1(self): def fields2(self): """Allows to connect fields2 input to the operator. - Nodal, face, or elemental fields (over time) - to export. when there is no support - available in the exported mesh, that - data is ignored. + Nodal, face, or elemental field, fields + container (over time), or property + field to export. when there is no + support available in the exported + mesh, that data is ignored. Parameters ---------- - my_fields2 : Field or FieldsContainer + my_fields2 : Field or FieldsContainer or PropertyField Examples -------- @@ -449,6 +473,26 @@ def export_faces(self): """ return self._export_faces + @property + def mesh_properties(self): + """Allows to connect mesh_properties input to the operator. + + List of names of mesh properties to export. + + Parameters + ---------- + my_mesh_properties : StringField + + Examples + -------- + >>> from ansys.dpf import core as dpf + >>> op = dpf.operators.serialization.vtu_export() + >>> op.inputs.mesh_properties.connect(my_mesh_properties) + >>> # or + >>> op.inputs.mesh_properties(my_mesh_properties) + """ + return self._mesh_properties + class OutputsVtuExport(_Outputs): """Intermediate class used to get outputs from diff --git a/src/ansys/dpf/gate/generated/capi.py b/src/ansys/dpf/gate/generated/capi.py index a431711326..d0d41bd106 100644 --- a/src/ansys/dpf/gate/generated/capi.py +++ b/src/ansys/dpf/gate/generated/capi.py @@ -1187,6 +1187,10 @@ def load_api(path): dll.DpfVector_char_ptr_free.argtypes = (ctypes.c_void_p, ctypes.POINTER(ctypes.POINTER(ctypes.POINTER(ctypes.c_char))), ctypes.POINTER(ctypes.c_int32), ctypes.c_bool, ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) dll.DpfVector_char_ptr_free.restype = None + if hasattr(dll, "DpfVector_char_ptr_free_for_next_usage"): + dll.DpfVector_char_ptr_free_for_next_usage.argtypes = (ctypes.c_void_p, ctypes.POINTER(ctypes.POINTER(ctypes.POINTER(ctypes.c_char))), ctypes.POINTER(ctypes.c_int32), ctypes.c_bool, ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) + dll.DpfVector_char_ptr_free_for_next_usage.restype = None + if hasattr(dll, "DpfVector_double_commit"): dll.DpfVector_double_commit.argtypes = (ctypes.c_void_p, ctypes.POINTER(ctypes.c_double), ctypes.c_int32, ctypes.c_bool, ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) dll.DpfVector_double_commit.restype = None @@ -3759,6 +3763,14 @@ def load_api(path): dll.CSStringField_GetEntityDataById_For_DpfVector.argtypes = (ctypes.c_void_p, ctypes.c_void_p, ctypes.POINTER(ctypes.POINTER(ctypes.POINTER(ctypes.c_char))), ctypes.POINTER(ctypes.c_int32), ctypes.c_int32, ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) dll.CSStringField_GetEntityDataById_For_DpfVector.restype = None + if hasattr(dll, "StringField_GetEntityData_For_DpfVector"): + dll.StringField_GetEntityData_For_DpfVector.argtypes = (ctypes.c_void_p, ctypes.c_void_p, ctypes.POINTER(ctypes.POINTER(ctypes.POINTER(ctypes.c_char))), ctypes.POINTER(ctypes.c_int32), ctypes.c_int32, ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) + dll.StringField_GetEntityData_For_DpfVector.restype = None + + if hasattr(dll, "StringField_GetEntityDataById_For_DpfVector"): + dll.StringField_GetEntityDataById_For_DpfVector.argtypes = (ctypes.c_void_p, ctypes.c_void_p, ctypes.POINTER(ctypes.POINTER(ctypes.POINTER(ctypes.c_char))), ctypes.POINTER(ctypes.c_int32), ctypes.c_int32, ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) + dll.StringField_GetEntityDataById_For_DpfVector.restype = None + if hasattr(dll, "CSStringField_GetCScoping"): dll.CSStringField_GetCScoping.argtypes = (ctypes.c_void_p, ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) dll.CSStringField_GetCScoping.restype = ctypes.c_void_p @@ -3779,6 +3791,10 @@ def load_api(path): dll.CSStringField_PushBack.argtypes = (ctypes.c_void_p, ctypes.c_int32, ctypes.c_int32, ctypes.POINTER(ctypes.POINTER(ctypes.c_char)), ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) dll.CSStringField_PushBack.restype = None + if hasattr(dll, "StringField_PushBack"): + dll.StringField_PushBack.argtypes = (ctypes.c_void_p, ctypes.c_int32, ctypes.c_int32, ctypes.POINTER(ctypes.POINTER(ctypes.c_char)), ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) + dll.StringField_PushBack.restype = None + if hasattr(dll, "CSStringField_Resize"): dll.CSStringField_Resize.argtypes = (ctypes.c_void_p, ctypes.c_int32, ctypes.c_int32, ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) dll.CSStringField_Resize.restype = None @@ -3787,6 +3803,10 @@ def load_api(path): dll.CSStringField_Reserve.argtypes = (ctypes.c_void_p, ctypes.c_int32, ctypes.c_int32, ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) dll.CSStringField_Reserve.restype = None + if hasattr(dll, "StringField_fast_access_ptr"): + dll.StringField_fast_access_ptr.argtypes = (ctypes.c_void_p, ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) + dll.StringField_fast_access_ptr.restype = ctypes.c_void_p + if hasattr(dll, "CSStringField_new_on_client"): dll.CSStringField_new_on_client.argtypes = (ctypes.c_void_p, ctypes.c_int32, ctypes.c_int32, ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_wchar_p), ) dll.CSStringField_new_on_client.restype = ctypes.c_void_p diff --git a/src/ansys/dpf/gate/generated/dpf_vector_abstract_api.py b/src/ansys/dpf/gate/generated/dpf_vector_abstract_api.py index 0c363aedb9..4772a2c58d 100644 --- a/src/ansys/dpf/gate/generated/dpf_vector_abstract_api.py +++ b/src/ansys/dpf/gate/generated/dpf_vector_abstract_api.py @@ -31,6 +31,10 @@ def dpf_vector_int_free(dpf_vector, data, size, modified): def dpf_vector_char_ptr_free(dpf_vector, data, size, modified): raise NotImplementedError + @staticmethod + def dpf_vector_char_ptr_free_for_next_usage(dpf_vector, data, size, modified): + raise NotImplementedError + @staticmethod def dpf_vector_double_commit(dpf_vector, data, size, modified): raise NotImplementedError diff --git a/src/ansys/dpf/gate/generated/dpf_vector_capi.py b/src/ansys/dpf/gate/generated/dpf_vector_capi.py index a281885744..0b09ac8cc4 100644 --- a/src/ansys/dpf/gate/generated/dpf_vector_capi.py +++ b/src/ansys/dpf/gate/generated/dpf_vector_capi.py @@ -62,6 +62,15 @@ def dpf_vector_char_ptr_free(dpf_vector, data, size, modified): raise errors.DPFServerException(sError.value) return res + @staticmethod + def dpf_vector_char_ptr_free_for_next_usage(dpf_vector, data, size, modified): + errorSize = ctypes.c_int(0) + sError = ctypes.c_wchar_p() + res = capi.dll.DpfVector_char_ptr_free_for_next_usage(dpf_vector._internal_obj, utils.to_char_ptr_ptr_ptr(data), utils.to_int32_ptr(size), modified, ctypes.byref(utils.to_int32(errorSize)), ctypes.byref(sError)) + if errorSize.value != 0: + raise errors.DPFServerException(sError.value) + return res + @staticmethod def dpf_vector_double_commit(dpf_vector, data, size, modified): errorSize = ctypes.c_int(0) diff --git a/src/ansys/dpf/gate/generated/string_field_abstract_api.py b/src/ansys/dpf/gate/generated/string_field_abstract_api.py index 0f46732b5a..9400ff1ce0 100644 --- a/src/ansys/dpf/gate/generated/string_field_abstract_api.py +++ b/src/ansys/dpf/gate/generated/string_field_abstract_api.py @@ -39,6 +39,14 @@ def csstring_field_get_entity_data_for_dpf_vector(dpf_object, out, data, size, E def csstring_field_get_entity_data_by_id_for_dpf_vector(dpf_object, vec, data, size, EntityId): raise NotImplementedError + @staticmethod + def string_field_get_entity_data_for_dpf_vector(dpf_object, out, data, size, EntityIndex): + raise NotImplementedError + + @staticmethod + def string_field_get_entity_data_by_id_for_dpf_vector(dpf_object, vec, data, size, EntityId): + raise NotImplementedError + @staticmethod def csstring_field_get_cscoping(field): raise NotImplementedError @@ -59,6 +67,10 @@ def csstring_field_set_cscoping(field, scoping): def csstring_field_push_back(field, EntityId, size, data): raise NotImplementedError + @staticmethod + def string_field_push_back(field, EntityId, size, data): + raise NotImplementedError + @staticmethod def csstring_field_resize(field, dataSize, scopingSize): raise NotImplementedError @@ -67,6 +79,10 @@ def csstring_field_resize(field, dataSize, scopingSize): def csstring_field_reserve(field, dataSize, scopingSize): raise NotImplementedError + @staticmethod + def string_field_fast_access_ptr(field): + raise NotImplementedError + @staticmethod def csstring_field_new_on_client(client, numEntities, data_size): raise NotImplementedError diff --git a/src/ansys/dpf/gate/generated/string_field_capi.py b/src/ansys/dpf/gate/generated/string_field_capi.py index bf3373c558..3aaeff9cf9 100644 --- a/src/ansys/dpf/gate/generated/string_field_capi.py +++ b/src/ansys/dpf/gate/generated/string_field_capi.py @@ -82,6 +82,24 @@ def csstring_field_get_entity_data_by_id_for_dpf_vector(dpf_object, vec, data, s raise errors.DPFServerException(sError.value) return res + @staticmethod + def string_field_get_entity_data_for_dpf_vector(dpf_object, out, data, size, EntityIndex): + errorSize = ctypes.c_int(0) + sError = ctypes.c_wchar_p() + res = capi.dll.StringField_GetEntityData_For_DpfVector(dpf_object, out._internal_obj, utils.to_char_ptr_ptr_ptr(data), utils.to_int32_ptr(size), utils.to_int32(EntityIndex), ctypes.byref(utils.to_int32(errorSize)), ctypes.byref(sError)) + if errorSize.value != 0: + raise errors.DPFServerException(sError.value) + return res + + @staticmethod + def string_field_get_entity_data_by_id_for_dpf_vector(dpf_object, vec, data, size, EntityId): + errorSize = ctypes.c_int(0) + sError = ctypes.c_wchar_p() + res = capi.dll.StringField_GetEntityDataById_For_DpfVector(dpf_object, vec._internal_obj, utils.to_char_ptr_ptr_ptr(data), utils.to_int32_ptr(size), utils.to_int32(EntityId), ctypes.byref(utils.to_int32(errorSize)), ctypes.byref(sError)) + if errorSize.value != 0: + raise errors.DPFServerException(sError.value) + return res + @staticmethod def csstring_field_get_cscoping(field): errorSize = ctypes.c_int(0) @@ -127,6 +145,15 @@ def csstring_field_push_back(field, EntityId, size, data): raise errors.DPFServerException(sError.value) return res + @staticmethod + def string_field_push_back(field, EntityId, size, data): + errorSize = ctypes.c_int(0) + sError = ctypes.c_wchar_p() + res = capi.dll.StringField_PushBack(field, utils.to_int32(EntityId), utils.to_int32(size), utils.to_char_ptr_ptr(data), ctypes.byref(utils.to_int32(errorSize)), ctypes.byref(sError)) + if errorSize.value != 0: + raise errors.DPFServerException(sError.value) + return res + @staticmethod def csstring_field_resize(field, dataSize, scopingSize): errorSize = ctypes.c_int(0) @@ -145,6 +172,15 @@ def csstring_field_reserve(field, dataSize, scopingSize): raise errors.DPFServerException(sError.value) return res + @staticmethod + def string_field_fast_access_ptr(field): + errorSize = ctypes.c_int(0) + sError = ctypes.c_wchar_p() + res = capi.dll.StringField_fast_access_ptr(field._internal_obj if field is not None else None, ctypes.byref(utils.to_int32(errorSize)), ctypes.byref(sError)) + if errorSize.value != 0: + raise errors.DPFServerException(sError.value) + return res + @staticmethod def csstring_field_new_on_client(client, numEntities, data_size): errorSize = ctypes.c_int(0) diff --git a/src/ansys/dpf/gatebin/Ans.Dpf.GrpcClient.dll b/src/ansys/dpf/gatebin/Ans.Dpf.GrpcClient.dll index 09e1d16785..21db002192 100644 Binary files a/src/ansys/dpf/gatebin/Ans.Dpf.GrpcClient.dll and b/src/ansys/dpf/gatebin/Ans.Dpf.GrpcClient.dll differ diff --git a/src/ansys/dpf/gatebin/DPFClientAPI.dll b/src/ansys/dpf/gatebin/DPFClientAPI.dll index 0952abfebb..f770f9b8d9 100644 Binary files a/src/ansys/dpf/gatebin/DPFClientAPI.dll and b/src/ansys/dpf/gatebin/DPFClientAPI.dll differ diff --git a/src/ansys/dpf/gatebin/libAns.Dpf.GrpcClient.so b/src/ansys/dpf/gatebin/libAns.Dpf.GrpcClient.so index 562cb84aa0..acf616944d 100644 Binary files a/src/ansys/dpf/gatebin/libAns.Dpf.GrpcClient.so and b/src/ansys/dpf/gatebin/libAns.Dpf.GrpcClient.so differ diff --git a/src/ansys/dpf/gatebin/libDPFClientAPI.so b/src/ansys/dpf/gatebin/libDPFClientAPI.so index 09bb5c1b99..0f0d236061 100644 Binary files a/src/ansys/dpf/gatebin/libDPFClientAPI.so and b/src/ansys/dpf/gatebin/libDPFClientAPI.so differ