diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml index 3aba97f106..fb22edab7e 100644 --- a/.github/workflows/ci_cd.yml +++ b/.github/workflows/ci_cd.yml @@ -15,7 +15,7 @@ on: env: DOCKER_IMAGE_NAME: ghcr.io/ansys/prime - DOCKER_IMAGE_TAG: '25.1.0.dev19' + DOCKER_IMAGE_TAG: '25.1.0.dev20' MAIN_PYTHON_VERSION: '3.10' PACKAGE_NAME: 'ansys-meshing-prime' PACKAGE_NAMESPACE: 'ansys.meshing.prime' diff --git a/doc/changelog.d/934.maintenance.md b/doc/changelog.d/934.maintenance.md new file mode 100644 index 0000000000..f6b3a86497 --- /dev/null +++ b/doc/changelog.d/934.maintenance.md @@ -0,0 +1 @@ +MAINT: update code from ADO 0.7.0.dev20 \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 506887c982..d1b7fa90e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi" [project] name = "ansys-meshing-prime" -version = "0.7.0.dev19" +version = "0.7.0.dev20" description = "PyPrimeMesh is a Python client to Ansys Prime Server, which delivers core Ansys meshing technology." readme = "README.md" requires-python = ">=3.10,<4" diff --git a/src/ansys/meshing/prime/autogen/igastructs.py b/src/ansys/meshing/prime/autogen/igastructs.py index 3fb23c2713..0da52bc332 100644 --- a/src/ansys/meshing/prime/autogen/igastructs.py +++ b/src/ansys/meshing/prime/autogen/igastructs.py @@ -1070,6 +1070,8 @@ class QuadToSplineParams(CoreObject): **This is a beta parameter**. **The behavior and name may change in the future**. zone_name_shell_thickness_pairs: Dict[str, Union[str, int, float, bool]], optional Zone name and thickness pair list. For example, {"Zone1Name": Zone1Thickness, "Zone2Name": Zone2Thickness, ...}. + + **This is a beta parameter**. **The behavior and name may change in the future**. project_on_geometry: bool, optional Option to project on geometry. @@ -1161,6 +1163,8 @@ def __init__( **This is a beta parameter**. **The behavior and name may change in the future**. zone_name_shell_thickness_pairs: Dict[str, Union[str, int, float, bool]], optional Zone name and thickness pair list. For example, {"Zone1Name": Zone1Thickness, "Zone2Name": Zone2Thickness, ...}. + + **This is a beta parameter**. **The behavior and name may change in the future**. project_on_geometry: bool, optional Option to project on geometry. @@ -1387,6 +1391,8 @@ def separate_by_zone(self, value: bool): @property def zone_name_shell_thickness_pairs(self) -> Dict[str, Union[str, int, float, bool]]: """Zone name and thickness pair list. For example, {"Zone1Name": Zone1Thickness, "Zone2Name": Zone2Thickness, ...}. + + **This is a beta parameter**. **The behavior and name may change in the future**. """ return self._zone_name_shell_thickness_pairs diff --git a/src/ansys/meshing/prime/autogen/model.py b/src/ansys/meshing/prime/autogen/model.py index 4f3f3b42a6..fbd6dab0fe 100644 --- a/src/ansys/meshing/prime/autogen/model.py +++ b/src/ansys/meshing/prime/autogen/model.py @@ -307,6 +307,7 @@ def set_suggested_size_field_name(self, size_field_id : int, name : str) -> SetN def get_size_field_name(self, size_field_id : int) -> str: """ Gets the name of size field with the given id. + Parameters ---------- size_field_id : int @@ -316,7 +317,8 @@ def get_size_field_name(self, size_field_id : int) -> str: ------- str Returns the name of the size field. - + + Notes ----- **This is a beta API**. **The behavior and implementation may change in future**. @@ -604,7 +606,8 @@ def set_working_directory(self, path : str): Examples -------- - >>> model = prime.local_model + >>> client = prime.launch_prime() + >>> model = client.model >>> zones = model.set_working_directory("C:/input_files") """ diff --git a/src/ansys/meshing/prime/autogen/primeconfig.py b/src/ansys/meshing/prime/autogen/primeconfig.py index 4439140213..dbae59b052 100644 --- a/src/ansys/meshing/prime/autogen/primeconfig.py +++ b/src/ansys/meshing/prime/autogen/primeconfig.py @@ -926,6 +926,8 @@ class WarningCode(enum.IntEnum): """Writing of contact pairs skipped.""" WRITINGTIESSKIPPED = 11103 """Writing of ties skipped.""" + WRITINGZONELETOFLABELTOELEMENTCOMPONENTSKIPPED = 11104 + """Writing of zonelet skipped while exporting label as element component.""" VT_SKIPPEDPROTECTEDENTITIES = 100001 """Input contains protected entities which have been skipped. diff --git a/src/ansys/meshing/prime/autogen/shellblcontrolstructs.py b/src/ansys/meshing/prime/autogen/shellblcontrolstructs.py index e036b929fb..1b115fd8d8 100644 --- a/src/ansys/meshing/prime/autogen/shellblcontrolstructs.py +++ b/src/ansys/meshing/prime/autogen/shellblcontrolstructs.py @@ -39,12 +39,20 @@ class ShellBLControlGrowthParams(CoreObject): Model to create a ``ShellBLControlGrowthParams`` object with default parameters. n_layers: int, optional Number of layers to be generated. + + **This is a beta parameter**. **The behavior and name may change in the future**. offset_type: ShellBLOffsetType, optional Offset type for ShellBL. + + **This is a beta parameter**. **The behavior and name may change in the future**. growth_rate: float, optional Ratio of heights of current layer to previous layer. + + **This is a beta parameter**. **The behavior and name may change in the future**. first_height: float, optional Height of first layer of ShellBL. + + **This is a beta parameter**. **The behavior and name may change in the future**. json_data: dict, optional JSON dictionary to create a ``ShellBLControlGrowthParams`` object with provided parameters. @@ -82,12 +90,20 @@ def __init__( Model to create a ``ShellBLControlGrowthParams`` object with default parameters. n_layers: int, optional Number of layers to be generated. + + **This is a beta parameter**. **The behavior and name may change in the future**. offset_type: ShellBLOffsetType, optional Offset type for ShellBL. + + **This is a beta parameter**. **The behavior and name may change in the future**. growth_rate: float, optional Ratio of heights of current layer to previous layer. + + **This is a beta parameter**. **The behavior and name may change in the future**. first_height: float, optional Height of first layer of ShellBL. + + **This is a beta parameter**. **The behavior and name may change in the future**. json_data: dict, optional JSON dictionary to create a ``ShellBLControlGrowthParams`` object with provided parameters. @@ -182,6 +198,8 @@ def __str__(self) -> str: @property def n_layers(self) -> int: """Number of layers to be generated. + + **This is a beta parameter**. **The behavior and name may change in the future**. """ return self._n_layers @@ -192,6 +210,8 @@ def n_layers(self, value: int): @property def offset_type(self) -> ShellBLOffsetType: """Offset type for ShellBL. + + **This is a beta parameter**. **The behavior and name may change in the future**. """ return self._offset_type @@ -202,6 +222,8 @@ def offset_type(self, value: ShellBLOffsetType): @property def growth_rate(self) -> float: """Ratio of heights of current layer to previous layer. + + **This is a beta parameter**. **The behavior and name may change in the future**. """ return self._growth_rate @@ -212,6 +234,8 @@ def growth_rate(self, value: float): @property def first_height(self) -> float: """Height of first layer of ShellBL. + + **This is a beta parameter**. **The behavior and name may change in the future**. """ return self._first_height diff --git a/src/ansys/meshing/prime/autogen/surfer.py b/src/ansys/meshing/prime/autogen/surfer.py index 32126f5bb6..c2c224970d 100644 --- a/src/ansys/meshing/prime/autogen/surfer.py +++ b/src/ansys/meshing/prime/autogen/surfer.py @@ -194,7 +194,7 @@ def remesh_face_zonelets_locally(self, face_zonelets : Iterable[int], register_i self._model._print_logs_after_command("remesh_face_zonelets_locally", LocalSurferResults(model = self._model, json_data = result)) return LocalSurferResults(model = self._model, json_data = result) - def create_shell_bl_using_controls(self, part_id : int, shellbl_control_ids : Iterable[int], shellbl_params : ShellBLParams) -> CreateShellBLResults: + def create_shell_bl_using_controls(self, part_id : int, shell_bl_control_ids : Iterable[int], shell_bl_params : ShellBLParams) -> CreateShellBLResults: """ Creates ShellBL using data stored in controls. @@ -202,9 +202,9 @@ def create_shell_bl_using_controls(self, part_id : int, shellbl_control_ids : It ---------- part_id : int Id of the part. - shellbl_control_ids : Iterable[int] + shell_bl_control_ids : Iterable[int] Ids of ShellBL control. - shellbl_params : ShellBLParams + shell_bl_params : ShellBLParams Parameters related to ShellBL. Returns @@ -219,18 +219,18 @@ def create_shell_bl_using_controls(self, part_id : int, shellbl_control_ids : It Examples -------- - >>> results = surfer.create_shellbl_using_controls(part_id,shellbl_control_ids,shellbl_params) + >>> results = surfer.create_shell_bl_using_controls(part_id,shell_bl_control_ids,shell_bl_params) """ if not isinstance(part_id, int): raise TypeError("Invalid argument type passed for 'part_id'. Valid argument type is int.") - if not isinstance(shellbl_control_ids, Iterable): - raise TypeError("Invalid argument type passed for 'shellbl_control_ids'. Valid argument type is Iterable[int].") - if not isinstance(shellbl_params, ShellBLParams): - raise TypeError("Invalid argument type passed for 'shellbl_params'. Valid argument type is ShellBLParams.") + if not isinstance(shell_bl_control_ids, Iterable): + raise TypeError("Invalid argument type passed for 'shell_bl_control_ids'. Valid argument type is Iterable[int].") + if not isinstance(shell_bl_params, ShellBLParams): + raise TypeError("Invalid argument type passed for 'shell_bl_params'. Valid argument type is ShellBLParams.") args = {"part_id" : part_id, - "shellbl_control_ids" : shellbl_control_ids, - "shellbl_params" : shellbl_params._jsonify()} + "shell_bl_control_ids" : shell_bl_control_ids, + "shell_bl_params" : shell_bl_params._jsonify()} command_name = "PrimeMesh::Surfer/CreateShellBLUsingControls" self._model._print_beta_api_warning("create_shell_bl_using_controls") self._model._print_logs_before_command("create_shell_bl_using_controls", args) diff --git a/src/ansys/meshing/prime/autogen/toposearchstructs.py b/src/ansys/meshing/prime/autogen/toposearchstructs.py index cee7f114a9..191dcb6535 100644 --- a/src/ansys/meshing/prime/autogen/toposearchstructs.py +++ b/src/ansys/meshing/prime/autogen/toposearchstructs.py @@ -61,7 +61,15 @@ class TopoSearchField(enum.IntEnum): """Diagnoses topofaces with small topoedges. **This is a beta parameter**. **The behavior and name may change in the future**.""" - NUMBEROFFIELDS = 7 + INCORRECTBOUNDARYORIENTATIONTOPOFACES = 7 + """Diagnoses topofaces with incorrect boundary orientations. + + **This is a beta parameter**. **The behavior and name may change in the future**.""" + INCONSISTENTNORMALORIENTATIONTOPOFACES = 8 + """Diagnoses topofaces with inconsistent normal orientations. + + **This is a beta parameter**. **The behavior and name may change in the future**.""" + NUMBEROFFIELDS = 9 """Diagnoses all topofaces. **This is a beta parameter**. **The behavior and name may change in the future**.""" diff --git a/src/ansys/meshing/prime/core/fileio.py b/src/ansys/meshing/prime/core/fileio.py index a5cd66b116..e91e45f0a1 100644 --- a/src/ansys/meshing/prime/core/fileio.py +++ b/src/ansys/meshing/prime/core/fileio.py @@ -631,11 +631,10 @@ def import_cad(self, file_name: str, params: ImportCadParams) -> ImportCadResult Examples -------- >>> import ansys.meshing.prime as prime - >>> # connect client to server and get model from it - >>> client = prime.Client(ip="localhost", port=50060) - >>> model = client.model + >>> prime_client = prime.launch_prime() + >>> model = prime_client.model >>> file_io = prime.FileIO(model=model) - >>> params = prime.ImportCadParams(model=model) + >>> params = prime.ImportCadParams(model=model) >>> results = file_io.import_cad("/tmp/my_cad.x_t", params=params) """ diff --git a/src/ansys/meshing/prime/core/mapdlcdbexportutils.py b/src/ansys/meshing/prime/core/mapdlcdbexportutils.py index c21c14b4fa..2886d80b10 100644 --- a/src/ansys/meshing/prime/core/mapdlcdbexportutils.py +++ b/src/ansys/meshing/prime/core/mapdlcdbexportutils.py @@ -2702,6 +2702,7 @@ class _StepProcessor: '_model', '_logger', '_model_application', + '_transient_output_controls', ) def __init__(self, model: prime.Model, data, sim_data, model_application): @@ -2728,6 +2729,7 @@ def __init__(self, model: prime.Model, data, sim_data, model_application): self._model = model self._logger = model.python_logger self._model_application = model_application + self._transient_output_controls = "" def get_cload_ampl_commands(self): return self._cload_ampl_commands @@ -2815,10 +2817,14 @@ def get_static_analysis_data(self, static_data): ) if self._previous_analysis != "STATIC": if self._model_application == prime.CdbAnalysisType.OUTERPANELSTIFFNESS: - static_analysis_commands += 'ANTYPE, TRANSIENT\n' - static_analysis_commands += 'TIMINT, ON\n' - static_analysis_commands += 'TINTP, QUASI\n' - static_analysis_commands += 'NROPT, FULL\n' + use_quasi = os.getenv("APDL_QUASI") + if use_quasi == "1": + static_analysis_commands += 'ANTYPE, TRANSIENT\n' + static_analysis_commands += 'TIMINT, ON\n' + static_analysis_commands += 'TINTP, QUASI\n' + static_analysis_commands += 'NROPT, FULL\n' + else: + static_analysis_commands += 'ANTYPE, STATIC\n' else: static_analysis_commands += 'ANTYPE, STATIC\n' static_analysis_commands += f'TIME,{self._time}\n' @@ -3056,12 +3062,12 @@ def get_frequency_analysis_data(self, frequency_data): cpxmod = '' nrm_key = 'OFF' res_modes = None - data = frequency_data['Data'] - if 'Data' in frequency_data and type(data) == list: + data = frequency_data['Data'] if 'Data' in frequency_data else None + if data is not None and isinstance(data, list): first_line = data[0] else: first_line = data - if data is not None: + if first_line is not None: if 'num_eigenvalues' in first_line: nmodes = int(first_line['num_eigenvalues']) if 'min_frequency' in first_line: @@ -3070,11 +3076,11 @@ def get_frequency_analysis_data(self, frequency_data): max_frequency = float(first_line['max_frequency']) if 'Parameters' in frequency_data: data = frequency_data['Parameters'] - if 'EIGENSOLVER' in data: + if data is not None and 'EIGENSOLVER' in data: if data['EIGENSOLVER'] == 'SUBSPACE': modopt_method = 'SUBSP' # self._logger.info(f"Modal_analysis PArameters: {data}") - if 'NORMALIZATION' in data: + if data is not None and 'NORMALIZATION' in data: # self._logger.info(f"Modal_analysis PArameters: {data}") # self._logger.info(f"Modal_analysis norm: {data['NORMALIZATION']}") if data['NORMALIZATION'] == 'MASS': @@ -3084,11 +3090,11 @@ def get_frequency_analysis_data(self, frequency_data): else: # self._logger.info(f"Modal_analysis PArameters: {data}") # self._logger.info(f"Modal_analysis eigensolver: {data['EIGENSOLVER']}") - if 'EIGENSOLVER' in data and data['EIGENSOLVER'] == 'AMS': + if data is not None and 'EIGENSOLVER' in data and data['EIGENSOLVER'] == 'AMS': nrm_key = 'OFF' else: nrm_key = 'ON' - if 'RESIDUAL MODES' in data: + if data is not None and 'RESIDUAL MODES' in data: res_modes = 'ON' self._previous_modal_resvec = 'ON' if self._simulation_data is not None: @@ -3348,14 +3354,6 @@ def get_output_analysis_data(self, output_data): pass output_analysis_commands += "\n" - if self._model_application == prime.CdbAnalysisType.OUTERPANELSTIFFNESS: - output_analysis_commands += "ESEL,S,ENAME,,181\n" - output_analysis_commands += "ESEL,A,ENAME,,281\n" - output_analysis_commands += "CM,SHELL_THICKNESS_STORAGE,ELEM\n" - output_analysis_commands += "ALLSEL\n" - output_analysis_commands += "OUTRES, MISC, LAST, SHELL_THICKNESS_STORAGE, ,\n" - output_analysis_commands += "\n" - number_interval_to_table = False for output in output_data: minimum_time_interval = self.get_output_time_interval() @@ -3579,6 +3577,7 @@ def get_output_analysis_data(self, output_data): "MISESMAX", "PEEQ", "PEEQMAX", + "STH", ]: output_analysis_commands += "OUTRES, " if key in ["S", "SINV", "MISESMAX"]: @@ -3664,6 +3663,42 @@ def get_output_analysis_data(self, output_data): + "OUTRES, " + out_cmds.replace("EPPL", "NLDAT") ) + elif key == "STH": + comp_name = "" + out_cmds = "" + if ( + 'Parameters' in elemout + and elemout['Parameters'] is not None + and 'ELSET' in elemout['Parameters'] + ): + comp_name += get_modified_component_name( + elemout['Parameters']['ELSET'], + 'ELSET', + self._simulation_data, + ) + else: + out_cmds += "ESEL, S, ENAME, , 181\n" + out_cmds += "ESEL, A, ENAME, , 281\n" + out_cmds += "CM, SHELL_THICKNESS_STORAGE, ELEM\n" + out_cmds += "ALLSEL\n" + comp_name += "SHELL_THICKNESS_STORAGE" + output_analysis_commands = output_analysis_commands[:-8] + output_analysis_commands += out_cmds + output_analysis_commands += "OUTRES, " + output_analysis_commands += "MISC, " + if time_points is not None: + output_analysis_commands += f'%{time_points}%, ' + else: + if ninterval: + if number_interval_to_table: + output_analysis_commands += f'%{ninterval}%, ' + else: + output_analysis_commands += f'-{ninterval}, ' + elif nfreq: + output_analysis_commands += f'{nfreq}, ' + else: + output_analysis_commands += 'ALL, ' + output_analysis_commands += comp_name elif key == "LE": output_analysis_commands += "EPEL, " if time_points is not None: @@ -4034,7 +4069,14 @@ def _process_step(self, step_data): # self._logger.info('in Keys') # self._logger.info(function_maps(step_data[key])) function = function_maps[key] - mapdl_step_commands += function(step_data[key]) + key_commands = function(step_data[key]) + mapdl_step_commands += key_commands + if key == "Output" and "Dynamic" in step_data: + if "STATIC" in self._analysis_sequence and "DYNAMIC" in self._analysis_sequence: + self._transient_output_controls = key_commands + if key == "Output" and "Static" in step_data: + if "STATIC" in self._analysis_sequence and "DYNAMIC" in self._analysis_sequence: + mapdl_step_commands += "Placeholder_Transient_Outres\n" # else: # self._logger.warning("\nkey not found ", key) # self._logger.info(mapdl_step_commands) @@ -4088,7 +4130,33 @@ def get_all_steps(self): # self._logger.info(step_data) self._step_counter += 1 mapdl_commands.append(self._process_step(step_data)) - return '\n'.join(mapdl_commands) + + steps_commands = '\n'.join(mapdl_commands) + + if "Placeholder_Transient_Outres" in steps_commands and not self._transient_output_controls: + updated_steps_commands = steps_commands.replace("Placeholder_Transient_Outres", "") + elif "Placeholder_Transient_Outres" in steps_commands and self._transient_output_controls: + + all_lines = self._transient_output_controls.strip().split("\n") + new_lines = [] + + for i, line in enumerate(all_lines, 1): + if i <= 3: + continue + if "OUTRES" in line: + ln_data = line.split(",") + ln_data[2] = " LAST" + new_lines.append(",".join(ln_data)) + else: + new_lines.append(line) + + updated_steps_commands = steps_commands.replace( + "Placeholder_Transient_Outres", "\n".join(new_lines) + "\n" + ) + else: + updated_steps_commands = steps_commands + + return updated_steps_commands def get_step_by_step_id(self, step_id): mapdl_commands = '' @@ -4206,14 +4274,16 @@ def get_modified_component_name(name: str, set_type: str = None, sim_data=None) has_surface = 'Surface' in sim_data and name in sim_data['Surface'] has_nset = 'Nset' in sim_data and name in sim_data['Nset'] has_elset = 'Elset' in sim_data and name in sim_data['Elset'] + has_element = 'Element' in sim_data and name in sim_data['Element'] - count = has_surface + has_nset + has_elset + count = has_nset + (has_surface or has_elset or has_element) if count > 1: - modified_name = set_type + "_" + name + modified_name = set_type + "_" + modified_name if modified_name and (modified_name[0].isdigit() or modified_name[0] == "_"): modified_name = "COMP_" + modified_name + return modified_name @@ -4363,7 +4433,7 @@ def generate_mapdl_commands( analysis_settings += '/delete,,cnm,,1\n' analysis_settings += '/delete,,DSP,,\n' analysis_settings += '/delete,,mcf,,\n' - analysis_settings += '/delete,,rfrq,,\n' + analysis_settings += '/delete,,rfrq,,1\n' analysis_settings += '/delete,,log,,1\n' analysis_settings += '/delete,,emat,,1\n' analysis_settings += '/delete,,esav,,1\n' @@ -4371,7 +4441,7 @@ def generate_mapdl_commands( analysis_settings += '/delete,,full,,1\n' analysis_settings += '/delete,,mlv,,1\n' analysis_settings += '/delete,,mode,,1\n' - analysis_settings += '/delete,,rfrq,,1\n' + # analysis_settings += '/delete,,rfrq,,1\n' analysis_settings += '/delete,,out,,1\n' # analysis_settings += '/delete,harmonic,rst,,1\n' analysis_settings += '/delete,,mntr,,\n' diff --git a/src/ansys/meshing/prime/core/model.py b/src/ansys/meshing/prime/core/model.py index ff1f54162e..78171173cc 100644 --- a/src/ansys/meshing/prime/core/model.py +++ b/src/ansys/meshing/prime/core/model.py @@ -313,7 +313,8 @@ def set_working_directory(self, path: str): Examples -------- - >>> model = prime.local_model + >>> client = prime.launch_prime() + >>> model = client.model >>> zones = model.set_working_directory("C:/input_files") """ diff --git a/src/ansys/meshing/prime/core/surfer.py b/src/ansys/meshing/prime/core/surfer.py index bc2a3ec640..2904e2a389 100644 --- a/src/ansys/meshing/prime/core/surfer.py +++ b/src/ansys/meshing/prime/core/surfer.py @@ -87,7 +87,7 @@ def mesh_topo_faces( return surfer.mesh_topo_faces(topo_faces, params) def create_shell_bl_using_controls( - self, part_id: int, shellbl_control_ids: Iterable[int], shellbl_params: ShellBLParams + self, part_id: int, shell_bl_control_ids: Iterable[int], shell_bl_params: ShellBLParams ) -> CreateShellBLResults: """Create ShellBL using data stored in controls. @@ -95,9 +95,9 @@ def create_shell_bl_using_controls( ---------- part_id : int Id of the part. - shellbl_control_ids : Iterable[int] + shell_bl_control_ids : Iterable[int] Ids of ShellBL control. - shellbl_params : ShellBLParams + shell_bl_params : ShellBLParams Parameters related to ShellBL. Returns @@ -105,16 +105,21 @@ def create_shell_bl_using_controls( CreateShellBLResults Returns the CreateShellBLResults. + + Notes + ----- + **This is a beta API**. **The behavior and implementation may change in future**. + Examples -------- - >>> results = surfer.create_shell_bl_using_controls( - part_id, shellbl_control_ids, shellbl_params - ) + >>> results = surfer.create_shell_bl_using_controls(part_id, + shell_bl_control_ids, + shell_bl_params) """ with _Surfer(model=self._model, part_id=part_id) as surfer: return surfer.create_shell_bl_using_controls( - part_id, shellbl_control_ids, shellbl_params + part_id, shell_bl_control_ids, shell_bl_params ) def remesh_face_zonelets_locally( diff --git a/src/ansys/meshing/prime/internals/error_handling.py b/src/ansys/meshing/prime/internals/error_handling.py index 9ac1abb1a3..2f62254191 100644 --- a/src/ansys/meshing/prime/internals/error_handling.py +++ b/src/ansys/meshing/prime/internals/error_handling.py @@ -393,6 +393,7 @@ WarningCode.EXPORTMAPDLANALYSISSETTINGSFAILED: "Export of analysis settings to separate file failed.", WarningCode.WRITINGCONTACTPAIRSSKIPPED: "Writing of contact pairs skipped due to no surface or surface interaction definition.", WarningCode.WRITINGTIESSKIPPED: "Writing of ties skipped due to no surface definition.", + WarningCode.WRITINGZONELETOFLABELTOELEMENTCOMPONENTSKIPPED: "Export of a zonelet skipped while exporting a label as element component. Disable the parameter enable_face_based_labels in ExportMapdlCdbParams to export the label as node component.", WarningCode.MULTIZONEMESHER_SURFACESCOPEVOLUMESCOPEINCONSISTENCY: "Topofaces of the volumes scoped are more than the topofaces of the surface scoped.", WarningCode.NOCADGEOMETRYFOUND: "CAD geometry not found for some or all topoentities. Skipped projection for those topoentities.", WarningCode.NOCADGEOMETRYPROJECTONFACETS: "CAD geometry not found for some or all topoentities. Mesh node projected on facets for those topoentities.",