.. _toast_installation: Installation ============ In this section we list requirements and instructions for the installation of |appname|. For the installation and configuration of |scname| consult its documentation. Usually |appname| is installed and set up directly by |gempa| GmbH. .. _note-gsm: .. note:: :program:`gsm` (`gempa `_ software manager) is a command line tool for handling software packages. Execute `./gsm -h` to list options and consult the file `README` to get further information. After initial setup of gsm with `./gsm setup`, the file `gsm.conf` contains the configured parameters. Re-run setup or edit `gsm.conf` with a text editor to make modifications. By default, bathymetry, forecast zones, source regions, map tiles etc. are installed at |gsmdata|. Make sure you have write permission in the specified directories. .. _toast_install_toast: Install |appname| ----------------- #. Login as sysop (this is the user assumed throughout these instructions) #. Download :ref:`gsm ` and extract it: .. code-block:: sh sysop@host:~$ mkdir install sysop@host:~$ cd install sysop@host:~$ wget https://data.gempa.de/gsm/gempa-gsm.tar.gz sysop@host:~$ tar -xf gempa-gsm.tar.gz sysop@host:~$ cd gsm sysop@host:~$ chmod u+x gsm #. The initial gsm configuration is performed through the command *setup* which will auto-detect your operating system and ask for download credentials: .. code-block:: sh sysop@host:~$ cd $HOME/install/gsm sysop@host:~$ ./gsm setup #. Update the package list and install :ref:`TOAST `, :ref:`EasyWave ` and other required or desired packages: .. code-block:: sh sysop@host:~$ cd $HOME/install/gsm sysop@host:~$ ./gsm update sysop@host:~$ ./gsm install toast easywave2 licenses seiscomp recordstream .. _toast_dependencies: Install dependencies -------------------- In order for |appname| to work, some library dependencies have to be met. #. Login as root #. Install dependencies .. code-block:: sh root@host:~# /home/sysop/seiscomp/bin/seiscomp install-deps base gui mysql-server toast #. If you want to generate mp4 videos in the TOAST bulletins, you need to install *MEncoder*. For Ubuntu and Debian distributions, *MEncoder* is installed with the TOAST dependencies, but for RHEL it has to be installed separately: .. code-block:: sh root@host:~# /home/sysop/seiscomp/bin/seiscomp install-deps toast-mencoder .. _toast_cuda: Enable GPU-based computation ---------------------------- .. note:: In contrast to previous versions of |appname|, in the current version the CUDA toolkit does not have to be installed, as the necessary libraries are included in |ewname|. .. _toast_gpu: |ewname| can use either the CPU or the GPU for simulations, but on the latter it runs significantly faster. In order to take advantage of GPU computation, an NVIDIA graphics card supporting CUDA is required and the corresponding drivers have to be installed. NVIDIA driver ~~~~~~~~~~~~~ In the following we list the procedure to install the NVIDIA drivers on RHEL 7 flavor distributions. #. Login as root #. Make sure you have the correct version of ELRepo installed: .. code-block:: sh root@host:~# yum remove nvidia-detect kmod-nvidia elrepo-release root@host:~# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org root@host:~# yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm #. Install NVIDIA drivers: .. code-block:: sh root@host:~# yum install kmod-nvidia nvidia-x11-drv root@host:~# reboot .. _toast_dir_struct: Directory/File structure ------------------------ |appname| is usually installed within a |scname| environment. The file/directory structure is: .. csv-table:: :widths: 2 3 :header: Path, Description "seiscomp", "|scname| root directory, referred to as $SEISCOMP_ROOT. Typically installed in $HOME or /opt/." "$SEISCOMP_ROOT/lib", "Path to |scname| and |appname| libraries" "$SEISCOMP_ROOT/bin", "Path to the |appname| executable" "$SEISCOMP_ROOT/share/|appbin|/templates", "Path to the default templates directory which are used for :ref:`toast_bulletins`" "$SEISCOMP_ROOT/etc", "Configured |appname| parameters in |appbin|.cfg" "~/.seiscomp", "User specific settings of |scname| and |appname|" "~/.seiscomp/|appbin|", "User specific settings of |appname|" "~/.seiscomp/|appbin|/[plugins]", "Root directory for the |appname| plugins" .. _toast_setup: Setup ===== Environment variables --------------------- |scname| and |gempa| modules require a set of system environment variables. Add them to *~/bashrc*: .. code-block:: sh sysop@host:~$ ~/seiscomp/bin/seiscomp print env >> ~/.bashrc sysop@host:~$ source ~/.bashrc Secure database installation ---------------------------- By default, MariaDB is used as a replacement for MySQL. After installation it has to be started and secured: .. code-block:: sh sysop@host:~$ su root@host:~# systemctl enable mariadb root@host:~# mysql_secure_installation Define a root password for the database and answer all other questions with *Y*. .. _toast_wizard: Setup wizard ------------ For a basic configuration of |scname| and |appname|, including the respective databases, you can use: :program:`scconfig` :menuselection:`--> File --> Wizard`. If you prefer configuration via command line, type: .. code-block:: sh sysop@host:~$ seiscomp setup Enter names for :confval:`agencyID`, :confval:`datacenterID` and :confval:`organization`. Default values for the other parameters should be fine in most cases. .. _toast_module_configuration: Module configuration -------------------- Use :program:`scconfig` :menuselection:`--> Modules` to configure |appname|. .. note:: Global parameters can be set either at * :menuselection:`System --> global` to set them for all |scname| :term:`modules ` or at: * :menuselection:`gempa --> toast --> global` to set them only for |appname|. |appname| specific parameters are set at: * :menuselection:`gempa --> toast --> toast`. Here we list some possible global parameter settings: :: plugins = ${plugins},rsas,simeasywave2 # rsas is required if using CAPS recordstream = caps://caps.acqui.de:18000 # set according to your waveform data source database = mysql://localhost/seiscomp # where TOAST loads inventory and bindings from connection.server = proc # configure according to your SeisComP messaging system connection.username = toast And here are some |appname| parameter settings: :: tsunami.database = mysql://sysop:sysop@localhost/toast # database type and location tsunami.database.loadLastDays = 1 # load n last days upon startup .. note:: If |appname| connects to a |scname| messaging system using :confval:`connection.server`, it will by default load inventory and database from the database configured therein, which is usually set up for seismic stations. This is why above, :confval:`database` specifies the local |scname| database for loading the tide gauge :ref:`toast_inventory_bindings`. That in turn has not to be confounded with :confval:`tsunami.database` which is the database where |appname| stores incident and tsunami related data. .. _toast_inventory_bindings: Inventory and Bindings ---------------------- Via :ref:`gsm ` you can install a package with preconfigured tide gauge inventory and :term:`bindings ` for the `Global sea monitoring network of IOC `_. #. Login as sysop #. Install inventory and bindings: .. code-block:: sh sysop@host:~$ cd $HOME/install/gsm sysop@host:~$ ./gsm install tidegauges-ioc #. Update configuration and write to database: .. code-block:: sh sysop@host:~$ seiscomp update-config For more information on how to configure :term:`bindings `, consult the |scname| `documentation `_. .. hint:: To use inventory and bindings from files instead from the database, start |appname| with: .. code-block:: sh sysop@host:~$ toast --inventory-db my_inv.xml --config-db my_conf.xml .. _toast_fault_geometry_configuration: Fault geometry configuration ---------------------------- If a tsunami on-the-fly-simulation using |ewname| is initiated and no focal mechanism (moment tensor) is available, then the strike-, dip-, and rake-angles and the depth for the automatic rupture patch generation are looked up in a file containing the information about subduction geometry and local faults (see: :ref:`fig-sim_flowchart`). The parameter :confval:`patches.maxFaultDist` defines the maximum horizontal distance allowed between epicenter and the closest point in the faults for automatic patch generation and consequently for an automatic simulation to be started. Default value is 1 degree. .. note:: If you define your own faults file, make sure that the largest distance between neighboring fault lines belonging to the same geologic feature is not larger than twice the value of :confval:`patches.maxFaultDist`, otherwise there might be a region between lines where no simulations are generated. 1 degree is fine for the default file. Location ~~~~~~~~ The file provided by |gempa| containing the fault definitions is: :file:`$SEISCOMP_ROOT/share/toast/faults.xml.example`. This file has to be copied in order to be used and to make modifications introduced by the user persistent throughout |appname| updates. .. code-block:: sh sysop@host:~$ cd $SEISCOMP_ROOT/share/toast sysop@host:~$ cp faults.xml.example faults.xml .. TODO:: * add patches.maxFaultDist * hide patches.maxHanging/FootWallDist Content ~~~~~~~ |appname| is currently provided with a file (version 1.2) containing almost 200 fault lines covering most subduction zones world wide. For instance, it contains all contour lines from the `slab2-model `_ between 20 and 80 km depth. The lines at 0 km depth are either from the RUM-model (Gudmundsson & Sambridge, 1998), generated manually according to literature and bathymetry or from the previous version of the file (in which case *reference* is not set). Structure ~~~~~~~~~ Below is an example for the structure of the file: .. code-block:: xml :linenos: 37.590 8.995 37.389 8.023 ... ... 37.334 13.450 ... ... The file contains several *fault* elements which have *vertex* sub-elements. Faults and vertices can be added, modified and removed manually via text editor. The format of the file is described below. .. csv-table:: Fault definitions file explanation :widths: 1 20 :header: Line, Description 1, Version of the fault definitions. 2, "Fault description including the attributes * checked (if *true* then the fault is used for :ref:`patch generation `) * depth (in km) * id (unique) * name (arbitrary, can be shown in map view) * reference (to fault source) * type (*reverse* for subduction zones)" 3, "Vertex description including the attributes *dip*, *rake*, and *strike*. For definitions see for instance: `openSHA `_." 4, Latitude coordinate of the vertex. 5, Longitude coordinate of the vertex. .. _toast_forecast_zones_configuration: Forecast zones configuration ---------------------------- *Forecast zones* are geographical regions - oftentimes corresponding to political districts - for which a specific tsunami early warning bulletin is generated. Technically, the *forecast zones* are associated with *forecast points* for which simulation results are either computed on-the-fly or by extraction from a precalculated database. See also: :ref:`toast_forecast_zones_perspective` and: :ref:`Forecast zones `. .. _toast_gsm_forecast: You can use :ref:`gsm ` to install a set of predefined example forecast zones and points files: .. code-block:: sh sysop@host:~$ cd install/gsm sysop@host:~$ ./gsm install forecastzones-rtsp See :ref:`toast_forecast_formats` if you want to generate you own set of forecast zones and points files. The forecast zones and profiles can be configured using :program:`scconfig`. .. note:: The forecast zones are configured at :menuselection:`gempa --> toast`, while the forecast points are configured at plugin level, e.g. :menuselection:`gempa --> easywave2` if used together with |ewname|. First, add a *forecastZones* profile, configure the parameters and register the profile: * :confval:`forecastZones.$name.filename` - Without file ending! Points to a shape file (ending .shp), an index file (ending .shx) and an attribute file in dBase format (ending .dbf). * :confval:`forecastZones.$name.blacklist.country` - Can be used if zones for a country are present in multiple forecast zones files. * :confval:`forecastZones` - Registration of the profile(s). Example: :: forecastZones.rtsp.filename = /home/data/forecastzones/rtsp/6.0/cfz/CFZ_Version_6p0 forecastZones = rtsp Then, add a *forecastPoints* profile, configure the parameters and register the points profile: * :confval:`easywave2.forecastPoints.$name.filename` - Points to a file in dBase (.dbf) format. * :confval:`easywave2.forecastPoints` - Registration of the profile(s). Example: :: forecastPoints.rtsp.filename = /home/data/forecastzones/rtsp/6.0/cfp/CFP_Version_6p0.dbf forecastPoints = rtsp .. _toast_forecast_formats: Forecast zones and points file formats ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Forecast zone and forecast point files are usually provided by the customer. They can be created using GIS software like `QGIS `_. The extent of a forecast zone is related to local administrative districts, typically it is between 50 and 500 km. The number of points in a zone should be such that they cover the geographical area and geological features of the zone and can vary between a couple to a couple tens of points. Consult the :ref:`example forecast files ` as a starting point. Consider that runup values for a zone are aggregated as described in :ref:`note-aggregation`. Make sure to check the points against the bathymetry used for simulations. See :ref:`below ` the suggested naming scheme for the IDs of the zones and points. Forecast zones ^^^^^^^^^^^^^^ The forecast zones geographical outlines are defined in `shapefiles `_ (ending *.shp*). Attributes data are stored in `dBase `_ files (ending *.dbf*), and a third file (ending *.shx*) is used as index. The *.dbf* file may contain any attributes, following are used by |appname|: .. csv-table:: Forecast zones metadata :widths: 3 2 5 5 :header: Name, Datatype, Description, Forecast Zones Perspective EX_BOX_ID, Integer, Unique forecast zone ID, ID Place_NAME, String, Place name, Place BOX_NAME, String, Forecast zone name, Name COUNTRY, String, Country name, Country CNTRY_CODE, String, Country abbreviation, Geo code STATE_PROV, String, Province name, Province The *EX_BOX_ID* (Exclusive Box Id) is mandatory and has to be unique (hence *exclusive*) as it is used as identifier for the forecast points (see below). All other parameters are optional, but the more information is provided the better. Forecast points ^^^^^^^^^^^^^^^ For each forecast zone |appname| needs a set of forecast points. The points are stored in binary files in `dBase `_ format (ending *.dbf*). Following attributes in a forecast point file are used by |appname|: .. csv-table:: Forecast points metadata :widths: 3 2 5 5 :header: Name, Datatype, Description, Forecast Zones Perspective CFPNO, String, Unique forecast point ID, ID (upon expanding) EX_BOX_ID, Integer, Link to forecast zone ID, ID POINT_Y, Double, Latitude value, Geo code POINT_X, Double, Longitude value, Geo code Place_NAME, String, Place name, Place COUNTRY, String, Country name, Country STATE_PROV, String, Province name, Province *Place_NAME*, *COUNTRY* and *STATE_PROV* are optional and are derived from the associated zone if they are not set. .. _note-fz_naming: .. note:: For the attributes *EX_BOX_ID* in the forecast zones and *CFPNO* in the forecast points we recommend a naming scheme using the country phone code. In this way, it is guaranteed that the IDs are unique throughout all zones and points. For instance, for Algeria having code +213 that would be: *EX_BOX_ID*: 2130001, 2130002, ... *CFPNO*: 21300000001, 21300000002, ... .. TODO:: * in zones files, CNTRY_CODE should be string, but is number: * in cfz_ntwc.dbf same as EX_BOX_ID * in cfz_rtsp.dbf = 0.0 * in zones and point files, what is PB_BOX_ID? .. _toast_bathymetry_files_configuration: Simulation bathymetry files configuration ----------------------------------------- In order for a tsunami on-the-fly-simulation to be computed (in contrast to a pre-computed scenario), a directory containing the bathymetry file(s) for the simulation backend has to be provided. In case of |ewname|, the directory is configured at :confval:`easywave2.data`. Example: :: easywave2.data = /home/data/bathymetry/ You can use :ref:`gsm ` to install a set of bathymetry files for |ewname|: .. code-block:: sh sysop@host:~$ cd install/gsm sysop@host:~$ ./gsm install bathymetry See :ref:`toast_source_regions` on how to configure the default bathymetry for the simulations within a source region. .. _toast_creating_bathymetry: Creating bathymetry files ~~~~~~~~~~~~~~~~~~~~~~~~~ |appname| is provided with bathymetries suiting the needs of the customer. Additional bathymetry files for |ewname| can be made by the following procedure: - Generate and download a bathymetry grid in geotiff format from `NOAA Grid Extract `_: - Select *ETOPO1 (bedrock)* - Click on the icon *Select area of interest by rectangle* and use the mouse or enter the Area of Interest manually - Download Data - Convert the file to binary Surfer 6 grd format as used by |ewname| in two steps: - Use gdal software to convert the downloaded geotiff file to ArcGIS: - :code:`gdal_translate -of AAIGrid ` - Use the script |toastdata|/scripts/arc2grd.py to convert the ArcGIS file to binary surfer grid: - :code:`./arc2grd.py ` - move the surfer file to the bathymetry directory In case of |ewname|, the bathymetry has to be provided in *Golden Software Surfer 6* `binary `_ (preferred) or `text `_ format. .. _note-show_bathymetry: .. note:: To display the bathymetry which was used for a simulation in map view with color coding, select a simulation and click *Bathymetry* in the :ref:`toast_map_layers_panel`. Note that this works only for binary, not for text format grid files. To show the outline of a bathymetry file as green line, go to the :ref:`toast_backend_settings` in the interactive simulation dialog and select the respective bathymetry (grid). .. _toast_source_regions: Source regions configuration ---------------------------- Source regions define polygon coordinates within which simulations should be started. See: :ref:`fig-sim_flowchart`. Use :ref:`gsm ` to install a set of predefined example source region files: .. code-block:: sh sysop@host:~$ cd install/gsm sysop@host:~$ ./gsm install sourceregions Using :program:`scconfig`, add a *sourceRegion* profile and configure the parameters. * :confval:`sourceRegion.$name.aoi` - (Area Of Interest) points to a bna file * :confval:`sourceRegion.$name.name` - Points to a bathymetry grd file (without file ending). This is the default bathymetry which is used for simulations within this source region. In the :ref:`toast_backend_settings` of the interactive simulation dialog it is highlighted with a star. Register the profile at: :confval:`sourceRegions`. Example ~~~~~~~ :: sourceRegion.IndianOcean.aoi = /home/data/sourceregions/IndianOcean.bna sourceRegion.IndianOcean.name = io_rtsp sourceRegions = IndianOcean In the following figure, the sourceRegion defined in the profile above is shown as :ref:`black line `, and the outline of the default bathymetry associated with this sourceRegion is :ref:`shown in green `. .. _fig-source_regions: .. figure:: media/toast/install/source_region.png :align: center :width: 18 cm Source region (black line) and default bathymetry outline (green) .. _note-show_bna: .. note:: To show source regions as black lines, copy their bna files to one of the two locations: * $SEISCOMP_ROOT/share/bna * ~/.seiscomp/bna .. _note-bna: bna polygons ~~~~~~~~~~~~ .. note:: You can create bna polygons manually in the :ref:`toast_map_perspective`. Click and hold the CTRL-key and do a series of left-mouse clicks. On the lower left you can see total length and area covered by the polygon. Then right-mouse click -> Measurements -> Save as `BNA File `_. Live tabs and templates configuration ------------------------------------- See: :ref:`toast_export` on how to configure live tabs and templates for the generation and dissemination of tsunami warning bulletins. .. _toast_mapstyles: Color profiles, gradients and colors configuration -------------------------------------------------- The default color profiles, gradients and colors for the various features like maximum wave height, forecast zones or bathymetry are stored in the file |toastdata|/mapstyles.default and the user-defined color profiles, gradients and colors in |toastdata|/mapstyles, both defined in JSON format [#]_. The color settings can be changed directly in |appname| using the color editor or color profile editor as described in :ref:`toast_color_profiles`. .. note:: If a gradient or color profile is not properly defined or present, the default gradient is used for the corresponding feature. .. warning:: All changes made in |toastdata|/mapstyles.default are overwritten with the next |appname| update. .. [#] https://www.json.org/