Electromagnetic Analysis Module
Electromagnetic Analysis Module for MMPP
Advanced electromagnetic analysis tools for FMR modes including: - Poynting vector analysis - Radiation patterns - Energy flow visualization - Q-factor analysis - Mode coupling analysis
- class mmpp.fft.electromagnetic_analysis.ElectromagneticAnalysisConfig(mu_0=1.25663706127e-06, epsilon_0=8.8541878188e-12, c=299792458.0, gamma=221100.0, far_field_distance=0.001, radiation_theta_points=181, radiation_phi_points=361, figsize=(15, 10), dpi=150, poynting_colormap='cmc.hawaii', radiation_colormap='cmc.tokyo', energy_integration_method='simpson', q_factor_method='energy_decay')[source]
Bases:
object
Configuration for electromagnetic analysis.
- Parameters:
- __init__(mu_0=1.25663706127e-06, epsilon_0=8.8541878188e-12, c=299792458.0, gamma=221100.0, far_field_distance=0.001, radiation_theta_points=181, radiation_phi_points=361, figsize=(15, 10), dpi=150, poynting_colormap='cmc.hawaii', radiation_colormap='cmc.tokyo', energy_integration_method='simpson', q_factor_method='energy_decay')
- class mmpp.fft.electromagnetic_analysis.PoyntingVectorAnalysis(config=None)[source]
Bases:
object
Analysis of electromagnetic energy flow using Poynting vector.
- Parameters:
config (
Optional
[ElectromagneticAnalysisConfig
])
- __init__(config=None)[source]
Initialize Poynting vector analysis.
- Parameters:
config (
Optional
[ElectromagneticAnalysisConfig
])
- compute_poynting_vector(E_field, H_field)[source]
Compute Poynting vector S = (1/μ₀) * E × H
- Return type:
Parameters:
- E_fieldnp.ndarray
Electric field array with shape (ny, nx, 3)
- H_fieldnp.ndarray
Magnetic field array with shape (ny, nx, 3)
Returns:
: poynting_vector : np.ndarray
Poynting vector with shape (ny, nx, 3)
- compute_energy_density(E_field, H_field, epsilon_r=1.0, mu_r=1.0)[source]
Compute electromagnetic energy density.
Parameters:
- E_fieldnp.ndarray
Electric field array
- H_fieldnp.ndarray
Magnetic field array
- epsilon_rfloat
Relative permittivity
- mu_rfloat
Relative permeability
Returns:
: energy_densities : dict
Dictionary with electric, magnetic, and total energy densities
- visualize_energy_flow(poynting_vector, energy_density, extent=None, title='Electromagnetic Energy Flow')[source]
Visualize energy flow using Poynting vector and energy density.
- Return type:
Parameters:
- poynting_vectornp.ndarray
Poynting vector array (ny, nx, 3)
- energy_densitynp.ndarray
Energy density array (ny, nx)
- extenttuple, optional
Spatial extent [x_min, x_max, y_min, y_max]
- titlestr
Plot title
Returns:
: fig : plt.Figure
Matplotlib figure
- class mmpp.fft.electromagnetic_analysis.RadiationPatternAnalysis(config=None)[source]
Bases:
object
Analysis of far-field radiation patterns.
- Parameters:
config (
Optional
[ElectromagneticAnalysisConfig
])
- __init__(config=None)[source]
Initialize radiation pattern analysis.
- Parameters:
config (
Optional
[ElectromagneticAnalysisConfig
])
- compute_far_field(current_density, spatial_extent, frequency)[source]
Compute far-field radiation pattern from current density.
Parameters:
- current_densitynp.ndarray
Current density array (ny, nx, 3)
- spatial_extenttuple
Spatial extent [x_min, x_max, y_min, y_max] in meters
- frequencyfloat
Frequency in Hz
Returns:
: far_field : dict
Dictionary with theta, phi arrays and E_theta, E_phi components
- class mmpp.fft.electromagnetic_analysis.QFactorAnalysis(config=None)[source]
Bases:
object
Analysis of quality factor and mode losses.
- Parameters:
config (
Optional
[ElectromagneticAnalysisConfig
])
- __init__(config=None)[source]
Initialize Q-factor analysis.
- Parameters:
config (
Optional
[ElectromagneticAnalysisConfig
])
- compute_q_factor_spectral(frequencies, spectrum, peak_freq)[source]
Compute Q-factor from spectral width method.
- Return type:
Parameters:
- frequenciesnp.ndarray
Frequency array
- spectrumnp.ndarray
Power spectrum
- peak_freqfloat
Peak frequency
Returns:
: q_factor : float
Quality factor
- mmpp.fft.electromagnetic_analysis.analyze_electromagnetic_properties(mode_data, config=None)[source]
Comprehensive electromagnetic analysis of FMR mode data.
Parameters:
- mode_dataFMRModeData
Mode data to analyze
- configElectromagneticAnalysisConfig, optional
Analysis configuration
Returns:
: analysis_results : dict
Dictionary containing all analysis results
- param config:
- type config:
- mmpp.fft.electromagnetic_analysis.create_comprehensive_em_report(mode_data, analysis_results, config=None)[source]
Create comprehensive electromagnetic analysis report.
- Return type:
Parameters:
- mode_dataFMRModeData
Original mode data
- analysis_resultsdict
Results from analyze_electromagnetic_properties
- configElectromagneticAnalysisConfig, optional
Configuration
Returns:
: fig : plt.Figure
Comprehensive report figure
- param analysis_results:
- type analysis_results:
- param config:
- type config:
Configuration
ElectromagneticAnalysisConfig
- class mmpp.fft.electromagnetic_analysis.ElectromagneticAnalysisConfig(mu_0=1.25663706127e-06, epsilon_0=8.8541878188e-12, c=299792458.0, gamma=221100.0, far_field_distance=0.001, radiation_theta_points=181, radiation_phi_points=361, figsize=(15, 10), dpi=150, poynting_colormap='cmc.hawaii', radiation_colormap='cmc.tokyo', energy_integration_method='simpson', q_factor_method='energy_decay')[source]
Bases:
object
Configuration for electromagnetic analysis.
- Parameters:
- __init__(mu_0=1.25663706127e-06, epsilon_0=8.8541878188e-12, c=299792458.0, gamma=221100.0, far_field_distance=0.001, radiation_theta_points=181, radiation_phi_points=361, figsize=(15, 10), dpi=150, poynting_colormap='cmc.hawaii', radiation_colormap='cmc.tokyo', energy_integration_method='simpson', q_factor_method='energy_decay')
Analysis Classes
PoyntingVectorAnalysis
- class mmpp.fft.electromagnetic_analysis.PoyntingVectorAnalysis(config=None)[source]
Bases:
object
Analysis of electromagnetic energy flow using Poynting vector.
- Parameters:
config (
Optional
[ElectromagneticAnalysisConfig
])
- __init__(config=None)[source]
Initialize Poynting vector analysis.
- Parameters:
config (
Optional
[ElectromagneticAnalysisConfig
])
- compute_poynting_vector(E_field, H_field)[source]
Compute Poynting vector S = (1/μ₀) * E × H
- Return type:
Parameters:
- E_fieldnp.ndarray
Electric field array with shape (ny, nx, 3)
- H_fieldnp.ndarray
Magnetic field array with shape (ny, nx, 3)
Returns:
: poynting_vector : np.ndarray
Poynting vector with shape (ny, nx, 3)
- compute_energy_density(E_field, H_field, epsilon_r=1.0, mu_r=1.0)[source]
Compute electromagnetic energy density.
Parameters:
- E_fieldnp.ndarray
Electric field array
- H_fieldnp.ndarray
Magnetic field array
- epsilon_rfloat
Relative permittivity
- mu_rfloat
Relative permeability
Returns:
: energy_densities : dict
Dictionary with electric, magnetic, and total energy densities
- visualize_energy_flow(poynting_vector, energy_density, extent=None, title='Electromagnetic Energy Flow')[source]
Visualize energy flow using Poynting vector and energy density.
- Return type:
Parameters:
- poynting_vectornp.ndarray
Poynting vector array (ny, nx, 3)
- energy_densitynp.ndarray
Energy density array (ny, nx)
- extenttuple, optional
Spatial extent [x_min, x_max, y_min, y_max]
- titlestr
Plot title
Returns:
: fig : plt.Figure
Matplotlib figure
RadiationPatternAnalysis
- class mmpp.fft.electromagnetic_analysis.RadiationPatternAnalysis(config=None)[source]
Bases:
object
Analysis of far-field radiation patterns.
- Parameters:
config (
Optional
[ElectromagneticAnalysisConfig
])
- __init__(config=None)[source]
Initialize radiation pattern analysis.
- Parameters:
config (
Optional
[ElectromagneticAnalysisConfig
])
- compute_far_field(current_density, spatial_extent, frequency)[source]
Compute far-field radiation pattern from current density.
Parameters:
- current_densitynp.ndarray
Current density array (ny, nx, 3)
- spatial_extenttuple
Spatial extent [x_min, x_max, y_min, y_max] in meters
- frequencyfloat
Frequency in Hz
Returns:
: far_field : dict
Dictionary with theta, phi arrays and E_theta, E_phi components
QFactorAnalysis
- class mmpp.fft.electromagnetic_analysis.QFactorAnalysis(config=None)[source]
Bases:
object
Analysis of quality factor and mode losses.
- Parameters:
config (
Optional
[ElectromagneticAnalysisConfig
])
- __init__(config=None)[source]
Initialize Q-factor analysis.
- Parameters:
config (
Optional
[ElectromagneticAnalysisConfig
])
- compute_q_factor_spectral(frequencies, spectrum, peak_freq)[source]
Compute Q-factor from spectral width method.
- Return type:
Parameters:
- frequenciesnp.ndarray
Frequency array
- spectrumnp.ndarray
Power spectrum
- peak_freqfloat
Peak frequency
Returns:
: q_factor : float
Quality factor
Analysis Functions
- mmpp.fft.electromagnetic_analysis.analyze_electromagnetic_properties(mode_data, config=None)[source]
Comprehensive electromagnetic analysis of FMR mode data.
Parameters:
- mode_dataFMRModeData
Mode data to analyze
- configElectromagneticAnalysisConfig, optional
Analysis configuration
Returns:
: analysis_results : dict
Dictionary containing all analysis results
- param config:
- type config:
- mmpp.fft.electromagnetic_analysis.create_comprehensive_em_report(mode_data, analysis_results, config=None)[source]
Create comprehensive electromagnetic analysis report.
- Return type:
Parameters:
- mode_dataFMRModeData
Original mode data
- analysis_resultsdict
Results from analyze_electromagnetic_properties
- configElectromagneticAnalysisConfig, optional
Configuration
Returns:
: fig : plt.Figure
Comprehensive report figure
- param analysis_results:
- type analysis_results:
- param config:
- type config:
Usage Examples
Basic Electromagnetic Analysis
import mmpp
from mmpp.fft.electromagnetic_analysis import ElectromagneticAnalyzer
# Load data and get mode
db = mmpp.open('/path/to/data')
result = db.find(solver=3)[0]
# Get mode data at specific frequency
mode_data = result.fft.modes.get_mode(frequency=2.5)
# Create electromagnetic analyzer
analyzer = ElectromagneticAnalyzer()
# Analyze electromagnetic fields
em_results = analyzer.analyze_mode(mode_data)
print(f"Electric energy: {em_results['energy_densities']['electric'].sum():.2e} J/m³")
print(f"Magnetic energy: {em_results['energy_densities']['magnetic'].sum():.2e} J/m³")
Comprehensive Analysis with Visualization
from mmpp.fft.electromagnetic_analysis import comprehensive_electromagnetic_analysis
# Perform full analysis with visualization
analysis_results = comprehensive_electromagnetic_analysis(
mode_data,
include_far_field=True,
include_energy_analysis=True,
include_visualization=True
)
# Results include:
# - Energy density maps
# - Poynting vector field
# - Far-field radiation patterns
# - Current density analysis
Far-Field Radiation Analysis
# Compute far-field radiation pattern
far_field = analyzer.compute_far_field(
mode_data.current_density,
frequency=2.5,
spatial_extent=mode_data.extent
)
# Visualize radiation pattern
fig = analyzer.visualize_radiation_pattern(
far_field,
title="Mode Radiation Pattern at 2.5 GHz"
)