.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples\05-Q3D\Q2D_Armoured_Cable.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_05-Q3D_Q2D_Armoured_Cable.py: Q2D: Cable parameter identification --------------------------------------------------- This example shows how you can use PyAEDT to perform these tasks: - Create a Q2D design using the Modeler primitives and importing part of the geometry. - Set up the entire simulation. - Link the solution to a Simplorer design. For cable information, see `4 Core Armoured Power Cable `_ .. GENERATED FROM PYTHON SOURCE LINES 14-16 Perform required imports ~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 16-20 .. code-block:: default import pyaedt import math .. GENERATED FROM PYTHON SOURCE LINES 21-24 Initialize core strand dimensions and positions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Initialize cable sizing - radii in mm. .. GENERATED FROM PYTHON SOURCE LINES 24-31 .. code-block:: default c_strand_radius = 2.575 cable_n_cores = 4 core_n_strands = 6 core_xlpe_ins_thickness = 0.5 core_xy_coord = math.ceil(3 * c_strand_radius + 2 * core_xlpe_ins_thickness) .. GENERATED FROM PYTHON SOURCE LINES 32-35 Initialize filling and sheath dimensions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Initialize radii of further structures incrementally adding thicknesses. .. GENERATED FROM PYTHON SOURCE LINES 35-42 .. code-block:: default filling_radius = 1.4142 * (core_xy_coord + 3 * c_strand_radius + core_xlpe_ins_thickness + 0.5) inner_sheath_radius = filling_radius + 0.75 armour_thickness = 3 armour_radius = inner_sheath_radius + armour_thickness outer_sheath_radius = armour_radius + 2 .. GENERATED FROM PYTHON SOURCE LINES 43-46 Initialize armature strand dimensions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Initialize radii. .. GENERATED FROM PYTHON SOURCE LINES 46-51 .. code-block:: default armour_centre_pos = inner_sheath_radius + armour_thickness / 2.0 arm_strand_rad = armour_thickness / 2.0 - 0.2 n_arm_strands = 30 .. GENERATED FROM PYTHON SOURCE LINES 52-56 Initialize dictionaries ~~~~~~~~~~~~~~~~~~~~~~~ Initialize dictionaries that contain all the definitions for the design variables and output variables. .. GENERATED FROM PYTHON SOURCE LINES 56-75 .. code-block:: default core_params = { "n_cores": str(cable_n_cores), "n_strands_core": str(core_n_strands), "c_strand_radius": str(c_strand_radius) + 'mm', "c_strand_xy_coord": str(core_xy_coord) + 'mm' } outer_params = { "filling_radius": str(filling_radius) + 'mm', "inner_sheath_radius": str(inner_sheath_radius) + 'mm', "armour_radius": str(armour_radius) + 'mm', "outer_sheath_radius": str(outer_sheath_radius) + 'mm' } armour_params = { "armour_centre_pos": str(armour_centre_pos) + 'mm', "arm_strand_rad": str(arm_strand_rad) + 'mm', "n_arm_strands": str(n_arm_strands) } .. GENERATED FROM PYTHON SOURCE LINES 76-80 Initialize Q2D ~~~~~~~~~~~~~~ Initialize Q2D, providing the version, path to the project, and the design name and type. .. GENERATED FROM PYTHON SOURCE LINES 80-89 .. code-block:: default desktop_version = "2023.2" project_name = 'Q2D_ArmouredCableExample' q2d_design_name = '2D_Extractor_Cable' setup_name = "MySetupAuto" sweep_name = "sweep1" tb_design_name = 'CableSystem' q2d = pyaedt.Q2d(projectname=project_name, designname=q2d_design_name, specified_version=desktop_version) .. rst-class:: sphx-glr-script-out .. code-block:: none Initializing new desktop! C:\actions-runner\_work\_tool\Python\3.10.5\x64\lib\subprocess.py:1070: ResourceWarning: subprocess 12320 is still running _warn("subprocess %s is still running" % self.pid, .. GENERATED FROM PYTHON SOURCE LINES 90-93 Define variables from dictionaries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Define design variables from the created dictionaries. .. GENERATED FROM PYTHON SOURCE LINES 93-101 .. code-block:: default for k, v in core_params.items(): q2d[k] = v for k, v in outer_params.items(): q2d[k] = v for k, v in armour_params.items(): q2d[k] = v .. GENERATED FROM PYTHON SOURCE LINES 102-105 Create object to access 2D modeler ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Create the ``mod2D`` object to access the 2D modeler easily. .. GENERATED FROM PYTHON SOURCE LINES 105-110 .. code-block:: default mod2D = q2d.modeler mod2D.delete() mod2D.model_units = "mm" .. GENERATED FROM PYTHON SOURCE LINES 111-115 Initialize required material properties ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Cable insulators require the definition of specific materials since they are not included in the Sys Library. Plastic, PE (cross-linked, wire, and cable grade) .. GENERATED FROM PYTHON SOURCE LINES 115-126 .. code-block:: default mat_pe_cable_grade = q2d.materials.add_material("plastic_pe_cable_grade") mat_pe_cable_grade.conductivity = "1.40573e-16" mat_pe_cable_grade.permittivity = "2.09762" mat_pe_cable_grade.dielectric_loss_tangent = "0.000264575" mat_pe_cable_grade.update() # Plastic, PP (10% carbon fiber) mat_pp = q2d.materials.add_material("plastic_pp_carbon_fiber") mat_pp.conductivity = "0.0003161" mat_pp.update() .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 127-129 Create geometry for core strands, filling, and XLPE insulation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 129-150 .. code-block:: default mod2D.create_coordinate_system(['c_strand_xy_coord', 'c_strand_xy_coord', '0mm'], name='CS_c_strand_1') mod2D.set_working_coordinate_system('CS_c_strand_1') c1_id = mod2D.create_circle(['0mm', '0mm', '0mm'], 'c_strand_radius', name='c_strand_1', matname='copper') c2_id = c1_id.duplicate_along_line(vector=['0mm', '2.0*c_strand_radius', '0mm'], nclones=2) mod2D.duplicate_around_axis(c2_id, cs_axis="Z", angle=360 / core_n_strands, nclones=6) c_unite_name = mod2D.unite(q2d.get_all_conductors_names()) fill_id = mod2D.create_circle(['0mm', '0mm', '0mm'], '3*c_strand_radius', name='c_strand_fill', matname='plastic_pp_carbon_fiber') fill_id.color = (255, 255, 0) xlpe_id = mod2D.create_circle(['0mm', '0mm', '0mm'], '3*c_strand_radius+' + str(core_xlpe_ins_thickness) + 'mm', name='c_strand_xlpe', matname='plastic_pe_cable_grade') xlpe_id.color = (0, 128, 128) mod2D.set_working_coordinate_system('Global') all_obj_names = q2d.get_all_conductors_names() + q2d.get_all_dielectrics_names() mod2D.duplicate_around_axis(all_obj_names, cs_axis="Z", angle=360 / cable_n_cores, nclones=4) cond_names = q2d.get_all_conductors_names() .. GENERATED FROM PYTHON SOURCE LINES 151-153 Create geometry for filling object ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 153-158 .. code-block:: default filling_id = mod2D.create_circle(['0mm', '0mm', '0mm'], 'filling_radius', name='Filling', matname='plastic_pp_carbon_fiber') filling_id.color = (255, 255, 180) .. GENERATED FROM PYTHON SOURCE LINES 159-161 Create geometry for inner sheath object ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 161-166 .. code-block:: default inner_sheath_id = mod2D.create_circle(['0mm', '0mm', '0mm'], 'inner_sheath_radius', name='InnerSheath', matname='PVC plastic') inner_sheath_id.color = (0, 0, 0) .. GENERATED FROM PYTHON SOURCE LINES 167-169 Create geometry for armature fill ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 169-174 .. code-block:: default arm_fill_id = mod2D.create_circle(['0mm', '0mm', '0mm'], 'armour_radius', name='ArmourFilling', matname='plastic_pp_carbon_fiber') arm_fill_id.color = (255, 255, 255) .. GENERATED FROM PYTHON SOURCE LINES 175-177 Create geometry for outer sheath ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 177-182 .. code-block:: default outer_sheath_id = mod2D.create_circle(['0mm', '0mm', '0mm'], 'outer_sheath_radius', name='OuterSheath', matname='PVC plastic') outer_sheath_id.color = (0, 0, 0) .. GENERATED FROM PYTHON SOURCE LINES 183-185 Create geometry for armature steel strands ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 185-192 .. code-block:: default arm_strand_1_id = mod2D.create_circle(['0mm', 'armour_centre_pos', '0mm'], '1.1mm', name='arm_strand_1', matname='steel_stainless') arm_strand_1_id.color = (128, 128, 64) arm_strand_1_id.duplicate_around_axis('Z', '360deg/n_arm_strands', nclones='n_arm_strands') arm_strand_names = mod2D.get_objects_w_string('arm_strand') .. GENERATED FROM PYTHON SOURCE LINES 193-195 Create region ~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 195-199 .. code-block:: default region = q2d.modeler.create_region([500, 500, 500, 500, 0, 0]) region.material_name = "vacuum" .. GENERATED FROM PYTHON SOURCE LINES 200-202 Assign conductors and reference ground ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 202-210 .. code-block:: default obj = [q2d.modeler.get_object_from_name(i) for i in cond_names] [q2d.assign_single_conductor(name='C1' + str(obj.index(i) + 1), target_objects=i, conductor_type='SignalLine') for i in obj] obj = [q2d.modeler.get_object_from_name(i) for i in arm_strand_names] q2d.assign_single_conductor(name="gnd", target_objects=obj, conductor_type="ReferenceGround") mod2D.fit_all() .. GENERATED FROM PYTHON SOURCE LINES 211-213 Assign design settings ~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 213-219 .. code-block:: default lumped_length = "100m" q2d_des_settings = q2d.design_settings() q2d_des_settings['LumpedLength'] = lumped_length q2d.change_design_settings(q2d_des_settings) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 220-222 Insert setup and frequency sweep ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 222-232 .. code-block:: default q2d_setup = q2d.create_setup(setupname=setup_name) q2d_sweep = q2d_setup.add_sweep(sweepname=sweep_name) q2d_sweep.props["RangeType"] = "LogScale" q2d_sweep.props["RangeStart"] = "0Hz" q2d_sweep.props["RangeEnd"] = "3MHz" q2d_sweep.props["RangeCount"] = 10 q2d_sweep.props["RangeSamples"] = 1 q2d_sweep.update() .. rst-class:: sphx-glr-script-out .. code-block:: none True .. GENERATED FROM PYTHON SOURCE LINES 233-235 Analyze setup ~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 235-238 .. code-block:: default # q2d.analyze(setup_name=setup_name) .. GENERATED FROM PYTHON SOURCE LINES 239-241 Add a Simplorer/Twin Builder design and the Q3D dynamic component ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 241-244 .. code-block:: default tb = pyaedt.TwinBuilder(designname=tb_design_name) .. rst-class:: sphx-glr-script-out .. code-block:: none Returning found desktop with PID 12320! .. GENERATED FROM PYTHON SOURCE LINES 245-247 Add a Q3D dynamic component ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 247-255 .. code-block:: default tb.add_q3d_dynamic_component(project_name, q2d_design_name, setup_name, sweep_name, model_depth=lumped_length, coupling_matrix_name="Original") .. rst-class:: sphx-glr-script-out .. code-block:: none Returning found desktop with PID 12320! True .. GENERATED FROM PYTHON SOURCE LINES 256-258 Save project and release desktop ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 258-261 .. code-block:: default tb.save_project() tb.release_desktop(True, True) .. rst-class:: sphx-glr-script-out .. code-block:: none True .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 59.290 seconds) .. _sphx_glr_download_examples_05-Q3D_Q2D_Armoured_Cable.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: Q2D_Armoured_Cable.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: Q2D_Armoured_Cable.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_