.. 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:: default 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-26 Set non-graphical mode ~~~~~~~~~~~~~~~~~~~~~~ Set non-graphical mode. You can set ``non_graphical`` value either to ``True`` or ``False``. .. GENERATED FROM PYTHON SOURCE LINES 26-29 .. code-block:: default non_graphical = False .. GENERATED FROM PYTHON SOURCE LINES 30-34 Define variables ~~~~~~~~~~~~~~~~ Define input variables. The following code creates all input variables that are needed to run this example. .. GENERATED FROM PYTHON SOURCE LINES 34-43 .. code-block:: default 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 44-47 Launch AEDT ~~~~~~~~~~~ Launch AEDT 2023 R2 in graphical mode. .. GENERATED FROM PYTHON SOURCE LINES 47-57 .. code-block:: default d = pyaedt.launch_desktop(specified_version="2023.2", 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 Initializing new desktop! .. GENERATED FROM PYTHON SOURCE LINES 58-61 Create Icepak project ~~~~~~~~~~~~~~~~~~~~~ Create an Icepak project. .. GENERATED FROM PYTHON SOURCE LINES 61-64 .. code-block:: default ipk = pyaedt.Icepak(project_name) .. rst-class:: sphx-glr-script-out .. code-block:: none Returning found desktop with PID 11768! .. GENERATED FROM PYTHON SOURCE LINES 65-68 Delete region to speed up import ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Delete the region and disable autosave to speed up the import. .. GENERATED FROM PYTHON SOURCE LINES 68-73 .. code-block:: default d.disable_autosave() ipk.modeler.delete("Region") component_name = "from_ODB" .. GENERATED FROM PYTHON SOURCE LINES 74-77 Import PCB from AEDB file ~~~~~~~~~~~~~~~~~~~~~~~~~ Import a PCB from an AEDB file. .. GENERATED FROM PYTHON SOURCE LINES 77-82 .. code-block:: default 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", outlinepolygon=outline_polygon_name) .. rst-class:: sphx-glr-script-out .. code-block:: none C:\actions-runner\_work\pyaedt\pyaedt\testenv\lib\site-packages\pyaedt\icepak.py:2241: DeprecationWarning: ``extenttype`` was deprecated in 0.6.43. Use ``extent_type`` instead. warnings.warn( C:\actions-runner\_work\pyaedt\pyaedt\testenv\lib\site-packages\pyaedt\icepak.py:2248: DeprecationWarning: ``outlinepolygon`` was deprecated in 0.6.43. Use ``outline_polygon`` instead. warnings.warn( .. GENERATED FROM PYTHON SOURCE LINES 83-87 Create offset coordinate system ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Create an offset coordinate system to match ODB++ with the Sherlock STEP file. .. GENERATED FROM PYTHON SOURCE LINES 87-90 .. code-block:: default 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 91-94 Import CAD file ~~~~~~~~~~~~~~~ Import a CAD file. .. GENERATED FROM PYTHON SOURCE LINES 94-97 .. code-block:: default 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 98-101 Save CAD file ~~~~~~~~~~~~~ Save the CAD file and refresh the properties from the parsing of the AEDT file. .. GENERATED FROM PYTHON SOURCE LINES 101-104 .. code-block:: default ipk.save_project(refresh_obj_ids_after_save=True) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 105-108 Plot model ~~~~~~~~~~ Plot the model. .. GENERATED FROM PYTHON SOURCE LINES 108-111 .. code-block:: default 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 112-115 Delete PCB objects ~~~~~~~~~~~~~~~~~~ Delete the PCB objects. .. GENERATED FROM PYTHON SOURCE LINES 115-118 .. code-block:: default ipk.modeler.delete_objects_containing("pcb", False) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 119-122 Create region ~~~~~~~~~~~~~ Create an air region. .. GENERATED FROM PYTHON SOURCE LINES 122-125 .. code-block:: default 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 126-129 Assign materials ~~~~~~~~~~~~~~~~ Assign materials from Sherlock file. .. GENERATED FROM PYTHON SOURCE LINES 129-132 .. code-block:: default ipk.assignmaterial_from_sherlock_files(component_list, material_list) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 133-136 Delete objects with no material assignments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Delete objects with no materials assignments. .. GENERATED FROM PYTHON SOURCE LINES 136-141 .. code-block:: default 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 142-145 Assign power to component blocks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Assign power to component blocks. .. GENERATED FROM PYTHON SOURCE LINES 145-148 .. code-block:: default all_objects = ipk.modeler.object_names .. GENERATED FROM PYTHON SOURCE LINES 149-152 Assign power blocks ~~~~~~~~~~~~~~~~~~~ Assign power blocks from the Sherlock file. .. GENERATED FROM PYTHON SOURCE LINES 152-155 .. code-block:: default total_power = ipk.assign_block_from_sherlock_file(csv_name=component_list) .. GENERATED FROM PYTHON SOURCE LINES 156-159 Plot model ~~~~~~~~~~ Plot the model again now that materials are assigned. .. GENERATED FROM PYTHON SOURCE LINES 159-162 .. code-block:: default 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 163-166 Set up boundaries ~~~~~~~~~~~~~~~~~ Set up boundaries. .. GENERATED FROM PYTHON SOURCE LINES 166-181 .. code-block:: default # 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 182-184 Create point monitor ~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 184-190 .. code-block:: default 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 191-195 Check for intersections ~~~~~~~~~~~~~~~~~~~~~~~ Check for intersections using validation and fix them by assigning priorities. .. GENERATED FROM PYTHON SOURCE LINES 195-198 .. code-block:: default ipk.assign_priority_on_intersections() .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 199-201 Compute power budget ~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 201-205 .. code-block:: default 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 206-208 Analyze the model ~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 208-212 .. code-block:: default ipk.analyze(num_cores=4, num_tasks=4) ipk.save_project() .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 213-215 Get solution data and plots ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 215-220 .. code-block:: default plot1 = ipk.post.create_fieldplot_surface(ipk.modeler["COMP_U10"].faces, "SurfTemperature") ipk.post.plot_field("SurfPressure",ipk.modeler["COMP_U10"].faces,export_path=ipk.working_directory, show=False) .. 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 221-224 Save project and release AEDT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Save the project and release AEDT. .. GENERATED FROM PYTHON SOURCE LINES 224-233 .. code-block:: default 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:35:59.360991 Project Saved in D:/Temp/pyaedt_prj_G46/TutorialBoard.aedt True .. rst-class:: sphx-glr-timing **Total running time of the script:** (36 minutes 41.694 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-python :download:`Download Python source code: Sherlock_Example.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: Sherlock_Example.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_