mirror of
https://github.com/QuantumPackage/qp2.git
synced 2025-01-02 08:35:38 +01:00
added the possibility to use no_vvvv integrals from EZFIO
This commit is contained in:
parent
61df4e01df
commit
e864eb1cf3
@ -14,3 +14,22 @@ type: double precision
|
|||||||
doc: threshold on the weight of a given grid point
|
doc: threshold on the weight of a given grid point
|
||||||
interface: ezfio,provider,ocaml
|
interface: ezfio,provider,ocaml
|
||||||
default: 1.e-20
|
default: 1.e-20
|
||||||
|
|
||||||
|
[my_grid_becke]
|
||||||
|
type: logical
|
||||||
|
doc: if True, the number of angular and radial grid points are read from EZFIO
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: False
|
||||||
|
|
||||||
|
[my_n_pt_r_grid]
|
||||||
|
type: integer
|
||||||
|
doc: Number of radial grid points given from input
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: 300
|
||||||
|
|
||||||
|
[my_n_pt_a_grid]
|
||||||
|
type: integer
|
||||||
|
doc: Number of angular grid points given from input. Warning, this number cannot be any integer. See file list_angular_grid
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: 1202
|
||||||
|
|
||||||
|
@ -8,7 +8,8 @@
|
|||||||
!
|
!
|
||||||
! These numbers are automatically set by setting the grid_type_sgn parameter
|
! These numbers are automatically set by setting the grid_type_sgn parameter
|
||||||
END_DOC
|
END_DOC
|
||||||
select case (grid_type_sgn)
|
if(.not.my_grid_becke)then
|
||||||
|
select case (grid_type_sgn)
|
||||||
case(0)
|
case(0)
|
||||||
n_points_radial_grid = 23
|
n_points_radial_grid = 23
|
||||||
n_points_integration_angular = 170
|
n_points_integration_angular = 170
|
||||||
@ -25,6 +26,10 @@ select case (grid_type_sgn)
|
|||||||
write(*,*) '!!! Quadrature grid not available !!!'
|
write(*,*) '!!! Quadrature grid not available !!!'
|
||||||
stop
|
stop
|
||||||
end select
|
end select
|
||||||
|
else
|
||||||
|
n_points_radial_grid = my_n_pt_r_grid
|
||||||
|
n_points_integration_angular = my_n_pt_a_grid
|
||||||
|
endif
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [integer, n_points_grid_per_atom]
|
BEGIN_PROVIDER [integer, n_points_grid_per_atom]
|
||||||
|
32
src/becke_numerical_grid/list_angular_grid
Normal file
32
src/becke_numerical_grid/list_angular_grid
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
0006
|
||||||
|
0014
|
||||||
|
0026
|
||||||
|
0038
|
||||||
|
0050
|
||||||
|
0074
|
||||||
|
0086
|
||||||
|
0110
|
||||||
|
0146
|
||||||
|
0170
|
||||||
|
0194
|
||||||
|
0230
|
||||||
|
0266
|
||||||
|
0302
|
||||||
|
0350
|
||||||
|
0434
|
||||||
|
0590
|
||||||
|
0770
|
||||||
|
0974
|
||||||
|
1202
|
||||||
|
1454
|
||||||
|
1730
|
||||||
|
2030
|
||||||
|
2354
|
||||||
|
2702
|
||||||
|
3074
|
||||||
|
3470
|
||||||
|
3890
|
||||||
|
4334
|
||||||
|
4802
|
||||||
|
5294
|
||||||
|
5810
|
@ -5,6 +5,7 @@ program casscf
|
|||||||
END_DOC
|
END_DOC
|
||||||
call reorder_orbitals_for_casscf
|
call reorder_orbitals_for_casscf
|
||||||
no_vvvv_integrals = .True.
|
no_vvvv_integrals = .True.
|
||||||
|
touch no_vvvv_integrals
|
||||||
pt2_max = 0.02
|
pt2_max = 0.02
|
||||||
SOFT_TOUCH no_vvvv_integrals pt2_max
|
SOFT_TOUCH no_vvvv_integrals pt2_max
|
||||||
call run_stochastic_cipsi
|
call run_stochastic_cipsi
|
||||||
|
@ -11,3 +11,9 @@ interface: ezfio,provider,ocaml
|
|||||||
default: 1.e-15
|
default: 1.e-15
|
||||||
ezfio_name: threshold_mo
|
ezfio_name: threshold_mo
|
||||||
|
|
||||||
|
[no_vvvv_integrals]
|
||||||
|
type: logical
|
||||||
|
doc: If `True`, computes all integrals except for the integrals having 3 or 4 virtual indices
|
||||||
|
interface: ezfio,provider,ocaml
|
||||||
|
default: false
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
BEGIN_PROVIDER [ logical, no_vvvv_integrals ]
|
!BEGIN_PROVIDER [ logical, no_vvvv_integrals ]
|
||||||
implicit none
|
! implicit none
|
||||||
BEGIN_DOC
|
! BEGIN_DOC
|
||||||
! If `True`, computes all integrals except for the integrals having 3 or 4 virtual indices
|
! If `True`, computes all integrals except for the integrals having 3 or 4 virtual indices
|
||||||
END_DOC
|
! END_DOC
|
||||||
|
!
|
||||||
no_vvvv_integrals = .False.
|
! no_vvvv_integrals = .False.
|
||||||
END_PROVIDER
|
!END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, mo_coef_novirt, (ao_num,n_core_inact_act_orb) ]
|
BEGIN_PROVIDER [ double precision, mo_coef_novirt, (ao_num,n_core_inact_act_orb) ]
|
||||||
implicit none
|
implicit none
|
||||||
@ -56,6 +56,8 @@ subroutine four_idx_novvvv
|
|||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Retransform MO integrals for next CAS-SCF step
|
! Retransform MO integrals for next CAS-SCF step
|
||||||
END_DOC
|
END_DOC
|
||||||
|
print*,'Using partial transformation'
|
||||||
|
print*,'It will not transform all integrals with at least 3 indices within the virtuals'
|
||||||
integer :: i,j,k,l,n_integrals
|
integer :: i,j,k,l,n_integrals
|
||||||
double precision, allocatable :: f(:,:,:), f2(:,:,:), d(:,:), T(:,:,:,:), T2(:,:,:,:)
|
double precision, allocatable :: f(:,:,:), f2(:,:,:), d(:,:), T(:,:,:,:), T2(:,:,:,:)
|
||||||
double precision, external :: get_ao_two_e_integral
|
double precision, external :: get_ao_two_e_integral
|
||||||
|
@ -75,7 +75,6 @@ subroutine give_explicit_poly_and_gaussian(P_new,P_center,p,fact_k,iorder,alpha,
|
|||||||
P_new(0,1) = 0.d0
|
P_new(0,1) = 0.d0
|
||||||
P_new(0,2) = 0.d0
|
P_new(0,2) = 0.d0
|
||||||
P_new(0,3) = 0.d0
|
P_new(0,3) = 0.d0
|
||||||
|
|
||||||
!DIR$ FORCEINLINE
|
!DIR$ FORCEINLINE
|
||||||
call gaussian_product(alpha,A_center,beta,B_center,fact_k,p,P_center)
|
call gaussian_product(alpha,A_center,beta,B_center,fact_k,p,P_center)
|
||||||
if (fact_k < thresh) then
|
if (fact_k < thresh) then
|
||||||
|
@ -1,17 +1,26 @@
|
|||||||
double precision function shank3_f(array,n,nmax)
|
double precision function shank_general(array,n,nmax)
|
||||||
implicit none
|
implicit none
|
||||||
integer, intent(in) :: n,nmax
|
integer, intent(in) :: n,nmax
|
||||||
double precision, intent(in) :: array(0:nmax) ! array of the partial sums
|
double precision, intent(in) :: array(0:nmax) ! array of the partial sums
|
||||||
integer :: ntmp
|
integer :: ntmp,i
|
||||||
double precision :: shank1(0:nmax),shank2(0:nmax),shank3(0:nmax)
|
double precision :: sum(0:nmax),shank1(0:nmax)
|
||||||
|
if(n.lt.3)then
|
||||||
|
print*,'You asked to Shank a sum but the order is smaller than 3 ...'
|
||||||
|
print*,'n = ',n
|
||||||
|
print*,'stopping ....'
|
||||||
|
stop
|
||||||
|
endif
|
||||||
ntmp = n
|
ntmp = n
|
||||||
call shank(array,ntmp,nmax,shank1)
|
sum = array
|
||||||
|
i = 0
|
||||||
|
do while(ntmp.ge.2)
|
||||||
|
i += 1
|
||||||
|
! print*,'i = ',i
|
||||||
|
call shank(sum,ntmp,nmax,shank1)
|
||||||
ntmp = ntmp - 2
|
ntmp = ntmp - 2
|
||||||
call shank(shank1,ntmp,nmax,shank2)
|
sum = shank1
|
||||||
ntmp = ntmp - 2
|
shank_general = shank1(ntmp)
|
||||||
call shank(shank2,ntmp,nmax,shank3)
|
enddo
|
||||||
ntmp = ntmp - 2
|
|
||||||
shank3_f = shank3(ntmp)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user