Welcome to the Exelis VIS product documentation center! Here you will find reference guides, help documents, and product libraries. Discover the products ENVI, IDL, ENVI LiDAR, and ESE, developed by Exelis VIS.
﻿

### VOIGT

VOIGT

The VOIGT function returns the value of the classical Voigt function, H(a, u), defined in terms of the Voigt damping parameter a and the frequency offset u:

The dimensionless frequency offset u and the damping parameter a are determined by:

where ν0 is the line center frequency and the Doppler width ΔνD (assuming no turbulence), is defined as:

and, Γ is the transition rate:

where γ is the spontaneous decay rate, and νcol is the atomic collision rate. (See Radiative Processes in Astrophysics by G. B. Rybicki and A. P. Lightman (1979) p. 291 for more information.)

The Voigt function can be used to compute the intensity of an atomic absorption line profile (also known as a VOIGT profile). The line profile φ(a, u) is defined as:

The algorithm is from Armstrong, JQSRT 7, 85. (1967). The definition of the classical Voigt function H(a,u) can be found in Equation 7.4.13 of Abramowitz, M. and Stegun, I.A., 1964, Handbook of Mathematical Functions (Washington:National Bureau of Standards).

## Syntax

Result = VOIGT(A, U)

## Return Value

If both arguments are scalars, the function returns a scalar. If both arguments are arrays, the function matches up the corresponding elements of A and U, returning an array with the same dimensions as the smallest array. If one argument is a scalar and the other argument is an array, the function uses the scalar value with each element of the array, and returns an array with the same dimensions as the smallest input array. If A is double-precision, the result is double-precision, otherwise the result is single-precision.

## Arguments

### A

A scalar or array specifying the values for the Voigt damping parameter.

### U

A scalar or array specifying the values for the dimensionless frequency offset in Doppler widths.

## Keywords

### Thread Pool Keywords

This routine is written to make use of IDL’s thread pool, which can increase execution speed on systems with multiple CPUs. The values stored in the !CPU system variable control whether IDL uses the thread pool for a given computation. In addition, you can use the thread pool keywords TPOOL_MAX_ELTS, TPOOL_MIN_ELTS, and TPOOL_NOTHREAD to override the defaults established by !CPU for a single invocation of this routine. See Thread Pool Keywords for details.

## Version History

 Pre-4.0 Introduced

﻿

## Notes

Alain
this documentation is slightly misleading:

1/ if A or U are Double, then outputs are in double

2/ if A or U are arrays with a single element (e.g. [1]) and the other one is a full array with N elements, the result, a N elements array, is equivalent to compute first value with input singleton (e.g. "1") and the others with random values (same for Besel family).

IDL> print, voigt(1,[0,1,2]), voigt([1,1,1],[0,1,2.]), voigt([1],[0,1,2.])
0.427584 0.304745 0.140240
0.427584 0.304745 0.140240
0.427584 0.0425543 0.0418419

It would be great to change this dangerous behavior !

Alain
29th April 2014 6:51am
Chris
Good catch. This will be fixed in the next IDL version. If you pass in a 1-element array for either argument, it will only return a single value.
29th April 2014 2:49pm
Page 1 of 1  (2 comments)

###### This information is not subject to the controls of the International Traffic in Arms Regulations (ITAR) or the Export Administration Regulations (EAR). However, it may be restricted from transfer to various embargoed countries under U.S. laws and regulations.
 PRODUCTS & SERVICES ENVI IDL Professional Services

 INDUSTRIES Defense & Intelligence Environmental Monitoring Academic
 LEARN Code Videos Events & Training Case Studies Whitepapers Resources
 SUPPORT Forums Help Articles Reference Guides Updates & Maintenance
 COMPANY Mission Careers Press Room Legal Exelis, Inc
© 2014 Exelis Visual Information Solutions