ARTS 2.5.11 (git: 6827797f)
wigner_functions.cc File Reference

Wigner symbol interactions. More...

#include "wigner_functions.h"
#include <sys/errno.h>
#include <algorithm>
#include "arts_omp.h"
#include "arts_conversions.h"
#include "debug.h"

Go to the source code of this file.

Macros

#define WIGNER3   wig3jj
 
#define WIGNER6   wig6jj
 

Functions

Numeric wigner3j (const Rational j1, const Rational j2, const Rational j3, const Rational m1, const Rational m2, const Rational m3)
 Wigner 3J symbol.
 
Numeric wigner6j (const Rational j1, const Rational j2, const Rational j3, const Rational l1, const Rational l2, const Rational l3)
 Wigner 6J symbol.
 
std::pair< Rational, Rational > wigner_limits (std::pair< Rational, Rational > a, std::pair< Rational, Rational > b)
 
Index make_wigner_ready (int largest, int fastest, int size)
 Ready Wigner.
 
bool is_wigner_ready (int j)
 Tells if the function can deal with the input integer.
 
bool is_wigner3_ready (const Rational &J)
 Tells if the function is ready for Wigner 3J calculations.
 
bool is_wigner6_ready (const Rational &J)
 Tells if the function is ready for Wigner 6J calculations.
 
Numeric dwigner3j (Index M, Index J1, Index J2, Index J)
 Computes the wigner 3J symbol with floating point precision.
 
Numeric dwigner6j (Index A, Index B, Index C, Index D, Index F)
 Computes the wigner 6J symbol with floating point precision.
 

Detailed Description

Wigner symbol interactions.

Author
Richard Larsson
Date
2013-06-19

Definition in file wigner_functions.cc.

Macro Definition Documentation

◆ WIGNER3

#define WIGNER3   wig3jj

Definition at line 23 of file wigner_functions.cc.

◆ WIGNER6

#define WIGNER6   wig6jj

Definition at line 24 of file wigner_functions.cc.

Function Documentation

◆ dwigner3j()

Numeric dwigner3j ( Index  M,
Index  J1,
Index  J2,
Index  J 
)

Computes the wigner 3J symbol with floating point precision.

 /               \
 |  J1   J2   J  |

output = | | | M -M 0 | \ /

Parameters
MInput as above
J1Input as above
J2Input as above
JInput as above
Returns
Numeric

Definition at line 152 of file wigner_functions.cc.

◆ dwigner6j()

Numeric dwigner6j ( Index  A,
Index  B,
Index  C,
Index  D,
Index  F 
)

Computes the wigner 6J symbol with floating point precision.

 /             \
 |  A   B   1  |

output = < > | D C F | \ /

Parameters
AInput as above
BInput as above
CInput as above
DInput as above
FInput as above
Returns
Numeric

Definition at line 196 of file wigner_functions.cc.

References pow_negative_one().

◆ is_wigner3_ready()

bool is_wigner3_ready ( const Rational &  J)

Tells if the function is ready for Wigner 3J calculations.

Parameters
[in]JLargest input into a Wigner 3J function call
Returns
true If is_wigner_ready(3J + 1) does
false Otherwise

Definition at line 142 of file wigner_functions.cc.

References is_wigner_ready().

Referenced by lbl_checkedCalc().

◆ is_wigner6_ready()

bool is_wigner6_ready ( const Rational &  J)

Tells if the function is ready for Wigner 6J calculations.

Parameters
[in]JLargest input into a Wigner 6J function call
Returns
true If is_wigner_ready(4J + 1)
false Otherwise

Definition at line 147 of file wigner_functions.cc.

References is_wigner_ready().

◆ is_wigner_ready()

bool is_wigner_ready ( int  j)

Tells if the function can deal with the input integer.

Parameters
[in]j
Returns
true If j is less than max allowed j
false Otherwise

Definition at line 137 of file wigner_functions.cc.

Referenced by is_wigner3_ready(), and is_wigner6_ready().

◆ make_wigner_ready()

Index make_wigner_ready ( int  largest,
int  fastest,
int  size 
)

Ready Wigner.

Parameters
[in]largest
[in]fastest
[in]size[3 or 6]
Returns
largest if successful

Definition at line 102 of file wigner_functions.cc.

Referenced by Wigner3Init(), and Wigner6Init().

◆ wigner3j()

Numeric wigner3j ( const Rational  j1,
const Rational  j2,
const Rational  j3,
const Rational  m1,
const Rational  m2,
const Rational  m3 
)

Wigner 3J symbol.

Run wigxjpf wig3jj for Rational symbol

/ \

j1 j2 j3
m1 m2 m3

\ /

See for definition: http://dlmf.nist.gov/34.2

Parameters
[in]j1as above
[in]j2as above
[in]j3as above
[in]m1as above
[in]m2as above
[in]m3as above
Returns
Numeric Symbol value

Definition at line 27 of file wigner_functions.cc.

References a, ARTS_USER_ERROR, b, c, d, and WIGNER3.

Referenced by Absorption::reduced_rovibrational_dipole(), Absorption::LineMixing::LinearRovibErrorCorrectedSudden::relaxation_matrix_offdiagonal(), and Zeeman::Model::Strength().

◆ wigner6j()

Numeric wigner6j ( const Rational  j1,
const Rational  j2,
const Rational  j3,
const Rational  l1,
const Rational  l2,
const Rational  l3 
)

Wigner 6J symbol.

Run wigxjpf wig6jj for Rational symbol

/ \ | j1 j2 j3 | < > | l1 l2 l3 | \ /

See for definition: http://dlmf.nist.gov/34.4

Parameters
[in]j1as above
[in]j2as above
[in]j3as above
[in]l1as above
[in]l2as above
[in]l3as above
Returns
Numeric Symbol value

Definition at line 59 of file wigner_functions.cc.

References a, ARTS_USER_ERROR, b, c, d, and WIGNER6.

Referenced by Absorption::LineMixing::Makarov2020etal::reduced_dipole(), Absorption::reduced_magnetic_quadrapole(), and Absorption::LineMixing::LinearRovibErrorCorrectedSudden::relaxation_matrix_offdiagonal().

◆ wigner_limits()

std::pair< Rational, Rational > wigner_limits ( std::pair< Rational, Rational >  a,
std::pair< Rational, Rational >  b 
)

Refine limits from multiple inputs

Parameters
[in]aA limit
[in]aAnother limit
Returns
[low, high] for valid ranges of numbers or two undefined rationals

Definition at line 89 of file wigner_functions.cc.

References a, b, max(), and min().

Referenced by Absorption::LineMixing::Makarov2020etal::relaxation_matrix_offdiagonal().