Enhanced Drift Modeling System for Search and Rescue Operations
CESAROPS is a free, open-source drift modeling tool designed specifically for Search and Rescue (SAR) volunteer organizations. It provides robust, offline-capable drift predictions using oceanographic data and optional machine learning enhancement.
- Multi-source ocean current data - LMHOFS, RTOFS, HYCOM support
- Robust data fetching - Retry logic, fallback to cached data
- Flexible particle seeding - Circular, line, and custom patterns
- Forward and backward drift modeling - Track objects forward or backtrack from found location
- Offline operation - Cached data and local storage for field use
- Export formats - CSV, KML, and comprehensive reports
- Machine Learning enhancement - Optional ML corrections to physics models
- Performance tracking - Model accuracy metrics and validation
- Multi-threading - Non-blocking GUI with background processing
- Comprehensive logging - Full activity logging for analysis
- Portable design - Self-contained with minimal dependencies
- Ocean/lake surface currents
- Windage effects (surface wind drag)
- Stokes drift (wave-induced transport)
- Configurable object properties
- Download and extract CESAROPS files to a folder
- Run the installer: Double-click
install_cesarops.bat - Follow prompts to install optional components
- Launch: Double-click
run_cesarops.bat
# Clone or download the project
git clone <repository-url>
cd cesarops
# Create virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
# or
venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Run application
python cesarops_enhanced.py- Python 3.8 or later
- 4 GB RAM
- 1 GB disk space
- Internet connection for data fetching
- Python 3.10+
- 8 GB RAM (for large simulations)
- SSD storage (faster data processing)
- Reliable internet (for real-time data)
- scikit-learn + joblib - Machine learning enhancement
- simplekml - KML export support
- matplotlib - Enhanced plotting capabilities
- Select data source (LMHOFS for Great Lakes, RTOFS/HYCOM for oceans)
- Set time range (UTC timestamps)
- Define bounding box (West, East, South, North coordinates)
- Fetch data or use cached data for offline operation
- Circular seeding: Specify center point and radius for area searches
- Line seeding: Create search patterns along transects
- Configure timing: Start/end times and particle release rate
- Set parameters: Time step, duration, windage, Stokes drift
- Enable ML (if available) for enhanced predictions
- Run forward drift or backtrack simulation
- Monitor progress in real-time
- View simulation summary and statistics
- Export to CSV for GIS analysis
- Export to KML for Google Earth visualization
- Generate reports for SAR documentation
- Configure data sources and endpoints
- Adjust performance settings
- Save configuration for team standardization
CESAROPS includes optional ML enhancement that learns from historical drift patterns to improve predictions:
- Run multiple simulations to build training data
- Use the "Train ML Model" button
- Model automatically validates performance
- Enhanced predictions used in future simulations
- Improved accuracy for local conditions
- Learns systematic biases in physics models
- Adapts to regional patterns over time
- Quantified performance metrics
- LMHOFS - Lake Michigan Hydrodynamic and Forecast System
- RTOFS - Real-Time Ocean Forecast System (NOAA)
- HYCOM - Hybrid Coordinate Ocean Model
- Automatic failover between data sources
- Quality checking and outlier detection
- Caching system for offline capability
- Data validation and error handling
cesarops/
โโโ cesarops_enhanced.py # Main application
โโโ config.yaml # Configuration file
โโโ requirements.txt # Python dependencies
โโโ install_cesarops.bat # Windows installer
โโโ run_cesarops.bat # Launch script
โโโ data/ # Cached ocean data
โโโ outputs/ # Simulation results
โโโ models/ # ML model files
โโโ logs/ # Application logs
โโโ README.md # This file
Edit config.yaml to customize:
erddap:
lmhofs: "https://coastwatch.glerl.noaa.gov/erddap"
rtofs: "https://coastwatch.pfeg.noaa.gov/erddap"
hycom: "https://tds.hycom.org/erddap"
drift_defaults:
dt_minutes: 10 # Time step (minutes)
duration_hours: 24 # Simulation duration
windage: 0.03 # Windage factor (0-0.1 typical)
stokes: 0.01 # Stokes drift factor
seeding:
default_radius_nm: 2.0 # Default search radius (nautical miles)
default_rate: 60 # Seeds per hour- Person overboard - Model drift from last known position
- Missing vessel - Backtrack from debris field
- Aviation SAR - Ocean survival scenarios
- Mass rescue - Multiple casualty drift patterns
- SAR exercise planning - Realistic scenarios
- Resource positioning - Optimize asset placement
- Training scenarios - Educational drift modeling
- Risk assessment - Evaluate drift hazards
- Ocean dynamics study - Validate circulation models
- Pollution tracking - Spill trajectory analysis
- Marine biology - Larval transport studies
- Climate research - Long-term drift patterns
"No data available"
- Check internet connection
- Verify time range (not too far in past/future)
- Try different data source
- Check bounding box coordinates
GUI freezing
- Large simulations run in background - wait for completion
- Check system memory usage
- Reduce simulation duration or particle count
ML features not working
- Install optional ML dependencies:
pip install scikit-learn joblib - Generate training data by running multiple simulations
- Check logs for ML-specific errors
Export failures
- Ensure output directory exists and is writable
- For KML export, install:
pip install simplekml - Check disk space availability
For large simulations:
- Increase time step (reduce computational load)
- Reduce particle count
- Limit simulation duration
- Use cached data when possible
For better accuracy:
- Decrease time step (10 minutes or less)
- Use recent, high-resolution data
- Enable ML enhancement
- Validate with known drift cases
CESAROPS implements Lagrangian particle tracking with the following physics:
dx/dt = u_current + u_wind * windage + u_stokes
dy/dt = v_current + v_wind * windage + v_stokes
Where:
u,v_current- Ocean/lake surface currentswindage- Wind drag coefficient (typically 0.01-0.05)u,v_stokes- Stokes drift from surface waves
- Geographic coordinates (latitude, longitude)
- Earth radius: 6,371,000 m
- Projection effects handled for accurate distances
- Forward Euler scheme for particle advancement
- Adaptive time stepping for numerical stability
- Configurable time steps (1-60 minutes typical)
CESAROPS is open source and welcomes contributions:
- Fork the repository
- Create virtual environment
- Install development dependencies
- Make changes and test thoroughly
- Submit pull request
- Additional data sources (new ERDDAP endpoints)
- Enhanced ML models (neural networks, ensemble methods)
- Visualization improvements (real-time plotting)
- Mobile interfaces (tablet-friendly GUI)
- Performance optimization (parallel processing)
This project is released under the MIT License, making it free for all SAR organizations and humanitarian use.
- Training support available for teams
- Customization for local conditions
- Integration with existing SAR systems
- Check this README and logs first
- Create detailed issue reports
- Include system information and error messages
- Provide sample data when possible
- NOAA/GLERL - Great Lakes ocean model data
- NOAA/NWS - Ocean forecast systems
- ERDDAP - Data server technology
- SAR communities - Requirements and validation
- Open source contributors - Code and testing
- Real-time weather integration (wind data)
- Ensemble forecasting (uncertainty quantification)
- Mobile app version (field operations)
- AIS integration (vessel tracking)
- Web-based interface (multi-user access)
- AI-powered SAR assistant - Automated decision support
- Global coverage - Worldwide ocean/lake support
- Sensor integration - Real-time drifter data
- Interoperability - Standards-based data exchange
CESAROPS - Saving Lives Through Better Science
For emergency SAR operations, always follow established protocols and use CESAROPS predictions as one tool among many in your decision-making process.