Open main menu

Supporting instruments with non-standard responses

The nominal phase and amplitude response of a seismometer at different frequencies is described by a set of numbers known as the "poles and zeros" of the transfer functionSeismometers operated within their limits can be modelled as linear, time-invariant (LTI) systems where the transfer function is the ratio of the Laplace transform of the output to that of the input. The transfer function is thus the ratio of two complex polynomials, the roots of which provide complete information about the response of the instrument. The poles are the roots of the denominator polynomial and the zeros are the roots of the numerator polynomial.. When you measure the response of an instrument using a broadband noise calibration, the Scream! calibration add-on can display the nominal response curves on the same graphs as the measured response curves. It does this by looking up the RESPONSE CODE in an internal database. You can specify the response code each time you perform a calibration or you can program it once into the digitiser by using InfoBlocks.

Some instruments have non-standard responses which are not contained in the database. A facility exists to extend the database: this allows you to work with instruments that are not supported by the standard Scream distribution.

If a Scream! add-on cannot find a response code in its internal database, it looks for a file called polezero.txt. This file contains one or more specifications: each specification gives the correct poles and zeros to use for a given response code. A typical specification looks like this:

[CMG-40_5s_100Hz Velocity] Z= 0, 0 P= -75, -62.3816+135.392j, -62.3816-135.392j, -143.6E-3+143.6E-3j, -143.6E-3-143.6E-3j, -350 A= 585.8e6 units= Hz

It consists of a number of elements:

The file can include comment lines, which must start with a # character.

Real poles and zeros can be specified as simple integers (e.g.  50), decimal numbers (e.g. 50.12) or in engineering notation (e.g. 1.23e-6 to represent 1.23×10-6).

Complex poles are specified as the sum of a real and an imaginary element. Imaginary elements should be identified with a trailing 'j',s such as 1.2j. Both can be specified as simple integers (e.g.  50), decimal numbers (e.g. 50.12) or in engineering notation (e.g. 1.23e-6 to represent 1.23×10-6).


You wish to connect a ABC123 geophone to a DM24 digitiser and view the output in Scream. You would like to check the calibration but there is no suitable response code available.

According to the manufacturer, the ABC123 is a velocimeter. Its transfer function has two zeros, both at the origin, and a complex conjugate pair of poles at 0.707±0.707i Hz. The normalisation factor at 1 Hertz is unity.

To support this instrument, we will create a new response code and specify a velocity response for it. Go to the directory in which the Scream! executable resides (see Locating scream.ini to discover where this file is located on your system) and open the file polezero.txt in your favourite text editor. If the file does not exist, create it.

We first add a line to start a new specification. We can call our new response code anything we want, but it is important that the name we choose does not match any of the existing response codes in the database. We can avoid this by prefixing our code with X_ so lets choose X_ABC123. It is a velocity response so we type

[X_ABC123 Velocity]

This is the title of the specification and the following parameters will be used by Scream whenever a response code of X_ABC123 is given for a velocity response. We could have just typed V or Vel instead of Velocity but omitting this specifier is a frequent cause of errors, so we'll stick with the long form, which is harder to miss. We could also have typed A, Acc or Acceleration for an instrument with an acceleration response, D or Displacement for an instrument with a displacement response or P and pressure for a barometer or DPG.

We now need to specify the zeros. There are two zeros, both at the origin, so we type

Z= 0, 0

We now need to specify the poles. There is one pair of complex conjugate poles which we must list individually, so we type

P= 707E-3+707E-3j, 707E-3-707E-3j

We now need to specify the normalisation factor. This is unity at 1 Hz, so we type

A= 1

Lastly, we specify the units, which are Hertz in this case, so we type


Putting all of this together with an appropriate comment, the specification looks like

[X_ABC123 Velocity] # From manufacturer's data-sheet, retrieved on May 10th, 2012 Z= 0, 0 P= 707E-3+707E-3j, 707E-3-707E-3j A= 1 units=Hz

Once the polezero.txt file has been saved, we can start using X_ABC123 exactly as we would use any other velocity response code.

This has been just a brief introduction to the facility. If you need additional information about this subject, please contact .