mirror of
https://gitlab.com/scemama/eplf
synced 2024-12-22 12:23:50 +01:00
Added types.h
This commit is contained in:
parent
a7867c90d9
commit
dc47a48108
27
LICENSE
Normal file
27
LICENSE
Normal file
@ -0,0 +1,27 @@
|
||||
All IRPF90 requestors MUST agree to the following license agreement which
|
||||
covers all versions of IRPF90 (source code and binaries).
|
||||
|
||||
With regard to the IRP Fortran90 preprocessor IRPF90, together with its
|
||||
associated utility programs, with which you have supplied me a
|
||||
copy, I agree to the following conditions:
|
||||
|
||||
1. I will not supply a copy of the code to anyone outside my institution or
|
||||
corporation for any reason whatsoever. Instead, I will refer any requests for
|
||||
copies of the program to Anthony Scemama at CNRS. This in no way limits my making of
|
||||
copies of the code for backup purposes, or for running on more than one
|
||||
computer system at my institution or home.
|
||||
|
||||
2. I understand that copyright or ownership rights to IRPF90 are retained by
|
||||
Anthony Scemama and CNRS to the IRPF90 package. I will not incorporate any part
|
||||
of IRPF90 into any other program system, either for sale or for non-profit
|
||||
distribution, without written permission from Anthony Scemama and CNRS,
|
||||
|
||||
3. I understand that no large program such as IRPF90 can be considered to be
|
||||
bug free, and accordingly Anthony Scemama and the CNRS supplies the IRPF90 software on an "as is"
|
||||
basis, with no additional responsibility or liability,
|
||||
|
||||
4. This license is considered a "Research Group" license. Thus anyone
|
||||
directly associated with your research group is covered by the license and may
|
||||
share your copy of IRPF90 on all of your group's computer resources.
|
||||
|
||||
|
6
Makefile
6
Makefile
@ -8,9 +8,9 @@ FCFLAGS= -O3 -g
|
||||
#FCFLAGS= -O3 -ffast-math -L ~/QCIO/lib
|
||||
|
||||
# Mono
|
||||
IRPF90 = irpf90
|
||||
FC = ifort -static-intel -static-libgcc
|
||||
FCFLAGS= -O3 -axP
|
||||
#IRPF90 = irpf90
|
||||
#FC = ifort -static-intel -static-libgcc
|
||||
#FCFLAGS= -O3 -axP
|
||||
|
||||
SRC=
|
||||
OBJ=
|
||||
|
98
Util.irp.f
Normal file
98
Util.irp.f
Normal file
@ -0,0 +1,98 @@
|
||||
|
||||
double precision function Boys(x,n)
|
||||
implicit none
|
||||
include 'constants.F'
|
||||
|
||||
real, intent(in) :: x
|
||||
integer, intent(in) :: n
|
||||
|
||||
integer :: k
|
||||
|
||||
real, parameter :: thr = 6.
|
||||
integer ,parameter :: Nmax = 20
|
||||
|
||||
double precision :: fact,fact2
|
||||
|
||||
if (n == 0) then
|
||||
if (x > thr) then
|
||||
Boys = 0.5d0*sqrt(pi/x)
|
||||
else
|
||||
Boys = 1.d0/dble(2*n+1)
|
||||
do k=1,Nmax
|
||||
Boys = Boys + (-x)**k/dble(fact(k)*(2*n+2*k+1))
|
||||
enddo
|
||||
|
||||
endif
|
||||
|
||||
else
|
||||
if (x > thr) then
|
||||
Boys = fact2(2*n-1)*0.5d0**(n+1)*sqrt(pi/x**(2*n+1))
|
||||
else
|
||||
Boys = 1.d0/dble(2*n+1)
|
||||
do k=1,Nmax
|
||||
Boys = Boys + (-x)**k/dble(fact(k)*(2*n+2*k+1))
|
||||
enddo
|
||||
endif
|
||||
endif
|
||||
|
||||
end function
|
||||
|
||||
double precision function fact2(n)
|
||||
implicit none
|
||||
integer :: n
|
||||
double precision, save :: memo(1:100)
|
||||
integer, save :: memomax = 1
|
||||
|
||||
ASSERT (mod(n,2) /= 0)
|
||||
if (n<=memomax) then
|
||||
if (n<3) then
|
||||
fact2 = 1.d0
|
||||
else
|
||||
fact2 = memo(n)
|
||||
endif
|
||||
return
|
||||
endif
|
||||
|
||||
integer :: i
|
||||
memo(1) = 1.d0
|
||||
do i=memomax+2,min(n,99),2
|
||||
memo(i) = memo(i-2)* float(i)
|
||||
enddo
|
||||
memomax = min(n,99)
|
||||
fact2 = memo(memomax)
|
||||
|
||||
do i=101,n,2
|
||||
fact2 = fact2*float(i)
|
||||
enddo
|
||||
|
||||
end function
|
||||
|
||||
|
||||
double precision function fact(n)
|
||||
implicit none
|
||||
integer :: n
|
||||
double precision, save :: memo(1:100)
|
||||
integer, save :: memomax = 1
|
||||
|
||||
if (n<=memomax) then
|
||||
if (n<2) then
|
||||
fact = 1.d0
|
||||
else
|
||||
fact = memo(n)
|
||||
endif
|
||||
return
|
||||
endif
|
||||
|
||||
integer :: i
|
||||
memo(1) = 1.d0
|
||||
do i=memomax+1,min(n,100)
|
||||
memo(i) = memo(i-1)*float(i)
|
||||
enddo
|
||||
memomax = min(n,100)
|
||||
fact = memo(memomax)
|
||||
do i=101,n
|
||||
fact = fact*float(i)
|
||||
enddo
|
||||
end function
|
||||
|
||||
|
18
ao.irp.f
18
ao.irp.f
@ -134,20 +134,6 @@ END_PROVIDER
|
||||
|
||||
END_PROVIDER
|
||||
|
||||
double precision function ddfact2(n)
|
||||
implicit none
|
||||
integer :: n
|
||||
|
||||
ASSERT (mod(n,2) /= 0)
|
||||
|
||||
integer :: i
|
||||
ddfact2 = 1.
|
||||
do i=1,n,2
|
||||
ddfact2 = ddfact2 * float(i)
|
||||
enddo
|
||||
|
||||
end function
|
||||
|
||||
double precision function rintgauss(n)
|
||||
implicit none
|
||||
|
||||
@ -163,9 +149,9 @@ double precision function rintgauss(n)
|
||||
else if ( mod(n,2) == 1) then
|
||||
rintgauss = 0.
|
||||
else
|
||||
double precision :: ddfact2
|
||||
double precision :: fact2
|
||||
rintgauss = rintgauss/(2.**(n/2))
|
||||
rintgauss = rintgauss * ddfact2(n-1)
|
||||
rintgauss = rintgauss * fact2(n-1)
|
||||
endif
|
||||
end function
|
||||
|
||||
|
14
types.F
Normal file
14
types.F
Normal file
@ -0,0 +1,14 @@
|
||||
integer, parameter :: t_Gaussian = 1
|
||||
integer, parameter :: t_Slater = 2
|
||||
|
||||
integer, parameter :: t_Brownian = 3
|
||||
integer, parameter :: t_Langevin = 4
|
||||
|
||||
integer, parameter :: t_VMC = 5
|
||||
integer, parameter :: t_DMC = 6
|
||||
integer, parameter :: t_CI = 7
|
||||
|
||||
character*(32) :: types(t_CI) = &
|
||||
(/ "Gaussian", "Slater", "Brownian", "Langevin", &
|
||||
"VMC", "DMC", "CI" /)
|
||||
|
Loading…
Reference in New Issue
Block a user