10
0
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-06-28 08:02:33 +02:00
This commit is contained in:
Kevin Gasperich 2020-01-29 13:15:44 -06:00
parent 1f353e6ca0
commit 56cc1c6b40

View File

@ -1,27 +1,77 @@
changed, but not by me compare master-features_periodic
ocaml/Input_determinants_by_hand.ml 694df1d6498767c9b130dadf0e0cbd585d10d348
ocaml/qp_set_mo_class.ml 8bfcfe8f21762aacd95bbeccb1c3c1d2f847cca3
src/cipsi/run_pt2_slave.irp.f
src/cipsi/selection.irp.f
src/cipsi/slave_cipsi.irp.f
src/davidson/EZFIO.cfg
src/davidson/davidson_parallel.irp.f
src/davidson/diagonalization_hs2_dressed.irp.f
src/davidson/input.irp.f
src/davidson/parameters.irp.f
src/davidson/u0_h_u0.irp.f
src/determinants/EZFIO.cfg
src/determinants/single_excitations.irp.f
src/ao_one_e_ints/ao_ortho_canonical_complex.irp.f TODO:
no {dump,load}_ao_integrals ao_ints
reverse index
s_half_inv_complex
ao_overlap_abs for complex
ao_integrals_n_e_per_atom_complex?
not implemented for periodic:
ao_two_e_integral
ao_two_e_integral_schwartz_accel
compute_ao_two_e_integrals
[ double precision, ao_two_e_integral_schwartz,(ao_num,ao_num) ]
compute_ao_integrals_jl
mo_one_e_ints
make separate providers for real/imag/complex parts for periodic
mo_basis
decide how to handle real/imag/complex parts of mo_coef (maybe just need to chage save_mos?)
reorder_core_orb: implement for periodic
save_mos_no_occ: implement for periodic
scf
finish complex DIIS
finish ao_two_e_integral_{alpha,beta}_complex (need reverse index?)
finish extrapolate_Fock_matrix_complex
finish eigenvectors_Fock_matrix_AO_complex
mo_two_e_ints
not started
############################
# utils, ezfio, ... #
############################
periodic:
ocaml/Input_mo_basis.ml ocaml/Input_mo_basis.ml
added mo_coef_imag array (real) added mo_coef_imag array (real)
still needs mo_coef_to_string and to_string? still needs mo_coef_to_string and to_string?
src/nuclei/EZFIO.cfg
[is_periodic]
if true use periodic parts of code
src/utils/linear_algebra.irp.f
complex versions of utils
(maybe put in separate file?)
src/utils/map_module.f90
subroutine map_get_2
get two neighboring values from map
not tested or used
src/utils_periodic/export_integrals_ao_periodic.irp.f
dump ints for testing
src/utils_periodic/import_integrals_ao_periodic.irp.f
read ints from pyscf
TODO: don't read ao_num from stdin
src/utils_periodic/import_mo_coef_periodic.irp.f
read mo_coef from pyscf
#######################
# ao_one_e_ints #
#######################
src/ao_one_e_ints/EZFIO.cfg src/ao_one_e_ints/EZFIO.cfg
[ao_integrals_n_e_imag] [ao_integrals_n_e_imag]
@ -46,9 +96,9 @@ src/ao_one_e_ints/pot_ao_pseudo_ints.irp.f
imag arrays can only be read from disk imag arrays can only be read from disk
no complex/imag versions of ao_integrals_n_e_per_atom, but this should be straightforward if we need it later? no complex/imag versions of ao_integrals_n_e_per_atom, but this should be straightforward if we need it later?
changed ao_overlap_abs so that it is set to cdabs(ao_overlap_complex) if (is_periodic) changed ao_overlap_abs so that it is set to cdabs(ao_overlap_complex) if (is_periodic)
(maybe not the behavior we want) TODO: (maybe not the behavior we want)
added S_inv_complex added S_inv_complex
(no S_half_inv_complex yet) TODO: (no S_half_inv_complex yet)
src/ao_one_e_ints/ao_ortho_canonical_complex.irp.f src/ao_one_e_ints/ao_ortho_canonical_complex.irp.f
ao_cart_to_sphe_coef_complex ao_cart_to_sphe_coef_complex
@ -68,6 +118,11 @@ src/ao_one_e_ints/ao_ortho_canonical_complex.irp.f
similar to real version similar to real version
#######################
# ao_two_e_ints #
#######################
src/ao_two_e_ints/map_integrals.irp.f src/ao_two_e_ints/map_integrals.irp.f
added ao_integrals_map_2 (provider linked to ao_integrals_map) added ao_integrals_map_2 (provider linked to ao_integrals_map)
double size of both maps if (is_periodic) double size of both maps if (is_periodic)
@ -96,8 +151,6 @@ src/ao_two_e_ints/map_integrals.irp.f
src/ao_two_e_ints/two_e_integrals.irp.f src/ao_two_e_ints/two_e_integrals.irp.f
not implemented for periodic: not implemented for periodic:
double precision function ao_two_e_integral double precision function ao_two_e_integral
double precision function ao_two_e_integral_schwartz_accel double precision function ao_two_e_integral_schwartz_accel
@ -109,7 +162,13 @@ src/ao_two_e_ints/two_e_integrals.irp.f
[ logical, ao_two_e_integrals_in_map ] [ logical, ao_two_e_integrals_in_map ]
complex AO ints can only be read from disk (not calculated) complex AO ints can only be read from disk (not calculated)
#######################
# mo_basis #
#######################
src/mo_basis/track_orb.irp.f → src/bitmask/track_orb.irp.f src/mo_basis/track_orb.irp.f → src/bitmask/track_orb.irp.f
not implemented for periodic: not implemented for periodic:
subroutine reorder_core_orb (should be modified for periodic) subroutine reorder_core_orb (should be modified for periodic)
@ -119,27 +178,13 @@ src/mo_basis/track_orb.irp.f → src/bitmask/track_orb.irp.f
[ complex*16, mo_coef_begin_iteration_complex, (ao_num,mo_num) ] [ complex*16, mo_coef_begin_iteration_complex, (ao_num,mo_num) ]
similar to real version similar to real version
src/hartree_fock/fock_matrix_hf_complex.irp.f
TODO for periodic:
[ complex*16, ao_two_e_integral_{alpha,beta}_complex, (ao_num, ao_num) ]
finish implementation (might need new version of two_e_integrals_index_reverse)
added for periodic:
[ complex*16, Fock_matrix_ao_{alpha,beta}_complex, (ao_num, ao_num) ]
src/hartree_fock/scf.irp.f
modified for periodic:
subroutine create_guess
should work for periodic
TODO: decide what to do about mo_coef_complex and imag/real parts for touch/save!!!
src/mo_basis/EZFIO.cfg src/mo_basis/EZFIO.cfg
[mo_coef_imag] [mo_coef_imag]
src/mo_basis/mos.irp.f src/mo_basis/mos.irp.f
modifieed for periodic: modified for periodic:
subroutine mix_mo_jk subroutine mix_mo_jk
src/mo_basis/mos_complex.irp.f src/mo_basis/mos_complex.irp.f
@ -191,6 +236,10 @@ src/mo_guess/pot_mo_ortho_lowdin_ints.irp.f
[complex*16, ao_ortho_lowdin_nucl_elec_integrals_complex, (mo_num,mo_num)] [complex*16, ao_ortho_lowdin_nucl_elec_integrals_complex, (mo_num,mo_num)]
#######################
# mo_one_e_ints #
#######################
src/mo_one_e_ints/EZFIO.cfg src/mo_one_e_ints/EZFIO.cfg
[mo_integrals_e_n_imag] [mo_integrals_e_n_imag]
[mo_integrals_kinetic_imag] [mo_integrals_kinetic_imag]
@ -221,8 +270,6 @@ src/mo_one_e_ints/pot_mo_pseudo_ints.irp.f
or transform complex MO ints from complex AO ints and also assign real/imag parts to separate arrays? or transform complex MO ints from complex AO ints and also assign real/imag parts to separate arrays?
src/mo_one_e_ints/mo_overlap.irp.f src/mo_one_e_ints/mo_overlap.irp.f
[ complex*16, mo_overlap_complex,(mo_num,mo_num) ] [ complex*16, mo_overlap_complex,(mo_num,mo_num) ]
TODO: add option to read from disk? TODO: add option to read from disk?
@ -230,5 +277,80 @@ src/mo_one_e_ints/mo_overlap.irp.f
maybe just add check to converter to ensure they're orthonormal, and don't save them after that? maybe just add check to converter to ensure they're orthonormal, and don't save them after that?
#######################
# SCF #
#######################
src/hartree_fock/fock_matrix_hf_complex.irp.f
TODO for periodic:
[ complex*16, ao_two_e_integral_{alpha,beta}_complex, (ao_num, ao_num) ]
finish implementation (might need new version of two_e_integrals_index_reverse)
added for periodic:
[ complex*16, Fock_matrix_ao_{alpha,beta}_complex, (ao_num, ao_num) ]
src/hartree_fock/scf.irp.f
modified for periodic:
subroutine create_guess
should work for periodic
TODO: decide what to do about mo_coef_complex and imag/real parts for touch/save!!!
TODO: call roothaan_hall_scf_complex if (is_periodic)
src/scf_utils/diagonalize_fock_complex.irp.f
[ complex*16, eigenvectors_Fock_matrix_mo_complex, (ao_num,mo_num) ]
similar to real version
make separate function in utils for lapack calls
src/scf_utils/diis_complex.irp.f
[complex*16, FPS_SPF_Matrix_AO_complex, (AO_num, AO_num)]
[complex*16, FPS_SPF_Matrix_MO, (mo_num, mo_num)]
linked providers:
[ double precision, eigenvalues_Fock_matrix_AO_complex, (AO_num) ]
[ complex*16, eigenvectors_Fock_matrix_AO_complex, (AO_num,AO_num) ]
TODO: finish implementing (need s_half_inv_complex)
note: eigvals is same type/size as real version
src/scf_utils/fock_matrix.irp.f
added checks to make sure we don't end up in real providers if (is_periodic)
probably not necessary?
[ double precision, SCF_energy ]
modified for periodic
could also add check to ensure imaginary part is zero?
src/scf_utils/fock_matrix_complex.irp.f
[ complex*16, Fock_matrix_mo_complex, (mo_num,mo_num) ]
[ double precision, Fock_matrix_diag_mo_complex, (mo_num)]
similar to real versions
added check to make sure diagonal elements of fock matrix are real
[ complex*16, Fock_matrix_mo_alpha_complex, (mo_num,mo_num) ]
[ complex*16, Fock_matrix_mo_beta_complex, (mo_num,mo_num) ]
[ complex*16, Fock_matrix_ao_complex, (ao_num, ao_num) ]
src/scf_utils/huckel_complex.irp.f
similar to real version
could just put if (is_periodic) branch in real version? (instead of making separate subroutine)
has soft_touch mo_coef_complex and call to save_mos (see other notes on real/imag parts)
src/scf_utils/roothaan_hall_scf_complex.irp.f
subroutine Roothaan_Hall_SCF_complex
similar to real
has soft_touch mo_coef_complex and call to save_mos (see other notes on real/imag parts)
subroutine extrapolate_Fock_matrix_complex
TODO: check variable types?
complex scratch is being used in dsysvx, should be real
src/scf_utils/scf_density_matrix_ao_complex.irp.f
complex versions of providers
[complex*16, SCF_density_matrix_ao_alpha_complex, (ao_num,ao_num) ]
[ complex*16, SCF_density_matrix_ao_beta_complex, (ao_num,ao_num) ]
[ complex*16, SCF_density_matrix_ao_complex, (ao_num,ao_num) ]