this repo accompanies a series of blog posts on my personal website https://www.pramit.gg/
- RCS Calculation: Physical optics-based RCS computation for arbitrary geometries
- 3D Optimization: Advanced 3D topology optimization with GPU acceleration
- JAX Integration: GPU-accelerated computations with automatic differentiation
- Topology Optimization: Gradient-based and evolutionary optimization algorithms
- Visualization: Real-time 3D geometry and RCS pattern visualization
- F-117 Inspired: Initial geometries and constraints based on stealth aircraft design principles
# Clone the repository
cd nighthawk_rcs
# Run automated setup with JAX GPU support
./scripts/setup.sh# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install JAX with GPU support
pip install jax[cuda12] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
# Install other dependencies
pip install -r requirements.txt# Test overall installation
python tests/test_installation.pyfrom src.rcs_calc_3d import RCS3DCalculator
from src.optimization_3d import TopologyOptimizer3D
from src.geometry_3d import Geometry3D
import trimesh
# Create initial geometry
mesh = trimesh.creation.box(extents=[2, 2, 1])
geometry = Geometry3D(mesh)
# Initialize RCS calculator with GPU acceleration
rcs_calc = RCS3DCalculator(frequency=10e9, use_gpu=True)
# Initialize optimizer
optimizer = TopologyOptimizer3D(rcs_calc)
# Run optimization
optimized_geometry = optimizer.gradient_descent_3d(
geometry, n_iterations=50, method='adam'
)
# Visualize results
optimizer.visualize_results()# 3D optimization demo
python examples/rcs_3d_optimization_demo.py
# Interactive Jupyter notebook
jupyter notebook examples/jax_demo.ipynb
# Interactive RCS exploration
jupyter notebook examples/interactive_rcs_exploration.ipynbnighthawk_rcs/
├── src/ # Core source code
│ ├── rcs_calc_3d.py # 3D RCS calculation module
│ ├── geometry_3d.py # 3D geometry representation
│ ├── optimization_3d.py # 3D optimization algorithms
│ └── visualization_3d.py # 3D visualization tools
├── examples/ # Example scripts and notebooks
│ ├── rcs_3d_optimization_demo.py
│ ├── jax_demo.ipynb
│ └── interactive_rcs_exploration.ipynb
├── tests/ # Unit tests
│ ├── test_installation.py
│ └── test_optimizations.py
├── docs/ # Comprehensive documentation
│ ├── PROJECT_SUMMARY.md
│ ├── OPTIMIZATION_SUMMARY.md
│ └── TODO.md
├── scripts/ # Setup and utility scripts
│ ├── setup.sh
│ └── install_jax.sh
├── visualizations/ # Output visualizations
│ ├── images/ # PNG/JPG visualization files
│ ├── html/ # Interactive HTML plots
│ └── models/ # 3D model files (STL, etc.)
├── config.yaml # Configuration file
└── requirements.txt # Python dependencies
The RCS calculation uses a simplified physical optics (PO) approximation, which is suitable for electrically large objects and provides reasonable accuracy for preliminary design studies.
MIT License - See LICENSE file for details