tsunami / src /tsuwave /utils /constants.py
Gitdeeper4's picture
رفع جميع ملفات TSU-WAVE مع YAML
12834b7
"""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/'