.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples\04-Icepak\Sherlock_Example.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_04-Icepak_Sherlock_Example.py: Icepak: setup from Sherlock inputs ----------------------------------- This example shows how you can create an Icepak project from Sherlock files (STEP and CSV) and an AEDB board. .. GENERATED FROM PYTHON SOURCE LINES 8-11 Perform required imports ~~~~~~~~~~~~~~~~~~~~~~~~ Perform required imports and set paths. .. GENERATED FROM PYTHON SOURCE LINES 11-21 .. code-block:: Python import time import os import pyaedt import datetime # Set paths project_folder = pyaedt.generate_unique_folder_name() input_dir = pyaedt.downloads.download_sherlock(destination=project_folder) .. GENERATED FROM PYTHON SOURCE LINES 22-25 Set AEDT version ~~~~~~~~~~~~~~~~ Set AEDT version. .. GENERATED FROM PYTHON SOURCE LINES 25-28 .. code-block:: Python aedt_version = "2024.1" .. GENERATED FROM PYTHON SOURCE LINES 29-33 Set non-graphical mode ~~~~~~~~~~~~~~~~~~~~~~ Set non-graphical mode. You can set ``non_graphical`` value either to ``True`` or ``False``. .. GENERATED FROM PYTHON SOURCE LINES 33-36 .. code-block:: Python non_graphical = False .. GENERATED FROM PYTHON SOURCE LINES 37-41 Define variables ~~~~~~~~~~~~~~~~ Define input variables. The following code creates all input variables that are needed to run this example. .. GENERATED FROM PYTHON SOURCE LINES 41-50 .. code-block:: Python material_name = "MaterialExport.csv" component_properties = "TutorialBoardPartsList.csv" component_step = "TutorialBoard.stp" aedt_odb_project = "SherlockTutorial.aedt" aedt_odb_design_name = "PCB" stackup_thickness = 2.11836 outline_polygon_name = "poly_14188" .. GENERATED FROM PYTHON SOURCE LINES 51-54 Launch AEDT ~~~~~~~~~~~ Launch AEDT 2023 R2 in graphical mode. .. GENERATED FROM PYTHON SOURCE LINES 54-64 .. code-block:: Python d = pyaedt.launch_desktop(specified_version=aedt_version, non_graphical=non_graphical, new_desktop_session=True) start = time.time() material_list = os.path.join(input_dir, material_name) component_list = os.path.join(input_dir, component_properties) validation = os.path.join(project_folder, "validation.log") file_path = os.path.join(input_dir, component_step) project_name = os.path.join(project_folder, component_step[:-3] + "aedt") .. rst-class:: sphx-glr-script-out .. code-block:: none C:\actions-runner\_work\_tool\Python\3.10.9\x64\lib\subprocess.py:1072: ResourceWarning: subprocess 4724 is still running _warn("subprocess %s is still running" % self.pid, C:\actions-runner\_work\pyaedt\pyaedt\testenv\lib\site-packages\pyaedt\generic\settings.py:383: ResourceWarning: unclosed file <_io.TextIOWrapper name='D:\\Temp\\pyaedt_ansys.log' mode='a' encoding='cp1252'> self._logger = val .. GENERATED FROM PYTHON SOURCE LINES 65-68 Create Icepak project ~~~~~~~~~~~~~~~~~~~~~ Create an Icepak project. .. GENERATED FROM PYTHON SOURCE LINES 68-71 .. code-block:: Python ipk = pyaedt.Icepak(project_name) .. GENERATED FROM PYTHON SOURCE LINES 72-75 Delete region to speed up import ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Delete the region and disable autosave to speed up the import. .. GENERATED FROM PYTHON SOURCE LINES 75-80 .. code-block:: Python d.disable_autosave() ipk.modeler.delete("Region") component_name = "from_ODB" .. GENERATED FROM PYTHON SOURCE LINES 81-84 Import PCB from AEDB file ~~~~~~~~~~~~~~~~~~~~~~~~~ Import a PCB from an AEDB file. .. GENERATED FROM PYTHON SOURCE LINES 84-89 .. code-block:: Python odb_path = os.path.join(input_dir, aedt_odb_project) ipk.create_pcb_from_3dlayout(component_name=component_name, project_name=odb_path, design_name=aedt_odb_design_name, extenttype="Polygon") .. rst-class:: sphx-glr-script-out .. code-block:: none C:\actions-runner\_work\pyaedt\pyaedt\testenv\lib\site-packages\pyaedt\icepak.py:2556: DeprecationWarning: ``extenttype`` was deprecated in 0.6.43. Use ``extent_type`` instead. warnings.warn( .. GENERATED FROM PYTHON SOURCE LINES 90-94 Create offset coordinate system ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Create an offset coordinate system to match ODB++ with the Sherlock STEP file. .. GENERATED FROM PYTHON SOURCE LINES 94-97 .. code-block:: Python ipk.modeler.create_coordinate_system(origin=[0, 0, stackup_thickness / 2], mode="view", view="XY") .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 98-101 Import CAD file ~~~~~~~~~~~~~~~ Import a CAD file. .. GENERATED FROM PYTHON SOURCE LINES 101-104 .. code-block:: Python ipk.modeler.import_3d_cad(file_path, refresh_all_ids=False) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 105-108 Save CAD file ~~~~~~~~~~~~~ Save the CAD file and refresh the properties from the parsing of the AEDT file. .. GENERATED FROM PYTHON SOURCE LINES 108-111 .. code-block:: Python ipk.save_project(refresh_obj_ids_after_save=True) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 112-115 Plot model ~~~~~~~~~~ Plot the model. .. GENERATED FROM PYTHON SOURCE LINES 115-118 .. code-block:: Python ipk.plot(show=False, export_path=os.path.join(project_folder, "Sherlock_Example.jpg"), plot_air_objects=False) .. image-sg:: /examples/04-Icepak/images/sphx_glr_Sherlock_Example_001.png :alt: Sherlock Example :srcset: /examples/04-Icepak/images/sphx_glr_Sherlock_Example_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 119-122 Delete PCB objects ~~~~~~~~~~~~~~~~~~ Delete the PCB objects. .. GENERATED FROM PYTHON SOURCE LINES 122-125 .. code-block:: Python ipk.modeler.delete_objects_containing("pcb", False) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 126-129 Create region ~~~~~~~~~~~~~ Create an air region. .. GENERATED FROM PYTHON SOURCE LINES 129-132 .. code-block:: Python ipk.modeler.create_air_region(*[20, 20, 300, 20, 20, 300]) .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 133-136 Assign materials ~~~~~~~~~~~~~~~~ Assign materials from Sherlock file. .. GENERATED FROM PYTHON SOURCE LINES 136-139 .. code-block:: Python ipk.assignmaterial_from_sherlock_files(component_list, material_list) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 140-143 Delete objects with no material assignments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Delete objects with no materials assignments. .. GENERATED FROM PYTHON SOURCE LINES 143-148 .. code-block:: Python no_material_objs = ipk.modeler.get_objects_by_material("") ipk.modeler.delete(no_material_objs) ipk.save_project() .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 149-152 Assign power to component blocks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Assign power to component blocks. .. GENERATED FROM PYTHON SOURCE LINES 152-155 .. code-block:: Python all_objects = ipk.modeler.object_names .. GENERATED FROM PYTHON SOURCE LINES 156-159 Assign power blocks ~~~~~~~~~~~~~~~~~~~ Assign power blocks from the Sherlock file. .. GENERATED FROM PYTHON SOURCE LINES 159-162 .. code-block:: Python total_power = ipk.assign_block_from_sherlock_file(csv_name=component_list) .. GENERATED FROM PYTHON SOURCE LINES 163-166 Plot model ~~~~~~~~~~ Plot the model again now that materials are assigned. .. GENERATED FROM PYTHON SOURCE LINES 166-169 .. code-block:: Python ipk.plot(show=False, export_path=os.path.join(project_folder, "Sherlock_Example.jpg"), plot_air_objects=False) .. image-sg:: /examples/04-Icepak/images/sphx_glr_Sherlock_Example_002.png :alt: Sherlock Example :srcset: /examples/04-Icepak/images/sphx_glr_Sherlock_Example_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 170-173 Set up boundaries ~~~~~~~~~~~~~~~~~ Set up boundaries. .. GENERATED FROM PYTHON SOURCE LINES 173-188 .. code-block:: Python # Mesh settings that is tailored for PCB # Max iterations is set to 20 for quick demonstration, please increase to at least 100 for better accuracy. ipk.globalMeshSettings(3, gap_min_elements='1', noOgrids=True, MLM_en=True, MLM_Type='2D', edge_min_elements='2', object='Region') setup1 = ipk.create_setup() setup1.props["Solution Initialization - Y Velocity"] = "1m_per_sec" setup1.props["Radiation Model"] = "Discrete Ordinates Model" setup1.props["Include Gravity"] = True setup1.props["Secondary Gradient"] = True setup1.props["Convergence Criteria - Max Iterations"] = 10 ipk.assign_openings(ipk.modeler.get_object_faces("Region")) .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 189-191 Create point monitor ~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 191-199 .. code-block:: Python point1 = ipk.assign_point_monitor(ipk.modeler["COMP_U10"].top_face_z.center, monitor_name="Point1") ipk.modeler.set_working_coordinate_system("Global") line = ipk.modeler.create_polyline( [ipk.modeler["COMP_U10"].top_face_z.vertices[0].position, ipk.modeler["COMP_U10"].top_face_z.vertices[2].position], non_model=True) ipk.post.create_report(expressions="Point1.Temperature", primary_sweep_variable="X") .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 200-204 Check for intersections ~~~~~~~~~~~~~~~~~~~~~~~ Check for intersections using validation and fix them by assigning priorities. .. GENERATED FROM PYTHON SOURCE LINES 204-207 .. code-block:: Python ipk.assign_priority_on_intersections() .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 208-210 Compute power budget ~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 210-214 .. code-block:: Python power_budget, total = ipk.post.power_budget("W" ) print(total) .. rst-class:: sphx-glr-script-out .. code-block:: none 98.50000000000057 .. GENERATED FROM PYTHON SOURCE LINES 215-217 Analyze the model ~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 217-221 .. code-block:: Python ipk.analyze(cores=4, tasks=4) ipk.save_project() .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 222-224 Get solution data and plots ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 224-229 .. code-block:: Python plot1 = ipk.post.create_fieldplot_surface(ipk.modeler["COMP_U10"].faces, "SurfTemperature") ipk.post.plot_field("SurfPressure", ipk.modeler["COMP_U10"].faces, show=False, export_path=ipk.working_directory) .. image-sg:: /examples/04-Icepak/images/sphx_glr_Sherlock_Example_003.png :alt: Sherlock Example :srcset: /examples/04-Icepak/images/sphx_glr_Sherlock_Example_003.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 230-233 Save project and release AEDT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Save the project and release AEDT. .. GENERATED FROM PYTHON SOURCE LINES 233-242 .. code-block:: Python ipk.save_project() end = time.time() - start print("Elapsed time: {}".format(datetime.timedelta(seconds=end))) print("Project Saved in {} ".format(ipk.project_file)) ipk.release_desktop() .. rst-class:: sphx-glr-script-out .. code-block:: none Elapsed time: 0:18:40.115635 Project Saved in D:/Temp/pyaedt_prj_O1Y/TutorialBoard.aedt True .. rst-class:: sphx-glr-timing **Total running time of the script:** (18 minutes 58.161 seconds) .. _sphx_glr_download_examples_04-Icepak_Sherlock_Example.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: Sherlock_Example.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: Sherlock_Example.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_