9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-11-18 11:23:38 +01: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
@ -110,6 +163,12 @@ src/ao_two_e_ints/two_e_integrals.irp.f
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)
@ -120,26 +179,12 @@ src/mo_basis/track_orb.irp.f → src/bitmask/track_orb.irp.f
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?
@ -231,4 +278,79 @@ src/mo_one_e_ints/mo_overlap.irp.f
#######################
# 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) ]