TABLE OF CONTENTS
ABINIT/m_libpaw_defs [ Modules ]
NAME
m_libpaw_defs
FUNCTION
Several definitions used in libPAW: named constants, physical constants, datatypes
COPYRIGHT
Copyright (C) 2000-2022 ABINIT group This file is distributed under the terms of the GNU General Public License, see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt .
NOTES
This file comes directly from defs_basis.F90 module delivered with ABINIT. FOR DEVELOPPERS: in order to preserve the portability of libPAW library, please consult ~abinit/src/??_libpaw/libpaw-coding-rules.txt
SOURCE
22 module m_libpaw_defs 23 24 implicit none 25 26 !Double precision real/complex subtypes 27 !----------------------------------------------- 28 integer, parameter :: dp=kind(1.0d0) !Nb of bytes related to DP real numbers 29 integer, parameter :: dpc=kind((1.0_dp,1.0_dp)) !Nb of bytes related to DP complex numbers 30 31 !Real constants 32 !----------------------------------------------- 33 real(dp), parameter :: zero=0._dp 34 real(dp), parameter :: one=1._dp 35 real(dp), parameter :: two=2._dp 36 real(dp), parameter :: three=3._dp 37 real(dp), parameter :: four=4._dp 38 real(dp), parameter :: half=0.50_dp 39 real(dp), parameter :: third=one/three 40 real(dp), parameter :: quarter=0.25_dp 41 real(dp), parameter :: eighth=0.125_dp 42 real(dp), parameter :: sqrt2=1.4142135623730950488016887242096939_dp 43 real(dp), parameter :: sqrt3=1.7320508075688772935274463415058739_dp 44 real(dp), parameter :: sqrthalf=0.70710678118654752440084436210484697_dp 45 real(dp), parameter :: pi=3.141592653589793238462643383279502884197_dp 46 real(dp), parameter :: two_pi=two*pi 47 real(dp), parameter :: four_pi=four*pi 48 real(dp), parameter :: tol3= 0.001_dp 49 real(dp), parameter :: tol6= 0.000001_dp 50 real(dp), parameter :: tol8= 0.00000001_dp 51 real(dp), parameter :: tol9= 0.000000001_dp 52 real(dp), parameter :: tol10=0.0000000001_dp 53 real(dp), parameter :: tol12=0.000000000001_dp 54 real(dp), parameter :: tol14=0.00000000000001_dp 55 real(dp), parameter :: tol16=0.0000000000000001_dp 56 57 !Complex constants 58 !----------------------------------------------- 59 complex(dpc), parameter :: czero=(0._dp,0._dp) ! 0 (complex) 60 complex(dpc), parameter :: cone =(1._dp,0._dp) ! 1 (complex) 61 62 !Character constants 63 !----------------------------------------------- 64 character(len=1), parameter :: ch10 = char(10) ! carriage return 65 integer, parameter :: fnlen=264 ! maximum length of file name variables 66 integer, parameter :: strlen=2000000 ! maximum length of input string 67 68 !UNIX unit numbers 69 !----------------------------------------------- 70 integer, save :: ab_out= 7 ! output file 71 integer, save :: std_out=6 ! standard output 72 integer, parameter :: std_err=0 ! standard error 73 integer, parameter :: tmp_unit=9,tmp_unit2=10 ! units for temporary files 74 75 !Real physical constants 76 !----------------------------------------------- 77 real(dp), parameter :: Bohr_Ang=0.52917720859_dp ! 1 Bohr, in Angstrom 78 real(dp), parameter :: Ha_eV=27.21138386_dp ! 1 Hartree, in eV 79 real(dp), parameter :: InvFineStruct=137.035999679_dp ! Inverse of fine structure constant 80 real(dp), parameter :: FineStructureConstant2=0.000053251354478_dp ! Square of fine structure 81 82 !A collection of small datatypes for ragged arrays 83 !----------------------------------------------- 84 type coeffi1_type !A small datatype for ragged integer 1D-arrays 85 integer, allocatable :: value(:) 86 end type coeffi1_type 87 type coeff1_type !A small datatype for ragged real 1D-arrays 88 real(dp), allocatable :: value(:) 89 end type coeff1_type 90 type coeff2_type !A small datatype for ragged real 2D-arrays 91 real(dp), allocatable :: value(:,:) 92 end type coeff2_type 93 type coeff3_type !A small datatype for ragged real 3D-arrays 94 real(dp), allocatable :: value(:,:,:) 95 end type coeff3_type 96 97 !Small functions used in cpp macros 98 !----------------------------------------------- 99 public :: to_array 100 interface to_array 101 module procedure to_array1 102 module procedure to_array2 103 module procedure to_array3 104 module procedure to_array4 105 module procedure to_array5 106 module procedure to_array6 107 end interface to_array 108 109 contains 110 111 function to_array1(i1) result(arr) 112 113 integer :: i1,arr(1) 114 arr=(/i1/) 115 end function to_array1 116 117 function to_array2(i1,i2) result(arr) 118 119 integer :: i1,i2,arr(2) 120 arr=(/i1,i2/) 121 end function to_array2 122 123 function to_array3(i1,i2,i3) result(arr) 124 125 integer :: i1,i2,i3,arr(3) 126 arr=(/i1,i2,i3/) 127 end function to_array3 128 129 function to_array4(i1,i2,i3,i4) result(arr) 130 131 integer :: i1,i2,i3,i4,arr(4) 132 arr=(/i1,i2,i3,i4/) 133 end function to_array4 134 135 function to_array5(i1,i2,i3,i4,i5) result(arr) 136 137 integer :: i1,i2,i3,i4,i5,arr(5) 138 arr=(/i1,i2,i3,i4,i5/) 139 end function to_array5 140 141 function to_array6(i1,i2,i3,i4,i5,i6) result(arr) 142 143 integer :: i1,i2,i3,i4,i5,i6,arr(6) 144 arr=(/i1,i2,i3,i4,i5,i6/) 145 end function to_array6 146 147 end module m_libpaw_defs