"""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/'