Spaces:
Sleeping
Sleeping
| """Physical constants for TSU-WAVE""" | |
| import numpy as np | |
| # Physical constants | |
| G = 9.81 # gravity [m/s²] | |
| RHO = 1025.0 # seawater density [kg/m³] | |
| PI = np.pi | |
| # Earth constants | |
| EARTH_RADIUS = 6371e3 # Earth radius [m] | |
| EARTH_ROTATION_RATE = 7.292115e-5 # Earth rotation rate [rad/s] | |
| # Time conversions | |
| SECONDS_PER_MINUTE = 60 | |
| MINUTES_PER_HOUR = 60 | |
| HOURS_PER_DAY = 24 | |
| SECONDS_PER_HOUR = SECONDS_PER_MINUTE * MINUTES_PER_HOUR | |
| SECONDS_PER_DAY = SECONDS_PER_HOUR * HOURS_PER_DAY | |
| # Tsunami frequency band (0.2 - 5 mHz) | |
| TSUNAMI_FREQ_MIN = 0.2e-3 # Hz | |
| TSUNAMI_FREQ_MAX = 5.0e-3 # Hz | |
| TSUNAMI_PERIOD_MIN = 1 / TSUNAMI_FREQ_MAX / 60 # minutes | |
| TSUNAMI_PERIOD_MAX = 1 / TSUNAMI_FREQ_MIN / 60 # minutes | |
| # DART buoy sampling rates | |
| DART_SAMPLING_RATE = 1.0 / 15 # Hz (15-second sampling) | |
| DART_TRIGGERED_RATE = 1.0 # Hz (1-second sampling when triggered) | |
| # Bottom friction parameters | |
| MANNING_N_OCEAN = 0.010 # open ocean floor | |
| MANNING_N_SHELF = 0.020 # continental shelf | |
| MANNING_N_REEF = 0.040 # coral reef | |
| MANNING_N_URBAN = 0.080 # urban terrain | |
| # Nonlinear friction exponent (field-validated) | |
| BETA_FRICTION = 0.73 | |
| BETA_FRICTION_ERROR = 0.04 | |
| # CHI weights (from 23-event validation) | |
| CHI_WEIGHTS = { | |
| 'wcc': 0.12, | |
| 'kpr': 0.19, | |
| 'hfsi': 0.24, | |
| 'becf': 0.21, | |
| 'sdb': 0.08, | |
| 'sbsp': 0.11, | |
| 'smvi': 0.05 | |
| } | |
| # Parameter thresholds | |
| THRESHOLDS = { | |
| 'wcc': {'safe': 1.35, 'alert': 1.50, 'critical': 1.58}, | |
| 'kpr': {'safe': 1.2, 'alert': 1.6, 'critical': 2.0}, | |
| 'hfsi': {'safe': 0.8, 'alert': 0.6, 'critical': 0.4}, | |
| 'becf': {'safe': 2.0, 'alert': 4.0, 'critical': 6.0}, | |
| 'sdb': {'safe': 3.5, 'alert': 2.5, 'critical': 1.0}, | |
| 'sbsp': {'safe': 0.3, 'alert': 0.7, 'critical': 1.2}, | |
| 'smvi': {'safe': 0.2, 'alert': 0.4, 'critical': 0.6} | |
| } | |
| # Alert levels | |
| ALERT_LEVELS = { | |
| 'LOW': 0.30, | |
| 'MODERATE': 0.60, | |
| 'HIGH': 0.80, | |
| 'SEVERE': 1.00 | |
| } | |
| # Validation metrics (from research paper) | |
| VALIDATION_METRICS = { | |
| 'runup_accuracy': 91.3, # percent | |
| 'threat_detection': 96.4, # percent | |
| 'false_alert_rate': 3.1, # percent | |
| 'mean_lead_time': 67, # minutes | |
| 'rmse': 11.7, # percent | |
| 'events_validated': 23, | |
| 'propagation_min': 180, # km | |
| 'propagation_max': 14200, # km | |
| 'runup_min': 0.3, # m | |
| 'runup_max': 40.5 # m | |
| } | |
| # Coastal zones with pre-computed BECF | |
| BECF_ZONES = { | |
| 'pacific': { | |
| 'hilo_bay_hawaii': 4.8, | |
| 'miyako_japan': 7.3, | |
| 'crescent_city_california': 3.7, | |
| 'monai_valley_japan': 12.3, | |
| 'onagawa_japan': 5.8, | |
| 'khao_lak_thailand': 4.1, | |
| 'guam_tumon_bay': 3.9, | |
| 'pago_pago_samoa': 4.6, | |
| 'lyttelton_nz': 3.2, | |
| 'cook_inlet_alaska': 5.1 | |
| }, | |
| 'indian': { | |
| 'banda_aceh_indonesia': 7.3, | |
| 'galle_sri_lanka': 3.1, | |
| 'lamu_kenya': 2.8 | |
| }, | |
| 'atlantic': { | |
| 'corinth_greece': 3.3, | |
| 'messina_italy': 4.7, | |
| 'cadiz_spain': 2.9 | |
| } | |
| } | |
| # DART station locations (simplified) | |
| DART_STATIONS = { | |
| '21401': {'lat': 38.5, 'lon': 148.5, 'depth': 6068}, | |
| '21413': {'lat': 30.5, 'lon': 152.5, 'depth': 5800}, | |
| '21415': {'lat': 45.5, 'lon': 175.5, 'depth': 5400}, | |
| '23401': {'lat': 0.5, 'lon': 95.5, 'depth': 3820}, | |
| '23402': {'lat': -10.5, 'lon': 105.5, 'depth': 4100}, | |
| '32401': {'lat': -20.5, 'lon': -80.5, 'depth': 4500} | |
| } | |
| # File paths | |
| DEFAULT_CONFIG_PATH = 'config/config.yml' | |
| DEFAULT_LOG_PATH = 'logs/tsu-wave.log' | |
| DEFAULT_DATA_PATH = 'data/' | |
| DEFAULT_BECF_PATH = 'data/becf_precomputed/' | |
| DEFAULT_BATHYMETRY_PATH = 'data/bathymetry/' | |