Advanced toolkit for simulating and analyzing turbulent polarization in astrophysical environments
Simulate Kolmogorov turbulence, generate polarization maps, analyze Faraday rotation, and compute structure functions for astrophysical research.
- Kolmogorov Power Spectrum: Generate realistic 3D turbulent velocity fields
- Solenoidal & Compressive: Support for both solenoidal and non-solenoidal turbulence
- Configurable Resolution: From 256ยณ to 512ยณ grid points and beyond
- Helmholtz Decomposition: Advanced vector field decomposition
- Stokes Parameters: Full I, Q, U parameter computation
- Synchrotron Emission: Realistic synchrotron polarization modeling
- Dust Polarization: Dust-based polarization prescriptions
- Faraday Rotation: Screen effects and rotation measure analysis
- Structure Functions: Angular structure function computation
D_ฯ(R) - Power Law Analysis: Automated slope fitting and validation
- PDF Analysis: Single-point and two-point probability distributions
- Correlation Analysis: Spatial correlation characterization
- Interstellar Medium studies
- Magnetohydrodynamic turbulence analysis
- Cosmic ray propagation modeling
- Radio astronomy data interpretation
git clone https://github.com/astrosander/AstroTurbulence.git
cd AstroTurbulence
pip install -r requirements.txtfrom turbulence_angles.turbulence_angles_full import generate_velocity_cube
# Generate 256ยณ solenoidal velocity field
u = generate_velocity_cube(N=256, solenoidal=True, seed=42)
print(f"Generated velocity cube: {u.shape}")# Synchrotron polarization
Q_syn = np.sum(u[:,:,:,0]**2 - u[:,:,:,1]**2, axis=2)
U_syn = np.sum(2 * u[:,:,:,0] * u[:,:,:,1], axis=2)
phi_syn = 0.5 * np.arctan2(U_syn, Q_syn)from check_power_law import structure_function_2d
Rs = np.logspace(0, 2, 20).astype(int)
R_vals, D_phi = structure_function_2d(phi_syn, Rs)
# Should recover ~R^(5/3) Kolmogorov scalingAstroTurbulence/
โโโ ๐ช๏ธ turbulence_angles/ # Core turbulence simulation
โ โโโ turbulence_angles_full.py # Main simulation engine
โ โโโ single_PDF_vector.py # Statistical analysis
โ โโโ figures/ # Generated plots
โโโ ๐ก faradays_angles_stats/ # Faraday rotation analysis
โ โโโ faraday_screen_demo.py # Faraday screen modeling
โ โโโ lp_structure_tests/ # Linear polarization tests
โโโ ๐ stokesMaps_velocity_kolmogorov_NoNorm/ # Stokes parameter maps
โ โโโ read_and_plot.py # Visualization tools
โ โโโ check_power_law.py # Power law validation
โโโ โก spectrum_generation/ # Power spectrum analysis
โโโ ๐งฎ check_integration_factors/ # Numerical validation
The toolkit reproduces the expected Kolmogorov R^(5/3) scaling for turbulent polarization:
# Expected output:
# Stokes azimuth slope: 1.67 ยฑ 0.05
# Vector azimuth slope: 1.65 ยฑ 0.04Analyze how magnetic field turbulence affects polarization:
python faradays_angles_stats/faraday_screen_demo.pyThis toolkit has been used for research in:
- Interstellar Turbulence: Characterizing magnetohydrodynamic turbulence in the ISM
- Pulsar Studies: Understanding scintillation and Faraday rotation effects
- Galaxy Formation: Modeling magnetic field evolution in cosmic structure
- Radio Astronomy: Interpreting polarization observations from SKA/LOFAR
| Function | Description | Key Parameters |
|---|---|---|
generate_velocity_cube() |
Generate 3D turbulent velocity field | N, solenoidal, seed |
structure_function_2d() |
Compute angular structure function | field, Rs, max_pairs |
angle_stokes() |
Calculate Stokes polarization angle | u (velocity field) |
sample_pairs_3d() |
Sample vector angle differences | u, R, max_pairs |
The toolkit implements several key astrophysical relations:
Synchrotron Polarization:
Angular Structure Function:
Kolmogorov Spectrum:
- Python 3.8+
- NumPy (โฅ1.19)
- SciPy (โฅ1.6)
- Matplotlib (โฅ3.3)
- h5py (โฅ3.0)
- numba (โฅ0.54) - for performance
- Fortran compiler (for I/O routines)
We welcome contributions! See our Contributing Guide for details.
git clone https://github.com/astrosander/AstroTurbulence.git
cd AstroTurbulence
pip install -e .
pre-commit installThis project is licensed under the MIT License - see the LICENSE file for details.
If you use this toolkit in your research, please cite:
@software{astroturbulence2024,
title={AstroTurbulence: Advanced Toolkit for Astrophysical Turbulence Analysis},
author={Aliaksandr Melnichenka},
year={2024},
url={https://github.com/astrosander/AstroTurbulence}
}- Built for the astrophysics and plasma physics communities
- Inspired by modern magnetohydrodynamic turbulence research
- Optimized for high-performance scientific computing
โญ Star this repository if you find it useful for your astrophysics research!
๐ Found a bug? Open an issue
๐ก Have a feature request? Start a discussion