HOTB: High precision parallel code for calculation of four-particle harmonic oscillator transformation brackets
This new version of the HOTB program for calculation of the three and four particle harmonic oscillator transformation brackets provides some enhancements and corrections to the earlier version (Germanas etal., 2010) [1]. In particular, new version allows calculations of harmonic oscillator transformation brackets be performed in parallel using MPI parallel communication standard. Moreover, higher precision of intermediate calculations using GNU Quadruple Precision and arbitrary precision library FMLib [2] is done. A package of Fortran code is presented. Calculation time of large matrices can be significantly reduced using effective parallel code. Use of Higher Precision methods in intermediate calculations increases the stability of algorithms and extends the validity of used algorithms for larger input values. Title of program: HOTB_MPI Catalogue identifier: AEFQ_v4_0 Program summary URL: http://cpc.cs.qub.ac.uk/summaries/AEFQ_v4_0.html Program obtainable from: CPC Program Library, Queens University of Belfast, N. Ireland Licensing provisions: GNU General Public License, version 3 Number of lines in programs, including test data, etc.: 1711 Number of bytes in distributed programs, including test data, etc.: 11667 Distribution format: tar.gz Program language used: FORTRAN 90 with MPI extensions for parallelism Computer: Any computer with FORTRAN 90 compiler Operating system: Windows, Linux, FreeBSD, True64 Unix Has the code been vectorized of parallelized?: Yes, parallelism using MPI extensions. Number of CPUs used: up to 999 RAM(per CPU core): Depending on allocated binomial and trinomial matrices and use of precision; at least 500 MB Catalogue identifier of previous version: AEFQ_v1_0 Journal reference of previous version: Comput. Phys. Comm. 181, Issue 2, (2010) 420425 Does the new version supersede the previous version? Yes Nature of problem: Calculation of matrices of three-particle harmonic oscillator brackets (3HOB) and four-particle harmonic oscillator brackets (4HOB) in a more effective way, which allows us to calculate matrix of the brackets up to a few hundred times more rapidly and more accurate than in a previous version. Solution method: Using external parallelization libraries and mutable precision we created a pack of numerical codes based on the methods of compact expressions of the three and four-particle harmonics oscillator brackets 3HOB, 4HOB, presented in [3]. Restrictions: For double precision version calculations can be done up to harmonic oscillator (HO) energy quanta e=28 e = 28 . For quadruple precision mantissa is equal to approximately 34 decimal digits, therefore calculations can be done up to HO energy quanta to e=52 e = 52 . Running time: The running time depends on the harmonic oscillator energy quanta, cluster size and the precision of intermediate calculations. More information on Table1 for 3HOB and Table2 for 4HOB. Reasons for a new version: The new program version expands the limits of harmonic oscillator energy quanta and gives shorter calculation time. Summary of revisions: Additional features of new code HOTB_MPI: Extend the limits of calculation of HOB First version was able to produce harmonic oscillator transformation brackets for three and four particles if E?HO energy quanta. With this version of our program, if quadruple or arbitrary precision functions are being used, it is possible to calculate three and four particle harmonic oscillator transformation brackets for greater values of energy and momenta, while sustaining tolerable margin of error. Calculation time As the code of previous version of program was redone using parallelism paradigma, it is now possible to reduce the calculation time of transformation matrices significantly, depending on the size of computing cluster, as the dimensions of matrices are growing very rapidly according to the energy and momenta values. Modifications or corrections to HOTB: New program HOTB_MPI is written in the FORTRAN 90 language, according to formulas described in [3]. In total there are six files: HOTB_mpi.f90, data_module.f90, matrix_tools.f90, dp_module.f90, qd_module.f90, and fm_module.f90. File HOTB_mpi.f90 contains main program for executing calculations. File data_module.f90 contains different kind of precision matrices for storage of binomial and trinomial values and also additional parameters. Detailed descriptions of parameters used by functions and subroutines are located in file README.txt. File matrix_tools.f90 contains functions needed to determine the dimensions of matrix, creation of state array and parallel calculation of desired matrix. matrix_tools.f90 subroutinematrix_4HOB_dimension Calculates the dimension of 4HOB matrix. subroutinematrix_3HOB_dimension Calculates the dimension of 3HOB matrix, subroutinematrix_3HOB Calculates the global state array which is used in parallel calculation of 3HOB matrix. subroutinematrix_4HOB Calculates the global state array which is used in parallel calculation of 4HOB matrix. subroutinestate_array_3HOB Creates state array for 3HOB matrix output. subroutinestate_array_4HOB Creates state array for 4HOB matrix output. subroutinecalculate_3HOB Performs parallel calculations of 3HOB matrix. subroutinecalculate_4HOB Performs parallel calculations of 4HOB matrix. *_module.f90 files contain modules for calculations respectively to the precision that is going to be used. We describe only functions of module dp_module.f90 as other modules are created replicating the structure of dp_module, except arbitrary precision module, which has several functions which will be described below. The naming convention for qd_module and fm_module is the same except that respectively qd_ and fm_ prefixes are added to function names. dp_module.f90 double precision functiondp_4HOB Calculates matrix element for 4HOB. subroutinedp_binom Fills the array of binomial coefficients. subroutinedp_trinom Fills the array of trinomial coefficients. integer functiontri Function for triangle condition testing. double precision functiondp_c6j Function for 6-j coefficient calculation. double precision functiondp_c9j Function for 9-j coefficient calculation double precision functiondp_kl0 Function for ClebschGordan coefficient with zero projection calculation. double precision functiondp_g Function for gamma element calculation. double precision functiondp_3HOB Calculates three particle harmonic oscillator transformation bracket. Additional functions located in fm_module.f90, which are required for arbitrary precision calculation: fm_module.f90 type(fm) functionbinomas Function for calculation of binomial value using FMLIB function Binomial. type(fm) functionaccess_binom Function for accessing triangular binomial matrix fm_bin. type(fm) functioncheck_bin Function for checking if required binomial value is located in matrix fm_bin. If not, the value is calculated using FMLIB function Binomial. subroutinewrite_binom Function for writing calculated binomial value to triangular matrix fm_bin.
mathematical methods in physics algebraic methods nuclear shell model