diff --git a/doc/changelog.d/6495.added.md b/doc/changelog.d/6495.added.md new file mode 100644 index 000000000000..c59ed7ef1745 --- /dev/null +++ b/doc/changelog.d/6495.added.md @@ -0,0 +1 @@ +Icepak model reviewer extension diff --git a/doc/source/User_guide/pyaedt_extensions_doc/icepak/icepak_model_reviewer.rst b/doc/source/User_guide/pyaedt_extensions_doc/icepak/icepak_model_reviewer.rst new file mode 100644 index 000000000000..893238907b08 --- /dev/null +++ b/doc/source/User_guide/pyaedt_extensions_doc/icepak/icepak_model_reviewer.rst @@ -0,0 +1,112 @@ +Icepak model reviewer +===================== + +The Icepak Model Reviewer extension allows users to inspect and modify details of an Icepak project. It enables +reviewing critical data such as boundary conditions, materials, and model-specific properties. + +The extension provides a graphical user interface (GUI) where the user can load a project, review its components, +and make necessary updates. + +The following image shows the extension GUI: + +.. image:: ../../../_static/extensions/icepak_model_reviewer_initial_panel.png + :width: 800 + :alt: Icepak Model Reviewer UI + +After the project is loaded by clicking, the GUI show tables +.. image:: ../../../_static/extensions/icepak_model_reviewer_ui_with_table.png + :width: 800 + :alt: Icepak Model Reviewer UI After loading Project + +Features +-------- + +- Load and inspect an Icepak project. +- Display editable tables showing: + - Boundary conditions + - Material properties + - Model details +- Update project parameters. + +Using extension +------------------- + +1. Open the **Automation** tab in the Icepak interface. +2. Click on the **Icepak model reviewer** icon under the Extension Manager. +3. In the GUI, interact with the following elements: + - **Load Project**: Load the Icepak project into the GUI. + - **Update Project**: Push any modifications made in the tables back to the project. +4. After the project is loaded: + - The GUI displays three main tables: + - **Boundary Conditions**: Lists all the boundary condition settings applied in the model. + - **Materials**: Shows the materials used and their key properties. + - **Models**: Displays model-specific data and configurations. + +Each table allows inline editing of values. To commit changes, click the **Update Project** button. +Commit changes apply all modifications to the currently loaded project. + +Tables overview +--------------- + +**Boundary Conditions Table** + +This table displays the thermal boundary conditions defined in the Icepak project. +The data is organized with both read-only and editable fields to help users review and make updates. ++--------------------------+----------------------------------------------------------------------------------+ +| **Property** | **Description** | ++==========================+==================================================================================+ +| **Name** | Name of the boundary. This field is **read-only** and cannot be modified. | ++--------------------------+----------------------------------------------------------------------------------+ +| **Boundary Type** | Indicates whether the boundary is a *Block* or a *Source*. This is | +| | also a **read-only** field. | ++--------------------------+----------------------------------------------------------------------------------+ +| **BC Name 1 / BC Name 2**| Names of the boundary conditions applied (*Total Power*, *Power Density*, | +| | *Heat Transfer Coefficient*, *Temperature*). These fields are **read-only** | ++--------------------------+----------------------------------------------------------------------------------+ +| **Value 1 / Value 2** | Corresponding values for the selected boundary conditions. These fields | +| | are **editable**. | ++--------------------------+----------------------------------------------------------------------------------+ + + +**Materials Table** + + +This table displays material properties for all objects used in the Icepak project. +Some fields are read-only and provided for reference, while others can be modified depending on the simulation setup. + ++----------------------------------+--------------------------------------------------------------+ +| **Property** | **Description** | ++==================================+==============================================================+ +| **Name** | Material name (**read-only**) | ++----------------------------------+--------------------------------------------------------------+ +| **Material Type** | Indicates if the material is *Solid* or *Fluid* | +| | (**read-only**) | ++----------------------------------+--------------------------------------------------------------+ +| **Thermal Conductivity** | Thermal conductivity in **W/m·K** | ++----------------------------------+--------------------------------------------------------------+ +| **Mass Density** | Density in **kg/m³** | ++----------------------------------+--------------------------------------------------------------+ +| **Specific Heat** | Specific heat capacity in **J/kg·K** | ++----------------------------------+--------------------------------------------------------------+ +| **Thermal Expansion Coefficient**| Coefficient of thermal expansion in **1/K** | ++----------------------------------+--------------------------------------------------------------+ +| **Thermal Diffusivity** | Thermal diffusivity in **m²/s** | ++----------------------------------+--------------------------------------------------------------+ +| **Viscosity** | Dynamic viscosity in **Kg/m-s** | ++----------------------------------+--------------------------------------------------------------+ + + +**Models Table** + +This table lists the object-level settings related to modeling in the Icepak project. +It shows the assigned bulk and surface materials. Information about whether an object is model/ non-model object. + + + +Notes +----- + +- Ensure the CSV file for power map creation is formatted correctly before importing. +- Changes made in the tables are not applied to the project until the **Update Project** button is clicked. +- This extension is intended for reviewing model data efficiently without the need to navigate complex menus. + diff --git a/doc/source/_static/extensions/icepak_model_reviewer_initial_panel.png b/doc/source/_static/extensions/icepak_model_reviewer_initial_panel.png new file mode 100644 index 000000000000..1f44e1b785ac Binary files /dev/null and b/doc/source/_static/extensions/icepak_model_reviewer_initial_panel.png differ diff --git a/doc/source/_static/extensions/icepak_model_reviewer_ui_with_table.png b/doc/source/_static/extensions/icepak_model_reviewer_ui_with_table.png new file mode 100644 index 000000000000..416909629009 Binary files /dev/null and b/doc/source/_static/extensions/icepak_model_reviewer_ui_with_table.png differ diff --git a/src/ansys/aedt/core/extensions/icepak/icepak_model_reviewer.py b/src/ansys/aedt/core/extensions/icepak/icepak_model_reviewer.py new file mode 100644 index 000000000000..2d02b9c149f2 --- /dev/null +++ b/src/ansys/aedt/core/extensions/icepak/icepak_model_reviewer.py @@ -0,0 +1,422 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2021 - 2026 ANSYS, Inc. and/or its affiliates. +# SPDX-License-Identifier: MIT +# +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +import os +import tkinter as tk +from tkinter import ttk + +from ansys.aedt.core import Desktop +from ansys.aedt.core import Icepak +from ansys.aedt.core.extensions.icepak.model_reviewer.backend import export_config_file +from ansys.aedt.core.extensions.icepak.model_reviewer.backend import get_object_id_mapping +from ansys.aedt.core.extensions.icepak.model_reviewer.backend import import_config_file +from ansys.aedt.core.extensions.icepak.model_reviewer.configuration_data_processing import ( + compare_and_update_boundary_data, +) +from ansys.aedt.core.extensions.icepak.model_reviewer.configuration_data_processing import ( + compare_and_update_material_data, +) +from ansys.aedt.core.extensions.icepak.model_reviewer.configuration_data_processing import compare_and_update_model_data +from ansys.aedt.core.extensions.icepak.model_reviewer.configuration_data_processing import extract_boundary_data +from ansys.aedt.core.extensions.icepak.model_reviewer.configuration_data_processing import extract_material_data +from ansys.aedt.core.extensions.icepak.model_reviewer.configuration_data_processing import extract_model_data +from ansys.aedt.core.extensions.misc import ExtensionCommon +from ansys.aedt.core.extensions.misc import ExtensionTheme +from ansys.aedt.core.extensions.misc import get_aedt_version +from ansys.aedt.core.extensions.misc import get_port +from ansys.aedt.core.extensions.misc import get_process_id +from ansys.aedt.core.extensions.misc import is_student +from ansys.aedt.core.internal.errors import AEDTRuntimeError + +port = get_port() +version = get_aedt_version() +aedt_process_id = get_process_id() +theme = ExtensionTheme() +EXTENSION_TITLE = "Icepak Model Reviewer" + + +def flatten_list(mixed_list): + flat_list = [] + for row in mixed_list: + result = [] + for item in row: + if isinstance(item, list): + result.append(",".join(str(sub) for sub in item)) + else: + result.append(str(item)) + flat_list.append(result) + return flat_list + + +def expand_list(flat_list): + mixed_list = [] + for row in flat_list: + result = [] + for item in row: + if isinstance(item, str) and "," in item: + parts = [s.strip() for s in item.split(",")] + result.append(parts) + else: + result.append(str(item)) + mixed_list.append(result) + return mixed_list + + +def add_icon_to_cells(data, icon_indices, icon="🔒"): + """ + Adds an icon to specified cells in the data. + + Parameters + ---------- + - data: list of list of strings (table rows) + - icon_indices: list of list of ints, where each inner list contains read only column indices + - icon: string icon to prepend (default '🔒') + + Returns + ------- + - new_data: deep copy of data with icons added + """ + from copy import deepcopy + + new_data = deepcopy(data) + + for row_idx, cols in enumerate(icon_indices): + for col_idx in cols: + cell = new_data[row_idx][col_idx - 1] + if isinstance(cell, str): + new_data[row_idx][col_idx - 1] = f"{cell}{icon}" + elif isinstance(cell, list): + cell[-1] += icon + new_data[row_idx][col_idx - 1] = cell + return new_data + + +def remove_icon_from_cells(data, icon="🔒"): + """ + Removes the icon from all cells that start with it. + + Parameters + ---------- + - data: list of list of strings + - icon: the icon to remove (default '🔒') + + Returns + ------- + - new_data: deep copy of data with icons removed + """ + from copy import deepcopy + + new_data = deepcopy(data) + + for i, row in enumerate(new_data): + for j, cell in enumerate(row): + if isinstance(cell, str): + if cell.endswith(f"{icon}"): # cells can also be list in case of multiple selection + new_data[i][j] = cell[: -(len(icon))] + if isinstance(cell, list): + if cell[-1].endswith(icon): + cell[-1] = cell[-1][: -(len(icon))] + return new_data + + +def add_table_to_tab(tab, table_data): + for child in tab.winfo_children(): + child.destroy() + headings, type_list, selection_dict, row_data, read_only_cols = table_data + table = Table(tab, headings, type_list, read_only_cols) + table.pack(fill=tk.BOTH, expand=True) + for column_name, options in selection_dict.items(): + table.set_multi_select_options(column_name, options) + row_data_with_icon = add_icon_to_cells(flatten_list(row_data), read_only_cols) + for row in row_data_with_icon: + table.add_row(row) + return table + + +class Table(ttk.Frame): + def __init__(self, parent, headers, types, read_only_data): + super().__init__(parent, style="PyAEDT.TFrame") + self.headers = ["✔"] + headers + self.types = ["checkbox"] + types + self.read_only_data = [set(r) for r in read_only_data] + self.tree = ttk.Treeview( + self, columns=self.headers, show="headings", selectmode="browse", style="PyAEDT.Treeview" + ) + for i, header in enumerate(self.headers): + self.tree.heading(header, text=header) + self.tree.column(header, width=50 if i == 0 else 140, anchor=tk.CENTER) + + self.tree.pack(fill=tk.BOTH, expand=True) + self.tree.bind("", self.edit_cell) + + self.rows_data = [] + self.multi_select_options = {} + self.selected_rows = set() + + def set_multi_select_options(self, header, options): + self.multi_select_options[header] = options + + def add_row(self, row_data): + if len(row_data) != len(self.headers) - 1: + raise ValueError("Row data must match the number of non-checkbox columns") + + full_data = ["⬜"] + row_data + self.rows_data.append(full_data) + self.tree.insert("", "end", values=full_data) + + def toggle_row(self, row_id): + if row_id in self.selected_rows: + self.selected_rows.remove(row_id) + self.tree.set(row_id, 0, "⬜") + else: + self.selected_rows.add(row_id) + self.tree.set(row_id, 0, "✅") + + def get_modified_data(self): + return [self.tree.item(row)["values"][1:] for row in self.tree.get_children()] + + def update_cell_value(self, row_id, col, new_value): + """Modified data update logic decoupled from UI events.""" + # Determine which rows to update (bulk edit if selected) + if row_id in self.selected_rows: + targets = self.selected_rows + else: + targets = {row_id} + for rid in targets: + idx = self.tree.index(rid) + # Check read-only constraint + if col not in self.read_only_data[idx]: + self.tree.set(rid, col, new_value) + # Update the underlying data list + self.rows_data[idx][col] = new_value + + def edit_cell(self, event): + region = self.tree.identify("region", event.x, event.y) + if region != "cell": + return + + row_id = self.tree.identify_row(event.y) + col = int(self.tree.identify_column(event.x)[1:]) - 1 + item_index = self.tree.index(row_id) + + if col == 0: + self.toggle_row(row_id) + return + + if col in self.read_only_data[item_index]: + return + + bbox = self.tree.bbox(row_id, f"#{col + 1}") + if not bbox: + return + + x, y, width, height = bbox + abs_x = self.tree.winfo_rootx() + x + abs_y = self.tree.winfo_rooty() + y + + item = self.tree.item(row_id) + value = item["values"][col] + type_ = self.types[col] + + def apply_to_selected(new_value): + self.update_cell_value(row_id, col, new_value) + + if type_ == "text": + entry = tk.Entry(self.tree) + entry.insert(0, value) + entry.place(x=x, y=y, width=width, height=height) + entry.focus_set() + + def on_return(event): + new_value = entry.get() + apply_to_selected(new_value) + entry.destroy() + + entry.bind("", on_return) + entry.bind("", lambda e: entry.destroy()) + + elif type_ == "combo": + options = self.multi_select_options.get(self.headers[col], []) + combo = ttk.Combobox( + self.tree, values=options, state="readonly", style="PyAEDT.TCombobox", font=theme.default_font + ) + combo.place(x=x, y=y, width=width, height=height) + combo.set(value) + + def on_select(event=None): + new_value = combo.get() + apply_to_selected(new_value) + combo.destroy() + + combo.bind("<>", on_select) + combo.bind("", lambda e: combo.destroy()) + combo.focus_set() + + elif type_ == "multiple_text": + options = self.multi_select_options.get(self.headers[col], []) + top = tk.Toplevel(self) + top.title("Select Multiple") + top.geometry(f"200x300+{abs_x}+{abs_y}") + + listbox = tk.Listbox(top, selectmode="multiple", font=theme.default_font) + for opt in options: + listbox.insert(tk.END, opt) + listbox.pack(fill="both", expand=True) + + current_vals = [val.strip() for val in value.split(",")] + for idx, opt in enumerate(options): + if opt in current_vals: + listbox.selection_set(idx) + + def confirm(): + selected = [options[i] for i in listbox.curselection()] + value_str = ", ".join(selected) + apply_to_selected(value_str) + top.destroy() + + ttk.Button(top, text="OK", command=confirm).pack() + top.transient(self) + top.grab_set() + self.wait_window(top) + + +class IcepakModelReviewer(ExtensionCommon): + def __init__(self, withdraw: bool = False): + # Initialize the common extension class with the title and theme color + super().__init__( + EXTENSION_TITLE, + theme_color="light", + withdraw=withdraw, + add_custom_content=False, + ) + + self.differences = None + self.combined_data = None + self.add_extension_content() + + def add_extension_content(self): + # --- Top Button Panel --- + button_frame = ttk.Frame(self.root, style="PyAEDT.TFrame") + button_frame.pack(fill=tk.X, padx=10, pady=5) + notebook = ttk.Notebook(self.root, style="TNotebook") + notebook.pack(fill=tk.BOTH, expand=True) + self.root.boundary_tab = ttk.Frame(notebook, style="PyAEDT.TFrame") + notebook.add(self.root.boundary_tab, text="Boundary") + self.root.materials_tab = ttk.Frame(notebook, style="PyAEDT.TFrame") + notebook.add(self.root.materials_tab, text="Material") + self.root.models_tab = ttk.Frame(notebook, style="PyAEDT.TFrame") + notebook.add(self.root.models_tab, text="Models") + self.load_button = ttk.Button( + button_frame, text="Load Project", command=self.load_project, style="PyAEDT.TButton" + ) + self.load_button.pack(side=tk.LEFT, padx=5) + self.update_button = ttk.Button( + button_frame, text="Update Project", command=self.update_project, style="PyAEDT.TButton" + ) + self.update_button.pack(side=tk.LEFT, padx=5) + lower_frame = ttk.Frame(self.root, style="PyAEDT.TFrame") + lower_frame.pack(fill=tk.X, padx=10, pady=5) + self.add_toggle_theme_button(lower_frame, 0, 0) + + def check_design_type(self): + """Check if the active design is an Icepak design.""" + if self.aedt_application.design_type != "Icepak": + raise AEDTRuntimeError("This extension can only be used with Icepak designs.") + + def get_project_data(self): + desktop = Desktop( + new_desktop=False, + version=version, + port=port, + aedt_process_id=aedt_process_id, + student_version=is_student(), + ) + ipk = Icepak() + data = export_config_file(ipk) + ipk.logger.info("Loading project details into Table") + if "PYTEST_CURRENT_TEST" not in os.environ: + desktop.release_desktop(close_projects=False, close_on_exit=False) + return data + + def import_data_to_project(self, combined_data, differences): + desktop = Desktop( + new_desktop=False, + version=version, + port=port, + aedt_process_id=aedt_process_id, + student_version=is_student(), + ) + ipk = Icepak() + ipk.logger.info("Updating the project based on modified table data") + ipk.logger.info("Following modifications are made in the table") + ipk.logger.info(differences) + import_config_file(ipk, combined_data) + if "PYTEST_CURRENT_TEST" not in os.environ: + desktop.release_desktop(False, False) + + def object_id_mapping(self): + desktop = Desktop( + new_desktop=False, + version=version, + port=port, + aedt_process_id=aedt_process_id, + student_version=is_student(), + ) + ipk = Icepak() + mapping = get_object_id_mapping(ipk) + if "PYTEST_CURRENT_TEST" not in os.environ: + desktop.release_desktop(False, False) + return mapping + + def load_project(self): + data = self.get_project_data() + self.root.json_data = data + + # --- Tabbed Interface --- + table_data = extract_boundary_data(data) + self.root.bc_table = add_table_to_tab(self.root.boundary_tab, table_data) + table_data = extract_material_data(data) + self.root.mat_table = add_table_to_tab(self.root.materials_tab, table_data) + table_data = extract_model_data(data) + self.root.model_table = add_table_to_tab(self.root.models_tab, table_data) + + def update_project(self): + obj_mapping = self.object_id_mapping() + bc_data = self.root.bc_table.get_modified_data() + bc_data = expand_list(remove_icon_from_cells(bc_data)) + bc_differences, new_bc_data = compare_and_update_boundary_data(self.root.json_data, bc_data, obj_mapping) + mat_data = self.root.mat_table.get_modified_data() + mat_data = expand_list(remove_icon_from_cells(mat_data)) + mat_differences, new_mat_data = compare_and_update_material_data(self.root.json_data, mat_data) + model_data = self.root.model_table.get_modified_data() + model_data = expand_list(remove_icon_from_cells(model_data)) + model_differences, new_model_data = compare_and_update_model_data(self.root.json_data, model_data) + self.combined_data = {**new_model_data, **new_mat_data, **new_bc_data} + self.differences = bc_differences + mat_differences + model_differences + self.import_data_to_project(self.combined_data, self.differences) + + +if __name__ == "__main__": + extension = IcepakModelReviewer(withdraw=False) + tk.mainloop() diff --git a/src/ansys/aedt/core/extensions/icepak/load.json b/src/ansys/aedt/core/extensions/icepak/load.json new file mode 100644 index 000000000000..f3f73c4468bc --- /dev/null +++ b/src/ansys/aedt/core/extensions/icepak/load.json @@ -0,0 +1 @@ +{"objects": {}, "materials": {}, "boundaries": {"CPU": {"ID": 2, "BoundType": "Block", "IsComponent": false, "Objects": [150, 422], "ParentBndID": -1, "Block Type": "Solid", "Use External Conditions": false, "Use Total Power": true, "Total Power": "4W"}}, "general": {"object_mapping": {"12": ["Region", [80.0, 14.0, -55.0]], "10": ["Region", [-240.0, 14.0, -55.0]], "422": "CPU", "150": "KB", "178": "HEAT_SINK", "62": "MEMORY1", "90": "MEMORY1_1", "155": ["KB", [-153.6, 1.6, -102.0]], "6": "Region", "34": "SERIAL_PORT", "118": "CAPACITOR", "134": "CAPACITOR_1", "450": "ALPHA_MAIN_PCB", "498": "Box1", "554": "MeshRegion1_SubRegion", "582": "MeshRegion2_SubRegion"}}} \ No newline at end of file diff --git a/src/ansys/aedt/core/extensions/icepak/model_reviewer/__init__.py b/src/ansys/aedt/core/extensions/icepak/model_reviewer/__init__.py new file mode 100644 index 000000000000..cbf2c1ee853b --- /dev/null +++ b/src/ansys/aedt/core/extensions/icepak/model_reviewer/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2021 - 2026 ANSYS, Inc. and/or its affiliates. +# SPDX-License-Identifier: MIT +# +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. diff --git a/src/ansys/aedt/core/extensions/icepak/model_reviewer/backend.py b/src/ansys/aedt/core/extensions/icepak/model_reviewer/backend.py new file mode 100644 index 000000000000..b97ca1f92901 --- /dev/null +++ b/src/ansys/aedt/core/extensions/icepak/model_reviewer/backend.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2021 - 2026 ANSYS, Inc. and/or its affiliates. +# SPDX-License-Identifier: MIT +# +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +import json +import os + + +def export_config_file(aedtapp): + aedtapp.configurations.options.export_monitor = False + aedtapp.configurations.options.export_native_components = False + aedtapp.configurations.options.export_datasets = False + aedtapp.configurations.options.export_parametrics = False + aedtapp.configurations.options.export_variables = False + aedtapp.configurations.options.export_mesh_operations = False + aedtapp.configurations.options.export_optimizations = False + config_file = aedtapp.configurations.export_config() + with open(config_file, "r") as file: + data = json.load(file) + return data + + +def import_config_file(aedtapp, json_data): + full_path = os.path.abspath("load.json") + with open(full_path, "w") as file: + json.dump(json_data, file) + out = aedtapp.configurations.import_config(full_path) + result = aedtapp.configurations.validate(out) + if result: + aedtapp.logger.info("Successfully imported configuration") + else: + aedtapp.logger.info("Import has issues") + return result + + +def get_object_id_mapping(aedtapp): + object_id_map = {name: aedtapp.modeler.get_obj_id(name) for name in aedtapp.modeler.object_names} + return object_id_map diff --git a/src/ansys/aedt/core/extensions/icepak/model_reviewer/configuration_data_processing.py b/src/ansys/aedt/core/extensions/icepak/model_reviewer/configuration_data_processing.py new file mode 100644 index 000000000000..97c198424d8a --- /dev/null +++ b/src/ansys/aedt/core/extensions/icepak/model_reviewer/configuration_data_processing.py @@ -0,0 +1,439 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2021 - 2026 ANSYS, Inc. and/or its affiliates. +# SPDX-License-Identifier: MIT +# +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +import copy + + +def extract_boundary_data(data): + boundary_data = [] + object_mapping = data.get("general", {}).get("object_mapping", {}) + read_only_cols = [] + selection_dict = {} + headings = ["Boundary Name", "Boundary Type", "Selected Objects", "BC Name 1", "Value 1", "BC Name 2", "Value 2"] + type_list = ["text", "text", "multiple_text", "text", "text", "text", "text"] + + # Convert mapping to ensure all values are names (some are lists) + id_to_name = {} + for obj_id, value in object_mapping.items(): + if isinstance(value, list): # Some entries have extra data in a list + id_to_name[obj_id] = value[0] # Extract the name + else: + id_to_name[obj_id] = value # Direct mapping + + all_objects = [obj_name for obj_name, obj_details in data.get("objects", {}).items()] + selection_dict["Selected Objects"] = all_objects + + for boundary_name, boundary_details in data.get("boundaries", {}).items(): + cols = [1, 2, 4, 6] + boundary_type = boundary_details.get("BoundType", "") + if boundary_type == "Block": + use_total_power = boundary_details.get("Use Total Power", "") + use_external_conditions = boundary_details.get("Use External Conditions", "") + + if use_total_power and not use_external_conditions: + bc_name1 = "Total Power" + bc_name2 = "N/A" + value2 = "0.0" + value1 = boundary_details.get("Total Power", "0W") # Default to "0W" if missing + object_ids = boundary_details.get("Objects", []) # Default to empty list if missing + selected_objects = [id_to_name[str(obj_id)] for obj_id in object_ids] + boundary_data.append( + [boundary_name, boundary_type, selected_objects, bc_name1, value1, bc_name2, value2] + ) + cols.append(7) + read_only_cols.append(cols) + + if use_external_conditions: + bc_name1 = "Heat Transfer Coefficient" + bc_name2 = "Temperature" + value1 = boundary_details.get("Heat Transfer Coefficient", "0w_per_m2k") + value2 = boundary_details.get("Temperature", "0cel") + object_ids = boundary_details.get("Objects", []) # Default to empty list if missing + selected_objects = [id_to_name[str(obj_id)] for obj_id in object_ids] + boundary_data.append( + [boundary_name, boundary_type, selected_objects, bc_name1, value1, bc_name2, value2] + ) + read_only_cols.append(cols) + if not (use_external_conditions or use_total_power): + bc_name1 = "Power Density" + bc_name2 = "N/A" + value2 = "0.0" + value1 = boundary_details.get("Power Density", "0w_per_m3") + object_ids = boundary_details.get("Objects", []) # Default to empty list if missing + selected_objects = [id_to_name[str(obj_id)] for obj_id in object_ids] + boundary_data.append( + [boundary_name, boundary_type, selected_objects, bc_name1, value1, bc_name2, value2] + ) + cols.append(7) + read_only_cols.append(cols) + + if boundary_type == "Source": + thermal_condition = boundary_details.get("Thermal Condition", "") + if thermal_condition == "Surface Flux": + bc_name1 = "Surface Heat" + bc_name2 = "N/A" + value1 = boundary_details.get("Surface Heat", "0kW_per_m2") + value2 = "0.0" + object_ids = boundary_details.get("Faces", []) # Default to empty list if missing + selected_objects = [str(ids) for ids in object_ids] + boundary_data.append( + [boundary_name, boundary_type, selected_objects, bc_name1, value1, bc_name2, value2] + ) + cols.append(3) + cols.append(7) + read_only_cols.append(cols) + if thermal_condition == "Total Power": + bc_name1 = "Total Power" + bc_name2 = "N/A" + value1 = boundary_details.get("Total Power", "0W") + value2 = "0.0" + object_ids = boundary_details.get("Faces", []) # Default to empty list if missing + selected_objects = [str(ids) for ids in object_ids] + boundary_data.append( + [boundary_name, boundary_type, selected_objects, bc_name1, value1, bc_name2, value2] + ) + cols.append(3) + cols.append(7) + read_only_cols.append(cols) + if thermal_condition == "Fixed Temperature": + bc_name1 = "Fixed Temperature" + bc_name2 = "N/A" + value1 = boundary_details.get("Temperature", "0cel") + value2 = "0.0" + object_ids = boundary_details.get("Faces", []) # Default to empty list if missing + selected_objects = [str(ids) for ids in object_ids] + boundary_data.append( + [boundary_name, boundary_type, selected_objects, bc_name1, value1, bc_name2, value2] + ) + cols.append(3) + cols.append(7) + read_only_cols.append(cols) + return headings, type_list, selection_dict, boundary_data, read_only_cols + + +def extract_model_data(data): + object_data = [] + bulk_materials = set() + surface_materials = set() + headings = ["Object Name", "Bulk Material", "Surface Material", "Solve Inside", "Modeling"] + type_list = ["text", "combo", "combo", "combo", "combo"] + selection_dict = {"Solve Inside": ["True", "False"], "Modeling": ["Model", "Non-Model"]} + read_only_cols = [] + + for obj_name, obj_details in data.get("objects", {}).items(): + cols = [1] + component_name = obj_name + bulk_material = obj_details.get("Material", "") + surface_material = obj_details.get("SurfaceMaterial", "") + solve = obj_details.get("SolveInside", "") + if solve: + solve_inside = "True" + else: + solve_inside = "False" + + model = obj_details.get("Model", "") + + if model: + modelling = "Model" + else: + modelling = "Non-Model" + + if bulk_material == '""' or bulk_material == "": + bulk_material = "Not Specified" + bulk_materials.add(bulk_material) + else: + bulk_materials.add(bulk_material) + + if surface_material == '""': + surface_material = surface_material.strip('"') + data["objects"][obj_name]["SurfaceMaterial"] = surface_material + surface_material = "Not Specified" + surface_materials.add(surface_material) + elif surface_material == "": + surface_material = "Not Specified" + surface_materials.add(surface_material) + elif surface_material is None: + surface_material = "Not Specified" + surface_materials.add(surface_material) + else: + surface_material = surface_material.strip('"') + data["objects"][obj_name]["SurfaceMaterial"] = surface_material # removing "" in the source + surface_materials.add(surface_material) + + object_data.append([component_name, bulk_material, surface_material, solve_inside, modelling]) + read_only_cols.append(cols) + selection_dict["Bulk Material"] = list(bulk_materials) + selection_dict["Surface Material"] = list(surface_materials) + return headings, type_list, selection_dict, object_data, read_only_cols + + +def extract_material_data(data): + materials = data.get("materials", {}) + extracted_data = [] + read_only_cols = [] + headings = [ + "Material Name", + "Material Type", + "Thermal Conductivity", + "Mass Density", + "Specific Heat", + "Thermal Expansion Coefficient", + "Diffusivity", + "Viscosity", + ] + type_list = ["text", "text", "text", "text", "text", "text", "text", "text"] + selection_dict = {} + + for mat_name, mat_details in materials.items(): + cols = [1] + material_type = mat_details.get("thermal_material_type", {}).get("Choice", "N/A") + # make material type read only + cols.append(2) + if material_type == "Solid" or material_type == "N/A": + cols.append(8) + thermal_conductivity = mat_details.get("thermal_conductivity", "N/A") + # Handle anisotropic thermal conductivity case + if isinstance(thermal_conductivity, dict): + thermal_conductivity = thermal_conductivity["property_type"] + cols.append(3) + mass_density = mat_details.get("mass_density", "N/A") + specific_heat = mat_details.get("specific_heat", "N/A") + thermal_expansion_coefficient = mat_details.get("thermal_expansion_coefficient", "N/A") + + diffusivity = mat_details.get("diffusivity", "N/A") + viscosity = mat_details.get("viscosity", "N/A") + + extracted_data.append( + [ + mat_name, + material_type, + thermal_conductivity, + mass_density, + specific_heat, + thermal_expansion_coefficient, + diffusivity, + viscosity, + ] + ) + read_only_cols.append(cols) + return headings, type_list, selection_dict, extracted_data, read_only_cols + + +def compare_and_update_boundary_data(original_data, modified_object_data, object_mapping): + """ + Compares modified object data with the original data and identifies differences. + Also returns the updated original data with the modifications applied. + """ + # updated_data = copy.deepcopy(original_data) # Make a copy to avoid modifying original + differences = [] + inverse_mapping = {str(v): k for k, v in object_mapping.items()} + + updated_data = {"boundaries": {}, "general": {}} + updated_data["general"]["object_mapping"] = {**original_data["general"]["object_mapping"], **inverse_mapping} + modified_boundary = set() + for row in modified_object_data: + (boundary_name, boundary_type, selected_objects, bc_name1, value1, bc_name2, value2) = row + + original_obj = original_data["boundaries"][boundary_name] + updated_data["boundaries"][boundary_name] = copy.deepcopy(original_data["boundaries"][boundary_name]) + + # Convert string values back to boolean where necessary + + # Check for differences and update + if isinstance(selected_objects, list): + selected_object_ids = [int(i) if str(i).isdigit() else object_mapping[i] for i in selected_objects] + + if isinstance(selected_objects, str): + selected_object_ids = [ + int(i.strip()) if str(i.strip()).isdigit() else object_mapping[i.strip()] + for i in selected_objects.split(",") + ] + + original_obj_ids = original_obj.get("Objects", []) + if original_obj_ids: + if set(original_obj_ids) != set(selected_object_ids): + differences.append(f"{boundary_name}: {bc_name1} selected objects changed to '{selected_objects}'") + updated_data["boundaries"][boundary_name]["Objects"] = selected_object_ids + modified_boundary.add(boundary_name) + + if bc_name1 == "Fixed Temperature": + bc_name1 = "Temperature" + + if original_obj.get(bc_name1, "") != value1: + differences.append( + f"{boundary_name}: {bc_name1} changed from '{original_obj.get(bc_name1, '')}' to '{value1}'" + ) + updated_data["boundaries"][boundary_name][bc_name1] = value1 + modified_boundary.add(boundary_name) + + if bc_name2 != "N/A": + if original_obj.get(bc_name2, "") != value2: + differences.append( + f"{boundary_name}: {bc_name1} changed from '{original_obj.get(bc_name1, '')}' to '{value1}'" + ) + updated_data["boundaries"][boundary_name][bc_name2] = value2 + modified_boundary.add(boundary_name) + + modified_data = {"boundaries": {}, "general": {}} + modified_data["general"]["object_mapping"] = {**original_data["general"]["object_mapping"], **inverse_mapping} + for boundary_name in modified_boundary: + modified_data["boundaries"][boundary_name] = copy.deepcopy(updated_data["boundaries"][boundary_name]) + + return differences, modified_data + + +def compare_and_update_model_data(original_data, modified_object_data): + """ + Compares modified object data with the original data and identifies differences. + Also returns the updated original data with the modifications applied. + """ + updated_data = {"objects": {}} + differences = [] + modified_objects = set() + + for row in modified_object_data: + obj_name, bulk_material, surface_material, solve_inside, modelling = row + + original_obj = original_data["objects"][obj_name] + updated_data["objects"][obj_name] = copy.deepcopy(original_data["objects"][obj_name]) + + # Convert string values back to boolean where necessary + solve_inside_bool = solve_inside == "True" + modelling_bool = modelling == "Model" + + # Check for differences and update + if not bulk_material == "Not Specified": + if original_obj.get("Material", "") != bulk_material: + differences.append( + f"{obj_name}: Bulk Material changed from '{original_obj.get('Material', '')}' to '{bulk_material}'" + ) + updated_data["objects"][obj_name]["Material"] = bulk_material + modified_objects.add(obj_name) + + if not surface_material == "Not Specified": + if original_obj.get("SurfaceMaterial", "") != surface_material: + differences.append( + f"""{obj_name}: Surface Material changed from '{original_obj.get("SurfaceMaterial", "")}' to + '{surface_material}'""" + ) + updated_data["objects"][obj_name]["SurfaceMaterial"] = surface_material + modified_objects.add(obj_name) + + if original_obj.get("SolveInside", "") != solve_inside_bool: + differences.append( + f"""{obj_name}: Solve Inside changed from '{original_obj.get("SolveInside", "")}' + to '{solve_inside_bool}'""" + ) + updated_data["objects"][obj_name]["SolveInside"] = str(solve_inside_bool) + modified_objects.add(obj_name) + + if original_obj.get("Model", "") != modelling_bool: + differences.append( + f"{obj_name}: Modeling changed from '{original_obj.get('Model', '')}' to '{modelling_bool}'" + ) + updated_data["objects"][obj_name]["Model"] = str(modelling_bool) + updated_data["objects"][obj_name]["SurfaceMaterial"] = None + modified_objects.add(obj_name) + + modified_data = {"objects": {}} + for obj_name in modified_objects: + modified_data["objects"][obj_name] = copy.deepcopy(updated_data["objects"][obj_name]) + + return differences, modified_data + + +def compare_and_update_material_data(original_data, modified_object_data): + """ + Compares modified object data with the original data and identifies differences. + Also returns the updated original data with the modifications applied. + """ + differences = [] + updated_data = {"materials": {}} + + modified_materials = set() + for row in modified_object_data: + ( + mat_name, + material_type, + thermal_conductivity, + mass_density, + specific_heat, + thermal_expansion_coefficient, + diffusivity, + viscosity, + ) = row + + original_obj = original_data["materials"][mat_name] + updated_data["materials"][mat_name] = copy.deepcopy(original_data["materials"][mat_name]) + + # Check for differences and update + if not isinstance(original_obj.get("thermal_conductivity"), dict): + if original_obj.get("thermal_conductivity", "") != thermal_conductivity: + differences.append( + f"""{mat_name}: Thermal Conductivity changed from '{original_obj.get("thermal_conductivity", "")}' + to '{thermal_conductivity}'""" + ) + updated_data["materials"][mat_name]["thermal_conductivity"] = thermal_conductivity + modified_materials.add(mat_name) + + if original_obj.get("mass_density", "") != mass_density: + differences.append( + f"{mat_name}: Mass density changed from '{original_obj.get('mass_density', '')}' to '{mass_density}'" + ) + updated_data["materials"][mat_name]["mass_density"] = mass_density + modified_materials.add(mat_name) + + if original_obj.get("specific_heat", "") != specific_heat: + differences.append( + f"{mat_name}: specific heat changed from '{original_obj.get('specific_heat', '')}' to '{specific_heat}'" + ) + updated_data["materials"][mat_name]["specific_heat"] = specific_heat + modified_materials.add(mat_name) + + if original_obj.get("thermal_expansion_coefficient", "") != thermal_expansion_coefficient: + differences.append( + f"{mat_name}: Thermal expansion coefficient changed " + f"from '{original_obj.get('thermal_expansion_coefficient', '')}' to '{thermal_expansion_coefficient}'" + ) + updated_data["materials"][mat_name]["thermal_expansion_coefficient"] = thermal_expansion_coefficient + modified_materials.add(mat_name) + + if original_obj.get("diffusivity", "") != diffusivity: + differences.append( + f"{mat_name}: diffusivity changed from '{original_obj.get('diffusivity', '')}' to '{diffusivity}'" + ) + updated_data["materials"][mat_name]["diffusivity"] = diffusivity + modified_materials.add(mat_name) + + if original_obj.get("viscosity", "") != viscosity: + differences.append( + f"{mat_name}: viscosity changed from '{original_obj.get('diffusivity', '')}' to '{diffusivity}'" + ) + updated_data["materials"][mat_name]["viscosity"] = viscosity + modified_materials.add(mat_name) + + modified_data = {"materials": {}} + for mat_name in modified_materials: + modified_data["materials"][mat_name] = copy.deepcopy(updated_data["materials"][mat_name]) + return differences, modified_data diff --git a/src/ansys/aedt/core/extensions/icepak/toolkits_catalog.toml b/src/ansys/aedt/core/extensions/icepak/toolkits_catalog.toml index 5f80444b9171..4eb4b74e94fb 100644 --- a/src/ansys/aedt/core/extensions/icepak/toolkits_catalog.toml +++ b/src/ansys/aedt/core/extensions/icepak/toolkits_catalog.toml @@ -1,20 +1,11 @@ [CreatePowerMap] -icon = "images/large/power_map.png" name = "Create Power Map from CSV file" script = "power_map_from_csv.py" +icon = "images/large/power_map.png" template = "run_pyaedt_toolkit_script" -url = "https://aedt.docs.pyansys.com/version/stable/User_guide/pyaedt_extensions_doc/icepak/create_power_map.html" - -[FieldsCalculator] # HFSS, Icepak, HFSS 3D, Maxwell 3D, Q3D, Maxwell 2D, Q2D, Mechanical -icon = "../common/images/large/fields.png" -name = "Advanced Fields Calculator" -script = "../common/advanced_fields_calculator.py" -template = "run_pyaedt_toolkit_script" -url = "https://aedt.docs.pyansys.com/version/stable/User_guide/pyaedt_extensions_doc/project/advanced_fields_calculator.html" -[PointCloudGenerator] # HFSS, Icepak, HFSS 3D, Maxwell 3D, Q3D, Mechanical, Maxwell 2D -icon = "../common/images/large/cloud.png" -name = "Point Cloud Generator" -script = "../common/points_cloud.py" -template = "run_pyaedt_toolkit_script" -url = "https://aedt.docs.pyansys.com/version/stable/User_guide/pyaedt_extensions_doc/project/point_cloud_generator.html" +[IcepakModelReviewer] +name = "Icepak Model Reviewer" +script = "icepak_model_reviewer.py" +icon = "images/large/push.png" +template = "run_pyaedt_toolkit_script" \ No newline at end of file diff --git a/src/ansys/aedt/core/extensions/misc.py b/src/ansys/aedt/core/extensions/misc.py index 1116bb63ce02..0c6760a89e13 100644 --- a/src/ansys/aedt/core/extensions/misc.py +++ b/src/ansys/aedt/core/extensions/misc.py @@ -1089,6 +1089,19 @@ def _apply_theme(self, style, colors): foreground=[("active", "black"), ("!active", "black")], ) + style.configure( + "PyAEDT.Treeview", + background=colors["widget_bg"], + fieldbackground=colors["widget_bg"], + foreground=colors["text"], + font=self.default_font, + ) + + # Treeview headings + style.configure( + "PyAEDT.Treeview.Heading", background=colors["widget_bg"], foreground=colors["text"], font=self.default_font + ) + def __string_to_bool(v): # pragma: no cover """Change string to bool.""" diff --git a/src/ansys/aedt/core/generic/configurations.py b/src/ansys/aedt/core/generic/configurations.py index ae3312684633..50a0819826c3 100644 --- a/src/ansys/aedt/core/generic/configurations.py +++ b/src/ansys/aedt/core/generic/configurations.py @@ -896,6 +896,7 @@ def _update_boundaries(self, name, props): if not self.options.skip_import_if_exists: bound.props.update({k: props[k] for k in bound.props if k in props}) bound.update() + bound.update_assignment() return True bound = BoundaryObject(self._app, name, props, props["BoundType"]) if bound.props.get("Independent", None): diff --git a/tests/system/extensions/example_models/T45/Graphics_Card.aedt b/tests/system/extensions/example_models/T45/Graphics_Card.aedt new file mode 100644 index 000000000000..43130353da7b --- /dev/null +++ b/tests/system/extensions/example_models/T45/Graphics_Card.aedt @@ -0,0 +1,3243 @@ +$begin 'AnsoftProject' + Created='Thu Mar 02 13:18:51 2017' + Product='ElectronicsDesktop' + FileOwnedByWorkbench=false + $begin 'Desktop' + Version(2025, 1) + InfrastructureVersion(1, 0) + $begin 'FactoryHeader' + $begin 'geometry3deditor' + KernelVersion(2, 0) + ProjectContainsGeometry3D='1' + $end 'geometry3deditor' + $end 'FactoryHeader' + $end 'Desktop' + UsesAdvancedFeatures=false + NextUniqueID=0 + MoveBackwards=false + $begin 'HFSSEnvironment' + Version(1, 0) + $end 'HFSSEnvironment' + $begin 'PlanarEMEnvironment' + Version(1, 0) + $end 'PlanarEMEnvironment' + $begin 'Q3DEnvironment' + Version(1, 0) + $end 'Q3DEnvironment' + $begin '2DExtractorEnvironment' + Version(1, 0) + $end '2DExtractorEnvironment' + $begin 'NexximEnvironment' + Version(1, 0) + $end 'NexximEnvironment' + $begin 'NexximNetlistEnvironment' + Version(1, 0) + $end 'NexximNetlistEnvironment' + $begin 'EmitEnvironment' + Version(1, 0) + $end 'EmitEnvironment' + $begin 'Maxwell3DEnvironment' + Version(1, 0) + $end 'Maxwell3DEnvironment' + $begin 'Maxwell2DEnvironment' + Version(1, 0) + $end 'Maxwell2DEnvironment' + $begin 'RMxprtEnvironment' + Version(1, 0) + $end 'RMxprtEnvironment' + $begin 'MaxCirEnvironment' + Version(1, 0) + $end 'MaxCirEnvironment' + $begin 'SimplorerEnvironment' + Version(1, 0) + $end 'SimplorerEnvironment' + $begin 'IcepakEnvironment' + Version(1, 0) + $end 'IcepakEnvironment' + $begin 'MechanicalEnvironment' + Version(1, 0) + $end 'MechanicalEnvironment' + $begin 'SchematicEnvironment' + Version(1, 0) + $end 'SchematicEnvironment' + $begin 'geometry3deditor' + Version(1, 0) + $end 'geometry3deditor' + ReadVersion=12 + $begin 'DesignMgrEnvironment' + CompInstCounter=1 + GPortCounter=0 + NetCounter=0 + Alias('Ieee;Simplorer Elements\\Ieee', 'Std;Simplorer Elements\\Std', 'Basic_VHDLAMS;Simplorer Elements\\Basic Elements VHDLAMS\\Basic Elements VHDLAMS', 'Digital_Elements;Simplorer Elements\\Digital Elements\\Digital Elements', 'Transformations;Simplorer Elements\\Tools\\Transformations\\Transformations', 'HEV_VHDLAMS;Simplorer Elements\\HEV VHDLAMS\\HEV VHDLAMS', 'automotive_vda;Simplorer Elements\\VDALibs VHDLAMS\\automotive_vda', 'example_boardnet;Simplorer Elements\\VDALibs VHDLAMS\\example_boardnet', 'example_ecar;Simplorer Elements\\VDALibs VHDLAMS\\example_ecar', 'fundamentals_vda;Simplorer Elements\\VDALibs VHDLAMS\\fundamentals_vda', 'hybrid_emc_vda;Simplorer Elements\\VDALibs VHDLAMS\\hybrid_emc_vda', 'megma;Simplorer Elements\\VDALibs VHDLAMS\\megma', 'modelica_rotational;Simplorer Elements\\VDALibs VHDLAMS\\modelica_rotational', 'modelica_thermal;Simplorer Elements\\VDALibs VHDLAMS\\modelica_thermal', 'modelica_translational;Simplorer Elements\\VDALibs VHDLAMS\\modelica_translational', 'spice2vhd;Simplorer Elements\\VDALibs VHDLAMS\\spice2vhd', 'spice2vhd_devices;Simplorer Elements\\VDALibs VHDLAMS\\spice2vhd_devices', 'aircraft_electrical_vhdlams;Simplorer Elements\\Aircraft Electrical VHDLAMS\\Aircraft Electrical VHDLAMS', 'power_system_vhdlams;Simplorer Elements\\Power System VHDLAMS\\Power System VHDLAMS') + $end 'DesignMgrEnvironment' + $begin 'ProjectDatasets' + NextUniqueID=1 + MoveBackwards=false + DatasetType='ProjectDatasetType' + $begin 'DatasetDefinitions' + $begin '$Ceramic_material_39' + ID=0 + $begin 'Coordinates' + DimUnits[2: '', ''] + Points[8: -273.15, 0.067032967032967, -196.15, 0.067032967032967, 99.85, 1, 726.85, 1] + $end 'Coordinates' + $end '$Ceramic_material_39' + $end 'DatasetDefinitions' + $end 'ProjectDatasets' + VariableOrders[0:] + $begin 'Definitions' + $begin 'Materials' + $begin 'Al-Extruded' + CoordinateSystemType='Cartesian' + BulkOrSurfaceType=1 + $begin 'PhysicsTypes' + set('Thermal') + $end 'PhysicsTypes' + $begin 'AttachedData' + $begin 'MatAppearanceData' + property_data='appearance_data' + Red=232 + Green=235 + Blue=235 + $end 'MatAppearanceData' + $end 'AttachedData' + permittivity='1' + permeability='1' + conductivity='0' + dielectric_loss_tangent='0' + magnetic_loss_tangent='0' + thermal_conductivity='152' + mass_density='2000' + specific_heat='900' + youngs_modulus='0' + poissons_ratio='0' + thermal_expansion_coefficient='0' + $begin 'thermal_material_type' + property_type='ChoiceProperty' + Choice='Solid' + $end 'thermal_material_type' + diffusivity='0.8' + molecular_mass='0' + viscosity='0' + $begin 'clarity_type' + property_type='ChoiceProperty' + Choice='Opaque' + $end 'clarity_type' + ModTime=1753886315 + Library='' + LibLocation='Project' + ModSinceLib=true + $end 'Al-Extruded' + $begin 'air' + CoordinateSystemType='Cartesian' + BulkOrSurfaceType=1 + $begin 'PhysicsTypes' + set('Electromagnetic', 'Thermal') + $end 'PhysicsTypes' + $begin 'AttachedData' + $begin 'MatAppearanceData' + property_data='appearance_data' + Red=230 + Green=230 + Blue=230 + Transparency=0.949999988079071 + $end 'MatAppearanceData' + $end 'AttachedData' + permittivity='1.0006' + permeability='1.0000004' + conductivity='0' + dielectric_loss_tangent='0' + magnetic_loss_tangent='0' + thermal_conductivity='0.0261' + mass_density='1.1614' + specific_heat='1005' + youngs_modulus='0' + poissons_ratio='0' + thermal_expansion_coefficient='0.00333' + $begin 'thermal_material_type' + property_type='ChoiceProperty' + Choice='Fluid' + $end 'thermal_material_type' + diffusivity='2.88e-05' + molecular_mass='0.028966' + viscosity='1.84e-05' + material_refractive_index='1.000293' + $begin 'clarity_type' + property_type='ChoiceProperty' + Choice='Transparent' + $end 'clarity_type' + ModTime=1753886316 + Library='' + LibLocation='Project' + ModSinceLib=true + $end 'air' + $begin 'PCB_Material' + CoordinateSystemType='Cartesian' + BulkOrSurfaceType=1 + $begin 'PhysicsTypes' + set('Thermal') + $end 'PhysicsTypes' + $begin 'AttachedData' + $begin 'MatAppearanceData' + property_data='appearance_data' + Red=210 + Green=105 + Blue=30 + Transparency=0 + $end 'MatAppearanceData' + $end 'AttachedData' + permittivity='1' + permeability='1' + conductivity='0' + dielectric_loss_tangent='0' + magnetic_loss_tangent='0' + thermal_conductivity='0.01' + mass_density='1' + specific_heat='2' + youngs_modulus='0' + poissons_ratio='0' + thermal_expansion_coefficient='1' + diffusivity='0.8' + molecular_mass='0' + viscosity='0' + ModTime=1753886315 + Library='' + LibLocation='Project' + ModSinceLib=true + $end 'PCB_Material' + $begin 'Ceramic_material' + CoordinateSystemType='Cartesian' + BulkOrSurfaceType=1 + $begin 'PhysicsTypes' + set('Thermal') + $end 'PhysicsTypes' + $begin 'AttachedData' + $begin 'MatAppearanceData' + property_data='appearance_data' + Red=0 + Green=100 + Blue=0 + Transparency=0 + $end 'MatAppearanceData' + $end 'AttachedData' + $begin 'ModifierData' + $begin 'ThermalModifierData' + modifier_data='thermal_modifier_data' + $begin 'all_thermal_modifiers' + $end 'all_thermal_modifiers' + $end 'ThermalModifierData' + $end 'ModifierData' + permittivity='1' + permeability='1' + conductivity='0' + dielectric_loss_tangent='0' + magnetic_loss_tangent='0' + thermal_conductivity='15' + mass_density='2500' + specific_heat='910' + youngs_modulus='0' + poissons_ratio='0' + thermal_expansion_coefficient='0' + $begin 'thermal_material_type' + property_type='ChoiceProperty' + Choice='Solid' + $end 'thermal_material_type' + diffusivity='0.8' + molecular_mass='0' + viscosity='0' + ModTime=1753886315 + Library='' + LibLocation='Project' + ModSinceLib=true + $end 'Ceramic_material' + $end 'Materials' + $begin 'SurfaceMaterials' + $begin 'Steel-oxidised-surface' + CoordinateSystemType='Cartesian' + BulkOrSurfaceType=2 + $begin 'PhysicsTypes' + set('Thermal') + $end 'PhysicsTypes' + surface_emissivity='0.8' + ModTime=1461288057 + Library='SurfaceMaterials' + LibLocation='SysLibrary' + ModSinceLib=false + $end 'Steel-oxidised-surface' + $begin 'Shellac dull-surface' + CoordinateSystemType='Cartesian' + BulkOrSurfaceType=2 + $begin 'PhysicsTypes' + set('Thermal') + $end 'PhysicsTypes' + surface_emissivity='0.91' + ModTime=1461288057 + Library='SurfaceMaterials' + LibLocation='SysLibrary' + ModSinceLib=false + $end 'Shellac dull-surface' + $begin 'Shellac-Bright-surface' + CoordinateSystemType='Cartesian' + BulkOrSurfaceType=2 + $begin 'PhysicsTypes' + set('Thermal') + $end 'PhysicsTypes' + surface_emissivity='0.82' + ModTime=1461288057 + Library='SurfaceMaterials' + LibLocation='SysLibrary' + ModSinceLib=false + $end 'Shellac-Bright-surface' + $begin 'Soft Rubber-Gray-surface' + CoordinateSystemType='Cartesian' + BulkOrSurfaceType=2 + $begin 'PhysicsTypes' + set('Thermal') + $end 'PhysicsTypes' + surface_emissivity='0.86' + ModTime=1461288057 + Library='SurfaceMaterials' + LibLocation='SysLibrary' + ModSinceLib=false + $end 'Soft Rubber-Gray-surface' + $end 'SurfaceMaterials' + $begin 'Scripts' + $end 'Scripts' + $begin 'Symbols' + $begin 'IcepakDesign1' + ModTime=1488469606 + Library='' + ModSinceLib=false + LibLocation='Project' + HighestLevel=1 + Normalize=true + InitialLevels(0, 1) + $begin 'Graphics' + Rect(0, 0, 0, 0, 0.00254, 0.00254, 0.00508, 0.00508, 0, 0, 0) + Rect(0, 1, 0, 0, 0.000423333333333333, 0.00254, 0.000423333333333333, 0.000423333333333334, 0, 0, 0) + $end 'Graphics' + $end 'IcepakDesign1' + $end 'Symbols' + $begin 'DefInfo' + IcepakDesign1(1002, 0, 0, 0, '', 1488469606, '', 'IcepakDesign1', '', '', '', '', '', 'Design.bmp', '', 'Project', '', '', 1488469606, '', 0, 0) + $end 'DefInfo' + $begin 'Compdefs' + $begin 'IcepakDesign1' + Library='' + CircuitEnv=0 + Refbase='U' + NumParts=1 + ModSinceLib=true + $begin 'Properties' + TextProp('Representation', 'SRD', '', 'IcepakDesign1') + TextProp('Owner', 'SRD', '', 'Icepak') + $end 'Properties' + CompExtID=6 + $begin 'Parameters' + ButtonProp('CosimDefinition', 'D', '', 'Edit', 'Edit', 40501, ButtonPropClientData()) + MenuProp('CoSimulator', 'D', '', 'DefaultNetlist', 0) + $end 'Parameters' + $begin 'CosimDefinitions' + $begin 'CosimDefinition' + CosimulatorType=4 + CosimDefName='DefaultNetlist' + IsDefinition=true + Connect=true + Data() + GRef() + $end 'CosimDefinition' + DefaultCosim='DefaultNetlist' + $end 'CosimDefinitions' + $end 'IcepakDesign1' + $end 'Compdefs' + $end 'Definitions' + DesignIDServer=2 + MoveBackwards=false + $begin 'IcepakModel' + RepRewriteV2=true + Name='IcepakDesign1' + DesignID=0 + 'Perform Minimal validation'=true + 'Default Fluid Material'='air' + 'Default Solid Material'='Al-Extruded' + 'Default Surface Material'='Steel-Oxidised-surface' + AmbientTemperature='20cel' + AmbientPressure='0n_per_meter_sq' + AmbientRadiationTemperature='20cel' + 'Gravity Vector CS ID'=1 + 'Gravity Vector Axis'='Y' + Positive=false + ExportOnSimulationComplete=false + ExportDirectory='' + SherlockExportOnSimulationComplete=false + SherlockExportAsFatigue=true + SherlockExportDirectory='D:/Siva_Coding/Graphics_Card.aedtexport/IcepakDesign1/' + AutoLaunchMeshViewer=true + MeshCadAsLightWeight=true + EnableTransitionTemplate=false + TempSecondaryGradientSkewMesh=false + EnableMeshByLayerFor2DMLM=false + BoundaryBasedMeshRefinement=false + EnableAltitudeEffects=false + UpdateFanCurve=false + Altitude='0meter' + EnableIdealGasLaw=false + OperatingPressure='101325n_per_meter_sq' + EnableOperatingDensity=false + OperatingDensity='1.225kg_per_m3' + AppendTemplateToFieldsSummaryReport=false + EnableLoadSolution=false + $begin 'SolutionTypeOption' + SolutionTypeOption='SteadyState' + ProblemOption='TemperatureAndFlow' + $end 'SolutionTypeOption' + $begin 'OutputVariable' + NextUniqueID=0 + MoveBackwards=false + $end 'OutputVariable' + $begin 'ModelSetup' + $begin 'DesignDatasets' + NextUniqueID=0 + MoveBackwards=false + DatasetType='DesignDatasetType' + $begin 'DatasetDefinitions' + $end 'DatasetDefinitions' + $end 'DesignDatasets' + VariableOrders[0:] + $begin 'Editor3D Doc Preferences' + BackgroundColorVersion=1 + 'Plane Background'=0 + 'Need Lights'=true + 'Ambient Light'=9671571 + 'Num Lights'=4 + Light0[4: 6710886, 0, -1, -0.150000005960464] + Light1[4: 6710886, -0.600000023841858, 0.100000001490116, -0.5] + Light2[4: 6710886, 0.5, 0.100000001490116, -0.5] + Light3[4: 6710886, 0.200000002980232, 0.400000005960464, 1] + Ver=2 + $end 'Editor3D Doc Preferences' + SnapMode=31 + WorkingCS=1 + $begin 'GeometryCore' + BlockVersionID=3 + DataVersion=170 + NativeKernel='PARASOLID' + NativeKernelVersionID=25 + Units='mm' + ModelExtents=10000 + InstanceID=-1 + $begin 'ValidationOptions' + EntityCheckLevel='Basic' + IgnoreUnclassifiedObjects=true + SkipIntersectionChecks=true + $end 'ValidationOptions' + ContainsGeomLinkUDM=false + $begin 'GeometryOperations' + BlockVersionID=2 + $begin 'AnsoftRangedIDServerManager' + $begin 'AnsoftRangedIDServer' + IDServerObjectTypeID=0 + IDServerRangeMin=0 + IDServerRangeMax=2146483647 + NextUniqueID=609 + MoveBackwards=false + $end 'AnsoftRangedIDServer' + $begin 'AnsoftRangedIDServer' + IDServerObjectTypeID=1 + IDServerRangeMin=2146483648 + IDServerRangeMax=2146485547 + NextUniqueID=2146483654 + MoveBackwards=false + $end 'AnsoftRangedIDServer' + $end 'AnsoftRangedIDServerManager' + StartBackGroundFaceID=2146483648 + $begin 'CoordinateSystems' + $end 'CoordinateSystems' + $begin 'OperandCSs' + $end 'OperandCSs' + $begin 'SubModelDefinitions' + $end 'SubModelDefinitions' + $begin 'Groups' + $begin 'Group' + GroupID=477 + $begin 'Attributes' + Name='graphics_card_simple' + ParentGroupID=-1 + $end 'Attributes' + $end 'Group' + $end 'Groups' + $begin 'UserDefinedModels' + $end 'UserDefinedModels' + $begin 'OperandUserDefinedModels' + $end 'OperandUserDefinedModels' + $begin 'ToplevelParts' + $begin 'GeometryPart' + $begin 'Attributes' + Name='Region' + Flags='Wireframe#' + Color='(0 0 0)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=-1 + MaterialValue='"air"' + SurfaceMaterialValue='""' + SolveInside=true + ShellElement=false + ShellElementThickness='0mm' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='Region' + ID=5 + ReferenceCoordSystemID=1 + $begin 'RegionParameters' + KernelVersion=9 + '+XPaddingType'='Percentage Offset' + '+XPadding'='50' + '-XPaddingType'='Percentage Offset' + '-XPadding'='50' + '+YPaddingType'='Percentage Offset' + '+YPadding'='50' + '-YPaddingType'='Percentage Offset' + '-YPadding'='50' + '+ZPaddingType'='Percentage Offset' + '+ZPadding'='50' + '-ZPaddingType'='Percentage Offset' + '-ZPadding'='50' + $begin 'BoxForVirtualObjects' + LowPoint[3: 1, 1, 1] + HighPoint[3: -1, -1, -1] + $end 'BoxForVirtualObjects' + $end 'RegionParameters' + ParentPartID=6 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=6 + NumWires=0 + NumLoops=6 + NumCoedges=24 + NumEdges=12 + NumVertices=8 + $end 'Topology' + BodyID=6 + StartFaceID=7 + StartEdgeID=13 + StartVertexID=25 + NumNewFaces=6 + NumNewEdges=12 + NumNewVertices=8 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + IsXZ2DModeler=false + $end 'OperationIdentity' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[0:] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $begin 'GeometryPart' + $begin 'Attributes' + Name='SERIAL_PORT' + Flags='' + Color='(175 175 175)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=477 + MaterialValue='"Al-Extruded"' + SurfaceMaterialValue='"Soft Rubber-Gray-surface"' + SolveInside=true + ShellElement=false + ShellElementThickness='0mm' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='NativeBody' + ID=33 + ReferenceCoordSystemID=1 + $begin 'NativeBodyParameters' + KernelVersion=9 + SourceFile='D:\\AnsysEM\\AnsysEM18.1\\Win64\\Examples\\Icepak\\Graphics Card\\graphics_card_simple.stp' + $end 'NativeBodyParameters' + ParentPartID=34 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=6 + NumWires=0 + NumLoops=6 + NumCoedges=24 + NumEdges=12 + NumVertices=8 + $end 'Topology' + BodyID=-1 + StartFaceID=-1 + StartEdgeID=-1 + StartVertexID=-1 + NumNewFaces=0 + NumNewEdges=0 + NumNewVertices=0 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + $end 'OperationIdentity' + BodyType='BRepBody' + $begin 'BodyBlock' + BodyFileNamesVec[1: '0000034.x_b'] + $end 'BodyBlock' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[0:] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $begin 'GeometryPart' + $begin 'Attributes' + Name='MEMORY1' + Flags='' + Color='(175 175 175)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=477 + MaterialValue='"Ceramic_material"' + SurfaceMaterialValue='"Soft Rubber-Gray-surface"' + SolveInside=true + ShellElement=false + ShellElementThickness='0mm' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='NativeBody' + ID=61 + ReferenceCoordSystemID=1 + $begin 'NativeBodyParameters' + KernelVersion=9 + SourceFile='D:\\AnsysEM\\AnsysEM18.1\\Win64\\Examples\\Icepak\\Graphics Card\\graphics_card_simple.stp' + $end 'NativeBodyParameters' + ParentPartID=62 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=6 + NumWires=0 + NumLoops=6 + NumCoedges=24 + NumEdges=12 + NumVertices=8 + $end 'Topology' + BodyID=-1 + StartFaceID=-1 + StartEdgeID=-1 + StartVertexID=-1 + NumNewFaces=0 + NumNewEdges=0 + NumNewVertices=0 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + $end 'OperationIdentity' + BodyType='BRepBody' + $begin 'BodyBlock' + BodyFileNamesVec[1: '0000062.x_b'] + $end 'BodyBlock' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[0:] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $begin 'GeometryPart' + $begin 'Attributes' + Name='MEMORY1_1' + Flags='' + Color='(175 175 175)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=477 + MaterialValue='"Ceramic_material"' + SurfaceMaterialValue='"Soft Rubber-Gray-surface"' + SolveInside=true + ShellElement=false + ShellElementThickness='0mm' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='NativeBody' + ID=89 + ReferenceCoordSystemID=1 + $begin 'NativeBodyParameters' + KernelVersion=9 + SourceFile='D:\\AnsysEM\\AnsysEM18.1\\Win64\\Examples\\Icepak\\Graphics Card\\graphics_card_simple.stp' + $end 'NativeBodyParameters' + ParentPartID=90 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=6 + NumWires=0 + NumLoops=6 + NumCoedges=24 + NumEdges=12 + NumVertices=8 + $end 'Topology' + BodyID=-1 + StartFaceID=-1 + StartEdgeID=-1 + StartVertexID=-1 + NumNewFaces=0 + NumNewEdges=0 + NumNewVertices=0 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + $end 'OperationIdentity' + BodyType='BRepBody' + $begin 'BodyBlock' + BodyFileNamesVec[1: '0000090.x_b'] + $end 'BodyBlock' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[0:] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $begin 'GeometryPart' + $begin 'Attributes' + Name='CAPACITOR' + Flags='' + Color='(175 175 175)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=477 + MaterialValue='"Ceramic_material"' + SurfaceMaterialValue='"Soft Rubber-Gray-surface"' + SolveInside=true + ShellElement=false + ShellElementThickness='0mm' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='NativeBody' + ID=117 + ReferenceCoordSystemID=1 + $begin 'NativeBodyParameters' + KernelVersion=9 + SourceFile='D:\\AnsysEM\\AnsysEM18.1\\Win64\\Examples\\Icepak\\Graphics Card\\graphics_card_simple.stp' + $end 'NativeBodyParameters' + ParentPartID=118 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=4 + NumWires=0 + NumLoops=4 + NumCoedges=12 + NumEdges=6 + NumVertices=4 + $end 'Topology' + BodyID=-1 + StartFaceID=-1 + StartEdgeID=-1 + StartVertexID=-1 + NumNewFaces=0 + NumNewEdges=0 + NumNewVertices=0 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + $end 'OperationIdentity' + BodyType='BRepBody' + $begin 'BodyBlock' + BodyFileNamesVec[1: '0000118.x_b'] + $end 'BodyBlock' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[0:] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $begin 'GeometryPart' + $begin 'Attributes' + Name='CAPACITOR_1' + Flags='' + Color='(175 175 175)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=477 + MaterialValue='"Ceramic_material"' + SurfaceMaterialValue='"Soft Rubber-Gray-surface"' + SolveInside=true + ShellElement=false + ShellElementThickness='0mm' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='NativeBody' + ID=133 + ReferenceCoordSystemID=1 + $begin 'NativeBodyParameters' + KernelVersion=9 + SourceFile='D:\\AnsysEM\\AnsysEM18.1\\Win64\\Examples\\Icepak\\Graphics Card\\graphics_card_simple.stp' + $end 'NativeBodyParameters' + ParentPartID=134 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=4 + NumWires=0 + NumLoops=4 + NumCoedges=12 + NumEdges=6 + NumVertices=4 + $end 'Topology' + BodyID=-1 + StartFaceID=-1 + StartEdgeID=-1 + StartVertexID=-1 + NumNewFaces=0 + NumNewEdges=0 + NumNewVertices=0 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + $end 'OperationIdentity' + BodyType='BRepBody' + $begin 'BodyBlock' + BodyFileNamesVec[1: '0000134.x_b'] + $end 'BodyBlock' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[0:] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $begin 'GeometryPart' + $begin 'Attributes' + Name='KB' + Flags='' + Color='(175 175 175)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=477 + MaterialValue='"Al-Extruded"' + SurfaceMaterialValue='"Soft Rubber-Gray-surface"' + SolveInside=true + ShellElement=false + ShellElementThickness='0mm' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='NativeBody' + ID=149 + ReferenceCoordSystemID=1 + $begin 'NativeBodyParameters' + KernelVersion=9 + SourceFile='D:\\AnsysEM\\AnsysEM18.1\\Win64\\Examples\\Icepak\\Graphics Card\\graphics_card_simple.stp' + $end 'NativeBodyParameters' + ParentPartID=150 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=6 + NumWires=0 + NumLoops=6 + NumCoedges=24 + NumEdges=12 + NumVertices=8 + $end 'Topology' + BodyID=-1 + StartFaceID=-1 + StartEdgeID=-1 + StartVertexID=-1 + NumNewFaces=0 + NumNewEdges=0 + NumNewVertices=0 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + $end 'OperationIdentity' + BodyType='BRepBody' + $begin 'BodyBlock' + BodyFileNamesVec[1: '0000150.x_b'] + $end 'BodyBlock' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[0:] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $begin 'GeometryPart' + $begin 'Attributes' + Name='HEAT_SINK' + Flags='' + Color='(175 175 175)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=477 + MaterialValue='"Al-Extruded"' + SurfaceMaterialValue='"Soft Rubber-Gray-surface"' + SolveInside=true + ShellElement=false + ShellElementThickness='0mm' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='NativeBody' + ID=177 + ReferenceCoordSystemID=1 + $begin 'NativeBodyParameters' + KernelVersion=9 + SourceFile='D:\\AnsysEM\\AnsysEM18.1\\Win64\\Examples\\Icepak\\Graphics Card\\graphics_card_simple.stp' + $end 'NativeBodyParameters' + ParentPartID=178 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=42 + NumWires=0 + NumLoops=42 + NumCoedges=240 + NumEdges=120 + NumVertices=80 + $end 'Topology' + BodyID=-1 + StartFaceID=-1 + StartEdgeID=-1 + StartVertexID=-1 + NumNewFaces=0 + NumNewEdges=0 + NumNewVertices=0 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + $end 'OperationIdentity' + BodyType='BRepBody' + $begin 'BodyBlock' + BodyFileNamesVec[1: '0000178.x_b'] + $end 'BodyBlock' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[1: 581] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $begin 'GeometryPart' + $begin 'Attributes' + Name='CPU' + Flags='' + Color='(175 175 175)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=477 + MaterialValue='"Al-Extruded"' + SurfaceMaterialValue='"Steel-oxidised-surface"' + SolveInside=true + ShellElement=false + ShellElementThickness='0mm' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='NativeBody' + ID=421 + ReferenceCoordSystemID=1 + $begin 'NativeBodyParameters' + KernelVersion=9 + SourceFile='D:\\AnsysEM\\AnsysEM18.1\\Win64\\Examples\\Icepak\\Graphics Card\\graphics_card_simple.stp' + $end 'NativeBodyParameters' + ParentPartID=422 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=6 + NumWires=0 + NumLoops=6 + NumCoedges=24 + NumEdges=12 + NumVertices=8 + $end 'Topology' + BodyID=-1 + StartFaceID=-1 + StartEdgeID=-1 + StartVertexID=-1 + NumNewFaces=0 + NumNewEdges=0 + NumNewVertices=0 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + $end 'OperationIdentity' + BodyType='BRepBody' + $begin 'BodyBlock' + BodyFileNamesVec[1: '0000422.x_b'] + $end 'BodyBlock' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[0:] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $begin 'GeometryPart' + $begin 'Attributes' + Name='ALPHA_MAIN_PCB' + Flags='' + Color='(175 175 175)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=477 + MaterialValue='"Al-Extruded"' + SurfaceMaterialValue='"Steel-oxidised-surface"' + SolveInside=true + ShellElement=false + ShellElementThickness='0mm' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='NativeBody' + ID=449 + ReferenceCoordSystemID=1 + $begin 'NativeBodyParameters' + KernelVersion=9 + SourceFile='D:\\AnsysEM\\AnsysEM18.1\\Win64\\Examples\\Icepak\\Graphics Card\\graphics_card_simple.stp' + $end 'NativeBodyParameters' + ParentPartID=450 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=6 + NumWires=0 + NumLoops=6 + NumCoedges=24 + NumEdges=12 + NumVertices=8 + $end 'Topology' + BodyID=-1 + StartFaceID=-1 + StartEdgeID=-1 + StartVertexID=-1 + NumNewFaces=0 + NumNewEdges=0 + NumNewVertices=0 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + $end 'OperationIdentity' + BodyType='BRepBody' + $begin 'BodyBlock' + BodyFileNamesVec[1: '0000450.x_b'] + $end 'BodyBlock' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[0:] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $begin 'GeometryPart' + $begin 'Attributes' + Name='Box1' + Flags='NonModel#Wireframe#' + Color='(255 0 0)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=-1 + MaterialValue='""' + SurfaceMaterialValue='""' + SolveInside=false + ShellElement=false + ShellElementThickness='0mm' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='Box' + ID=497 + ReferenceCoordSystemID=1 + $begin 'BoxParameters' + KernelVersion=9 + XPosition='-72mm' + YPosition='-5mm' + ZPosition='-63mm' + XSize='67mm' + YSize='38mm' + ZSize='52mm' + $end 'BoxParameters' + ParentPartID=498 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=6 + NumWires=0 + NumLoops=6 + NumCoedges=24 + NumEdges=12 + NumVertices=8 + $end 'Topology' + BodyID=498 + StartFaceID=499 + StartEdgeID=505 + StartVertexID=517 + NumNewFaces=6 + NumNewEdges=12 + NumNewVertices=8 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + $end 'OperationIdentity' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[1: 553] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $begin 'GeometryPart' + $begin 'Attributes' + Name='MeshRegion1_SubRegion' + Flags='NonModel#Wireframe#' + Color='(255 0 0)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=-1 + MaterialValue='""' + SurfaceMaterialValue='""' + SolveInside=true + ShellElement=false + ShellElementThickness='nan ' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='SubRegion' + ID=553 + ReferenceCoordSystemID=1 + $begin 'SubRegionParameters' + KernelVersion=24 + '+XPaddingType'='Absolute Offset' + '+XPadding'='0mm' + '-XPaddingType'='Absolute Offset' + '-XPadding'='0mm' + '+YPaddingType'='Absolute Offset' + '+YPadding'='0mm' + '-YPaddingType'='Absolute Offset' + '-YPadding'='0mm' + '+ZPaddingType'='Absolute Offset' + '+ZPadding'='0mm' + '-ZPaddingType'='Absolute Offset' + '-ZPadding'='0mm' + $begin 'BoxForVirtualObjects' + LowPoint[3: 1, 1, 1] + HighPoint[3: -1, -1, -1] + $end 'BoxForVirtualObjects' + SubRegionParts[1: 498] + SubRegionSubmodels[0:] + $end 'SubRegionParameters' + ParentPartID=554 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=6 + NumWires=0 + NumLoops=6 + NumCoedges=24 + NumEdges=12 + NumVertices=8 + $end 'Topology' + BodyID=554 + StartFaceID=555 + StartEdgeID=561 + StartVertexID=573 + NumNewFaces=6 + NumNewEdges=12 + NumNewVertices=8 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + IsXZ2DModeler=false + $end 'OperationIdentity' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[0:] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $begin 'GeometryPart' + $begin 'Attributes' + Name='MeshRegion2_SubRegion' + Flags='NonModel#Wireframe#' + Color='(143 175 143)' + Transparency=0 + PartCoordinateSystem=1 + UDMId=-1 + GroupId=-1 + MaterialValue='"air"' + SurfaceMaterialValue='""' + SolveInside=true + ShellElement=false + ShellElementThickness='nan ' + ReferenceTemperature='20cel' + IsMaterialEditable=true + IsSurfaceMaterialEditable=true + UseMaterialAppearance=false + IsLightweight=false + IsAlwaysHidden=false + $end 'Attributes' + $begin 'PhysicsAttributes' + SuppressedForPhysics='False' + SuppressedForPhysicsEditable=true + $end 'PhysicsAttributes' + $begin 'Operations' + $begin 'Operation' + OperationType='SubRegion' + ID=581 + ReferenceCoordSystemID=1 + $begin 'SubRegionParameters' + KernelVersion=25 + '+XPaddingType'='Percentage Offset' + '+XPadding'='1' + '-XPaddingType'='Percentage Offset' + '-XPadding'='1' + '+YPaddingType'='Percentage Offset' + '+YPadding'='1' + '-YPaddingType'='Percentage Offset' + '-YPadding'='1' + '+ZPaddingType'='Percentage Offset' + '+ZPadding'='1' + '-ZPaddingType'='Percentage Offset' + '-ZPadding'='1' + $begin 'BoxForVirtualObjects' + LowPoint[3: 1, 1, 1] + HighPoint[3: -1, -1, -1] + $end 'BoxForVirtualObjects' + SubRegionParts[1: 178] + SubRegionSubmodels[0:] + $end 'SubRegionParameters' + ParentPartID=582 + ReferenceUDMID=-1 + IsSuppressed=false + $begin 'OperationIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=6 + NumWires=0 + NumLoops=6 + NumCoedges=24 + NumEdges=12 + NumVertices=8 + $end 'Topology' + BodyID=582 + StartFaceID=583 + StartEdgeID=589 + StartVertexID=601 + NumNewFaces=6 + NumNewEdges=12 + NumNewVertices=8 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + IsXZ2DModeler=false + $end 'OperationIdentity' + $end 'Operation' + $end 'Operations' + $begin 'SubregionDependencyInformation' + ChildSubregions[0:] + $end 'SubregionDependencyInformation' + $end 'GeometryPart' + $end 'ToplevelParts' + $begin 'OperandParts' + $end 'OperandParts' + $begin 'Planes' + $begin 'GeometryPlane' + $begin 'Attributes' + Name='Plane1' + Color='(143 175 143)' + $end 'Attributes' + $begin 'Operation' + OperationType='Plane' + ID=496 + ReferenceCoordSystemID=1 + $begin 'PlaneParameters' + KernelVersion=9 + PlaneBaseX='0mm' + PlaneBaseY='1.6mm' + PlaneBaseZ='-55mm' + PlaneNormalX='0mm' + PlaneNormalY='0mm' + PlaneNormalZ='5mm' + $end 'PlaneParameters' + ParentPartID=-1 + ReferenceUDMID=-1 + $end 'Operation' + $end 'GeometryPlane' + $end 'Planes' + $begin 'Points' + $begin 'GeometryPoint' + $begin 'Attributes' + Name='CPU_Monitor' + Color='(143 175 143)' + $end 'Attributes' + $begin 'Operation' + OperationType='Point' + ID=482 + ReferenceCoordSystemID=1 + $begin 'PointParameters' + KernelVersion=9 + PointX='-37mm' + PointY='3.086mm' + PointZ='-43mm' + $end 'PointParameters' + ParentPartID=-1 + ReferenceUDMID=-1 + $end 'Operation' + $end 'GeometryPoint' + $begin 'GeometryPoint' + $begin 'Attributes' + Name='Memory_Monitor' + Color='(143 175 143)' + $end 'Attributes' + $begin 'Operation' + OperationType='Point' + ID=483 + ReferenceCoordSystemID=1 + $begin 'PointParameters' + KernelVersion=9 + PointX='-35mm' + PointY='3.6mm' + PointZ='-86mm' + $end 'PointParameters' + ParentPartID=-1 + ReferenceUDMID=-1 + $end 'Operation' + $end 'GeometryPoint' + $begin 'GeometryPoint' + $begin 'Attributes' + Name='Point1' + Color='(143 175 143)' + $end 'Attributes' + $begin 'Operation' + OperationType='Point' + ID=485 + ReferenceCoordSystemID=1 + $begin 'PointParameters' + KernelVersion=9 + PointX='80mm' + PointY='14.243mm' + PointZ='-55mm' + $end 'PointParameters' + ParentPartID=-1 + ReferenceUDMID=-1 + $end 'Operation' + $end 'GeometryPoint' + $end 'Points' + $begin 'GeometryEntityLists' + $end 'GeometryEntityLists' + $begin 'RegionIdentity' + $begin 'Topology' + NumLumps=1 + NumShells=1 + NumFaces=6 + NumWires=0 + NumLoops=6 + NumCoedges=24 + NumEdges=12 + NumVertices=8 + $end 'Topology' + BodyID=6 + StartFaceID=7 + StartEdgeID=13 + StartVertexID=25 + NumNewFaces=6 + NumNewEdges=12 + NumNewVertices=8 + FaceNameAndIDMap() + EdgeNameAndIDMap() + VertexNameAndIDMap() + IsXZ2DModeler=false + $end 'RegionIdentity' + $begin 'CachedNames' + $begin 'allobjects' + allobjects(-1) + $end 'allobjects' + $begin 'alpha_main_pcb' + alpha_main_pcb(-1) + $end 'alpha_main_pcb' + $begin 'box' + box(1) + $end 'box' + $begin 'capacitor' + capacitor(-1) + $end 'capacitor' + $begin 'capacitor_' + capacitor_(1) + $end 'capacitor_' + $begin 'cpu' + cpu(-1) + $end 'cpu' + $begin 'cpu_monitor' + cpu_monitor(-1) + $end 'cpu_monitor' + $begin 'global' + global(-1) + $end 'global' + $begin 'graphics_card_simple' + graphics_card_simple(-1) + $end 'graphics_card_simple' + $begin 'heat_sink' + heat_sink(-1) + $end 'heat_sink' + $begin 'kb' + kb(-1) + $end 'kb' + $begin 'memory' + memory(1) + $end 'memory' + $begin 'memory1_' + memory1_(1) + $end 'memory1_' + $begin 'memory_monitor' + memory_monitor(-1) + $end 'memory_monitor' + $begin 'meshregion1_subregion' + meshregion1_subregion(-1) + $end 'meshregion1_subregion' + $begin 'meshregion2_subregion' + meshregion2_subregion(-1) + $end 'meshregion2_subregion' + $begin 'model' + model(-1) + $end 'model' + $begin 'plane' + plane(1) + $end 'plane' + $begin 'point' + point(1) + $end 'point' + $begin 'region' + region(-1) + $end 'region' + $begin 'serial_port' + serial_port(-1) + $end 'serial_port' + $end 'CachedNames' + $end 'GeometryOperations' + $begin 'GeometryDependencies' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 5) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 33) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 61) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 89) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 117) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 133) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 149) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 177) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 421) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 449) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 497) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 553) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryBodyOperation', 581) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryOperation', 496) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryOperation', 482) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryOperation', 483) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $begin 'DependencyInformation' + NumParents=1 + DependencyObject('GeometryOperation', 485) + DependencyObject('CoordinateSystem', 1) + $end 'DependencyInformation' + $end 'GeometryDependencies' + $end 'GeometryCore' + $begin 'AssignedEntities' + AssignedObject[8: 62, 90, 134, 150, 178, 422, 554, 582] + $begin 'AssignedFace' + kID=10 + $begin 'FaceData' + ParentObjectID=6 + NormalValid=true + FaceNormal(-1, -0, -0) + $begin 'FaceGeomTopol' + FaceTopol(1, 4, 4, 4) + $begin 'FaceGeometry' + Area=16720 + FcUVMid(-240, 14, -55) + $begin 'FcTolVts' + TolVt(-240, -24, 55, 5e-07) + TolVt(-240, 52, 55, 5e-07) + TolVt(-240, 52, -165, 5e-07) + TolVt(-240, -24, -165, 5e-07) + $end 'FcTolVts' + $end 'FaceGeometry' + $end 'FaceGeomTopol' + $end 'FaceData' + $end 'AssignedFace' + $begin 'AssignedFace' + kID=12 + $begin 'FaceData' + ParentObjectID=6 + NormalValid=true + FaceNormal(1, 0, 0) + $begin 'FaceGeomTopol' + FaceTopol(1, 4, 4, 4) + $begin 'FaceGeometry' + Area=16720 + FcUVMid(80, 14, -55) + $begin 'FcTolVts' + TolVt(80, 52, -165, 5e-07) + TolVt(80, 52, 55, 5e-07) + TolVt(80, -24, 55, 5e-07) + TolVt(80, -24, -165, 5e-07) + $end 'FcTolVts' + $end 'FaceGeometry' + $end 'FaceGeomTopol' + $end 'FaceData' + $end 'AssignedFace' + $begin 'AssignedFace' + kID=120 + $begin 'FaceData' + ParentObjectID=118 + NormalValid=false + $begin 'FaceGeomTopol' + FaceTopol(1, 4, 4, 4) + $begin 'FaceGeometry' + Area=376.991118430775 + FcUVMid(-86, 13.6, -95) + $begin 'FcTolVts' + TolVt(-91, 1.6, -100, 5e-07) + TolVt(-81, 1.6, -100, 5e-07) + TolVt(-81, 25.6, -100, 5e-07) + TolVt(-91, 25.6, -100, 5e-07) + $end 'FcTolVts' + $end 'FaceGeometry' + $end 'FaceGeomTopol' + $end 'FaceData' + $end 'AssignedFace' + $begin 'AssignedFace' + kID=155 + $begin 'FaceData' + ParentObjectID=150 + NormalValid=false + $begin 'FaceGeomTopol' + FaceTopol(1, 4, 4, 4) + $begin 'FaceGeometry' + Area=179.2 + FcUVMid(-153.6, 1.6, -102) + $begin 'FcTolVts' + TolVt(-147.2, 1.6, -109, 5e-07) + TolVt(-147.2, 1.6, -95, 5e-07) + TolVt(-160, 1.6, -95, 5e-07) + TolVt(-160, 1.6, -109, 5e-07) + $end 'FcTolVts' + $end 'FaceGeometry' + $end 'FaceGeomTopol' + $end 'FaceData' + $end 'AssignedFace' + $begin 'AssignedFace' + kID=451 + $begin 'FaceData' + ParentObjectID=450 + NormalValid=false + $begin 'FaceGeomTopol' + FaceTopol(1, 4, 4, 4) + $begin 'FaceGeometry' + Area=17600 + FcUVMid(-80, 0, -55) + $begin 'FcTolVts' + TolVt(-160, 0, 0, 5e-07) + TolVt(-160, 0, -110, 5e-07) + TolVt(0, 0, -110, 5e-07) + TolVt(0, 0, 0, 5e-07) + $end 'FcTolVts' + $end 'FaceGeometry' + $end 'FaceGeomTopol' + $end 'FaceData' + $end 'AssignedFace' + $begin 'AssignedFace' + kID=455 + $begin 'FaceData' + ParentObjectID=450 + NormalValid=false + $begin 'FaceGeomTopol' + FaceTopol(1, 4, 4, 4) + $begin 'FaceGeometry' + Area=17600 + FcUVMid(-80, 1.6, -55) + $begin 'FcTolVts' + TolVt(-160, 1.6, 0, 5e-07) + TolVt(0, 1.6, 0, 5e-07) + TolVt(0, 1.6, -110, 5e-07) + TolVt(-160, 1.6, -110, 5e-07) + $end 'FcTolVts' + $end 'FaceGeometry' + $end 'FaceGeomTopol' + $end 'FaceData' + $end 'AssignedFace' + $end 'AssignedEntities' + GroupByMaterial=true + GroupSheetByMaterial=true + GroupCompByDefID=true + DoNotOrganizeUnderGroup=true + DoNotOrganizeUnderComponent=false + OrganizeLightweight=false + ShowGroup=true + $begin 'LastUserInputs' + $end 'LastUserInputs' + $end 'ModelSetup' + $begin '3DComponent' + $begin 'NativeComponentVisualization' + $end 'NativeComponentVisualization' + $end '3DComponent' + $begin 'BoundarySetup' + $begin 'GlobalBoundData' + $end 'GlobalBoundData' + $begin 'Boundaries' + NextUniqueID=9 + MoveBackwards=false + $begin 'Grille1' + ID=0 + BoundType='Grille' + IsComponent=false + Faces(12) + 'Pressure Loss Type'='Coeff' + 'Free Area Ratio'='0.8' + 'Resistance Type'='Perforated Thin Vent' + 'External Rad. Temperature'='AmbientTemp' + 'External Total Pressure'='AmbientPressure' + DimUnits[2: '', ''] + X() + Y() + $end 'Grille1' + $begin 'Opening1' + ID=1 + BoundType='Opening' + IsComponent=false + Faces(10) + Temperature='AmbientTemp' + 'External Rad. Temperature'='AmbientRadTemp' + 'Inlet Type'='Velocity' + 'Static Pressure'='AmbientPressure' + 'X Velocity'='2m_per_sec' + 'Y Velocity'='0m_per_sec' + 'Z Velocity'='0m_per_sec' + 'No Reverse Flow'=false + $end 'Opening1' + $begin 'CPU' + ID=2 + BoundType='Block' + IsComponent=false + Objects(422, 150, 178) + ParentBndID=-1 + 'Block Type'='Solid' + 'Use External Conditions'=false + 'Use Total Power'=true + 'Total Power'='4W' + $end 'CPU' + $begin 'Memory' + ID=3 + BoundType='Block' + IsComponent=false + Objects(62, 90) + ParentBndID=-1 + 'Block Type'='Solid' + 'Use External Conditions'=false + 'Use Total Power'=false + 'Power Density'='5w_per_m3' + $end 'Memory' + $begin 'Source1' + ID=5 + BoundType='Source' + IsComponent=false + Faces(155) + 'Thermal Condition'='Total Power' + 'Total Power'='1W' + 'Surface Heat'='0mW_per_m2' + Temperature='AmbientTemp' + $begin 'Radiation' + Radiate=false + $end 'Radiation' + 'Voltage/Current - Enabled'=false + 'Voltage/Current Option'='Current' + Current='0A' + Voltage='0V' + $end 'Source1' + $begin 'Source2' + ID=6 + BoundType='Source' + IsComponent=false + Faces(451) + 'Thermal Condition'='Fixed Temperature' + 'Total Power'='0W' + 'Surface Heat'='0mW_per_m2' + Temperature='35cel' + $begin 'Radiation' + Radiate=false + $end 'Radiation' + 'Voltage/Current - Enabled'=false + 'Voltage/Current Option'='Current' + Current='0A' + Voltage='0V' + $end 'Source2' + $begin 'HTC' + ID=7 + BoundType='Block' + IsComponent=false + Objects(134) + ParentBndID=-1 + 'Block Type'='Solid' + 'Use External Conditions'=true + 'Use Total Power'=true + 'Heat Transfer Coefficient'='5w_per_m2kel' + Temperature='30cel' + 'Total Power'='0W' + $end 'HTC' + $begin 'Source3' + ID=8 + BoundType='Source' + IsComponent=false + Faces(120) + 'Thermal Condition'='Surface Flux' + 'Total Power'='0W' + 'Surface Heat'='5kW_per_m2' + Temperature='AmbientTemp' + $begin 'Radiation' + Radiate=false + $end 'Radiation' + 'Voltage/Current - Enabled'=false + 'Voltage/Current Option'='Current' + Current='0A' + Voltage='0V' + $end 'Source3' + $end 'Boundaries' + $begin 'ProductSpecificData' + $end 'ProductSpecificData' + $end 'BoundarySetup' + $begin 'Monitor' + $begin 'IcepakMonitors' + NextUniqueID=4 + MoveBackwards=false + $end 'IcepakMonitors' + $end 'Monitor' + $begin 'MeshRegion' + $begin 'MeshSetup' + NextUniqueID=3 + MoveBackwards=false + $begin 'Global' + DType='RegionT' + ID=0 + IsComponent=false + MeshMethod='MesherHD' + UserSpecifiedSettings=true + ComputeGap=true + MaxElementSizeX='16mm' + MaxElementSizeY='3.5mm' + MaxElementSizeZ='11mm' + MinElementsInGap='3' + MinElementsOnEdge='2' + MaxSizeRatio='2' + NoOGrids=false + EnableMLM=true + EnforeMLMType='3D' + MaxLevels='2' + BufferLayers='0' + UniformMeshParametersType='Average' + StairStepMeshing=false + MinGapX='1mm' + MinGapY='1mm' + MinGapZ='1mm' + Objects(6) + StairStepSliderMeshing=false + FacetLevel='3' + ProximitySizeFunction=true + CurvatureSizeFunction=true + EnableTransition=false + OptimizePCBMesh=true + Enable2DCutCell=false + EnforceCutCellMeshing=false + Enforce2dot5DCutCell=false + $end 'Global' + $begin 'MeshRegion1' + DType='RegionT' + ID=1 + IsComponent=false + Enable=true + MeshMethod='MesherHD' + UserSpecifiedSettings=true + MaxElementSizeX='3.35mm' + MaxElementSizeY='1.75mm' + MaxElementSizeZ='2.65mm' + MinElementsInGap='3' + MinElementsOnEdge='2' + MaxSizeRatio='2' + NoOGrids=false + EnableMLM=true + EnforeMLMType='3D' + MaxLevels='2' + BufferLayers='0' + UniformMeshParametersType='Average' + StairStepMeshing=false + '2DMLMType'='2DMLM_None' + MinGapX='1mm' + MinGapY='1mm' + MinGapZ='1mm' + Objects(554) + ProximitySizeFunction=true + CurvatureSizeFunction=true + EnableTransition=false + OptimizePCBMesh=true + Enable2DCutCell=false + EnforceCutCellMeshing=false + Enforce2dot5DCutCell=false + $end 'MeshRegion1' + $begin 'MeshRegion2' + DType='RegionT' + ID=2 + IsComponent=false + Enable=true + MeshMethod='MesherHD' + UserSpecifiedSettings=false + MeshRegionResolution=3 + GeometryBasedMeshing=false + MinGapX='1mm' + MinGapY='1mm' + MinGapZ='1mm' + Objects(582) + ProximitySizeFunction=true + CurvatureSizeFunction=true + EnableTransition=false + OptimizePCBMesh=true + Enable2DCutCell=false + EnforceCutCellMeshing=false + Enforce2dot5DCutCell=false + $end 'MeshRegion2' + $end 'MeshSetup' + $end 'MeshRegion' + $begin 'AnalysisSetup' + $begin 'DesignMeshLink' + ImportMesh=false + $end 'DesignMeshLink' + $begin 'SolveSetups' + NextUniqueID=2 + MoveBackwards=false + $begin 'Setup1' + ID=0 + SetupType='IcepakSteadyState' + Enabled=true + $begin 'MeshLink' + ImportMesh=false + $end 'MeshLink' + 'Flow Regime'='Turbulent' + 'Turbulent Model Eqn'='ZeroEquation' + 'Include Temperature'=true + 'Include Flow'=true + 'Include Gravity'=true + 'Include Solar'=false + 'Solution Initialization - X Velocity'='0m_per_sec' + 'Solution Initialization - Y Velocity'='0m_per_sec' + 'Solution Initialization - Z Velocity'='0m_per_sec' + 'Solution Initialization - Temperature'='AmbientTemp' + 'Solution Initialization - Turbulent Kinetic Energy'='0' + 'Solution Initialization - Turbulent Dissipation Rate'='0' + 'Solution Initialization - Specific Dissipation Rate'='0' + 'Solution Initialization - Use Model Based Flow Initialization'=false + 'Convergence Criteria - Flow'='0.001' + 'Convergence Criteria - Energy'='1e-07' + 'Convergence Criteria - Turbulent Kinetic Energy'='1e-07' + 'Convergence Criteria - Turbulent Dissipation Rate'='1e-07' + 'Convergence Criteria - Specific Dissipation Rate'='0.001' + 'Convergence Criteria - Discrete Ordinates'='1e-06' + 'Convergence Criteria - Joule Heating'='1e-07' + 'GPU Convergence Criteria - Flow'='0.001' + 'GPU Convergence Criteria - Energy'='1e-05' + 'GPU Convergence Criteria - Turbulent Kinetic Energy'='0.001' + 'GPU Convergence Criteria - Turbulent Dissipation Rate'='0.001' + 'GPU Convergence Criteria - Specific Dissipation Rate'='0.001' + 'GPU Convergence Criteria - Discrete Ordinates'='1e-05' + 'GPU Convergence Criteria - Joule Heating'='1e-07' + IsEnabled=false + 'Radiation Model'='Off' + 'Solar Radiation Model'='Solar Radiation Calculator' + 'Solar Enable Participating Solids'=false + 'Solar Radiation - Scattering Fraction'='0' + 'Solar Radiation - North X'='0' + 'Solar Radiation - North Y'='0' + 'Solar Radiation - North Z'='0' + 'Solar Radiation - Day'=1 + 'Solar Radiation - Month'=1 + 'Solar Radiation - Hours'=0 + 'Solar Radiation - Minutes'=0 + 'Solar Radiation - GMT'='0' + 'Solar Radiation - Latitude'='0' + 'Solar Radiation - Latitude Direction'='North' + 'Solar Radiation - Longitude'='0' + 'Solar Radiation - Longitude Direction'='East' + 'Solar Radiation - Ground Reflectance'='0' + 'Solar Radiation - Sunshine Fraction'='0' + 'Under-relaxation - Pressure'='0.3' + 'Under-relaxation - Momentum'='0.7' + 'Under-relaxation - Temperature'='1' + 'Under-relaxation - Turbulent Kinetic Energy'='0.8' + 'Under-relaxation - Turbulent Dissipation Rate'='0.8' + 'Under-relaxation - Specific Dissipation Rate'='0.8' + 'Under-relaxation - Joule Heating'='1' + 'Under-relaxation - Body Force'='1' + 'Under-relaxation - Turbulent Viscosity'='1' + 'Discretization Scheme - Pressure'='Standard' + 'Discretization Scheme - Momentum'='First' + 'Discretization Scheme - Temperature'='First' + 'Secondary Gradient'=false + 'Discretization Scheme - Turbulent Kinetic Energy'='First' + 'Discretization Scheme - Turbulent Dissipation Rate'='First' + 'Discretization Scheme - Specific Dissipation Rate'='First' + 'Discretization Scheme - Discrete Ordinates'='First' + 'Linear Solver Type - Pressure'='flex' + 'Linear Solver Type - Momentum'='flex' + 'Linear Solver Type - Temperature'='flex' + 'Linear Solver Type - Turbulent Kinetic Energy'='flex' + 'Linear Solver Type - Turbulent Dissipation Rate'='flex' + 'Linear Solver Type - Specific Dissipation Rate'='flex' + 'Linear Solver Type - Joule Heating'='F' + 'Linear Solver Termination Criterion - Pressure'='0.1' + 'Linear Solver Termination Criterion - Momentum'='0.1' + 'Linear Solver Termination Criterion - Temperature'='0.1' + 'Linear Solver Termination Criterion - Turbulent Kinetic Energy'='0.1' + 'Linear Solver Termination Criterion - Turbulent Dissipation Rate'='0.1' + 'Linear Solver Termination Criterion - Specific Dissipation Rate'='0.1' + 'Linear Solver Termination Criterion - Joule Heating'='1e-09' + 'Linear Solver Residual Reduction Tolerance - Pressure'='0.1' + 'Linear Solver Residual Reduction Tolerance - Momentum'='0.1' + 'Linear Solver Residual Reduction Tolerance - Temperature'='0.1' + 'Linear Solver Residual Reduction Tolerance - Turbulent Kinetic Energy'='0.1' + 'Linear Solver Residual Reduction Tolerance - Turbulent Dissipation Rate'='0.1' + 'Linear Solver Residual Reduction Tolerance - Specific Dissipation Rate'='0.1' + 'Linear Solver Residual Reduction Tolerance - Joule Heating'='1e-09' + 'Maximum Cycles'='30' + 'Linear Solver Stabilization - Pressure'='None' + 'Linear Solver Stabilization - Temperature'='None' + 'Linear Solver Stabilization - Joule Heating'='None' + 'Coupled pressure-velocity formulation'=false + 'Turn off auto-pairing for grid interface creation'=false + '2D Profile Interpolation Method'='Inverse Distance Weighted' + 'Frozen Flow Simulation'=false + 'TEC Coupling'=false + 'Sequential Solve of Flow and Energy Equations'=false + 'Convergence Criteria - Max Iterations'=100 + $end 'Setup1' + $end 'SolveSetups' + $end 'AnalysisSetup' + $begin 'Optimetrics' + $begin 'OptimetricsSetups' + NextUniqueID=0 + MoveBackwards=false + $end 'OptimetricsSetups' + $end 'Optimetrics' + $begin 'Solutions' + $begin 'FieldsSummarySetting' + $end 'FieldsSummarySetting' + $end 'Solutions' + $begin 'FieldsReporter' + $begin 'FieldsCalculator' + Line_Discretization=1000 + 'Show Stack'=true + $end 'FieldsCalculator' + $begin 'PlotDefaults' + Default_SolutionId=15 + Default_PlotFolder='Automatic' + $end 'PlotDefaults' + $begin 'FieldsPlotManagerID' + NextUniqueID=5 + MoveBackwards=false + NumQuantityType=1 + $begin 'QuantityFolder_1' + PlotFolder='Temperature' + PlotFolderInstance=1 + FolderSettingsType=11 + 'Real time mode'=true + $begin 'ColorMapSettings' + ColorMapType='Spectrum' + SpectrumType='Rainbow' + UniformColor(127, 255, 255) + RampColor(255, 127, 127) + $end 'ColorMapSettings' + $begin 'Scale3DSettings' + unit=80 + m_nLevels=15 + minvalue=20.3477725982666 + maxvalue=57.7943649291992 + log=false + IntrinsicMin=20.3477725982666 + IntrinsicMax=57.7943649291992 + LimitFieldValuePrecision=false + FieldValuePrecisionDigits=4 + dB=false + AnimationStaticScale=false + ScaleType=0 + UserSpecifyValues(16, 20.3477725982666, 22.8442115783691, 25.3406524658203, 27.8370914459229, 30.3335304260254, 32.8299713134766, 35.3264083862305, 37.8228530883789, 40.3192901611328, 42.8157272338867, 45.3121719360352, 47.8086090087891, 50.305046081543, 52.8014907836914, 55.2979278564453, 57.7943649291992) + ValueNumberFormatTypeAuto=1 + ValueNumberFormatTypeScientific=true + ValueNumberFormatWidth=12 + ValueNumberFormatPrecision=4 + $end 'Scale3DSettings' + $begin 'Marker3DSettings' + MarkerType=9 + MarkerMapSize=true + MarkerMapColor=false + MarkerSize=0.25 + $end 'Marker3DSettings' + $begin 'Arrow3DSettings' + ArrowType=1 + ArrowMapSize=true + ArrowMapColor=true + ShowArrowTail=true + ArrowSize=0.25 + ArrowMinMagnitude=19.8477725982666 + ArrowMaxMagnitude=58.2943649291992 + ArrowMagnitudeThreshold=19.8477725982666 + ArrowMagnitudeFilteringFlag=false + ArrowMinIntrinsicMagnitude=19.8477725982666 + ArrowMaxIntrinsicMagnitude=58.2943649291992 + $end 'Arrow3DSettings' + $end 'QuantityFolder_1' + NumPlots=1 + $begin 'PlotDefinition_1' + PlotDefinitionType='Mesh_field_type' + PlotName='Temperature1' + PlotDefinitionId=4 + VersionID=478 + SolutionId=15 + UserSpecifyName=0 + UserSpecifyFolder=0 + QuantityId=1 + PlotFolder='Temperature' + StreamlinePlot=false + AdjacentSidePlot=false + FullModelPlot=false + IntrinsicVar='' + FieldPlotGeometry(1, 128, 2, 1, 455) + FilterIds(0) + $begin 'PlotOnSurfaceSettings' + Filled=false + IsoValType='Fringe' + AddGrid=false + MapTransparency=true + Refinement=0 + Transparency=0 + SmoothingLevel=0 + ShadingType=0 + $begin 'Arrow3DSpacingSettings' + ArrowUniform=true + ArrowSpacing=2.91247320175171 + MinArrowSpacing=1.94164872169495 + MaxArrowSpacing=3.88329744338989 + $end 'Arrow3DSpacingSettings' + GridColor(255, 255, 255) + $end 'PlotOnSurfaceSettings' + EnableGaussianSmoothing=false + SurfaceOnly=false + $end 'PlotDefinition_1' + $end 'FieldsPlotManagerID' + $begin 'Report3dInGeomWnd' + Report3dNum=0 + $end 'Report3dInGeomWnd' + $begin 'Report2dInGeomWnd' + Report2dNum=0 + $end 'Report2dInGeomWnd' + $begin 'AntennaParametersInGeomWnd' + AntennaParametersNum=0 + $end 'AntennaParametersInGeomWnd' + AntennaParametersPlotTablesOrder() + $end 'FieldsReporter' + $begin 'SolutionManager' + $begin 'SimSetup' + TypeName='BaseSetup' + ID=14 + Name='Setup1' + $begin 'Solution' + ID=15 + Name='SteadyState' + $begin 'SimDataExtractor' + $begin 'QuantityIDs' + NextUniqueID=0 + MoveBackwards=false + IDMap() + $end 'QuantityIDs' + SimValue('Temperature', 1, 80, false, SimValueID=1096, 3, 0, 2, 0, false, false, 455, 1, 0, 1, 1, '', 0, 0) + $begin 'Sweeps' + $begin 'Sweep' + Variable='X' + Column='0' + Units='' + $end 'Sweep' + $end 'Sweeps' + $end 'SimDataExtractor' + $end 'Solution' + $end 'SimSetup' + $begin 'Version ID Map' + V=1085 + $begin 'Setup' + N='Setup1' + V=1084 + Soln(N='SteadyState', V=1106) + $end 'Setup' + $end 'Version ID Map' + $begin 'ID Map' + $begin 'Setup' + N='Setup1' + I=14 + Soln(N='SteadyState', I=15) + $end 'Setup' + $end 'ID Map' + ValidationCacheHeader='HDR18F0205928160286062711.tmp' + $end 'SolutionManager' + $begin 'UserDefinedSolutionMgr' + NextUniqueID=1000000 + MoveBackwards=false + $end 'UserDefinedSolutionMgr' + $begin 'DatasetSolutionMgr' + NextUniqueID=2000000 + MoveBackwards=false + $end 'DatasetSolutionMgr' + Notes=$begin_cdata$ $end_cdata$ + $begin 'AnimationSetups' + $end 'AnimationSetups' + CacheHeaderFile='HDR10587304817682362533.tmp' + $end 'IcepakModel' + $begin 'DataInstances' + DesignEditor='TopLevel' + Refdes('0', 'U1') + $begin 'CompInstances' + $begin 'Compinst' + ID='0' + Status='Status' + CompName='IcepakDesign1' + GatesInUse() + $begin 'Properties' + TextProp('ID', 'SRID', '', '0') + $end 'Properties' + $begin 'Parameters' + MenuProp('CoSimulator', 'OHD', '', 'DefaultNetlist', 0) + ButtonProp('CosimDefinition', 'OHD', '', 'Edit', 'Edit', 40501, ButtonPropClientData()) + $end 'Parameters' + $end 'Compinst' + $end 'CompInstances' + $begin 'Instance' + DesignEditor='IcepakDesign1' + ID='0' + $begin 'IcepakDesignInstance' + DesignInstanceID=1 + $begin 'WindowPosition' + $begin 'EditorWindow' + Circuit(Editor3d(View('View Orientation Gadget'=1, WindowPos(3, -1, -1, -9, -38, 200, 200, 992, 435), OrientationMatrix(0.00482711428776383, 0.000934596173465252, 0.00190808321349323, 0, -0.00209140800870955, 0.00292510259896517, 0.0038581220433116, 0, -0.000374592666048557, -0.00428784778341651, 0.00304785394109786, 0, 0.394846260547638, -0.202015370130539, -5.47158145904541, 1, 0, -1.45722711086273, 1.45722711086273, -1, 1, 0.520564079284668, 10.9551286697388), Drawings[12: 'Region', 'SERIAL_PORT', 'MEMORY1', 'MEMORY1_1', 'CAPACITOR', 'CAPACITOR_1', 'KB', 'HEAT_SINK', 'CPU', 'ALPHA_MAIN_PCB', 'Box1', 'MeshRegion2_SubRegion'], 'View Data'('Render Mode'=1, 'Show Ruler'=1, 'Coordinate Systems View Mode'=0, 'CS Triad View Mode'=0, 'Render Facets'=1, GridVisible=1, GridAutoAdjust=1, GridAutoExtents=1, GridType='Rect', GridStyle='Line', NumPixels=30, dXForGrid=20, dYForGrid=20, dZForGrid=20, dRForGrid=20, dThetaForGrid=10), ClipPlanes(ClipPlaneOptions(DisableWhenDrawingNewPlane=true, ForceOpqaueForUnclipped=false, ShowClipped=false, Transparency=0, HandleColor=16776960))))) + $end 'EditorWindow' + $end 'WindowPosition' + $begin 'ReportSetup' + $begin 'ReportManager' + $begin 'Reports' + $end 'Reports' + NextUniqueID=0 + MoveBackwards=false + $begin 'NextVersID' + NextUniqueID=0 + MoveBackwards=false + $end 'NextVersID' + $end 'ReportManager' + $begin 'Reports' + $end 'Reports' + $begin 'ReportsWindowInfoList' + $end 'ReportsWindowInfoList' + $end 'ReportSetup' + $begin 'Properties' + $end 'Properties' + $begin 'UserDefinedDocument' + $begin 'Data' + $end 'Data' + $end 'UserDefinedDocument' + $end 'IcepakDesignInstance' + $end 'Instance' + $begin 'SODInfo' + $begin 'IcepakDesign1' + $begin 'CosimDefinition' + CosimDefName='DefaultNetlist' + $begin 'SODInstanceMap' + $end 'SODInstanceMap' + SODComponentList() + $end 'CosimDefinition' + $end 'IcepakDesign1' + $end 'SODInfo' + $end 'DataInstances' + $begin 'WBSystemIDToDesignInstanceIDMap' + $end 'WBSystemIDToDesignInstanceIDMap' + $begin 'WBSysIDSysDetails' + $end 'WBSysIDSysDetails' + $begin 'WBConnIDConnDetails' + $end 'WBConnIDConnDetails' + $begin 'WBMaterialGuidDetails' + WBMaterialGuidMap() + $end 'WBMaterialGuidDetails' + $begin 'MinervaProjectSettingsBlk' + MinervaRemoteFilePath='' + FolderContainerString='' + $end 'MinervaProjectSettingsBlk' +$end 'AnsoftProject' +$begin 'AllReferencedFilesForProject' +$begin 'Design_0.setup/NativeGeometryFiles' +NumFiles= 9 +$begin 'x_b' +Design_0.setup/NativeGeometryFiles/0000034.x_b +BIN000000008455 +**ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz************************** +**PARASOLID !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~0123456789************************** +**PART1; +MC=unknown; +MC_MODEL=unknown; +MC_ID=unknown; +OS=unknown; +OS_RELEASE=unknown; +FRU=sdl_parasolid_customer_support; +APPL=Electronics Desktop; +SITE=unknown; +USER=unknown; +FORMAT=binary; +GUISE=transmit; +KEY=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000034.x_b; +FILE=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000034.x_b; +DATE=unknown; +**PART2; +SCH=SCH_3601185_36001; +USFLD_SIZE=0; +**PART3; +**END_OF_HEADER***************************************************************** +B3: TRANSMIT FILE created by modeller version 3601185SCH_3601185_36001_13006PART_XMT_BLOCK Part list n_entriesdindex_map_offsetd index_mapRschema_embedding_mapRmesh_offset_dataentries $CCCIlatticeCCCImeshIpolylineCCCCCCCDIownerCCCIboundary_latticeCCCI boundary_meshIboundary_polylineCCCAindex_map_offsetdA index_mapRAnode_id_index_mapRAschema_embedding_mapRAchild Alowest_node_iddAmesh_offset_dataZ@@:0yE> +   @@:0yE>QF CI list_typeuI +notransmitlCCCDCCDI finger_indexdI finger_blockCZ  CCCCCCIframeCAowner ZVnJCIindex_map_offsetdCCZQQPCCCCCDI legal_ownerslCZ DS@@O SDL/TYSA_DENSITYP!"(#TUNIT=mmO"AEDT_EntityName_V1P#$(#S{Gz?O$AEDT_ExtentScale_V1Q%&'F(( $)*2 *+,+{GzMb?Eؿ +>-.+{GzI +?{Gz 2/0I +?{Gz *1V 2n34563/7nQ689:;3<=>? @+/:AB n7.CDMb?{GzC-EF7{GzMb?{GzD/G7H{GzI +?{GzG IJKLDnH0BD0I +?EؿBMN/KHn01LH {GzI +?EؿL OPGE0nQO8LIQRPSTULVWX+EQYLZCnQQ8EO[\Y]^_E@`a+Z[bEcnQ[8ZQdbef?ZghT+c+ZF{GzMb?EؿF,KcCMb?EؿKi?BGFnQi8KMIj?eb@K3 >-e@k@e?fY`_-><3NKUlg+<"N)N<>=BA4V+USPgB>l-lmn>WhngSUTKbh-Sg+TSgPZopq+hrnblstQr~8humvws vn^h-xt:hyz+Mb?Eؿ?y9Wxt+I +?Eؿ?z;{t|+Mb?{Gz?{}n=`~z|<~z.+I +?{Gz?~nJ{W|.=4| ++I +?{Gz4nN `.Qx842`nY4{Qy8`}7`x+Mb?{Gz?6p5+{GzI +?Eؿx8sy+{GzMb?{Gz?pnT-55 n+Mb?Eؿ?n4l5+I +?Eؿ3n+{GzMb?Eؿ?9nfpQ986fe@bEq+qoaZf-qoqLTp-aqE^sf-aoGX--^]YGas+]]_^/J~-_]Y={-JXAG~^+VXVJL-o+AJV/N4=-VAXBPWU-=<N3/_{+WnP~lyQ|8WmP8(#QeWQ{8~}Qm}8lrR/QflmuR.PAQughrS???QhsvuS???Qv8srQi-S???- +nXsp +Q8-vQjpS???Q8p9Qk9S???S???R*R+R,OSDL/TYSA_COLOURQd~Q}z8{R0Qc{}R1Qb`S???Qa4S???Q` 2S???Q2w8 Q_S???n+++1Qv82Q^+S???+ nŽS +1Qu8+Q]S???n+]++1Qt8Q\S???n‘k+k1Qs8Q[kS???kn“)e+)1Qr8kQZ)S???)!nk<,-k1Qq8)S???Qp8R(QnQ&R"P(#Q&RT SERIAL_PORTOAEDT_BODYFlagGroupColor_V1PQQmT SERIAL_PORTP(#QYRPhS???OSDL/TYSA_COLOUR_2OAttGS_PS_LayerO SDL/TYSA_NAME2,)) + rh?ʡEͿ?? 1 )2(k,+{GzMb?{Gz2'+{GzI +?Eؿ??2&+{GzI +?{Gz??2%+{Gz rh?ʡEͿ??R'R&R%R$R#R4S???S???OAEDT_EntityID_V1R)R2R3Rw-QM8B:iQI8GiORj9R8Q:8/6MR:R;Rd6R\5RR7R;<*# SJ([&P%8(#T 'Al-ExtrudedOAEDT_MaterialName_V1$end 'x_b' +$begin 'x_b' +Design_0.setup/NativeGeometryFiles/0000062.x_b +BIN000000008452 +**ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz************************** +**PARASOLID !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~0123456789************************** +**PART1; +MC=unknown; +MC_MODEL=unknown; +MC_ID=unknown; +OS=unknown; +OS_RELEASE=unknown; +FRU=sdl_parasolid_customer_support; +APPL=Electronics Desktop; +SITE=unknown; +USER=unknown; +FORMAT=binary; +GUISE=transmit; +KEY=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000062.x_b; +FILE=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000062.x_b; +DATE=unknown; +**PART2; +SCH=SCH_3601185_36001; +USFLD_SIZE=0; +**PART3; +**END_OF_HEADER***************************************************************** +B3: TRANSMIT FILE created by modeller version 3601185SCH_3601185_36001_13006PART_XMT_BLOCK Part list n_entriesdindex_map_offsetd index_mapRschema_embedding_mapRmesh_offset_dataentries $CCCIlatticeCCCImeshIpolylineCCCCCCCDIownerCCCIboundary_latticeCCCI boundary_meshIboundary_polylineCCCAindex_map_offsetdA index_mapRAnode_id_index_mapRAschema_embedding_mapRAchild Alowest_node_iddAmesh_offset_dataZ@@:0yE>  +   @@:0yE>QF CI list_typeuI +notransmitlCCCDCCDI finger_indexdI finger_blockCZ  CCCCCCIframeCAowner ZVnJCIindex_map_offsetdCCZQQPCCCCCDI legal_ownerslCZ !DS@@O!SDL/TYSA_DENSITYP"#(#TUNIT=mmO#AEDT_EntityName_V1P$%(#S{Gz?O%AEDT_ExtentScale_V1Q&'(F)) $*+2 +**,+пMb?Q?? >-.+пMb?Q 2/0пMb?(\ +1V 2n3456378nQ69:;<3=>?@A+7;>B0n8,CDп+[YMNfh^+XVS]7Q|+Q=?>JX|]-="3*?=3Q/d-p+>=Q37Y-/@F npodk/qz-qm@Fpz+mmAqBInf+@qA/3?-A@mM4-M[BA4m+feI^B[h-hn[n_Q}9hg3hs+ܿP(#Q'RTMEMORY1OAEDT_BODYFlagGroupColor_V1PQQmTMEMORY1P(#QYRPhS???OSDL/TYSA_COLOUR_2OAttGS_PS_LayerO SDL/TYSA_NAME 1 *RC2'+пMb?(\2&l+ܿMb?(\?2(,+gfffffֿ?@[\]^_`{|}~0123456789************************** +**PART1; +MC=unknown; +MC_MODEL=unknown; +MC_ID=unknown; +OS=unknown; +OS_RELEASE=unknown; +FRU=sdl_parasolid_customer_support; +APPL=Electronics Desktop; +SITE=unknown; +USER=unknown; +FORMAT=binary; +GUISE=transmit; +KEY=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000090.x_b; +FILE=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000090.x_b; +DATE=unknown; +**PART2; +SCH=SCH_3601185_36001; +USFLD_SIZE=0; +**PART3; +**END_OF_HEADER***************************************************************** +B3: TRANSMIT FILE created by modeller version 3601185SCH_3601185_36001_13006PART_XMT_BLOCK Part list n_entriesdindex_map_offsetd index_mapRschema_embedding_mapRmesh_offset_dataentries $CCCIlatticeCCCImeshIpolylineCCCCCCCDIownerCCCIboundary_latticeCCCI boundary_meshIboundary_polylineCCCAindex_map_offsetdA index_mapRAnode_id_index_mapRAschema_embedding_mapRAchild Alowest_node_iddAmesh_offset_dataZ@@:0yE>  +   @@:0yE>QF CI list_typeuI +notransmitlCCCDCCDI finger_indexdI finger_blockCZ  CCCCCCIframeCAowner ZVnJCIindex_map_offsetdCCZQQPCCCCCDI legal_ownerslCZ !DS@@O!SDL/TYSA_DENSITYP"#(#TUNIT=mmO#AEDT_EntityName_V1P$%(#S{Gz?O%AEDT_ExtentScale_V1Q&'(F)) $*+2 +*,-+Mb?(\? >./+Mb?(\? 201?@A+0;@B n8+C0I1nQW9B;KX>=Y4BZ[\+="?*Y=?>I]^_+Z`G\>[-[an>5bc\`ZdBT.]+`\ed`\GHfg+Thi]H\.j-.kn\l^ ]hT_BY^-h_,_h]iIVm+^nnY.moQn}9^pkqrmqn_^sto9^uv+?@[\]^_`{|}~0123456789************************** +**PART1; +MC=unknown; +MC_MODEL=unknown; +MC_ID=unknown; +OS=unknown; +OS_RELEASE=unknown; +FRU=sdl_parasolid_customer_support; +APPL=Electronics Desktop; +SITE=unknown; +USER=unknown; +FORMAT=binary; +GUISE=transmit; +KEY=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000118.x_b; +FILE=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000118.x_b; +DATE=unknown; +**PART2; +SCH=SCH_3601185_36001; +USFLD_SIZE=0; +**PART3; +**END_OF_HEADER***************************************************************** +B3: TRANSMIT FILE created by modeller version 3601185SCH_3601185_36001_13006PART_XMT_BLOCK Part list n_entriesdindex_map_offsetd index_mapRschema_embedding_mapRmesh_offset_dataentries $CCCIlatticeCCCImeshIpolylineCCCCCCCDIownerCCCIboundary_latticeCCCI boundary_meshIboundary_polylineCCCAindex_map_offsetdA index_mapRAnode_id_index_mapRAschema_embedding_mapRAchild Alowest_node_iddAmesh_offset_dataZS@@:0yE>  +   @@:0yE>QF CI list_typeuI +notransmitlCCCDCCDI finger_indexdI finger_blockCZ  CCCCCCIframeCAowner ZVnJCIindex_map_offsetdCCZQQPCCCCCDI legal_ownerslCZ !DS@@O!SDL/TYSA_DENSITYP"#(#TUNIT=mmO#AEDT_EntityName_V1P$%(#S{Gz?O%AEDT_ExtentScale_V1QS&'(F)) *+3 +,-+QMb?? $./+QMb??? 01QMb? +2V3n4567489nQ7M:;<=4>??@A+8 <@BCn9C1QMb?C89QMb?1B9 QMb?BDE801nQDO:B<FGEHI@BJKL-0FMB nQFP:0DNMOPQ0A5I-O +J,POJMBRS+QOMJ?.-AH@IM5Q+5TnA.UIHAE0LVR+HAWLXRRBIVP-VYnIKSZRXLL0PS-XR[S;nPV\Q;L:S]Y7^\!S6Z+QMb???6 U\+QMb??Z"V\/+QMb??/#KZ +QMb?K _nJ.V/Q_J:K`aYbJOQP8EK+. an?5K QaI:.cT_d?>448Q.J+>?**enW> f+W2QeC:*ghijWin,*H -+,*22f*k-+QMb? 2 *2k[f+QMb?3-Wf ++QMb??[ln,X k-,2QlF:[mn3o, nn[WO ++[W2QnE:,pilqP:rs(#Qp6t,numvQiD:WuenwRqxQu5tWigpxRwyPtyAQg4t*euzSx???Sz???OySDL/TYSA_COLOURQm7t[lp{|Sv???Q{8t3m}~S|???Q3G:{lTQ}9t5T{cS~???QTH:5}3aQc:t.a}`S???Q`;tK_cS???Q<tVY`]S???QYK:V_;Q]=tS;S???S???R|RROsAEDT_EntityID_V1RowQhB:eRjzQ@hQQrh'RvPr(#Q'RRT CAPACITOROAEDT_BODYFlagGroupColor_V1PQQ?T CAPACITORP(#Q3RPthS???OSDL/TYSA_COLOUR_2OAttGS_PS_LayerO SDL/TYSA_NAMERd~Rb}U56+QMb?R^{@HEA84?-RNQ<N:87DRGRR=+ SJ)]F'P&:(#T(Ceramic_materialOAEDT_MaterialName_V1$end 'x_b' +$begin 'x_b' +Design_0.setup/NativeGeometryFiles/0000134.x_b +BIN000000006228 +**ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz************************** +**PARASOLID !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~0123456789************************** +**PART1; +MC=unknown; +MC_MODEL=unknown; +MC_ID=unknown; +OS=unknown; +OS_RELEASE=unknown; +FRU=sdl_parasolid_customer_support; +APPL=Electronics Desktop; +SITE=unknown; +USER=unknown; +FORMAT=binary; +GUISE=transmit; +KEY=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000134.x_b; +FILE=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000134.x_b; +DATE=unknown; +**PART2; +SCH=SCH_3601185_36001; +USFLD_SIZE=0; +**PART3; +**END_OF_HEADER***************************************************************** +B3: TRANSMIT FILE created by modeller version 3601185SCH_3601185_36001_13006PART_XMT_BLOCK Part list n_entriesdindex_map_offsetd index_mapRschema_embedding_mapRmesh_offset_dataentries $CCCIlatticeCCCImeshIpolylineCCCCCCCDIownerCCCIboundary_latticeCCCI boundary_meshIboundary_polylineCCCAindex_map_offsetdA index_mapRAnode_id_index_mapRAschema_embedding_mapRAchild Alowest_node_iddAmesh_offset_dataZS@@:0yE>  +   @@:0yE>QF CI list_typeuI +notransmitlCCCDCCDI finger_indexdI finger_blockCZ  CCCCCCIframeCAowner ZVnJCIindex_map_offsetdCCZQQPCCCCCDI legal_ownerslCZ !DS@@O!SDL/TYSA_DENSITYP"#(#TUNIT=mmO#AEDT_EntityName_V1P$%(#S{Gz?O%AEDT_ExtentScale_V1QS&'(F)) *+2 +,-+Mb? $./+Mb??? 01gfffffMb? +2V3n4567489nQ7M:;<=4>??@A+8 <@B1n9C1gfffffMb?CB9Mb?189 Mb?BDE80CnQDO:B<FGEHI@BJKL-0FMB nQFP:0DNMOPQ0A5I-O +JRPOJMBS.+QOMJ?T-AH@IM5Q+5UnATVIHAE0LWS+HA*LXSSBIWP-WYnIK.ZSXLL0P.-XS,.;nPW Q;L:.[Y7\P:]^(#Q[=_.;`aQYK:W`b;cR\Q`<_WYd[eQbJ:KdfYgRcK bnJTWhQd;_Kbi`jQfI:TiUbkRgT fn?5K/Qi:_TfldmQUH:5l3fnRkQl9_5UoipQ3G:oqUrRnQo8_3sltQqF:,su3vRr,qnRX +-R2Qs7_,qwoxQuE:RwyqzRvR un,{O |+,{2Qw6_Ru}s~QyD:{}uRz{ynR*> -+R*2Q}5_{ywQC:*yR*n{H +{2Q4_*}QB:RQ@QQ]'RP](#Q'RRT CAPACITOR_1OAEDT_BODYFlagGroupColor_V1PQQ?T CAPACITOR_1P(#Q3RP_hS???OSDL/TYSA_COLOUR_2OAttGS_PS_LayerO SDL/TYSA_NAMEP_AS???OSDL/TYSA_COLOUR3*|-+Mb?? 2 *3|R+Mb??2-{ ++Mb?S???>?{?>448QTJ+JOQP8EK+S~???Sx???St???Sp???Sm???/#T6 +Mb???6"V/+Mb??V!5Z6+gfffffMb?Z WhV+Mb??hKZ+Mb?Sj???Se???Sa???O^AEDT_EntityID_V1@HEA84?-RNQ<N:87DRGRR=+ SJ)[F'P&:(#T(Ceramic_materialOAEDT_MaterialName_V1$end 'x_b' +$begin 'x_b' +Design_0.setup/NativeGeometryFiles/0000150.x_b +BIN000000008437 +**ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz************************** +**PARASOLID !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~0123456789************************** +**PART1; +MC=unknown; +MC_MODEL=unknown; +MC_ID=unknown; +OS=unknown; +OS_RELEASE=unknown; +FRU=sdl_parasolid_customer_support; +APPL=Electronics Desktop; +SITE=unknown; +USER=unknown; +FORMAT=binary; +GUISE=transmit; +KEY=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000150.x_b; +FILE=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000150.x_b; +DATE=unknown; +**PART2; +SCH=SCH_3601185_36001; +USFLD_SIZE=0; +**PART3; +**END_OF_HEADER***************************************************************** +B3: TRANSMIT FILE created by modeller version 3601185SCH_3601185_36001_13006PART_XMT_BLOCK Part list n_entriesdindex_map_offsetd index_mapRschema_embedding_mapRmesh_offset_dataentries $CCCIlatticeCCCImeshIpolylineCCCCCCCDIownerCCCIboundary_latticeCCCI boundary_meshIboundary_polylineCCCAindex_map_offsetdA index_mapRAnode_id_index_mapRAschema_embedding_mapRAchild Alowest_node_iddAmesh_offset_dataZ@@:0yE>  +   @@:0yE>QF CI list_typeuI +notransmitlCCCDCCDI finger_indexdI finger_blockCZ  CCCCCCIframeCAowner ZVnJCIindex_map_offsetdCCZQQPCCCCCDI legal_ownerslCZ !DS@@O!SDL/TYSA_DENSITYP"#(#TUNIT=mmO#AEDT_EntityName_V1P$%(#S{Gz?O%AEDT_ExtentScale_V1Q&'(F)) $*+2 +*,-+Mb?gfffff?? >./+㥛 ?q= +ףp? 201Zd;O㥛 ?q= +ףp +2V 3n4./5406nQ5789:4;<=>?+09@A n6/BCZd;OMb?q= +ףpB.DE6㥛 ?q= +ףpC0F61Zd;OMb?gfffffFG<ADCn11AC Zd;O㥛 ?gfffffAHI0F1nQH7A9GJIKLMANOP-KIQLKRIFSTU-MKIR0?VN-NWXP0IO+OYnNZ[\PWN]A^[S+WP_]WPX`abc-^deS`P[]-[fnPOTgSd^UALT+dU,UdSeFhi+TjnS[ikQj}7TlfmnimnUTopk;Tqg+Zd;OMb?gfffff?q:rpk+Mb?gfffff?g<[k/+㥛 ?gfffff?/=g +Mb?q= +ףp?rsncbtqp9iuq+Mb?gfffff?u8bvp+㥛 ?gfffffb +wnaoruv7V\u+Zd;O㥛 ?q= +ףpVxn?.Zv\6Oyv+Zd;O㥛 ?gfffffy5oz\+㥛 ?q= +ףpo {n|ibyz4t}y+Mb?q= +ףp?t8n~rz}3Zz+Zd;OMb?q= +ףp?Zn<VO}Qz7ZxY<;h4FRZL+;4h;=<Uie-RKML<Z-=;4h~t-h`nedU^cr~-ca~`er+~c|=t+~|~ao=+a|cD]b+>En@>D|oa-"@*@?0X.M+>?4|-D XF`BnQ7DGXW]ND@.-` ^DnQ7`+`㥛 ?gfffff,EMb?gfffffE-BMb?q= +ףpP7(#Q7RQ7RROAEDT_EntityID_V1.n@V Qx7.3xQa.Q3w7Qxy7VRQbVxRPAQcZS???QdOYS???QY{7OfQe[flS???Qf|7[YjQlfTjS???QgimlS???Qm~7ij{Qho{S???Q{7omwQibwS???Qw7b{sQjrsS???Qs7rw8Qkt8S???Q87ts5S???RRRRRRROSDL/TYSA_COLOURQ`3Qv73Rn, +,2Q_Qu7,R, nˆQd ++Q2Q^,Qt7QRQn,_K --,_2Q]QQs7_R_nQW +Q2Q\_Qr7Rn_*; +_*2Q[Qq7*R*!n‚ +2QZ*Qp7RQnQ'RP(#Q'RTKBOAEDT_BODYFlagGroupColor_V1PQQmTKBP(#QYRPhS???OSDL/TYSA_COLOUR_2OAttGS_PS_LayerO SDL/TYSA_NAMES???2'*+㥛 ?q= +ףp 2 *2&_+㥛 ?gfffff??2(-+#~j?RQ?2-)Q ++Zd;O#~j?RQ?2%+Mb?q= +ףpS???S???S???S???S???S???S???QG7FHRR?>@MVR+RRnQ9705HRJRR:+# SJ)'P&7(#T (Al-ExtrudedOAEDT_MaterialName_V1$end 'x_b' +$begin 'x_b' +Design_0.setup/NativeGeometryFiles/0000178.x_b +BIN000000051255 +**ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz************************** +**PARASOLID !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~0123456789************************** +**PART1; +MC=unknown; +MC_MODEL=unknown; +MC_ID=unknown; +OS=unknown; +OS_RELEASE=unknown; +FRU=sdl_parasolid_customer_support; +APPL=Electronics Desktop; +SITE=unknown; +USER=unknown; +FORMAT=binary; +GUISE=transmit; +KEY=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000178.x_b; +FILE=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000178.x_b; +DATE=unknown; +**PART2; +SCH=SCH_3601185_36001; +USFLD_SIZE=0; +**PART3; +**END_OF_HEADER***************************************************************** +B3: TRANSMIT FILE created by modeller version 3601185SCH_3601185_36001_13006PART_XMT_BLOCK Part list n_entriesdindex_map_offsetd index_mapRschema_embedding_mapRmesh_offset_dataentries $CCCIlatticeCCCImeshIpolylineCCCCCCCDIownerCCCIboundary_latticeCCCI boundary_meshIboundary_polylineCCCAindex_map_offsetdA index_mapRAnode_id_index_mapRAschema_embedding_mapRAchild Alowest_node_iddAmesh_offset_dataZ@@:0yE>  +   @@:0yE>QF CI list_typeuI +notransmitlCCCDCCDI finger_indexdI finger_blockCZ  CCCCCCIframeCAowner ZVnJCIindex_map_offsetdCCZQQPCCCCCDI legal_ownerslCZ !DS@@O!SDL/TYSA_DENSITYP"#(#TUNIT=mmO#AEDT_EntityName_V1P$%(#S{Gz?O%AEDT_ExtentScale_V1Q&'(F)) *+2 +J,-+ m9^o%;?x&1Կ ./+ m9^o%;?mݿ 01 m9^o%;?6^I ˿ +2V3n456789:nQ7O;<=>8?@ABCD-9=EFGn:HI m9&:?+HJK: m9^o%;?#~jԿIL:M(\^o%;?V-LdNOPQInMRIS(\&:?+R%TBUVMnSQMW(\&:?V-QbXYLZSnW[S\ m9^o%;?Fxѿ[]^_`Wn\aWb(\&:?%Cacdef\nbg\h m9&:?S㥛пgijklbnhmbn(\^o%;?mݿmWopqrhnnsht(\^o%;?Fxѿs9uvwxnntynz m9^o%;?L7A`y{|}~tnzt(\&:?(\ڿMznz(\^o%;?333333ÿ*UnV(\^o%;?+V$Rknk m9^o%;?S㥛пkVgn(\^o%;?6^I ˿2n m9&:?ؿnUG(\^o%;?)\(U'RnG9 m9^o%;?+G(\^o%;?(\ڿOn m9aÙ?333333ÿ nZ(\&:?L7A`Z`Qn m9aÙ?)\(n1 m9^o%;?ؿ~n1  m9^o%;?x&1ԿJ1nQ[;-`nJHnQ\;JJ-JnQ];+y m9&:?#~jԿxf(\^o%;?%Czx(\&:?"~j̿x6sn{(\^o%;?$CۿQn| m9&:?x&1Կ}(\&:?ؿKn~ m9^o%;?I +nK(\aÙ?)\(nKlH(\&:?S㥛пlgKnQ;lil+lnQ;v+enR(\^o%;?S㥛пQ m9&:?mݿS` m9&:?Fxѿ`[nT(\^o%;?x&1Կ?  + nU  m9&:?I + n V(\&:?I +hP nWe  m9&:?%CeanX(\&:?Sſ.nY m9&:?Sſ4 nZ}! m9^o%;?I +޿}"#$yn![ %(\&:?x&1Կ =&'w!n%\(!) m9^o%;?(\ڿ(*+,%n)]%- m9&:?(\ڿ./()n-^)0(\&:?6^I ˿012-n0_3-4 m9&:?K׿3w560n4`F0 m9^o%;?)\(F78994na4: m9^o%;?%C:b;(\aÙ?333333ÿ <=f:n;c +:>(\^o%;?#~jԿ +A?@;n>dr;A(\&:?mݿrUBCm>nAe>D(\^o%;?L7A`^EFZGAnDfHAI m9&:?$CۿHJK,DnIgGDL(\&:?I +޿G[MNqInLh_IO m9^o%;?"~j̿_PQ0[LnOiLR(\^o%;?Sſ,STOnRjOU m9^o%;?K׿yVW3RnUkRX m9&:?"~j̿mYZ6UnXlqU[(\^o%;?I +޿qY\]GmXn[mwX^(\&:?Fxѿw;_` s[n^n[a(\^o%;?"~j̿4bcx^nao ^d m9&:?6^I ˿ ef0andpag(\^o%;?ؿIhijdngq$dk m9^o%;?mݿ$lm}gnkr,gn m9^o%;?$Cۿ,op(Hknnsqkr(\&:?K׿qEstj@nnrt6nu m9&:?I +޿6rvw3rnuu9rx m9^o%;?333333ÿ9yzFunxvu(\&:?$CۿS{|rxnwjx(\^o%;?K׿jG}~qnQ};jhs~j+u~q+~-~-zn~ij+|i+-Hn…j-"q+FnQ0;DnŠ6+(\^o%;?K׿+(\&:?Fxѿ?6+(\&:?Sſ?6+ m9^o%;?Fxѿn®+ m9aÙ?)\(?n´+ m9^o%;?#~jԿn+ m9^o%;?I +޿n]+(\^o%;?Fxѿ?8n+(\^o%;?L7A`_n+(\&:?L7A`an+(\&:?Sſ/n+(\^o%;?L7A`?]n+(\&:?"~j̿7n+ m9^o%;?+nŒC+ m9^o%;?K׿xn‹+ m9&:?K׿vnt+(\^o%;?Fxѿ:n+ m9^o%;?+n+ m9&:?I +nD+ m9^o%;?I +޿nw.+ m9^o%;?(\ڿn+ m9^o%;?K׿}nŽ+ m9^o%;?ؿni+(\^o%;?"~j̿5n+ m9^o%;?%Cn +(\&:?L7A`? +n   + m9^o%;?(\ڿ n   + m9&:?#~jԿn  +(\^o%;?)\(?&n+ m9^o%;?+n+ m9^o%;?#~jԿn+(\^o%;?ؿ?+ m9^o%;?mݿ np!"#$+(\&:?I +?#%nC&$'+(\^o%;?"~j̿?3(n)$'$*+(\&:?#~jԿ?+n"'*,'-+ m9^o%;?6^I ˿,.n“/!*-0*1+ m9^o%;?Sſ02n345-1-6+ m9^o%;?%C7n89161:+(\&:?ؿ?;n™<6:=6>+ m9&:?S㥛п=?n@:>A:B+ m9^o%;?I +ACnDEF>BG>H+(\^o%;?Sſ?G+InJKBHBL+(\^o%;?#~jԿBMnžNHLH+(\aÙ?)\(?(OnPKLLQ+ m9^o%;?K׿QR+ m9aÙ?333333ÿ?SnT4QRQU+ m9^o%;?x&1ԿVnRU<RW+ m9&:?(\ڿ<Xn‚YUWUZ+(\^o%;?+#[nA\WZ]W^+(\&:?$Cۿ]T_n`abZ^cZd+ m9&:?$Cۿcenfg^d^h+(\&:?Fxѿ<injkdhldm+ m9^o%;?V-lnnopqhmhr+(\^o%;?S㥛пsnt=mrumv+ m9^o%;?$Cۿuwn&Yrvxry+ m9^o%;?SſxznT{|vyCv}+ m9&:?+C~nB#y}y+ m9^o%;?6^I ˿n‚}F}+ m9^o%;?)\(FnA{|+(\^o%;?333333ÿ?|nzx/+ m9&:?I +޿sn+(\^o%;?$Cۿ?Pnb+(\&:?I +޿?qn“+ m9^o%;?I +n—q+(\^o%;?ؿJn˜/+ m9^o%;?"~j̿/nc|,4+ m9^o%;?333333ÿ4nŸ0+(\&:?I +޿\nd+ m9^o%;?6^I ˿n¥5+(\^o%;?(\ڿNn¨Y+ m9^o%;?(\ڿYn¡u<+ m9^o%;?%Cn­+ m9&:?ؿn±+ m9^o%;?x&1Կn¾+ m9&:?"~j̿nnj!+ m9^o%;?Fxѿ!nv,+(\aÙ?333333ÿ? +n½+ m9^o%;?$Cۿnc5+ m9&:?Sſ5n0q+ m9^o%;?V-qnl +(\^o%;?I +޿Zn ++ m9^o%;?L7A`np K+(\aÙ?333333ÿ?K)nG +(\&:?I +in +(\&:?"~j̿?ln+ m9&:?Fxѿn+(\^o%;?I +޿?Xna/+(\^o%;?%Cn9/" + m9^o%;?V-"nO/Q;" +OL"+OQ+Ool-O"-DL+DPA+P-enL-Q+cnQ!;+(\^o%;?V-\+ m9^o%;?S㥛п+(\^o%;?I +gnQ;+RA+P-DA-#-PfDLnQr;PNLP (\^o%;?I +K@(\&:?#~jԿ M + m9^o%;?V-   n +N    m9&:?V- ~ +n O + m9^o%;?Sſ9 nP~  m9&:?L7A`~ y nQg;~{ ~+ Y  po+ YZ-Z -|~+|yF-y-o~p-o l+pnlQ;p n!p"#+ m9&:?L7A`"&$+(\&:?$Cۿ?#a%+(\^o%;?mݿaV&n']#%(#)+ m9aÙ?)\((<n*%)b%++(\^o%;?$CۿbR,n-])+5).+ m9&:?x&1Կ5 /n'+.++ m9&:?V-0nY..1+(\^o%;?I +?1{2+ m9&:?6^I ˿{3n2Fx12k14+(\^o%;?x&1Կk>5n6N2427+(\aÙ?)\(? 8n9474:+(\&:?ؿL;n<7:7=+ m9^o%;?ؿ>n?:=:@+ m9^o%;?L7A`AnF=@E=B+ m9&:?mݿECnCA@B@D+ m9^o%;?"~j̿EnZBDBF+ m9^o%;?S㥛пGnHDFNDI+(\^o%;?#~jԿ?N@Jn¿kFIF+(\^o%;?6^I ˿1KnLIIM+(\&:?#~jԿM@N+ m9^o%;?S㥛п@OnP\=MNM+(\^o%;?Sſ-QnRGNN+ m9aÙ?333333ÿSnT(QSM;U<VTWX+YTF+TZT-W[\XT-X[W]*(-[X^][X\9*-*_PX(+_P`P_8*Ua+_*8T-8_PFF-bU8FP+bEFY+bcEb9@-Y9-dY@+dD-@?89Y-?Ae?A@VE+A?8R+bEVa+aU-aVA-9aP]-9]\+f9=K+\[]W-gT=\W+gThTg9Z+=gK9-g=Tz|J-ziJ9|T+JizTfG+iJjTiJxk+fRJG-Rfk+lRm+knRf-n3on3kTx-nk34m-3np0q+4rm3+mr42R-r4s2rmf{L+r24 q5+ftuL 2{-Ltfl+tLvtLuw,)+lxL-xl)-xxy+)zwcxl+z){wz)0,u-cz)Q/y+zcw_|}+Q~Zy_c/-y~Qx-~Z*~yZx-Z~Q}+j+x-kjl=t+jgP+tg=-tl+tt\+t-s-jw+j +^`s- ^[v!H-`w-`^`+``+n5E'wj-' 56+'+6'5-6 kj+ 6,6+j6k- +N-@+N+ ++J+ +-@-+@Cq +nt@-tq+t3+3t--W3+W-W?-iW+-?+?i-?-?-<+<+<-<-?+/<++/<-/<++Y+/(-+(Y-++pu+---`b+`-r]+p|-b-p,u-|K&-|pH+KfH|&+&nK#u"KC`]--KCfrE'+fCKc+'CEf-'pra`+'p'mm+`m'a-q-dG+m]m+m$p-]q#+]m}.+#w}]-#Nq-wNwG-wN#6+6N+Gd-pa9+da+df--fana+e9-f+8--Fy+Ff+F|+|-Z+8-8e+86-}w-e8+$.-g+.n»g Q ;.gn³c.Q ;geg+ m9^o%;?mݿ9$+ m9&:?%C9n$"+ m9^o%;?x&1Կn$Q;+`---J-[-PkH-Pg@+Hv[+Hk\-\ n@kP@-QC;\[OP;(#Q\Q[B;QOD;@?RQ@OQ?E;=OsRQ=?QsF;?RQsQG;s7RQQ7H;RQ7QI;97RQ9QJ;8RQQ8K;RQ8QL;8SRQURPAQUSS???Q(<US???Q<N;(S7S???ROSDL/TYSA_COLOURS???S???S???S???S???S???S???S???Q[QA;O[RQ QO@; +RQO  Q?;K IO R +Q KQI>;GQR QGI QQ=;IRQQQ<;KQRQQK;;(RQKQ(:;KRQ(Q9;(RQ !Q8; "RQ #$Q7;#%R"Q#& 'Q6;&i(R%Q&)#*Qi5;)5+R(Q)i,&-Q54;k,Ji.R+Q,k5/)0QJ3;N/M51R.Q/NJ2,3QM2;2J4R1Q2M5/6Q1;5M7R4Q528R7Q95:S8???Q9;<S:???Q/;9=Q;>9?S<???Q.;;;@Q>;A;BS????Q;-;>CQAD>ESB???Q,;A;FQDGAHSE???Q+;D,IQGb,JDKSH???Q,*;bG_LQJ]_MGNSK???Q_);]J&,OQMa&PJQSN???Q&(;aM_RQPSMTSQ???Q';P&UQSVPWST???Q&;SXQV~YSZSW???Q%;V[QY}\V]SZ???Q$;Y^Q\|_Y`S]???Q#;\aQ_{\bS`???Q";_cQzd_eSb???QdyfSe???Q ;dgQxhdiSf???QhwjkSi???Q;hlQjvmhnSk???Q;joQmupjqSn???Q;mrQptsmtSq???Q;puQssvpwSt???Q;sxQvryszSw???Q;v{Qyq|v}Sz???Q;y~Q|pyS}???Q;|Qo|S???Q;QnS???Q;QmS???Q;QlqS???Q;qnQkln S???Qn;lQ jpS???Qi S???Q;QhS???Q;QgS???Q;Qf.S???QegS???QdceS???Qe ;cQcS???Q +;eQbS???Q ; Qa S???Q ;Q`S???Q;> Q_>S???Q>;Q^S???Q;>Q]S???Q;Q\S???Q;Q[S???QZS???Q;QYS???Q;GQXGS???QG;EQWES???QE;GQVS???Q;EQUS???Q;QT5S???Q;52QS02S???Q2;0QR4S???Q;4S2QQSS???QS;QPS???Q;SQOS???Q;QNS???Q;QMS???Q;;QL;S???Q;;XQK<XS???QX;<;QJYS???Q;YwXQIuwS???Qw;uQH&S???Q;&%wQG#%S???Q%;#~QFC~S???Q~;C%QES???Q; +~QD +S???Q +;AQCAS???QA; +QBS???Q;0AQA0S???Q0;VQ@VS???QV;0 Q? + S???Q;+V Q +>+ S ???Q+; +Q=" +S ???Q< S???Q ;Q;!S???Q;!. Q:,.S???Q.;,Q9/S???Q;/.Q8|S???Q;|zQ7xz !S???Qz;x3"Q 6{3#$S!???Q3;{ z%Q#5F& 'S$???Q;F#C3(Q&4AC)#*S'???QC;A&C+Q)3EC,&-S*???QC;E)C.Q,2/)0S-???Q;,/C1Q/15/2,3S0???Q/;5/34Q2035/6S3???Q3;27/8Q5/^792:S6???^7n[ ;-2Q7;^5<3=Q9.<>5?S:??? <n^ @-^2Q<;9A7BQ>-AC9DS????An E-2QA;>F<GQC,FH>ISD???!Fn… J+2QF;CKALQH+KMCNSI???jKn O+2QK;HPFQQM*PRHSSN???oPn T+2QP;MUKVQR)UWMXSS???tUn Y-2QU;RZP[QW(Z\R]SX???{Zn† ^+2QZ;W_U`Q\'_aWbS]???_n” c+2Q_;\dZeQa&df\gSb???dn h-2Qd;ai_jQf%ikalSg???inœ m+2Qi;fndoQk$npfqSl???nn¡ r-2Qn;ksitQp#sukvSq???sn¤ w+2Qs;pxnyQu"xzp{Sv???xn§| }-|2Qx;u~sQz!|~uS{???|~n¬e +e2Q~;|zxQ ezS???en|? -|2Q;e~QS???ne -e2Q;QS???n +2Q;QS???n -2Q;QS???n¿ -+2Q;QS???n +2Q;QS???n“ +2Q;QS???n™ -2Q;QS???n +2Q;QS???nº{ +{2Q;Q{S???{njz +j2Q;{QjS???jn{vi +{v2Q;jQvS???vnj`t -j`2Q;vQ`S???`nv_ +v2Q;`QS???n` +`2Q;QS???n +2Q;QS???n±, +,2Q;Q,S???, +n +-2Q;,QS??? n, -,2Q;Q S???nŠ -2Q;Q S???n¶s -s2Q;Q sS???sn–or +o2Q;sQ +oS???onscn -sc2Q;oQ cS???cnob +o2Q;cQS???nch -ch2Q;QhS???hn*g +*2Q;hQ*S???*nh~ -h2Q;* S???Q; +  R Q + Q 'R P(#Q' RT HEAT_SINKOAEDT_BODYFlagGroupColor_V1P QQ +T HEAT_SINKP(#QRPhS???OSDL/TYSA_COLOUR_2OAttGS_PS_LayerO SDL/TYSA_NAME2%*r+(\^o%;?"~j̿?? 2 *2r$+ m9^o%;?(\ڿ2&{+Kؿ^o%;?(\ؿ??2'Y+Kؿ&:?(\ؿ??2Y(+ m9^o%;?K׿2)Y+(\^o%;?Fxѿ??2*m+ m9^o%;?mݿ2m+}+Kؿ&:?(\ؿ??2},m+(\^o%;?$Cۿ??2-}+Kؿ^o%;?(\ؿ??2.`J+ m9aÙ?)\(2J/T+(\aÙ?)\(?2T0J+Kؿ&:?(\ؿ??21T+Kؿ^o%;?(\ؿ??22e@+ m9^o%;?+2@3+ m9^o%;?%C24@+Kؿ&:?(\ؿ??25+(\^o%;?#~jԿ??26o+(\^o%;?Sſ??27+(\^o%;?I +޿??28c+Kؿ^o%;?(\ؿ??29+(\^o%;?I +??2:w+Kؿ^o%;?(\ؿ??2w;+Kؿ^o%;?(\ؿ??2<w+Kؿ^o%;?(\ؿ??2=+Kؿ&:?(\ؿ??2>j+Kؿ^o%;?(\ؿ??2?v+ m9^o%;?6^I ˿2@c+(\^o%;?L7A`??2cA+ m9aÙ?333333ÿ??2BcE+Kؿ^o%;?(\ؿ??2ECh+ m9^o%;?S㥛п2hDE;+(\^o%;?ؿ??2;E^hO+KؿaÙ?(\ؿ??2OF;+Kؿ&:?(\ؿ??2GO+ m9^o%;?V-2H|-+Kؿ&:?(\ؿ??2-I ++Kؿ&:?(\ؿ??2#h^r+(\aÙ?333333ÿ??2^"+Kؿ^o%;?(\ؿ??2!s^+Kؿ&:?(\ؿ??RRRRRRRRRRRRRRRRRRRRRRRRRRR|D#d+DBd+B-BDR8C+RRyRtRoRjReR`R[RVRQRLRGRBR=R8TR4SR1RR.QR+PR(OR%NR"MRLRKRJRIRHRFR ER DRCRBRAR@R?R>R=R<R;R:R9R8R7R6R5R4R3R2R1R0R/R.R-R,R+R*R(R'R&R%R$R#R"R!R RRRRRRRRRR~R{RxRuRrRoRl Rg Rc RaR^R[RXRURRRORLRIRFRCR@R=S6???S3???S0???S-???S*???S'???S$???S!???S???S???S???S???S???S???S ???S ???S???S???OAEDT_EntityID_V1vHs^!+}Pj-}|_Z-|}0-q| u+0w _ nQV;0ePQeU; QPW;_]RQ]X;[P RQY;`]!R QZ;"R!R"QT;e#RQS;y$R#QyR;97%R$Q7Q;F=y&R%Q=P;977'R&R'qp5-utf0|-pZq30-Zp94-iTzZ4p+R)RRHfc-(H$np$g-Q(c;Jl)QJb;Ho(*Qld;$("+R)Q"e;}l{,R+Q{f;y"-R,R-Qoa;,*J.R*Q*`;(.o/R.Q._;*0R/Q^;.1R0R1,-(-++,+Q;fc<2Qc;a3Q<;4R2YQ;<5R4XQ;6R5WQ;7R6UR7VQ;ec8R3ZQ;9R8[R9\Q;@s?:Qs;q};Q?; + <R:pQ ;?&=R<oQ&;  _>R=nQ_;w&u?R>mQu;s_@R?lQ;xubAR@kQb;BRAjQ;b1CRBiQ1;DRChQ;1SERDgQS;FREfQ;SGRFeQ;UTHRGdQT;RIRHcQ;VTJRIaQ;kiKRJbQi;gLRK`RL_R;qd-+oq-Dq+RVYQ+ Y-R!Qh;  MRQ i; NRMQ j; ORNQk; PROQl;VQRPQVm;5RRQQ5n;3VvSRRQvo;65YTRSQYp;vURTQq;YVRURVQNs;LXWRQXt;QNXRWQu;ZXEYRXQEv;MZRY~QMw;GE\[RZ}Q\x;qMo\R[|Qoy;m\B]R\{QBz;ro{^R]zQ{{;B_R^yQ|;{`R_xQ};aR`wQ~;bRavQ;hcRbuQh;}dRctRdsR R +RGRRrR]R^RRRR>+ SJ) + 'P&;e(#T (Al-ExtrudedOeAEDT_MaterialName_V1$end 'x_b' +$begin 'x_b' +Design_0.setup/NativeGeometryFiles/0000422.x_b +BIN000000008439 +**ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz************************** +**PARASOLID !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~0123456789************************** +**PART1; +MC=unknown; +MC_MODEL=unknown; +MC_ID=unknown; +OS=unknown; +OS_RELEASE=unknown; +FRU=sdl_parasolid_customer_support; +APPL=Electronics Desktop; +SITE=unknown; +USER=unknown; +FORMAT=binary; +GUISE=transmit; +KEY=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000422.x_b; +FILE=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000422.x_b; +DATE=unknown; +**PART2; +SCH=SCH_3601185_36001; +USFLD_SIZE=0; +**PART3; +**END_OF_HEADER***************************************************************** +B3: TRANSMIT FILE created by modeller version 3601185SCH_3601185_36001_13006PART_XMT_BLOCK Part list n_entriesdindex_map_offsetd index_mapRschema_embedding_mapRmesh_offset_dataentries $CCCIlatticeCCCImeshIpolylineCCCCCCCDIownerCCCIboundary_latticeCCCI boundary_meshIboundary_polylineCCCAindex_map_offsetdA index_mapRAnode_id_index_mapRAschema_embedding_mapRAchild Alowest_node_iddAmesh_offset_dataZ@@:0yE>  +   @@:0yE>QF CI list_typeuI +notransmitlCCCDCCDI finger_indexdI finger_blockCZ  CCCCCCIframeCAowner ZVnJCIindex_map_offsetdCCZQQPCCCCCDI legal_ownerslCZ !DS@@O!SDL/TYSA_DENSITYP"#(#TUNIT=mmO#AEDT_EntityName_V1P$%(#S{Gz?O%AEDT_ExtentScale_V1Q&'(F)) $*+2 +**,+zGʿMb?zG >-.+(\aÙ?zG? 2/0(\Mb?zG +1V 2n3456780nQ69:;<7=>?@4A+8;3BCn01D (\aÙ?zGD0EC0zGʿMb?HzGѿE FGHIDnC/8JDzGʿaÙ?zGJ.KLC(\Mb?HzGѿKMNI/JnL-BOJ(\aÙ?HzGѿBPQ8HLnO,IRLzGʿMb?zGI STEKOnR+HOzGʿaÙ?HzGѿHUVBERnQU9HPFWVXG3HYZ[-X3\GX]VE^_`-3XV]8T>+Yab[8VZ+ZcnYdef[aYQHgh^+aYiQa[bBA-j+gkN^B[h-hln[e_m^kg`HG_+k^n`k^NEopq+_rn^hpsQr~9_tluvp un`_wxs<_y.+zGʿMb?HzGѿ?y;z{s+zGʿMb?zG.=es +(\Mb?HzGѿ?e|njZh.Q||9e}cl~jABNeg+jA@jQ-b-j@K+Nk`gKjeo-oqK`p-o/-qoE]w-qI?z-]X3GIqw+w +n]pzQ9wuzn?wy9w{+zGʿMb?HzGѿ8d+zGʿaÙ?zG{:4y+(\Mb?zG?4n7-{Qx942-nQ4d Qy9-dnb-ZQz9dcbaQY>d+>=T78bdY-="7*T=?>I3]-?=7T/z+/@K nQ9/M@A/74?-P9(#QM9KSRQS9IFMRQF9EUSRROAEDT_EntityID_V1*!n\= ++\1Qq9*\n*X +*1 1 *Qr9\ni\ +i\12(\,+zGʿMb?HzGѿ??2'i+Gz׿aÙ?Qۿ??2,) ++Gz׿Mb?Qۿ??nn ,-n1Qv92n n…ik +i1Qu9ninna +n12%n+(\Mb?HzGѿ??2&+(\Mb?zG?Qt9iQ]iQs9RQ\RPAQ[\S???QZ*S???S???OSDL/TYSA_COLOURQ^nS???Q_S???Q`2S???Q2w9Qa4S???Qb-S???QcdS???QdZc}S???Qc{9Z|Q}ee|S???Qfhl}tS???Ql}9h|rQtg_rS???QhputS???Qu9prQiwS???QjzS???Q9z:Qk:S???:n€zQ:96S???R7m+(\Mb?zG?m6hx+(\aÙ?HzGѿ?x5p5m+(\Mb?HzGѿ?54fx+zGʿMb?zG?f3Z5+zGʿaÙ?HzGѿRRRRRRRRQp9RQnQ'RP(#Q'RTCPUOAEDT_BODYFlagGroupColor_V1PQQmTCPUP(#QYRPhS???OSDL/TYSA_COLOUR_2OAttGS_PS_LayerO SDL/TYSA_NAMERRRRR~RvQP9B;URWQ;986PRRR<+# SJ)'P&9(#T (Al-ExtrudedOAEDT_MaterialName_V1$end 'x_b' +$begin 'x_b' +Design_0.setup/NativeGeometryFiles/0000450.x_b +BIN000000008461 +**ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz************************** +**PARASOLID !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~0123456789************************** +**PART1; +MC=unknown; +MC_MODEL=unknown; +MC_ID=unknown; +OS=unknown; +OS_RELEASE=unknown; +FRU=sdl_parasolid_customer_support; +APPL=Electronics Desktop; +SITE=unknown; +USER=unknown; +FORMAT=binary; +GUISE=transmit; +KEY=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000450.x_b; +FILE=C:/Users/skrishna/AppData/Local/Temp/Gra11057304817682363064.setup/Design_0.setup/NativeGeometryFiles/0000450.x_b; +DATE=unknown; +**PART2; +SCH=SCH_3601185_36001; +USFLD_SIZE=0; +**PART3; +**END_OF_HEADER***************************************************************** +B3: TRANSMIT FILE created by modeller version 3601185SCH_3601185_36001_13006PART_XMT_BLOCK Part list n_entriesdindex_map_offsetd index_mapRschema_embedding_mapRmesh_offset_dataentries $CCCIlatticeCCCImeshIpolylineCCCCCCCDIownerCCCIboundary_latticeCCCI boundary_meshIboundary_polylineCCCAindex_map_offsetdA index_mapRAnode_id_index_mapRAschema_embedding_mapRAchild Alowest_node_iddAmesh_offset_dataZ@@:0yE>  +   @@:0yE>QF CI list_typeuI +notransmitlCCCDCCDI finger_indexdI finger_blockCZ  CCCCCCIframeCAowner ZVnJCIindex_map_offsetdCCZQQPCCCCCDI legal_ownerslCZ !DS@@O!SDL/TYSA_DENSITYP"#(#TUNIT=mmO#AEDT_EntityName_V1P$%(#S{Gz?O%AEDT_ExtentScale_V1Q&'(F)) $*+2 +*,-+?? >./+? 201 +2V 3n456789:nQ7;<=>8?@A4B-9=CDEn:0F1Mb?F/GH:Mb?11D: Mb?DIJ9G1nQI;D=KLJMNODPQR-GK4DSFnQK;GITU4VWBG8A+S T@G0XnQT;SKYZ@?[8S\]^-0 Y_S` nX,SEaE+9XMb?a-bXHbcN`anH.`aF`de0bHnQd;`Ycfeg^C`Ohi-g\j^g\eSikl+Cge\9B5O-OMJm9ehP+hnnO]Qoipql`^km-pq,qpribms-lpirS[t-k un^vtwmMON`qs+MJxNMmJbRyz+s<nm./Q<;s{|7}.|nzts /=s~ +q= +ףpͿ?~<6/+?nAyv~6;~+Mb?:56+Mb?5nB]9v+Mb??vnWk8]+?]n\5h7yo+ynNQo6h+?5Qwo+ףp= +Mb??QnPhyw4k+3tw+t +n[k.Q;tu|[?A@0ltr+?"A*A?8[G_+rplq0z.-zR_br.q+RzDNyW-_z0A[-_RGWv-WVP4Dv+VWPVBW9JQ+BV4PC5\+\gC^@]+nj*V +j*2Qr;jnxg +x2*!n’? -+22&+gfffffMb?333333ÿ?? 2 *2%+?2'x+??xn‘jM +j22(j-+??2-)* ++Qt;x n,x +,x2Qu;,np +-2Qv;,3P;(#Q_,Q3w;RQ`3Qx;53RQa5Qy;]nRQb]Qnz;hRQchnQ{;QnRQdQQ|;yRQeyQ};RQfQ~;vuRQgvQu;kRQhkuRPAQitS???Qj.|{S???Q|;.<Q{ks<S???S???ROSDL/TYSA_COLOURS???S???S???S???S???S???S???S???Q^S???Q]xS???Q\jS???Qs;jQ[S???QZ*S???Qq;*S???Qp;RQnQ'RP(#Q'RTALPHA_MAIN_PCBOAEDT_BODYFlagGroupColor_V1PQQmTALPHA_MAIN_PCBP(#QYRPhS???OSDL/TYSA_COLOUR_2OAttGS_PS_LayerO SDL/TYSA_NAMEROAEDT_EntityID_V1RRRRR}QY;0TdQc;bdRfRRRZRUQ=;97IRLRR>+# SJ){c'P&;(#T (Al-ExtrudedOAEDT_MaterialName_V1$end 'x_b' +$end 'Design_0.setup/NativeGeometryFiles' +$end 'AllReferencedFilesForProject' +$begin 'ProjectPreview' + IsEncrypted=false + Thumbnail64='/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE\ +BAQICAQECAQEBAgICAgICAgICAQICAgICAgICAgL/2wBDAQEBAQEBAQEBAQECAQEBAgICAgICAgICAg\ +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL/wAARCABgAGADASIAAhEBAxEB/\ +8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR\ +BRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUp\ +TVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5us\ +LDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAA\ +AECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHB\ +CSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ\ +3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4u\ +Pk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigAooooAKKKKACvEv2hP2jfgt+yr8MtT+\ +Mfx+8c2nw8+HGj6joukX3iG60rX9dcan4h1GDStJsrTRfC2k32oajcSXc6lltrSXyYYprqfy7aCaaP2\ +2vyy/bx/ZZ+OX7Y3xj+BPw50iPwL4Z/Zz+Gvhj4mfE/xx4p+KHhMfFXwR47+LHiTQrn4S+CPh7d/C/w\ +x8ZPCGvvdaV4L8YfEHXY9V+2w6ZDdzaem+6nSW1oA/UWzvLTULS1v7C5t72xvraC8sry1mjuLW7tLmJ\ +Zre5tp4mKz28kLo6OpKsrhgSCDViv5F/HFz8M/DOtfB/8AZf8A22vin+zb4m+Ln7Jf7KH7ZH7MFt8LN\ +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' + $begin 'DesignInfo' + DesignName='IcepakDesign1' + Notes='' + Factory='Icepak' + IsSolved=false + 'Nominal Setups'[1: 'Setup1'] + 'Nominal Setup Types'[1: ''] + 'Optimetrics Setups'[0:] + 'Optimetrics Experiment Types'[0:] + Image64='/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE\ +BAQICAQECAQEBAgICAgICAgICAQICAgICAgICAgL/2wBDAQEBAQEBAQEBAQECAQEBAgICAgICAgICAg\ +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL/wAARCADIAMgDASIAAhEBAxEB/\ +8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR\ +BRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUp\ +TVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5us\ +LDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAA\ +AECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHB\ +CSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ\ +3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4u\ +Pk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigAooooAKKKKACiiigAooooAKKKKACiii\ +gAooooAKKKKACivym/4KrfFX4g2ng79nr9k/wCCPj7xR8Nfjb+2n8fPB3wu0Tx14F1jUNC8bfD/AOF/\ +hjUdP8X/ABk+Ivh3VNJu4Lm1m03w9babbTmGRHa28RTBXU81xH7BP7Y/jiH/AIJ3/GjxJ8ZX1H4h/tC\ +fsAW3x8+F3xx07XfEV5F4g8beK/2dtL1zWtKutW8Tapa312brWfC1ho0NxrFzBeyz6jDf3TrcypJGQD\ +9kKK/Db4E/8FkvFvxP8dfsjWPxH/Yi+InwV+D37Z1wfDXwh+M+qfFLwp4stNS+IFtYR/b9GHgvTPD9t\ +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\ +UUUUAFFFFAH/2Q==' + $end 'DesignInfo' +$end 'ProjectPreview' diff --git a/tests/system/extensions/load.json b/tests/system/extensions/load.json new file mode 100644 index 000000000000..1a6d828880b5 --- /dev/null +++ b/tests/system/extensions/load.json @@ -0,0 +1 @@ +{"objects": {"MEMORY1": {"SurfaceMaterial": "Soft Rubber-Gray-surface", "Material": "Al-Extruded", "SolveInside": true, "Model": true, "Group": "graphics_card_simple", "Transparency": 0.0, "Color": [175, 175, 175], "CoordinateSystem": "Global"}, "SERIAL_PORT": {"SurfaceMaterial": null, "Material": "Al-Extruded", "SolveInside": true, "Model": "False", "Group": "graphics_card_simple", "Transparency": 0.0, "Color": [175, 175, 175], "CoordinateSystem": "Global"}}, "materials": {"PCB_Material": {"CoordinateSystemType": "Cartesian", "BulkOrSurfaceType": 1, "PhysicsTypes": {"set": ["Thermal"]}, "AttachedData": {"MatAppearanceData": {"property_data": "appearance_data", "Red": 210, "Green": 105, "Blue": 30, "Transparency": 0.0}}, "permittivity": "1", "permeability": "1", "conductivity": "0", "dielectric_loss_tangent": "0", "magnetic_loss_tangent": "0", "thermal_conductivity": "0.01", "mass_density": "2", "specific_heat": "2", "youngs_modulus": "0", "poissons_ratio": "0", "thermal_expansion_coefficient": "1", "diffusivity": "0.8", "molecular_mass": "0", "viscosity": "0"}, "Al-Extruded": {"CoordinateSystemType": "Cartesian", "BulkOrSurfaceType": 1, "PhysicsTypes": {"set": ["Thermal"]}, "AttachedData": {"MatAppearanceData": {"property_data": "appearance_data", "Red": 232, "Green": 235, "Blue": 235}}, "permittivity": "1", "permeability": "1", "conductivity": "0", "dielectric_loss_tangent": "0", "magnetic_loss_tangent": "0", "thermal_conductivity": "200", "mass_density": "2000", "specific_heat": "700", "youngs_modulus": "0", "poissons_ratio": "0", "thermal_expansion_coefficient": "0", "thermal_material_type": {"property_type": "ChoiceProperty", "Choice": "Solid"}, "diffusivity": "0.8", "molecular_mass": "0", "viscosity": "0", "clarity_type": {"property_type": "ChoiceProperty", "Choice": "Opaque"}}, "air": {"CoordinateSystemType": "Cartesian", "BulkOrSurfaceType": 1, "PhysicsTypes": {"set": ["Electromagnetic", "Thermal"]}, "AttachedData": {"MatAppearanceData": {"property_data": "appearance_data", "Red": 230, "Green": 230, "Blue": 230, "Transparency": 0.949999988079071}}, "permittivity": "1.0006", "permeability": "1.0000004", "conductivity": "0", "dielectric_loss_tangent": "0", "magnetic_loss_tangent": "0", "thermal_conductivity": "0.0261", "mass_density": "1.1614", "specific_heat": "1005", "youngs_modulus": "0", "poissons_ratio": "0", "thermal_expansion_coefficient": "0.005", "thermal_material_type": {"property_type": "ChoiceProperty", "Choice": "Fluid"}, "diffusivity": "2.5e-05", "molecular_mass": "0.028966", "viscosity": "2e-06", "material_refractive_index": "1.000293", "clarity_type": {"property_type": "ChoiceProperty", "Choice": "Transparent"}}}, "boundaries": {"Source2": {"ID": 6, "BoundType": "Source", "IsComponent": false, "Faces": [451], "Thermal Condition": "Fixed Temperature", "Total Power": "0W", "Surface Heat": "0mW_per_m2", "Temperature": "30cel", "Radiation": {"Radiate": false}, "Voltage/Current - Enabled": false, "Voltage/Current Option": "Current", "Current": "0A", "Voltage": "0V"}, "Memory": {"ID": 3, "BoundType": "Block", "IsComponent": false, "Objects": [62, 90], "ParentBndID": -1, "Block Type": "Solid", "Use External Conditions": false, "Use Total Power": false, "Power Density": "2w_per_m3"}, "Source1": {"ID": 5, "BoundType": "Source", "IsComponent": false, "Faces": [155], "Thermal Condition": "Total Power", "Total Power": "1.5W", "Surface Heat": "0mW_per_m2", "Temperature": "AmbientTemp", "Radiation": {"Radiate": false}, "Voltage/Current - Enabled": false, "Voltage/Current Option": "Current", "Current": "0A", "Voltage": "0V"}, "CPU": {"ID": 2, "BoundType": "Block", "IsComponent": false, "Objects": [422, 150], "ParentBndID": -1, "Block Type": "Solid", "Use External Conditions": false, "Use Total Power": true, "Total Power": "2W"}, "HTC": {"ID": 7, "BoundType": "Block", "IsComponent": false, "Objects": [134], "ParentBndID": -1, "Block Type": "Solid", "Use External Conditions": true, "Use Total Power": true, "Heat Transfer Coefficient": "5w_per_m2kel", "Temperature": "25cel", "Total Power": "0W"}, "Source3": {"ID": 8, "BoundType": "Source", "IsComponent": false, "Faces": [120], "Thermal Condition": "Surface Flux", "Total Power": "0W", "Surface Heat": "10kW_per_m2", "Temperature": "AmbientTemp", "Radiation": {"Radiate": false}, "Voltage/Current - Enabled": false, "Voltage/Current Option": "Current", "Current": "0A", "Voltage": "0V"}}, "general": {"object_mapping": {"12": ["Region", [80.0, 14.0, -55.0]], "10": ["Region", [-240.0, 14.0, -55.0]], "422": "CPU", "150": "KB", "178": "HEAT_SINK", "62": "MEMORY1", "90": "MEMORY1_1", "155": ["KB", [-153.6, 1.6, -102.0]], "451": ["ALPHA_MAIN_PCB", [-80.0, 0.0, -55.0]], "134": "CAPACITOR_1", "120": ["CAPACITOR", [-86.0, 13.600000000000003, -100.0]], "6": "Region", "34": "SERIAL_PORT", "118": "CAPACITOR", "450": "ALPHA_MAIN_PCB", "498": "Box1", "554": "MeshRegion1_SubRegion", "582": "MeshRegion2_SubRegion"}}} \ No newline at end of file diff --git a/tests/system/extensions/test_icepak_model_reviewer.py b/tests/system/extensions/test_icepak_model_reviewer.py new file mode 100644 index 000000000000..1aed64c5d146 --- /dev/null +++ b/tests/system/extensions/test_icepak_model_reviewer.py @@ -0,0 +1,140 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2021 - 2026 ANSYS, Inc. and/or its affiliates. +# SPDX-License-Identifier: MIT +# +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +from pathlib import Path + +import pytest + +from ansys.aedt.core.extensions.icepak.icepak_model_reviewer import IcepakModelReviewer +from ansys.aedt.core.extensions.icepak.model_reviewer.backend import export_config_file +from ansys.aedt.core.extensions.icepak.model_reviewer.backend import import_config_file +from ansys.aedt.core.icepak import Icepak + +AEDT_FILENAME = "Graphics_Card" +CONFIG_FILE = "Modified_Data.json" +TEST_SUBFOLDER = "T45" +AEDT_FILE_PATH = Path(__file__).parent / "example_models" / TEST_SUBFOLDER / (AEDT_FILENAME + ".aedt") + + +@pytest.fixture(autouse=True) +def ipk(add_app, request): + if hasattr(request, "param"): + prj_name = request.param + else: + prj_name = None + app = add_app(project_name=prj_name, application=Icepak, subfolder=TEST_SUBFOLDER) + yield app + app.close_project(app.project_name, False) + + +@pytest.mark.parametrize("ipk", [AEDT_FILENAME], indirect=True) +def test_successfull_json_export_import(ipk): + # 1. Dump data to the file + exported_data = export_config_file(ipk) + assert ipk.configurations.options.export_monitor is False + assert ipk.configurations.options.export_variables is False + result = import_config_file(ipk, exported_data) + assert result is True + + +@pytest.mark.parametrize("ipk", [AEDT_FILENAME], indirect=True) +def test_successfull_data_loading(ipk): + """Test the successful execution of the power map creation in Icepak.""" + extension = IcepakModelReviewer(withdraw=True) + extension.load_button.invoke() + boundary_table = extension.root.boundary_tab.winfo_children()[0] + assert len(boundary_table.tree.get_children()) == 6 + rows = boundary_table.tree.get_children() + assert boundary_table.tree.item(rows[0])["values"][5] == "4W" + assert boundary_table.tree.item(rows[1])["values"][5] == "5w_per_m3" + assert boundary_table.tree.item(rows[2])["values"][5] == "1W" + assert boundary_table.tree.item(rows[3])["values"][5] == "35cel" + assert boundary_table.tree.item(rows[4])["values"][5] == "5w_per_m2kel" + assert boundary_table.tree.item(rows[4])["values"][7] == "30cel" + assert boundary_table.tree.item(rows[5])["values"][5] == "5kW_per_m2" + + materials_table = extension.root.materials_tab.winfo_children()[0] + assert len(materials_table.tree.get_children()) == 4 + rows = materials_table.tree.get_children() + assert materials_table.tree.item(rows[0])["values"][3] == 152 + assert materials_table.tree.item(rows[0])["values"][4] == 2000 + assert materials_table.tree.item(rows[1])["values"][6] == "0.00333" + assert materials_table.tree.item(rows[1])["values"][7] == "2.88e-05" + assert materials_table.tree.item(rows[1])["values"][8] == "1.84e-05" + assert materials_table.tree.item(rows[2])["values"][5] == 2 + + model_table = extension.root.models_tab.winfo_children()[0] + assert len(model_table.tree.get_children()) == 11 + rows = model_table.tree.get_children() + assert model_table.tree.item(rows[0])["values"][2] == "air" + assert model_table.tree.item(rows[1])["values"][3] == "Soft Rubber-Gray-surface" + assert model_table.tree.item(rows[2])["values"][4] == "True" + assert model_table.tree.item(rows[3])["values"][5] == "Model" + + +@pytest.mark.parametrize("ipk", [AEDT_FILENAME], indirect=True) +def test_successfull_data_modification(ipk): + extension = IcepakModelReviewer(withdraw=True) + extension.load_button.invoke() + boundary_table = extension.root.boundary_tab.winfo_children()[0] + rows = boundary_table.tree.get_children() + boundary_table.tree.set(rows[0], column="Value 1", value="2W") + boundary_table.tree.set(rows[0], column="Selected Objects", value="CPU,KB") + boundary_table.tree.set(rows[1], column="Value 1", value="2w_per_m3") + boundary_table.tree.set(rows[2], column="Value 1", value="1.5W") + boundary_table.tree.set(rows[3], column="Value 1", value="30cel") + boundary_table.tree.set(rows[4], column="Value 1", value="5w_per_m2kel") + boundary_table.tree.set(rows[4], column="Value 2", value="25cel") + boundary_table.tree.set(rows[5], column="Value 1", value="10kW_per_m2") + extension.update_button.invoke() + assert ipk.boundaries[2].properties["Assignment"] == "CPU, KB" + assert ipk.boundaries[3].properties["Power Density"] == "2w_per_m3" + assert ipk.boundaries[4].properties["Total Power"] == "1.5W" + assert ipk.boundaries[5].properties["Temperature"] == "30cel" + assert ipk.boundaries[6].properties["Heat Transfer Coefficient"] == "5w_per_m2kel" + assert ipk.boundaries[6].properties["Temperature"] == "25cel" + assert ipk.boundaries[7].properties["Surface Heat"] == "10kW_per_m2" + materials_table = extension.root.materials_tab.winfo_children()[0] + rows = materials_table.tree.get_children() + materials_table.tree.set(rows[0], column="Thermal Conductivity", value="200") # Al-Extruded + materials_table.tree.set(rows[0], column="Specific Heat", value="700") + materials_table.tree.set(rows[1], column="Viscosity", value="2e-06") # Air + materials_table.tree.set(rows[1], column="Diffusivity", value="2.5e-05") + materials_table.tree.set(rows[1], column="Thermal Expansion Coefficient", value="0.005") + materials_table.tree.set(rows[2], column="Mass Density", value="2") # PCB_Material + extension.update_button.invoke() + assert ipk.materials.material_keys["al-extruded"].thermal_conductivity.value == "200" + assert ipk.materials.material_keys["al-extruded"].specific_heat.value == "700" + assert ipk.materials.material_keys["air"].viscosity.value == "2e-06" + assert ipk.materials.material_keys["air"].diffusivity.value == "2.5e-05" + assert ipk.materials.material_keys["air"].thermal_expansion_coefficient.value == "0.005" + assert ipk.materials.material_keys["pcb_material"].mass_density.value == "2" + model_table = extension.root.models_tab.winfo_children()[0] + row2 = model_table.tree.get_children()[1] # SERIAL_PORT + row3 = model_table.tree.get_children()[2] # MEMORY + # 6 Region, 34 serial port, 62 memory + model_table.tree.set(row2, column="Modeling", value="Non-Model") + model_table.tree.set(row3, column="Bulk Material", value="Al-Extruded") + extension.update_button.invoke() + assert ipk.modeler.objects[62].material_name == "al-extruded" + assert not ipk.modeler.objects[34].model diff --git a/tests/unit/extensions/graphics_card.json b/tests/unit/extensions/graphics_card.json new file mode 100644 index 000000000000..28fac3e3d1bf --- /dev/null +++ b/tests/unit/extensions/graphics_card.json @@ -0,0 +1,544 @@ +{ + "general": { + "pyaedt_version": "0.18.0", + "model_units": "mm", + "design_name": "IcepakDesign1", + "date": "11/08/2025 14:59:14", + "object_mapping": { + "12": [ + "Region", + [ + 80.0, + 14.0, + -55.0 + ] + ], + "10": [ + "Region", + [ + -240.0, + 14.0, + -55.0 + ] + ], + "422": "CPU", + "150": "KB", + "178": "HEAT_SINK", + "62": "MEMORY1", + "90": "MEMORY1_1", + "155": [ + "KB", + [ + -153.6, + 1.6, + -102.0 + ] + ] + }, + "output_variables": {} + }, + "setups": { + "Setup1": { + "ID": 0, + "SetupType": 11, + "Enabled": true, + "MeshLink": { + "ImportMesh": false + }, + "Flow Regime": "Turbulent", + "Turbulent Model Eqn": "ZeroEquation", + "Include Temperature": true, + "Include Flow": true, + "Include Gravity": true, + "Include Solar": false, + "Solution Initialization - X Velocity": "0m_per_sec", + "Solution Initialization - Y Velocity": "0m_per_sec", + "Solution Initialization - Z Velocity": "0m_per_sec", + "Solution Initialization - Temperature": "AmbientTemp", + "Solution Initialization - Turbulent Kinetic Energy": "0", + "Solution Initialization - Turbulent Dissipation Rate": "0", + "Solution Initialization - Specific Dissipation Rate": "0", + "Solution Initialization - Use Model Based Flow Initialization": false, + "Convergence Criteria - Flow": "0.001", + "Convergence Criteria - Energy": "1e-07", + "Convergence Criteria - Turbulent Kinetic Energy": "1e-07", + "Convergence Criteria - Turbulent Dissipation Rate": "1e-07", + "Convergence Criteria - Specific Dissipation Rate": "0.001", + "Convergence Criteria - Discrete Ordinates": "1e-06", + "Convergence Criteria - Joule Heating": "1e-07", + "GPU Convergence Criteria - Flow": "0.001", + "GPU Convergence Criteria - Energy": "1e-05", + "GPU Convergence Criteria - Turbulent Kinetic Energy": "0.001", + "GPU Convergence Criteria - Turbulent Dissipation Rate": "0.001", + "GPU Convergence Criteria - Specific Dissipation Rate": "0.001", + "GPU Convergence Criteria - Discrete Ordinates": "1e-05", + "GPU Convergence Criteria - Joule Heating": "1e-07", + "IsEnabled": false, + "Radiation Model": "Off", + "Solar Radiation Model": "Solar Radiation Calculator", + "Solar Enable Participating Solids": false, + "Solar Radiation - Scattering Fraction": "0", + "Solar Radiation - North X": "0", + "Solar Radiation - North Y": "0", + "Solar Radiation - North Z": "0", + "Solar Radiation - Day": 1, + "Solar Radiation - Month": 1, + "Solar Radiation - Hours": 0, + "Solar Radiation - Minutes": 0, + "Solar Radiation - GMT": "0", + "Solar Radiation - Latitude": "0", + "Solar Radiation - Latitude Direction": "North", + "Solar Radiation - Longitude": "0", + "Solar Radiation - Longitude Direction": "East", + "Solar Radiation - Ground Reflectance": "0", + "Solar Radiation - Sunshine Fraction": "0", + "Under-relaxation - Pressure": "0.3", + "Under-relaxation - Momentum": "0.7", + "Under-relaxation - Temperature": "1", + "Under-relaxation - Turbulent Kinetic Energy": "0.8", + "Under-relaxation - Turbulent Dissipation Rate": "0.8", + "Under-relaxation - Specific Dissipation Rate": "0.8", + "Under-relaxation - Joule Heating": "1", + "Under-relaxation - Body Force": "1", + "Under-relaxation - Turbulent Viscosity": "1", + "Discretization Scheme - Pressure": "Standard", + "Discretization Scheme - Momentum": "First", + "Discretization Scheme - Temperature": "First", + "Secondary Gradient": false, + "Discretization Scheme - Turbulent Kinetic Energy": "First", + "Discretization Scheme - Turbulent Dissipation Rate": "First", + "Discretization Scheme - Specific Dissipation Rate": "First", + "Discretization Scheme - Discrete Ordinates": "First", + "Linear Solver Type - Pressure": "flex", + "Linear Solver Type - Momentum": "flex", + "Linear Solver Type - Temperature": "flex", + "Linear Solver Type - Turbulent Kinetic Energy": "flex", + "Linear Solver Type - Turbulent Dissipation Rate": "flex", + "Linear Solver Type - Specific Dissipation Rate": "flex", + "Linear Solver Type - Joule Heating": "F", + "Linear Solver Termination Criterion - Pressure": "0.1", + "Linear Solver Termination Criterion - Momentum": "0.1", + "Linear Solver Termination Criterion - Temperature": "0.1", + "Linear Solver Termination Criterion - Turbulent Kinetic Energy": "0.1", + "Linear Solver Termination Criterion - Turbulent Dissipation Rate": "0.1", + "Linear Solver Termination Criterion - Specific Dissipation Rate": "0.1", + "Linear Solver Termination Criterion - Joule Heating": "1e-09", + "Linear Solver Residual Reduction Tolerance - Pressure": "0.1", + "Linear Solver Residual Reduction Tolerance - Momentum": "0.1", + "Linear Solver Residual Reduction Tolerance - Temperature": "0.1", + "Linear Solver Residual Reduction Tolerance - Turbulent Kinetic Energy": "0.1", + "Linear Solver Residual Reduction Tolerance - Turbulent Dissipation Rate": "0.1", + "Linear Solver Residual Reduction Tolerance - Specific Dissipation Rate": "0.1", + "Linear Solver Residual Reduction Tolerance - Joule Heating": "1e-09", + "Maximum Cycles": "30", + "Linear Solver Stabilization - Pressure": "None", + "Linear Solver Stabilization - Temperature": "None", + "Linear Solver Stabilization - Joule Heating": "None", + "Coupled pressure-velocity formulation": false, + "Turn off auto-pairing for grid interface creation": false, + "2D Profile Interpolation Method": "Inverse Distance Weighted", + "Frozen Flow Simulation": false, + "TEC Coupling": false, + "Sequential Solve of Flow and Energy Equations": false, + "Convergence Criteria - Max Iterations": 100 + } + }, + "boundaries": { + "Grille1": { + "ID": 0, + "BoundType": "Grille", + "IsComponent": false, + "Faces": [ + 12 + ], + "Pressure Loss Type": "Coeff", + "Free Area Ratio": "0.8", + "Resistance Type": "Perforated Thin Vent", + "External Rad. Temperature": "AmbientTemp", + "External Total Pressure": "AmbientPressure", + "DimUnits": [ + "", + "" + ], + "X()": null, + "Y()": null + }, + "Opening1": { + "ID": 1, + "BoundType": "Opening", + "IsComponent": false, + "Faces": [ + 10 + ], + "Temperature": "AmbientTemp", + "External Rad. Temperature": "AmbientRadTemp", + "Inlet Type": "Velocity", + "Static Pressure": "AmbientPressure", + "X Velocity": "2m_per_sec", + "Y Velocity": "0m_per_sec", + "Z Velocity": "0m_per_sec", + "No Reverse Flow": false + }, + "CPU": { + "ID": 2, + "BoundType": "Block", + "IsComponent": false, + "Objects": [ + 422, + 150, + 178 + ], + "ParentBndID": -1, + "Block Type": "Solid", + "Use External Conditions": false, + "Use Total Power": true, + "Total Power": "4W" + }, + "Memory": { + "ID": 3, + "BoundType": "Block", + "IsComponent": false, + "Objects": [ + 62, + 90 + ], + "ParentBndID": -1, + "Block Type": "Solid", + "Use External Conditions": false, + "Use Total Power": false, + "Power Density": "5w_per_m3" + }, + "Source1": { + "ID": 5, + "BoundType": "Source", + "IsComponent": false, + "Faces": [ + 155 + ], + "Thermal Condition": "Total Power", + "Total Power": "1W", + "Surface Heat": "0mW_per_m2", + "Temperature": "AmbientTemp", + "Radiation": { + "Radiate": false + }, + "Voltage/Current - Enabled": false, + "Voltage/Current Option": "Current", + "Current": "0A", + "Voltage": "0V" + } + }, + "materials": { + "Al-Extruded": { + "CoordinateSystemType": "Cartesian", + "BulkOrSurfaceType": 1, + "PhysicsTypes": { + "set": [ + "Thermal" + ] + }, + "AttachedData": { + "MatAppearanceData": { + "property_data": "appearance_data", + "Red": 232, + "Green": 235, + "Blue": 235 + } + }, + "permittivity": "1", + "permeability": "1", + "conductivity": "0", + "dielectric_loss_tangent": "0", + "magnetic_loss_tangent": "0", + "thermal_conductivity": "152", + "mass_density": "2000", + "specific_heat": "900", + "youngs_modulus": "0", + "poissons_ratio": "0", + "thermal_expansion_coefficient": "0", + "thermal_material_type": { + "property_type": "ChoiceProperty", + "Choice": "Solid" + }, + "diffusivity": "0.8", + "molecular_mass": "0", + "viscosity": "0", + "clarity_type": { + "property_type": "ChoiceProperty", + "Choice": "Opaque" + } + }, + "air": { + "CoordinateSystemType": "Cartesian", + "BulkOrSurfaceType": 1, + "PhysicsTypes": { + "set": [ + "Electromagnetic", + "Thermal" + ] + }, + "AttachedData": { + "MatAppearanceData": { + "property_data": "appearance_data", + "Red": 230, + "Green": 230, + "Blue": 230, + "Transparency": 0.949999988079071 + } + }, + "permittivity": "1.0006", + "permeability": "1.0000004", + "conductivity": "0", + "dielectric_loss_tangent": "0", + "magnetic_loss_tangent": "0", + "thermal_conductivity": "0.0261", + "mass_density": "1.1614", + "specific_heat": "1005", + "youngs_modulus": "0", + "poissons_ratio": "0", + "thermal_expansion_coefficient": "0.00333", + "thermal_material_type": { + "property_type": "ChoiceProperty", + "Choice": "Fluid" + }, + "diffusivity": "2.88e-05", + "molecular_mass": "0.028966", + "viscosity": "1.84e-05", + "material_refractive_index": "1.000293", + "clarity_type": { + "property_type": "ChoiceProperty", + "Choice": "Transparent" + } + }, + "PCB_Material": { + "CoordinateSystemType": "Cartesian", + "BulkOrSurfaceType": 1, + "PhysicsTypes": { + "set": [ + "Thermal" + ] + }, + "AttachedData": { + "MatAppearanceData": { + "property_data": "appearance_data", + "Red": 210, + "Green": 105, + "Blue": 30, + "Transparency": 0.0 + } + }, + "permittivity": "1", + "permeability": "1", + "conductivity": "0", + "dielectric_loss_tangent": "0", + "magnetic_loss_tangent": "0", + "thermal_conductivity": "0.01", + "mass_density": "1", + "specific_heat": "2", + "youngs_modulus": "0", + "poissons_ratio": "0", + "thermal_expansion_coefficient": "1", + "diffusivity": "0.8", + "molecular_mass": "0", + "viscosity": "0" + }, + "Ceramic_material": { + "CoordinateSystemType": "Cartesian", + "BulkOrSurfaceType": 1, + "PhysicsTypes": { + "set": [ + "Thermal" + ] + }, + "AttachedData": { + "MatAppearanceData": { + "property_data": "appearance_data", + "Red": 0, + "Green": 100, + "Blue": 0, + "Transparency": 0.0 + } + }, + "ModifierData": { + "ThermalModifierData": { + "modifier_data": "thermal_modifier_data", + "all_thermal_modifiers": {} + } + }, + "permittivity": "1", + "permeability": "1", + "conductivity": "0", + "dielectric_loss_tangent": "0", + "magnetic_loss_tangent": "0", + "thermal_conductivity": "15", + "mass_density": "2500", + "specific_heat": "910", + "youngs_modulus": "0", + "poissons_ratio": "0", + "thermal_expansion_coefficient": "0", + "thermal_material_type": { + "property_type": "ChoiceProperty", + "Choice": "Solid" + }, + "diffusivity": "0.8", + "molecular_mass": "0", + "viscosity": "0" + } + }, + "objects": { + "Region": { + "SurfaceMaterial": "\"\"", + "Material": "air", + "SolveInside": true, + "Model": true, + "Group": "Model", + "Transparency": 0.0, + "Color": [ + 0, + 0, + 0 + ], + "CoordinateSystem": "Global" + }, + "SERIAL_PORT": { + "SurfaceMaterial": "\"Soft Rubber-Gray-surface\"", + "Material": "Al-Extruded", + "SolveInside": true, + "Model": true, + "Group": "graphics_card_simple", + "Transparency": 0.0, + "Color": [ + 175, + 175, + 175 + ], + "CoordinateSystem": "Global" + }, + "MEMORY1": { + "SurfaceMaterial": "\"Soft Rubber-Gray-surface\"", + "Material": "Ceramic_material", + "SolveInside": true, + "Model": true, + "Group": "graphics_card_simple", + "Transparency": 0.0, + "Color": [ + 175, + 175, + 175 + ], + "CoordinateSystem": "Global" + }, + "MEMORY1_1": { + "SurfaceMaterial": "\"Soft Rubber-Gray-surface\"", + "Material": "Ceramic_material", + "SolveInside": true, + "Model": true, + "Group": "graphics_card_simple", + "Transparency": 0.0, + "Color": [ + 175, + 175, + 175 + ], + "CoordinateSystem": "Global" + }, + "CAPACITOR": { + "SurfaceMaterial": "\"Soft Rubber-Gray-surface\"", + "Material": "Ceramic_material", + "SolveInside": true, + "Model": true, + "Group": "graphics_card_simple", + "Transparency": 0.0, + "Color": [ + 175, + 175, + 175 + ], + "CoordinateSystem": "Global" + }, + "CAPACITOR_1": { + "SurfaceMaterial": "\"Soft Rubber-Gray-surface\"", + "Material": "Ceramic_material", + "SolveInside": true, + "Model": true, + "Group": "graphics_card_simple", + "Transparency": 0.0, + "Color": [ + 175, + 175, + 175 + ], + "CoordinateSystem": "Global" + }, + "KB": { + "SurfaceMaterial": "\"Soft Rubber-Gray-surface\"", + "Material": "Al-Extruded", + "SolveInside": true, + "Model": true, + "Group": "graphics_card_simple", + "Transparency": 0.0, + "Color": [ + 175, + 175, + 175 + ], + "CoordinateSystem": "Global" + }, + "HEAT_SINK": { + "SurfaceMaterial": "\"Soft Rubber-Gray-surface\"", + "Material": "Al-Extruded", + "SolveInside": true, + "Model": true, + "Group": "graphics_card_simple", + "Transparency": 0.0, + "Color": [ + 175, + 175, + 175 + ], + "CoordinateSystem": "Global" + }, + "CPU": { + "SurfaceMaterial": "\"Steel-oxidised-surface\"", + "Material": "Al-Extruded", + "SolveInside": true, + "Model": true, + "Group": "graphics_card_simple", + "Transparency": 0.0, + "Color": [ + 175, + 175, + 175 + ], + "CoordinateSystem": "Global" + }, + "ALPHA_MAIN_PCB": { + "SurfaceMaterial": "\"Steel-oxidised-surface\"", + "Material": "Al-Extruded", + "SolveInside": true, + "Model": true, + "Group": "graphics_card_simple", + "Transparency": 0.0, + "Color": [ + 175, + 175, + 175 + ], + "CoordinateSystem": "Global" + }, + "Box1": { + "SurfaceMaterial": null, + "Material": "", + "SolveInside": false, + "Model": false, + "Group": "Model", + "Transparency": 0.0, + "Color": [ + 0, + 0, + 255 + ], + "CoordinateSystem": "Global" + } + } +} \ No newline at end of file diff --git a/tests/unit/extensions/mapping.json b/tests/unit/extensions/mapping.json new file mode 100644 index 000000000000..b23aa24c23ea --- /dev/null +++ b/tests/unit/extensions/mapping.json @@ -0,0 +1 @@ +{"Region": 6, "SERIAL_PORT": 34, "MEMORY1": 62, "MEMORY1_1": 90, "CAPACITOR": 118, "CAPACITOR_1": 134, "KB": 150, "HEAT_SINK": 178, "CPU": 422, "ALPHA_MAIN_PCB": 450, "Box1": 498, "MeshRegion1_SubRegion": 554, "MeshRegion2_SubRegion": 582} \ No newline at end of file diff --git a/tests/unit/extensions/test_icepak_model_reviewer.py b/tests/unit/extensions/test_icepak_model_reviewer.py new file mode 100644 index 000000000000..9f493e36f5a3 --- /dev/null +++ b/tests/unit/extensions/test_icepak_model_reviewer.py @@ -0,0 +1,264 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2021 - 2026 ANSYS, Inc. and/or its affiliates. +# SPDX-License-Identifier: MIT +# +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +import json +import os +from pathlib import Path +from unittest.mock import patch + +import pytest + +from ansys.aedt.core.extensions.icepak.icepak_model_reviewer import EXTENSION_TITLE +from ansys.aedt.core.extensions.icepak.icepak_model_reviewer import IcepakModelReviewer +from ansys.aedt.core.extensions.misc import ExtensionTheme +from tests import TESTS_UNIT_PATH + +AEDT_FILENAME = "Graphics_Card" +CONFIG_FILE = "Modified_Data.json" +TEST_SUBFOLDER = "T45" +AEDT_FILE_PATH = Path(__file__).parent / "example_models" / TEST_SUBFOLDER / (AEDT_FILENAME + ".aedt") + + +def config_file_load(): + config_file = os.path.join(TESTS_UNIT_PATH, "extensions", "graphics_card.json") + with open(config_file, "r") as file: + data = json.load(file) + return data + + +def mapping_load(): + mapping_file = os.path.join(TESTS_UNIT_PATH, "extensions", "mapping.json") + with open(mapping_file, "r") as file: + data = json.load(file) + return data + + +@pytest.fixture +def patched_loader(): + with patch.object(IcepakModelReviewer, "get_project_data", side_effect=config_file_load) as mock_loader: + yield mock_loader + + +@pytest.fixture +def patched_object_id(): + with patch.object(IcepakModelReviewer, "object_id_mapping", side_effect=mapping_load) as mock_loader: + yield mock_loader + + +@pytest.fixture +def patched_import_data_to_project(): + with patch.object(IcepakModelReviewer, "import_data_to_project", return_value=None) as mock_loader: + yield mock_loader + + +theme = ExtensionTheme() + + +def add_icon_to_cells(data, read_only): + return data + + +def flatten_list(data): + return data + + +def test_icepak_model_reviewer(mock_icepak_app): + """Test instantiation of the IcepakModelReviewer.""" + extension = IcepakModelReviewer(withdraw=True) + + assert EXTENSION_TITLE == extension.root.title() + assert "light" == extension.root.theme + + extension.root.destroy() + + +def test_icepak_model_reviewer_load_project(mock_icepak_app, patched_loader): + extension = IcepakModelReviewer(withdraw=True) + extension.load_button.invoke() + boundary_table = extension.root.boundary_tab.winfo_children()[0] + assert boundary_table.tree is not None + assert len(boundary_table.tree.get_children()) == 3 + + +def test_icepak_model_reviewer_table_values(mock_icepak_app, patched_loader): + extension = IcepakModelReviewer(withdraw=True) + extension.load_button.invoke() + boundary_table = extension.root.boundary_tab.winfo_children()[0] + row1, row2, row3 = boundary_table.tree.get_children()[:3] + assert boundary_table.tree.column(5)["id"] == "Value 1" + assert boundary_table.tree.item(row1)["values"][5] == "4W" + assert boundary_table.tree.item(row1)["values"][3] == "CPU,KB,HEAT_SINK" + assert boundary_table.tree.item(row2)["values"][5] == "5w_per_m3" + assert boundary_table.tree.item(row2)["values"][3] == "MEMORY1,MEMORY1_1" + assert boundary_table.tree.item(row3)["values"][5] == "1W" + materials_table = extension.root.materials_tab.winfo_children()[0] + assert len(materials_table.tree.get_children()) == 4 + row1, row2, row3, row4 = materials_table.tree.get_children()[:4] + assert materials_table.tree.item(row1)["values"][1] == "Al-Extruded🔒" + assert materials_table.tree.item(row1)["values"][2] == "Solid🔒" + assert materials_table.tree.item(row1)["values"][3] == 152 + assert materials_table.tree.item(row1)["values"][4] == 2000 + assert materials_table.tree.item(row2)["values"][4] == "1.1614" + assert materials_table.tree.item(row3)["values"][5] == 2 + assert materials_table.tree.item(row4)["values"][6] == 0 + model_table = extension.root.models_tab.winfo_children()[0] + assert len(model_table.tree.get_children()) == 11 + row1, row2, row3 = model_table.tree.get_children()[:3] + assert model_table.tree.item(row1)["values"][2] == "air" + assert model_table.tree.item(row2)["values"][3] == "Soft Rubber-Gray-surface" + assert model_table.tree.item(row3)["values"][4] == "True" + assert model_table.tree.item(row3)["values"][5] == "Model" + + +def test_table_icon_handling_after_load(mock_icepak_app, patched_loader): + """Verify that all read-only cells in the table have the 🔒 icon appended.""" + extension = IcepakModelReviewer(withdraw=True) + extension.load_button.invoke() + + for tab_name in ["boundary_tab", "materials_tab", "models_tab"]: + table = getattr(extension.root, tab_name).winfo_children()[0] + tree = table.tree + rows = tree.get_children() + # For every row, check each read-only column + for row_index, row_id in enumerate(rows): + values = tree.item(row_id)["values"] + readonly_cols = table.read_only_data[row_index] + + for col_index, value in enumerate(values): # 1-based index for consistency + val_str = str(value) + if col_index in readonly_cols: + assert val_str.endswith("🔒") + else: + assert not val_str.endswith("🔒") + + +def test_table_headers_and_types_consistency(mock_icepak_app, patched_loader): + """ + Verify: + - each table has consistent header/type pairing + - 'multiple_text' columns contain comma-separated values + """ + extension = IcepakModelReviewer(withdraw=True) + extension.load_button.invoke() + + for tab_name in ["boundary_tab", "materials_tab", "models_tab"]: + table = getattr(extension.root, tab_name).winfo_children()[0] + headers = table.headers + types = table.types + tree = table.tree + + # --- 1Check header/type consistency --- + assert len(headers) == len(types), f"{tab_name} headers/types mismatch" + + # --- multiple_text columns should have comma-separated values --- + multi_text_indices = [i for i, t in enumerate(types) if t == "multiple_text"] + if multi_text_indices: + found_multi = False + for row_id in tree.get_children(): + values = tree.item(row_id)["values"] + for idx in multi_text_indices: + if idx < len(values) and "," in str(values[idx]): + found_multi = True + break + if found_multi: + break + assert found_multi + + +def test_table_reload_does_not_duplicate(mock_icepak_app, patched_loader): + """Ensure multiple loads don't duplicate table entries.""" + extension = IcepakModelReviewer(withdraw=True) + + extension.load_button.invoke() + first_load_rows = len(extension.root.boundary_tab.winfo_children()[0].tree.get_children()) + + # Invoke load again + extension.load_button.invoke() + second_load_rows = len(extension.root.boundary_tab.winfo_children()[0].tree.get_children()) + + assert first_load_rows == second_load_rows + + +def test_icepak_model_reviewer_table_modification( + mock_icepak_app, patched_loader, patched_import_data_to_project, patched_object_id +): + extension = IcepakModelReviewer(withdraw=True) + extension.load_button.invoke() + boundary_table = extension.root.boundary_tab.winfo_children()[0] + row1 = boundary_table.tree.get_children()[0] + row2 = boundary_table.tree.get_children()[1] + row3 = boundary_table.tree.get_children()[2] + boundary_table.tree.set(row1, column="Value 1", value="2W") + boundary_table.tree.set(row1, column="Selected Objects", value="CPU,KB") + boundary_table.tree.set(row2, column="Value 1", value="2w_per_m3") + boundary_table.tree.set(row3, column="Value 1", value="1.5W") + extension.update_button.invoke() + assert extension.combined_data["boundaries"]["CPU"]["Total Power"] == "2W" + assert extension.combined_data["boundaries"]["CPU"]["Objects"] == [422, 150] + assert extension.combined_data["boundaries"]["Memory"]["Power Density"] == "2w_per_m3" + assert extension.combined_data["boundaries"]["Source1"]["Total Power"] == "1.5W" + material_table = extension.root.materials_tab.winfo_children()[0] + row1 = material_table.tree.get_children()[0] + row2 = material_table.tree.get_children()[1] + row3 = material_table.tree.get_children()[2] + material_table.tree.set(row1, column="Thermal Conductivity", value="150") + material_table.tree.set(row2, column="Mass Density", value="1.2") + material_table.tree.set(row3, column="Specific Heat", value="4") + extension.update_button.invoke() + assert extension.combined_data["materials"]["Al-Extruded"]["thermal_conductivity"] == "150" + assert extension.combined_data["materials"]["air"]["mass_density"] == "1.2" + assert extension.combined_data["materials"]["PCB_Material"]["specific_heat"] == "4" + model_table = extension.root.models_tab.winfo_children()[0] + row1 = model_table.tree.get_children()[1] + row2 = model_table.tree.get_children()[2] + model_table.tree.set(row1, column="Modeling", value="Non-Model") + model_table.tree.set(row2, column="Bulk Material", value="Al-Extruded") + extension.update_button.invoke() + assert extension.combined_data["objects"]["MEMORY1"]["Material"] == "Al-Extruded" + assert extension.combined_data["objects"]["SERIAL_PORT"]["Model"] == "False" + + +def test_icepak_table_modification(mock_icepak_app, patched_loader): + extension = IcepakModelReviewer(withdraw=True) + extension.load_button.invoke() + + boundary_table = extension.root.boundary_tab.winfo_children()[0] + row1 = boundary_table.tree.get_children()[0] + + # 1. TEST PROGRAMMATIC MODIFICATION + # Simulates changing 'Value 1' (Col 5) to '10W' + boundary_table.update_cell_value(row1, 5, "10W") + assert boundary_table.tree.item(row1)["values"][5] == "10W" + + # 2. TEST BULK EDITING (UI Logic Coverage) + row2 = boundary_table.tree.get_children()[2] + row3 = boundary_table.tree.get_children()[2] + boundary_table.toggle_row(row1) # Select row 1 + boundary_table.toggle_row(row2) # Select row 2 + boundary_table.toggle_row(row2) # Unselect row 2 + boundary_table.toggle_row(row3) # Select row 3 + + # Modifying row1 should now also modify row2 + boundary_table.update_cell_value(row1, 5, "99W") + assert boundary_table.tree.item(row3)["values"][5] == "99W"