Files
2025/share/doc/seiscomp/html/apps/global_nonlinloc.html

704 lines
42 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>NonLinLoc &#8212; SeisComP Release documentation</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/seiscomp.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=72bcf2f2" />
<link rel="stylesheet" type="text/css" href="../_static/seiscomp.css?v=c6da7ce6" />
<link rel="stylesheet" type="text/css" href="../_static/graphviz.css?v=eafc0fe6" />
<script type="text/javascript" src="../_static/seiscomp.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=823bb831"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="MLh" href="global_mlh.html" />
<link rel="prev" title="Md" href="global_md.html" />
</head>
<body>
<div class="header">
<div class="container">
<div class="brand">
<img class="logo" src="../_static/brands/seiscomp/text/white.svg"/>
<!-- span class="title">SeisComP Release</span -->
<span class="version">6.9.0</span>
</div>
</div>
</div>
<div class="nav">
<div class="container">
<div class="content"><a class="pull-right" id="sidebar-toggle">TOC</a>
<div class="related" role="navigation" aria-label="related navigation">
<ul>
<li class="right">
<a href="../genindex.html" title="General Index"
accesskey="I">
index
</a>
</li>
<li class="right">
<a href="global_mlh.html" title="MLh"
accesskey="N">
next
</a>
</li>
<li class="right">
<a href="global_md.html" title="Md"
accesskey="P">
previous
</a>
</li>
<li class="nav-item nav-item-0">
<a href="../index.html">Home</a>
</li>
<li class="nav-item nav-item-1">
<a href="../toc/extensions.html" >Extensions</a>
</li>
<li class="nav-item nav-item-2">
<a href="../toc/extensions/global.html" accesskey="U">global</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<div class="fitted content" id="anchors-container">
<div class="body" role="main">
<section id="nonlinloc">
<span id="global-nonlinloc"></span><h1>NonLinLoc<a class="headerlink" href="#nonlinloc" title="Permalink to this heading"></a></h1>
<p>NonLinLoc locator wrapper plugin for SeisComP.
NonLinLoc was written by Anthony Lomax (<a class="reference external" href="http://alomax.free.fr/nlloc">http://alomax.free.fr/nlloc</a>).</p>
<section id="description">
<h2>Description<a class="headerlink" href="#description" title="Permalink to this heading"></a></h2>
<p>Funded by <a class="reference external" href="http://www.seismo.ethz.ch/">SED/ETH Zurich</a>, developed by <a class="reference external" href="http://www.gempa.de">gempa GmbH</a>.
This plugin is available from SeisComP version Release Potsdam 2010 and later.</p>
<p>The <a class="reference external" href="http://alomax.free.fr/nlloc">NonLinLoc (NLL)</a> locator algorithm has been
implemented into SeisComP through the plugin mechanism. A new plugin locnll
contains the LocatorInterface implementation for NonLinLoc.</p>
<p>The implementation bundles the NonLinLoc source files required to use the library
function calls. The following source files are included:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>GridLib.c
GridLib.h
GridMemLib.c
GridMemLib.h
NLLocLib.h
NLLoc1.c
NLLocLib.c
calc_crust_corr.c
calc_crust_corr.h
crust_corr_model.h
crust_type_key.h
crust_type.h
loclist.c
octtree.h
octtree.c
phaseloclist.h
phaselist.c
geo.c
geo.h
geometry.h
map_project.c
map_project.h
otime_limit.c
otime_limit.h
ran1.c
ran1.h
velmod.c
velmod.h
util.h
util.c
alomax_matrix/alomax_matrix.c
alomax_matrix/alomax_matrix.h
alomax_matrix/alomax_matrix_svd.c
alomax_matrix/alomax_matrix_svd.h
</pre></div>
</div>
</section>
<section id="error-measures">
<h2>Error measures<a class="headerlink" href="#error-measures" title="Permalink to this heading"></a></h2>
<p>After running NonLinLoc the output is converted into a SeisComP (QuakeML) origin
object including all available error measures. The following table shows how
the NLL error measures are mapped to the SeisComP data model:</p>
<table class="docutils align-default">
<thead>
<tr class="row-odd"><th class="head"><p>SeisComP</p></th>
<th class="head"><p>NLL</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>Origin.latitude.uncertainty</p></td>
<td><p>sqrt(phypo-&gt;cov.yy)</p></td>
</tr>
<tr class="row-odd"><td><p>Origin.longitude.uncertainty</p></td>
<td><p>sqrt(phypo-&gt;cov.xx)</p></td>
</tr>
<tr class="row-even"><td><p>Origin.depth.uncertainty</p></td>
<td><p>sqrt(phypo-&gt;cov.zz)</p></td>
</tr>
<tr class="row-odd"><td><p>Origin.originQuality.standardError</p></td>
<td><p>phypo-&gt;rms</p></td>
</tr>
<tr class="row-even"><td><p>Origin.originQuality.secondaryAzimuthalGap</p></td>
<td><p>phypo-&gt;gap_secondary</p></td>
</tr>
<tr class="row-odd"><td><p>Origin.originQuality.usedStationCount</p></td>
<td><p>phypo-&gt;usedStationCount</p></td>
</tr>
<tr class="row-even"><td><p>Origin.originQuality.associatedStationCount</p></td>
<td><p>phypo-&gt;associatedStationCount</p></td>
</tr>
<tr class="row-odd"><td><p>Origin.originQuality.associatedPhaseCount</p></td>
<td><p>phypo-&gt;associatedPhaseCount</p></td>
</tr>
<tr class="row-even"><td><p>Origin.originQuality.usedPhaseCount</p></td>
<td><p>phypo-&gt;nreadings</p></td>
</tr>
<tr class="row-odd"><td><p>Origin.originQuality.depthPhaseCount</p></td>
<td><p>phypo-&gt;depthPhaseCount</p></td>
</tr>
<tr class="row-even"><td><p>Origin.originQuality.minimumDistance</p></td>
<td><p>km2deg(phypo-&gt;minimumDistance)</p></td>
</tr>
<tr class="row-odd"><td><p>Origin.originQuality.maximumDistance</p></td>
<td><p>km2deg(phypo-&gt;maximumDistance)</p></td>
</tr>
<tr class="row-even"><td><p>Origin.originQuality.medianDistance</p></td>
<td><p>km2deg(phypo-&gt;medianDistance)</p></td>
</tr>
<tr class="row-odd"><td><p>Origin.originQuality.groundTruthLevel</p></td>
<td><p>phypo-&gt;groundTruthLevel</p></td>
</tr>
<tr class="row-even"><td><p>Origin.originUncertainty.horizontalUncertainty</p></td>
<td><p>phypo-&gt;ellipse.len2</p></td>
</tr>
<tr class="row-odd"><td><p>Origin.originUncertainty.minHorizontalUncertainty</p></td>
<td><p>phypo-&gt;ellipse.len1</p></td>
</tr>
<tr class="row-even"><td><p>Origin.originUncertainty.maxHorizontalUncertainty</p></td>
<td><p>phypo-&gt;ellipse.len2</p></td>
</tr>
<tr class="row-odd"><td><p>Origin.originUncertainty.azimuthMaxHorizontalUncertainty</p></td>
<td><p>phypo-&gt;ellipse.az1 + 90</p></td>
</tr>
<tr class="row-even"><td><p>ConfidenceEllipsoid.semiMajorAxisLength</p></td>
<td><p>phypo-&gt;ellipsoid.len3</p></td>
</tr>
<tr class="row-odd"><td><p>ConfidenceEllipsoid.semiMinorAxisLength</p></td>
<td><p>phypo-&gt;ellipsoid.len1</p></td>
</tr>
<tr class="row-even"><td><p>ConfidenceEllipsoid.semiIntermediateAxisLength</p></td>
<td><p>phypo-&gt;ellipsoid.len2</p></td>
</tr>
<tr class="row-odd"><td><p>ConfidenceEllipsoid.majorAxisPlunge</p></td>
<td><p>(phypo-&gt;ellipsoid.axis1 x phypo-&gt;ellipsoid.axis2).dip</p></td>
</tr>
<tr class="row-even"><td><p>ConfidenceEllipsoid.majorAxisAzimuth</p></td>
<td><p>(phypo-&gt;ellipsoid.axis1 x phypo-&gt;ellipsoid.axis2).az</p></td>
</tr>
<tr class="row-odd"><td><p>ConfidenceEllipsoid.majorAxisRotation</p></td>
<td><p>T.B.D.</p></td>
</tr>
</tbody>
</table>
</section>
<section id="plugin">
<h2>Plugin<a class="headerlink" href="#plugin" title="Permalink to this heading"></a></h2>
<p>The NonLinLoc plugin is installed under <code class="file docutils literal notranslate"><span class="pre">share/plugins/locnll.so</span></code>.
It provides a new implementation of the LocatorInterface with the name NonLinLoc.</p>
<p>To add the plugin to a module add it to the modules configuration, either
<code class="file docutils literal notranslate"><span class="pre">modulename.cfg</span></code> or <code class="file docutils literal notranslate"><span class="pre">global.cfg</span></code>:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nv">plugins</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="si">${</span><span class="nv">plugins</span><span class="si">}</span>,<span class="w"> </span>locnll
</pre></div>
</div>
<p>Basically it can be used by two modules: <a class="reference internal" href="screloc.html#screloc"><span class="std std-ref">screloc</span></a> and <a class="reference internal" href="scolv.html#scolv"><span class="std std-ref">scolv</span></a>.</p>
</section>
<section id="output">
<h2>Output<a class="headerlink" href="#output" title="Permalink to this heading"></a></h2>
<p>All output is stored in the configured <a class="reference internal" href="#confval-NonLinLoc.outputPath"><code class="xref std std-confval docutils literal notranslate"><span class="pre">NonLinLoc.outputPath</span></code></a>.
The file prefix for a location is the originID (<a class="reference internal" href="#confval-NonLinLoc.publicID"><code class="xref std std-confval docutils literal notranslate"><span class="pre">NonLinLoc.publicID</span></code></a>).</p>
<p>The following file are stored:</p>
<ul class="simple">
<li><p>Input observations (.obs)</p></li>
<li><p>Input configuration (.conf)</p></li>
<li><p>NLL location (.loc.hyp)</p></li>
<li><p>NLL 3D grid header (.loc.hdr)</p></li>
<li><p>NLL octree (.loc.octree)</p></li>
<li><p>NLL scatter file (.loc.scat)</p></li>
</ul>
<p>In addition to the native NLL output a SeisComP origin object is created and
returned to the calling instance. Usually this object is then sent via messaging.</p>
</section>
<section id="profiles">
<h2>Profiles<a class="headerlink" href="#profiles" title="Permalink to this heading"></a></h2>
<p>The plugin allows to specify multiple configuration profiles (<a class="reference internal" href="#confval-NonLinLoc.profiles"><code class="xref std std-confval docutils literal notranslate"><span class="pre">NonLinLoc.profiles</span></code></a>).
The profile to use can selected both in <cite>scolv</cite> and <cite>screloc</cite>, however a
virtual profile automatic is also provided, which selects the best matching
configured profile based on the initial location. For this reason each profile
contains some configuration parameters that defines where the profile is valid
(<cite>transform</cite>, <cite>region</cite>, <cite>origin</cite>, <cite>rotation</cite>). The <cite>transform</cite> profile
configuration parameter supports only <cite>GLOBAL</cite> or <cite>SIMPLE</cite> at the moment: only the
profile has this limitation, not the NonLinLoc control file, which supports
all transformations available in NonLinLoc.</p>
<p><strong>NOTE</strong>: If a profile <cite>transform</cite> is set as <cite>GLOBAL</cite> and the <cite>region</cite> parameter is
left <cite>empty</cite>, then the plugin adds the line <cite>TRANS GLOBAL</cite> to the control file,
forcing a global transformation.</p>
</section>
<section id="configuration-example">
<h2>Configuration example<a class="headerlink" href="#configuration-example" title="Permalink to this heading"></a></h2>
<p>To add the plugin to an application such as scolv or screloc, add the plugin
name to the list of plugins that are loaded (e.g. <code class="file docutils literal notranslate"><span class="pre">scolv.cfg</span></code>):</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nv">plugins</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="si">${</span><span class="nv">plugins</span><span class="si">}</span>,<span class="w"> </span>locnll
</pre></div>
</div>
<p>Futhermore add the plugin configuration (e.g. <code class="file docutils literal notranslate"><span class="pre">scolv.cfg</span></code>):</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1">########################################################</span>
<span class="c1">################ NonLinLoc configuration################</span>
<span class="c1">########################################################</span>
<span class="nv">NLLROOT</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="si">${</span><span class="nv">HOME</span><span class="si">}</span>/nll/data
NonLinLoc.outputPath<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="si">${</span><span class="nv">NLLROOT</span><span class="si">}</span>/output/
<span class="c1"># Define the default control file if no profile specific</span>
<span class="c1"># control file is defined.</span>
NonLinLoc.controlFile<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="si">${</span><span class="nv">NLLROOT</span><span class="si">}</span>/NLL.default.conf
<span class="c1"># Set the default pick error in seconds passed to NonLinLoc</span>
<span class="c1"># if no SeisComP pick uncertainty is available.</span>
NonLinLoc.defaultPickError<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span>.1
<span class="c1"># Define the available NonLinLoc location profiles. The order</span>
<span class="c1"># implicitly defines the priority for overlapping regions</span>
<span class="c1">#NonLinLoc.profiles = swiss_3d, swiss_1d, global</span>
NonLinLoc.profiles<span class="w"> </span><span class="o">=</span><span class="w"> </span>swiss_3d,<span class="w"> </span>global
<span class="c1"># The earthModelID is copied to earthModelID attribute of the</span>
<span class="c1"># resulting origin</span>
NonLinLoc.profile.swiss_1d.earthModelID<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;swiss regional 1D&quot;</span>
<span class="c1"># Specify the velocity model table path as used by NonLinLoc</span>
NonLinLoc.profile.swiss_1d.tablePath<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="si">${</span><span class="nv">NLLROOT</span><span class="si">}</span>/time_1d_regio/regio
<span class="c1"># Specify the region valid for this profile</span>
<span class="c1"># Without this parameter the plugin will add an additional</span>
<span class="c1"># TRANS GLOBAL statement in the NLL control file</span>
NonLinLoc.profile.swiss_1d.region<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">41</span>.2,<span class="w"> </span><span class="m">3</span>.8,<span class="w"> </span><span class="m">50</span>.1,<span class="w"> </span><span class="m">16</span>.8
<span class="c1"># The NonLinLoc control file to use for this profile</span>
NonLinLoc.profile.swiss_1d.controlFile<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="si">${</span><span class="nv">NLLROOT</span><span class="si">}</span>/NLL.swiss_1d.conf
<span class="c1"># Configure the swiss_3d profile</span>
NonLinLoc.profile.swiss_3d.earthModelID<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;swiss regional 3D&quot;</span>
NonLinLoc.profile.swiss_3d.tablePath<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="si">${</span><span class="nv">NLLROOT</span><span class="si">}</span>/time_3d/ch
NonLinLoc.profile.swiss_3d.region<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">45</span>.15,<span class="w"> </span><span class="m">5</span>.7,<span class="w"> </span><span class="m">48</span>.3,<span class="w"> </span><span class="m">11</span>.0
NonLinLoc.profile.swiss_3d.controlFile<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="si">${</span><span class="nv">NLLROOT</span><span class="si">}</span>/NLL.swiss_3d.conf
<span class="c1"># And the global profile</span>
NonLinLoc.profile.global.earthModelID<span class="w"> </span><span class="o">=</span><span class="w"> </span>iaspei91
NonLinLoc.profile.global.tablePath<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="si">${</span><span class="nv">NLLROOT</span><span class="si">}</span>/iasp91/iasp91
NonLinLoc.profile.global.controlFile<span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="si">${</span><span class="nv">NLLROOT</span><span class="si">}</span>/NLL.global.conf
</pre></div>
</div>
<p>An example of a NonLinLoc control file configuration that contains all the
required statements, but it must be adapted to the specific use case. The
missing statements are generated by the plugin (LOCFILES, LOCHYPOUT, LOCSRCE):</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># -1 = no logs, useful for playback with screloc --ep option</span>
CONTROL<span class="w"> </span>-1<span class="w"> </span><span class="m">123456</span>
<span class="c1"># This must be the same TRANS used for generating the grid files</span>
TRANS<span class="w"> </span>SDC<span class="w"> </span><span class="m">46</span>.51036987<span class="w"> </span><span class="m">8</span>.47575546<span class="w"> </span><span class="m">0</span>.0
LOCSIG<span class="w"> </span>Swiss<span class="w"> </span>Seismological<span class="w"> </span>Service,<span class="w"> </span>ETHZ
LOCCOM<span class="w"> </span>location<span class="w"> </span>using<span class="w"> </span>my<span class="w"> </span><span class="nb">local</span><span class="w"> </span>velocity<span class="w"> </span>model
LOCSEARCH<span class="w"> </span>OCT<span class="w"> </span><span class="m">20</span><span class="w"> </span><span class="m">20</span><span class="w"> </span><span class="m">20</span><span class="w"> </span><span class="m">0</span>.001<span class="w"> </span><span class="m">10000</span><span class="w"> </span><span class="m">1000</span>
<span class="c1"># This grid origin is relative to the TRANS statement. The grid</span>
<span class="c1"># must be wholly contained in the grid files</span>
LOCGRID<span class="w"> </span><span class="m">101</span><span class="w"> </span><span class="m">101</span><span class="w"> </span><span class="m">101</span><span class="w"> </span>-0.5<span class="w"> </span>-0.5<span class="w"> </span>-1.8<span class="w"> </span><span class="m">0</span>.01<span class="w"> </span><span class="m">0</span>.01<span class="w"> </span><span class="m">0</span>.01<span class="w"> </span>PROB_DENSITY<span class="w"> </span>SAVE
LOCMETH<span class="w"> </span>EDT_OT_WT<span class="w"> </span><span class="m">9999</span>.0<span class="w"> </span><span class="m">4</span><span class="w"> </span>-1<span class="w"> </span>-1<span class="w"> </span>-1<span class="w"> </span><span class="m">0</span><span class="w"> </span>-1<span class="w"> </span><span class="m">1</span>
LOCGAU<span class="w"> </span><span class="m">0</span>.001<span class="w"> </span><span class="m">0</span>.0
LOCPHASEID<span class="w"> </span>P<span class="w"> </span>P<span class="w"> </span>p<span class="w"> </span>G<span class="w"> </span>Pn<span class="w"> </span>Pg<span class="w"> </span>P1
LOCPHASEID<span class="w"> </span>S<span class="w"> </span>S<span class="w"> </span>s<span class="w"> </span>G<span class="w"> </span>Sn<span class="w"> </span>Sg<span class="w"> </span>S1
LOCQUAL2ERR<span class="w"> </span><span class="m">0</span>.025<span class="w"> </span><span class="m">0</span>.050<span class="w"> </span><span class="m">0</span>.100<span class="w"> </span><span class="m">0</span>.200<span class="w"> </span><span class="m">0</span>.400<span class="w"> </span><span class="m">99999</span>.9
LOCANGLES<span class="w"> </span>ANGLES_YES<span class="w"> </span><span class="m">5</span>
</pre></div>
</div>
<p><strong>NOTE</strong>: The LOCHYPOUT parameter statement is always generated by the plugin.
By default it outputs <cite>LOCHYPOUT NONE</cite>. If <cite>enableSEDParameters</cite> is enabled
or if the original control file contains <cite>CALC_SED_ORIGIN</cite>, it will append
<cite>CALC_SED_ORIGIN</cite>. If the original control file contains <cite>SAVE_NLLOC_EXPECTATION</cite>,
that flag will also be preserved. Currently, only <cite>CALC_SED_ORIGIN</cite> and
<cite>SAVE_NLLOC_EXPECTATION</cite> are supported by the plugin. Any other options are
omitted and will not be forwarded to NonLinLoc.</p>
</section>
<section id="stations-names">
<h2>Stations names<a class="headerlink" href="#stations-names" title="Permalink to this heading"></a></h2>
<p>When generating the grid files the station names used in the GTSRCE statement
must match the rule set in the plugin configuration. E.g.</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># Format of the station name used to select the right travel time table (grid)</span>
<span class="c1"># file for a station. By default only the station code is used (e.g.</span>
<span class="c1"># tablePath.P.@STA@.time.*), but that doesn&#39;t allow to distinguish between</span>
<span class="c1"># multiple network codes or location codes that use the same station code. To</span>
<span class="c1"># overcome this limitation this parameter could be set in a more general way,</span>
<span class="c1"># for example @NET@_@STA@_@LOC@. In this way NonLinLoc will look for travel</span>
<span class="c1"># time table (grid) files of the form: tablePath.P.@NET@_@STA@_@LOC@.time.*</span>
<span class="c1"># Where @NET@ @STA@ @LOC@ are just placeholder for the actual codes</span>
NonLinLoc.profile.MYPROFILE.stationNameFormat<span class="w"> </span><span class="o">=</span><span class="w"> </span>@NET@_@STA@_@LOC@
</pre></div>
</div>
<p>Given the above plugin configuration, the GTSRCE statement should be something
like this:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>GTSRCE<span class="w"> </span>CH_STA01_<span class="w"> </span>LATLON<span class="w"> </span><span class="m">46</span>.519<span class="w"> </span><span class="m">8</span>.474<span class="w"> </span><span class="m">0</span>.0<span class="w"> </span><span class="m">1</span>.295
GTSRCE<span class="w"> </span>CH_STA02_01<span class="w"> </span>LATLON<span class="w"> </span><span class="m">46</span>.456<span class="w"> </span><span class="m">8</span>.474<span class="w"> </span><span class="m">0</span>.0<span class="w"> </span><span class="m">1</span>.323
GTSRCE<span class="w"> </span>CH_STA03_AA<span class="w"> </span>LATLON<span class="w"> </span><span class="m">46</span>.784<span class="w"> </span><span class="m">8</span>.474<span class="w"> </span><span class="m">0</span>.0<span class="w"> </span><span class="m">1</span>.292
</pre></div>
</div>
<p>Alternatively the names could just contain the station code:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>NonLinLoc.profile.MYPROFILE.stationNameFormat<span class="w"> </span><span class="o">=</span><span class="w"> </span>@STA@
</pre></div>
</div>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>GTSRCE<span class="w"> </span>STA01<span class="w"> </span>LATLON<span class="w"> </span><span class="m">46</span>.519<span class="w"> </span><span class="m">8</span>.474<span class="w"> </span><span class="m">0</span>.0<span class="w"> </span><span class="m">1</span>.295
GTSRCE<span class="w"> </span>STA02<span class="w"> </span>LATLON<span class="w"> </span><span class="m">46</span>.456<span class="w"> </span><span class="m">8</span>.474<span class="w"> </span><span class="m">0</span>.0<span class="w"> </span><span class="m">1</span>.323
GTSRCE<span class="w"> </span>STA03<span class="w"> </span>LATLON<span class="w"> </span><span class="m">46</span>.784<span class="w"> </span><span class="m">8</span>.474<span class="w"> </span><span class="m">0</span>.0<span class="w"> </span><span class="m">1</span>.292
</pre></div>
</div>
</section>
<section id="usage">
<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this heading"></a></h2>
<section id="locator">
<h3>Locator<a class="headerlink" href="#locator" title="Permalink to this heading"></a></h3>
<p>The usage of the new NLL plugin is straight forward. Once loaded successfully the
new locator shows up in the lower left corners combo box.</p>
<figure class="align-default">
<img alt="../_images/locator_selection_small1.png" src="../_images/locator_selection_small1.png" />
</figure>
<p>Select the new NonLinLoc locator and the configured profiles will be loaded into
the combo box right of it.</p>
<figure class="align-default">
<img alt="../_images/locator_profile_selection_small1.png" src="../_images/locator_profile_selection_small1.png" />
</figure>
<p>The NonLinLoc implementation provides a virtual profile automatic. This emulates
the complete automatic case and selects the best matching configured profiles
based on the initial location.</p>
<p>If an origin has been relocated the method should be set to “NonLinLoc” and
the earth model contains the string NonLinLoc.profile.[name].earthModelID
configured for the selected profile.</p>
<figure class="align-default">
<img alt="../_images/origin_information1.png" src="../_images/origin_information1.png" />
</figure>
</section>
<section id="settings">
<h3>Settings<a class="headerlink" href="#settings" title="Permalink to this heading"></a></h3>
<p>The NLL locator implementation supports to override configured settings or
control parameters for a session. Those changes are not persistent and lost if
the locator is changed to another one or the profile has been changed. However
this feature is particularly useful when trying differnt settings on a particular
origin or for enabling the NonLinLoc logs (<cite>CONTROL</cite> statement) that becomes
visible on the console.</p>
<p>To open the settings dialog press the button right to the locator selection
combo box.</p>
<figure class="align-default">
<img alt="../_images/locator_settings1.png" src="../_images/locator_settings1.png" />
</figure>
<p>Then the NLL specific parameters show up.</p>
<figure class="align-default">
<img alt="../_images/NLL_settings.png" src="../_images/NLL_settings.png" />
</figure>
</section>
<section id="seismicity-viewer">
<h3>Seismicity Viewer<a class="headerlink" href="#seismicity-viewer" title="Permalink to this heading"></a></h3>
<p>scolv provides two additional configurable buttons. To bind
<a class="reference external" href="http://alomax.free.fr/seismicity">Seismicity Viewer</a> to the first one the
following configuration can be used:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nv">button0</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;Seismicity Viewer&quot;</span>
scripts.script0<span class="w"> </span><span class="o">=</span><span class="w"> </span>@CONFIGDIR@/scripts/sv
</pre></div>
</div>
<p>A small wrapper script sv has been created that calls Seismicity Viewer based
on the origin ID passed to the script.</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/bin/sh</span>
<span class="nv">FILE</span><span class="o">=</span><span class="nv">$HOME</span>/nll/data/output/<span class="nv">$1</span>.loc.hyp
java<span class="w"> </span>-classpath<span class="w"> </span><span class="nv">$HOME</span>/nll/bin/SeismicityViewer50.jar<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>net.alomax.seismicity.Seismicity<span class="w"> </span><span class="nv">$FILE</span>
</pre></div>
</div>
<p>This examples assumes that Seismicity Viewer has been installed in $HOME/nll/bin.</p>
</section>
</section>
<section id="module-configuration">
<span id="global-nonlinloc-configuration"></span><h2>Module Configuration<a class="headerlink" href="#module-configuration" title="Permalink to this heading"></a></h2>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.publicID">
<span class="sig-name descname"><span class="pre">NonLinLoc.publicID</span></span><a class="headerlink" href="#confval-NonLinLoc.publicID" title="Permalink to this definition"></a></dt>
<dd><p>Default: <code class="docutils literal notranslate"><span class="pre">NLL.&#64;time/%Y%m%d%H%M%S.%f&#64;.&#64;id&#64;</span></code></p>
<p>Type: <em>string</em></p>
<p>PublicID creation pattern for an origin created by NonLinLoc.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.outputPath">
<span class="sig-name descname"><span class="pre">NonLinLoc.outputPath</span></span><a class="headerlink" href="#confval-NonLinLoc.outputPath" title="Permalink to this definition"></a></dt>
<dd><p>Default: <code class="docutils literal notranslate"><span class="pre">/tmp/sc3.nll</span></code></p>
<p>Type: <em>path</em></p>
<p>Defines the output path for all native NonLinLoc input and output files.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.saveInput">
<span class="sig-name descname"><span class="pre">NonLinLoc.saveInput</span></span><a class="headerlink" href="#confval-NonLinLoc.saveInput" title="Permalink to this definition"></a></dt>
<dd><p>Default: <code class="docutils literal notranslate"><span class="pre">true</span></code></p>
<p>Type: <em>boolean</em></p>
<p>Save input files *.obs in outputPath for later processing.
Setting to false reduces file i/o and saves disk space.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.saveIntermediateOutput">
<span class="sig-name descname"><span class="pre">NonLinLoc.saveIntermediateOutput</span></span><a class="headerlink" href="#confval-NonLinLoc.saveIntermediateOutput" title="Permalink to this definition"></a></dt>
<dd><p>Default: <code class="docutils literal notranslate"><span class="pre">true</span></code></p>
<p>Type: <em>boolean</em></p>
<p>Save output files in outputPath for later processing or
for viewing by the Seismicity Viewer.
Setting to false reduces file i/o and saves disk space.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.controlFile">
<span class="sig-name descname"><span class="pre">NonLinLoc.controlFile</span></span><a class="headerlink" href="#confval-NonLinLoc.controlFile" title="Permalink to this definition"></a></dt>
<dd><p>Type: <em>path</em></p>
<p>The default NonLinLoc control file to use.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.defaultPickError">
<span class="sig-name descname"><span class="pre">NonLinLoc.defaultPickError</span></span><a class="headerlink" href="#confval-NonLinLoc.defaultPickError" title="Permalink to this definition"></a></dt>
<dd><p>Default: <code class="docutils literal notranslate"><span class="pre">0.5</span></code></p>
<p>Type: <em>double</em></p>
<p>Unit: <em>s</em></p>
<p>The default pick error in seconds passed to NonLinLoc if a SeisComP pick
object does not provide pick time uncertainties.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.fixedDepthGridSpacing">
<span class="sig-name descname"><span class="pre">NonLinLoc.fixedDepthGridSpacing</span></span><a class="headerlink" href="#confval-NonLinLoc.fixedDepthGridSpacing" title="Permalink to this definition"></a></dt>
<dd><p>Default: <code class="docutils literal notranslate"><span class="pre">0.1</span></code></p>
<p>Type: <em>double</em></p>
<p>Unit: <em>km</em></p>
<p>Since NLL does not support fixing the depth natively so this
feature is emulated by settings the Z grid very tight around
the depth to be fixed. This value sets the Z grid spacing.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.allowMissingStations">
<span class="sig-name descname"><span class="pre">NonLinLoc.allowMissingStations</span></span><a class="headerlink" href="#confval-NonLinLoc.allowMissingStations" title="Permalink to this definition"></a></dt>
<dd><p>Default: <code class="docutils literal notranslate"><span class="pre">true</span></code></p>
<p>Type: <em>boolean</em></p>
<p>Picks from stations with missing configuration will be
ignored. The origin will be relocated without that pick
if possible.</p>
<p>If set to false, the plug-in throws
an excepection without locating.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.profiles">
<span class="sig-name descname"><span class="pre">NonLinLoc.profiles</span></span><a class="headerlink" href="#confval-NonLinLoc.profiles" title="Permalink to this definition"></a></dt>
<dd><p>Type: <em>list:string</em></p>
<p>Defines a list of active profiles to be used by the plugin.</p>
</dd></dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p><strong>NonLinLoc.profile.$name.*</strong>
<em>Defines a regional profile that is used if a prelocation falls</em>
<em>inside the configured region.</em>
$name is a placeholder for the name to be used and needs to be added to <a class="reference internal" href="#confval-NonLinLoc.profiles"><code class="xref std std-confval docutils literal notranslate"><span class="pre">NonLinLoc.profiles</span></code></a> to become active.</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>NonLinLoc.profiles<span class="w"> </span><span class="o">=</span><span class="w"> </span>a,b
NonLinLoc.profile.a.value1<span class="w"> </span><span class="o">=</span><span class="w"> </span>...
NonLinLoc.profile.b.value1<span class="w"> </span><span class="o">=</span><span class="w"> </span>...
<span class="c1"># c is not active because it has not been added</span>
<span class="c1"># to the list of NonLinLoc.profiles</span>
NonLinLoc.profile.c.value1<span class="w"> </span><span class="o">=</span><span class="w"> </span>...
</pre></div>
</div>
</div>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.profile.-name.earthModelID">
<span class="sig-name descname"><span class="pre">NonLinLoc.profile.$name.earthModelID</span></span><a class="headerlink" href="#confval-NonLinLoc.profile.-name.earthModelID" title="Permalink to this definition"></a></dt>
<dd><p>Type: <em>string</em></p>
<p>earthModelID that is stored in the created origin.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.profile.-name.methodID">
<span class="sig-name descname"><span class="pre">NonLinLoc.profile.$name.methodID</span></span><a class="headerlink" href="#confval-NonLinLoc.profile.-name.methodID" title="Permalink to this definition"></a></dt>
<dd><p>Default: <code class="docutils literal notranslate"><span class="pre">NonLinLoc</span></code></p>
<p>Type: <em>string</em></p>
<p>methodID that is stored in the created origin.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.profile.-name.tablePath">
<span class="sig-name descname"><span class="pre">NonLinLoc.profile.$name.tablePath</span></span><a class="headerlink" href="#confval-NonLinLoc.profile.-name.tablePath" title="Permalink to this definition"></a></dt>
<dd><p>Type: <em>path</em></p>
<p>Path to travel time tables (grids).</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.profile.-name.stationNameFormat">
<span class="sig-name descname"><span class="pre">NonLinLoc.profile.$name.stationNameFormat</span></span><a class="headerlink" href="#confval-NonLinLoc.profile.-name.stationNameFormat" title="Permalink to this definition"></a></dt>
<dd><p>Default: <code class="docutils literal notranslate"><span class="pre">&#64;STA&#64;</span></code></p>
<p>Type: <em>string</em></p>
<p>Format of the station name used to select the right travel time table (grid) file
for a station.
By default only the station code is used (e.g. tablePath.P.&#64;STA&#64;.time.*), but
that doesnt allow to distinguish between multiple network codes or location codes
that use the same station code.
To overcome this limitation this parameter could be set in a more general way, for
example &#64;NET&#64;_&#64;STA&#64;_&#64;LOC&#64;. In this way NonLinLoc will look for
travel time table (grid) files of the form: tablePath.P.&#64;NET&#64;_&#64;STA&#64;_&#64;LOC&#64;.time.*
Where &#64;NET&#64; &#64;STA&#64; &#64;LOC&#64; are just placeholder for the actual codes</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.profile.-name.controlFile">
<span class="sig-name descname"><span class="pre">NonLinLoc.profile.$name.controlFile</span></span><a class="headerlink" href="#confval-NonLinLoc.profile.-name.controlFile" title="Permalink to this definition"></a></dt>
<dd><p>Type: <em>path</em></p>
<p>Control file of the current profile. If not set, the default
control file will be used instead.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.profile.-name.transform">
<span class="sig-name descname"><span class="pre">NonLinLoc.profile.$name.transform</span></span><a class="headerlink" href="#confval-NonLinLoc.profile.-name.transform" title="Permalink to this definition"></a></dt>
<dd><p>Default: <code class="docutils literal notranslate"><span class="pre">GLOBAL</span></code></p>
<p>Type: <em>string</em></p>
<p>Transformation type of the configured region. Supported are
SIMPLE and GLOBAL.</p>
<p>Default: GLOBAL is assumed.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.profile.-name.region">
<span class="sig-name descname"><span class="pre">NonLinLoc.profile.$name.region</span></span><a class="headerlink" href="#confval-NonLinLoc.profile.-name.region" title="Permalink to this definition"></a></dt>
<dd><p>Type: <em>list:double</em></p>
<p>Defines the 4 corner values of the epicentral region for selecting the profile.
The original epicentre must be within the region.</p>
<p>If transform is GLOBAL: min_lat, min_lon, max_lat, max_lon.
The values define the geographic corner coordinates. Unit is degree.</p>
<p>If transform is SIMPLE: xmin, ymin, xmax, ymax.
The values define the region relative to the configured origin.
Unit is km.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.profile.-name.origin">
<span class="sig-name descname"><span class="pre">NonLinLoc.profile.$name.origin</span></span><a class="headerlink" href="#confval-NonLinLoc.profile.-name.origin" title="Permalink to this definition"></a></dt>
<dd><p>Type: <em>list:double</em></p>
<p>Unit: <em>deg</em></p>
<p>Only used for transformation SIMPLE. Expects 2 values: latitude, longitude.
The value define the geographic origin of the area spanned by region.
Unit is degree.</p>
</dd></dl>
<dl class="std confval">
<dt class="sig sig-object std" id="confval-NonLinLoc.profile.-name.rotation">
<span class="sig-name descname"><span class="pre">NonLinLoc.profile.$name.rotation</span></span><a class="headerlink" href="#confval-NonLinLoc.profile.-name.rotation" title="Permalink to this definition"></a></dt>
<dd><p>Type: <em>double</em></p>
<p>Unit: <em>deg</em></p>
<p>Only used for transformation SIMPLE. Defines the rotation around the
origin of the defined region.</p>
</dd></dl>
</section>
</section>
<div id="anchors-bottom"></div>
</div>
<div class="sidebar" role="navigation" aria-label="main navigation">
<div id="anchors-top"></div>
<div id="anchors" class="content">
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>document.getElementById('searchbox').style.display = "block"</script>
<div>
<h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">NonLinLoc</a><ul>
<li><a class="reference internal" href="#description">Description</a></li>
<li><a class="reference internal" href="#error-measures">Error measures</a></li>
<li><a class="reference internal" href="#plugin">Plugin</a></li>
<li><a class="reference internal" href="#output">Output</a></li>
<li><a class="reference internal" href="#profiles">Profiles</a></li>
<li><a class="reference internal" href="#configuration-example">Configuration example</a></li>
<li><a class="reference internal" href="#stations-names">Stations names</a></li>
<li><a class="reference internal" href="#usage">Usage</a><ul>
<li><a class="reference internal" href="#locator">Locator</a></li>
<li><a class="reference internal" href="#settings">Settings</a></li>
<li><a class="reference internal" href="#seismicity-viewer">Seismicity Viewer</a></li>
</ul>
</li>
<li><a class="reference internal" href="#module-configuration">Module Configuration</a></li>
</ul>
</li>
</ul>
</div>
<div>
<h4>Previous topic</h4>
<p class="topless"><a href="global_md.html"
title="previous chapter">Md</a></p>
</div>
<div>
<h4>Next topic</h4>
<p class="topless"><a href="global_mlh.html"
title="next chapter">MLh</a></p>
</div>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../_sources/apps/global_nonlinloc.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="footer">
<div class="container">
<div class="horizontal layout content">
<a class="fade-in" href="https://www.gempa.de" target="_blank">
<img class="brand" src="../_static/brands/gempa.svg"/>
</a>
<div class="stretched align-center fitted content">
<div>
Version <b>6.9.0</b> Release
</div>
<div class="copyright">
Copyright &copy; gempa GmbH, GFZ Potsdam.
</div>
</div>
<a class="fade-in" href="https://www.gfz-potsdam.de" target="_blank">
<img class="brand" src="../_static/brands/gfz.svg"/>
</a>
</div>
</div>
</div>
</body>
</html>