easywave2¶
EasyWave
Description¶
EasyWave simulates tsunami generation and propagation very rapidly and on the fly during runtime of TOAST. It supports computation on GPU resulting in a vast speed-up compared to CPU. EasyWave is thus very well suited for the application in TOAST.
EasyWave is not part of TOAST (rights owner is Andrey Babeyko, GFZ German Research Center for Geosciences, Potsdam, babeyko@gfz-potsdam.de), but TOAST is delivered including EasyWave executables and a plugin acting as interface between TOAST and EasyWave (for simplicity also called EasyWave or easywave2).
EasyWave plugin¶
TOAST uses EasyWave through a plugin which takes care of the generation of required input files for EasyWave, executes it with appropriate options and reads in the computed output.
Several parameters for EasyWave can be configured using: scconfig
. These parameters are usually stored in ~/seiscomp/etc/easywave2.cfg and included in the TOAST database for usage after executing: .A description of the parameters can be found at the end of this section under Configuration. See also: Forecast zones configuration.
Hint
By right clicking on a simulation in the Database panel and selecting Open in file manager, you can inspect input- output- and log-files of EasyWave.
EasyWave executable internal technical description¶
Note
The generation of input files for EasyWave and the import of the computed results is handled by the TOAST EasyWave plugin, nevertheless we here give a description on how EasyWave is structured and works internally. Execute ~/seiscomp/bin/easywave2 to get additional information about EasyWave options.
Tsunami source modeling¶
There are two possibilities to set-up tsunami generation in EasyWave:
Providing earthquake fault(s) parameters (as is done by TOAST)
Providing the initial condition directly (sea floor deformation)
Both source options assume instant sea-surface displacement. Time-dependent forcing is presently not implemented.
Co-seismic displacement is modeled according to the classical Okada model (1985) for the uniform-slip rectangular rupture in a homogeneous half space. Any number of faults can be given in an input file which allows the user to simulate ruptures with complicated non-uniform slip distributions. There is no fixed set of input fault parameters in EasyWave. General rule - a fault should be sufficiently defined. For example, one can literally specify the whole set of Okada’s parameters: location, depth, length, width, slip, strike-, dip- and rake-angle, or give fault location, orientation and earthquake moment magnitude. In the latter case, scaling relations (usually, Wells and Coppersmith, 1994) are implied to estimate rupture geometry and amount of slip.
Alternatively, the initial condition can be directly given on the program input. In this case input 2D-map should be stored in text- or binary- Golden Software GRD-format.
Wave propagation¶
EasyWave follows the computational algorithm presented in Kowalik and Whitmore (1991). Two-dimensional shallow water equations are solved on a staggered finite-difference grid in spherical coordinates implying explicit time-stepping. In EasyWave only linear approximation is considered, i.e., advection, bottom-friction and Coriolis terms are disabled (see General Description and Motivation above). The algorithm does not calculate coastal inundations and detailed run-ups directly. Instead, EasyWave brings the tsunami wave until the validity limit of the linear shallow water model (usually, 20-50 meter water depth) and then estimates run-ups with empirical relations (e.g., Chesley and Ward, 2006).
Validation¶
EasyWave has been compared to TUNAMI-N2 (Imamura, 1996), a widely used tsunami simulation software for a number of scenarios around the Indian Ocean. Leading, non-reflected waves show perfect coincidence till the very shallow (<10m) depths except for the cases when the leading wave travels long distances along the coast thus accumulating second-order shallow-water effects like bottom friction. In this case EasyWave showed somewhat earlier and lower-amplitude first arrival (the differences being still inside the tolerance of the early warning precision).
Configuration files¶
An example for the main configuration file of EasyWave is tsunami.cfg and is listed below:
; TSUNAMI configuration file
; bathymetry file
[bathymetry]=
/home/data/bathymetry/C_e10_25e70s_120e33n.grd
; time step (for this bathymetry) [sec]
[time_step]= 5
; minimal calculatuional depth [m]
[min_depth]= 20
; Initial uplift: smoothing radius [grid-nodes]
[ssh0_smooth]= 0
; Initial uplift: relative threshold [0-1]
[ssh0_rel_threshold]= 0.0
; Initial uplift: absolute threshold [m]
[ssh0_abs_threshold]= 0.1
; Ssh clip threshold [m]: calculate only in region where ssh > threshold
plus clip-rand
[ssh_clip_threshold]= 1.e-4
; Threshold for 2D-arrival time map [m]
[ssh_arrival_threshold]= 0.0000001
; Ssh clip rand [grid-nodes]: to give more space for wave propagation
beyond actual wave front
[ssh_clip_rand]= 3
; progress output after each ... minutes
[dt_out_progress]= 1
; 2D field output after each ... minutes
[dt_out_2D]= 1
; Threshold for the ssh 2D-output transparency mask [m]
[ssh_transparency_threshold]= 0.
; Always overwrite sshmax 2D output [1/0]
[overwrite_sshmax]= 1
; Points-Of-Interest (POIs) file
[POIs_file]= poi.dat
; POIs output after each ... seconds
[dt_out_POIs]= 15
; POIs max shadow dist (if POI is on land) [km]
[max_shadow_dist_POIs]= 100
[min_shadow_depth_POIs]= 0
Note
The configuration file tsunami.cfg is not used by the TOAST EasyWave plugin, as the parameters are passed as command line options. We list it nevertheless for reference. The configuration file when using EasyWave with TOAST is ~/seiscomp/etc/easywave2.cfg.
In addition to tsunami.cfg, EasyWave reads a POI configuration file named poi.dat and a GNSS file named gnss.dat. The latter one is used to compute displacements at GNSS stations. The format looks like this:
BENO 115.217 -8.7666 1
CHRS 105.669 -10.4294 1
CHTT 91.825 22.3333 1
CILA 109 -7.75 1
CILI 109 -7.75 1
Output¶
EasyWave produces both 1D- and 2D-outputs. Wave time series can be stored for any given location in a simple text-table format. Optional run-up estimates are provided as well. Additionally, 2D outputs of the wave propagation are stored at regular time intervals as binary GRD-files (Golden Software grid file format). This 2D-output is compact since only part of the grid corresponding to the actual propagation area is written. Other 2D-outputs (also in binary GRD-format) contain maximum wave height and tsunami arrival times.
The output directory is usually located at: ~/.seiscomp/toast/easywave2/output. A typical simulation directory looks like this:
`-- 83
`-- 004006S
`-- 100102E
`-- 83004006S100102E6543c67e7e4a0474c85e96bf11829851ee2ba6
|-- fault.inp
|-- gnss.dat
|-- gnss.dat.xyz
|-- poi.dat
|-- poi.dat.lst
|-- protocol.txt
|-- source.inp
|-- tsunami.cfg
|-- wave.2D.00000.ssh
|-- wave.2D.00120.ssh
|-- wave.2D.00240.ssh
|-- wave.2D.00360.ssh
|-- wave.2D.00480.ssh
|-- wave.2D.00600.ssh
|-- wave.2D.00720.ssh
|-- wave.2D.00840.ssh
|-- wave.2D.00960.ssh
|-- wave.2D.01080.ssh
|-- wave.2D.01200.ssh
|-- wave.2D.01320.ssh
|-- wave.2D.01440.ssh
|-- wave.2D.01560.ssh
|-- wave.2D.01680.ssh
|-- wave.2D.01800.ssh
|-- wave.2D.idx
|-- wave.2D.sshmax
|-- wave.2D.time
|-- wave.patches
|-- wave.poi.ssh
`-- wave.poi.sshmax
The first level corresponds to magnitude, the second to latitude, the third to longitude and then follows the unique simulation ID. The different file types contain the following information:
- *.2D.*.ssh
are the sea level surface height grid files
- wave.2D.sshmax
is the maximum sea level surface height grid file
- wave.2D.time
is the arrival time grid file
- wave.patches
contain the patch information
- wave.poi.ssh
sea level surface height information
- wave.poi.sshmax
contains POI ID, maximum sea level surface height and run-up
- wave.2D.idx
contains output grid list
Module Configuration¶
etc/defaults/global.cfg
etc/defaults/easywave2.cfg
etc/global.cfg
etc/easywave2.cfg
~/.seiscomp/global.cfg
~/.seiscomp/easywave2.cfg
easywave2 inherits global options.
Note
Modules/plugins may require a license file. The default path to license
files is @DATADIR@/licenses/
which can be overridden by global
configuration of the parameter gempa.licensePath
. Example:
gempa.licensePath = @CONFIGDIR@/licenses
- easywave2.arrivalTimesStep¶
Default:
15
Unit: min
Type: int
Output interval of the arrival times grids in minutes.
- easywave2.binary¶
Type: string
EasyWave binary to execute.
- easywave2.contourThreshold¶
Default:
0.01
Unit: m
Type: double
Contour lines with a maximum ssh value of this value are ignored.
- easywave2.data¶
Default:
@CONFIGDIR@/toast/easywave2/data
Type: string
Directory for input bathymetry grid files. All files found directly in this folder and ending on ‘.grd’ are interpreted as bathymetry files. The first matching grid (automatic calculation) or the file selected (interactive simulation) is passed to EasyWave.
- easywave2.enableLogging¶
Default:
true
Type: boolean
Log console output of EasyWave process
- easywave2.forecastPoints¶
Type: list:string
Registration of forecast points.
- easywave2.gpu¶
Default:
false
Type: boolean
Use GPU for processing if supported
- easywave2.maxProcesses¶
Default:
1
Type: int
Maximum number of simultaneous processes started by this plugin.
- easywave2.maxTime¶
Default:
60
Unit: min
Type: int
Maximum time span for which the tsunami propagation is calculated.
- easywave2.output¶
Default:
@CONFIGDIR@/toast/easywave2/output
Type: string
Base directory of EasyWave outputs. The results of a particular simulation are expected in a subfolder named after the eventID specified in EasyWave input file.
- easywave2.profiles¶
Type: list:string
Registration of simulation profiles.
- easywave2.ruptureRatio¶
Default:
0.0
Type: double
Rupture length to width ratio
- easywave2.shadowPOIMinDepth¶
Default:
10
Unit: m
Type: int
To simulate the tsunami wave for a POI the next water grid point is used. Only deep water points should be used. The minimum water depth can be defined here.
- easywave2.shadowPOIMaxDist¶
Default:
100
Unit: km
Type: int
Distance in which the next water grid point is searched in case the POI is on land.
- easywave2.sshStep¶
Default:
15
Unit: min
Type: int
Output interval of the ssh grids in minutes.
- easywave2.sshTracesStep¶
Default:
15
Unit: s
Type: int
Output interval of the traces in seconds.
- easywave2.T1Threshold¶
Default:
0.01
Type: double
Threshold for the minimum detectable amplitude. See also T1Absolute.
- easywave2.T1Absolute¶
Default:
false
Type: boolean
If false, only exceedance of positive amplitude counts as detection. If true, also falling below negative amplitude counts. See also T1Threshold.
Note
easywave2.forecastPoints.* Define forecast point profiles. Register the profiles at ‘forecastPoints’. Note that forecast zones have to be defined and registered in TOAST.
Note
easywave2.forecastPoints.$name.*
$name is a placeholder for the name to be used and needs to be added to forecastPoints
to become active.
forecastPoints = a,b
easywave2.forecastPoints.a.value1 = ...
easywave2.forecastPoints.b.value1 = ...
# c is not active because it has not been added
# to the list of forecastPoints
easywave2.forecastPoints.c.value1 = ...
- easywave2.forecastPoints.$name.filename¶
Type: string
Absolute filename of the forecast point file in dBase format
Note
easywave2.patches.* Configure settings for the automatic patches (rupture segments) generation.
- easywave2.patches.dipAlign¶
Default:
0.5
Unit: 0, 1
Type: list:double
List of alignments in dip direction in range [0, 1].
0.5: at hypocenter
< 0.5: updip
> 0.5: downdip
0,0.5,1 creates simulations centered at the upper and lower extend and at the hypocenter depth of the original rupture.
- easywave2.patches.length¶
Default:
100
Unit: km
Type: int
Initial patch length
- easywave2.patches.strikeAlign¶
Default:
0.5
Unit: 0, 1
Type: list:double
List of alignments in strike direction in range [0, 1].
0.5: at hypocenter
> 0.5: with strike
< 0.5: against strike
0,0.5,1 creates simulations centered at the far ends and over the hypocenter of the original rupture.
Note
easywave2.profiles.* Define simulation profiles which are available in TOAST at Menu -> Simulation. These profiles can also be used for the automatic creation of simulations. Register the profiles at ‘profiles’.
Note
easywave2.profiles.$name.*
$name is a placeholder for the name to be used and needs to be added to profiles
to become active.
profiles = a,b
easywave2.profiles.a.value1 = ...
easywave2.profiles.b.value1 = ...
# c is not active because it has not been added
# to the list of profiles
easywave2.profiles.c.value1 = ...
- easywave2.profiles.$name.alias¶
Type: string
Display name of the profile. If not set the profile name is used.
- easywave2.profiles.$name.duration¶
Unit: min
Type: int
Simulation duration.
- easywave2.profiles.$name.automatic¶
Default:
false
Type: boolean
Indicates if this simulation profile should be started automatically.