当前位置: X-MOL 学术Comput. Phys. Commun. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Calculation of coefficients of transformations between three-particle hyperspherical harmonics
Computer Physics Communications ( IF 7.2 ) Pub Date : 2020-12-31 , DOI: 10.1016/j.cpc.2020.107817
Victor D. Efros

New versions of the program to calculate the three-particle hyperspherical brackets l1l2|l1l2KLφ are presented. Whereas the previous program, Efros (2020), computes the sets of brackets existing at given l1, l2, K, and L values, one of the present programs produces the set of all the brackets existing at L values in a range from Lmin up to Lmax and all K values of a given parity up to some Kmax. The other of the present programs provides the sets of all the brackets existing at given l1, l2, L values, and all K values of a given parity up to some Kmax. Use of such sets of brackets is more convenient. The present programs are considerably faster than the previous one, and they are also easier to follow. As the previous program, the present programs are easy to implement and are well applicable up to very high values of hypermomentum and orbital momenta.

New version program Summary

Program Title: BRACHH

CPC Library link to program files: http://dx.doi.org/10.17632/77kd74zy5k.2

Licensing provisions: GPLv3

Programming language: Fortran-90

Supplementary material: A file hhbrackets.pdf that describes the new version in more detail.

Journal Reference of previous version: Comput. Phys. Comm. 255 C (2020) 107281

Does the new version supersede the previous version?: No.

Nature of problem: Expansions of hyperspherical harmonics over harmonics similar in form but pertaining to different sets of Jacobi vectors are needed in the hyperspherical approach to solving three-body problems. A fast and convenient routine is to be created to construct the coefficients of such expansions, i.e., the brackets of the form l1l2|l1l2KLφ.

Solution method: A KK+2 type recursion [2] is employed to compute the brackets. To start the recursion, one needs the brackets with K values that are the lowest possible ones at given l1 and l2. Such brackets are calculated with the help of the explicit expression [2] that includes only few summations.

Reasons for new version: An opportunity to create versions of the program that are faster and provide outputs that are more convenient.

Summary of revisions: The brackets l1l2|l1l2KLφ are addressed. The notation here is as in Refs. [1, 2]. In the previous program, sets of brackets existing at given l1, l2, K, and L values are computed. In the present work, two versions of the program are given that provide different outputs and they are also faster. It is more convenient to use the present outputs. The present programs are also easier to follow.

One of the new versions of the program produces the “table” of all the brackets existing at L values in a range from Lmin up to Lmax and all K values of a given parity up to some Kmax. The corresponding output array of the brackets is of the form Brac(M,N,int(K2),M,N,L). Here M and N parametrize the l1 and l2 orbital momenta as follows, M=(l1+l2Lϵ)2 and N=(l1l2+Lϵ)2, where ϵ equals zero or unity when, respectively, KL is even or odd. The M and N variables parametrize the l1 and l2 orbital momenta in the same way. In difference to the orbital momenta variables, the M and N, or M and N, variables densely fill intervals independent of each other, 0M,M(KLϵ)2, and 0N,NLϵ. The size of the Brac array is normally moderate.

The other new version of the program provides sets of all the brackets existing at given l1, l2, L values, and all K values of a given parity up to some Kmax. The corresponding output arrays of the brackets are of the form Brac(M,N,int(K2)).

The present versions of the program are considerably faster than the previous one. The running times to produce all the brackets at a given L value and K values of a given parity up to Kmax are shorter e.g., hundreds of times at Kmax200 and several times at Kmax20. The decrease in running times is due both to the fact that now the output brackets are produced at each step of the KK+2 recursion procedure and to that some common ingredients of the brackets are calculated in advance. The number of the existing brackets, e.g., at even K values with K200 and L=10 is about 3.4107. The net time to compute these brackets, with the double precision being set, at use of a consumer notebook of 2009 is about one second.

The structures of the present routines are the following. In the first mentioned version, the brackets are produced by the subroutine named ALLHHBRAC whose parameters are Kmax, Lmin, Lmax, cosφ, sinφ, and Brac. ALLHHBRAC calls for the subroutines that calculate in advance the coefficients of the KK+2 recurrence formula and, up to simple factors, the brackets with K=l1+l2 that are required to start the recursion. The calculation in advance leads to the decrease of running times since the coefficients of the recurrence formula are independent of K, l1, and l2 values, and the initial brackets with K=l1+l2 depend on only three variables, l1, l2, and l1l2, up to simple factors. The subroutine calculating the latter brackets calls for the function that computes 3j symbols. The subroutine ALLHHBRAC calls also for a small subroutine providing subsidiary quantities like ln(I!), ln((2I+1)!!), etc. which are used in various places.

In the second mentioned version, the brackets are produced by the subroutine named HHBRAC. It calls for the routines similar to those that are called by ALLHHBRAC. The parameters of HHBRAC are Kmax, L, M, N, cosφ, sinφ, firstcall, and Brac. The M and N variables are equivalent to l1 and l2 and are defined above. The parameter firstcall is a logical variable aimed to suppress unnecessary calls, when HHBRAC is called repeatedly, of the above mentioned subroutine that produces the initial brackets with K=l1+l2. An example of use of this variable is given in the appended program TESTHHBRAC. (The unnecessary calls of two other above mentioned subroutines are then mostly removed as well. Times these subroutines run are relatively very small and this is unimportant.) It is seen that the present routines are very easy to implement.

Tests of the new versions of the program have been performed. The testing programs are appended. Besides the tests, these programs provide the commented examples of use of the ALLHHBRAC and HHBRAC routines. The tests are similar to those performed in Ref. [1]. In one of the tests the quantity is computed that may be viewed as an estimate of the relative round-off error of calculated brackets. At Kmax=200 this error proves to be some units of 109 in case of the double precision calculation. At lower Kmax values the error is much smaller.

A more detailed description of the programs and the calculations is given in the file hhbrackets.pdf appended to the programs. References

[1] V.D. Efros, Comput. Phys. Comm. 255 C (2020) 107281.

[2] Ja.A. Smorodinsky and V.D. Éfros, Yad. Fiz. 17, 210 (1973) [Sov. J. Nucl. Phys. 17, 107 (1973)].



中文翻译:

计算三粒子超球谐之间的转换系数

该程序的新版本可计算三粒子超球形括号 1个2|1个2ķ大号φ被提出。之前的程序Efros(2020)计算给定条件下存在的括号集合1个2ķ大号值,当前程序之一将生成存在于以下位置的所有括号的集合大号 值范围从 大号一世ñ 取决于 大号一种X 和所有 ķ 给定奇偶校验值的最大值 ķ一种X。本程序中的另一个程序提供给定条件下存在的所有括号的集合。1个2大号 值,以及所有 ķ 给定奇偶校验值的最大值 ķ一种X。使用此类支架更加方便。当前的程序比以前的程序要快得多,并且也很容易遵循。与以前的程序一样,本程序易于实现,并且可以很好地应用于超高动量和眼动量值。

新版本程序摘要

节目名称: BRACHH

CPC库链接到程序文件: http : //dx.doi.org/10.17632/77kd74zy5k.2

许可条款: GPLv3

编程语言: Fortran-90

补充材料:文件hhbrackets.pdf,详细描述了新版本。

先前版本的期刊参考:计算。物理 通讯 255 C(2020)107281

新版本会取代旧版本吗?:否。

问题的性质:在解决三体问题的超球面方法中,需要超球面谐波在形式上相似但与不同Jacobi向量集有关的谐波上展开。创建一个快速方便的例程来构造这种展开的系数,即形式的括号1个2|1个2ķ大号φ

解决方法: Aķķ+2类型递归[2]用于计算括号。要开始递归,需要使用方括号ķ 给定值是最低的值 1个2。此类括号是在仅包含少量求和的显式表达式[2]的帮助下计算的。

新版本的原因:一个机会来创建程序的版本更快,并提供更方便的输出。

修订摘要:方括号1个2|1个2ķ大号φ已解决。此处的符号与参考文献中的相同。[1,2]。在上一个程序中,给定的一组括号1个2ķ大号计算值。在当前工作中,给出了程序的两个版本,它们提供不同的输出,并且它们也更快。使用当前输出更为方便。本程序也更容易遵循。

该程序的新版本之一生成了存在于以下位置的所有括号的“表格”大号 值范围从 大号一世ñ 取决于 大号一种X 和所有 ķ 给定奇偶校验值的最大值 ķ一种X。括号的相应输出数组的格式为[R一种C中号ñ整型ķ2中号ñ大号。这里中号ñ 参数化 1个2 轨道动量如下 中号=1个+2-大号-ϵ2ñ=1个-2+大号-ϵ2,在哪里 ϵ 分别等于0或1 ķ-大号是偶数还是奇数。的中号ñ 变量参数化 1个2同样的轨道动量。与轨道动量变量不同,中号ñ, 要么 中号ñ,变量密集地填充彼此独立的间隔, 0中号中号ķ-大号-ϵ20ññ大号-ϵ。的大小[R一种C 数组通常是中等的。

该程序的另一个新版本提供给定条件下存在的所有括号的集合。 1个2大号 值,以及所有 ķ 给定奇偶校验值的最大值 ķ一种X。括号的相应输出数组的格式为[R一种C中号ñ整型ķ2

该程序的当前版本比以前的版本要快得多。在给定的条件下产生所有括号的运行时间大号 价值和 ķ 给定奇偶校验值的最大值 ķ一种X 较短,例如在数百倍 ķ一种X200 还有几次 ķ一种X20。运行时间的减少是由于这样一个事实,即现在在每个步骤中都生产出输出支架。ķķ+2递归过程,并事先计算出括号中的一些常用成分。现有括号的数量,例如,偶数ķ 值与 ķ200大号=10 关于 341个07。使用2009年的家用笔记本电脑计算时,设置了双精度后,计算这些括号的净时间约为一秒钟。

本例程的结构如下。在第一个提到的版本中,方括号由名为AL​​LHHBRAC的子例程产生,其子参数为ķ一种X大号一世ñ大号一种Xcosφφ[R一种C。ALLHHBRAC调用子例程,这些子例程预先计算出ķķ+2 递归公式,以及直到简单因素为止的方括号 ķ=1个+2开始递归所需的内容。由于递归公式的系数与以下公式无关,因此预先计算可减少运行时间ķ1个2 值,以及带有 ķ=1个+2 仅取决于三个变量, 1个21个-2,取决于简单因素。计算后方括号的子例程需要计算的函数3Ĵ符号。子例程ALLHHBRAC还需要一个小的子例程,以提供诸如ln一世ln2一世+1个等在各个地方使用。

在第二个提到的版本中,括号由名为HHBRAC的子例程产生。它要求的例程类似于ALLHHBRAC所调用的例程。HHBRAC的参数为ķ一种X大号中号ñcosφφF一世[RsŤC一种[R一种C。的中号ñ 变量等价于 1个2并在上面定义。参数F一世[RsŤC一种 是一个逻辑变量,旨在抑制重复调用HHBRAC时上述子例程的不必要调用,该子例程生成带有以下内容的初始方括号: ķ=1个+2。附加程序TESTHHBRAC中提供了使用此变量的示例。(然后,也将上面两个其他子例程的不必要调用也大部分删除了。这些子例程的运行时间相对较小,这并不重要。)可以看出,当前例程非常易于实现。

已对该程序的新版本进行了测试。附有测试程序。除了测试之外,这些程序还提供了使用ALLHHBRAC和HHBRAC例程的注释示例。这些测试与参考文献中进行的测试相似。[1]。在一项测试中,计算出的数量可以看作是计算出的括号的相对舍入误差的估计值。在ķ一种X=200 该错误证明是 1个0-9如果是双精度计算。在较低ķ一种X 值的误差要小得多。

程序所附的文件hhbrackets.pdf中提供了有关程序和计算的更详细说明。参考文献

[1] VD Efros,计算机。物理 通讯 255 C(2020)107281。

[2] Ja.A. Smorodinsky和VDÉfros,亚德。菲兹 17,210(1973)[SOV。J. 物理 ,第17卷,107页(1973)。

更新日期:2021-01-11
down
wechat
bug