Simulating EMC/EMI Coupling on a Naval Top Deck Using MEEP and Python

Intro:
Electromagnetic compatibility (EMC) and electromagnetic interference (EMI) are critical concerns in naval vessel design. With an increasing number of electronic systems onboard—radar, satcom, control units, navigation, and communication devices—ensuring these systems do not interfere with each other is a vital task. In this blog post, we'll simulate a 10x10 source-victim EMC coupling matrix using MEEP, a powerful open-source FDTD solver.


Objectives:

  • Model a simplified naval top deck
  • Simulate EMI sources and sensitive victim systems
  • Visualize the Source-Victim (S/V) coupling matrix as a heatmap
  • Use Python and MEEP to analyze field strengths

System Layout:

  • Deck Dimensions: 20m x 20m (2D simulation)
  • 10 Sources: e.g., Radar, HF Radio, Power Converter, Satcom, Lighting, Engine Ctrl, IFF, Navigation, WiFi, Comms Bus
  • 10 Victims: e.g., GPS, VHF, Radar Rx, AIS, Nav Display, UHF, Control Unit, Telemetry, Wireless Rx, CCTV Rx
  • Positioning: Sources along the bottom edge, victims along the top edge

Simulation Setup in Python:
We use MEEP to inject a Gaussian source at each transmitter location and measure the Ez field at each receiver location. This gives us a quantitative measure of coupling between each source and victim device.

import meep as mp
import numpy as np
import matplotlib.pyplot as plt

# Frequency parameters
fcen = 2.4  # GHz
resolution = 20

# Deck and positions
deck_size = mp.Vector3(20, 20)
sources_pos = [mp.Vector3(-9 + i*2, -8) for i in range(10)]
victims_pos = [mp.Vector3(-9 + i*2, 8) for i in range(10)]

# Labels
source_names = ["Radar", "HF Radio", "Power Conv", "Satcom", "Lighting",
                 "Engine Ctrl", "IFF", "Navigation", "WiFi", "Comms Bus"]
victim_names = ["GPS", "VHF", "Radar Rx", "AIS", "Nav Display",
                 "UHF", "Control Unit", "Telemetry", "Wireless Rx", "CCTV Rx"]

# Initialize matrix
sv_matrix = np.zeros((10, 10))

# Run simulations
for i, src in enumerate(sources_pos):
    sim = mp.Simulation(
        cell_size=deck_size,
        resolution=resolution,
        boundary_layers=[mp.PML(1.0)],
        sources=[mp.Source(mp.GaussianSource(fcen, fwidth=0.5), component=mp.Ez, center=src)]
    )
    sim.run(until=200)
    for j, vic in enumerate(victims_pos):
        field = sim.get_field_point(mp.Ez, vic)
        sv_matrix[i, j] = 20 * np.log10(abs(field) + 1e-10)

Visualizing the Matrix:
After the simulation, we generate a heatmap to visualize EMI coupling.

plt.figure(figsize=(14, 10))
plt.imshow(sv_matrix, cmap="hot", interpolation="nearest")
plt.colorbar(label="Coupling (dB)")
plt.xticks(np.arange(10), victim_names, rotation=45)
plt.yticks(np.arange(10), source_names)
plt.title("Simulated Source-Victim Coupling Matrix (10x10)")
plt.xlabel("Victim Devices")
plt.ylabel("Source Devices")
plt.tight_layout()
plt.show()

Results and Interpretation:

  • Brighter cells indicate stronger EMI coupling.
  • Designers can identify problematic pairs (e.g., Radar affecting GPS).
  • Engineers may relocate antennas, add shielding, or insert filters based on this matrix.

Conclusion:
MEEP allows engineers to simulate complex EMC scenarios without expensive commercial tools. Using a Source-Victim matrix helps visualize and quantify interference, which is essential for safe and compliant naval electronic system design. This workflow is extendable to 3D, frequency sweeps, and even dynamic shielding analysis.

Next Steps:

  • Export matrix to CSV or Touchstone format
  • Include realistic materials and shielding
  • Automate batch simulations for multiple deck layouts

Stay tuned for Part 2, where we introduce near-field probes and shielding effectiveness maps!



Get in Touch with us

Chat with Us on LINE

iiitum1984

Speak to Us or Whatsapp

(+66) 83001 0222

Related Posts

Our Products