|
| 1 | +# %% |
| 2 | +# Copyright (C) 2025 ANSYS, Inc. and/or its affiliates. |
| 3 | +# SPDX-License-Identifier: MIT |
| 4 | +# |
| 5 | +# Permission is hereby granted, free of charge, to any person obtaining a copy |
| 6 | +# of this software and associated documentation files (the "Software"), to deal |
| 7 | +# in the Software without restriction, including without limitation the rights |
| 8 | +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| 9 | +# copies of the Software, and to permit persons to whom the Software is |
| 10 | +# furnished to do so, subject to the following conditions: |
| 11 | +# |
| 12 | +# The above copyright notice and this permission notice shall be included in all |
| 13 | +# copies or substantial portions of the Software. |
| 14 | + |
| 15 | +# %% [markdown] |
| 16 | +# # Maxwell 3D: Multi-Terminal Busbar Joule Heating Analysis |
| 17 | +# |
| 18 | +# This comprehensive example demonstrates electromagnetic analysis of a multi-terminal copper busbar |
| 19 | +# system using ANSYS Maxwell 3D and PyAEDT. The analysis covers current distribution, electromagnetic |
| 20 | +# fields, and Joule heating in AC power distribution systems. |
| 21 | +# |
| 22 | +# ## Problem Overview |
| 23 | +# |
| 24 | +# We analyze a copper busbar system with the following configuration: |
| 25 | +# - **Main Busbar**: 100mm × 10mm × 5mm rectangular conductor |
| 26 | +# - **Input Terminals**: Two parallel 2mm × 5mm × 5mm copper tabs |
| 27 | +# - **Output Terminal**: Single 2mm × 5mm × 5mm copper tab |
| 28 | +# - **Current Configuration**: 100A + 100A input, 200A output |
| 29 | +# - **Frequency**: 50Hz AC industrial power frequency |
| 30 | +# |
| 31 | +# ## Engineering Applications |
| 32 | +# - **Power Distribution**: Electrical panel and switchgear design |
| 33 | +# - **Thermal Management**: Heat dissipation and cooling system design |
| 34 | +# - **Current Rating**: Safe operating current determination |
| 35 | +# - **EMI/EMC Analysis**: Electromagnetic interference assessment |
| 36 | +# - **Material Optimization**: Conductor sizing and configuration |
| 37 | + |
| 38 | +# %% [markdown] |
| 39 | +# ## Theoretical Background |
| 40 | +# |
| 41 | +# ### Maxwell's Equations for Eddy Current Analysis |
| 42 | +# |
| 43 | +# The analysis is based on Maxwell's equations in the frequency domain for conducting materials: |
| 44 | +# |
| 45 | +# - **Faraday's Law**: ∇ × **E** = -jω**B** |
| 46 | +# - **Ampère's Law**: ∇ × **H** = **J** + jω**D** |
| 47 | +# - **Current Density**: **J** = σ**E** (Ohm's Law) |
| 48 | +# - **Constitutive Relations**: **B** = μ**H**, **D** = ε**E** |
| 49 | +# |
| 50 | +# ### Joule Heating Physics |
| 51 | +# |
| 52 | +# **Power Dissipation**: P = ∫ **J**·**E** dV = ∫ σ|**E**|² dV |
| 53 | +# |
| 54 | +# Where: |
| 55 | +# - **J** = Current density vector (A/m²) |
| 56 | +# - **E** = Electric field vector (V/m) |
| 57 | +# - σ = Electrical conductivity (S/m) |
| 58 | +# - ω = Angular frequency = 2πf |
| 59 | +# |
| 60 | +# ### Skin Effect |
| 61 | +# |
| 62 | +# At AC frequencies, current concentrates near conductor surfaces with skin depth: |
| 63 | +# |
| 64 | +# **δ = √(2/(ωμσ))** |
| 65 | +# |
| 66 | +# For copper at 50Hz: δ ≈ 9.3mm, indicating significant skin effect in our geometry. |
| 67 | + |
| 68 | +# %% [markdown] |
| 69 | +# ### 1. Import Required Libraries and Initialize Maxwell 3D |
| 70 | +# |
| 71 | +# Import PyAEDT and initialize Maxwell 3D with eddy current solver for AC electromagnetic analysis. |
| 72 | + |
| 73 | +# %% |
| 74 | +from ansys.aedt.core import Maxwell3d |
| 75 | + |
| 76 | +# Initialize Maxwell 3D with eddy current solution type |
| 77 | +m3d = Maxwell3d( |
| 78 | + version="2025.1", |
| 79 | + design="Busbar_JouleHeating", |
| 80 | + solution_type="EddyCurrent" |
| 81 | +) |
| 82 | + |
| 83 | +# %% [markdown] |
| 84 | +# ### 2. Geometry Creation and Material Assignment |
| 85 | +# |
| 86 | +# Create the 3D busbar geometry with multiple terminals representing a realistic power distribution scenario. |
| 87 | +# |
| 88 | +# #### Geometry Specifications: |
| 89 | +# - **Main Busbar**: Central current-carrying conductor |
| 90 | +# - **Input Tabs**: Two parallel connection points for incoming current |
| 91 | +# - **Output Tab**: Single connection point for outgoing current |
| 92 | +# - **Material**: High-conductivity copper (σ ≈ 5.8 × 10⁷ S/m) |
| 93 | + |
| 94 | +# %% |
| 95 | +# Create main busbar conductor |
| 96 | +busbar = m3d.modeler.create_box([0, 0, 0], [100, 10, 5], "Busbar") |
| 97 | +m3d.assign_material(busbar, "copper") |
| 98 | + |
| 99 | +# Create input terminals (parallel configuration) |
| 100 | +tab1 = m3d.modeler.create_box([-2, 0, 0], [2, 5, 5], "InputTab1") |
| 101 | +tab2 = m3d.modeler.create_box([-2, 5, 0], [2, 5, 5], "InputTab2") |
| 102 | +m3d.assign_material(tab1, "copper") |
| 103 | +m3d.assign_material(tab2, "copper") |
| 104 | + |
| 105 | +# Create output terminal |
| 106 | +tab_out = m3d.modeler.create_box([100, 2.5, 0], [2, 5, 5], "OutputTab") |
| 107 | +m3d.assign_material(tab_out, "copper") |
| 108 | + |
| 109 | +# %% [markdown] |
| 110 | +# ### 3. Current Excitation and Boundary Conditions |
| 111 | +# |
| 112 | +# Apply AC current excitations to simulate realistic power distribution scenarios. |
| 113 | +# |
| 114 | +# #### Current Configuration: |
| 115 | +# - **Input Currents**: 100A @ 0° phase (each input tab) |
| 116 | +# - **Output Current**: 200A @ 180° phase (current conservation) |
| 117 | +# - **Frequency**: 50Hz industrial power frequency |
| 118 | +# |
| 119 | +# This configuration represents a parallel input, single output power distribution system. |
| 120 | + |
| 121 | +# %% |
| 122 | +# Apply current excitation to input terminals |
| 123 | +m3d.assign_current(tab1.faces[0].id, amplitude=100, phase=0) |
| 124 | +m3d.assign_current(tab2.faces[0].id, amplitude=100, phase=0) |
| 125 | + |
| 126 | +# Apply return current to output terminal |
| 127 | +m3d.assign_current(tab_out.faces[0].id, amplitude=-200, phase=0) |
| 128 | + |
| 129 | +# %% [markdown] |
| 130 | +# ### 4. Analysis Setup and Solver Configuration |
| 131 | +# |
| 132 | +# Configure the eddy current solver for accurate electromagnetic field calculation at power frequency. |
| 133 | +# |
| 134 | +# #### Solver Parameters: |
| 135 | +# - **Solution Type**: Eddy Current (frequency domain) |
| 136 | +# - **Frequency**: 50Hz (where skin effect becomes significant) |
| 137 | +# - **Solver**: Iterative matrix solver optimized for electromagnetic problems |
| 138 | + |
| 139 | +# %% |
| 140 | +# Create analysis setup |
| 141 | +setup = m3d.create_setup("Setup1") |
| 142 | +setup.props["Frequency"] = "50Hz" |
| 143 | + |
| 144 | +# %% [markdown] |
| 145 | +# ### 5. Electromagnetic Field Solution |
| 146 | +# |
| 147 | +# Execute the finite element analysis to solve Maxwell's equations throughout the conductor domain. |
| 148 | +# |
| 149 | +# #### Computational Process: |
| 150 | +# 1. **Mesh Generation**: Automatic adaptive mesh refinement |
| 151 | +# 2. **Matrix Assembly**: Finite element system matrix construction |
| 152 | +# 3. **Iterative Solution**: Conjugate gradient solver for large sparse systems |
| 153 | +# 4. **Field Calculation**: Electric and magnetic field computation |
| 154 | +# 5. **Convergence Check**: Solution accuracy verification |
| 155 | + |
| 156 | +# %% |
| 157 | +# Solve the electromagnetic problem |
| 158 | +m3d.analyze() |
| 159 | + |
| 160 | +# %% [markdown] |
| 161 | +# ### 6. Field Visualization and Post-Processing |
| 162 | +# |
| 163 | +# Generate field plots to visualize electromagnetic phenomena and current distribution patterns. |
| 164 | +# |
| 165 | +# #### Visualization Results: |
| 166 | +# - **Electric Field Magnitude**: Shows regions of high electric stress and potential gradients |
| 167 | +# - **Current Density**: Reveals current flow patterns and skin effect distribution |
| 168 | +# |
| 169 | +# These visualizations are critical for: |
| 170 | +# - Understanding current crowding effects |
| 171 | +# - Identifying hot spots for thermal management |
| 172 | +# - Optimizing conductor geometry |
| 173 | + |
| 174 | +# %% |
| 175 | +# Create electric field magnitude plot |
| 176 | +m3d.post.create_fieldplot_surface(busbar, "Mag_E") |
| 177 | + |
| 178 | +# Create current density plot |
| 179 | +m3d.post.create_fieldplot_surface(busbar, "J") |
| 180 | + |
| 181 | +# %% [markdown] |
| 182 | +# ### 7. Joule Heating Loss Calculation |
| 183 | +# |
| 184 | +# Calculate and quantify the resistive power losses (Joule heating) in the conductor system. |
| 185 | +# |
| 186 | +# #### Power Loss Physics: |
| 187 | +# - **Ohmic Loss**: P = ∫ σ|E|² dV over conductor volume |
| 188 | +# - **Units**: Power dissipated in watts (W) |
| 189 | +# - **Engineering Significance**: Critical for thermal design and cooling requirements |
| 190 | +# |
| 191 | +# The calculated losses provide essential data for: |
| 192 | +# - Temperature rise prediction |
| 193 | +# - Cooling system sizing |
| 194 | +# - Current derating calculations |
| 195 | + |
| 196 | +# %% |
| 197 | +# Create ohmic loss report |
| 198 | +report_name = "OhmicLossReport" |
| 199 | +m3d.post.create_report( |
| 200 | + expressions="Ohmic_Loss", |
| 201 | + report_category="EddyCurrent", |
| 202 | + plotname=report_name |
| 203 | +) |
| 204 | +data = m3d.post.get_report_data(report_name) |
| 205 | + |
| 206 | +# Extract and display results with engineering context |
| 207 | +if data and data.data_magnitude(): |
| 208 | + total_loss = data.data_magnitude()[0] |
| 209 | + loss_per_amp_squared = total_loss / (200**2) # Loss per A² |
| 210 | + loss_density = total_loss / (100 * 10 * 5) # Loss per unit volume (W/mm³) |
| 211 | + |
| 212 | + print(f"=== JOULE HEATING ANALYSIS RESULTS ===") |
| 213 | + print(f"Total Joule Heating Loss: {total_loss:.3f} W") |
| 214 | + print(f"Loss per unit current²: {loss_per_amp_squared*1e6:.3f} μW/A²") |
| 215 | + print(f"Loss density: {loss_density:.6f} W/mm³") |
| 216 | + print(f"Equivalent resistance: {total_loss/(200**2):.6f} Ω") |
| 217 | +else: |
| 218 | + print("Warning: No Ohmic Loss data found in simulation results.") |
| 219 | + |
| 220 | +# %% [markdown] |
| 221 | +# ### 8. Project Save and Resource Management |
| 222 | +# |
| 223 | +# Save the complete analysis for future reference and properly release computational resources. |
| 224 | + |
| 225 | +# %% |
| 226 | +# Save project with all results |
| 227 | +m3d.save_project("Busbar_JouleHeating.aedt") |
| 228 | + |
| 229 | +# Release computational resources |
| 230 | +m3d.release_desktop(True, True) |
| 231 | + |
| 232 | +# %% [markdown] |
| 233 | +# ## Results Analysis |
| 234 | +# |
| 235 | +# ### Key Findings |
| 236 | +# |
| 237 | +# 1. **Current Distribution**: The dual-input configuration creates non-uniform current density |
| 238 | +# 2. **Skin Effect**: At 50Hz, current concentration near surfaces increases resistance |
| 239 | +# 3. **Joule Heating**: Power losses are concentrated at connection points and current transitions |
| 240 | +# 4. **Field Concentration**: Electric field peaks occur at geometric discontinuities |
| 241 | +# |
| 242 | +# ## Conclusion |
| 243 | +# |
| 244 | +# This Maxwell 3D analysis successfully demonstrates: |
| 245 | +# |
| 246 | +# 1. **Comprehensive Modeling**: Multi-terminal busbar with realistic geometry and excitation |
| 247 | +# 2. **Physics-Based Results**: Accurate electromagnetic field and loss calculations |
| 248 | +# 3. **Engineering Applications**: Practical design insights for power systems |
| 249 | +# 4. **Professional Workflow**: Industry-standard simulation methodology |
| 250 | +# |
| 251 | +# The calculated Joule heating provides essential data for thermal design, current rating, |
| 252 | +# and safety assessment of electrical power distribution systems. This workflow can be |
| 253 | +# extended for parametric studies, optimization, and coupled thermal analysis. |
| 254 | +# |
| 255 | +# This analysis demonstrates the power of PyAEDT for electromagnetic engineering and |
| 256 | +# provides a solid foundation for advanced busbar design applications. |
0 commit comments