diff --git a/bin/qp_plugins b/bin/qp_plugins index dc14b8ea..b32f907f 100755 --- a/bin/qp_plugins +++ b/bin/qp_plugins @@ -6,6 +6,7 @@ Usage: qp_plugins download [-n ] qp_plugins install ... qp_plugins uninstall + qp_plugins update [-r ] qp_plugins create -n [-r ] [...] Options: @@ -23,6 +24,8 @@ Options: uninstall Uninstall a plugin + update Update the repository + create -n --name= Create a new plugin named -r --repository= Name of the repository in which to create the plugin @@ -89,16 +92,19 @@ def save_new_module(path, l_child): end """) +def get_repositories(): + l_result = [f for f in os.listdir(QP_PLUGINS) \ + if f not in [".gitignore", "local"] ] + return sorted(l_result) + + def main(arguments): """Main function""" arguments[""] = [os.path.normpath(name) for name in arguments[""]] if arguments["list"]: if arguments["--repositories"]: - l_result = [f for f in os.listdir(QP_PLUGINS) \ - if f not in [".gitignore", "local"] ] - - for repo in sorted(l_result): + for repo in get_repositories(): print repo else: @@ -138,6 +144,7 @@ def main(arguments): for module in sorted(l_result): print "%-30s %-30s"%(module, repo_of_plugin[module]) + if arguments["create"]: m_instance = ModuleHandler([QP_SRC]) @@ -306,6 +313,20 @@ def main(arguments): print "%s is a core module which can't be removed" % module + elif arguments["update"]: + + if arguments["--repository"]: + l_repositories = [ arguments["--repository"] ] + else: + l_repositories = get_repositories() + + for repo in l_repositories: + print "Updating ", repo + os.chdir(os.path.join(QP_PLUGINS,repo)) + git_cmd=["git", "pull"] + subprocess.check_call(git_cmd) + + if __name__ == '__main__': ARG = docopt(__doc__) main(ARG) diff --git a/bin/qp_set_frozen_core b/bin/qp_set_frozen_core index 3a7795cd..25b450dd 100755 --- a/bin/qp_set_frozen_core +++ b/bin/qp_set_frozen_core @@ -6,18 +6,39 @@ Automatically finds n, the number of core electrons. Calls qp_set_mo_class setting all MOs as Active, except the n/2 first ones which are set as Core. If pseudo-potentials are used, all the MOs are set as Active. -For elements on the right of the periodic table, qp_set_frozen_core will work -as expected. But for elements on the left, a small core will be chosen. For -example, a Carbon atom will have 2 core electrons, but a Lithium atom will have -zero. - - Usage: - qp_set_frozen_core [-q|--query] [-l|--large] EZFIO_DIR + qp_set_frozen_core [-q|--query] [(-l|-s|--large|--small)] EZFIO_DIR Options: -q --query Prints in the standard output the number of frozen MOs - -l --large Use a large core + -l --large Use a small core + -s --small Use a large core + + +Default numbers of frozen electrons: + + ========== ========= ======= ======= + Range Default Small Large + ========== ========= ======= ======= + H -> He 0 0 0 + Li -> Be 0 0 2 + B -> Ne 2 2 2 + Na -> Mg 2 2 10 + Al -> Ar 10 2 10 + K -> Ca 10 10 18 + Sc -> Zn 10 10 18 + Ga -> Kr 18 10 18 + Rb -> Sr 18 18 36 + Y -> Cd 18 18 36 + In -> Xe 36 18 36 + Cs -> Ba 36 36 54 + La -> Hg 36 36 54 + Tl -> Rn 54 36 54 + Fr -> Ra 54 54 86 + Ac -> Cn 54 54 86 + Nh -> Og 86 54 86 + ========== ========= ======= ======= + """ @@ -47,47 +68,36 @@ def main(arguments): except: do_pseudo = False - large = 0 - small = 1 - - size = small - if arguments["--large"]: - size = large if not do_pseudo: - if size == large: + if arguments["--large"]: for charge in ezfio.nuclei_nucl_charge: - if charge <= 2: - pass - elif charge <= 10: - n_frozen += 1 - elif charge <= 18: - n_frozen += 5 - elif charge <= 36: - n_frozen += 9 - elif charge <= 54: - n_frozen += 18 - elif charge <= 86: - n_frozen += 27 - elif charge <= 118: - n_frozen += 43 + if charge <= 2: pass + elif charge <= 10: n_frozen += 1 + elif charge <= 18: n_frozen += 5 + elif charge <= 36: n_frozen += 9 + elif charge <= 54: n_frozen += 18 + elif charge <= 86: n_frozen += 27 + elif charge <= 118: n_frozen += 43 - if size == small: + elif arguments["--small"]: + if charge <= 4: pass + elif charge <= 18: n_frozen += 1 + elif charge <= 36: n_frozen += 5 + elif charge <= 54: n_frozen += 9 + elif charge <= 86: n_frozen += 18 + elif charge <= 118: n_frozen += 27 + else: # default for charge in ezfio.nuclei_nucl_charge: - if charge < 5: - pass - elif charge < 13: - n_frozen += 1 - elif charge < 31: - n_frozen += 5 - elif charge < 49: - n_frozen += 9 - elif charge < 81: - n_frozen += 18 - elif charge < 113: - n_frozen += 27 + if charge <= 4: pass + elif charge <= 12: n_frozen += 1 + elif charge <= 30: n_frozen += 5 + elif charge <= 48: n_frozen += 9 + elif charge <= 80: n_frozen += 18 + elif charge <= 112: n_frozen += 27 + mo_num = ezfio.mo_basis_mo_num diff --git a/bin/qp_tunnel b/bin/qp_tunnel new file mode 100755 index 00000000..554c28ae --- /dev/null +++ b/bin/qp_tunnel @@ -0,0 +1,71 @@ +#!/usr/bin/env python2 + + +""" +Creates an ssh tunnel for using slaves on another network. +Launch a server on the front-end node of the cluster on which the master +process runs. Then start a client ont the front-end node of the distant +cluster. + +Usage: + qp_tunnel server EZFIO_DIR + qp_tunnel client
EZFIO_DIR + +Options: + -h --help + +""" + +import os +import sys +import zmq + +try: + import qp_path +except ImportError: + print "source .quantum_package.rc" + raise + +from docopt import docopt +from ezfio import ezfio + + +def get_address(filename): + with open(os.path.join(filename,'work','qp_run_address'),'r') as f: + a = f.readlines()[0].strip() + return a + + +def set_address(filename,address): + with open(os.path.join(filename,'work','qp_run_address'),'r') as f: + backup = f.readlines() + + with open(os.path.join(filename,'work','qp_run_address'),'w') as f: + f.write('\n'.join([address]+backup)) + + +def main_server(arguments,filename): + destination = get_address(filename) + print destination + + +def main_client(arguments,filename): + destination = arguments["
"] + print destination + + +def main(arguments): + """Main function""" + + print arguments + filename = arguments["EZFIO_DIR"] + + if arguments["server"]: + return main_server(arguments, filename) + if arguments["client"]: + return main_client(arguments, filename) + + +if __name__ == '__main__': + ARGUMENTS = docopt(__doc__) + main(ARGUMENTS) diff --git a/config/ifort_epyc.cfg b/config/ifort_epyc.cfg new file mode 100644 index 00000000..1b2427de --- /dev/null +++ b/config/ifort_epyc.cfg @@ -0,0 +1,63 @@ +# Common flags +############## +# +# -mkl=[parallel|sequential] : Use the MKL library +# --ninja : Allow the utilisation of ninja. It is mandatory ! +# --align=32 : Align all provided arrays on a 32-byte boundary +# +[COMMON] +FC : ifort -fpic +LAPACK_LIB : -mkl=parallel +IRPF90 : irpf90 +IRPF90_FLAGS : --ninja --align=32 + +# Global options +################ +# +# 1 : Activate +# 0 : Deactivate +# +[OPTION] +MODE : OPT ; [ OPT | PROFILE | DEBUG ] : Chooses the section below +CACHE : 0 ; Enable cache_compile.py +OPENMP : 1 ; Append OpenMP flags + +# Optimization flags +#################### +# +# -xHost : Compile a binary optimized for the current architecture +# -O2 : O3 not better than O2. +# -ip : Inter-procedural optimizations +# -ftz : Flushes denormal results to zero +# +[OPT] +FC : -traceback +FCFLAGS : -march=core-avx2 -O2 -ip -ftz -g + +# Profiling flags +################# +# +[PROFILE] +FC : -p -g +FCFLAGS : -march=core-avx2 -O2 -ip -ftz + +# Debugging flags +################# +# +# -traceback : Activate backtrace on runtime +# -fpe0 : All floating point exaceptions +# -C : Checks uninitialized variables, array subscripts, etc... +# -g : Extra debugging information +# -xSSE2 : Valgrind needs a very simple x86 executable +# +[DEBUG] +FC : -g -traceback +FCFLAGS : -xSSE2 -C -fpe0 -implicitnone + +# OpenMP flags +################# +# +[OPENMP] +FC : -qopenmp +IRPF90_FLAGS : --openmp + diff --git a/docs/source/modules/ao_two_e_ints.rst b/docs/source/modules/ao_two_e_ints.rst index 3c833a90..64a942f4 100644 --- a/docs/source/modules/ao_two_e_ints.rst +++ b/docs/source/modules/ao_two_e_ints.rst @@ -953,6 +953,7 @@ Subroutines / functions Gets multiple AO bi-electronic integral from the AO map . All i are retrieved for j,k,l fixed. + physicist convention : Needs: @@ -1224,6 +1225,8 @@ Subroutines / functions subroutine two_e_integrals_index(i,j,k,l,i1) + Gives a unique index for i,j,k,l using permtuation symmetry. + i <-> k, j <-> l, and (i,k) <-> (j,l) Called by: @@ -1255,7 +1258,7 @@ Subroutines / functions * :c:data:`mo_integrals_erf_cache` * :c:data:`mo_integrals_erf_map` * :c:data:`mo_integrals_map` - * :c:func:`two_e_integrals_index_reverse` + * :c:func:`test` .. c:function:: two_e_integrals_index_reverse: @@ -1268,6 +1271,15 @@ Subroutines / functions subroutine two_e_integrals_index_reverse(i,j,k,l,i1) + Computes the 4 indices $i,j,k,l$ from a unique index $i_1$. + For 2 indices $i,j$ and $i \le j$, we have + $p = i(i-1)/2 + j$. + The key point is that because $j < i$, + $i(i-1)/2 < p \le i(i+1)/2$. So $i$ can be found by solving + $i^2 - i - 2p=0$. One obtains $i=1 + \sqrt{1+8p}/2$ + and $j = p - i(i-1)/2$. + This rule is applied 3 times. First for the symmetry of the + pairs (i,k) and (j,l), and then for the symmetry within each pair. Called by: @@ -1275,11 +1287,5 @@ Subroutines / functions :columns: 3 * :c:data:`ao_two_e_integral_alpha` - - Calls: - - .. hlist:: - :columns: 3 - - * :c:func:`two_e_integrals_index` + * :c:func:`test` diff --git a/docs/source/modules/aux_quantities.rst b/docs/source/modules/aux_quantities.rst index e71dc325..c305c1fa 100644 --- a/docs/source/modules/aux_quantities.rst +++ b/docs/source/modules/aux_quantities.rst @@ -51,3 +51,13 @@ EZFIO parameters Beta one body density matrix on the |MO| basis computed with the wave function + +.. option:: data_one_e_dm_alpha_ao + + Alpha one body density matrix on the |AO| basis computed with the wave function + + +.. option:: data_one_e_dm_beta_ao + + Beta one body density matrix on the |AO| basis computed with the wave function + diff --git a/docs/source/modules/becke_numerical_grid.rst b/docs/source/modules/becke_numerical_grid.rst index 7868a547..d0ea3351 100644 --- a/docs/source/modules/becke_numerical_grid.rst +++ b/docs/source/modules/becke_numerical_grid.rst @@ -241,6 +241,7 @@ Providers * :c:data:`mos_in_r_array` * :c:data:`one_e_dm_alpha_at_r` * :c:data:`one_e_dm_and_grad_alpha_in_r` + * :c:data:`one_e_dm_no_core_and_grad_alpha_in_r` .. c:var:: final_weight_at_r @@ -339,6 +340,7 @@ Providers * :c:data:`mos_in_r_array` * :c:data:`one_e_dm_alpha_at_r` * :c:data:`one_e_dm_and_grad_alpha_in_r` + * :c:data:`one_e_dm_no_core_and_grad_alpha_in_r` .. c:var:: grid_points_per_atom @@ -468,6 +470,7 @@ Providers * :c:data:`mos_in_r_array` * :c:data:`one_e_dm_alpha_at_r` * :c:data:`one_e_dm_and_grad_alpha_in_r` + * :c:data:`one_e_dm_no_core_and_grad_alpha_in_r` .. c:var:: index_final_points_reverse @@ -532,6 +535,7 @@ Providers * :c:data:`mos_in_r_array` * :c:data:`one_e_dm_alpha_at_r` * :c:data:`one_e_dm_and_grad_alpha_in_r` + * :c:data:`one_e_dm_no_core_and_grad_alpha_in_r` .. c:var:: m_knowles @@ -608,6 +612,7 @@ Providers * :c:data:`mos_lapl_in_r_array` * :c:data:`one_e_dm_alpha_at_r` * :c:data:`one_e_dm_and_grad_alpha_in_r` + * :c:data:`one_e_dm_no_core_and_grad_alpha_in_r` * :c:data:`pot_grad_x_alpha_ao_pbe` * :c:data:`pot_grad_xc_alpha_ao_pbe` * :c:data:`pot_scal_x_alpha_ao_pbe` @@ -749,6 +754,7 @@ Providers * :c:data:`grid_points_per_atom` * :c:data:`n_points_radial_grid` + * :c:data:`nucl_charge` * :c:data:`nucl_coord_transp` * :c:data:`nucl_dist_inv` * :c:data:`nucl_num` @@ -818,6 +824,7 @@ Subroutines / functions * :c:data:`nucl_dist_inv` * :c:data:`slater_bragg_type_inter_distance_ua` * :c:data:`nucl_coord_transp` + * :c:data:`nucl_charge` * :c:data:`nucl_num` diff --git a/docs/source/modules/bitmask.rst b/docs/source/modules/bitmask.rst index 3e7f9077..f07d5dd9 100644 --- a/docs/source/modules/bitmask.rst +++ b/docs/source/modules/bitmask.rst @@ -108,10 +108,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -150,8 +152,6 @@ Providers * :c:data:`closed_shell_ref_bitmask` * :c:data:`psi_cas` * :c:data:`reunion_of_bitmask` - * :c:data:`reunion_of_cas_inact_bitmask` - * :c:data:`reunion_of_core_inact_act_bitmask` .. c:var:: closed_shell_ref_bitmask @@ -246,10 +246,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -374,10 +376,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -814,10 +818,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -943,10 +949,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -1021,10 +1029,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -1099,10 +1109,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -1110,12 +1122,12 @@ Providers .. c:var:: list_core_inact_act - File : :file:`bitmask/bitmasks.irp.f` + File : :file:`bitmask/core_inact_act_virt.irp.f` .. code:: fortran integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) - integer, allocatable :: list_core_inact_act_reverse (mo_num) + integer, allocatable :: list_core_inact_act_reverse (n_core_inact_act_orb) @@ -1125,7 +1137,8 @@ Providers :columns: 3 * :c:data:`list_inact` - * :c:data:`mo_num` + * :c:data:`n_core_inact_act_orb` + * :c:data:`n_core_orb` * :c:data:`n_int` * :c:data:`reunion_of_core_inact_act_bitmask` @@ -1134,12 +1147,12 @@ Providers .. c:var:: list_core_inact_act_reverse - File : :file:`bitmask/bitmasks.irp.f` + File : :file:`bitmask/core_inact_act_virt.irp.f` .. code:: fortran integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) - integer, allocatable :: list_core_inact_act_reverse (mo_num) + integer, allocatable :: list_core_inact_act_reverse (n_core_inact_act_orb) @@ -1149,7 +1162,8 @@ Providers :columns: 3 * :c:data:`list_inact` - * :c:data:`mo_num` + * :c:data:`n_core_inact_act_orb` + * :c:data:`n_core_orb` * :c:data:`n_int` * :c:data:`reunion_of_core_inact_act_bitmask` @@ -1225,10 +1239,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -1303,10 +1319,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -1381,10 +1399,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -1459,14 +1479,38 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` +.. c:var:: list_inact_act + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer, allocatable :: list_inact_act (n_inact_act_orb) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`n_core_orb` + * :c:data:`n_inact_act_orb` + + + .. c:var:: list_inact_reverse @@ -1537,10 +1581,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -1615,10 +1661,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -1693,10 +1741,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` @@ -1772,9 +1822,13 @@ Providers * :c:data:`dim_list_core_orb` * :c:data:`eigenvectors_fock_matrix_mo` * :c:data:`fock_matrix_mo` + * :c:data:`list_core_inact_act` * :c:data:`list_inact` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_inact_act_orb` * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_act_orb` * :c:data:`n_inact_orb_allocate` * :c:data:`n_virt_orb_allocate` * :c:data:`pt2_f` @@ -1813,31 +1867,26 @@ Providers .. c:var:: n_core_inact_act_orb - File : :file:`bitmask/bitmasks.irp.f` + File : :file:`bitmask/core_inact_act_virt.irp.f` .. code:: fortran - integer(bit_kind), allocatable :: reunion_of_core_inact_act_bitmask (N_int,2) integer :: n_core_inact_act_orb - Reunion of the core, inactive and active bitmasks Needs: .. hlist:: :columns: 3 - * :c:data:`cas_bitmask` - * :c:data:`n_int` - * :c:data:`reunion_of_core_inact_bitmask` + * :c:data:`n_core_orb` Needed by: .. hlist:: :columns: 3 - * :c:data:`core_inact_act_bitmask_4` * :c:data:`list_core_inact_act` @@ -1919,9 +1968,13 @@ Providers * :c:data:`dim_list_core_orb` * :c:data:`eigenvectors_fock_matrix_mo` * :c:data:`fock_matrix_mo` + * :c:data:`list_core_inact_act` * :c:data:`list_inact` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_inact_act_orb` * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_act_orb` * :c:data:`n_inact_orb_allocate` * :c:data:`n_virt_orb_allocate` * :c:data:`pt2_f` @@ -2004,9 +2057,13 @@ Providers * :c:data:`dim_list_core_orb` * :c:data:`eigenvectors_fock_matrix_mo` * :c:data:`fock_matrix_mo` + * :c:data:`list_core_inact_act` * :c:data:`list_inact` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_inact_act_orb` * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_act_orb` * :c:data:`n_inact_orb_allocate` * :c:data:`n_virt_orb_allocate` * :c:data:`pt2_f` @@ -2072,6 +2129,32 @@ Providers * :c:data:`generators_bitmask_restart` +.. c:var:: n_inact_act_orb + + + File : :file:`bitmask/core_inact_act_virt.irp.f` + + .. code:: fortran + + integer :: n_inact_act_orb + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_core_orb` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact_act` + + .. c:var:: n_inact_orb @@ -2129,9 +2212,13 @@ Providers * :c:data:`dim_list_core_orb` * :c:data:`eigenvectors_fock_matrix_mo` * :c:data:`fock_matrix_mo` + * :c:data:`list_core_inact_act` * :c:data:`list_inact` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_inact_act_orb` * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_act_orb` * :c:data:`n_inact_orb_allocate` * :c:data:`n_virt_orb_allocate` * :c:data:`pt2_f` @@ -2309,9 +2396,13 @@ Providers * :c:data:`dim_list_core_orb` * :c:data:`eigenvectors_fock_matrix_mo` * :c:data:`fock_matrix_mo` + * :c:data:`list_core_inact_act` * :c:data:`list_inact` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_vv_from_ao` + * :c:data:`n_core_inact_act_orb` * :c:data:`n_core_orb_allocate` + * :c:data:`n_inact_act_orb` * :c:data:`n_inact_orb_allocate` * :c:data:`n_virt_orb_allocate` * :c:data:`pt2_f` @@ -2412,7 +2503,6 @@ Providers .. hlist:: :columns: 3 - * :c:data:`cas_bitmask` * :c:data:`list_inact` * :c:data:`n_int` @@ -2426,7 +2516,6 @@ Providers .. code:: fortran integer(bit_kind), allocatable :: reunion_of_core_inact_act_bitmask (N_int,2) - integer :: n_core_inact_act_orb Reunion of the core, inactive and active bitmasks @@ -2436,7 +2525,7 @@ Providers .. hlist:: :columns: 3 - * :c:data:`cas_bitmask` + * :c:data:`list_inact` * :c:data:`n_int` * :c:data:`reunion_of_core_inact_bitmask` @@ -2570,10 +2659,12 @@ Providers * :c:data:`fock_matrix_mo` * :c:data:`inact_virt_bitmask` * :c:data:`list_core_inact_act` + * :c:data:`list_inact_act` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`mo_two_e_integrals_vv_from_ao` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` + * :c:data:`reunion_of_core_inact_act_bitmask` * :c:data:`reunion_of_core_inact_bitmask` * :c:data:`virt_bitmask_4` diff --git a/docs/source/modules/cipsi.rst b/docs/source/modules/cipsi.rst index af9f600d..a03b2e3c 100644 --- a/docs/source/modules/cipsi.rst +++ b/docs/source/modules/cipsi.rst @@ -344,6 +344,34 @@ Providers +.. c:var:: pt2_match_weight + + + File : :file:`cipsi/selection.irp.f` + + .. code:: fortran + + double precision, allocatable :: pt2_match_weight (N_states) + + + Weights adjusted along the selection to make the PT2 contributions + of each state coincide. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_states` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`selection_weight` + + .. c:var:: pt2_mindetinfirstteeth @@ -698,6 +726,7 @@ Providers * :c:data:`c0_weight` * :c:data:`n_states` + * :c:data:`pt2_match_weight` @@ -854,6 +883,8 @@ Subroutines / functions * :c:data:`psi_det_hii` * :c:data:`do_only_1h1p` * :c:data:`h0_type` + * :c:data:`thresh_sym` + * :c:data:`pseudo_sym` * :c:data:`psi_det_generators` Called by: @@ -1584,6 +1615,7 @@ Subroutines / functions * :c:data:`psi_energy` * :c:data:`psi_occ_pattern` * :c:data:`psi_energy` + * :c:data:`pt2_match_weight` * :c:data:`pt2_stoch_istate` * :c:data:`state_average_weight` * :c:data:`threshold_generators` @@ -1805,6 +1837,7 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`fci` * :c:func:`pt2` Calls: @@ -1991,6 +2024,7 @@ Subroutines / functions * :c:data:`psi_energy` * :c:data:`psi_occ_pattern` * :c:data:`psi_energy` + * :c:data:`pt2_match_weight` * :c:data:`pt2_stoch_istate` * :c:data:`state_average_weight` * :c:data:`threshold_generators` @@ -2344,6 +2378,7 @@ Subroutines / functions * :c:data:`state_average_weight` * :c:data:`n_det` * :c:data:`s2_eig` + * :c:data:`pt2_match_weight` * :c:data:`pt2_j` * :c:data:`mo_two_e_integrals_in_map` * :c:data:`psi_bilinear_matrix_transp_values` @@ -2415,6 +2450,7 @@ Subroutines / functions * :c:data:`psi_det` * :c:data:`psi_det_size` * :c:data:`psi_det_sorted_bit` + * :c:data:`pt2_match_weight` * :c:data:`pt2_stoch_istate` * :c:data:`state_average_weight` @@ -2441,6 +2477,7 @@ Subroutines / functions * :c:data:`n_det` * :c:data:`psi_bilinear_matrix_columns_loc` * :c:data:`n_det_selectors` + * :c:data:`psi_bilinear_matrix_transp_values` * :c:data:`psi_det_alpha_unique` * :c:data:`psi_bilinear_matrix_transp_values` * :c:data:`state_average_weight` @@ -2456,7 +2493,7 @@ Subroutines / functions * :c:data:`n_states` * :c:data:`pt2_f` * :c:data:`n_det_generators` - * :c:data:`psi_bilinear_matrix_transp_values` + * :c:data:`pt2_match_weight` * :c:data:`n_int` Called by: @@ -2496,4 +2533,5 @@ Subroutines / functions * :c:data:`psi_det` * :c:data:`psi_det_size` * :c:data:`psi_det_sorted_bit` + * :c:data:`pt2_match_weight` diff --git a/docs/source/modules/cis.rst b/docs/source/modules/cis.rst index 7943d7ce..151e3bda 100644 --- a/docs/source/modules/cis.rst +++ b/docs/source/modules/cis.rst @@ -72,7 +72,7 @@ Subroutines / functions .. c:function:: h_apply_cis: - File : :file:`h_apply.irp.f_shell_8` + File : :file:`h_apply.irp.f_shell_13` .. code:: fortran @@ -134,7 +134,7 @@ Subroutines / functions .. c:function:: h_apply_cis_diexc: - File : :file:`h_apply.irp.f_shell_8` + File : :file:`h_apply.irp.f_shell_13` .. code:: fortran @@ -169,7 +169,7 @@ Subroutines / functions .. c:function:: h_apply_cis_diexcorg: - File : :file:`h_apply.irp.f_shell_8` + File : :file:`h_apply.irp.f_shell_13` .. code:: fortran @@ -208,7 +208,7 @@ Subroutines / functions .. c:function:: h_apply_cis_diexcp: - File : :file:`h_apply.irp.f_shell_8` + File : :file:`h_apply.irp.f_shell_13` .. code:: fortran @@ -243,7 +243,7 @@ Subroutines / functions .. c:function:: h_apply_cis_monoexc: - File : :file:`h_apply.irp.f_shell_8` + File : :file:`h_apply.irp.f_shell_13` .. code:: fortran @@ -278,3 +278,215 @@ Subroutines / functions * :c:func:`bitstring_to_list_ab` * :c:func:`fill_h_apply_buffer_no_selection` + +.. c:function:: h_apply_cis_sym: + + + File : :file:`h_apply.irp.f_shell_13` + + .. code:: fortran + + subroutine H_apply_cis_sym() + + + Calls H_apply on the |HF| determinant and selects all connected single and double + excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`n_states` + * :c:data:`generators_bitmask` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`s2_eig` + * :c:data:`n_det_generators` + * :c:data:`i_bitmask_gen` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_generators` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`build_fock_tmp` + * :c:func:`copy_h_apply_buffer_to_wf` + * :c:func:`dsort` + * :c:func:`h_apply_cis_sym_diexc` + * :c:func:`h_apply_cis_sym_monoexc` + * :c:func:`make_s2_eigenfunction` + * :c:func:`wall_time` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_occ_pattern` + * :c:data:`c0_weight` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_occ_pattern` + + +.. c:function:: h_apply_cis_sym_diexc: + + + File : :file:`h_apply.irp.f_shell_13` + + .. code:: fortran + + subroutine H_apply_cis_sym_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_det` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cis_sym` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cis_sym_diexcp` + + +.. c:function:: h_apply_cis_sym_diexcorg: + + + File : :file:`h_apply.irp.f_shell_13` + + .. code:: fortran + + subroutine H_apply_cis_sym_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + + Generate all double excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cis_sym_diexcp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`connected_to_hf` + * :c:func:`fill_h_apply_buffer_no_selection` + + +.. c:function:: h_apply_cis_sym_diexcp: + + + File : :file:`h_apply.irp.f_shell_13` + + .. code:: fortran + + subroutine H_apply_cis_sym_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_det` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cis_sym_diexc` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cis_sym_diexcorg` + + +.. c:function:: h_apply_cis_sym_monoexc: + + + File : :file:`h_apply.irp.f_shell_13` + + .. code:: fortran + + subroutine H_apply_cis_sym_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in ) + + + Generate all single excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cis_sym` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`connected_to_hf` + * :c:func:`fill_h_apply_buffer_no_selection` + diff --git a/docs/source/modules/cisd.rst b/docs/source/modules/cisd.rst index 7816de30..94c6408f 100644 --- a/docs/source/modules/cisd.rst +++ b/docs/source/modules/cisd.rst @@ -65,7 +65,7 @@ Subroutines / functions .. c:function:: h_apply_cisd: - File : :file:`h_apply.irp.f_shell_8` + File : :file:`h_apply.irp.f_shell_12` .. code:: fortran @@ -127,7 +127,7 @@ Subroutines / functions .. c:function:: h_apply_cisd_diexc: - File : :file:`h_apply.irp.f_shell_8` + File : :file:`h_apply.irp.f_shell_12` .. code:: fortran @@ -162,7 +162,7 @@ Subroutines / functions .. c:function:: h_apply_cisd_diexcorg: - File : :file:`h_apply.irp.f_shell_8` + File : :file:`h_apply.irp.f_shell_12` .. code:: fortran @@ -201,7 +201,7 @@ Subroutines / functions .. c:function:: h_apply_cisd_diexcp: - File : :file:`h_apply.irp.f_shell_8` + File : :file:`h_apply.irp.f_shell_12` .. code:: fortran @@ -236,7 +236,7 @@ Subroutines / functions .. c:function:: h_apply_cisd_monoexc: - File : :file:`h_apply.irp.f_shell_8` + File : :file:`h_apply.irp.f_shell_12` .. code:: fortran @@ -271,3 +271,215 @@ Subroutines / functions * :c:func:`bitstring_to_list_ab` * :c:func:`fill_h_apply_buffer_no_selection` + +.. c:function:: h_apply_cisd_sym: + + + File : :file:`h_apply.irp.f_shell_12` + + .. code:: fortran + + subroutine H_apply_cisd_sym() + + + Calls H_apply on the |HF| determinant and selects all connected single and double + excitations (of the same symmetry). Auto-generated by the ``generate_h_apply`` script. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`psi_coef` + * :c:data:`n_states` + * :c:data:`generators_bitmask` + * :c:data:`mo_num` + * :c:data:`mo_two_e_integrals_in_map` + * :c:data:`h_apply_buffer_allocated` + * :c:data:`n_det` + * :c:data:`s2_eig` + * :c:data:`n_det_generators` + * :c:data:`i_bitmask_gen` + * :c:data:`n_int` + * :c:data:`psi_det` + * :c:data:`psi_det_generators` + * :c:data:`psi_det_generators` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`build_fock_tmp` + * :c:func:`copy_h_apply_buffer_to_wf` + * :c:func:`dsort` + * :c:func:`h_apply_cisd_sym_diexc` + * :c:func:`h_apply_cisd_sym_monoexc` + * :c:func:`make_s2_eigenfunction` + * :c:func:`wall_time` + + Touches: + + .. hlist:: + :columns: 3 + + * :c:data:`n_det` + * :c:data:`psi_occ_pattern` + * :c:data:`c0_weight` + * :c:data:`psi_coef` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_det` + * :c:data:`psi_det_size` + * :c:data:`psi_det_sorted_bit` + * :c:data:`psi_occ_pattern` + + +.. c:function:: h_apply_cisd_sym_diexc: + + + File : :file:`h_apply.irp.f_shell_12` + + .. code:: fortran + + subroutine H_apply_cisd_sym_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_det` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cisd_sym` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cisd_sym_diexcp` + + +.. c:function:: h_apply_cisd_sym_diexcorg: + + + File : :file:`h_apply.irp.f_shell_12` + + .. code:: fortran + + subroutine H_apply_cisd_sym_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + + Generate all double excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cisd_sym_diexcp` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`connected_to_hf` + * :c:func:`fill_h_apply_buffer_no_selection` + + +.. c:function:: h_apply_cisd_sym_diexcp: + + + File : :file:`h_apply.irp.f_shell_12` + + .. code:: fortran + + subroutine H_apply_cisd_sym_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`n_det` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cisd_sym_diexc` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cisd_sym_diexcorg` + + +.. c:function:: h_apply_cisd_sym_monoexc: + + + File : :file:`h_apply.irp.f_shell_12` + + .. code:: fortran + + subroutine H_apply_cisd_sym_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in ) + + + Generate all single excitations of key_in using the bit masks of holes and + particles. + Assume N_int is already provided. + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`n_int` + * :c:data:`elec_alpha_num` + * :c:data:`mo_num` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:func:`h_apply_cisd_sym` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`bitstring_to_list_ab` + * :c:func:`connected_to_hf` + * :c:func:`fill_h_apply_buffer_no_selection` + diff --git a/docs/source/modules/density_for_dft.rst b/docs/source/modules/density_for_dft.rst index fb48eb83..bf293eba 100644 --- a/docs/source/modules/density_for_dft.rst +++ b/docs/source/modules/density_for_dft.rst @@ -44,6 +44,12 @@ EZFIO parameters Default: full_density +.. option:: normalize_dm + + if .True., then you normalize the no_core_dm to elec_alpha_num - n_core_orb and elec_beta_num - n_core_orb + + Default: True + Providers --------- @@ -131,6 +137,9 @@ Providers :columns: 3 * :c:data:`ao_num` + * :c:data:`data_one_e_dm_alpha_ao` + * :c:data:`data_one_e_dm_beta_ao` + * :c:data:`density_for_dft` * :c:data:`mo_coef` * :c:data:`mo_num` * :c:data:`n_states` @@ -147,6 +156,39 @@ Providers * :c:data:`one_e_dm_and_grad_alpha_in_r` +.. c:var:: one_e_dm_alpha_ao_for_dft_no_core + + + File : :file:`density_for_dft/density_for_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_alpha_ao_for_dft_no_core (ao_num,ao_num,N_states) + double precision, allocatable :: one_e_dm_beta_ao_for_dft_no_core (ao_num,ao_num,N_states) + + + one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft_no_core + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha_for_dft_no_core` + * :c:data:`one_e_dm_mo_beta_for_dft_no_core` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_no_core_and_grad_alpha_in_r` + + .. c:var:: one_e_dm_average_mo_for_dft @@ -195,6 +237,9 @@ Providers :columns: 3 * :c:data:`ao_num` + * :c:data:`data_one_e_dm_alpha_ao` + * :c:data:`data_one_e_dm_beta_ao` + * :c:data:`density_for_dft` * :c:data:`mo_coef` * :c:data:`mo_num` * :c:data:`n_states` @@ -211,6 +256,39 @@ Providers * :c:data:`one_e_dm_and_grad_alpha_in_r` +.. c:var:: one_e_dm_beta_ao_for_dft_no_core + + + File : :file:`density_for_dft/density_for_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_alpha_ao_for_dft_no_core (ao_num,ao_num,N_states) + double precision, allocatable :: one_e_dm_beta_ao_for_dft_no_core (ao_num,ao_num,N_states) + + + one body density matrix on the AO basis based on one_e_dm_mo_alpha_for_dft_no_core + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`mo_coef` + * :c:data:`mo_num` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha_for_dft_no_core` + * :c:data:`one_e_dm_mo_beta_for_dft_no_core` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_no_core_and_grad_alpha_in_r` + + .. c:var:: one_e_dm_mo_alpha_for_dft @@ -228,14 +306,18 @@ Providers .. hlist:: :columns: 3 + * :c:data:`ao_num` * :c:data:`damping_for_rs_dft` * :c:data:`data_one_e_dm_alpha_mo` * :c:data:`density_for_dft` + * :c:data:`elec_alpha_num` + * :c:data:`list_inact` * :c:data:`mo_coef` * :c:data:`mo_num` * :c:data:`n_core_orb` * :c:data:`n_states` * :c:data:`no_core_density` + * :c:data:`normalize_dm` * :c:data:`one_body_dm_mo_alpha_one_det` * :c:data:`one_e_dm_mo_alpha` * :c:data:`one_e_dm_mo_alpha_average` @@ -246,12 +328,44 @@ Providers :columns: 3 * :c:data:`one_e_dm_alpha_ao_for_dft` + * :c:data:`one_e_dm_mo_alpha_for_dft_no_core` * :c:data:`one_e_dm_mo_for_dft` * :c:data:`psi_dft_energy_kinetic` * :c:data:`trace_v_xc` * :c:data:`trace_v_xc_new` +.. c:var:: one_e_dm_mo_alpha_for_dft_no_core + + + File : :file:`density_for_dft/density_for_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_mo_alpha_for_dft_no_core (mo_num,mo_num,N_states) + + + density matrix for alpha electrons in the MO basis without the core orbitals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_alpha_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` + + .. c:var:: one_e_dm_mo_beta_for_dft @@ -269,14 +383,18 @@ Providers .. hlist:: :columns: 3 + * :c:data:`ao_num` * :c:data:`damping_for_rs_dft` * :c:data:`data_one_e_dm_beta_mo` * :c:data:`density_for_dft` + * :c:data:`elec_beta_num` + * :c:data:`list_inact` * :c:data:`mo_coef` * :c:data:`mo_num` * :c:data:`n_core_orb` * :c:data:`n_states` * :c:data:`no_core_density` + * :c:data:`normalize_dm` * :c:data:`one_body_dm_mo_alpha_one_det` * :c:data:`one_e_dm_mo_alpha` * :c:data:`one_e_dm_mo_alpha_average` @@ -287,12 +405,44 @@ Providers :columns: 3 * :c:data:`one_e_dm_alpha_ao_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft_no_core` * :c:data:`one_e_dm_mo_for_dft` * :c:data:`psi_dft_energy_kinetic` * :c:data:`trace_v_xc` * :c:data:`trace_v_xc_new` +.. c:var:: one_e_dm_mo_beta_for_dft_no_core + + + File : :file:`density_for_dft/density_for_dft.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_mo_beta_for_dft_no_core (mo_num,mo_num,N_states) + + + density matrix for beta electrons in the MO basis without the core orbitals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`list_inact` + * :c:data:`mo_num` + * :c:data:`n_core_orb` + * :c:data:`n_states` + * :c:data:`one_e_dm_mo_beta_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` + + .. c:var:: one_e_dm_mo_for_dft diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst index 0f2b7348..9b0fab33 100644 --- a/docs/source/modules/determinants.rst +++ b/docs/source/modules/determinants.rst @@ -71,7 +71,7 @@ EZFIO parameters Thresholds on generators (fraction of the square of the norm) - Default: 0.99 + Default: 0.999 .. option:: n_int @@ -119,6 +119,18 @@ EZFIO parameters Weight of the states in state-average calculations. +.. option:: thresh_sym + + Thresholds to check if a determinant is connected with HF + + Default: 1.e-15 + +.. option:: pseudo_sym + + If |true|, discard any Slater determinants with an interaction smaller than thresh_sym with HF. + + Default: False + Providers --------- @@ -3971,6 +3983,37 @@ Subroutines / functions * :c:func:`debug_det` +.. c:function:: connected_to_hf: + + + File : :file:`determinants/slater_rules.irp.f` + + .. code:: fortran + + subroutine connected_to_hf(key_i,yes_no) + + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`thresh_sym` + * :c:data:`ref_bitmask` + * :c:data:`mo_one_e_integrals` + * :c:data:`n_int` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`get_excitation_degree` + * :c:func:`get_single_excitation` + * :c:func:`i_h_j` + + .. c:function:: connected_to_ref: @@ -5367,6 +5410,7 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`connected_to_hf` * :c:data:`degree_max_generators` * :c:func:`diag_h_mat_elem_fock` * :c:func:`example_determinants` @@ -5699,6 +5743,7 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`connected_to_hf` * :c:func:`diag_h_mat_elem_fock` * :c:func:`get_excitation` * :c:func:`i_h_j` @@ -5866,6 +5911,7 @@ Subroutines / functions :columns: 3 * :c:data:`coef_hf_selector` + * :c:func:`connected_to_hf` * :c:func:`example_determinants` * :c:func:`get_d0` * :c:func:`get_d1` diff --git a/docs/source/modules/dft_utils_in_r.rst b/docs/source/modules/dft_utils_in_r.rst index a5164ee5..0cfa30d6 100644 --- a/docs/source/modules/dft_utils_in_r.rst +++ b/docs/source/modules/dft_utils_in_r.rst @@ -344,6 +344,94 @@ Providers * :c:data:`mos_lapl_in_r_array` +.. c:var:: elec_alpha_num_grid_becke + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states) + double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states) + double precision, allocatable :: elec_beta_num_grid_becke (N_states) + double precision, allocatable :: elec_alpha_num_grid_becke (N_states) + + + one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) + one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate) + where r_i is the ith point of the grid and istate is the state number + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vxc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`aos_vxc_alpha_lda_w` + * :c:data:`energy_c_lda` + * :c:data:`energy_c_sr_lda` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_x_lda` + * :c:data:`energy_x_sr_lda` + + +.. c:var:: elec_beta_num_grid_becke + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states) + double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states) + double precision, allocatable :: elec_beta_num_grid_becke (N_states) + double precision, allocatable :: elec_alpha_num_grid_becke (N_states) + + + one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) + one_e_dm_beta_at_r(i,istate) = n_beta(r_i,istate) + where r_i is the ith point of the grid and istate is the state number + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft` + + Needed by: + + .. hlist:: + :columns: 3 + + * :c:data:`aos_sr_vc_alpha_lda_w` + * :c:data:`aos_sr_vxc_alpha_lda_w` + * :c:data:`aos_vc_alpha_lda_w` + * :c:data:`aos_vxc_alpha_lda_w` + * :c:data:`energy_c_lda` + * :c:data:`energy_c_sr_lda` + * :c:data:`energy_sr_x_lda` + * :c:data:`energy_x_lda` + * :c:data:`energy_x_sr_lda` + + .. c:var:: mos_grad_in_r_array @@ -467,6 +555,8 @@ Providers double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states) double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states) + double precision, allocatable :: elec_beta_num_grid_becke (N_states) + double precision, allocatable :: elec_alpha_num_grid_becke (N_states) one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) @@ -628,6 +718,8 @@ Providers double precision, allocatable :: one_e_dm_alpha_at_r (n_points_final_grid,N_states) double precision, allocatable :: one_e_dm_beta_at_r (n_points_final_grid,N_states) + double precision, allocatable :: elec_beta_num_grid_becke (N_states) + double precision, allocatable :: elec_alpha_num_grid_becke (N_states) one_e_dm_alpha_at_r(i,istate) = n_alpha(r_i,istate) @@ -688,6 +780,66 @@ Providers +.. c:var:: one_e_dm_no_core_and_grad_alpha_in_r + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_no_core_and_grad_alpha_in_r (4,n_points_final_grid,N_states) + double precision, allocatable :: one_e_dm_no_core_and_grad_beta_in_r (4,n_points_final_grid,N_states) + + + one_e_dm_no_core_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) without core orbitals + one_e_dm_no_core_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) without core orbitals + one_e_dm_no_core_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) without core orbitals + one_e_dm_no_core_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) without core orbitals + where r_i is the ith point of the grid and istate is the state number + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` + + + +.. c:var:: one_e_dm_no_core_and_grad_beta_in_r + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + double precision, allocatable :: one_e_dm_no_core_and_grad_alpha_in_r (4,n_points_final_grid,N_states) + double precision, allocatable :: one_e_dm_no_core_and_grad_beta_in_r (4,n_points_final_grid,N_states) + + + one_e_dm_no_core_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) without core orbitals + one_e_dm_no_core_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) without core orbitals + one_e_dm_no_core_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) without core orbitals + one_e_dm_no_core_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) without core orbitals + where r_i is the ith point of the grid and istate is the state number + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`final_grid_points` + * :c:data:`n_points_final_grid` + * :c:data:`n_states` + * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` + + + .. c:var:: one_e_grad_2_dm_alpha_at_r @@ -784,6 +936,55 @@ Providers Subroutines / functions ----------------------- +.. c:function:: dens_grad_a_b_no_core_and_aos_grad_aos_at_r: + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + subroutine dens_grad_a_b_no_core_and_aos_grad_aos_at_r(r,dm_a,dm_b, grad_dm_a, grad_dm_b, aos_array, grad_aos_array) + + + input: + + * r(1) ==> r(1) = x, r(2) = y, r(3) = z + + output: + + * dm_a = alpha density evaluated at r without the core orbitals + * dm_b = beta density evaluated at r without the core orbitals + * aos_array(i) = ao(i) evaluated at r without the core orbitals + * grad_dm_a(1) = X gradient of the alpha density evaluated in r without the core orbitals + * grad_dm_a(1) = X gradient of the beta density evaluated in r without the core orbitals + * grad_aos_array(1) = X gradient of the aos(i) evaluated at r + + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` + * :c:data:`n_states` + + Called by: + + .. hlist:: + :columns: 3 + + * :c:data:`one_e_dm_no_core_and_grad_alpha_in_r` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dsymv` + * :c:func:`give_all_aos_and_grad_at_r` + + .. c:function:: density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r: @@ -905,3 +1106,35 @@ Subroutines / functions * :c:func:`dgemv` * :c:func:`give_all_aos_at_r` + +.. c:function:: dm_dft_alpha_beta_no_core_at_r: + + + File : :file:`dft_utils_in_r/dm_in_r.irp.f` + + .. code:: fortran + + subroutine dm_dft_alpha_beta_no_core_at_r(r,dm_a,dm_b) + + + input: r(1) ==> r(1) = x, r(2) = y, r(3) = z + output : dm_a = alpha density evaluated at r(3) without the core orbitals + output : dm_b = beta density evaluated at r(3) without the core orbitals + + Needs: + + .. hlist:: + :columns: 3 + + * :c:data:`ao_num` + * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` + * :c:data:`n_states` + + Calls: + + .. hlist:: + :columns: 3 + + * :c:func:`dgemv` + * :c:func:`give_all_aos_at_r` + diff --git a/docs/source/modules/dft_utils_one_e.rst b/docs/source/modules/dft_utils_one_e.rst index 1e78a3f4..05a75570 100644 --- a/docs/source/modules/dft_utils_one_e.rst +++ b/docs/source/modules/dft_utils_one_e.rst @@ -387,320 +387,6 @@ Providers * :c:data:`energy_x_sr_pbe` -.. c:var:: potential_sr_c_alpha_ao_lda - - - File : :file:`dft_utils_one_e/sr_pot_ao_lda.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states) - - - short range correlation alpha/beta potentials with LDA functional on the |AO| basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - - -.. c:var:: potential_sr_c_alpha_ao_pbe - - - File : :file:`dft_utils_one_e/sr_pot_ao_pbe.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange / correlation potential for alpha / beta electrons with the Perdew-Burke-Ernzerhof GGA functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`n_states` - * :c:data:`pot_sr_grad_x_alpha_ao_pbe` - * :c:data:`pot_sr_scal_x_alpha_ao_pbe` - - - -.. c:var:: potential_sr_c_beta_ao_lda - - - File : :file:`dft_utils_one_e/sr_pot_ao_lda.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_c_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_beta_ao_lda (ao_num,ao_num,N_states) - - - short range correlation alpha/beta potentials with LDA functional on the |AO| basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - - -.. c:var:: potential_sr_c_beta_ao_pbe - - - File : :file:`dft_utils_one_e/sr_pot_ao_pbe.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange / correlation potential for alpha / beta electrons with the Perdew-Burke-Ernzerhof GGA functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`n_states` - * :c:data:`pot_sr_grad_x_alpha_ao_pbe` - * :c:data:`pot_sr_scal_x_alpha_ao_pbe` - - - -.. c:var:: potential_sr_x_alpha_ao_lda - - - File : :file:`dft_utils_one_e/sr_pot_ao_lda.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states) - - - short range exchange alpha/beta potentials with LDA functional on the |AO| basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - - -.. c:var:: potential_sr_x_alpha_ao_pbe - - - File : :file:`dft_utils_one_e/sr_pot_ao_pbe.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange / correlation potential for alpha / beta electrons with the Perdew-Burke-Ernzerhof GGA functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`n_states` - * :c:data:`pot_sr_grad_x_alpha_ao_pbe` - * :c:data:`pot_sr_scal_x_alpha_ao_pbe` - - - -.. c:var:: potential_sr_x_beta_ao_lda - - - File : :file:`dft_utils_one_e/sr_pot_ao_lda.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_x_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_x_beta_ao_lda (ao_num,ao_num,N_states) - - - short range exchange alpha/beta potentials with LDA functional on the |AO| basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - - -.. c:var:: potential_sr_x_beta_ao_pbe - - - File : :file:`dft_utils_one_e/sr_pot_ao_pbe.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_c_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange / correlation potential for alpha / beta electrons with the Perdew-Burke-Ernzerhof GGA functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`n_states` - * :c:data:`pot_sr_grad_x_alpha_ao_pbe` - * :c:data:`pot_sr_scal_x_alpha_ao_pbe` - - - -.. c:var:: potential_sr_xc_alpha_ao_lda - - - File : :file:`dft_utils_one_e/sr_pot_ao_lda_smashed.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_xc_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_xc_beta_ao_lda (ao_num,ao_num,N_states) - - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vxc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - - -.. c:var:: potential_sr_xc_alpha_ao_pbe - - - File : :file:`dft_utils_one_e/sr_pot_ao_pbe_smashed.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_xc_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_xc_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange / correlation potential for alpha / beta electrons with the Perdew-Burke-Ernzerhof GGA functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`n_states` - * :c:data:`pot_sr_grad_xc_alpha_ao_pbe` - * :c:data:`pot_sr_scal_xc_alpha_ao_pbe` - - - -.. c:var:: potential_sr_xc_beta_ao_lda - - - File : :file:`dft_utils_one_e/sr_pot_ao_lda_smashed.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_xc_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_xc_beta_ao_lda (ao_num,ao_num,N_states) - - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`aos_in_r_array` - * :c:data:`aos_sr_vxc_alpha_lda_w` - * :c:data:`n_points_final_grid` - * :c:data:`n_states` - - - -.. c:var:: potential_sr_xc_beta_ao_pbe - - - File : :file:`dft_utils_one_e/sr_pot_ao_pbe_smashed.irp.f` - - .. code:: fortran - - double precision, allocatable :: potential_sr_xc_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_sr_xc_beta_ao_pbe (ao_num,ao_num,N_states) - - - exchange / correlation potential for alpha / beta electrons with the Perdew-Burke-Ernzerhof GGA functional - - Needs: - - .. hlist:: - :columns: 3 - - * :c:data:`ao_num` - * :c:data:`n_states` - * :c:data:`pot_sr_grad_xc_alpha_ao_pbe` - * :c:data:`pot_sr_scal_xc_alpha_ao_pbe` - - - .. c:var:: psi_dft_energy_h_core diff --git a/docs/source/modules/ezfio_files.rst b/docs/source/modules/ezfio_files.rst index f9cb0ade..22329d4f 100644 --- a/docs/source/modules/ezfio_files.rst +++ b/docs/source/modules/ezfio_files.rst @@ -58,7 +58,9 @@ Providers * :c:data:`correlation_energy_ratio_max` * :c:data:`data_energy_proj` * :c:data:`data_energy_var` + * :c:data:`data_one_e_dm_alpha_ao` * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`data_one_e_dm_beta_ao` * :c:data:`data_one_e_dm_beta_mo` * :c:data:`davidson_sze_max` * :c:data:`disk_access_nuclear_repulsion` @@ -131,6 +133,7 @@ Providers * :c:data:`pseudo_lmax` * :c:data:`pseudo_n_k` * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_sym` * :c:data:`pseudo_v_k` * :c:data:`pseudo_v_kl` * :c:data:`psi_coef` @@ -146,6 +149,7 @@ Providers * :c:data:`state_following` * :c:data:`target_energy` * :c:data:`thresh_scf` + * :c:data:`thresh_sym` * :c:data:`threshold_davidson` * :c:data:`threshold_diis` * :c:data:`threshold_generators` @@ -219,7 +223,9 @@ Providers * :c:data:`correlation_energy_ratio_max` * :c:data:`data_energy_proj` * :c:data:`data_energy_var` + * :c:data:`data_one_e_dm_alpha_ao` * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`data_one_e_dm_beta_ao` * :c:data:`data_one_e_dm_beta_mo` * :c:data:`davidson_sze_max` * :c:data:`disk_access_nuclear_repulsion` @@ -281,6 +287,7 @@ Providers * :c:data:`pseudo_lmax` * :c:data:`pseudo_n_k` * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_sym` * :c:data:`pseudo_v_k` * :c:data:`pseudo_v_kl` * :c:data:`pt2_iterations` @@ -292,6 +299,7 @@ Providers * :c:data:`state_following` * :c:data:`target_energy` * :c:data:`thresh_scf` + * :c:data:`thresh_sym` * :c:data:`threshold_davidson` * :c:data:`threshold_diis` * :c:data:`threshold_generators` @@ -330,7 +338,9 @@ Providers * :c:data:`correlation_energy_ratio_max` * :c:data:`data_energy_proj` * :c:data:`data_energy_var` + * :c:data:`data_one_e_dm_alpha_ao` * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`data_one_e_dm_beta_ao` * :c:data:`data_one_e_dm_beta_mo` * :c:data:`davidson_sze_max` * :c:data:`disk_access_nuclear_repulsion` @@ -392,6 +402,7 @@ Providers * :c:data:`pseudo_lmax` * :c:data:`pseudo_n_k` * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_sym` * :c:data:`pseudo_v_k` * :c:data:`pseudo_v_kl` * :c:data:`pt2_iterations` @@ -403,6 +414,7 @@ Providers * :c:data:`state_following` * :c:data:`target_energy` * :c:data:`thresh_scf` + * :c:data:`thresh_sym` * :c:data:`threshold_davidson` * :c:data:`threshold_diis` * :c:data:`threshold_generators` @@ -673,7 +685,9 @@ Subroutines / functions * :c:func:`damping_scf` * :c:data:`data_energy_proj` * :c:data:`data_energy_var` + * :c:data:`data_one_e_dm_alpha_ao` * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`data_one_e_dm_beta_ao` * :c:data:`data_one_e_dm_beta_mo` * :c:func:`davidson_diag_hjj_sjj` * :c:data:`davidson_sze_max` @@ -740,6 +754,7 @@ Subroutines / functions * :c:data:`pseudo_lmax` * :c:data:`pseudo_n_k` * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_sym` * :c:data:`pseudo_v_k` * :c:data:`pseudo_v_kl` * :c:data:`pt2_iterations` @@ -752,6 +767,7 @@ Subroutines / functions * :c:data:`state_following` * :c:data:`target_energy` * :c:data:`thresh_scf` + * :c:data:`thresh_sym` * :c:data:`threshold_davidson` * :c:data:`threshold_diis` * :c:data:`threshold_generators` diff --git a/docs/source/modules/hartree_fock.rst b/docs/source/modules/hartree_fock.rst index 90857d0b..415c8973 100644 --- a/docs/source/modules/hartree_fock.rst +++ b/docs/source/modules/hartree_fock.rst @@ -51,6 +51,7 @@ Programs -------- * :ref:`scf` + * :ref:`test` Providers --------- diff --git a/docs/source/modules/mo_basis.rst b/docs/source/modules/mo_basis.rst index aae2e481..1c6e3c66 100644 --- a/docs/source/modules/mo_basis.rst +++ b/docs/source/modules/mo_basis.rst @@ -80,9 +80,9 @@ Providers Molecular orbital coefficients on |AO| basis set - mo_coef(i,j) = coefficient of the i-th |AO| on the jth mo + mo_coef(i,j) = coefficient of the i-th |AO| on the jth |MO| - mo_label : Label characterizing the MOS (local, canonical, natural, etc) + mo_label : Label characterizing the |MOs| (local, canonical, natural, etc) Needs: @@ -286,7 +286,6 @@ Providers * :c:data:`fps_spf_matrix_mo` * :c:data:`full_ijkl_bitmask` * :c:data:`int_erf_3_index` - * :c:data:`list_core_inact_act` * :c:data:`list_inact` * :c:data:`mo_class` * :c:data:`mo_coef` @@ -762,8 +761,11 @@ Subroutines / functions * :c:func:`hcore_guess` * :c:func:`huckel_guess` * :c:func:`roothaan_hall_scf` + * :c:func:`rotate_mos` * :c:func:`save_natural_mos` * :c:func:`save_ortho_mos` + * :c:func:`sort_by_fock_energies` + * :c:func:`swap_mos` Calls: diff --git a/docs/source/modules/mpi.rst b/docs/source/modules/mpi.rst index 5dde771a..3711b26c 100644 --- a/docs/source/modules/mpi.rst +++ b/docs/source/modules/mpi.rst @@ -74,7 +74,9 @@ Providers * :c:data:`correlation_energy_ratio_max` * :c:data:`data_energy_proj` * :c:data:`data_energy_var` + * :c:data:`data_one_e_dm_alpha_ao` * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`data_one_e_dm_beta_ao` * :c:data:`data_one_e_dm_beta_mo` * :c:data:`davidson_sze_max` * :c:data:`disk_access_nuclear_repulsion` @@ -152,6 +154,7 @@ Providers * :c:data:`pseudo_lmax` * :c:data:`pseudo_n_k` * :c:data:`pseudo_n_kl` + * :c:data:`pseudo_sym` * :c:data:`pseudo_v_k` * :c:data:`pseudo_v_kl` * :c:data:`psi_cas` @@ -174,6 +177,7 @@ Providers * :c:data:`state_following` * :c:data:`target_energy` * :c:data:`thresh_scf` + * :c:data:`thresh_sym` * :c:data:`threshold_davidson` * :c:data:`threshold_diis` * :c:data:`threshold_generators` diff --git a/docs/source/modules/nuclei.rst b/docs/source/modules/nuclei.rst index 0bd4b325..04ff1f5b 100644 --- a/docs/source/modules/nuclei.rst +++ b/docs/source/modules/nuclei.rst @@ -526,7 +526,7 @@ Providers .. code:: fortran - double precision, allocatable :: slater_bragg_radii (100) + double precision, allocatable :: slater_bragg_radii (0:100) atomic radii in Angstrom defined in table I of JCP 41, 3199 (1964) Slater @@ -604,7 +604,7 @@ Providers .. code:: fortran - double precision, allocatable :: slater_bragg_radii_ua (100) + double precision, allocatable :: slater_bragg_radii_ua (0:100) diff --git a/docs/source/modules/scf_utils.rst b/docs/source/modules/scf_utils.rst index 4bf431b9..d32daf5f 100644 --- a/docs/source/modules/scf_utils.rst +++ b/docs/source/modules/scf_utils.rst @@ -165,7 +165,7 @@ Providers double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_num) - Eigenvectors of the Fock matrix in the MO basis obtained with level shift. + Eigenvectors of the Fock matrix in the |MO| basis obtained with level shift. Needs: diff --git a/docs/source/modules/tools.rst b/docs/source/modules/tools.rst index d8e2aa46..2ad351c7 100644 --- a/docs/source/modules/tools.rst +++ b/docs/source/modules/tools.rst @@ -22,9 +22,12 @@ Programs * :ref:`print_ci_vectors` * :ref:`print_e_conv` * :ref:`print_wf` + * :ref:`rotate_mos` * :ref:`save_natorb` * :ref:`save_one_e_dm` * :ref:`save_ortho_mos` + * :ref:`sort_by_fock_energies` + * :ref:`swap_mos` * :ref:`write_integrals_erf` Subroutines / functions @@ -115,6 +118,7 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:data:`one_e_dm_ao_alpha` * :c:data:`one_e_dm_mo_alpha` Called by: @@ -129,6 +133,8 @@ Subroutines / functions .. hlist:: :columns: 3 + * :c:func:`ezfio_set_aux_quantities_data_one_e_dm_alpha_ao` * :c:func:`ezfio_set_aux_quantities_data_one_e_dm_alpha_mo` + * :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_ao` * :c:func:`ezfio_set_aux_quantities_data_one_e_dm_beta_mo` diff --git a/docs/source/modules/utils.rst b/docs/source/modules/utils.rst index f11ee43e..d7d078ca 100644 --- a/docs/source/modules/utils.rst +++ b/docs/source/modules/utils.rst @@ -997,6 +997,7 @@ Subroutines / functions * :c:func:`make_selection_buffer_s2` * :c:data:`psi_det_sorted` * :c:func:`reorder_core_orb` + * :c:func:`sort_by_fock_energies` * :c:func:`sort_selection_buffer` Calls: diff --git a/docs/source/programmers_guide/index_providers.rst b/docs/source/programmers_guide/index_providers.rst index 179d90c4..a491f509 100644 --- a/docs/source/programmers_guide/index_providers.rst +++ b/docs/source/programmers_guide/index_providers.rst @@ -168,7 +168,9 @@ Index of Providers * :c:data:`damping_for_rs_dft` * :c:data:`data_energy_proj` * :c:data:`data_energy_var` + * :c:data:`data_one_e_dm_alpha_ao` * :c:data:`data_one_e_dm_alpha_mo` + * :c:data:`data_one_e_dm_beta_ao` * :c:data:`data_one_e_dm_beta_mo` * :c:data:`davidson_criterion` * :c:data:`davidson_sze_max` @@ -214,7 +216,9 @@ Index of Providers * :c:data:`eigenvectors_fock_matrix_ao` * :c:data:`eigenvectors_fock_matrix_mo` * :c:data:`elec_alpha_num` + * :c:data:`elec_alpha_num_grid_becke` * :c:data:`elec_beta_num` + * :c:data:`elec_beta_num_grid_becke` * :c:data:`elec_num` * :c:data:`elec_num_tab` * :c:data:`element_mass` @@ -351,6 +355,7 @@ Index of Providers * :c:data:`list_del` * :c:data:`list_del_reverse` * :c:data:`list_inact` + * :c:data:`list_inact_act` * :c:data:`list_inact_reverse` * :c:data:`list_virt` * :c:data:`list_virt_reverse` @@ -441,6 +446,7 @@ Index of Providers * :c:data:`n_double_selectors` * :c:data:`n_generators_bitmask` * :c:data:`n_generators_bitmask_restart` + * :c:data:`n_inact_act_orb` * :c:data:`n_inact_orb` * :c:data:`n_inact_orb_allocate` * :c:data:`n_int` @@ -463,6 +469,7 @@ Index of Providers * :c:data:`no_ivvv_integrals` * :c:data:`no_vvv_integrals` * :c:data:`no_vvvv_integrals` + * :c:data:`normalize_dm` * :c:data:`nproc` * :c:data:`nthreads_davidson` * :c:data:`nthreads_pt2` @@ -487,6 +494,7 @@ Index of Providers * :c:data:`one_body_dm_mo_alpha_one_det` * :c:data:`one_body_dm_mo_beta_one_det` * :c:data:`one_e_dm_alpha_ao_for_dft` + * :c:data:`one_e_dm_alpha_ao_for_dft_no_core` * :c:data:`one_e_dm_alpha_at_r` * :c:data:`one_e_dm_alpha_in_r` * :c:data:`one_e_dm_and_grad_alpha_in_r` @@ -495,6 +503,7 @@ Index of Providers * :c:data:`one_e_dm_ao_beta` * :c:data:`one_e_dm_average_mo_for_dft` * :c:data:`one_e_dm_beta_ao_for_dft` + * :c:data:`one_e_dm_beta_ao_for_dft_no_core` * :c:data:`one_e_dm_beta_at_r` * :c:data:`one_e_dm_beta_in_r` * :c:data:`one_e_dm_dagger_mo_spin_index` @@ -502,12 +511,16 @@ Index of Providers * :c:data:`one_e_dm_mo_alpha` * :c:data:`one_e_dm_mo_alpha_average` * :c:data:`one_e_dm_mo_alpha_for_dft` + * :c:data:`one_e_dm_mo_alpha_for_dft_no_core` * :c:data:`one_e_dm_mo_beta` * :c:data:`one_e_dm_mo_beta_average` * :c:data:`one_e_dm_mo_beta_for_dft` + * :c:data:`one_e_dm_mo_beta_for_dft_no_core` * :c:data:`one_e_dm_mo_diff` * :c:data:`one_e_dm_mo_for_dft` * :c:data:`one_e_dm_mo_spin_index` + * :c:data:`one_e_dm_no_core_and_grad_alpha_in_r` + * :c:data:`one_e_dm_no_core_and_grad_beta_in_r` * :c:data:`one_e_energy` * :c:data:`one_e_grad_2_dm_alpha_at_r` * :c:data:`one_e_grad_2_dm_beta_at_r` @@ -556,18 +569,6 @@ Index of Providers * :c:data:`potential_c_beta_ao_sr_lda` * :c:data:`potential_c_beta_ao_sr_pbe` * :c:data:`potential_c_beta_mo` - * :c:data:`potential_sr_c_alpha_ao_lda` - * :c:data:`potential_sr_c_alpha_ao_pbe` - * :c:data:`potential_sr_c_beta_ao_lda` - * :c:data:`potential_sr_c_beta_ao_pbe` - * :c:data:`potential_sr_x_alpha_ao_lda` - * :c:data:`potential_sr_x_alpha_ao_pbe` - * :c:data:`potential_sr_x_beta_ao_lda` - * :c:data:`potential_sr_x_beta_ao_pbe` - * :c:data:`potential_sr_xc_alpha_ao_lda` - * :c:data:`potential_sr_xc_alpha_ao_pbe` - * :c:data:`potential_sr_xc_beta_ao_lda` - * :c:data:`potential_sr_xc_beta_ao_pbe` * :c:data:`potential_x_alpha_ao` * :c:data:`potential_x_alpha_ao_lda` * :c:data:`potential_x_alpha_ao_none` @@ -609,6 +610,7 @@ Index of Providers * :c:data:`pseudo_n_k_transp` * :c:data:`pseudo_n_kl` * :c:data:`pseudo_n_kl_transp` + * :c:data:`pseudo_sym` * :c:data:`pseudo_v_k` * :c:data:`pseudo_v_k_transp` * :c:data:`pseudo_v_kl` @@ -679,6 +681,7 @@ Index of Providers * :c:data:`pt2_f` * :c:data:`pt2_iterations` * :c:data:`pt2_j` + * :c:data:`pt2_match_weight` * :c:data:`pt2_max` * :c:data:`pt2_mindetinfirstteeth` * :c:data:`pt2_n_0` @@ -773,6 +776,7 @@ Index of Providers * :c:data:`target_energy` * :c:data:`theta_angular_integration_lebedev` * :c:data:`thresh_scf` + * :c:data:`thresh_sym` * :c:data:`threshold_davidson` * :c:data:`threshold_diis` * :c:data:`threshold_diis_nonzero` @@ -891,6 +895,7 @@ Index of Subroutines/Functions * :c:func:`compute_ao_two_e_integrals` * :c:func:`compute_ao_two_e_integrals_erf` * :c:func:`connect_to_taskserver` + * :c:func:`connected_to_hf` * :c:func:`connected_to_ref` * :c:func:`connected_to_ref_by_single` * :c:func:`copy_h_apply_buffer_to_wf` @@ -925,6 +930,7 @@ Index of Subroutines/Functions * :c:func:`decode_exc` * :c:func:`decode_exc_spin` * :c:func:`delete_selection_buffer` + * :c:func:`dens_grad_a_b_no_core_and_aos_grad_aos_at_r` * :c:func:`density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r` * :c:func:`derivative_knowles_function` * :c:func:`det_inf` @@ -942,6 +948,7 @@ Index of Subroutines/Functions * :c:func:`disconnect_from_taskserver_state` * :c:func:`dm_dft_alpha_beta_and_all_aos_at_r` * :c:func:`dm_dft_alpha_beta_at_r` + * :c:func:`dm_dft_alpha_beta_no_core_at_r` * :c:func:`do_single_excitation` * :c:func:`dpol` * :c:func:`dpold` @@ -1093,11 +1100,21 @@ Index of Subroutines/Functions * :c:func:`h_apply_cis_diexcorg` * :c:func:`h_apply_cis_diexcp` * :c:func:`h_apply_cis_monoexc` + * :c:func:`h_apply_cis_sym` + * :c:func:`h_apply_cis_sym_diexc` + * :c:func:`h_apply_cis_sym_diexcorg` + * :c:func:`h_apply_cis_sym_diexcp` + * :c:func:`h_apply_cis_sym_monoexc` * :c:func:`h_apply_cisd` * :c:func:`h_apply_cisd_diexc` * :c:func:`h_apply_cisd_diexcorg` * :c:func:`h_apply_cisd_diexcp` * :c:func:`h_apply_cisd_monoexc` + * :c:func:`h_apply_cisd_sym` + * :c:func:`h_apply_cisd_sym_diexc` + * :c:func:`h_apply_cisd_sym_diexcorg` + * :c:func:`h_apply_cisd_sym_diexcp` + * :c:func:`h_apply_cisd_sym_monoexc` * :c:func:`h_s2_u_0_nstates_openmp` * :c:func:`h_s2_u_0_nstates_openmp_work` * :c:func:`h_s2_u_0_nstates_openmp_work_1` @@ -1321,6 +1338,7 @@ Index of Subroutines/Functions * :c:func:`rinteg` * :c:func:`rintgauss` * :c:func:`roothaan_hall_scf` + * :c:func:`rotate_mos` * :c:func:`routine` * :c:func:`routine_e_conv` * :c:func:`routine_example_psi_det` @@ -1369,6 +1387,7 @@ Index of Subroutines/Functions * :c:func:`set_order_big` * :c:func:`single_excitation_wee` * :c:func:`sort` + * :c:func:`sort_by_fock_energies` * :c:func:`sort_dets_ab` * :c:func:`sort_dets_ab_v` * :c:func:`sort_dets_ba_v` @@ -1384,10 +1403,12 @@ Index of Subroutines/Functions * :c:func:`spot_isinwf` * :c:func:`step_function_becke` * :c:func:`svd` + * :c:func:`swap_mos` * :c:func:`switch_qp_run_to_master` * :c:func:`tamiser` * :c:func:`task_done_to_taskserver` * :c:func:`tasks_done_to_taskserver` + * :c:func:`test` * :c:func:`testteethbuilding` * :c:func:`total_memory` * :c:func:`two_e_integrals_index` diff --git a/docs/source/programs/fci.rst b/docs/source/programs/fci.rst index c5717b1a..e037c974 100644 --- a/docs/source/programs/fci.rst +++ b/docs/source/programs/fci.rst @@ -60,6 +60,7 @@ fci :columns: 3 * :c:func:`run_cipsi` + * :c:func:`run_slave_cipsi` * :c:func:`run_stochastic_cipsi` Touches: @@ -75,6 +76,7 @@ fci * :c:data:`n_iter` * :c:data:`psi_occ_pattern` * :c:data:`c0_weight` + * :c:data:`distributed_davidson` * :c:data:`psi_coef` * :c:data:`psi_det_sorted_bit` * :c:data:`psi_det` @@ -83,6 +85,9 @@ fci * :c:data:`psi_energy` * :c:data:`psi_occ_pattern` * :c:data:`psi_energy` + * :c:data:`pt2_e0_denominator` + * :c:data:`pt2_match_weight` * :c:data:`pt2_stoch_istate` + * :c:data:`read_wf` * :c:data:`state_average_weight` * :c:data:`threshold_generators` diff --git a/docs/source/programs/save_one_e_dm.rst b/docs/source/programs/save_one_e_dm.rst index 5758aad6..a47a0af8 100644 --- a/docs/source/programs/save_one_e_dm.rst +++ b/docs/source/programs/save_one_e_dm.rst @@ -9,15 +9,15 @@ save_one_e_dm - Program that computes the one body density on the |MO| basis + Program that computes the one body density on the |MO| and |AO| basis for $\alpha$ and $\beta$ electrons from the wave function stored in the |EZFIO| directory, and then saves it into the :ref:`module_aux_quantities`. Then, the global variable :option:`aux_quantities data_one_e_dm_alpha_mo` - and :option:`aux_quantities data_one_e_dm_beta_mo` will automatically - read this density in the next calculation. This can be used to perform - damping on the density in |RSDFT| calculations (see + and :option:`aux_quantities data_one_e_dm_beta_mo` (and the corresponding for |AO|) + will automatically ! read this density in the next calculation. + This can be used to perform damping on the density in |RSDFT| calculations (see :ref:`module_density_for_dft`). Needs: diff --git a/docs/source/research.bib b/docs/source/research.bib index 348c5a15..df7d1b54 100644 --- a/docs/source/research.bib +++ b/docs/source/research.bib @@ -1,14 +1,62 @@ %%% ARXIV TO BE UPDATED %%% -@misc{BibEntry2019Feb, - title = {{Quantum Package 2.0: An Open-Source Determinant-Driven Suite of -Programs}}, +@article{Dash2019May, + author = {Dash, Monika and Feldt, Jonas and Moroni, Saverio and Scemama, Anthony and Filippi, Claudia}, + title = {{Excited states with selected CI-QMC: chemically accurate excitation energies and geometries}}, journal = {arXiv}, year = {2019}, - month = {Feb}, - note = {[Online; accessed 7. Mar. 2019]}, - url = {https://arxiv.org/abs/1902.08154.pdf} + month = {May}, + eprint = {1905.06737}, + url = {https://arxiv.org/abs/1905.06737} } +@article{Burton2019May, + author = {Burton, Hugh G. A. and Thom, Alex J. W.}, + title = {{A General Approach for Multireference Ground and Excited States using Non-Orthogonal Configuration Interaction}}, + journal = {arXiv}, + year = {2019}, + month = {May}, + eprint = {1905.02626}, + url = {https://arxiv.org/abs/1905.02626} +} + + + +%%%% PUBLISHED PAPERS +@article{Loos_2019, + doi = {10.1021/acs.jpclett.9b01176}, + url = {https://doi.org/10.1021%2Facs.jpclett.9b01176}, + year = 2019, + month = {may}, + publisher = {American Chemical Society ({ACS})}, + author = {Pierre-Francois Loos and Bartélémy Pradines and Anthony Scemama and Julien Toulouse and Emmanuel Giner}, + title = {A Density-Based Basis-Set Correction For Wave Function Theory}, + journal = {The Journal of Physical Chemistry Letters} +} + +@article{Garniron_2019, + doi = {10.1021/acs.jctc.9b00176}, + url = {https://doi.org/10.1021%2Facs.jctc.9b00176}, + year = 2019, + month = {may}, + publisher = {American Chemical Society ({ACS})}, + author = {Yann Garniron and Thomas Applencourt and Kevin Gasperich and Anouar Benali and Anthony Ferte and Julien Paquier and Bartélémy Pradines and Roland Assaraf and Peter Reinhardt and Julien Toulouse and Pierrette Barbaresco and Nicolas Renon and Gregoire David and Jean-Paul Malrieu and Mickael Veril and Michel Caffarel and Pierre-Francois Loos and Emmanuel Giner and Anthony Scemama}, + title = {Quantum Package 2.0: An Open-Source Determinant-Driven Suite of Programs}, + journal = {Journal of Chemical Theory and Computation} +} + +@article{Scemama_2019, + doi = {10.1016/j.rechem.2019.100002}, + url = {https://doi.org/10.1016%2Fj.rechem.2019.100002}, + year = 2019, + month = {may}, + publisher = {Elsevier {BV}}, + pages = {100002}, + author = {Anthony Scemama and Michel Caffarel and Anouar Benali and Denis Jacquemin and Pierre-Fran{\c{c}}ois Loos}, + title = {Influence of pseudopotentials on excitation energies from selected configuration interaction and diffusion Monte Carlo}, + journal = {Results in Chemistry} +} + + @article{Applencourt2018Dec, author = {Applencourt, Thomas and Gasperich, Kevin and Scemama, Anthony}, title = {{Spin adaptation with determinant-based selected configuration interaction}}, @@ -19,9 +67,6 @@ Programs}}, url = {https://arxiv.org/abs/1812.06902} } - -%%%% PUBLISHED PAPERS - @article{Loos2019Mar, author = {Loos, Pierre-Fran\c{c}ois and Boggio-Pasqua, Martial and Scemama, Anthony and Caffarel, Michel and Jacquemin, Denis}, title = {{Reference Energies for Double Excitations}}, diff --git a/docs/source/users_guide/qp_plugins.rst b/docs/source/users_guide/qp_plugins.rst index 18a41ba8..bea6fd9f 100644 --- a/docs/source/users_guide/qp_plugins.rst +++ b/docs/source/users_guide/qp_plugins.rst @@ -53,6 +53,10 @@ Usage Uninstall the plugin ``plugin_name``. +.. option:: update + + Update the repositories of the plugins. Should be followed by a re-compilation. + .. option:: -n, --name= Create a new plugin named ``plugin_name`` (in local repository by default). diff --git a/docs/source/users_guide/qp_set_frozen_core.rst b/docs/source/users_guide/qp_set_frozen_core.rst index 09231c32..d404ff59 100644 --- a/docs/source/users_guide/qp_set_frozen_core.rst +++ b/docs/source/users_guide/qp_set_frozen_core.rst @@ -11,6 +11,29 @@ Automatically finds *n*, the number of core electrons. Calls :math:`n/2` first ones which are set as ``Core``. If pseudo-potentials are used, all the |MOs| are set as ``Active``. + +========== ========= ======= ======= + Range Default Small Large +========== ========= ======= ======= + H -> He 0 0 0 + Li -> Be 0 0 2 + B -> Ne 2 2 2 + Na -> Mg 2 2 10 + Al -> Ar 10 2 10 + K -> Ca 10 10 18 + Sc -> Zn 10 10 18 + Ga -> Kr 18 10 18 + Rb -> Sr 18 18 36 + Y -> Cd 18 18 36 + In -> Xe 36 18 36 + Cs -> Ba 36 36 54 + La -> Hg 36 36 54 + Tl -> Rn 54 36 54 + Fr -> Ra 54 54 86 + Ac -> Cn 54 54 86 + Nh -> Og 86 54 86 +========== ========= ======= ======= + For elements on the right of the periodic table, `qp_set_frozen_core` will work as expected. But for elements on the left, a small core will be chosen. For example, a Carbon atom will have 2 core electrons, but a @@ -21,11 +44,19 @@ Usage .. code:: bash - qp_set_frozen_core [-q] EZFIO_DIR + qp_set_frozen_core [-q|--query] [(-l|-s|--large|--small) EZFIO_DIR -.. option:: -q +.. option:: -q, --query Prints in the standard output the number of core electrons. +.. option:: -s, --small + + Use a small core. + +.. option:: -l, --large + + Use a large core. + diff --git a/man/cis.1 b/man/cis.1 index 5bfa5045..d533b377 100644 --- a/man/cis.1 +++ b/man/cis.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CIS" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "CIS" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME cis \- | Quantum Package > . diff --git a/man/cisd.1 b/man/cisd.1 index e123534f..33d6212e 100644 --- a/man/cisd.1 +++ b/man/cisd.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CISD" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "CISD" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME cisd \- | Quantum Package > . diff --git a/man/configure.1 b/man/configure.1 index 97b74e0d..c3ec2bd8 100644 --- a/man/configure.1 +++ b/man/configure.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "CONFIGURE" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "CONFIGURE" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME configure \- | Quantum Package > . diff --git a/man/diagonalize_h.1 b/man/diagonalize_h.1 index ba943f6c..3f4a3a30 100644 --- a/man/diagonalize_h.1 +++ b/man/diagonalize_h.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "DIAGONALIZE_H" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "DIAGONALIZE_H" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME diagonalize_h \- | Quantum Package > . diff --git a/man/excited_states.1 b/man/excited_states.1 index f140561f..37d343d2 100644 --- a/man/excited_states.1 +++ b/man/excited_states.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "EXCITED_STATES" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "EXCITED_STATES" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME excited_states \- | Quantum Package > . diff --git a/man/fci.1 b/man/fci.1 index 389f6453..5312866e 100644 --- a/man/fci.1 +++ b/man/fci.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "FCI" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "FCI" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME fci \- | Quantum Package > . @@ -98,9 +98,11 @@ Calls: .UNINDENT .INDENT 2.0 .IP \(bu 2 -\fBrun_stochastic_cipsi()\fP +\fBrun_slave_cipsi()\fP .UNINDENT .INDENT 2.0 +.IP \(bu 2 +\fBrun_stochastic_cipsi()\fP .UNINDENT .UNINDENT .sp @@ -121,10 +123,12 @@ Touches: \fBn_iter\fP .IP \(bu 2 \fBpsi_occ_pattern\fP +.IP \(bu 2 +\fBc0_weight\fP .UNINDENT .INDENT 2.0 .IP \(bu 2 -\fBc0_weight\fP +\fBdistributed_davidson\fP .IP \(bu 2 \fBpsi_coef\fP .IP \(bu 2 @@ -135,17 +139,23 @@ Touches: \fBpsi_det_size\fP .IP \(bu 2 \fBpsi_det_sorted_bit\fP +.IP \(bu 2 +\fBpsi_energy\fP +.IP \(bu 2 +\fBpsi_occ_pattern\fP .UNINDENT .INDENT 2.0 .IP \(bu 2 \fBpsi_energy\fP .IP \(bu 2 -\fBpsi_occ_pattern\fP +\fBpt2_e0_denominator\fP .IP \(bu 2 -\fBpsi_energy\fP +\fBpt2_match_weight\fP .IP \(bu 2 \fBpt2_stoch_istate\fP .IP \(bu 2 +\fBread_wf\fP +.IP \(bu 2 \fBstate_average_weight\fP .IP \(bu 2 \fBthreshold_generators\fP diff --git a/man/fcidump.1 b/man/fcidump.1 index 93d87ddd..e3ad0d11 100644 --- a/man/fcidump.1 +++ b/man/fcidump.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "FCIDUMP" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "FCIDUMP" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME fcidump \- | Quantum Package > . diff --git a/man/four_idx_transform.1 b/man/four_idx_transform.1 index a909c524..9188fe72 100644 --- a/man/four_idx_transform.1 +++ b/man/four_idx_transform.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "FOUR_IDX_TRANSFORM" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "FOUR_IDX_TRANSFORM" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME four_idx_transform \- | Quantum Package > . diff --git a/man/interfaces.1 b/man/interfaces.1 index c3f6625c..9cd6a115 100644 --- a/man/interfaces.1 +++ b/man/interfaces.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "INTERFACES" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "INTERFACES" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME interfaces \- | Quantum Package > . diff --git a/man/ks_scf.1 b/man/ks_scf.1 index 1b2651ca..b57a3342 100644 --- a/man/ks_scf.1 +++ b/man/ks_scf.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "KS_SCF" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "KS_SCF" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME ks_scf \- | Quantum Package > . diff --git a/man/molden.1 b/man/molden.1 index 5cc2824e..d92a75e3 100644 --- a/man/molden.1 +++ b/man/molden.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "MOLDEN" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "MOLDEN" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME molden \- | Quantum Package > . diff --git a/man/natural_orbitals.1 b/man/natural_orbitals.1 index 56185c52..5aa70b42 100644 --- a/man/natural_orbitals.1 +++ b/man/natural_orbitals.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "NATURAL_ORBITALS" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "NATURAL_ORBITALS" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME natural_orbitals \- | Quantum Package > . diff --git a/man/plugins.1 b/man/plugins.1 index d1c319a2..4a680ec6 100644 --- a/man/plugins.1 +++ b/man/plugins.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PLUGINS" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "PLUGINS" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME plugins \- | Quantum Package > . diff --git a/man/print_ci_vectors.1 b/man/print_ci_vectors.1 new file mode 100644 index 00000000..3905e63e --- /dev/null +++ b/man/print_ci_vectors.1 @@ -0,0 +1,87 @@ +.\" Man page generated from reStructuredText. +. +.TH "PRINT_CI_VECTORS" "1" "May 28, 2019" "2.0" "Quantum Package" +.SH NAME +print_ci_vectors \- | Quantum Package > +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.INDENT 0.0 +.INDENT 3.5 +Print the ground state wave function stored in the \fI\%EZFIO\fP directory +in the intermediate normalization. +.sp +It also prints a lot of information regarding the excitation +operators from the reference determinant ! and a first\-order +perturbative analysis of the wave function. +.sp +If the wave function strongly deviates from the first\-order analysis, +something funny is going on :) +.sp +Needs: +.INDENT 0.0 +.INDENT 2.0 +.IP \(bu 2 +\fBread_wf\fP +.UNINDENT +.INDENT 2.0 +.UNINDENT +.INDENT 2.0 +.UNINDENT +.UNINDENT +.sp +Calls: +.INDENT 0.0 +.INDENT 2.0 +.IP \(bu 2 +\fBroutine()\fP +.UNINDENT +.INDENT 2.0 +.UNINDENT +.INDENT 2.0 +.UNINDENT +.UNINDENT +.sp +Touches: +.INDENT 0.0 +.INDENT 2.0 +.IP \(bu 2 +\fBread_wf\fP +.UNINDENT +.INDENT 2.0 +.UNINDENT +.INDENT 2.0 +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +.SH AUTHOR +A. Scemama, E. Giner +.SH COPYRIGHT +2019, A. Scemama, E. Giner +.\" Generated by docutils manpage writer. +. diff --git a/man/print_e_conv.1 b/man/print_e_conv.1 index fb65e355..4fc03a3d 100644 --- a/man/print_e_conv.1 +++ b/man/print_e_conv.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PRINT_E_CONV" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "PRINT_E_CONV" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME print_e_conv \- | Quantum Package > . diff --git a/man/print_wf.1 b/man/print_wf.1 index bc2fa570..a1ae9233 100644 --- a/man/print_wf.1 +++ b/man/print_wf.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PRINT_WF" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "PRINT_WF" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME print_wf \- | Quantum Package > . diff --git a/man/printing.1 b/man/printing.1 index 4fd17a27..7b0e2514 100644 --- a/man/printing.1 +++ b/man/printing.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PRINTING" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "PRINTING" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME printing \- | Quantum Package > . diff --git a/man/pt2.1 b/man/pt2.1 index e54469fe..de04c26d 100644 --- a/man/pt2.1 +++ b/man/pt2.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "PT2" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "PT2" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME pt2 \- | Quantum Package > . diff --git a/man/qp_convert_output_to_ezfio.1 b/man/qp_convert_output_to_ezfio.1 index d5f6f147..7378da9f 100644 --- a/man/qp_convert_output_to_ezfio.1 +++ b/man/qp_convert_output_to_ezfio.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_CONVERT_OUTPUT_TO_EZFIO" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "QP_CONVERT_OUTPUT_TO_EZFIO" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME qp_convert_output_to_ezfio \- | Quantum Package > . diff --git a/man/qp_create_ezfio.1 b/man/qp_create_ezfio.1 new file mode 100644 index 00000000..0fe7ffaf --- /dev/null +++ b/man/qp_create_ezfio.1 @@ -0,0 +1,235 @@ +.\" Man page generated from reStructuredText. +. +.TH "QP_CREATE_EZFIO" "1" "May 28, 2019" "2.0" "Quantum Package" +.SH NAME +qp_create_ezfio \- | Quantum Package > +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.sp +This command creates an \fI\%EZFIO\fP directory from a standard \fIxyz\fP file or +from a \fIz\-matrix\fP file in Gaussian format. +.SH USAGE +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +qp_create_ezfio [\-a] \-b [\-c ] [\-d ] + [\-h] [\-m ] [\-o EZFIO_DIR] [\-p ] [\-x] [\-\-] FILE +.ft P +.fi +.UNINDENT +.UNINDENT +.INDENT 0.0 +.TP +.B \-a, \-\-au +If present, input geometry is in atomic units. +.UNINDENT +.INDENT 0.0 +.TP +.B \-b, \-\-basis= +Name of basis set. The basis set is defined as a single string if +all the atoms are taken from the same basis set, otherwise specific +elements can be defined as follows: +.INDENT 7.0 +.INDENT 3.5 +.sp +.nf +.ft C +\-b "cc\-pcvdz | H:cc\-pvdz | C:6\-31g" +\-b "cc\-pvtz | 1,H:sto\-3g | 3,H:6\-31g" +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +By default, the basis set is obtained from the local database of the. +\fIQuantum Package\fP This option is mandatory . +.sp +If \fB\fP is set to \fBshow\fP, the list of all available basis +sets is displayed. +.UNINDENT +.INDENT 0.0 +.TP +.B \-c, \-\-charge= +Total charge of the molecule. Default is 0. +.UNINDENT +.INDENT 0.0 +.TP +.B \-d, \-\-dummy= +Add dummy atoms (X) between atoms when the distance between two atoms +is less than x \etimes \esum R_\emathrm{cov}, the covalent radii +of the atoms. The default is x=0, so no dummy atom is added. +.UNINDENT +.INDENT 0.0 +.TP +.B \-h, \-\-help +Print the help text and exit +.UNINDENT +.INDENT 0.0 +.TP +.B \-m, \-\-multiplicity= +Spin multiplicity 2S+1 of the molecule. Default is 1. +.UNINDENT +.INDENT 0.0 +.TP +.B \-o, \-\-output=EZFIO_DIR +Name of the created \fI\%EZFIO\fP directory. +.UNINDENT +.INDENT 0.0 +.TP +.B \-p , \-\-pseudo= +Name of the pseudo\-potential. Follows the same conventions as the basis set. +.UNINDENT +.INDENT 0.0 +.TP +.B \-x, \-\-cart +Compute AOs in the Cartesian basis set (6d, 10f, …) +.UNINDENT +.SH USING CUSTOM ATOMIC BASIS SETS +.sp +If a file with the same name as the basis set exists, this file will +be read. For example, if the file containing the basis set is named +\fBcustom.basis\fP, and the \fIxyz\fP geometry is in \fBmolecule.xyz\fP, the +following should be used: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +qp_create_ezfio \-b custom.basis molecule.xyz +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Basis set files should be given in \fI\%GAMESS\fP format, where the full +names of the atoms are given, and the basis sets for each element are +separated by a blank line. Here is an example +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +HYDROGEN +S 3 +1 13.0100000 0.0196850 +2 1.9620000 0.1379770 +3 0.4446000 0.4781480 +S 1 +1 0.1220000 1.0000000 +P 1 +1 0.7270000 1.0000000 + +BORON +S 8 +1 4570.0000000 0.0006960 +2 685.9000000 0.0053530 +3 156.5000000 0.0271340 +4 44.4700000 0.1013800 +5 14.4800000 0.2720550 +6 5.1310000 0.4484030 +7 1.8980000 0.2901230 +8 0.3329000 0.0143220 +S 8 +1 4570.0000000 \-0.0001390 +2 685.9000000 \-0.0010970 +3 156.5000000 \-0.0054440 +4 44.4700000 \-0.0219160 +5 14.4800000 \-0.0597510 +6 5.1310000 \-0.1387320 +7 1.8980000 \-0.1314820 +8 0.3329000 0.5395260 +S 1 +1 0.1043000 1.0000000 +P 3 +1 6.0010000 0.0354810 +2 1.2410000 0.1980720 +3 0.3364000 0.5052300 +P 1 +1 0.0953800 1.0000000 +D 1 +1 0.3430000 1.0000000 +.ft P +.fi +.UNINDENT +.UNINDENT +.SH USING CUSTOM PSEUDO-POTENTIALS +.sp +As for the basis set, if a file with the same name as the +pseudo\-potential exists, this file will be read. For example, if the +file containing the custom pseudo\-potential is named \fBcustom.pseudo\fP, +the basis set is named \fBcustom.basis\fP, and the \fIxyz\fP geometry is in +\fBmolecule.xyz\fP, the following command should be used +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +qp_create_ezfio \-b custom.basis \-p custom.pseudo molecule.xyz +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Pseudo\-potential files should be given in a format very close to +\fI\%GAMESS\fP format. The first line should be formatted as \fB%s GEN %d %d\fP +where the first string is the chemical symbol, the first integer is +the number of core electrons to be removed and the second integer is +LMAX+1 as in \fI\%GAMESS\fP format. The pseudo\-potential for each element are +separated by a blank line. Here is an example +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +Ne GEN 2 1 +3 +8.00000000 1 10.74945199 +85.99561593 3 10.19801460 +\-56.79004456 2 10.18694048 +1 +55.11144535 2 12.85042963 + +F GEN 2 1 +3 +7.00000000 1 11.39210685 +79.74474797 3 10.74911370 +\-49.45159098 2 10.45120693 +1 +50.25646328 2 11.30345826 +.ft P +.fi +.UNINDENT +.UNINDENT +.SH AUTHOR +A. Scemama, E. Giner +.SH COPYRIGHT +2019, A. Scemama, E. Giner +.\" Generated by docutils manpage writer. +. diff --git a/man/qp_edit.1 b/man/qp_edit.1 index 94b8cb7a..20167ac3 100644 --- a/man/qp_edit.1 +++ b/man/qp_edit.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_EDIT" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "QP_EDIT" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME qp_edit \- | Quantum Package > . diff --git a/man/qp_export_as_tgz.1 b/man/qp_export_as_tgz.1 index f5d93a01..d0b5a58b 100644 --- a/man/qp_export_as_tgz.1 +++ b/man/qp_export_as_tgz.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_EXPORT_AS_TGZ" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "QP_EXPORT_AS_TGZ" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME qp_export_as_tgz \- | Quantum Package > . diff --git a/man/qp_plugins.1 b/man/qp_plugins.1 index 890f7254..cf1f94a9 100644 --- a/man/qp_plugins.1 +++ b/man/qp_plugins.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_PLUGINS" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "QP_PLUGINS" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME qp_plugins \- | Quantum Package > . @@ -93,6 +93,11 @@ Uninstall the plugin \fBplugin_name\fP\&. .UNINDENT .INDENT 0.0 .TP +.B update +Update the repositories of the plugins. Should be followed by a re\-compilation. +.UNINDENT +.INDENT 0.0 +.TP .B \-n, \-\-name= Create a new plugin named \fBplugin_name\fP (in local repository by default). .UNINDENT diff --git a/man/qp_reset.1 b/man/qp_reset.1 index c9481bda..bfa38f6f 100644 --- a/man/qp_reset.1 +++ b/man/qp_reset.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_RESET" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "QP_RESET" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME qp_reset \- | Quantum Package > . diff --git a/man/qp_run.1 b/man/qp_run.1 index 583bce63..7f1f106e 100644 --- a/man/qp_run.1 +++ b/man/qp_run.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_RUN" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "QP_RUN" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME qp_run \- | Quantum Package > . diff --git a/man/qp_set_frozen_core.1 b/man/qp_set_frozen_core.1 index 2e8ab3f4..9f40b0b2 100644 --- a/man/qp_set_frozen_core.1 +++ b/man/qp_set_frozen_core.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_SET_FROZEN_CORE" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "QP_SET_FROZEN_CORE" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME qp_set_frozen_core \- | Quantum Package > . @@ -35,6 +35,191 @@ Automatically finds \fIn\fP, the number of core electrons. Calls qp_set_mo_class setting all MOs as \fBActive\fP, except the n/2 first ones which are set as \fBCore\fP\&. If pseudo\-potentials are used, all the MOs are set as \fBActive\fP\&. +.TS +center; +|l|l|l|l|. +_ +T{ +Range +T} T{ +Default +T} T{ +Small +T} T{ +Large +T} +_ +T{ +H \-> He +T} T{ +0 +T} T{ +0 +T} T{ +0 +T} +_ +T{ +Li \-> Be +T} T{ +0 +T} T{ +0 +T} T{ +2 +T} +_ +T{ +B \-> Ne +T} T{ +2 +T} T{ +2 +T} T{ +2 +T} +_ +T{ +Na \-> Mg +T} T{ +2 +T} T{ +2 +T} T{ +10 +T} +_ +T{ +Al \-> Ar +T} T{ +10 +T} T{ +2 +T} T{ +10 +T} +_ +T{ +K \-> Ca +T} T{ +10 +T} T{ +10 +T} T{ +18 +T} +_ +T{ +Sc \-> Zn +T} T{ +10 +T} T{ +10 +T} T{ +18 +T} +_ +T{ +Ga \-> Kr +T} T{ +18 +T} T{ +10 +T} T{ +18 +T} +_ +T{ +Rb \-> Sr +T} T{ +18 +T} T{ +18 +T} T{ +36 +T} +_ +T{ +Y \-> Cd +T} T{ +18 +T} T{ +18 +T} T{ +36 +T} +_ +T{ +In \-> Xe +T} T{ +36 +T} T{ +18 +T} T{ +36 +T} +_ +T{ +Cs \-> Ba +T} T{ +36 +T} T{ +36 +T} T{ +54 +T} +_ +T{ +La \-> Hg +T} T{ +36 +T} T{ +36 +T} T{ +54 +T} +_ +T{ +Tl \-> Rn +T} T{ +54 +T} T{ +36 +T} T{ +54 +T} +_ +T{ +Fr \-> Ra +T} T{ +54 +T} T{ +54 +T} T{ +86 +T} +_ +T{ +Ac \-> Cn +T} T{ +54 +T} T{ +54 +T} T{ +86 +T} +_ +T{ +Nh \-> Og +T} T{ +86 +T} T{ +54 +T} T{ +86 +T} +_ +.TE .sp For elements on the right of the periodic table, \fIqp_set_frozen_core\fP will work as expected. But for elements on the left, a small core will @@ -46,16 +231,26 @@ Lithium atom will have zero. .sp .nf .ft C -qp_set_frozen_core [\-q] EZFIO_DIR +qp_set_frozen_core [\-q|\-\-query] [(\-l|\-s|\-\-large|\-\-small) EZFIO_DIR .ft P .fi .UNINDENT .UNINDENT .INDENT 0.0 .TP -.B \-q +.B \-q, \-\-query Prints in the standard output the number of core electrons. .UNINDENT +.INDENT 0.0 +.TP +.B \-s, \-\-small +Use a small core. +.UNINDENT +.INDENT 0.0 +.TP +.B \-l, \-\-large +Use a large core. +.UNINDENT .SH AUTHOR A. Scemama, E. Giner .SH COPYRIGHT diff --git a/man/qp_set_mo_class.1 b/man/qp_set_mo_class.1 index 3dc3cb76..7cc5b84d 100644 --- a/man/qp_set_mo_class.1 +++ b/man/qp_set_mo_class.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_SET_MO_CLASS" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "QP_SET_MO_CLASS" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME qp_set_mo_class \- | Quantum Package > . diff --git a/man/qp_stop.1 b/man/qp_stop.1 index f183cd2a..6ee8be22 100644 --- a/man/qp_stop.1 +++ b/man/qp_stop.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_STOP" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "QP_STOP" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME qp_stop \- | Quantum Package > . diff --git a/man/qp_update.1 b/man/qp_update.1 index 2270b0d0..89808d41 100644 --- a/man/qp_update.1 +++ b/man/qp_update.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QP_UPDATE" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "QP_UPDATE" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME qp_update \- | Quantum Package > . diff --git a/man/qpsh.1 b/man/qpsh.1 index 6ece5c35..b8f777e8 100644 --- a/man/qpsh.1 +++ b/man/qpsh.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "QPSH" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "QPSH" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME qpsh \- | Quantum Package > . diff --git a/man/rs_ks_scf.1 b/man/rs_ks_scf.1 index 2c54c2ef..d09e993a 100644 --- a/man/rs_ks_scf.1 +++ b/man/rs_ks_scf.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "RS_KS_SCF" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "RS_KS_SCF" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME rs_ks_scf \- | Quantum Package > . diff --git a/man/save_natorb.1 b/man/save_natorb.1 index 3f14b228..930bc613 100644 --- a/man/save_natorb.1 +++ b/man/save_natorb.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "SAVE_NATORB" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "SAVE_NATORB" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME save_natorb \- | Quantum Package > . diff --git a/man/save_one_e_dm.1 b/man/save_one_e_dm.1 index f49acb7a..cd8b665d 100644 --- a/man/save_one_e_dm.1 +++ b/man/save_one_e_dm.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "SAVE_ONE_E_DM" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "SAVE_ONE_E_DM" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME save_one_e_dm \- | Quantum Package > . @@ -32,15 +32,15 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .. .INDENT 0.0 .INDENT 3.5 -Program that computes the one body density on the MO basis +Program that computes the one body density on the MO and AO basis for $alpha$ and $beta$ electrons from the wave function stored in the \fI\%EZFIO\fP directory, and then saves it into the module_aux_quantities\&. .sp Then, the global variable \fBaux_quantities data_one_e_dm_alpha_mo\fP -and \fBaux_quantities data_one_e_dm_beta_mo\fP will automatically -read this density in the next calculation. This can be used to perform -damping on the density in RSDFT calculations (see +and \fBaux_quantities data_one_e_dm_beta_mo\fP (and the corresponding for AO) +will automatically ! read this density in the next calculation. +This can be used to perform damping on the density in RSDFT calculations (see module_density_for_dft). .sp Needs: diff --git a/man/save_ortho_mos.1 b/man/save_ortho_mos.1 index 0874c79a..1f168802 100644 --- a/man/save_ortho_mos.1 +++ b/man/save_ortho_mos.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "SAVE_ORTHO_MOS" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "SAVE_ORTHO_MOS" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME save_ortho_mos \- | Quantum Package > . diff --git a/man/scf.1 b/man/scf.1 index 1817bebc..4274f341 100644 --- a/man/scf.1 +++ b/man/scf.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "SCF" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "SCF" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME scf \- | Quantum Package > . diff --git a/man/write_integrals_erf.1 b/man/write_integrals_erf.1 index e863c478..26f7b984 100644 --- a/man/write_integrals_erf.1 +++ b/man/write_integrals_erf.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "WRITE_INTEGRALS_ERF" "1" "Mar 07, 2019" "2.0" "Quantum Package" +.TH "WRITE_INTEGRALS_ERF" "1" "May 28, 2019" "2.0" "Quantum Package" .SH NAME write_integrals_erf \- | Quantum Package > . diff --git a/ocaml/Element.ml b/ocaml/Element.ml index bd080f00..f0d4455d 100644 --- a/ocaml/Element.ml +++ b/ocaml/Element.ml @@ -3,74 +3,142 @@ open Qptypes exception ElementError of string -type t = -|X +type t = X + |H |He |Li|Be |B |C |N |O |F |Ne |Na|Mg |Al|Si|P |S |Cl|Ar |K |Ca|Sc|Ti|V |Cr|Mn|Fe|Co|Ni|Cu|Zn|Ga|Ge|As|Se|Br|Kr |Rb|Sr|Y |Zr|Nb|Mo|Tc|Ru|Rh|Pd|Ag|Cd|In|Sn|Sb|Te|I |Xe - |Pt +|Cs|Ba|La|Hf|Ta|W |Re|Os|Ir|Pt|Au|Hg|Tl|Pb|Bi|Po|At|Rn +|Fr|Ra|Ac|Rf|Db|Sg|Bh|Hs|Mt|Ds|Rg|Cn|Nh|Fl|Mc|Lv|Ts|Og + + |Ce|Pr|Nd|Pm|Sm|Eu|Gd|Tb|Dy|Ho|Er|Tm|Yb|Lu + |Th|Pa|U |Np|Pu|Am|Cm|Bk|Cf|Es|Fm|Md|No|Lr + [@@deriving sexp] let of_string x = match (String.capitalize_ascii (String.lowercase_ascii x)) with -| "X" | "Dummy" -> X -| "H" | "Hydrogen" -> H -| "He" | "Helium" -> He -| "Li" | "Lithium" -> Li -| "Be" | "Beryllium" -> Be -| "B" | "Boron" -> B -| "C" | "Carbon" -> C -| "N" | "Nitrogen" -> N -| "O" | "Oxygen" -> O -| "F" | "Fluorine" -> F -| "Ne" | "Neon" -> Ne -| "Na" | "Sodium" -> Na -| "Mg" | "Magnesium" -> Mg -| "Al" | "Aluminum" -> Al -| "Si" | "Silicon" -> Si -| "P" | "Phosphorus" -> P -| "S" | "Sulfur" -> S -| "Cl" | "Chlorine" -> Cl -| "Ar" | "Argon" -> Ar -| "K" | "Potassium" -> K -| "Ca" | "Calcium" -> Ca -| "Sc" | "Scandium" -> Sc -| "Ti" | "Titanium" -> Ti -| "V" | "Vanadium" -> V -| "Cr" | "Chromium" -> Cr -| "Mn" | "Manganese" -> Mn -| "Fe" | "Iron" -> Fe -| "Co" | "Cobalt" -> Co -| "Ni" | "Nickel" -> Ni -| "Cu" | "Copper" -> Cu -| "Zn" | "Zinc" -> Zn -| "Ga" | "Gallium" -> Ga -| "Ge" | "Germanium" -> Ge -| "As" | "Arsenic" -> As -| "Se" | "Selenium" -> Se -| "Br" | "Bromine" -> Br -| "Kr" | "Krypton" -> Kr -| "Rb" | "Rubidium" -> Rb -| "Sr" | "Strontium" -> Sr -| "Y" | "Yttrium" -> Y -| "Zr" | "Zirconium" -> Zr -| "Nb" | "Niobium" -> Nb -| "Mo" | "Molybdenum" -> Mo -| "Tc" | "Technetium" -> Tc -| "Ru" | "Ruthenium" -> Ru -| "Rh" | "Rhodium" -> Rh -| "Pd" | "Palladium" -> Pd -| "Ag" | "Silver" -> Ag -| "Cd" | "Cadmium" -> Cd -| "In" | "Indium" -> In -| "Sn" | "Tin" -> Sn -| "Sb" | "Antimony" -> Sb -| "Te" | "Tellurium" -> Te -| "I" | "Iodine" -> I -| "Xe" | "Xenon" -> Xe -| "Pt" | "Platinum" -> Pt +| "X" | "Dummy" -> X +| "H" | "Hydrogen" -> H +| "He" | "Helium" -> He +| "Li" | "Lithium" -> Li +| "Be" | "Beryllium" -> Be +| "B" | "Boron" -> B +| "C" | "Carbon" -> C +| "N" | "Nitrogen" -> N +| "O" | "Oxygen" -> O +| "F" | "Fluorine" -> F +| "Ne" | "Neon" -> Ne +| "Na" | "Sodium" -> Na +| "Mg" | "Magnesium" -> Mg +| "Al" | "Aluminum" -> Al +| "Si" | "Silicon" -> Si +| "P" | "Phosphorus" -> P +| "S" | "Sulfur" -> S +| "Cl" | "Chlorine" -> Cl +| "Ar" | "Argon" -> Ar +| "K" | "Potassium" -> K +| "Ca" | "Calcium" -> Ca +| "Sc" | "Scandium" -> Sc +| "Ti" | "Titanium" -> Ti +| "V" | "Vanadium" -> V +| "Cr" | "Chromium" -> Cr +| "Mn" | "Manganese" -> Mn +| "Fe" | "Iron" -> Fe +| "Co" | "Cobalt" -> Co +| "Ni" | "Nickel" -> Ni +| "Cu" | "Copper" -> Cu +| "Zn" | "Zinc" -> Zn +| "Ga" | "Gallium" -> Ga +| "Ge" | "Germanium" -> Ge +| "As" | "Arsenic" -> As +| "Se" | "Selenium" -> Se +| "Br" | "Bromine" -> Br +| "Kr" | "Krypton" -> Kr +| "Rb" | "Rubidium" -> Rb +| "Sr" | "Strontium" -> Sr +| "Y" | "Yttrium" -> Y +| "Zr" | "Zirconium" -> Zr +| "Nb" | "Niobium" -> Nb +| "Mo" | "Molybdenum" -> Mo +| "Tc" | "Technetium" -> Tc +| "Ru" | "Ruthenium" -> Ru +| "Rh" | "Rhodium" -> Rh +| "Pd" | "Palladium" -> Pd +| "Ag" | "Silver" -> Ag +| "Cd" | "Cadmium" -> Cd +| "In" | "Indium" -> In +| "Sn" | "Tin" -> Sn +| "Sb" | "Antimony" -> Sb +| "Te" | "Tellurium" -> Te +| "I" | "Iodine" -> I +| "Xe" | "Xenon" -> Xe +| "Cs" | "Cesium" -> Cs +| "Ba" | "Barium" -> Ba +| "La" | "Lanthanum" -> La +| "Ce" | "Cerium" -> Ce +| "Pr" | "Praseodymium" -> Pr +| "Nd" | "Neodymium" -> Nd +| "Pm" | "Promethium" -> Pm +| "Sm" | "Samarium" -> Sm +| "Eu" | "Europium" -> Eu +| "Gd" | "Gadolinium" -> Gd +| "Tb" | "Terbium" -> Tb +| "Dy" | "Dysprosium" -> Dy +| "Ho" | "Holmium" -> Ho +| "Er" | "Erbium" -> Er +| "Tm" | "Thulium" -> Tm +| "Yb" | "Ytterbium" -> Yb +| "Lu" | "Lutetium" -> Lu +| "Hf" | "Hafnium" -> Hf +| "Ta" | "Tantalum" -> Ta +| "W" | "Tungsten" -> W +| "Re" | "Rhenium" -> Re +| "Os" | "Osmium" -> Os +| "Ir" | "Iridium" -> Ir +| "Pt" | "Platinum" -> Pt +| "Au" | "Gold" -> Au +| "Hg" | "Mercury" -> Hg +| "Tl" | "Thallium" -> Tl +| "Pb" | "Lead" -> Pb +| "Bi" | "Bismuth" -> Bi +| "Po" | "Polonium" -> Po +| "At" | "Astatine" -> At +| "Rn" | "Radon" -> Rn +| "Fr" | "Francium" -> Fr +| "Ra" | "Radium" -> Ra +| "Ac" | "Actinium" -> Ac +| "Th" | "Thorium" -> Th +| "Pa" | "Protactinium" -> Pa +| "U" | "Uranium" -> U +| "Np" | "Neptunium" -> Np +| "Pu" | "Plutonium" -> Pu +| "Am" | "Americium" -> Am +| "Cm" | "Curium" -> Cm +| "Bk" | "Berkelium" -> Bk +| "Cf" | "Californium" -> Cf +| "Es" | "Einsteinium" -> Es +| "Fm" | "Fermium" -> Fm +| "Md" | "Mendelevium" -> Md +| "No" | "Nobelium" -> No +| "Lr" | "Lawrencium" -> Lr +| "Rf" | "Rutherfordium"-> Rf +| "Db" | "Dubnium" -> Db +| "Sg" | "Seaborgium" -> Sg +| "Bh" | "Bohrium" -> Bh +| "Hs" | "Hassium" -> Hs +| "Mt" | "Meitnerium" -> Mt +| "Ds" | "Darmstadtium" -> Ds +| "Rg" | "Roentgenium" -> Rg +| "Cn" | "Copernicium" -> Cn +| "Nh" | "Nihonium" -> Nh +| "Fl" | "Flerovium" -> Fl +| "Mc" | "Moscovium" -> Mc +| "Lv" | "Livermorium" -> Lv +| "Ts" | "Tennessine" -> Ts +| "Og" | "Oganesson" -> Og | x -> raise (ElementError ("Element "^x^" unknown")) @@ -130,7 +198,70 @@ let to_string = function | Te -> "Te" | I -> "I" | Xe -> "Xe" +| Cs -> "Cs" +| Ba -> "Ba" +| La -> "La" +| Hf -> "Hf" +| Ta -> "Ta" +| W -> "W" +| Re -> "Re" +| Os -> "Os" +| Ir -> "Ir" | Pt -> "Pt" +| Au -> "Au" +| Hg -> "Hg" +| Tl -> "Tl" +| Pb -> "Pb" +| Bi -> "Bi" +| Po -> "Po" +| At -> "At" +| Rn -> "Rn" +| Fr -> "Fr" +| Ra -> "Ra" +| Ac -> "Ac" +| Rf -> "Rf" +| Db -> "Db" +| Sg -> "Sg" +| Bh -> "Bh" +| Hs -> "Hs" +| Mt -> "Mt" +| Ds -> "Ds" +| Rg -> "Rg" +| Cn -> "Cn" +| Nh -> "Nh" +| Fl -> "Fl" +| Mc -> "Mc" +| Lv -> "Lv" +| Ts -> "Ts" +| Og -> "Og" +| Ce -> "Ce" +| Pr -> "Pr" +| Nd -> "Nd" +| Pm -> "Pm" +| Sm -> "Sm" +| Eu -> "Eu" +| Gd -> "Gd" +| Tb -> "Tb" +| Dy -> "Dy" +| Ho -> "Ho" +| Er -> "Er" +| Tm -> "Tm" +| Yb -> "Yb" +| Lu -> "Lu" +| Th -> "Th" +| Pa -> "Pa" +| U -> "U" +| Np -> "Np" +| Pu -> "Pu" +| Am -> "Am" +| Cm -> "Cm" +| Bk -> "Bk" +| Cf -> "Cf" +| Es -> "Es" +| Fm -> "Fm" +| Md -> "Md" +| No -> "No" +| Lr -> "Lr" let to_long_string = function @@ -171,26 +302,88 @@ let to_long_string = function | Se -> "Selenium" | Br -> "Bromine" | Kr -> "Krypton" -| Rb -> "Rubidium" -| Sr -> "Strontium" -| Y -> "Yttrium" -| Zr -> "Zirconium" -| Nb -> "Niobium" -| Mo -> "Molybdenum" -| Tc -> "Technetium" -| Ru -> "Ruthenium" -| Rh -> "Rhodium" -| Pd -> "Palladium" -| Ag -> "Silver" -| Cd -> "Cadmium" -| In -> "Indium" -| Sn -> "Tin" -| Sb -> "Antimony" -| Te -> "Tellurium" -| I -> "Iodine" -| Xe -> "Xenon" -| Pt -> "Platinum" - +| Rb -> "Rubidium" +| Sr -> "Strontium" +| Y -> "Yttrium" +| Zr -> "Zirconium" +| Nb -> "Niobium" +| Mo -> "Molybdenum" +| Tc -> "Technetium" +| Ru -> "Ruthenium" +| Rh -> "Rhodium" +| Pd -> "Palladium" +| Ag -> "Silver" +| Cd -> "Cadmium" +| In -> "Indium" +| Sn -> "Tin" +| Sb -> "Antimony" +| Te -> "Tellurium" +| I -> "Iodine" +| Xe -> "Xenon" +| Cs -> "Cesium" +| Ba -> "Barium" +| La -> "Lanthanum" +| Ce -> "Cerium" +| Pr -> "Praseodymium" +| Nd -> "Neodymium" +| Pm -> "Promethium" +| Sm -> "Samarium" +| Eu -> "Europium" +| Gd -> "Gadolinium" +| Tb -> "Terbium" +| Dy -> "Dysprosium" +| Ho -> "Holmium" +| Er -> "Erbium" +| Tm -> "Thulium" +| Yb -> "Ytterbium" +| Lu -> "Lutetium" +| Hf -> "Hafnium" +| Ta -> "Tantalum" +| W -> "Tungsten" +| Re -> "Rhenium" +| Os -> "Osmium" +| Ir -> "Iridium" +| Pt -> "Platinum" +| Au -> "Gold" +| Hg -> "Mercury" +| Tl -> "Thallium" +| Pb -> "Lead" +| Bi -> "Bismuth" +| Po -> "Polonium" +| At -> "Astatine" +| Rn -> "Radon" +| Fr -> "Francium" +| Ra -> "Radium" +| Ac -> "Actinium" +| Th -> "Thorium" +| Pa -> "Protactinium" +| U -> "Uranium" +| Np -> "Neptunium" +| Pu -> "Plutonium" +| Am -> "Americium" +| Cm -> "Curium" +| Bk -> "Berkelium" +| Cf -> "Californium" +| Es -> "Einsteinium" +| Fm -> "Fermium" +| Md -> "Mendelevium" +| No -> "Nobelium" +| Lr -> "Lawrencium" +| Rf -> "Rutherfordium" +| Db -> "Dubnium" +| Sg -> "Seaborgium" +| Bh -> "Bohrium" +| Hs -> "Hassium" +| Mt -> "Meitnerium" +| Ds -> "Darmstadtium" +| Rg -> "Roentgenium" +| Cn -> "Copernicium" +| Nh -> "Nihonium" +| Fl -> "Flerovium" +| Mc -> "Moscovium" +| Lv -> "Livermorium" +| Ts -> "Tennessine" +| Og -> "Oganesson" let to_charge c = let result = match c with @@ -249,109 +442,235 @@ let to_charge c = | Te -> 52 | I -> 53 | Xe -> 54 + | Cs -> 55 + | Ba -> 56 + | La -> 57 + | Ce -> 58 + | Pr -> 59 + | Nd -> 60 + | Pm -> 61 + | Sm -> 62 + | Eu -> 63 + | Gd -> 64 + | Tb -> 65 + | Dy -> 66 + | Ho -> 67 + | Er -> 68 + | Tm -> 69 + | Yb -> 70 + | Lu -> 71 + | Hf -> 72 + | Ta -> 73 + | W -> 74 + | Re -> 75 + | Os -> 76 + | Ir -> 77 | Pt -> 78 + | Au -> 79 + | Hg -> 80 + | Tl -> 81 + | Pb -> 82 + | Bi -> 83 + | Po -> 84 + | At -> 85 + | Rn -> 86 + | Fr -> 87 + | Ra -> 88 + | Ac -> 89 + | Th -> 90 + | Pa -> 91 + | U -> 92 + | Np -> 93 + | Pu -> 94 + | Am -> 95 + | Cm -> 96 + | Bk -> 97 + | Cf -> 98 + | Es -> 99 + | Fm -> 100 + | Md -> 101 + | No -> 102 + | Lr -> 103 + | Rf -> 104 + | Db -> 105 + | Sg -> 106 + | Bh -> 107 + | Hs -> 108 + | Mt -> 109 + | Ds -> 110 + | Rg -> 111 + | Cn -> 112 + | Nh -> 113 + | Fl -> 114 + | Mc -> 115 + | Lv -> 116 + | Ts -> 117 + | Og -> 118 in Charge.of_int result let of_charge c = match (Charge.to_int c) with -| 0 -> X -| 1 -> H -| 2 -> He -| 3 -> Li -| 4 -> Be -| 5 -> B -| 6 -> C -| 7 -> N -| 8 -> O -| 9 -> F -| 10 -> Ne -| 11 -> Na -| 12 -> Mg -| 13 -> Al -| 14 -> Si -| 15 -> P -| 16 -> S -| 17 -> Cl -| 18 -> Ar -| 19 -> K -| 20 -> Ca -| 21 -> Sc -| 22 -> Ti -| 23 -> V -| 24 -> Cr -| 25 -> Mn -| 26 -> Fe -| 27 -> Co -| 28 -> Ni -| 29 -> Cu -| 30 -> Zn -| 31 -> Ga -| 32 -> Ge -| 33 -> As -| 34 -> Se -| 35 -> Br -| 36 -> Kr -| 37 -> Rb -| 38 -> Sr -| 39 -> Y -| 40 -> Zr -| 41 -> Nb -| 42 -> Mo -| 43 -> Tc -| 44 -> Ru -| 45 -> Rh -| 46 -> Pd -| 47 -> Ag -| 48 -> Cd -| 49 -> In -| 50 -> Sn -| 51 -> Sb -| 52 -> Te -| 53 -> I -| 54 -> Xe -| 78 -> Pt +| 0 -> X +| 1 -> H +| 2 -> He +| 3 -> Li +| 4 -> Be +| 5 -> B +| 6 -> C +| 7 -> N +| 8 -> O +| 9 -> F +| 10 -> Ne +| 11 -> Na +| 12 -> Mg +| 13 -> Al +| 14 -> Si +| 15 -> P +| 16 -> S +| 17 -> Cl +| 18 -> Ar +| 19 -> K +| 20 -> Ca +| 21 -> Sc +| 22 -> Ti +| 23 -> V +| 24 -> Cr +| 25 -> Mn +| 26 -> Fe +| 27 -> Co +| 28 -> Ni +| 29 -> Cu +| 30 -> Zn +| 31 -> Ga +| 32 -> Ge +| 33 -> As +| 34 -> Se +| 35 -> Br +| 36 -> Kr +| 37 -> Rb +| 38 -> Sr +| 39 -> Y +| 40 -> Zr +| 41 -> Nb +| 42 -> Mo +| 43 -> Tc +| 44 -> Ru +| 45 -> Rh +| 46 -> Pd +| 47 -> Ag +| 48 -> Cd +| 49 -> In +| 50 -> Sn +| 51 -> Sb +| 52 -> Te +| 53 -> I +| 54 -> Xe +| 55 -> Cs +| 56 -> Ba +| 57 -> La +| 58 -> Ce +| 59 -> Pr +| 60 -> Nd +| 61 -> Pm +| 62 -> Sm +| 63 -> Eu +| 64 -> Gd +| 65 -> Tb +| 66 -> Dy +| 67 -> Ho +| 68 -> Er +| 69 -> Tm +| 70 -> Yb +| 71 -> Lu +| 72 -> Hf +| 73 -> Ta +| 74 -> W +| 75 -> Re +| 76 -> Os +| 77 -> Ir +| 78 -> Pt +| 79 -> Au +| 80 -> Hg +| 81 -> Tl +| 82 -> Pb +| 83 -> Bi +| 84 -> Po +| 85 -> At +| 86 -> Rn +| 87 -> Fr +| 88 -> Ra +| 89 -> Ac +| 90 -> Th +| 91 -> Pa +| 92 -> U +| 93 -> Np +| 94 -> Pu +| 95 -> Am +| 96 -> Cm +| 97 -> Bk +| 98 -> Cf +| 99 -> Es +| 100 -> Fm +| 101 -> Md +| 102 -> No +| 103 -> Lr +| 104 -> Rf +| 105 -> Db +| 106 -> Sg +| 107 -> Bh +| 108 -> Hs +| 109 -> Mt +| 110 -> Ds +| 111 -> Rg +| 112 -> Cn +| 113 -> Nh +| 114 -> Fl +| 115 -> Mc +| 116 -> Lv +| 117 -> Ts +| 118 -> Og | x -> raise (ElementError ("Element of charge "^(string_of_int x)^" unknown")) let covalent_radius x = let result = function | X -> 0. - | H -> 0.37 - | He -> 0.70 - | Li -> 1.23 - | Be -> 0.89 - | B -> 0.90 - | C -> 0.85 - | N -> 0.74 - | O -> 0.74 - | F -> 0.72 - | Ne -> 0.70 - | Na -> 1.00 - | Mg -> 1.36 - | Al -> 1.25 - | Si -> 1.17 - | P -> 1.10 - | S -> 1.10 - | Cl -> 0.99 - | Ar -> 0.70 + | H -> 0.31 + | He -> 0.28 + | Li -> 1.28 + | Be -> 0.96 + | B -> 0.85 + | C -> 0.76 + | N -> 0.71 + | O -> 0.66 + | F -> 0.57 + | Ne -> 0.58 + | Na -> 1.66 + | Mg -> 1.41 + | Al -> 1.21 + | Si -> 1.11 + | P -> 1.07 + | S -> 1.05 + | Cl -> 1.02 + | Ar -> 1.06 | K -> 2.03 - | Ca -> 1.74 - | Sc -> 1.44 - | Ti -> 1.32 - | V -> 1.22 - | Cr -> 0.00 - | Mn -> 1.16 - | Fe -> 0.00 - | Co -> 1.15 - | Ni -> 1.17 - | Cu -> 1.25 - | Zn -> 1.25 - | Ga -> 1.20 - | Ge -> 1.21 - | As -> 1.16 - | Se -> 0.70 - | Br -> 1.24 - | Kr -> 1.91 + | Ca -> 1.76 + | Sc -> 1.70 + | Ti -> 1.60 + | V -> 1.53 + | Cr -> 1.39 + | Mn -> 1.39 + | Fe -> 1.32 + | Co -> 1.26 + | Ni -> 1.24 + | Cu -> 1.32 + | Zn -> 1.22 + | Ga -> 1.22 + | Ge -> 1.20 + | As -> 1.19 + | Se -> 1.20 + | Br -> 1.20 + | Kr -> 1.16 | Rb -> 2.20 | Sr -> 1.95 | Y -> 1.90 @@ -370,112 +689,241 @@ let covalent_radius x = | Te -> 1.38 | I -> 1.39 | Xe -> 1.40 - | Pt -> 1.30 + | Cs -> 2.44 + | Ba -> 2.15 + | La -> 2.07 + | Ce -> 2.04 + | Pr -> 2.03 + | Nd -> 2.01 + | Pm -> 1.99 + | Sm -> 1.98 + | Eu -> 1.98 + | Gd -> 1.96 + | Tb -> 1.94 + | Dy -> 1.92 + | Ho -> 1.92 + | Er -> 1.89 + | Tm -> 1.90 + | Yb -> 1.87 + | Lu -> 1.87 + | Hf -> 1.75 + | Ta -> 1.70 + | W -> 1.62 + | Re -> 1.51 + | Os -> 1.44 + | Ir -> 1.41 + | Pt -> 1.36 + | Au -> 1.36 + | Hg -> 1.32 + | Tl -> 1.45 + | Pb -> 1.46 + | Bi -> 1.48 + | Po -> 1.40 + | At -> 1.50 + | Rn -> 1.50 + | Fr -> 2.60 + | Ra -> 2.21 + | Ac -> 2.15 + | Th -> 2.06 + | Pa -> 2.00 + | U -> 1.96 + | Np -> 1.90 + | Pu -> 1.87 + | Am -> 1.80 + | Cm -> 1.69 + | Bk -> raise (ElementError "Covalent radius not defined for Bk") + | Cf -> raise (ElementError "Covalent radius not defined for Cf") + | Es -> raise (ElementError "Covalent radius not defined for Es") + | Fm -> raise (ElementError "Covalent radius not defined for Fm") + | Md -> raise (ElementError "Covalent radius not defined for Md") + | No -> raise (ElementError "Covalent radius not defined for No") + | Lr -> raise (ElementError "Covalent radius not defined for Lr") + | Rf -> raise (ElementError "Covalent radius not defined for Rf") + | Db -> raise (ElementError "Covalent radius not defined for Db") + | Sg -> raise (ElementError "Covalent radius not defined for Sg") + | Bh -> raise (ElementError "Covalent radius not defined for Bh") + | Hs -> raise (ElementError "Covalent radius not defined for Hs") + | Mt -> raise (ElementError "Covalent radius not defined for Mt") + | Ds -> raise (ElementError "Covalent radius not defined for Ds") + | Rg -> raise (ElementError "Covalent radius not defined for Rg") + | Cn -> raise (ElementError "Covalent radius not defined for Cn") + | Nh -> raise (ElementError "Covalent radius not defined for Nh") + | Fl -> raise (ElementError "Covalent radius not defined for Fl") + | Mc -> raise (ElementError "Covalent radius not defined for Mc") + | Lv -> raise (ElementError "Covalent radius not defined for Lv") + | Ts -> raise (ElementError "Covalent radius not defined for Ts") + | Og -> raise (ElementError "Covalent radius not defined for Og") in Units.angstrom_to_bohr *. (result x) |> Positive_float.of_float + let vdw_radius x = let result = function - | X -> 0. - | H -> 1.20 - | He -> 1.70 - | Li -> 1.70 - | Be -> 1.70 - | B -> 1.70 - | C -> 1.70 - | N -> 1.55 - | O -> 1.52 - | F -> 1.47 - | Ne -> 1.70 - | Na -> 1.70 - | Mg -> 1.70 - | Al -> 1.94 - | Si -> 2.10 - | P -> 1.80 - | S -> 1.80 - | Cl -> 1.75 - | Ar -> 1.70 - | K -> 1.70 - | Ca -> 1.70 - | Sc -> 1.70 - | Ti -> 1.70 - | V -> 1.98 - | Cr -> 1.94 - | Mn -> 1.93 - | Fe -> 1.93 - | Co -> 1.92 - | Ni -> 1.70 - | Cu -> 1.70 - | Zn -> 1.70 - | Ga -> 2.02 - | Ge -> 1.70 - | As -> 1.96 - | Se -> 1.70 - | Br -> 2.10 - | Kr -> 1.70 - | Rb -> 3.03 - | Sr -> 2.49 - | Y -> 0. - | Zr -> 0. - | Nb -> 0. - | Mo -> 0. - | Tc -> 0. - | Ru -> 0. - | Rh -> 0. - | Pd -> 1.63 - | Ag -> 1.72 - | Cd -> 1.58 - | In -> 1.93 - | Sn -> 2.17 - | Sb -> 2.06 - | Te -> 2.06 - | I -> 1.98 - | Xe -> 2.16 - | Pt -> 1.75 + | X -> Some 0. + | H -> Some 1.20 + | He -> Some 1.40 + | Li -> Some 1.82 + | Be -> None + | B -> None + | C -> Some 1.70 + | N -> Some 1.55 + | O -> Some 1.52 + | F -> Some 1.47 + | Ne -> Some 1.54 + | Na -> Some 2.27 + | Mg -> Some 1.73 + | Al -> Some 1.94 + | Si -> Some 2.10 + | P -> Some 1.80 + | S -> Some 1.80 + | Cl -> Some 1.75 + | Ar -> Some 1.88 + | K -> Some 2.75 + | Ca -> None + | Sc -> None + | Ti -> None + | V -> Some 1.98 + | Cr -> Some 1.94 + | Mn -> Some 1.93 + | Fe -> Some 1.93 + | Co -> Some 1.92 + | Ni -> Some 1.63 + | Cu -> Some 1.40 + | Zn -> Some 1.39 + | Ga -> Some 1.87 + | Ge -> None + | As -> Some 1.85 + | Se -> Some 1.90 + | Br -> Some 1.85 + | Kr -> Some 2.02 + | Rb -> Some 3.03 + | Sr -> Some 2.49 + | Y -> None + | Zr -> None + | Nb -> None + | Mo -> None + | Tc -> None + | Ru -> None + | Rh -> None + | Pd -> Some 1.63 + | Ag -> Some 1.72 + | Cd -> Some 1.58 + | In -> Some 1.93 + | Sn -> Some 2.17 + | Sb -> Some 2.06 + | Te -> Some 2.06 + | I -> Some 1.98 + | Xe -> Some 2.16 + | Cs -> None + | Ba -> None + | La -> None + | Ce -> None + | Pr -> None + | Nd -> None + | Pm -> None + | Sm -> None + | Eu -> None + | Gd -> None + | Tb -> None + | Dy -> None + | Ho -> None + | Er -> None + | Tm -> None + | Yb -> None + | Lu -> None + | Hf -> None + | Ta -> None + | W -> None + | Re -> None + | Os -> None + | Ir -> None + | Pt -> Some 1.75 + | Au -> Some 1.66 + | Hg -> Some 1.55 + | Tl -> Some 1.96 + | Pb -> Some 2.02 + | Bi -> None + | Po -> None + | At -> None + | Rn -> None + | Fr -> None + | Ra -> None + | Ac -> None + | Th -> None + | Pa -> None + | U -> Some 1.86 + | Np -> None + | Pu -> None + | Am -> None + | Cm -> None + | Bk -> None + | Cf -> None + | Es -> None + | Fm -> None + | Md -> None + | No -> None + | Lr -> None + | Rf -> None + | Db -> None + | Sg -> None + | Bh -> None + | Hs -> None + | Mt -> None + | Ds -> None + | Rg -> None + | Cn -> None + | Nh -> None + | Fl -> None + | Mc -> None + | Lv -> None + | Ts -> None + | Og -> None in - Units.angstrom_to_bohr *. (result x) - |> Positive_float.of_float + match result x with + | Some y -> Some (Positive_float.of_float @@ Units.angstrom_to_bohr *. y ) + | None -> None + let mass x = let result = function - | X -> 0. - | H -> 1.0079 - | He -> 4.00260 - | Li -> 6.941 - | Be -> 9.01218 - | B -> 10.81 - | C -> 12.011 - | N -> 14.0067 - | O -> 15.9994 - | F -> 18.998403 - | Ne -> 20.179 - | Na -> 22.98977 - | Mg -> 24.305 - | Al -> 26.98154 - | Si -> 28.0855 - | P -> 30.97376 - | S -> 32.06 - | Cl -> 35.453 - | Ar -> 39.948 - | K -> 39.0983 - | Ca -> 40.08 - | Sc -> 44.9559 - | Ti -> 47.90 - | V -> 50.9415 - | Cr -> 51.996 - | Mn -> 54.9380 - | Fe -> 55.9332 - | Co -> 58.9332 - | Ni -> 58.70 - | Cu -> 63.546 - | Zn -> 65.38 - | Ga -> 69.72 - | Ge -> 72.59 - | As -> 74.9216 - | Se -> 78.96 - | Br -> 79.904 - | Kr -> 83.80 + | X -> 0. + | H -> 1.0079 + | He -> 4.002602 + | Li -> 6.941 + | Be -> 9.0121831 + | B -> 10.81 + | C -> 12.011 + | N -> 14.0067 + | O -> 15.9994 + | F -> 18.998403163 + | Ne -> 20.1797 + | Na -> 22.98976928 + | Mg -> 24.305 + | Al -> 26.9815385 + | Si -> 28.0855 + | P -> 30.973761998 + | S -> 32.06 + | Cl -> 35.453 + | Ar -> 39.948 + | K -> 39.0983 + | Ca -> 40.078 + | Sc -> 44.955908 + | Ti -> 47.867 + | V -> 50.9415 + | Cr -> 51.9961 + | Mn -> 54.938044 + | Fe -> 55.845 + | Co -> 58.933194 + | Ni -> 58.6934 + | Cu -> 63.546 + | Zn -> 65.38 + | Ga -> 69.723 + | Ge -> 72.630 + | As -> 74.921595 + | Se -> 78.971 + | Br -> 79.904 + | Kr -> 83.798 | Rb -> 85.4678 | Sr -> 87.62 | Y -> 88.90584 @@ -494,7 +942,70 @@ let mass x = | Te -> 127.60 | I -> 126.90447 | Xe -> 131.293 + | Cs -> 132.90545196 + | Ba -> 137.327 + | La -> 138.90547 + | Ce -> 140.116 + | Pr -> 140.90766 + | Nd -> 144.242 + | Pm -> 145. + | Sm -> 150.36 + | Eu -> 151.964 + | Gd -> 157.25 + | Tb -> 158.92535 + | Dy -> 162.500 + | Ho -> 164.93033 + | Er -> 167.259 + | Tm -> 168.93422 + | Yb -> 173.045 + | Lu -> 174.9668 + | Hf -> 178.49 + | Ta -> 180.94788 + | W -> 183.84 + | Re -> 186.207 + | Os -> 190.23 + | Ir -> 192.217 | Pt -> 195.084 + | Au -> 196.966569 + | Hg -> 200.592 + | Tl -> 204.38 + | Pb -> 207.2 + | Bi -> 208.98040 + | Po -> 209. + | At -> 210. + | Rn -> 222. + | Fr -> 223. + | Ra -> 226. + | Ac -> 227. + | Th -> 232.0377 + | Pa -> 231.03588 + | U -> 238.02891 + | Np -> 237. + | Pu -> 244. + | Am -> 243. + | Cm -> 247. + | Bk -> 247. + | Cf -> 251. + | Es -> 252. + | Fm -> 257. + | Md -> 258. + | No -> 259. + | Lr -> 262. + | Rf -> 267. + | Db -> 270. + | Sg -> 269. + | Bh -> 270. + | Hs -> 270. + | Mt -> 278. + | Ds -> 281. + | Rg -> 281. + | Cn -> 285. + | Nh -> 286. + | Fl -> 289. + | Mc -> 289. + | Lv -> 293. + | Ts -> 293. + | Og -> 294. in result x |> Positive_float.of_float diff --git a/ocaml/Element.mli b/ocaml/Element.mli index fc6c679f..cd0f6bff 100644 --- a/ocaml/Element.mli +++ b/ocaml/Element.mli @@ -1,13 +1,18 @@ exception ElementError of string -type t = -|X +type t = X + |H |He |Li|Be |B |C |N |O |F |Ne |Na|Mg |Al|Si|P |S |Cl|Ar |K |Ca|Sc|Ti|V |Cr|Mn|Fe|Co|Ni|Cu|Zn|Ga|Ge|As|Se|Br|Kr |Rb|Sr|Y |Zr|Nb|Mo|Tc|Ru|Rh|Pd|Ag|Cd|In|Sn|Sb|Te|I |Xe - |Pt +|Cs|Ba|La|Hf|Ta|W |Re|Os|Ir|Pt|Au|Hg|Tl|Pb|Bi|Po|At|Rn +|Fr|Ra|Ac|Rf|Db|Sg|Bh|Hs|Mt|Ds|Rg|Cn|Nh|Fl|Mc|Lv|Ts|Og + + |Ce|Pr|Nd|Pm|Sm|Eu|Gd|Tb|Dy|Ho|Er|Tm|Yb|Lu + |Th|Pa|U |Np|Pu|Am|Cm|Bk|Cf|Es|Fm|Md|No|Lr + [@@deriving sexp] (** String conversion functions *) @@ -19,5 +24,5 @@ val to_long_string : t -> string val to_charge : t -> Charge.t val of_charge : Charge.t -> t val covalent_radius : t -> Qptypes.Positive_float.t -val vdw_radius : t -> Qptypes.Positive_float.t +val vdw_radius : t -> Qptypes.Positive_float.t option val mass : t -> Qptypes.Positive_float.t diff --git a/scripts/module/create_executables_list.sh b/scripts/module/create_executables_list.sh index 8299a505..67e1aba2 100755 --- a/scripts/module/create_executables_list.sh +++ b/scripts/module/create_executables_list.sh @@ -15,5 +15,10 @@ EXES=$(find -L ${QP_ROOT}/src -maxdepth 2 -depth -executable -type f | grep -e " for EXE in $EXES do - printf "%-30s %s\n" $(basename $EXE) $EXE | sed "s|${QP_ROOT}|\$QP_ROOT|g" >> executables + case "$(basename $EXE)" in + install) continue;; + uninstall) continue;; + *) + printf "%-30s %s\n" $(basename $EXE) $EXE | sed "s|${QP_ROOT}|\$QP_ROOT|g" >> executables ;; + esac done diff --git a/src/cipsi/pt2_stoch_routines.irp.f b/src/cipsi/pt2_stoch_routines.irp.f index a8f34e03..0e143a9c 100644 --- a/src/cipsi/pt2_stoch_routines.irp.f +++ b/src/cipsi/pt2_stoch_routines.irp.f @@ -135,7 +135,7 @@ subroutine ZMQ_pt2(E, pt2,relative_error, error, variance, norm, N_in) PROVIDE psi_occ_pattern_hii det_to_occ_pattern endif - if (N_det < max(10,N_states)) then + if (N_det < max(1000,N_states)) then pt2=0.d0 variance=0.d0 norm=0.d0 diff --git a/src/determinants/EZFIO.cfg b/src/determinants/EZFIO.cfg index 0b289e99..b8fc7406 100644 --- a/src/determinants/EZFIO.cfg +++ b/src/determinants/EZFIO.cfg @@ -38,7 +38,7 @@ default: 1 type: Threshold doc: Thresholds on generators (fraction of the square of the norm) interface: ezfio,provider,ocaml -default: 0.99 +default: 0.999 [n_int] interface: ezfio diff --git a/src/fci/40.fci.bats b/src/fci/40.fci.bats index 7083f9fe..f3b7db2c 100644 --- a/src/fci/40.fci.bats +++ b/src/fci/40.fci.bats @@ -48,18 +48,18 @@ function run_stoch() { @test "DHNO" { # 11.4721s qp set_file dhno.ezfio qp set_mo_class --core="[1-7]" --act="[8-64]" - run -130.458875747063 1.e-5 + run -130.459020029816 1.e-5 } @test "HCO" { # 12.2868s qp set_file hco.ezfio - run -113.296794171915 2.e-05 + run -113.297494345682 2.e-05 } @test "H2O2" { # 12.9214s qp set_file h2o2.ezfio qp set_mo_class --core="[1-2]" --act="[3-24]" --del="[25-38]" - run -151.004888189874 4.e-5 + run -151.00477 1.e-4 } @test "HBO" { # 13.3144s @@ -83,7 +83,7 @@ function run_stoch() { @test "SO" { # 13.4952s [[ -n $TRAVIS ]] && skip qp set_file so.ezfio - run -26.0144622194831 1.e-5 + run -26.0124797722154 1.e-5 } @test "H2S" { # 13.6745s @@ -120,13 +120,13 @@ function run_stoch() { [[ -n $TRAVIS ]] && skip qp set_file ch4.ezfio qp set_mo_class --core="[1]" --act="[2-30]" --del="[31-59]" - run -40.2409858175829 2.e-5 + run -40.2409059687324 2.e-5 } @test "ClF" { # 16.8864s [[ -n $TRAVIS ]] && skip qp set_file clf.ezfio - run -559.170116079903 1.e-5 + run -559.170406471496 1.e-5 } @test "SO2" { # 17.5645s @@ -140,14 +140,14 @@ function run_stoch() { [[ -n $TRAVIS ]] && skip qp set_file c2h2.ezfio qp set_mo_class --act="[1-30]" --del="[31-36]" - run -12.3678973551285 2.e-5 + run -12.3670840202635 2.e-5 } @test "N2" { # 18.0198s [[ -n $TRAVIS ]] && skip qp set_file n2.ezfio qp set_mo_class --core="[1,2]" --act="[3-40]" --del="[41-60]" - run -109.291310557766 1.e-4 + run -109.291600196629 1.e-4 } @test "N2H4" { # 18.5006s @@ -161,7 +161,7 @@ function run_stoch() { [[ -n $TRAVIS ]] && skip qp set_file co2.ezfio qp set_mo_class --core="[1,2]" --act="[3-30]" --del="[31-42]" - run -187.969556614801 1.e-5 + run -187.969676381867 1.e-5 } @@ -176,6 +176,6 @@ function run_stoch() { [[ -n $TRAVIS ]] && skip qp set_file hcn.ezfio qp set_mo_class --core="[1,2]" --act="[3-40]" --del="[41-55]" - run -93.0794109423741 2.e-5 + run -93.0799328685679 2.e-5 } diff --git a/src/generators_cas/extract_cas.irp.f b/src/generators_cas/extract_cas.irp.f new file mode 100644 index 00000000..9cdaf27f --- /dev/null +++ b/src/generators_cas/extract_cas.irp.f @@ -0,0 +1,23 @@ +subroutine extract_cas + implicit none + BEGIN_DOC + ! Replaces the total wave function by the normalized projection on the CAS. + END_DOC + + integer :: i,j,k + do k=1,N_states + do j=1,N_det_generators + psi_coef(j,k) = psi_coef_generators(j,k) + enddo + enddo + + do j=1,N_det_generators + do k=1,N_int + psi_det(k,1,j) = psi_det_generators(k,1,j) + psi_det(k,2,j) = psi_det_generators(k,2,j) + enddo + enddo + N_det = N_det_generators + + SOFT_TOUCH N_det psi_det psi_coef +end