mirror of
https://github.com/QuantumPackage/qp2.git
synced 2025-04-28 11:14:43 +02:00
Merge branch 'dev-stable' of https://github.com/QuantumPackage/qp2 into dev-stable
This commit is contained in:
commit
42fff288d5
17
etc/qp.rc
17
etc/qp.rc
@ -190,21 +190,8 @@ _qp_Complete()
|
|||||||
;;
|
;;
|
||||||
esac;;
|
esac;;
|
||||||
set_file)
|
set_file)
|
||||||
# Caching the search results to reduce repeated find calls
|
compopt -o nospace
|
||||||
if [[ -z "$QP_FILE_CACHE" || "$CACHE_DIR" != "$PWD" ]]; then
|
COMPREPLY=( $(compgen -d -- "$cur") )
|
||||||
CACHE_DIR="$PWD"
|
|
||||||
QP_FILE_CACHE=$(find . -type f -name .version -exec dirname {} \; | sed 's/\/\.version$//')
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Support for relative paths
|
|
||||||
prefix=$(dirname "${cur}")
|
|
||||||
if [[ "$prefix" != "." ]]; then
|
|
||||||
dirs=$(echo "$QP_FILE_CACHE" | grep "^$prefix")
|
|
||||||
else
|
|
||||||
dirs="$QP_FILE_CACHE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
COMPREPLY=( $(compgen -W "$dirs" -- "$cur") )
|
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
plugins)
|
plugins)
|
||||||
|
@ -13,8 +13,6 @@ module Ao_basis : sig
|
|||||||
ao_coef : AO_coef.t array;
|
ao_coef : AO_coef.t array;
|
||||||
ao_expo : AO_expo.t array;
|
ao_expo : AO_expo.t array;
|
||||||
ao_cartesian : bool;
|
ao_cartesian : bool;
|
||||||
ao_normalized : bool;
|
|
||||||
primitives_normalized : bool;
|
|
||||||
} [@@deriving sexp]
|
} [@@deriving sexp]
|
||||||
;;
|
;;
|
||||||
val read : unit -> t option
|
val read : unit -> t option
|
||||||
@ -36,8 +34,6 @@ end = struct
|
|||||||
ao_coef : AO_coef.t array;
|
ao_coef : AO_coef.t array;
|
||||||
ao_expo : AO_expo.t array;
|
ao_expo : AO_expo.t array;
|
||||||
ao_cartesian : bool;
|
ao_cartesian : bool;
|
||||||
ao_normalized : bool;
|
|
||||||
primitives_normalized : bool;
|
|
||||||
} [@@deriving sexp]
|
} [@@deriving sexp]
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@ -133,24 +129,6 @@ end = struct
|
|||||||
Ezfio.get_ao_basis_ao_cartesian ()
|
Ezfio.get_ao_basis_ao_cartesian ()
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let read_ao_normalized () =
|
|
||||||
if not (Ezfio.has_ao_basis_ao_normalized()) then
|
|
||||||
get_default "ao_normalized"
|
|
||||||
|> bool_of_string
|
|
||||||
|> Ezfio.set_ao_basis_ao_normalized
|
|
||||||
;
|
|
||||||
Ezfio.get_ao_basis_ao_normalized ()
|
|
||||||
;;
|
|
||||||
|
|
||||||
let read_primitives_normalized () =
|
|
||||||
if not (Ezfio.has_ao_basis_primitives_normalized()) then
|
|
||||||
get_default "primitives_normalized"
|
|
||||||
|> bool_of_string
|
|
||||||
|> Ezfio.set_ao_basis_primitives_normalized
|
|
||||||
;
|
|
||||||
Ezfio.get_ao_basis_primitives_normalized ()
|
|
||||||
;;
|
|
||||||
|
|
||||||
let to_long_basis b =
|
let to_long_basis b =
|
||||||
let ao_num = AO_number.to_int b.ao_num in
|
let ao_num = AO_number.to_int b.ao_num in
|
||||||
let gto_array = Array.init (AO_number.to_int b.ao_num)
|
let gto_array = Array.init (AO_number.to_int b.ao_num)
|
||||||
@ -213,8 +191,6 @@ end = struct
|
|||||||
ao_coef ;
|
ao_coef ;
|
||||||
ao_expo ;
|
ao_expo ;
|
||||||
ao_cartesian ;
|
ao_cartesian ;
|
||||||
ao_normalized ;
|
|
||||||
primitives_normalized ;
|
|
||||||
} = b
|
} = b
|
||||||
in
|
in
|
||||||
write_md5 b ;
|
write_md5 b ;
|
||||||
@ -247,8 +223,6 @@ end = struct
|
|||||||
~rank:2 ~dim:[| ao_num ; 3 |] ~data:ao_power) ;
|
~rank:2 ~dim:[| ao_num ; 3 |] ~data:ao_power) ;
|
||||||
|
|
||||||
Ezfio.set_ao_basis_ao_cartesian(ao_cartesian);
|
Ezfio.set_ao_basis_ao_cartesian(ao_cartesian);
|
||||||
Ezfio.set_ao_basis_ao_normalized(ao_normalized);
|
|
||||||
Ezfio.set_ao_basis_primitives_normalized(primitives_normalized);
|
|
||||||
|
|
||||||
let ao_coef =
|
let ao_coef =
|
||||||
Array.to_list ao_coef
|
Array.to_list ao_coef
|
||||||
@ -280,8 +254,6 @@ end = struct
|
|||||||
ao_coef = read_ao_coef () ;
|
ao_coef = read_ao_coef () ;
|
||||||
ao_expo = read_ao_expo () ;
|
ao_expo = read_ao_expo () ;
|
||||||
ao_cartesian = read_ao_cartesian () ;
|
ao_cartesian = read_ao_cartesian () ;
|
||||||
ao_normalized = read_ao_normalized () ;
|
|
||||||
primitives_normalized = read_primitives_normalized () ;
|
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
to_md5 result
|
to_md5 result
|
||||||
@ -392,8 +364,6 @@ end = struct
|
|||||||
{ ao_basis = name ;
|
{ ao_basis = name ;
|
||||||
ao_num ; ao_prim_num ; ao_prim_num_max ; ao_nucl ;
|
ao_num ; ao_prim_num ; ao_prim_num_max ; ao_nucl ;
|
||||||
ao_power ; ao_coef ; ao_expo ; ao_cartesian ;
|
ao_power ; ao_coef ; ao_expo ; ao_cartesian ;
|
||||||
ao_normalized = bool_of_string @@ get_default "ao_normalized";
|
|
||||||
primitives_normalized = bool_of_string @@ get_default "primitives_normalized";
|
|
||||||
}
|
}
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@ -448,14 +418,6 @@ Cartesian coordinates (6d,10f,...) ::
|
|||||||
|
|
||||||
ao_cartesian = %s
|
ao_cartesian = %s
|
||||||
|
|
||||||
Use normalized primitive functions ::
|
|
||||||
|
|
||||||
primitives_normalized = %s
|
|
||||||
|
|
||||||
Use normalized basis functions ::
|
|
||||||
|
|
||||||
ao_normalized = %s
|
|
||||||
|
|
||||||
Basis set (read-only) ::
|
Basis set (read-only) ::
|
||||||
|
|
||||||
%s
|
%s
|
||||||
@ -469,8 +431,6 @@ Basis set (read-only) ::
|
|||||||
|
|
||||||
" (AO_basis_name.to_string b.ao_basis)
|
" (AO_basis_name.to_string b.ao_basis)
|
||||||
(string_of_bool b.ao_cartesian)
|
(string_of_bool b.ao_cartesian)
|
||||||
(string_of_bool b.primitives_normalized)
|
|
||||||
(string_of_bool b.ao_normalized)
|
|
||||||
(Basis.to_string short_basis
|
(Basis.to_string short_basis
|
||||||
|> String_ext.split ~on:'\n'
|
|> String_ext.split ~on:'\n'
|
||||||
|> list_map (fun x-> " "^x)
|
|> list_map (fun x-> " "^x)
|
||||||
@ -507,8 +467,6 @@ ao_power = %s
|
|||||||
ao_coef = %s
|
ao_coef = %s
|
||||||
ao_expo = %s
|
ao_expo = %s
|
||||||
ao_cartesian = %s
|
ao_cartesian = %s
|
||||||
ao_normalized = %s
|
|
||||||
primitives_normalized = %s
|
|
||||||
md5 = %s
|
md5 = %s
|
||||||
"
|
"
|
||||||
(AO_basis_name.to_string b.ao_basis)
|
(AO_basis_name.to_string b.ao_basis)
|
||||||
@ -525,8 +483,6 @@ md5 = %s
|
|||||||
(b.ao_expo |> Array.to_list |> list_map AO_expo.to_string
|
(b.ao_expo |> Array.to_list |> list_map AO_expo.to_string
|
||||||
|> String.concat ", ")
|
|> String.concat ", ")
|
||||||
(b.ao_cartesian |> string_of_bool)
|
(b.ao_cartesian |> string_of_bool)
|
||||||
(b.ao_normalized |> string_of_bool)
|
|
||||||
(b.primitives_normalized |> string_of_bool)
|
|
||||||
(to_md5 b |> MD5.to_string )
|
(to_md5 b |> MD5.to_string )
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
@ -191,11 +191,14 @@ def write_ezfio(trexio_filename, filename):
|
|||||||
ezfio.set_basis_nucleus_shell_num(nucl_shell_num)
|
ezfio.set_basis_nucleus_shell_num(nucl_shell_num)
|
||||||
|
|
||||||
|
|
||||||
shell_factor = trexio.read_basis_shell_factor(trexio_file)
|
|
||||||
prim_factor = trexio.read_basis_prim_factor(trexio_file)
|
prim_factor = trexio.read_basis_prim_factor(trexio_file)
|
||||||
for i,p in enumerate(prim_factor):
|
ezfio.set_basis_prim_normalization_factor(prim_factor)
|
||||||
coefficient[i] *= prim_factor[i]
|
ezfio.set_basis_primitives_normalized(True)
|
||||||
ezfio.set_ao_basis_primitives_normalized(True)
|
ezfio.set_basis_ao_normalized(False)
|
||||||
|
|
||||||
|
shell_factor = trexio.read_basis_shell_factor(trexio_file)
|
||||||
|
for i, shell_idx in enumerate(shell_index):
|
||||||
|
coefficient[i] *= shell_factor[shell_idx]
|
||||||
ezfio.set_basis_prim_coef(coefficient)
|
ezfio.set_basis_prim_coef(coefficient)
|
||||||
|
|
||||||
elif basis_type.lower() == "numerical":
|
elif basis_type.lower() == "numerical":
|
||||||
@ -247,7 +250,6 @@ def write_ezfio(trexio_filename, filename):
|
|||||||
ezfio.set_basis_shell_index([x+1 for x in shell_index])
|
ezfio.set_basis_shell_index([x+1 for x in shell_index])
|
||||||
ezfio.set_basis_nucleus_shell_num(nucl_shell_num)
|
ezfio.set_basis_nucleus_shell_num(nucl_shell_num)
|
||||||
|
|
||||||
shell_factor = trexio.read_basis_shell_factor(trexio_file)
|
|
||||||
else:
|
else:
|
||||||
raise TypeError
|
raise TypeError
|
||||||
|
|
||||||
@ -317,13 +319,18 @@ def write_ezfio(trexio_filename, filename):
|
|||||||
exponent.append(expo[i])
|
exponent.append(expo[i])
|
||||||
num_prim.append(num_prim0[i])
|
num_prim.append(num_prim0[i])
|
||||||
|
|
||||||
print (len(coefficient), ao_num)
|
|
||||||
assert (len(coefficient) == ao_num)
|
assert (len(coefficient) == ao_num)
|
||||||
|
|
||||||
ezfio.set_ao_basis_ao_power(power_x + power_y + power_z)
|
ezfio.set_ao_basis_ao_power(power_x + power_y + power_z)
|
||||||
ezfio.set_ao_basis_ao_prim_num(num_prim)
|
ezfio.set_ao_basis_ao_prim_num(num_prim)
|
||||||
|
|
||||||
prim_num_max = max( [ len(x) for x in coefficient ] )
|
prim_num_max = max( [ len(x) for x in coefficient ] )
|
||||||
|
|
||||||
|
ao_normalization = trexio.read_ao_normalization(trexio_file_cart)
|
||||||
|
for i, coef in enumerate(coefficient):
|
||||||
|
for j in range(len(coef)):
|
||||||
|
coef[j] *= ao_normalization[i]
|
||||||
|
|
||||||
for i in range(ao_num):
|
for i in range(ao_num):
|
||||||
coefficient[i] += [0. for j in range(len(coefficient[i]), prim_num_max)]
|
coefficient[i] += [0. for j in range(len(coefficient[i]), prim_num_max)]
|
||||||
exponent [i] += [0. for j in range(len(exponent[i]), prim_num_max)]
|
exponent [i] += [0. for j in range(len(exponent[i]), prim_num_max)]
|
||||||
@ -338,7 +345,6 @@ def write_ezfio(trexio_filename, filename):
|
|||||||
coef.append(coefficient[j])
|
coef.append(coefficient[j])
|
||||||
expo.append(exponent[j])
|
expo.append(exponent[j])
|
||||||
|
|
||||||
# ezfio.set_ao_basis_ao_prim_num_max(prim_num_max)
|
|
||||||
ezfio.set_ao_basis_ao_coef(coef)
|
ezfio.set_ao_basis_ao_coef(coef)
|
||||||
ezfio.set_ao_basis_ao_expo(expo)
|
ezfio.set_ao_basis_ao_expo(expo)
|
||||||
|
|
||||||
@ -388,14 +394,6 @@ def write_ezfio(trexio_filename, filename):
|
|||||||
|
|
||||||
# Read coefs from temporary cartesian file created in the AO section
|
# Read coefs from temporary cartesian file created in the AO section
|
||||||
MoMatrix = trexio.read_mo_coefficient(trexio_file_cart)
|
MoMatrix = trexio.read_mo_coefficient(trexio_file_cart)
|
||||||
|
|
||||||
# Renormalize MO coefs if needed
|
|
||||||
if trexio.has_ao_normalization(trexio_file_cart):
|
|
||||||
ezfio.set_ao_basis_ao_normalized(False)
|
|
||||||
norm = trexio.read_ao_normalization(trexio_file_cart)
|
|
||||||
# for j in range(mo_num):
|
|
||||||
# for i,f in enumerate(norm):
|
|
||||||
# MoMatrix[i,j] *= f
|
|
||||||
ezfio.set_mo_basis_mo_coef(MoMatrix)
|
ezfio.set_mo_basis_mo_coef(MoMatrix)
|
||||||
|
|
||||||
mo_occ = [ 0. for i in range(mo_num) ]
|
mo_occ = [ 0. for i in range(mo_num) ]
|
||||||
|
@ -55,18 +55,6 @@ doc: If |true|, use |AOs| in Cartesian coordinates (6d,10f,...)
|
|||||||
interface: ezfio, provider
|
interface: ezfio, provider
|
||||||
default: false
|
default: false
|
||||||
|
|
||||||
[ao_normalized]
|
|
||||||
type: logical
|
|
||||||
doc: Use normalized basis functions
|
|
||||||
interface: ezfio, provider
|
|
||||||
default: true
|
|
||||||
|
|
||||||
[primitives_normalized]
|
|
||||||
type: logical
|
|
||||||
doc: Use normalized primitive functions
|
|
||||||
interface: ezfio, provider
|
|
||||||
default: true
|
|
||||||
|
|
||||||
[use_cgtos]
|
[use_cgtos]
|
||||||
type: logical
|
type: logical
|
||||||
doc: If true, use cgtos for AO integrals
|
doc: If true, use cgtos for AO integrals
|
||||||
|
@ -82,10 +82,11 @@ END_PROVIDER
|
|||||||
enddo
|
enddo
|
||||||
ao_coef_normalization_factor(i) = 1.d0/dsqrt(norm)
|
ao_coef_normalization_factor(i) = 1.d0/dsqrt(norm)
|
||||||
|
|
||||||
if (.not.ao_normalized) then
|
if (ao_normalized) then
|
||||||
do j=1,ao_prim_num(i)
|
do j=1,ao_prim_num(i)
|
||||||
ao_coef_normalized(i,j) = ao_coef_normalized(i,j) * ao_coef_normalization_factor(i)
|
ao_coef_normalized(i,j) = ao_coef_normalized(i,j) * ao_coef_normalization_factor(i)
|
||||||
enddo
|
enddo
|
||||||
|
else
|
||||||
ao_coef_normalization_factor(i) = 1.d0
|
ao_coef_normalization_factor(i) = 1.d0
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
@ -73,3 +73,15 @@ size: (basis.prim_num)
|
|||||||
interface: ezfio, provider
|
interface: ezfio, provider
|
||||||
|
|
||||||
|
|
||||||
|
[primitives_normalized]
|
||||||
|
type: logical
|
||||||
|
doc: If true, assume primitive basis functions are normalized
|
||||||
|
interface: ezfio, provider, ocaml
|
||||||
|
default: true
|
||||||
|
|
||||||
|
[ao_normalized]
|
||||||
|
type: logical
|
||||||
|
doc: If true, normalize the basis functions
|
||||||
|
interface: ezfio, provider, ocaml
|
||||||
|
default: false
|
||||||
|
|
||||||
|
@ -6,6 +6,11 @@ BEGIN_PROVIDER [ double precision, shell_normalization_factor , (shell_num) ]
|
|||||||
|
|
||||||
logical :: has
|
logical :: has
|
||||||
PROVIDE ezfio_filename
|
PROVIDE ezfio_filename
|
||||||
|
if (.not.ao_normalized) then
|
||||||
|
shell_normalization_factor = 1.d0
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
if (mpi_master) then
|
if (mpi_master) then
|
||||||
if (size(shell_normalization_factor) == 0) return
|
if (size(shell_normalization_factor) == 0) return
|
||||||
|
|
||||||
@ -70,6 +75,12 @@ BEGIN_PROVIDER [ double precision, prim_normalization_factor , (prim_num) ]
|
|||||||
|
|
||||||
logical :: has
|
logical :: has
|
||||||
PROVIDE ezfio_filename
|
PROVIDE ezfio_filename
|
||||||
|
|
||||||
|
if (.not.primitives_normalized) then
|
||||||
|
prim_normalization_factor(:) = 1.d0
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
if (mpi_master) then
|
if (mpi_master) then
|
||||||
if (size(prim_normalization_factor) == 0) return
|
if (size(prim_normalization_factor) == 0) return
|
||||||
|
|
||||||
@ -95,9 +106,9 @@ BEGIN_PROVIDER [ double precision, prim_normalization_factor , (prim_num) ]
|
|||||||
|
|
||||||
do k=1, prim_num
|
do k=1, prim_num
|
||||||
if (shell_index(k) /= i) cycle
|
if (shell_index(k) /= i) cycle
|
||||||
call overlap_gaussian_xyz(C_A,C_A,prim_expo(k),prim_expo(k), &
|
call overlap_gaussian_xyz(C_A,C_A,prim_expo(k),prim_expo(k), &
|
||||||
powA,powA,overlap_x,overlap_y,overlap_z,norm,nz)
|
powA,powA,overlap_x,overlap_y,overlap_z,norm,nz)
|
||||||
prim_normalization_factor(k) = 1.d0/dsqrt(norm)
|
prim_normalization_factor(k) = 1.d0/dsqrt(norm)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ BEGIN_PROVIDER [real*8, bielec_PQxx_array, (mo_num, mo_num,n_core_inact_act_orb,
|
|||||||
print*,''
|
print*,''
|
||||||
|
|
||||||
bielec_PQxx_array(:,:,:,:) = 0.d0
|
bielec_PQxx_array(:,:,:,:) = 0.d0
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
!$OMP PARALLEL DEFAULT(NONE) &
|
!$OMP PARALLEL DEFAULT(NONE) &
|
||||||
!$OMP PRIVATE(i,ii,j,jj,i3,j3) &
|
!$OMP PRIVATE(i,ii,j,jj,i3,j3) &
|
||||||
@ -76,7 +76,7 @@ BEGIN_PROVIDER [real*8, bielec_PxxQ_array, (mo_num,n_core_inact_act_orb,n_core_i
|
|||||||
print*,''
|
print*,''
|
||||||
print*,'Providing bielec_PxxQ_array, WARNING IT CAN BE A VERY BIG ARRAY WHEN MO_NUM IS LARGE !!!'
|
print*,'Providing bielec_PxxQ_array, WARNING IT CAN BE A VERY BIG ARRAY WHEN MO_NUM IS LARGE !!!'
|
||||||
print*,''
|
print*,''
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
bielec_PxxQ_array = 0.d0
|
bielec_PxxQ_array = 0.d0
|
||||||
|
|
||||||
!$OMP PARALLEL DEFAULT(NONE) &
|
!$OMP PARALLEL DEFAULT(NONE) &
|
||||||
@ -152,7 +152,7 @@ BEGIN_PROVIDER [real*8, bielecCI, (n_act_orb,n_act_orb,n_act_orb, mo_num)]
|
|||||||
double precision :: wall0, wall1
|
double precision :: wall0, wall1
|
||||||
call wall_time(wall0)
|
call wall_time(wall0)
|
||||||
print*,'Providing bielecCI'
|
print*,'Providing bielecCI'
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
!$OMP PARALLEL DO DEFAULT(NONE) &
|
!$OMP PARALLEL DO DEFAULT(NONE) &
|
||||||
!$OMP PRIVATE(i,j,k,p,t,u,v) &
|
!$OMP PRIVATE(i,j,k,p,t,u,v) &
|
||||||
|
@ -380,7 +380,7 @@ BEGIN_PROVIDER [double precision, hessmat, (nMonoEx,nMonoEx)]
|
|||||||
! c-v | X X
|
! c-v | X X
|
||||||
! a-v | X
|
! a-v | X
|
||||||
|
|
||||||
provide mo_two_e_integrals_in_map
|
provide all_mo_integrals
|
||||||
|
|
||||||
hessmat = 0.d0
|
hessmat = 0.d0
|
||||||
|
|
||||||
|
@ -202,7 +202,7 @@ BEGIN_PROVIDER [real*8, hessmat_peter, (nMonoEx,nMonoEx)]
|
|||||||
write(6,*) ' providing Hessian matrix hessmat_peter '
|
write(6,*) ' providing Hessian matrix hessmat_peter '
|
||||||
write(6,*) ' nMonoEx = ',nMonoEx
|
write(6,*) ' nMonoEx = ',nMonoEx
|
||||||
endif
|
endif
|
||||||
provide mo_two_e_integrals_in_map
|
provide all_mo_integrals
|
||||||
|
|
||||||
!$OMP PARALLEL DEFAULT(NONE) &
|
!$OMP PARALLEL DEFAULT(NONE) &
|
||||||
!$OMP SHARED(hessmat_peter,n_core_inact_orb,n_act_orb,n_virt_orb,nMonoEx) &
|
!$OMP SHARED(hessmat_peter,n_core_inact_orb,n_act_orb,n_virt_orb,nMonoEx) &
|
||||||
|
@ -35,7 +35,7 @@ subroutine run_ccsd_space_orb
|
|||||||
PROVIDE cholesky_mo_transp
|
PROVIDE cholesky_mo_transp
|
||||||
FREE cholesky_ao
|
FREE cholesky_ao
|
||||||
else
|
else
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
endif
|
endif
|
||||||
|
|
||||||
det = psi_det(:,:,cc_ref)
|
det = psi_det(:,:,cc_ref)
|
||||||
|
@ -14,7 +14,7 @@ subroutine run_stochastic_cipsi(Ev,PT2)
|
|||||||
|
|
||||||
double precision :: rss
|
double precision :: rss
|
||||||
double precision, external :: memory_of_double
|
double precision, external :: memory_of_double
|
||||||
PROVIDE H_apply_buffer_allocated distributed_davidson mo_two_e_integrals_in_map
|
PROVIDE H_apply_buffer_allocated distributed_davidson all_mo_integrals
|
||||||
|
|
||||||
threshold_generators = 1.d0
|
threshold_generators = 1.d0
|
||||||
SOFT_TOUCH threshold_generators
|
SOFT_TOUCH threshold_generators
|
||||||
|
@ -165,7 +165,7 @@ subroutine ZMQ_pt2(E, pt2_data, pt2_data_err, relative_error, N_in)
|
|||||||
state_average_weight(pt2_stoch_istate) = 1.d0
|
state_average_weight(pt2_stoch_istate) = 1.d0
|
||||||
TOUCH state_average_weight pt2_stoch_istate selection_weight
|
TOUCH state_average_weight pt2_stoch_istate selection_weight
|
||||||
|
|
||||||
PROVIDE nproc pt2_F mo_two_e_integrals_in_map mo_one_e_integrals pt2_w
|
PROVIDE nproc pt2_F all_mo_integrals mo_one_e_integrals pt2_w
|
||||||
PROVIDE psi_selectors pt2_u pt2_J pt2_R
|
PROVIDE psi_selectors pt2_u pt2_J pt2_R
|
||||||
call new_parallel_job(zmq_to_qp_run_socket, zmq_socket_pull, 'pt2')
|
call new_parallel_job(zmq_to_qp_run_socket, zmq_socket_pull, 'pt2')
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ subroutine run_slave_cipsi
|
|||||||
end
|
end
|
||||||
|
|
||||||
subroutine provide_everything
|
subroutine provide_everything
|
||||||
PROVIDE H_apply_buffer_allocated mo_two_e_integrals_in_map psi_det_generators psi_coef_generators psi_det_sorted_bit psi_selectors n_det_generators n_states generators_bitmask zmq_context N_states_diag
|
PROVIDE H_apply_buffer_allocated all_mo_integrals psi_det_generators psi_coef_generators psi_det_sorted_bit psi_selectors n_det_generators n_states generators_bitmask zmq_context N_states_diag
|
||||||
PROVIDE pt2_e0_denominator mo_num N_int ci_energy mpi_master zmq_state zmq_context
|
PROVIDE pt2_e0_denominator mo_num N_int ci_energy mpi_master zmq_state zmq_context
|
||||||
PROVIDE psi_det psi_coef threshold_generators state_average_weight
|
PROVIDE psi_det psi_coef threshold_generators state_average_weight
|
||||||
PROVIDE N_det_selectors pt2_stoch_istate N_det selection_weight pseudo_sym
|
PROVIDE N_det_selectors pt2_stoch_istate N_det selection_weight pseudo_sym
|
||||||
|
@ -31,7 +31,7 @@ subroutine davidson_diag_h(dets_in,u_in,dim_in,energies,sze,N_st,N_st_diag,Nint,
|
|||||||
ASSERT (sze > 0)
|
ASSERT (sze > 0)
|
||||||
ASSERT (Nint > 0)
|
ASSERT (Nint > 0)
|
||||||
ASSERT (Nint == N_int)
|
ASSERT (Nint == N_int)
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
allocate(H_jj(sze))
|
allocate(H_jj(sze))
|
||||||
|
|
||||||
H_jj(1) = diag_h_mat_elem(dets_in(1,1,1),Nint)
|
H_jj(1) = diag_h_mat_elem(dets_in(1,1,1),Nint)
|
||||||
|
@ -30,7 +30,7 @@ subroutine davidson_diag_h_csf(dets_in,u_in,dim_in,energies,sze,sze_csf,N_st,N_s
|
|||||||
ASSERT (sze > 0)
|
ASSERT (sze > 0)
|
||||||
ASSERT (Nint > 0)
|
ASSERT (Nint > 0)
|
||||||
ASSERT (Nint == N_int)
|
ASSERT (Nint == N_int)
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
allocate(H_jj(sze))
|
allocate(H_jj(sze))
|
||||||
|
|
||||||
H_jj(1) = diag_h_mat_elem(dets_in(1,1,1),Nint)
|
H_jj(1) = diag_h_mat_elem(dets_in(1,1,1),Nint)
|
||||||
|
@ -62,7 +62,7 @@ subroutine davidson_diag_hs2(dets_in,u_in,s2_out,dim_in,energies,sze,N_st,N_st_d
|
|||||||
ASSERT (sze > 0)
|
ASSERT (sze > 0)
|
||||||
ASSERT (Nint > 0)
|
ASSERT (Nint > 0)
|
||||||
ASSERT (Nint == N_int)
|
ASSERT (Nint == N_int)
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
allocate(H_jj(sze))
|
allocate(H_jj(sze))
|
||||||
|
|
||||||
H_jj(1) = diag_h_mat_elem(dets_in(1,1,1),Nint)
|
H_jj(1) = diag_h_mat_elem(dets_in(1,1,1),Nint)
|
||||||
|
@ -42,7 +42,7 @@ subroutine davidson_diag_nonsym_h(dets_in, u_in, dim_in, energies, sze, N_st, N_
|
|||||||
ASSERT (sze > 0)
|
ASSERT (sze > 0)
|
||||||
ASSERT (Nint > 0)
|
ASSERT (Nint > 0)
|
||||||
ASSERT (Nint == N_int)
|
ASSERT (Nint == N_int)
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
allocate(H_jj(sze))
|
allocate(H_jj(sze))
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ subroutine $subroutine($params_main)
|
|||||||
double precision, allocatable :: fock_diag_tmp(:,:)
|
double precision, allocatable :: fock_diag_tmp(:,:)
|
||||||
|
|
||||||
$initialization
|
$initialization
|
||||||
PROVIDE H_apply_buffer_allocated mo_two_e_integrals_in_map psi_det_generators psi_coef_generators
|
PROVIDE H_apply_buffer_allocated all_mo_integrals psi_det_generators psi_coef_generators
|
||||||
|
|
||||||
|
|
||||||
call wall_time(wall_0)
|
call wall_time(wall_0)
|
||||||
|
@ -521,7 +521,7 @@ subroutine i_H_j_s2(key_i,key_j,Nint,hij,s2)
|
|||||||
integer :: occ(Nint*bit_kind_size,2)
|
integer :: occ(Nint*bit_kind_size,2)
|
||||||
double precision :: diag_H_mat_elem, phase
|
double precision :: diag_H_mat_elem, phase
|
||||||
integer :: n_occ_ab(2)
|
integer :: n_occ_ab(2)
|
||||||
PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
ASSERT (Nint > 0)
|
ASSERT (Nint > 0)
|
||||||
ASSERT (Nint == N_int)
|
ASSERT (Nint == N_int)
|
||||||
@ -623,7 +623,7 @@ subroutine i_H_j(key_i,key_j,Nint,hij)
|
|||||||
integer :: occ(Nint*bit_kind_size,2)
|
integer :: occ(Nint*bit_kind_size,2)
|
||||||
double precision :: diag_H_mat_elem, phase
|
double precision :: diag_H_mat_elem, phase
|
||||||
integer :: n_occ_ab(2)
|
integer :: n_occ_ab(2)
|
||||||
PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
ASSERT (Nint > 0)
|
ASSERT (Nint > 0)
|
||||||
ASSERT (Nint == N_int)
|
ASSERT (Nint == N_int)
|
||||||
@ -724,7 +724,7 @@ subroutine i_H_j_verbose(key_i,key_j,Nint,hij,hmono,hdouble,phase)
|
|||||||
integer :: n_occ_ab(2)
|
integer :: n_occ_ab(2)
|
||||||
logical :: has_mipi(Nint*bit_kind_size)
|
logical :: has_mipi(Nint*bit_kind_size)
|
||||||
double precision :: mipi(Nint*bit_kind_size), miip(Nint*bit_kind_size)
|
double precision :: mipi(Nint*bit_kind_size), miip(Nint*bit_kind_size)
|
||||||
PROVIDE mo_two_e_integrals_in_map mo_integrals_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
ASSERT (Nint > 0)
|
ASSERT (Nint > 0)
|
||||||
ASSERT (Nint == N_int)
|
ASSERT (Nint == N_int)
|
||||||
@ -2227,7 +2227,7 @@ subroutine i_H_j_single_spin(key_i,key_j,Nint,spin,hij)
|
|||||||
integer :: exc(0:2,2)
|
integer :: exc(0:2,2)
|
||||||
double precision :: phase
|
double precision :: phase
|
||||||
|
|
||||||
PROVIDE big_array_exchange_integrals mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
call get_single_excitation_spin(key_i(1,spin),key_j(1,spin),exc,phase,Nint)
|
call get_single_excitation_spin(key_i(1,spin),key_j(1,spin),exc,phase,Nint)
|
||||||
call get_single_excitation_from_fock(key_i,key_j,exc(1,1),exc(1,2),spin,phase,hij)
|
call get_single_excitation_from_fock(key_i,key_j,exc(1,1),exc(1,2),spin,phase,hij)
|
||||||
@ -2248,7 +2248,7 @@ subroutine i_H_j_double_spin(key_i,key_j,Nint,hij)
|
|||||||
double precision :: phase
|
double precision :: phase
|
||||||
double precision, external :: get_two_e_integral
|
double precision, external :: get_two_e_integral
|
||||||
|
|
||||||
PROVIDE big_array_exchange_integrals mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
call get_double_excitation_spin(key_i,key_j,exc,phase,Nint)
|
call get_double_excitation_spin(key_i,key_j,exc,phase,Nint)
|
||||||
hij = phase*(get_two_e_integral( &
|
hij = phase*(get_two_e_integral( &
|
||||||
exc(1,1), &
|
exc(1,1), &
|
||||||
@ -2277,7 +2277,7 @@ subroutine i_H_j_double_alpha_beta(key_i,key_j,Nint,hij)
|
|||||||
double precision :: phase, phase2
|
double precision :: phase, phase2
|
||||||
double precision, external :: get_two_e_integral
|
double precision, external :: get_two_e_integral
|
||||||
|
|
||||||
PROVIDE big_array_exchange_integrals mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
call get_single_excitation_spin(key_i(1,1),key_j(1,1),exc(0,1,1),phase,Nint)
|
call get_single_excitation_spin(key_i(1,1),key_j(1,1),exc(0,1,1),phase,Nint)
|
||||||
call get_single_excitation_spin(key_i(1,2),key_j(1,2),exc(0,1,2),phase2,Nint)
|
call get_single_excitation_spin(key_i(1,2),key_j(1,2),exc(0,1,2),phase2,Nint)
|
||||||
|
@ -13,7 +13,7 @@ subroutine i_Wee_j_single(key_i,key_j,Nint,spin,hij)
|
|||||||
integer :: exc(0:2,2)
|
integer :: exc(0:2,2)
|
||||||
double precision :: phase
|
double precision :: phase
|
||||||
|
|
||||||
PROVIDE big_array_exchange_integrals mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
call get_single_excitation_spin(key_i(1,spin),key_j(1,spin),exc,phase,Nint)
|
call get_single_excitation_spin(key_i(1,spin),key_j(1,spin),exc,phase,Nint)
|
||||||
call single_excitation_wee(key_i,key_j,exc(1,1),exc(1,2),spin,phase,hij)
|
call single_excitation_wee(key_i,key_j,exc(1,1),exc(1,2),spin,phase,hij)
|
||||||
@ -285,7 +285,7 @@ subroutine i_H_j_two_e(key_i,key_j,Nint,hij)
|
|||||||
integer :: occ(Nint*bit_kind_size,2)
|
integer :: occ(Nint*bit_kind_size,2)
|
||||||
double precision :: diag_H_mat_elem, phase,phase_2
|
double precision :: diag_H_mat_elem, phase,phase_2
|
||||||
integer :: n_occ_ab(2)
|
integer :: n_occ_ab(2)
|
||||||
PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals ref_bitmask_two_e_energy
|
PROVIDE all_mo_integrals ref_bitmask_two_e_energy
|
||||||
|
|
||||||
ASSERT (Nint > 0)
|
ASSERT (Nint > 0)
|
||||||
ASSERT (Nint == N_int)
|
ASSERT (Nint == N_int)
|
||||||
|
@ -4,12 +4,11 @@ BEGIN_PROVIDER [ double precision, H_matrix_all_dets,(N_det,N_det) ]
|
|||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! |H| matrix on the basis of the Slater determinants defined by psi_det
|
! |H| matrix on the basis of the Slater determinants defined by psi_det
|
||||||
END_DOC
|
END_DOC
|
||||||
integer :: i,j,k
|
integer :: i,j
|
||||||
double precision :: hij
|
double precision :: hij
|
||||||
integer :: degree(N_det),idx(0:N_det)
|
PROVIDE all_mo_integrals
|
||||||
call i_H_j(psi_det(1,1,1),psi_det(1,1,1),N_int,hij)
|
|
||||||
print*,'Providing the H_matrix_all_dets ...'
|
print*,'Providing the H_matrix_all_dets ...'
|
||||||
!$OMP PARALLEL DO SCHEDULE(GUIDED) DEFAULT(NONE) PRIVATE(i,j,hij,degree,idx,k) &
|
!$OMP PARALLEL DO SCHEDULE(GUIDED) DEFAULT(NONE) PRIVATE(i,j,hij) &
|
||||||
!$OMP SHARED (N_det, psi_det, N_int,H_matrix_all_dets)
|
!$OMP SHARED (N_det, psi_det, N_int,H_matrix_all_dets)
|
||||||
do i =1,N_det
|
do i =1,N_det
|
||||||
do j = i, N_det
|
do j = i, N_det
|
||||||
@ -31,7 +30,7 @@ BEGIN_PROVIDER [ double precision, H_matrix_diag_all_dets,(N_det) ]
|
|||||||
integer :: i
|
integer :: i
|
||||||
double precision :: hij
|
double precision :: hij
|
||||||
integer :: degree(N_det)
|
integer :: degree(N_det)
|
||||||
call i_H_j(psi_det(1,1,1),psi_det(1,1,1),N_int,hij)
|
PROVIDE all_mo_integrals
|
||||||
!$OMP PARALLEL DO SCHEDULE(GUIDED) DEFAULT(NONE) PRIVATE(i,hij,degree) &
|
!$OMP PARALLEL DO SCHEDULE(GUIDED) DEFAULT(NONE) PRIVATE(i,hij,degree) &
|
||||||
!$OMP SHARED (N_det, psi_det, N_int,H_matrix_diag_all_dets)
|
!$OMP SHARED (N_det, psi_det, N_int,H_matrix_diag_all_dets)
|
||||||
do i =1,N_det
|
do i =1,N_det
|
||||||
|
@ -15,7 +15,7 @@ subroutine dress_slave
|
|||||||
end
|
end
|
||||||
|
|
||||||
subroutine provide_everything
|
subroutine provide_everything
|
||||||
PROVIDE H_apply_buffer_allocated mo_two_e_integrals_in_map psi_det_generators psi_coef_generators psi_det_sorted_bit psi_selectors n_det_generators n_states generators_bitmask zmq_context
|
PROVIDE H_apply_buffer_allocated all_mo_integrals psi_det_generators psi_coef_generators psi_det_sorted_bit psi_selectors n_det_generators n_states generators_bitmask zmq_context
|
||||||
end
|
end
|
||||||
|
|
||||||
subroutine run_wf
|
subroutine run_wf
|
||||||
|
@ -258,7 +258,7 @@ subroutine ZMQ_dress(E, dress, delta_out, delta_s2_out, relative_error)
|
|||||||
state_average_weight(dress_stoch_istate) = 1.d0
|
state_average_weight(dress_stoch_istate) = 1.d0
|
||||||
TOUCH state_average_weight dress_stoch_istate
|
TOUCH state_average_weight dress_stoch_istate
|
||||||
|
|
||||||
provide nproc mo_two_e_integrals_in_map mo_one_e_integrals psi_selectors pt2_F pt2_N_teeth dress_M_m
|
provide nproc all_mo_integrals mo_one_e_integrals psi_selectors pt2_F pt2_N_teeth dress_M_m
|
||||||
|
|
||||||
print *, '========== ================= ================= ================='
|
print *, '========== ================= ================= ================='
|
||||||
print *, ' Samples Energy Stat. Error Seconds '
|
print *, ' Samples Energy Stat. Error Seconds '
|
||||||
|
@ -36,8 +36,9 @@ program fci
|
|||||||
!
|
!
|
||||||
END_DOC
|
END_DOC
|
||||||
|
|
||||||
|
PROVIDE all_mo_integrals
|
||||||
if (.not.is_zmq_slave) then
|
if (.not.is_zmq_slave) then
|
||||||
PROVIDE psi_det psi_coef mo_two_e_integrals_in_map
|
PROVIDE psi_det psi_coef
|
||||||
|
|
||||||
write(json_unit,json_array_open_fmt) 'fci'
|
write(json_unit,json_array_open_fmt) 'fci'
|
||||||
|
|
||||||
@ -55,7 +56,7 @@ program fci
|
|||||||
call json_close
|
call json_close
|
||||||
|
|
||||||
else
|
else
|
||||||
PROVIDE mo_two_e_integrals_in_map pt2_min_parallel_tasks
|
PROVIDE pt2_min_parallel_tasks
|
||||||
|
|
||||||
call run_slave_cipsi
|
call run_slave_cipsi
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ program pt2
|
|||||||
read_wf = .True.
|
read_wf = .True.
|
||||||
threshold_generators = 1.d0
|
threshold_generators = 1.d0
|
||||||
SOFT_TOUCH read_wf threshold_generators
|
SOFT_TOUCH read_wf threshold_generators
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
PROVIDE psi_energy
|
PROVIDE psi_energy
|
||||||
call run
|
call run
|
||||||
else
|
else
|
||||||
|
@ -35,7 +35,7 @@ program debug_gradient_list
|
|||||||
! Definition of n
|
! Definition of n
|
||||||
n = m*(m-1)/2
|
n = m*(m-1)/2
|
||||||
|
|
||||||
PROVIDE mo_two_e_integrals_in_map ! Verifier pour suppression
|
PROVIDE all_mo_integrals ! Verifier pour suppression
|
||||||
|
|
||||||
! Allocation
|
! Allocation
|
||||||
allocate(v_grad(n), v_grad2(n))
|
allocate(v_grad(n), v_grad2(n))
|
||||||
|
@ -34,7 +34,7 @@ program debug_gradient
|
|||||||
! Definition of n
|
! Definition of n
|
||||||
n = mo_num*(mo_num-1)/2
|
n = mo_num*(mo_num-1)/2
|
||||||
|
|
||||||
PROVIDE mo_two_e_integrals_in_map ! Check for suppression
|
PROVIDE all_mo_integrals ! Check for suppression
|
||||||
|
|
||||||
! Allocation
|
! Allocation
|
||||||
allocate(v_grad(n), v_grad2(n))
|
allocate(v_grad(n), v_grad2(n))
|
||||||
|
@ -49,7 +49,7 @@ program debug_hessian_list_opt
|
|||||||
! Definition of n
|
! Definition of n
|
||||||
n = m*(m-1)/2
|
n = m*(m-1)/2
|
||||||
|
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
! Hessian
|
! Hessian
|
||||||
if (optimization_method == 'full') then
|
if (optimization_method == 'full') then
|
||||||
|
@ -40,7 +40,7 @@ program debug_hessian
|
|||||||
! Definition of n
|
! Definition of n
|
||||||
n = mo_num*(mo_num-1)/2
|
n = mo_num*(mo_num-1)/2
|
||||||
|
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
! Allocation
|
! Allocation
|
||||||
allocate(H(n,n),H2(n,n))
|
allocate(H(n,n),H2(n,n))
|
||||||
|
@ -9,7 +9,7 @@ subroutine run_optimization_mos_CIPSI
|
|||||||
logical :: not_converged
|
logical :: not_converged
|
||||||
character (len=100) :: filename
|
character (len=100) :: filename
|
||||||
|
|
||||||
PROVIDE psi_det psi_coef mo_two_e_integrals_in_map ao_pseudo_integrals
|
PROVIDE psi_det psi_coef all_mo_integrals ao_pseudo_integrals
|
||||||
allocate(Ev(N_states),PT2(N_states))
|
allocate(Ev(N_states),PT2(N_states))
|
||||||
|
|
||||||
not_converged = .True.
|
not_converged = .True.
|
||||||
|
@ -93,7 +93,7 @@ subroutine run_orb_opt_trust_v2
|
|||||||
integer,allocatable :: tmp_list(:), key(:)
|
integer,allocatable :: tmp_list(:), key(:)
|
||||||
double precision, allocatable :: tmp_m_x(:,:),tmp_R(:,:), tmp_x(:), W(:,:), e_val(:)
|
double precision, allocatable :: tmp_m_x(:,:),tmp_R(:,:), tmp_x(:), W(:,:), e_val(:)
|
||||||
|
|
||||||
PROVIDE mo_two_e_integrals_in_map ci_energy psi_det psi_coef
|
PROVIDE all_mo_integrals ci_energy psi_det psi_coef
|
||||||
|
|
||||||
! Allocation
|
! Allocation
|
||||||
|
|
||||||
|
@ -1,5 +1,15 @@
|
|||||||
use map_module
|
use map_module
|
||||||
|
|
||||||
|
BEGIN_PROVIDER [ logical, all_mo_integrals ]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! Used to provide everything needed before using MO integrals
|
||||||
|
! PROVIDE all_mo_integrals
|
||||||
|
END_DOC
|
||||||
|
PROVIDE mo_two_e_integrals_in_map mo_integrals_cache mo_two_e_integrals_jj_exchange mo_two_e_integrals_jj_anti mo_two_e_integrals_jj big_array_exchange_integrals big_array_coulomb_integrals mo_one_e_integrals
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
!! MO Map
|
!! MO Map
|
||||||
!! ======
|
!! ======
|
||||||
|
|
||||||
@ -35,20 +45,24 @@ end
|
|||||||
BEGIN_PROVIDER [ integer, mo_integrals_cache_min ]
|
BEGIN_PROVIDER [ integer, mo_integrals_cache_min ]
|
||||||
&BEGIN_PROVIDER [ integer, mo_integrals_cache_max ]
|
&BEGIN_PROVIDER [ integer, mo_integrals_cache_max ]
|
||||||
&BEGIN_PROVIDER [ integer, mo_integrals_cache_size ]
|
&BEGIN_PROVIDER [ integer, mo_integrals_cache_size ]
|
||||||
|
&BEGIN_PROVIDER [ integer*8, mo_integrals_cache_size_8 ]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Min and max values of the MOs for which the integrals are in the cache
|
! Min and max values of the MOs for which the integrals are in the cache
|
||||||
END_DOC
|
END_DOC
|
||||||
|
|
||||||
mo_integrals_cache_size = 2**mo_integrals_cache_shift
|
mo_integrals_cache_size = shiftl(1,mo_integrals_cache_shift)
|
||||||
|
mo_integrals_cache_size_8 = shiftl(1_8, mo_integrals_cache_shift*4)
|
||||||
|
|
||||||
|
|
||||||
mo_integrals_cache_min = max(1,elec_alpha_num - (mo_integrals_cache_size/2 - 1) )
|
mo_integrals_cache_min = max(1,elec_alpha_num - (mo_integrals_cache_size/2 - 1) )
|
||||||
mo_integrals_cache_max = min(mo_num, mo_integrals_cache_min + mo_integrals_cache_size - 1)
|
mo_integrals_cache_max = min(mo_num, mo_integrals_cache_min + mo_integrals_cache_size - 1)
|
||||||
print *, 'MO integrals cache: (', mo_integrals_cache_min, ', ', mo_integrals_cache_max, ')'
|
print *, 'MO integrals cache: (', mo_integrals_cache_min, ', ', mo_integrals_cache_max, '), ', &
|
||||||
|
shiftr(mo_integrals_cache_size_8, 17), 'MiB'
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
BEGIN_PROVIDER [ double precision, mo_integrals_cache, (0_8:(1_8*mo_integrals_cache_size)**4) ]
|
BEGIN_PROVIDER [ double precision, mo_integrals_cache, (0_8:mo_integrals_cache_size_8) ]
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Cache of MO integrals for fast access
|
! Cache of MO integrals for fast access
|
||||||
@ -67,8 +81,7 @@ BEGIN_PROVIDER [ double precision, mo_integrals_cache, (0_8:(1_8*mo_integrals_ca
|
|||||||
do k=mo_integrals_cache_min,mo_integrals_cache_max
|
do k=mo_integrals_cache_min,mo_integrals_cache_max
|
||||||
ii = int(l-mo_integrals_cache_min,8)
|
ii = int(l-mo_integrals_cache_min,8)
|
||||||
ii = ior( shiftl(ii,mo_integrals_cache_shift), int(k-mo_integrals_cache_min,8))
|
ii = ior( shiftl(ii,mo_integrals_cache_shift), int(k-mo_integrals_cache_min,8))
|
||||||
ii = shiftl(ii,mo_integrals_cache_shift)
|
ii = shiftl(ii,2*mo_integrals_cache_shift)
|
||||||
ii = shiftl(ii,mo_integrals_cache_shift)
|
|
||||||
call dgemm('T','N', mo_integrals_cache_max-mo_integrals_cache_min+1, &
|
call dgemm('T','N', mo_integrals_cache_max-mo_integrals_cache_min+1, &
|
||||||
mo_integrals_cache_max-mo_integrals_cache_min+1, &
|
mo_integrals_cache_max-mo_integrals_cache_min+1, &
|
||||||
cholesky_mo_num, 1.d0, &
|
cholesky_mo_num, 1.d0, &
|
||||||
@ -130,7 +143,7 @@ double precision function get_two_e_integral(i,j,k,l,map)
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer, intent(in) :: i,j,k,l
|
integer, intent(in) :: i,j,k,l
|
||||||
integer(key_kind) :: idx
|
integer(key_kind) :: idx
|
||||||
integer :: ii
|
integer :: ii, kk
|
||||||
type(map_type), intent(inout) :: map
|
type(map_type), intent(inout) :: map
|
||||||
real(integral_kind) :: tmp
|
real(integral_kind) :: tmp
|
||||||
|
|
||||||
@ -166,8 +179,11 @@ double precision function get_two_e_integral(i,j,k,l,map)
|
|||||||
|
|
||||||
double precision, external :: ddot
|
double precision, external :: ddot
|
||||||
get_two_e_integral = ddot(cholesky_mo_num, cholesky_mo_transp(1,i,k), 1, cholesky_mo_transp(1,j,l), 1)
|
get_two_e_integral = ddot(cholesky_mo_num, cholesky_mo_transp(1,i,k), 1, cholesky_mo_transp(1,j,l), 1)
|
||||||
! double precision, external :: get_from_mo_cholesky_cache
|
|
||||||
! get_two_e_integral = get_from_mo_cholesky_cache(i,j,k,l,.False.)
|
! get_two_e_integral = 0.d0
|
||||||
|
! do kk=1,cholesky_mo_num
|
||||||
|
! get_two_e_integral = get_two_e_integral + cholesky_mo_transp(kk,i,k)*cholesky_mo_transp(kk,i,l)
|
||||||
|
! enddo
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
@ -328,7 +344,7 @@ double precision function mo_two_e_integral(i,j,k,l)
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer, intent(in) :: i,j,k,l
|
integer, intent(in) :: i,j,k,l
|
||||||
double precision :: get_two_e_integral
|
double precision :: get_two_e_integral
|
||||||
PROVIDE mo_two_e_integrals_in_map mo_integrals_cache
|
PROVIDE all_mo_integrals
|
||||||
!DIR$ FORCEINLINE
|
!DIR$ FORCEINLINE
|
||||||
mo_two_e_integral = get_two_e_integral(i,j,k,l,mo_integrals_map)
|
mo_two_e_integral = get_two_e_integral(i,j,k,l,mo_integrals_map)
|
||||||
return
|
return
|
||||||
@ -503,11 +519,46 @@ subroutine get_mo_two_e_integrals_exch_ii(k,l,sze,out_val,map)
|
|||||||
|
|
||||||
if (do_mo_cholesky) then
|
if (do_mo_cholesky) then
|
||||||
|
|
||||||
double precision, external :: ddot
|
if ( (k>=mo_integrals_cache_min).and.(k<=mo_integrals_cache_max).and. &
|
||||||
do i=1,sze
|
(l>=mo_integrals_cache_min).and.(l<=mo_integrals_cache_max) ) then
|
||||||
out_val(i) = ddot(cholesky_mo_num, cholesky_mo_transp(1,i,k), 1, &
|
|
||||||
cholesky_mo_transp(1,i,l), 1)
|
double precision, external :: ddot
|
||||||
enddo
|
integer :: kk
|
||||||
|
|
||||||
|
do i=1,mo_integrals_cache_min-1
|
||||||
|
out_val(i) = ddot(cholesky_mo_num, cholesky_mo_transp(1,i,k), 1, &
|
||||||
|
cholesky_mo_transp(1,i,l), 1)
|
||||||
|
! out_val(i) = 0.d0
|
||||||
|
! do kk=1,cholesky_mo_num
|
||||||
|
! out_val(i) = out_val(i) + cholesky_mo_transp(kk,i,k)*cholesky_mo_transp(kk,i,l)
|
||||||
|
! enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
|
do i=mo_integrals_cache_min,mo_integrals_cache_max
|
||||||
|
out_val(i) = get_two_e_integral_cache(i,i,k,l)
|
||||||
|
enddo
|
||||||
|
|
||||||
|
do i=mo_integrals_cache_max, sze
|
||||||
|
out_val(i) = ddot(cholesky_mo_num, cholesky_mo_transp(1,i,k), 1, &
|
||||||
|
cholesky_mo_transp(1,i,l), 1)
|
||||||
|
! out_val(i) = 0.d0
|
||||||
|
! do kk=1,cholesky_mo_num
|
||||||
|
! out_val(i) = out_val(i) + cholesky_mo_transp(kk,i,k)*cholesky_mo_transp(kk,i,l)
|
||||||
|
! enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
do i=1,sze
|
||||||
|
out_val(i) = ddot(cholesky_mo_num, cholesky_mo_transp(1,i,k), 1, &
|
||||||
|
cholesky_mo_transp(1,i,l), 1)
|
||||||
|
! out_val(i) = 0.d0
|
||||||
|
! do kk=1,cholesky_mo_num
|
||||||
|
! out_val(i) = out_val(i) + cholesky_mo_transp(kk,i,k)*cholesky_mo_transp(kk,i,l)
|
||||||
|
! enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ BEGIN_PROVIDER [double precision, two_e_int_hf_f, (n_basis_orb,n_basis_orb,n_max
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer :: orb_i,orb_j,i,j,orb_m,orb_n,m,n
|
integer :: orb_i,orb_j,i,j,orb_m,orb_n,m,n
|
||||||
double precision :: get_two_e_integral
|
double precision :: get_two_e_integral
|
||||||
PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals
|
PROVIDE all_mo_integrals big_array_exchange_integrals
|
||||||
do orb_m = 1, n_max_occ_val_orb_for_hf! electron 1
|
do orb_m = 1, n_max_occ_val_orb_for_hf! electron 1
|
||||||
m = list_valence_orb_for_hf(orb_m,1)
|
m = list_valence_orb_for_hf(orb_m,1)
|
||||||
do orb_n = 1, n_max_occ_val_orb_for_hf! electron 2
|
do orb_n = 1, n_max_occ_val_orb_for_hf! electron 2
|
||||||
|
@ -243,7 +243,7 @@ BEGIN_PROVIDER [double precision, two_e_int_aa_f, (n_basis_orb,n_basis_orb,n_act
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer :: orb_i,orb_j,i,j,orb_m,orb_n,m,n
|
integer :: orb_i,orb_j,i,j,orb_m,orb_n,m,n
|
||||||
double precision :: integrals_array(mo_num,mo_num),get_two_e_integral
|
double precision :: integrals_array(mo_num,mo_num),get_two_e_integral
|
||||||
PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals
|
PROVIDE all_mo_integrals
|
||||||
do orb_m = 1, n_act_orb ! electron 1
|
do orb_m = 1, n_act_orb ! electron 1
|
||||||
m = list_act(orb_m)
|
m = list_act(orb_m)
|
||||||
do orb_n = 1, n_act_orb ! electron 2
|
do orb_n = 1, n_act_orb ! electron 2
|
||||||
@ -273,7 +273,7 @@ BEGIN_PROVIDER [double precision, two_e_int_ia_f, (n_basis_orb,n_basis_orb,n_ina
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer :: orb_i,orb_j,i,j,orb_m,orb_n,m,n
|
integer :: orb_i,orb_j,i,j,orb_m,orb_n,m,n
|
||||||
double precision :: integrals_array(mo_num,mo_num),get_two_e_integral
|
double precision :: integrals_array(mo_num,mo_num),get_two_e_integral
|
||||||
PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals
|
PROVIDE all_mo_integrals
|
||||||
do orb_m = 1, n_act_orb ! electron 1
|
do orb_m = 1, n_act_orb ! electron 1
|
||||||
m = list_act(orb_m)
|
m = list_act(orb_m)
|
||||||
do orb_n = 1, n_inact_orb ! electron 2
|
do orb_n = 1, n_inact_orb ! electron 2
|
||||||
@ -303,7 +303,7 @@ BEGIN_PROVIDER [double precision, two_e_int_ii_f, (n_basis_orb,n_basis_orb,n_ina
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer :: orb_i,orb_j,i,j,orb_m,orb_n,m,n
|
integer :: orb_i,orb_j,i,j,orb_m,orb_n,m,n
|
||||||
double precision :: get_two_e_integral,integrals_array(mo_num,mo_num)
|
double precision :: get_two_e_integral,integrals_array(mo_num,mo_num)
|
||||||
PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals
|
PROVIDE all_mo_integrals
|
||||||
do orb_m = 1, n_inact_orb ! electron 1
|
do orb_m = 1, n_inact_orb ! electron 1
|
||||||
m = list_inact(orb_m)
|
m = list_inact(orb_m)
|
||||||
do orb_n = 1, n_inact_orb ! electron 2
|
do orb_n = 1, n_inact_orb ! electron 2
|
||||||
|
@ -136,7 +136,7 @@
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer :: ipoint
|
integer :: ipoint
|
||||||
double precision :: wall0,wall1,f_hf,on_top,w_hf,sqpi
|
double precision :: wall0,wall1,f_hf,on_top,w_hf,sqpi
|
||||||
PROVIDE mo_two_e_integrals_in_map mo_integrals_map big_array_exchange_integrals
|
PROVIDE all_mo_integrals
|
||||||
print*,'providing mu_of_r_hf_old ...'
|
print*,'providing mu_of_r_hf_old ...'
|
||||||
call wall_time(wall0)
|
call wall_time(wall0)
|
||||||
sqpi = dsqrt(dacos(-1.d0))
|
sqpi = dsqrt(dacos(-1.d0))
|
||||||
|
@ -222,13 +222,13 @@ END_DOC
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
! Identify degenerate MOs and force them on the axes
|
! Identify degenerate MOs and force them to be on the axes
|
||||||
allocate(S(ao_num,ao_num))
|
allocate(S(ao_num,ao_num))
|
||||||
i=1
|
i=1
|
||||||
do while (i<mo_num)
|
do while (i<mo_num)
|
||||||
j=i
|
j=i+1
|
||||||
m=1
|
m=1
|
||||||
do while ( (j+1<mo_num).and.(fock_matrix_diag_mo(j+1)-fock_matrix_diag_mo(i) < 1.d-8) )
|
do while ( (j<=mo_num).and.(fock_matrix_diag_mo(j)-fock_matrix_diag_mo(i) < 1.d-5) )
|
||||||
j += 1
|
j += 1
|
||||||
m += 1
|
m += 1
|
||||||
enddo
|
enddo
|
||||||
@ -236,7 +236,7 @@ END_DOC
|
|||||||
call dgemm('N','T',ao_num,ao_num,m,1.d0,mo_coef(1,i),size(mo_coef,1),mo_coef(1,i),size(mo_coef,1),0.d0,S,size(S,1))
|
call dgemm('N','T',ao_num,ao_num,m,1.d0,mo_coef(1,i),size(mo_coef,1),mo_coef(1,i),size(mo_coef,1),0.d0,S,size(S,1))
|
||||||
call pivoted_cholesky( S, m, -1.d0, ao_num, mo_coef(1,i))
|
call pivoted_cholesky( S, m, -1.d0, ao_num, mo_coef(1,i))
|
||||||
endif
|
endif
|
||||||
i = j+1
|
i = j
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
if(do_mom)then
|
if(do_mom)then
|
||||||
|
@ -41,7 +41,7 @@ program fcidump
|
|||||||
integer(key_kind), allocatable :: keys(:)
|
integer(key_kind), allocatable :: keys(:)
|
||||||
double precision, allocatable :: values(:)
|
double precision, allocatable :: values(:)
|
||||||
integer(cache_map_size_kind) :: n_elements, n_elements_max
|
integer(cache_map_size_kind) :: n_elements, n_elements_max
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
double precision :: get_two_e_integral, integral
|
double precision :: get_two_e_integral, integral
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ program fcidump_pyscf
|
|||||||
integer(key_kind), allocatable :: keys(:)
|
integer(key_kind), allocatable :: keys(:)
|
||||||
double precision, allocatable :: values(:)
|
double precision, allocatable :: values(:)
|
||||||
integer(cache_map_size_kind) :: n_elements, n_elements_max
|
integer(cache_map_size_kind) :: n_elements, n_elements_max
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
double precision :: get_two_e_integral, integral
|
double precision :: get_two_e_integral, integral
|
||||||
|
|
||||||
|
@ -18,6 +18,6 @@ program four_idx_transform
|
|||||||
io_mo_two_e_integrals = 'Write'
|
io_mo_two_e_integrals = 'Write'
|
||||||
SOFT_TOUCH io_mo_two_e_integrals
|
SOFT_TOUCH io_mo_two_e_integrals
|
||||||
if (.true.) then
|
if (.true.) then
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
endif
|
endif
|
||||||
end
|
end
|
||||||
|
@ -271,11 +271,7 @@ subroutine export_trexio(update,full_path)
|
|||||||
call trexio_assert(rc, TREXIO_SUCCESS)
|
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||||
|
|
||||||
allocate(factor(shell_num))
|
allocate(factor(shell_num))
|
||||||
! if (ao_normalized) then
|
factor(1:shell_num) = shell_normalization_factor(1:shell_num)
|
||||||
factor(1:shell_num) = shell_normalization_factor(1:shell_num)
|
|
||||||
! else
|
|
||||||
! factor(1:shell_num) = 1.d0
|
|
||||||
! endif
|
|
||||||
rc = trexio_write_basis_shell_factor(f(1), factor)
|
rc = trexio_write_basis_shell_factor(f(1), factor)
|
||||||
call trexio_assert(rc, TREXIO_SUCCESS)
|
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||||
|
|
||||||
@ -291,11 +287,12 @@ subroutine export_trexio(update,full_path)
|
|||||||
call trexio_assert(rc, TREXIO_SUCCESS)
|
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||||
|
|
||||||
allocate(factor(prim_num))
|
allocate(factor(prim_num))
|
||||||
! if (primitives_normalized) then
|
if (primitives_normalized) then
|
||||||
factor(1:prim_num) = prim_normalization_factor(1:prim_num)
|
factor(1:prim_num) = prim_normalization_factor(1:prim_num)
|
||||||
! else
|
else
|
||||||
! factor(1:prim_num) = 1.d0
|
factor(1:prim_num) = 1.d0
|
||||||
! endif
|
endif
|
||||||
|
|
||||||
rc = trexio_write_basis_prim_factor(f(1), factor)
|
rc = trexio_write_basis_prim_factor(f(1), factor)
|
||||||
call trexio_assert(rc, TREXIO_SUCCESS)
|
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||||
deallocate(factor)
|
deallocate(factor)
|
||||||
@ -324,14 +321,10 @@ subroutine export_trexio(update,full_path)
|
|||||||
C_A(3) = 0.d0
|
C_A(3) = 0.d0
|
||||||
|
|
||||||
allocate(factor(ao_num))
|
allocate(factor(ao_num))
|
||||||
if (ao_normalized) then
|
do i=1,ao_num
|
||||||
do i=1,ao_num
|
l = ao_first_of_shell(ao_shell(i))
|
||||||
l = ao_first_of_shell(ao_shell(i))
|
factor(i) = (ao_coef_normalized(i,1)+tiny(1.d0))/(ao_coef_normalized(l,1)+tiny(1.d0))
|
||||||
factor(i) = (ao_coef_normalized(i,1)+tiny(1.d0))/(ao_coef_normalized(l,1)+tiny(1.d0))
|
enddo
|
||||||
enddo
|
|
||||||
else
|
|
||||||
factor(:) = 1.d0
|
|
||||||
endif
|
|
||||||
rc = trexio_write_ao_normalization(f(1), factor)
|
rc = trexio_write_ao_normalization(f(1), factor)
|
||||||
call trexio_assert(rc, TREXIO_SUCCESS)
|
call trexio_assert(rc, TREXIO_SUCCESS)
|
||||||
deallocate(factor)
|
deallocate(factor)
|
||||||
@ -505,7 +498,7 @@ subroutine export_trexio(update,full_path)
|
|||||||
|
|
||||||
if (export_mo_two_e_ints) then
|
if (export_mo_two_e_ints) then
|
||||||
print *, 'MO two-e integrals'
|
print *, 'MO two-e integrals'
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
double precision, external :: mo_two_e_integral
|
double precision, external :: mo_two_e_integral
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
print*,'Providing act_2_rdm_ab_mo '
|
print*,'Providing act_2_rdm_ab_mo '
|
||||||
ispin = 3
|
ispin = 3
|
||||||
act_2_rdm_ab_mo = 0.d0
|
act_2_rdm_ab_mo = 0.d0
|
||||||
provide mo_two_e_integrals_in_map
|
provide all_mo_integrals
|
||||||
call wall_time(wall_1)
|
call wall_time(wall_1)
|
||||||
if(read_two_body_rdm_ab)then
|
if(read_two_body_rdm_ab)then
|
||||||
print*,'Reading act_2_rdm_ab_mo from disk ...'
|
print*,'Reading act_2_rdm_ab_mo from disk ...'
|
||||||
|
@ -19,7 +19,7 @@ subroutine orb_range_2_rdm_openmp(big_array,dim1,norb,list_orb,ispin,u_0,N_st,sz
|
|||||||
integer :: k
|
integer :: k
|
||||||
double precision, allocatable :: u_t(:,:)
|
double precision, allocatable :: u_t(:,:)
|
||||||
!DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: u_t
|
!DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: u_t
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
allocate(u_t(N_st,N_det))
|
allocate(u_t(N_st,N_det))
|
||||||
do k=1,N_st
|
do k=1,N_st
|
||||||
call dset_order(u_0(1,k),psi_bilinear_matrix_order,N_det)
|
call dset_order(u_0(1,k),psi_bilinear_matrix_order,N_det)
|
||||||
|
@ -22,7 +22,7 @@ subroutine orb_range_2_trans_rdm_openmp(big_array,dim1,norb,list_orb,ispin,u_0,N
|
|||||||
integer :: k
|
integer :: k
|
||||||
double precision, allocatable :: u_t(:,:)
|
double precision, allocatable :: u_t(:,:)
|
||||||
!DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: u_t
|
!DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: u_t
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
allocate(u_t(N_st,N_det))
|
allocate(u_t(N_st,N_det))
|
||||||
do k=1,N_st
|
do k=1,N_st
|
||||||
call dset_order(u_0(1,k),psi_bilinear_matrix_order,N_det)
|
call dset_order(u_0(1,k),psi_bilinear_matrix_order,N_det)
|
||||||
|
@ -77,7 +77,7 @@ subroutine gen_v_space(n1,n2,n3,n4,list1,list2,list3,list4,v)
|
|||||||
else
|
else
|
||||||
double precision :: get_two_e_integral
|
double precision :: get_two_e_integral
|
||||||
|
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
!$OMP PARALLEL &
|
!$OMP PARALLEL &
|
||||||
!$OMP SHARED(n1,n2,n3,n4,list1,list2,list3,list4,v,mo_integrals_map) &
|
!$OMP SHARED(n1,n2,n3,n4,list1,list2,list3,list4,v,mo_integrals_map) &
|
||||||
@ -161,7 +161,7 @@ BEGIN_PROVIDER [double precision, cc_space_v, (mo_num,mo_num,mo_num,mo_num)]
|
|||||||
integer :: i,j,k,l
|
integer :: i,j,k,l
|
||||||
double precision :: get_two_e_integral
|
double precision :: get_two_e_integral
|
||||||
|
|
||||||
PROVIDE mo_two_e_integrals_in_map
|
PROVIDE all_mo_integrals
|
||||||
|
|
||||||
!$OMP PARALLEL &
|
!$OMP PARALLEL &
|
||||||
!$OMP SHARED(cc_space_v,mo_num,mo_integrals_map) &
|
!$OMP SHARED(cc_space_v,mo_num,mo_integrals_map) &
|
||||||
|
Loading…
x
Reference in New Issue
Block a user