anglib Module

Library of angular momentum coupling coefficient routines in fortran 90 Paul Stevenson, Oxford University/Oak Ridge National Laboratory. spaul@mail.phy.ornl.gov Modified by Robin Santra on 10/10/02 from single to double precision. Paul D. Stevenson's page (as of August 2023): https://openresearch.surrey.ac.uk/esploro/profile/paul_denis_stevenson/ ORCiD: 0000-0003-2645-2569 p.stevenson@surrey.ac.uk

Further information - Cleblet: Java implementation * P. D. Stevenson, "Analytic angular momentum coupling coefficient calculators," Computer Physics Communications 147(3), 853-858 (2002) doi: https://doi.org/10.1016/S0010-4655(02)00462-9 * source code: Elsevier Data Repository, doi: 10.17632/6v8ggwt3c6.1 - anglib_improved.f90: Fortran implementation modified by Emanuele Ballarin https://gist.github.com/emaballarin/c7a9dd0eba68f0ebb2f7f546ba1b93ac

Here is the license statement from anglib_improved.f90 (LGPLv3): anglib.f90: Angular momentum coupling coefficients for Q.M., in Fortran 9x Copyright (C) 1998 Paul Stevenson (idea, mainline code) 2018 Emanuele Ballarin (optimizations, porting)

This library is free software. You can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3, or (at your option) any later version.

This library is distributed in the hope that it could be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA



Functions

public pure function cleb(j1, m1, j2, m2, j, m)

calculate a clebsch-gordan coefficient arguments are integer and twice the true value.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: j1
integer, intent(in) :: m1
integer, intent(in) :: j2
integer, intent(in) :: m2
integer, intent(in) :: j
integer, intent(in) :: m

Return Value real(kind=8)

public pure function sixj(a, b, c, d, e, f)

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: a
integer, intent(in) :: b
integer, intent(in) :: c
integer, intent(in) :: d
integer, intent(in) :: e
integer, intent(in) :: f

Return Value real(kind=8)

public pure function angdelta(a, b, c)

calculate the function delta as defined in varshalovich et al. for use in 6-j symbol:

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: a
integer, intent(in) :: b
integer, intent(in) :: c

Return Value real(kind=8)

public pure function ninej(a, b, c, d, e, f, g, h, i)

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: a
integer, intent(in) :: b
integer, intent(in) :: c
integer, intent(in) :: d
integer, intent(in) :: e
integer, intent(in) :: f
integer, intent(in) :: g
integer, intent(in) :: h
integer, intent(in) :: i

Return Value real(kind=8)

public pure recursive function factorial(n) result(res)

calculated factorial

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n

integer number

Return Value real(kind=8)

result = n!

public pure recursive function binom(n, r) result(res)

calculates binomial

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n
integer, intent(in) :: r

Return Value real(kind=8)