From 3974f18dcd7963d1bc9622b7edc9a164aacf84c8 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Dec 2018 16:09:36 +0100 Subject: [PATCH 01/10] Added many test files --- scripts/qp_plugins | 7 +- scripts/utility/qp_path.py | 9 +- src/ezfio_files/00.create.bats | 108 ++++++++++++++++++ src/ezfio_files/01.convert.bats | 24 ++++ src/ezfio_files/10.convert.bats | 27 ----- tests/input/c2h2.xyz | 6 + tests/input/ch4.xyz | 7 ++ tests/input/clf.xyz | 4 + tests/input/clo.xyz | 4 + tests/input/co2.xyz | 5 + ...ROHF_b2.gms.out => cu_nh3_4_2plus.gms.out} | 0 tests/input/f2.xyz | 4 + tests/input/h2o2.xyz | 6 + tests/input/h2s.xyz | 5 + tests/input/h3coh.xyz | 8 ++ tests/input/{HBO.out => hbo.gms.out} | 0 tests/input/{HBO.xyz => hbo.xyz} | 0 tests/input/hcn.xyz | 5 + tests/input/hco.xyz | 5 + tests/input/n2.xyz | 4 + tests/input/n2h4.xyz | 8 ++ tests/input/nh3.xyz | 6 + tests/input/oh.xyz | 4 + tests/input/sih2_3b1.xyz | 5 + tests/input/sih3.xyz | 6 + tests/input/so.xyz | 4 + tests/input/so2.xyz | 5 + 27 files changed, 244 insertions(+), 32 deletions(-) create mode 100644 src/ezfio_files/00.create.bats create mode 100644 src/ezfio_files/01.convert.bats delete mode 100644 src/ezfio_files/10.convert.bats create mode 100644 tests/input/c2h2.xyz create mode 100644 tests/input/ch4.xyz create mode 100644 tests/input/clf.xyz create mode 100644 tests/input/clo.xyz create mode 100644 tests/input/co2.xyz rename tests/input/{ROHF_b2.gms.out => cu_nh3_4_2plus.gms.out} (100%) create mode 100644 tests/input/f2.xyz create mode 100644 tests/input/h2o2.xyz create mode 100644 tests/input/h2s.xyz create mode 100644 tests/input/h3coh.xyz rename tests/input/{HBO.out => hbo.gms.out} (100%) rename tests/input/{HBO.xyz => hbo.xyz} (100%) create mode 100644 tests/input/hcn.xyz create mode 100644 tests/input/hco.xyz create mode 100644 tests/input/n2.xyz create mode 100644 tests/input/n2h4.xyz create mode 100644 tests/input/nh3.xyz create mode 100644 tests/input/oh.xyz create mode 100644 tests/input/sih2_3b1.xyz create mode 100644 tests/input/sih3.xyz create mode 100644 tests/input/so.xyz create mode 100644 tests/input/so2.xyz diff --git a/scripts/qp_plugins b/scripts/qp_plugins index 19a3f46f..0baf377f 100755 --- a/scripts/qp_plugins +++ b/scripts/qp_plugins @@ -39,7 +39,7 @@ try: from docopt import docopt from module_handler import ModuleHandler, get_dict_child from module_handler import get_l_module_descendant - from qp_path import QP_SRC, QP_PLUGINS, QP_ROOT + from qp_path import QP_SRC, QP_PLUGINS, QP_ROOT, QP_DATA except ImportError: print "Please check if you have sourced the ${QP_ROOT}/quantum_package.rc" print "(`source ${QP_ROOT}/quantum_package.rc`)" @@ -73,6 +73,11 @@ def save_new_module(path, l_child): with open(os.path.join(path, "README.rst"), "w") as f: f.write(header + "\n") + with open(os.path.join(path, ".gitignore"), "w") as f: + with open(os.path.join(QP_DATA, "module_gitignore"), "r") as g: + data = g.read() + f.write(data) + with open(os.path.join(path, "%s.irp.f"%(module_name) ), "w") as f: f.write("program {0}".format(module_name) ) f.write(""" diff --git a/scripts/utility/qp_path.py b/scripts/utility/qp_path.py index ac53f118..0844c06f 100644 --- a/scripts/utility/qp_path.py +++ b/scripts/utility/qp_path.py @@ -10,8 +10,9 @@ except: print "source quantum_package.rc" sys.exit(1) else: - QP_SRC = os.path.join(QP_ROOT, "src") + QP_EZFIO = os.environ["QP_EZFIO"] + QP_SRC = os.path.join(QP_ROOT, "src") QP_PLUGINS = os.path.join(QP_ROOT, "plugins") - QP_EZFIO = os.environ["QP_EZFIO"] - QP_OCAML = os.path.join(QP_ROOT, "ocaml") - QP_TESTS = os.path.join(QP_ROOT, "tests") + QP_OCAML = os.path.join(QP_ROOT, "ocaml") + QP_TESTS = os.path.join(QP_ROOT, "tests") + QP_DATA = os.path.join(QP_ROOT, "data") diff --git a/src/ezfio_files/00.create.bats b/src/ezfio_files/00.create.bats new file mode 100644 index 00000000..413591a2 --- /dev/null +++ b/src/ezfio_files/00.create.bats @@ -0,0 +1,108 @@ +#!/usr/bin/env bats + +source $QP_ROOT/tests/bats/common.bats.sh + +function run { + INPUT=$1 + EZ=${INPUT/.xyz/.ezfio} + MULT=$2 + CHARGE=$3 + BASIS=$4 + if [[ -n $5 ]] ; then + PSEUDO="-p $5" + fi + cp ${QP_ROOT}/tests/input/$INPUT . + rm -rf $EZ + qp_create_ezfio_from_xyz $INPUT -b "$BASIS" -m $MULT -c $CHARGE $PSEUDO -o $EZ + qp_edit -c $EZ +} + + +@test "qp_create c2h2.xyz" { + run c2h2.xyz 1 0 vdz-bfd bfd +} + +@test "qp_create clo.xyz" { + run clo.xyz 2 0 cc-pvdz +} + +@test "qp_create dhno.xyz" { + run dhno.xyz 2 0 chipman-dzp +} + +@test "qp_create h3coh.xyz" { + run h3coh.xyz 1 0 6-31g +} + +@test "qp_create hcn.xyz" { + run hcn.xyz 1 0 aug-cc-pvdz +} + +@test "qp_create n2.xyz" { + run n2.xyz 1 0 cc-pvtz +} + +@test "qp_create sih2_3b1.xyz" { + run sih2_3b1.xyz 1 0 6-31g +} + +@test "qp_create so.xyz" { + run so.xyz 3 0 vdz-bfd bfd +} + +@test "qp_create ch4.xyz" { + run ch4.xyz 1 0 aug-cc-pvtz +} + +@test "qp_create co2.xyz" { + run co2.xyz 1 0 cc-pvdz +} + +@test "qp_create f2.xyz" { + run f2.xyz 1 0 "Def2-TZVP" +} + +@test "qp_create h2o.xyz" { + run h2o.xyz 1 0 cc-pvdz +} + +@test "qp_create hco.xyz" { + run hco.xyz 2 0 "Ahlrichs VDZ" +} + +@test "qp_create nh3.xyz" { + run nh3.xyz 1 0 cc-pvdz +} + +@test "qp_create sih3.xyz" { + run sih3.xyz 2 0 vdz-bfd bfd +} + +@test "qp_create clf.xyz" { + run clf.xyz 1 0 cc-pvdz +} + +@test "qp_create h2o2.xyz" { + run h2o2.xyz 1 0 cc-pvdz +} + +@test "qp_create h2s.xyz" { + run h2s.xyz 1 0 cc-pvdz +} + +@test "qp_create hbo.xyz" { + run hbo.xyz 1 0 cc-pvtz +} + +@test "qp_create n2h4.xyz" { + run n2h4.xyz 1 0 cc-pvdz +} + +@test "qp_create oh.xyz" { + run oh.xyz 2 0 "Roos Augmented Double Zeta ANO" +} + +@test "qp_create so2.xyz" { + run so2.xyz 1 0 vtz-bfd bfd +} + diff --git a/src/ezfio_files/01.convert.bats b/src/ezfio_files/01.convert.bats new file mode 100644 index 00000000..31b4e2a2 --- /dev/null +++ b/src/ezfio_files/01.convert.bats @@ -0,0 +1,24 @@ +#!/usr/bin/env bats + +source $QP_ROOT/tests/bats/common.bats.sh + +function run { + INPUT=$1 + EZ=${INPUT}.ezfio + cp ${QP_ROOT}/tests/input/$INPUT . + qp_convert_output_to_ezfio $INPUT + qp_edit -c $EZ +} + +#=== Convert +@test "gamess convert hbo.gms.out" { + run hbo.gms.out +} + +@test "g09 convert h2o.log" { + run h2o.log +} + +@test "gamess convert cu_nh3_4_2plus.gms.out" { + run cu_nh3_4_2plus.gms.out +} diff --git a/src/ezfio_files/10.convert.bats b/src/ezfio_files/10.convert.bats deleted file mode 100644 index 5705f04c..00000000 --- a/src/ezfio_files/10.convert.bats +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bats - -source $QP_ROOT/tests/bats/common.bats.sh - -#=== Convert -@test "gamess convert HBO.out" { - cp ${QP_ROOT}/tests/input/HBO.out . - qp_convert_output_to_ezfio HBO.out - qp_edit -c HBO.out.ezfio - ezfio set_file HBO.out.ezfio - qp_run scf HBO.out.ezfio - # Check energy - energy="$(ezfio get hartree_fock energy)" - eq $energy -100.0185822590964 1.e-10 -} - -@test "g09 convert H2O.log" { - cp ${QP_ROOT}/tests/input/h2o.log . - qp_convert_output_to_ezfio h2o.log - qp_edit -c h2o.log.ezfio - ezfio set_file h2o.log.ezfio - qp_run scf h2o.log.ezfio - # Check energy - energy="$(ezfio get hartree_fock energy)" - eq $energy -76.0270218704265 1E-10 -} - diff --git a/tests/input/c2h2.xyz b/tests/input/c2h2.xyz new file mode 100644 index 00000000..f6b8ea41 --- /dev/null +++ b/tests/input/c2h2.xyz @@ -0,0 +1,6 @@ +4 +C2H2 Geo: Experiment Mult: 1 symmetry: 14 +C 0.0 0.0 0.6013 +C 0.0 0.0 -0.6013 +H 0.0 0.0 1.6644 +H 0.0 0.0 -1.6644 diff --git a/tests/input/ch4.xyz b/tests/input/ch4.xyz new file mode 100644 index 00000000..ecd7077f --- /dev/null +++ b/tests/input/ch4.xyz @@ -0,0 +1,7 @@ +5 +CH4 Geo: Experiment Mult: 1 symmetry: 10 +C 0.0 0.0 0.0 +H 0.6276 0.6276 0.6276 +H 0.6276 -0.6276 -0.6276 +H -0.6276 0.6276 -0.6276 +H -0.6276 -0.6276 0.6276 diff --git a/tests/input/clf.xyz b/tests/input/clf.xyz new file mode 100644 index 00000000..48a26c04 --- /dev/null +++ b/tests/input/clf.xyz @@ -0,0 +1,4 @@ +2 +ClF Geo: Experiment Mult: 1 symmetry: 26 +Cl 0.0 0.0 1.6283 +F 0.0 0.0 0.0 diff --git a/tests/input/clo.xyz b/tests/input/clo.xyz new file mode 100644 index 00000000..f4120493 --- /dev/null +++ b/tests/input/clo.xyz @@ -0,0 +1,4 @@ +2 +ClO Geo: Experiment Mult: 2 symmetry: 25 +Cl 0.0 0.0 1.5696 +O 0.0 0.0 0.0 diff --git a/tests/input/co2.xyz b/tests/input/co2.xyz new file mode 100644 index 00000000..4f161cd4 --- /dev/null +++ b/tests/input/co2.xyz @@ -0,0 +1,5 @@ +3 +CO2 Geo: Experiment Mult: 1 symmetry: 22 +C 0.0 0.0 0.0 +O 0.0 0.0 1.1621 +O 0.0 0.0 -1.1621 diff --git a/tests/input/ROHF_b2.gms.out b/tests/input/cu_nh3_4_2plus.gms.out similarity index 100% rename from tests/input/ROHF_b2.gms.out rename to tests/input/cu_nh3_4_2plus.gms.out diff --git a/tests/input/f2.xyz b/tests/input/f2.xyz new file mode 100644 index 00000000..9128ff54 --- /dev/null +++ b/tests/input/f2.xyz @@ -0,0 +1,4 @@ +2 +F2 Geo: Experiment Mult: 1 symmetry: 18 +F 0.0 0.0 0.0 +F 0.0 0.0 1.4119 diff --git a/tests/input/h2o2.xyz b/tests/input/h2o2.xyz new file mode 100644 index 00000000..47066833 --- /dev/null +++ b/tests/input/h2o2.xyz @@ -0,0 +1,6 @@ +4 +H2O2 Geo: Experiment Mult: 1 symmetry: 18 +H 0.819 0.817 0.422 +H -0.819 -0.817 0.422 +O 0.0 0.7375 -0.0528 +O 0.0 -0.7375 -0.0528 diff --git a/tests/input/h2s.xyz b/tests/input/h2s.xyz new file mode 100644 index 00000000..5a7c7ca4 --- /dev/null +++ b/tests/input/h2s.xyz @@ -0,0 +1,5 @@ +3 +H2S Geo: Experiment Mult: 1 symmetry: 18 +H 0.0 0.9569 0.9208 +H 0.0 -0.9569 0.9208 +S 0.0 0.0 0.0 diff --git a/tests/input/h3coh.xyz b/tests/input/h3coh.xyz new file mode 100644 index 00000000..789f37a3 --- /dev/null +++ b/tests/input/h3coh.xyz @@ -0,0 +1,8 @@ +6 +H3COH Geo: Experiment Mult: 1 symmetry: 18 +C -0.0503 0.6685 0.0 +H -1.0807 1.0417 0.0 +H 0.465 1.0417 0.8924 +H 0.465 1.0417 -0.8924 +H 0.8544 -1.0677 0.0 +O -0.0503 -0.7585 0.0 diff --git a/tests/input/HBO.out b/tests/input/hbo.gms.out similarity index 100% rename from tests/input/HBO.out rename to tests/input/hbo.gms.out diff --git a/tests/input/HBO.xyz b/tests/input/hbo.xyz similarity index 100% rename from tests/input/HBO.xyz rename to tests/input/hbo.xyz diff --git a/tests/input/hcn.xyz b/tests/input/hcn.xyz new file mode 100644 index 00000000..5d6ab08c --- /dev/null +++ b/tests/input/hcn.xyz @@ -0,0 +1,5 @@ +3 +HCN Geo: Experiment Mult: 1 symmetry: 14 +C 0.0 0.0 0.0 +H 0.0 0.0 1.064 +N 0.0 0.0 -1.156 diff --git a/tests/input/hco.xyz b/tests/input/hco.xyz new file mode 100644 index 00000000..7472d5f5 --- /dev/null +++ b/tests/input/hco.xyz @@ -0,0 +1,5 @@ +3 +HCO Geo: Experiment Mult: 2 symmetry: 15 +C 0.0 0.0 0.0 +H 1.08 0.0 0.0 +O -0.5899 1.0427 0.0 diff --git a/tests/input/n2.xyz b/tests/input/n2.xyz new file mode 100644 index 00000000..016732d8 --- /dev/null +++ b/tests/input/n2.xyz @@ -0,0 +1,4 @@ +2 +N2 Geo: Experiment Mult: 1 symmetry: 14 +N 0.0 0.0 0.5488 +N 0.0 0.0 -0.5488 diff --git a/tests/input/n2h4.xyz b/tests/input/n2h4.xyz new file mode 100644 index 00000000..8dbad41c --- /dev/null +++ b/tests/input/n2h4.xyz @@ -0,0 +1,8 @@ +6 +N2H4 Geo: Experiment Mult: 1 symmetry: 18 +H -0.447 1.0031 0.7562 +H 0.447 -1.0031 0.7562 +H 0.9663 1.0031 0.0301 +H -0.9663 -1.0031 0.0301 +N 0.0 0.723 -0.1123 +N 0.0 -0.723 -0.1123 diff --git a/tests/input/nh3.xyz b/tests/input/nh3.xyz new file mode 100644 index 00000000..aa9a16d0 --- /dev/null +++ b/tests/input/nh3.xyz @@ -0,0 +1,6 @@ +4 +NH3 Geo: Experiment Mult: 1 symmetry: 10 +H 0.0 -0.9377 -0.3816 +H 0.8121 0.4689 -0.3816 +H -0.8121 0.4689 -0.3816 +N 0.0 0.0 0.0 diff --git a/tests/input/oh.xyz b/tests/input/oh.xyz new file mode 100644 index 00000000..86e7251b --- /dev/null +++ b/tests/input/oh.xyz @@ -0,0 +1,4 @@ +2 +OH Geo: Experiment Mult: 2 symmetry: 9 +H 0.0 0.0 0.9697 +O 0.0 0.0 0.0 diff --git a/tests/input/sih2_3b1.xyz b/tests/input/sih2_3b1.xyz new file mode 100644 index 00000000..4f33bd90 --- /dev/null +++ b/tests/input/sih2_3b1.xyz @@ -0,0 +1,5 @@ +3 +SiH2_3B1 Geo: Experiment Mult: 3 symmetry: 16 +H 0.0 1.273174 -0.665412 +H 0.0 -1.273174 -0.665412 +Si 0.0 0.0 0.095059 diff --git a/tests/input/sih3.xyz b/tests/input/sih3.xyz new file mode 100644 index 00000000..3f89f462 --- /dev/null +++ b/tests/input/sih3.xyz @@ -0,0 +1,6 @@ +4 +SiH3 Geo: Experiment Mult: 2 symmetry: 17 +H 0.0 1.3928 -0.382 +H 1.2062 -0.6964 -0.382 +H -1.2062 -0.6964 -0.382 +Si 0.0 0.0 0.0819 diff --git a/tests/input/so.xyz b/tests/input/so.xyz new file mode 100644 index 00000000..ee0e8641 --- /dev/null +++ b/tests/input/so.xyz @@ -0,0 +1,4 @@ +2 +SO Geo: Experiment Mult: 3 symmetry: 24 +O 0.0 0.0 1.4811 +S 0.0 0.0 0.0 diff --git a/tests/input/so2.xyz b/tests/input/so2.xyz new file mode 100644 index 00000000..a02e65f3 --- /dev/null +++ b/tests/input/so2.xyz @@ -0,0 +1,5 @@ +3 +SO2 Geo: Experiment Mult: 1 symmetry: 32 +O 0.0 1.2371 0.7215 +O 0.0 -1.2371 0.7215 +S 0.0 0.0 0.0 From b5402e5c1581905cfc8c67f369523f41cfe0a7bd Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Dec 2018 18:11:49 +0100 Subject: [PATCH 02/10] Z-matrix tests --- src/ezfio_files/00.create.bats | 25 ++++++---------------- src/hartree_fock/20.hf.bats | 39 ++++------------------------------ tests/input/dhno.xyz | 7 ------ tests/input/f2.xyz | 4 ---- tests/input/f2.zmt | 3 +++ tests/input/h2o.xyz | 6 ------ tests/input/h2o2.xyz | 6 ------ tests/input/h2o2.zmt | 11 ++++++++++ tests/input/hbo.xyz | 5 ----- tests/input/n2h4.xyz | 8 ------- tests/input/n2h4.zmt | 14 ++++++++++++ 11 files changed, 39 insertions(+), 89 deletions(-) delete mode 100644 tests/input/dhno.xyz delete mode 100644 tests/input/f2.xyz create mode 100644 tests/input/f2.zmt delete mode 100644 tests/input/h2o.xyz delete mode 100644 tests/input/h2o2.xyz create mode 100644 tests/input/h2o2.zmt delete mode 100644 tests/input/hbo.xyz delete mode 100644 tests/input/n2h4.xyz create mode 100644 tests/input/n2h4.zmt diff --git a/src/ezfio_files/00.create.bats b/src/ezfio_files/00.create.bats index 413591a2..8eac5df3 100644 --- a/src/ezfio_files/00.create.bats +++ b/src/ezfio_files/00.create.bats @@ -5,6 +5,7 @@ source $QP_ROOT/tests/bats/common.bats.sh function run { INPUT=$1 EZ=${INPUT/.xyz/.ezfio} + EZ=${EZ/.zmt/.ezfio} MULT=$2 CHARGE=$3 BASIS=$4 @@ -26,10 +27,6 @@ function run { run clo.xyz 2 0 cc-pvdz } -@test "qp_create dhno.xyz" { - run dhno.xyz 2 0 chipman-dzp -} - @test "qp_create h3coh.xyz" { run h3coh.xyz 1 0 6-31g } @@ -58,12 +55,8 @@ function run { run co2.xyz 1 0 cc-pvdz } -@test "qp_create f2.xyz" { - run f2.xyz 1 0 "Def2-TZVP" -} - -@test "qp_create h2o.xyz" { - run h2o.xyz 1 0 cc-pvdz +@test "qp_create f2.zmt" { + run f2.zmt 1 0 "Def2-TZVP" } @test "qp_create hco.xyz" { @@ -82,20 +75,16 @@ function run { run clf.xyz 1 0 cc-pvdz } -@test "qp_create h2o2.xyz" { - run h2o2.xyz 1 0 cc-pvdz +@test "qp_create h2o2.zmt" { + run h2o2.zmt 1 0 cc-pvdz } @test "qp_create h2s.xyz" { run h2s.xyz 1 0 cc-pvdz } -@test "qp_create hbo.xyz" { - run hbo.xyz 1 0 cc-pvtz -} - -@test "qp_create n2h4.xyz" { - run n2h4.xyz 1 0 cc-pvdz +@test "qp_create n2h4.zmt" { + run n2h4.zmt 1 0 cc-pvdz } @test "qp_create oh.xyz" { diff --git a/src/hartree_fock/20.hf.bats b/src/hartree_fock/20.hf.bats index 105539de..99de7808 100644 --- a/src/hartree_fock/20.hf.bats +++ b/src/hartree_fock/20.hf.bats @@ -2,15 +2,8 @@ source $QP_ROOT/tests/bats/common.bats.sh -function run_init() { - cp "${QP_ROOT}/tests/input/$1" . - rm -rf -- $3 - qp_create_ezfio_from_xyz $1 -o $3 $2 - qp_edit -c $3 -} - -function run_HF() { +function run() { thresh=1.e-8 test_exe scf || skip qp_edit -c $1 @@ -23,40 +16,16 @@ function run_HF() { -#=== DHNO -@test "init DHNO chipman-dzp" { - run_init dhno.xyz "-b chipman-dzp -m 2" dhno.ezfio -} - @test "SCF DHNO chipman-dzp" { - run_HF dhno.ezfio -130.4278777822 -} - -#=== HBO -@test "init HBO STO-3G" { - run_init HBO.xyz "-b STO-3G" hbo.ezfio + run dhno.ezfio -130.4278777822 } @test "SCF HBO STO-3G" { - run_HF hbo.ezfio -98.8251985678084 -} - - -#=== H2O -@test "init H2O cc-pVDZ" { - run_init h2o.xyz "-b cc-pvdz" h2o.ezfio + run hbo.ezfio -98.8251985678084 } @test "SCF H2O cc-pVDZ" { - run_HF h2o.ezfio -0.760270218692179E+02 + run h2o.ezfio -0.760270218692179E+02 } -#=== H2O Pseudo -@test "init H2O VDZ pseudo" { - run_init h2o.xyz "-p bfd -b vdz-bfd" h2o_pseudo.ezfio -} - -@test "SCF H2O VDZ pseudo" { - run_HF h2o_pseudo.ezfio -16.9483703905461 -} diff --git a/tests/input/dhno.xyz b/tests/input/dhno.xyz deleted file mode 100644 index 367a2fa7..00000000 --- a/tests/input/dhno.xyz +++ /dev/null @@ -1,7 +0,0 @@ -4 -XYZ file: coordinates in Angstrom -H -0.877367 -1.047049 0.000000 -N 0.000000 -0.544985 0.000000 -O 0.000000 0.738624 0.000000 -H 0.877367 -1.047049 0.000000 - diff --git a/tests/input/f2.xyz b/tests/input/f2.xyz deleted file mode 100644 index 9128ff54..00000000 --- a/tests/input/f2.xyz +++ /dev/null @@ -1,4 +0,0 @@ -2 -F2 Geo: Experiment Mult: 1 symmetry: 18 -F 0.0 0.0 0.0 -F 0.0 0.0 1.4119 diff --git a/tests/input/f2.zmt b/tests/input/f2.zmt new file mode 100644 index 00000000..0dee27c4 --- /dev/null +++ b/tests/input/f2.zmt @@ -0,0 +1,3 @@ +F +F 1 1.4119 + diff --git a/tests/input/h2o.xyz b/tests/input/h2o.xyz deleted file mode 100644 index e8cd039b..00000000 --- a/tests/input/h2o.xyz +++ /dev/null @@ -1,6 +0,0 @@ -3 -XYZ file: coordinates in Angstrom -H 0.7510000000 0.1940000000 0.0000000000 -O 0.0000000000 -0.3880000000 0.0000000000 -H -0.7510000000 0.1940000000 0.0000000000 - diff --git a/tests/input/h2o2.xyz b/tests/input/h2o2.xyz deleted file mode 100644 index 47066833..00000000 --- a/tests/input/h2o2.xyz +++ /dev/null @@ -1,6 +0,0 @@ -4 -H2O2 Geo: Experiment Mult: 1 symmetry: 18 -H 0.819 0.817 0.422 -H -0.819 -0.817 0.422 -O 0.0 0.7375 -0.0528 -O 0.0 -0.7375 -0.0528 diff --git a/tests/input/h2o2.zmt b/tests/input/h2o2.zmt new file mode 100644 index 00000000..ea2bc08d --- /dev/null +++ b/tests/input/h2o2.zmt @@ -0,0 +1,11 @@ + o + o 1 oo + h 1 ho 2 hoo + h 2 ho 1 hoo 3 dih + +oo 1.475 +ho 0.95 +hoo 94.8 +dih 119.8 + + diff --git a/tests/input/hbo.xyz b/tests/input/hbo.xyz deleted file mode 100644 index 796a1e19..00000000 --- a/tests/input/hbo.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -HBO Geo: Experiment Mult: 1 symmetry: 14 -B 0.0 0.0 1.166 -H 0.0 0.0 0.0 -O 0.0 0.0 2.366 diff --git a/tests/input/n2h4.xyz b/tests/input/n2h4.xyz deleted file mode 100644 index 8dbad41c..00000000 --- a/tests/input/n2h4.xyz +++ /dev/null @@ -1,8 +0,0 @@ -6 -N2H4 Geo: Experiment Mult: 1 symmetry: 18 -H -0.447 1.0031 0.7562 -H 0.447 -1.0031 0.7562 -H 0.9663 1.0031 0.0301 -H -0.9663 -1.0031 0.0301 -N 0.0 0.723 -0.1123 -N 0.0 -0.723 -0.1123 diff --git a/tests/input/n2h4.zmt b/tests/input/n2h4.zmt new file mode 100644 index 00000000..a710a495 --- /dev/null +++ b/tests/input/n2h4.zmt @@ -0,0 +1,14 @@ + n + n 1 nn + h 1 hn 2 hnn + h 2 hn 1 hnn 3 dih4 + h 1 hn 2 hnn 4 dih5 + h 2 hn 1 hnn 3 dih5 + +nn 1.446 +hn 1.016 +hnn 106.0 +dih4 -54.38 +dih5 54.38 + + From a7afb7fff00b077b34ad92949b3d337aabef1ada Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Dec 2018 18:18:48 +0100 Subject: [PATCH 03/10] Fixed a few tests --- ocaml/qp_create_ezfio_from_xyz.ml | 2 +- src/ezfio_files/00.create.bats | 4 ++++ src/hartree_fock/20.hf.bats | 14 +++++++------- tests/input/dhno.xyz | 7 +++++++ 4 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 tests/input/dhno.xyz diff --git a/ocaml/qp_create_ezfio_from_xyz.ml b/ocaml/qp_create_ezfio_from_xyz.ml index 73d52412..13bcf7bf 100644 --- a/ocaml/qp_create_ezfio_from_xyz.ml +++ b/ocaml/qp_create_ezfio_from_xyz.ml @@ -79,7 +79,7 @@ let dummy_centers ~threshold ~molecule ~nuclei = (** Returns the list of available basis sets *) let list_basis () = let basis_list = - Qpackage.root ^ "/install/emsl/EMSL_api.py list_basis" + "python2 "^ Qpackage.root ^ "/external/emsl/EMSL_api.py list_basis" |> Unix.open_process_in |> In_channel.input_lines |> List.map ~f:(fun x -> diff --git a/src/ezfio_files/00.create.bats b/src/ezfio_files/00.create.bats index 8eac5df3..fbd5436c 100644 --- a/src/ezfio_files/00.create.bats +++ b/src/ezfio_files/00.create.bats @@ -27,6 +27,10 @@ function run { run clo.xyz 2 0 cc-pvdz } +@test "qp_create dhno.xyz" { + run dhno.xyz 2 0 "Chipman DZP + Diffuse" +} + @test "qp_create h3coh.xyz" { run h3coh.xyz 1 0 6-31g } diff --git a/src/hartree_fock/20.hf.bats b/src/hartree_fock/20.hf.bats index 99de7808..36e6bbc7 100644 --- a/src/hartree_fock/20.hf.bats +++ b/src/hartree_fock/20.hf.bats @@ -20,12 +20,12 @@ function run() { run dhno.ezfio -130.4278777822 } -@test "SCF HBO STO-3G" { - run hbo.ezfio -98.8251985678084 -} - -@test "SCF H2O cc-pVDZ" { - run h2o.ezfio -0.760270218692179E+02 -} +#@test "SCF HBO STO-3G" { +# run hbo.ezfio -98.8251985678084 +#} +# +#@test "SCF H2O cc-pVDZ" { +# run h2o.ezfio -0.760270218692179E+02 +#} diff --git a/tests/input/dhno.xyz b/tests/input/dhno.xyz new file mode 100644 index 00000000..367a2fa7 --- /dev/null +++ b/tests/input/dhno.xyz @@ -0,0 +1,7 @@ +4 +XYZ file: coordinates in Angstrom +H -0.877367 -1.047049 0.000000 +N 0.000000 -0.544985 0.000000 +O 0.000000 0.738624 0.000000 +H 0.877367 -1.047049 0.000000 + From 0aa04f1f305d65dadcf6d09325a0b9a4374307b1 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Dec 2018 18:34:50 +0100 Subject: [PATCH 04/10] Working on tests --- src/ezfio_files/00.create.bats | 6 ++++-- src/ezfio_files/01.convert.bats | 11 ++++++----- src/hartree_fock/20.hf.bats | 22 +++++++++++++--------- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/src/ezfio_files/00.create.bats b/src/ezfio_files/00.create.bats index fbd5436c..a7fb2043 100644 --- a/src/ezfio_files/00.create.bats +++ b/src/ezfio_files/00.create.bats @@ -14,8 +14,10 @@ function run { fi cp ${QP_ROOT}/tests/input/$INPUT . rm -rf $EZ - qp_create_ezfio_from_xyz $INPUT -b "$BASIS" -m $MULT -c $CHARGE $PSEUDO -o $EZ + qp_create_ezfio_from_xyz \ + $INPUT -b "$BASIS" -m $MULT -c $CHARGE $PSEUDO -o $EZ qp_edit -c $EZ + echo "Write" > ${EZ}/ao_two_e_integrals/disk_access_ao_integrals } @@ -28,7 +30,7 @@ function run { } @test "qp_create dhno.xyz" { - run dhno.xyz 2 0 "Chipman DZP + Diffuse" + run dhno.xyz 2 0 chipman-dzp } @test "qp_create h3coh.xyz" { diff --git a/src/ezfio_files/01.convert.bats b/src/ezfio_files/01.convert.bats index 31b4e2a2..f0dc5608 100644 --- a/src/ezfio_files/01.convert.bats +++ b/src/ezfio_files/01.convert.bats @@ -4,21 +4,22 @@ source $QP_ROOT/tests/bats/common.bats.sh function run { INPUT=$1 - EZ=${INPUT}.ezfio + EZ=$2 cp ${QP_ROOT}/tests/input/$INPUT . - qp_convert_output_to_ezfio $INPUT + qp_convert_output_to_ezfio $INPUT -o $EZ qp_edit -c $EZ + echo "Write" > ${EZ}/ao_two_e_integrals/disk_access_ao_integrals } #=== Convert @test "gamess convert hbo.gms.out" { - run hbo.gms.out + run hbo.gms.out hbo.ezfio } @test "g09 convert h2o.log" { - run h2o.log + run h2o.log h2o.ezfio } @test "gamess convert cu_nh3_4_2plus.gms.out" { - run cu_nh3_4_2plus.gms.out + run cu_nh3_4_2plus.gms.out cu_nh3_4_2plus.ezfio } diff --git a/src/hartree_fock/20.hf.bats b/src/hartree_fock/20.hf.bats index 36e6bbc7..35cf901c 100644 --- a/src/hartree_fock/20.hf.bats +++ b/src/hartree_fock/20.hf.bats @@ -5,27 +5,31 @@ source $QP_ROOT/tests/bats/common.bats.sh function run() { thresh=1.e-8 - test_exe scf || skip qp_edit -c $1 ezfio set_file $1 ezfio set scf_utils thresh_scf 1.e-10 qp_run scf $1 + qp_set_frozen_core $1 energy="$(ezfio get hartree_fock energy)" eq $energy $2 $thresh } +@test "SCF HBO" { + run hbo.ezfio -100.018582259096 +} + +@test "SCF H2O" { + run h2o.ezfio -0.760270218692179E+02 +} + +@test "SCF H2O" { + run cu_nh3_4_2plus.ezfio -1862.97590388214 +} + @test "SCF DHNO chipman-dzp" { run dhno.ezfio -130.4278777822 } -#@test "SCF HBO STO-3G" { -# run hbo.ezfio -98.8251985678084 -#} -# -#@test "SCF H2O cc-pVDZ" { -# run h2o.ezfio -0.760270218692179E+02 -#} - From 56fd098580f27e42ff07c965ffdd27fc80202002 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Dec 2018 19:12:53 +0100 Subject: [PATCH 05/10] README --- docs/source/modules/ao_one_e_integrals.rst | 7 +++++++ docs/source/modules/aux_quantities.rst | 13 ++++++++++--- docs/source/modules/becke_numerical_grid.rst | 9 ++++++++- docs/source/modules/davidson.rst | 3 +++ docs/source/modules/determinants.rst | 16 ++++++++++++++++ docs/source/modules/dft_keywords.rst | 11 ++++++----- docs/source/modules/generators_cas.rst | 2 +- docs/source/modules/mo_one_e_integrals.rst | 9 ++++++++- docs/source/modules/scf_utils.rst | 4 ++-- docs/source/users_guide/quickstart.rst | 2 +- src/ao_basis/README.rst | 2 +- src/ao_one_e_integrals/README.rst | 2 +- src/bitmask/README.rst | 2 +- src/cis/README.rst | 2 +- src/cisd/README.rst | 2 +- src/davidson/README.rst | 6 +++--- src/davidson_dressed/README.rst | 6 +++--- src/davidson_undressed/README.rst | 6 +++--- src/determinants/README.rst | 2 +- src/dressing/README.rst | 4 ++-- src/electrons/README.rst | 6 +++--- src/ezfio_files/README.rst | 2 +- src/fci/README.rst | 2 +- src/generators_cas/README.rst | 2 +- src/generators_full/README.rst | 2 +- src/hartree_fock/README.rst | 2 +- src/iterations/README.rst | 9 +++++---- src/kohn_sham/README.rst | 6 +++--- src/kohn_sham_rs/README.rst | 6 +++--- src/mo_basis/README.rst | 2 +- src/mo_guess/README.rst | 6 +++--- src/mo_two_e_integrals/README.rst | 6 +++--- src/mpi/README.rst | 2 +- src/nuclei/README.rst | 2 +- src/perturbation/README.rst | 2 +- src/pseudo/README.rst | 2 +- src/psiref_cas/README.rst | 2 +- src/psiref_utils/README.rst | 2 +- src/selectors_cassd/README.rst | 2 +- src/selectors_full/README.rst | 2 +- src/selectors_utils/README.rst | 2 +- src/single_ref_method/README.rst | 6 +++--- src/slave/README.rst | 2 +- src/tools/README.rst | 2 +- src/utils/README.rst | 2 +- src/zmq/README.rst | 2 +- 46 files changed, 121 insertions(+), 72 deletions(-) diff --git a/docs/source/modules/ao_one_e_integrals.rst b/docs/source/modules/ao_one_e_integrals.rst index 3f158a26..c2ef6703 100644 --- a/docs/source/modules/ao_one_e_integrals.rst +++ b/docs/source/modules/ao_one_e_integrals.rst @@ -10,6 +10,13 @@ AO_one_e_integrals All the one-electron integrals in the |AO| basis are here. +The most important providers for usual quantum-chemistry calculation are: + +# `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) +# `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) +# `ao_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) + +Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`. diff --git a/docs/source/modules/aux_quantities.rst b/docs/source/modules/aux_quantities.rst index 4eded7d9..4e6fde73 100644 --- a/docs/source/modules/aux_quantities.rst +++ b/docs/source/modules/aux_quantities.rst @@ -4,13 +4,20 @@ .. default-role:: option -============ -Data energy and density -============ +============== +aux_quantities +============== This module contains some global variables (such as densities and energies) which are stored in the EZFIO folder in a different place than determinants. This is used in practice to store density matrices which can be obtained from any methods, as long as they are stored in the same MO basis which is used for the calculations. In |RS-DFT| calculations, this can be done to perform damping on the density in order to speed up convergence. +The main providers of that module are: + +# `data_one_body_alpha_dm_mo` and `data_one_body_beta_dm_mo` which are the one-body alpha and beta densities which are necessary read from the EZFIO folder. + + +Thanks to these providers you can use any density matrix that does not necessary corresponds to that of the current wave function. + EZFIO parameters diff --git a/docs/source/modules/becke_numerical_grid.rst b/docs/source/modules/becke_numerical_grid.rst index 8b0ef81f..eb934238 100644 --- a/docs/source/modules/becke_numerical_grid.rst +++ b/docs/source/modules/becke_numerical_grid.rst @@ -5,13 +5,20 @@ .. default-role:: option ==================== -Becke Numerical Grid +becke_numerical_grid ==================== This module contains all quantities needed to build the Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions. This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains a certain number of radial and angular points. +The main providers of that module are: + +# :option:`becke_numerical_grid n_points_integration_angular` which is the number of angular integration points. WARNING: it obeys to specific rules so it cannot be any integer number. Some of the possible values are [ 50 | 74 | 266 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details. +# :option:`becke_numerical_grid n_points_radial_grid` which is the number of radial angular points. This can be any strictly positive integer. Nevertheless, a minimum of 50 is in general necessary. +# `final_grid_points` which are the (x,y,z) coordinates of the grid points. +# `final_weight_at_r_vector` which are the weights at each grid point + For a simple example of how to use the grid, see :file:`example.irp.f`. The spherical integration uses Lebedev-Laikov grids, which was used from the code distributed through CCL (http://www.ccl.net/). diff --git a/docs/source/modules/davidson.rst b/docs/source/modules/davidson.rst index c7380356..338b26bb 100644 --- a/docs/source/modules/davidson.rst +++ b/docs/source/modules/davidson.rst @@ -14,7 +14,10 @@ a dressing is used, the dressing column should be defined and the :ref:`davidsondressed` module should be used. If no dressing is required, the :ref:`davidson` module should be used, and it has a default zero dressing vector. +The important providers for that module are: +# `psi_energy` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the Hamiltonian, dressed or not. It uses the general subroutine `u_0_H_u_0`. +# `psi_energy_bielec` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the standard two-electrons coulomb operator. It uses the general routine `u_0_H_u_0_bielec`. diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst index c23e267b..35713a2f 100644 --- a/docs/source/modules/determinants.rst +++ b/docs/source/modules/determinants.rst @@ -10,6 +10,22 @@ Determinants Contains everything for the computation of the Hamiltonian matrix elements in the basis of orthogonal Slater determinants built on a restricted spin-orbitals basis. +The main providers for this module are: + +# :option:`determinants n_states`: number of states to be computed +# `psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|. +# `psi_coef`: list of coefficients, for all :option:`determinants n_states` states, and all determinants. + +The main routines for this module are: + +# `i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants. +# `i_H_j_s2`: computes the Hamiltonian and (:math:`S^2`) matrix element between two arbitrary Slater determinants. +# `i_H_j_verbose`: returns the decomposition in terms of one- and two-body components of the Hamiltonian matrix elements between two arbitrary Slater determinants. Also return the fermionic phase factor. +# `i_H_psi`: computes the Hamiltonian matrix element between an arbitrary Slater determinant and a wave function composed of a sum of arbitrary Slater determinants. + + +For an example of how to use these routines and providers, take a look at :file:`example.irp.f`. + EZFIO parameters diff --git a/docs/source/modules/dft_keywords.rst b/docs/source/modules/dft_keywords.rst index 301c983e..ed7f87d2 100644 --- a/docs/source/modules/dft_keywords.rst +++ b/docs/source/modules/dft_keywords.rst @@ -5,18 +5,19 @@ .. default-role:: option ============ -DFT Keywords +dft_keywords ============ This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as: -# :option:exchange_functional -# :option:correlation_functional -# :option:HF_exchange : only relevent for the :ref:`ks_scf` program -# :option:density_for_dft : mainly relevent for multi-determinant range separated DFT, see the plugins of eginer. +# :option:`dft_keywords exchange_functional` +# :option:`dft_keywords correlation_functional` +# :option:`dft_keywords HF_exchange` : only relevent for the :ref:`ks_scf` program The keyword for the range separation parameter :math:`\mu` is the :option:`ao_two_e_erf_integrals mu_erf` keyword. +The keyword for the type of density used in RS-DFT calculation with a multi-configurational wave function is the :option:`density_for_dft density_for_dft` keyword. + EZFIO parameters diff --git a/docs/source/modules/generators_cas.rst b/docs/source/modules/generators_cas.rst index 806f4430..9d1e75e0 100644 --- a/docs/source/modules/generators_cas.rst +++ b/docs/source/modules/generators_cas.rst @@ -13,7 +13,7 @@ The |MOs| belonging to the |CAS| are those which were set as active with the :ref:`qp_set_mo_class` command. This module is intended to be included in the :file:`NEED` file to define -generators on a |CAS|. +the generators as the |CAS| determinants, which can be useful to define post-CAS approaches (see cassd module for instance). diff --git a/docs/source/modules/mo_one_e_integrals.rst b/docs/source/modules/mo_one_e_integrals.rst index aedd40d6..d4e14b41 100644 --- a/docs/source/modules/mo_one_e_integrals.rst +++ b/docs/source/modules/mo_one_e_integrals.rst @@ -5,11 +5,18 @@ .. default-role:: option ================== -MO_one_e_integrals +mo_one_e_integrals ================== All the one-electron integrals in |MO| basis are defined here. +The most important providers for usual quantum-chemistry calculation are: + +# `mo_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`) +# `mo_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`) +# `mo_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`) + +Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`. diff --git a/docs/source/modules/scf_utils.rst b/docs/source/modules/scf_utils.rst index 52a411e2..a5aaeb73 100644 --- a/docs/source/modules/scf_utils.rst +++ b/docs/source/modules/scf_utils.rst @@ -10,11 +10,11 @@ scf_utils -The scf_utils module performs *Restricted* SCF calculations (the +The scf_utils module is an abstract module which contains the basics to perform *Restricted* SCF calculations (the spatial part of the |MOs| is common for alpha and beta spinorbitals) based on a single-determinant wave function. This module does not produce any executable *and must not do*, but instead it contains everything one needs to perform an orbital optimization based on an Fock matrix. -The ``scf_utils`` module is included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example). +The ``scf_utils`` module is meant to be included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example). All SCF programs perform the following actions: diff --git a/docs/source/users_guide/quickstart.rst b/docs/source/users_guide/quickstart.rst index 43dc7106..afc0136e 100644 --- a/docs/source/users_guide/quickstart.rst +++ b/docs/source/users_guide/quickstart.rst @@ -43,7 +43,7 @@ The file :file:`hcn.xyz` contains:: N 0.0 0.0 -1.156 -This xyz file is now used with the :command:`qp_create_ezfio_from_xyz` command to +This xyz file is now used with the :ref:`qp_create_ezfio_from_xyz` command to create an |EZFIO| database with the 6-31G basis set: .. code:: bash diff --git a/src/ao_basis/README.rst b/src/ao_basis/README.rst index c279864c..753dd12b 100644 --- a/src/ao_basis/README.rst +++ b/src/ao_basis/README.rst @@ -1,5 +1,5 @@ ======== -AO_Basis +ao_basis ======== This module describes the atomic orbitals basis set. diff --git a/src/ao_one_e_integrals/README.rst b/src/ao_one_e_integrals/README.rst index 0901554a..2d4c9660 100644 --- a/src/ao_one_e_integrals/README.rst +++ b/src/ao_one_e_integrals/README.rst @@ -1,5 +1,5 @@ ================== -AO_one_e_integrals +ao_one_e_integrals ================== All the one-electron integrals in the |AO| basis are here. diff --git a/src/bitmask/README.rst b/src/bitmask/README.rst index 82e0825e..dae6eaf5 100644 --- a/src/bitmask/README.rst +++ b/src/bitmask/README.rst @@ -1,5 +1,5 @@ ============== -Bitmask Module +bitmask module ============== The central part of this module is the :file:`bitmasks_module.f90` file. It contains diff --git a/src/cis/README.rst b/src/cis/README.rst index 4b37f514..b7f1ea19 100644 --- a/src/cis/README.rst +++ b/src/cis/README.rst @@ -1,5 +1,5 @@ === -CIS +cis === This module contains a CIS program, built by setting the following rules: diff --git a/src/cisd/README.rst b/src/cisd/README.rst index 096fe22e..268b6609 100644 --- a/src/cisd/README.rst +++ b/src/cisd/README.rst @@ -1,5 +1,5 @@ ==== -CISD +cisd ==== This module contains a CISD program, built by setting the following rules: diff --git a/src/davidson/README.rst b/src/davidson/README.rst index 1ff7847a..b7c15356 100644 --- a/src/davidson/README.rst +++ b/src/davidson/README.rst @@ -1,6 +1,6 @@ -============== -Davidson_Utils -============== +======== +davidson +======== Abstract module for Davidson's diagonalization. It contains everything required for the Davidson algorithm, dressed or not. If diff --git a/src/davidson_dressed/README.rst b/src/davidson_dressed/README.rst index 4ae57595..d5839846 100644 --- a/src/davidson_dressed/README.rst +++ b/src/davidson_dressed/README.rst @@ -1,6 +1,6 @@ -=============== -DavidsonDressed -=============== +================ +davidson_dressed +================ Davidson with single-column dressing. diff --git a/src/davidson_undressed/README.rst b/src/davidson_undressed/README.rst index ff48b77f..564fab02 100644 --- a/src/davidson_undressed/README.rst +++ b/src/davidson_undressed/README.rst @@ -1,6 +1,6 @@ -================= -DavidsonUndressed -================= +================== +davidson_undressed +================== Module for main files Davidson's algorithm with no dressing. diff --git a/src/determinants/README.rst b/src/determinants/README.rst index 63d88b02..537464b7 100644 --- a/src/determinants/README.rst +++ b/src/determinants/README.rst @@ -1,5 +1,5 @@ ============ -Determinants +determinants ============ Contains everything for the computation of the Hamiltonian matrix elements in the basis of orthogonal Slater determinants built on a restricted spin-orbitals basis. diff --git a/src/dressing/README.rst b/src/dressing/README.rst index c25559d1..a3854407 100644 --- a/src/dressing/README.rst +++ b/src/dressing/README.rst @@ -2,6 +2,6 @@ dress_zmq ========= -Module to facilitate the construction of modules using dressed Hamiltonians, parallelized -with |ZeroMQ|. +Module to facilitate the construction of modules using dressed +Hamiltonians, parallelized with |ZeroMQ|. diff --git a/src/electrons/README.rst b/src/electrons/README.rst index 0db59aee..251b2c66 100644 --- a/src/electrons/README.rst +++ b/src/electrons/README.rst @@ -1,9 +1,9 @@ ========= -Electrons +electrons ========= -Describes the electrons. For the moment, only the number of alpha and beta electrons -are provided by this module. +Describes the electrons. For the moment, only the number of alpha +and beta electrons are provided by this module. Assumptions diff --git a/src/ezfio_files/README.rst b/src/ezfio_files/README.rst index ea568b71..bf3166de 100644 --- a/src/ezfio_files/README.rst +++ b/src/ezfio_files/README.rst @@ -1,5 +1,5 @@ =========== -Ezfio_files +ezfio_files =========== This modules essentially contains the name of the |EZFIO| directory in the diff --git a/src/fci/README.rst b/src/fci/README.rst index 3bb6fb24..2257d528 100644 --- a/src/fci/README.rst +++ b/src/fci/README.rst @@ -1,5 +1,5 @@ === -FCI +fci === Selected Full Configuration Interaction. diff --git a/src/generators_cas/README.rst b/src/generators_cas/README.rst index a030059c..cb7b53ac 100644 --- a/src/generators_cas/README.rst +++ b/src/generators_cas/README.rst @@ -1,5 +1,5 @@ ============== -Generators_CAS +generators_cas ============== Module defining the generator determinants as those belonging to a |CAS|. diff --git a/src/generators_full/README.rst b/src/generators_full/README.rst index 1f5036e5..4e59ee3b 100644 --- a/src/generators_full/README.rst +++ b/src/generators_full/README.rst @@ -1,5 +1,5 @@ =============== -Generators_full +generators_full =============== Module defining the generator determinants as all the determinants of the diff --git a/src/hartree_fock/README.rst b/src/hartree_fock/README.rst index 6ea2d00d..7fa01d4f 100644 --- a/src/hartree_fock/README.rst +++ b/src/hartree_fock/README.rst @@ -1,5 +1,5 @@ ============ -Hartree-Fock +hartree_fock ============ diff --git a/src/iterations/README.rst b/src/iterations/README.rst index e5bf9d3c..8ebd7231 100644 --- a/src/iterations/README.rst +++ b/src/iterations/README.rst @@ -1,5 +1,6 @@ -============= -IterativeSave -============= +========== +iterations +========== -Module which saves the computed energies for an extrapolation to the |FCI| limit. +Module which saves the computed energies for an extrapolation to +the |FCI| limit. diff --git a/src/kohn_sham/README.rst b/src/kohn_sham/README.rst index 197509c8..2b6bd7bc 100644 --- a/src/kohn_sham/README.rst +++ b/src/kohn_sham/README.rst @@ -1,6 +1,6 @@ -============ -Kohn-Sham -============ +========= +kohn_sham +========= The Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the diff --git a/src/kohn_sham_rs/README.rst b/src/kohn_sham_rs/README.rst index 95ad0cab..14441fb1 100644 --- a/src/kohn_sham_rs/README.rst +++ b/src/kohn_sham_rs/README.rst @@ -1,6 +1,6 @@ -========================= -Range-separated Kohn-Sham -========================= +============ +kohn_sham_rs +============ The Range-separated Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the diff --git a/src/mo_basis/README.rst b/src/mo_basis/README.rst index 8de13894..181092b3 100644 --- a/src/mo_basis/README.rst +++ b/src/mo_basis/README.rst @@ -1,5 +1,5 @@ ======== -MO_Basis +mo_basis ======== Molecular orbitals are expressed as diff --git a/src/mo_guess/README.rst b/src/mo_guess/README.rst index 9b867a48..7accfa52 100644 --- a/src/mo_guess/README.rst +++ b/src/mo_guess/README.rst @@ -1,6 +1,6 @@ -======= -MOGuess -======= +======== +mo_guess +======== Guess for |MOs|. diff --git a/src/mo_two_e_integrals/README.rst b/src/mo_two_e_integrals/README.rst index 0af514fa..2e627dc6 100644 --- a/src/mo_two_e_integrals/README.rst +++ b/src/mo_two_e_integrals/README.rst @@ -1,6 +1,6 @@ -================ -Integrals_Bielec -================ +================== +mo_two_e_integrals +================== Here, all two-electron integrals (:math:`1/r_{12}`) are computed. As they have 4 indices and many are zero, they are stored in a map, as defined diff --git a/src/mpi/README.rst b/src/mpi/README.rst index 8fe18079..66ed6fd5 100644 --- a/src/mpi/README.rst +++ b/src/mpi/README.rst @@ -1,5 +1,5 @@ === -MPI +mpi === Contains all the functions and providers for parallelization with |MPI|. diff --git a/src/nuclei/README.rst b/src/nuclei/README.rst index d03d64bd..d7f3d8e2 100644 --- a/src/nuclei/README.rst +++ b/src/nuclei/README.rst @@ -1,5 +1,5 @@ ====== -Nuclei +nuclei ====== This module contains data relative to the nuclei (coordinates, charge, diff --git a/src/perturbation/README.rst b/src/perturbation/README.rst index 0927b962..44f955b8 100644 --- a/src/perturbation/README.rst +++ b/src/perturbation/README.rst @@ -1,5 +1,5 @@ ============ -Perturbation +perturbation ============ diff --git a/src/pseudo/README.rst b/src/pseudo/README.rst index b1bab664..42cca6d0 100644 --- a/src/pseudo/README.rst +++ b/src/pseudo/README.rst @@ -1,5 +1,5 @@ ====== -Pseudo +pseudo ====== This module defines the |EZFIO| parameters of the effective core potentials. diff --git a/src/psiref_cas/README.rst b/src/psiref_cas/README.rst index c84537e3..23b9fa84 100644 --- a/src/psiref_cas/README.rst +++ b/src/psiref_cas/README.rst @@ -1,5 +1,5 @@ ========== -Psiref_CAS +psiref_cas ========== Reference wave function is defined as a |CAS| wave function. diff --git a/src/psiref_utils/README.rst b/src/psiref_utils/README.rst index a4b4a175..d4b70a89 100644 --- a/src/psiref_utils/README.rst +++ b/src/psiref_utils/README.rst @@ -1,5 +1,5 @@ ============ -Psiref_Utils +psiref_utils ============ diff --git a/src/selectors_cassd/README.rst b/src/selectors_cassd/README.rst index 4f193cce..e359ef8e 100644 --- a/src/selectors_cassd/README.rst +++ b/src/selectors_cassd/README.rst @@ -1,5 +1,5 @@ =============== -Selectors_CASSD +selectors_cassd =============== Selectors for |CAS-SD| calculations. The selectors are defined as first the diff --git a/src/selectors_full/README.rst b/src/selectors_full/README.rst index bc370fc3..668d5e0a 100644 --- a/src/selectors_full/README.rst +++ b/src/selectors_full/README.rst @@ -1,5 +1,5 @@ ============== -Selectors_full +selectors_full ============== All the determinants are possible selectors. Only the largest contributions are kept, where diff --git a/src/selectors_utils/README.rst b/src/selectors_utils/README.rst index ec067b76..cbb2c723 100644 --- a/src/selectors_utils/README.rst +++ b/src/selectors_utils/README.rst @@ -1,5 +1,5 @@ =============== -Selectors_Utils +selectors_utils =============== Helper functions for selectors. diff --git a/src/single_ref_method/README.rst b/src/single_ref_method/README.rst index fbd35b79..0993349e 100644 --- a/src/single_ref_method/README.rst +++ b/src/single_ref_method/README.rst @@ -1,6 +1,6 @@ -=============== -SingleDetMethod -=============== +================= +single_ref_method +================= Include this module for single reference methods. Using this module, the only generator determinant is the Hartree-Fock determinant. diff --git a/src/slave/README.rst b/src/slave/README.rst index 0337b2f8..341b3d7d 100644 --- a/src/slave/README.rst +++ b/src/slave/README.rst @@ -1,5 +1,5 @@ ===== -Slave +slave ===== Slave processes for distributed parallelism. diff --git a/src/tools/README.rst b/src/tools/README.rst index e560b35a..134280bd 100644 --- a/src/tools/README.rst +++ b/src/tools/README.rst @@ -1,5 +1,5 @@ ===== -Tools +tools ===== Useful tools are grouped in this module. diff --git a/src/utils/README.rst b/src/utils/README.rst index 72d6e4ee..3b0bb885 100644 --- a/src/utils/README.rst +++ b/src/utils/README.rst @@ -1,5 +1,5 @@ ===== -Utils +utils ===== Contains general purpose utilities (sorting, maps, etc). diff --git a/src/zmq/README.rst b/src/zmq/README.rst index 1a6ef4fa..64322294 100644 --- a/src/zmq/README.rst +++ b/src/zmq/README.rst @@ -1,5 +1,5 @@ === -ZMQ +zmq === Definition of |ZeroMQ| sockets and messages. From 540c02c4aa0a36f6bed7bb7de043de63d642011b Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Dec 2018 19:19:14 +0100 Subject: [PATCH 06/10] README + configure --- configure | 6 + docs/source/modules/ao_basis.rst | 2 +- docs/source/modules/ao_one_e_integrals.rst | 2 +- docs/source/modules/bitmask.rst | 2 +- docs/source/modules/cis.rst | 2 +- docs/source/modules/cisd.rst | 2 +- .../modules/data_energy_and_density.rst | 71 - docs/source/modules/davidson.rst | 6 +- docs/source/modules/davidson_dressed.rst | 6 +- docs/source/modules/davidson_undressed.rst | 6 +- docs/source/modules/determinants.rst | 2 +- docs/source/modules/dft_utils_one_body.rst | 19 - docs/source/modules/dressing.rst | 4 +- docs/source/modules/electrons.rst | 6 +- docs/source/modules/ezfio_files.rst | 2 +- docs/source/modules/fci.rst | 2 +- docs/source/modules/generators_cas.rst | 2 +- docs/source/modules/generators_full.rst | 2 +- docs/source/modules/hartree_fock.rst | 2 +- docs/source/modules/iterations.rst | 9 +- docs/source/modules/kohn_sham.rst | 6 +- docs/source/modules/kohn_sham_rs.rst | 6 +- docs/source/modules/mo_basis.rst | 2 +- docs/source/modules/mo_guess.rst | 6 +- docs/source/modules/mo_two_e_integrals.rst | 6 +- docs/source/modules/mpi.rst | 2 +- docs/source/modules/mrcc.rst | 357 ---- docs/source/modules/mrcc_utils.rst | 960 --------- docs/source/modules/mrpt_utils.rst | 1890 ----------------- docs/source/modules/nuclei.rst | 2 +- docs/source/modules/perturbation.rst | 2 +- docs/source/modules/pseudo.rst | 2 +- docs/source/modules/psiref_cas.rst | 2 +- docs/source/modules/psiref_utils.rst | 2 +- docs/source/modules/selectors_cassd.rst | 2 +- docs/source/modules/selectors_full.rst | 2 +- docs/source/modules/selectors_utils.rst | 2 +- docs/source/modules/single_ref_method.rst | 6 +- docs/source/modules/slave.rst | 2 +- docs/source/modules/tools.rst | 2 +- docs/source/modules/utils.rst | 2 +- docs/source/modules/zmq.rst | 2 +- 42 files changed, 65 insertions(+), 3355 deletions(-) delete mode 100644 docs/source/modules/data_energy_and_density.rst delete mode 100644 docs/source/modules/dft_utils_one_body.rst delete mode 100644 docs/source/modules/mrcc.rst delete mode 100644 docs/source/modules/mrcc_utils.rst delete mode 100644 docs/source/modules/mrpt_utils.rst diff --git a/configure b/configure index 60889c71..b3a9e96a 100755 --- a/configure +++ b/configure @@ -374,6 +374,12 @@ echo " \ (oo)\_______ " echo " (__)\ )\/\. " echo " ||----w | " echo " || || " +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo "" +echo "Now:" +echo "" +echo " source $QP_ROOT/quantum_package.rc" +echo "" diff --git a/docs/source/modules/ao_basis.rst b/docs/source/modules/ao_basis.rst index cb104505..f7954784 100644 --- a/docs/source/modules/ao_basis.rst +++ b/docs/source/modules/ao_basis.rst @@ -5,7 +5,7 @@ .. default-role:: option ======== -AO_Basis +ao_basis ======== This module describes the atomic orbitals basis set. diff --git a/docs/source/modules/ao_one_e_integrals.rst b/docs/source/modules/ao_one_e_integrals.rst index c2ef6703..4b4d764a 100644 --- a/docs/source/modules/ao_one_e_integrals.rst +++ b/docs/source/modules/ao_one_e_integrals.rst @@ -5,7 +5,7 @@ .. default-role:: option ================== -AO_one_e_integrals +ao_one_e_integrals ================== All the one-electron integrals in the |AO| basis are here. diff --git a/docs/source/modules/bitmask.rst b/docs/source/modules/bitmask.rst index 41b72165..11e99b89 100644 --- a/docs/source/modules/bitmask.rst +++ b/docs/source/modules/bitmask.rst @@ -5,7 +5,7 @@ .. default-role:: option ============== -Bitmask Module +bitmask module ============== The central part of this module is the :file:`bitmasks_module.f90` file. It contains diff --git a/docs/source/modules/cis.rst b/docs/source/modules/cis.rst index f7d28ad1..8ef74d41 100644 --- a/docs/source/modules/cis.rst +++ b/docs/source/modules/cis.rst @@ -5,7 +5,7 @@ .. default-role:: option === -CIS +cis === This module contains a CIS program, built by setting the following rules: diff --git a/docs/source/modules/cisd.rst b/docs/source/modules/cisd.rst index f89e71fb..0e697e0b 100644 --- a/docs/source/modules/cisd.rst +++ b/docs/source/modules/cisd.rst @@ -5,7 +5,7 @@ .. default-role:: option ==== -CISD +cisd ==== This module contains a CISD program, built by setting the following rules: diff --git a/docs/source/modules/data_energy_and_density.rst b/docs/source/modules/data_energy_and_density.rst deleted file mode 100644 index 23ef15fa..00000000 --- a/docs/source/modules/data_energy_and_density.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. _data_energy_and_density: - -.. program:: data_energy_and_density - -.. default-role:: option - -============ -Data energy and density -============ - - -This module contains some global variables (such as densities and energies) which are stored in the EZFIO folder in a different place than determinants. This is used in practice to store density matrices which can be obtained from any methods, as long as they are stored in the same MO basis which is used for the calculations. In |RS-DFT| calculations, this can be done to perform damping on the density in order to speed up convergence. - - - -EZFIO parameters ----------------- - -.. option:: data_energy_var - - Variational energy computed with the wave function - - -.. option:: data_energy_proj - - Projected energy computed with the wave function - - -.. option:: data_one_body_alpha_dm_mo - - Alpha one body density matrix on the MO basis computed with the wave function - - -.. option:: data_one_body_beta_dm_mo - - Beta one body density matrix on the MO basis computed with the wave function - - - -Subroutines / functions ------------------------ - - - -.. c:function:: routine - - .. code:: text - - subroutine routine - - File: :file:`save_one_body_dm.irp.f` - - - - - - - -.. c:function:: save_one_body_dm - - .. code:: text - - subroutine save_one_body_dm - - File: :file:`save_one_body_dm.irp.f` - - programs that computes the one body density on the mo basis for alpha and beta electrons from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder data_energy_and_density. - Then, the global variable data_one_body_alpha_dm_mo and data_one_body_beta_dm_mo will automatically read the density in a further calculation. - This can be used to perform dampin on the density in RS-DFT calculation (see the density_for_dft module). - - diff --git a/docs/source/modules/davidson.rst b/docs/source/modules/davidson.rst index 338b26bb..b398a920 100644 --- a/docs/source/modules/davidson.rst +++ b/docs/source/modules/davidson.rst @@ -4,9 +4,9 @@ .. default-role:: option -============== -Davidson_Utils -============== +======== +davidson +======== Abstract module for Davidson's diagonalization. It contains everything required for the Davidson algorithm, dressed or not. If diff --git a/docs/source/modules/davidson_dressed.rst b/docs/source/modules/davidson_dressed.rst index 34eef06a..4697104f 100644 --- a/docs/source/modules/davidson_dressed.rst +++ b/docs/source/modules/davidson_dressed.rst @@ -4,9 +4,9 @@ .. default-role:: option -=============== -DavidsonDressed -=============== +================ +davidson_dressed +================ Davidson with single-column dressing. diff --git a/docs/source/modules/davidson_undressed.rst b/docs/source/modules/davidson_undressed.rst index 309a4145..e785b4ca 100644 --- a/docs/source/modules/davidson_undressed.rst +++ b/docs/source/modules/davidson_undressed.rst @@ -4,9 +4,9 @@ .. default-role:: option -================= -DavidsonUndressed -================= +================== +davidson_undressed +================== Module for main files Davidson's algorithm with no dressing. diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst index 35713a2f..5c2ff86f 100644 --- a/docs/source/modules/determinants.rst +++ b/docs/source/modules/determinants.rst @@ -5,7 +5,7 @@ .. default-role:: option ============ -Determinants +determinants ============ Contains everything for the computation of the Hamiltonian matrix elements in the basis of orthogonal Slater determinants built on a restricted spin-orbitals basis. diff --git a/docs/source/modules/dft_utils_one_body.rst b/docs/source/modules/dft_utils_one_body.rst deleted file mode 100644 index e620ff35..00000000 --- a/docs/source/modules/dft_utils_one_body.rst +++ /dev/null @@ -1,19 +0,0 @@ -.. _dft_utils_one_body: - -.. program:: dft_utils_one_body - -.. default-role:: option - -=========== -RSDFT_Utils -=========== - -Needed Modules -============== -.. Do not edit this section It was auto-generated -.. by the `update_README.py` script. -Documentation -============= -.. Do not edit this section It was auto-generated -.. by the `update_README.py` script. - diff --git a/docs/source/modules/dressing.rst b/docs/source/modules/dressing.rst index 519ab370..a4b3285d 100644 --- a/docs/source/modules/dressing.rst +++ b/docs/source/modules/dressing.rst @@ -8,8 +8,8 @@ dress_zmq ========= -Module to facilitate the construction of modules using dressed Hamiltonians, parallelized -with |ZeroMQ|. +Module to facilitate the construction of modules using dressed +Hamiltonians, parallelized with |ZeroMQ|. diff --git a/docs/source/modules/electrons.rst b/docs/source/modules/electrons.rst index aea56135..97fee97c 100644 --- a/docs/source/modules/electrons.rst +++ b/docs/source/modules/electrons.rst @@ -5,11 +5,11 @@ .. default-role:: option ========= -Electrons +electrons ========= -Describes the electrons. For the moment, only the number of alpha and beta electrons -are provided by this module. +Describes the electrons. For the moment, only the number of alpha +and beta electrons are provided by this module. Assumptions diff --git a/docs/source/modules/ezfio_files.rst b/docs/source/modules/ezfio_files.rst index 472516fd..3562fd0e 100644 --- a/docs/source/modules/ezfio_files.rst +++ b/docs/source/modules/ezfio_files.rst @@ -5,7 +5,7 @@ .. default-role:: option =========== -Ezfio_files +ezfio_files =========== This modules essentially contains the name of the |EZFIO| directory in the diff --git a/docs/source/modules/fci.rst b/docs/source/modules/fci.rst index b67661bd..98b1f8f1 100644 --- a/docs/source/modules/fci.rst +++ b/docs/source/modules/fci.rst @@ -5,7 +5,7 @@ .. default-role:: option === -FCI +fci === Selected Full Configuration Interaction. diff --git a/docs/source/modules/generators_cas.rst b/docs/source/modules/generators_cas.rst index 9d1e75e0..a00b7a01 100644 --- a/docs/source/modules/generators_cas.rst +++ b/docs/source/modules/generators_cas.rst @@ -5,7 +5,7 @@ .. default-role:: option ============== -Generators_CAS +generators_cas ============== Module defining the generator determinants as those belonging to a |CAS|. diff --git a/docs/source/modules/generators_full.rst b/docs/source/modules/generators_full.rst index 71d3db76..90b32a98 100644 --- a/docs/source/modules/generators_full.rst +++ b/docs/source/modules/generators_full.rst @@ -5,7 +5,7 @@ .. default-role:: option =============== -Generators_full +generators_full =============== Module defining the generator determinants as all the determinants of the diff --git a/docs/source/modules/hartree_fock.rst b/docs/source/modules/hartree_fock.rst index 08649720..04aab811 100644 --- a/docs/source/modules/hartree_fock.rst +++ b/docs/source/modules/hartree_fock.rst @@ -5,7 +5,7 @@ .. default-role:: option ============ -Hartree-Fock +hartree_fock ============ diff --git a/docs/source/modules/iterations.rst b/docs/source/modules/iterations.rst index 9c108399..0f192da4 100644 --- a/docs/source/modules/iterations.rst +++ b/docs/source/modules/iterations.rst @@ -4,11 +4,12 @@ .. default-role:: option -============= -IterativeSave -============= +========== +iterations +========== -Module which saves the computed energies for an extrapolation to the |FCI| limit. +Module which saves the computed energies for an extrapolation to +the |FCI| limit. diff --git a/docs/source/modules/kohn_sham.rst b/docs/source/modules/kohn_sham.rst index 003715ff..3967e021 100644 --- a/docs/source/modules/kohn_sham.rst +++ b/docs/source/modules/kohn_sham.rst @@ -4,9 +4,9 @@ .. default-role:: option -============ -Kohn-Sham -============ +========= +kohn_sham +========= The Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the diff --git a/docs/source/modules/kohn_sham_rs.rst b/docs/source/modules/kohn_sham_rs.rst index 666755c8..7eb3ec6e 100644 --- a/docs/source/modules/kohn_sham_rs.rst +++ b/docs/source/modules/kohn_sham_rs.rst @@ -4,9 +4,9 @@ .. default-role:: option -========================= -Range-separated Kohn-Sham -========================= +============ +kohn_sham_rs +============ The Range-separated Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the diff --git a/docs/source/modules/mo_basis.rst b/docs/source/modules/mo_basis.rst index b2524dc8..440060b7 100644 --- a/docs/source/modules/mo_basis.rst +++ b/docs/source/modules/mo_basis.rst @@ -5,7 +5,7 @@ .. default-role:: option ======== -MO_Basis +mo_basis ======== Molecular orbitals are expressed as diff --git a/docs/source/modules/mo_guess.rst b/docs/source/modules/mo_guess.rst index 4aad0e54..db368467 100644 --- a/docs/source/modules/mo_guess.rst +++ b/docs/source/modules/mo_guess.rst @@ -4,9 +4,9 @@ .. default-role:: option -======= -MOGuess -======= +======== +mo_guess +======== Guess for |MOs|. diff --git a/docs/source/modules/mo_two_e_integrals.rst b/docs/source/modules/mo_two_e_integrals.rst index 7fac96ba..5d159068 100644 --- a/docs/source/modules/mo_two_e_integrals.rst +++ b/docs/source/modules/mo_two_e_integrals.rst @@ -4,9 +4,9 @@ .. default-role:: option -================ -Integrals_Bielec -================ +================== +mo_two_e_integrals +================== Here, all two-electron integrals (:math:`1/r_{12}`) are computed. As they have 4 indices and many are zero, they are stored in a map, as defined diff --git a/docs/source/modules/mpi.rst b/docs/source/modules/mpi.rst index 9fd7cecc..d8c7290f 100644 --- a/docs/source/modules/mpi.rst +++ b/docs/source/modules/mpi.rst @@ -5,7 +5,7 @@ .. default-role:: option === -MPI +mpi === Contains all the functions and providers for parallelization with |MPI|. diff --git a/docs/source/modules/mrcc.rst b/docs/source/modules/mrcc.rst deleted file mode 100644 index fdd9db96..00000000 --- a/docs/source/modules/mrcc.rst +++ /dev/null @@ -1,357 +0,0 @@ -.. _mrcc: - -.. program:: mrcc - -.. default-role:: option - -==== -MRCC -==== - -Multi-Reference Coupled Cluster module: - -#. A simple approach to the state-specific MR-CC using the intermediate Hamiltonian formalism - Emmanuel Giner , Grégoire David , Anthony Scemama and Jean Paul Malrieu (2016), in: J. Chem. Phys., 144:6(064101) - -#. Alternative definition of excitation amplitudes in multi-reference state-specific coupled cluster - Yann Garniron , Emmanuel Giner , Jean Paul Malrieu and Anthony Scemama (2017), in: The Journal of Chemical Physics, 146:15(154107) - -Using this module requires to have a selected |CAS-SD| wave function. - - - - - - -EZFIO parameters ----------------- - -.. option:: lambda_type - - Type of amplitudes used. 0 is defined in ref 2, 1 is defined in ref 1. - - Default: 0 - -.. option:: energy - - |MRCC| energy - - -.. option:: energy_pt2 - - Selected |MRCC| energy, with |PT2| contribution to estimate the complete |MRCC| energy - - -.. option:: perturbative_triples - - If `True`, compute the perturbative contribution of the Triples - - Default: true - - -Providers ---------- - - -.. c:var:: dia_hla_ - - .. code:: text - - double precision, allocatable :: hij_cache_ (N_det,Nproc) - double precision, allocatable :: sij_cache_ (N_det,Nproc) - double precision, allocatable :: dia_hla_ (N_states,N_det,Nproc) - double precision, allocatable :: dia_sla_ (N_states,N_det,Nproc) - integer(bit_kind), allocatable :: sorted_mini (N_int,2,N_det,Nproc) - integer, allocatable :: excs_ (0:2,2,2,N_det,Nproc) - integer, allocatable :: idx_buf (N_det,Nproc) - double precision, allocatable :: phases_ (N_det,Nproc) - - File: :file:`mrcc_routines.irp.f` - - temporay arrays for dress_with_alpha_buffer. Avoids reallocation. - - - - -.. c:var:: dia_sla_ - - .. code:: text - - double precision, allocatable :: hij_cache_ (N_det,Nproc) - double precision, allocatable :: sij_cache_ (N_det,Nproc) - double precision, allocatable :: dia_hla_ (N_states,N_det,Nproc) - double precision, allocatable :: dia_sla_ (N_states,N_det,Nproc) - integer(bit_kind), allocatable :: sorted_mini (N_int,2,N_det,Nproc) - integer, allocatable :: excs_ (0:2,2,2,N_det,Nproc) - integer, allocatable :: idx_buf (N_det,Nproc) - double precision, allocatable :: phases_ (N_det,Nproc) - - File: :file:`mrcc_routines.irp.f` - - temporay arrays for dress_with_alpha_buffer. Avoids reallocation. - - - - -.. c:var:: excs_ - - .. code:: text - - double precision, allocatable :: hij_cache_ (N_det,Nproc) - double precision, allocatable :: sij_cache_ (N_det,Nproc) - double precision, allocatable :: dia_hla_ (N_states,N_det,Nproc) - double precision, allocatable :: dia_sla_ (N_states,N_det,Nproc) - integer(bit_kind), allocatable :: sorted_mini (N_int,2,N_det,Nproc) - integer, allocatable :: excs_ (0:2,2,2,N_det,Nproc) - integer, allocatable :: idx_buf (N_det,Nproc) - double precision, allocatable :: phases_ (N_det,Nproc) - - File: :file:`mrcc_routines.irp.f` - - temporay arrays for dress_with_alpha_buffer. Avoids reallocation. - - - - -.. c:var:: hij_cache_ - - .. code:: text - - double precision, allocatable :: hij_cache_ (N_det,Nproc) - double precision, allocatable :: sij_cache_ (N_det,Nproc) - double precision, allocatable :: dia_hla_ (N_states,N_det,Nproc) - double precision, allocatable :: dia_sla_ (N_states,N_det,Nproc) - integer(bit_kind), allocatable :: sorted_mini (N_int,2,N_det,Nproc) - integer, allocatable :: excs_ (0:2,2,2,N_det,Nproc) - integer, allocatable :: idx_buf (N_det,Nproc) - double precision, allocatable :: phases_ (N_det,Nproc) - - File: :file:`mrcc_routines.irp.f` - - temporay arrays for dress_with_alpha_buffer. Avoids reallocation. - - - - -.. c:var:: idx_buf - - .. code:: text - - double precision, allocatable :: hij_cache_ (N_det,Nproc) - double precision, allocatable :: sij_cache_ (N_det,Nproc) - double precision, allocatable :: dia_hla_ (N_states,N_det,Nproc) - double precision, allocatable :: dia_sla_ (N_states,N_det,Nproc) - integer(bit_kind), allocatable :: sorted_mini (N_int,2,N_det,Nproc) - integer, allocatable :: excs_ (0:2,2,2,N_det,Nproc) - integer, allocatable :: idx_buf (N_det,Nproc) - double precision, allocatable :: phases_ (N_det,Nproc) - - File: :file:`mrcc_routines.irp.f` - - temporay arrays for dress_with_alpha_buffer. Avoids reallocation. - - - - -.. c:var:: phases_ - - .. code:: text - - double precision, allocatable :: hij_cache_ (N_det,Nproc) - double precision, allocatable :: sij_cache_ (N_det,Nproc) - double precision, allocatable :: dia_hla_ (N_states,N_det,Nproc) - double precision, allocatable :: dia_sla_ (N_states,N_det,Nproc) - integer(bit_kind), allocatable :: sorted_mini (N_int,2,N_det,Nproc) - integer, allocatable :: excs_ (0:2,2,2,N_det,Nproc) - integer, allocatable :: idx_buf (N_det,Nproc) - double precision, allocatable :: phases_ (N_det,Nproc) - - File: :file:`mrcc_routines.irp.f` - - temporay arrays for dress_with_alpha_buffer. Avoids reallocation. - - - - -.. c:var:: psi_ref_detsorted - - .. code:: text - - integer(bit_kind), allocatable :: psi_ref_detsorted (N_int,2,N_det_ref) - integer, allocatable :: psi_ref_detsorted_idx (N_det_ref) - - File: :file:`mrcc_routines.irp.f` - - - - - - -.. c:var:: psi_ref_detsorted_idx - - .. code:: text - - integer(bit_kind), allocatable :: psi_ref_detsorted (N_int,2,N_det_ref) - integer, allocatable :: psi_ref_detsorted_idx (N_det_ref) - - File: :file:`mrcc_routines.irp.f` - - - - - - -.. c:var:: sij_cache_ - - .. code:: text - - double precision, allocatable :: hij_cache_ (N_det,Nproc) - double precision, allocatable :: sij_cache_ (N_det,Nproc) - double precision, allocatable :: dia_hla_ (N_states,N_det,Nproc) - double precision, allocatable :: dia_sla_ (N_states,N_det,Nproc) - integer(bit_kind), allocatable :: sorted_mini (N_int,2,N_det,Nproc) - integer, allocatable :: excs_ (0:2,2,2,N_det,Nproc) - integer, allocatable :: idx_buf (N_det,Nproc) - double precision, allocatable :: phases_ (N_det,Nproc) - - File: :file:`mrcc_routines.irp.f` - - temporay arrays for dress_with_alpha_buffer. Avoids reallocation. - - - - -.. c:var:: sorted_mini - - .. code:: text - - double precision, allocatable :: hij_cache_ (N_det,Nproc) - double precision, allocatable :: sij_cache_ (N_det,Nproc) - double precision, allocatable :: dia_hla_ (N_states,N_det,Nproc) - double precision, allocatable :: dia_sla_ (N_states,N_det,Nproc) - integer(bit_kind), allocatable :: sorted_mini (N_int,2,N_det,Nproc) - integer, allocatable :: excs_ (0:2,2,2,N_det,Nproc) - integer, allocatable :: idx_buf (N_det,Nproc) - double precision, allocatable :: phases_ (N_det,Nproc) - - File: :file:`mrcc_routines.irp.f` - - temporay arrays for dress_with_alpha_buffer. Avoids reallocation. - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: dress_with_alpha_buffer - - .. code:: text - - subroutine dress_with_alpha_buffer(Nstates, Ndet,Nint,delta_ij_loc, i_gen, minilist, det_minilist, n_minilist, alpha, iproc) - - File: :file:`mrcc_routines.irp.f` - - delta_ij_loc(:,:,1) : dressing column for H delta_ij_loc(:,:,2) : dressing column for S2 i_gen : generator index in psi_det_generators minilist : indices of determinants connected to alpha ( in psi_det ) n_minilist : size of minilist alpha : alpha determinant - - - - - -.. c:function:: dress_with_alpha_buffer_neu - - .. code:: text - - subroutine dress_with_alpha_buffer_neu(Nstates,Ndet,Nint,delta_ij_loc, i_gen, minilist, det_minilist, n_minilist, alpha, iproc) - - File: :file:`mrcc_routines.irp.f` - - delta_ij_loc(:,:,1) : dressing column for H delta_ij_loc(:,:,2) : dressing column for S2 i_gen : generator index in psi_det_generators minilist : indices of determinants connected to alpha ( in psi_det ) n_minilist : size of minilist alpha : alpha determinant - - - - - -.. c:function:: generator_start - - .. code:: text - - subroutine generator_start(i_gen, iproc, interesting) - - File: :file:`mrcc_routines.irp.f` - - - - - - - -.. c:function:: mrcc - - .. code:: text - - subroutine mrcc - - File: :file:`mrcc.irp.f` - - Multi-reference Coulped Cluster - - - - - -.. c:function:: provide_all - - .. code:: text - - subroutine provide_all - - File: :file:`mrcc_slave.irp.f` - - - - - - - -.. c:function:: run_pt2 - - .. code:: text - - subroutine run_pt2(N_st,energy) - - File: :file:`mrcc.irp.f` - - - - - - - -.. c:function:: run_w - - .. code:: text - - subroutine run_w - - File: :file:`mrcc_slave.irp.f` - - - - - - - -.. c:function:: shifted_bk_slave - - .. code:: text - - subroutine shifted_bk_slave - - File: :file:`mrcc_slave.irp.f` - - Helper program to compute the dressing in distributed mode. - - diff --git a/docs/source/modules/mrcc_utils.rst b/docs/source/modules/mrcc_utils.rst deleted file mode 100644 index ddff7eb8..00000000 --- a/docs/source/modules/mrcc_utils.rst +++ /dev/null @@ -1,960 +0,0 @@ -.. _mrcc_utils: - -.. program:: mrcc_utils - -.. default-role:: option - -========== -MRCC_Utils -========== - -Subroutines and providers required for |MRCC|. - - - - - -Providers ---------- - - -.. c:var:: active_excitation_to_determinants_idx - - .. code:: text - - integer, allocatable :: active_excitation_to_determinants_idx (0:N_det_ref+1,n_exc_active_sze) - double precision, allocatable :: active_excitation_to_determinants_val (N_states,N_det_ref+1,n_exc_active_sze) - - File: :file:`amplitudes.irp.f` - - Sparse matrix A containing the matrix to transform the active excitations to determinants : A | \Psi_0 > = | \Psi_SD > - - - - -.. c:var:: active_excitation_to_determinants_val - - .. code:: text - - integer, allocatable :: active_excitation_to_determinants_idx (0:N_det_ref+1,n_exc_active_sze) - double precision, allocatable :: active_excitation_to_determinants_val (N_states,N_det_ref+1,n_exc_active_sze) - - File: :file:`amplitudes.irp.f` - - Sparse matrix A containing the matrix to transform the active excitations to determinants : A | \Psi_0 > = | \Psi_SD > - - - - -.. c:var:: active_hh_idx - - .. code:: text - - integer :: n_exc_active - integer, allocatable :: active_pp_idx (hh_nex) - integer, allocatable :: active_hh_idx (hh_nex) - logical, allocatable :: is_active_exc (hh_nex) - - File: :file:`amplitudes.irp.f` - - is_active_exc : True if the excitation involves at least one active MO - n_exc_active : Number of active excitations : Number of excitations without the inactive ones. - active_hh_idx : - active_pp_idx : - - - - -.. c:var:: active_pp_idx - - .. code:: text - - integer :: n_exc_active - integer, allocatable :: active_pp_idx (hh_nex) - integer, allocatable :: active_hh_idx (hh_nex) - logical, allocatable :: is_active_exc (hh_nex) - - File: :file:`amplitudes.irp.f` - - is_active_exc : True if the excitation involves at least one active MO - n_exc_active : Number of active excitations : Number of excitations without the inactive ones. - active_hh_idx : - active_pp_idx : - - - - -.. c:var:: dij - - .. code:: text - - double precision, allocatable :: dij (N_det_ref,N_det_non_ref,N_states) - - File: :file:`mrcc_utils.irp.f` - - - - - - -.. c:var:: dij_unique - - .. code:: text - - double precision, allocatable :: dij_unique (hh_nex,N_states) - double precision, allocatable :: rho_mrcc (N_det_non_ref,N_states) - - File: :file:`mrcc_utils.irp.f` - - - - - - -.. c:var:: has_a_unique_parent - - .. code:: text - - logical, allocatable :: has_a_unique_parent (N_det_non_ref) - - File: :file:`amplitudes.irp.f` - - True if the determinant in the non-reference has a unique parent - - - - -.. c:var:: hh_exists - - .. code:: text - - integer, allocatable :: hh_exists (4,N_hh_exists) - integer, allocatable :: pp_exists (4,N_pp_exists) - integer, allocatable :: hh_shortcut (0:N_hh_exists + 1) - integer :: hh_nex - - File: :file:`mrcc_utils.irp.f` - - - hh_exists : - pp_exists : - hh_shortcut : - hh_nex : Total number of excitation operators - - - - - -.. c:var:: hh_nex - - .. code:: text - - integer, allocatable :: hh_exists (4,N_hh_exists) - integer, allocatable :: pp_exists (4,N_pp_exists) - integer, allocatable :: hh_shortcut (0:N_hh_exists + 1) - integer :: hh_nex - - File: :file:`mrcc_utils.irp.f` - - - hh_exists : - pp_exists : - hh_shortcut : - hh_nex : Total number of excitation operators - - - - - -.. c:var:: hh_shortcut - - .. code:: text - - integer, allocatable :: hh_exists (4,N_hh_exists) - integer, allocatable :: pp_exists (4,N_pp_exists) - integer, allocatable :: hh_shortcut (0:N_hh_exists + 1) - integer :: hh_nex - - File: :file:`mrcc_utils.irp.f` - - - hh_exists : - pp_exists : - hh_shortcut : - hh_nex : Total number of excitation operators - - - - - -.. c:var:: hij_mrcc - - .. code:: text - - double precision, allocatable :: hij_mrcc (N_det_non_ref,N_det_ref) - - File: :file:`mrcc_utils.irp.f` - - < ref | H | Non-ref > matrix - - - - -.. c:var:: is_active_exc - - .. code:: text - - integer :: n_exc_active - integer, allocatable :: active_pp_idx (hh_nex) - integer, allocatable :: active_hh_idx (hh_nex) - logical, allocatable :: is_active_exc (hh_nex) - - File: :file:`amplitudes.irp.f` - - is_active_exc : True if the excitation involves at least one active MO - n_exc_active : Number of active excitations : Number of excitations without the inactive ones. - active_hh_idx : - active_pp_idx : - - - - -.. c:var:: lambda_mrcc - - .. code:: text - - double precision, allocatable :: lambda_mrcc (N_states,N_det_non_ref) - integer, allocatable :: lambda_mrcc_pt2 (0:psi_det_size) - integer, allocatable :: lambda_mrcc_kept (0:psi_det_size) - - File: :file:`mrcc_utils.irp.f` - - cm/ or perturbative 1/Delta_E(m) - - - - -.. c:var:: lambda_mrcc_kept - - .. code:: text - - double precision, allocatable :: lambda_mrcc (N_states,N_det_non_ref) - integer, allocatable :: lambda_mrcc_pt2 (0:psi_det_size) - integer, allocatable :: lambda_mrcc_kept (0:psi_det_size) - - File: :file:`mrcc_utils.irp.f` - - cm/ or perturbative 1/Delta_E(m) - - - - -.. c:var:: lambda_mrcc_pt2 - - .. code:: text - - double precision, allocatable :: lambda_mrcc (N_states,N_det_non_ref) - integer, allocatable :: lambda_mrcc_pt2 (0:psi_det_size) - integer, allocatable :: lambda_mrcc_kept (0:psi_det_size) - - File: :file:`mrcc_utils.irp.f` - - cm/ or perturbative 1/Delta_E(m) - - - - -.. c:var:: mrcc_ata_ind - - .. code:: text - - integer, allocatable :: mrcc_ata_ind (N_det_ref * n_exc_active_sze) - double precision, allocatable :: mrcc_ata_val (N_states,N_det_ref * n_exc_active_sze) - integer, allocatable :: mrcc_col_shortcut (n_exc_active_sze) - integer, allocatable :: mrcc_n_col (n_exc_active_sze) - - File: :file:`amplitudes.irp.f` - - A is active_excitation_to_determinants in At.A - - - - -.. c:var:: mrcc_ata_val - - .. code:: text - - integer, allocatable :: mrcc_ata_ind (N_det_ref * n_exc_active_sze) - double precision, allocatable :: mrcc_ata_val (N_states,N_det_ref * n_exc_active_sze) - integer, allocatable :: mrcc_col_shortcut (n_exc_active_sze) - integer, allocatable :: mrcc_n_col (n_exc_active_sze) - - File: :file:`amplitudes.irp.f` - - A is active_excitation_to_determinants in At.A - - - - -.. c:var:: mrcc_col_shortcut - - .. code:: text - - integer, allocatable :: mrcc_ata_ind (N_det_ref * n_exc_active_sze) - double precision, allocatable :: mrcc_ata_val (N_states,N_det_ref * n_exc_active_sze) - integer, allocatable :: mrcc_col_shortcut (n_exc_active_sze) - integer, allocatable :: mrcc_n_col (n_exc_active_sze) - - File: :file:`amplitudes.irp.f` - - A is active_excitation_to_determinants in At.A - - - - -.. c:var:: mrcc_n_col - - .. code:: text - - integer, allocatable :: mrcc_ata_ind (N_det_ref * n_exc_active_sze) - double precision, allocatable :: mrcc_ata_val (N_states,N_det_ref * n_exc_active_sze) - integer, allocatable :: mrcc_col_shortcut (n_exc_active_sze) - integer, allocatable :: mrcc_n_col (n_exc_active_sze) - - File: :file:`amplitudes.irp.f` - - A is active_excitation_to_determinants in At.A - - - - -.. c:var:: mrmode - - .. code:: text - - integer :: mrmode - - File: :file:`mrcc_utils.irp.f` - - - - - - -.. c:var:: n_ex_exists - - .. code:: text - - integer :: n_hh_exists - integer :: n_pp_exists - integer :: n_ex_exists - - File: :file:`mrcc_utils.irp.f` - - - - - - -.. c:var:: n_exc_active - - .. code:: text - - integer :: n_exc_active - integer, allocatable :: active_pp_idx (hh_nex) - integer, allocatable :: active_hh_idx (hh_nex) - logical, allocatable :: is_active_exc (hh_nex) - - File: :file:`amplitudes.irp.f` - - is_active_exc : True if the excitation involves at least one active MO - n_exc_active : Number of active excitations : Number of excitations without the inactive ones. - active_hh_idx : - active_pp_idx : - - - - -.. c:var:: n_exc_active_sze - - .. code:: text - - integer :: n_exc_active_sze - - File: :file:`amplitudes.irp.f` - - Dimension of arrays to avoid zero-sized arrays - - - - -.. c:var:: n_hh_exists - - .. code:: text - - integer :: n_hh_exists - integer :: n_pp_exists - integer :: n_ex_exists - - File: :file:`mrcc_utils.irp.f` - - - - - - -.. c:var:: n_pp_exists - - .. code:: text - - integer :: n_hh_exists - integer :: n_pp_exists - integer :: n_ex_exists - - File: :file:`mrcc_utils.irp.f` - - - - - - -.. c:var:: pp_exists - - .. code:: text - - integer, allocatable :: hh_exists (4,N_hh_exists) - integer, allocatable :: pp_exists (4,N_pp_exists) - integer, allocatable :: hh_shortcut (0:N_hh_exists + 1) - integer :: hh_nex - - File: :file:`mrcc_utils.irp.f` - - - hh_exists : - pp_exists : - hh_shortcut : - hh_nex : Total number of excitation operators - - - - - -.. c:var:: psi_non_ref_sorted - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_ref_sorted (N_int,2,N_det_non_ref) - integer, allocatable :: psi_non_ref_sorted_idx (N_det_non_ref) - - File: :file:`mrcc_utils.irp.f` - - - - - - -.. c:var:: psi_non_ref_sorted_idx - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_ref_sorted (N_int,2,N_det_non_ref) - integer, allocatable :: psi_non_ref_sorted_idx (N_det_non_ref) - - File: :file:`mrcc_utils.irp.f` - - - - - - -.. c:var:: psi_ref_lock - - .. code:: text - - integer(omp_lock_kind), allocatable :: psi_ref_lock (psi_det_size) - - File: :file:`mrcc_dress.irp.f` - - Locks on ref determinants to fill delta_ij - - - - -.. c:var:: rho_mrcc - - .. code:: text - - double precision, allocatable :: dij_unique (hh_nex,N_states) - double precision, allocatable :: rho_mrcc (N_det_non_ref,N_states) - - File: :file:`mrcc_utils.irp.f` - - - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: apply_hole_local - - .. code:: text - - subroutine apply_hole_local(det, exc, res, ok, Nint) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: apply_particle_local - - .. code:: text - - subroutine apply_particle_local(det, exc, res, ok, Nint) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: dec_exc - - .. code:: text - - subroutine dec_exc(exc, h1, h2, p1, p2) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: exc_inf - - .. code:: text - - logical function exc_inf(exc1, exc2) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: exccmp - - .. code:: text - - integer function excCmp(exc1, exc2) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: exceq - - .. code:: text - - logical function excEq(exc1, exc2) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: find_triples_and_quadruples - - .. code:: text - - subroutine find_triples_and_quadruples(i_generator,n_selected,det_buffer,Nint,tq,N_tq,miniList,N_miniList) - - File: :file:`mrcc_dress.irp.f` - - - - - - - -.. c:function:: find_triples_and_quadruples_micro - - .. code:: text - - subroutine find_triples_and_quadruples_micro(i_generator,n_selected,det_buffer,Nint,tq,N_tq,microlist,ptr_microlist,N_microlist,key_mask) - - File: :file:`mrcc_dress.irp.f` - - - - - - - -.. c:function:: get_dij - - .. code:: text - - double precision function get_dij(det1, det2, s, Nint) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: get_dij_index - - .. code:: text - - double precision function get_dij_index(II, i, s, Nint) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: h_apply_mrcc - - .. code:: text - - subroutine H_apply_mrcc(delta_ij_, Nstates, Ndet_non_ref, Ndet_ref) - - File: :file:`h_apply.irp.f_shell_38` - - 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. - - - - - -.. c:function:: h_apply_mrcc_diexc - - .. code:: text - - subroutine H_apply_mrcc_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Nstates, Ndet_non_ref, Ndet_ref ) - - File: :file:`h_apply.irp.f_shell_38` - - - - - - - -.. c:function:: h_apply_mrcc_diexcorg - - .. code:: text - - subroutine H_apply_mrcc_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Nstates, Ndet_non_ref, Ndet_ref ) - - File: :file:`h_apply.irp.f_shell_38` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrcc_diexcp - - .. code:: text - - subroutine H_apply_mrcc_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Nstates, Ndet_non_ref, Ndet_ref ) - - File: :file:`h_apply.irp.f_shell_38` - - - - - - - -.. c:function:: h_apply_mrcc_monoexc - - .. code:: text - - subroutine H_apply_mrcc_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in , delta_ij_, Nstates, Ndet_non_ref, Ndet_ref ) - - File: :file:`h_apply.irp.f_shell_38` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrcc_pt2 - - .. code:: text - - subroutine H_apply_mrcc_PT2(pt2, norm_pert, H_pert_diag, N_st) - - File: :file:`h_apply.irp.f_shell_38` - - 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. - - - - - -.. c:function:: h_apply_mrcc_pt2_diexc - - .. code:: text - - subroutine H_apply_mrcc_PT2_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ,sum_e_2_pert_in,sum_norm_pert_in,sum_H_pert_diag_in,N_st,Nint ) - - File: :file:`h_apply.irp.f_shell_38` - - - - - - - -.. c:function:: h_apply_mrcc_pt2_diexcorg - - .. code:: text - - subroutine H_apply_mrcc_PT2_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ,sum_e_2_pert_in,sum_norm_pert_in,sum_H_pert_diag_in,N_st,Nint ) - - File: :file:`h_apply.irp.f_shell_38` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrcc_pt2_diexcp - - .. code:: text - - subroutine H_apply_mrcc_PT2_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in ,sum_e_2_pert_in,sum_norm_pert_in,sum_H_pert_diag_in,N_st,Nint ) - - File: :file:`h_apply.irp.f_shell_38` - - - - - - - -.. c:function:: h_apply_mrcc_pt2_monoexc - - .. code:: text - - subroutine H_apply_mrcc_PT2_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in ,sum_e_2_pert_in,sum_norm_pert_in,sum_H_pert_diag_in,N_st,Nint ) - - File: :file:`h_apply.irp.f_shell_38` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrcepa_pt2 - - .. code:: text - - subroutine H_apply_mrcepa_PT2(pt2, norm_pert, H_pert_diag, N_st) - - File: :file:`h_apply.irp.f_shell_38` - - 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. - - - - - -.. c:function:: h_apply_mrcepa_pt2_diexc - - .. code:: text - - subroutine H_apply_mrcepa_PT2_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ,sum_e_2_pert_in,sum_norm_pert_in,sum_H_pert_diag_in,N_st,Nint ) - - File: :file:`h_apply.irp.f_shell_38` - - - - - - - -.. c:function:: h_apply_mrcepa_pt2_diexcorg - - .. code:: text - - subroutine H_apply_mrcepa_PT2_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ,sum_e_2_pert_in,sum_norm_pert_in,sum_H_pert_diag_in,N_st,Nint ) - - File: :file:`h_apply.irp.f_shell_38` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrcepa_pt2_diexcp - - .. code:: text - - subroutine H_apply_mrcepa_PT2_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in ,sum_e_2_pert_in,sum_norm_pert_in,sum_H_pert_diag_in,N_st,Nint ) - - File: :file:`h_apply.irp.f_shell_38` - - - - - - - -.. c:function:: h_apply_mrcepa_pt2_monoexc - - .. code:: text - - subroutine H_apply_mrcepa_PT2_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in ,sum_e_2_pert_in,sum_norm_pert_in,sum_H_pert_diag_in,N_st,Nint ) - - File: :file:`h_apply.irp.f_shell_38` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: is_generable - - .. code:: text - - logical function is_generable(det1, det2, Nint) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: mrcc_dress - - .. code:: text - - subroutine mrcc_dress(delta_ij_, Nstates, Ndet_non_ref, Ndet_ref,i_generator,n_selected,det_buffer,Nint,iproc,key_mask) - - File: :file:`mrcc_dress.irp.f` - - - - - - - -.. c:function:: searchdet - - .. code:: text - - integer function searchDet(dets, det, n, Nint) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: searchexc - - .. code:: text - - integer function searchExc(excs, exc, n) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: sort_det - - .. code:: text - - subroutine sort_det(key, idx, N_key, Nint) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: sort_exc - - .. code:: text - - subroutine sort_exc(key, N_key) - - File: :file:`mrcc_utils.irp.f` - - - - - - - -.. c:function:: tamise_exc - - .. code:: text - - subroutine tamise_exc(key, no, n, N_key) - - File: :file:`mrcc_utils.irp.f` - - Uncodumented : TODO - - - - - -.. c:function:: unsortedsearchdet - - .. code:: text - - integer function unsortedSearchDet(dets, det, n, Nint) - - File: :file:`mrcc_utils.irp.f` - - - - diff --git a/docs/source/modules/mrpt_utils.rst b/docs/source/modules/mrpt_utils.rst deleted file mode 100644 index 7790a356..00000000 --- a/docs/source/modules/mrpt_utils.rst +++ /dev/null @@ -1,1890 +0,0 @@ -.. _mrpt_utils: - -.. program:: mrpt_utils - -.. default-role:: option - -========== -MRPT_Utils -========== - -Subroutines and providers required for |MRPT|. - - - -EZFIO parameters ----------------- - -.. option:: do_third_order_1h1p - - If `True`, compute the third order contribution for the 1h1p - - Default: True - - -Providers ---------- - - -.. c:var:: apply_exc_to_psi - - .. code:: text - - subroutine apply_exc_to_psi(orb,hole_particle,spin_exc, & - norm_out,psi_in_out,psi_in_out_coef, ndet,dim_psi_in,dim_psi_coef,N_states_in) - - File: :file:`excitations_cas.irp.f` - - apply a contracted excitation to psi_in_out whose coefficients are psi_in_out_coef hole_particle = 1 ===> creation of an electron in psi_in_out = -1 ===> annhilation of an electron in psi_in_out orb ===> is the index of orbital where you want wether to create or annhilate an electron spin_exc ===> is the spin of the electron (1 == alpha) (2 == beta) the wave function gets out normalized to unity - norm_out is the sum of the squared of the coefficients on which the excitation has been possible - - - - -.. c:var:: ci_dressed_pt2_new_eigenvectors - - .. code:: text - - double precision, allocatable :: ci_electronic_dressed_pt2_new_energy (N_states) - double precision, allocatable :: ci_dressed_pt2_new_eigenvectors (N_det,N_states) - double precision, allocatable :: ci_dressed_pt2_new_eigenvectors_s2 (N_states) - - File: :file:`mrpt_utils.irp.f` - - Eigenvectors/values of the CI matrix - - - - -.. c:var:: ci_dressed_pt2_new_eigenvectors_s2 - - .. code:: text - - double precision, allocatable :: ci_electronic_dressed_pt2_new_energy (N_states) - double precision, allocatable :: ci_dressed_pt2_new_eigenvectors (N_det,N_states) - double precision, allocatable :: ci_dressed_pt2_new_eigenvectors_s2 (N_states) - - File: :file:`mrpt_utils.irp.f` - - Eigenvectors/values of the CI matrix - - - - -.. c:var:: ci_dressed_pt2_new_energy - - .. code:: text - - double precision, allocatable :: ci_dressed_pt2_new_energy (N_states) - - File: :file:`mrpt_utils.irp.f` - - N_states lowest eigenvalues of the CI matrix - - - - -.. c:var:: ci_electronic_dressed_pt2_new_energy - - .. code:: text - - double precision, allocatable :: ci_electronic_dressed_pt2_new_energy (N_states) - double precision, allocatable :: ci_dressed_pt2_new_eigenvectors (N_det,N_states) - double precision, allocatable :: ci_dressed_pt2_new_eigenvectors_s2 (N_states) - - File: :file:`mrpt_utils.irp.f` - - Eigenvectors/values of the CI matrix - - - - -.. c:var:: corr_e_from_1h1p - - .. code:: text - - double precision, allocatable :: one_anhil_one_creat_inact_virt_bis (n_inact_orb,n_virt_orb,N_det,N_States) - double precision, allocatable :: corr_e_from_1h1p (N_States) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: delta_ij_mrpt - - .. code:: text - - double precision, allocatable :: delta_ij_mrpt (N_det,N_det,N_states) - double precision, allocatable :: second_order_pt_new (N_states) - double precision, allocatable :: second_order_pt_new_1h (N_states) - double precision, allocatable :: second_order_pt_new_1p (N_states) - double precision, allocatable :: second_order_pt_new_1h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h (N_states) - double precision, allocatable :: second_order_pt_new_2p (N_states) - double precision, allocatable :: second_order_pt_new_1h2p (N_states) - double precision, allocatable :: second_order_pt_new_2h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h2p (N_states) - - File: :file:`mrpt_utils.irp.f` - - Dressing matrix in N_det basis - - - - -.. c:var:: energy_cas_dyall - - .. code:: text - - double precision, allocatable :: energy_cas_dyall (N_states) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: energy_cas_dyall_no_exchange - - .. code:: text - - double precision, allocatable :: energy_cas_dyall_no_exchange (N_states) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: fock_core_inactive - - .. code:: text - - double precision, allocatable :: fock_core_inactive (mo_tot_num) - - File: :file:`fock_like_operators.irp.f` - - inactive part of the fock operator with contributions only from the inactive - - - - -.. c:var:: fock_core_inactive_from_act - - .. code:: text - - double precision, allocatable :: fock_core_inactive_from_act (mo_tot_num,2,N_states) - - File: :file:`fock_like_operators.irp.f` - - inactive part of the fock operator with contributions only from the active - - - - -.. c:var:: fock_core_inactive_total - - .. code:: text - - double precision, allocatable :: fock_core_inactive_total (mo_tot_num,2,N_states) - double precision, allocatable :: fock_core_inactive_total_spin_trace (mo_tot_num,N_states) - - File: :file:`fock_like_operators.irp.f` - - inactive part of the fock operator - - - - -.. c:var:: fock_core_inactive_total_spin_trace - - .. code:: text - - double precision, allocatable :: fock_core_inactive_total (mo_tot_num,2,N_states) - double precision, allocatable :: fock_core_inactive_total_spin_trace (mo_tot_num,N_states) - - File: :file:`fock_like_operators.irp.f` - - inactive part of the fock operator - - - - -.. c:var:: fock_operator_active_from_core_inact - - .. code:: text - - double precision, allocatable :: fock_operator_active_from_core_inact (mo_tot_num,mo_tot_num) - - File: :file:`fock_like_operators.irp.f` - - active part of the fock operator with contributions only from the inactive - - - - -.. c:var:: fock_virt_from_act - - .. code:: text - - double precision, allocatable :: fock_virt_from_act (mo_tot_num,2,N_states) - - File: :file:`fock_like_operators.irp.f` - - virtual part of the fock operator with contributions only from the active - - - - -.. c:var:: fock_virt_from_core_inact - - .. code:: text - - double precision, allocatable :: fock_virt_from_core_inact (mo_tot_num) - - File: :file:`fock_like_operators.irp.f` - - fock operator for the virtuals that comes from the doubly occupied orbitals - - - - -.. c:var:: fock_virt_total - - .. code:: text - - double precision, allocatable :: fock_virt_total (mo_tot_num,2,N_states) - double precision, allocatable :: fock_virt_total_spin_trace (mo_tot_num,N_states) - - File: :file:`fock_like_operators.irp.f` - - inactive part of the fock operator - - - - -.. c:var:: fock_virt_total_spin_trace - - .. code:: text - - double precision, allocatable :: fock_virt_total (mo_tot_num,2,N_states) - double precision, allocatable :: fock_virt_total_spin_trace (mo_tot_num,N_states) - - File: :file:`fock_like_operators.irp.f` - - inactive part of the fock operator - - - - -.. c:var:: gen_det_ref_idx - - .. code:: text - - integer(bit_kind), allocatable :: gen_det_ref_sorted (N_int,2,N_det_generators,2) - integer, allocatable :: gen_det_ref_shortcut (0:N_det_generators,2) - integer, allocatable :: gen_det_ref_version (N_int,N_det_generators,2) - integer, allocatable :: gen_det_ref_idx (N_det_generators,2) - - File: :file:`mrpt_dress.irp.f` - - - - - - -.. c:var:: gen_det_ref_shortcut - - .. code:: text - - integer(bit_kind), allocatable :: gen_det_ref_sorted (N_int,2,N_det_generators,2) - integer, allocatable :: gen_det_ref_shortcut (0:N_det_generators,2) - integer, allocatable :: gen_det_ref_version (N_int,N_det_generators,2) - integer, allocatable :: gen_det_ref_idx (N_det_generators,2) - - File: :file:`mrpt_dress.irp.f` - - - - - - -.. c:var:: gen_det_ref_sorted - - .. code:: text - - integer(bit_kind), allocatable :: gen_det_ref_sorted (N_int,2,N_det_generators,2) - integer, allocatable :: gen_det_ref_shortcut (0:N_det_generators,2) - integer, allocatable :: gen_det_ref_version (N_int,N_det_generators,2) - integer, allocatable :: gen_det_ref_idx (N_det_generators,2) - - File: :file:`mrpt_dress.irp.f` - - - - - - -.. c:var:: gen_det_ref_version - - .. code:: text - - integer(bit_kind), allocatable :: gen_det_ref_sorted (N_int,2,N_det_generators,2) - integer, allocatable :: gen_det_ref_shortcut (0:N_det_generators,2) - integer, allocatable :: gen_det_ref_version (N_int,N_det_generators,2) - integer, allocatable :: gen_det_ref_idx (N_det_generators,2) - - File: :file:`mrpt_dress.irp.f` - - - - - - -.. c:var:: give_holes_and_particles_in_active_space - - .. code:: text - - subroutine give_holes_and_particles_in_active_space(det_1,det_2,n_holes_spin,n_particles_spin,n_holes,n_particles,& - holes_active_list,particles_active_list) - - File: :file:`psi_active_prov.irp.f` - - returns the holes and particles operators WITHIN THE ACTIVE SPACE that connect det_1 and det_2. By definition, the holes/particles are such that one starts from det_1 and goes to det_2 - n_holes is the total number of holes n_particles is the total number of particles n_holes_spin is the number of number of holes per spin (1=alpha, 2=beta) n_particles_spin is the number of number of particles per spin (1=alpha, 2=beta) holes_active_list is the index of the holes per spin, that ranges from 1 to n_act_orb particles_active_list is the index of the particles per spin, that ranges from 1 to n_act_orb - - - - -.. c:var:: hmatrix_dressed_pt2_new - - .. code:: text - - double precision, allocatable :: hmatrix_dressed_pt2_new (N_det,N_det,N_states) - - File: :file:`mrpt_utils.irp.f` - - - - - - -.. c:var:: hmatrix_dressed_pt2_new_symmetrized - - .. code:: text - - double precision, allocatable :: hmatrix_dressed_pt2_new_symmetrized (N_det,N_det,N_states) - - File: :file:`mrpt_utils.irp.f` - - - - - - -.. c:var:: one_anhil - - .. code:: text - - double precision, allocatable :: one_anhil (n_act_orb,2,N_states) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: one_anhil_inact - - .. code:: text - - double precision, allocatable :: one_anhil_inact (n_inact_orb,n_act_orb,N_States) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: one_anhil_one_creat - - .. code:: text - - double precision, allocatable :: one_anhil_one_creat (n_act_orb,n_act_orb,2,2,N_States) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: one_anhil_one_creat_inact_virt - - .. code:: text - - double precision, allocatable :: one_anhil_one_creat_inact_virt (n_inact_orb,n_virt_orb,N_States) - double precision, allocatable :: one_anhil_one_creat_inact_virt_norm (n_inact_orb,n_virt_orb,N_States,2) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: one_anhil_one_creat_inact_virt_bis - - .. code:: text - - double precision, allocatable :: one_anhil_one_creat_inact_virt_bis (n_inact_orb,n_virt_orb,N_det,N_States) - double precision, allocatable :: corr_e_from_1h1p (N_States) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: one_anhil_one_creat_inact_virt_norm - - .. code:: text - - double precision, allocatable :: one_anhil_one_creat_inact_virt (n_inact_orb,n_virt_orb,N_States) - double precision, allocatable :: one_anhil_one_creat_inact_virt_norm (n_inact_orb,n_virt_orb,N_States,2) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: one_creat - - .. code:: text - - double precision, allocatable :: one_creat (n_act_orb,2,N_states) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: one_creat_virt - - .. code:: text - - double precision, allocatable :: one_creat_virt (n_act_orb,n_virt_orb,N_States) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: psi_active - - .. code:: text - - integer(bit_kind), allocatable :: psi_active (N_int,2,psi_det_size) - - File: :file:`psi_active_prov.irp.f` - - active part of psi - - - - -.. c:var:: psi_ref_bis_lock - - .. code:: text - - integer(omp_lock_kind), allocatable :: psi_ref_bis_lock (psi_det_size) - - File: :file:`mrpt_dress.irp.f` - - Locks on ref determinants to fill delta_ij - - - - -.. c:var:: second_order_pt_new - - .. code:: text - - double precision, allocatable :: delta_ij_mrpt (N_det,N_det,N_states) - double precision, allocatable :: second_order_pt_new (N_states) - double precision, allocatable :: second_order_pt_new_1h (N_states) - double precision, allocatable :: second_order_pt_new_1p (N_states) - double precision, allocatable :: second_order_pt_new_1h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h (N_states) - double precision, allocatable :: second_order_pt_new_2p (N_states) - double precision, allocatable :: second_order_pt_new_1h2p (N_states) - double precision, allocatable :: second_order_pt_new_2h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h2p (N_states) - - File: :file:`mrpt_utils.irp.f` - - Dressing matrix in N_det basis - - - - -.. c:var:: second_order_pt_new_1h - - .. code:: text - - double precision, allocatable :: delta_ij_mrpt (N_det,N_det,N_states) - double precision, allocatable :: second_order_pt_new (N_states) - double precision, allocatable :: second_order_pt_new_1h (N_states) - double precision, allocatable :: second_order_pt_new_1p (N_states) - double precision, allocatable :: second_order_pt_new_1h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h (N_states) - double precision, allocatable :: second_order_pt_new_2p (N_states) - double precision, allocatable :: second_order_pt_new_1h2p (N_states) - double precision, allocatable :: second_order_pt_new_2h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h2p (N_states) - - File: :file:`mrpt_utils.irp.f` - - Dressing matrix in N_det basis - - - - -.. c:var:: second_order_pt_new_1h1p - - .. code:: text - - double precision, allocatable :: delta_ij_mrpt (N_det,N_det,N_states) - double precision, allocatable :: second_order_pt_new (N_states) - double precision, allocatable :: second_order_pt_new_1h (N_states) - double precision, allocatable :: second_order_pt_new_1p (N_states) - double precision, allocatable :: second_order_pt_new_1h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h (N_states) - double precision, allocatable :: second_order_pt_new_2p (N_states) - double precision, allocatable :: second_order_pt_new_1h2p (N_states) - double precision, allocatable :: second_order_pt_new_2h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h2p (N_states) - - File: :file:`mrpt_utils.irp.f` - - Dressing matrix in N_det basis - - - - -.. c:var:: second_order_pt_new_1h2p - - .. code:: text - - double precision, allocatable :: delta_ij_mrpt (N_det,N_det,N_states) - double precision, allocatable :: second_order_pt_new (N_states) - double precision, allocatable :: second_order_pt_new_1h (N_states) - double precision, allocatable :: second_order_pt_new_1p (N_states) - double precision, allocatable :: second_order_pt_new_1h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h (N_states) - double precision, allocatable :: second_order_pt_new_2p (N_states) - double precision, allocatable :: second_order_pt_new_1h2p (N_states) - double precision, allocatable :: second_order_pt_new_2h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h2p (N_states) - - File: :file:`mrpt_utils.irp.f` - - Dressing matrix in N_det basis - - - - -.. c:var:: second_order_pt_new_1p - - .. code:: text - - double precision, allocatable :: delta_ij_mrpt (N_det,N_det,N_states) - double precision, allocatable :: second_order_pt_new (N_states) - double precision, allocatable :: second_order_pt_new_1h (N_states) - double precision, allocatable :: second_order_pt_new_1p (N_states) - double precision, allocatable :: second_order_pt_new_1h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h (N_states) - double precision, allocatable :: second_order_pt_new_2p (N_states) - double precision, allocatable :: second_order_pt_new_1h2p (N_states) - double precision, allocatable :: second_order_pt_new_2h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h2p (N_states) - - File: :file:`mrpt_utils.irp.f` - - Dressing matrix in N_det basis - - - - -.. c:var:: second_order_pt_new_2h - - .. code:: text - - double precision, allocatable :: delta_ij_mrpt (N_det,N_det,N_states) - double precision, allocatable :: second_order_pt_new (N_states) - double precision, allocatable :: second_order_pt_new_1h (N_states) - double precision, allocatable :: second_order_pt_new_1p (N_states) - double precision, allocatable :: second_order_pt_new_1h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h (N_states) - double precision, allocatable :: second_order_pt_new_2p (N_states) - double precision, allocatable :: second_order_pt_new_1h2p (N_states) - double precision, allocatable :: second_order_pt_new_2h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h2p (N_states) - - File: :file:`mrpt_utils.irp.f` - - Dressing matrix in N_det basis - - - - -.. c:var:: second_order_pt_new_2h1p - - .. code:: text - - double precision, allocatable :: delta_ij_mrpt (N_det,N_det,N_states) - double precision, allocatable :: second_order_pt_new (N_states) - double precision, allocatable :: second_order_pt_new_1h (N_states) - double precision, allocatable :: second_order_pt_new_1p (N_states) - double precision, allocatable :: second_order_pt_new_1h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h (N_states) - double precision, allocatable :: second_order_pt_new_2p (N_states) - double precision, allocatable :: second_order_pt_new_1h2p (N_states) - double precision, allocatable :: second_order_pt_new_2h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h2p (N_states) - - File: :file:`mrpt_utils.irp.f` - - Dressing matrix in N_det basis - - - - -.. c:var:: second_order_pt_new_2h2p - - .. code:: text - - double precision, allocatable :: delta_ij_mrpt (N_det,N_det,N_states) - double precision, allocatable :: second_order_pt_new (N_states) - double precision, allocatable :: second_order_pt_new_1h (N_states) - double precision, allocatable :: second_order_pt_new_1p (N_states) - double precision, allocatable :: second_order_pt_new_1h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h (N_states) - double precision, allocatable :: second_order_pt_new_2p (N_states) - double precision, allocatable :: second_order_pt_new_1h2p (N_states) - double precision, allocatable :: second_order_pt_new_2h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h2p (N_states) - - File: :file:`mrpt_utils.irp.f` - - Dressing matrix in N_det basis - - - - -.. c:var:: second_order_pt_new_2p - - .. code:: text - - double precision, allocatable :: delta_ij_mrpt (N_det,N_det,N_states) - double precision, allocatable :: second_order_pt_new (N_states) - double precision, allocatable :: second_order_pt_new_1h (N_states) - double precision, allocatable :: second_order_pt_new_1p (N_states) - double precision, allocatable :: second_order_pt_new_1h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h (N_states) - double precision, allocatable :: second_order_pt_new_2p (N_states) - double precision, allocatable :: second_order_pt_new_1h2p (N_states) - double precision, allocatable :: second_order_pt_new_2h1p (N_states) - double precision, allocatable :: second_order_pt_new_2h2p (N_states) - - File: :file:`mrpt_utils.irp.f` - - Dressing matrix in N_det basis - - - - -.. c:var:: three_anhil - - .. code:: text - - double precision, allocatable :: three_anhil (n_act_orb,n_act_orb,n_act_orb,2,2,2,N_states) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: three_creat - - .. code:: text - - double precision, allocatable :: three_creat (n_act_orb,n_act_orb,n_act_orb,2,2,2,N_states) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: two_anhil - - .. code:: text - - double precision, allocatable :: two_anhil (n_act_orb,n_act_orb,2,2,N_states) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: two_anhil_one_creat - - .. code:: text - - double precision, allocatable :: two_anhil_one_creat (n_act_orb,n_act_orb,n_act_orb,2,2,2,N_states) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: two_creat - - .. code:: text - - double precision, allocatable :: two_creat (n_act_orb,n_act_orb,2,2,N_states) - - File: :file:`energies_cas.irp.f` - - - - - - -.. c:var:: two_creat_one_anhil - - .. code:: text - - double precision, allocatable :: two_creat_one_anhil (n_act_orb,n_act_orb,n_act_orb,2,2,2,N_states) - - File: :file:`energies_cas.irp.f` - - - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: contrib_1h2p_dm_based - - .. code:: text - - subroutine contrib_1h2p_dm_based(accu) - - File: :file:`density_matrix_based.irp.f` - - - - - - - -.. c:function:: contrib_2h1p_dm_based - - .. code:: text - - subroutine contrib_2h1p_dm_based(accu) - - File: :file:`density_matrix_based.irp.f` - - - - - - - -.. c:function:: coulomb_value_no_check - - .. code:: text - - double precision function coulomb_value_no_check(det_in,Nint) - - File: :file:`excitations_cas.irp.f` - - Computes - - - - - -.. c:function:: diag_h_mat_elem_no_elec_check - - .. code:: text - - double precision function diag_H_mat_elem_no_elec_check(det_in,Nint) - - File: :file:`excitations_cas.irp.f` - - Computes - - - - - -.. c:function:: diag_h_mat_elem_no_elec_check_no_exchange - - .. code:: text - - double precision function diag_H_mat_elem_no_elec_check_no_exchange(det_in,Nint) - - File: :file:`excitations_cas.irp.f` - - Computes - - - - - -.. c:function:: find_connections_previous - - .. code:: text - - subroutine find_connections_previous(i_generator,n_selected,det_buffer,Nint,tq,N_tq,miniList,N_miniList) - - File: :file:`mrpt_dress.irp.f` - - - - - - - -.. c:function:: get_delta_e_dyall - - .. code:: text - - subroutine get_delta_e_dyall(det_1,det_2,delta_e_final) - - File: :file:`psi_active_prov.irp.f` - - routine that returns the delta_e with the Moller Plesset and Dyall operators - with det_1 being a determinant from the cas, and det_2 being a perturber - Delta_e(det_1,det_2) = sum (hole) epsilon(hole) + sum(part) espilon(part) + delta_e(act) - where hole is necessary in the inactive, part necessary in the virtuals - and delta_e(act) is obtained from the contracted application of the excitation - operator in the active space that lead from det_1 to det_2 - - - - - -.. c:function:: get_delta_e_dyall_general_mp - - .. code:: text - - subroutine get_delta_e_dyall_general_mp(det_1,det_2,delta_e_final) - - File: :file:`psi_active_prov.irp.f` - - routine that returns the delta_e with the Moller Plesset and Dyall operators - with det_1 being a determinant from the cas, and det_2 being a perturber - Delta_e(det_1,det_2) = sum (hole) epsilon(hole) + sum(part) espilon(part) + delta_e(act) - where hole is necessary in the inactive, part necessary in the virtuals - and delta_e(act) is obtained as the sum of energies of excitations a la MP - - - - - - -.. c:function:: give_1h1p_contrib - - .. code:: text - - subroutine give_1h1p_contrib(matrix_1h1p) - - File: :file:`new_way.irp.f` - - - - - - - -.. c:function:: give_1h1p_only_doubles_spin_cross - - .. code:: text - - subroutine give_1h1p_only_doubles_spin_cross(matrix_1h1p) - - File: :file:`new_way.irp.f` - - - - - - - -.. c:function:: give_1h1p_sec_order_singles_contrib - - .. code:: text - - subroutine give_1h1p_sec_order_singles_contrib(matrix_1h1p) - - File: :file:`new_way.irp.f` - - - - - - - -.. c:function:: give_1h2p_contrib - - .. code:: text - - subroutine give_1h2p_contrib(matrix_1h2p) - - File: :file:`new_way.irp.f` - - - - - - - -.. c:function:: give_1h2p_contrib_sec_order - - .. code:: text - - subroutine give_1h2p_contrib_sec_order(matrix_1h2p) - - File: :file:`new_way_second_order_coef.irp.f` - - - - - - - -.. c:function:: give_1h2p_new - - .. code:: text - - subroutine give_1h2p_new(matrix_1h2p) - - File: :file:`second_order_new.irp.f` - - - - - - - -.. c:function:: give_1p_sec_order_singles_contrib - - .. code:: text - - subroutine give_1p_sec_order_singles_contrib(matrix_1p) - - File: :file:`new_way.irp.f` - - - - - - - -.. c:function:: give_2h1p_contrib - - .. code:: text - - subroutine give_2h1p_contrib(matrix_2h1p) - - File: :file:`new_way.irp.f` - - - - - - - -.. c:function:: give_2h1p_contrib_sec_order - - .. code:: text - - subroutine give_2h1p_contrib_sec_order(matrix_2h1p) - - File: :file:`new_way_second_order_coef.irp.f` - - - - - - - -.. c:function:: give_2h1p_new - - .. code:: text - - subroutine give_2h1p_new(matrix_2h1p) - - File: :file:`second_order_new.irp.f` - - - - - - - -.. c:function:: give_2h2p - - .. code:: text - - subroutine give_2h2p(contrib_2h2p) - - File: :file:`give_2h2p.irp.f` - - - - - - - -.. c:function:: give_2p_new - - .. code:: text - - subroutine give_2p_new(matrix_2p) - - File: :file:`second_order_new_2p.irp.f` - - - - - - - -.. c:function:: give_active_part_determinant - - .. code:: text - - subroutine give_active_part_determinant(det_in,det_out) - - File: :file:`utils_bitmask.irp.f` - - - - - - - -.. c:function:: give_core_inactive_part_determinant - - .. code:: text - - subroutine give_core_inactive_part_determinant(det_in,det_out) - - File: :file:`utils_bitmask.irp.f` - - - - - - - -.. c:function:: give_holes_in_inactive_space - - .. code:: text - - subroutine give_holes_in_inactive_space(det_1,n_holes_spin,n_holes,holes_list) - - File: :file:`psi_active_prov.irp.f` - - returns the holes operators WITHIN THE INACTIVE SPACE that has lead to det_1. - n_holes is the total number of holes n_holes_spin is the number of number of holes per spin (1=alpha, 2=beta) holes_inactive_list is the index of the holes per spin, that ranges from 1 to mo_tot_num - - - - - -.. c:function:: give_particles_in_virt_space - - .. code:: text - - subroutine give_particles_in_virt_space(det_1,n_particles_spin,n_particles,particles_list) - - File: :file:`psi_active_prov.irp.f` - - returns the holes operators WITHIN THE VIRTUAL SPACE that has lead to det_1. - n_particles is the total number of particles n_particles_spin is the number of number of particles per spin (1=alpha, 2=beta) particles_inactive_list is the index of the particles per spin, that ranges from 1 to mo_tot_num - - - - - -.. c:function:: give_singles_and_partial_doubles_1h1p_contrib - - .. code:: text - - subroutine give_singles_and_partial_doubles_1h1p_contrib(matrix_1h1p,e_corr_from_1h1p_singles) - - File: :file:`energies_cas.irp.f` - - - - - - - -.. c:function:: give_virt_part_determinant - - .. code:: text - - subroutine give_virt_part_determinant(det_in,det_out) - - File: :file:`utils_bitmask.irp.f` - - - - - - - -.. c:function:: h_apply_mrpt - - .. code:: text - - subroutine H_apply_mrpt(delta_ij_, Ndet) - - File: :file:`h_apply.irp.f_shell_186` - - 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. - - - - - -.. c:function:: h_apply_mrpt_1h - - .. code:: text - - subroutine H_apply_mrpt_1h(delta_ij_, Ndet) - - File: :file:`h_apply.irp.f_shell_186` - - 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. - - - - - -.. c:function:: h_apply_mrpt_1h1p - - .. code:: text - - subroutine H_apply_mrpt_1h1p(delta_ij_, Ndet) - - File: :file:`h_apply.irp.f_shell_186` - - 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. - - - - - -.. c:function:: h_apply_mrpt_1h1p_diexc - - .. code:: text - - subroutine H_apply_mrpt_1h1p_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_1h1p_diexcorg - - .. code:: text - - subroutine H_apply_mrpt_1h1p_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_1h1p_diexcp - - .. code:: text - - subroutine H_apply_mrpt_1h1p_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_1h1p_monoexc - - .. code:: text - - subroutine H_apply_mrpt_1h1p_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_1h2p - - .. code:: text - - subroutine H_apply_mrpt_1h2p(delta_ij_, Ndet) - - File: :file:`h_apply.irp.f_shell_186` - - 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. - - - - - -.. c:function:: h_apply_mrpt_1h2p_diexc - - .. code:: text - - subroutine H_apply_mrpt_1h2p_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_1h2p_diexcorg - - .. code:: text - - subroutine H_apply_mrpt_1h2p_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_1h2p_diexcp - - .. code:: text - - subroutine H_apply_mrpt_1h2p_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_1h2p_monoexc - - .. code:: text - - subroutine H_apply_mrpt_1h2p_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_1h_diexc - - .. code:: text - - subroutine H_apply_mrpt_1h_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_1h_diexcorg - - .. code:: text - - subroutine H_apply_mrpt_1h_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_1h_diexcp - - .. code:: text - - subroutine H_apply_mrpt_1h_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_1h_monoexc - - .. code:: text - - subroutine H_apply_mrpt_1h_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_1p - - .. code:: text - - subroutine H_apply_mrpt_1p(delta_ij_, Ndet) - - File: :file:`h_apply.irp.f_shell_186` - - 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. - - - - - -.. c:function:: h_apply_mrpt_1p_diexc - - .. code:: text - - subroutine H_apply_mrpt_1p_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_1p_diexcorg - - .. code:: text - - subroutine H_apply_mrpt_1p_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_1p_diexcp - - .. code:: text - - subroutine H_apply_mrpt_1p_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_1p_monoexc - - .. code:: text - - subroutine H_apply_mrpt_1p_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_2h - - .. code:: text - - subroutine H_apply_mrpt_2h(delta_ij_, Ndet) - - File: :file:`h_apply.irp.f_shell_186` - - 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. - - - - - -.. c:function:: h_apply_mrpt_2h1p - - .. code:: text - - subroutine H_apply_mrpt_2h1p(delta_ij_, Ndet) - - File: :file:`h_apply.irp.f_shell_186` - - 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. - - - - - -.. c:function:: h_apply_mrpt_2h1p_diexc - - .. code:: text - - subroutine H_apply_mrpt_2h1p_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_2h1p_diexcorg - - .. code:: text - - subroutine H_apply_mrpt_2h1p_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_2h1p_diexcp - - .. code:: text - - subroutine H_apply_mrpt_2h1p_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_2h1p_monoexc - - .. code:: text - - subroutine H_apply_mrpt_2h1p_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_2h2p - - .. code:: text - - subroutine H_apply_mrpt_2h2p(delta_ij_, Ndet) - - File: :file:`h_apply.irp.f_shell_186` - - 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. - - - - - -.. c:function:: h_apply_mrpt_2h2p_diexc - - .. code:: text - - subroutine H_apply_mrpt_2h2p_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_2h2p_diexcorg - - .. code:: text - - subroutine H_apply_mrpt_2h2p_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_2h2p_diexcp - - .. code:: text - - subroutine H_apply_mrpt_2h2p_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_2h2p_monoexc - - .. code:: text - - subroutine H_apply_mrpt_2h2p_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_2h_diexc - - .. code:: text - - subroutine H_apply_mrpt_2h_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_2h_diexcorg - - .. code:: text - - subroutine H_apply_mrpt_2h_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_2h_diexcp - - .. code:: text - - subroutine H_apply_mrpt_2h_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_2h_monoexc - - .. code:: text - - subroutine H_apply_mrpt_2h_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_2p - - .. code:: text - - subroutine H_apply_mrpt_2p(delta_ij_, Ndet) - - File: :file:`h_apply.irp.f_shell_186` - - 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. - - - - - -.. c:function:: h_apply_mrpt_2p_diexc - - .. code:: text - - subroutine H_apply_mrpt_2p_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_2p_diexcorg - - .. code:: text - - subroutine H_apply_mrpt_2p_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_2p_diexcp - - .. code:: text - - subroutine H_apply_mrpt_2p_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_2p_monoexc - - .. code:: text - - subroutine H_apply_mrpt_2p_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_diexc - - .. code:: text - - subroutine H_apply_mrpt_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_diexcorg - - .. code:: text - - subroutine H_apply_mrpt_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_mrpt_diexcp - - .. code:: text - - subroutine H_apply_mrpt_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - - - - - - -.. c:function:: h_apply_mrpt_monoexc - - .. code:: text - - subroutine H_apply_mrpt_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in , delta_ij_, Ndet ) - - File: :file:`h_apply.irp.f_shell_186` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: i_h_j_dyall - - .. code:: text - - subroutine i_H_j_dyall(key_i,key_j,Nint,hij) - - File: :file:`excitations_cas.irp.f` - - Returns where i and j are determinants - - - - - -.. c:function:: i_h_j_dyall_no_exchange - - .. code:: text - - subroutine i_H_j_dyall_no_exchange(key_i,key_j,Nint,hij) - - File: :file:`excitations_cas.irp.f` - - Returns where i and j are determinants - - - - - -.. c:function:: mrpt_dress - - .. code:: text - - subroutine mrpt_dress(delta_ij_, Ndet,i_generator,n_selected,det_buffer,Nint,iproc,key_mask) - - File: :file:`mrpt_dress.irp.f` - - - - - - - -.. c:function:: set_generators_bitmasks_as_holes_and_particles - - .. code:: text - - subroutine set_generators_bitmasks_as_holes_and_particles - - File: :file:`set_as_holes_and_particles.irp.f` - - - - - - - -.. c:function:: u0_h_dyall_u0 - - .. code:: text - - subroutine u0_H_dyall_u0(energies,psi_in,psi_in_coef,ndet,dim_psi_in,dim_psi_coef,N_states_in,state_target) - - File: :file:`excitations_cas.irp.f` - - - - - - - -.. c:function:: u0_h_dyall_u0_no_exchange - - .. code:: text - - subroutine u0_H_dyall_u0_no_exchange(energies,psi_in,psi_in_coef,ndet,dim_psi_in,dim_psi_coef,N_states_in,state_target) - - File: :file:`excitations_cas.irp.f` - - - - diff --git a/docs/source/modules/nuclei.rst b/docs/source/modules/nuclei.rst index 785b5e99..7f6a89ff 100644 --- a/docs/source/modules/nuclei.rst +++ b/docs/source/modules/nuclei.rst @@ -5,7 +5,7 @@ .. default-role:: option ====== -Nuclei +nuclei ====== This module contains data relative to the nuclei (coordinates, charge, diff --git a/docs/source/modules/perturbation.rst b/docs/source/modules/perturbation.rst index 3226f126..09bcc0e8 100644 --- a/docs/source/modules/perturbation.rst +++ b/docs/source/modules/perturbation.rst @@ -5,7 +5,7 @@ .. default-role:: option ============ -Perturbation +perturbation ============ diff --git a/docs/source/modules/pseudo.rst b/docs/source/modules/pseudo.rst index 0b86d2fa..b9ab7433 100644 --- a/docs/source/modules/pseudo.rst +++ b/docs/source/modules/pseudo.rst @@ -5,7 +5,7 @@ .. default-role:: option ====== -Pseudo +pseudo ====== This module defines the |EZFIO| parameters of the effective core potentials. diff --git a/docs/source/modules/psiref_cas.rst b/docs/source/modules/psiref_cas.rst index 9939cf82..cf1c5c64 100644 --- a/docs/source/modules/psiref_cas.rst +++ b/docs/source/modules/psiref_cas.rst @@ -5,7 +5,7 @@ .. default-role:: option ========== -Psiref_CAS +psiref_cas ========== Reference wave function is defined as a |CAS| wave function. diff --git a/docs/source/modules/psiref_utils.rst b/docs/source/modules/psiref_utils.rst index 4c37ff73..62c778f0 100644 --- a/docs/source/modules/psiref_utils.rst +++ b/docs/source/modules/psiref_utils.rst @@ -5,7 +5,7 @@ .. default-role:: option ============ -Psiref_Utils +psiref_utils ============ diff --git a/docs/source/modules/selectors_cassd.rst b/docs/source/modules/selectors_cassd.rst index 894333d6..d6c2b8ff 100644 --- a/docs/source/modules/selectors_cassd.rst +++ b/docs/source/modules/selectors_cassd.rst @@ -5,7 +5,7 @@ .. default-role:: option =============== -Selectors_CASSD +selectors_cassd =============== Selectors for |CAS-SD| calculations. The selectors are defined as first the diff --git a/docs/source/modules/selectors_full.rst b/docs/source/modules/selectors_full.rst index b28cb9a9..9edb70b9 100644 --- a/docs/source/modules/selectors_full.rst +++ b/docs/source/modules/selectors_full.rst @@ -5,7 +5,7 @@ .. default-role:: option ============== -Selectors_full +selectors_full ============== All the determinants are possible selectors. Only the largest contributions are kept, where diff --git a/docs/source/modules/selectors_utils.rst b/docs/source/modules/selectors_utils.rst index 1d0bd3e9..c183641c 100644 --- a/docs/source/modules/selectors_utils.rst +++ b/docs/source/modules/selectors_utils.rst @@ -5,7 +5,7 @@ .. default-role:: option =============== -Selectors_Utils +selectors_utils =============== Helper functions for selectors. diff --git a/docs/source/modules/single_ref_method.rst b/docs/source/modules/single_ref_method.rst index 27a266a7..ae80a401 100644 --- a/docs/source/modules/single_ref_method.rst +++ b/docs/source/modules/single_ref_method.rst @@ -4,9 +4,9 @@ .. default-role:: option -=============== -SingleDetMethod -=============== +================= +single_ref_method +================= Include this module for single reference methods. Using this module, the only generator determinant is the Hartree-Fock determinant. diff --git a/docs/source/modules/slave.rst b/docs/source/modules/slave.rst index 1dcf1c47..74b75541 100644 --- a/docs/source/modules/slave.rst +++ b/docs/source/modules/slave.rst @@ -5,7 +5,7 @@ .. default-role:: option ===== -Slave +slave ===== Slave processes for distributed parallelism. diff --git a/docs/source/modules/tools.rst b/docs/source/modules/tools.rst index e5eb0415..d9eb8f11 100644 --- a/docs/source/modules/tools.rst +++ b/docs/source/modules/tools.rst @@ -5,7 +5,7 @@ .. default-role:: option ===== -Tools +tools ===== Useful tools are grouped in this module. diff --git a/docs/source/modules/utils.rst b/docs/source/modules/utils.rst index bfe09ff5..448851ac 100644 --- a/docs/source/modules/utils.rst +++ b/docs/source/modules/utils.rst @@ -5,7 +5,7 @@ .. default-role:: option ===== -Utils +utils ===== Contains general purpose utilities (sorting, maps, etc). diff --git a/docs/source/modules/zmq.rst b/docs/source/modules/zmq.rst index cc86c378..e5af0f0c 100644 --- a/docs/source/modules/zmq.rst +++ b/docs/source/modules/zmq.rst @@ -5,7 +5,7 @@ .. default-role:: option === -ZMQ +zmq === Definition of |ZeroMQ| sockets and messages. From 062020ffdcc5afcb60ca2436a3584de068dce3e0 Mon Sep 17 00:00:00 2001 From: Emmanuel Giner Date: Fri, 28 Dec 2018 19:41:11 +0100 Subject: [PATCH 07/10] Toto (#83) * minor changes in README.rst of many src files * added ROHF_b2.gms.out * modified some scripts * modified README.rst * modifs in docs/intro --- doc/.gitignore | 1 - doc/Makefile | 154 ------- doc/code_architecture/Script.md | 44 -- doc/source/Intro.rst | 156 ------- doc/source/_static/.empty | 0 doc/source/code_doc_intro.rst | 228 ---------- doc/source/conf.py | 285 ------------- doc/source/index.rst | 25 -- doc/source/install.rst | 40 -- doc/source/wavefunction.rst | 169 -------- docs/source/_static/links.rst | 3 + docs/source/intro/intro.rst | 16 +- docs/source/modules/ao_one_e_integrals.rst | 2 +- docs/source/modules/becke_numerical_grid.rst | 58 +-- docs/source/modules/davidson.rst | 2 +- docs/source/modules/determinants.rst | 14 + docs/source/modules/fci.rst | 14 + docs/source/modules/hartree_fock.rst | 85 ++++ docs/source/modules/kohn_sham.rst | 281 ------------- docs/source/modules/kohn_sham_rs.rst | 182 ++++++++ docs/source/modules/perturbation.rst | 15 - docs/source/modules/psiref_cas.rst | 163 ------- docs/source/modules/psiref_utils.rst | 366 ---------------- docs/source/modules/slave.rst | 14 - .../programmers_guide/index_providers.rst | 396 ++++++++++-------- src/README.rst | 115 +---- src/mo_two_e_integrals/NEED | 1 + 27 files changed, 562 insertions(+), 2267 deletions(-) delete mode 100644 doc/.gitignore delete mode 100644 doc/Makefile delete mode 100644 doc/code_architecture/Script.md delete mode 100644 doc/source/Intro.rst delete mode 100644 doc/source/_static/.empty delete mode 100644 doc/source/code_doc_intro.rst delete mode 100644 doc/source/conf.py delete mode 100644 doc/source/index.rst delete mode 100644 doc/source/install.rst delete mode 100644 doc/source/wavefunction.rst diff --git a/doc/.gitignore b/doc/.gitignore deleted file mode 100644 index 378eac25..00000000 --- a/doc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -build diff --git a/doc/Makefile b/doc/Makefile deleted file mode 100644 index 29a05ba5..00000000 --- a/doc/Makefile +++ /dev/null @@ -1,154 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = build - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext default -default: html - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - -rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/SelectedCI.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/SelectedCI.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/SelectedCI" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/SelectedCI" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." diff --git a/doc/code_architecture/Script.md b/doc/code_architecture/Script.md deleted file mode 100644 index ba918f78..00000000 --- a/doc/code_architecture/Script.md +++ /dev/null @@ -1,44 +0,0 @@ -# `ei_handler.py` - -This script in located in `$QP_ROOT/scripts/ezfio_interface/`. -It provide all the resource need to deal with the `EZFIO.cfg` files : - - The creation of `$MODULE_LOWER_ezfio_config` in `$QP_ROOT/ezfio/config` - - The `ezfio_interface.irp.f` who containt all the provider associate (in `$MODULE/`) - - The `$MODULE_LOWER_ezfio_defaults` in `$QP_ROOT/data/` - - The `Input_$MODULE_LOWER.ml` for the *qp_edit* - -For more information you can type `ei_handler.py -h` - -# `module_handler.py` - -This script in located in `$QP_ROOT/scripts/module/`. -It provide all the resource related to the tree dependency of the modules. -If more useful as a librairy than a cli. - -It have some usefull property: - - The list of module - - The dict of the descendant - - The dict of the parent - - The dict of the child - - The dict of the root - - The list reduced tree (For a list of module in input return only the root) - -For tree syntax you can check http://en.wikipedia.org/wiki/Tree_%28data_structure%29#Terminologies_used_in_Trees - -In the cli mode: - - From a `NEEDED_CHILDREN_MODULE` file you can have all the descendant, and a png - representation who correspond. - - -# `qp_install_module.py` -This script is located in `$QP_ROOT/scripts/module/`. - -It is usefull when you need to install a new module. (From the soon to come repo or from scratch). - -# `qp_create_ninja.py` - -This script is located in `$QP_ROOT/scripts/compilation/`. -It will create the `build.ninja` file. It will use intersifly the `module_handler.py` module. - -To read all the flag for the compilation the module `read_compilation_cfg.py` is used. -You only need to know, that all flag are appending. diff --git a/doc/source/Intro.rst b/doc/source/Intro.rst deleted file mode 100644 index 57833a18..00000000 --- a/doc/source/Intro.rst +++ /dev/null @@ -1,156 +0,0 @@ -============================================================ -What is a selected CI caculation ? Some theoretical concepts -============================================================ - -Generalities -============ - - The selected CI algorithm can be seen as a way to compute the energies (and various properties) of a given number of eigenstates - of a given :term:`target space` (ex : CISD, CAS-CI, DDCI etc ...), - but by taking the freedom of splitting the wave function of the target space in term - of :term:`internal determinants` treated variationally and :term:`perturbers` treated perturbatively. - Why this freedom ? Because in a given :term:`target space` (except some really special cases) most of the information - is concentrated within a tiny fraction of the :term:`target wave function`, and the remaining part can be reasonabely estimated by perturbtation. - - - This splitting of the wave function is not done in one shot, it is done iteratively. The iterative procedure needs a :term:`stopping criterion` to end the calculation and to control the quality of the calculation. - This :term:`stopping criterion` can be for example the number of determinants in the :term:`intern space`, - or the value of the :term:`energetic perturbative correction` to estimate the importance of the perturbation, or the convergence of the :term:`estimated target energy`, or anything that can - be defined in terms of available informations during the calculation. - - The heart of the selected CI algorithm is based on the CIPSI algorithm (ref Malrieu). - - -Selected CI in a few words -========================== - - First you define a :term:`target space`. Once the target space is defined, you define the :term:`stopping criterion`. - After that, a starting wave function is chosen by the user (HF by default). - This starting wave function is the first :term:`Internal determinants` wave function. - After that, one would like to extend this :term:`Internal determinants` wave function by adding - some :term:`perturbers` determinants. - - How do we select the good :term:`perturbers` ? - - - do while (:term:`stopping criterion` is reached) - - - 1) Generates :term:`perturbers` determinants according to your chosen :term:`target space`. - - :math:`\Rightarrow` generates a set of :term:`perturbers` :math:`\{|D_P\rangle\}` - 2) The :term:`perturbers` importance are estimated by perturbation thanks to the current :term:`internal determinants`. - 3) The most important of the :math:`\{|D_P\rangle\}` are chosen to enter in the :term:`internal determinants`. - 4) You rediagonalize the H matrix with the previous set of :term:`internal determinants` and the chosen :term:`perturbers`. - - :math:`\Rightarrow` create a new wave function and a new set of the :term:`internal determinants` - 5) iterate - -Once the iterative procedure is stopped, the :term:`internal determinants` wave function have a :term:`variational energy`, -and by adding the :term:`energetic perturbative correction` one have the :term:`estimated target energy` -which is an approximation of the :term:`target energy`. One should notice that if one takes -a :term:`stopping criterion` such as the all the determinants of the target space are in the :term:`intern space`, -the :term:`estimated target energy` is the :term:`target energy`. - - -If one is interested of how is built the selected CI wave function into more details, one can read the further section. - -What is a selected CI iteration in practice (and some details) -============================================================== - - From the previous section we have roughly seen how the selected CI works. Now, getting a bit more into details, - we will see what is done in practice during a selected CI iteration. To illustrate this, a simple CISD example wil be given. - -The general picture -^^^^^^^^^^^^^^^^^^^ - -The :term:`target space` defines entirely the method that is going to be approximated, and the stopping criterion will be the only approximation. -This :term:`target space` can always be defined in terms of application of an :term:`H operator` -(with some :term:`excitation restrictions`) on a given set of determinants that we shall call the :term:`generators` determinants. -We call :term:`restricted H operator` this precise H operator. -The target space intirely defines the :term:`restricted H operator`. -The only flexibility is the perturbation theory to be used to estimate the coeficients of the :term:`perturbers`. -If the target space is just defines in term of a CI matrix to diagonalize, the standard :term:`Diagonalization EN EG` perturbation will be used. -If some other constraints are imposed in addition to the CI matrix -(e.g. some physical conditions of size extensivity such as in the :term:`CISD+SC2` method), -then the perturbation must be adapted to properly respect the :term:`target space`. - -CISD : the :term:`target space` is here defined intirely by all the single and double excitations acting on the HF determinant. -So the :term:`generators` subset of determinants here is only the HF determinant and will not change along the iteration. -If some occupied orbitals are chosen to be frozen (no excitations from those orbitals) -or some virtuals are chosen to be deleted (no excitations going to these virtuals orbitals), -this constraint imposes the :term:`excitation restrictions`. So here the :term:`restricted H operator` will be all the single and double excitations except those involving either a frozen core orbital or a deleted virtual orbital. -Different choices of perturbation theory can be made for the CISD, but the standard :term:`Diagonalization EN EG` can be trustly used. - -Once the :term:`target space` have been defined, what does in practice a selected CI iteration. -For the sake of simplicity, here we emphasize on the ground state :math:`| \psi_0 \rangle`. At a given iteration, one have a :term:`selected wave function` :math:`|\psi_0\rangle`, and the selected CI algorithm performs : - - do G = 1, N_Generators - - 1) Apply the :term:`restricted H operator` on the :math:`|D_G \rangle` :term:`generators` determinant belonging to :math:`| \psi_0 \rangle` - - :math:`\Rightarrow` generates a set of :term:`perturbers` :math:`|D_P\rangle` - - 2) Estimate the perturbative importance of each perturbers - - :math:`\Rightarrow` example for the :term:`EN EG` perturbation theory - - .. math:: - - c_{D_P}^0= \frac{ \sum_{S=1,N_{\rm selectors}} c_S^0 \langle D_S|H|D_P\rangle}{ \langle \psi_0 |H|\psi_0 \rangle - \langle D_P |H|D_P\rangle } \\ - e_{D_P}^0= \frac{(\sum_{S=1,N_{\rm selectors}} c_S^0 \langle D_S|H|D_P\rangle) ^2}{\langle \psi_0 |H|\psi_0 \rangle - \langle D_P |H|D_P\rangle} - - 3) Keep the most important :term:`perturbers` :math:`|D_P \rangle` - - :math:`\Rightarrow` they enter in the :term:`intern space` - - 4) Rediagonalize H within this new subset of determinants - - :math:`\Rightarrow` better :term:`selected wave function` - - 5) Iterate - -An important point here is that at a given iteration, the estimation of the perturbative coefficients of the :term:`perturbers` -depends on the quality of the :term:`selected wave function` . -As the iterations go on, the :term:`selected wave function` becomes closer -and closer to the :term:`target wave function`, and so the perturbative estimation of the :term:`perturbers` coefficients or energetic contribution becomes more and more precise. - - -CISD : At the first iteration, starting from the HF determinant : - 1) By applying H on the :term:`generators` (HF) one generates all singles and doubles - 2) For each :term:`perturbers` you estimate by perturbation its coefficient of energetic contribution. - - i) Here the :term:`selectors` is only the HF determinant. - - ii) If the :term:`Brillouin theorem` is respected, all the singles have zero coefficients since the :term:`selectors` here is only the HF determinant. - iii) The most important double excitations entered - iv) The :term:`energetic perturbative correction` is calculated - v) The :term:`estimated target energy` is just the sum of the HF energy and the :term:`energetic perturbative correction` - - 3) H is rediagonlaized in the new set of determinants : HF + the selected doubles - - :math:`\Rightarrow` better :term:`variational energy` and :term:`selected wave function` - - 4) The :term:`generators` subset does not change. - - - At the second iteration : - 1) By applying H on the :term:`generators` (still HF) one generates all singles and doubles - 2) For each :term:`perturbers` you estimate by perturbation its coefficient of energetic contribution. - - i) Here the :term:`selectors` is now HF + the previously selected doubles - - :math:`\Rightarrow` the :term:`perturbers` now interact with all the previously selected doubles - :math:`\Rightarrow` better estimation of the coefficients of the :term:`perturbers` - :math:`\Rightarrow` the singles have non zero coefficients - - ii) The most important :term:`perturbers` enter in the :term:`intern space` - - iv) The :term:`energetic perturbative correction` is re estimated - - v) The :term:`estimated target energy` is now the sum of the variational energy of the :term:`selected wave function` and the :term:`energetic perturbative correction` - - :math:`\Rightarrow` better estimation of the :term:`target energy` - - Iterate untill you reached the desired :term:`stopping criterion` - diff --git a/doc/source/_static/.empty b/doc/source/_static/.empty deleted file mode 100644 index e69de29b..00000000 diff --git a/doc/source/code_doc_intro.rst b/doc/source/code_doc_intro.rst deleted file mode 100644 index ef113adc..00000000 --- a/doc/source/code_doc_intro.rst +++ /dev/null @@ -1,228 +0,0 @@ -============================= -The Documentation of the code -============================= - - - -The heart of the problem : how do we compute the perturbation ? -=============================================================== - -In this section we will present the basic ideas of how do we compute any kind of perturbative quantity. - -The main problem -^^^^^^^^^^^^^^^^ - -Consider a simple problem of perturbation theory in which you have a *general* multireference wave function :math:`| \psi \rangle` -(no trivial way to know the kind of relations between those determinants) : - -.. math:: - | \psi \rangle = \sum_{I=1,N_{det}} c_I | D_I \rangle - -and you would like to compute its second order :term:`perturbative energetic correction`, which we can write like this for the sake of simplicity: - -.. math:: - E_{PT2} = \sum_{P \, \rm{that} \, \rm{are} \, \rm{not} \, \rm{in} \, | \psi \rangle } \frac{\langle \psi | H | D_P \rangle^2}{\Delta E_P} - -and the :math:`\Delta E_P` will determine what kind of PT you use. Note that you must not double count a determinant :math:`| D_P \rangle` and that you must not count those which are in :math:`| \psi \rangle`. - -What you have to do is to apply the :math:`H` operator on this :math:`| \psi \rangle` that would generate a lot of determinants :math:`|D \rangle`, -and you must find a way to see if : - - #) the determinant :math:`|D \rangle` is in :math:`| \psi \rangle` - - #) the determinant :math:`|D \rangle` have already been counted - -How do we do in practice ? We apply :math:`H` succesively on each determinant of :math:`| \psi \rangle` and each :math:`H` application generates a lot of determinant :math:`|D \rangle`. For each determinants :math:`|D \rangle` we check with a very optimized subroutine if - - #) :math:`|D\rangle` was a single or a double excitation respect to all the determinant on which we previously applyed :math:`H` - - :math:`\Rightarrow` if it is the case then it have already been computed in the past and so we don't double count it. - - #) :math:`|D\rangle` is already in the rest of the :math:`| \psi \rangle` - - :math:`\Rightarrow` if it is the case you must not count it. - -This subroutine (:samp:`connected_to_ref` ) is called a **HUGE** number of times and so it have been optimized in a proper way. -Its basis is the :samp:`popcnt` hardware instruction that figures in the :samp:`SSE4.2` releases of processors. -It allows to know how many bites are set to one in an integer within a few cycles of CPU. -By manipulation of bits masks you can easily extract the excitation degree between two determinants. - -One interesting feature of this approach is that it is easily and efficiently parallelizable (which of cours have been done), -and you can easily reach an parallel efficiency of about :math:`95\%`. - - -The link between the perturbation and the selection -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -In the selected CI algorithm you have general :math:`| \psi \rangle` multi determinantal wave function and you want to make it better -by proposing some new candidates to enter in this wave function. -Those candidates must of course not be already in :math:`| \psi \rangle` and since their are selected thanks to their perturbative properties (on the energy or on the coefficient), their are generated through some application of the :math:`H` operator. So we see that we have exactly the same kind of feature than in the perturbation. - -How do we select the determinant in practice ? Exactly like we do the perturbation ! - -do G = 1, :term:`N_{Generators}` - - #) We apply :math:`H` on one :term:`generators` - - :math:`\Rightarrow` :math:`H|D_G \rangle = \sum_D \langle D | H |D_G \rangle |D \rangle` - - #) For each determinant :math:`|D \rangle` we check if it could have been generated from previous :term:`generators` :math:`| D_{G'} \rangle` - - :math:`\Rightarrow` If it is not the case we check if it belongs to :math:`| \psi \rangle` - - #) We compute its perturbative property - - #) If it is important we put it in a buffer of the potential candidates to the new set of :term:`internal determinants` - - #) go to 1 - -enddo - - -So once you have applyed :math:`H` on all the :term:`generators`, you sort all the buffer of the candidates by their importance, -and after you pick up the most important ones, which will enter in the wave function and be diagonalized. - - -Just to be more precise, what we drescribe here is the standard CIPSI algorithm (which :term:`target space` is always the FCI). In practice, if you replace the :math:`H` operator by the :term:`restricted H operator` defined by the :term:`target` space you have exactly what is emplemented. - -The typical feature of an iteration -=================================== - -An iteration of the selected CI program is always built in the same way. This can be resumed in the following simple tasks. - -Iteration : - - #) :term:`restricted H operator` applyed on the :term:`generators` - - :math:`\Rightarrow` :term:`perturbativ action` (*e.g* Selection of some :term:`perturbers`, calculation of the :math:`E_{PT2}^m`, etc ...) - - #) Some update induced by the :term:`perturbative action` (*e.g* diagonalization of the new :math:`H` matrix, etc ...) - #) Check the :term:`stopping criterion` - #) Update the :term:`generators` subset - #) Save restart data if needed - #) Iterate - -To go into details we list the various available options for each task. - -The :samp:`restricted_H_apply` like subroutines -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - Here we enter into details on the part of the subroutines that is responsible for the :term:`restricted H operator` part of the tasks. - -The general ideas -^^^^^^^^^^^^^^^^^ - - This subroutine takes in input a determinant (in term of an integer key) and some bits masks - that are used to restrict the excitations (see the :term:`excitations bits masks` and :term:`excitations restrictions`). - It generates the singles and doubles excitations from the input determinant and these :term:`excitations bits masks`. - This subroutine will be applyed on the :term:`generators` determinants to generate the :term:`perturbers`. - - This subroutine in itself does not exist, it is just a skeleton that generates all possible singles and doubles. - As seen in the previsous section, once you apply :math:`H` on a given determinant, you will use the generated determinants - to do a certain number of things that deal with in general a perturbative quantity, this is the :term:`perturbative action`. - - A way to resume what is done in the subroutine and to make a mental representation can be explained like this : - - -.. code-block:: fortran - - subroutine restricted_H_apply(key_in) - - do i = 1, available_holes(1) - do j = 1, available_holes(2) - do k = 1, available_particles(1) - do l = 1, available_particles(2) - ! you generate some excitations on key_in that will generate some key_out - call excitation(i,j,k,l,key_in,key_out) - ! you exploit key_out to do some perturbative work - call perturbative_action(key_out) - enddo - enddo - enddo - enddo - - end - - -So we see that here once we have made an excitation on :samp:`key_in` that generates :samp:`key_out`, -we can do some work related to the :term:`perturbative action` on this :samp:`key_out`. - -In this simple representation of the subroutine, there are some :samp:`available_holes` and :samp:`available_particle`. -This is due to the :term:`excitation restrictions` that are implicitly defined by the :term:`target space`, -and to the :term:`restricted orbitals` that are defined by the user. -In practice those :term:`excitation restrictions` are just the excitations that are going to be allowed to a given :term:`generator determinant`. -We do this by using some :term:`excitations bits masks`. -The :term:`excitation restrictions` and the :term:`restricted orbitals` are built thanks to the use of :term:`excitations bits masks`. - -Available :term:`excitation restrictions` -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -The :term:`excitation restrictions` prohibits some kind of excitations because it is in the definition -of the :term:`target space` to avoid a certain class of excitation. -For instance, in the :term:`CAS+DDCI` method, you will apply all the single and double excitations on the top of the :term:`CAS wave function`. -After those :term:`excitation restrictions` defined by the :term:`target space`, there can be some kind of excitations that the user wishes to avoid. -For instance, within a :term:`CISD` or a :term:`CAS+DDCI` you can wish that all the excitations of the core electrons can be neglected, -or that there are some virtuals that are not relevant for a certain kind of correlation effects. - -This restrictions are done in the program by defining some classes of orbitals that depend both on the method you would like to use, -and by the specific restrictions you would like to do on the top of that. So we see that there are classes of orbitals that depend on the method, -and other classes that can be defined for any class of method. - -This classes are the the :term:`frozen occupied orbitals` and the :term:`deleted virtual orbitals` . - -Available :term:`perturbative action` -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -From what we saw previously, when an excitation is performed on a given :term:`generator`, -depending on the method defined by the user, different actions can be performed at that point of the calculation. - -Nevertheless, all this actions here deal with the perturbation, that is why we called this step the :term:`perturbative action`. - -The :term:`perturbative action` is very flexible. It consists in doing (or not) a certain kind of things. - -When a given determinant :samp:`key_out` is generated, you can : - - #) check if this determinants have to be taken into account (see :samp:`connected_to_ref` and :samp:`is_in_ref`) - #) compute its :term:`perturbative energetic contribution` and its :term:`perturbative coefficient` (see :term:`perturbation theory`) - #) use those perturbative quantities to do something that deals with it (see :term:`perturbative possibility` ) - -In principle, for each of those actions one would put a :samp:`if` statement and decline all the possible actions to do. -However, because there can exist a *lot* of possible action and because this loop is really intern, putting a lot of :samp:`if` statement -is not a good idea and will slow the code. - -To avoid that we generate with a python script all possible subroutines corresponding to some actions, and the program will use the one -that will be defined by the method desired by the user. In this way there is no unnecessary tests in the intern loop, it done in the input. - -The :term:`perturbative possibility` -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Once you have compute the :term:`perturbative energetic contribution` and the :term:`perturbative coefficient` of a given :term:`perturber`, -you must use those quantities. Here is listed what is available : - - #) accumulate it :term:`perturbative energetic contribution` to compute the :term:`Energetic perturbative correction` - #) accumulate it :term:`perturbative coefficient` to compute the :term:`first order perturbative norm` - #) put or not the :samp:`key_out` determinant in a buffer to select some new :term:`intenal determinants` see :term:`selection` - #) update the arrays of the :term:`correlation energy by holes and particles` (see :term:`CISD+SC2`) - #) dress all the diagonal matrix elements of the :term:`internal determiants` (see :term:`Dressed MRCI`) - - - - -Connected to ref / is in ref -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - This subroutine takes in input a determinant (in term of an integer key), an array of determinants :samp:`keys` (containing :samp:`N_det` determinants) - and an integer :samp:`i_past` which is smaller or equal to :samp:`N_det`. - - It checks if the input determinant is connected by the :math:`H` matrix to all the determinants in :samp:`keys` that are before :samp:`i_past`. - It also check if the input determinant is in the whole list of determinants :samp:`keys`. - - In output you have an integer :samp:`c_ref` that have the following values : - - #) 0 : the input determinant is not in :samp:`keys` and is not connected to any determinant - in :samp:`keys` that is before :samp:`i_past`. - - #) +m : the input determinant is connected by the :math:`H` matrix to the *m* th determinant :samp:`keys`. - - #) -m : the input determinant is already in :samp:`keys` and it is the *m* th determinant in :samp:`keys` - - diff --git a/doc/source/conf.py b/doc/source/conf.py deleted file mode 100644 index e461323a..00000000 --- a/doc/source/conf.py +++ /dev/null @@ -1,285 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Selected CI documentation build configuration file, created by -# sphinx-quickstart on Mon Feb 10 15:53:11 2014. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - -# -- General configuration ----------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.mathjax', 'sphinx.ext.viewcode'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'Selected CI' -copyright = u'2014, Giner Emmanuel , Scemama Anthony' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '1.0' -# The full version, including alpha/beta/rc tags. -release = version+'.1' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = [] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'SelectedCIdoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'SelectedCI.tex', u'Selected CI Documentation', - u'Giner Emmanuel ', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'selectedci', u'Selected CI Documentation', - [u'Giner Emmanuel '], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------------ - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'SelectedCI', u'Selected CI Documentation', - u'Giner Emmanuel ', 'SelectedCI', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - - -# -- Options for Epub output --------------------------------------------------- - -# Bibliographic Dublin Core info. -epub_title = u'Selected CI' -epub_author = u'Giner Emmanuel ' -epub_publisher = u'Giner Emmanuel ' -epub_copyright = u'2014, Giner Emmanuel ' - -# The language of the text. It defaults to the language option -# or en if the language is not set. -#epub_language = '' - -# The scheme of the identifier. Typical schemes are ISBN or URL. -#epub_scheme = '' - -# The unique identifier of the text. This can be a ISBN number -# or the project homepage. -#epub_identifier = '' - -# A unique identification for the text. -#epub_uid = '' - -# A tuple containing the cover image and cover page html template filenames. -#epub_cover = () - -# HTML files that should be inserted before the pages created by sphinx. -# The format is a list of tuples containing the path and title. -#epub_pre_files = [] - -# HTML files shat should be inserted after the pages created by sphinx. -# The format is a list of tuples containing the path and title. -#epub_post_files = [] - -# A list of files that should not be packed into the epub file. -#epub_exclude_files = [] - -# The depth of the table of contents in toc.ncx. -#epub_tocdepth = 3 - -# Allow duplicate toc entries. -#epub_tocdup = True diff --git a/doc/source/index.rst b/doc/source/index.rst deleted file mode 100644 index 6e1ace01..00000000 --- a/doc/source/index.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. Selected CI documentation master file, created by - sphinx-quickstart on Mon Feb 10 15:53:11 2014. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to Selected CI's documentation! -======================================= - -Contents: - -.. toctree:: - :maxdepth: 1 - - install - Intro - code_doc_intro - wavefunction - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/doc/source/install.rst b/doc/source/install.rst deleted file mode 100644 index 44b86b8a..00000000 --- a/doc/source/install.rst +++ /dev/null @@ -1,40 +0,0 @@ -============ -Installation -============ - -Requirements ------------- - -* `GNU make `_ -* `The Intel Fortran Compiler with MKL `_ -* `IRPF90 `_ -* `EZFIO `_ - -Optional Requirements ---------------------- - -* `Sphinx `_ is used to build the documentation - -Setup ------ - -#) Run the :file:`setup_environment.sh` script. This will create the :file:`sci.rc` file - that contains all the environment variables :: - - $ ./setup_environment.sh - -#) Source this file into your shell :: - - $ source sci.rc - -#) Go into the :file:`src` directory and create the :file:`Makefile.config` file using the - :file:`Makefile.config.example` file as a template - -#) Build the program :: - - $ make - -#) Build the documentation :: - - $ make doc - diff --git a/doc/source/wavefunction.rst b/doc/source/wavefunction.rst deleted file mode 100644 index a3215e6d..00000000 --- a/doc/source/wavefunction.rst +++ /dev/null @@ -1,169 +0,0 @@ -===================================== -Selection, perturbation ... keywords -===================================== - -.. |CISD| replace:: :abbr:`CISD (Configuration Interaction with Single and Double excitations)` -.. |HF| replace:: :abbr:`HF (Hartree Fock)` -.. |CAS-CI| replace:: :abbr:`CAS-CI (Complete Active Space Configuration Interaction)` -.. |DDCI| replace:: :abbr:`DDCI (Difference Dedicated Configuration Interaction)` - -.. glossary:: - :sorted: - - Energetic perturbative correction - Corresponds to the correction to the energy at the second order of a given perturbtation theory - to a given state m. - By convention it noted :math:`E_{PT2}^m` - - Variational energy - Corresponds to the variational energy of the :term:`selected wave function` for a given state . - By convention it noted :math:`E_{Var}^m` for the mth eigenvector. - - .. math:: - E_{Var}^m = \langle \psi_m |H|\psi_m \rangle - - Estimated target energy - Corresponds to the estimation of the target energy for a given :term:`selected wave function` and a given state. - By convention it noted :math:`E_{Target}^m`. - Its mathematical expression is : - - .. math:: - E_{Target}^m = E_{Var}^m + E_{PT2}^m - - Selected wave function - Corresponds to the wave function that have been previously selected for a given state m at a current iteration. - This wave function is defined by the set of the :term:`internal determinants` and by their coefficients - on the state m. - By convention it is noted :math:`|\psi_m\rangle` - - .. math:: - | \psi_m \rangle = \sum_{I=1,N_{selected}} c_I^m | D_I \rangle - - - - - EN EG - Stands for Eipstein Nesbet with EigenValues zeroth order energy perturbation theory. - It is a state specific 2nd order perturbation theory. Here m is the index of the eigenstate. - The :math:`H_0` of this PT is defined as the diagonal part of the Hamiltonian such as - the :math:`E_m` is equal to the average value of the Hamiltonian on the :term:`selected wave function` - and the :math:`E_P` is equal to the average value of the Hamiltonian on the :term:`perturbers` - - This perturbation have bad formal properties but some nice numerical features of convergence. - - - From the definition, one get the first order coefficient and its related second order energetic contribution of a a perturber : - - .. math:: - c_{D_P}^m= \sum_{S=1,N_{\rm selectors}} \frac{c_S^m \langle D_S|H|D_P\rangle}{ \langle \psi_m |H|\psi_m \rangle - \langle D_P|H| D_P \rangle } \\ - e_{D_P}^m= \frac{(\sum_{S=1,N_{\rm selectors}} c_S^m \langle D_S|H|D_P\rangle)^2}{\langle \psi_m |H|\psi_m \rangle - \langle D_P|H| D_P \rangle } - - - Stopping criterion - Condition decided by the user to stop the calculation. - This criterion might be on the :term:`Energetic perturbative correction`, on the number of :term:`internal determinants` N_selected_max - or on the stability of the :term:`estimated target energy` - The user can also send a Ctrl+C to stop the calculation, and it will kill itself properly, saving the datas that need to be saved. - - - Target wave function - Wave function of the :term:`target space` - - - - Target space - Target of the CI calculation. Defining a method (CISD, CAS-CI and so on) is equivalent to define the :term:`target space`. - - The target space defines the rules to define the :term:`Generators` , - the rules of the :term:`excitation restrictions`, - and the perturbation theory to be used. - - There are two type of methods/:term:`target space` proposed in the code : - - #) the CAS-CI type methods where you do not restrict any kind of excitation degree within a given list of orbitals. - #) the singles and doubles excitations on the top of a given reference wave function (:term:`CISD`, :term:`CISD+SC2`, :term:`CAS+SD`, :term:`CAS+DDCI`, :term:`CAS+MRPT2`) - - Their is a great difference between those two types of method in the way it is implemented. - - In the CAS-CI method, when you have chosen an :term:`active space` (so a list of orbitals and electrons to make a FCI within this active space), - all the :term:`Internal determinants` that have been selected and that form the :term:`selected wave function` - can potentially be part of the :term:`generators`, by mean that the :term:`restricted H operator` - could be potentially applyed on all the :term:`internal determinants` to generate some other :term:`perturbers`. - - In the singles and doubles excitation on the top of a given reference wave function, the subset of :term:`generators` - and so the rules to recognize them, is fixed at the begining of the method. Those :term:`generators` are precisely - all the determinants forming the :term:`reference wave function`. - - - There are the different :term:`target space` that are available : - - #) :term:`CISD` - #) :term:`CISD+SC2` - #) :term:`CASCI` - #) :term:`CASCI+S` - #) :term:`CASCI+SD` - #) :term:`CASCI+DDCI` - #) :term:`CASCI+DDCI+(2h-2p)PT2` - #) :term:`CAS-CI+MRPT2` - - - Target energy - Energy of the target space. - - H operator - Hamiltonian operator defined in terms of creation and anihilation operators in the spin orbital space. - - Excitation restrictions - Restriction in the :term:`H operator` that the user imposes to define the target sapce. - For example : - - 1) If one freeze some core orbitals or delete some virtuals, it is an :term:`excitation restrictions` - 2) If one prohibits the pure inactive double excitations in a CAS+SD one get a DDCI - 3) any kind of restriction in the full application of the :term:`H operator` - - - Restricted H operator - :term:`H operator` taking into account the :term:`Excitation restrictions` - - - CISD+SC2 - Method developped by JP. Malrieu that can be seen as a cheap approximation of the CCSD. - It makes a CISD size consistant and separable for closed shell systems. - It is based on a CISD calculation - where the diagonal part of the H matrix is dressed by the repeatable correlation energy previsously obtained. - So it is a CISD dressed by the disconnected triples and quadruples. - - Generators - Set of generator determinants. - By convention a generator is written as :math:`|D_G\rangle` . - A generator determinant is a determinant on which - the :term:`restricted H operator` is being applied for the selection and/or the perturbation. - - Internal determinants - Selected determinants in terms of integers keys. - By convention an Internal determinant is written as :math:`|D_I\rangle` . - By convention, the :term:`Generators` are at the begining of the array. - - Intern space - Set of all the :term:`internal determinants`. - - Perturbers - Determinants within the :term:`target space` but taht are not already included in the :term:`intern space`. - They are created from the :term:`Generators` that belongs :term:`Intern space` for a given :term:`selected wave function`. - By convention a perturber is written as :math:`|D_P\rangle`. - - Selectors - Determinants that are used to compute the perturbative properties of the :term:`perturbers`. - By convention a selector is written as :math:`|D_S\rangle` . - The selectors are a subset of determinant of the total wave function (that is the :term:`Internal determinants`). - This subset contains at least the :term:`Generators` determinants. - The perturbative properties (energy, coefficient or else) of the :term:`perturbers` are calculated on all the :term:`selectors` :math:`|D_S\rangle` - - .. math:: - - c_{D_S}= \sum_{S=1,N_{\rm selectors}} \frac{c_S\langle D_S|H|D_P\rangle}{\Delta E_{P,S}} \\ - e_{D_S}= \frac{(\sum_{S=1,N_{\rm selectors}} c_S \langle D_S|H|D_P\rangle) ^2}{\Delta E_{P,S}} - - - - diff --git a/docs/source/_static/links.rst b/docs/source/_static/links.rst index 976c7950..f1a3a27d 100644 --- a/docs/source/_static/links.rst +++ b/docs/source/_static/links.rst @@ -68,6 +68,9 @@ .. |QMC| replace:: :abbr:`QMC (Quantum Monte Carlo)` .. |rst| replace:: :abbr:`RST (ReStructured Text)` .. |SCF| replace:: :abbr:`SCF (Self Consistent Field)` +.. |RSH| replace:: :abbr:`RSH (Range-Separated-Hybrids)` +.. |KS-DFT| replace:: :abbr:`KS-DFT (Kohn-Sham Density Functional Theory)` +.. |sCI| replace:: :abbr:`sCI (Selected-CI)` .. |CASSCF| replace:: |CAS| - |SCF| .. |FCIQMC| replace:: |FCI| - |QMC| diff --git a/docs/source/intro/intro.rst b/docs/source/intro/intro.rst index 38e99917..45b2db2e 100644 --- a/docs/source/intro/intro.rst +++ b/docs/source/intro/intro.rst @@ -12,13 +12,15 @@ What it is ========== The |qp| is an open-source programming environment for quantum chemistry, -especially for `wave function methods `_. -The main goal is the development of selected configuration interaction (sCI) -methods and multi-reference perturbation theory (MR-PT) in the -determinant-driven paradigm. The determinant-driven framework allows the -programmer to include any arbitrary set of determinants in the variational -space, and thus gives a complete freedom in the methodological development. All -the programs are developed with the `IRPF90`_ code generator, which simplifies +especially for `wave function theory `_ (WFT). +The main goal is the development of selected configuration interaction |sCI| +methods and multi-reference perturbation theory |MRPT| in the +determinant-driven paradigm. It also contains the very basics of Kohn-Sham `density functional theory `_ |KS-DFT| and `range-separated hybrids `_ |RSH|. + +Regarding the The determinant-driven framework allows the programmer to include any arbitrary set of +determinants in the variational space, and thus gives a complete freedom in the methodological +development. The basics of RSH together with the WFT framework also allow a simple coupling between DFT and WFT calculations (see the plugins of ``_) +All the programs are developed with the `IRPF90`_ code generator, which simplifies the collaborative development, and the development of new features. diff --git a/docs/source/modules/ao_one_e_integrals.rst b/docs/source/modules/ao_one_e_integrals.rst index 4b4d764a..02420d50 100644 --- a/docs/source/modules/ao_one_e_integrals.rst +++ b/docs/source/modules/ao_one_e_integrals.rst @@ -896,7 +896,7 @@ Subroutines / functions File: :file:`spread_dipole_ao.irp.f` - + Computes the following integral : int [-infty ; +infty] of [(x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) * x ] needed for the dipole and those things diff --git a/docs/source/modules/becke_numerical_grid.rst b/docs/source/modules/becke_numerical_grid.rst index eb934238..c1c102a7 100644 --- a/docs/source/modules/becke_numerical_grid.rst +++ b/docs/source/modules/becke_numerical_grid.rst @@ -139,44 +139,25 @@ Providers .. code:: text double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_functions_at_final_grid_points (n_points_final_grid) + double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) integer, allocatable :: index_final_points (3,n_points_final_grid) integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) File: :file:`grid_becke_vector.irp.f` final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices -.. c:var:: final_weight_functions_at_final_grid_points +.. c:var:: final_weight_at_r .. code:: text - double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_functions_at_final_grid_points (n_points_final_grid) - integer, allocatable :: index_final_points (3,n_points_final_grid) - integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) - - File: :file:`grid_becke_vector.irp.f` - - final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions - index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point - index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices - - - - -.. c:var:: final_weight_functions_at_grid_points - - .. code:: text - - double precision, allocatable :: final_weight_functions_at_grid_points (n_points_integration_angular,n_points_radial_grid,nucl_num) + double precision, allocatable :: final_weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num) File: :file:`grid_becke.irp.f` @@ -185,6 +166,25 @@ Providers +.. c:var:: final_weight_at_r_vector + + .. code:: text + + double precision, allocatable :: final_grid_points (3,n_points_final_grid) + double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) + integer, allocatable :: index_final_points (3,n_points_final_grid) + integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) + + File: :file:`grid_becke_vector.irp.f` + + final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point + final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point + index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices + + + + .. c:var:: grid_points_per_atom .. code:: text @@ -217,14 +217,14 @@ Providers .. code:: text double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_functions_at_final_grid_points (n_points_final_grid) + double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) integer, allocatable :: index_final_points (3,n_points_final_grid) integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) File: :file:`grid_becke_vector.irp.f` final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices @@ -236,14 +236,14 @@ Providers .. code:: text double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_functions_at_final_grid_points (n_points_final_grid) + double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) integer, allocatable :: index_final_points (3,n_points_final_grid) integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) File: :file:`grid_becke_vector.irp.f` final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices @@ -289,11 +289,11 @@ Providers -.. c:var:: weight_functions_at_grid_points +.. c:var:: weight_at_r .. code:: text - double precision, allocatable :: weight_functions_at_grid_points (n_points_integration_angular,n_points_radial_grid,nucl_num) + double precision, allocatable :: weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num) File: :file:`grid_becke.irp.f` diff --git a/docs/source/modules/davidson.rst b/docs/source/modules/davidson.rst index b398a920..4a3755ea 100644 --- a/docs/source/modules/davidson.rst +++ b/docs/source/modules/davidson.rst @@ -189,7 +189,7 @@ Providers File: :file:`u0_h_u0.irp.f` - Energy of the current wave function + Electronic energy of the current wave function diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst index 5c2ff86f..aab901df 100644 --- a/docs/source/modules/determinants.rst +++ b/docs/source/modules/determinants.rst @@ -3149,6 +3149,20 @@ Subroutines / functions +.. c:function:: pouet + + .. code:: text + + subroutine pouet + + File: :file:`test.irp.f` + + + + + + + .. c:function:: pull_pt2 .. code:: text diff --git a/docs/source/modules/fci.rst b/docs/source/modules/fci.rst index 98b1f8f1..6f36b957 100644 --- a/docs/source/modules/fci.rst +++ b/docs/source/modules/fci.rst @@ -754,6 +754,20 @@ Subroutines / functions +.. c:function:: run + + .. code:: text + + subroutine run + + File: :file:`pt2.irp.f` + + + + + + + .. c:function:: run_pt2_slave .. code:: text diff --git a/docs/source/modules/hartree_fock.rst b/docs/source/modules/hartree_fock.rst index 04aab811..8610eecc 100644 --- a/docs/source/modules/hartree_fock.rst +++ b/docs/source/modules/hartree_fock.rst @@ -61,6 +61,77 @@ Providers --------- +.. c:var:: ao_bi_elec_integral_alpha + + .. code:: text + + double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num) + double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num) + + File: :file:`fock_matrix_hf.irp.f` + + Alpha Fock matrix in AO basis set + + + + +.. c:var:: ao_bi_elec_integral_beta + + .. code:: text + + double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num) + double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num) + + File: :file:`fock_matrix_hf.irp.f` + + Alpha Fock matrix in AO basis set + + + + +.. c:var:: extra_e_contrib_density + + .. code:: text + + double precision :: extra_e_contrib_density + + File: :file:`hf_energy.irp.f` + + Extra contribution to the SCF energy coming from the density. + For a Hartree-Fock calculation: extra_e_contrib_density = 0 + For a Kohn-Sham or Range-separated Kohn-Sham: the exchange/correlation - trace of the V_xc potential + + + + +.. c:var:: fock_matrix_ao_alpha + + .. code:: text + + double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num) + double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num) + + File: :file:`fock_matrix_hf.irp.f` + + Alpha Fock matrix in AO basis set + + + + +.. c:var:: fock_matrix_ao_beta + + .. code:: text + + double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num) + double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num) + + File: :file:`fock_matrix_hf.irp.f` + + Alpha Fock matrix in AO basis set + + + + .. c:var:: hf_energy .. code:: text @@ -111,6 +182,20 @@ Subroutines / functions +.. c:function:: create_guess + + .. code:: text + + subroutine create_guess + + File: :file:`scf_old.irp.f` + + Create a MO guess if no MOs are present in the EZFIO directory + + + + + .. c:function:: scf .. code:: text diff --git a/docs/source/modules/kohn_sham.rst b/docs/source/modules/kohn_sham.rst index 3967e021..d497f7a4 100644 --- a/docs/source/modules/kohn_sham.rst +++ b/docs/source/modules/kohn_sham.rst @@ -51,176 +51,6 @@ Providers --------- -.. c:var:: ao_bi_elec_integral_alpha - - .. code:: text - - double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num) - double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num) - - File: :file:`fock_matrix_ks.irp.f` - - Alpha Fock matrix in ao basis set - - - - -.. c:var:: ao_bi_elec_integral_beta - - .. code:: text - - double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num) - double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num) - - File: :file:`fock_matrix_ks.irp.f` - - Alpha Fock matrix in ao basis set - - - - -.. c:var:: ao_potential_alpha_xc - - .. code:: text - - double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num) - double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num) - - File: :file:`pot_functionals.irp.f` - - - - - - -.. c:var:: ao_potential_beta_xc - - .. code:: text - - double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num) - double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num) - - File: :file:`pot_functionals.irp.f` - - - - - - -.. c:var:: e_correlation_dft - - .. code:: text - - double precision :: e_correlation_dft - - File: :file:`pot_functionals.irp.f` - - - - - - -.. c:var:: e_exchange_dft - - .. code:: text - - double precision :: e_exchange_dft - - File: :file:`pot_functionals.irp.f` - - - - - - -.. c:var:: extra_e_contrib_density - - .. code:: text - - double precision :: extra_e_contrib_density - - File: :file:`ks_enery.irp.f` - - Extra contribution to the SCF energy coming from the density. - For a Hartree-Fock calculation: extra_e_contrib_density = 0 - For a Kohn-Sham or Range-separated Kohn-Sham: the exchange/correlation - 1/2 trace of the V_xc potential - - - - -.. c:var:: fock_matrix_alpha_no_xc_ao - - .. code:: text - - double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num) - double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num) - - File: :file:`fock_matrix_ks.irp.f` - - Mono electronic an Coulomb matrix in ao basis set - - - - -.. c:var:: fock_matrix_ao_alpha - - .. code:: text - - double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num) - double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num) - - File: :file:`fock_matrix_ks.irp.f` - - Alpha Fock matrix in ao basis set - - - - -.. c:var:: fock_matrix_ao_beta - - .. code:: text - - double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num) - double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num) - - File: :file:`fock_matrix_ks.irp.f` - - Alpha Fock matrix in ao basis set - - - - -.. c:var:: fock_matrix_beta_no_xc_ao - - .. code:: text - - double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num) - double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num) - - File: :file:`fock_matrix_ks.irp.f` - - Mono electronic an Coulomb matrix in ao basis set - - - - -.. c:var:: fock_matrix_energy - - .. code:: text - - double precision :: ks_energy - double precision :: two_electron_energy - double precision :: one_electron_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - File: :file:`ks_enery.irp.f` - - Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - - - .. c:var:: ks_energy .. code:: text @@ -236,114 +66,3 @@ Providers Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - -.. c:var:: one_electron_energy - - .. code:: text - - double precision :: ks_energy - double precision :: two_electron_energy - double precision :: one_electron_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - File: :file:`ks_enery.irp.f` - - Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - - - -.. c:var:: trace_potential_xc - - .. code:: text - - double precision :: ks_energy - double precision :: two_electron_energy - double precision :: one_electron_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - File: :file:`ks_enery.irp.f` - - Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - - - -.. c:var:: two_electron_energy - - .. code:: text - - double precision :: ks_energy - double precision :: two_electron_energy - double precision :: one_electron_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - File: :file:`ks_enery.irp.f` - - Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: check_coherence_functional - - .. code:: text - - subroutine check_coherence_functional - - File: :file:`ks_scf.irp.f` - - - - - - - -.. c:function:: create_guess - - .. code:: text - - subroutine create_guess - - File: :file:`ks_scf.irp.f` - - Create a MO guess if no MOs are present in the EZFIO directory - - - - - -.. c:function:: run - - .. code:: text - - subroutine run - - File: :file:`ks_scf.irp.f` - - Run SCF calculation - - - - - -.. c:function:: srs_ks_cf - - .. code:: text - - subroutine srs_ks_cf - - File: :file:`ks_scf.irp.f` - - Produce `Kohn_Sham` MO orbital output: mo_basis.mo_tot_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: kohn_sham.energy optional: mo_basis.mo_coef - - diff --git a/docs/source/modules/kohn_sham_rs.rst b/docs/source/modules/kohn_sham_rs.rst index 7eb3ec6e..58c89250 100644 --- a/docs/source/modules/kohn_sham_rs.rst +++ b/docs/source/modules/kohn_sham_rs.rst @@ -51,6 +51,122 @@ Providers --------- +.. c:var:: ao_potential_alpha_xc + + .. code:: text + + double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num) + double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num) + + File: :file:`pot_functionals.irp.f` + + + + + + +.. c:var:: ao_potential_beta_xc + + .. code:: text + + double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num) + double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num) + + File: :file:`pot_functionals.irp.f` + + + + + + +.. c:var:: e_correlation_dft + + .. code:: text + + double precision :: e_correlation_dft + + File: :file:`pot_functionals.irp.f` + + + + + + +.. c:var:: e_exchange_dft + + .. code:: text + + double precision :: e_exchange_dft + + File: :file:`pot_functionals.irp.f` + + + + + + +.. c:var:: fock_matrix_alpha_no_xc_ao + + .. code:: text + + double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num) + double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num) + + File: :file:`fock_matrix_rs_ks.irp.f` + + Mono electronic an Coulomb matrix in AO basis set + + + + +.. c:var:: fock_matrix_beta_no_xc_ao + + .. code:: text + + double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num) + double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num) + + File: :file:`fock_matrix_rs_ks.irp.f` + + Mono electronic an Coulomb matrix in AO basis set + + + + +.. c:var:: fock_matrix_energy + + .. code:: text + + double precision :: rs_ks_energy + double precision :: two_electron_energy + double precision :: one_electron_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + File: :file:`rs_ks_energy.irp.f` + + Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + + + +.. c:var:: one_electron_energy + + .. code:: text + + double precision :: rs_ks_energy + double precision :: two_electron_energy + double precision :: one_electron_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + File: :file:`rs_ks_energy.irp.f` + + Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + + + .. c:var:: rs_ks_energy .. code:: text @@ -66,3 +182,69 @@ Providers Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + +.. c:var:: trace_potential_xc + + .. code:: text + + double precision :: rs_ks_energy + double precision :: two_electron_energy + double precision :: one_electron_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + File: :file:`rs_ks_energy.irp.f` + + Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + + + +.. c:var:: two_electron_energy + + .. code:: text + + double precision :: rs_ks_energy + double precision :: two_electron_energy + double precision :: one_electron_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + File: :file:`rs_ks_energy.irp.f` + + Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: check_coherence_functional + + .. code:: text + + subroutine check_coherence_functional + + File: :file:`rs_ks_scf.irp.f` + + + + + + + +.. c:function:: srs_ks_cf + + .. code:: text + + subroutine srs_ks_cf + + File: :file:`rs_ks_scf.irp.f` + + Produce `Range_separated_Kohn_Sham` MO orbital output: mo_basis.mo_tot_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: kohn_sham.energy optional: mo_basis.mo_coef + + diff --git a/docs/source/modules/perturbation.rst b/docs/source/modules/perturbation.rst index 09bcc0e8..cf12baf7 100644 --- a/docs/source/modules/perturbation.rst +++ b/docs/source/modules/perturbation.rst @@ -203,21 +203,6 @@ Subroutines / functions -.. c:function:: i_h_psi_pert_new_minilist - - .. code:: text - - subroutine i_H_psi_pert_new_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array,coef_pert) - - File: :file:`pt2_new.irp.f` - - Computes = \sum_J c_J . - Uses filter_connected_i_H_psi0 to get all the |J> to which |i> is connected. The |J> are searched in short pre-computed lists. - - - - - .. c:function:: perturb_buffer_by_mono_decontracted .. code:: text diff --git a/docs/source/modules/psiref_cas.rst b/docs/source/modules/psiref_cas.rst index cf1c5c64..fe4e38ae 100644 --- a/docs/source/modules/psiref_cas.rst +++ b/docs/source/modules/psiref_cas.rst @@ -12,166 +12,3 @@ Reference wave function is defined as a |CAS| wave function. This module is required for |CAS-SD|, |MRPT| or |MRCC|. - - -Providers ---------- - - -.. c:var:: idx_ref - - .. code:: text - - integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size) - double precision, allocatable :: psi_ref_coef (psi_det_size,n_states) - integer, allocatable :: idx_ref (psi_det_size) - integer :: n_det_ref - - File: :file:`psi_ref.irp.f` - - CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. - - - - -.. c:var:: inv_norm_psi_ref - - .. code:: text - - double precision, allocatable :: norm_psi_ref (N_states) - double precision, allocatable :: inv_norm_psi_ref (N_states) - - File: :file:`psi_ref.irp.f` - - - - - - -.. c:var:: n_det_ref - - .. code:: text - - integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size) - double precision, allocatable :: psi_ref_coef (psi_det_size,n_states) - integer, allocatable :: idx_ref (psi_det_size) - integer :: n_det_ref - - File: :file:`psi_ref.irp.f` - - CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. - - - - -.. c:var:: norm_psi_ref - - .. code:: text - - double precision, allocatable :: norm_psi_ref (N_states) - double precision, allocatable :: inv_norm_psi_ref (N_states) - - File: :file:`psi_ref.irp.f` - - - - - - -.. c:var:: psi_non_ref_coef_interm_norm - - .. code:: text - - double precision, allocatable :: psi_non_ref_coef_interm_norm (N_det_non_ref,N_states) - - File: :file:`psi_ref.irp.f` - - - - - - -.. c:var:: psi_ref - - .. code:: text - - integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size) - double precision, allocatable :: psi_ref_coef (psi_det_size,n_states) - integer, allocatable :: idx_ref (psi_det_size) - integer :: n_det_ref - - File: :file:`psi_ref.irp.f` - - CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. - - - - -.. c:var:: psi_ref_coef - - .. code:: text - - integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size) - double precision, allocatable :: psi_ref_coef (psi_det_size,n_states) - integer, allocatable :: idx_ref (psi_det_size) - integer :: n_det_ref - - File: :file:`psi_ref.irp.f` - - CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. - - - - -.. c:var:: psi_ref_coef_interm_norm - - .. code:: text - - double precision, allocatable :: psi_ref_coef_interm_norm (N_det_ref,N_states) - - File: :file:`psi_ref.irp.f` - - - - - - -.. c:var:: psi_ref_coef_inv - - .. code:: text - - double precision, allocatable :: psi_ref_coef_inv (psi_det_size,n_states) - - File: :file:`psi_ref.irp.f` - - 1/psi_ref_coef - - - - -.. c:var:: psi_ref_coef_restart - - .. code:: text - - integer(bit_kind), allocatable :: psi_ref_restart (N_int,2,psi_det_size) - double precision, allocatable :: psi_ref_coef_restart (psi_det_size,n_states) - - File: :file:`psi_ref.irp.f` - - Projection of the CAS wave function on the restart wave function. - - - - -.. c:var:: psi_ref_restart - - .. code:: text - - integer(bit_kind), allocatable :: psi_ref_restart (N_int,2,psi_det_size) - double precision, allocatable :: psi_ref_coef_restart (psi_det_size,n_states) - - File: :file:`psi_ref.irp.f` - - Projection of the CAS wave function on the restart wave function. - - diff --git a/docs/source/modules/psiref_utils.rst b/docs/source/modules/psiref_utils.rst index 62c778f0..634ecb61 100644 --- a/docs/source/modules/psiref_utils.rst +++ b/docs/source/modules/psiref_utils.rst @@ -14,369 +14,3 @@ needs to be loaded with any `psi_ref_*` module. - - -Providers ---------- - - -.. c:var:: h_matrix_ref - - .. code:: text - - double precision, allocatable :: h_matrix_ref (N_det_ref,N_det_ref) - - File: :file:`psi_ref_utils.irp.f` - - - - - - -.. c:var:: holes_operators - - .. code:: text - - integer(bit_kind), allocatable :: holes_operators (N_int,2) - integer(bit_kind), allocatable :: particles_operators (N_int,2) - - File: :file:`psi_ref_excitations_operators.irp.f` - - holes_operators represents an array of integers where all the holes have been done going from psi_ref to psi_non_ref particles_operators represents an array of integers where all the particles have been done going from psi_ref to psi_non_ref - - - - -.. c:var:: idx_non_ref - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states) - integer, allocatable :: idx_non_ref (psi_det_size) - integer, allocatable :: idx_non_ref_rev (psi_det_size) - integer :: n_det_non_ref - - File: :file:`psi_ref_utils.irp.f` - - Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse. - - - - -.. c:var:: idx_non_ref_from_sorted - - .. code:: text - - integer, allocatable :: idx_non_ref_from_sorted (N_det) - - File: :file:`psi_ref_utils.irp.f` - - - - - - -.. c:var:: idx_non_ref_rev - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states) - integer, allocatable :: idx_non_ref (psi_det_size) - integer, allocatable :: idx_non_ref_rev (psi_det_size) - integer :: n_det_non_ref - - File: :file:`psi_ref_utils.irp.f` - - Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse. - - - - -.. c:var:: n_det_non_ref - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states) - integer, allocatable :: idx_non_ref (psi_det_size) - integer, allocatable :: idx_non_ref_rev (psi_det_size) - integer :: n_det_non_ref - - File: :file:`psi_ref_utils.irp.f` - - Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse. - - - - -.. c:var:: particles_operators - - .. code:: text - - integer(bit_kind), allocatable :: holes_operators (N_int,2) - integer(bit_kind), allocatable :: particles_operators (N_int,2) - - File: :file:`psi_ref_excitations_operators.irp.f` - - holes_operators represents an array of integers where all the holes have been done going from psi_ref to psi_non_ref particles_operators represents an array of integers where all the particles have been done going from psi_ref to psi_non_ref - - - - -.. c:var:: psi_non_ref - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states) - integer, allocatable :: idx_non_ref (psi_det_size) - integer, allocatable :: idx_non_ref_rev (psi_det_size) - integer :: n_det_non_ref - - File: :file:`psi_ref_utils.irp.f` - - Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse. - - - - -.. c:var:: psi_non_ref_coef - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states) - integer, allocatable :: idx_non_ref (psi_det_size) - integer, allocatable :: idx_non_ref_rev (psi_det_size) - integer :: n_det_non_ref - - File: :file:`psi_ref_utils.irp.f` - - Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse. - - - - -.. c:var:: psi_non_ref_coef_restart - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_ref_restart (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_ref_coef_restart (psi_det_size,n_states) - - File: :file:`psi_ref_utils.irp.f` - - Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. But this is with respect to the restart wave function. - - - - -.. c:var:: psi_non_ref_coef_sorted_bit - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_ref_sorted_bit (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_ref_coef_sorted_bit (psi_det_size,N_states) - - File: :file:`psi_ref_utils.irp.f` - - Reference determinants sorted to accelerate the search of a random determinant in the wave function. - - - - -.. c:var:: psi_non_ref_coef_transp - - .. code:: text - - double precision, allocatable :: psi_non_ref_coef_transp (n_states,psi_det_size) - - File: :file:`psi_ref_utils.irp.f` - - Transposed psi_non_ref_coef - - - - -.. c:var:: psi_non_ref_restart - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_ref_restart (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_ref_coef_restart (psi_det_size,n_states) - - File: :file:`psi_ref_utils.irp.f` - - Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. But this is with respect to the restart wave function. - - - - -.. c:var:: psi_non_ref_sorted_bit - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_ref_sorted_bit (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_ref_coef_sorted_bit (psi_det_size,N_states) - - File: :file:`psi_ref_utils.irp.f` - - Reference determinants sorted to accelerate the search of a random determinant in the wave function. - - - - -.. c:var:: psi_ref_coef_diagonalized - - .. code:: text - - double precision, allocatable :: psi_ref_coef_diagonalized (N_det_ref,N_states) - double precision, allocatable :: psi_ref_energy_diagonalized (N_states) - - File: :file:`psi_ref_utils.irp.f` - - - - - - -.. c:var:: psi_ref_coef_normalized - - .. code:: text - - double precision, allocatable :: psi_ref_coef_normalized (psi_det_size,n_states) - - File: :file:`psi_ref_utils.irp.f` - - Normalized coefficients of the reference - - - - -.. c:var:: psi_ref_coef_sorted_bit - - .. code:: text - - integer(bit_kind), allocatable :: psi_ref_sorted_bit (N_int,2,psi_det_size) - double precision, allocatable :: psi_ref_coef_sorted_bit (psi_det_size,N_states) - - File: :file:`psi_ref_utils.irp.f` - - Reference determinants sorted to accelerate the search of a random determinant in the wave function. - - - - -.. c:var:: psi_ref_coef_transp - - .. code:: text - - double precision, allocatable :: psi_ref_coef_transp (n_states,psi_det_size) - - File: :file:`psi_ref_utils.irp.f` - - Transposed psi_ref_coef - - - - -.. c:var:: psi_ref_energy - - .. code:: text - - double precision, allocatable :: psi_ref_energy (N_states) - - File: :file:`psi_ref_utils.irp.f` - - - - - - -.. c:var:: psi_ref_energy_diagonalized - - .. code:: text - - double precision, allocatable :: psi_ref_coef_diagonalized (N_det_ref,N_states) - double precision, allocatable :: psi_ref_energy_diagonalized (N_states) - - File: :file:`psi_ref_utils.irp.f` - - - - - - -.. c:var:: psi_ref_sorted_bit - - .. code:: text - - integer(bit_kind), allocatable :: psi_ref_sorted_bit (N_int,2,psi_det_size) - double precision, allocatable :: psi_ref_coef_sorted_bit (psi_det_size,N_states) - - File: :file:`psi_ref_utils.irp.f` - - Reference determinants sorted to accelerate the search of a random determinant in the wave function. - - - - -.. c:var:: ref_hamiltonian_matrix - - .. code:: text - - double precision, allocatable :: ref_hamiltonian_matrix (n_det_ref,n_det_ref) - - File: :file:`psi_ref_utils.irp.f` - - H matrix in the Reference space - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: extract_ref - - .. code:: text - - subroutine extract_ref - - File: :file:`extract_ref.irp.f` - - Replaces the total wave function by the normalized projection on the reference - - - - - -.. c:function:: get_index_in_psi_ref_sorted_bit - - .. code:: text - - integer function get_index_in_psi_ref_sorted_bit(key,Nint) - - File: :file:`psi_ref_utils.irp.f` - - Returns the index of the determinant in the ``psi_ref_sorted_bit`` array - - - - - -.. c:function:: is_in_psi_ref - - .. code:: text - - logical function is_in_psi_ref(key,Nint) - - File: :file:`psi_ref_utils.irp.f` - - True if the determinant ``det`` is in the wave function - - diff --git a/docs/source/modules/slave.rst b/docs/source/modules/slave.rst index 74b75541..31cbd7f1 100644 --- a/docs/source/modules/slave.rst +++ b/docs/source/modules/slave.rst @@ -32,20 +32,6 @@ Subroutines / functions -.. c:function:: qp_ao_ints - - .. code:: text - - subroutine qp_ao_ints - - File: :file:`slave_eri.irp.f` - - Slave for electron repulsion integrals - - - - - .. c:function:: run_wf .. code:: text diff --git a/docs/source/programmers_guide/index_providers.rst b/docs/source/programmers_guide/index_providers.rst index 446cc193..72baecef 100644 --- a/docs/source/programmers_guide/index_providers.rst +++ b/docs/source/programmers_guide/index_providers.rst @@ -8,8 +8,10 @@ Index of Providers * :c:data:`ao_bi_elec_integral_alpha` * :c:data:`ao_bi_elec_integral_beta` * :c:data:`ao_bielec_integral_erf_schwartz` +* :c:data:`ao_bielec_integral_ijkl_r3_schwartz` * :c:data:`ao_bielec_integral_schwartz` * :c:data:`ao_bielec_integrals_erf_in_map` +* :c:data:`ao_bielec_integrals_ijkl_r3_in_map` * :c:data:`ao_bielec_integrals_in_map` * :c:data:`ao_cart_to_sphe_coef` * :c:data:`ao_cart_to_sphe_inv` @@ -43,6 +45,10 @@ Index of Providers * :c:data:`ao_integrals_erf_cache_max` * :c:data:`ao_integrals_erf_cache_min` * :c:data:`ao_integrals_erf_map` +* :c:data:`ao_integrals_ijkl_r3_cache` +* :c:data:`ao_integrals_ijkl_r3_cache_max` +* :c:data:`ao_integrals_ijkl_r3_cache_min` +* :c:data:`ao_integrals_ijkl_r3_map` * :c:data:`ao_integrals_map` * :c:data:`ao_integrals_threshold` * :c:data:`ao_kinetic_integral` @@ -112,11 +118,17 @@ Index of Providers * :c:data:`aos_vx_alpha_pbe_w` * :c:data:`aos_vx_beta_lda_w` * :c:data:`aos_vx_beta_pbe_w` -* :c:data:`apply_exc_to_psi` +* :c:data:`approx_svd_two_dm` +* :c:data:`approx_svd_two_dm_correl` +* :c:data:`approx_two_dm_map` +* :c:data:`approx_two_dm_map_rev` * :c:data:`barycentric_electronic_energy` * :c:data:`bi_elec_ref_bitmask_energy` +* :c:data:`bi_elec_ref_bitmask_energy_erf` * :c:data:`big_array_coulomb_integrals` +* :c:data:`big_array_coulomb_integrals_ijkl_r3` * :c:data:`big_array_exchange_integrals` +* :c:data:`big_array_exchange_integrals_ijkl_r3` * :c:data:`binom` * :c:data:`binom_int` * :c:data:`binom_int_transp` @@ -134,12 +146,8 @@ Index of Providers * :c:data:`cart_to_sphe_9` * :c:data:`cas_bitmask` * :c:data:`center_of_mass` -* :c:data:`ci_dressed_pt2_new_eigenvectors` -* :c:data:`ci_dressed_pt2_new_eigenvectors_s2` -* :c:data:`ci_dressed_pt2_new_energy` * :c:data:`ci_eigenvectors` * :c:data:`ci_eigenvectors_s2` -* :c:data:`ci_electronic_dressed_pt2_new_energy` * :c:data:`ci_electronic_energy` * :c:data:`ci_energy` * :c:data:`closed_shell_ref_bitmask` @@ -151,7 +159,6 @@ Index of Providers * :c:data:`core_fock_operator_erf` * :c:data:`core_inact_act_bitmask_4` * :c:data:`core_inact_virt_bitmask` -* :c:data:`corr_e_from_1h1p` * :c:data:`correlation_energy_ratio_max` * :c:data:`correlation_functional` * :c:data:`damping_for_rs_dft` @@ -164,7 +171,6 @@ Index of Providers * :c:data:`degree_max_generators` * :c:data:`degree_max_integration_lebedev` * :c:data:`delta_e_per_selector` -* :c:data:`delta_ij_mrpt` * :c:data:`density_for_dft` * :c:data:`det_alpha_norm` * :c:data:`det_beta_norm` @@ -172,9 +178,11 @@ Index of Providers * :c:data:`dft_type` * :c:data:`diag_algorithm` * :c:data:`diagonal_h_matrix_on_psi_det` +* :c:data:`disk_access_ao_ijkl_r3` * :c:data:`disk_access_ao_integrals` * :c:data:`disk_access_ao_integrals_erf` * :c:data:`disk_access_ao_one_integrals` +* :c:data:`disk_access_mo_ijkl_r3` * :c:data:`disk_access_mo_integrals` * :c:data:`disk_access_mo_integrals_erf` * :c:data:`disk_access_mo_one_integrals` @@ -184,7 +192,6 @@ Index of Providers * :c:data:`do_direct_integrals` * :c:data:`do_pseudo` * :c:data:`do_pt2` -* :c:data:`do_third_order_1h1p` * :c:data:`double_exc_bitmask` * :c:data:`double_index_selectors` * :c:data:`dr_radial_integral` @@ -206,13 +213,16 @@ Index of Providers * :c:data:`elec_beta_num` * :c:data:`elec_num` * :c:data:`elec_num_tab` +* :c:data:`electronic_energy_mr_dft` * :c:data:`element_mass` * :c:data:`element_name` * :c:data:`energy_c` * :c:data:`energy_c_lda` +* :c:data:`energy_c_md_lda` +* :c:data:`energy_c_md_on_top` +* :c:data:`energy_c_md_on_top_pbe_mu_ueg_vector` +* :c:data:`energy_c_md_on_top_pbe_mu_vector` * :c:data:`energy_c_pbe` -* :c:data:`energy_cas_dyall` -* :c:data:`energy_cas_dyall_no_exchange` * :c:data:`energy_iterations` * :c:data:`energy_sr_c_lda` * :c:data:`energy_sr_c_pbe` @@ -232,12 +242,8 @@ Index of Providers * :c:data:`fact_inv` * :c:data:`fill_h_apply_buffer_selection` * :c:data:`final_grid_points` -* :c:data:`final_weight_functions_at_final_grid_points` -* :c:data:`final_weight_functions_at_grid_points` -* :c:data:`fock_core_inactive` -* :c:data:`fock_core_inactive_from_act` -* :c:data:`fock_core_inactive_total` -* :c:data:`fock_core_inactive_total_spin_trace` +* :c:data:`final_weight_at_r` +* :c:data:`final_weight_at_r_vector` * :c:data:`fock_matrix_alpha_no_xc_ao` * :c:data:`fock_matrix_ao` * :c:data:`fock_matrix_ao_alpha` @@ -248,12 +254,7 @@ Index of Providers * :c:data:`fock_matrix_mo` * :c:data:`fock_matrix_mo_alpha` * :c:data:`fock_matrix_mo_beta` -* :c:data:`fock_operator_active_from_core_inact` * :c:data:`fock_operator_closed_shell_ref_bitmask` -* :c:data:`fock_virt_from_act` -* :c:data:`fock_virt_from_core_inact` -* :c:data:`fock_virt_total` -* :c:data:`fock_virt_total_spin_trace` * :c:data:`fock_wee_closed_shell` * :c:data:`fps_spf_matrix_ao` * :c:data:`fps_spf_matrix_mo` @@ -261,17 +262,12 @@ Index of Providers * :c:data:`full_ijkl_bitmask_4` * :c:data:`gauleg_t2` * :c:data:`gauleg_w` -* :c:data:`gen_det_ref_idx` -* :c:data:`gen_det_ref_shortcut` -* :c:data:`gen_det_ref_sorted` -* :c:data:`gen_det_ref_version` * :c:data:`general_primitive_integral` * :c:data:`general_primitive_integral_erf` * :c:data:`generators_bitmask` * :c:data:`generators_bitmask_restart` * :c:data:`gga_sr_type_functionals` * :c:data:`gga_type_functionals` -* :c:data:`give_holes_and_particles_in_active_space` * :c:data:`grad_aos_dsr_vc_alpha_pbe_w` * :c:data:`grad_aos_dsr_vc_beta_pbe_w` * :c:data:`grad_aos_dsr_vx_alpha_pbe_w` @@ -287,15 +283,11 @@ Index of Providers * :c:data:`h_apply_buffer_lock` * :c:data:`h_matrix_all_dets` * :c:data:`h_matrix_cas` -* :c:data:`h_matrix_ref` * :c:data:`hf_bitmask` * :c:data:`hf_energy` * :c:data:`hf_exchange` * :c:data:`hf_one_electron_energy` * :c:data:`hf_two_electron_energy` -* :c:data:`hmatrix_dressed_pt2_new` -* :c:data:`hmatrix_dressed_pt2_new_symmetrized` -* :c:data:`holes_operators` * :c:data:`i2radix_sort` * :c:data:`i8radix_sort` * :c:data:`i8radix_sort_big` @@ -311,10 +303,6 @@ Index of Providers * :c:data:`i_x2_pol_mult_mono_elec` * :c:data:`idx_cas` * :c:data:`idx_non_cas` -* :c:data:`idx_non_ref` -* :c:data:`idx_non_ref_from_sorted` -* :c:data:`idx_non_ref_rev` -* :c:data:`idx_ref` * :c:data:`inact_bitmask` * :c:data:`inact_virt_bitmask` * :c:data:`index_final_points` @@ -326,13 +314,14 @@ Index of Providers * :c:data:`inertia_tensor_eigenvectors` * :c:data:`initialize_pt2_e0_denominator` * :c:data:`insert_into_mo_integrals_erf_map` +* :c:data:`insert_into_mo_integrals_ijkl_r3_map` * :c:data:`insert_into_mo_integrals_map` * :c:data:`int_erf_3_index` * :c:data:`int_erf_3_index_exc` -* :c:data:`integral_density_alpha_knowles_becke_per_atom` -* :c:data:`integral_density_beta_knowles_becke_per_atom` +* :c:data:`int_on_top_of_r_approx_svd` +* :c:data:`int_on_top_of_r_approx_svd_correl` +* :c:data:`integral_on_top` * :c:data:`inv_int` -* :c:data:`inv_norm_psi_ref` * :c:data:`inv_selectors_coef_hf` * :c:data:`inv_selectors_coef_hf_squared` * :c:data:`iradix_sort` @@ -341,6 +330,10 @@ Index of Providers * :c:data:`ks_energy` * :c:data:`l3_weight` * :c:data:`l_to_charater` +* :c:data:`l_vec_approx_svd_two_dm` +* :c:data:`l_vec_approx_svd_two_dm_at_r` +* :c:data:`l_vec_approx_svd_two_dm_at_r_correl` +* :c:data:`l_vec_approx_svd_two_dm_correl` * :c:data:`level_shift` * :c:data:`list_act` * :c:data:`list_act_reverse` @@ -358,6 +351,12 @@ Index of Providers * :c:data:`max_degree_exc` * :c:data:`max_dim_diis` * :c:data:`max_exc_pert` +* :c:data:`mo_bielec_integral_ijkl_r3_jj` +* :c:data:`mo_bielec_integral_ijkl_r3_jj_anti` +* :c:data:`mo_bielec_integral_ijkl_r3_jj_anti_from_ao` +* :c:data:`mo_bielec_integral_ijkl_r3_jj_exchange` +* :c:data:`mo_bielec_integral_ijkl_r3_jj_exchange_from_ao` +* :c:data:`mo_bielec_integral_ijkl_r3_jj_from_ao` * :c:data:`mo_bielec_integral_jj` * :c:data:`mo_bielec_integral_jj_anti` * :c:data:`mo_bielec_integral_jj_anti_from_ao` @@ -368,6 +367,7 @@ Index of Providers * :c:data:`mo_bielec_integral_vv_exchange_from_ao` * :c:data:`mo_bielec_integral_vv_from_ao` * :c:data:`mo_bielec_integrals_erf_in_map` +* :c:data:`mo_bielec_integrals_ijkl_r3_in_map` * :c:data:`mo_bielec_integrals_in_map` * :c:data:`mo_class` * :c:data:`mo_coef` @@ -388,6 +388,10 @@ Index of Providers * :c:data:`mo_integrals_erf_cache_max` * :c:data:`mo_integrals_erf_cache_min` * :c:data:`mo_integrals_erf_map` +* :c:data:`mo_integrals_ijkl_r3_cache` +* :c:data:`mo_integrals_ijkl_r3_cache_max` +* :c:data:`mo_integrals_ijkl_r3_cache_min` +* :c:data:`mo_integrals_ijkl_r3_map` * :c:data:`mo_integrals_map` * :c:data:`mo_integrals_threshold` * :c:data:`mo_kinetic_integral` @@ -423,6 +427,8 @@ Index of Providers * :c:data:`mu_erf_dft` * :c:data:`n_act_orb` * :c:data:`n_aos_max` +* :c:data:`n_approx_svd_two_dm` +* :c:data:`n_approx_svd_two_dm_correl` * :c:data:`n_cas_bitmask` * :c:data:`n_core_inact_act_orb` * :c:data:`n_core_inact_orb` @@ -437,8 +443,6 @@ Index of Providers * :c:data:`n_det_max` * :c:data:`n_det_max_full` * :c:data:`n_det_non_cas` -* :c:data:`n_det_non_ref` -* :c:data:`n_det_ref` * :c:data:`n_det_selectors` * :c:data:`n_double_exc_bitmasks` * :c:data:`n_double_selectors` @@ -449,6 +453,8 @@ Index of Providers * :c:data:`n_int` * :c:data:`n_it_scf_max` * :c:data:`n_iter` +* :c:data:`n_max_approx_svd_two_dm` +* :c:data:`n_max_approx_svd_two_dm_correl` * :c:data:`n_occ_pattern` * :c:data:`n_points_final_grid` * :c:data:`n_points_grid_per_atom` @@ -466,7 +472,6 @@ Index of Providers * :c:data:`no_oa_or_av_opt` * :c:data:`no_vvv_integrals` * :c:data:`no_vvvv_integrals` -* :c:data:`norm_psi_ref` * :c:data:`nproc` * :c:data:`nthreads_davidson` * :c:data:`nucl_aos` @@ -488,31 +493,24 @@ Index of Providers * :c:data:`nucl_num` * :c:data:`nucl_num_shell_aos` * :c:data:`nuclear_repulsion` -* :c:data:`one_anhil` -* :c:data:`one_anhil_inact` -* :c:data:`one_anhil_one_creat` -* :c:data:`one_anhil_one_creat_inact_virt` -* :c:data:`one_anhil_one_creat_inact_virt_bis` -* :c:data:`one_anhil_one_creat_inact_virt_norm` -* :c:data:`one_body_dm_alpha_and_grad_at_r` +* :c:data:`on_top_of_r` +* :c:data:`on_top_of_r_approx_svd` +* :c:data:`on_top_of_r_approx_svd_correl` +* :c:data:`on_top_of_r_exact` +* :c:data:`on_top_of_r_vector` * :c:data:`one_body_dm_alpha_ao_for_dft` * :c:data:`one_body_dm_alpha_at_r` * :c:data:`one_body_dm_ao_alpha` * :c:data:`one_body_dm_ao_beta` * :c:data:`one_body_dm_average_mo_for_dft` -* :c:data:`one_body_dm_beta_and_grad_at_r` * :c:data:`one_body_dm_beta_ao_for_dft` * :c:data:`one_body_dm_beta_at_r` * :c:data:`one_body_dm_dagger_mo_spin_index` * :c:data:`one_body_dm_mo` * :c:data:`one_body_dm_mo_alpha` -* :c:data:`one_body_dm_mo_alpha_and_grad_at_grid_points` -* :c:data:`one_body_dm_mo_alpha_at_grid_points` * :c:data:`one_body_dm_mo_alpha_average` * :c:data:`one_body_dm_mo_alpha_for_dft` * :c:data:`one_body_dm_mo_beta` -* :c:data:`one_body_dm_mo_beta_and_grad_at_grid_points` -* :c:data:`one_body_dm_mo_beta_at_grid_points` * :c:data:`one_body_dm_mo_beta_average` * :c:data:`one_body_dm_mo_beta_for_dft` * :c:data:`one_body_dm_mo_diff` @@ -524,14 +522,16 @@ Index of Providers * :c:data:`one_body_single_double_dm_mo_beta` * :c:data:`one_body_spin_density_ao` * :c:data:`one_body_spin_density_mo` -* :c:data:`one_creat` -* :c:data:`one_creat_virt` +* :c:data:`one_dm_alpha_in_r` +* :c:data:`one_dm_and_grad_alpha_in_r` +* :c:data:`one_dm_and_grad_beta_in_r` +* :c:data:`one_dm_beta_in_r` * :c:data:`one_electron_energy` * :c:data:`only_expected_s2` +* :c:data:`ontop_approx` * :c:data:`output_cpu_time_0` * :c:data:`output_wall_time_0` * :c:data:`overlap_gaussian_xyz` -* :c:data:`particles_operators` * :c:data:`phi_angular_integration_lebedev` * :c:data:`potential_c_alpha_ao` * :c:data:`potential_c_alpha_ao_lda` @@ -574,7 +574,6 @@ Index of Providers * :c:data:`pseudo_v_k_transp` * :c:data:`pseudo_v_kl` * :c:data:`pseudo_v_kl_transp` -* :c:data:`psi_active` * :c:data:`psi_average_norm_contrib` * :c:data:`psi_average_norm_contrib_sorted` * :c:data:`psi_bilinear_matrix` @@ -622,36 +621,16 @@ Index of Providers * :c:data:`psi_dft_energy_nuclear_elec` * :c:data:`psi_energy` * :c:data:`psi_energy_bielec` +* :c:data:`psi_energy_erf` * :c:data:`psi_energy_h_core` +* :c:data:`psi_energy_h_core_and_sr_hartree` * :c:data:`psi_energy_with_nucl_rep` * :c:data:`psi_non_cas` * :c:data:`psi_non_cas_coef` * :c:data:`psi_non_cas_coef_sorted_bit` * :c:data:`psi_non_cas_sorted_bit` -* :c:data:`psi_non_ref` -* :c:data:`psi_non_ref_coef` -* :c:data:`psi_non_ref_coef_interm_norm` -* :c:data:`psi_non_ref_coef_restart` -* :c:data:`psi_non_ref_coef_sorted_bit` -* :c:data:`psi_non_ref_coef_transp` -* :c:data:`psi_non_ref_restart` -* :c:data:`psi_non_ref_sorted_bit` * :c:data:`psi_occ_pattern` * :c:data:`psi_occ_pattern_hii` -* :c:data:`psi_ref` -* :c:data:`psi_ref_bis_lock` -* :c:data:`psi_ref_coef` -* :c:data:`psi_ref_coef_diagonalized` -* :c:data:`psi_ref_coef_interm_norm` -* :c:data:`psi_ref_coef_inv` -* :c:data:`psi_ref_coef_normalized` -* :c:data:`psi_ref_coef_restart` -* :c:data:`psi_ref_coef_sorted_bit` -* :c:data:`psi_ref_coef_transp` -* :c:data:`psi_ref_energy` -* :c:data:`psi_ref_energy_diagonalized` -* :c:data:`psi_ref_restart` -* :c:data:`psi_ref_sorted_bit` * :c:data:`psi_selectors` * :c:data:`psi_selectors_coef` * :c:data:`psi_selectors_coef_transp` @@ -677,11 +656,17 @@ Index of Providers * :c:data:`pt2_w_t` * :c:data:`qp_max_mem` * :c:data:`qp_run_address` +* :c:data:`r_vec_approx_svd_two_dm` +* :c:data:`r_vec_approx_svd_two_dm_at_r` +* :c:data:`r_vec_approx_svd_two_dm_at_r_correl` +* :c:data:`r_vec_approx_svd_two_dm_correl` * :c:data:`read_ao_integrals` * :c:data:`read_ao_integrals_erf` +* :c:data:`read_ao_integrals_ijkl_r3` * :c:data:`read_ao_one_integrals` * :c:data:`read_mo_integrals` * :c:data:`read_mo_integrals_erf` +* :c:data:`read_mo_integrals_ijkl_r3` * :c:data:`read_mo_one_integrals` * :c:data:`read_wf` * :c:data:`rec__quicksort` @@ -691,8 +676,8 @@ Index of Providers * :c:data:`rec_i_quicksort` * :c:data:`ref_bitmask` * :c:data:`ref_bitmask_energy` +* :c:data:`ref_bitmask_energy_erf` * :c:data:`ref_closed_shell_bitmask` -* :c:data:`ref_hamiltonian_matrix` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` * :c:data:`reunion_of_core_inact_act_bitmask` @@ -711,15 +696,6 @@ Index of Providers * :c:data:`scf_density_matrix_ao_alpha` * :c:data:`scf_density_matrix_ao_beta` * :c:data:`scf_energy` -* :c:data:`second_order_pt_new` -* :c:data:`second_order_pt_new_1h` -* :c:data:`second_order_pt_new_1h1p` -* :c:data:`second_order_pt_new_1h2p` -* :c:data:`second_order_pt_new_1p` -* :c:data:`second_order_pt_new_2h` -* :c:data:`second_order_pt_new_2h1p` -* :c:data:`second_order_pt_new_2h2p` -* :c:data:`second_order_pt_new_2p` * :c:data:`select_max` * :c:data:`selection_criterion` * :c:data:`selection_criterion_factor` @@ -743,8 +719,7 @@ Index of Providers * :c:data:`state_following` * :c:data:`target_energy` * :c:data:`theta_angular_integration_lebedev` -* :c:data:`three_anhil` -* :c:data:`three_creat` +* :c:data:`thr_ontop_approx` * :c:data:`thresh_scf` * :c:data:`threshold_davidson` * :c:data:`threshold_diis` @@ -756,25 +731,27 @@ Index of Providers * :c:data:`trace_v_hxc` * :c:data:`trace_v_xc` * :c:data:`transpose` -* :c:data:`two_anhil` -* :c:data:`two_anhil_one_creat` -* :c:data:`two_creat` -* :c:data:`two_creat_one_anhil` +* :c:data:`two_bod_alpha_beta_mo` +* :c:data:`two_bod_alpha_beta_mo_physicist` +* :c:data:`two_elec_energy_dft` * :c:data:`two_electron_energy` * :c:data:`unpaired_alpha_electrons` * :c:data:`used_weight` * :c:data:`var_pt2_ratio` +* :c:data:`var_rsdft_energy` * :c:data:`virt_bitmask` * :c:data:`virt_bitmask_4` -* :c:data:`weight_functions_at_grid_points` +* :c:data:`weight_at_r` * :c:data:`weight_occ_pattern` * :c:data:`weights_angular_integration_lebedev` * :c:data:`weights_angular_points` * :c:data:`write_ao_integrals` * :c:data:`write_ao_integrals_erf` +* :c:data:`write_ao_integrals_ijkl_r3` * :c:data:`write_ao_one_integrals` * :c:data:`write_mo_integrals` * :c:data:`write_mo_integrals_erf` +* :c:data:`write_mo_integrals_ijkl_r3` * :c:data:`write_mo_one_integrals` * :c:data:`zmq_context` * :c:data:`zmq_lock` @@ -797,6 +774,7 @@ Index of Subroutines/Functions * :c:func:`ac_operator_bielec` * :c:func:`add_integrals_to_map` * :c:func:`add_integrals_to_map_erf` +* :c:func:`add_integrals_to_map_ijkl_r3` * :c:func:`add_integrals_to_map_no_exit_34` * :c:func:`add_integrals_to_map_three_indices` * :c:func:`add_poly` @@ -805,12 +783,17 @@ Index of Subroutines/Functions * :c:func:`add_to_selection_buffer` * :c:func:`ao_bielec_integral` * :c:func:`ao_bielec_integral_erf` +* :c:func:`ao_bielec_integral_ijkl_r3` * :c:func:`ao_bielec_integral_schwartz_accel` * :c:func:`ao_bielec_integral_schwartz_accel_erf` * :c:func:`ao_bielec_integrals_erf_in_map_collector` * :c:func:`ao_bielec_integrals_erf_in_map_slave` * :c:func:`ao_bielec_integrals_erf_in_map_slave_inproc` * :c:func:`ao_bielec_integrals_erf_in_map_slave_tcp` +* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_collector` +* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_slave` +* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_slave_inproc` +* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_slave_tcp` * :c:func:`ao_bielec_integrals_in_map_collector` * :c:func:`ao_bielec_integrals_in_map_slave` * :c:func:`ao_bielec_integrals_in_map_slave_inproc` @@ -843,34 +826,90 @@ Index of Subroutines/Functions * :c:func:`broadcast_chunks_integer` * :c:func:`broadcast_chunks_integer8` * :c:func:`build_fock_tmp` +* :c:func:`c2_delta` +* :c:func:`c3t_delta` +* :c:func:`c4_delta` +* :c:func:`c5_delta` +* :c:func:`c5t_delta` +* :c:func:`capital_c4_delta` * :c:func:`cell_function_becke` * :c:func:`check_coherence_functional` * :c:func:`check_mem` * :c:func:`cis` * :c:func:`cisd` * :c:func:`clear_ao_erf_map` +* :c:func:`clear_ao_ijkl_r3_map` * :c:func:`clear_ao_map` * :c:func:`clear_bit_to_integer` * :c:func:`clear_mo_erf_map` +* :c:func:`clear_mo_ijkl_r3_map` * :c:func:`clear_mo_map` * :c:func:`compute_ao_bielec_integrals` * :c:func:`compute_ao_bielec_integrals_erf` +* :c:func:`compute_ao_bielec_integrals_ijkl_r3` * :c:func:`compute_ao_integrals_erf_jl` +* :c:func:`compute_ao_integrals_ijkl_r3_jl` * :c:func:`compute_ao_integrals_jl` * :c:func:`connect_to_taskserver` * :c:func:`connected_to_ref` * :c:func:`connected_to_ref_by_mono` -* :c:func:`contrib_1h2p_dm_based` -* :c:func:`contrib_2h1p_dm_based` * :c:func:`copy_h_apply_buffer_to_wf` * :c:func:`copy_psi_bilinear_to_psi` -* :c:func:`coulomb_value_no_check` +* :c:func:`correction_to_on_top_from_ueg` * :c:func:`create_guess` * :c:func:`create_microlist` * :c:func:`create_minilist` * :c:func:`create_minilist_find_previous` * :c:func:`create_selection_buffer` * :c:func:`create_wf_of_psi_bilinear_matrix` +* :c:func:`d0delta` +* :c:func:`d2_delta` +* :c:func:`d3_delta` +* :c:func:`d_1st_deltaterm` +* :c:func:`d_2nd_deltaterm` +* :c:func:`d_3rd_deltaterm` +* :c:func:`d_4th_deltaterm` +* :c:func:`d_5th_deltaterm` +* :c:func:`d_c2_delta` +* :c:func:`d_c3t_delta` +* :c:func:`d_c4_delta` +* :c:func:`d_c5_delta` +* :c:func:`d_c5t_delta` +* :c:func:`d_capital_c4_delta` +* :c:func:`d_d0delta` +* :c:func:`d_d2_delta` +* :c:func:`d_d3_delta` +* :c:func:`d_delta_2` +* :c:func:`d_delta_3` +* :c:func:`d_delta_4` +* :c:func:`d_delta_5` +* :c:func:`d_delta_6` +* :c:func:`d_delta_barth` +* :c:func:`d_denominator_delta` +* :c:func:`d_total_deltarho_rhoa` +* :c:func:`d_total_deltarho_rhob` +* :c:func:`d_wignerseitz_radius` +* :c:func:`d_xi_1st_deltaterm` +* :c:func:`d_xi_2nd_deltaterm` +* :c:func:`d_xi_3rd_deltaterm` +* :c:func:`d_xi_4th_deltaterm` +* :c:func:`d_xi_5th_deltaterm` +* :c:func:`d_xi_c2_delta` +* :c:func:`d_xi_c3t_delta` +* :c:func:`d_xi_c4_delta` +* :c:func:`d_xi_c5_delta` +* :c:func:`d_xi_c5t_delta` +* :c:func:`d_xi_capital_c4_delta` +* :c:func:`d_xi_d0delta` +* :c:func:`d_xi_delta_3` +* :c:func:`d_xi_delta_4` +* :c:func:`d_xi_delta_5` +* :c:func:`d_xi_delta_6` +* :c:func:`d_xi_delta_barth` +* :c:func:`d_xi_denominator_delta` +* :c:func:`d_xi_phi_8_delta` +* :c:func:`d_xi_rhoa` +* :c:func:`d_xi_rhob` * :c:func:`damping_scf` * :c:func:`davidson_collector` * :c:func:`davidson_converged` @@ -893,20 +932,31 @@ Index of Subroutines/Functions * :c:func:`decode_exc` * :c:func:`decode_exc_spin` * :c:func:`delete_selection_buffer` +* :c:func:`delta_2` +* :c:func:`delta_3` +* :c:func:`delta_4` +* :c:func:`delta_5` +* :c:func:`delta_6` +* :c:func:`delta_barth` +* :c:func:`delta_lrsr_ldaerf` +* :c:func:`denominator_delta` * :c:func:`density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r` * :c:func:`derivative_knowles_function` * :c:func:`det_inf` * :c:func:`det_search_key` * :c:func:`detcmp` * :c:func:`deteq` +* :c:func:`dft_utils_ecmd` +* :c:func:`dft_utils_two_body_main` * :c:func:`diag_h_mat_elem` * :c:func:`diag_h_mat_elem_au0_h_au0` +* :c:func:`diag_h_mat_elem_erf` * :c:func:`diag_h_mat_elem_fock` * :c:func:`diag_h_mat_elem_monoelec` -* :c:func:`diag_h_mat_elem_no_elec_check` -* :c:func:`diag_h_mat_elem_no_elec_check_no_exchange` * :c:func:`diag_s_mat_elem` * :c:func:`diag_wee_mat_elem` +* :c:func:`diagonal_contrib_to_all_two_body_dm` +* :c:func:`diagonal_contrib_to_two_body_ab_dm` * :c:func:`diagonalize_ci` * :c:func:`diagonalize_h` * :c:func:`disconnect_from_taskserver` @@ -922,7 +972,9 @@ Index of Subroutines/Functions * :c:func:`dsort` * :c:func:`dump_ao_integrals` * :c:func:`dump_ao_integrals_erf` +* :c:func:`dump_ao_integrals_ijkl_r3` * :c:func:`dump_mo_integrals` +* :c:func:`dump_mo_integrals_ijkl_r3` * :c:func:`ec_lda` * :c:func:`ec_lda_sr` * :c:func:`ec_only_lda_sr` @@ -939,6 +991,8 @@ Index of Subroutines/Functions * :c:func:`erf0` * :c:func:`eri` * :c:func:`eri_erf` +* :c:func:`esrc_md_ldaerf` +* :c:func:`esrc_md_ldaerf_barth` * :c:func:`ex_lda` * :c:func:`ex_lda_sr` * :c:func:`ex_pbe_sr` @@ -947,7 +1001,6 @@ Index of Subroutines/Functions * :c:func:`example_bitmask` * :c:func:`example_determinants` * :c:func:`example_determinants_psi_det` -* :c:func:`extract_ref` * :c:func:`extrapolate_data` * :c:func:`f_function_becke` * :c:func:`f_integral` @@ -959,12 +1012,14 @@ Index of Subroutines/Functions * :c:func:`filter_connected` * :c:func:`filter_connected_i_h_psi0` * :c:func:`filter_not_connected` -* :c:func:`find_connections_previous` * :c:func:`find_rotation` * :c:func:`four_idx_transform` +* :c:func:`g0_ueg_mu` +* :c:func:`g0_ueg_mu_inf` * :c:func:`g0d` * :c:func:`g0dd` * :c:func:`g0f` +* :c:func:`g0s` * :c:func:`gammln` * :c:func:`gammp` * :c:func:`gauleg` @@ -992,17 +1047,19 @@ Index of Subroutines/Functions * :c:func:`get_all_spin_singles_n_int` * :c:func:`get_ao_bielec_integral` * :c:func:`get_ao_bielec_integral_erf` +* :c:func:`get_ao_bielec_integral_ijkl_r3` * :c:func:`get_ao_bielec_integrals` * :c:func:`get_ao_bielec_integrals_erf` * :c:func:`get_ao_bielec_integrals_erf_non_zero` +* :c:func:`get_ao_bielec_integrals_ijkl_r3` +* :c:func:`get_ao_bielec_integrals_ijkl_r3_non_zero` * :c:func:`get_ao_bielec_integrals_non_zero` * :c:func:`get_ao_erf_map_size` +* :c:func:`get_ao_ijkl_r3_map_size` * :c:func:`get_ao_map_size` * :c:func:`get_d0` * :c:func:`get_d1` * :c:func:`get_d2` -* :c:func:`get_delta_e_dyall` -* :c:func:`get_delta_e_dyall_general_mp` * :c:func:`get_double_excitation` * :c:func:`get_double_excitation_spin` * :c:func:`get_excitation` @@ -1017,7 +1074,6 @@ Index of Subroutines/Functions * :c:func:`get_index_in_psi_det_alpha_unique` * :c:func:`get_index_in_psi_det_beta_unique` * :c:func:`get_index_in_psi_det_sorted_bit` -* :c:func:`get_index_in_psi_ref_sorted_bit` * :c:func:`get_inverse` * :c:func:`get_m0` * :c:func:`get_m1` @@ -1025,6 +1081,7 @@ Index of Subroutines/Functions * :c:func:`get_mask_phase` * :c:func:`get_mo_bielec_integral` * :c:func:`get_mo_bielec_integral_erf` +* :c:func:`get_mo_bielec_integral_ijkl_r3` * :c:func:`get_mo_bielec_integrals` * :c:func:`get_mo_bielec_integrals_coulomb_ii` * :c:func:`get_mo_bielec_integrals_erf` @@ -1035,7 +1092,12 @@ Index of Subroutines/Functions * :c:func:`get_mo_bielec_integrals_exch_ii` * :c:func:`get_mo_bielec_integrals_i1j1` * :c:func:`get_mo_bielec_integrals_ij` +* :c:func:`get_mo_bielec_integrals_ijkl_r3` +* :c:func:`get_mo_bielec_integrals_ijkl_r3_coulomb_ii` +* :c:func:`get_mo_bielec_integrals_ijkl_r3_exch_ii` +* :c:func:`get_mo_bielec_integrals_ijkl_r3_ij` * :c:func:`get_mo_erf_map_size` +* :c:func:`get_mo_ijkl_r3_map_size` * :c:func:`get_mo_map_size` * :c:func:`get_mono_excitation` * :c:func:`get_mono_excitation_from_fock` @@ -1050,19 +1112,6 @@ Index of Subroutines/Functions * :c:func:`get_uj_s2_ui` * :c:func:`getmobiles` * :c:func:`getunitandopen` -* :c:func:`give_1h1p_contrib` -* :c:func:`give_1h1p_only_doubles_spin_cross` -* :c:func:`give_1h1p_sec_order_singles_contrib` -* :c:func:`give_1h2p_contrib` -* :c:func:`give_1h2p_contrib_sec_order` -* :c:func:`give_1h2p_new` -* :c:func:`give_1p_sec_order_singles_contrib` -* :c:func:`give_2h1p_contrib` -* :c:func:`give_2h1p_contrib_sec_order` -* :c:func:`give_2h1p_new` -* :c:func:`give_2h2p` -* :c:func:`give_2p_new` -* :c:func:`give_active_part_determinant` * :c:func:`give_all_aos_and_grad_and_lapl_at_r` * :c:func:`give_all_aos_and_grad_at_r` * :c:func:`give_all_aos_at_r` @@ -1071,21 +1120,19 @@ Index of Subroutines/Functions * :c:func:`give_all_mos_and_grad_and_lapl_at_r` * :c:func:`give_all_mos_and_grad_at_r` * :c:func:`give_all_mos_at_r` -* :c:func:`give_core_inactive_part_determinant` +* :c:func:`give_epsilon_c_md_on_top_pbe_mu_corrected_from_two_dm` +* :c:func:`give_epsilon_c_md_on_top_pbe_mu_corrected_ueg_from_two_dm` * :c:func:`give_explicit_poly_and_gaussian` * :c:func:`give_explicit_poly_and_gaussian_double` * :c:func:`give_explicit_poly_and_gaussian_x` -* :c:func:`give_holes_in_inactive_space` -* :c:func:`give_particles_in_virt_space` * :c:func:`give_polynom_mult_center_mono_elec` * :c:func:`give_polynom_mult_center_mono_elec_erf` * :c:func:`give_polynom_mult_center_mono_elec_erf_opt` * :c:func:`give_polynom_mult_center_x` -* :c:func:`give_singles_and_partial_doubles_1h1p_contrib` -* :c:func:`give_virt_part_determinant` * :c:func:`gpw` * :c:func:`grad_rho_ab_to_grad_rho_oc` * :c:func:`gser` +* :c:func:`h` * :c:func:`h_apply_cis` * :c:func:`h_apply_cis_diexc` * :c:func:`h_apply_cis_diexcorg` @@ -1096,51 +1143,6 @@ Index of Subroutines/Functions * :c:func:`h_apply_cisd_diexcorg` * :c:func:`h_apply_cisd_diexcp` * :c:func:`h_apply_cisd_monoexc` -* :c:func:`h_apply_mrpt` -* :c:func:`h_apply_mrpt_1h` -* :c:func:`h_apply_mrpt_1h1p` -* :c:func:`h_apply_mrpt_1h1p_diexc` -* :c:func:`h_apply_mrpt_1h1p_diexcorg` -* :c:func:`h_apply_mrpt_1h1p_diexcp` -* :c:func:`h_apply_mrpt_1h1p_monoexc` -* :c:func:`h_apply_mrpt_1h2p` -* :c:func:`h_apply_mrpt_1h2p_diexc` -* :c:func:`h_apply_mrpt_1h2p_diexcorg` -* :c:func:`h_apply_mrpt_1h2p_diexcp` -* :c:func:`h_apply_mrpt_1h2p_monoexc` -* :c:func:`h_apply_mrpt_1h_diexc` -* :c:func:`h_apply_mrpt_1h_diexcorg` -* :c:func:`h_apply_mrpt_1h_diexcp` -* :c:func:`h_apply_mrpt_1h_monoexc` -* :c:func:`h_apply_mrpt_1p` -* :c:func:`h_apply_mrpt_1p_diexc` -* :c:func:`h_apply_mrpt_1p_diexcorg` -* :c:func:`h_apply_mrpt_1p_diexcp` -* :c:func:`h_apply_mrpt_1p_monoexc` -* :c:func:`h_apply_mrpt_2h` -* :c:func:`h_apply_mrpt_2h1p` -* :c:func:`h_apply_mrpt_2h1p_diexc` -* :c:func:`h_apply_mrpt_2h1p_diexcorg` -* :c:func:`h_apply_mrpt_2h1p_diexcp` -* :c:func:`h_apply_mrpt_2h1p_monoexc` -* :c:func:`h_apply_mrpt_2h2p` -* :c:func:`h_apply_mrpt_2h2p_diexc` -* :c:func:`h_apply_mrpt_2h2p_diexcorg` -* :c:func:`h_apply_mrpt_2h2p_diexcp` -* :c:func:`h_apply_mrpt_2h2p_monoexc` -* :c:func:`h_apply_mrpt_2h_diexc` -* :c:func:`h_apply_mrpt_2h_diexcorg` -* :c:func:`h_apply_mrpt_2h_diexcp` -* :c:func:`h_apply_mrpt_2h_monoexc` -* :c:func:`h_apply_mrpt_2p` -* :c:func:`h_apply_mrpt_2p_diexc` -* :c:func:`h_apply_mrpt_2p_diexcorg` -* :c:func:`h_apply_mrpt_2p_diexcp` -* :c:func:`h_apply_mrpt_2p_monoexc` -* :c:func:`h_apply_mrpt_diexc` -* :c:func:`h_apply_mrpt_diexcorg` -* :c:func:`h_apply_mrpt_diexcp` -* :c:func:`h_apply_mrpt_monoexc` * :c:func:`h_s2_u_0_bielec_nstates_openmp` * :c:func:`h_s2_u_0_bielec_nstates_openmp_work` * :c:func:`h_s2_u_0_bielec_nstates_openmp_work_1` @@ -1148,6 +1150,13 @@ Index of Subroutines/Functions * :c:func:`h_s2_u_0_bielec_nstates_openmp_work_3` * :c:func:`h_s2_u_0_bielec_nstates_openmp_work_4` * :c:func:`h_s2_u_0_bielec_nstates_openmp_work_n_int` +* :c:func:`h_s2_u_0_erf_nstates_openmp` +* :c:func:`h_s2_u_0_erf_nstates_openmp_work` +* :c:func:`h_s2_u_0_erf_nstates_openmp_work_1` +* :c:func:`h_s2_u_0_erf_nstates_openmp_work_2` +* :c:func:`h_s2_u_0_erf_nstates_openmp_work_3` +* :c:func:`h_s2_u_0_erf_nstates_openmp_work_4` +* :c:func:`h_s2_u_0_erf_nstates_openmp_work_n_int` * :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` @@ -1168,6 +1177,8 @@ Index of Subroutines/Functions * :c:func:`heap_sort` * :c:func:`heap_sort_big` * :c:func:`hermite` +* :c:func:`hf_two_body_dm_aa` +* :c:func:`hf_two_body_dm_aa_spherical_laplacian` * :c:func:`huckel_guess` * :c:func:`i2set_order` * :c:func:`i2set_order_big` @@ -1178,23 +1189,25 @@ Index of Subroutines/Functions * :c:func:`i_h_j` * :c:func:`i_h_j_bielec` * :c:func:`i_h_j_double_alpha_beta` +* :c:func:`i_h_j_double_alpha_beta_erf` * :c:func:`i_h_j_double_spin` -* :c:func:`i_h_j_dyall` -* :c:func:`i_h_j_dyall_no_exchange` +* :c:func:`i_h_j_double_spin_erf` +* :c:func:`i_h_j_erf` * :c:func:`i_h_j_mono_spin` +* :c:func:`i_h_j_mono_spin_erf` * :c:func:`i_h_j_mono_spin_monoelec` * :c:func:`i_h_j_monoelec` * :c:func:`i_h_j_s2` * :c:func:`i_h_j_verbose` * :c:func:`i_h_psi` * :c:func:`i_h_psi_minilist` -* :c:func:`i_h_psi_pert_new_minilist` * :c:func:`i_s2_psi_minilist` * :c:func:`i_wee_j_mono` * :c:func:`i_x1_pol_mult` * :c:func:`initialize_bitmask_to_restart_ones` * :c:func:`initialize_mo_coef_begin_iteration` * :c:func:`insert_into_ao_integrals_erf_map` +* :c:func:`insert_into_ao_integrals_ijkl_r3_map` * :c:func:`insert_into_ao_integrals_map` * :c:func:`insertion_dsort` * :c:func:`insertion_dsort_big` @@ -1207,6 +1220,7 @@ Index of Subroutines/Functions * :c:func:`insertion_sort` * :c:func:`insertion_sort_big` * :c:func:`int_gaus_pol` +* :c:func:`integral_bourrin_mo` * :c:func:`integrale_new` * :c:func:`integrale_new_erf` * :c:func:`is_a_1h` @@ -1221,7 +1235,6 @@ Index of Subroutines/Functions * :c:func:`is_connected_to_by_mono` * :c:func:`is_generable_cassd` * :c:func:`is_i_in_virtual` -* :c:func:`is_in_psi_ref` * :c:func:`is_in_wavefunction` * :c:func:`is_spin_flip_possible` * :c:func:`is_the_hole_in_det` @@ -1235,8 +1248,10 @@ Index of Subroutines/Functions * :c:func:`list_to_bitstring` * :c:func:`load_ao_integrals` * :c:func:`load_ao_integrals_erf` +* :c:func:`load_ao_integrals_ijkl_r3` * :c:func:`load_mo_integrals` * :c:func:`load_mo_integrals_erf` +* :c:func:`load_mo_integrals_ijkl_r3` * :c:func:`logfact` * :c:func:`lowercase` * :c:func:`make_s2_eigenfunction` @@ -1252,7 +1267,9 @@ Index of Subroutines/Functions * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` * :c:func:`mo_bielec_integral` * :c:func:`mo_bielec_integral_erf` +* :c:func:`mo_bielec_integral_ijkl_r3` * :c:func:`mo_bielec_integrals_erf_index` +* :c:func:`mo_bielec_integrals_ijkl_r3_index` * :c:func:`mo_bielec_integrals_index` * :c:func:`mo_to_ao` * :c:func:`modify_bitmasks_for_hole` @@ -1261,7 +1278,6 @@ Index of Subroutines/Functions * :c:func:`molden` * :c:func:`mono_excitation_wee` * :c:func:`mpi_print` -* :c:func:`mrpt_dress` * :c:func:`multiply_poly` * :c:func:`n_pt_sup` * :c:func:`nai_pol_mult` @@ -1282,6 +1298,13 @@ Index of Subroutines/Functions * :c:func:`occ_pattern_search_key` * :c:func:`occ_pattern_to_dets` * :c:func:`occ_pattern_to_dets_size` +* :c:func:`off_diagonal_double_to_two_body_ab_dm` +* :c:func:`off_diagonal_single_to_two_body_ab_dm` +* :c:func:`on_top_of_r_approx_svd_correl_function` +* :c:func:`on_top_of_r_approx_svd_function` +* :c:func:`on_top_of_r_from_provider` +* :c:func:`on_top_two_dm_in_r_mu_corrected_from_two_dm` +* :c:func:`on_top_two_dm_in_r_mu_corrected_ueg_from_two_dm` * :c:func:`ortho_canonical` * :c:func:`ortho_lowdin` * :c:func:`ortho_qr` @@ -1313,8 +1336,11 @@ Index of Subroutines/Functions * :c:func:`perturb_buffer_moller_plesset` * :c:func:`perturb_buffer_moller_plesset_general` * :c:func:`perturb_buffer_qdpt` +* :c:func:`phi_8_delta` +* :c:func:`pouet` * :c:func:`primitive_value` * :c:func:`print_det` +* :c:func:`print_ecmd_var_energy` * :c:func:`print_extrapolated_energy` * :c:func:`print_generators_bitmasks_holes` * :c:func:`print_generators_bitmasks_holes_for_one_generator` @@ -1323,8 +1349,10 @@ Index of Subroutines/Functions * :c:func:`print_memory_usage` * :c:func:`print_spindet` * :c:func:`print_summary` +* :c:func:`print_variational_energy_dft` * :c:func:`print_wf` * :c:func:`provide_all_mo_integrals_erf` +* :c:func:`provide_all_mo_integrals_ijkl_r3` * :c:func:`provide_everything` * :c:func:`pt2` * :c:func:`pt2_collector` @@ -1376,6 +1404,9 @@ Index of Subroutines/Functions * :c:func:`roothaan_hall_scf` * :c:func:`routine` * :c:func:`routine_example_psi_det` +* :c:func:`routine_print` +* :c:func:`routines_compute_energy` +* :c:func:`routines_write_int` * :c:func:`run` * :c:func:`run_pt2_slave` * :c:func:`run_selection_slave` @@ -1393,6 +1424,7 @@ Index of Subroutines/Functions * :c:func:`save_natorb` * :c:func:`save_natural_mos` * :c:func:`save_one_body_dm` +* :c:func:`save_one_e_effective_potential` * :c:func:`save_ortho_mos` * :c:func:`save_ref_determinant` * :c:func:`save_wavefunction` @@ -1408,7 +1440,6 @@ Index of Subroutines/Functions * :c:func:`set_bit_to_integer` * :c:func:`set_bitmask_hole_as_input` * :c:func:`set_bitmask_particl_as_input` -* :c:func:`set_generators_bitmasks_as_holes_and_particles` * :c:func:`set_natural_mos` * :c:func:`set_order` * :c:func:`set_order_big` @@ -1424,6 +1455,8 @@ Index of Subroutines/Functions * :c:func:`sorted_i8number` * :c:func:`sorted_inumber` * :c:func:`sorted_number` +* :c:func:`spherical_averaged_two_dm_at_second_order` +* :c:func:`spherical_averaged_two_dm_hf_at_second_order` * :c:func:`spin_det_search_key` * :c:func:`splash_pq` * :c:func:`spot_isinwf` @@ -1436,10 +1469,17 @@ Index of Subroutines/Functions * :c:func:`tasks_done_to_taskserver` * :c:func:`testteethbuilding` * :c:func:`total_memory` -* :c:func:`u0_h_dyall_u0` -* :c:func:`u0_h_dyall_u0_no_exchange` +* :c:func:`two_body_dm_nstates_openmp` +* :c:func:`two_body_dm_nstates_openmp_work` +* :c:func:`two_body_dm_nstates_openmp_work_1` +* :c:func:`two_body_dm_nstates_openmp_work_2` +* :c:func:`two_body_dm_nstates_openmp_work_3` +* :c:func:`two_body_dm_nstates_openmp_work_4` +* :c:func:`two_body_dm_nstates_openmp_work_n_int` +* :c:func:`two_dm_in_r` * :c:func:`u_0_h_u_0` * :c:func:`u_0_h_u_0_bielec` +* :c:func:`u_0_h_u_0_erf` * :c:func:`u_0_s2_u_0` * :c:func:`u_dot_u` * :c:func:`u_dot_v` @@ -1457,9 +1497,13 @@ Index of Subroutines/Functions * :c:func:`wall_time` * :c:func:`wallis` * :c:func:`wf_of_psi_bilinear_matrix` +* :c:func:`wignerseitz_radius` +* :c:func:`write_2_body_dm_fci_dump` +* :c:func:`write_all_integrals_for_mrdft` * :c:func:`write_ao_basis` * :c:func:`write_bool` * :c:func:`write_double` +* :c:func:`write_effective_rsdft_hamiltonian` * :c:func:`write_geometry` * :c:func:`write_git_log` * :c:func:`write_int` diff --git a/src/README.rst b/src/README.rst index 7d7560ea..9b987305 100644 --- a/src/README.rst +++ b/src/README.rst @@ -1,112 +1,3 @@ -====================== -Programming guidelines -====================== - -Each module (directory) contains the following: - -* A ``README.rst`` file to document the current module. -* An ``ASSUMPTIONS.rst`` file. This file should document all the implicit - assumptions used in the module. For example, if the atomic orbitals are - assumed to be normalized, this should be mentioned in the - ``AOs/ASSUMPTIONS.rst`` file. -* A ``NEEDED_MODULES`` file which contains the list of modules on which the - current module depends -* A set of ``.irp.f`` files containing provider, subroutines and functions -* A ``Makefile`` that should compile -* Optionally some ``*.ezfio_config`` configuration files for the EZFIO - library - -A new module may be created by invoking the ``create_module.sh`` script. - -Every subroutine, function or provider should be documented using the -BEGIN_DOC ... END_DOC block. The documentation should be written in -ReStructured Text format to enable the automatic generation of the Sphinx -documentation. - -When the current module depends on other modules, the list of modules should -be added in the ``NEEDED_MODULES`` file. - - -Creating a new module -===================== - -Every new module should be created using the interactive ``create_module.sh`` -script located in the ``${QP_ROOT}/scripts`` directory. This will create -all the required files with correct templates. - - -Makefiles -========= - -Use the structure of Makefiles provided by the ``create_module.sh`` script. If -you need to re-create the Makefile, you can use the ``create_Makefile.sh`` -script in the current module directory. - -If you need to add some Fortran or C files that should not be tracked by IRPF90, -you have to add them manually to the Makefile in the ``SRC`` variable. -You also need to add the corresponding ``*.o`` file prefixed by ``IRPF90_temp/``. -For example - -.. code-block:: Makefile - - SRC=map_module.f90 - OBJ=IRPF90_temp/map_module.o - - - -Input data -========== - -Every program is supposed to use an EZFIO database containing all the -persistent data. This database can be modified in using the generated Fortran -functions or the generated Python module. - -The definition of the data needed by the module should be put in the -``*.ezfio_config`` file. - -Input data can also be read from the standard input to enable the use of -a program with a pipe, but the read statements should be present **only** in -the main program. - - -Output data -=========== - -Print to stdout statements should only appear in programs, not in providers, -subroutines or functions. This enables the possibility easily use the programs -with pipes. - -To print, you should write in an output file provided by the ``Output`` -module. Every module has its own output file. Before printing something, -a timestamp should be put in the output with the ``write_time`` function. -This allows an external script to read all the pieces of the output files -and put them in a sequential order. The format of the output should be -in ReStructured Text for easy transformation of the output data to pdf, -HTML, man, etc. - - -Creating a shell script -======================= - -Shell scripts should be located in the ``${QP_ROOT}/scripts`` directory. -Relative paths should be avoided as much as possible, and the result of commands -should be always checked. For example, when creating a directory the existence -of the directory has to be checked. - - -Documentation -============= - -.. Do not edit this section. It was auto-generated from the -.. NEEDED_MODULES file. - - - -Needed Modules -============== - -.. Do not edit this section. It was auto-generated from the -.. NEEDED_MODULES file. - -* `Utils `_ - +========================== +The core modules of the QP +========================== diff --git a/src/mo_two_e_integrals/NEED b/src/mo_two_e_integrals/NEED index b7f0c201..df8ba165 100644 --- a/src/mo_two_e_integrals/NEED +++ b/src/mo_two_e_integrals/NEED @@ -1,4 +1,5 @@ ao_one_e_integrals +mo_one_e_integrals ao_two_e_integrals pseudo bitmask From 162f96c28b3cdf4fb17cff60646f88b6724e7581 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Dec 2018 19:44:10 +0100 Subject: [PATCH 08/10] Merge --- docs/source/auto_generate.py | 4 ++++ plugins/garniron/mrcepa0/NEED | 2 +- plugins/tapplencourt/read_integral/NEED | 3 ++- src/hartree_fock/README.rst | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/source/auto_generate.py b/docs/source/auto_generate.py index 8984d7e8..f83bbc39 100755 --- a/docs/source/auto_generate.py +++ b/docs/source/auto_generate.py @@ -212,6 +212,8 @@ def main(): entities = {} for abs_module in os.listdir(SRC): + if os.path.islink(os.path.join(SRC,abs_module)): + continue abs_module = os.path.join(SRC,abs_module) if os.path.exists( os.path.join(abs_module, "README.rst") ): read_entities = generate_providers(abs_module) @@ -221,6 +223,8 @@ def main(): for abs_module in os.listdir(SRC): abs_module = os.path.join(SRC,abs_module) + if os.path.islink(os.path.join(SRC,abs_module)): + continue if os.path.exists( os.path.join(abs_module, "README.rst") ): generate_modules(abs_module,entities) diff --git a/plugins/garniron/mrcepa0/NEED b/plugins/garniron/mrcepa0/NEED index 79f56893..2b961ca6 100644 --- a/plugins/garniron/mrcepa0/NEED +++ b/plugins/garniron/mrcepa0/NEED @@ -1 +1 @@ -DavidsonDressed Perturbation Selectors_full Generators_full Psiref_CAS MRCC_Utils ZMQ +davidson_dressed perturbation selectors_full generators_full psiref_cas mrcc_utils zmq diff --git a/plugins/tapplencourt/read_integral/NEED b/plugins/tapplencourt/read_integral/NEED index 0c15e599..98897252 100644 --- a/plugins/tapplencourt/read_integral/NEED +++ b/plugins/tapplencourt/read_integral/NEED @@ -1 +1,2 @@ -AO_one_e_integrals MO_one_e_integrals Integrals_Bielec Hartree_Fock +ao_one_e_integrals mo_one_e_integrals hartree_fock +ao_two_e_integrals mo_two_e_integrals diff --git a/src/hartree_fock/README.rst b/src/hartree_fock/README.rst index 7fa01d4f..9cc6ad30 100644 --- a/src/hartree_fock/README.rst +++ b/src/hartree_fock/README.rst @@ -17,6 +17,7 @@ It performs the following actions: The definition of the Fock matrix is in :file:`hartree_fock fock_matrix_hf.irp.f` For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. The main are: + # :option:`scf_utils thresh_scf` # :option:`scf_utils level_shift` From 54b151e947f6a5baf7e72a47a3199ce03d80a5ad Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Dec 2018 19:45:21 +0100 Subject: [PATCH 09/10] Removed all modules of doc --- docs/source/modules/ao_basis.rst | 656 --- docs/source/modules/ao_one_e_integrals.rst | 992 ----- docs/source/modules/aux_quantities.rst | 44 - docs/source/modules/becke_numerical_grid.rst | 405 -- docs/source/modules/bitmask.rst | 1254 ------ docs/source/modules/cis.rst | 117 - docs/source/modules/cisd.rst | 117 - docs/source/modules/davidson.rst | 682 --- docs/source/modules/davidson_dressed.rst | 13 - docs/source/modules/davidson_undressed.rst | 45 - docs/source/modules/density_for_dft.rst | 119 - docs/source/modules/determinants.rst | 3954 ----------------- docs/source/modules/dft_keywords.rst | 59 - docs/source/modules/dft_utils_one_e.rst | 1909 -------- docs/source/modules/dressing.rst | 36 - docs/source/modules/electrons.rst | 76 - docs/source/modules/ezfio_files.rst | 149 - docs/source/modules/fci.rst | 935 ---- docs/source/modules/generators_cas.rst | 19 - docs/source/modules/generators_full.rst | 145 - docs/source/modules/hartree_fock.rst | 209 - docs/source/modules/iterations.rst | 114 - docs/source/modules/kohn_sham.rst | 68 - docs/source/modules/kohn_sham_rs.rst | 250 -- docs/source/modules/mo_basis.rst | 367 -- docs/source/modules/mo_guess.rst | 87 - docs/source/modules/mo_one_e_integrals.rst | 291 -- .../source/modules/mo_two_e_erf_integrals.rst | 510 --- docs/source/modules/mo_two_e_integrals.rst | 616 --- docs/source/modules/mpi.rst | 130 - docs/source/modules/nuclei.rst | 351 -- docs/source/modules/perturbation.rst | 635 --- docs/source/modules/pseudo.rst | 94 - docs/source/modules/psiref_cas.rst | 14 - docs/source/modules/psiref_utils.rst | 16 - docs/source/modules/scf_utils.rst | 375 -- docs/source/modules/selectors_cassd.rst | 13 - docs/source/modules/selectors_full.rst | 72 - docs/source/modules/selectors_utils.rst | 362 -- docs/source/modules/single_ref_method.rst | 14 - docs/source/modules/slave.rst | 59 - docs/source/modules/tools.rst | 217 - docs/source/modules/utils.rst | 1914 -------- docs/source/modules/zmq.rst | 885 ---- 44 files changed, 19389 deletions(-) delete mode 100644 docs/source/modules/ao_basis.rst delete mode 100644 docs/source/modules/ao_one_e_integrals.rst delete mode 100644 docs/source/modules/aux_quantities.rst delete mode 100644 docs/source/modules/becke_numerical_grid.rst delete mode 100644 docs/source/modules/bitmask.rst delete mode 100644 docs/source/modules/cis.rst delete mode 100644 docs/source/modules/cisd.rst delete mode 100644 docs/source/modules/davidson.rst delete mode 100644 docs/source/modules/davidson_dressed.rst delete mode 100644 docs/source/modules/davidson_undressed.rst delete mode 100644 docs/source/modules/density_for_dft.rst delete mode 100644 docs/source/modules/determinants.rst delete mode 100644 docs/source/modules/dft_keywords.rst delete mode 100644 docs/source/modules/dft_utils_one_e.rst delete mode 100644 docs/source/modules/dressing.rst delete mode 100644 docs/source/modules/electrons.rst delete mode 100644 docs/source/modules/ezfio_files.rst delete mode 100644 docs/source/modules/fci.rst delete mode 100644 docs/source/modules/generators_cas.rst delete mode 100644 docs/source/modules/generators_full.rst delete mode 100644 docs/source/modules/hartree_fock.rst delete mode 100644 docs/source/modules/iterations.rst delete mode 100644 docs/source/modules/kohn_sham.rst delete mode 100644 docs/source/modules/kohn_sham_rs.rst delete mode 100644 docs/source/modules/mo_basis.rst delete mode 100644 docs/source/modules/mo_guess.rst delete mode 100644 docs/source/modules/mo_one_e_integrals.rst delete mode 100644 docs/source/modules/mo_two_e_erf_integrals.rst delete mode 100644 docs/source/modules/mo_two_e_integrals.rst delete mode 100644 docs/source/modules/mpi.rst delete mode 100644 docs/source/modules/nuclei.rst delete mode 100644 docs/source/modules/perturbation.rst delete mode 100644 docs/source/modules/pseudo.rst delete mode 100644 docs/source/modules/psiref_cas.rst delete mode 100644 docs/source/modules/psiref_utils.rst delete mode 100644 docs/source/modules/scf_utils.rst delete mode 100644 docs/source/modules/selectors_cassd.rst delete mode 100644 docs/source/modules/selectors_full.rst delete mode 100644 docs/source/modules/selectors_utils.rst delete mode 100644 docs/source/modules/single_ref_method.rst delete mode 100644 docs/source/modules/slave.rst delete mode 100644 docs/source/modules/tools.rst delete mode 100644 docs/source/modules/utils.rst delete mode 100644 docs/source/modules/zmq.rst diff --git a/docs/source/modules/ao_basis.rst b/docs/source/modules/ao_basis.rst deleted file mode 100644 index f7954784..00000000 --- a/docs/source/modules/ao_basis.rst +++ /dev/null @@ -1,656 +0,0 @@ -.. _ao_basis: - -.. program:: ao_basis - -.. default-role:: option - -======== -ao_basis -======== - -This module describes the atomic orbitals basis set. - -An |AO| :math:`\chi` centered on nucleus A is represented as: - -.. math:: - - \chi_i({\bf r}) = (x-X_A)^a (y-Y_A)^b (z-Z_A)^c \sum_k c_{ki} e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} - - -The |AO| coefficients are normalized as: - -.. math:: - - {\tilde c}_{ki} = \frac{c_{ki}}{ \int \left( (x-X_A)^a (y-Y_A)^b (z-Z_A)^c e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} \right)^2 dr} - -Warning: `ao_coef` contains the |AO| coefficients given in input. These do not -include the normalization constant of the |AO|. The `ao_coef_normalized` provider includes -this normalization factor. - -The |AOs| are also sorted by increasing exponent to accelerate the calculation of -the two electron integrals. - - - - - - -EZFIO parameters ----------------- - -.. option:: ao_basis - - Name of the |AO| basis set - - -.. option:: ao_num - - Number of |AOs| - - -.. option:: ao_prim_num - - Number of primitives per |AO| - - -.. option:: ao_prim_num_max - - Maximum number of primitives - - Default: =maxval(ao_basis.ao_prim_num) - -.. option:: ao_nucl - - Index of the nucleus on which the |AO| is centered - - -.. option:: ao_power - - Powers of x, y and z for each |AO| - - -.. option:: ao_coef - - Primitive coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs. - - -.. option:: ao_expo - - Exponents for each primitive of each |AO| - - -.. option:: ao_md5 - - MD5 key, specific of the |AO| basis - - -.. option:: ao_cartesian - - If |true|, use |AOs| in Cartesian coordinates (6d,10f,...) - - Default: false - - -Providers ---------- - - -.. c:var:: ao_coef_normalization_factor - - .. code:: text - - double precision, allocatable :: ao_coef_normalized (ao_num,ao_prim_num_max) - double precision, allocatable :: ao_coef_normalization_factor (ao_num) - - File: :file:`aos.irp.f` - - Coefficients including the |AO| normalization - - - - -.. c:var:: ao_coef_normalization_libint_factor - - .. code:: text - - double precision, allocatable :: ao_coef_normalization_libint_factor (ao_num) - - File: :file:`aos.irp.f` - - |AO| normalization for interfacing with libint - - - - -.. c:var:: ao_coef_normalized - - .. code:: text - - double precision, allocatable :: ao_coef_normalized (ao_num,ao_prim_num_max) - double precision, allocatable :: ao_coef_normalization_factor (ao_num) - - File: :file:`aos.irp.f` - - Coefficients including the |AO| normalization - - - - -.. c:var:: ao_coef_normalized_ordered - - .. code:: text - - double precision, allocatable :: ao_coef_normalized_ordered (ao_num,ao_prim_num_max) - double precision, allocatable :: ao_expo_ordered (ao_num,ao_prim_num_max) - - File: :file:`aos.irp.f` - - Sorted primitives to accelerate 4 index |MO| transformation - - - - -.. c:var:: ao_coef_normalized_ordered_transp - - .. code:: text - - double precision, allocatable :: ao_coef_normalized_ordered_transp (ao_prim_num_max,ao_num) - - File: :file:`aos.irp.f` - - Transposed :c:var:`ao_coef_normalized_ordered` - - - - -.. c:var:: ao_coef_normalized_ordered_transp_per_nucl - - .. code:: text - - double precision, allocatable :: ao_coef_normalized_ordered_transp_per_nucl (ao_prim_num_max,N_AOs_max,nucl_num) - - File: :file:`aos_transp.irp.f` - - - - - - -.. c:var:: ao_expo_ordered - - .. code:: text - - double precision, allocatable :: ao_coef_normalized_ordered (ao_num,ao_prim_num_max) - double precision, allocatable :: ao_expo_ordered (ao_num,ao_prim_num_max) - - File: :file:`aos.irp.f` - - Sorted primitives to accelerate 4 index |MO| transformation - - - - -.. c:var:: ao_expo_ordered_transp - - .. code:: text - - double precision, allocatable :: ao_expo_ordered_transp (ao_prim_num_max,ao_num) - - File: :file:`aos.irp.f` - - Transposed :c:var:`ao_expo_ordered` - - - - -.. c:var:: ao_expo_ordered_transp_per_nucl - - .. code:: text - - double precision, allocatable :: ao_expo_ordered_transp_per_nucl (ao_prim_num_max,N_AOs_max,nucl_num) - - File: :file:`aos_transp.irp.f` - - - - - - -.. c:var:: ao_l - - .. code:: text - - integer, allocatable :: ao_l (ao_num) - integer :: ao_l_max - character*(128), allocatable :: ao_l_char (ao_num) - - File: :file:`aos.irp.f` - - :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` - - - - -.. c:var:: ao_l_char - - .. code:: text - - integer, allocatable :: ao_l (ao_num) - integer :: ao_l_max - character*(128), allocatable :: ao_l_char (ao_num) - - File: :file:`aos.irp.f` - - :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` - - - - -.. c:var:: ao_l_char_space - - .. code:: text - - character*(4), allocatable :: ao_l_char_space (ao_num) - - File: :file:`aos.irp.f` - - Converts an l value to a string - - - - -.. c:var:: ao_l_max - - .. code:: text - - integer, allocatable :: ao_l (ao_num) - integer :: ao_l_max - character*(128), allocatable :: ao_l_char (ao_num) - - File: :file:`aos.irp.f` - - :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` - - - - -.. c:var:: ao_power_ordered_transp_per_nucl - - .. code:: text - - integer, allocatable :: ao_power_ordered_transp_per_nucl (3,N_AOs_max,nucl_num) - - File: :file:`aos_transp.irp.f` - - - - - - -.. c:var:: ao_prim_num_max - - .. code:: text - - integer :: ao_prim_num_max - - File: :file:`aos.irp.f` - - Max number of primitives. - - - - -.. c:var:: cart_to_sphe_0 - - .. code:: text - - double precision, allocatable :: cart_to_sphe_0 (1,1) - - File: :file:`spherical_to_cartesian.irp.f` - - Spherical -> Cartesian Transformation matrix for l=0 - - - - -.. c:var:: cart_to_sphe_1 - - .. code:: text - - double precision, allocatable :: cart_to_sphe_1 (3,3) - - File: :file:`spherical_to_cartesian.irp.f` - - Spherical -> Cartesian Transformation matrix for l=1 - - - - -.. c:var:: cart_to_sphe_2 - - .. code:: text - - double precision, allocatable :: cart_to_sphe_2 (6,5) - - File: :file:`spherical_to_cartesian.irp.f` - - Spherical -> Cartesian Transformation matrix for l=2 - - - - -.. c:var:: cart_to_sphe_3 - - .. code:: text - - double precision, allocatable :: cart_to_sphe_3 (10,7) - - File: :file:`spherical_to_cartesian.irp.f` - - Spherical -> Cartesian Transformation matrix for l=3 - - - - -.. c:var:: cart_to_sphe_4 - - .. code:: text - - double precision, allocatable :: cart_to_sphe_4 (15,9) - - File: :file:`spherical_to_cartesian.irp.f` - - Spherical -> Cartesian Transformation matrix for l=4 - - - - -.. c:var:: cart_to_sphe_5 - - .. code:: text - - double precision, allocatable :: cart_to_sphe_5 (21,11) - - File: :file:`spherical_to_cartesian.irp.f` - - Spherical -> Cartesian Transformation matrix for l=5 - - - - -.. c:var:: cart_to_sphe_6 - - .. code:: text - - double precision, allocatable :: cart_to_sphe_6 (28,13) - - File: :file:`spherical_to_cartesian.irp.f` - - Spherical -> Cartesian Transformation matrix for l=6 - - - - -.. c:var:: cart_to_sphe_7 - - .. code:: text - - double precision, allocatable :: cart_to_sphe_7 (36,15) - - File: :file:`spherical_to_cartesian.irp.f` - - Spherical -> Cartesian Transformation matrix for l=7 - - - - -.. c:var:: cart_to_sphe_8 - - .. code:: text - - double precision, allocatable :: cart_to_sphe_8 (45,17) - - File: :file:`spherical_to_cartesian.irp.f` - - Spherical -> Cartesian Transformation matrix for l=8 - - - - -.. c:var:: cart_to_sphe_9 - - .. code:: text - - double precision, allocatable :: cart_to_sphe_9 (55,19) - - File: :file:`spherical_to_cartesian.irp.f` - - Spherical -> Cartesian Transformation matrix for l=9 - - - - -.. c:var:: l_to_charater - - .. code:: text - - character*(128), allocatable :: l_to_charater (0:7) - - File: :file:`aos.irp.f` - - Character corresponding to the "l" value of an |AO| - - - - -.. c:var:: n_aos_max - - .. code:: text - - integer, allocatable :: nucl_n_aos (nucl_num) - integer :: n_aos_max - - File: :file:`aos.irp.f` - - Number of |AOs| per atom - - - - -.. c:var:: n_pt_max_i_x - - .. code:: text - - integer :: n_pt_max_integrals - integer :: n_pt_max_i_x - - File: :file:`dimensions_integrals.irp.f` - - Number of points used in the numerical integrations. - - - - -.. c:var:: n_pt_max_integrals - - .. code:: text - - integer :: n_pt_max_integrals - integer :: n_pt_max_i_x - - File: :file:`dimensions_integrals.irp.f` - - Number of points used in the numerical integrations. - - - - -.. c:var:: nucl_aos - - .. code:: text - - integer, allocatable :: nucl_aos (nucl_num,N_AOs_max) - - File: :file:`aos.irp.f` - - List of |AOs| centered on each atom - - - - -.. c:var:: nucl_aos_transposed - - .. code:: text - - integer, allocatable :: nucl_aos_transposed (N_AOs_max,nucl_num) - - File: :file:`aos_transp.irp.f` - - List of AOs attached on each atom - - - - -.. c:var:: nucl_list_shell_aos - - .. code:: text - - integer, allocatable :: nucl_list_shell_aos (nucl_num,N_AOs_max) - integer, allocatable :: nucl_num_shell_aos (nucl_num) - - File: :file:`aos.irp.f` - - Index of the shell type |AOs| and of the corresponding |AOs| By convention, for p,d,f and g |AOs|, we take the index of the |AO| with the the corresponding power in the x axis - - - - -.. c:var:: nucl_n_aos - - .. code:: text - - integer, allocatable :: nucl_n_aos (nucl_num) - integer :: n_aos_max - - File: :file:`aos.irp.f` - - Number of |AOs| per atom - - - - -.. c:var:: nucl_num_shell_aos - - .. code:: text - - integer, allocatable :: nucl_list_shell_aos (nucl_num,N_AOs_max) - integer, allocatable :: nucl_num_shell_aos (nucl_num) - - File: :file:`aos.irp.f` - - Index of the shell type |AOs| and of the corresponding |AOs| By convention, for p,d,f and g |AOs|, we take the index of the |AO| with the the corresponding power in the x axis - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: ao_power_index - - .. code:: text - - integer function ao_power_index(nx,ny,nz) - - File: :file:`aos.irp.f` - - Unique index given to a triplet of powers: - :math:`\frac{1}{2} (l-n_x) (l-n_x+1) + n_z + 1` - - - - - -.. c:function:: ao_value - - .. code:: text - - double precision function ao_value(i,r) - - File: :file:`aos_value.irp.f` - - return the value of the ith ao at point r - - - - - -.. c:function:: give_all_aos_and_grad_and_lapl_at_r - - .. code:: text - - subroutine give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array) - - File: :file:`aos_value.irp.f` - - input : r(1) ==> r(1) = x, r(2) = y, r(3) = z output : aos_array(i) = ao(i) evaluated at r : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r - - - - - -.. c:function:: give_all_aos_and_grad_at_r - - .. code:: text - - subroutine give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array) - - File: :file:`aos_value.irp.f` - - input : r(1) ==> r(1) = x, r(2) = y, r(3) = z output : aos_array(i) = ao(i) evaluated at r : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r - - - - - -.. c:function:: give_all_aos_at_r - - .. code:: text - - subroutine give_all_aos_at_r(r,aos_array) - - File: :file:`aos_value.irp.f` - - input : r == r(1) = x and so on aos_array(i) = aos(i) evaluated in r - - - - - -.. c:function:: give_all_aos_at_r_old - - .. code:: text - - subroutine give_all_aos_at_r_old(r,aos_array) - - File: :file:`aos_value.irp.f` - - gives the values of aos at a given point r - - - - - -.. c:function:: primitive_value - - .. code:: text - - double precision function primitive_value(i,j,r) - - File: :file:`aos_value.irp.f` - - return the value of the jth primitive of ith ao at point r WITHOUT THE COEF - - diff --git a/docs/source/modules/ao_one_e_integrals.rst b/docs/source/modules/ao_one_e_integrals.rst deleted file mode 100644 index 02420d50..00000000 --- a/docs/source/modules/ao_one_e_integrals.rst +++ /dev/null @@ -1,992 +0,0 @@ -.. _ao_one_e_integrals: - -.. program:: ao_one_e_integrals - -.. default-role:: option - -================== -ao_one_e_integrals -================== - -All the one-electron integrals in the |AO| basis are here. - -The most important providers for usual quantum-chemistry calculation are: - -# `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) -# `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) -# `ao_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) - -Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`. - - - -EZFIO parameters ----------------- - -.. option:: integral_nuclear - - Nucleus-electron integrals in |AO| basis set - - -.. option:: integral_kinetic - - Kinetic energy integrals in |AO| basis set - - -.. option:: integral_pseudo - - Pseudopotential integrals in |AO| basis set - - -.. option:: integral_overlap - - Overlap integrals in |AO| basis set - - -.. option:: disk_access_ao_one_integrals - - Read/Write |AO| one-electron integrals from/to disk [ Write | Read | None ] - - Default: None - - -Providers ---------- - - -.. c:var:: ao_cart_to_sphe_coef - - .. code:: text - - double precision, allocatable :: ao_cart_to_sphe_coef (ao_num,ao_num) - integer :: ao_cart_to_sphe_num - - File: :file:`ao_ortho_canonical.irp.f` - - Coefficients to go from cartesian to spherical coordinates in the current basis set - - - - -.. c:var:: ao_cart_to_sphe_inv - - .. code:: text - - double precision, allocatable :: ao_cart_to_sphe_inv (ao_cart_to_sphe_num,ao_num) - - File: :file:`ao_ortho_canonical.irp.f` - - Inverse of :c:var:`ao_cart_to_sphe_coef` - - - - -.. c:var:: ao_cart_to_sphe_num - - .. code:: text - - double precision, allocatable :: ao_cart_to_sphe_coef (ao_num,ao_num) - integer :: ao_cart_to_sphe_num - - File: :file:`ao_ortho_canonical.irp.f` - - Coefficients to go from cartesian to spherical coordinates in the current basis set - - - - -.. c:var:: ao_cart_to_sphe_overlap - - .. code:: text - - double precision, allocatable :: ao_cart_to_sphe_overlap (ao_cart_to_sphe_num,ao_cart_to_sphe_num) - - File: :file:`ao_ortho_canonical.irp.f` - - |AO| overlap matrix in the spherical basis set - - - - -.. c:var:: ao_deriv2_x - - .. code:: text - - double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) - double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) - double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) - - File: :file:`kin_ao_ints.irp.f` - - Second derivative matrix elements in the |AO| basis. - :math:`{\tt ao_deriv2_x} = \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` - - - - - -.. c:var:: ao_deriv2_y - - .. code:: text - - double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) - double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) - double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) - - File: :file:`kin_ao_ints.irp.f` - - Second derivative matrix elements in the |AO| basis. - :math:`{\tt ao_deriv2_x} = \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` - - - - - -.. c:var:: ao_deriv2_z - - .. code:: text - - double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) - double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) - double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) - - File: :file:`kin_ao_ints.irp.f` - - Second derivative matrix elements in the |AO| basis. - :math:`{\tt ao_deriv2_x} = \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` - - - - - -.. c:var:: ao_deriv_1_x - - .. code:: text - - double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) - double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) - double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) - - File: :file:`spread_dipole_ao.irp.f` - - * array of the integrals of AO_i * d/dx AO_j - * array of the integrals of AO_i * d/dy AO_j - * array of the integrals of AO_i * d/dz AO_j - - - - -.. c:var:: ao_deriv_1_y - - .. code:: text - - double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) - double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) - double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) - - File: :file:`spread_dipole_ao.irp.f` - - * array of the integrals of AO_i * d/dx AO_j - * array of the integrals of AO_i * d/dy AO_j - * array of the integrals of AO_i * d/dz AO_j - - - - -.. c:var:: ao_deriv_1_z - - .. code:: text - - double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) - double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) - double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) - - File: :file:`spread_dipole_ao.irp.f` - - * array of the integrals of AO_i * d/dx AO_j - * array of the integrals of AO_i * d/dy AO_j - * array of the integrals of AO_i * d/dz AO_j - - - - -.. c:var:: ao_dipole_x - - .. code:: text - - double precision, allocatable :: ao_dipole_x (ao_num,ao_num) - double precision, allocatable :: ao_dipole_y (ao_num,ao_num) - double precision, allocatable :: ao_dipole_z (ao_num,ao_num) - - File: :file:`spread_dipole_ao.irp.f` - - * array of the integrals of AO_i * x AO_j - * array of the integrals of AO_i * y AO_j - * array of the integrals of AO_i * z AO_j - - - - -.. c:var:: ao_dipole_y - - .. code:: text - - double precision, allocatable :: ao_dipole_x (ao_num,ao_num) - double precision, allocatable :: ao_dipole_y (ao_num,ao_num) - double precision, allocatable :: ao_dipole_z (ao_num,ao_num) - - File: :file:`spread_dipole_ao.irp.f` - - * array of the integrals of AO_i * x AO_j - * array of the integrals of AO_i * y AO_j - * array of the integrals of AO_i * z AO_j - - - - -.. c:var:: ao_dipole_z - - .. code:: text - - double precision, allocatable :: ao_dipole_x (ao_num,ao_num) - double precision, allocatable :: ao_dipole_y (ao_num,ao_num) - double precision, allocatable :: ao_dipole_z (ao_num,ao_num) - - File: :file:`spread_dipole_ao.irp.f` - - * array of the integrals of AO_i * x AO_j - * array of the integrals of AO_i * y AO_j - * array of the integrals of AO_i * z AO_j - - - - -.. c:var:: ao_kinetic_integral - - .. code:: text - - double precision, allocatable :: ao_kinetic_integral (ao_num,ao_num) - - File: :file:`kin_ao_ints.irp.f` - - Kinetic energy integrals in the |AO| basis. - :math:`\langle \chi_i |\hat{T}| \chi_j \rangle` - - - - -.. c:var:: ao_mono_elec_integral - - .. code:: text - - double precision, allocatable :: ao_mono_elec_integral (ao_num,ao_num) - double precision, allocatable :: ao_mono_elec_integral_diag (ao_num) - - File: :file:`ao_mono_ints.irp.f` - - Array of the one-electron Hamiltonian on the |AO| basis. - - - - -.. c:var:: ao_mono_elec_integral_diag - - .. code:: text - - double precision, allocatable :: ao_mono_elec_integral (ao_num,ao_num) - double precision, allocatable :: ao_mono_elec_integral_diag (ao_num) - - File: :file:`ao_mono_ints.irp.f` - - Array of the one-electron Hamiltonian on the |AO| basis. - - - - -.. c:var:: ao_nucl_elec_integral - - .. code:: text - - double precision, allocatable :: ao_nucl_elec_integral (ao_num,ao_num) - - File: :file:`pot_ao_ints.irp.f` - - Nucleus-electron interaction, in the |AO| basis set. - :math:`\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle` - - - - -.. c:var:: ao_nucl_elec_integral_per_atom - - .. code:: text - - double precision, allocatable :: ao_nucl_elec_integral_per_atom (ao_num,ao_num,nucl_num) - - File: :file:`pot_ao_ints.irp.f` - - Nucleus-electron interaction in the |AO| basis set, per atom A. - :math:`\langle \chi_i | -\frac{1}{|r-R_A|} | \chi_j \rangle` - - - - -.. c:var:: ao_ortho_canonical_coef - - .. code:: text - - double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num) - integer :: ao_ortho_canonical_num - - File: :file:`ao_ortho_canonical.irp.f` - - matrix of the coefficients of the mos generated by the orthonormalization by the S^{-1/2} canonical transformation of the aos ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital - - - - -.. c:var:: ao_ortho_canonical_coef_inv - - .. code:: text - - double precision, allocatable :: ao_ortho_canonical_coef_inv (ao_num,ao_num) - - File: :file:`ao_ortho_canonical.irp.f` - - ao_ortho_canonical_coef^(-1) - - - - -.. c:var:: ao_ortho_canonical_num - - .. code:: text - - double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num) - integer :: ao_ortho_canonical_num - - File: :file:`ao_ortho_canonical.irp.f` - - matrix of the coefficients of the mos generated by the orthonormalization by the S^{-1/2} canonical transformation of the aos ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital - - - - -.. c:var:: ao_ortho_canonical_overlap - - .. code:: text - - double precision, allocatable :: ao_ortho_canonical_overlap (ao_ortho_canonical_num,ao_ortho_canonical_num) - - File: :file:`ao_ortho_canonical.irp.f` - - overlap matrix of the ao_ortho_canonical. Expected to be the Identity - - - - -.. c:var:: ao_overlap - - .. code:: text - - double precision, allocatable :: ao_overlap (ao_num,ao_num) - double precision, allocatable :: ao_overlap_x (ao_num,ao_num) - double precision, allocatable :: ao_overlap_y (ao_num,ao_num) - double precision, allocatable :: ao_overlap_z (ao_num,ao_num) - - File: :file:`ao_overlap.irp.f` - - Overlap between atomic basis functions: - :math:`\int \chi_i(r) \chi_j(r) dr` - - - - -.. c:var:: ao_overlap_abs - - .. code:: text - - double precision, allocatable :: ao_overlap_abs (ao_num,ao_num) - - File: :file:`ao_overlap.irp.f` - - Overlap between absolute values of atomic basis functions: - :math:`\int |\chi_i(r)| |\chi_j(r)| dr` - - - - -.. c:var:: ao_overlap_x - - .. code:: text - - double precision, allocatable :: ao_overlap (ao_num,ao_num) - double precision, allocatable :: ao_overlap_x (ao_num,ao_num) - double precision, allocatable :: ao_overlap_y (ao_num,ao_num) - double precision, allocatable :: ao_overlap_z (ao_num,ao_num) - - File: :file:`ao_overlap.irp.f` - - Overlap between atomic basis functions: - :math:`\int \chi_i(r) \chi_j(r) dr` - - - - -.. c:var:: ao_overlap_y - - .. code:: text - - double precision, allocatable :: ao_overlap (ao_num,ao_num) - double precision, allocatable :: ao_overlap_x (ao_num,ao_num) - double precision, allocatable :: ao_overlap_y (ao_num,ao_num) - double precision, allocatable :: ao_overlap_z (ao_num,ao_num) - - File: :file:`ao_overlap.irp.f` - - Overlap between atomic basis functions: - :math:`\int \chi_i(r) \chi_j(r) dr` - - - - -.. c:var:: ao_overlap_z - - .. code:: text - - double precision, allocatable :: ao_overlap (ao_num,ao_num) - double precision, allocatable :: ao_overlap_x (ao_num,ao_num) - double precision, allocatable :: ao_overlap_y (ao_num,ao_num) - double precision, allocatable :: ao_overlap_z (ao_num,ao_num) - - File: :file:`ao_overlap.irp.f` - - Overlap between atomic basis functions: - :math:`\int \chi_i(r) \chi_j(r) dr` - - - - -.. c:var:: ao_pseudo_integral - - .. code:: text - - double precision, allocatable :: ao_pseudo_integral (ao_num,ao_num) - - File: :file:`pot_ao_pseudo_ints.irp.f` - - Pseudo-potential integrals in the |AO| basis set. - - - - -.. c:var:: ao_pseudo_integral_local - - .. code:: text - - double precision, allocatable :: ao_pseudo_integral_local (ao_num,ao_num) - - File: :file:`pot_ao_pseudo_ints.irp.f` - - Local pseudo-potential - - - - -.. c:var:: ao_pseudo_integral_non_local - - .. code:: text - - double precision, allocatable :: ao_pseudo_integral_non_local (ao_num,ao_num) - - File: :file:`pot_ao_pseudo_ints.irp.f` - - Non-local pseudo-potential - - - - -.. c:var:: ao_spread_x - - .. code:: text - - double precision, allocatable :: ao_spread_x (ao_num,ao_num) - double precision, allocatable :: ao_spread_y (ao_num,ao_num) - double precision, allocatable :: ao_spread_z (ao_num,ao_num) - - File: :file:`spread_dipole_ao.irp.f` - - * array of the integrals of AO_i * x^2 AO_j - * array of the integrals of AO_i * y^2 AO_j - * array of the integrals of AO_i * z^2 AO_j - - - - -.. c:var:: ao_spread_y - - .. code:: text - - double precision, allocatable :: ao_spread_x (ao_num,ao_num) - double precision, allocatable :: ao_spread_y (ao_num,ao_num) - double precision, allocatable :: ao_spread_z (ao_num,ao_num) - - File: :file:`spread_dipole_ao.irp.f` - - * array of the integrals of AO_i * x^2 AO_j - * array of the integrals of AO_i * y^2 AO_j - * array of the integrals of AO_i * z^2 AO_j - - - - -.. c:var:: ao_spread_z - - .. code:: text - - double precision, allocatable :: ao_spread_x (ao_num,ao_num) - double precision, allocatable :: ao_spread_y (ao_num,ao_num) - double precision, allocatable :: ao_spread_z (ao_num,ao_num) - - File: :file:`spread_dipole_ao.irp.f` - - * array of the integrals of AO_i * x^2 AO_j - * array of the integrals of AO_i * y^2 AO_j - * array of the integrals of AO_i * z^2 AO_j - - - - -.. c:var:: i_x1_pol_mult_mono_elec - - .. code:: text - - recursive subroutine I_x1_pol_mult_mono_elec(a,c,R1x,R1xp,R2x,d,nd,n_pt_in) - - File: :file:`pot_ao_ints.irp.f` - - Recursive routine involved in the electron-nucleus potential - - - - -.. c:var:: i_x2_pol_mult_mono_elec - - .. code:: text - - recursive subroutine I_x2_pol_mult_mono_elec(c,R1x,R1xp,R2x,d,nd,dim) - - File: :file:`pot_ao_ints.irp.f` - - Recursive routine involved in the electron-nucleus potential - - - - -.. c:var:: pseudo_dz_k_transp - - .. code:: text - - double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) - integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) - double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) - - File: :file:`pot_ao_pseudo_ints.irp.f` - - Transposed arrays for pseudopotentials - - - - -.. c:var:: pseudo_dz_kl_transp - - .. code:: text - - double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - - File: :file:`pot_ao_pseudo_ints.irp.f` - - Transposed arrays for pseudopotentials - - - - -.. c:var:: pseudo_n_k_transp - - .. code:: text - - double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) - integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) - double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) - - File: :file:`pot_ao_pseudo_ints.irp.f` - - Transposed arrays for pseudopotentials - - - - -.. c:var:: pseudo_n_kl_transp - - .. code:: text - - double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - - File: :file:`pot_ao_pseudo_ints.irp.f` - - Transposed arrays for pseudopotentials - - - - -.. c:var:: pseudo_v_k_transp - - .. code:: text - - double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) - integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) - double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) - - File: :file:`pot_ao_pseudo_ints.irp.f` - - Transposed arrays for pseudopotentials - - - - -.. c:var:: pseudo_v_kl_transp - - .. code:: text - - double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) - - File: :file:`pot_ao_pseudo_ints.irp.f` - - Transposed arrays for pseudopotentials - - - - -.. c:var:: read_ao_one_integrals - - .. code:: text - - logical :: read_ao_one_integrals - logical :: write_ao_one_integrals - - File: :file:`read_write.irp.f` - - If |true|, read/write one-electrons from/to disk. - - - - -.. c:var:: s_half - - .. code:: text - - double precision, allocatable :: s_half (ao_num,ao_num) - - File: :file:`ao_overlap.irp.f` - - :math:`S^{1/2}` - - - - -.. c:var:: s_half_inv - - .. code:: text - - double precision, allocatable :: s_half_inv (AO_num,AO_num) - - File: :file:`ao_overlap.irp.f` - - :math:`X = S^{-1/2}` obtained by SVD - - - - -.. c:var:: s_inv - - .. code:: text - - double precision, allocatable :: s_inv (ao_num,ao_num) - - File: :file:`ao_overlap.irp.f` - - Inverse of the overlap matrix - - - - -.. c:var:: write_ao_one_integrals - - .. code:: text - - logical :: read_ao_one_integrals - logical :: write_ao_one_integrals - - File: :file:`read_write.irp.f` - - If |true|, read/write one-electrons from/to disk. - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: give_all_erf_kl_ao - - .. code:: text - - subroutine give_all_erf_kl_ao(integrals_ao,mu_in,C_center) - - File: :file:`pot_ao_erf_ints.irp.f` - - subroutine that returs all integrals over r of type erf(mu_in * |r-C_center|)/|r-C_center| - - - - - -.. c:function:: give_polynom_mult_center_mono_elec - - .. code:: text - - subroutine give_polynom_mult_center_mono_elec(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out) - - File: :file:`pot_ao_ints.irp.f` - - Returns the explicit polynomial in terms of the "t" variable of the following - :math:`I_x1(a_x, d_x,p,q) * I_x1(a_y, d_y,p,q) * I_x1(a_z, d_z,p,q)` - - - - - -.. c:function:: give_polynom_mult_center_mono_elec_erf - - .. code:: text - - subroutine give_polynom_mult_center_mono_elec_erf(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in) - - File: :file:`pot_ao_erf_ints.irp.f` - - - - - - - -.. c:function:: give_polynom_mult_center_mono_elec_erf_opt - - .. code:: text - - subroutine give_polynom_mult_center_mono_elec_erf_opt(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in,p,p_inv,p_inv_2,p_new,P_center) - - File: :file:`pot_ao_erf_ints.irp.f` - - - - - - - -.. c:function:: int_gaus_pol - - .. code:: text - - double precision function int_gaus_pol(alpha,n) - - File: :file:`pot_ao_ints.irp.f` - - Computes the integral: - :math:`\int_{-\infty}^{\infty} x^n \exp(-\alpha x^2) dx` - - - - - -.. c:function:: nai_pol_mult - - .. code:: text - - double precision function NAI_pol_mult(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in) - - File: :file:`pot_ao_ints.irp.f` - - Computes the electron-nucleus attraction with two primitves. - :math:`\langle g_i | \frac{1}{|r-R_c|} | g_j \rangle` - - - - - -.. c:function:: nai_pol_mult_erf - - .. code:: text - - double precision function NAI_pol_mult_erf(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in,mu_in) - - File: :file:`pot_ao_erf_ints.irp.f` - - - - - - - -.. c:function:: nai_pol_mult_erf_ao - - .. code:: text - - double precision function NAI_pol_mult_erf_ao(i_ao,j_ao,mu_in,C_center) - - File: :file:`pot_ao_erf_ints.irp.f` - - computes the following integral : int[-infty;+infty] dr AO_i_ao (r) AO_j_ao(r) erf(mu_in * |r-C_center|)/|r-C_center| - - - - - -.. c:function:: overlap_bourrin_deriv_x - - .. code:: text - - subroutine overlap_bourrin_deriv_x(i_component,A_center,B_center,alpha,beta,power_A,power_B,dx,lower_exp_val,overlap_x,nx) - - File: :file:`spread_dipole_ao.irp.f` - - - - - - - -.. c:function:: overlap_bourrin_dipole - - .. code:: text - - subroutine overlap_bourrin_dipole(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) - - File: :file:`spread_dipole_ao.irp.f` - - - - - - - -.. c:function:: overlap_bourrin_spread - - .. code:: text - - subroutine overlap_bourrin_spread(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) - - File: :file:`spread_dipole_ao.irp.f` - - Computes the following integral : int [-infty ; +infty] of [(x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) * x ] needed for the dipole and those things - - - - - -.. c:function:: overlap_bourrin_x - - .. code:: text - - subroutine overlap_bourrin_x(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) - - File: :file:`spread_dipole_ao.irp.f` - - - - - - - -.. c:function:: v_e_n - - .. code:: text - - double precision function V_e_n(a_x,a_y,a_z,b_x,b_y,b_z,alpha,beta) - - File: :file:`pot_ao_ints.irp.f` - - Primitve nuclear attraction between the two primitves centered on the same atom. - primitive_1 = x**(a_x) y**(a_y) z**(a_z) exp(-alpha * r**2) - primitive_2 = x**(b_x) y**(b_y) z**(b_z) exp(- beta * r**2) - - - - - -.. c:function:: v_phi - - .. code:: text - - double precision function V_phi(n,m) - - File: :file:`pot_ao_ints.irp.f` - - Computes the angular "phi" part of the nuclear attraction integral: - :math:`\int_{0}^{2 \pi} \cos(\phi)^n \sin(\phi)^m d\phi` - - - - - -.. c:function:: v_r - - .. code:: text - - double precision function V_r(n,alpha) - - File: :file:`pot_ao_ints.irp.f` - - Computes the radial part of the nuclear attraction integral: - :math:`\int_{0}^{\infty} r^n \exp(-\alpha r^2) dr` - - - - - - -.. c:function:: v_theta - - .. code:: text - - double precision function V_theta(n,m) - - File: :file:`pot_ao_ints.irp.f` - - Computes the angular "theta" part of the nuclear attraction integral: - :math:`\int_{0}^{\pi} \cos(\theta)^n \sin(\theta)^m d\theta` - - - - - -.. c:function:: wallis - - .. code:: text - - double precision function Wallis(n) - - File: :file:`pot_ao_ints.irp.f` - - Wallis integral: - :math:`\int_{0}^{\pi} \cos(\theta)^n d\theta` - - diff --git a/docs/source/modules/aux_quantities.rst b/docs/source/modules/aux_quantities.rst deleted file mode 100644 index 4e6fde73..00000000 --- a/docs/source/modules/aux_quantities.rst +++ /dev/null @@ -1,44 +0,0 @@ -.. _aux_quantities: - -.. program:: aux_quantities - -.. default-role:: option - -============== -aux_quantities -============== - - -This module contains some global variables (such as densities and energies) which are stored in the EZFIO folder in a different place than determinants. This is used in practice to store density matrices which can be obtained from any methods, as long as they are stored in the same MO basis which is used for the calculations. In |RS-DFT| calculations, this can be done to perform damping on the density in order to speed up convergence. - -The main providers of that module are: - -# `data_one_body_alpha_dm_mo` and `data_one_body_beta_dm_mo` which are the one-body alpha and beta densities which are necessary read from the EZFIO folder. - - -Thanks to these providers you can use any density matrix that does not necessary corresponds to that of the current wave function. - - - -EZFIO parameters ----------------- - -.. option:: data_energy_var - - Variational energy computed with the wave function - - -.. option:: data_energy_proj - - Projected energy computed with the wave function - - -.. option:: data_one_body_alpha_dm_mo - - Alpha one body density matrix on the MO basis computed with the wave function - - -.. option:: data_one_body_beta_dm_mo - - Beta one body density matrix on the MO basis computed with the wave function - diff --git a/docs/source/modules/becke_numerical_grid.rst b/docs/source/modules/becke_numerical_grid.rst deleted file mode 100644 index c1c102a7..00000000 --- a/docs/source/modules/becke_numerical_grid.rst +++ /dev/null @@ -1,405 +0,0 @@ -.. _becke_numerical_grid: - -.. program:: becke_numerical_grid - -.. default-role:: option - -==================== -becke_numerical_grid -==================== - -This module contains all quantities needed to build the Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions. - -This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains a certain number of radial and angular points. - -The main providers of that module are: - -# :option:`becke_numerical_grid n_points_integration_angular` which is the number of angular integration points. WARNING: it obeys to specific rules so it cannot be any integer number. Some of the possible values are [ 50 | 74 | 266 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details. -# :option:`becke_numerical_grid n_points_radial_grid` which is the number of radial angular points. This can be any strictly positive integer. Nevertheless, a minimum of 50 is in general necessary. -# `final_grid_points` which are the (x,y,z) coordinates of the grid points. -# `final_weight_at_r_vector` which are the weights at each grid point - -For a simple example of how to use the grid, see :file:`example.irp.f`. - -The spherical integration uses Lebedev-Laikov grids, which was used from the code distributed through CCL (http://www.ccl.net/). -See next section for explanations and citation policies. - -.. code-block:: text - - This subroutine is part of a set of subroutines that generate - Lebedev grids [1-6] for integration on a sphere. The original - C-code [1] was kindly provided by Dr. Dmitri N. Laikov and - translated into fortran by Dr. Christoph van Wuellen. - This subroutine was translated using a C to fortran77 conversion - tool written by Dr. Christoph van Wuellen. - - Users of this code are asked to include reference [1] in their - publications, and in the user- and programmers-manuals - describing their codes. - - This code was distributed through CCL (http://www.ccl.net/). - - [1] V.I. Lebedev, and D.N. Laikov - "A quadrature formula for the sphere of the 131st - algebraic order of accuracy" - Doklady Mathematics, Vol. 59, No. 3, 1999, pp. 477-481. - - [2] V.I. Lebedev - "A quadrature formula for the sphere of 59th algebraic - order of accuracy" - Russian Acad. Sci. Dokl. Math., Vol. 50, 1995, pp. 283-286. - - [3] V.I. Lebedev, and A.L. Skorokhodov - "Quadrature formulas of orders 41, 47, and 53 for the sphere" - Russian Acad. Sci. Dokl. Math., Vol. 45, 1992, pp. 587-592. - - [4] V.I. Lebedev - "Spherical quadrature formulas exact to orders 25-29" - Siberian Mathematical Journal, Vol. 18, 1977, pp. 99-107. - - [5] V.I. Lebedev - "Quadratures on a sphere" - Computational Mathematics and Mathematical Physics, Vol. 16, - 1976, pp. 10-24. - - [6] V.I. Lebedev - "Values of the nodes and weights of ninth to seventeenth - order Gauss-Markov quadrature formulae invariant under the - octahedron group with inversion" - Computational Mathematics and Mathematical Physics, Vol. 15, - 1975, pp. 44-51. - - - - - -EZFIO parameters ----------------- - -.. option:: n_points_integration_angular - - Number of angular points per atom for 3d numerical integration, needed for DFT for example [ 50 | 74 | 266 | 590 | 1202 | 2030 | 5810 ] - - Default: 590 - -.. option:: n_points_radial_grid - - Number of radial points per atom for 3d numerical integration, needed for DFT for example - - Default: 60 - - -Providers ---------- - - -.. c:var:: alpha_knowles - - .. code:: text - - double precision, allocatable :: alpha_knowles (100) - - File: :file:`integration_radial.irp.f` - - Recommended values for the alpha parameters according to the paper of Knowles (JCP, 104, 1996) as a function of the nuclear charge - - - - -.. c:var:: angular_quadrature_points - - .. code:: text - - double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3) - double precision, allocatable :: weights_angular_points (n_points_integration_angular) - - File: :file:`grid_becke.irp.f` - - weights and grid points for the integration on the angular variables on the unit sphere centered on (0,0,0) According to the LEBEDEV scheme - - - - -.. c:var:: dr_radial_integral - - .. code:: text - - double precision, allocatable :: grid_points_radial (n_points_radial_grid) - double precision :: dr_radial_integral - - File: :file:`grid_becke.irp.f` - - points in [0,1] to map the radial integral [0,\infty] - - - - -.. c:var:: final_grid_points - - .. code:: text - - double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) - integer, allocatable :: index_final_points (3,n_points_final_grid) - integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) - - File: :file:`grid_becke_vector.irp.f` - - final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions - index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point - index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices - - - - -.. c:var:: final_weight_at_r - - .. code:: text - - double precision, allocatable :: final_weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num) - - File: :file:`grid_becke.irp.f` - - Total weight on each grid point which takes into account all Lebedev, Voronoi and radial weights. - - - - -.. c:var:: final_weight_at_r_vector - - .. code:: text - - double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) - integer, allocatable :: index_final_points (3,n_points_final_grid) - integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) - - File: :file:`grid_becke_vector.irp.f` - - final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions - index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point - index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices - - - - -.. c:var:: grid_points_per_atom - - .. code:: text - - double precision, allocatable :: grid_points_per_atom (3,n_points_integration_angular,n_points_radial_grid,nucl_num) - - File: :file:`grid_becke.irp.f` - - x,y,z coordinates of grid points used for integration in 3d space - - - - -.. c:var:: grid_points_radial - - .. code:: text - - double precision, allocatable :: grid_points_radial (n_points_radial_grid) - double precision :: dr_radial_integral - - File: :file:`grid_becke.irp.f` - - points in [0,1] to map the radial integral [0,\infty] - - - - -.. c:var:: index_final_points - - .. code:: text - - double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) - integer, allocatable :: index_final_points (3,n_points_final_grid) - integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) - - File: :file:`grid_becke_vector.irp.f` - - final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions - index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point - index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices - - - - -.. c:var:: index_final_points_reverse - - .. code:: text - - double precision, allocatable :: final_grid_points (3,n_points_final_grid) - double precision, allocatable :: final_weight_at_r_vector (n_points_final_grid) - integer, allocatable :: index_final_points (3,n_points_final_grid) - integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) - - File: :file:`grid_becke_vector.irp.f` - - final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point - final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions - index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point - index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices - - - - -.. c:var:: m_knowles - - .. code:: text - - integer :: m_knowles - - File: :file:`grid_becke.irp.f` - - value of the "m" parameter in the equation (7) of the paper of Knowles (JCP, 104, 1996) - - - - -.. c:var:: n_points_final_grid - - .. code:: text - - integer :: n_points_final_grid - - File: :file:`grid_becke_vector.irp.f` - - Number of points which are non zero - - - - -.. c:var:: n_points_grid_per_atom - - .. code:: text - - integer :: n_points_grid_per_atom - - File: :file:`grid_becke.irp.f` - - Number of grid points per atom - - - - -.. c:var:: weight_at_r - - .. code:: text - - double precision, allocatable :: weight_at_r (n_points_integration_angular,n_points_radial_grid,nucl_num) - - File: :file:`grid_becke.irp.f` - - Weight function at grid points : w_n(r) according to the equation (22) of Becke original paper (JCP, 88, 1988) - The "n" discrete variable represents the nucleis which in this array is represented by the last dimension and the points are labelled by the other dimensions. - - - - -.. c:var:: weights_angular_points - - .. code:: text - - double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3) - double precision, allocatable :: weights_angular_points (n_points_integration_angular) - - File: :file:`grid_becke.irp.f` - - weights and grid points for the integration on the angular variables on the unit sphere centered on (0,0,0) According to the LEBEDEV scheme - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: cell_function_becke - - .. code:: text - - double precision function cell_function_becke(r,atom_number) - - File: :file:`step_function_becke.irp.f` - - atom_number :: atom on which the cell function of Becke (1988, JCP,88(4)) r(1:3) :: x,y,z coordinantes of the current point - - - - - -.. c:function:: derivative_knowles_function - - .. code:: text - - double precision function derivative_knowles_function(alpha,m,x) - - File: :file:`integration_radial.irp.f` - - Derivative of the function proposed by Knowles (JCP, 104, 1996) for distributing the radial points - - - - - -.. c:function:: example_becke_numerical_grid - - .. code:: text - - subroutine example_becke_numerical_grid - - File: :file:`example.irp.f` - - subroutine that illustrates the main features available in becke_numerical_grid - - - - - -.. c:function:: f_function_becke - - .. code:: text - - double precision function f_function_becke(x) - - File: :file:`step_function_becke.irp.f` - - - - - - - -.. c:function:: knowles_function - - .. code:: text - - double precision function knowles_function(alpha,m,x) - - File: :file:`integration_radial.irp.f` - - Function proposed by Knowles (JCP, 104, 1996) for distributing the radial points : the Log "m" function ( equation (7) in the paper ) - - - - - -.. c:function:: step_function_becke - - .. code:: text - - double precision function step_function_becke(x) - - File: :file:`step_function_becke.irp.f` - - Step function of the Becke paper (1988, JCP,88(4)) - - diff --git a/docs/source/modules/bitmask.rst b/docs/source/modules/bitmask.rst deleted file mode 100644 index 11e99b89..00000000 --- a/docs/source/modules/bitmask.rst +++ /dev/null @@ -1,1254 +0,0 @@ -.. _bitmask: - -.. program:: bitmask - -.. default-role:: option - -============== -bitmask module -============== - -The central part of this module is the :file:`bitmasks_module.f90` file. It contains -the constants that will be used to define on which kind of integer the bitmasks -will be defined. - -In the program, to represent a determinant as a pair of bitstrings, -the determinant should be defined as - -.. code-block:: fortran - - use bitmasks - integer(bit_kind) :: determinant(N_int,2) - - -:file:`bitmasks_routines.irp.f` contains helper routines to manipulate bitmask, like -transforming a bit string to a list of integers for example. - - -`bit_kind_shift`, `bit_kind_size` and `bit_kind` are supposed to be consistent:: - - 2**bit_kind_shift = bit_kind_size - bit_kind = bit_kind_size / 8 - - -For an example of how to use the bitmaks, see the file :file:`example.irp.f`. - - - -Providers ---------- - - -.. c:var:: cas_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: cas_bitmask (N_int,2,N_cas_bitmask) - - File: :file:`bitmasks.irp.f` - - Bitmasks for CAS reference determinants. (N_int, alpha/beta, CAS reference) - - - - -.. c:var:: closed_shell_ref_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: closed_shell_ref_bitmask (N_int,2) - - File: :file:`bitmasks.irp.f` - - - - - - -.. c:var:: core_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer :: n_core_orb - - File: :file:`bitmasks.irp.f` - - Core + deleted orbitals bitmask - - - - -.. c:var:: core_inact_act_bitmask_4 - - .. code:: text - - integer(bit_kind), allocatable :: core_inact_act_bitmask_4 (N_int,4) - - File: :file:`bitmasks.irp.f` - - - - - - -.. c:var:: core_inact_virt_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: inact_virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: core_inact_virt_bitmask (N_int,2) - - File: :file:`bitmasks.irp.f` - - Reunion of the inactive and virtual bitmasks - - - - -.. c:var:: full_ijkl_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: full_ijkl_bitmask (N_int) - - File: :file:`bitmasks.irp.f` - - Bitmask to include all possible MOs - - - - -.. c:var:: full_ijkl_bitmask_4 - - .. code:: text - - integer(bit_kind), allocatable :: full_ijkl_bitmask_4 (N_int,4) - - File: :file:`bitmasks.irp.f` - - - - - - -.. c:var:: generators_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: generators_bitmask (N_int,2,6,N_generators_bitmask) - - File: :file:`bitmasks.irp.f` - - Bitmasks for generator determinants. (N_int, alpha/beta, hole/particle, generator). - 3rd index is : - * 1 : hole for single exc - * 2 : particle for single exc - * 3 : hole for 1st exc of double - * 4 : particle for 1st exc of double - * 5 : hole for 2nd exc of double - * 6 : particle for 2nd exc of double - - - - - -.. c:var:: generators_bitmask_restart - - .. code:: text - - integer(bit_kind), allocatable :: generators_bitmask_restart (N_int,2,6,N_generators_bitmask_restart) - - File: :file:`bitmasks.irp.f` - - Bitmasks for generator determinants. (N_int, alpha/beta, hole/particle, generator). - 3rd index is : - * 1 : hole for single exc - * 2 : particle for single exc - * 3 : hole for 1st exc of double - * 4 : particle for 1st exc of double - * 5 : hole for 2nd exc of double - * 6 : particle for 2nd exc of double - - - - - -.. c:var:: hf_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: hf_bitmask (N_int,2) - - File: :file:`bitmasks.irp.f` - - Hartree Fock bit mask - - - - -.. c:var:: i_bitmask_gen - - .. code:: text - - integer :: i_bitmask_gen - - File: :file:`bitmasks.irp.f` - - Current bitmask for the generators - - - - -.. c:var:: inact_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer :: n_inact_orb - integer :: n_virt_orb - - File: :file:`bitmasks.irp.f` - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals - - - - -.. c:var:: inact_virt_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: inact_virt_bitmask (N_int,2) - integer(bit_kind), allocatable :: core_inact_virt_bitmask (N_int,2) - - File: :file:`bitmasks.irp.f` - - Reunion of the inactive and virtual bitmasks - - - - -.. c:var:: index_holes_bitmask - - .. code:: text - - integer, allocatable :: index_holes_bitmask (3) - - File: :file:`modify_bitmasks.irp.f` - - Index of the holes in the generators_bitmasks - - - - -.. c:var:: index_particl_bitmask - - .. code:: text - - integer, allocatable :: index_particl_bitmask (3) - - File: :file:`modify_bitmasks.irp.f` - - Index of the holes in the generators_bitmasks - - - - -.. c:var:: list_act - - .. code:: text - - integer, allocatable :: list_act (n_act_orb) - integer, allocatable :: list_act_reverse (mo_tot_num) - - File: :file:`bitmasks.irp.f` - - list_act(i) = index of the ith active orbital - list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital - - - - -.. c:var:: list_act_reverse - - .. code:: text - - integer, allocatable :: list_act (n_act_orb) - integer, allocatable :: list_act_reverse (mo_tot_num) - - File: :file:`bitmasks.irp.f` - - list_act(i) = index of the ith active orbital - list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital - - - - -.. c:var:: list_core - - .. code:: text - - integer, allocatable :: list_core (n_core_orb) - integer, allocatable :: list_core_reverse (mo_tot_num) - - File: :file:`bitmasks.irp.f` - - List of the core orbitals that are never excited in post CAS method - - - - -.. c:var:: list_core_inact - - .. code:: text - - integer, allocatable :: list_core_inact (n_core_inact_orb) - integer, allocatable :: list_core_inact_reverse (mo_tot_num) - - File: :file:`bitmasks.irp.f` - - - - - - -.. c:var:: list_core_inact_act - - .. code:: text - - integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) - integer, allocatable :: list_core_inact_act_reverse (mo_tot_num) - - File: :file:`bitmasks.irp.f` - - - - - - -.. c:var:: list_core_inact_act_reverse - - .. code:: text - - integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) - integer, allocatable :: list_core_inact_act_reverse (mo_tot_num) - - File: :file:`bitmasks.irp.f` - - - - - - -.. c:var:: list_core_inact_reverse - - .. code:: text - - integer, allocatable :: list_core_inact (n_core_inact_orb) - integer, allocatable :: list_core_inact_reverse (mo_tot_num) - - File: :file:`bitmasks.irp.f` - - - - - - -.. c:var:: list_core_reverse - - .. code:: text - - integer, allocatable :: list_core (n_core_orb) - integer, allocatable :: list_core_reverse (mo_tot_num) - - File: :file:`bitmasks.irp.f` - - List of the core orbitals that are never excited in post CAS method - - - - -.. c:var:: list_inact - - .. code:: text - - integer, allocatable :: list_inact (n_inact_orb) - integer, allocatable :: list_virt (n_virt_orb) - integer, allocatable :: list_inact_reverse (mo_tot_num) - integer, allocatable :: list_virt_reverse (mo_tot_num) - - File: :file:`bitmasks.irp.f` - - list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual - - - - -.. c:var:: list_inact_reverse - - .. code:: text - - integer, allocatable :: list_inact (n_inact_orb) - integer, allocatable :: list_virt (n_virt_orb) - integer, allocatable :: list_inact_reverse (mo_tot_num) - integer, allocatable :: list_virt_reverse (mo_tot_num) - - File: :file:`bitmasks.irp.f` - - list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual - - - - -.. c:var:: list_virt - - .. code:: text - - integer, allocatable :: list_inact (n_inact_orb) - integer, allocatable :: list_virt (n_virt_orb) - integer, allocatable :: list_inact_reverse (mo_tot_num) - integer, allocatable :: list_virt_reverse (mo_tot_num) - - File: :file:`bitmasks.irp.f` - - list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual - - - - -.. c:var:: list_virt_reverse - - .. code:: text - - integer, allocatable :: list_inact (n_inact_orb) - integer, allocatable :: list_virt (n_virt_orb) - integer, allocatable :: list_inact_reverse (mo_tot_num) - integer, allocatable :: list_virt_reverse (mo_tot_num) - - File: :file:`bitmasks.irp.f` - - list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual - - - - -.. c:var:: mpi_bit_kind - - .. code:: text - - integer :: mpi_bit_kind - - File: :file:`mpi.irp.f` - - MPI bit kind type - - - - -.. c:var:: n_act_orb - - .. code:: text - - integer :: n_act_orb - - File: :file:`bitmasks.irp.f` - - number of active orbitals - - - - -.. c:var:: n_cas_bitmask - - .. code:: text - - integer :: n_cas_bitmask - - File: :file:`bitmasks.irp.f` - - Number of bitmasks for CAS - - - - -.. c:var:: n_core_inact_act_orb - - .. code:: text - - integer(bit_kind), allocatable :: reunion_of_core_inact_act_bitmask (N_int,2) - integer :: n_core_inact_act_orb - - File: :file:`bitmasks.irp.f` - - Reunion of the core, inactive and active bitmasks - - - - -.. c:var:: n_core_inact_orb - - .. code:: text - - integer :: n_core_inact_orb - - File: :file:`bitmasks.irp.f` - - - - - - -.. c:var:: n_core_orb - - .. code:: text - - integer(bit_kind), allocatable :: core_bitmask (N_int,2) - integer :: n_core_orb - - File: :file:`bitmasks.irp.f` - - Core + deleted orbitals bitmask - - - - -.. c:var:: n_core_orb_allocate - - .. code:: text - - integer :: n_core_orb_allocate - - File: :file:`bitmasks.irp.f` - - - - - - -.. c:var:: n_generators_bitmask - - .. code:: text - - integer :: n_generators_bitmask - - File: :file:`bitmasks.irp.f` - - Number of bitmasks for generators - - - - -.. c:var:: n_generators_bitmask_restart - - .. code:: text - - integer :: n_generators_bitmask_restart - - File: :file:`bitmasks.irp.f` - - Number of bitmasks for generators - - - - -.. c:var:: n_inact_orb - - .. code:: text - - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer :: n_inact_orb - integer :: n_virt_orb - - File: :file:`bitmasks.irp.f` - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals - - - - -.. c:var:: n_inact_orb_allocate - - .. code:: text - - integer :: n_inact_orb_allocate - - File: :file:`bitmasks.irp.f` - - - - - - -.. c:var:: n_int - - .. code:: text - - integer :: n_int - - File: :file:`bitmasks.irp.f` - - Number of 64-bit integers needed to represent determinants as binary strings - - - - -.. c:var:: n_virt_orb - - .. code:: text - - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer :: n_inact_orb - integer :: n_virt_orb - - File: :file:`bitmasks.irp.f` - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals - - - - -.. c:var:: n_virt_orb_allocate - - .. code:: text - - integer :: n_virt_orb_allocate - - File: :file:`bitmasks.irp.f` - - - - - - -.. c:var:: ref_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: ref_bitmask (N_int,2) - - File: :file:`bitmasks.irp.f` - - Reference bit mask, used in Slater rules, chosen as Hartree-Fock bitmask - - - - -.. c:var:: reunion_of_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: reunion_of_bitmask (N_int,2) - - File: :file:`bitmasks.irp.f` - - Reunion of the inactive, active and virtual bitmasks - - - - -.. c:var:: reunion_of_cas_inact_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: reunion_of_cas_inact_bitmask (N_int,2) - - File: :file:`bitmasks.irp.f` - - Reunion of the inactive, active and virtual bitmasks - - - - -.. c:var:: reunion_of_core_inact_act_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: reunion_of_core_inact_act_bitmask (N_int,2) - integer :: n_core_inact_act_orb - - File: :file:`bitmasks.irp.f` - - Reunion of the core, inactive and active bitmasks - - - - -.. c:var:: reunion_of_core_inact_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: reunion_of_core_inact_bitmask (N_int,2) - - File: :file:`bitmasks.irp.f` - - Reunion of the core and inactive and virtual bitmasks - - - - -.. c:var:: unpaired_alpha_electrons - - .. code:: text - - integer(bit_kind), allocatable :: unpaired_alpha_electrons (N_int) - - File: :file:`bitmasks.irp.f` - - Bitmask reprenting the unpaired alpha electrons in the HF_bitmask - - - - -.. c:var:: virt_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: inact_bitmask (N_int,2) - integer(bit_kind), allocatable :: virt_bitmask (N_int,2) - integer :: n_inact_orb - integer :: n_virt_orb - - File: :file:`bitmasks.irp.f` - - inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals - - - - -.. c:var:: virt_bitmask_4 - - .. code:: text - - integer(bit_kind), allocatable :: virt_bitmask_4 (N_int,4) - - File: :file:`bitmasks.irp.f` - - - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: bitstring_to_hexa - - .. code:: text - - subroutine bitstring_to_hexa( output, string, Nint ) - - File: :file:`bitmasks_routines.irp.f` - - Transform a bit string to a string in hexadecimal format for printing - - - - - -.. c:function:: bitstring_to_list - - .. code:: text - - subroutine bitstring_to_list( string, list, n_elements, Nint) - - File: :file:`bitmasks_routines.irp.f` - - Gives the inidices(+1) of the bits set to 1 in the bit string - - - - - -.. c:function:: bitstring_to_str - - .. code:: text - - subroutine bitstring_to_str( output, string, Nint ) - - File: :file:`bitmasks_routines.irp.f` - - Transform a bit string to a string for printing - - - - - -.. c:function:: broadcast_chunks_bit_kind - - .. code:: text - - subroutine broadcast_chunks_bit_kind(A, LDA) - - File: :file:`mpi.irp.f` - - Broadcast with chunks of ~2GB - - - - - -.. c:function:: clear_bit_to_integer - - .. code:: text - - subroutine clear_bit_to_integer(i_physical,key,Nint) - - File: :file:`bitmasks_routines.irp.f` - - set to 0 the bit number i_physical in the bitstring key - - - - - -.. c:function:: debug_det - - .. code:: text - - subroutine debug_det(string,Nint) - - File: :file:`bitmasks_routines.irp.f` - - Subroutine to print the content of a determinant in '+-' notation and hexadecimal representation. - - - - - -.. c:function:: debug_spindet - - .. code:: text - - subroutine debug_spindet(string,Nint) - - File: :file:`bitmasks_routines.irp.f` - - Subroutine to print the content of a determinant in '+-' notation and hexadecimal representation. - - - - - -.. c:function:: example_bitmask - - .. code:: text - - subroutine example_bitmask - - File: :file:`example.irp.f` - - subroutine that illustrates the main features available in bitmask - - - - - -.. c:function:: initialize_bitmask_to_restart_ones - - .. code:: text - - subroutine initialize_bitmask_to_restart_ones - - File: :file:`modify_bitmasks.irp.f` - - Initialization of the generators_bitmask to the restart bitmask - - - - - -.. c:function:: is_a_1h - - .. code:: text - - logical function is_a_1h(key_in) - - File: :file:`bitmask_cas_routines.irp.f` - - - - - - - -.. c:function:: is_a_1h1p - - .. code:: text - - logical function is_a_1h1p(key_in) - - File: :file:`bitmask_cas_routines.irp.f` - - - - - - - -.. c:function:: is_a_1h2p - - .. code:: text - - logical function is_a_1h2p(key_in) - - File: :file:`bitmask_cas_routines.irp.f` - - - - - - - -.. c:function:: is_a_1p - - .. code:: text - - logical function is_a_1p(key_in) - - File: :file:`bitmask_cas_routines.irp.f` - - - - - - - -.. c:function:: is_a_2h - - .. code:: text - - logical function is_a_2h(key_in) - - File: :file:`bitmask_cas_routines.irp.f` - - - - - - - -.. c:function:: is_a_2h1p - - .. code:: text - - logical function is_a_2h1p(key_in) - - File: :file:`bitmask_cas_routines.irp.f` - - - - - - - -.. c:function:: is_a_2p - - .. code:: text - - logical function is_a_2p(key_in) - - File: :file:`bitmask_cas_routines.irp.f` - - - - - - - -.. c:function:: is_a_two_holes_two_particles - - .. code:: text - - logical function is_a_two_holes_two_particles(key_in) - - File: :file:`bitmask_cas_routines.irp.f` - - logical function that returns True if the determinant 'key_in' belongs to the 2h-2p excitation class of the DDCI space this is calculated using the CAS_bitmask that defines the active orbital space, the inact_bitmasl that defines the inactive oribital space and the virt_bitmask that defines the virtual orbital space - - - - - -.. c:function:: is_i_in_virtual - - .. code:: text - - logical function is_i_in_virtual(i) - - File: :file:`bitmask_cas_routines.irp.f` - - - - - - - -.. c:function:: is_the_hole_in_det - - .. code:: text - - logical function is_the_hole_in_det(key_in,ispin,i_hole) - - File: :file:`find_hole.irp.f` - - - - - - - -.. c:function:: is_the_particl_in_det - - .. code:: text - - logical function is_the_particl_in_det(key_in,ispin,i_particl) - - File: :file:`find_hole.irp.f` - - - - - - - -.. c:function:: list_to_bitstring - - .. code:: text - - subroutine list_to_bitstring( string, list, n_elements, Nint) - - File: :file:`bitmasks_routines.irp.f` - - Returns the physical string "string(N_int,2)" from the array of occupations "list(N_int*bit_kind_size,2) - - - - - -.. c:function:: modify_bitmasks_for_hole - - .. code:: text - - subroutine modify_bitmasks_for_hole(i_hole) - - File: :file:`modify_bitmasks.irp.f` - - modify the generators_bitmask in order that one can only excite the electrons occupying i_hole - - - - - -.. c:function:: modify_bitmasks_for_hole_in_out - - .. code:: text - - subroutine modify_bitmasks_for_hole_in_out(i_hole) - - File: :file:`modify_bitmasks.irp.f` - - modify the generators_bitmask in order that one can only excite the electrons occupying i_hole - - - - - -.. c:function:: modify_bitmasks_for_particl - - .. code:: text - - subroutine modify_bitmasks_for_particl(i_part) - - File: :file:`modify_bitmasks.irp.f` - - modify the generators_bitmask in order that one can only excite the electrons to the orbital i_part - - - - - -.. c:function:: number_of_holes - - .. code:: text - - integer function number_of_holes(key_in) - - File: :file:`bitmask_cas_routines.irp.f` - - Function that returns the number of holes in the inact space - - - - - -.. c:function:: number_of_holes_verbose - - .. code:: text - - integer function number_of_holes_verbose(key_in) - - File: :file:`bitmask_cas_routines.irp.f` - - function that returns the number of holes in the inact space - - - - - -.. c:function:: number_of_particles - - .. code:: text - - integer function number_of_particles(key_in) - - File: :file:`bitmask_cas_routines.irp.f` - - function that returns the number of particles in the virtual space - - - - - -.. c:function:: number_of_particles_verbose - - .. code:: text - - integer function number_of_particles_verbose(key_in) - - File: :file:`bitmask_cas_routines.irp.f` - - function that returns the number of particles in the inact space - - - - - -.. c:function:: print_det - - .. code:: text - - subroutine print_det(string,Nint) - - File: :file:`bitmasks_routines.irp.f` - - Subroutine to print the content of a determinant using the '+-' notation - - - - - -.. c:function:: print_generators_bitmasks_holes - - .. code:: text - - subroutine print_generators_bitmasks_holes - - File: :file:`modify_bitmasks.irp.f` - - - - - - - -.. c:function:: print_generators_bitmasks_holes_for_one_generator - - .. code:: text - - subroutine print_generators_bitmasks_holes_for_one_generator(i_gen) - - File: :file:`modify_bitmasks.irp.f` - - - - - - - -.. c:function:: print_generators_bitmasks_particles - - .. code:: text - - subroutine print_generators_bitmasks_particles - - File: :file:`modify_bitmasks.irp.f` - - - - - - - -.. c:function:: print_generators_bitmasks_particles_for_one_generator - - .. code:: text - - subroutine print_generators_bitmasks_particles_for_one_generator(i_gen) - - File: :file:`modify_bitmasks.irp.f` - - - - - - - -.. c:function:: print_spindet - - .. code:: text - - subroutine print_spindet(string,Nint) - - File: :file:`bitmasks_routines.irp.f` - - Subroutine to print the content of a determinant using the '+-' notation - - - - - -.. c:function:: set_bit_to_integer - - .. code:: text - - subroutine set_bit_to_integer(i_physical,key,Nint) - - File: :file:`bitmasks_routines.irp.f` - - set to 1 the bit number i_physical in the bitstring key - - - - - -.. c:function:: set_bitmask_hole_as_input - - .. code:: text - - subroutine set_bitmask_hole_as_input(input_bimask) - - File: :file:`modify_bitmasks.irp.f` - - set the generators_bitmask for the holes as the input_bimask - - - - - -.. c:function:: set_bitmask_particl_as_input - - .. code:: text - - subroutine set_bitmask_particl_as_input(input_bimask) - - File: :file:`modify_bitmasks.irp.f` - - set the generators_bitmask for the particles as the input_bimask - - diff --git a/docs/source/modules/cis.rst b/docs/source/modules/cis.rst deleted file mode 100644 index 8ef74d41..00000000 --- a/docs/source/modules/cis.rst +++ /dev/null @@ -1,117 +0,0 @@ -.. _cis: - -.. program:: cis - -.. default-role:: option - -=== -cis -=== - -This module contains a CIS program, built by setting the following rules: - -* The only generator determinant is the Hartree-Fock (single-reference method) -* All generated singly excited determinants are included in the wave function (no perturbative - selection) - -These rules are set in the ``H_apply.irp.f`` file. - - - - - -EZFIO parameters ----------------- - -.. option:: energy - - Variational |CIS| energy - - - -Subroutines / functions ------------------------ - - - -.. c:function:: cis - - .. code:: text - - subroutine cis - - File: :file:`cis.irp.f` - - Configuration Interaction with Single excitations. - - - - - -.. c:function:: h_apply_cis - - .. code:: text - - subroutine H_apply_cis() - - File: :file:`h_apply.irp.f_shell_8` - - 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. - - - - - -.. c:function:: h_apply_cis_diexc - - .. code:: text - - subroutine H_apply_cis_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) - - File: :file:`h_apply.irp.f_shell_8` - - - - - - - -.. c:function:: h_apply_cis_diexcorg - - .. code:: text - - subroutine H_apply_cis_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) - - File: :file:`h_apply.irp.f_shell_8` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_cis_diexcp - - .. code:: text - - subroutine H_apply_cis_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in ) - - File: :file:`h_apply.irp.f_shell_8` - - - - - - - -.. c:function:: h_apply_cis_monoexc - - .. code:: text - - subroutine H_apply_cis_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in ) - - File: :file:`h_apply.irp.f_shell_8` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - diff --git a/docs/source/modules/cisd.rst b/docs/source/modules/cisd.rst deleted file mode 100644 index 0e697e0b..00000000 --- a/docs/source/modules/cisd.rst +++ /dev/null @@ -1,117 +0,0 @@ -.. _cisd: - -.. program:: cisd - -.. default-role:: option - -==== -cisd -==== - -This module contains a CISD program, built by setting the following rules: - -* The only generator determinant is the Hartree-Fock (single-reference method) -* All generated determinants are included in the wave function (no perturbative - selection) - -These rules are set in the ``H_apply.irp.f`` file. - - - - - -EZFIO parameters ----------------- - -.. option:: energy - - Variational |CISD| energy - - - -Subroutines / functions ------------------------ - - - -.. c:function:: cisd - - .. code:: text - - subroutine cisd - - File: :file:`cisd.irp.f` - - Configuration Interaction with Single and Double excitations. - - - - - -.. c:function:: h_apply_cisd - - .. code:: text - - subroutine H_apply_cisd() - - File: :file:`h_apply.irp.f_shell_8` - - 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. - - - - - -.. c:function:: h_apply_cisd_diexc - - .. code:: text - - subroutine H_apply_cisd_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) - - File: :file:`h_apply.irp.f_shell_8` - - - - - - - -.. c:function:: h_apply_cisd_diexcorg - - .. code:: text - - subroutine H_apply_cisd_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) - - File: :file:`h_apply.irp.f_shell_8` - - Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - - - - -.. c:function:: h_apply_cisd_diexcp - - .. code:: text - - subroutine H_apply_cisd_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in ) - - File: :file:`h_apply.irp.f_shell_8` - - - - - - - -.. c:function:: h_apply_cisd_monoexc - - .. code:: text - - subroutine H_apply_cisd_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in ) - - File: :file:`h_apply.irp.f_shell_8` - - Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. - - diff --git a/docs/source/modules/davidson.rst b/docs/source/modules/davidson.rst deleted file mode 100644 index 4a3755ea..00000000 --- a/docs/source/modules/davidson.rst +++ /dev/null @@ -1,682 +0,0 @@ -.. _davidson: - -.. program:: davidson - -.. default-role:: option - -======== -davidson -======== - -Abstract module for Davidson's diagonalization. -It contains everything required for the Davidson algorithm, dressed or not. If -a dressing is used, the dressing column should be defined and the -:ref:`davidsondressed` module should be used. If no dressing is required, -the :ref:`davidson` module should be used, and it has a default zero dressing vector. - -The important providers for that module are: - -# `psi_energy` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the Hamiltonian, dressed or not. It uses the general subroutine `u_0_H_u_0`. -# `psi_energy_bielec` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the standard two-electrons coulomb operator. It uses the general routine `u_0_H_u_0_bielec`. - - - -EZFIO parameters ----------------- - -.. option:: threshold_davidson - - Thresholds of Davidson's algorithm - - Default: 1.e-10 - -.. option:: n_states_diag - - Number of states to consider during the Davdison diagonalization - - Default: 4 - -.. option:: davidson_sze_max - - Number of micro-iterations before re-contracting - - Default: 8 - -.. option:: state_following - - If |true|, the states are re-ordered to match the input states - - Default: False - -.. option:: disk_based_davidson - - If |true|, disk space is used to store the vectors - - Default: False - -.. option:: distributed_davidson - - If |true|, use the distributed algorithm - - Default: True - -.. option:: only_expected_s2 - - If |true|, use filter out all vectors with bad |S^2| values - - Default: True - - -Providers ---------- - - -.. c:var:: ci_eigenvectors - - .. code:: text - - double precision, allocatable :: ci_electronic_energy (N_states_diag) - double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) - double precision, allocatable :: ci_eigenvectors_s2 (N_states_diag) - - File: :file:`diagonalize_ci.irp.f` - - Eigenvectors/values of the CI matrix - - - - -.. c:var:: ci_eigenvectors_s2 - - .. code:: text - - double precision, allocatable :: ci_electronic_energy (N_states_diag) - double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) - double precision, allocatable :: ci_eigenvectors_s2 (N_states_diag) - - File: :file:`diagonalize_ci.irp.f` - - Eigenvectors/values of the CI matrix - - - - -.. c:var:: ci_electronic_energy - - .. code:: text - - double precision, allocatable :: ci_electronic_energy (N_states_diag) - double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) - double precision, allocatable :: ci_eigenvectors_s2 (N_states_diag) - - File: :file:`diagonalize_ci.irp.f` - - Eigenvectors/values of the CI matrix - - - - -.. c:var:: ci_energy - - .. code:: text - - double precision, allocatable :: ci_energy (N_states_diag) - - File: :file:`diagonalize_ci.irp.f` - - N_states lowest eigenvalues of the CI matrix - - - - -.. c:var:: davidson_criterion - - .. code:: text - - character(64) :: davidson_criterion - - File: :file:`parameters.irp.f` - - Can be : [ energy | residual | both | wall_time | cpu_time | iterations ] - - - - -.. c:var:: dressed_column_idx - - .. code:: text - - integer, allocatable :: dressed_column_idx (N_states) - - File: :file:`diagonalization_hs2_dressed.irp.f` - - Index of the dressed columns - - - - -.. c:var:: n_states_diag - - .. code:: text - - integer :: n_states_diag - - File: :file:`input.irp.f` - - Number of states to consider during the Davdison diagonalization - - - - -.. c:var:: nthreads_davidson - - .. code:: text - - integer :: nthreads_davidson - - File: :file:`davidson_parallel.irp.f` - - Number of threads for Davdison - - - - -.. c:var:: psi_energy - - .. code:: text - - double precision, allocatable :: psi_energy (N_states) - - File: :file:`u0_h_u0.irp.f` - - Electronic energy of the current wave function - - - - -.. c:var:: psi_energy_bielec - - .. code:: text - - double precision, allocatable :: psi_energy_bielec (N_states) - - File: :file:`u0_wee_u0.irp.f` - - Energy of the current wave function - - - - -.. c:var:: psi_energy_with_nucl_rep - - .. code:: text - - double precision, allocatable :: psi_energy_with_nucl_rep (N_states) - - File: :file:`u0_h_u0.irp.f` - - Energy of the wave function with the nuclear repulsion energy. - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: davidson_collector - - .. code:: text - - subroutine davidson_collector(zmq_to_qp_run_socket, zmq_socket_pull, v0, s0, sze, N_st) - - File: :file:`davidson_parallel.irp.f` - - - - - - - -.. c:function:: davidson_converged - - .. code:: text - - subroutine davidson_converged(energy,residual,wall,iterations,cpu,N_st,converged) - - File: :file:`parameters.irp.f` - - True if the Davidson algorithm is converged - - - - - -.. c:function:: davidson_diag_hjj_sjj - - .. code:: text - - subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_st,N_st_diag,Nint,dressing_state,converged) - - File: :file:`diagonalization_hs2_dressed.irp.f` - - Davidson diagonalization with specific diagonal elements of the H matrix - H_jj : specific diagonal H matrix elements to diagonalize de Davidson - S2_out : Output : s^2 - dets_in : bitmasks corresponding to determinants - u_in : guess coefficients on the various states. Overwritten on exit - dim_in : leftmost dimension of u_in - sze : Number of determinants - N_st : Number of eigenstates - N_st_diag : Number of states in which H is diagonalized. Assumed > sze - Initial guess vectors are not necessarily orthonormal - - - - - -.. c:function:: davidson_diag_hs2 - - .. code:: text - - subroutine davidson_diag_hs2(dets_in,u_in,s2_out,dim_in,energies,sze,N_st,N_st_diag,Nint,dressing_state,converged) - - File: :file:`diagonalization_hs2_dressed.irp.f` - - Davidson diagonalization. - dets_in : bitmasks corresponding to determinants - u_in : guess coefficients on the various states. Overwritten on exit - dim_in : leftmost dimension of u_in - sze : Number of determinants - N_st : Number of eigenstates - Initial guess vectors are not necessarily orthonormal - - - - - -.. c:function:: davidson_pull_results - - .. code:: text - - subroutine davidson_pull_results(zmq_socket_pull, v_t, s_t, imin, imax, task_id) - - File: :file:`davidson_parallel.irp.f` - - - - - - - -.. c:function:: davidson_push_results - - .. code:: text - - subroutine davidson_push_results(zmq_socket_push, v_t, s_t, imin, imax, task_id) - - File: :file:`davidson_parallel.irp.f` - - - - - - - -.. c:function:: davidson_run_slave - - .. code:: text - - subroutine davidson_run_slave(thread,iproc) - - File: :file:`davidson_parallel.irp.f` - - - - - - - -.. c:function:: davidson_slave_inproc - - .. code:: text - - subroutine davidson_slave_inproc(i) - - File: :file:`davidson_parallel.irp.f` - - - - - - - -.. c:function:: davidson_slave_tcp - - .. code:: text - - subroutine davidson_slave_tcp(i) - - File: :file:`davidson_parallel.irp.f` - - - - - - - -.. c:function:: davidson_slave_work - - .. code:: text - - subroutine davidson_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_st, sze, worker_id) - - File: :file:`davidson_parallel.irp.f` - - - - - - - -.. c:function:: diagonalize_ci - - .. code:: text - - subroutine diagonalize_CI - - File: :file:`diagonalize_ci.irp.f` - - Replace the coefficients of the CI states by the coefficients of the eigenstates of the CI matrix - - - - - -.. c:function:: h_s2_u_0_bielec_nstates_openmp - - .. code:: text - - subroutine H_S2_u_0_bielec_nstates_openmp(v_0,s_0,u_0,N_st,sze) - - File: :file:`u0_wee_u0.irp.f` - - Computes v_0 = H|u_0> and s_0 = S^2 |u_0> - Assumes that the determinants are in psi_det - istart, iend, ishift, istep are used in ZMQ parallelization. - - - - - -.. c:function:: h_s2_u_0_bielec_nstates_openmp_work - - .. code:: text - - subroutine H_S2_u_0_bielec_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - File: :file:`u0_wee_u0.irp.f` - - Computes v_t = H|u_t> and s_t = S^2 |u_t> - Default should be 1,N_det,0,1 - - - - - -.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_1 - - .. code:: text - - subroutine H_S2_u_0_bielec_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - File: :file:`u0_wee_u0.irp.f_template_457` - - Computes v_t = H|u_t> and s_t = S^2 |u_t> - Default should be 1,N_det,0,1 - - - - - -.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_2 - - .. code:: text - - subroutine H_S2_u_0_bielec_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - File: :file:`u0_wee_u0.irp.f_template_457` - - Computes v_t = H|u_t> and s_t = S^2 |u_t> - Default should be 1,N_det,0,1 - - - - - -.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_3 - - .. code:: text - - subroutine H_S2_u_0_bielec_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - File: :file:`u0_wee_u0.irp.f_template_457` - - Computes v_t = H|u_t> and s_t = S^2 |u_t> - Default should be 1,N_det,0,1 - - - - - -.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_4 - - .. code:: text - - subroutine H_S2_u_0_bielec_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - File: :file:`u0_wee_u0.irp.f_template_457` - - Computes v_t = H|u_t> and s_t = S^2 |u_t> - Default should be 1,N_det,0,1 - - - - - -.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_n_int - - .. code:: text - - subroutine H_S2_u_0_bielec_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - File: :file:`u0_wee_u0.irp.f_template_457` - - Computes v_t = H|u_t> and s_t = S^2 |u_t> - Default should be 1,N_det,0,1 - - - - - -.. c:function:: h_s2_u_0_nstates_openmp - - .. code:: text - - subroutine H_S2_u_0_nstates_openmp(v_0,s_0,u_0,N_st,sze) - - File: :file:`u0_h_u0.irp.f` - - Computes v_0 = H|u_0> and s_0 = S^2 |u_0> - Assumes that the determinants are in psi_det - istart, iend, ishift, istep are used in ZMQ parallelization. - - - - - -.. c:function:: h_s2_u_0_nstates_openmp_work - - .. code:: text - - subroutine H_S2_u_0_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - File: :file:`u0_h_u0.irp.f` - - Computes v_t = H|u_t> and s_t = S^2 |u_t> - Default should be 1,N_det,0,1 - - - - - -.. c:function:: h_s2_u_0_nstates_openmp_work_1 - - .. code:: text - - subroutine H_S2_u_0_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - File: :file:`u0_h_u0.irp.f_template_468` - - Computes v_t = H|u_t> and s_t = S^2 |u_t> - Default should be 1,N_det,0,1 - - - - - -.. c:function:: h_s2_u_0_nstates_openmp_work_2 - - .. code:: text - - subroutine H_S2_u_0_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - File: :file:`u0_h_u0.irp.f_template_468` - - Computes v_t = H|u_t> and s_t = S^2 |u_t> - Default should be 1,N_det,0,1 - - - - - -.. c:function:: h_s2_u_0_nstates_openmp_work_3 - - .. code:: text - - subroutine H_S2_u_0_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - File: :file:`u0_h_u0.irp.f_template_468` - - Computes v_t = H|u_t> and s_t = S^2 |u_t> - Default should be 1,N_det,0,1 - - - - - -.. c:function:: h_s2_u_0_nstates_openmp_work_4 - - .. code:: text - - subroutine H_S2_u_0_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - File: :file:`u0_h_u0.irp.f_template_468` - - Computes v_t = H|u_t> and s_t = S^2 |u_t> - Default should be 1,N_det,0,1 - - - - - -.. c:function:: h_s2_u_0_nstates_openmp_work_n_int - - .. code:: text - - subroutine H_S2_u_0_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - - File: :file:`u0_h_u0.irp.f_template_468` - - Computes v_t = H|u_t> and s_t = S^2 |u_t> - Default should be 1,N_det,0,1 - - - - - -.. c:function:: h_s2_u_0_nstates_zmq - - .. code:: text - - subroutine H_S2_u_0_nstates_zmq(v_0,s_0,u_0,N_st,sze) - - File: :file:`davidson_parallel.irp.f` - - Computes v_0 = H|u_0> and s_0 = S^2 |u_0> - n : number of determinants - H_jj : array of - S2_jj : array of - - - - - -.. c:function:: u_0_h_u_0 - - .. code:: text - - subroutine u_0_H_u_0(e_0,u_0,n,keys_tmp,Nint,N_st,sze) - - File: :file:`u0_h_u0.irp.f` - - Computes e_0 = / - n : number of determinants - - - - - - -.. c:function:: u_0_h_u_0_bielec - - .. code:: text - - subroutine u_0_H_u_0_bielec(e_0,u_0,n,keys_tmp,Nint,N_st,sze) - - File: :file:`u0_wee_u0.irp.f` - - Computes e_0 = / - n : number of determinants - - - - - - -.. c:function:: zmq_get_n_states_diag - - .. code:: text - - integer function zmq_get_N_states_diag(zmq_to_qp_run_socket, worker_id) - - File: :file:`davidson_parallel.irp.f` - - Get N_states_diag from the qp_run scheduler - - - - - -.. c:function:: zmq_put_n_states_diag - - .. code:: text - - integer function zmq_put_N_states_diag(zmq_to_qp_run_socket,worker_id) - - File: :file:`davidson_parallel.irp.f` - - Put N_states_diag on the qp_run scheduler - - diff --git a/docs/source/modules/davidson_dressed.rst b/docs/source/modules/davidson_dressed.rst deleted file mode 100644 index 4697104f..00000000 --- a/docs/source/modules/davidson_dressed.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _davidson_dressed: - -.. program:: davidson_dressed - -.. default-role:: option - -================ -davidson_dressed -================ - -Davidson with single-column dressing. - - diff --git a/docs/source/modules/davidson_undressed.rst b/docs/source/modules/davidson_undressed.rst deleted file mode 100644 index e785b4ca..00000000 --- a/docs/source/modules/davidson_undressed.rst +++ /dev/null @@ -1,45 +0,0 @@ -.. _davidson_undressed: - -.. program:: davidson_undressed - -.. default-role:: option - -================== -davidson_undressed -================== - -Module for main files Davidson's algorithm with no dressing. - - - - -Providers ---------- - - -.. c:var:: dressing_column_h - - .. code:: text - - double precision, allocatable :: dressing_column_h (N_det,N_states) - double precision, allocatable :: dressing_column_s (N_det,N_states) - - File: :file:`null_dressing_vector.irp.f` - - Null dressing vectors - - - - -.. c:var:: dressing_column_s - - .. code:: text - - double precision, allocatable :: dressing_column_h (N_det,N_states) - double precision, allocatable :: dressing_column_s (N_det,N_states) - - File: :file:`null_dressing_vector.irp.f` - - Null dressing vectors - - diff --git a/docs/source/modules/density_for_dft.rst b/docs/source/modules/density_for_dft.rst deleted file mode 100644 index d8d3e1fe..00000000 --- a/docs/source/modules/density_for_dft.rst +++ /dev/null @@ -1,119 +0,0 @@ -.. _density_for_dft: - -.. program:: density_for_dft - -.. default-role:: option - -=============== -density_for_dft -=============== - - -This module defines the *provider* of the density used for the DFT related calculations. -This definition is done through the keyword :option:`density_for_dft density_for_dft`. -The density can be: - -# WFT : the density is computed with a potentially multi determinant wave function (see variables `psi_det` and `psi_det`)# input_density : the density is set to a density previously stored in the |EZFIO| folder (see ``aux_quantities``) -# damping_rs_dft : the density is damped between the input_density and the WFT density, with a damping factor of :option:`density_for_dft damping_for_rs_dft` - - - - -EZFIO parameters ----------------- - -.. option:: density_for_dft - - Type of density used for DFT calculation. If set to WFT , it uses the density of the wave function stored in (psi_det,psi_coef). If set to input_density it uses the one-body dm stored in aux_quantities/ . If set to damping_rs_dft it uses the damped density between WFT and input_density. In the ks_scf and rs_ks_scf programs, it is set to WFT. - - Default: WFT - -.. option:: damping_for_rs_dft - - damping factor for the density used in RSFT. - - Default: 0.5 - - -Providers ---------- - - -.. c:var:: one_body_dm_alpha_ao_for_dft - - .. code:: text - - double precision, allocatable :: one_body_dm_alpha_ao_for_dft (ao_num,ao_num,N_states) - double precision, allocatable :: one_body_dm_beta_ao_for_dft (ao_num,ao_num,N_states) - - File: :file:`density_for_dft.irp.f` - - one body density matrix on the AO basis based on one_body_dm_mo_alpha_for_dft - - - - -.. c:var:: one_body_dm_average_mo_for_dft - - .. code:: text - - double precision, allocatable :: one_body_dm_average_mo_for_dft (mo_tot_num,mo_tot_num) - - File: :file:`density_for_dft.irp.f` - - - - - - -.. c:var:: one_body_dm_beta_ao_for_dft - - .. code:: text - - double precision, allocatable :: one_body_dm_alpha_ao_for_dft (ao_num,ao_num,N_states) - double precision, allocatable :: one_body_dm_beta_ao_for_dft (ao_num,ao_num,N_states) - - File: :file:`density_for_dft.irp.f` - - one body density matrix on the AO basis based on one_body_dm_mo_alpha_for_dft - - - - -.. c:var:: one_body_dm_mo_alpha_for_dft - - .. code:: text - - double precision, allocatable :: one_body_dm_mo_alpha_for_dft (mo_tot_num,mo_tot_num,N_states) - - File: :file:`density_for_dft.irp.f` - - density matrix for alpha electrons in the MO basis used for all DFT calculations based on the density - - - - -.. c:var:: one_body_dm_mo_beta_for_dft - - .. code:: text - - double precision, allocatable :: one_body_dm_mo_beta_for_dft (mo_tot_num,mo_tot_num,N_states) - - File: :file:`density_for_dft.irp.f` - - density matrix for beta electrons in the MO basis used for all DFT calculations based on the density - - - - -.. c:var:: one_body_dm_mo_for_dft - - .. code:: text - - double precision, allocatable :: one_body_dm_mo_for_dft (mo_tot_num,mo_tot_num,N_states) - - File: :file:`density_for_dft.irp.f` - - - - diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst deleted file mode 100644 index aab901df..00000000 --- a/docs/source/modules/determinants.rst +++ /dev/null @@ -1,3954 +0,0 @@ -.. _determinants: - -.. program:: determinants - -.. default-role:: option - -============ -determinants -============ - -Contains everything for the computation of the Hamiltonian matrix elements in the basis of orthogonal Slater determinants built on a restricted spin-orbitals basis. - -The main providers for this module are: - -# :option:`determinants n_states`: number of states to be computed -# `psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|. -# `psi_coef`: list of coefficients, for all :option:`determinants n_states` states, and all determinants. - -The main routines for this module are: - -# `i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants. -# `i_H_j_s2`: computes the Hamiltonian and (:math:`S^2`) matrix element between two arbitrary Slater determinants. -# `i_H_j_verbose`: returns the decomposition in terms of one- and two-body components of the Hamiltonian matrix elements between two arbitrary Slater determinants. Also return the fermionic phase factor. -# `i_H_psi`: computes the Hamiltonian matrix element between an arbitrary Slater determinant and a wave function composed of a sum of arbitrary Slater determinants. - - -For an example of how to use these routines and providers, take a look at :file:`example.irp.f`. - - - -EZFIO parameters ----------------- - -.. option:: n_det_max - - Maximum number of determinants in the wave function - - Default: 1000000 - -.. option:: n_det_max_full - - Maximum number of determinants where |H| is fully diagonalized - - Default: 1000 - -.. option:: n_states - - Number of states to consider - - Default: 1 - -.. option:: read_wf - - If |true|, read the wave function from the |EZFIO| file - - Default: False - -.. option:: s2_eig - - Force the wave function to be an eigenfunction of |S^2| - - Default: True - -.. option:: used_weight - - 0: 1./(c_0^2), 1: 1/N_states, 2: input state-average weight, 3: 1/(Norm_L3(Psi)) - - Default: 0 - -.. option:: threshold_generators - - Thresholds on generators (fraction of the square of the norm) - - Default: 0.99 - -.. option:: n_int - - Number of integers required to represent bitstrings (set in module :ref:`bitmask`) - - -.. option:: bit_kind - - (set in module :ref:`bitmask`) - - -.. option:: mo_label - - Label of the |MOs| on which the determinants are expressed - - -.. option:: n_det - - Number of determinants in the current wave function - - -.. option:: psi_coef - - Coefficients of the wave function - - -.. option:: psi_det - - Determinants of the variational space - - -.. option:: expected_s2 - - Expected value of |S^2| - - -.. option:: target_energy - - Energy that should be obtained when truncating the wave function (optional) - - Default: 0. - -.. option:: state_average_weight - - Weight of the states in state-average calculations. - - - -Providers ---------- - - -.. c:var:: abs_psi_coef_max - - .. code:: text - - double precision, allocatable :: psi_coef_max (N_states) - double precision, allocatable :: psi_coef_min (N_states) - double precision, allocatable :: abs_psi_coef_max (N_states) - double precision, allocatable :: abs_psi_coef_min (N_states) - - File: :file:`determinants.irp.f` - - Max and min values of the coefficients - - - - -.. c:var:: abs_psi_coef_min - - .. code:: text - - double precision, allocatable :: psi_coef_max (N_states) - double precision, allocatable :: psi_coef_min (N_states) - double precision, allocatable :: abs_psi_coef_max (N_states) - double precision, allocatable :: abs_psi_coef_min (N_states) - - File: :file:`determinants.irp.f` - - Max and min values of the coefficients - - - - -.. c:var:: barycentric_electronic_energy - - .. code:: text - - double precision, allocatable :: barycentric_electronic_energy (N_states) - - File: :file:`energy.irp.f` - - TODO : ASCII Elephant - - - - -.. c:var:: bi_elec_ref_bitmask_energy - - .. code:: text - - double precision :: ref_bitmask_energy - double precision :: mono_elec_ref_bitmask_energy - double precision :: kinetic_ref_bitmask_energy - double precision :: nucl_elec_ref_bitmask_energy - double precision :: bi_elec_ref_bitmask_energy - - File: :file:`ref_bitmask.irp.f` - - Energy of the reference bitmask used in Slater rules - - - - -.. c:var:: c0_weight - - .. code:: text - - double precision, allocatable :: c0_weight (N_states) - - File: :file:`density_matrix.irp.f` - - Weight of the states in the selection : 1/c_0^2 - - - - -.. c:var:: det_alpha_norm - - .. code:: text - - double precision, allocatable :: det_alpha_norm (N_det_alpha_unique) - double precision, allocatable :: det_beta_norm (N_det_beta_unique) - - File: :file:`spindeterminants.irp.f` - - Norm of the alpha and beta spin determinants in the wave function: - ||Da||_i \sum_j C_{ij}**2 - - - - -.. c:var:: det_beta_norm - - .. code:: text - - double precision, allocatable :: det_alpha_norm (N_det_alpha_unique) - double precision, allocatable :: det_beta_norm (N_det_beta_unique) - - File: :file:`spindeterminants.irp.f` - - Norm of the alpha and beta spin determinants in the wave function: - ||Da||_i \sum_j C_{ij}**2 - - - - -.. c:var:: det_to_occ_pattern - - .. code:: text - - integer, allocatable :: det_to_occ_pattern (N_det) - - File: :file:`occ_pattern.irp.f` - - Returns the index of the occupation pattern for each determinant - - - - -.. c:var:: diag_algorithm - - .. code:: text - - character*(64) :: diag_algorithm - - File: :file:`determinants.irp.f` - - Diagonalization algorithm (Davidson or Lapack) - - - - -.. c:var:: diagonal_h_matrix_on_psi_det - - .. code:: text - - double precision, allocatable :: diagonal_h_matrix_on_psi_det (N_det) - - File: :file:`energy.irp.f` - - Diagonal of the Hamiltonian ordered as psi_det - - - - -.. c:var:: double_exc_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: double_exc_bitmask (N_int,4,N_double_exc_bitmasks) - - File: :file:`determinants_bitmasks.irp.f` - - double_exc_bitmask(:,1,i) is the bitmask for holes of excitation 1 double_exc_bitmask(:,2,i) is the bitmask for particles of excitation 1 double_exc_bitmask(:,3,i) is the bitmask for holes of excitation 2 double_exc_bitmask(:,4,i) is the bitmask for particles of excitation 2 for a given couple of hole/particle excitations i. - - - - -.. c:var:: expected_s2 - - .. code:: text - - double precision :: expected_s2 - - File: :file:`s2.irp.f` - - Expected value of S2 : S*(S+1) - - - - -.. c:var:: fock_operator_closed_shell_ref_bitmask - - .. code:: text - - double precision, allocatable :: fock_operator_closed_shell_ref_bitmask (mo_tot_num,mo_tot_num) - - File: :file:`mono_excitations.irp.f` - - - - - - -.. c:var:: fock_wee_closed_shell - - .. code:: text - - double precision, allocatable :: fock_wee_closed_shell (mo_tot_num,mo_tot_num) - - File: :file:`mono_excitations_bielec.irp.f` - - - - - - -.. c:var:: h_apply_buffer_allocated - - .. code:: text - - logical :: h_apply_buffer_allocated - integer(omp_lock_kind), allocatable :: h_apply_buffer_lock (64,0:nproc-1) - - File: :file:`h_apply.irp.f` - - Buffer of determinants/coefficients/perturbative energy for H_apply. Uninitialized. Filled by H_apply subroutines. - - - - -.. c:var:: h_apply_buffer_lock - - .. code:: text - - logical :: h_apply_buffer_allocated - integer(omp_lock_kind), allocatable :: h_apply_buffer_lock (64,0:nproc-1) - - File: :file:`h_apply.irp.f` - - Buffer of determinants/coefficients/perturbative energy for H_apply. Uninitialized. Filled by H_apply subroutines. - - - - -.. c:var:: h_matrix_all_dets - - .. code:: text - - double precision, allocatable :: h_matrix_all_dets (N_det,N_det) - - File: :file:`utils.irp.f` - - H matrix on the basis of the slater determinants defined by psi_det - - - - -.. c:var:: h_matrix_cas - - .. code:: text - - double precision, allocatable :: h_matrix_cas (N_det_cas,N_det_cas) - - File: :file:`psi_cas.irp.f` - - - - - - -.. c:var:: idx_cas - - .. code:: text - - integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size) - double precision, allocatable :: psi_cas_coef (psi_det_size,n_states) - integer, allocatable :: idx_cas (psi_det_size) - integer :: n_det_cas - - File: :file:`psi_cas.irp.f` - - CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. - - - - -.. c:var:: idx_non_cas - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states) - integer, allocatable :: idx_non_cas (psi_det_size) - integer :: n_det_non_cas - - File: :file:`psi_cas.irp.f` - - Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. idx_non_cas gives the indice of the determinant in psi_det. - - - - -.. c:var:: kinetic_ref_bitmask_energy - - .. code:: text - - double precision :: ref_bitmask_energy - double precision :: mono_elec_ref_bitmask_energy - double precision :: kinetic_ref_bitmask_energy - double precision :: nucl_elec_ref_bitmask_energy - double precision :: bi_elec_ref_bitmask_energy - - File: :file:`ref_bitmask.irp.f` - - Energy of the reference bitmask used in Slater rules - - - - -.. c:var:: l3_weight - - .. code:: text - - double precision, allocatable :: l3_weight (N_states) - - File: :file:`density_matrix.irp.f` - - Weight of the states in the selection : 1/(sum_i |c_i|^3) - - - - -.. c:var:: max_degree_exc - - .. code:: text - - integer :: max_degree_exc - - File: :file:`determinants.irp.f` - - Maximum degree of excitation in the wf - - - - -.. c:var:: mo_energy_expval - - .. code:: text - - double precision, allocatable :: mo_energy_expval (N_states,mo_tot_num,2,2) - - File: :file:`mo_energy_expval.irp.f` - - Third index is spin. Fourth index is 1:creation, 2:annihilation - - - - -.. c:var:: mono_elec_ref_bitmask_energy - - .. code:: text - - double precision :: ref_bitmask_energy - double precision :: mono_elec_ref_bitmask_energy - double precision :: kinetic_ref_bitmask_energy - double precision :: nucl_elec_ref_bitmask_energy - double precision :: bi_elec_ref_bitmask_energy - - File: :file:`ref_bitmask.irp.f` - - Energy of the reference bitmask used in Slater rules - - - - -.. c:var:: n_det - - .. code:: text - - integer :: n_det - - File: :file:`determinants.irp.f` - - Number of determinants in the wave function - - - - -.. c:var:: n_det_alpha_unique - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_alpha_unique (N_int,psi_det_size) - integer :: n_det_alpha_unique - - File: :file:`spindeterminants.irp.f_template_141` - - Unique alpha determinants - - - - -.. c:var:: n_det_beta_unique - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_beta_unique (N_int,psi_det_size) - integer :: n_det_beta_unique - - File: :file:`spindeterminants.irp.f_template_141` - - Unique beta determinants - - - - -.. c:var:: n_det_cas - - .. code:: text - - integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size) - double precision, allocatable :: psi_cas_coef (psi_det_size,n_states) - integer, allocatable :: idx_cas (psi_det_size) - integer :: n_det_cas - - File: :file:`psi_cas.irp.f` - - CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. - - - - -.. c:var:: n_det_non_cas - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states) - integer, allocatable :: idx_non_cas (psi_det_size) - integer :: n_det_non_cas - - File: :file:`psi_cas.irp.f` - - Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. idx_non_cas gives the indice of the determinant in psi_det. - - - - -.. c:var:: n_double_exc_bitmasks - - .. code:: text - - integer :: n_double_exc_bitmasks - - File: :file:`determinants_bitmasks.irp.f` - - Number of double excitation bitmasks - - - - -.. c:var:: n_occ_pattern - - .. code:: text - - integer(bit_kind), allocatable :: psi_occ_pattern (N_int,2,psi_det_size) - integer :: n_occ_pattern - - File: :file:`occ_pattern.irp.f` - - array of the occ_pattern present in the wf psi_occ_pattern(:,1,j) = jth occ_pattern of the wave function : represent all the single occupations psi_occ_pattern(:,2,j) = jth occ_pattern of the wave function : represent all the double occupations The occ patterns are sorted by occ_pattern_search_key - - - - -.. c:var:: n_single_exc_bitmasks - - .. code:: text - - integer :: n_single_exc_bitmasks - - File: :file:`determinants_bitmasks.irp.f` - - Number of single excitation bitmasks - - - - -.. c:var:: nucl_elec_ref_bitmask_energy - - .. code:: text - - double precision :: ref_bitmask_energy - double precision :: mono_elec_ref_bitmask_energy - double precision :: kinetic_ref_bitmask_energy - double precision :: nucl_elec_ref_bitmask_energy - double precision :: bi_elec_ref_bitmask_energy - - File: :file:`ref_bitmask.irp.f` - - Energy of the reference bitmask used in Slater rules - - - - -.. c:var:: one_body_dm_ao_alpha - - .. code:: text - - double precision, allocatable :: one_body_dm_ao_alpha (ao_num,ao_num) - double precision, allocatable :: one_body_dm_ao_beta (ao_num,ao_num) - - File: :file:`density_matrix.irp.f` - - one body density matrix on the AO basis : rho_AO(alpha) , rho_AO(beta) - - - - -.. c:var:: one_body_dm_ao_beta - - .. code:: text - - double precision, allocatable :: one_body_dm_ao_alpha (ao_num,ao_num) - double precision, allocatable :: one_body_dm_ao_beta (ao_num,ao_num) - - File: :file:`density_matrix.irp.f` - - one body density matrix on the AO basis : rho_AO(alpha) , rho_AO(beta) - - - - -.. c:var:: one_body_dm_dagger_mo_spin_index - - .. code:: text - - double precision, allocatable :: one_body_dm_dagger_mo_spin_index (mo_tot_num,mo_tot_num,N_states,2) - - File: :file:`density_matrix.irp.f` - - - - - - -.. c:var:: one_body_dm_mo - - .. code:: text - - double precision, allocatable :: one_body_dm_mo (mo_tot_num,mo_tot_num) - - File: :file:`density_matrix.irp.f` - - One-body density matrix - - - - -.. c:var:: one_body_dm_mo_alpha - - .. code:: text - - double precision, allocatable :: one_body_dm_mo_alpha (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: one_body_dm_mo_beta (mo_tot_num,mo_tot_num,N_states) - - File: :file:`density_matrix.irp.f` - - Alpha and beta one-body density matrix for each state - - - - -.. c:var:: one_body_dm_mo_alpha_average - - .. code:: text - - double precision, allocatable :: one_body_dm_mo_alpha_average (mo_tot_num,mo_tot_num) - double precision, allocatable :: one_body_dm_mo_beta_average (mo_tot_num,mo_tot_num) - - File: :file:`density_matrix.irp.f` - - Alpha and beta one-body density matrix for each state - - - - -.. c:var:: one_body_dm_mo_beta - - .. code:: text - - double precision, allocatable :: one_body_dm_mo_alpha (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: one_body_dm_mo_beta (mo_tot_num,mo_tot_num,N_states) - - File: :file:`density_matrix.irp.f` - - Alpha and beta one-body density matrix for each state - - - - -.. c:var:: one_body_dm_mo_beta_average - - .. code:: text - - double precision, allocatable :: one_body_dm_mo_alpha_average (mo_tot_num,mo_tot_num) - double precision, allocatable :: one_body_dm_mo_beta_average (mo_tot_num,mo_tot_num) - - File: :file:`density_matrix.irp.f` - - Alpha and beta one-body density matrix for each state - - - - -.. c:var:: one_body_dm_mo_diff - - .. code:: text - - double precision, allocatable :: one_body_dm_mo_diff (mo_tot_num,mo_tot_num,2:N_states) - - File: :file:`density_matrix.irp.f` - - Difference of the one-body density matrix with respect to the ground state - - - - -.. c:var:: one_body_dm_mo_spin_index - - .. code:: text - - double precision, allocatable :: one_body_dm_mo_spin_index (mo_tot_num,mo_tot_num,N_states,2) - - File: :file:`density_matrix.irp.f` - - - - - - -.. c:var:: one_body_single_double_dm_mo_alpha - - .. code:: text - - double precision, allocatable :: one_body_single_double_dm_mo_alpha (mo_tot_num,mo_tot_num) - double precision, allocatable :: one_body_single_double_dm_mo_beta (mo_tot_num,mo_tot_num) - - File: :file:`density_matrix.irp.f` - - Alpha and beta one-body density matrix for each state - - - - -.. c:var:: one_body_single_double_dm_mo_beta - - .. code:: text - - double precision, allocatable :: one_body_single_double_dm_mo_alpha (mo_tot_num,mo_tot_num) - double precision, allocatable :: one_body_single_double_dm_mo_beta (mo_tot_num,mo_tot_num) - - File: :file:`density_matrix.irp.f` - - Alpha and beta one-body density matrix for each state - - - - -.. c:var:: one_body_spin_density_ao - - .. code:: text - - double precision, allocatable :: one_body_spin_density_ao (ao_num,ao_num) - - File: :file:`density_matrix.irp.f` - - one body spin density matrix on the AO basis : rho_AO(alpha) - rho_AO(beta) - - - - -.. c:var:: one_body_spin_density_mo - - .. code:: text - - double precision, allocatable :: one_body_spin_density_mo (mo_tot_num,mo_tot_num) - - File: :file:`density_matrix.irp.f` - - rho(alpha) - rho(beta) - - - - -.. c:var:: psi_average_norm_contrib - - .. code:: text - - double precision, allocatable :: psi_average_norm_contrib (psi_det_size) - - File: :file:`determinants.irp.f` - - Contribution of determinants to the state-averaged density - - - - -.. c:var:: psi_average_norm_contrib_sorted - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states) - double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size) - integer, allocatable :: psi_det_sorted_order (psi_det_size) - - File: :file:`determinants.irp.f` - - Wave function sorted by determinants contribution to the norm (state-averaged) - psi_det_sorted_order(i) -> k : index in psi_det - - - - -.. c:var:: psi_bilinear_matrix - - .. code:: text - - double precision, allocatable :: psi_bilinear_matrix (N_det_alpha_unique,N_det_beta_unique,N_states) - - File: :file:`spindeterminants.irp.f` - - Coefficient matrix if the wave function is expressed in a bilinear form : D_a^t C D_b - - - - -.. c:var:: psi_bilinear_matrix_columns - - .. code:: text - - double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states) - integer, allocatable :: psi_bilinear_matrix_rows (N_det) - integer, allocatable :: psi_bilinear_matrix_columns (N_det) - integer, allocatable :: psi_bilinear_matrix_order (N_det) - - File: :file:`spindeterminants.irp.f` - - Sparse coefficient matrix if the wave function is expressed in a bilinear form : D_a^t C D_b - Rows are alpha determinants and columns are beta. - Order refers to psi_det - - - - -.. c:var:: psi_bilinear_matrix_columns_loc - - .. code:: text - - integer, allocatable :: psi_bilinear_matrix_columns_loc (N_det_beta_unique+1) - - File: :file:`spindeterminants.irp.f` - - Sparse coefficient matrix if the wave function is expressed in a bilinear form : D_a^t C D_b - Rows are alpha determinants and columns are beta. - Order refers to psi_det - - - - -.. c:var:: psi_bilinear_matrix_order - - .. code:: text - - double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states) - integer, allocatable :: psi_bilinear_matrix_rows (N_det) - integer, allocatable :: psi_bilinear_matrix_columns (N_det) - integer, allocatable :: psi_bilinear_matrix_order (N_det) - - File: :file:`spindeterminants.irp.f` - - Sparse coefficient matrix if the wave function is expressed in a bilinear form : D_a^t C D_b - Rows are alpha determinants and columns are beta. - Order refers to psi_det - - - - -.. c:var:: psi_bilinear_matrix_order_reverse - - .. code:: text - - integer, allocatable :: psi_bilinear_matrix_order_reverse (N_det) - - File: :file:`spindeterminants.irp.f` - - Order which allows to go from psi_bilinear_matrix to psi_det - - - - -.. c:var:: psi_bilinear_matrix_order_transp_reverse - - .. code:: text - - integer, allocatable :: psi_bilinear_matrix_order_transp_reverse (N_det) - - File: :file:`spindeterminants.irp.f` - - Order which allows to go from psi_bilinear_matrix_order_transp to psi_bilinear_matrix - - - - -.. c:var:: psi_bilinear_matrix_rows - - .. code:: text - - double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states) - integer, allocatable :: psi_bilinear_matrix_rows (N_det) - integer, allocatable :: psi_bilinear_matrix_columns (N_det) - integer, allocatable :: psi_bilinear_matrix_order (N_det) - - File: :file:`spindeterminants.irp.f` - - Sparse coefficient matrix if the wave function is expressed in a bilinear form : D_a^t C D_b - Rows are alpha determinants and columns are beta. - Order refers to psi_det - - - - -.. c:var:: psi_bilinear_matrix_transp_columns - - .. code:: text - - double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states) - integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det) - integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det) - integer, allocatable :: psi_bilinear_matrix_transp_order (N_det) - - File: :file:`spindeterminants.irp.f` - - Transpose of psi_bilinear_matrix D_b^t C^t D_a - Rows are Alpha determinants and columns are beta, but the matrix is stored in row major format - - - - -.. c:var:: psi_bilinear_matrix_transp_order - - .. code:: text - - double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states) - integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det) - integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det) - integer, allocatable :: psi_bilinear_matrix_transp_order (N_det) - - File: :file:`spindeterminants.irp.f` - - Transpose of psi_bilinear_matrix D_b^t C^t D_a - Rows are Alpha determinants and columns are beta, but the matrix is stored in row major format - - - - -.. c:var:: psi_bilinear_matrix_transp_rows - - .. code:: text - - double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states) - integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det) - integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det) - integer, allocatable :: psi_bilinear_matrix_transp_order (N_det) - - File: :file:`spindeterminants.irp.f` - - Transpose of psi_bilinear_matrix D_b^t C^t D_a - Rows are Alpha determinants and columns are beta, but the matrix is stored in row major format - - - - -.. c:var:: psi_bilinear_matrix_transp_rows_loc - - .. code:: text - - integer, allocatable :: psi_bilinear_matrix_transp_rows_loc (N_det_alpha_unique+1) - - File: :file:`spindeterminants.irp.f` - - Location of the columns in the psi_bilinear_matrix - - - - -.. c:var:: psi_bilinear_matrix_transp_values - - .. code:: text - - double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states) - integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det) - integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det) - integer, allocatable :: psi_bilinear_matrix_transp_order (N_det) - - File: :file:`spindeterminants.irp.f` - - Transpose of psi_bilinear_matrix D_b^t C^t D_a - Rows are Alpha determinants and columns are beta, but the matrix is stored in row major format - - - - -.. c:var:: psi_bilinear_matrix_values - - .. code:: text - - double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states) - integer, allocatable :: psi_bilinear_matrix_rows (N_det) - integer, allocatable :: psi_bilinear_matrix_columns (N_det) - integer, allocatable :: psi_bilinear_matrix_order (N_det) - - File: :file:`spindeterminants.irp.f` - - Sparse coefficient matrix if the wave function is expressed in a bilinear form : D_a^t C D_b - Rows are alpha determinants and columns are beta. - Order refers to psi_det - - - - -.. c:var:: psi_cas - - .. code:: text - - integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size) - double precision, allocatable :: psi_cas_coef (psi_det_size,n_states) - integer, allocatable :: idx_cas (psi_det_size) - integer :: n_det_cas - - File: :file:`psi_cas.irp.f` - - CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. - - - - -.. c:var:: psi_cas_coef - - .. code:: text - - integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size) - double precision, allocatable :: psi_cas_coef (psi_det_size,n_states) - integer, allocatable :: idx_cas (psi_det_size) - integer :: n_det_cas - - File: :file:`psi_cas.irp.f` - - CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. - - - - -.. c:var:: psi_cas_coef_sorted_bit - - .. code:: text - - integer(bit_kind), allocatable :: psi_cas_sorted_bit (N_int,2,psi_det_size) - double precision, allocatable :: psi_cas_coef_sorted_bit (psi_det_size,N_states) - - File: :file:`psi_cas.irp.f` - - CAS determinants sorted to accelerate the search of a random determinant in the wave function. - - - - -.. c:var:: psi_cas_energy - - .. code:: text - - double precision, allocatable :: psi_cas_energy (N_states) - - File: :file:`psi_cas.irp.f` - - - - - - -.. c:var:: psi_cas_energy_diagonalized - - .. code:: text - - double precision, allocatable :: psi_coef_cas_diagonalized (N_det_cas,N_states) - double precision, allocatable :: psi_cas_energy_diagonalized (N_states) - - File: :file:`psi_cas.irp.f` - - - - - - -.. c:var:: psi_cas_sorted_bit - - .. code:: text - - integer(bit_kind), allocatable :: psi_cas_sorted_bit (N_int,2,psi_det_size) - double precision, allocatable :: psi_cas_coef_sorted_bit (psi_det_size,N_states) - - File: :file:`psi_cas.irp.f` - - CAS determinants sorted to accelerate the search of a random determinant in the wave function. - - - - -.. c:var:: psi_coef - - .. code:: text - - double precision, allocatable :: psi_coef (psi_det_size,N_states) - - File: :file:`determinants.irp.f` - - The wave function coefficients. Initialized with Hartree-Fock if the EZFIO file is empty - - - - -.. c:var:: psi_coef_cas_diagonalized - - .. code:: text - - double precision, allocatable :: psi_coef_cas_diagonalized (N_det_cas,N_states) - double precision, allocatable :: psi_cas_energy_diagonalized (N_states) - - File: :file:`psi_cas.irp.f` - - - - - - -.. c:var:: psi_coef_max - - .. code:: text - - double precision, allocatable :: psi_coef_max (N_states) - double precision, allocatable :: psi_coef_min (N_states) - double precision, allocatable :: abs_psi_coef_max (N_states) - double precision, allocatable :: abs_psi_coef_min (N_states) - - File: :file:`determinants.irp.f` - - Max and min values of the coefficients - - - - -.. c:var:: psi_coef_min - - .. code:: text - - double precision, allocatable :: psi_coef_max (N_states) - double precision, allocatable :: psi_coef_min (N_states) - double precision, allocatable :: abs_psi_coef_max (N_states) - double precision, allocatable :: abs_psi_coef_min (N_states) - - File: :file:`determinants.irp.f` - - Max and min values of the coefficients - - - - -.. c:var:: psi_coef_sorted - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states) - double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size) - integer, allocatable :: psi_det_sorted_order (psi_det_size) - - File: :file:`determinants.irp.f` - - Wave function sorted by determinants contribution to the norm (state-averaged) - psi_det_sorted_order(i) -> k : index in psi_det - - - - -.. c:var:: psi_coef_sorted_bit - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_sorted_bit (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_sorted_bit (psi_det_size,N_states) - - File: :file:`determinants.irp.f` - - Determinants on which we apply for perturbation. They are sorted by determinants interpreted as integers. Useful to accelerate the search of a random determinant in the wave function. - - - - -.. c:var:: psi_det - - .. code:: text - - integer(bit_kind), allocatable :: psi_det (N_int,2,psi_det_size) - - File: :file:`determinants.irp.f` - - The wave function determinants. Initialized with Hartree-Fock if the EZFIO file is empty - - - - -.. c:var:: psi_det_alpha - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_alpha (N_int,psi_det_size) - - File: :file:`spindeterminants.irp.f` - - List of alpha determinants of psi_det - - - - -.. c:var:: psi_det_alpha_unique - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_alpha_unique (N_int,psi_det_size) - integer :: n_det_alpha_unique - - File: :file:`spindeterminants.irp.f_template_141` - - Unique alpha determinants - - - - -.. c:var:: psi_det_beta - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_beta (N_int,psi_det_size) - - File: :file:`spindeterminants.irp.f` - - List of beta determinants of psi_det - - - - -.. c:var:: psi_det_beta_unique - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_beta_unique (N_int,psi_det_size) - integer :: n_det_beta_unique - - File: :file:`spindeterminants.irp.f_template_141` - - Unique beta determinants - - - - -.. c:var:: psi_det_hii - - .. code:: text - - double precision, allocatable :: psi_det_hii (N_det) - - File: :file:`determinants.irp.f` - - for all determinants. - - - - -.. c:var:: psi_det_size - - .. code:: text - - integer :: psi_det_size - - File: :file:`determinants.irp.f` - - Size of the psi_det/psi_coef arrays - - - - -.. c:var:: psi_det_sorted - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states) - double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size) - integer, allocatable :: psi_det_sorted_order (psi_det_size) - - File: :file:`determinants.irp.f` - - Wave function sorted by determinants contribution to the norm (state-averaged) - psi_det_sorted_order(i) -> k : index in psi_det - - - - -.. c:var:: psi_det_sorted_bit - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_sorted_bit (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_sorted_bit (psi_det_size,N_states) - - File: :file:`determinants.irp.f` - - Determinants on which we apply for perturbation. They are sorted by determinants interpreted as integers. Useful to accelerate the search of a random determinant in the wave function. - - - - -.. c:var:: psi_det_sorted_order - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states) - double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size) - integer, allocatable :: psi_det_sorted_order (psi_det_size) - - File: :file:`determinants.irp.f` - - Wave function sorted by determinants contribution to the norm (state-averaged) - psi_det_sorted_order(i) -> k : index in psi_det - - - - -.. c:var:: psi_energy_h_core - - .. code:: text - - double precision, allocatable :: psi_energy_h_core (N_states) - - File: :file:`psi_energy_mono_elec.irp.f` - - psi_energy_h_core = computed using the one_body_dm_mo_alpha+one_body_dm_mo_beta and mo_mono_elec_integral - - - - -.. c:var:: psi_non_cas - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states) - integer, allocatable :: idx_non_cas (psi_det_size) - integer :: n_det_non_cas - - File: :file:`psi_cas.irp.f` - - Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. idx_non_cas gives the indice of the determinant in psi_det. - - - - -.. c:var:: psi_non_cas_coef - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states) - integer, allocatable :: idx_non_cas (psi_det_size) - integer :: n_det_non_cas - - File: :file:`psi_cas.irp.f` - - Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. idx_non_cas gives the indice of the determinant in psi_det. - - - - -.. c:var:: psi_non_cas_coef_sorted_bit - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_cas_sorted_bit (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_cas_coef_sorted_bit (psi_det_size,N_states) - - File: :file:`psi_cas.irp.f` - - CAS determinants sorted to accelerate the search of a random determinant in the wave function. - - - - -.. c:var:: psi_non_cas_sorted_bit - - .. code:: text - - integer(bit_kind), allocatable :: psi_non_cas_sorted_bit (N_int,2,psi_det_size) - double precision, allocatable :: psi_non_cas_coef_sorted_bit (psi_det_size,N_states) - - File: :file:`psi_cas.irp.f` - - CAS determinants sorted to accelerate the search of a random determinant in the wave function. - - - - -.. c:var:: psi_occ_pattern - - .. code:: text - - integer(bit_kind), allocatable :: psi_occ_pattern (N_int,2,psi_det_size) - integer :: n_occ_pattern - - File: :file:`occ_pattern.irp.f` - - array of the occ_pattern present in the wf psi_occ_pattern(:,1,j) = jth occ_pattern of the wave function : represent all the single occupations psi_occ_pattern(:,2,j) = jth occ_pattern of the wave function : represent all the double occupations The occ patterns are sorted by occ_pattern_search_key - - - - -.. c:var:: psi_occ_pattern_hii - - .. code:: text - - double precision, allocatable :: psi_occ_pattern_hii (N_occ_pattern) - - File: :file:`occ_pattern.irp.f` - - where |I> is an occupation pattern. This is the minimum Hii of all , where the |i> are the determinants if oI> - - - - -.. c:var:: ref_bitmask_energy - - .. code:: text - - double precision :: ref_bitmask_energy - double precision :: mono_elec_ref_bitmask_energy - double precision :: kinetic_ref_bitmask_energy - double precision :: nucl_elec_ref_bitmask_energy - double precision :: bi_elec_ref_bitmask_energy - - File: :file:`ref_bitmask.irp.f` - - Energy of the reference bitmask used in Slater rules - - - - -.. c:var:: ref_closed_shell_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: ref_closed_shell_bitmask (N_int,2) - - File: :file:`mono_excitations.irp.f` - - - - - - -.. c:var:: s2_values - - .. code:: text - - double precision, allocatable :: s2_values (N_states) - - File: :file:`s2.irp.f` - - array of the averaged values of the S^2 operator on the various states - - - - -.. c:var:: s_z - - .. code:: text - - double precision :: s_z - double precision :: s_z2_sz - - File: :file:`s2.irp.f` - - z component of the Spin - - - - -.. c:var:: s_z2_sz - - .. code:: text - - double precision :: s_z - double precision :: s_z2_sz - - File: :file:`s2.irp.f` - - z component of the Spin - - - - -.. c:var:: single_exc_bitmask - - .. code:: text - - integer(bit_kind), allocatable :: single_exc_bitmask (N_int,2,N_single_exc_bitmasks) - - File: :file:`determinants_bitmasks.irp.f` - - single_exc_bitmask(:,1,i) is the bitmask for holes single_exc_bitmask(:,2,i) is the bitmask for particles for a given couple of hole/particle excitations i. - - - - -.. c:var:: singles_alpha_csc - - .. code:: text - - integer, allocatable :: singles_alpha_csc (singles_alpha_csc_size) - - File: :file:`spindeterminants.irp.f` - - Dimension of the singles_alpha array - - - - -.. c:var:: singles_alpha_csc_idx - - .. code:: text - - integer*8, allocatable :: singles_alpha_csc_idx (N_det_alpha_unique+1) - integer*8 :: singles_alpha_csc_size - - File: :file:`spindeterminants.irp.f` - - Dimension of the singles_alpha array - - - - -.. c:var:: singles_alpha_csc_size - - .. code:: text - - integer*8, allocatable :: singles_alpha_csc_idx (N_det_alpha_unique+1) - integer*8 :: singles_alpha_csc_size - - File: :file:`spindeterminants.irp.f` - - Dimension of the singles_alpha array - - - - -.. c:var:: singles_alpha_size - - .. code:: text - - integer :: singles_alpha_size - - File: :file:`spindeterminants.irp.f` - - Dimension of the singles_alpha array - - - - -.. c:var:: state_average_weight - - .. code:: text - - double precision, allocatable :: state_average_weight (N_states) - - File: :file:`density_matrix.irp.f` - - Weights in the state-average calculation of the density matrix - - - - -.. c:var:: weight_occ_pattern - - .. code:: text - - double precision, allocatable :: weight_occ_pattern (N_occ_pattern,N_states) - - File: :file:`occ_pattern.irp.f` - - Weight of the occupation patterns in the wave function - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: a_operator - - .. code:: text - - subroutine a_operator(iorb,ispin,key,hjj,Nint,na,nb) - - File: :file:`slater_rules.irp.f` - - Needed for diag_H_mat_elem - - - - - -.. c:function:: a_operator_bielec - - .. code:: text - - subroutine a_operator_bielec(iorb,ispin,key,hjj,Nint,na,nb) - - File: :file:`slater_rules_wee_mono.irp.f` - - Needed for diag_H_mat_elem - - - - - -.. c:function:: ac_operator - - .. code:: text - - subroutine ac_operator(iorb,ispin,key,hjj,Nint,na,nb) - - File: :file:`slater_rules.irp.f` - - Needed for diag_H_mat_elem - - - - - -.. c:function:: ac_operator_bielec - - .. code:: text - - subroutine ac_operator_bielec(iorb,ispin,key,hjj,Nint,na,nb) - - File: :file:`slater_rules_wee_mono.irp.f` - - Needed for diag_H_mat_elem - - - - - -.. c:function:: apply_excitation - - .. code:: text - - subroutine apply_excitation(det, exc, res, ok, Nint) - - File: :file:`determinants.irp.f` - - - - - - - -.. c:function:: apply_hole - - .. code:: text - - subroutine apply_hole(det, s1, h1, res, ok, Nint) - - File: :file:`determinants.irp.f` - - - - - - - -.. c:function:: apply_holes - - .. code:: text - - subroutine apply_holes(det, s1, h1, s2, h2, res, ok, Nint) - - File: :file:`determinants.irp.f` - - - - - - - -.. c:function:: apply_particle - - .. code:: text - - subroutine apply_particle(det, s1, p1, res, ok, Nint) - - File: :file:`determinants.irp.f` - - - - - - - -.. c:function:: apply_particles - - .. code:: text - - subroutine apply_particles(det, s1, p1, s2, p2, res, ok, Nint) - - File: :file:`determinants.irp.f` - - - - - - - -.. c:function:: au0_h_au0 - - .. code:: text - - subroutine au0_h_au0(energies,psi_in,psi_in_coef,ndet,dim_psi_coef) - - File: :file:`mo_energy_expval.irp.f` - - - - - - - -.. c:function:: bitstring_to_list_ab - - .. code:: text - - subroutine bitstring_to_list_ab( string, list, n_elements, Nint) - - File: :file:`slater_rules.irp.f` - - Gives the inidices(+1) of the bits set to 1 in the bit string For alpha/beta determinants - - - - - -.. c:function:: build_fock_tmp - - .. code:: text - - subroutine build_fock_tmp(fock_diag_tmp,det_ref,Nint) - - File: :file:`fock_diag.irp.f` - - Build the diagonal of the Fock matrix corresponding to a generator determinant. F_00 is = E0. - - - - - -.. c:function:: connected_to_ref - - .. code:: text - - integer function connected_to_ref(key,keys,Nint,N_past_in,Ndet) - - File: :file:`connected_to_ref.irp.f` - - input : key : a given Slater determinant - : keys: a list of Slater determinants - : Ndet: the number of Slater determinants in keys - : N_past_in the number of Slater determinants for the connectivity research - output : 0 : key not connected to the N_past_in first Slater determinants in keys - i : key is connected to determinant i of keys - -i : key is the ith determinant of the reference wf keys - - - - - -.. c:function:: connected_to_ref_by_mono - - .. code:: text - - integer function connected_to_ref_by_mono(key,keys,Nint,N_past_in,Ndet) - - File: :file:`connected_to_ref.irp.f` - - input : key : a given Slater determinant - : keys: a list of Slater determinants - : Ndet: the number of Slater determinants in keys - : N_past_in the number of Slater determinants for the connectivity research - output : 0 : key not connected by a MONO EXCITATION to the N_past_in first Slater determinants in keys - i : key is connected by a MONO EXCITATION to determinant i of keys - -i : key is the ith determinant of the reference wf keys - - - - - -.. c:function:: copy_h_apply_buffer_to_wf - - .. code:: text - - subroutine copy_H_apply_buffer_to_wf - - File: :file:`h_apply.irp.f` - - Copies the H_apply buffer to psi_coef. After calling this subroutine, N_det, psi_det and psi_coef need to be touched - - - - - -.. c:function:: copy_psi_bilinear_to_psi - - .. code:: text - - subroutine copy_psi_bilinear_to_psi(psi, isize) - - File: :file:`spindeterminants.irp.f` - - Overwrites psi_det and psi_coef with the wf in bilinear order - - - - - -.. c:function:: create_microlist - - .. code:: text - - subroutine create_microlist(minilist, N_minilist, key_mask, microlist, idx_microlist, N_microlist, ptr_microlist, Nint) - - File: :file:`filter_connected.irp.f` - - - - - - - -.. c:function:: create_minilist - - .. code:: text - - subroutine create_minilist(key_mask, fullList, miniList, idx_miniList, N_fullList, N_miniList, Nint) - - File: :file:`slater_rules.irp.f` - - - - - - - -.. c:function:: create_minilist_find_previous - - .. code:: text - - subroutine create_minilist_find_previous(key_mask, fullList, miniList, N_fullList, N_miniList, fullMatch, Nint) - - File: :file:`slater_rules.irp.f` - - - - - - - -.. c:function:: create_wf_of_psi_bilinear_matrix - - .. code:: text - - subroutine create_wf_of_psi_bilinear_matrix(truncate) - - File: :file:`spindeterminants.irp.f` - - Generate a wave function containing all possible products of alpha and beta determinants - - - - - -.. c:function:: decode_exc - - .. code:: text - - subroutine decode_exc(exc,degree,h1,p1,h2,p2,s1,s2) - - File: :file:`slater_rules.irp.f` - - Decodes the exc arrays returned by get_excitation. h1,h2 : Holes p1,p2 : Particles s1,s2 : Spins (1:alpha, 2:beta) degree : Degree of excitation - - - - - -.. c:function:: decode_exc_spin - - .. code:: text - - subroutine decode_exc_spin(exc,h1,p1,h2,p2) - - File: :file:`slater_rules.irp.f` - - Decodes the exc arrays returned by get_excitation. h1,h2 : Holes p1,p2 : Particles - - - - - -.. c:function:: det_inf - - .. code:: text - - logical function det_inf(key1, key2, Nint) - - File: :file:`sort_dets_ab.irp.f` - - Ordering function for determinants - - - - - -.. c:function:: det_search_key - - .. code:: text - - integer*8 function det_search_key(det,Nint) - - File: :file:`connected_to_ref.irp.f` - - Return an integer*8 corresponding to a determinant index for searching - - - - - -.. c:function:: detcmp - - .. code:: text - - integer function detCmp(a,b,Nint) - - File: :file:`determinants.irp.f` - - - - - - - -.. c:function:: deteq - - .. code:: text - - logical function detEq(a,b,Nint) - - File: :file:`determinants.irp.f` - - - - - - - -.. c:function:: diag_h_mat_elem - - .. code:: text - - double precision function diag_H_mat_elem(det_in,Nint) - - File: :file:`slater_rules.irp.f` - - Computes - - - - - -.. c:function:: diag_h_mat_elem_au0_h_au0 - - .. code:: text - - subroutine diag_H_mat_elem_au0_h_au0(det_in,Nint,hii) - - File: :file:`mo_energy_expval.irp.f` - - Computes for any determinant i. Used for wave functions with an additional electron. - - - - - -.. c:function:: diag_h_mat_elem_fock - - .. code:: text - - double precision function diag_H_mat_elem_fock(det_ref,det_pert,fock_diag_tmp,Nint) - - File: :file:`slater_rules.irp.f` - - Computes when i is at most a double excitation from a reference. - - - - - -.. c:function:: diag_h_mat_elem_monoelec - - .. code:: text - - double precision function diag_H_mat_elem_monoelec(det_in,Nint) - - File: :file:`slater_rules_wee_mono.irp.f` - - Computes - - - - - -.. c:function:: diag_s_mat_elem - - .. code:: text - - double precision function diag_S_mat_elem(key_i,Nint) - - File: :file:`s2.irp.f` - - Returns - - - - - -.. c:function:: diag_wee_mat_elem - - .. code:: text - - double precision function diag_wee_mat_elem(det_in,Nint) - - File: :file:`slater_rules_wee_mono.irp.f` - - Computes - - - - - -.. c:function:: do_mono_excitation - - .. code:: text - - subroutine do_mono_excitation(key_in,i_hole,i_particle,ispin,i_ok) - - File: :file:`create_excitations.irp.f` - - Apply the mono excitation operator : a^{dager}_(i_particle) a_(i_hole) of spin = ispin on key_in ispin = 1 == alpha ispin = 2 == beta i_ok = 1 == the excitation is possible i_ok = -1 == the excitation is not possible - - - - - -.. c:function:: example_determinants - - .. code:: text - - subroutine example_determinants - - File: :file:`example.irp.f` - - subroutine that illustrates the main features available in determinants - - - - - -.. c:function:: example_determinants_psi_det - - .. code:: text - - subroutine example_determinants_psi_det - - File: :file:`example.irp.f` - - subroutine that illustrates the main features available in determinants using the psi_det/psi_coef - - - - - -.. c:function:: fill_h_apply_buffer_no_selection - - .. code:: text - - subroutine fill_H_apply_buffer_no_selection(n_selected,det_buffer,Nint,iproc) - - File: :file:`h_apply.irp.f` - - Fill the H_apply buffer with determiants for CISD - - - - - -.. c:function:: filter_connected - - .. code:: text - - subroutine filter_connected(key1,key2,Nint,sze,idx) - - File: :file:`filter_connected.irp.f` - - Filters out the determinants that are not connected by H - returns the array idx which contains the index of the - determinants in the array key1 that interact - via the H operator with key2. - idx(0) is the number of determinants that interact with key1 - - - - - -.. c:function:: filter_connected_i_h_psi0 - - .. code:: text - - subroutine filter_connected_i_H_psi0(key1,key2,Nint,sze,idx) - - File: :file:`filter_connected.irp.f` - - returns the array idx which contains the index of the - determinants in the array key1 that interact - via the H operator with key2. - idx(0) is the number of determinants that interact with key1 - - - - - -.. c:function:: filter_not_connected - - .. code:: text - - subroutine filter_not_connected(key1,key2,Nint,sze,idx) - - File: :file:`filter_connected.irp.f` - - Returns the array idx which contains the index of the - determinants in the array key1 that DO NOT interact - via the H operator with key2. - idx(0) is the number of determinants that DO NOT interact with key1 - - - - - -.. c:function:: generate_all_alpha_beta_det_products - - .. code:: text - - subroutine generate_all_alpha_beta_det_products - - File: :file:`spindeterminants.irp.f` - - Create a wave function from all possible alpha x beta determinants - - - - - -.. c:function:: get_all_spin_doubles - - .. code:: text - - subroutine get_all_spin_doubles(buffer, idx, spindet, Nint, size_buffer, doubles, n_doubles) - - File: :file:`spindeterminants.irp.f` - - - Returns the indices of all the double excitations in the list of unique alpha determinants. - - - - - - -.. c:function:: get_all_spin_doubles_1 - - .. code:: text - - subroutine get_all_spin_doubles_1(buffer, idx, spindet, size_buffer, doubles, n_doubles) - - File: :file:`spindeterminants.irp.f` - - - Returns the indices of all the double excitations in the list of unique alpha determinants. - - - - - - -.. c:function:: get_all_spin_doubles_2 - - .. code:: text - - subroutine get_all_spin_doubles_2(buffer, idx, spindet, size_buffer, doubles, n_doubles) - - File: :file:`spindeterminants.irp.f_template_1215` - - - Returns the indices of all the double excitations in the list of unique alpha determinants. - - - - - - -.. c:function:: get_all_spin_doubles_3 - - .. code:: text - - subroutine get_all_spin_doubles_3(buffer, idx, spindet, size_buffer, doubles, n_doubles) - - File: :file:`spindeterminants.irp.f_template_1215` - - - Returns the indices of all the double excitations in the list of unique alpha determinants. - - - - - - -.. c:function:: get_all_spin_doubles_4 - - .. code:: text - - subroutine get_all_spin_doubles_4(buffer, idx, spindet, size_buffer, doubles, n_doubles) - - File: :file:`spindeterminants.irp.f_template_1215` - - - Returns the indices of all the double excitations in the list of unique alpha determinants. - - - - - - -.. c:function:: get_all_spin_doubles_n_int - - .. code:: text - - subroutine get_all_spin_doubles_N_int(buffer, idx, spindet, size_buffer, doubles, n_doubles) - - File: :file:`spindeterminants.irp.f_template_1215` - - - Returns the indices of all the double excitations in the list of unique alpha determinants. - - - - - - -.. c:function:: get_all_spin_singles - - .. code:: text - - subroutine get_all_spin_singles(buffer, idx, spindet, Nint, size_buffer, singles, n_singles) - - File: :file:`spindeterminants.irp.f` - - - Returns the indices of all the single excitations in the list of unique alpha determinants. - - - - - - -.. c:function:: get_all_spin_singles_1 - - .. code:: text - - subroutine get_all_spin_singles_1(buffer, idx, spindet, size_buffer, singles, n_singles) - - File: :file:`spindeterminants.irp.f` - - - Returns the indices of all the single excitations in the list of unique alpha determinants. - - - - - - -.. c:function:: get_all_spin_singles_2 - - .. code:: text - - subroutine get_all_spin_singles_2(buffer, idx, spindet, size_buffer, singles, n_singles) - - File: :file:`spindeterminants.irp.f_template_1215` - - - Returns the indices of all the single excitations in the list of unique alpha determinants. - - - - - - -.. c:function:: get_all_spin_singles_3 - - .. code:: text - - subroutine get_all_spin_singles_3(buffer, idx, spindet, size_buffer, singles, n_singles) - - File: :file:`spindeterminants.irp.f_template_1215` - - - Returns the indices of all the single excitations in the list of unique alpha determinants. - - - - - - -.. c:function:: get_all_spin_singles_4 - - .. code:: text - - subroutine get_all_spin_singles_4(buffer, idx, spindet, size_buffer, singles, n_singles) - - File: :file:`spindeterminants.irp.f_template_1215` - - - Returns the indices of all the single excitations in the list of unique alpha determinants. - - - - - - -.. c:function:: get_all_spin_singles_and_doubles - - .. code:: text - - subroutine get_all_spin_singles_and_doubles(buffer, idx, spindet, Nint, size_buffer, singles, doubles, n_singles, n_doubles) - - File: :file:`spindeterminants.irp.f` - - - Returns the indices of all the single and double excitations in the list of unique alpha determinants. - /!\ : The buffer is transposed ! - - - - - - -.. c:function:: get_all_spin_singles_and_doubles_1 - - .. code:: text - - subroutine get_all_spin_singles_and_doubles_1(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) - - File: :file:`spindeterminants.irp.f` - - - Returns the indices of all the single and double excitations in the list of unique alpha determinants. - /!\ : The buffer is transposed ! - - - - - - -.. c:function:: get_all_spin_singles_and_doubles_2 - - .. code:: text - - subroutine get_all_spin_singles_and_doubles_2(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) - - File: :file:`spindeterminants.irp.f_template_1215` - - - Returns the indices of all the single and double excitations in the list of unique alpha determinants. - /!\ : The buffer is transposed ! - - - - - - -.. c:function:: get_all_spin_singles_and_doubles_3 - - .. code:: text - - subroutine get_all_spin_singles_and_doubles_3(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) - - File: :file:`spindeterminants.irp.f_template_1215` - - - Returns the indices of all the single and double excitations in the list of unique alpha determinants. - /!\ : The buffer is transposed ! - - - - - - -.. c:function:: get_all_spin_singles_and_doubles_4 - - .. code:: text - - subroutine get_all_spin_singles_and_doubles_4(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) - - File: :file:`spindeterminants.irp.f_template_1215` - - - Returns the indices of all the single and double excitations in the list of unique alpha determinants. - /!\ : The buffer is transposed ! - - - - - - -.. c:function:: get_all_spin_singles_and_doubles_n_int - - .. code:: text - - subroutine get_all_spin_singles_and_doubles_N_int(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) - - File: :file:`spindeterminants.irp.f_template_1215` - - - Returns the indices of all the single and double excitations in the list of unique alpha determinants. - /!\ : The buffer is transposed ! - - - - - - -.. c:function:: get_all_spin_singles_n_int - - .. code:: text - - subroutine get_all_spin_singles_N_int(buffer, idx, spindet, size_buffer, singles, n_singles) - - File: :file:`spindeterminants.irp.f_template_1215` - - - Returns the indices of all the single excitations in the list of unique alpha determinants. - - - - - - -.. c:function:: get_double_excitation - - .. code:: text - - subroutine get_double_excitation(det1,det2,exc,phase,Nint) - - File: :file:`slater_rules.irp.f` - - Returns the two excitation operators between two doubly excited determinants and the phase - - - - - -.. c:function:: get_double_excitation_spin - - .. code:: text - - subroutine get_double_excitation_spin(det1,det2,exc,phase,Nint) - - File: :file:`slater_rules.irp.f` - - Returns the two excitation operators between two doubly excited spin-determinants and the phase - - - - - -.. c:function:: get_excitation - - .. code:: text - - subroutine get_excitation(det1,det2,exc,degree,phase,Nint) - - File: :file:`slater_rules.irp.f` - - Returns the excitation operators between two determinants and the phase - - - - - -.. c:function:: get_excitation_degree - - .. code:: text - - subroutine get_excitation_degree(key1,key2,degree,Nint) - - File: :file:`slater_rules.irp.f` - - Returns the excitation degree between two determinants - - - - - -.. c:function:: get_excitation_degree_spin - - .. code:: text - - subroutine get_excitation_degree_spin(key1,key2,degree,Nint) - - File: :file:`slater_rules.irp.f` - - Returns the excitation degree between two determinants - - - - - -.. c:function:: get_excitation_degree_vector - - .. code:: text - - subroutine get_excitation_degree_vector(key1,key2,degree,Nint,sze,idx) - - File: :file:`slater_rules.irp.f` - - Applies get_excitation_degree to an array of determinants - - - - - -.. c:function:: get_excitation_degree_vector_double_alpha_beta - - .. code:: text - - subroutine get_excitation_degree_vector_double_alpha_beta(key1,key2,degree,Nint,sze,idx) - - File: :file:`slater_rules.irp.f` - - Applies get_excitation_degree to an array of determinants and return only the mono excitations and the connections through exchange integrals - - - - - -.. c:function:: get_excitation_degree_vector_mono - - .. code:: text - - subroutine get_excitation_degree_vector_mono(key1,key2,degree,Nint,sze,idx) - - File: :file:`slater_rules.irp.f` - - Applies get_excitation_degree to an array of determinants and return only the mono excitations - - - - - -.. c:function:: get_excitation_degree_vector_mono_or_exchange - - .. code:: text - - subroutine get_excitation_degree_vector_mono_or_exchange(key1,key2,degree,Nint,sze,idx) - - File: :file:`slater_rules.irp.f` - - Applies get_excitation_degree to an array of determinants and return only the mono excitations and the connections through exchange integrals - - - - - -.. c:function:: get_excitation_degree_vector_mono_or_exchange_verbose - - .. code:: text - - subroutine get_excitation_degree_vector_mono_or_exchange_verbose(key1,key2,degree,Nint,sze,idx) - - File: :file:`slater_rules.irp.f` - - Applies get_excitation_degree to an array of determinants and return only the mono excitations and the connections through exchange integrals - - - - - -.. c:function:: get_excitation_spin - - .. code:: text - - subroutine get_excitation_spin(det1,det2,exc,degree,phase,Nint) - - File: :file:`slater_rules.irp.f` - - Returns the excitation operators between two determinants and the phase - - - - - -.. c:function:: get_index_in_psi_det_alpha_unique - - .. code:: text - - integer function get_index_in_psi_det_alpha_unique(key,Nint) - - File: :file:`spindeterminants.irp.f` - - Returns the index of the determinant in the ``psi_det_alpha_unique`` array - - - - - -.. c:function:: get_index_in_psi_det_beta_unique - - .. code:: text - - integer function get_index_in_psi_det_beta_unique(key,Nint) - - File: :file:`spindeterminants.irp.f` - - Returns the index of the determinant in the ``psi_det_beta_unique`` array - - - - - -.. c:function:: get_index_in_psi_det_sorted_bit - - .. code:: text - - integer function get_index_in_psi_det_sorted_bit(key,Nint) - - File: :file:`connected_to_ref.irp.f` - - Returns the index of the determinant in the ``psi_det_sorted_bit`` array - - - - - -.. c:function:: get_mono_excitation - - .. code:: text - - subroutine get_mono_excitation(det1,det2,exc,phase,Nint) - - File: :file:`slater_rules.irp.f` - - Returns the excitation operator between two singly excited determinants and the phase - - - - - -.. c:function:: get_mono_excitation_from_fock - - .. code:: text - - subroutine get_mono_excitation_from_fock(det_1,det_2,h,p,spin,phase,hij) - - File: :file:`mono_excitations.irp.f` - - - - - - - -.. c:function:: get_mono_excitation_spin - - .. code:: text - - subroutine get_mono_excitation_spin(det1,det2,exc,phase,Nint) - - File: :file:`slater_rules.irp.f` - - Returns the excitation operator between two singly excited determinants and the phase - - - - - -.. c:function:: get_phase - - .. code:: text - - subroutine get_phase(key1,key2,phase,Nint) - - File: :file:`slater_rules.irp.f` - - Returns the phase between key1 and key2 - - - - - -.. c:function:: get_phasemask_bit - - .. code:: text - - subroutine get_phasemask_bit(det1, pm, Nint) - - File: :file:`slater_rules.irp.f` - - - - - - - -.. c:function:: get_s2 - - .. code:: text - - subroutine get_s2(key_i,key_j,Nint,s2) - - File: :file:`s2.irp.f` - - Returns - - - - - -.. c:function:: get_uj_s2_ui - - .. code:: text - - subroutine get_uJ_s2_uI(psi_keys_tmp,psi_coefs_tmp,n,nmax_coefs,nmax_keys,s2,nstates) - - File: :file:`s2.irp.f` - - returns the matrix elements of S^2 "s2(i,j)" between the "nstates" states psi_coefs_tmp(:,i) and psi_coefs_tmp(:,j) - - - - - -.. c:function:: getmobiles - - .. code:: text - - subroutine getMobiles(key,key_mask, mobiles,Nint) - - File: :file:`filter_connected.irp.f` - - - - - - - -.. c:function:: i_h_j - - .. code:: text - - subroutine i_H_j(key_i,key_j,Nint,hij) - - File: :file:`slater_rules.irp.f` - - Returns where i and j are determinants - - - - - -.. c:function:: i_h_j_bielec - - .. code:: text - - subroutine i_H_j_bielec(key_i,key_j,Nint,hij) - - File: :file:`slater_rules_wee_mono.irp.f` - - Returns where i and j are determinants - - - - - -.. c:function:: i_h_j_double_alpha_beta - - .. code:: text - - subroutine i_H_j_double_alpha_beta(key_i,key_j,Nint,hij) - - File: :file:`slater_rules.irp.f` - - Returns where i and j are determinants differing by an opposite-spin double excitation - - - - - -.. c:function:: i_h_j_double_spin - - .. code:: text - - subroutine i_H_j_double_spin(key_i,key_j,Nint,hij) - - File: :file:`slater_rules.irp.f` - - Returns where i and j are determinants differing by a same-spin double excitation - - - - - -.. c:function:: i_h_j_mono_spin - - .. code:: text - - subroutine i_H_j_mono_spin(key_i,key_j,Nint,spin,hij) - - File: :file:`slater_rules.irp.f` - - Returns where i and j are determinants differing by a single excitation - - - - - -.. c:function:: i_h_j_mono_spin_monoelec - - .. code:: text - - subroutine i_H_j_mono_spin_monoelec(key_i,key_j,Nint,spin,hij) - - File: :file:`slater_rules_wee_mono.irp.f` - - Returns where i and j are determinants differing by a single excitation - - - - - -.. c:function:: i_h_j_monoelec - - .. code:: text - - subroutine i_H_j_monoelec(key_i,key_j,Nint,hij) - - File: :file:`slater_rules_wee_mono.irp.f` - - Returns where i and j are determinants - - - - - -.. c:function:: i_h_j_s2 - - .. code:: text - - subroutine i_H_j_s2(key_i,key_j,Nint,hij,s2) - - File: :file:`slater_rules.irp.f` - - Returns where i and j are determinants - - - - - -.. c:function:: i_h_j_verbose - - .. code:: text - - subroutine i_H_j_verbose(key_i,key_j,Nint,hij,hmono,hdouble,phase) - - File: :file:`slater_rules.irp.f` - - Returns where i and j are determinants with - - - - - -.. c:function:: i_h_psi - - .. code:: text - - subroutine i_H_psi(key,keys,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array) - - File: :file:`slater_rules.irp.f` - - Computes = :math:`\sum_J c_J \langle i | H | J \rangle`. - Uses filter_connected_i_H_psi0 to get all the |J> to which |i> is connected. The i_H_psi_minilist is much faster but requires to build the minilists - - - - - -.. c:function:: i_h_psi_minilist - - .. code:: text - - subroutine i_H_psi_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array) - - File: :file:`slater_rules.irp.f` - - Computes = \sum_J c_J . - Uses filter_connected_i_H_psi0 to get all the |J> to which |i> is connected. The |J> are searched in short pre-computed lists. - - - - - -.. c:function:: i_s2_psi_minilist - - .. code:: text - - subroutine i_S2_psi_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_S2_psi_array) - - File: :file:`s2.irp.f` - - Computes = \sum_J c_J . - Uses filter_connected_i_H_psi0 to get all the |J> to which |i> is connected. The |J> are searched in short pre-computed lists. - - - - - -.. c:function:: i_wee_j_mono - - .. code:: text - - subroutine i_Wee_j_mono(key_i,key_j,Nint,spin,hij) - - File: :file:`slater_rules_wee_mono.irp.f` - - Returns where i and j are determinants differing by a single excitation - - - - - -.. c:function:: is_connected_to - - .. code:: text - - logical function is_connected_to(key,keys,Nint,Ndet) - - File: :file:`connected_to_ref.irp.f` - - - - - - - -.. c:function:: is_connected_to_by_mono - - .. code:: text - - logical function is_connected_to_by_mono(key,keys,Nint,Ndet) - - File: :file:`connected_to_ref.irp.f` - - - - - - - -.. c:function:: is_generable_cassd - - .. code:: text - - logical function is_generable_cassd(det1, det2, Nint) - - File: :file:`connected_to_ref.irp.f` - - - - - - - -.. c:function:: is_in_wavefunction - - .. code:: text - - logical function is_in_wavefunction(key,Nint) - - File: :file:`connected_to_ref.irp.f` - - True if the determinant ``det`` is in the wave function - - - - - -.. c:function:: is_spin_flip_possible - - .. code:: text - - logical function is_spin_flip_possible(key_in,i_flip,ispin) - - File: :file:`create_excitations.irp.f` - - returns .True. if the spin-flip of spin ispin in the orbital i_flip is possible on key_in - - - - - -.. c:function:: make_s2_eigenfunction - - .. code:: text - - subroutine make_s2_eigenfunction - - File: :file:`occ_pattern.irp.f` - - - - - - - -.. c:function:: mono_excitation_wee - - .. code:: text - - subroutine mono_excitation_wee(det_1,det_2,h,p,spin,phase,hij) - - File: :file:`mono_excitations_bielec.irp.f` - - - - - - - -.. c:function:: occ_pattern_of_det - - .. code:: text - - subroutine occ_pattern_of_det(d,o,Nint) - - File: :file:`occ_pattern.irp.f` - - Transforms a determinant to an occupation pattern - occ(:,1) : Single occupations - occ(:,2) : Double occupations - - - - - - -.. c:function:: occ_pattern_search_key - - .. code:: text - - integer*8 function occ_pattern_search_key(det,Nint) - - File: :file:`connected_to_ref.irp.f` - - Return an integer*8 corresponding to a determinant index for searching - - - - - -.. c:function:: occ_pattern_to_dets - - .. code:: text - - subroutine occ_pattern_to_dets(o,d,sze,n_alpha,Nint) - - File: :file:`occ_pattern.irp.f` - - Generate all possible determinants for a give occ_pattern - - - - - -.. c:function:: occ_pattern_to_dets_size - - .. code:: text - - subroutine occ_pattern_to_dets_size(o,sze,n_alpha,Nint) - - File: :file:`occ_pattern.irp.f` - - Number of possible determinants for a given occ_pattern - - - - - -.. c:function:: pouet - - .. code:: text - - subroutine pouet - - File: :file:`test.irp.f` - - - - - - - -.. c:function:: pull_pt2 - - .. code:: text - - subroutine pull_pt2(zmq_socket_pull,pt2,norm_pert,H_pert_diag,i_generator,N_st,n,task_id) - - File: :file:`h_apply.irp.f` - - Pull PT2 calculation in the collector - - - - - -.. c:function:: push_pt2 - - .. code:: text - - subroutine push_pt2(zmq_socket_push,pt2,norm_pert,H_pert_diag,i_generator,N_st,task_id) - - File: :file:`h_apply.irp.f` - - Push PT2 calculation to the collector - - - - - -.. c:function:: read_dets - - .. code:: text - - subroutine read_dets(det,Nint,Ndet) - - File: :file:`determinants.irp.f` - - Reads the determinants from the EZFIO file - - - - - -.. c:function:: remove_duplicates_in_psi_det - - .. code:: text - - subroutine remove_duplicates_in_psi_det(found_duplicates) - - File: :file:`h_apply.irp.f` - - Removes duplicate determinants in the wave function. - - - - - -.. c:function:: resize_h_apply_buffer - - .. code:: text - - subroutine resize_H_apply_buffer(new_size,iproc) - - File: :file:`h_apply.irp.f` - - Resizes the H_apply buffer of proc iproc. The buffer lock should be set before calling this function. - - - - - -.. c:function:: routine_example_psi_det - - .. code:: text - - subroutine routine_example_psi_det - - File: :file:`example.irp.f` - - subroutine that illustrates the main features available in determinants using many determinants - - - - - -.. c:function:: s2_u_0 - - .. code:: text - - subroutine S2_u_0(v_0,u_0,n,keys_tmp,Nint) - - File: :file:`s2.irp.f` - - Computes v_0 = S^2|u_0> - n : number of determinants - - - - - - -.. c:function:: s2_u_0_nstates - - .. code:: text - - subroutine S2_u_0_nstates(v_0,u_0,n,keys_tmp,Nint,N_st,sze_8) - - File: :file:`s2.irp.f` - - Computes v_0 = S^2|u_0> - n : number of determinants - - - - - - -.. c:function:: save_natural_mos - - .. code:: text - - subroutine save_natural_mos - - File: :file:`density_matrix.irp.f` - - Save natural orbitals, obtained by diagonalization of the one-body density matrix in the MO basis - - - - - -.. c:function:: save_ref_determinant - - .. code:: text - - subroutine save_ref_determinant - - File: :file:`determinants.irp.f` - - - - - - - -.. c:function:: save_wavefunction - - .. code:: text - - subroutine save_wavefunction - - File: :file:`determinants.irp.f` - - Save the wave function into the EZFIO file - - - - - -.. c:function:: save_wavefunction_general - - .. code:: text - - subroutine save_wavefunction_general(ndet,nstates,psidet,dim_psicoef,psicoef) - - File: :file:`determinants.irp.f` - - Save the wave function into the EZFIO file - - - - - -.. c:function:: save_wavefunction_specified - - .. code:: text - - subroutine save_wavefunction_specified(ndet,nstates,psidet,psicoef,ndetsave,index_det_save) - - File: :file:`determinants.irp.f` - - Save the wave function into the EZFIO file - - - - - -.. c:function:: save_wavefunction_truncated - - .. code:: text - - subroutine save_wavefunction_truncated(thr) - - File: :file:`determinants.irp.f` - - Save the wave function into the EZFIO file - - - - - -.. c:function:: save_wavefunction_unsorted - - .. code:: text - - subroutine save_wavefunction_unsorted - - File: :file:`determinants.irp.f` - - Save the wave function into the EZFIO file - - - - - -.. c:function:: set_natural_mos - - .. code:: text - - subroutine set_natural_mos - - File: :file:`density_matrix.irp.f` - - Set natural orbitals, obtained by diagonalization of the one-body density matrix in the MO basis - - - - - -.. c:function:: sort_dets_ab - - .. code:: text - - subroutine sort_dets_ab(key, idx, shortcut, N_key, Nint) - - File: :file:`sort_dets_ab.irp.f` - - Uncodumented : TODO - - - - - -.. c:function:: sort_dets_ab_v - - .. code:: text - - subroutine sort_dets_ab_v(key_in, key_out, idx, shortcut, version, N_key, Nint) - - File: :file:`sort_dets_ab.irp.f` - - Uncodumented : TODO - - - - - -.. c:function:: sort_dets_ba_v - - .. code:: text - - subroutine sort_dets_ba_v(key_in, key_out, idx, shortcut, version, N_key, Nint) - - File: :file:`sort_dets_ab.irp.f` - - Uncodumented : TODO - - - - - -.. c:function:: sort_dets_by_det_search_key - - .. code:: text - - subroutine sort_dets_by_det_search_key(Ndet, det_in, coef_in, sze, det_out, coef_out, N_st) - - File: :file:`determinants.irp.f` - - Determinants are sorted are sorted according to their det_search_key. Useful to accelerate the search of a random determinant in the wave function. - /!\ The first dimension of coef_out and coef_in need to be psi_det_size - - - - - - -.. c:function:: spin_det_search_key - - .. code:: text - - integer*8 function spin_det_search_key(det,Nint) - - File: :file:`spindeterminants.irp.f` - - Return an integer(8) corresponding to a determinant index for searching - - - - - -.. c:function:: tamiser - - .. code:: text - - subroutine tamiser(key, idx, no, n, Nint, N_key) - - File: :file:`sort_dets_ab.irp.f` - - Uncodumented : TODO - - - - - -.. c:function:: u_0_s2_u_0 - - .. code:: text - - subroutine u_0_S2_u_0(e_0,u_0,n,keys_tmp,Nint,N_st,sze_8) - - File: :file:`s2.irp.f` - - Computes e_0 = / - n : number of determinants - - - - - - -.. c:function:: wf_of_psi_bilinear_matrix - - .. code:: text - - subroutine wf_of_psi_bilinear_matrix(truncate) - - File: :file:`spindeterminants.irp.f` - - Generate a wave function containing all possible products of alpha and beta determinants - - - - - -.. c:function:: write_spindeterminants - - .. code:: text - - subroutine write_spindeterminants - - File: :file:`spindeterminants.irp.f` - - - - - - - -.. c:function:: zmq_get_n_det - - .. code:: text - - integer function zmq_get_N_det(zmq_to_qp_run_socket, worker_id) - - File: :file:`zmq.irp.f_template_379` - - Get N_det from the qp_run scheduler - - - - - -.. c:function:: zmq_get_n_det_alpha_unique - - .. code:: text - - integer function zmq_get_N_det_alpha_unique(zmq_to_qp_run_socket, worker_id) - - File: :file:`zmq.irp.f_template_379` - - Get N_det_alpha_unique from the qp_run scheduler - - - - - -.. c:function:: zmq_get_n_det_beta_unique - - .. code:: text - - integer function zmq_get_N_det_beta_unique(zmq_to_qp_run_socket, worker_id) - - File: :file:`zmq.irp.f_template_379` - - Get N_det_beta_unique from the qp_run scheduler - - - - - -.. c:function:: zmq_get_n_states - - .. code:: text - - integer function zmq_get_N_states(zmq_to_qp_run_socket, worker_id) - - File: :file:`zmq.irp.f_template_379` - - Get N_states from the qp_run scheduler - - - - - -.. c:function:: zmq_get_psi - - .. code:: text - - integer function zmq_get_psi(zmq_to_qp_run_socket, worker_id) - - File: :file:`zmq.irp.f` - - Get the wave function from the qp_run scheduler - - - - - -.. c:function:: zmq_get_psi_bilinear - - .. code:: text - - integer function zmq_get_psi_bilinear(zmq_to_qp_run_socket, worker_id) - - File: :file:`zmq.irp.f` - - Get the wave function from the qp_run scheduler - - - - - -.. c:function:: zmq_get_psi_bilinear_matrix_columns - - .. code:: text - - integer*8 function zmq_get_psi_bilinear_matrix_columns(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_500` - - Get psi_bilinear_matrix_columns on the qp_run scheduler - - - - - -.. c:function:: zmq_get_psi_bilinear_matrix_order - - .. code:: text - - integer*8 function zmq_get_psi_bilinear_matrix_order(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_500` - - Get psi_bilinear_matrix_order on the qp_run scheduler - - - - - -.. c:function:: zmq_get_psi_bilinear_matrix_rows - - .. code:: text - - integer*8 function zmq_get_psi_bilinear_matrix_rows(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_500` - - Get psi_bilinear_matrix_rows on the qp_run scheduler - - - - - -.. c:function:: zmq_get_psi_bilinear_matrix_values - - .. code:: text - - integer*8 function zmq_get_psi_bilinear_matrix_values(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_564` - - get psi_bilinear_matrix_values on the qp_run scheduler - - - - - -.. c:function:: zmq_get_psi_coef - - .. code:: text - - integer*8 function zmq_get_psi_coef(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_564` - - get psi_coef on the qp_run scheduler - - - - - -.. c:function:: zmq_get_psi_det - - .. code:: text - - integer*8 function zmq_get_psi_det(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_440` - - Get psi_det on the qp_run scheduler - - - - - -.. c:function:: zmq_get_psi_det_alpha_unique - - .. code:: text - - integer*8 function zmq_get_psi_det_alpha_unique(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_440` - - Get psi_det_alpha_unique on the qp_run scheduler - - - - - -.. c:function:: zmq_get_psi_det_beta_unique - - .. code:: text - - integer*8 function zmq_get_psi_det_beta_unique(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_440` - - Get psi_det_beta_unique on the qp_run scheduler - - - - - -.. c:function:: zmq_get_psi_det_size - - .. code:: text - - integer function zmq_get_psi_det_size(zmq_to_qp_run_socket, worker_id) - - File: :file:`zmq.irp.f_template_379` - - Get psi_det_size from the qp_run scheduler - - - - - -.. c:function:: zmq_get_psi_notouch - - .. code:: text - - integer function zmq_get_psi_notouch(zmq_to_qp_run_socket, worker_id) - - File: :file:`zmq.irp.f` - - Get the wave function from the qp_run scheduler - - - - - -.. c:function:: zmq_put_n_det - - .. code:: text - - integer function zmq_put_N_det(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_379` - - Put N_det on the qp_run scheduler - - - - - -.. c:function:: zmq_put_n_det_alpha_unique - - .. code:: text - - integer function zmq_put_N_det_alpha_unique(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_379` - - Put N_det_alpha_unique on the qp_run scheduler - - - - - -.. c:function:: zmq_put_n_det_beta_unique - - .. code:: text - - integer function zmq_put_N_det_beta_unique(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_379` - - Put N_det_beta_unique on the qp_run scheduler - - - - - -.. c:function:: zmq_put_n_states - - .. code:: text - - integer function zmq_put_N_states(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_379` - - Put N_states on the qp_run scheduler - - - - - -.. c:function:: zmq_put_psi - - .. code:: text - - integer function zmq_put_psi(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f` - - Put the wave function on the qp_run scheduler - - - - - -.. c:function:: zmq_put_psi_bilinear - - .. code:: text - - integer function zmq_put_psi_bilinear(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f` - - Put the wave function on the qp_run scheduler - - - - - -.. c:function:: zmq_put_psi_bilinear_matrix_columns - - .. code:: text - - integer*8 function zmq_put_psi_bilinear_matrix_columns(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_500` - - Put psi_bilinear_matrix_columns on the qp_run scheduler - - - - - -.. c:function:: zmq_put_psi_bilinear_matrix_order - - .. code:: text - - integer*8 function zmq_put_psi_bilinear_matrix_order(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_500` - - Put psi_bilinear_matrix_order on the qp_run scheduler - - - - - -.. c:function:: zmq_put_psi_bilinear_matrix_rows - - .. code:: text - - integer*8 function zmq_put_psi_bilinear_matrix_rows(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_500` - - Put psi_bilinear_matrix_rows on the qp_run scheduler - - - - - -.. c:function:: zmq_put_psi_bilinear_matrix_values - - .. code:: text - - integer*8 function zmq_put_psi_bilinear_matrix_values(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_564` - - Put psi_bilinear_matrix_values on the qp_run scheduler - - - - - -.. c:function:: zmq_put_psi_coef - - .. code:: text - - integer*8 function zmq_put_psi_coef(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_564` - - Put psi_coef on the qp_run scheduler - - - - - -.. c:function:: zmq_put_psi_det - - .. code:: text - - integer*8 function zmq_put_psi_det(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_440` - - Put psi_det on the qp_run scheduler - - - - - -.. c:function:: zmq_put_psi_det_alpha_unique - - .. code:: text - - integer*8 function zmq_put_psi_det_alpha_unique(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_440` - - Put psi_det_alpha_unique on the qp_run scheduler - - - - - -.. c:function:: zmq_put_psi_det_beta_unique - - .. code:: text - - integer*8 function zmq_put_psi_det_beta_unique(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_440` - - Put psi_det_beta_unique on the qp_run scheduler - - - - - -.. c:function:: zmq_put_psi_det_size - - .. code:: text - - integer function zmq_put_psi_det_size(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_379` - - Put psi_det_size on the qp_run scheduler - - diff --git a/docs/source/modules/dft_keywords.rst b/docs/source/modules/dft_keywords.rst deleted file mode 100644 index ed7f87d2..00000000 --- a/docs/source/modules/dft_keywords.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _dft_keywords: - -.. program:: dft_keywords - -.. default-role:: option - -============ -dft_keywords -============ - -This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as: - -# :option:`dft_keywords exchange_functional` -# :option:`dft_keywords correlation_functional` -# :option:`dft_keywords HF_exchange` : only relevent for the :ref:`ks_scf` program - -The keyword for the range separation parameter :math:`\mu` is the :option:`ao_two_e_erf_integrals mu_erf` keyword. - -The keyword for the type of density used in RS-DFT calculation with a multi-configurational wave function is the :option:`density_for_dft density_for_dft` keyword. - - - -EZFIO parameters ----------------- - -.. option:: exchange_functional - - name of the exchange functional - - Default: short_range_LDA - -.. option:: correlation_functional - - name of the correlation functional - - Default: short_range_LDA - -.. option:: HF_exchange - - Percentage of HF exchange in the DFT model - - Default: 0. - - -Providers ---------- - - -.. c:var:: dft_type - - .. code:: text - - character*(32) :: dft_type - - File: :file:`keywords.irp.f` - - defines the type of DFT applied: LDA, GGA etc ... - - diff --git a/docs/source/modules/dft_utils_one_e.rst b/docs/source/modules/dft_utils_one_e.rst deleted file mode 100644 index dadd433e..00000000 --- a/docs/source/modules/dft_utils_one_e.rst +++ /dev/null @@ -1,1909 +0,0 @@ -.. _dft_utils_one_e: - -.. program:: dft_utils_one_e - -.. default-role:: option - -=============== -dft_utils_one_e -=============== - -This module contains all the one-body related quantities needed to perform DFT or RS-DFT calculations. -Therefore, it contains most of the properties which depends on the one-body density and density matrix. - -The most important files and variables are: -# The general *providers* for the x/c energies in :file:`e_xc_general.irp.f` -# The general *providers* for the x/c potentials in :file:`pot_general.irp.f` -# The short-range hartree operator and all related quantities in :file:`sr_coulomb.irp.f` -These *providers* will be used in many DFT-related programs, such as :file:`ks_scf.irp.f` or :file:`rs_ks_scf.irp.f`. -It is also needed to compute the effective one-body operator needed in multi-determinant RS-DFT (see plugins by eginer). - -Some other interesting quantities: -# The LDA and PBE *providers* for the x/c energies in :file:`e_xc.irp.f` and :file:`sr_exc.irp.f` -# The LDA and PBE *providers* for the x/c potentials on the AO basis in :file:`pot_ao.irp.f` and :file:`sr_pot_ao.irp.f` -# The :math:`h_{core}` energy computed directly with the one-body density matrix in :file:`one_e_energy_dft.irp.f` -# LDA and PBE short-range functionals *subroutines* in :file:`exc_sr_lda.irp.f` and :file:`exc_sr_pbe.irp.f` - - - - - -Providers ---------- - - -.. c:var:: aos_dsr_vc_alpha_pbe_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_dsr_vc_beta_pbe_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_dsr_vx_alpha_pbe_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_dsr_vx_beta_pbe_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_dvc_alpha_pbe_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_dvc_beta_pbe_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_dvx_alpha_pbe_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_dvx_beta_pbe_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_sr_vc_alpha_lda_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_sr_vc_alpha_pbe_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_sr_vc_beta_lda_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_sr_vc_beta_pbe_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_sr_vx_alpha_lda_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_sr_vx_alpha_pbe_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_sr_vx_beta_lda_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_sr_vx_beta_pbe_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_vc_alpha_lda_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_vc_alpha_pbe_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_vc_beta_lda_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_vc_beta_pbe_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_vx_alpha_lda_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_vx_alpha_pbe_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_vx_beta_lda_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) - double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: aos_vx_beta_pbe_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: effective_one_e_potential - - .. code:: text - - double precision, allocatable :: effective_one_e_potential (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: effective_one_e_potential_without_kin (mo_tot_num,mo_tot_num,N_states) - - File: :file:`sr_coulomb.irp.f` - - effective_one_e_potential(i,j) = + + Taking the expectation value does not provide any energy but effective_one_e_potential(i,j) is the potential coupling DFT and WFT part to be used in any WFT calculation shifted_effective_one_e_potential_without_kin = effective_one_e_potential_without_kin + shifting_constant on the diagonal - - - - -.. c:var:: effective_one_e_potential_without_kin - - .. code:: text - - double precision, allocatable :: effective_one_e_potential (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: effective_one_e_potential_without_kin (mo_tot_num,mo_tot_num,N_states) - - File: :file:`sr_coulomb.irp.f` - - effective_one_e_potential(i,j) = + + Taking the expectation value does not provide any energy but effective_one_e_potential(i,j) is the potential coupling DFT and WFT part to be used in any WFT calculation shifted_effective_one_e_potential_without_kin = effective_one_e_potential_without_kin + shifting_constant on the diagonal - - - - -.. c:var:: energy_c - - .. code:: text - - double precision, allocatable :: energy_x (N_states) - double precision, allocatable :: energy_c (N_states) - - File: :file:`e_xc_general.irp.f` - - correlation and exchange energies general providers. - - - - -.. c:var:: energy_c_lda - - .. code:: text - - double precision, allocatable :: energy_x_lda (N_states) - double precision, allocatable :: energy_c_lda (N_states) - - File: :file:`e_xc.irp.f` - - exchange/correlation energy with the short range LDA functional - - - - -.. c:var:: energy_c_pbe - - .. code:: text - - double precision, allocatable :: energy_x_pbe (N_states) - double precision, allocatable :: energy_c_pbe (N_states) - - File: :file:`e_xc.irp.f` - - exchange/correlation energy with the short range PBE functional - - - - -.. c:var:: energy_sr_c_lda - - .. code:: text - - double precision, allocatable :: energy_sr_x_lda (N_states) - double precision, allocatable :: energy_sr_c_lda (N_states) - - File: :file:`sr_exc.irp.f` - - exchange/correlation energy with the short range LDA functional - - - - -.. c:var:: energy_sr_c_pbe - - .. code:: text - - double precision, allocatable :: energy_sr_x_pbe (N_states) - double precision, allocatable :: energy_sr_c_pbe (N_states) - - File: :file:`sr_exc.irp.f` - - exchange/correlation energy with the short range PBE functional - - - - -.. c:var:: energy_sr_x_lda - - .. code:: text - - double precision, allocatable :: energy_sr_x_lda (N_states) - double precision, allocatable :: energy_sr_c_lda (N_states) - - File: :file:`sr_exc.irp.f` - - exchange/correlation energy with the short range LDA functional - - - - -.. c:var:: energy_sr_x_pbe - - .. code:: text - - double precision, allocatable :: energy_sr_x_pbe (N_states) - double precision, allocatable :: energy_sr_c_pbe (N_states) - - File: :file:`sr_exc.irp.f` - - exchange/correlation energy with the short range PBE functional - - - - -.. c:var:: energy_x - - .. code:: text - - double precision, allocatable :: energy_x (N_states) - double precision, allocatable :: energy_c (N_states) - - File: :file:`e_xc_general.irp.f` - - correlation and exchange energies general providers. - - - - -.. c:var:: energy_x_lda - - .. code:: text - - double precision, allocatable :: energy_x_lda (N_states) - double precision, allocatable :: energy_c_lda (N_states) - - File: :file:`e_xc.irp.f` - - exchange/correlation energy with the short range LDA functional - - - - -.. c:var:: energy_x_pbe - - .. code:: text - - double precision, allocatable :: energy_x_pbe (N_states) - double precision, allocatable :: energy_c_pbe (N_states) - - File: :file:`e_xc.irp.f` - - exchange/correlation energy with the short range PBE functional - - - - -.. c:var:: gga_sr_type_functionals - - .. code:: text - - subroutine GGA_sr_type_functionals(r,rho_a,rho_b,grad_rho_a_2,grad_rho_b_2,grad_rho_a_b, & - ex,vx_rho_a,vx_rho_b,vx_grad_rho_a_2,vx_grad_rho_b_2,vx_grad_rho_a_b, & - ec,vc_rho_a,vc_rho_b,vc_grad_rho_a_2,vc_grad_rho_b_2,vc_grad_rho_a_b ) - - File: :file:`utils.irp.f` - - routine that helps in building the x/c potentials on the AO basis for a GGA functional with a short-range interaction - - - - -.. c:var:: gga_type_functionals - - .. code:: text - - subroutine GGA_type_functionals(r,rho_a,rho_b,grad_rho_a_2,grad_rho_b_2,grad_rho_a_b, & - ex,vx_rho_a,vx_rho_b,vx_grad_rho_a_2,vx_grad_rho_b_2,vx_grad_rho_a_b, & - ec,vc_rho_a,vc_rho_b,vc_grad_rho_a_2,vc_grad_rho_b_2,vc_grad_rho_a_b ) - - File: :file:`utils.irp.f` - - routine that helps in building the x/c potentials on the AO basis for a GGA functional - - - - -.. c:var:: grad_aos_dsr_vc_alpha_pbe_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: grad_aos_dsr_vc_beta_pbe_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: grad_aos_dsr_vx_alpha_pbe_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: grad_aos_dsr_vx_beta_pbe_w - - .. code:: text - - double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`sr_pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: grad_aos_dvc_alpha_pbe_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: grad_aos_dvc_beta_pbe_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: grad_aos_dvx_alpha_pbe_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: grad_aos_dvx_beta_pbe_w - - .. code:: text - - double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) - double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) - double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) - - File: :file:`pot_ao.irp.f` - - aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) - - - - -.. c:var:: mu_erf_dft - - .. code:: text - - double precision :: mu_erf_dft - - File: :file:`mu_erf_dft.irp.f` - - range separation parameter used in RS-DFT. It is set to mu_erf in order to be consistent with the two electrons integrals erf - - - - -.. c:var:: potential_c_alpha_ao - - .. code:: text - - double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) - - File: :file:`pot_general.irp.f` - - general providers for the alpha/beta exchange/correlation potentials on the AO basis - - - - -.. c:var:: potential_c_alpha_ao_lda - - .. code:: text - - double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) - - File: :file:`pot_ao.irp.f` - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - - - -.. c:var:: potential_c_alpha_ao_pbe - - .. code:: text - - double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) - - File: :file:`pot_ao.irp.f` - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - - - -.. c:var:: potential_c_alpha_mo - - .. code:: text - - double precision, allocatable :: potential_x_alpha_mo (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: potential_x_beta_mo (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: potential_c_alpha_mo (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: potential_c_beta_mo (mo_tot_num,mo_tot_num,N_states) - - File: :file:`pot_general.irp.f` - - general providers for the alpha/beta exchange/correlation potentials on the MO basis - - - - -.. c:var:: potential_c_beta_ao - - .. code:: text - - double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) - - File: :file:`pot_general.irp.f` - - general providers for the alpha/beta exchange/correlation potentials on the AO basis - - - - -.. c:var:: potential_c_beta_ao_lda - - .. code:: text - - double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) - - File: :file:`pot_ao.irp.f` - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - - - -.. c:var:: potential_c_beta_ao_pbe - - .. code:: text - - double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) - - File: :file:`pot_ao.irp.f` - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - - - -.. c:var:: potential_c_beta_mo - - .. code:: text - - double precision, allocatable :: potential_x_alpha_mo (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: potential_x_beta_mo (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: potential_c_alpha_mo (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: potential_c_beta_mo (mo_tot_num,mo_tot_num,N_states) - - File: :file:`pot_general.irp.f` - - general providers for the alpha/beta exchange/correlation potentials on the MO basis - - - - -.. c:var:: potential_sr_c_alpha_ao_lda - - .. code:: text - - 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) - 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) - - File: :file:`sr_pot_ao.irp.f` - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - - - -.. c:var:: potential_sr_c_alpha_ao_pbe - - .. code:: text - - 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) - - File: :file:`sr_pot_ao.irp.f` - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - - - -.. c:var:: potential_sr_c_beta_ao_lda - - .. code:: text - - 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) - 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) - - File: :file:`sr_pot_ao.irp.f` - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - - - -.. c:var:: potential_sr_c_beta_ao_pbe - - .. code:: text - - 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) - - File: :file:`sr_pot_ao.irp.f` - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - - - -.. c:var:: potential_sr_x_alpha_ao_lda - - .. code:: text - - 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) - 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) - - File: :file:`sr_pot_ao.irp.f` - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - - - -.. c:var:: potential_sr_x_alpha_ao_pbe - - .. code:: text - - 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) - - File: :file:`sr_pot_ao.irp.f` - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - - - -.. c:var:: potential_sr_x_beta_ao_lda - - .. code:: text - - 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) - 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) - - File: :file:`sr_pot_ao.irp.f` - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - - - -.. c:var:: potential_sr_x_beta_ao_pbe - - .. code:: text - - 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) - - File: :file:`sr_pot_ao.irp.f` - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - - - -.. c:var:: potential_x_alpha_ao - - .. code:: text - - double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) - - File: :file:`pot_general.irp.f` - - general providers for the alpha/beta exchange/correlation potentials on the AO basis - - - - -.. c:var:: potential_x_alpha_ao_lda - - .. code:: text - - double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) - - File: :file:`pot_ao.irp.f` - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - - - -.. c:var:: potential_x_alpha_ao_pbe - - .. code:: text - - double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) - - File: :file:`pot_ao.irp.f` - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - - - -.. c:var:: potential_x_alpha_mo - - .. code:: text - - double precision, allocatable :: potential_x_alpha_mo (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: potential_x_beta_mo (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: potential_c_alpha_mo (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: potential_c_beta_mo (mo_tot_num,mo_tot_num,N_states) - - File: :file:`pot_general.irp.f` - - general providers for the alpha/beta exchange/correlation potentials on the MO basis - - - - -.. c:var:: potential_x_beta_ao - - .. code:: text - - double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) - - File: :file:`pot_general.irp.f` - - general providers for the alpha/beta exchange/correlation potentials on the AO basis - - - - -.. c:var:: potential_x_beta_ao_lda - - .. code:: text - - double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) - - File: :file:`pot_ao.irp.f` - - short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis - - - - -.. c:var:: potential_x_beta_ao_pbe - - .. code:: text - - double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) - double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) - - File: :file:`pot_ao.irp.f` - - exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis - - - - -.. c:var:: potential_x_beta_mo - - .. code:: text - - double precision, allocatable :: potential_x_alpha_mo (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: potential_x_beta_mo (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: potential_c_alpha_mo (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: potential_c_beta_mo (mo_tot_num,mo_tot_num,N_states) - - File: :file:`pot_general.irp.f` - - general providers for the alpha/beta exchange/correlation potentials on the MO basis - - - - -.. c:var:: psi_dft_energy_h_core - - .. code:: text - - double precision, allocatable :: psi_dft_energy_kinetic (N_states) - double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) - double precision, allocatable :: psi_dft_energy_h_core (N_states) - - File: :file:`one_e_energy_dft.irp.f` - - kinetic, electron-nuclear and total h_core energy computed with the density matrix one_body_dm_mo_beta_for_dft+one_body_dm_mo_alpha_for_dft - - - - -.. c:var:: psi_dft_energy_kinetic - - .. code:: text - - double precision, allocatable :: psi_dft_energy_kinetic (N_states) - double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) - double precision, allocatable :: psi_dft_energy_h_core (N_states) - - File: :file:`one_e_energy_dft.irp.f` - - kinetic, electron-nuclear and total h_core energy computed with the density matrix one_body_dm_mo_beta_for_dft+one_body_dm_mo_alpha_for_dft - - - - -.. c:var:: psi_dft_energy_nuclear_elec - - .. code:: text - - double precision, allocatable :: psi_dft_energy_kinetic (N_states) - double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) - double precision, allocatable :: psi_dft_energy_h_core (N_states) - - File: :file:`one_e_energy_dft.irp.f` - - kinetic, electron-nuclear and total h_core energy computed with the density matrix one_body_dm_mo_beta_for_dft+one_body_dm_mo_alpha_for_dft - - - - -.. c:var:: shifting_constant - - .. code:: text - - double precision, allocatable :: shifting_constant (N_states) - - File: :file:`shifted_potential.irp.f` - - shifting_constant = (E_{Hxc} - <\Psi | V_{Hxc} | \Psi>) / N_elec constant to add to the potential in order to obtain the variational energy as the eigenvalue of the effective long-range Hamiltonian (see original paper of Levy PRL 113, 113002 (2014), equation (17) ) - - - - -.. c:var:: short_range_hartree - - .. code:: text - - double precision, allocatable :: short_range_hartree_operator (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: short_range_hartree (N_states) - - File: :file:`sr_coulomb.irp.f` - - short_range_Hartree_operator(i,j) = \int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr} short_range_Hartree = 0.5 * \sum_{i,j} \rho_{ij} short_range_Hartree_operator(i,j) = 0.5 * \int dr \int r' \rho(r) \rho(r') W_{ee}^{sr} - - - - -.. c:var:: short_range_hartree_operator - - .. code:: text - - double precision, allocatable :: short_range_hartree_operator (mo_tot_num,mo_tot_num,N_states) - double precision, allocatable :: short_range_hartree (N_states) - - File: :file:`sr_coulomb.irp.f` - - short_range_Hartree_operator(i,j) = \int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr} short_range_Hartree = 0.5 * \sum_{i,j} \rho_{ij} short_range_Hartree_operator(i,j) = 0.5 * \int dr \int r' \rho(r) \rho(r') W_{ee}^{sr} - - - - -.. c:var:: trace_v_h - - .. code:: text - - double precision, allocatable :: trace_v_xc (N_states) - double precision, allocatable :: trace_v_h (N_states) - double precision, allocatable :: trace_v_hxc (N_states) - - File: :file:`pot_general.irp.f` - - Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} - - - - -.. c:var:: trace_v_hxc - - .. code:: text - - double precision, allocatable :: trace_v_xc (N_states) - double precision, allocatable :: trace_v_h (N_states) - double precision, allocatable :: trace_v_hxc (N_states) - - File: :file:`pot_general.irp.f` - - Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} - - - - -.. c:var:: trace_v_xc - - .. code:: text - - double precision, allocatable :: trace_v_xc (N_states) - double precision, allocatable :: trace_v_h (N_states) - double precision, allocatable :: trace_v_hxc (N_states) - - File: :file:`pot_general.irp.f` - - Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: berf - - .. code:: text - - function berf(a) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: dberfda - - .. code:: text - - function dberfda(a) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: dpol - - .. code:: text - - double precision function dpol(rs) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: dpold - - .. code:: text - - double precision function dpold(rs) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: dpoldd - - .. code:: text - - double precision function dpoldd(rs) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: ec_lda - - .. code:: text - - subroutine ec_lda(rho_a,rho_b,ec,vc_a,vc_b) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: ec_lda_sr - - .. code:: text - - subroutine ec_lda_sr(mu,rho_a,rho_b,ec,vc_a,vc_b) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: ec_only_lda_sr - - .. code:: text - - subroutine ec_only_lda_sr(mu,rho_a,rho_b,ec) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: ec_pbe_only - - .. code:: text - - subroutine ec_pbe_only(mu,rhoc,rhoo,sigmacc,sigmaco,sigmaoo,ec) - - File: :file:`exc_sr_pbe.irp.f` - - Short-range PBE correlation energy functional for erf interaction - input : ========== - mu = range separated parameter - rhoc, rhoo = total density and spin density - sigmacc = square of the gradient of the total density - sigmaco = square of the gradient of the spin density - sigmaoo = scalar product between the gradient of the total density and the one of the spin density - output: ========== - ec = correlation energy - - - - - - -.. c:function:: ec_pbe_sr - - .. code:: text - - subroutine ec_pbe_sr(mu,rhoc,rhoo,sigmacc,sigmaco,sigmaoo,ec,vrhoc,vrhoo,vsigmacc,vsigmaco,vsigmaoo) - - File: :file:`exc_sr_pbe.irp.f` - - Short-range PBE correlation energy functional for erf interaction - input : ========== - mu = range separated parameter - rhoc, rhoo = total density and spin density - sigmacc = square of the gradient of the total density - sigmaco = square of the gradient of the spin density - sigmaoo = scalar product between the gradient of the total density and the one of the spin density - output: ========== - ec = correlation energy - all variables v** are energy derivatives with respect to components of the density - vrhoc = derivative with respect to the total density - vrhoo = derivative with respect to spin density - vsigmacc = derivative with respect to the square of the gradient of the total density - vsigmaco = derivative with respect to scalar product between the gradients of total and spin densities - vsigmaoo = derivative with respect to the square of the gradient of the psin density - - - - - -.. c:function:: ecorrlr - - .. code:: text - - subroutine ecorrlr(rs,z,mu,eclr) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: ecpw - - .. code:: text - - subroutine ecPW(x,y,ec,ecd,ecz,ecdd,eczd) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: ex_lda - - .. code:: text - - subroutine ex_lda(rho_a,rho_b,ex,vx_a,vx_b) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: ex_lda_sr - - .. code:: text - - subroutine ex_lda_sr(mu,rho_a,rho_b,ex,vx_a,vx_b) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: ex_pbe_sr - - .. code:: text - - subroutine ex_pbe_sr(mu,rho_a,rho_b,grd_rho_a_2,grd_rho_b_2,grd_rho_a_b,ex,vx_rho_a,vx_rho_b,vx_grd_rho_a_2,vx_grd_rho_b_2,vx_grd_rho_a_b) - - File: :file:`exc_sr_pbe.irp.f` - - mu = range separation parameter rho_a = density alpha rho_b = density beta grd_rho_a_2 = (gradient rho_a)^2 grd_rho_b_2 = (gradient rho_b)^2 grd_rho_a_b = (gradient rho_a).(gradient rho_b) ex = exchange energy density at the density and corresponding gradients of the density vx_rho_a = d ex / d rho_a vx_rho_b = d ex / d rho_b vx_grd_rho_a_2 = d ex / d grd_rho_a_2 vx_grd_rho_b_2 = d ex / d grd_rho_b_2 vx_grd_rho_a_b = d ex / d grd_rho_a_b - - - - - -.. c:function:: ex_pbe_sr_only - - .. code:: text - - subroutine ex_pbe_sr_only(mu,rho_a,rho_b,grd_rho_a_2,grd_rho_b_2,grd_rho_a_b,ex) - - File: :file:`exc_sr_pbe.irp.f` - - rho_a = density alpha rho_b = density beta grd_rho_a_2 = (gradient rho_a)^2 grd_rho_b_2 = (gradient rho_b)^2 grd_rho_a_b = (gradient rho_a).(gradient rho_b) ex = exchange energy density at point r - - - - - -.. c:function:: g0d - - .. code:: text - - double precision function g0d(rs) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: g0dd - - .. code:: text - - double precision function g0dd(rs) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: g0f - - .. code:: text - - double precision function g0f(x) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: gpw - - .. code:: text - - subroutine GPW(x,Ac,alfa1,beta1,beta2,beta3,beta4,G,Gd,Gdd) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: grad_rho_ab_to_grad_rho_oc - - .. code:: text - - subroutine grad_rho_ab_to_grad_rho_oc(grad_rho_a_2,grad_rho_b_2,grad_rho_a_b,grad_rho_o_2,grad_rho_c_2,grad_rho_o_c) - - File: :file:`rho_ab_to_rho_tot.irp.f` - - - - - - - -.. c:function:: qrpa - - .. code:: text - - double precision function Qrpa(x) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: qrpad - - .. code:: text - - double precision function Qrpad(x) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: qrpadd - - .. code:: text - - double precision function Qrpadd(x) - - File: :file:`exc_sr_lda.irp.f` - - - - - - - -.. c:function:: rho_ab_to_rho_oc - - .. code:: text - - subroutine rho_ab_to_rho_oc(rho_a,rho_b,rho_o,rho_c) - - File: :file:`rho_ab_to_rho_tot.irp.f` - - - - - - - -.. c:function:: rho_oc_to_rho_ab - - .. code:: text - - subroutine rho_oc_to_rho_ab(rho_o,rho_c,rho_a,rho_b) - - File: :file:`rho_ab_to_rho_tot.irp.f` - - - - - - - -.. c:function:: v_grad_rho_oc_to_v_grad_rho_ab - - .. code:: text - - subroutine v_grad_rho_oc_to_v_grad_rho_ab(v_grad_rho_o_2,v_grad_rho_c_2,v_grad_rho_o_c,v_grad_rho_a_2,v_grad_rho_b_2,v_grad_rho_a_b) - - File: :file:`rho_ab_to_rho_tot.irp.f` - - - - - - - -.. c:function:: v_rho_ab_to_v_rho_oc - - .. code:: text - - subroutine v_rho_ab_to_v_rho_oc(v_rho_a,v_rho_b,v_rho_o,v_rho_c) - - File: :file:`rho_ab_to_rho_tot.irp.f` - - - - - - - -.. c:function:: v_rho_oc_to_v_rho_ab - - .. code:: text - - subroutine v_rho_oc_to_v_rho_ab(v_rho_o,v_rho_c,v_rho_a,v_rho_b) - - File: :file:`rho_ab_to_rho_tot.irp.f` - - - - - - - -.. c:function:: vcorrlr - - .. code:: text - - subroutine vcorrlr(rs,z,mu,vclrup,vclrdown,vclrupd,vclrdownd) - - File: :file:`exc_sr_lda.irp.f` - - - - diff --git a/docs/source/modules/dressing.rst b/docs/source/modules/dressing.rst deleted file mode 100644 index a4b3285d..00000000 --- a/docs/source/modules/dressing.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _dressing: - -.. program:: dressing - -.. default-role:: option - -========= -dress_zmq -========= - -Module to facilitate the construction of modules using dressed -Hamiltonians, parallelized with |ZeroMQ|. - - - - -EZFIO parameters ----------------- - -.. option:: thresh_dressed_ci - - Threshold on the convergence of the dressed |CI| energy - - Default: 1.e-5 - -.. option:: n_it_max_dressed_ci - - Maximum number of dressed |CI| iterations - - Default: 10 - -.. option:: dress_relative_error - - Stop stochastic dressing when the relative error is smaller than :option:`perturbation PT2_relative_error` - - Default: 0.001 diff --git a/docs/source/modules/electrons.rst b/docs/source/modules/electrons.rst deleted file mode 100644 index 97fee97c..00000000 --- a/docs/source/modules/electrons.rst +++ /dev/null @@ -1,76 +0,0 @@ -.. _electrons: - -.. program:: electrons - -.. default-role:: option - -========= -electrons -========= - -Describes the electrons. For the moment, only the number of alpha -and beta electrons are provided by this module. - - -Assumptions -=========== - -* `elec_num` >= 0 -* `elec_alpha_num` >= 0 -* `elec_beta_num` >= 0 -* `elec_alpha_num` >= `elec_beta_num` - - - - - -EZFIO parameters ----------------- - -.. option:: elec_alpha_num - - Numbers of electrons alpha ("up") - - -.. option:: elec_beta_num - - Numbers of electrons beta ("down") - - -.. option:: elec_num - - Numbers total of electrons (alpha + beta) - - Default: = electrons.elec_alpha_num + electrons.elec_beta_num - - -Providers ---------- - - -.. c:var:: elec_num - - .. code:: text - - integer :: elec_num - integer, allocatable :: elec_num_tab (2) - - File: :file:`electrons.irp.f` - - Numbers of alpha ("up") , beta ("down") and total electrons - - - - -.. c:var:: elec_num_tab - - .. code:: text - - integer :: elec_num - integer, allocatable :: elec_num_tab (2) - - File: :file:`electrons.irp.f` - - Numbers of alpha ("up") , beta ("down") and total electrons - - diff --git a/docs/source/modules/ezfio_files.rst b/docs/source/modules/ezfio_files.rst deleted file mode 100644 index 3562fd0e..00000000 --- a/docs/source/modules/ezfio_files.rst +++ /dev/null @@ -1,149 +0,0 @@ -.. _ezfio_files: - -.. program:: ezfio_files - -.. default-role:: option - -=========== -ezfio_files -=========== - -This modules essentially contains the name of the |EZFIO| directory in the -:c:data:`ezfio_filename` variable. This is read as the first argument of the -command-line, or as the :envvar:`QP_INPUT` environment variable. - - - - -Providers ---------- - - -.. c:var:: ezfio_filename - - .. code:: text - - character*(128) :: ezfio_filename - - File: :file:`ezfio.irp.f` - - Name of EZFIO file. It is obtained from the QPACKAGE_INPUT environment variable if it is set, or as the 1st argument of the command line. - - - - -.. c:var:: ezfio_work_dir - - .. code:: text - - character*(128) :: ezfio_work_dir - - File: :file:`ezfio.irp.f` - - EZFIO/work/ - - - - -.. c:var:: output_cpu_time_0 - - .. code:: text - - double precision :: output_wall_time_0 - double precision :: output_cpu_time_0 - - File: :file:`output.irp.f` - - Initial CPU and wall times when printing in the output files - - - - -.. c:var:: output_wall_time_0 - - .. code:: text - - double precision :: output_wall_time_0 - double precision :: output_cpu_time_0 - - File: :file:`output.irp.f` - - Initial CPU and wall times when printing in the output files - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: getunitandopen - - .. code:: text - - integer function getUnitAndOpen(f,mode) - - File: :file:`get_unit_and_open.irp.f` - - :f: file name - :mode: 'R' : READ, UNFORMATTED 'W' : WRITE, UNFORMATTED 'r' : READ, FORMATTED 'w' : WRITE, FORMATTED 'a' : APPEND, FORMATTED 'x' : READ/WRITE, FORMATTED - - - - - - -.. c:function:: write_bool - - .. code:: text - - subroutine write_bool(iunit,value,label) - - File: :file:`output.irp.f` - - Write an logical value in output - - - - - -.. c:function:: write_double - - .. code:: text - - subroutine write_double(iunit,value,label) - - File: :file:`output.irp.f` - - Write a double precision value in output - - - - - -.. c:function:: write_int - - .. code:: text - - subroutine write_int(iunit,value,label) - - File: :file:`output.irp.f` - - Write an integer value in output - - - - - -.. c:function:: write_time - - .. code:: text - - subroutine write_time(iunit) - - File: :file:`output.irp.f` - - Write a time stamp in the output for chronological reconstruction - - diff --git a/docs/source/modules/fci.rst b/docs/source/modules/fci.rst deleted file mode 100644 index 6f36b957..00000000 --- a/docs/source/modules/fci.rst +++ /dev/null @@ -1,935 +0,0 @@ -.. _fci: - -.. program:: fci - -.. default-role:: option - -=== -fci -=== - -Selected Full Configuration Interaction. - -The :command:`FCI` program starts with a single determinant, or with the wave -function in the |EZFIO| database if :option:`determinants read_wf` is |true|. -Then, it will iteratively: - -* Select the most important determinants from the external space and add them to the - internal space -* If :option:`determinants s2_eig` is |true|, add all the necessary - determinants to allow the eigenstates of |H| to be eigenstates of |S^2| -* Diagonalize |H| in the enlarged internal space -* Compute (stochastically) the second-order perturbative contribution to the energy -* Extrapolate the variational energy by fitting - :math:`E=E_\text{FCI} - \alpha\, E_\text{PT2}` - - -The number of selected determinants at each iteration will be such that the -size of the wave function will double at every iteration. If :option:`determinants -s2_eig` is |true|, then the number of selected determinants will be 1.5x the -current number, and then all the additional determinants will be added. - -By default, the program will stop when more than one million determinants have -been selected, or when the |PT2| energy is below :math:`10^{-4}`. - -The variational and |PT2| energies of the iterations are stored in the -|EZFIO| database, in the :ref:`IterativeSave` module. - - - -Computation of the |PT2| energy -------------------------------- - -At each iteration, the |PT2| energy is computed considering the Epstein-Nesbet -zeroth-order Hamiltonian: - -.. math:: - - E_{\text{PT2}} = \sum_{ \alpha } - \frac{|\langle \Psi_S | \hat{H} | \alpha \rangle|^2} - {E - \langle \alpha | \hat{H} | \alpha \rangle} - -where the |kalpha| determinants are generated by applying all the single and -double excitation operators to all the determinants of the wave function -:math:`\Psi_G`. - -When the hybrid-deterministic/stochastic algorithm is chosen -(default), :math:`Psi_G = \Psi_S = \Psi`, the full wavefunction expanded in the -internal space. -When the deterministic algorithm is chosen (:option:`perturbation do_pt2` -is set to |false|), :math:`Psi_G` is a truncation of |Psi| using -:option:`determinants threshold_generators`, and :math:`Psi_S` is a truncation -of |Psi| using :option:`determinants threshold_selectors`, and re-weighted -by :math:`1/\langle \Psi_s | \Psi_s \rangle`. - -At every iteration, while computing the |PT2|, the variance of the wave -function is also computed: - -.. math:: - - \sigma^2 & = \langle \Psi | \hat{H}^2 | \Psi \rangle - - \langle \Psi | \hat{H} | \Psi \rangle^2 \\ - & = \sum_{i \in \text{FCI}} - \langle \Psi | \hat{H} | i \rangle - \langle i | \hat{H} | \Psi \rangle - - \langle \Psi | \hat{H} | \Psi \rangle^2 \\ - & = \sum_{ \alpha } - \langle |\Psi | \hat{H} | \alpha \rangle|^2. - -The expression of the variance is the same as the expression of the |PT2|, with -a denominator of 1. It measures how far the wave function is from the |FCI| -solution. Note that the absence of denominator in the Heat-Bath selected |CI| -method is selection method by minimization of the variance, whereas |CIPSI| is -a selection method by minimization of the energy. - - -If :option:`perturbation do_pt2` is set to |false|, then the stochastic -|PT2| is not computed, and an approximate value is obtained from the |CIPSI| -selection. The calculation is faster, but the extrapolated |FCI| value is -less accurate. This way of running the code should be used when the only -goal is to generate a wave function, as for using |CIPSI| wave functions as -trial wave functions of |QMC| calculations for example. - - -The :command:`PT2` program reads the wave function of the |EZFIO| database -and computes the energy and the |PT2| contribution. - - -State-averaging ---------------- - -Extrapolated |FCI| energy -------------------------- - -An estimate of the |FCI| energy is computed by extrapolating - -.. math:: - - E=E_\text{FCI} - \alpha\, E_\text{PT2} - -This extrapolation is done for all the requested states, and excitation -energies are printed as energy differences between the extrapolated -energies of the excited states and the extrapolated energy of the ground -state. - -The extrapolations are given considering the 2 last points, the 3 last points, ..., -the 7 last points. The extrapolated value should be chosen such that the extrpolated -value is stable with the number of points. - - - - -EZFIO parameters ----------------- - -.. option:: energy - - Calculated Selected |FCI| energy - - -.. option:: energy_pt2 - - Calculated |FCI| energy + |PT2| - - - -Providers ---------- - - -.. c:var:: initialize_pt2_e0_denominator - - .. code:: text - - logical :: initialize_pt2_e0_denominator - - File: :file:`energy.irp.f` - - If true, initialize pt2_E0_denominator - - - - -.. c:var:: pt2_cw - - .. code:: text - - double precision, allocatable :: pt2_w (N_det_generators) - double precision, allocatable :: pt2_cw (0:N_det_generators) - double precision :: pt2_w_t - double precision :: pt2_u_0 - integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - -.. c:var:: pt2_e0_denominator - - .. code:: text - - double precision, allocatable :: pt2_e0_denominator (N_states) - - File: :file:`energy.irp.f` - - E0 in the denominator of the PT2 - - - - -.. c:var:: pt2_f - - .. code:: text - - integer, allocatable :: pt2_f (N_det_generators) - integer :: pt2_n_tasks_max - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - -.. c:var:: pt2_j - - .. code:: text - - integer, allocatable :: pt2_j (N_det_generators) - integer, allocatable :: pt2_r (N_det_generators) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - -.. c:var:: pt2_mindetinfirstteeth - - .. code:: text - - integer :: pt2_n_teeth - integer :: pt2_mindetinfirstteeth - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - -.. c:var:: pt2_n_0 - - .. code:: text - - double precision, allocatable :: pt2_w (N_det_generators) - double precision, allocatable :: pt2_cw (0:N_det_generators) - double precision :: pt2_w_t - double precision :: pt2_u_0 - integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - -.. c:var:: pt2_n_tasks - - .. code:: text - - integer :: pt2_n_tasks - - File: :file:`pt2_stoch_routines.irp.f` - - Number of parallel tasks for the Monte Carlo - - - - -.. c:var:: pt2_n_tasks_max - - .. code:: text - - integer, allocatable :: pt2_f (N_det_generators) - integer :: pt2_n_tasks_max - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - -.. c:var:: pt2_n_teeth - - .. code:: text - - integer :: pt2_n_teeth - integer :: pt2_mindetinfirstteeth - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - -.. c:var:: pt2_r - - .. code:: text - - integer, allocatable :: pt2_j (N_det_generators) - integer, allocatable :: pt2_r (N_det_generators) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - -.. c:var:: pt2_stoch_istate - - .. code:: text - - integer :: pt2_stoch_istate - - File: :file:`pt2_stoch_routines.irp.f` - - State for stochatsic PT2 - - - - -.. c:var:: pt2_u - - .. code:: text - - double precision, allocatable :: pt2_u (N_det_generators) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - -.. c:var:: pt2_u_0 - - .. code:: text - - double precision, allocatable :: pt2_w (N_det_generators) - double precision, allocatable :: pt2_cw (0:N_det_generators) - double precision :: pt2_w_t - double precision :: pt2_u_0 - integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - -.. c:var:: pt2_w - - .. code:: text - - double precision, allocatable :: pt2_w (N_det_generators) - double precision, allocatable :: pt2_cw (0:N_det_generators) - double precision :: pt2_w_t - double precision :: pt2_u_0 - integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - -.. c:var:: pt2_w_t - - .. code:: text - - double precision, allocatable :: pt2_w (N_det_generators) - double precision, allocatable :: pt2_cw (0:N_det_generators) - double precision :: pt2_w_t - double precision :: pt2_u_0 - integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: add_to_selection_buffer - - .. code:: text - - subroutine add_to_selection_buffer(b, det, val) - - File: :file:`selection_buffer.irp.f` - - - - - - - -.. c:function:: bitstring_to_list_in_selection - - .. code:: text - - subroutine bitstring_to_list_in_selection( string, list, n_elements, Nint) - - File: :file:`selection.irp.f` - - Gives the inidices(+1) of the bits set to 1 in the bit string - - - - - -.. c:function:: create_selection_buffer - - .. code:: text - - subroutine create_selection_buffer(N, siz_, res) - - File: :file:`selection_buffer.irp.f` - - - - - - - -.. c:function:: delete_selection_buffer - - .. code:: text - - subroutine delete_selection_buffer(b) - - File: :file:`selection_buffer.irp.f` - - - - - - - -.. c:function:: fci - - .. code:: text - - subroutine fci - - File: :file:`fci.irp.f` - - Selected Full Configuration Interaction. - - - - - -.. c:function:: fill_buffer_double - - .. code:: text - - subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_diag_tmp, E0, pt2, variance, norm, mat, buf) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: get_d0 - - .. code:: text - - subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: get_d1 - - .. code:: text - - subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: get_d2 - - .. code:: text - - subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: get_m0 - - .. code:: text - - subroutine get_m0(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: get_m1 - - .. code:: text - - subroutine get_m1(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: get_m2 - - .. code:: text - - subroutine get_m2(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: get_mask_phase - - .. code:: text - - subroutine get_mask_phase(det1, pm, Nint) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: get_phase_bi - - .. code:: text - - double precision function get_phase_bi(phasemask, s1, s2, h1, p1, h2, p2, Nint) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: make_selection_buffer_s2 - - .. code:: text - - subroutine make_selection_buffer_s2(b) - - File: :file:`selection_buffer.irp.f` - - - - - - - -.. c:function:: merge_selection_buffers - - .. code:: text - - subroutine merge_selection_buffers(b1, b2) - - File: :file:`selection_buffer.irp.f` - - Merges the selection buffers b1 and b2 into b2 - - - - - -.. c:function:: past_d1 - - .. code:: text - - subroutine past_d1(bannedOrb, p) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: past_d2 - - .. code:: text - - subroutine past_d2(banned, p, sp) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: pt2 - - .. code:: text - - subroutine pt2 - - File: :file:`pt2.irp.f` - - Second order perturbative correction to the wave function contained in the EZFIO directory. - - - - - -.. c:function:: pt2_collector - - .. code:: text - - subroutine pt2_collector(zmq_socket_pull, E, relative_error, pt2, error, variance, norm) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - - -.. c:function:: pt2_find_sample - - .. code:: text - - integer function pt2_find_sample(v, w) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - - -.. c:function:: pt2_find_sample_lr - - .. code:: text - - integer function pt2_find_sample_lr(v, w, l_in, r_in) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - - -.. c:function:: pt2_slave_inproc - - .. code:: text - - subroutine pt2_slave_inproc(i) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - - -.. c:function:: pull_pt2_results - - .. code:: text - - subroutine pull_pt2_results(zmq_socket_pull, index, pt2, variance, norm, task_id, n_tasks) - - File: :file:`run_pt2_slave.irp.f` - - - - - - - -.. c:function:: pull_selection_results - - .. code:: text - - subroutine pull_selection_results(zmq_socket_pull, pt2, variance, norm, val, det, N, task_id, ntask) - - File: :file:`run_selection_slave.irp.f` - - - - - - - -.. c:function:: push_pt2_results - - .. code:: text - - subroutine push_pt2_results(zmq_socket_push, index, pt2, variance, norm, task_id, n_tasks) - - File: :file:`run_pt2_slave.irp.f` - - - - - - - -.. c:function:: push_selection_results - - .. code:: text - - subroutine push_selection_results(zmq_socket_push, pt2, variance, norm, b, task_id, ntask) - - File: :file:`run_selection_slave.irp.f` - - - - - - - -.. c:function:: run - - .. code:: text - - subroutine run - - File: :file:`pt2.irp.f` - - - - - - - -.. c:function:: run_pt2_slave - - .. code:: text - - subroutine run_pt2_slave(thread,iproc,energy) - - File: :file:`run_pt2_slave.irp.f` - - - - - - - -.. c:function:: run_selection_slave - - .. code:: text - - subroutine run_selection_slave(thread,iproc,energy) - - File: :file:`run_selection_slave.irp.f` - - - - - - - -.. c:function:: select_connected - - .. code:: text - - subroutine select_connected(i_generator,E0,pt2,variance,norm,b,subset,csubset) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: select_singles_and_doubles - - .. code:: text - - subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,variance,norm,buf,subset,csubset) - - File: :file:`selection.irp.f` - - WARNING /!\ : It is assumed that the generators and selectors are psi_det_sorted - - - - - -.. c:function:: selection_collector - - .. code:: text - - subroutine selection_collector(zmq_socket_pull, b, N, pt2, variance, norm) - - File: :file:`zmq_selection.irp.f` - - - - - - - -.. c:function:: selection_slave_inproc - - .. code:: text - - subroutine selection_slave_inproc(i) - - File: :file:`zmq_selection.irp.f` - - - - - - - -.. c:function:: sort_selection_buffer - - .. code:: text - - subroutine sort_selection_buffer(b) - - File: :file:`selection_buffer.irp.f` - - - - - - - -.. c:function:: splash_pq - - .. code:: text - - subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: spot_isinwf - - .. code:: text - - subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting) - - File: :file:`selection.irp.f` - - - - - - - -.. c:function:: testteethbuilding - - .. code:: text - - logical function testTeethBuilding(minF, N) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - - -.. c:function:: zmq_pt2 - - .. code:: text - - subroutine ZMQ_pt2(E, pt2,relative_error, error, variance, norm) - - File: :file:`pt2_stoch_routines.irp.f` - - - - - - - -.. c:function:: zmq_selection - - .. code:: text - - subroutine ZMQ_selection(N_in, pt2, variance, norm) - - File: :file:`zmq_selection.irp.f` - - - - diff --git a/docs/source/modules/generators_cas.rst b/docs/source/modules/generators_cas.rst deleted file mode 100644 index a00b7a01..00000000 --- a/docs/source/modules/generators_cas.rst +++ /dev/null @@ -1,19 +0,0 @@ -.. _generators_cas: - -.. program:: generators_cas - -.. default-role:: option - -============== -generators_cas -============== - -Module defining the generator determinants as those belonging to a |CAS|. -The |MOs| belonging to the |CAS| are those which were set as active with -the :ref:`qp_set_mo_class` command. - -This module is intended to be included in the :file:`NEED` file to define -the generators as the |CAS| determinants, which can be useful to define post-CAS approaches (see cassd module for instance). - - - diff --git a/docs/source/modules/generators_full.rst b/docs/source/modules/generators_full.rst deleted file mode 100644 index 90b32a98..00000000 --- a/docs/source/modules/generators_full.rst +++ /dev/null @@ -1,145 +0,0 @@ -.. _generators_full: - -.. program:: generators_full - -.. default-role:: option - -=============== -generators_full -=============== - -Module defining the generator determinants as all the determinants of the -variational space. - -This module is intended to be included in the :file:`NEED` file to define -a full set of generators. - - - -Providers ---------- - - -.. c:var:: degree_max_generators - - .. code:: text - - integer :: degree_max_generators - - File: :file:`generators.irp.f` - - Max degree of excitation (respect to HF) of the generators - - - - -.. c:var:: n_det_generators - - .. code:: text - - integer :: n_det_generators - - File: :file:`generators.irp.f` - - For Single reference wave functions, the number of generators is 1 : the Hartree-Fock determinant - - - - -.. c:var:: psi_coef_generators - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_generators (psi_det_size,N_states) - - File: :file:`generators.irp.f` - - For Single reference wave functions, the generator is the Hartree-Fock determinant - - - - -.. c:var:: psi_coef_sorted_gen - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states) - integer, allocatable :: psi_det_sorted_gen_order (psi_det_size) - - File: :file:`generators.irp.f` - - For Single reference wave functions, the generator is the Hartree-Fock determinant - - - - -.. c:var:: psi_det_generators - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_generators (psi_det_size,N_states) - - File: :file:`generators.irp.f` - - For Single reference wave functions, the generator is the Hartree-Fock determinant - - - - -.. c:var:: psi_det_sorted_gen - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states) - integer, allocatable :: psi_det_sorted_gen_order (psi_det_size) - - File: :file:`generators.irp.f` - - For Single reference wave functions, the generator is the Hartree-Fock determinant - - - - -.. c:var:: psi_det_sorted_gen_order - - .. code:: text - - integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size) - double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states) - integer, allocatable :: psi_det_sorted_gen_order (psi_det_size) - - File: :file:`generators.irp.f` - - For Single reference wave functions, the generator is the Hartree-Fock determinant - - - - -.. c:var:: select_max - - .. code:: text - - double precision, allocatable :: select_max (size_select_max) - - File: :file:`generators.irp.f` - - Memo to skip useless selectors - - - - -.. c:var:: size_select_max - - .. code:: text - - integer :: size_select_max - - File: :file:`generators.irp.f` - - Size of the select_max array - - diff --git a/docs/source/modules/hartree_fock.rst b/docs/source/modules/hartree_fock.rst deleted file mode 100644 index 8610eecc..00000000 --- a/docs/source/modules/hartree_fock.rst +++ /dev/null @@ -1,209 +0,0 @@ -.. _hartree_fock: - -.. program:: hartree_fock - -.. default-role:: option - -============ -hartree_fock -============ - - -The Hartree-Fock module performs *Restricted* Hartree-Fock calculations (the -spatial part of the |MOs| is common for alpha and beta spinorbitals). - -The Hartree-Fock in an SCF and therefore is based on the ``scf_utils`` structure. -It performs the following actions: - -#. Compute/Read all the one- and two-electron integrals, and store them in memory -#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it - will read them as initial guess. Otherwise, it will create a guess. -#. Perform the |SCF| iterations - -The definition of the Fock matrix is in :file:`hartree_fock fock_matrix_hf.irp.f` -For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. -The main are: -# :option:`scf_utils thresh_scf` -# :option:`scf_utils level_shift` - -At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation -crashes for any unexpected reason, the calculation can be restarted by running again -the |SCF| with the same |EZFIO| database. - -The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. -If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. - -To start a calculation from scratch, the simplest way is to remove the -``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. - - - - -.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS -.. _level-shifting: https://doi.org/10.1002/qua.560070407 - - - - - - -EZFIO parameters ----------------- - -.. option:: energy - - Energy HF - - Default: 0. - - -Providers ---------- - - -.. c:var:: ao_bi_elec_integral_alpha - - .. code:: text - - double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num) - double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num) - - File: :file:`fock_matrix_hf.irp.f` - - Alpha Fock matrix in AO basis set - - - - -.. c:var:: ao_bi_elec_integral_beta - - .. code:: text - - double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num) - double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num) - - File: :file:`fock_matrix_hf.irp.f` - - Alpha Fock matrix in AO basis set - - - - -.. c:var:: extra_e_contrib_density - - .. code:: text - - double precision :: extra_e_contrib_density - - File: :file:`hf_energy.irp.f` - - Extra contribution to the SCF energy coming from the density. - For a Hartree-Fock calculation: extra_e_contrib_density = 0 - For a Kohn-Sham or Range-separated Kohn-Sham: the exchange/correlation - trace of the V_xc potential - - - - -.. c:var:: fock_matrix_ao_alpha - - .. code:: text - - double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num) - double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num) - - File: :file:`fock_matrix_hf.irp.f` - - Alpha Fock matrix in AO basis set - - - - -.. c:var:: fock_matrix_ao_beta - - .. code:: text - - double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num) - double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num) - - File: :file:`fock_matrix_hf.irp.f` - - Alpha Fock matrix in AO basis set - - - - -.. c:var:: hf_energy - - .. code:: text - - double precision :: hf_energy - double precision :: hf_two_electron_energy - double precision :: hf_one_electron_energy - - File: :file:`hf_energy.irp.f` - - Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. - - - - -.. c:var:: hf_one_electron_energy - - .. code:: text - - double precision :: hf_energy - double precision :: hf_two_electron_energy - double precision :: hf_one_electron_energy - - File: :file:`hf_energy.irp.f` - - Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. - - - - -.. c:var:: hf_two_electron_energy - - .. code:: text - - double precision :: hf_energy - double precision :: hf_two_electron_energy - double precision :: hf_one_electron_energy - - File: :file:`hf_energy.irp.f` - - Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: create_guess - - .. code:: text - - subroutine create_guess - - File: :file:`scf_old.irp.f` - - Create a MO guess if no MOs are present in the EZFIO directory - - - - - -.. c:function:: scf - - .. code:: text - - subroutine scf - - File: :file:`scf_old.irp.f` - - Produce `Hartree_Fock` MO orbital output: mo_basis.mo_tot_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: hartree_fock.energy optional: mo_basis.mo_coef - - diff --git a/docs/source/modules/iterations.rst b/docs/source/modules/iterations.rst deleted file mode 100644 index 0f192da4..00000000 --- a/docs/source/modules/iterations.rst +++ /dev/null @@ -1,114 +0,0 @@ -.. _iterations: - -.. program:: iterations - -.. default-role:: option - -========== -iterations -========== - -Module which saves the computed energies for an extrapolation to -the |FCI| limit. - - - -EZFIO parameters ----------------- - -.. option:: n_iter - - Number of saved iterations - - Default: 1 - -.. option:: n_det_iterations - - Number of determinants at each iteration - - -.. option:: energy_iterations - - The variational energy at each iteration - - -.. option:: pt2_iterations - - The |PT2| correction at each iteration - - - -Providers ---------- - - -.. c:var:: extrapolated_energy - - .. code:: text - - double precision, allocatable :: extrapolated_energy (N_iter,N_states) - - File: :file:`iterations.irp.f` - - Extrapolated energy, using E_var = f(PT2) where PT2=0 - - - - -.. c:var:: n_iter - - .. code:: text - - integer :: n_iter - - File: :file:`io.irp.f` - - number of iterations - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: print_extrapolated_energy - - .. code:: text - - subroutine print_extrapolated_energy(e_,pt2_) - - File: :file:`print_extrapolation.irp.f` - - Print the extrapolated energy in the output - - - - - -.. c:function:: print_summary - - .. code:: text - - subroutine print_summary(e_,pt2_,error_,variance_,norm_) - - File: :file:`print_summary.irp.f` - - Print the extrapolated energy in the output - - - - - -.. c:function:: save_iterations - - .. code:: text - - subroutine save_iterations(e_, pt2_,n_) - - File: :file:`iterations.irp.f` - - Update the energy in the EZFIO file. - - diff --git a/docs/source/modules/kohn_sham.rst b/docs/source/modules/kohn_sham.rst deleted file mode 100644 index d497f7a4..00000000 --- a/docs/source/modules/kohn_sham.rst +++ /dev/null @@ -1,68 +0,0 @@ -.. _kohn_sham: - -.. program:: kohn_sham - -.. default-role:: option - -========= -kohn_sham -========= - - -The Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the -spatial part of the |MOs| is common for alpha and beta spinorbitals). - -The Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure. -It performs the following actions: - -#. Compute/Read all the one- and two-electron integrals, and store them in memory -#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it - will read them as initial guess. Otherwise, it will create a guess. -#. Perform the |SCF| iterations - -The definition of the Fock matrix is in :file:`kohn_sham fock_matrix_ks.irp.f` -For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. -The main are: -# :option:`scf_utils thresh_scf` -# :option:`scf_utils level_shift` - -At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation -crashes for any unexpected reason, the calculation can be restarted by running again -the |SCF| with the same |EZFIO| database. - -The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. -If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. - -To start a calculation from scratch, the simplest way is to remove the -``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. - - - - -.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS -.. _level-shifting: https://doi.org/10.1002/qua.560070407 - - - - - - -Providers ---------- - - -.. c:var:: ks_energy - - .. code:: text - - double precision :: ks_energy - double precision :: two_electron_energy - double precision :: one_electron_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - File: :file:`ks_enery.irp.f` - - Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - diff --git a/docs/source/modules/kohn_sham_rs.rst b/docs/source/modules/kohn_sham_rs.rst deleted file mode 100644 index 58c89250..00000000 --- a/docs/source/modules/kohn_sham_rs.rst +++ /dev/null @@ -1,250 +0,0 @@ -.. _kohn_sham_rs: - -.. program:: kohn_sham_rs - -.. default-role:: option - -============ -kohn_sham_rs -============ - - -The Range-separated Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the -spatial part of the |MOs| is common for alpha and beta spinorbitals) where the coulomb interaction is partially treated using exact exchange. -The splitting of the interaction between long- and short-range is determined by the range-separation parameter :option:`ao_two_e_erf_integrals mu_erf`. The long-range part of the interaction is explicitly treated with exact exchange, and the short-range part of the interaction is treated with appropriate DFT functionals. - -The Range-separated Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure. -It performs the following actions: - -#. Compute/Read all the one- and two-electron integrals, and store them in memory -#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it - will read them as initial guess. Otherwise, it will create a guess. -#. Perform the |SCF| iterations - -The definition of the Fock matrix is in :file:`kohn_sham_rs fock_matrix_rs_ks.irp.f` -For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. -The main are: -# :option:`scf_utils thresh_scf` -# :option:`scf_utils level_shift` - - -At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation -crashes for any unexpected reason, the calculation can be restarted by running again -the |SCF| with the same |EZFIO| database. - -The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. -If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. - -To start a calculation from scratch, the simplest way is to remove the -``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. - - -.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS -.. _level-shifting: https://doi.org/10.1002/qua.560070407 - - - - - - -Providers ---------- - - -.. c:var:: ao_potential_alpha_xc - - .. code:: text - - double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num) - double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num) - - File: :file:`pot_functionals.irp.f` - - - - - - -.. c:var:: ao_potential_beta_xc - - .. code:: text - - double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num) - double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num) - - File: :file:`pot_functionals.irp.f` - - - - - - -.. c:var:: e_correlation_dft - - .. code:: text - - double precision :: e_correlation_dft - - File: :file:`pot_functionals.irp.f` - - - - - - -.. c:var:: e_exchange_dft - - .. code:: text - - double precision :: e_exchange_dft - - File: :file:`pot_functionals.irp.f` - - - - - - -.. c:var:: fock_matrix_alpha_no_xc_ao - - .. code:: text - - double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num) - double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num) - - File: :file:`fock_matrix_rs_ks.irp.f` - - Mono electronic an Coulomb matrix in AO basis set - - - - -.. c:var:: fock_matrix_beta_no_xc_ao - - .. code:: text - - double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num) - double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num) - - File: :file:`fock_matrix_rs_ks.irp.f` - - Mono electronic an Coulomb matrix in AO basis set - - - - -.. c:var:: fock_matrix_energy - - .. code:: text - - double precision :: rs_ks_energy - double precision :: two_electron_energy - double precision :: one_electron_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - File: :file:`rs_ks_energy.irp.f` - - Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - - - -.. c:var:: one_electron_energy - - .. code:: text - - double precision :: rs_ks_energy - double precision :: two_electron_energy - double precision :: one_electron_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - File: :file:`rs_ks_energy.irp.f` - - Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - - - -.. c:var:: rs_ks_energy - - .. code:: text - - double precision :: rs_ks_energy - double precision :: two_electron_energy - double precision :: one_electron_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - File: :file:`rs_ks_energy.irp.f` - - Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - - - -.. c:var:: trace_potential_xc - - .. code:: text - - double precision :: rs_ks_energy - double precision :: two_electron_energy - double precision :: one_electron_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - File: :file:`rs_ks_energy.irp.f` - - Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - - - -.. c:var:: two_electron_energy - - .. code:: text - - double precision :: rs_ks_energy - double precision :: two_electron_energy - double precision :: one_electron_energy - double precision :: fock_matrix_energy - double precision :: trace_potential_xc - - File: :file:`rs_ks_energy.irp.f` - - Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: check_coherence_functional - - .. code:: text - - subroutine check_coherence_functional - - File: :file:`rs_ks_scf.irp.f` - - - - - - - -.. c:function:: srs_ks_cf - - .. code:: text - - subroutine srs_ks_cf - - File: :file:`rs_ks_scf.irp.f` - - Produce `Range_separated_Kohn_Sham` MO orbital output: mo_basis.mo_tot_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: kohn_sham.energy optional: mo_basis.mo_coef - - diff --git a/docs/source/modules/mo_basis.rst b/docs/source/modules/mo_basis.rst deleted file mode 100644 index 440060b7..00000000 --- a/docs/source/modules/mo_basis.rst +++ /dev/null @@ -1,367 +0,0 @@ -.. _mo_basis: - -.. program:: mo_basis - -.. default-role:: option - -======== -mo_basis -======== - -Molecular orbitals are expressed as - -.. math:: - - \phi_k({\bf r}) = \sum_i C_{ik} \chi_k({\bf r}) - - -where :math:`\chi_k` are *normalized* atomic basis functions. - -The current set of |MOs| has a label `mo_label`. -When the orbitals are modified, the label should also be updated to keep -everything consistent. - -When saving the |MOs|, the :file:`mo_basis` directory of the |EZFIO| database -is copied in the :file:`save` directory, named by the current `mo_label`. All -this is done with the script named :file:`save_current_mos.sh` in the -:file:`$QP_ROOT/scripts` directory. - - - - - - -EZFIO parameters ----------------- - -.. option:: mo_tot_num - - Total number of |MOs| - - -.. option:: mo_coef - - Coefficient of the i-th |AO| on the j-th |MO| - - -.. option:: mo_label - - Label characterizing the MOS (Local, Canonical, Natural, *etc*) - - -.. option:: mo_occ - - |MO| occupation numbers - - -.. option:: mo_class - - [ Core | Inactive | Active | Virtual | Deleted ], as defined by :ref:`qp_set_mo_class` - - -.. option:: ao_md5 - - MD5 checksum characterizing the |AO| basis set. - - - -Providers ---------- - - -.. c:var:: mo_coef - - .. code:: text - - double precision, allocatable :: mo_coef (ao_num,mo_tot_num) - - File: :file:`mos.irp.f` - - Molecular orbital coefficients on AO basis set mo_coef(i,j) = coefficient of the ith ao on the jth mo mo_label : Label characterizing the MOS (local, canonical, natural, etc) - - - - -.. c:var:: mo_coef_begin_iteration - - .. code:: text - - double precision, allocatable :: mo_coef_begin_iteration (ao_num,mo_tot_num) - - File: :file:`track_orb.irp.f` - - Void provider to store the coefficients of the |MO| basis at the beginning of the SCF iteration - Usefull to track some orbitals - - - - -.. c:var:: mo_coef_in_ao_ortho_basis - - .. code:: text - - double precision, allocatable :: mo_coef_in_ao_ortho_basis (ao_num,mo_tot_num) - - File: :file:`mos.irp.f` - - MO coefficients in orthogonalized AO basis - C^(-1).C_mo - - - - -.. c:var:: mo_coef_transp - - .. code:: text - - double precision, allocatable :: mo_coef_transp (mo_tot_num,ao_num) - - File: :file:`mos.irp.f` - - Molecular orbital coefficients on AO basis set - - - - -.. c:var:: mo_label - - .. code:: text - - character*(64) :: mo_label - - File: :file:`mos.irp.f` - - Molecular orbital coefficients on AO basis set mo_coef(i,j) = coefficient of the ith ao on the jth mo mo_label : Label characterizing the MOS (local, canonical, natural, etc) - - - - -.. c:var:: mo_num - - .. code:: text - - integer :: mo_num - - File: :file:`mos.irp.f` - - mo_tot_num without the highest deleted MOs - - - - -.. c:var:: mo_occ - - .. code:: text - - double precision, allocatable :: mo_occ (mo_tot_num) - - File: :file:`mos.irp.f` - - MO occupation numbers - - - - -.. c:var:: mo_tot_num - - .. code:: text - - integer :: mo_tot_num - - File: :file:`mos.irp.f` - - Number of MOs - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: ao_ortho_cano_to_ao - - .. code:: text - - subroutine ao_ortho_cano_to_ao(A_ao,LDA_ao,A,LDA) - - File: :file:`mos.irp.f` - - Transform A from the AO basis to the orthogonal AO basis - C^(-1).A_ao.Ct^(-1) - - - - - -.. c:function:: ao_to_mo - - .. code:: text - - subroutine ao_to_mo(A_ao,LDA_ao,A_mo,LDA_mo) - - File: :file:`mos.irp.f` - - Transform A from the AO basis to the MO basis - Ct.A_ao.C - - - - - -.. c:function:: give_all_mos_and_grad_and_lapl_at_r - - .. code:: text - - subroutine give_all_mos_and_grad_and_lapl_at_r(r,mos_array,mos_grad_array,mos_lapl_array) - - File: :file:`mos_in_r.irp.f` - - - - - - - -.. c:function:: give_all_mos_and_grad_at_r - - .. code:: text - - subroutine give_all_mos_and_grad_at_r(r,mos_array,mos_grad_array) - - File: :file:`mos_in_r.irp.f` - - - - - - - -.. c:function:: give_all_mos_at_r - - .. code:: text - - subroutine give_all_mos_at_r(r,mos_array) - - File: :file:`mos_in_r.irp.f` - - - - - - - -.. c:function:: initialize_mo_coef_begin_iteration - - .. code:: text - - subroutine initialize_mo_coef_begin_iteration - - File: :file:`track_orb.irp.f` - - - Initialize :c:data:`mo_coef_begin_iteration` to the current :c:data:`mo_coef` - - - - - -.. c:function:: mix_mo_jk - - .. code:: text - - subroutine mix_mo_jk(j,k) - - File: :file:`mos.irp.f` - - Rotates the jth MO with the kth MO to give two new MO's that are - '+' = 1/sqrt(2) (|j> + |k>) - '-' = 1/sqrt(2) (|j> - |k>) - by convention, the '+' MO is in the lower index (min(j,k)) by convention, the '-' MO is in the larger index (max(j,k)) - - - - - -.. c:function:: mo_as_eigvectors_of_mo_matrix - - .. code:: text - - subroutine mo_as_eigvectors_of_mo_matrix(matrix,n,m,label,sign,output) - - File: :file:`utils.irp.f` - - - - - - - -.. c:function:: mo_as_svd_vectors_of_mo_matrix - - .. code:: text - - subroutine mo_as_svd_vectors_of_mo_matrix(matrix,lda,m,n,label) - - File: :file:`utils.irp.f` - - - - - - - -.. c:function:: mo_as_svd_vectors_of_mo_matrix_eig - - .. code:: text - - subroutine mo_as_svd_vectors_of_mo_matrix_eig(matrix,lda,m,n,eig,label) - - File: :file:`utils.irp.f` - - - - - - - -.. c:function:: reorder_active_orb - - .. code:: text - - subroutine reorder_active_orb - - File: :file:`track_orb.irp.f` - - routines that takes the current :c:data:`mo_coef` and reorder the active orbitals (see :c:data:`list_act` and :c:data:`n_act_orb`) according to the overlap with :c:data:`mo_coef_begin_iteration` - - - - - -.. c:function:: save_mos - - .. code:: text - - subroutine save_mos - - File: :file:`utils.irp.f` - - - - - - - -.. c:function:: save_mos_truncated - - .. code:: text - - subroutine save_mos_truncated(n) - - File: :file:`utils.irp.f` - - - - diff --git a/docs/source/modules/mo_guess.rst b/docs/source/modules/mo_guess.rst deleted file mode 100644 index db368467..00000000 --- a/docs/source/modules/mo_guess.rst +++ /dev/null @@ -1,87 +0,0 @@ -.. _mo_guess: - -.. program:: mo_guess - -.. default-role:: option - -======== -mo_guess -======== - -Guess for |MOs|. - - - - -Providers ---------- - - -.. c:var:: ao_ortho_canonical_nucl_elec_integral - - .. code:: text - - double precision, allocatable :: ao_ortho_canonical_nucl_elec_integral (mo_tot_num,mo_tot_num) - - File: :file:`pot_mo_ortho_canonical_ints.irp.f` - - - - - - -.. c:var:: ao_ortho_lowdin_coef - - .. code:: text - - double precision, allocatable :: ao_ortho_lowdin_coef (ao_num,ao_num) - - File: :file:`mo_ortho_lowdin.irp.f` - - matrix of the coefficients of the mos generated by the orthonormalization by the S^{-1/2} canonical transformation of the aos ao_ortho_lowdin_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_lowdin orbital - - - - -.. c:var:: ao_ortho_lowdin_nucl_elec_integral - - .. code:: text - - double precision, allocatable :: ao_ortho_lowdin_nucl_elec_integral (mo_tot_num,mo_tot_num) - - File: :file:`pot_mo_ortho_lowdin_ints.irp.f` - - - - - - -.. c:var:: ao_ortho_lowdin_overlap - - .. code:: text - - double precision, allocatable :: ao_ortho_lowdin_overlap (ao_num,ao_num) - - File: :file:`mo_ortho_lowdin.irp.f` - - overlap matrix of the ao_ortho_lowdin supposed to be the Identity - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: hcore_guess - - .. code:: text - - subroutine hcore_guess - - File: :file:`h_core_guess_routine.irp.f` - - Produce `H_core` MO orbital - - diff --git a/docs/source/modules/mo_one_e_integrals.rst b/docs/source/modules/mo_one_e_integrals.rst deleted file mode 100644 index d4e14b41..00000000 --- a/docs/source/modules/mo_one_e_integrals.rst +++ /dev/null @@ -1,291 +0,0 @@ -.. _mo_one_e_integrals: - -.. program:: mo_one_e_integrals - -.. default-role:: option - -================== -mo_one_e_integrals -================== - -All the one-electron integrals in |MO| basis are defined here. - -The most important providers for usual quantum-chemistry calculation are: - -# `mo_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`) -# `mo_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`) -# `mo_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`) - -Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`. - - - -EZFIO parameters ----------------- - -.. option:: integral_nuclear - - Nucleus-electron integrals in |MO| basis set - - -.. option:: integral_kinetic - - Kinetic energy integrals in |MO| basis set - - -.. option:: integral_pseudo - - Pseudopotential integrals in |MO| basis set - - -.. option:: disk_access_mo_one_integrals - - Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ] - - Default: None - - -Providers ---------- - - -.. c:var:: mo_dipole_x - - .. code:: text - - double precision, allocatable :: mo_dipole_x (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_dipole_y (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_dipole_z (mo_tot_num,mo_tot_num) - - File: :file:`spread_dipole_mo.irp.f` - - array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j array of the integrals of MO_i * z MO_j - - - - -.. c:var:: mo_dipole_y - - .. code:: text - - double precision, allocatable :: mo_dipole_x (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_dipole_y (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_dipole_z (mo_tot_num,mo_tot_num) - - File: :file:`spread_dipole_mo.irp.f` - - array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j array of the integrals of MO_i * z MO_j - - - - -.. c:var:: mo_dipole_z - - .. code:: text - - double precision, allocatable :: mo_dipole_x (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_dipole_y (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_dipole_z (mo_tot_num,mo_tot_num) - - File: :file:`spread_dipole_mo.irp.f` - - array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j array of the integrals of MO_i * z MO_j - - - - -.. c:var:: mo_kinetic_integral - - .. code:: text - - double precision, allocatable :: mo_kinetic_integral (mo_tot_num,mo_tot_num) - - File: :file:`kin_mo_ints.irp.f` - - Kinetic energy integrals in the MO basis - - - - -.. c:var:: mo_mono_elec_integral - - .. code:: text - - double precision, allocatable :: mo_mono_elec_integral (mo_tot_num,mo_tot_num) - - File: :file:`mo_mono_ints.irp.f` - - array of the mono electronic hamiltonian on the MOs basis : sum of the kinetic and nuclear electronic potential (and pseudo potential if needed) - - - - -.. c:var:: mo_nucl_elec_integral - - .. code:: text - - double precision, allocatable :: mo_nucl_elec_integral (mo_tot_num,mo_tot_num) - - File: :file:`pot_mo_ints.irp.f` - - interaction nuclear electron on the MO basis - - - - -.. c:var:: mo_nucl_elec_integral_per_atom - - .. code:: text - - double precision, allocatable :: mo_nucl_elec_integral_per_atom (mo_tot_num,mo_tot_num,nucl_num) - - File: :file:`pot_mo_ints.irp.f` - - mo_nucl_elec_integral_per_atom(i,j,k) = - where Rk is the geometry of the kth atom - - - - -.. c:var:: mo_overlap - - .. code:: text - - double precision, allocatable :: mo_overlap (mo_tot_num,mo_tot_num) - - File: :file:`mo_overlap.irp.f` - - - - - - -.. c:var:: mo_pseudo_integral - - .. code:: text - - double precision, allocatable :: mo_pseudo_integral (mo_tot_num,mo_tot_num) - - File: :file:`pot_mo_pseudo_ints.irp.f` - - interaction nuclear electron on the MO basis - - - - -.. c:var:: mo_spread_x - - .. code:: text - - double precision, allocatable :: mo_spread_x (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_spread_y (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_spread_z (mo_tot_num,mo_tot_num) - - File: :file:`spread_dipole_mo.irp.f` - - array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j - - - - -.. c:var:: mo_spread_y - - .. code:: text - - double precision, allocatable :: mo_spread_x (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_spread_y (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_spread_z (mo_tot_num,mo_tot_num) - - File: :file:`spread_dipole_mo.irp.f` - - array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j - - - - -.. c:var:: mo_spread_z - - .. code:: text - - double precision, allocatable :: mo_spread_x (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_spread_y (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_spread_z (mo_tot_num,mo_tot_num) - - File: :file:`spread_dipole_mo.irp.f` - - array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j - - - - -.. c:var:: read_mo_one_integrals - - .. code:: text - - logical :: read_mo_one_integrals - logical :: write_mo_one_integrals - - File: :file:`read_write.irp.f` - - One level of abstraction for disk_access_mo_integrals - - - - -.. c:var:: s_mo_coef - - .. code:: text - - double precision, allocatable :: s_mo_coef (ao_num,mo_tot_num) - - File: :file:`ao_to_mo.irp.f` - - Product S.C where S is the overlap matrix in the AO basis and C the mo_coef matrix. - - - - -.. c:var:: write_mo_one_integrals - - .. code:: text - - logical :: read_mo_one_integrals - logical :: write_mo_one_integrals - - File: :file:`read_write.irp.f` - - One level of abstraction for disk_access_mo_integrals - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: mo_to_ao - - .. code:: text - - subroutine mo_to_ao(A_mo,LDA_mo,A_ao,LDA_ao) - - File: :file:`ao_to_mo.irp.f` - - Transform A from the MO basis to the AO basis - (S.C).A_mo.(S.C)t - - - - - -.. c:function:: orthonormalize_mos - - .. code:: text - - subroutine orthonormalize_mos - - File: :file:`orthonormalize.irp.f` - - - - diff --git a/docs/source/modules/mo_two_e_erf_integrals.rst b/docs/source/modules/mo_two_e_erf_integrals.rst deleted file mode 100644 index 6760ca53..00000000 --- a/docs/source/modules/mo_two_e_erf_integrals.rst +++ /dev/null @@ -1,510 +0,0 @@ -.. _mo_two_e_erf_integrals: - -.. program:: mo_two_e_erf_integrals - -.. default-role:: option - -====================== -mo_two_e_erf_integrals -====================== - -Here, all two-electron integrals (:math:`erf({\mu}_{erf} * r_{12})/r_{12}`) are computed. -As they have 4 indices and many are zero, they are stored in a map, as defined -in :file:`Utils/map_module.f90`. - -The range separation parameter :math:`{\mu}_{erf}` is the variable :option:`ao_two_e_erf_integrals mu_erf`. - -To fetch an |MO| integral, use -`get_mo_bielec_integral_erf(i,j,k,l,mo_integrals_map_erf)` - -The conventions are: - -* For |MO| integrals : = <12|12> - -Be aware that it might not be the same conventions for |MO| and |AO| integrals. - - - - - -EZFIO parameters ----------------- - -.. option:: disk_access_mo_integrals_erf - - Read/Write MO integrals with the long range interaction from/to disk [ Write | Read | None ] - - Default: None - - -Providers ---------- - - -.. c:var:: core_energy_erf - - .. code:: text - - double precision :: core_energy_erf - - File: :file:`core_quantities_erf.irp.f` - - energy from the core : contains all core-core contributionswith the erf interaction - - - - -.. c:var:: core_fock_operator_erf - - .. code:: text - - double precision, allocatable :: core_fock_operator_erf (mo_tot_num,mo_tot_num) - - File: :file:`core_quantities_erf.irp.f` - - this is the contribution to the Fock operator from the core electrons with the erf interaction - - - - -.. c:var:: insert_into_mo_integrals_erf_map - - .. code:: text - - subroutine insert_into_mo_integrals_erf_map(n_integrals, & - buffer_i, buffer_values, thr) - - File: :file:`map_integrals_erf.irp.f` - - Create new entry into MO map, or accumulate in an existing entry - - - - -.. c:var:: int_erf_3_index - - .. code:: text - - double precision, allocatable :: int_erf_3_index (mo_tot_num,mo_tot_num,mo_tot_num) - double precision, allocatable :: int_erf_3_index_exc (mo_tot_num,mo_tot_num,mo_tot_num) - - File: :file:`ints_erf_3_index.irp.f` - - int_erf_3_index(i,j) = = (ii|jj) with the erf interaction - int_erf_3_index_exc(i,j) = = (ij|ij) with the erf interaction - - - - -.. c:var:: int_erf_3_index_exc - - .. code:: text - - double precision, allocatable :: int_erf_3_index (mo_tot_num,mo_tot_num,mo_tot_num) - double precision, allocatable :: int_erf_3_index_exc (mo_tot_num,mo_tot_num,mo_tot_num) - - File: :file:`ints_erf_3_index.irp.f` - - int_erf_3_index(i,j) = = (ii|jj) with the erf interaction - int_erf_3_index_exc(i,j) = = (ij|ij) with the erf interaction - - - - -.. c:var:: mo_bielec_integrals_erf_in_map - - .. code:: text - - logical :: mo_bielec_integrals_erf_in_map - - File: :file:`mo_bi_integrals_erf.irp.f` - - If True, the map of MO bielectronic integrals is provided - - - - -.. c:var:: mo_integrals_erf_cache - - .. code:: text - - double precision, allocatable :: mo_integrals_erf_cache (0:64*64*64*64) - - File: :file:`map_integrals_erf.irp.f` - - Cache of MO integrals for fast access - - - - -.. c:var:: mo_integrals_erf_cache_max - - .. code:: text - - integer :: mo_integrals_erf_cache_min - integer :: mo_integrals_erf_cache_max - - File: :file:`map_integrals_erf.irp.f` - - Min and max values of the MOs for which the integrals are in the cache - - - - -.. c:var:: mo_integrals_erf_cache_min - - .. code:: text - - integer :: mo_integrals_erf_cache_min - integer :: mo_integrals_erf_cache_max - - File: :file:`map_integrals_erf.irp.f` - - Min and max values of the MOs for which the integrals are in the cache - - - - -.. c:var:: mo_integrals_erf_map - - .. code:: text - - type(map_type) :: mo_integrals_erf_map - - File: :file:`map_integrals_erf.irp.f` - - MO integrals - - - - -.. c:var:: mo_two_e_int_erf_jj - - .. code:: text - - double precision, allocatable :: mo_two_e_int_erf_jj (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals_erf.irp.f` - - mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij - - - - -.. c:var:: mo_two_e_int_erf_jj_anti - - .. code:: text - - double precision, allocatable :: mo_two_e_int_erf_jj (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals_erf.irp.f` - - mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij - - - - -.. c:var:: mo_two_e_int_erf_jj_anti_from_ao - - .. code:: text - - double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals_erf.irp.f` - - mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij - - - - -.. c:var:: mo_two_e_int_erf_jj_exchange - - .. code:: text - - double precision, allocatable :: mo_two_e_int_erf_jj (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals_erf.irp.f` - - mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij - - - - -.. c:var:: mo_two_e_int_erf_jj_exchange_from_ao - - .. code:: text - - double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals_erf.irp.f` - - mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij - - - - -.. c:var:: mo_two_e_int_erf_jj_from_ao - - .. code:: text - - double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals_erf.irp.f` - - mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij - - - - -.. c:var:: read_mo_integrals_erf - - .. code:: text - - logical :: read_mo_integrals_erf - logical :: write_mo_integrals_erf - - File: :file:`read_write_erf.irp.f` - - Flag to read or write the |MO| erf integrals - - - - -.. c:var:: write_mo_integrals_erf - - .. code:: text - - logical :: read_mo_integrals_erf - logical :: write_mo_integrals_erf - - File: :file:`read_write_erf.irp.f` - - Flag to read or write the |MO| erf integrals - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: add_integrals_to_map_erf - - .. code:: text - - subroutine add_integrals_to_map_erf(mask_ijkl) - - File: :file:`mo_bi_integrals_erf.irp.f` - - Adds integrals to tha MO map according to some bitmask - - - - - -.. c:function:: clear_mo_erf_map - - .. code:: text - - subroutine clear_mo_erf_map - - File: :file:`mo_bi_integrals_erf.irp.f` - - Frees the memory of the MO map - - - - - -.. c:function:: get_mo_bielec_integral_erf - - .. code:: text - - double precision function get_mo_bielec_integral_erf(i,j,k,l,map) - - File: :file:`map_integrals_erf.irp.f` - - Returns one integral in the MO basis - - - - - -.. c:function:: get_mo_bielec_integrals_erf - - .. code:: text - - subroutine get_mo_bielec_integrals_erf(j,k,l,sze,out_val,map) - - File: :file:`map_integrals_erf.irp.f` - - Returns multiple integrals in the MO basis, all i for j,k,l fixed. - - - - - -.. c:function:: get_mo_bielec_integrals_erf_coulomb_ii - - .. code:: text - - subroutine get_mo_bielec_integrals_erf_coulomb_ii(k,l,sze,out_val,map) - - File: :file:`map_integrals_erf.irp.f` - - Returns multiple integrals k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) for k,l fixed. - - - - - -.. c:function:: get_mo_bielec_integrals_erf_exch_ii - - .. code:: text - - subroutine get_mo_bielec_integrals_erf_exch_ii(k,l,sze,out_val,map) - - File: :file:`map_integrals_erf.irp.f` - - Returns multiple integrals k(1)i(2) 1/r12 i(1)l(2) :: out_val(i1) for k,l fixed. - - - - - -.. c:function:: get_mo_bielec_integrals_erf_i1j1 - - .. code:: text - - subroutine get_mo_bielec_integrals_erf_i1j1(k,l,sze,out_array,map) - - File: :file:`map_integrals_erf.irp.f` - - Returns multiple integrals in the MO basis, all i(1)j(1) erf(mu_erf * r12) /r12 k(2)l(2) i, j for k,l fixed. - - - - - -.. c:function:: get_mo_bielec_integrals_erf_ij - - .. code:: text - - subroutine get_mo_bielec_integrals_erf_ij(k,l,sze,out_array,map) - - File: :file:`map_integrals_erf.irp.f` - - Returns multiple integrals in the MO basis, all i(1)j(2) 1/r12 k(1)l(2) i, j for k,l fixed. - - - - - -.. c:function:: get_mo_erf_map_size - - .. code:: text - - integer*8 function get_mo_erf_map_size() - - File: :file:`map_integrals_erf.irp.f` - - Return the number of elements in the MO map - - - - - -.. c:function:: load_mo_integrals_erf - - .. code:: text - - integer function load_mo_integrals_erf(filename) - - File: :file:`map_integrals_erf.irp.f` - - Read from disk the $ao integrals - - - - - -.. c:function:: mo_bielec_integral_erf - - .. code:: text - - double precision function mo_bielec_integral_erf(i,j,k,l) - - File: :file:`map_integrals_erf.irp.f` - - Returns one integral in the MO basis - - - - - -.. c:function:: mo_bielec_integrals_erf_index - - .. code:: text - - subroutine mo_bielec_integrals_erf_index(i,j,k,l,i1) - - File: :file:`mo_bi_integrals_erf.irp.f` - - Computes an unique index for i,j,k,l integrals - - - - - -.. c:function:: provide_all_mo_integrals_erf - - .. code:: text - - subroutine provide_all_mo_integrals_erf - - File: :file:`mo_bi_integrals_erf.irp.f` - - - - - - - -.. c:function:: save_erf_bi_elec_integrals_mo - - .. code:: text - - subroutine save_erf_bi_elec_integrals_mo - - File: :file:`routines_save_integrals_erf.irp.f` - - - - - - - -.. c:function:: save_erf_bielec_ints_mo_into_ints_mo - - .. code:: text - - subroutine save_erf_bielec_ints_mo_into_ints_mo - - File: :file:`routines_save_integrals_erf.irp.f` - - - - diff --git a/docs/source/modules/mo_two_e_integrals.rst b/docs/source/modules/mo_two_e_integrals.rst deleted file mode 100644 index 5d159068..00000000 --- a/docs/source/modules/mo_two_e_integrals.rst +++ /dev/null @@ -1,616 +0,0 @@ -.. _mo_two_e_integrals: - -.. program:: mo_two_e_integrals - -.. default-role:: option - -================== -mo_two_e_integrals -================== - -Here, all two-electron integrals (:math:`1/r_{12}`) are computed. -As they have 4 indices and many are zero, they are stored in a map, as defined -in :file:`Utils/map_module.f90`. - -To fetch an |AO| integral, use the -`get_ao_bielec_integral(i,j,k,l,ao_integrals_map)` function, and -to fetch an |MO| integral, use -`get_mo_bielec_integral(i,j,k,l,mo_integrals_map)` or -`mo_bielec_integral(i,j,k,l)`. - -The conventions are: - -* For |AO| integrals : (ik|jl) = (11|22) -* For |MO| integrals : = <12|12> - - - - - - -EZFIO parameters ----------------- - -.. option:: disk_access_mo_integrals - - Read/Write |MO| integrals from/to disk [ Write | Read | None ] - - Default: None - -.. option:: mo_integrals_threshold - - If | | < `mo_integrals_threshold` then is zero - - Default: 1.e-15 - -.. option:: no_vvvv_integrals - - If `True`, computes all integrals except for the integrals having 4 virtual indices - - Default: False - -.. option:: no_ivvv_integrals - - Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual indices and 1 belonging to the core inactive active orbitals - - Default: False - -.. option:: no_vvv_integrals - - Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual orbitals - - Default: False - - -Providers ---------- - - -.. c:var:: big_array_coulomb_integrals - - .. code:: text - - double precision, allocatable :: big_array_coulomb_integrals (mo_tot_num,mo_tot_num,mo_tot_num) - double precision, allocatable :: big_array_exchange_integrals (mo_tot_num,mo_tot_num,mo_tot_num) - - File: :file:`integrals_3_index.irp.f` - - big_array_coulomb_integrals(i,j) = = (ii|jj) - big_array_exchange_integrals(i,j) = = (ij|ij) - - - - -.. c:var:: big_array_exchange_integrals - - .. code:: text - - double precision, allocatable :: big_array_coulomb_integrals (mo_tot_num,mo_tot_num,mo_tot_num) - double precision, allocatable :: big_array_exchange_integrals (mo_tot_num,mo_tot_num,mo_tot_num) - - File: :file:`integrals_3_index.irp.f` - - big_array_coulomb_integrals(i,j) = = (ii|jj) - big_array_exchange_integrals(i,j) = = (ij|ij) - - - - -.. c:var:: core_energy - - .. code:: text - - double precision :: core_energy - - File: :file:`core_quantities.irp.f` - - energy from the core : contains all core-core contributions - - - - -.. c:var:: core_fock_operator - - .. code:: text - - double precision, allocatable :: core_fock_operator (mo_tot_num,mo_tot_num) - - File: :file:`core_quantities.irp.f` - - this is the contribution to the Fock operator from the core electrons - - - - -.. c:var:: insert_into_mo_integrals_map - - .. code:: text - - subroutine insert_into_mo_integrals_map(n_integrals, & - buffer_i, buffer_values, thr) - - File: :file:`map_integrals.irp.f` - - Create new entry into MO map, or accumulate in an existing entry - - - - -.. c:var:: mo_bielec_integral_jj - - .. code:: text - - double precision, allocatable :: mo_bielec_integral_jj (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_jj_exchange (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_jj_anti (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals.irp.f` - - mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij - - - - -.. c:var:: mo_bielec_integral_jj_anti - - .. code:: text - - double precision, allocatable :: mo_bielec_integral_jj (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_jj_exchange (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_jj_anti (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals.irp.f` - - mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij - - - - -.. c:var:: mo_bielec_integral_jj_anti_from_ao - - .. code:: text - - double precision, allocatable :: mo_bielec_integral_jj_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_jj_exchange_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_jj_anti_from_ao (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals.irp.f` - - mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij - - - - -.. c:var:: mo_bielec_integral_jj_exchange - - .. code:: text - - double precision, allocatable :: mo_bielec_integral_jj (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_jj_exchange (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_jj_anti (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals.irp.f` - - mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij - - - - -.. c:var:: mo_bielec_integral_jj_exchange_from_ao - - .. code:: text - - double precision, allocatable :: mo_bielec_integral_jj_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_jj_exchange_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_jj_anti_from_ao (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals.irp.f` - - mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij - - - - -.. c:var:: mo_bielec_integral_jj_from_ao - - .. code:: text - - double precision, allocatable :: mo_bielec_integral_jj_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_jj_exchange_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_jj_anti_from_ao (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals.irp.f` - - mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij - - - - -.. c:var:: mo_bielec_integral_vv_anti_from_ao - - .. code:: text - - double precision, allocatable :: mo_bielec_integral_vv_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_vv_exchange_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_vv_anti_from_ao (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals.irp.f` - - mo_bielec_integral_vv_from_ao(i,j) = J_ij mo_bielec_integral_vv_exchange_from_ao(i,j) = J_ij mo_bielec_integral_vv_anti_from_ao(i,j) = J_ij - K_ij but only for the virtual orbitals - - - - -.. c:var:: mo_bielec_integral_vv_exchange_from_ao - - .. code:: text - - double precision, allocatable :: mo_bielec_integral_vv_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_vv_exchange_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_vv_anti_from_ao (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals.irp.f` - - mo_bielec_integral_vv_from_ao(i,j) = J_ij mo_bielec_integral_vv_exchange_from_ao(i,j) = J_ij mo_bielec_integral_vv_anti_from_ao(i,j) = J_ij - K_ij but only for the virtual orbitals - - - - -.. c:var:: mo_bielec_integral_vv_from_ao - - .. code:: text - - double precision, allocatable :: mo_bielec_integral_vv_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_vv_exchange_from_ao (mo_tot_num,mo_tot_num) - double precision, allocatable :: mo_bielec_integral_vv_anti_from_ao (mo_tot_num,mo_tot_num) - - File: :file:`mo_bi_integrals.irp.f` - - mo_bielec_integral_vv_from_ao(i,j) = J_ij mo_bielec_integral_vv_exchange_from_ao(i,j) = J_ij mo_bielec_integral_vv_anti_from_ao(i,j) = J_ij - K_ij but only for the virtual orbitals - - - - -.. c:var:: mo_bielec_integrals_in_map - - .. code:: text - - logical :: mo_bielec_integrals_in_map - - File: :file:`mo_bi_integrals.irp.f` - - If True, the map of MO bielectronic integrals is provided - - - - -.. c:var:: mo_integrals_cache - - .. code:: text - - double precision, allocatable :: mo_integrals_cache (0_8:128_8*128_8*128_8*128_8) - - File: :file:`map_integrals.irp.f` - - Cache of MO integrals for fast access - - - - -.. c:var:: mo_integrals_cache_max - - .. code:: text - - integer*4 :: mo_integrals_cache_min - integer*4 :: mo_integrals_cache_max - integer*8 :: mo_integrals_cache_min_8 - integer*8 :: mo_integrals_cache_max_8 - - File: :file:`map_integrals.irp.f` - - Min and max values of the MOs for which the integrals are in the cache - - - - -.. c:var:: mo_integrals_cache_max_8 - - .. code:: text - - integer*4 :: mo_integrals_cache_min - integer*4 :: mo_integrals_cache_max - integer*8 :: mo_integrals_cache_min_8 - integer*8 :: mo_integrals_cache_max_8 - - File: :file:`map_integrals.irp.f` - - Min and max values of the MOs for which the integrals are in the cache - - - - -.. c:var:: mo_integrals_cache_min - - .. code:: text - - integer*4 :: mo_integrals_cache_min - integer*4 :: mo_integrals_cache_max - integer*8 :: mo_integrals_cache_min_8 - integer*8 :: mo_integrals_cache_max_8 - - File: :file:`map_integrals.irp.f` - - Min and max values of the MOs for which the integrals are in the cache - - - - -.. c:var:: mo_integrals_cache_min_8 - - .. code:: text - - integer*4 :: mo_integrals_cache_min - integer*4 :: mo_integrals_cache_max - integer*8 :: mo_integrals_cache_min_8 - integer*8 :: mo_integrals_cache_max_8 - - File: :file:`map_integrals.irp.f` - - Min and max values of the MOs for which the integrals are in the cache - - - - -.. c:var:: mo_integrals_map - - .. code:: text - - type(map_type) :: mo_integrals_map - - File: :file:`map_integrals.irp.f` - - MO integrals - - - - -.. c:var:: read_mo_integrals - - .. code:: text - - logical :: read_mo_integrals - logical :: write_mo_integrals - - File: :file:`read_write.irp.f` - - Flag to read or write the |MO| integrals - - - - -.. c:var:: write_mo_integrals - - .. code:: text - - logical :: read_mo_integrals - logical :: write_mo_integrals - - File: :file:`read_write.irp.f` - - Flag to read or write the |MO| integrals - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: add_integrals_to_map - - .. code:: text - - subroutine add_integrals_to_map(mask_ijkl) - - File: :file:`mo_bi_integrals.irp.f` - - Adds integrals to tha MO map according to some bitmask - - - - - -.. c:function:: add_integrals_to_map_no_exit_34 - - .. code:: text - - subroutine add_integrals_to_map_no_exit_34(mask_ijkl) - - File: :file:`mo_bi_integrals.irp.f` - - Adds integrals to tha MO map according to some bitmask - - - - - -.. c:function:: add_integrals_to_map_three_indices - - .. code:: text - - subroutine add_integrals_to_map_three_indices(mask_ijk) - - File: :file:`mo_bi_integrals.irp.f` - - Adds integrals to tha MO map according to some bitmask - - - - - -.. c:function:: clear_mo_map - - .. code:: text - - subroutine clear_mo_map - - File: :file:`mo_bi_integrals.irp.f` - - Frees the memory of the MO map - - - - - -.. c:function:: dump_mo_integrals - - .. code:: text - - subroutine dump_mo_integrals(filename) - - File: :file:`map_integrals.irp.f` - - Save to disk the |MO| integrals - - - - - -.. c:function:: get_mo_bielec_integral - - .. code:: text - - double precision function get_mo_bielec_integral(i,j,k,l,map) - - File: :file:`map_integrals.irp.f` - - Returns one integral in the MO basis - - - - - -.. c:function:: get_mo_bielec_integrals - - .. code:: text - - subroutine get_mo_bielec_integrals(j,k,l,sze,out_val,map) - - File: :file:`map_integrals.irp.f` - - Returns multiple integrals in the MO basis, all i for j,k,l fixed. - - - - - -.. c:function:: get_mo_bielec_integrals_coulomb_ii - - .. code:: text - - subroutine get_mo_bielec_integrals_coulomb_ii(k,l,sze,out_val,map) - - File: :file:`map_integrals.irp.f` - - Returns multiple integrals k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) for k,l fixed. - - - - - -.. c:function:: get_mo_bielec_integrals_exch_ii - - .. code:: text - - subroutine get_mo_bielec_integrals_exch_ii(k,l,sze,out_val,map) - - File: :file:`map_integrals.irp.f` - - Returns multiple integrals k(1)i(2) 1/r12 i(1)l(2) :: out_val(i1) for k,l fixed. - - - - - -.. c:function:: get_mo_bielec_integrals_i1j1 - - .. code:: text - - subroutine get_mo_bielec_integrals_i1j1(k,l,sze,out_array,map) - - File: :file:`map_integrals.irp.f` - - Returns multiple integrals in the MO basis, all i(1)j(1) 1/r12 k(2)l(2) i, j for k,l fixed. - - - - - -.. c:function:: get_mo_bielec_integrals_ij - - .. code:: text - - subroutine get_mo_bielec_integrals_ij(k,l,sze,out_array,map) - - File: :file:`map_integrals.irp.f` - - Returns multiple integrals in the MO basis, all i(1)j(2) 1/r12 k(1)l(2) i, j for k,l fixed. - - - - - -.. c:function:: get_mo_map_size - - .. code:: text - - integer*8 function get_mo_map_size() - - File: :file:`map_integrals.irp.f` - - Return the number of elements in the MO map - - - - - -.. c:function:: load_mo_integrals - - .. code:: text - - integer function load_mo_integrals(filename) - - File: :file:`map_integrals.irp.f` - - Read from disk the |MO| integrals - - - - - -.. c:function:: mo_bielec_integral - - .. code:: text - - double precision function mo_bielec_integral(i,j,k,l) - - File: :file:`map_integrals.irp.f` - - Returns one integral in the MO basis - - - - - -.. c:function:: mo_bielec_integrals_index - - .. code:: text - - subroutine mo_bielec_integrals_index(i,j,k,l,i1) - - File: :file:`mo_bi_integrals.irp.f` - - Computes an unique index for i,j,k,l integrals - - diff --git a/docs/source/modules/mpi.rst b/docs/source/modules/mpi.rst deleted file mode 100644 index d8c7290f..00000000 --- a/docs/source/modules/mpi.rst +++ /dev/null @@ -1,130 +0,0 @@ -.. _mpi: - -.. program:: mpi - -.. default-role:: option - -=== -mpi -=== - -Contains all the functions and providers for parallelization with |MPI|. - - - -Providers ---------- - - -.. c:var:: mpi_initialized - - .. code:: text - - logical :: mpi_initialized - - File: :file:`mpi.irp.f` - - Always true. Initialized MPI - - - - -.. c:var:: mpi_master - - .. code:: text - - logical :: mpi_master - - File: :file:`mpi.irp.f` - - If true, rank is zero - - - - -.. c:var:: mpi_rank - - .. code:: text - - integer :: mpi_rank - integer :: mpi_size - - File: :file:`mpi.irp.f` - - Rank of MPI process and number of MPI processes - - - - -.. c:var:: mpi_size - - .. code:: text - - integer :: mpi_rank - integer :: mpi_size - - File: :file:`mpi.irp.f` - - Rank of MPI process and number of MPI processes - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: broadcast_chunks_double - - .. code:: text - - subroutine broadcast_chunks_double(A, LDA) - - File: :file:`mpi.irp.f_template_97` - - Broadcast with chunks of ~2GB - - - - - -.. c:function:: broadcast_chunks_integer - - .. code:: text - - subroutine broadcast_chunks_integer(A, LDA) - - File: :file:`mpi.irp.f_template_97` - - Broadcast with chunks of ~2GB - - - - - -.. c:function:: broadcast_chunks_integer8 - - .. code:: text - - subroutine broadcast_chunks_integer8(A, LDA) - - File: :file:`mpi.irp.f_template_97` - - Broadcast with chunks of ~2GB - - - - - -.. c:function:: mpi_print - - .. code:: text - - subroutine mpi_print(string) - - File: :file:`mpi.irp.f` - - Print string to stdout if the MPI rank is zero. - - diff --git a/docs/source/modules/nuclei.rst b/docs/source/modules/nuclei.rst deleted file mode 100644 index 7f6a89ff..00000000 --- a/docs/source/modules/nuclei.rst +++ /dev/null @@ -1,351 +0,0 @@ -.. _nuclei: - -.. program:: nuclei - -.. default-role:: option - -====== -nuclei -====== - -This module contains data relative to the nuclei (coordinates, charge, -nuclear repulsion energy, etc). -The coordinates are expressed in atomic units. - - - - -EZFIO parameters ----------------- - -.. option:: nucl_num - - Number of nuclei - - -.. option:: nucl_label - - Nuclear labels - - -.. option:: nucl_charge - - Nuclear charges - - -.. option:: nucl_coord - - Nuclear coordinates in the format (:, {x,y,z}) - - -.. option:: disk_access_nuclear_repulsion - - Read/Write Nuclear Repulsion from/to disk [ Write | Read | None ] - - Default: None - -.. option:: nuclear_repulsion - - Nuclear repulsion (Computed automaticaly or Read in the |EZFIO|) - - - -Providers ---------- - - -.. c:var:: center_of_mass - - .. code:: text - - double precision, allocatable :: center_of_mass (3) - - File: :file:`nuclei.irp.f` - - Center of mass of the molecule - - - - -.. c:var:: element_mass - - .. code:: text - - character*(4), allocatable :: element_name (0:127) - double precision, allocatable :: element_mass (0:127) - - File: :file:`nuclei.irp.f` - - Array of the name of element, sorted by nuclear charge (integer) - - - - -.. c:var:: element_name - - .. code:: text - - character*(4), allocatable :: element_name (0:127) - double precision, allocatable :: element_mass (0:127) - - File: :file:`nuclei.irp.f` - - Array of the name of element, sorted by nuclear charge (integer) - - - - -.. c:var:: inertia_tensor - - .. code:: text - - double precision, allocatable :: inertia_tensor (3,3) - - File: :file:`inertia.irp.f` - - Inertia tensor - - - - -.. c:var:: inertia_tensor_eigenvalues - - .. code:: text - - double precision, allocatable :: inertia_tensor_eigenvectors (3,3) - double precision, allocatable :: inertia_tensor_eigenvalues (3) - - File: :file:`inertia.irp.f` - - Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation. - - - - -.. c:var:: inertia_tensor_eigenvectors - - .. code:: text - - double precision, allocatable :: inertia_tensor_eigenvectors (3,3) - double precision, allocatable :: inertia_tensor_eigenvalues (3) - - File: :file:`inertia.irp.f` - - Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation. - - - - -.. c:var:: nucl_coord - - .. code:: text - - double precision, allocatable :: nucl_coord (nucl_num,3) - - File: :file:`nuclei.irp.f` - - Nuclear coordinates in the format (:, {x,y,z}) - - - - -.. c:var:: nucl_coord_transp - - .. code:: text - - double precision, allocatable :: nucl_coord_transp (3,nucl_num) - - File: :file:`nuclei.irp.f` - - Transposed array of nucl_coord - - - - -.. c:var:: nucl_dist - - .. code:: text - - double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist (nucl_num,nucl_num) - - File: :file:`nuclei.irp.f` - - nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors - - - - -.. c:var:: nucl_dist_2 - - .. code:: text - - double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist (nucl_num,nucl_num) - - File: :file:`nuclei.irp.f` - - nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors - - - - -.. c:var:: nucl_dist_inv - - .. code:: text - - double precision, allocatable :: nucl_dist_inv (nucl_num,nucl_num) - - File: :file:`nuclei.irp.f` - - Inverse of the distance between nucleus I and nucleus J - - - - -.. c:var:: nucl_dist_vec_x - - .. code:: text - - double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist (nucl_num,nucl_num) - - File: :file:`nuclei.irp.f` - - nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors - - - - -.. c:var:: nucl_dist_vec_y - - .. code:: text - - double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist (nucl_num,nucl_num) - - File: :file:`nuclei.irp.f` - - nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors - - - - -.. c:var:: nucl_dist_vec_z - - .. code:: text - - double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) - double precision, allocatable :: nucl_dist (nucl_num,nucl_num) - - File: :file:`nuclei.irp.f` - - nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors - - - - -.. c:var:: nuclear_repulsion - - .. code:: text - - double precision :: nuclear_repulsion - - File: :file:`nuclei.irp.f` - - Nuclear repulsion energy - - - - -.. c:var:: slater_bragg_radii - - .. code:: text - - double precision, allocatable :: slater_bragg_radii (100) - - File: :file:`atomic_radii.irp.f` - - atomic radii in Angstrom defined in table I of JCP 41, 3199 (1964) Slater execpt for the Hydrogen atom where we took the value of Becke (1988, JCP) - - - - -.. c:var:: slater_bragg_radii_per_atom - - .. code:: text - - double precision, allocatable :: slater_bragg_radii_per_atom (nucl_num) - - File: :file:`atomic_radii.irp.f` - - - - - - -.. c:var:: slater_bragg_radii_per_atom_ua - - .. code:: text - - double precision, allocatable :: slater_bragg_radii_per_atom_ua (nucl_num) - - File: :file:`atomic_radii.irp.f` - - - - - - -.. c:var:: slater_bragg_radii_ua - - .. code:: text - - double precision, allocatable :: slater_bragg_radii_ua (100) - - File: :file:`atomic_radii.irp.f` - - - - - - -.. c:var:: slater_bragg_type_inter_distance - - .. code:: text - - double precision, allocatable :: slater_bragg_type_inter_distance (nucl_num,nucl_num) - - File: :file:`atomic_radii.irp.f` - - - - - - -.. c:var:: slater_bragg_type_inter_distance_ua - - .. code:: text - - double precision, allocatable :: slater_bragg_type_inter_distance_ua (nucl_num,nucl_num) - - File: :file:`atomic_radii.irp.f` - - - - diff --git a/docs/source/modules/perturbation.rst b/docs/source/modules/perturbation.rst deleted file mode 100644 index cf12baf7..00000000 --- a/docs/source/modules/perturbation.rst +++ /dev/null @@ -1,635 +0,0 @@ -.. _perturbation: - -.. program:: perturbation - -.. default-role:: option - -============ -perturbation -============ - - -All subroutines in ``*.irp.f`` starting with `pt2_` in the current directory are -perturbation computed using the routine `i_H_psi`. Other cases are not allowed. -The arguments of the `pt2_` are always: - -.. code-block:: fortran - - subroutine pt2_...( & - psi_ref, & - psi_ref_coefs, & - E_refs, & - det_pert, & - c_pert, & - e_2_pert, & - H_pert_diag, & - Nint, & - Ndet, & - N_st ) - - - integer , intent(in) :: Nint,Ndet,N_st - integer(bit_kind), intent(in) :: psi_ref(Nint,2,Ndet) - double precision , intent(in) :: psi_ref_coefs(Ndet,N_st) - double precision , intent(in) :: E_refs(N_st) - integer(bit_kind), intent(in) :: det_pert(Nint,2) - double precision , intent(out) :: c_pert(N_st),e_2_pert(N_st),H_pert_diag - - -`psi_ref` - bitstring of the determinants present in the various `N_st` states - -`psi_ref_coefs` - coefficients of the determinants on the various `N_st` states - -`E_refs` - Energy of the various `N_st` states - -`det_pert` - Perturber determinant - -`c_pert` - Perturbative coefficients for the various states - -`e_2_pert` - Perturbative energetic contribution for the various states - -`H_pert_diag` - Diagonal |H| matrix element of the perturber - -`Nint` - Should be equal to `N_int` - -`Ndet` - Number of determinants `i` in |Psi| on which we apply - -`N_st` - Number of states - - - - - - -EZFIO parameters ----------------- - -.. option:: do_pt2 - - If `True`, compute the |PT2| contribution - - Default: True - -.. option:: pt2_max - - The selection process stops when the largest |PT2| (for all the state) is lower - - than `pt2_max` in absolute value - - Default: 0.0001 - -.. option:: pt2_relative_error - - Stop stochastic |PT2| when the relative error is smaller than `PT2_relative_error` - - Default: 0.005 - -.. option:: correlation_energy_ratio_max - - The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules). - - Defined as :math:`{E_{CI}-E_{HF}}/{E_{CI}+E_{PT2} - E_{HF}}`. - - Default: 1.00 - -.. option:: h0_type - - Type of zeroth-order Hamiltonian [ EN | Barycentric | Variance | SOP ] - - Default: EN - - -Providers ---------- - - -.. c:var:: fill_h_apply_buffer_selection - - .. code:: text - - subroutine fill_H_apply_buffer_selection(n_selected,det_buffer,e_2_pert_buffer,coef_pert_buffer, & - N_st,Nint,iproc,select_max_out) - - File: :file:`selection.irp.f` - - Fill the H_apply buffer with determiants for the selection - - - - -.. c:var:: max_exc_pert - - .. code:: text - - integer :: max_exc_pert - - File: :file:`exc_max.irp.f` - - - - - - -.. c:var:: selection_criterion - - .. code:: text - - double precision :: selection_criterion - double precision :: selection_criterion_min - double precision :: selection_criterion_factor - - File: :file:`selection.irp.f` - - Threshold to select determinants. Set by selection routines. - - - - -.. c:var:: selection_criterion_factor - - .. code:: text - - double precision :: selection_criterion - double precision :: selection_criterion_min - double precision :: selection_criterion_factor - - File: :file:`selection.irp.f` - - Threshold to select determinants. Set by selection routines. - - - - -.. c:var:: selection_criterion_min - - .. code:: text - - double precision :: selection_criterion - double precision :: selection_criterion_min - double precision :: selection_criterion_factor - - File: :file:`selection.irp.f` - - Threshold to select determinants. Set by selection routines. - - - - -.. c:var:: var_pt2_ratio - - .. code:: text - - double precision :: var_pt2_ratio - - File: :file:`var_pt2_ratio_provider.irp.f` - - The selection process stops when the energy ratio variational/(variational+PT2) is equal to var_pt2_ratio - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: perturb_buffer_by_mono_decontracted - - .. code:: text - - subroutine perturb_buffer_by_mono_decontracted(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``decontracted`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_by_mono_dummy - - .. code:: text - - subroutine perturb_buffer_by_mono_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_by_mono_epstein_nesbet - - .. code:: text - - subroutine perturb_buffer_by_mono_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2 - - .. code:: text - - subroutine perturb_buffer_by_mono_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag - - .. code:: text - - subroutine perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_by_mono_h_core - - .. code:: text - - subroutine perturb_buffer_by_mono_h_core(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``h_core`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_by_mono_moller_plesset - - .. code:: text - - subroutine perturb_buffer_by_mono_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_by_mono_moller_plesset_general - - .. code:: text - - subroutine perturb_buffer_by_mono_moller_plesset_general(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``moller_plesset_general`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_by_mono_qdpt - - .. code:: text - - subroutine perturb_buffer_by_mono_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_decontracted - - .. code:: text - - subroutine perturb_buffer_decontracted(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``decontracted`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_dummy - - .. code:: text - - subroutine perturb_buffer_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_epstein_nesbet - - .. code:: text - - subroutine perturb_buffer_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_epstein_nesbet_2x2 - - .. code:: text - - subroutine perturb_buffer_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_epstein_nesbet_2x2_no_ci_diag - - .. code:: text - - subroutine perturb_buffer_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_h_core - - .. code:: text - - subroutine perturb_buffer_h_core(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``h_core`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_moller_plesset - - .. code:: text - - subroutine perturb_buffer_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_moller_plesset_general - - .. code:: text - - subroutine perturb_buffer_moller_plesset_general(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``moller_plesset_general`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: perturb_buffer_qdpt - - .. code:: text - - subroutine perturb_buffer_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) - - File: :file:`perturbation.irp.f_shell_13` - - Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply routine. - - - - - -.. c:function:: pt2_decontracted - - .. code:: text - - subroutine pt2_decontracted (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - File: :file:`pt2_equations.irp.f_template_412` - - - - - - - -.. c:function:: pt2_dummy - - .. code:: text - - subroutine pt2_dummy (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - File: :file:`pt2_equations.irp.f_template_412` - - Dummy perturbation to add all connected determinants. - - - - - -.. c:function:: pt2_epstein_nesbet - - .. code:: text - - subroutine pt2_epstein_nesbet (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - File: :file:`pt2_equations.irp.f_template_412` - - compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution - for the various N_st states. - c_pert(i) = /( E(i) - ) - e_2_pert(i) = ^2/( E(i) - ) - - - - - - -.. c:function:: pt2_epstein_nesbet_2x2 - - .. code:: text - - subroutine pt2_epstein_nesbet_2x2 (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - File: :file:`pt2_equations.irp.f_template_412` - - compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution - for the various N_st states. - e_2_pert(i) = 0.5 * (( - E(i) ) - sqrt( ( - E(i)) ^2 + 4 ^2 ) - c_pert(i) = e_2_pert(i)/ - - - - - - -.. c:function:: pt2_epstein_nesbet_2x2_no_ci_diag - - .. code:: text - - subroutine pt2_epstein_nesbet_2x2_no_ci_diag(electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - File: :file:`pt2_equations.irp.f_template_412` - - compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution - for the various N_st states. - e_2_pert(i) = 0.5 * (( - E(i) ) - sqrt( ( - E(i)) ^2 + 4 ^2 ) - c_pert(i) = e_2_pert(i)/ - - - - - - -.. c:function:: pt2_h_core - - .. code:: text - - subroutine pt2_h_core(det_pert,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - File: :file:`pert_single.irp.f` - - compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution - for the various N_st states. - c_pert(i) = /( E(i) - ) - e_2_pert(i) = ^2/( E(i) - ) - - - - - - -.. c:function:: pt2_moller_plesset - - .. code:: text - - subroutine pt2_moller_plesset (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - File: :file:`pt2_equations.irp.f_template_412` - - compute the standard Moller-Plesset perturbative first order coefficient and second order energetic contribution - for the various n_st states. - c_pert(i) = /(difference of orbital energies) - e_2_pert(i) = ^2/(difference of orbital energies) - - - - - - -.. c:function:: pt2_moller_plesset_general - - .. code:: text - - subroutine pt2_moller_plesset_general (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - File: :file:`pt2_equations.irp.f_template_412` - - compute the general Moller-Plesset perturbative first order coefficient and second order energetic contribution - for the various n_st states. - c_pert(i) = /(difference of orbital energies) - e_2_pert(i) = ^2/(difference of orbital energies) - - - - - - -.. c:function:: pt2_qdpt - - .. code:: text - - subroutine pt2_qdpt (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) - - File: :file:`pt2_equations.irp.f_template_412` - - compute the QDPT first order coefficient and second order energetic contribution - for the various N_st states. - c_pert(i) = /( - ) - - - - - - -.. c:function:: remove_small_contributions - - .. code:: text - - subroutine remove_small_contributions - - File: :file:`selection.irp.f` - - Remove determinants with small contributions. N_states is assumed to be provided. - - - - - -.. c:function:: repeat_all_e_corr - - .. code:: text - - double precision function repeat_all_e_corr(key_in) - - File: :file:`pert_sc2.irp.f` - - - - diff --git a/docs/source/modules/pseudo.rst b/docs/source/modules/pseudo.rst deleted file mode 100644 index b9ab7433..00000000 --- a/docs/source/modules/pseudo.rst +++ /dev/null @@ -1,94 +0,0 @@ -.. _pseudo: - -.. program:: pseudo - -.. default-role:: option - -====== -pseudo -====== - -This module defines the |EZFIO| parameters of the effective core potentials. - - - -EZFIO parameters ----------------- - -.. option:: nucl_charge_remove - - Nuclear charges removed per atom - - -.. option:: pseudo_klocmax - - Maximum value of k for the local component - - -.. option:: pseudo_n_k - - Number of gaussians in the local component - - -.. option:: pseudo_v_k - - Coefficients in the local component - - -.. option:: pseudo_dz_k - - Exponents in the local component - - -.. option:: pseudo_lmax - - Maximum angular momentum - - -.. option:: pseudo_kmax - - Maximum number of functions in the non-local component - - -.. option:: pseudo_n_kl - - Number of functions in the non-local component - - -.. option:: pseudo_v_kl - - Coefficients in the non-local component - - -.. option:: pseudo_dz_kl - - Exponents in the non-local component - - -.. option:: do_pseudo - - If `True`, pseudo-potentials are used. - - Default: False - -.. option:: pseudo_grid_size - - Nb of points of the grid for the QMC interfaces - - Default: 1000 - -.. option:: pseudo_grid_rmax - - R_max of the QMC grid - - Default: 10.0 - -.. option:: ao_pseudo_grid - - Grid for the QMC interface - - -.. option:: mo_pseudo_grid - - Grid for the QMC interface - diff --git a/docs/source/modules/psiref_cas.rst b/docs/source/modules/psiref_cas.rst deleted file mode 100644 index fe4e38ae..00000000 --- a/docs/source/modules/psiref_cas.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. _psiref_cas: - -.. program:: psiref_cas - -.. default-role:: option - -========== -psiref_cas -========== - -Reference wave function is defined as a |CAS| wave function. -This module is required for |CAS-SD|, |MRPT| or |MRCC|. - - diff --git a/docs/source/modules/psiref_utils.rst b/docs/source/modules/psiref_utils.rst deleted file mode 100644 index 634ecb61..00000000 --- a/docs/source/modules/psiref_utils.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _psiref_utils: - -.. program:: psiref_utils - -.. default-role:: option - -============ -psiref_utils -============ - - -Utilities related to the use of a reference wave function. This module -needs to be loaded with any `psi_ref_*` module. - - - diff --git a/docs/source/modules/scf_utils.rst b/docs/source/modules/scf_utils.rst deleted file mode 100644 index a5aaeb73..00000000 --- a/docs/source/modules/scf_utils.rst +++ /dev/null @@ -1,375 +0,0 @@ -.. _scf_utils: - -.. program:: scf_utils - -.. default-role:: option - -========= -scf_utils -========= - - - -The scf_utils module is an abstract module which contains the basics to perform *Restricted* SCF calculations (the -spatial part of the |MOs| is common for alpha and beta spinorbitals) based on a single-determinant wave function. - -This module does not produce any executable *and must not do*, but instead it contains everything one needs to perform an orbital optimization based on an Fock matrix. -The ``scf_utils`` module is meant to be included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example). - -All SCF programs perform the following actions: - -#. Compute/Read all the one- and two-electron integrals, and store them in memory -#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it - will read them as initial guess. Otherwise, it will create a guess. -#. Perform the |SCF| iterations based on the definition of the Fock matrix - - -The main keywords/options are: -# :option:`scf_utils thresh_scf` -# :option:`scf_utils level_shift` - -At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation -crashes for any unexpected reason, the calculation can be restarted by running again -the |SCF| with the same |EZFIO| database. - -The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. -If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. - -To start a calculation from scratch, the simplest way is to remove the -``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. - -.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS -.. _level-shifting: https://doi.org/10.1002/qua.560070407 - - - - -EZFIO parameters ----------------- - -.. option:: max_dim_diis - - Maximum size of the DIIS extrapolation procedure - - Default: 15 - -.. option:: threshold_diis - - Threshold on the convergence of the DIIS error vector during a Hartree-Fock calculation. If 0. is chosen, the square root of thresh_scf will be used. - - Default: 0. - -.. option:: thresh_scf - - Threshold on the convergence of the Hartree Fock energy. - - Default: 1.e-10 - -.. option:: n_it_scf_max - - Maximum number of SCF iterations - - Default: 500 - -.. option:: level_shift - - Energy shift on the virtual MOs to improve SCF convergence - - Default: 0.1 - -.. option:: scf_algorithm - - Type of SCF algorithm used. Possible choices are [ Simple | DIIS] - - Default: DIIS - -.. option:: mo_guess_type - - Initial MO guess. Can be [ Huckel | HCore ] - - Default: Huckel - -.. option:: energy - - Calculated HF energy - - -.. option:: no_oa_or_av_opt - - If true, leave the active orbitals untouched in the SCF procedure - - Default: False - - -Providers ---------- - - -.. c:var:: eigenvalues_fock_matrix_ao - - .. code:: text - - double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num) - double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num) - - File: :file:`diis.irp.f` - - Eigenvalues and eigenvectors of the Fock matrix over the AO basis - - - - -.. c:var:: eigenvectors_fock_matrix_ao - - .. code:: text - - double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num) - double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num) - - File: :file:`diis.irp.f` - - Eigenvalues and eigenvectors of the Fock matrix over the AO basis - - - - -.. c:var:: eigenvectors_fock_matrix_mo - - .. code:: text - - double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_tot_num) - - File: :file:`diagonalize_fock.irp.f` - - Eigenvector of the Fock matrix in the MO basis obtained with level shift. - - - - -.. c:var:: extrapolate_fock_matrix - - .. code:: text - - subroutine extrapolate_Fock_matrix( & - error_matrix_DIIS,Fock_matrix_DIIS, & - Fock_matrix_AO_,size_Fock_matrix_AO, & - iteration_SCF,dim_DIIS & - ) - - File: :file:`roothaan_hall_scf.irp.f` - - Compute the extrapolated Fock matrix using the DIIS procedure - - - - -.. c:var:: fock_matrix_ao - - .. code:: text - - double precision, allocatable :: fock_matrix_ao (ao_num,ao_num) - - File: :file:`fock_matrix.irp.f` - - Fock matrix in AO basis set - - - - -.. c:var:: fock_matrix_diag_mo - - .. code:: text - - double precision, allocatable :: fock_matrix_mo (mo_tot_num,mo_tot_num) - double precision, allocatable :: fock_matrix_diag_mo (mo_tot_num) - - File: :file:`fock_matrix.irp.f` - - Fock matrix on the MO basis. For open shells, the ROHF Fock Matrix is - | F-K | F + K/2 | F | |---------------------------------| | F + K/2 | F | F - K/2 | |---------------------------------| | F | F - K/2 | F + K | - F = 1/2 (Fa + Fb) - K = Fb - Fa - - - - - -.. c:var:: fock_matrix_mo - - .. code:: text - - double precision, allocatable :: fock_matrix_mo (mo_tot_num,mo_tot_num) - double precision, allocatable :: fock_matrix_diag_mo (mo_tot_num) - - File: :file:`fock_matrix.irp.f` - - Fock matrix on the MO basis. For open shells, the ROHF Fock Matrix is - | F-K | F + K/2 | F | |---------------------------------| | F + K/2 | F | F - K/2 | |---------------------------------| | F | F - K/2 | F + K | - F = 1/2 (Fa + Fb) - K = Fb - Fa - - - - - -.. c:var:: fock_matrix_mo_alpha - - .. code:: text - - double precision, allocatable :: fock_matrix_mo_alpha (mo_tot_num,mo_tot_num) - - File: :file:`fock_matrix.irp.f` - - Fock matrix on the MO basis - - - - -.. c:var:: fock_matrix_mo_beta - - .. code:: text - - double precision, allocatable :: fock_matrix_mo_beta (mo_tot_num,mo_tot_num) - - File: :file:`fock_matrix.irp.f` - - Fock matrix on the MO basis - - - - -.. c:var:: fps_spf_matrix_ao - - .. code:: text - - double precision, allocatable :: fps_spf_matrix_ao (AO_num,AO_num) - - File: :file:`diis.irp.f` - - Commutator FPS - SPF - - - - -.. c:var:: fps_spf_matrix_mo - - .. code:: text - - double precision, allocatable :: fps_spf_matrix_mo (mo_tot_num,mo_tot_num) - - File: :file:`diis.irp.f` - - Commutator FPS - SPF in MO basis - - - - -.. c:var:: scf_density_matrix_ao - - .. code:: text - - double precision, allocatable :: scf_density_matrix_ao (ao_num,ao_num) - - File: :file:`scf_density_matrix_ao.irp.f` - - S^{-1}.P.S^{-1} where P = C.C^t - - - - -.. c:var:: scf_density_matrix_ao_alpha - - .. code:: text - - double precision, allocatable :: scf_density_matrix_ao_alpha (ao_num,ao_num) - - File: :file:`scf_density_matrix_ao.irp.f` - - S^{-1}.P_alpha.S^{-1} - - - - -.. c:var:: scf_density_matrix_ao_beta - - .. code:: text - - double precision, allocatable :: scf_density_matrix_ao_beta (ao_num,ao_num) - - File: :file:`scf_density_matrix_ao.irp.f` - - S^{-1}.P_beta.S^{-1} - - - - -.. c:var:: scf_energy - - .. code:: text - - double precision :: scf_energy - - File: :file:`fock_matrix.irp.f` - - Hartree-Fock energy - - - - -.. c:var:: threshold_diis_nonzero - - .. code:: text - - double precision :: threshold_diis_nonzero - - File: :file:`diis.irp.f` - - If threshold_DIIS is zero, choose sqrt(thresh_scf) - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: damping_scf - - .. code:: text - - subroutine damping_SCF - - File: :file:`damping_scf.irp.f` - - - - - - - -.. c:function:: huckel_guess - - .. code:: text - - subroutine huckel_guess - - File: :file:`huckel.irp.f` - - Build the MOs using the extended Huckel model - - - - - -.. c:function:: roothaan_hall_scf - - .. code:: text - - subroutine Roothaan_Hall_SCF - - File: :file:`roothaan_hall_scf.irp.f` - - Roothaan-Hall algorithm for SCF Hartree-Fock calculation - - diff --git a/docs/source/modules/selectors_cassd.rst b/docs/source/modules/selectors_cassd.rst deleted file mode 100644 index d6c2b8ff..00000000 --- a/docs/source/modules/selectors_cassd.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _selectors_cassd: - -.. program:: selectors_cassd - -.. default-role:: option - -=============== -selectors_cassd -=============== - -Selectors for |CAS-SD| calculations. The selectors are defined as first the -generators from :ref:`Generators_CAS`, and then the rest of the wave function. - diff --git a/docs/source/modules/selectors_full.rst b/docs/source/modules/selectors_full.rst deleted file mode 100644 index 9edb70b9..00000000 --- a/docs/source/modules/selectors_full.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _selectors_full: - -.. program:: selectors_full - -.. default-role:: option - -============== -selectors_full -============== - -All the determinants are possible selectors. Only the largest contributions are kept, where -a threshold is applied to the squared norm of the wave function, with the :option:`determinants -threshold_selectors` flag. - - - -Providers ---------- - - -.. c:var:: n_det_selectors - - .. code:: text - - integer :: n_det_selectors - - File: :file:`selectors.irp.f` - - For Single reference wave functions, the number of selectors is 1 : the Hartree-Fock determinant - - - - -.. c:var:: psi_selectors - - .. code:: text - - integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size) - double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states) - - File: :file:`selectors.irp.f` - - Determinants on which we apply for perturbation. - - - - -.. c:var:: psi_selectors_coef - - .. code:: text - - integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size) - double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states) - - File: :file:`selectors.irp.f` - - Determinants on which we apply for perturbation. - - - - -.. c:var:: threshold_selectors - - .. code:: text - - double precision :: threshold_selectors - - File: :file:`selectors.irp.f` - - Thresholds on selectors (fraction of the square of the norm) - - diff --git a/docs/source/modules/selectors_utils.rst b/docs/source/modules/selectors_utils.rst deleted file mode 100644 index c183641c..00000000 --- a/docs/source/modules/selectors_utils.rst +++ /dev/null @@ -1,362 +0,0 @@ -.. _selectors_utils: - -.. program:: selectors_utils - -.. default-role:: option - -=============== -selectors_utils -=============== - -Helper functions for selectors. - - - - -Providers ---------- - - -.. c:var:: coef_hf_selector - - .. code:: text - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - File: :file:`e_corr_selectors.irp.f` - - energy of correlation per determinant respect to the Hartree Fock determinant - for the all the double excitations in the selectors determinants - E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - - - -.. c:var:: delta_e_per_selector - - .. code:: text - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - File: :file:`e_corr_selectors.irp.f` - - energy of correlation per determinant respect to the Hartree Fock determinant - for the all the double excitations in the selectors determinants - E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - - - -.. c:var:: double_index_selectors - - .. code:: text - - integer, allocatable :: exc_degree_per_selectors (N_det_selectors) - integer, allocatable :: double_index_selectors (N_det_selectors) - integer :: n_double_selectors - - File: :file:`e_corr_selectors.irp.f` - - degree of excitation respect to Hartree Fock for the wave function - for the all the selectors determinants - double_index_selectors = list of the index of the double excitations - n_double_selectors = number of double excitations in the selectors determinants - - - - -.. c:var:: e_corr_double_only - - .. code:: text - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - File: :file:`e_corr_selectors.irp.f` - - energy of correlation per determinant respect to the Hartree Fock determinant - for the all the double excitations in the selectors determinants - E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - - - -.. c:var:: e_corr_per_selectors - - .. code:: text - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - File: :file:`e_corr_selectors.irp.f` - - energy of correlation per determinant respect to the Hartree Fock determinant - for the all the double excitations in the selectors determinants - E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - - - -.. c:var:: e_corr_second_order - - .. code:: text - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - File: :file:`e_corr_selectors.irp.f` - - energy of correlation per determinant respect to the Hartree Fock determinant - for the all the double excitations in the selectors determinants - E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - - - -.. c:var:: exc_degree_per_selectors - - .. code:: text - - integer, allocatable :: exc_degree_per_selectors (N_det_selectors) - integer, allocatable :: double_index_selectors (N_det_selectors) - integer :: n_double_selectors - - File: :file:`e_corr_selectors.irp.f` - - degree of excitation respect to Hartree Fock for the wave function - for the all the selectors determinants - double_index_selectors = list of the index of the double excitations - n_double_selectors = number of double excitations in the selectors determinants - - - - -.. c:var:: i_h_hf_per_selectors - - .. code:: text - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - File: :file:`e_corr_selectors.irp.f` - - energy of correlation per determinant respect to the Hartree Fock determinant - for the all the double excitations in the selectors determinants - E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - - - -.. c:var:: inv_selectors_coef_hf - - .. code:: text - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - File: :file:`e_corr_selectors.irp.f` - - energy of correlation per determinant respect to the Hartree Fock determinant - for the all the double excitations in the selectors determinants - E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - - - -.. c:var:: inv_selectors_coef_hf_squared - - .. code:: text - - double precision :: coef_hf_selector - double precision :: inv_selectors_coef_hf - double precision :: inv_selectors_coef_hf_squared - double precision, allocatable :: e_corr_per_selectors (N_det_selectors) - double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) - double precision, allocatable :: delta_e_per_selector (N_det_selectors) - double precision :: e_corr_double_only - double precision :: e_corr_second_order - - File: :file:`e_corr_selectors.irp.f` - - energy of correlation per determinant respect to the Hartree Fock determinant - for the all the double excitations in the selectors determinants - E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation - E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation - coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants - - - - -.. c:var:: n_double_selectors - - .. code:: text - - integer, allocatable :: exc_degree_per_selectors (N_det_selectors) - integer, allocatable :: double_index_selectors (N_det_selectors) - integer :: n_double_selectors - - File: :file:`e_corr_selectors.irp.f` - - degree of excitation respect to Hartree Fock for the wave function - for the all the selectors determinants - double_index_selectors = list of the index of the double excitations - n_double_selectors = number of double excitations in the selectors determinants - - - - -.. c:var:: psi_selectors_coef_transp - - .. code:: text - - double precision, allocatable :: psi_selectors_coef_transp (N_states,psi_selectors_size) - - File: :file:`selectors.irp.f` - - Transposed psi_selectors - - - - -.. c:var:: psi_selectors_diag_h_mat - - .. code:: text - - double precision, allocatable :: psi_selectors_diag_h_mat (psi_selectors_size) - - File: :file:`selectors.irp.f` - - Diagonal elements of the H matrix for each selectors - - - - -.. c:var:: psi_selectors_size - - .. code:: text - - integer :: psi_selectors_size - - File: :file:`selectors.irp.f` - - - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: zmq_get_n_det_generators - - .. code:: text - - integer function zmq_get_N_det_generators(zmq_to_qp_run_socket, worker_id) - - File: :file:`zmq.irp.f_template_102` - - Get N_det_generators from the qp_run scheduler - - - - - -.. c:function:: zmq_get_n_det_selectors - - .. code:: text - - integer function zmq_get_N_det_selectors(zmq_to_qp_run_socket, worker_id) - - File: :file:`zmq.irp.f_template_102` - - Get N_det_selectors from the qp_run scheduler - - - - - -.. c:function:: zmq_put_n_det_generators - - .. code:: text - - integer function zmq_put_N_det_generators(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_102` - - Put N_det_generators on the qp_run scheduler - - - - - -.. c:function:: zmq_put_n_det_selectors - - .. code:: text - - integer function zmq_put_N_det_selectors(zmq_to_qp_run_socket,worker_id) - - File: :file:`zmq.irp.f_template_102` - - Put N_det_selectors on the qp_run scheduler - - diff --git a/docs/source/modules/single_ref_method.rst b/docs/source/modules/single_ref_method.rst deleted file mode 100644 index ae80a401..00000000 --- a/docs/source/modules/single_ref_method.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. _single_ref_method: - -.. program:: single_ref_method - -.. default-role:: option - -================= -single_ref_method -================= - -Include this module for single reference methods. -Using this module, the only generator determinant is the Hartree-Fock determinant. - - diff --git a/docs/source/modules/slave.rst b/docs/source/modules/slave.rst deleted file mode 100644 index 31cbd7f1..00000000 --- a/docs/source/modules/slave.rst +++ /dev/null @@ -1,59 +0,0 @@ -.. _slave: - -.. program:: slave - -.. default-role:: option - -===== -slave -===== - -Slave processes for distributed parallelism. - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: provide_everything - - .. code:: text - - subroutine provide_everything - - File: :file:`slave_cipsi.irp.f` - - - - - - - -.. c:function:: run_wf - - .. code:: text - - subroutine run_wf - - File: :file:`slave_cipsi.irp.f` - - - - - - - -.. c:function:: slave - - .. code:: text - - subroutine slave - - File: :file:`slave_cipsi.irp.f` - - Helper program for distributed parallelism - - diff --git a/docs/source/modules/tools.rst b/docs/source/modules/tools.rst deleted file mode 100644 index d9eb8f11..00000000 --- a/docs/source/modules/tools.rst +++ /dev/null @@ -1,217 +0,0 @@ -.. _tools: - -.. program:: tools - -.. default-role:: option - -===== -tools -===== - -Useful tools are grouped in this module. - - - -Subroutines / functions ------------------------ - - - -.. c:function:: diagonalize_h - - .. code:: text - - subroutine diagonalize_h - - File: :file:`diagonalize_h.irp.f` - - program that extracts the N_states lowest states of the Hamiltonian within the set of Slater determinants stored in the EZFIO folder - - - - - -.. c:function:: fcidump - - .. code:: text - - subroutine fcidump - - File: :file:`fcidump.irp.f` - - Produce a FCIDUMP file - - - - - -.. c:function:: four_idx_transform - - .. code:: text - - subroutine four_idx_transform - - File: :file:`four_idx_transform.irp.f` - - 4-index transformation of two-electron integrals from AO to MO integrals - - - - - -.. c:function:: molden - - .. code:: text - - subroutine molden - - File: :file:`molden.irp.f` - - Produce a Molden file - - - - - -.. c:function:: print_wf - - .. code:: text - - subroutine print_wf - - File: :file:`print_wf.irp.f` - - print the wave function stored in the EZFIO folder in the intermediate normalization - 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. - If the wave function strongly deviates from the first-order analysis, something funny is going on :) - - - - - -.. c:function:: routine - - .. code:: text - - subroutine routine - - File: :file:`write_integrals_erf.irp.f` - - - - - - - -.. c:function:: save_natorb - - .. code:: text - - subroutine save_natorb - - File: :file:`save_natorb.irp.f` - - Save natural MOs into the EZFIO - - - - - -.. c:function:: save_one_body_dm - - .. code:: text - - subroutine save_one_body_dm - - File: :file:`save_one_body_dm.irp.f` - - programs that computes the one body density on the mo basis for alpha and beta electrons from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities. - Then, the global variable data_one_body_alpha_dm_mo and data_one_body_beta_dm_mo will automatically read the density in a further calculation. - This can be used to perform dampin on the density in RS-DFT calculation (see the density_for_dft module). - - - - - -.. c:function:: save_ortho_mos - - .. code:: text - - subroutine save_ortho_mos - - File: :file:`save_ortho_mos.irp.f` - - Save orthonormalized MOs in the EZFIO. - - - - - -.. c:function:: write_ao_basis - - .. code:: text - - subroutine write_Ao_basis(i_unit_output) - - File: :file:`molden.irp.f` - - - - - - - -.. c:function:: write_geometry - - .. code:: text - - subroutine write_geometry(i_unit_output) - - File: :file:`molden.irp.f` - - - - - - - -.. c:function:: write_integrals - - .. code:: text - - subroutine write_integrals - - File: :file:`write_integrals_erf.irp.f` - - Saves the bielec erf integrals into the EZFIO - - - - - -.. c:function:: write_intro_gamess - - .. code:: text - - subroutine write_intro_gamess(i_unit_output) - - File: :file:`molden.irp.f` - - - - - - - -.. c:function:: write_mo_basis - - .. code:: text - - subroutine write_Mo_basis(i_unit_output) - - File: :file:`molden.irp.f` - - - - diff --git a/docs/source/modules/utils.rst b/docs/source/modules/utils.rst deleted file mode 100644 index 448851ac..00000000 --- a/docs/source/modules/utils.rst +++ /dev/null @@ -1,1914 +0,0 @@ -.. _utils: - -.. program:: utils - -.. default-role:: option - -===== -utils -===== - -Contains general purpose utilities (sorting, maps, etc). - - - - -Providers ---------- - - -.. c:var:: binom - - .. code:: text - - double precision, allocatable :: binom (0:40,0:40) - double precision, allocatable :: binom_transp (0:40,0:40) - - File: :file:`util.irp.f` - - Binomial coefficients - - - - -.. c:var:: binom_int - - .. code:: text - - integer*8, allocatable :: binom_int (0:40,0:40) - integer*8, allocatable :: binom_int_transp (0:40,0:40) - - File: :file:`util.irp.f` - - Binomial coefficients, as integers*8 - - - - -.. c:var:: binom_int_transp - - .. code:: text - - integer*8, allocatable :: binom_int (0:40,0:40) - integer*8, allocatable :: binom_int_transp (0:40,0:40) - - File: :file:`util.irp.f` - - Binomial coefficients, as integers*8 - - - - -.. c:var:: binom_transp - - .. code:: text - - double precision, allocatable :: binom (0:40,0:40) - double precision, allocatable :: binom_transp (0:40,0:40) - - File: :file:`util.irp.f` - - Binomial coefficients - - - - -.. c:var:: degree_max_integration_lebedev - - .. code:: text - - integer :: degree_max_integration_lebedev - - File: :file:`angular_integration.irp.f` - - integrate correctly a polynom of order "degree_max_integration_lebedev" needed for the angular integration according to LEBEDEV formulae - - - - -.. c:var:: dtranspose - - .. code:: text - - recursive subroutine dtranspose(A,LDA,B,LDB,d1,d2) - - File: :file:`transpose.irp.f` - - Transpose input matrix A into output matrix B - - - - -.. c:var:: fact_inv - - .. code:: text - - double precision, allocatable :: fact_inv (128) - - File: :file:`util.irp.f` - - 1/n! - - - - -.. c:var:: i2radix_sort - - .. code:: text - - recursive subroutine i2radix_sort(x,iorder,isize,iradix) - - File: :file:`sort.irp.f_template_644` - - Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. - - - - -.. c:var:: i8radix_sort - - .. code:: text - - recursive subroutine i8radix_sort(x,iorder,isize,iradix) - - File: :file:`sort.irp.f_template_644` - - Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. - - - - -.. c:var:: i8radix_sort_big - - .. code:: text - - recursive subroutine i8radix_sort_big(x,iorder,isize,iradix) - - File: :file:`sort.irp.f_template_644` - - Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. - - - - -.. c:var:: inv_int - - .. code:: text - - double precision, allocatable :: inv_int (128) - - File: :file:`util.irp.f` - - 1/i - - - - -.. c:var:: iradix_sort - - .. code:: text - - recursive subroutine iradix_sort(x,iorder,isize,iradix) - - File: :file:`sort.irp.f_template_644` - - Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. - - - - -.. c:var:: iradix_sort_big - - .. code:: text - - recursive subroutine iradix_sort_big(x,iorder,isize,iradix) - - File: :file:`sort.irp.f_template_644` - - Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. - - - - -.. c:var:: n_points_integration_angular_lebedev - - .. code:: text - - integer :: n_points_integration_angular_lebedev - - File: :file:`angular_integration.irp.f` - - Number of points needed for the angular integral - - - - -.. c:var:: nproc - - .. code:: text - - integer :: nproc - - File: :file:`util.irp.f` - - Number of current OpenMP threads - - - - -.. c:var:: overlap_gaussian_xyz - - .. code:: text - - subroutine overlap_gaussian_xyz(A_center,B_center,alpha,beta,power_A,& - power_B,overlap_x,overlap_y,overlap_z,overlap,dim) - - File: :file:`one_e_integration.irp.f` - - .. math:: - S_x = \int (x-A_x)^{a_x} exp(-\alpha(x-A_x)^2) (x-B_x)^{b_x} exp(-beta(x-B_x)^2) dx \\ S = S_x S_y S_z - - - - - -.. c:var:: phi_angular_integration_lebedev - - .. code:: text - - double precision, allocatable :: theta_angular_integration_lebedev (n_points_integration_angular_lebedev) - double precision, allocatable :: phi_angular_integration_lebedev (n_points_integration_angular_lebedev) - double precision, allocatable :: weights_angular_integration_lebedev (n_points_integration_angular_lebedev) - - File: :file:`angular_integration.irp.f` - - Theta phi values together with the weights values for the angular integration : integral [dphi,dtheta] f(x,y,z) = 4 * pi * sum (1 where i is the basis function and psi_j is the j th eigenvector - - - - - - -.. c:function:: lapack_diagd - - .. code:: text - - subroutine lapack_diagd(eigvalues,eigvectors,H,nmax,n) - - File: :file:`linear_algebra.irp.f` - - Diagonalize matrix H - H is untouched between input and ouptut - eigevalues(i) = ith lowest eigenvalue of the H matrix - eigvectors(i,j) = where i is the basis function and psi_j is the j th eigenvector - - - - - - -.. c:function:: logfact - - .. code:: text - - double precision function logfact(n) - - File: :file:`util.irp.f` - - n! - - - - - -.. c:function:: lowercase - - .. code:: text - - subroutine lowercase(txt,n) - - File: :file:`util.irp.f` - - Transform to lower case - - - - - -.. c:function:: map_load_from_disk - - .. code:: text - - subroutine map_load_from_disk(filename,map) - - File: :file:`map_functions.irp.f` - - - - - - - -.. c:function:: map_save_to_disk - - .. code:: text - - subroutine map_save_to_disk(filename,map) - - File: :file:`map_functions.irp.f` - - - - - - - -.. c:function:: memory_of_double - - .. code:: text - - double precision function memory_of_double(n) - - File: :file:`memory.irp.f` - - Computes the memory required for n double precision elements in gigabytes. - - - - - -.. c:function:: memory_of_int - - .. code:: text - - double precision function memory_of_int(n) - - File: :file:`memory.irp.f` - - Computes the memory required for n double precision elements in gigabytes. - - - - - -.. c:function:: multiply_poly - - .. code:: text - - subroutine multiply_poly(b,nb,c,nc,d,nd) - - File: :file:`integration.irp.f` - - Multiply two polynomials D(t) =! D(t) +( B(t)*C(t)) - - - - - -.. c:function:: normalize - - .. code:: text - - subroutine normalize(u,sze) - - File: :file:`util.irp.f` - - Normalizes vector u - - - - - -.. c:function:: ortho_canonical - - .. code:: text - - subroutine ortho_canonical(overlap,LDA,N,C,LDC,m) - - File: :file:`linear_algebra.irp.f` - - Compute C_new=C_old.U.s^-1/2 canonical orthogonalization. - overlap : overlap matrix - LDA : leftmost dimension of overlap array - N : Overlap matrix is NxN (array is (LDA,N) ) - C : Coefficients of the vectors to orthogonalize. On exit, orthogonal vectors - LDC : leftmost dimension of C - m : Coefficients matrix is MxN, ( array is (LDC,N) ) - - - - - - -.. c:function:: ortho_lowdin - - .. code:: text - - subroutine ortho_lowdin(overlap,LDA,N,C,LDC,m) - - File: :file:`linear_algebra.irp.f` - - Compute C_new=C_old.S^-1/2 orthogonalization. - overlap : overlap matrix - LDA : leftmost dimension of overlap array - N : Overlap matrix is NxN (array is (LDA,N) ) - C : Coefficients of the vectors to orthogonalize. On exit, orthogonal vectors - LDC : leftmost dimension of C - M : Coefficients matrix is MxN, ( array is (LDC,N) ) - - - - - - -.. c:function:: ortho_qr - - .. code:: text - - subroutine ortho_qr(A,LDA,m,n) - - File: :file:`linear_algebra.irp.f` - - Orthogonalization using Q.R factorization - A : matrix to orthogonalize - LDA : leftmost dimension of A - n : Number of rows of A - m : Number of columns of A - - - - - - -.. c:function:: ortho_qr_unblocked - - .. code:: text - - subroutine ortho_qr_unblocked(A,LDA,m,n) - - File: :file:`linear_algebra.irp.f` - - Orthogonalization using Q.R factorization - A : matrix to orthogonalize - LDA : leftmost dimension of A - n : Number of rows of A - m : Number of columns of A - - - - - - -.. c:function:: overlap_gaussian_x - - .. code:: text - - double precision function overlap_gaussian_x(A_center,B_center,alpha,beta,power_A,power_B,dim) - - File: :file:`one_e_integration.irp.f` - - .. math:: - \sum_{-infty}^{+infty} (x-A_x)^ax (x-B_x)^bx exp(-alpha(x-A_x)^2) exp(-beta(x-B_X)^2) dx - - - - - - -.. c:function:: overlap_x_abs - - .. code:: text - - subroutine overlap_x_abs(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) - - File: :file:`one_e_integration.irp.f` - - .. math :: - \int_{-infty}^{+infty} (x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) dx - - - - - - -.. c:function:: print_memory_usage - - .. code:: text - - subroutine print_memory_usage() - - File: :file:`memory.irp.f` - - Prints the memory usage in the output - - - - - -.. c:function:: quick_dsort - - .. code:: text - - subroutine quick_dsort(x, iorder, isize) - - File: :file:`sort.irp.f_template_261` - - Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. - - - - - -.. c:function:: quick_i2sort - - .. code:: text - - subroutine quick_i2sort(x, iorder, isize) - - File: :file:`sort.irp.f_template_261` - - Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. - - - - - -.. c:function:: quick_i8sort - - .. code:: text - - subroutine quick_i8sort(x, iorder, isize) - - File: :file:`sort.irp.f_template_261` - - Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. - - - - - -.. c:function:: quick_isort - - .. code:: text - - subroutine quick_isort(x, iorder, isize) - - File: :file:`sort.irp.f_template_261` - - Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. - - - - - -.. c:function:: quick_sort - - .. code:: text - - subroutine quick_sort(x, iorder, isize) - - File: :file:`sort.irp.f_template_261` - - Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. - - - - - -.. c:function:: recentered_poly2 - - .. code:: text - - subroutine recentered_poly2(P_new,x_A,x_P,a,P_new2,x_B,x_Q,b) - - File: :file:`integration.irp.f` - - Recenter two polynomials - - - - - -.. c:function:: resident_memory - - .. code:: text - - subroutine resident_memory(value) - - File: :file:`memory.irp.f` - - Returns the current used memory in gigabytes used by the current process. - - - - - -.. c:function:: rint - - .. code:: text - - double precision function rint(n,rho) - - File: :file:`integration.irp.f` - - .. math:: - \int_0^1 dx \exp(-p x^2) x^n - - - - - - -.. c:function:: rint1 - - .. code:: text - - double precision function rint1(n,rho) - - File: :file:`integration.irp.f` - - Standard version of rint - - - - - -.. c:function:: rint_large_n - - .. code:: text - - double precision function rint_large_n(n,rho) - - File: :file:`integration.irp.f` - - Version of rint for large values of n - - - - - -.. c:function:: rint_sum - - .. code:: text - - double precision function rint_sum(n_pt_out,rho,d1) - - File: :file:`integration.irp.f` - - Needed for the calculation of two-electron integrals. - - - - - -.. c:function:: rinteg - - .. code:: text - - double precision function rinteg(n,u) - - File: :file:`need.irp.f` - - - - - - - -.. c:function:: rintgauss - - .. code:: text - - double precision function rintgauss(n) - - File: :file:`need.irp.f` - - - - - - - -.. c:function:: sabpartial - - .. code:: text - - double precision function SABpartial(zA,zB,A,B,nA,nB,gamA,gamB,l) - - File: :file:`need.irp.f` - - - - - - - -.. c:function:: set_order - - .. code:: text - - subroutine set_order(x,iorder,isize) - - File: :file:`sort.irp.f_template_347` - - array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A. - - - - - -.. c:function:: set_order_big - - .. code:: text - - subroutine set_order_big(x,iorder,isize) - - File: :file:`sort.irp.f_template_412` - - array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A. This is a version for very large arrays where the indices need to be in integer*8 format - - - - - -.. c:function:: sort - - .. code:: text - - subroutine sort(x,iorder,isize) - - File: :file:`sort.irp.f_template_293` - - Sort array x(isize). iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. - - - - - -.. c:function:: sorted_dnumber - - .. code:: text - - subroutine sorted_dnumber(x,isize,n) - - File: :file:`sort.irp.f_template_261` - - Returns the number of sorted elements - - - - - -.. c:function:: sorted_i2number - - .. code:: text - - subroutine sorted_i2number(x,isize,n) - - File: :file:`sort.irp.f_template_261` - - Returns the number of sorted elements - - - - - -.. c:function:: sorted_i8number - - .. code:: text - - subroutine sorted_i8number(x,isize,n) - - File: :file:`sort.irp.f_template_261` - - Returns the number of sorted elements - - - - - -.. c:function:: sorted_inumber - - .. code:: text - - subroutine sorted_inumber(x,isize,n) - - File: :file:`sort.irp.f_template_261` - - Returns the number of sorted elements - - - - - -.. c:function:: sorted_number - - .. code:: text - - subroutine sorted_number(x,isize,n) - - File: :file:`sort.irp.f_template_261` - - Returns the number of sorted elements - - - - - -.. c:function:: svd - - .. code:: text - - subroutine svd(A,LDA,U,LDU,D,Vt,LDVt,m,n) - - File: :file:`linear_algebra.irp.f` - - Compute A = U.D.Vt - LDx : leftmost dimension of x - Dimsneion of A is m x n - - - - - - -.. c:function:: total_memory - - .. code:: text - - subroutine total_memory(value) - - File: :file:`memory.irp.f` - - Returns the current used memory in gigabytes used by the current process. - - - - - -.. c:function:: u_dot_u - - .. code:: text - - double precision function u_dot_u(u,sze) - - File: :file:`util.irp.f` - - Compute - - - - - -.. c:function:: u_dot_v - - .. code:: text - - double precision function u_dot_v(u,v,sze) - - File: :file:`util.irp.f` - - Compute - - - - - -.. c:function:: wall_time - - .. code:: text - - subroutine wall_time(t) - - File: :file:`util.irp.f` - - The equivalent of cpu_time, but for the wall time. - - - - - -.. c:function:: write_git_log - - .. code:: text - - subroutine write_git_log(iunit) - - File: :file:`util.irp.f` - - Write the last git commit in file iunit. - - diff --git a/docs/source/modules/zmq.rst b/docs/source/modules/zmq.rst deleted file mode 100644 index e5af0f0c..00000000 --- a/docs/source/modules/zmq.rst +++ /dev/null @@ -1,885 +0,0 @@ -.. _zmq: - -.. program:: zmq - -.. default-role:: option - -=== -zmq -=== - -Definition of |ZeroMQ| sockets and messages. - - - - - -Providers ---------- - - -.. c:var:: qp_run_address - - .. code:: text - - character*(128) :: qp_run_address - integer :: zmq_port_start - - File: :file:`utils.irp.f` - - Address of the qp_run socket Example : tcp://130.120.229.139:12345 - - - - -.. c:var:: zmq_context - - .. code:: text - - integer(ZMQ_PTR) :: zmq_context - integer(omp_lock_kind) :: zmq_lock - - File: :file:`utils.irp.f` - - Context for the ZeroMQ library - - - - -.. c:var:: zmq_lock - - .. code:: text - - integer(ZMQ_PTR) :: zmq_context - integer(omp_lock_kind) :: zmq_lock - - File: :file:`utils.irp.f` - - Context for the ZeroMQ library - - - - -.. c:var:: zmq_port_start - - .. code:: text - - character*(128) :: qp_run_address - integer :: zmq_port_start - - File: :file:`utils.irp.f` - - Address of the qp_run socket Example : tcp://130.120.229.139:12345 - - - - -.. c:var:: zmq_socket_pair_inproc_address - - .. code:: text - - character*(128) :: zmq_socket_pull_tcp_address - character*(128) :: zmq_socket_pair_inproc_address - character*(128) :: zmq_socket_push_tcp_address - character*(128) :: zmq_socket_pull_inproc_address - character*(128) :: zmq_socket_push_inproc_address - character*(128) :: zmq_socket_sub_tcp_address - - File: :file:`utils.irp.f` - - Socket which pulls the results (2) - - - - -.. c:var:: zmq_socket_pull_inproc_address - - .. code:: text - - character*(128) :: zmq_socket_pull_tcp_address - character*(128) :: zmq_socket_pair_inproc_address - character*(128) :: zmq_socket_push_tcp_address - character*(128) :: zmq_socket_pull_inproc_address - character*(128) :: zmq_socket_push_inproc_address - character*(128) :: zmq_socket_sub_tcp_address - - File: :file:`utils.irp.f` - - Socket which pulls the results (2) - - - - -.. c:var:: zmq_socket_pull_tcp_address - - .. code:: text - - character*(128) :: zmq_socket_pull_tcp_address - character*(128) :: zmq_socket_pair_inproc_address - character*(128) :: zmq_socket_push_tcp_address - character*(128) :: zmq_socket_pull_inproc_address - character*(128) :: zmq_socket_push_inproc_address - character*(128) :: zmq_socket_sub_tcp_address - - File: :file:`utils.irp.f` - - Socket which pulls the results (2) - - - - -.. c:var:: zmq_socket_push_inproc_address - - .. code:: text - - character*(128) :: zmq_socket_pull_tcp_address - character*(128) :: zmq_socket_pair_inproc_address - character*(128) :: zmq_socket_push_tcp_address - character*(128) :: zmq_socket_pull_inproc_address - character*(128) :: zmq_socket_push_inproc_address - character*(128) :: zmq_socket_sub_tcp_address - - File: :file:`utils.irp.f` - - Socket which pulls the results (2) - - - - -.. c:var:: zmq_socket_push_tcp_address - - .. code:: text - - character*(128) :: zmq_socket_pull_tcp_address - character*(128) :: zmq_socket_pair_inproc_address - character*(128) :: zmq_socket_push_tcp_address - character*(128) :: zmq_socket_pull_inproc_address - character*(128) :: zmq_socket_push_inproc_address - character*(128) :: zmq_socket_sub_tcp_address - - File: :file:`utils.irp.f` - - Socket which pulls the results (2) - - - - -.. c:var:: zmq_socket_sub_tcp_address - - .. code:: text - - character*(128) :: zmq_socket_pull_tcp_address - character*(128) :: zmq_socket_pair_inproc_address - character*(128) :: zmq_socket_push_tcp_address - character*(128) :: zmq_socket_pull_inproc_address - character*(128) :: zmq_socket_push_inproc_address - character*(128) :: zmq_socket_sub_tcp_address - - File: :file:`utils.irp.f` - - Socket which pulls the results (2) - - - - -.. c:var:: zmq_state - - .. code:: text - - character*(128) :: zmq_state - - File: :file:`utils.irp.f` - - Threads executing work through the ZeroMQ interface - - - - -Subroutines / functions ------------------------ - - - -.. c:function:: add_task_to_taskserver - - .. code:: text - - integer function add_task_to_taskserver(zmq_to_qp_run_socket,task) - - File: :file:`utils.irp.f` - - Get a task from the task server - - - - - -.. c:function:: connect_to_taskserver - - .. code:: text - - integer function connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread) - - File: :file:`utils.irp.f` - - Connect to the task server and obtain the worker ID - - - - - -.. c:function:: disconnect_from_taskserver - - .. code:: text - - integer function disconnect_from_taskserver(zmq_to_qp_run_socket, worker_id) - - File: :file:`utils.irp.f` - - Disconnect from the task server - - - - - -.. c:function:: disconnect_from_taskserver_state - - .. code:: text - - integer function disconnect_from_taskserver_state(zmq_to_qp_run_socket, worker_id, state) - - File: :file:`utils.irp.f` - - Disconnect from the task server - - - - - -.. c:function:: end_parallel_job - - .. code:: text - - subroutine end_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in) - - File: :file:`utils.irp.f` - - End a new parallel job with name 'name'. The slave tasks execute subroutine 'slave' - - - - - -.. c:function:: end_zmq_pair_socket - - .. code:: text - - subroutine end_zmq_pair_socket(zmq_socket_pair) - - File: :file:`utils.irp.f` - - Terminate socket on which the results are sent. - - - - - -.. c:function:: end_zmq_pull_socket - - .. code:: text - - subroutine end_zmq_pull_socket(zmq_socket_pull) - - File: :file:`utils.irp.f` - - Terminate socket on which the results are sent. - - - - - -.. c:function:: end_zmq_push_socket - - .. code:: text - - subroutine end_zmq_push_socket(zmq_socket_push,thread) - - File: :file:`utils.irp.f` - - Terminate socket on which the results are sent. - - - - - -.. c:function:: end_zmq_sub_socket - - .. code:: text - - subroutine end_zmq_sub_socket(zmq_socket_sub) - - File: :file:`utils.irp.f` - - Terminate socket on which the results are sent. - - - - - -.. c:function:: end_zmq_to_qp_run_socket - - .. code:: text - - subroutine end_zmq_to_qp_run_socket(zmq_to_qp_run_socket) - - File: :file:`utils.irp.f` - - Terminate the socket from the application to qp_run - - - - - -.. c:function:: get_task_from_taskserver - - .. code:: text - - integer function get_task_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task) - - File: :file:`utils.irp.f` - - Get a task from the task server - - - - - -.. c:function:: get_tasks_from_taskserver - - .. code:: text - - integer function get_tasks_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task,n_tasks) - - File: :file:`utils.irp.f` - - Get multiple tasks from the task server - - - - - -.. c:function:: new_parallel_job - - .. code:: text - - subroutine new_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in) - - File: :file:`utils.irp.f` - - Start a new parallel job with name 'name'. The slave tasks execute subroutine 'slave' - - - - - -.. c:function:: new_zmq_pair_socket - - .. code:: text - - function new_zmq_pair_socket(bind) - - File: :file:`utils.irp.f` - - Socket on which the collector and the main communicate - - - - - -.. c:function:: new_zmq_pull_socket - - .. code:: text - - function new_zmq_pull_socket() - - File: :file:`utils.irp.f` - - Socket on which the results are sent. If thread is 1, use inproc - - - - - -.. c:function:: new_zmq_push_socket - - .. code:: text - - function new_zmq_push_socket(thread) - - File: :file:`utils.irp.f` - - Socket on which the results are sent. If thread is 1, use inproc - - - - - -.. c:function:: new_zmq_sub_socket - - .. code:: text - - function new_zmq_sub_socket() - - File: :file:`utils.irp.f` - - Socket to read the state published by the Task server - - - - - -.. c:function:: new_zmq_to_qp_run_socket - - .. code:: text - - function new_zmq_to_qp_run_socket() - - File: :file:`utils.irp.f` - - Socket on which the qp_run process replies - - - - - -.. c:function:: reset_zmq_addresses - - .. code:: text - - subroutine reset_zmq_addresses - - File: :file:`utils.irp.f` - - Socket which pulls the results (2) - - - - - -.. c:function:: switch_qp_run_to_master - - .. code:: text - - subroutine switch_qp_run_to_master - - File: :file:`utils.irp.f` - - Address of the master qp_run socket Example : tcp://130.120.229.139:12345 - - - - - -.. c:function:: task_done_to_taskserver - - .. code:: text - - integer function task_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id) - - File: :file:`utils.irp.f` - - Get a task from the task server - - - - - -.. c:function:: tasks_done_to_taskserver - - .. code:: text - - integer function tasks_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id, n_tasks) - - File: :file:`utils.irp.f` - - Get a task from the task server - - - - - -.. c:function:: wait_for_next_state - - .. code:: text - - subroutine wait_for_next_state(state) - - File: :file:`utils.irp.f` - - - - - - - -.. c:function:: wait_for_state - - .. code:: text - - subroutine wait_for_state(state_wait,state) - - File: :file:`utils.irp.f` - - Wait for the ZMQ state to be ready - - - - - -.. c:function:: wait_for_states - - .. code:: text - - subroutine wait_for_states(state_wait,state,n) - - File: :file:`utils.irp.f` - - Wait for the ZMQ state to be ready - - - - - -.. c:function:: zmq_abort - - .. code:: text - - integer function zmq_abort(zmq_to_qp_run_socket) - - File: :file:`utils.irp.f` - - Aborts a running parallel computation - - - - - -.. c:function:: zmq_delete_task - - .. code:: text - - integer function zmq_delete_task(zmq_to_qp_run_socket,zmq_socket_pull,task_id,more) - - File: :file:`utils.irp.f` - - When a task is done, it has to be removed from the list of tasks on the qp_run queue. This guarantees that the results have been received in the pull. - - - - - -.. c:function:: zmq_delete_tasks - - .. code:: text - - integer function zmq_delete_tasks(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) - - File: :file:`utils.irp.f` - - When a task is done, it has to be removed from the list of tasks on the qp_run queue. This guarantees that the results have been received in the pull. - - - - - -.. c:function:: zmq_delete_tasks_async_recv - - .. code:: text - - integer function zmq_delete_tasks_async_recv(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) - - File: :file:`utils.irp.f` - - When a task is done, it has to be removed from the list of tasks on the qp_run queue. This guarantees that the results have been received in the pull. - - - - - -.. c:function:: zmq_delete_tasks_async_send - - .. code:: text - - integer function zmq_delete_tasks_async_send(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) - - File: :file:`utils.irp.f` - - When a task is done, it has to be removed from the list of tasks on the qp_run queue. This guarantees that the results have been received in the pull. - - - - - -.. c:function:: zmq_get8_dvector - - .. code:: text - - integer function zmq_get8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - File: :file:`put_get.irp.f` - - Get a float vector from the qp_run scheduler - - - - - -.. c:function:: zmq_get8_ivector - - .. code:: text - - integer function zmq_get8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - File: :file:`put_get.irp.f` - - Get a vector of integers from the qp_run scheduler - - - - - -.. c:function:: zmq_get_dmatrix - - .. code:: text - - integer function zmq_get_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) - - File: :file:`put_get.irp.f` - - Get a float vector from the qp_run scheduler - - - - - -.. c:function:: zmq_get_dvector - - .. code:: text - - integer function zmq_get_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - File: :file:`put_get.irp.f` - - Get a float vector from the qp_run scheduler - - - - - -.. c:function:: zmq_get_i8matrix - - .. code:: text - - integer function zmq_get_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) - - File: :file:`put_get.irp.f` - - Get a float vector from the qp_run scheduler - - - - - -.. c:function:: zmq_get_imatrix - - .. code:: text - - integer function zmq_get_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) - - File: :file:`put_get.irp.f` - - Get a float vector from the qp_run scheduler - - - - - -.. c:function:: zmq_get_int - - .. code:: text - - integer function zmq_get_int(zmq_to_qp_run_socket, worker_id, name, x) - - File: :file:`put_get.irp.f` - - Get a vector of integers from the qp_run scheduler - - - - - -.. c:function:: zmq_get_int_nompi - - .. code:: text - - integer function zmq_get_int_nompi(zmq_to_qp_run_socket, worker_id, name, x) - - File: :file:`put_get.irp.f` - - Get a vector of integers from the qp_run scheduler - - - - - -.. c:function:: zmq_get_ivector - - .. code:: text - - integer function zmq_get_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - File: :file:`put_get.irp.f` - - Get a vector of integers from the qp_run scheduler - - - - - -.. c:function:: zmq_port - - .. code:: text - - function zmq_port(ishift) - - File: :file:`utils.irp.f` - - Return the value of the ZMQ port from the corresponding integer - - - - - -.. c:function:: zmq_put8_dvector - - .. code:: text - - integer function zmq_put8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - File: :file:`put_get.irp.f` - - Put a float vector on the qp_run scheduler - - - - - -.. c:function:: zmq_put8_ivector - - .. code:: text - - integer function zmq_put8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - File: :file:`put_get.irp.f` - - Put a vector of integers on the qp_run scheduler - - - - - -.. c:function:: zmq_put_dmatrix - - .. code:: text - - integer function zmq_put_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) - - File: :file:`put_get.irp.f` - - Put a float vector on the qp_run scheduler - - - - - -.. c:function:: zmq_put_dvector - - .. code:: text - - integer function zmq_put_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - File: :file:`put_get.irp.f` - - Put a float vector on the qp_run scheduler - - - - - -.. c:function:: zmq_put_i8matrix - - .. code:: text - - integer function zmq_put_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) - - File: :file:`put_get.irp.f` - - Put a float vector on the qp_run scheduler - - - - - -.. c:function:: zmq_put_imatrix - - .. code:: text - - integer function zmq_put_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) - - File: :file:`put_get.irp.f` - - Put a float vector on the qp_run scheduler - - - - - -.. c:function:: zmq_put_int - - .. code:: text - - integer function zmq_put_int(zmq_to_qp_run_socket, worker_id, name, x) - - File: :file:`put_get.irp.f` - - Put a vector of integers on the qp_run scheduler - - - - - -.. c:function:: zmq_put_ivector - - .. code:: text - - integer function zmq_put_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) - - File: :file:`put_get.irp.f` - - Put a vector of integers on the qp_run scheduler - - - - - -.. c:function:: zmq_set_running - - .. code:: text - - integer function zmq_set_running(zmq_to_qp_run_socket) - - File: :file:`utils.irp.f` - - Set the job to Running in QP-run - - From 123de0381ee51b8e00346bc317f2364cb5bc40e0 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Dec 2018 19:50:28 +0100 Subject: [PATCH 10/10] Added modules --- docs/source/modules/ao_basis.rst | 656 +++ docs/source/modules/ao_one_e_integrals.rst | 992 +++++ docs/source/modules/aux_quantities.rst | 44 + docs/source/modules/becke_numerical_grid.rst | 405 ++ docs/source/modules/bitmask.rst | 1254 ++++++ docs/source/modules/cis.rst | 117 + docs/source/modules/cisd.rst | 117 + docs/source/modules/davidson.rst | 682 +++ docs/source/modules/davidson_dressed.rst | 13 + docs/source/modules/davidson_undressed.rst | 45 + docs/source/modules/density_for_dft.rst | 119 + docs/source/modules/determinants.rst | 3940 +++++++++++++++++ docs/source/modules/dft_keywords.rst | 59 + docs/source/modules/dft_utils_one_e.rst | 1909 ++++++++ docs/source/modules/dressing.rst | 36 + docs/source/modules/electrons.rst | 76 + docs/source/modules/ezfio_files.rst | 149 + docs/source/modules/fci.rst | 921 ++++ docs/source/modules/generators_cas.rst | 19 + docs/source/modules/generators_full.rst | 145 + docs/source/modules/hartree_fock.rst | 125 + docs/source/modules/iterations.rst | 114 + docs/source/modules/kohn_sham.rst | 349 ++ docs/source/modules/kohn_sham_rs.rst | 68 + docs/source/modules/mo_basis.rst | 367 ++ docs/source/modules/mo_guess.rst | 87 + docs/source/modules/mo_one_e_integrals.rst | 291 ++ .../source/modules/mo_two_e_erf_integrals.rst | 510 +++ docs/source/modules/mo_two_e_integrals.rst | 616 +++ docs/source/modules/mpi.rst | 130 + docs/source/modules/nuclei.rst | 351 ++ docs/source/modules/perturbation.rst | 650 +++ docs/source/modules/pseudo.rst | 94 + docs/source/modules/psiref_cas.rst | 177 + docs/source/modules/psiref_utils.rst | 382 ++ docs/source/modules/read_integral.rst | 38 + docs/source/modules/scf_utils.rst | 375 ++ docs/source/modules/selectors_cassd.rst | 13 + docs/source/modules/selectors_full.rst | 72 + docs/source/modules/selectors_utils.rst | 362 ++ docs/source/modules/single_ref_method.rst | 14 + docs/source/modules/slave.rst | 73 + docs/source/modules/tools.rst | 217 + docs/source/modules/utils.rst | 1914 ++++++++ docs/source/modules/zmq.rst | 885 ++++ .../programmers_guide/index_providers.rst | 396 +- docs/source/users_guide/plugins.rst | 6 +- 47 files changed, 20151 insertions(+), 223 deletions(-) create mode 100644 docs/source/modules/ao_basis.rst create mode 100644 docs/source/modules/ao_one_e_integrals.rst create mode 100644 docs/source/modules/aux_quantities.rst create mode 100644 docs/source/modules/becke_numerical_grid.rst create mode 100644 docs/source/modules/bitmask.rst create mode 100644 docs/source/modules/cis.rst create mode 100644 docs/source/modules/cisd.rst create mode 100644 docs/source/modules/davidson.rst create mode 100644 docs/source/modules/davidson_dressed.rst create mode 100644 docs/source/modules/davidson_undressed.rst create mode 100644 docs/source/modules/density_for_dft.rst create mode 100644 docs/source/modules/determinants.rst create mode 100644 docs/source/modules/dft_keywords.rst create mode 100644 docs/source/modules/dft_utils_one_e.rst create mode 100644 docs/source/modules/dressing.rst create mode 100644 docs/source/modules/electrons.rst create mode 100644 docs/source/modules/ezfio_files.rst create mode 100644 docs/source/modules/fci.rst create mode 100644 docs/source/modules/generators_cas.rst create mode 100644 docs/source/modules/generators_full.rst create mode 100644 docs/source/modules/hartree_fock.rst create mode 100644 docs/source/modules/iterations.rst create mode 100644 docs/source/modules/kohn_sham.rst create mode 100644 docs/source/modules/kohn_sham_rs.rst create mode 100644 docs/source/modules/mo_basis.rst create mode 100644 docs/source/modules/mo_guess.rst create mode 100644 docs/source/modules/mo_one_e_integrals.rst create mode 100644 docs/source/modules/mo_two_e_erf_integrals.rst create mode 100644 docs/source/modules/mo_two_e_integrals.rst create mode 100644 docs/source/modules/mpi.rst create mode 100644 docs/source/modules/nuclei.rst create mode 100644 docs/source/modules/perturbation.rst create mode 100644 docs/source/modules/pseudo.rst create mode 100644 docs/source/modules/psiref_cas.rst create mode 100644 docs/source/modules/psiref_utils.rst create mode 100644 docs/source/modules/read_integral.rst create mode 100644 docs/source/modules/scf_utils.rst create mode 100644 docs/source/modules/selectors_cassd.rst create mode 100644 docs/source/modules/selectors_full.rst create mode 100644 docs/source/modules/selectors_utils.rst create mode 100644 docs/source/modules/single_ref_method.rst create mode 100644 docs/source/modules/slave.rst create mode 100644 docs/source/modules/tools.rst create mode 100644 docs/source/modules/utils.rst create mode 100644 docs/source/modules/zmq.rst diff --git a/docs/source/modules/ao_basis.rst b/docs/source/modules/ao_basis.rst new file mode 100644 index 00000000..f7954784 --- /dev/null +++ b/docs/source/modules/ao_basis.rst @@ -0,0 +1,656 @@ +.. _ao_basis: + +.. program:: ao_basis + +.. default-role:: option + +======== +ao_basis +======== + +This module describes the atomic orbitals basis set. + +An |AO| :math:`\chi` centered on nucleus A is represented as: + +.. math:: + + \chi_i({\bf r}) = (x-X_A)^a (y-Y_A)^b (z-Z_A)^c \sum_k c_{ki} e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} + + +The |AO| coefficients are normalized as: + +.. math:: + + {\tilde c}_{ki} = \frac{c_{ki}}{ \int \left( (x-X_A)^a (y-Y_A)^b (z-Z_A)^c e^{-\gamma_{ki} |{\bf r} - {\bf R}_A|^2} \right)^2 dr} + +Warning: `ao_coef` contains the |AO| coefficients given in input. These do not +include the normalization constant of the |AO|. The `ao_coef_normalized` provider includes +this normalization factor. + +The |AOs| are also sorted by increasing exponent to accelerate the calculation of +the two electron integrals. + + + + + + +EZFIO parameters +---------------- + +.. option:: ao_basis + + Name of the |AO| basis set + + +.. option:: ao_num + + Number of |AOs| + + +.. option:: ao_prim_num + + Number of primitives per |AO| + + +.. option:: ao_prim_num_max + + Maximum number of primitives + + Default: =maxval(ao_basis.ao_prim_num) + +.. option:: ao_nucl + + Index of the nucleus on which the |AO| is centered + + +.. option:: ao_power + + Powers of x, y and z for each |AO| + + +.. option:: ao_coef + + Primitive coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs. + + +.. option:: ao_expo + + Exponents for each primitive of each |AO| + + +.. option:: ao_md5 + + MD5 key, specific of the |AO| basis + + +.. option:: ao_cartesian + + If |true|, use |AOs| in Cartesian coordinates (6d,10f,...) + + Default: false + + +Providers +--------- + + +.. c:var:: ao_coef_normalization_factor + + .. code:: text + + double precision, allocatable :: ao_coef_normalized (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_coef_normalization_factor (ao_num) + + File: :file:`aos.irp.f` + + Coefficients including the |AO| normalization + + + + +.. c:var:: ao_coef_normalization_libint_factor + + .. code:: text + + double precision, allocatable :: ao_coef_normalization_libint_factor (ao_num) + + File: :file:`aos.irp.f` + + |AO| normalization for interfacing with libint + + + + +.. c:var:: ao_coef_normalized + + .. code:: text + + double precision, allocatable :: ao_coef_normalized (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_coef_normalization_factor (ao_num) + + File: :file:`aos.irp.f` + + Coefficients including the |AO| normalization + + + + +.. c:var:: ao_coef_normalized_ordered + + .. code:: text + + double precision, allocatable :: ao_coef_normalized_ordered (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_ordered (ao_num,ao_prim_num_max) + + File: :file:`aos.irp.f` + + Sorted primitives to accelerate 4 index |MO| transformation + + + + +.. c:var:: ao_coef_normalized_ordered_transp + + .. code:: text + + double precision, allocatable :: ao_coef_normalized_ordered_transp (ao_prim_num_max,ao_num) + + File: :file:`aos.irp.f` + + Transposed :c:var:`ao_coef_normalized_ordered` + + + + +.. c:var:: ao_coef_normalized_ordered_transp_per_nucl + + .. code:: text + + double precision, allocatable :: ao_coef_normalized_ordered_transp_per_nucl (ao_prim_num_max,N_AOs_max,nucl_num) + + File: :file:`aos_transp.irp.f` + + + + + + +.. c:var:: ao_expo_ordered + + .. code:: text + + double precision, allocatable :: ao_coef_normalized_ordered (ao_num,ao_prim_num_max) + double precision, allocatable :: ao_expo_ordered (ao_num,ao_prim_num_max) + + File: :file:`aos.irp.f` + + Sorted primitives to accelerate 4 index |MO| transformation + + + + +.. c:var:: ao_expo_ordered_transp + + .. code:: text + + double precision, allocatable :: ao_expo_ordered_transp (ao_prim_num_max,ao_num) + + File: :file:`aos.irp.f` + + Transposed :c:var:`ao_expo_ordered` + + + + +.. c:var:: ao_expo_ordered_transp_per_nucl + + .. code:: text + + double precision, allocatable :: ao_expo_ordered_transp_per_nucl (ao_prim_num_max,N_AOs_max,nucl_num) + + File: :file:`aos_transp.irp.f` + + + + + + +.. c:var:: ao_l + + .. code:: text + + integer, allocatable :: ao_l (ao_num) + integer :: ao_l_max + character*(128), allocatable :: ao_l_char (ao_num) + + File: :file:`aos.irp.f` + + :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` + + + + +.. c:var:: ao_l_char + + .. code:: text + + integer, allocatable :: ao_l (ao_num) + integer :: ao_l_max + character*(128), allocatable :: ao_l_char (ao_num) + + File: :file:`aos.irp.f` + + :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` + + + + +.. c:var:: ao_l_char_space + + .. code:: text + + character*(4), allocatable :: ao_l_char_space (ao_num) + + File: :file:`aos.irp.f` + + Converts an l value to a string + + + + +.. c:var:: ao_l_max + + .. code:: text + + integer, allocatable :: ao_l (ao_num) + integer :: ao_l_max + character*(128), allocatable :: ao_l_char (ao_num) + + File: :file:`aos.irp.f` + + :math:`l` value of the |AO|: :math`a+b+c` in :math:`x^a y^b z^c` + + + + +.. c:var:: ao_power_ordered_transp_per_nucl + + .. code:: text + + integer, allocatable :: ao_power_ordered_transp_per_nucl (3,N_AOs_max,nucl_num) + + File: :file:`aos_transp.irp.f` + + + + + + +.. c:var:: ao_prim_num_max + + .. code:: text + + integer :: ao_prim_num_max + + File: :file:`aos.irp.f` + + Max number of primitives. + + + + +.. c:var:: cart_to_sphe_0 + + .. code:: text + + double precision, allocatable :: cart_to_sphe_0 (1,1) + + File: :file:`spherical_to_cartesian.irp.f` + + Spherical -> Cartesian Transformation matrix for l=0 + + + + +.. c:var:: cart_to_sphe_1 + + .. code:: text + + double precision, allocatable :: cart_to_sphe_1 (3,3) + + File: :file:`spherical_to_cartesian.irp.f` + + Spherical -> Cartesian Transformation matrix for l=1 + + + + +.. c:var:: cart_to_sphe_2 + + .. code:: text + + double precision, allocatable :: cart_to_sphe_2 (6,5) + + File: :file:`spherical_to_cartesian.irp.f` + + Spherical -> Cartesian Transformation matrix for l=2 + + + + +.. c:var:: cart_to_sphe_3 + + .. code:: text + + double precision, allocatable :: cart_to_sphe_3 (10,7) + + File: :file:`spherical_to_cartesian.irp.f` + + Spherical -> Cartesian Transformation matrix for l=3 + + + + +.. c:var:: cart_to_sphe_4 + + .. code:: text + + double precision, allocatable :: cart_to_sphe_4 (15,9) + + File: :file:`spherical_to_cartesian.irp.f` + + Spherical -> Cartesian Transformation matrix for l=4 + + + + +.. c:var:: cart_to_sphe_5 + + .. code:: text + + double precision, allocatable :: cart_to_sphe_5 (21,11) + + File: :file:`spherical_to_cartesian.irp.f` + + Spherical -> Cartesian Transformation matrix for l=5 + + + + +.. c:var:: cart_to_sphe_6 + + .. code:: text + + double precision, allocatable :: cart_to_sphe_6 (28,13) + + File: :file:`spherical_to_cartesian.irp.f` + + Spherical -> Cartesian Transformation matrix for l=6 + + + + +.. c:var:: cart_to_sphe_7 + + .. code:: text + + double precision, allocatable :: cart_to_sphe_7 (36,15) + + File: :file:`spherical_to_cartesian.irp.f` + + Spherical -> Cartesian Transformation matrix for l=7 + + + + +.. c:var:: cart_to_sphe_8 + + .. code:: text + + double precision, allocatable :: cart_to_sphe_8 (45,17) + + File: :file:`spherical_to_cartesian.irp.f` + + Spherical -> Cartesian Transformation matrix for l=8 + + + + +.. c:var:: cart_to_sphe_9 + + .. code:: text + + double precision, allocatable :: cart_to_sphe_9 (55,19) + + File: :file:`spherical_to_cartesian.irp.f` + + Spherical -> Cartesian Transformation matrix for l=9 + + + + +.. c:var:: l_to_charater + + .. code:: text + + character*(128), allocatable :: l_to_charater (0:7) + + File: :file:`aos.irp.f` + + Character corresponding to the "l" value of an |AO| + + + + +.. c:var:: n_aos_max + + .. code:: text + + integer, allocatable :: nucl_n_aos (nucl_num) + integer :: n_aos_max + + File: :file:`aos.irp.f` + + Number of |AOs| per atom + + + + +.. c:var:: n_pt_max_i_x + + .. code:: text + + integer :: n_pt_max_integrals + integer :: n_pt_max_i_x + + File: :file:`dimensions_integrals.irp.f` + + Number of points used in the numerical integrations. + + + + +.. c:var:: n_pt_max_integrals + + .. code:: text + + integer :: n_pt_max_integrals + integer :: n_pt_max_i_x + + File: :file:`dimensions_integrals.irp.f` + + Number of points used in the numerical integrations. + + + + +.. c:var:: nucl_aos + + .. code:: text + + integer, allocatable :: nucl_aos (nucl_num,N_AOs_max) + + File: :file:`aos.irp.f` + + List of |AOs| centered on each atom + + + + +.. c:var:: nucl_aos_transposed + + .. code:: text + + integer, allocatable :: nucl_aos_transposed (N_AOs_max,nucl_num) + + File: :file:`aos_transp.irp.f` + + List of AOs attached on each atom + + + + +.. c:var:: nucl_list_shell_aos + + .. code:: text + + integer, allocatable :: nucl_list_shell_aos (nucl_num,N_AOs_max) + integer, allocatable :: nucl_num_shell_aos (nucl_num) + + File: :file:`aos.irp.f` + + Index of the shell type |AOs| and of the corresponding |AOs| By convention, for p,d,f and g |AOs|, we take the index of the |AO| with the the corresponding power in the x axis + + + + +.. c:var:: nucl_n_aos + + .. code:: text + + integer, allocatable :: nucl_n_aos (nucl_num) + integer :: n_aos_max + + File: :file:`aos.irp.f` + + Number of |AOs| per atom + + + + +.. c:var:: nucl_num_shell_aos + + .. code:: text + + integer, allocatable :: nucl_list_shell_aos (nucl_num,N_AOs_max) + integer, allocatable :: nucl_num_shell_aos (nucl_num) + + File: :file:`aos.irp.f` + + Index of the shell type |AOs| and of the corresponding |AOs| By convention, for p,d,f and g |AOs|, we take the index of the |AO| with the the corresponding power in the x axis + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: ao_power_index + + .. code:: text + + integer function ao_power_index(nx,ny,nz) + + File: :file:`aos.irp.f` + + Unique index given to a triplet of powers: + :math:`\frac{1}{2} (l-n_x) (l-n_x+1) + n_z + 1` + + + + + +.. c:function:: ao_value + + .. code:: text + + double precision function ao_value(i,r) + + File: :file:`aos_value.irp.f` + + return the value of the ith ao at point r + + + + + +.. c:function:: give_all_aos_and_grad_and_lapl_at_r + + .. code:: text + + subroutine give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array) + + File: :file:`aos_value.irp.f` + + input : r(1) ==> r(1) = x, r(2) = y, r(3) = z output : aos_array(i) = ao(i) evaluated at r : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r + + + + + +.. c:function:: give_all_aos_and_grad_at_r + + .. code:: text + + subroutine give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array) + + File: :file:`aos_value.irp.f` + + input : r(1) ==> r(1) = x, r(2) = y, r(3) = z output : aos_array(i) = ao(i) evaluated at r : aos_grad_array(1,i) = gradient X of the ao(i) evaluated at r + + + + + +.. c:function:: give_all_aos_at_r + + .. code:: text + + subroutine give_all_aos_at_r(r,aos_array) + + File: :file:`aos_value.irp.f` + + input : r == r(1) = x and so on aos_array(i) = aos(i) evaluated in r + + + + + +.. c:function:: give_all_aos_at_r_old + + .. code:: text + + subroutine give_all_aos_at_r_old(r,aos_array) + + File: :file:`aos_value.irp.f` + + gives the values of aos at a given point r + + + + + +.. c:function:: primitive_value + + .. code:: text + + double precision function primitive_value(i,j,r) + + File: :file:`aos_value.irp.f` + + return the value of the jth primitive of ith ao at point r WITHOUT THE COEF + + diff --git a/docs/source/modules/ao_one_e_integrals.rst b/docs/source/modules/ao_one_e_integrals.rst new file mode 100644 index 00000000..4b4d764a --- /dev/null +++ b/docs/source/modules/ao_one_e_integrals.rst @@ -0,0 +1,992 @@ +.. _ao_one_e_integrals: + +.. program:: ao_one_e_integrals + +.. default-role:: option + +================== +ao_one_e_integrals +================== + +All the one-electron integrals in the |AO| basis are here. + +The most important providers for usual quantum-chemistry calculation are: + +# `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) +# `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) +# `ao_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) + +Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`. + + + +EZFIO parameters +---------------- + +.. option:: integral_nuclear + + Nucleus-electron integrals in |AO| basis set + + +.. option:: integral_kinetic + + Kinetic energy integrals in |AO| basis set + + +.. option:: integral_pseudo + + Pseudopotential integrals in |AO| basis set + + +.. option:: integral_overlap + + Overlap integrals in |AO| basis set + + +.. option:: disk_access_ao_one_integrals + + Read/Write |AO| one-electron integrals from/to disk [ Write | Read | None ] + + Default: None + + +Providers +--------- + + +.. c:var:: ao_cart_to_sphe_coef + + .. code:: text + + double precision, allocatable :: ao_cart_to_sphe_coef (ao_num,ao_num) + integer :: ao_cart_to_sphe_num + + File: :file:`ao_ortho_canonical.irp.f` + + Coefficients to go from cartesian to spherical coordinates in the current basis set + + + + +.. c:var:: ao_cart_to_sphe_inv + + .. code:: text + + double precision, allocatable :: ao_cart_to_sphe_inv (ao_cart_to_sphe_num,ao_num) + + File: :file:`ao_ortho_canonical.irp.f` + + Inverse of :c:var:`ao_cart_to_sphe_coef` + + + + +.. c:var:: ao_cart_to_sphe_num + + .. code:: text + + double precision, allocatable :: ao_cart_to_sphe_coef (ao_num,ao_num) + integer :: ao_cart_to_sphe_num + + File: :file:`ao_ortho_canonical.irp.f` + + Coefficients to go from cartesian to spherical coordinates in the current basis set + + + + +.. c:var:: ao_cart_to_sphe_overlap + + .. code:: text + + double precision, allocatable :: ao_cart_to_sphe_overlap (ao_cart_to_sphe_num,ao_cart_to_sphe_num) + + File: :file:`ao_ortho_canonical.irp.f` + + |AO| overlap matrix in the spherical basis set + + + + +.. c:var:: ao_deriv2_x + + .. code:: text + + double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) + + File: :file:`kin_ao_ints.irp.f` + + Second derivative matrix elements in the |AO| basis. + :math:`{\tt ao_deriv2_x} = \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` + + + + + +.. c:var:: ao_deriv2_y + + .. code:: text + + double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) + + File: :file:`kin_ao_ints.irp.f` + + Second derivative matrix elements in the |AO| basis. + :math:`{\tt ao_deriv2_x} = \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` + + + + + +.. c:var:: ao_deriv2_z + + .. code:: text + + double precision, allocatable :: ao_deriv2_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv2_z (ao_num,ao_num) + + File: :file:`kin_ao_ints.irp.f` + + Second derivative matrix elements in the |AO| basis. + :math:`{\tt ao_deriv2_x} = \langle \chi_i(x,y,z) | \frac{\partial^2}{\partial x^2} |\chi_j (x,y,z) \rangle` + + + + + +.. c:var:: ao_deriv_1_x + + .. code:: text + + double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) + + File: :file:`spread_dipole_ao.irp.f` + + * array of the integrals of AO_i * d/dx AO_j + * array of the integrals of AO_i * d/dy AO_j + * array of the integrals of AO_i * d/dz AO_j + + + + +.. c:var:: ao_deriv_1_y + + .. code:: text + + double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) + + File: :file:`spread_dipole_ao.irp.f` + + * array of the integrals of AO_i * d/dx AO_j + * array of the integrals of AO_i * d/dy AO_j + * array of the integrals of AO_i * d/dz AO_j + + + + +.. c:var:: ao_deriv_1_z + + .. code:: text + + double precision, allocatable :: ao_deriv_1_x (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_y (ao_num,ao_num) + double precision, allocatable :: ao_deriv_1_z (ao_num,ao_num) + + File: :file:`spread_dipole_ao.irp.f` + + * array of the integrals of AO_i * d/dx AO_j + * array of the integrals of AO_i * d/dy AO_j + * array of the integrals of AO_i * d/dz AO_j + + + + +.. c:var:: ao_dipole_x + + .. code:: text + + double precision, allocatable :: ao_dipole_x (ao_num,ao_num) + double precision, allocatable :: ao_dipole_y (ao_num,ao_num) + double precision, allocatable :: ao_dipole_z (ao_num,ao_num) + + File: :file:`spread_dipole_ao.irp.f` + + * array of the integrals of AO_i * x AO_j + * array of the integrals of AO_i * y AO_j + * array of the integrals of AO_i * z AO_j + + + + +.. c:var:: ao_dipole_y + + .. code:: text + + double precision, allocatable :: ao_dipole_x (ao_num,ao_num) + double precision, allocatable :: ao_dipole_y (ao_num,ao_num) + double precision, allocatable :: ao_dipole_z (ao_num,ao_num) + + File: :file:`spread_dipole_ao.irp.f` + + * array of the integrals of AO_i * x AO_j + * array of the integrals of AO_i * y AO_j + * array of the integrals of AO_i * z AO_j + + + + +.. c:var:: ao_dipole_z + + .. code:: text + + double precision, allocatable :: ao_dipole_x (ao_num,ao_num) + double precision, allocatable :: ao_dipole_y (ao_num,ao_num) + double precision, allocatable :: ao_dipole_z (ao_num,ao_num) + + File: :file:`spread_dipole_ao.irp.f` + + * array of the integrals of AO_i * x AO_j + * array of the integrals of AO_i * y AO_j + * array of the integrals of AO_i * z AO_j + + + + +.. c:var:: ao_kinetic_integral + + .. code:: text + + double precision, allocatable :: ao_kinetic_integral (ao_num,ao_num) + + File: :file:`kin_ao_ints.irp.f` + + Kinetic energy integrals in the |AO| basis. + :math:`\langle \chi_i |\hat{T}| \chi_j \rangle` + + + + +.. c:var:: ao_mono_elec_integral + + .. code:: text + + double precision, allocatable :: ao_mono_elec_integral (ao_num,ao_num) + double precision, allocatable :: ao_mono_elec_integral_diag (ao_num) + + File: :file:`ao_mono_ints.irp.f` + + Array of the one-electron Hamiltonian on the |AO| basis. + + + + +.. c:var:: ao_mono_elec_integral_diag + + .. code:: text + + double precision, allocatable :: ao_mono_elec_integral (ao_num,ao_num) + double precision, allocatable :: ao_mono_elec_integral_diag (ao_num) + + File: :file:`ao_mono_ints.irp.f` + + Array of the one-electron Hamiltonian on the |AO| basis. + + + + +.. c:var:: ao_nucl_elec_integral + + .. code:: text + + double precision, allocatable :: ao_nucl_elec_integral (ao_num,ao_num) + + File: :file:`pot_ao_ints.irp.f` + + Nucleus-electron interaction, in the |AO| basis set. + :math:`\langle \chi_i | -\sum_A \frac{1}{|r-R_A|} | \chi_j \rangle` + + + + +.. c:var:: ao_nucl_elec_integral_per_atom + + .. code:: text + + double precision, allocatable :: ao_nucl_elec_integral_per_atom (ao_num,ao_num,nucl_num) + + File: :file:`pot_ao_ints.irp.f` + + Nucleus-electron interaction in the |AO| basis set, per atom A. + :math:`\langle \chi_i | -\frac{1}{|r-R_A|} | \chi_j \rangle` + + + + +.. c:var:: ao_ortho_canonical_coef + + .. code:: text + + double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num) + integer :: ao_ortho_canonical_num + + File: :file:`ao_ortho_canonical.irp.f` + + matrix of the coefficients of the mos generated by the orthonormalization by the S^{-1/2} canonical transformation of the aos ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital + + + + +.. c:var:: ao_ortho_canonical_coef_inv + + .. code:: text + + double precision, allocatable :: ao_ortho_canonical_coef_inv (ao_num,ao_num) + + File: :file:`ao_ortho_canonical.irp.f` + + ao_ortho_canonical_coef^(-1) + + + + +.. c:var:: ao_ortho_canonical_num + + .. code:: text + + double precision, allocatable :: ao_ortho_canonical_coef (ao_num,ao_num) + integer :: ao_ortho_canonical_num + + File: :file:`ao_ortho_canonical.irp.f` + + matrix of the coefficients of the mos generated by the orthonormalization by the S^{-1/2} canonical transformation of the aos ao_ortho_canonical_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_canonical orbital + + + + +.. c:var:: ao_ortho_canonical_overlap + + .. code:: text + + double precision, allocatable :: ao_ortho_canonical_overlap (ao_ortho_canonical_num,ao_ortho_canonical_num) + + File: :file:`ao_ortho_canonical.irp.f` + + overlap matrix of the ao_ortho_canonical. Expected to be the Identity + + + + +.. c:var:: ao_overlap + + .. code:: text + + double precision, allocatable :: ao_overlap (ao_num,ao_num) + double precision, allocatable :: ao_overlap_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_z (ao_num,ao_num) + + File: :file:`ao_overlap.irp.f` + + Overlap between atomic basis functions: + :math:`\int \chi_i(r) \chi_j(r) dr` + + + + +.. c:var:: ao_overlap_abs + + .. code:: text + + double precision, allocatable :: ao_overlap_abs (ao_num,ao_num) + + File: :file:`ao_overlap.irp.f` + + Overlap between absolute values of atomic basis functions: + :math:`\int |\chi_i(r)| |\chi_j(r)| dr` + + + + +.. c:var:: ao_overlap_x + + .. code:: text + + double precision, allocatable :: ao_overlap (ao_num,ao_num) + double precision, allocatable :: ao_overlap_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_z (ao_num,ao_num) + + File: :file:`ao_overlap.irp.f` + + Overlap between atomic basis functions: + :math:`\int \chi_i(r) \chi_j(r) dr` + + + + +.. c:var:: ao_overlap_y + + .. code:: text + + double precision, allocatable :: ao_overlap (ao_num,ao_num) + double precision, allocatable :: ao_overlap_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_z (ao_num,ao_num) + + File: :file:`ao_overlap.irp.f` + + Overlap between atomic basis functions: + :math:`\int \chi_i(r) \chi_j(r) dr` + + + + +.. c:var:: ao_overlap_z + + .. code:: text + + double precision, allocatable :: ao_overlap (ao_num,ao_num) + double precision, allocatable :: ao_overlap_x (ao_num,ao_num) + double precision, allocatable :: ao_overlap_y (ao_num,ao_num) + double precision, allocatable :: ao_overlap_z (ao_num,ao_num) + + File: :file:`ao_overlap.irp.f` + + Overlap between atomic basis functions: + :math:`\int \chi_i(r) \chi_j(r) dr` + + + + +.. c:var:: ao_pseudo_integral + + .. code:: text + + double precision, allocatable :: ao_pseudo_integral (ao_num,ao_num) + + File: :file:`pot_ao_pseudo_ints.irp.f` + + Pseudo-potential integrals in the |AO| basis set. + + + + +.. c:var:: ao_pseudo_integral_local + + .. code:: text + + double precision, allocatable :: ao_pseudo_integral_local (ao_num,ao_num) + + File: :file:`pot_ao_pseudo_ints.irp.f` + + Local pseudo-potential + + + + +.. c:var:: ao_pseudo_integral_non_local + + .. code:: text + + double precision, allocatable :: ao_pseudo_integral_non_local (ao_num,ao_num) + + File: :file:`pot_ao_pseudo_ints.irp.f` + + Non-local pseudo-potential + + + + +.. c:var:: ao_spread_x + + .. code:: text + + double precision, allocatable :: ao_spread_x (ao_num,ao_num) + double precision, allocatable :: ao_spread_y (ao_num,ao_num) + double precision, allocatable :: ao_spread_z (ao_num,ao_num) + + File: :file:`spread_dipole_ao.irp.f` + + * array of the integrals of AO_i * x^2 AO_j + * array of the integrals of AO_i * y^2 AO_j + * array of the integrals of AO_i * z^2 AO_j + + + + +.. c:var:: ao_spread_y + + .. code:: text + + double precision, allocatable :: ao_spread_x (ao_num,ao_num) + double precision, allocatable :: ao_spread_y (ao_num,ao_num) + double precision, allocatable :: ao_spread_z (ao_num,ao_num) + + File: :file:`spread_dipole_ao.irp.f` + + * array of the integrals of AO_i * x^2 AO_j + * array of the integrals of AO_i * y^2 AO_j + * array of the integrals of AO_i * z^2 AO_j + + + + +.. c:var:: ao_spread_z + + .. code:: text + + double precision, allocatable :: ao_spread_x (ao_num,ao_num) + double precision, allocatable :: ao_spread_y (ao_num,ao_num) + double precision, allocatable :: ao_spread_z (ao_num,ao_num) + + File: :file:`spread_dipole_ao.irp.f` + + * array of the integrals of AO_i * x^2 AO_j + * array of the integrals of AO_i * y^2 AO_j + * array of the integrals of AO_i * z^2 AO_j + + + + +.. c:var:: i_x1_pol_mult_mono_elec + + .. code:: text + + recursive subroutine I_x1_pol_mult_mono_elec(a,c,R1x,R1xp,R2x,d,nd,n_pt_in) + + File: :file:`pot_ao_ints.irp.f` + + Recursive routine involved in the electron-nucleus potential + + + + +.. c:var:: i_x2_pol_mult_mono_elec + + .. code:: text + + recursive subroutine I_x2_pol_mult_mono_elec(c,R1x,R1xp,R2x,d,nd,dim) + + File: :file:`pot_ao_ints.irp.f` + + Recursive routine involved in the electron-nucleus potential + + + + +.. c:var:: pseudo_dz_k_transp + + .. code:: text + + double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) + integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) + double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) + + File: :file:`pot_ao_pseudo_ints.irp.f` + + Transposed arrays for pseudopotentials + + + + +.. c:var:: pseudo_dz_kl_transp + + .. code:: text + + double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + + File: :file:`pot_ao_pseudo_ints.irp.f` + + Transposed arrays for pseudopotentials + + + + +.. c:var:: pseudo_n_k_transp + + .. code:: text + + double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) + integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) + double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) + + File: :file:`pot_ao_pseudo_ints.irp.f` + + Transposed arrays for pseudopotentials + + + + +.. c:var:: pseudo_n_kl_transp + + .. code:: text + + double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + + File: :file:`pot_ao_pseudo_ints.irp.f` + + Transposed arrays for pseudopotentials + + + + +.. c:var:: pseudo_v_k_transp + + .. code:: text + + double precision, allocatable :: pseudo_v_k_transp (pseudo_klocmax,nucl_num) + integer, allocatable :: pseudo_n_k_transp (pseudo_klocmax,nucl_num) + double precision, allocatable :: pseudo_dz_k_transp (pseudo_klocmax,nucl_num) + + File: :file:`pot_ao_pseudo_ints.irp.f` + + Transposed arrays for pseudopotentials + + + + +.. c:var:: pseudo_v_kl_transp + + .. code:: text + + double precision, allocatable :: pseudo_v_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + integer, allocatable :: pseudo_n_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + double precision, allocatable :: pseudo_dz_kl_transp (pseudo_kmax,0:pseudo_lmax,nucl_num) + + File: :file:`pot_ao_pseudo_ints.irp.f` + + Transposed arrays for pseudopotentials + + + + +.. c:var:: read_ao_one_integrals + + .. code:: text + + logical :: read_ao_one_integrals + logical :: write_ao_one_integrals + + File: :file:`read_write.irp.f` + + If |true|, read/write one-electrons from/to disk. + + + + +.. c:var:: s_half + + .. code:: text + + double precision, allocatable :: s_half (ao_num,ao_num) + + File: :file:`ao_overlap.irp.f` + + :math:`S^{1/2}` + + + + +.. c:var:: s_half_inv + + .. code:: text + + double precision, allocatable :: s_half_inv (AO_num,AO_num) + + File: :file:`ao_overlap.irp.f` + + :math:`X = S^{-1/2}` obtained by SVD + + + + +.. c:var:: s_inv + + .. code:: text + + double precision, allocatable :: s_inv (ao_num,ao_num) + + File: :file:`ao_overlap.irp.f` + + Inverse of the overlap matrix + + + + +.. c:var:: write_ao_one_integrals + + .. code:: text + + logical :: read_ao_one_integrals + logical :: write_ao_one_integrals + + File: :file:`read_write.irp.f` + + If |true|, read/write one-electrons from/to disk. + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: give_all_erf_kl_ao + + .. code:: text + + subroutine give_all_erf_kl_ao(integrals_ao,mu_in,C_center) + + File: :file:`pot_ao_erf_ints.irp.f` + + subroutine that returs all integrals over r of type erf(mu_in * |r-C_center|)/|r-C_center| + + + + + +.. c:function:: give_polynom_mult_center_mono_elec + + .. code:: text + + subroutine give_polynom_mult_center_mono_elec(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out) + + File: :file:`pot_ao_ints.irp.f` + + Returns the explicit polynomial in terms of the "t" variable of the following + :math:`I_x1(a_x, d_x,p,q) * I_x1(a_y, d_y,p,q) * I_x1(a_z, d_z,p,q)` + + + + + +.. c:function:: give_polynom_mult_center_mono_elec_erf + + .. code:: text + + subroutine give_polynom_mult_center_mono_elec_erf(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in) + + File: :file:`pot_ao_erf_ints.irp.f` + + + + + + + +.. c:function:: give_polynom_mult_center_mono_elec_erf_opt + + .. code:: text + + subroutine give_polynom_mult_center_mono_elec_erf_opt(A_center,B_center,alpha,beta,power_A,power_B,C_center,n_pt_in,d,n_pt_out,mu_in,p,p_inv,p_inv_2,p_new,P_center) + + File: :file:`pot_ao_erf_ints.irp.f` + + + + + + + +.. c:function:: int_gaus_pol + + .. code:: text + + double precision function int_gaus_pol(alpha,n) + + File: :file:`pot_ao_ints.irp.f` + + Computes the integral: + :math:`\int_{-\infty}^{\infty} x^n \exp(-\alpha x^2) dx` + + + + + +.. c:function:: nai_pol_mult + + .. code:: text + + double precision function NAI_pol_mult(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in) + + File: :file:`pot_ao_ints.irp.f` + + Computes the electron-nucleus attraction with two primitves. + :math:`\langle g_i | \frac{1}{|r-R_c|} | g_j \rangle` + + + + + +.. c:function:: nai_pol_mult_erf + + .. code:: text + + double precision function NAI_pol_mult_erf(A_center,B_center,power_A,power_B,alpha,beta,C_center,n_pt_in,mu_in) + + File: :file:`pot_ao_erf_ints.irp.f` + + + + + + + +.. c:function:: nai_pol_mult_erf_ao + + .. code:: text + + double precision function NAI_pol_mult_erf_ao(i_ao,j_ao,mu_in,C_center) + + File: :file:`pot_ao_erf_ints.irp.f` + + computes the following integral : int[-infty;+infty] dr AO_i_ao (r) AO_j_ao(r) erf(mu_in * |r-C_center|)/|r-C_center| + + + + + +.. c:function:: overlap_bourrin_deriv_x + + .. code:: text + + subroutine overlap_bourrin_deriv_x(i_component,A_center,B_center,alpha,beta,power_A,power_B,dx,lower_exp_val,overlap_x,nx) + + File: :file:`spread_dipole_ao.irp.f` + + + + + + + +.. c:function:: overlap_bourrin_dipole + + .. code:: text + + subroutine overlap_bourrin_dipole(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + + File: :file:`spread_dipole_ao.irp.f` + + + + + + + +.. c:function:: overlap_bourrin_spread + + .. code:: text + + subroutine overlap_bourrin_spread(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + + File: :file:`spread_dipole_ao.irp.f` + + + + + + + +.. c:function:: overlap_bourrin_x + + .. code:: text + + subroutine overlap_bourrin_x(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + + File: :file:`spread_dipole_ao.irp.f` + + + + + + + +.. c:function:: v_e_n + + .. code:: text + + double precision function V_e_n(a_x,a_y,a_z,b_x,b_y,b_z,alpha,beta) + + File: :file:`pot_ao_ints.irp.f` + + Primitve nuclear attraction between the two primitves centered on the same atom. + primitive_1 = x**(a_x) y**(a_y) z**(a_z) exp(-alpha * r**2) + primitive_2 = x**(b_x) y**(b_y) z**(b_z) exp(- beta * r**2) + + + + + +.. c:function:: v_phi + + .. code:: text + + double precision function V_phi(n,m) + + File: :file:`pot_ao_ints.irp.f` + + Computes the angular "phi" part of the nuclear attraction integral: + :math:`\int_{0}^{2 \pi} \cos(\phi)^n \sin(\phi)^m d\phi` + + + + + +.. c:function:: v_r + + .. code:: text + + double precision function V_r(n,alpha) + + File: :file:`pot_ao_ints.irp.f` + + Computes the radial part of the nuclear attraction integral: + :math:`\int_{0}^{\infty} r^n \exp(-\alpha r^2) dr` + + + + + + +.. c:function:: v_theta + + .. code:: text + + double precision function V_theta(n,m) + + File: :file:`pot_ao_ints.irp.f` + + Computes the angular "theta" part of the nuclear attraction integral: + :math:`\int_{0}^{\pi} \cos(\theta)^n \sin(\theta)^m d\theta` + + + + + +.. c:function:: wallis + + .. code:: text + + double precision function Wallis(n) + + File: :file:`pot_ao_ints.irp.f` + + Wallis integral: + :math:`\int_{0}^{\pi} \cos(\theta)^n d\theta` + + diff --git a/docs/source/modules/aux_quantities.rst b/docs/source/modules/aux_quantities.rst new file mode 100644 index 00000000..4e6fde73 --- /dev/null +++ b/docs/source/modules/aux_quantities.rst @@ -0,0 +1,44 @@ +.. _aux_quantities: + +.. program:: aux_quantities + +.. default-role:: option + +============== +aux_quantities +============== + + +This module contains some global variables (such as densities and energies) which are stored in the EZFIO folder in a different place than determinants. This is used in practice to store density matrices which can be obtained from any methods, as long as they are stored in the same MO basis which is used for the calculations. In |RS-DFT| calculations, this can be done to perform damping on the density in order to speed up convergence. + +The main providers of that module are: + +# `data_one_body_alpha_dm_mo` and `data_one_body_beta_dm_mo` which are the one-body alpha and beta densities which are necessary read from the EZFIO folder. + + +Thanks to these providers you can use any density matrix that does not necessary corresponds to that of the current wave function. + + + +EZFIO parameters +---------------- + +.. option:: data_energy_var + + Variational energy computed with the wave function + + +.. option:: data_energy_proj + + Projected energy computed with the wave function + + +.. option:: data_one_body_alpha_dm_mo + + Alpha one body density matrix on the MO basis computed with the wave function + + +.. option:: data_one_body_beta_dm_mo + + Beta one body density matrix on the MO basis computed with the wave function + diff --git a/docs/source/modules/becke_numerical_grid.rst b/docs/source/modules/becke_numerical_grid.rst new file mode 100644 index 00000000..eb934238 --- /dev/null +++ b/docs/source/modules/becke_numerical_grid.rst @@ -0,0 +1,405 @@ +.. _becke_numerical_grid: + +.. program:: becke_numerical_grid + +.. default-role:: option + +==================== +becke_numerical_grid +==================== + +This module contains all quantities needed to build the Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions. + +This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains a certain number of radial and angular points. + +The main providers of that module are: + +# :option:`becke_numerical_grid n_points_integration_angular` which is the number of angular integration points. WARNING: it obeys to specific rules so it cannot be any integer number. Some of the possible values are [ 50 | 74 | 266 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details. +# :option:`becke_numerical_grid n_points_radial_grid` which is the number of radial angular points. This can be any strictly positive integer. Nevertheless, a minimum of 50 is in general necessary. +# `final_grid_points` which are the (x,y,z) coordinates of the grid points. +# `final_weight_at_r_vector` which are the weights at each grid point + +For a simple example of how to use the grid, see :file:`example.irp.f`. + +The spherical integration uses Lebedev-Laikov grids, which was used from the code distributed through CCL (http://www.ccl.net/). +See next section for explanations and citation policies. + +.. code-block:: text + + This subroutine is part of a set of subroutines that generate + Lebedev grids [1-6] for integration on a sphere. The original + C-code [1] was kindly provided by Dr. Dmitri N. Laikov and + translated into fortran by Dr. Christoph van Wuellen. + This subroutine was translated using a C to fortran77 conversion + tool written by Dr. Christoph van Wuellen. + + Users of this code are asked to include reference [1] in their + publications, and in the user- and programmers-manuals + describing their codes. + + This code was distributed through CCL (http://www.ccl.net/). + + [1] V.I. Lebedev, and D.N. Laikov + "A quadrature formula for the sphere of the 131st + algebraic order of accuracy" + Doklady Mathematics, Vol. 59, No. 3, 1999, pp. 477-481. + + [2] V.I. Lebedev + "A quadrature formula for the sphere of 59th algebraic + order of accuracy" + Russian Acad. Sci. Dokl. Math., Vol. 50, 1995, pp. 283-286. + + [3] V.I. Lebedev, and A.L. Skorokhodov + "Quadrature formulas of orders 41, 47, and 53 for the sphere" + Russian Acad. Sci. Dokl. Math., Vol. 45, 1992, pp. 587-592. + + [4] V.I. Lebedev + "Spherical quadrature formulas exact to orders 25-29" + Siberian Mathematical Journal, Vol. 18, 1977, pp. 99-107. + + [5] V.I. Lebedev + "Quadratures on a sphere" + Computational Mathematics and Mathematical Physics, Vol. 16, + 1976, pp. 10-24. + + [6] V.I. Lebedev + "Values of the nodes and weights of ninth to seventeenth + order Gauss-Markov quadrature formulae invariant under the + octahedron group with inversion" + Computational Mathematics and Mathematical Physics, Vol. 15, + 1975, pp. 44-51. + + + + + +EZFIO parameters +---------------- + +.. option:: n_points_integration_angular + + Number of angular points per atom for 3d numerical integration, needed for DFT for example [ 50 | 74 | 266 | 590 | 1202 | 2030 | 5810 ] + + Default: 590 + +.. option:: n_points_radial_grid + + Number of radial points per atom for 3d numerical integration, needed for DFT for example + + Default: 60 + + +Providers +--------- + + +.. c:var:: alpha_knowles + + .. code:: text + + double precision, allocatable :: alpha_knowles (100) + + File: :file:`integration_radial.irp.f` + + Recommended values for the alpha parameters according to the paper of Knowles (JCP, 104, 1996) as a function of the nuclear charge + + + + +.. c:var:: angular_quadrature_points + + .. code:: text + + double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3) + double precision, allocatable :: weights_angular_points (n_points_integration_angular) + + File: :file:`grid_becke.irp.f` + + weights and grid points for the integration on the angular variables on the unit sphere centered on (0,0,0) According to the LEBEDEV scheme + + + + +.. c:var:: dr_radial_integral + + .. code:: text + + double precision, allocatable :: grid_points_radial (n_points_radial_grid) + double precision :: dr_radial_integral + + File: :file:`grid_becke.irp.f` + + points in [0,1] to map the radial integral [0,\infty] + + + + +.. c:var:: final_grid_points + + .. code:: text + + double precision, allocatable :: final_grid_points (3,n_points_final_grid) + double precision, allocatable :: final_weight_functions_at_final_grid_points (n_points_final_grid) + integer, allocatable :: index_final_points (3,n_points_final_grid) + integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) + + File: :file:`grid_becke_vector.irp.f` + + final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point + final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point + index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices + + + + +.. c:var:: final_weight_functions_at_final_grid_points + + .. code:: text + + double precision, allocatable :: final_grid_points (3,n_points_final_grid) + double precision, allocatable :: final_weight_functions_at_final_grid_points (n_points_final_grid) + integer, allocatable :: index_final_points (3,n_points_final_grid) + integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) + + File: :file:`grid_becke_vector.irp.f` + + final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point + final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point + index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices + + + + +.. c:var:: final_weight_functions_at_grid_points + + .. code:: text + + double precision, allocatable :: final_weight_functions_at_grid_points (n_points_integration_angular,n_points_radial_grid,nucl_num) + + File: :file:`grid_becke.irp.f` + + Total weight on each grid point which takes into account all Lebedev, Voronoi and radial weights. + + + + +.. c:var:: grid_points_per_atom + + .. code:: text + + double precision, allocatable :: grid_points_per_atom (3,n_points_integration_angular,n_points_radial_grid,nucl_num) + + File: :file:`grid_becke.irp.f` + + x,y,z coordinates of grid points used for integration in 3d space + + + + +.. c:var:: grid_points_radial + + .. code:: text + + double precision, allocatable :: grid_points_radial (n_points_radial_grid) + double precision :: dr_radial_integral + + File: :file:`grid_becke.irp.f` + + points in [0,1] to map the radial integral [0,\infty] + + + + +.. c:var:: index_final_points + + .. code:: text + + double precision, allocatable :: final_grid_points (3,n_points_final_grid) + double precision, allocatable :: final_weight_functions_at_final_grid_points (n_points_final_grid) + integer, allocatable :: index_final_points (3,n_points_final_grid) + integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) + + File: :file:`grid_becke_vector.irp.f` + + final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point + final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point + index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices + + + + +.. c:var:: index_final_points_reverse + + .. code:: text + + double precision, allocatable :: final_grid_points (3,n_points_final_grid) + double precision, allocatable :: final_weight_functions_at_final_grid_points (n_points_final_grid) + integer, allocatable :: index_final_points (3,n_points_final_grid) + integer, allocatable :: index_final_points_reverse (n_points_integration_angular,n_points_radial_grid,nucl_num) + + File: :file:`grid_becke_vector.irp.f` + + final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point + final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions + index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point + index_final_points_reverse(i,j,k) = index of the grid point having i as angular, j as radial and l as atomic indices + + + + +.. c:var:: m_knowles + + .. code:: text + + integer :: m_knowles + + File: :file:`grid_becke.irp.f` + + value of the "m" parameter in the equation (7) of the paper of Knowles (JCP, 104, 1996) + + + + +.. c:var:: n_points_final_grid + + .. code:: text + + integer :: n_points_final_grid + + File: :file:`grid_becke_vector.irp.f` + + Number of points which are non zero + + + + +.. c:var:: n_points_grid_per_atom + + .. code:: text + + integer :: n_points_grid_per_atom + + File: :file:`grid_becke.irp.f` + + Number of grid points per atom + + + + +.. c:var:: weight_functions_at_grid_points + + .. code:: text + + double precision, allocatable :: weight_functions_at_grid_points (n_points_integration_angular,n_points_radial_grid,nucl_num) + + File: :file:`grid_becke.irp.f` + + Weight function at grid points : w_n(r) according to the equation (22) of Becke original paper (JCP, 88, 1988) + The "n" discrete variable represents the nucleis which in this array is represented by the last dimension and the points are labelled by the other dimensions. + + + + +.. c:var:: weights_angular_points + + .. code:: text + + double precision, allocatable :: angular_quadrature_points (n_points_integration_angular,3) + double precision, allocatable :: weights_angular_points (n_points_integration_angular) + + File: :file:`grid_becke.irp.f` + + weights and grid points for the integration on the angular variables on the unit sphere centered on (0,0,0) According to the LEBEDEV scheme + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: cell_function_becke + + .. code:: text + + double precision function cell_function_becke(r,atom_number) + + File: :file:`step_function_becke.irp.f` + + atom_number :: atom on which the cell function of Becke (1988, JCP,88(4)) r(1:3) :: x,y,z coordinantes of the current point + + + + + +.. c:function:: derivative_knowles_function + + .. code:: text + + double precision function derivative_knowles_function(alpha,m,x) + + File: :file:`integration_radial.irp.f` + + Derivative of the function proposed by Knowles (JCP, 104, 1996) for distributing the radial points + + + + + +.. c:function:: example_becke_numerical_grid + + .. code:: text + + subroutine example_becke_numerical_grid + + File: :file:`example.irp.f` + + subroutine that illustrates the main features available in becke_numerical_grid + + + + + +.. c:function:: f_function_becke + + .. code:: text + + double precision function f_function_becke(x) + + File: :file:`step_function_becke.irp.f` + + + + + + + +.. c:function:: knowles_function + + .. code:: text + + double precision function knowles_function(alpha,m,x) + + File: :file:`integration_radial.irp.f` + + Function proposed by Knowles (JCP, 104, 1996) for distributing the radial points : the Log "m" function ( equation (7) in the paper ) + + + + + +.. c:function:: step_function_becke + + .. code:: text + + double precision function step_function_becke(x) + + File: :file:`step_function_becke.irp.f` + + Step function of the Becke paper (1988, JCP,88(4)) + + diff --git a/docs/source/modules/bitmask.rst b/docs/source/modules/bitmask.rst new file mode 100644 index 00000000..11e99b89 --- /dev/null +++ b/docs/source/modules/bitmask.rst @@ -0,0 +1,1254 @@ +.. _bitmask: + +.. program:: bitmask + +.. default-role:: option + +============== +bitmask module +============== + +The central part of this module is the :file:`bitmasks_module.f90` file. It contains +the constants that will be used to define on which kind of integer the bitmasks +will be defined. + +In the program, to represent a determinant as a pair of bitstrings, +the determinant should be defined as + +.. code-block:: fortran + + use bitmasks + integer(bit_kind) :: determinant(N_int,2) + + +:file:`bitmasks_routines.irp.f` contains helper routines to manipulate bitmask, like +transforming a bit string to a list of integers for example. + + +`bit_kind_shift`, `bit_kind_size` and `bit_kind` are supposed to be consistent:: + + 2**bit_kind_shift = bit_kind_size + bit_kind = bit_kind_size / 8 + + +For an example of how to use the bitmaks, see the file :file:`example.irp.f`. + + + +Providers +--------- + + +.. c:var:: cas_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: cas_bitmask (N_int,2,N_cas_bitmask) + + File: :file:`bitmasks.irp.f` + + Bitmasks for CAS reference determinants. (N_int, alpha/beta, CAS reference) + + + + +.. c:var:: closed_shell_ref_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: closed_shell_ref_bitmask (N_int,2) + + File: :file:`bitmasks.irp.f` + + + + + + +.. c:var:: core_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer :: n_core_orb + + File: :file:`bitmasks.irp.f` + + Core + deleted orbitals bitmask + + + + +.. c:var:: core_inact_act_bitmask_4 + + .. code:: text + + integer(bit_kind), allocatable :: core_inact_act_bitmask_4 (N_int,4) + + File: :file:`bitmasks.irp.f` + + + + + + +.. c:var:: core_inact_virt_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: inact_virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: core_inact_virt_bitmask (N_int,2) + + File: :file:`bitmasks.irp.f` + + Reunion of the inactive and virtual bitmasks + + + + +.. c:var:: full_ijkl_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: full_ijkl_bitmask (N_int) + + File: :file:`bitmasks.irp.f` + + Bitmask to include all possible MOs + + + + +.. c:var:: full_ijkl_bitmask_4 + + .. code:: text + + integer(bit_kind), allocatable :: full_ijkl_bitmask_4 (N_int,4) + + File: :file:`bitmasks.irp.f` + + + + + + +.. c:var:: generators_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: generators_bitmask (N_int,2,6,N_generators_bitmask) + + File: :file:`bitmasks.irp.f` + + Bitmasks for generator determinants. (N_int, alpha/beta, hole/particle, generator). + 3rd index is : + * 1 : hole for single exc + * 2 : particle for single exc + * 3 : hole for 1st exc of double + * 4 : particle for 1st exc of double + * 5 : hole for 2nd exc of double + * 6 : particle for 2nd exc of double + + + + + +.. c:var:: generators_bitmask_restart + + .. code:: text + + integer(bit_kind), allocatable :: generators_bitmask_restart (N_int,2,6,N_generators_bitmask_restart) + + File: :file:`bitmasks.irp.f` + + Bitmasks for generator determinants. (N_int, alpha/beta, hole/particle, generator). + 3rd index is : + * 1 : hole for single exc + * 2 : particle for single exc + * 3 : hole for 1st exc of double + * 4 : particle for 1st exc of double + * 5 : hole for 2nd exc of double + * 6 : particle for 2nd exc of double + + + + + +.. c:var:: hf_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: hf_bitmask (N_int,2) + + File: :file:`bitmasks.irp.f` + + Hartree Fock bit mask + + + + +.. c:var:: i_bitmask_gen + + .. code:: text + + integer :: i_bitmask_gen + + File: :file:`bitmasks.irp.f` + + Current bitmask for the generators + + + + +.. c:var:: inact_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer :: n_inact_orb + integer :: n_virt_orb + + File: :file:`bitmasks.irp.f` + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals + + + + +.. c:var:: inact_virt_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: inact_virt_bitmask (N_int,2) + integer(bit_kind), allocatable :: core_inact_virt_bitmask (N_int,2) + + File: :file:`bitmasks.irp.f` + + Reunion of the inactive and virtual bitmasks + + + + +.. c:var:: index_holes_bitmask + + .. code:: text + + integer, allocatable :: index_holes_bitmask (3) + + File: :file:`modify_bitmasks.irp.f` + + Index of the holes in the generators_bitmasks + + + + +.. c:var:: index_particl_bitmask + + .. code:: text + + integer, allocatable :: index_particl_bitmask (3) + + File: :file:`modify_bitmasks.irp.f` + + Index of the holes in the generators_bitmasks + + + + +.. c:var:: list_act + + .. code:: text + + integer, allocatable :: list_act (n_act_orb) + integer, allocatable :: list_act_reverse (mo_tot_num) + + File: :file:`bitmasks.irp.f` + + list_act(i) = index of the ith active orbital + list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital + + + + +.. c:var:: list_act_reverse + + .. code:: text + + integer, allocatable :: list_act (n_act_orb) + integer, allocatable :: list_act_reverse (mo_tot_num) + + File: :file:`bitmasks.irp.f` + + list_act(i) = index of the ith active orbital + list_act_reverse : reverse list of active orbitals list_act_reverse(i) = 0 ::> not an active list_act_reverse(i) = k ::> IS the kth active orbital + + + + +.. c:var:: list_core + + .. code:: text + + integer, allocatable :: list_core (n_core_orb) + integer, allocatable :: list_core_reverse (mo_tot_num) + + File: :file:`bitmasks.irp.f` + + List of the core orbitals that are never excited in post CAS method + + + + +.. c:var:: list_core_inact + + .. code:: text + + integer, allocatable :: list_core_inact (n_core_inact_orb) + integer, allocatable :: list_core_inact_reverse (mo_tot_num) + + File: :file:`bitmasks.irp.f` + + + + + + +.. c:var:: list_core_inact_act + + .. code:: text + + integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) + integer, allocatable :: list_core_inact_act_reverse (mo_tot_num) + + File: :file:`bitmasks.irp.f` + + + + + + +.. c:var:: list_core_inact_act_reverse + + .. code:: text + + integer, allocatable :: list_core_inact_act (n_core_inact_act_orb) + integer, allocatable :: list_core_inact_act_reverse (mo_tot_num) + + File: :file:`bitmasks.irp.f` + + + + + + +.. c:var:: list_core_inact_reverse + + .. code:: text + + integer, allocatable :: list_core_inact (n_core_inact_orb) + integer, allocatable :: list_core_inact_reverse (mo_tot_num) + + File: :file:`bitmasks.irp.f` + + + + + + +.. c:var:: list_core_reverse + + .. code:: text + + integer, allocatable :: list_core (n_core_orb) + integer, allocatable :: list_core_reverse (mo_tot_num) + + File: :file:`bitmasks.irp.f` + + List of the core orbitals that are never excited in post CAS method + + + + +.. c:var:: list_inact + + .. code:: text + + integer, allocatable :: list_inact (n_inact_orb) + integer, allocatable :: list_virt (n_virt_orb) + integer, allocatable :: list_inact_reverse (mo_tot_num) + integer, allocatable :: list_virt_reverse (mo_tot_num) + + File: :file:`bitmasks.irp.f` + + list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual + + + + +.. c:var:: list_inact_reverse + + .. code:: text + + integer, allocatable :: list_inact (n_inact_orb) + integer, allocatable :: list_virt (n_virt_orb) + integer, allocatable :: list_inact_reverse (mo_tot_num) + integer, allocatable :: list_virt_reverse (mo_tot_num) + + File: :file:`bitmasks.irp.f` + + list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual + + + + +.. c:var:: list_virt + + .. code:: text + + integer, allocatable :: list_inact (n_inact_orb) + integer, allocatable :: list_virt (n_virt_orb) + integer, allocatable :: list_inact_reverse (mo_tot_num) + integer, allocatable :: list_virt_reverse (mo_tot_num) + + File: :file:`bitmasks.irp.f` + + list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual + + + + +.. c:var:: list_virt_reverse + + .. code:: text + + integer, allocatable :: list_inact (n_inact_orb) + integer, allocatable :: list_virt (n_virt_orb) + integer, allocatable :: list_inact_reverse (mo_tot_num) + integer, allocatable :: list_virt_reverse (mo_tot_num) + + File: :file:`bitmasks.irp.f` + + list_inact : List of the inactive orbitals which are supposed to be doubly excited in post CAS methods list_virt : List of vritual orbitals which are supposed to be recieve electrons in post CAS methods list_inact_reverse : reverse list of inactive orbitals list_inact_reverse(i) = 0 ::> not an inactive list_inact_reverse(i) = k ::> IS the kth inactive list_virt_reverse : reverse list of virtual orbitals list_virt_reverse(i) = 0 ::> not an virtual list_virt_reverse(i) = k ::> IS the kth virtual + + + + +.. c:var:: mpi_bit_kind + + .. code:: text + + integer :: mpi_bit_kind + + File: :file:`mpi.irp.f` + + MPI bit kind type + + + + +.. c:var:: n_act_orb + + .. code:: text + + integer :: n_act_orb + + File: :file:`bitmasks.irp.f` + + number of active orbitals + + + + +.. c:var:: n_cas_bitmask + + .. code:: text + + integer :: n_cas_bitmask + + File: :file:`bitmasks.irp.f` + + Number of bitmasks for CAS + + + + +.. c:var:: n_core_inact_act_orb + + .. code:: text + + integer(bit_kind), allocatable :: reunion_of_core_inact_act_bitmask (N_int,2) + integer :: n_core_inact_act_orb + + File: :file:`bitmasks.irp.f` + + Reunion of the core, inactive and active bitmasks + + + + +.. c:var:: n_core_inact_orb + + .. code:: text + + integer :: n_core_inact_orb + + File: :file:`bitmasks.irp.f` + + + + + + +.. c:var:: n_core_orb + + .. code:: text + + integer(bit_kind), allocatable :: core_bitmask (N_int,2) + integer :: n_core_orb + + File: :file:`bitmasks.irp.f` + + Core + deleted orbitals bitmask + + + + +.. c:var:: n_core_orb_allocate + + .. code:: text + + integer :: n_core_orb_allocate + + File: :file:`bitmasks.irp.f` + + + + + + +.. c:var:: n_generators_bitmask + + .. code:: text + + integer :: n_generators_bitmask + + File: :file:`bitmasks.irp.f` + + Number of bitmasks for generators + + + + +.. c:var:: n_generators_bitmask_restart + + .. code:: text + + integer :: n_generators_bitmask_restart + + File: :file:`bitmasks.irp.f` + + Number of bitmasks for generators + + + + +.. c:var:: n_inact_orb + + .. code:: text + + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer :: n_inact_orb + integer :: n_virt_orb + + File: :file:`bitmasks.irp.f` + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals + + + + +.. c:var:: n_inact_orb_allocate + + .. code:: text + + integer :: n_inact_orb_allocate + + File: :file:`bitmasks.irp.f` + + + + + + +.. c:var:: n_int + + .. code:: text + + integer :: n_int + + File: :file:`bitmasks.irp.f` + + Number of 64-bit integers needed to represent determinants as binary strings + + + + +.. c:var:: n_virt_orb + + .. code:: text + + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer :: n_inact_orb + integer :: n_virt_orb + + File: :file:`bitmasks.irp.f` + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals + + + + +.. c:var:: n_virt_orb_allocate + + .. code:: text + + integer :: n_virt_orb_allocate + + File: :file:`bitmasks.irp.f` + + + + + + +.. c:var:: ref_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: ref_bitmask (N_int,2) + + File: :file:`bitmasks.irp.f` + + Reference bit mask, used in Slater rules, chosen as Hartree-Fock bitmask + + + + +.. c:var:: reunion_of_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: reunion_of_bitmask (N_int,2) + + File: :file:`bitmasks.irp.f` + + Reunion of the inactive, active and virtual bitmasks + + + + +.. c:var:: reunion_of_cas_inact_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: reunion_of_cas_inact_bitmask (N_int,2) + + File: :file:`bitmasks.irp.f` + + Reunion of the inactive, active and virtual bitmasks + + + + +.. c:var:: reunion_of_core_inact_act_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: reunion_of_core_inact_act_bitmask (N_int,2) + integer :: n_core_inact_act_orb + + File: :file:`bitmasks.irp.f` + + Reunion of the core, inactive and active bitmasks + + + + +.. c:var:: reunion_of_core_inact_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: reunion_of_core_inact_bitmask (N_int,2) + + File: :file:`bitmasks.irp.f` + + Reunion of the core and inactive and virtual bitmasks + + + + +.. c:var:: unpaired_alpha_electrons + + .. code:: text + + integer(bit_kind), allocatable :: unpaired_alpha_electrons (N_int) + + File: :file:`bitmasks.irp.f` + + Bitmask reprenting the unpaired alpha electrons in the HF_bitmask + + + + +.. c:var:: virt_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: inact_bitmask (N_int,2) + integer(bit_kind), allocatable :: virt_bitmask (N_int,2) + integer :: n_inact_orb + integer :: n_virt_orb + + File: :file:`bitmasks.irp.f` + + inact_bitmask : Bitmask of the inactive orbitals which are supposed to be doubly excited in post CAS methods n_inact_orb : Number of inactive orbitals virt_bitmask : Bitmaks of vritual orbitals which are supposed to be recieve electrons in post CAS methods n_virt_orb : Number of virtual orbitals + + + + +.. c:var:: virt_bitmask_4 + + .. code:: text + + integer(bit_kind), allocatable :: virt_bitmask_4 (N_int,4) + + File: :file:`bitmasks.irp.f` + + + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: bitstring_to_hexa + + .. code:: text + + subroutine bitstring_to_hexa( output, string, Nint ) + + File: :file:`bitmasks_routines.irp.f` + + Transform a bit string to a string in hexadecimal format for printing + + + + + +.. c:function:: bitstring_to_list + + .. code:: text + + subroutine bitstring_to_list( string, list, n_elements, Nint) + + File: :file:`bitmasks_routines.irp.f` + + Gives the inidices(+1) of the bits set to 1 in the bit string + + + + + +.. c:function:: bitstring_to_str + + .. code:: text + + subroutine bitstring_to_str( output, string, Nint ) + + File: :file:`bitmasks_routines.irp.f` + + Transform a bit string to a string for printing + + + + + +.. c:function:: broadcast_chunks_bit_kind + + .. code:: text + + subroutine broadcast_chunks_bit_kind(A, LDA) + + File: :file:`mpi.irp.f` + + Broadcast with chunks of ~2GB + + + + + +.. c:function:: clear_bit_to_integer + + .. code:: text + + subroutine clear_bit_to_integer(i_physical,key,Nint) + + File: :file:`bitmasks_routines.irp.f` + + set to 0 the bit number i_physical in the bitstring key + + + + + +.. c:function:: debug_det + + .. code:: text + + subroutine debug_det(string,Nint) + + File: :file:`bitmasks_routines.irp.f` + + Subroutine to print the content of a determinant in '+-' notation and hexadecimal representation. + + + + + +.. c:function:: debug_spindet + + .. code:: text + + subroutine debug_spindet(string,Nint) + + File: :file:`bitmasks_routines.irp.f` + + Subroutine to print the content of a determinant in '+-' notation and hexadecimal representation. + + + + + +.. c:function:: example_bitmask + + .. code:: text + + subroutine example_bitmask + + File: :file:`example.irp.f` + + subroutine that illustrates the main features available in bitmask + + + + + +.. c:function:: initialize_bitmask_to_restart_ones + + .. code:: text + + subroutine initialize_bitmask_to_restart_ones + + File: :file:`modify_bitmasks.irp.f` + + Initialization of the generators_bitmask to the restart bitmask + + + + + +.. c:function:: is_a_1h + + .. code:: text + + logical function is_a_1h(key_in) + + File: :file:`bitmask_cas_routines.irp.f` + + + + + + + +.. c:function:: is_a_1h1p + + .. code:: text + + logical function is_a_1h1p(key_in) + + File: :file:`bitmask_cas_routines.irp.f` + + + + + + + +.. c:function:: is_a_1h2p + + .. code:: text + + logical function is_a_1h2p(key_in) + + File: :file:`bitmask_cas_routines.irp.f` + + + + + + + +.. c:function:: is_a_1p + + .. code:: text + + logical function is_a_1p(key_in) + + File: :file:`bitmask_cas_routines.irp.f` + + + + + + + +.. c:function:: is_a_2h + + .. code:: text + + logical function is_a_2h(key_in) + + File: :file:`bitmask_cas_routines.irp.f` + + + + + + + +.. c:function:: is_a_2h1p + + .. code:: text + + logical function is_a_2h1p(key_in) + + File: :file:`bitmask_cas_routines.irp.f` + + + + + + + +.. c:function:: is_a_2p + + .. code:: text + + logical function is_a_2p(key_in) + + File: :file:`bitmask_cas_routines.irp.f` + + + + + + + +.. c:function:: is_a_two_holes_two_particles + + .. code:: text + + logical function is_a_two_holes_two_particles(key_in) + + File: :file:`bitmask_cas_routines.irp.f` + + logical function that returns True if the determinant 'key_in' belongs to the 2h-2p excitation class of the DDCI space this is calculated using the CAS_bitmask that defines the active orbital space, the inact_bitmasl that defines the inactive oribital space and the virt_bitmask that defines the virtual orbital space + + + + + +.. c:function:: is_i_in_virtual + + .. code:: text + + logical function is_i_in_virtual(i) + + File: :file:`bitmask_cas_routines.irp.f` + + + + + + + +.. c:function:: is_the_hole_in_det + + .. code:: text + + logical function is_the_hole_in_det(key_in,ispin,i_hole) + + File: :file:`find_hole.irp.f` + + + + + + + +.. c:function:: is_the_particl_in_det + + .. code:: text + + logical function is_the_particl_in_det(key_in,ispin,i_particl) + + File: :file:`find_hole.irp.f` + + + + + + + +.. c:function:: list_to_bitstring + + .. code:: text + + subroutine list_to_bitstring( string, list, n_elements, Nint) + + File: :file:`bitmasks_routines.irp.f` + + Returns the physical string "string(N_int,2)" from the array of occupations "list(N_int*bit_kind_size,2) + + + + + +.. c:function:: modify_bitmasks_for_hole + + .. code:: text + + subroutine modify_bitmasks_for_hole(i_hole) + + File: :file:`modify_bitmasks.irp.f` + + modify the generators_bitmask in order that one can only excite the electrons occupying i_hole + + + + + +.. c:function:: modify_bitmasks_for_hole_in_out + + .. code:: text + + subroutine modify_bitmasks_for_hole_in_out(i_hole) + + File: :file:`modify_bitmasks.irp.f` + + modify the generators_bitmask in order that one can only excite the electrons occupying i_hole + + + + + +.. c:function:: modify_bitmasks_for_particl + + .. code:: text + + subroutine modify_bitmasks_for_particl(i_part) + + File: :file:`modify_bitmasks.irp.f` + + modify the generators_bitmask in order that one can only excite the electrons to the orbital i_part + + + + + +.. c:function:: number_of_holes + + .. code:: text + + integer function number_of_holes(key_in) + + File: :file:`bitmask_cas_routines.irp.f` + + Function that returns the number of holes in the inact space + + + + + +.. c:function:: number_of_holes_verbose + + .. code:: text + + integer function number_of_holes_verbose(key_in) + + File: :file:`bitmask_cas_routines.irp.f` + + function that returns the number of holes in the inact space + + + + + +.. c:function:: number_of_particles + + .. code:: text + + integer function number_of_particles(key_in) + + File: :file:`bitmask_cas_routines.irp.f` + + function that returns the number of particles in the virtual space + + + + + +.. c:function:: number_of_particles_verbose + + .. code:: text + + integer function number_of_particles_verbose(key_in) + + File: :file:`bitmask_cas_routines.irp.f` + + function that returns the number of particles in the inact space + + + + + +.. c:function:: print_det + + .. code:: text + + subroutine print_det(string,Nint) + + File: :file:`bitmasks_routines.irp.f` + + Subroutine to print the content of a determinant using the '+-' notation + + + + + +.. c:function:: print_generators_bitmasks_holes + + .. code:: text + + subroutine print_generators_bitmasks_holes + + File: :file:`modify_bitmasks.irp.f` + + + + + + + +.. c:function:: print_generators_bitmasks_holes_for_one_generator + + .. code:: text + + subroutine print_generators_bitmasks_holes_for_one_generator(i_gen) + + File: :file:`modify_bitmasks.irp.f` + + + + + + + +.. c:function:: print_generators_bitmasks_particles + + .. code:: text + + subroutine print_generators_bitmasks_particles + + File: :file:`modify_bitmasks.irp.f` + + + + + + + +.. c:function:: print_generators_bitmasks_particles_for_one_generator + + .. code:: text + + subroutine print_generators_bitmasks_particles_for_one_generator(i_gen) + + File: :file:`modify_bitmasks.irp.f` + + + + + + + +.. c:function:: print_spindet + + .. code:: text + + subroutine print_spindet(string,Nint) + + File: :file:`bitmasks_routines.irp.f` + + Subroutine to print the content of a determinant using the '+-' notation + + + + + +.. c:function:: set_bit_to_integer + + .. code:: text + + subroutine set_bit_to_integer(i_physical,key,Nint) + + File: :file:`bitmasks_routines.irp.f` + + set to 1 the bit number i_physical in the bitstring key + + + + + +.. c:function:: set_bitmask_hole_as_input + + .. code:: text + + subroutine set_bitmask_hole_as_input(input_bimask) + + File: :file:`modify_bitmasks.irp.f` + + set the generators_bitmask for the holes as the input_bimask + + + + + +.. c:function:: set_bitmask_particl_as_input + + .. code:: text + + subroutine set_bitmask_particl_as_input(input_bimask) + + File: :file:`modify_bitmasks.irp.f` + + set the generators_bitmask for the particles as the input_bimask + + diff --git a/docs/source/modules/cis.rst b/docs/source/modules/cis.rst new file mode 100644 index 00000000..8ef74d41 --- /dev/null +++ b/docs/source/modules/cis.rst @@ -0,0 +1,117 @@ +.. _cis: + +.. program:: cis + +.. default-role:: option + +=== +cis +=== + +This module contains a CIS program, built by setting the following rules: + +* The only generator determinant is the Hartree-Fock (single-reference method) +* All generated singly excited determinants are included in the wave function (no perturbative + selection) + +These rules are set in the ``H_apply.irp.f`` file. + + + + + +EZFIO parameters +---------------- + +.. option:: energy + + Variational |CIS| energy + + + +Subroutines / functions +----------------------- + + + +.. c:function:: cis + + .. code:: text + + subroutine cis + + File: :file:`cis.irp.f` + + Configuration Interaction with Single excitations. + + + + + +.. c:function:: h_apply_cis + + .. code:: text + + subroutine H_apply_cis() + + File: :file:`h_apply.irp.f_shell_8` + + 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. + + + + + +.. c:function:: h_apply_cis_diexc + + .. code:: text + + subroutine H_apply_cis_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + File: :file:`h_apply.irp.f_shell_8` + + + + + + + +.. c:function:: h_apply_cis_diexcorg + + .. code:: text + + subroutine H_apply_cis_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + File: :file:`h_apply.irp.f_shell_8` + + Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. + + + + + +.. c:function:: h_apply_cis_diexcp + + .. code:: text + + subroutine H_apply_cis_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + File: :file:`h_apply.irp.f_shell_8` + + + + + + + +.. c:function:: h_apply_cis_monoexc + + .. code:: text + + subroutine H_apply_cis_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in ) + + File: :file:`h_apply.irp.f_shell_8` + + Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. + + diff --git a/docs/source/modules/cisd.rst b/docs/source/modules/cisd.rst new file mode 100644 index 00000000..0e697e0b --- /dev/null +++ b/docs/source/modules/cisd.rst @@ -0,0 +1,117 @@ +.. _cisd: + +.. program:: cisd + +.. default-role:: option + +==== +cisd +==== + +This module contains a CISD program, built by setting the following rules: + +* The only generator determinant is the Hartree-Fock (single-reference method) +* All generated determinants are included in the wave function (no perturbative + selection) + +These rules are set in the ``H_apply.irp.f`` file. + + + + + +EZFIO parameters +---------------- + +.. option:: energy + + Variational |CISD| energy + + + +Subroutines / functions +----------------------- + + + +.. c:function:: cisd + + .. code:: text + + subroutine cisd + + File: :file:`cisd.irp.f` + + Configuration Interaction with Single and Double excitations. + + + + + +.. c:function:: h_apply_cisd + + .. code:: text + + subroutine H_apply_cisd() + + File: :file:`h_apply.irp.f_shell_8` + + 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. + + + + + +.. c:function:: h_apply_cisd_diexc + + .. code:: text + + subroutine H_apply_cisd_diexc(key_in, key_prev, hole_1,particl_1, hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + File: :file:`h_apply.irp.f_shell_8` + + + + + + + +.. c:function:: h_apply_cisd_diexcorg + + .. code:: text + + subroutine H_apply_cisd_diexcOrg(key_in,key_mask,hole_1,particl_1,hole_2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + File: :file:`h_apply.irp.f_shell_8` + + Generate all double excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. + + + + + +.. c:function:: h_apply_cisd_diexcp + + .. code:: text + + subroutine H_apply_cisd_diexcP(key_in, fs1, fh1, particl_1, fs2, fh2, particl_2, fock_diag_tmp, i_generator, iproc_in ) + + File: :file:`h_apply.irp.f_shell_8` + + + + + + + +.. c:function:: h_apply_cisd_monoexc + + .. code:: text + + subroutine H_apply_cisd_monoexc(key_in, hole_1,particl_1,fock_diag_tmp,i_generator,iproc_in ) + + File: :file:`h_apply.irp.f_shell_8` + + Generate all single excitations of key_in using the bit masks of holes and particles. Assume N_int is already provided. + + diff --git a/docs/source/modules/davidson.rst b/docs/source/modules/davidson.rst new file mode 100644 index 00000000..b398a920 --- /dev/null +++ b/docs/source/modules/davidson.rst @@ -0,0 +1,682 @@ +.. _davidson: + +.. program:: davidson + +.. default-role:: option + +======== +davidson +======== + +Abstract module for Davidson's diagonalization. +It contains everything required for the Davidson algorithm, dressed or not. If +a dressing is used, the dressing column should be defined and the +:ref:`davidsondressed` module should be used. If no dressing is required, +the :ref:`davidson` module should be used, and it has a default zero dressing vector. + +The important providers for that module are: + +# `psi_energy` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the Hamiltonian, dressed or not. It uses the general subroutine `u_0_H_u_0`. +# `psi_energy_bielec` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the standard two-electrons coulomb operator. It uses the general routine `u_0_H_u_0_bielec`. + + + +EZFIO parameters +---------------- + +.. option:: threshold_davidson + + Thresholds of Davidson's algorithm + + Default: 1.e-10 + +.. option:: n_states_diag + + Number of states to consider during the Davdison diagonalization + + Default: 4 + +.. option:: davidson_sze_max + + Number of micro-iterations before re-contracting + + Default: 8 + +.. option:: state_following + + If |true|, the states are re-ordered to match the input states + + Default: False + +.. option:: disk_based_davidson + + If |true|, disk space is used to store the vectors + + Default: False + +.. option:: distributed_davidson + + If |true|, use the distributed algorithm + + Default: True + +.. option:: only_expected_s2 + + If |true|, use filter out all vectors with bad |S^2| values + + Default: True + + +Providers +--------- + + +.. c:var:: ci_eigenvectors + + .. code:: text + + double precision, allocatable :: ci_electronic_energy (N_states_diag) + double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) + double precision, allocatable :: ci_eigenvectors_s2 (N_states_diag) + + File: :file:`diagonalize_ci.irp.f` + + Eigenvectors/values of the CI matrix + + + + +.. c:var:: ci_eigenvectors_s2 + + .. code:: text + + double precision, allocatable :: ci_electronic_energy (N_states_diag) + double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) + double precision, allocatable :: ci_eigenvectors_s2 (N_states_diag) + + File: :file:`diagonalize_ci.irp.f` + + Eigenvectors/values of the CI matrix + + + + +.. c:var:: ci_electronic_energy + + .. code:: text + + double precision, allocatable :: ci_electronic_energy (N_states_diag) + double precision, allocatable :: ci_eigenvectors (N_det,N_states_diag) + double precision, allocatable :: ci_eigenvectors_s2 (N_states_diag) + + File: :file:`diagonalize_ci.irp.f` + + Eigenvectors/values of the CI matrix + + + + +.. c:var:: ci_energy + + .. code:: text + + double precision, allocatable :: ci_energy (N_states_diag) + + File: :file:`diagonalize_ci.irp.f` + + N_states lowest eigenvalues of the CI matrix + + + + +.. c:var:: davidson_criterion + + .. code:: text + + character(64) :: davidson_criterion + + File: :file:`parameters.irp.f` + + Can be : [ energy | residual | both | wall_time | cpu_time | iterations ] + + + + +.. c:var:: dressed_column_idx + + .. code:: text + + integer, allocatable :: dressed_column_idx (N_states) + + File: :file:`diagonalization_hs2_dressed.irp.f` + + Index of the dressed columns + + + + +.. c:var:: n_states_diag + + .. code:: text + + integer :: n_states_diag + + File: :file:`input.irp.f` + + Number of states to consider during the Davdison diagonalization + + + + +.. c:var:: nthreads_davidson + + .. code:: text + + integer :: nthreads_davidson + + File: :file:`davidson_parallel.irp.f` + + Number of threads for Davdison + + + + +.. c:var:: psi_energy + + .. code:: text + + double precision, allocatable :: psi_energy (N_states) + + File: :file:`u0_h_u0.irp.f` + + Energy of the current wave function + + + + +.. c:var:: psi_energy_bielec + + .. code:: text + + double precision, allocatable :: psi_energy_bielec (N_states) + + File: :file:`u0_wee_u0.irp.f` + + Energy of the current wave function + + + + +.. c:var:: psi_energy_with_nucl_rep + + .. code:: text + + double precision, allocatable :: psi_energy_with_nucl_rep (N_states) + + File: :file:`u0_h_u0.irp.f` + + Energy of the wave function with the nuclear repulsion energy. + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: davidson_collector + + .. code:: text + + subroutine davidson_collector(zmq_to_qp_run_socket, zmq_socket_pull, v0, s0, sze, N_st) + + File: :file:`davidson_parallel.irp.f` + + + + + + + +.. c:function:: davidson_converged + + .. code:: text + + subroutine davidson_converged(energy,residual,wall,iterations,cpu,N_st,converged) + + File: :file:`parameters.irp.f` + + True if the Davidson algorithm is converged + + + + + +.. c:function:: davidson_diag_hjj_sjj + + .. code:: text + + subroutine davidson_diag_hjj_sjj(dets_in,u_in,H_jj,s2_out,energies,dim_in,sze,N_st,N_st_diag,Nint,dressing_state,converged) + + File: :file:`diagonalization_hs2_dressed.irp.f` + + Davidson diagonalization with specific diagonal elements of the H matrix + H_jj : specific diagonal H matrix elements to diagonalize de Davidson + S2_out : Output : s^2 + dets_in : bitmasks corresponding to determinants + u_in : guess coefficients on the various states. Overwritten on exit + dim_in : leftmost dimension of u_in + sze : Number of determinants + N_st : Number of eigenstates + N_st_diag : Number of states in which H is diagonalized. Assumed > sze + Initial guess vectors are not necessarily orthonormal + + + + + +.. c:function:: davidson_diag_hs2 + + .. code:: text + + subroutine davidson_diag_hs2(dets_in,u_in,s2_out,dim_in,energies,sze,N_st,N_st_diag,Nint,dressing_state,converged) + + File: :file:`diagonalization_hs2_dressed.irp.f` + + Davidson diagonalization. + dets_in : bitmasks corresponding to determinants + u_in : guess coefficients on the various states. Overwritten on exit + dim_in : leftmost dimension of u_in + sze : Number of determinants + N_st : Number of eigenstates + Initial guess vectors are not necessarily orthonormal + + + + + +.. c:function:: davidson_pull_results + + .. code:: text + + subroutine davidson_pull_results(zmq_socket_pull, v_t, s_t, imin, imax, task_id) + + File: :file:`davidson_parallel.irp.f` + + + + + + + +.. c:function:: davidson_push_results + + .. code:: text + + subroutine davidson_push_results(zmq_socket_push, v_t, s_t, imin, imax, task_id) + + File: :file:`davidson_parallel.irp.f` + + + + + + + +.. c:function:: davidson_run_slave + + .. code:: text + + subroutine davidson_run_slave(thread,iproc) + + File: :file:`davidson_parallel.irp.f` + + + + + + + +.. c:function:: davidson_slave_inproc + + .. code:: text + + subroutine davidson_slave_inproc(i) + + File: :file:`davidson_parallel.irp.f` + + + + + + + +.. c:function:: davidson_slave_tcp + + .. code:: text + + subroutine davidson_slave_tcp(i) + + File: :file:`davidson_parallel.irp.f` + + + + + + + +.. c:function:: davidson_slave_work + + .. code:: text + + subroutine davidson_slave_work(zmq_to_qp_run_socket, zmq_socket_push, N_st, sze, worker_id) + + File: :file:`davidson_parallel.irp.f` + + + + + + + +.. c:function:: diagonalize_ci + + .. code:: text + + subroutine diagonalize_CI + + File: :file:`diagonalize_ci.irp.f` + + Replace the coefficients of the CI states by the coefficients of the eigenstates of the CI matrix + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp(v_0,s_0,u_0,N_st,sze) + + File: :file:`u0_wee_u0.irp.f` + + Computes v_0 = H|u_0> and s_0 = S^2 |u_0> + Assumes that the determinants are in psi_det + istart, iend, ishift, istep are used in ZMQ parallelization. + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp_work + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_wee_u0.irp.f` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_1 + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_wee_u0.irp.f_template_457` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_2 + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_wee_u0.irp.f_template_457` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_3 + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_wee_u0.irp.f_template_457` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_4 + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_wee_u0.irp.f_template_457` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_bielec_nstates_openmp_work_n_int + + .. code:: text + + subroutine H_S2_u_0_bielec_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_wee_u0.irp.f_template_457` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_nstates_openmp + + .. code:: text + + subroutine H_S2_u_0_nstates_openmp(v_0,s_0,u_0,N_st,sze) + + File: :file:`u0_h_u0.irp.f` + + Computes v_0 = H|u_0> and s_0 = S^2 |u_0> + Assumes that the determinants are in psi_det + istart, iend, ishift, istep are used in ZMQ parallelization. + + + + + +.. c:function:: h_s2_u_0_nstates_openmp_work + + .. code:: text + + subroutine H_S2_u_0_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_h_u0.irp.f` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_nstates_openmp_work_1 + + .. code:: text + + subroutine H_S2_u_0_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_h_u0.irp.f_template_468` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_nstates_openmp_work_2 + + .. code:: text + + subroutine H_S2_u_0_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_h_u0.irp.f_template_468` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_nstates_openmp_work_3 + + .. code:: text + + subroutine H_S2_u_0_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_h_u0.irp.f_template_468` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_nstates_openmp_work_4 + + .. code:: text + + subroutine H_S2_u_0_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_h_u0.irp.f_template_468` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_nstates_openmp_work_n_int + + .. code:: text + + subroutine H_S2_u_0_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) + + File: :file:`u0_h_u0.irp.f_template_468` + + Computes v_t = H|u_t> and s_t = S^2 |u_t> + Default should be 1,N_det,0,1 + + + + + +.. c:function:: h_s2_u_0_nstates_zmq + + .. code:: text + + subroutine H_S2_u_0_nstates_zmq(v_0,s_0,u_0,N_st,sze) + + File: :file:`davidson_parallel.irp.f` + + Computes v_0 = H|u_0> and s_0 = S^2 |u_0> + n : number of determinants + H_jj : array of + S2_jj : array of + + + + + +.. c:function:: u_0_h_u_0 + + .. code:: text + + subroutine u_0_H_u_0(e_0,u_0,n,keys_tmp,Nint,N_st,sze) + + File: :file:`u0_h_u0.irp.f` + + Computes e_0 = / + n : number of determinants + + + + + + +.. c:function:: u_0_h_u_0_bielec + + .. code:: text + + subroutine u_0_H_u_0_bielec(e_0,u_0,n,keys_tmp,Nint,N_st,sze) + + File: :file:`u0_wee_u0.irp.f` + + Computes e_0 = / + n : number of determinants + + + + + + +.. c:function:: zmq_get_n_states_diag + + .. code:: text + + integer function zmq_get_N_states_diag(zmq_to_qp_run_socket, worker_id) + + File: :file:`davidson_parallel.irp.f` + + Get N_states_diag from the qp_run scheduler + + + + + +.. c:function:: zmq_put_n_states_diag + + .. code:: text + + integer function zmq_put_N_states_diag(zmq_to_qp_run_socket,worker_id) + + File: :file:`davidson_parallel.irp.f` + + Put N_states_diag on the qp_run scheduler + + diff --git a/docs/source/modules/davidson_dressed.rst b/docs/source/modules/davidson_dressed.rst new file mode 100644 index 00000000..4697104f --- /dev/null +++ b/docs/source/modules/davidson_dressed.rst @@ -0,0 +1,13 @@ +.. _davidson_dressed: + +.. program:: davidson_dressed + +.. default-role:: option + +================ +davidson_dressed +================ + +Davidson with single-column dressing. + + diff --git a/docs/source/modules/davidson_undressed.rst b/docs/source/modules/davidson_undressed.rst new file mode 100644 index 00000000..e785b4ca --- /dev/null +++ b/docs/source/modules/davidson_undressed.rst @@ -0,0 +1,45 @@ +.. _davidson_undressed: + +.. program:: davidson_undressed + +.. default-role:: option + +================== +davidson_undressed +================== + +Module for main files Davidson's algorithm with no dressing. + + + + +Providers +--------- + + +.. c:var:: dressing_column_h + + .. code:: text + + double precision, allocatable :: dressing_column_h (N_det,N_states) + double precision, allocatable :: dressing_column_s (N_det,N_states) + + File: :file:`null_dressing_vector.irp.f` + + Null dressing vectors + + + + +.. c:var:: dressing_column_s + + .. code:: text + + double precision, allocatable :: dressing_column_h (N_det,N_states) + double precision, allocatable :: dressing_column_s (N_det,N_states) + + File: :file:`null_dressing_vector.irp.f` + + Null dressing vectors + + diff --git a/docs/source/modules/density_for_dft.rst b/docs/source/modules/density_for_dft.rst new file mode 100644 index 00000000..d8d3e1fe --- /dev/null +++ b/docs/source/modules/density_for_dft.rst @@ -0,0 +1,119 @@ +.. _density_for_dft: + +.. program:: density_for_dft + +.. default-role:: option + +=============== +density_for_dft +=============== + + +This module defines the *provider* of the density used for the DFT related calculations. +This definition is done through the keyword :option:`density_for_dft density_for_dft`. +The density can be: + +# WFT : the density is computed with a potentially multi determinant wave function (see variables `psi_det` and `psi_det`)# input_density : the density is set to a density previously stored in the |EZFIO| folder (see ``aux_quantities``) +# damping_rs_dft : the density is damped between the input_density and the WFT density, with a damping factor of :option:`density_for_dft damping_for_rs_dft` + + + + +EZFIO parameters +---------------- + +.. option:: density_for_dft + + Type of density used for DFT calculation. If set to WFT , it uses the density of the wave function stored in (psi_det,psi_coef). If set to input_density it uses the one-body dm stored in aux_quantities/ . If set to damping_rs_dft it uses the damped density between WFT and input_density. In the ks_scf and rs_ks_scf programs, it is set to WFT. + + Default: WFT + +.. option:: damping_for_rs_dft + + damping factor for the density used in RSFT. + + Default: 0.5 + + +Providers +--------- + + +.. c:var:: one_body_dm_alpha_ao_for_dft + + .. code:: text + + double precision, allocatable :: one_body_dm_alpha_ao_for_dft (ao_num,ao_num,N_states) + double precision, allocatable :: one_body_dm_beta_ao_for_dft (ao_num,ao_num,N_states) + + File: :file:`density_for_dft.irp.f` + + one body density matrix on the AO basis based on one_body_dm_mo_alpha_for_dft + + + + +.. c:var:: one_body_dm_average_mo_for_dft + + .. code:: text + + double precision, allocatable :: one_body_dm_average_mo_for_dft (mo_tot_num,mo_tot_num) + + File: :file:`density_for_dft.irp.f` + + + + + + +.. c:var:: one_body_dm_beta_ao_for_dft + + .. code:: text + + double precision, allocatable :: one_body_dm_alpha_ao_for_dft (ao_num,ao_num,N_states) + double precision, allocatable :: one_body_dm_beta_ao_for_dft (ao_num,ao_num,N_states) + + File: :file:`density_for_dft.irp.f` + + one body density matrix on the AO basis based on one_body_dm_mo_alpha_for_dft + + + + +.. c:var:: one_body_dm_mo_alpha_for_dft + + .. code:: text + + double precision, allocatable :: one_body_dm_mo_alpha_for_dft (mo_tot_num,mo_tot_num,N_states) + + File: :file:`density_for_dft.irp.f` + + density matrix for alpha electrons in the MO basis used for all DFT calculations based on the density + + + + +.. c:var:: one_body_dm_mo_beta_for_dft + + .. code:: text + + double precision, allocatable :: one_body_dm_mo_beta_for_dft (mo_tot_num,mo_tot_num,N_states) + + File: :file:`density_for_dft.irp.f` + + density matrix for beta electrons in the MO basis used for all DFT calculations based on the density + + + + +.. c:var:: one_body_dm_mo_for_dft + + .. code:: text + + double precision, allocatable :: one_body_dm_mo_for_dft (mo_tot_num,mo_tot_num,N_states) + + File: :file:`density_for_dft.irp.f` + + + + diff --git a/docs/source/modules/determinants.rst b/docs/source/modules/determinants.rst new file mode 100644 index 00000000..5c2ff86f --- /dev/null +++ b/docs/source/modules/determinants.rst @@ -0,0 +1,3940 @@ +.. _determinants: + +.. program:: determinants + +.. default-role:: option + +============ +determinants +============ + +Contains everything for the computation of the Hamiltonian matrix elements in the basis of orthogonal Slater determinants built on a restricted spin-orbitals basis. + +The main providers for this module are: + +# :option:`determinants n_states`: number of states to be computed +# `psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|. +# `psi_coef`: list of coefficients, for all :option:`determinants n_states` states, and all determinants. + +The main routines for this module are: + +# `i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants. +# `i_H_j_s2`: computes the Hamiltonian and (:math:`S^2`) matrix element between two arbitrary Slater determinants. +# `i_H_j_verbose`: returns the decomposition in terms of one- and two-body components of the Hamiltonian matrix elements between two arbitrary Slater determinants. Also return the fermionic phase factor. +# `i_H_psi`: computes the Hamiltonian matrix element between an arbitrary Slater determinant and a wave function composed of a sum of arbitrary Slater determinants. + + +For an example of how to use these routines and providers, take a look at :file:`example.irp.f`. + + + +EZFIO parameters +---------------- + +.. option:: n_det_max + + Maximum number of determinants in the wave function + + Default: 1000000 + +.. option:: n_det_max_full + + Maximum number of determinants where |H| is fully diagonalized + + Default: 1000 + +.. option:: n_states + + Number of states to consider + + Default: 1 + +.. option:: read_wf + + If |true|, read the wave function from the |EZFIO| file + + Default: False + +.. option:: s2_eig + + Force the wave function to be an eigenfunction of |S^2| + + Default: True + +.. option:: used_weight + + 0: 1./(c_0^2), 1: 1/N_states, 2: input state-average weight, 3: 1/(Norm_L3(Psi)) + + Default: 0 + +.. option:: threshold_generators + + Thresholds on generators (fraction of the square of the norm) + + Default: 0.99 + +.. option:: n_int + + Number of integers required to represent bitstrings (set in module :ref:`bitmask`) + + +.. option:: bit_kind + + (set in module :ref:`bitmask`) + + +.. option:: mo_label + + Label of the |MOs| on which the determinants are expressed + + +.. option:: n_det + + Number of determinants in the current wave function + + +.. option:: psi_coef + + Coefficients of the wave function + + +.. option:: psi_det + + Determinants of the variational space + + +.. option:: expected_s2 + + Expected value of |S^2| + + +.. option:: target_energy + + Energy that should be obtained when truncating the wave function (optional) + + Default: 0. + +.. option:: state_average_weight + + Weight of the states in state-average calculations. + + + +Providers +--------- + + +.. c:var:: abs_psi_coef_max + + .. code:: text + + double precision, allocatable :: psi_coef_max (N_states) + double precision, allocatable :: psi_coef_min (N_states) + double precision, allocatable :: abs_psi_coef_max (N_states) + double precision, allocatable :: abs_psi_coef_min (N_states) + + File: :file:`determinants.irp.f` + + Max and min values of the coefficients + + + + +.. c:var:: abs_psi_coef_min + + .. code:: text + + double precision, allocatable :: psi_coef_max (N_states) + double precision, allocatable :: psi_coef_min (N_states) + double precision, allocatable :: abs_psi_coef_max (N_states) + double precision, allocatable :: abs_psi_coef_min (N_states) + + File: :file:`determinants.irp.f` + + Max and min values of the coefficients + + + + +.. c:var:: barycentric_electronic_energy + + .. code:: text + + double precision, allocatable :: barycentric_electronic_energy (N_states) + + File: :file:`energy.irp.f` + + TODO : ASCII Elephant + + + + +.. c:var:: bi_elec_ref_bitmask_energy + + .. code:: text + + double precision :: ref_bitmask_energy + double precision :: mono_elec_ref_bitmask_energy + double precision :: kinetic_ref_bitmask_energy + double precision :: nucl_elec_ref_bitmask_energy + double precision :: bi_elec_ref_bitmask_energy + + File: :file:`ref_bitmask.irp.f` + + Energy of the reference bitmask used in Slater rules + + + + +.. c:var:: c0_weight + + .. code:: text + + double precision, allocatable :: c0_weight (N_states) + + File: :file:`density_matrix.irp.f` + + Weight of the states in the selection : 1/c_0^2 + + + + +.. c:var:: det_alpha_norm + + .. code:: text + + double precision, allocatable :: det_alpha_norm (N_det_alpha_unique) + double precision, allocatable :: det_beta_norm (N_det_beta_unique) + + File: :file:`spindeterminants.irp.f` + + Norm of the alpha and beta spin determinants in the wave function: + ||Da||_i \sum_j C_{ij}**2 + + + + +.. c:var:: det_beta_norm + + .. code:: text + + double precision, allocatable :: det_alpha_norm (N_det_alpha_unique) + double precision, allocatable :: det_beta_norm (N_det_beta_unique) + + File: :file:`spindeterminants.irp.f` + + Norm of the alpha and beta spin determinants in the wave function: + ||Da||_i \sum_j C_{ij}**2 + + + + +.. c:var:: det_to_occ_pattern + + .. code:: text + + integer, allocatable :: det_to_occ_pattern (N_det) + + File: :file:`occ_pattern.irp.f` + + Returns the index of the occupation pattern for each determinant + + + + +.. c:var:: diag_algorithm + + .. code:: text + + character*(64) :: diag_algorithm + + File: :file:`determinants.irp.f` + + Diagonalization algorithm (Davidson or Lapack) + + + + +.. c:var:: diagonal_h_matrix_on_psi_det + + .. code:: text + + double precision, allocatable :: diagonal_h_matrix_on_psi_det (N_det) + + File: :file:`energy.irp.f` + + Diagonal of the Hamiltonian ordered as psi_det + + + + +.. c:var:: double_exc_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: double_exc_bitmask (N_int,4,N_double_exc_bitmasks) + + File: :file:`determinants_bitmasks.irp.f` + + double_exc_bitmask(:,1,i) is the bitmask for holes of excitation 1 double_exc_bitmask(:,2,i) is the bitmask for particles of excitation 1 double_exc_bitmask(:,3,i) is the bitmask for holes of excitation 2 double_exc_bitmask(:,4,i) is the bitmask for particles of excitation 2 for a given couple of hole/particle excitations i. + + + + +.. c:var:: expected_s2 + + .. code:: text + + double precision :: expected_s2 + + File: :file:`s2.irp.f` + + Expected value of S2 : S*(S+1) + + + + +.. c:var:: fock_operator_closed_shell_ref_bitmask + + .. code:: text + + double precision, allocatable :: fock_operator_closed_shell_ref_bitmask (mo_tot_num,mo_tot_num) + + File: :file:`mono_excitations.irp.f` + + + + + + +.. c:var:: fock_wee_closed_shell + + .. code:: text + + double precision, allocatable :: fock_wee_closed_shell (mo_tot_num,mo_tot_num) + + File: :file:`mono_excitations_bielec.irp.f` + + + + + + +.. c:var:: h_apply_buffer_allocated + + .. code:: text + + logical :: h_apply_buffer_allocated + integer(omp_lock_kind), allocatable :: h_apply_buffer_lock (64,0:nproc-1) + + File: :file:`h_apply.irp.f` + + Buffer of determinants/coefficients/perturbative energy for H_apply. Uninitialized. Filled by H_apply subroutines. + + + + +.. c:var:: h_apply_buffer_lock + + .. code:: text + + logical :: h_apply_buffer_allocated + integer(omp_lock_kind), allocatable :: h_apply_buffer_lock (64,0:nproc-1) + + File: :file:`h_apply.irp.f` + + Buffer of determinants/coefficients/perturbative energy for H_apply. Uninitialized. Filled by H_apply subroutines. + + + + +.. c:var:: h_matrix_all_dets + + .. code:: text + + double precision, allocatable :: h_matrix_all_dets (N_det,N_det) + + File: :file:`utils.irp.f` + + H matrix on the basis of the slater determinants defined by psi_det + + + + +.. c:var:: h_matrix_cas + + .. code:: text + + double precision, allocatable :: h_matrix_cas (N_det_cas,N_det_cas) + + File: :file:`psi_cas.irp.f` + + + + + + +.. c:var:: idx_cas + + .. code:: text + + integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_cas (psi_det_size) + integer :: n_det_cas + + File: :file:`psi_cas.irp.f` + + CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. + + + + +.. c:var:: idx_non_cas + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_cas (psi_det_size) + integer :: n_det_non_cas + + File: :file:`psi_cas.irp.f` + + Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. idx_non_cas gives the indice of the determinant in psi_det. + + + + +.. c:var:: kinetic_ref_bitmask_energy + + .. code:: text + + double precision :: ref_bitmask_energy + double precision :: mono_elec_ref_bitmask_energy + double precision :: kinetic_ref_bitmask_energy + double precision :: nucl_elec_ref_bitmask_energy + double precision :: bi_elec_ref_bitmask_energy + + File: :file:`ref_bitmask.irp.f` + + Energy of the reference bitmask used in Slater rules + + + + +.. c:var:: l3_weight + + .. code:: text + + double precision, allocatable :: l3_weight (N_states) + + File: :file:`density_matrix.irp.f` + + Weight of the states in the selection : 1/(sum_i |c_i|^3) + + + + +.. c:var:: max_degree_exc + + .. code:: text + + integer :: max_degree_exc + + File: :file:`determinants.irp.f` + + Maximum degree of excitation in the wf + + + + +.. c:var:: mo_energy_expval + + .. code:: text + + double precision, allocatable :: mo_energy_expval (N_states,mo_tot_num,2,2) + + File: :file:`mo_energy_expval.irp.f` + + Third index is spin. Fourth index is 1:creation, 2:annihilation + + + + +.. c:var:: mono_elec_ref_bitmask_energy + + .. code:: text + + double precision :: ref_bitmask_energy + double precision :: mono_elec_ref_bitmask_energy + double precision :: kinetic_ref_bitmask_energy + double precision :: nucl_elec_ref_bitmask_energy + double precision :: bi_elec_ref_bitmask_energy + + File: :file:`ref_bitmask.irp.f` + + Energy of the reference bitmask used in Slater rules + + + + +.. c:var:: n_det + + .. code:: text + + integer :: n_det + + File: :file:`determinants.irp.f` + + Number of determinants in the wave function + + + + +.. c:var:: n_det_alpha_unique + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_alpha_unique (N_int,psi_det_size) + integer :: n_det_alpha_unique + + File: :file:`spindeterminants.irp.f_template_141` + + Unique alpha determinants + + + + +.. c:var:: n_det_beta_unique + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_beta_unique (N_int,psi_det_size) + integer :: n_det_beta_unique + + File: :file:`spindeterminants.irp.f_template_141` + + Unique beta determinants + + + + +.. c:var:: n_det_cas + + .. code:: text + + integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_cas (psi_det_size) + integer :: n_det_cas + + File: :file:`psi_cas.irp.f` + + CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. + + + + +.. c:var:: n_det_non_cas + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_cas (psi_det_size) + integer :: n_det_non_cas + + File: :file:`psi_cas.irp.f` + + Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. idx_non_cas gives the indice of the determinant in psi_det. + + + + +.. c:var:: n_double_exc_bitmasks + + .. code:: text + + integer :: n_double_exc_bitmasks + + File: :file:`determinants_bitmasks.irp.f` + + Number of double excitation bitmasks + + + + +.. c:var:: n_occ_pattern + + .. code:: text + + integer(bit_kind), allocatable :: psi_occ_pattern (N_int,2,psi_det_size) + integer :: n_occ_pattern + + File: :file:`occ_pattern.irp.f` + + array of the occ_pattern present in the wf psi_occ_pattern(:,1,j) = jth occ_pattern of the wave function : represent all the single occupations psi_occ_pattern(:,2,j) = jth occ_pattern of the wave function : represent all the double occupations The occ patterns are sorted by occ_pattern_search_key + + + + +.. c:var:: n_single_exc_bitmasks + + .. code:: text + + integer :: n_single_exc_bitmasks + + File: :file:`determinants_bitmasks.irp.f` + + Number of single excitation bitmasks + + + + +.. c:var:: nucl_elec_ref_bitmask_energy + + .. code:: text + + double precision :: ref_bitmask_energy + double precision :: mono_elec_ref_bitmask_energy + double precision :: kinetic_ref_bitmask_energy + double precision :: nucl_elec_ref_bitmask_energy + double precision :: bi_elec_ref_bitmask_energy + + File: :file:`ref_bitmask.irp.f` + + Energy of the reference bitmask used in Slater rules + + + + +.. c:var:: one_body_dm_ao_alpha + + .. code:: text + + double precision, allocatable :: one_body_dm_ao_alpha (ao_num,ao_num) + double precision, allocatable :: one_body_dm_ao_beta (ao_num,ao_num) + + File: :file:`density_matrix.irp.f` + + one body density matrix on the AO basis : rho_AO(alpha) , rho_AO(beta) + + + + +.. c:var:: one_body_dm_ao_beta + + .. code:: text + + double precision, allocatable :: one_body_dm_ao_alpha (ao_num,ao_num) + double precision, allocatable :: one_body_dm_ao_beta (ao_num,ao_num) + + File: :file:`density_matrix.irp.f` + + one body density matrix on the AO basis : rho_AO(alpha) , rho_AO(beta) + + + + +.. c:var:: one_body_dm_dagger_mo_spin_index + + .. code:: text + + double precision, allocatable :: one_body_dm_dagger_mo_spin_index (mo_tot_num,mo_tot_num,N_states,2) + + File: :file:`density_matrix.irp.f` + + + + + + +.. c:var:: one_body_dm_mo + + .. code:: text + + double precision, allocatable :: one_body_dm_mo (mo_tot_num,mo_tot_num) + + File: :file:`density_matrix.irp.f` + + One-body density matrix + + + + +.. c:var:: one_body_dm_mo_alpha + + .. code:: text + + double precision, allocatable :: one_body_dm_mo_alpha (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: one_body_dm_mo_beta (mo_tot_num,mo_tot_num,N_states) + + File: :file:`density_matrix.irp.f` + + Alpha and beta one-body density matrix for each state + + + + +.. c:var:: one_body_dm_mo_alpha_average + + .. code:: text + + double precision, allocatable :: one_body_dm_mo_alpha_average (mo_tot_num,mo_tot_num) + double precision, allocatable :: one_body_dm_mo_beta_average (mo_tot_num,mo_tot_num) + + File: :file:`density_matrix.irp.f` + + Alpha and beta one-body density matrix for each state + + + + +.. c:var:: one_body_dm_mo_beta + + .. code:: text + + double precision, allocatable :: one_body_dm_mo_alpha (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: one_body_dm_mo_beta (mo_tot_num,mo_tot_num,N_states) + + File: :file:`density_matrix.irp.f` + + Alpha and beta one-body density matrix for each state + + + + +.. c:var:: one_body_dm_mo_beta_average + + .. code:: text + + double precision, allocatable :: one_body_dm_mo_alpha_average (mo_tot_num,mo_tot_num) + double precision, allocatable :: one_body_dm_mo_beta_average (mo_tot_num,mo_tot_num) + + File: :file:`density_matrix.irp.f` + + Alpha and beta one-body density matrix for each state + + + + +.. c:var:: one_body_dm_mo_diff + + .. code:: text + + double precision, allocatable :: one_body_dm_mo_diff (mo_tot_num,mo_tot_num,2:N_states) + + File: :file:`density_matrix.irp.f` + + Difference of the one-body density matrix with respect to the ground state + + + + +.. c:var:: one_body_dm_mo_spin_index + + .. code:: text + + double precision, allocatable :: one_body_dm_mo_spin_index (mo_tot_num,mo_tot_num,N_states,2) + + File: :file:`density_matrix.irp.f` + + + + + + +.. c:var:: one_body_single_double_dm_mo_alpha + + .. code:: text + + double precision, allocatable :: one_body_single_double_dm_mo_alpha (mo_tot_num,mo_tot_num) + double precision, allocatable :: one_body_single_double_dm_mo_beta (mo_tot_num,mo_tot_num) + + File: :file:`density_matrix.irp.f` + + Alpha and beta one-body density matrix for each state + + + + +.. c:var:: one_body_single_double_dm_mo_beta + + .. code:: text + + double precision, allocatable :: one_body_single_double_dm_mo_alpha (mo_tot_num,mo_tot_num) + double precision, allocatable :: one_body_single_double_dm_mo_beta (mo_tot_num,mo_tot_num) + + File: :file:`density_matrix.irp.f` + + Alpha and beta one-body density matrix for each state + + + + +.. c:var:: one_body_spin_density_ao + + .. code:: text + + double precision, allocatable :: one_body_spin_density_ao (ao_num,ao_num) + + File: :file:`density_matrix.irp.f` + + one body spin density matrix on the AO basis : rho_AO(alpha) - rho_AO(beta) + + + + +.. c:var:: one_body_spin_density_mo + + .. code:: text + + double precision, allocatable :: one_body_spin_density_mo (mo_tot_num,mo_tot_num) + + File: :file:`density_matrix.irp.f` + + rho(alpha) - rho(beta) + + + + +.. c:var:: psi_average_norm_contrib + + .. code:: text + + double precision, allocatable :: psi_average_norm_contrib (psi_det_size) + + File: :file:`determinants.irp.f` + + Contribution of determinants to the state-averaged density + + + + +.. c:var:: psi_average_norm_contrib_sorted + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states) + double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size) + integer, allocatable :: psi_det_sorted_order (psi_det_size) + + File: :file:`determinants.irp.f` + + Wave function sorted by determinants contribution to the norm (state-averaged) + psi_det_sorted_order(i) -> k : index in psi_det + + + + +.. c:var:: psi_bilinear_matrix + + .. code:: text + + double precision, allocatable :: psi_bilinear_matrix (N_det_alpha_unique,N_det_beta_unique,N_states) + + File: :file:`spindeterminants.irp.f` + + Coefficient matrix if the wave function is expressed in a bilinear form : D_a^t C D_b + + + + +.. c:var:: psi_bilinear_matrix_columns + + .. code:: text + + double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_order (N_det) + + File: :file:`spindeterminants.irp.f` + + Sparse coefficient matrix if the wave function is expressed in a bilinear form : D_a^t C D_b + Rows are alpha determinants and columns are beta. + Order refers to psi_det + + + + +.. c:var:: psi_bilinear_matrix_columns_loc + + .. code:: text + + integer, allocatable :: psi_bilinear_matrix_columns_loc (N_det_beta_unique+1) + + File: :file:`spindeterminants.irp.f` + + Sparse coefficient matrix if the wave function is expressed in a bilinear form : D_a^t C D_b + Rows are alpha determinants and columns are beta. + Order refers to psi_det + + + + +.. c:var:: psi_bilinear_matrix_order + + .. code:: text + + double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_order (N_det) + + File: :file:`spindeterminants.irp.f` + + Sparse coefficient matrix if the wave function is expressed in a bilinear form : D_a^t C D_b + Rows are alpha determinants and columns are beta. + Order refers to psi_det + + + + +.. c:var:: psi_bilinear_matrix_order_reverse + + .. code:: text + + integer, allocatable :: psi_bilinear_matrix_order_reverse (N_det) + + File: :file:`spindeterminants.irp.f` + + Order which allows to go from psi_bilinear_matrix to psi_det + + + + +.. c:var:: psi_bilinear_matrix_order_transp_reverse + + .. code:: text + + integer, allocatable :: psi_bilinear_matrix_order_transp_reverse (N_det) + + File: :file:`spindeterminants.irp.f` + + Order which allows to go from psi_bilinear_matrix_order_transp to psi_bilinear_matrix + + + + +.. c:var:: psi_bilinear_matrix_rows + + .. code:: text + + double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_order (N_det) + + File: :file:`spindeterminants.irp.f` + + Sparse coefficient matrix if the wave function is expressed in a bilinear form : D_a^t C D_b + Rows are alpha determinants and columns are beta. + Order refers to psi_det + + + + +.. c:var:: psi_bilinear_matrix_transp_columns + + .. code:: text + + double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_order (N_det) + + File: :file:`spindeterminants.irp.f` + + Transpose of psi_bilinear_matrix D_b^t C^t D_a + Rows are Alpha determinants and columns are beta, but the matrix is stored in row major format + + + + +.. c:var:: psi_bilinear_matrix_transp_order + + .. code:: text + + double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_order (N_det) + + File: :file:`spindeterminants.irp.f` + + Transpose of psi_bilinear_matrix D_b^t C^t D_a + Rows are Alpha determinants and columns are beta, but the matrix is stored in row major format + + + + +.. c:var:: psi_bilinear_matrix_transp_rows + + .. code:: text + + double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_order (N_det) + + File: :file:`spindeterminants.irp.f` + + Transpose of psi_bilinear_matrix D_b^t C^t D_a + Rows are Alpha determinants and columns are beta, but the matrix is stored in row major format + + + + +.. c:var:: psi_bilinear_matrix_transp_rows_loc + + .. code:: text + + integer, allocatable :: psi_bilinear_matrix_transp_rows_loc (N_det_alpha_unique+1) + + File: :file:`spindeterminants.irp.f` + + Location of the columns in the psi_bilinear_matrix + + + + +.. c:var:: psi_bilinear_matrix_transp_values + + .. code:: text + + double precision, allocatable :: psi_bilinear_matrix_transp_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_transp_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_transp_order (N_det) + + File: :file:`spindeterminants.irp.f` + + Transpose of psi_bilinear_matrix D_b^t C^t D_a + Rows are Alpha determinants and columns are beta, but the matrix is stored in row major format + + + + +.. c:var:: psi_bilinear_matrix_values + + .. code:: text + + double precision, allocatable :: psi_bilinear_matrix_values (N_det,N_states) + integer, allocatable :: psi_bilinear_matrix_rows (N_det) + integer, allocatable :: psi_bilinear_matrix_columns (N_det) + integer, allocatable :: psi_bilinear_matrix_order (N_det) + + File: :file:`spindeterminants.irp.f` + + Sparse coefficient matrix if the wave function is expressed in a bilinear form : D_a^t C D_b + Rows are alpha determinants and columns are beta. + Order refers to psi_det + + + + +.. c:var:: psi_cas + + .. code:: text + + integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_cas (psi_det_size) + integer :: n_det_cas + + File: :file:`psi_cas.irp.f` + + CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. + + + + +.. c:var:: psi_cas_coef + + .. code:: text + + integer(bit_kind), allocatable :: psi_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_cas (psi_det_size) + integer :: n_det_cas + + File: :file:`psi_cas.irp.f` + + CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. + + + + +.. c:var:: psi_cas_coef_sorted_bit + + .. code:: text + + integer(bit_kind), allocatable :: psi_cas_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_cas_coef_sorted_bit (psi_det_size,N_states) + + File: :file:`psi_cas.irp.f` + + CAS determinants sorted to accelerate the search of a random determinant in the wave function. + + + + +.. c:var:: psi_cas_energy + + .. code:: text + + double precision, allocatable :: psi_cas_energy (N_states) + + File: :file:`psi_cas.irp.f` + + + + + + +.. c:var:: psi_cas_energy_diagonalized + + .. code:: text + + double precision, allocatable :: psi_coef_cas_diagonalized (N_det_cas,N_states) + double precision, allocatable :: psi_cas_energy_diagonalized (N_states) + + File: :file:`psi_cas.irp.f` + + + + + + +.. c:var:: psi_cas_sorted_bit + + .. code:: text + + integer(bit_kind), allocatable :: psi_cas_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_cas_coef_sorted_bit (psi_det_size,N_states) + + File: :file:`psi_cas.irp.f` + + CAS determinants sorted to accelerate the search of a random determinant in the wave function. + + + + +.. c:var:: psi_coef + + .. code:: text + + double precision, allocatable :: psi_coef (psi_det_size,N_states) + + File: :file:`determinants.irp.f` + + The wave function coefficients. Initialized with Hartree-Fock if the EZFIO file is empty + + + + +.. c:var:: psi_coef_cas_diagonalized + + .. code:: text + + double precision, allocatable :: psi_coef_cas_diagonalized (N_det_cas,N_states) + double precision, allocatable :: psi_cas_energy_diagonalized (N_states) + + File: :file:`psi_cas.irp.f` + + + + + + +.. c:var:: psi_coef_max + + .. code:: text + + double precision, allocatable :: psi_coef_max (N_states) + double precision, allocatable :: psi_coef_min (N_states) + double precision, allocatable :: abs_psi_coef_max (N_states) + double precision, allocatable :: abs_psi_coef_min (N_states) + + File: :file:`determinants.irp.f` + + Max and min values of the coefficients + + + + +.. c:var:: psi_coef_min + + .. code:: text + + double precision, allocatable :: psi_coef_max (N_states) + double precision, allocatable :: psi_coef_min (N_states) + double precision, allocatable :: abs_psi_coef_max (N_states) + double precision, allocatable :: abs_psi_coef_min (N_states) + + File: :file:`determinants.irp.f` + + Max and min values of the coefficients + + + + +.. c:var:: psi_coef_sorted + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states) + double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size) + integer, allocatable :: psi_det_sorted_order (psi_det_size) + + File: :file:`determinants.irp.f` + + Wave function sorted by determinants contribution to the norm (state-averaged) + psi_det_sorted_order(i) -> k : index in psi_det + + + + +.. c:var:: psi_coef_sorted_bit + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted_bit (psi_det_size,N_states) + + File: :file:`determinants.irp.f` + + Determinants on which we apply for perturbation. They are sorted by determinants interpreted as integers. Useful to accelerate the search of a random determinant in the wave function. + + + + +.. c:var:: psi_det + + .. code:: text + + integer(bit_kind), allocatable :: psi_det (N_int,2,psi_det_size) + + File: :file:`determinants.irp.f` + + The wave function determinants. Initialized with Hartree-Fock if the EZFIO file is empty + + + + +.. c:var:: psi_det_alpha + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_alpha (N_int,psi_det_size) + + File: :file:`spindeterminants.irp.f` + + List of alpha determinants of psi_det + + + + +.. c:var:: psi_det_alpha_unique + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_alpha_unique (N_int,psi_det_size) + integer :: n_det_alpha_unique + + File: :file:`spindeterminants.irp.f_template_141` + + Unique alpha determinants + + + + +.. c:var:: psi_det_beta + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_beta (N_int,psi_det_size) + + File: :file:`spindeterminants.irp.f` + + List of beta determinants of psi_det + + + + +.. c:var:: psi_det_beta_unique + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_beta_unique (N_int,psi_det_size) + integer :: n_det_beta_unique + + File: :file:`spindeterminants.irp.f_template_141` + + Unique beta determinants + + + + +.. c:var:: psi_det_hii + + .. code:: text + + double precision, allocatable :: psi_det_hii (N_det) + + File: :file:`determinants.irp.f` + + for all determinants. + + + + +.. c:var:: psi_det_size + + .. code:: text + + integer :: psi_det_size + + File: :file:`determinants.irp.f` + + Size of the psi_det/psi_coef arrays + + + + +.. c:var:: psi_det_sorted + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states) + double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size) + integer, allocatable :: psi_det_sorted_order (psi_det_size) + + File: :file:`determinants.irp.f` + + Wave function sorted by determinants contribution to the norm (state-averaged) + psi_det_sorted_order(i) -> k : index in psi_det + + + + +.. c:var:: psi_det_sorted_bit + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted_bit (psi_det_size,N_states) + + File: :file:`determinants.irp.f` + + Determinants on which we apply for perturbation. They are sorted by determinants interpreted as integers. Useful to accelerate the search of a random determinant in the wave function. + + + + +.. c:var:: psi_det_sorted_order + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_sorted (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted (psi_det_size,N_states) + double precision, allocatable :: psi_average_norm_contrib_sorted (psi_det_size) + integer, allocatable :: psi_det_sorted_order (psi_det_size) + + File: :file:`determinants.irp.f` + + Wave function sorted by determinants contribution to the norm (state-averaged) + psi_det_sorted_order(i) -> k : index in psi_det + + + + +.. c:var:: psi_energy_h_core + + .. code:: text + + double precision, allocatable :: psi_energy_h_core (N_states) + + File: :file:`psi_energy_mono_elec.irp.f` + + psi_energy_h_core = computed using the one_body_dm_mo_alpha+one_body_dm_mo_beta and mo_mono_elec_integral + + + + +.. c:var:: psi_non_cas + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_cas (psi_det_size) + integer :: n_det_non_cas + + File: :file:`psi_cas.irp.f` + + Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. idx_non_cas gives the indice of the determinant in psi_det. + + + + +.. c:var:: psi_non_cas_coef + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_cas (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_cas_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_cas (psi_det_size) + integer :: n_det_non_cas + + File: :file:`psi_cas.irp.f` + + Set of determinants which are not part of the CAS, defined from the application of the CAS bitmask on the determinants. idx_non_cas gives the indice of the determinant in psi_det. + + + + +.. c:var:: psi_non_cas_coef_sorted_bit + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_cas_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_cas_coef_sorted_bit (psi_det_size,N_states) + + File: :file:`psi_cas.irp.f` + + CAS determinants sorted to accelerate the search of a random determinant in the wave function. + + + + +.. c:var:: psi_non_cas_sorted_bit + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_cas_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_cas_coef_sorted_bit (psi_det_size,N_states) + + File: :file:`psi_cas.irp.f` + + CAS determinants sorted to accelerate the search of a random determinant in the wave function. + + + + +.. c:var:: psi_occ_pattern + + .. code:: text + + integer(bit_kind), allocatable :: psi_occ_pattern (N_int,2,psi_det_size) + integer :: n_occ_pattern + + File: :file:`occ_pattern.irp.f` + + array of the occ_pattern present in the wf psi_occ_pattern(:,1,j) = jth occ_pattern of the wave function : represent all the single occupations psi_occ_pattern(:,2,j) = jth occ_pattern of the wave function : represent all the double occupations The occ patterns are sorted by occ_pattern_search_key + + + + +.. c:var:: psi_occ_pattern_hii + + .. code:: text + + double precision, allocatable :: psi_occ_pattern_hii (N_occ_pattern) + + File: :file:`occ_pattern.irp.f` + + where |I> is an occupation pattern. This is the minimum Hii of all , where the |i> are the determinants if oI> + + + + +.. c:var:: ref_bitmask_energy + + .. code:: text + + double precision :: ref_bitmask_energy + double precision :: mono_elec_ref_bitmask_energy + double precision :: kinetic_ref_bitmask_energy + double precision :: nucl_elec_ref_bitmask_energy + double precision :: bi_elec_ref_bitmask_energy + + File: :file:`ref_bitmask.irp.f` + + Energy of the reference bitmask used in Slater rules + + + + +.. c:var:: ref_closed_shell_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: ref_closed_shell_bitmask (N_int,2) + + File: :file:`mono_excitations.irp.f` + + + + + + +.. c:var:: s2_values + + .. code:: text + + double precision, allocatable :: s2_values (N_states) + + File: :file:`s2.irp.f` + + array of the averaged values of the S^2 operator on the various states + + + + +.. c:var:: s_z + + .. code:: text + + double precision :: s_z + double precision :: s_z2_sz + + File: :file:`s2.irp.f` + + z component of the Spin + + + + +.. c:var:: s_z2_sz + + .. code:: text + + double precision :: s_z + double precision :: s_z2_sz + + File: :file:`s2.irp.f` + + z component of the Spin + + + + +.. c:var:: single_exc_bitmask + + .. code:: text + + integer(bit_kind), allocatable :: single_exc_bitmask (N_int,2,N_single_exc_bitmasks) + + File: :file:`determinants_bitmasks.irp.f` + + single_exc_bitmask(:,1,i) is the bitmask for holes single_exc_bitmask(:,2,i) is the bitmask for particles for a given couple of hole/particle excitations i. + + + + +.. c:var:: singles_alpha_csc + + .. code:: text + + integer, allocatable :: singles_alpha_csc (singles_alpha_csc_size) + + File: :file:`spindeterminants.irp.f` + + Dimension of the singles_alpha array + + + + +.. c:var:: singles_alpha_csc_idx + + .. code:: text + + integer*8, allocatable :: singles_alpha_csc_idx (N_det_alpha_unique+1) + integer*8 :: singles_alpha_csc_size + + File: :file:`spindeterminants.irp.f` + + Dimension of the singles_alpha array + + + + +.. c:var:: singles_alpha_csc_size + + .. code:: text + + integer*8, allocatable :: singles_alpha_csc_idx (N_det_alpha_unique+1) + integer*8 :: singles_alpha_csc_size + + File: :file:`spindeterminants.irp.f` + + Dimension of the singles_alpha array + + + + +.. c:var:: singles_alpha_size + + .. code:: text + + integer :: singles_alpha_size + + File: :file:`spindeterminants.irp.f` + + Dimension of the singles_alpha array + + + + +.. c:var:: state_average_weight + + .. code:: text + + double precision, allocatable :: state_average_weight (N_states) + + File: :file:`density_matrix.irp.f` + + Weights in the state-average calculation of the density matrix + + + + +.. c:var:: weight_occ_pattern + + .. code:: text + + double precision, allocatable :: weight_occ_pattern (N_occ_pattern,N_states) + + File: :file:`occ_pattern.irp.f` + + Weight of the occupation patterns in the wave function + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: a_operator + + .. code:: text + + subroutine a_operator(iorb,ispin,key,hjj,Nint,na,nb) + + File: :file:`slater_rules.irp.f` + + Needed for diag_H_mat_elem + + + + + +.. c:function:: a_operator_bielec + + .. code:: text + + subroutine a_operator_bielec(iorb,ispin,key,hjj,Nint,na,nb) + + File: :file:`slater_rules_wee_mono.irp.f` + + Needed for diag_H_mat_elem + + + + + +.. c:function:: ac_operator + + .. code:: text + + subroutine ac_operator(iorb,ispin,key,hjj,Nint,na,nb) + + File: :file:`slater_rules.irp.f` + + Needed for diag_H_mat_elem + + + + + +.. c:function:: ac_operator_bielec + + .. code:: text + + subroutine ac_operator_bielec(iorb,ispin,key,hjj,Nint,na,nb) + + File: :file:`slater_rules_wee_mono.irp.f` + + Needed for diag_H_mat_elem + + + + + +.. c:function:: apply_excitation + + .. code:: text + + subroutine apply_excitation(det, exc, res, ok, Nint) + + File: :file:`determinants.irp.f` + + + + + + + +.. c:function:: apply_hole + + .. code:: text + + subroutine apply_hole(det, s1, h1, res, ok, Nint) + + File: :file:`determinants.irp.f` + + + + + + + +.. c:function:: apply_holes + + .. code:: text + + subroutine apply_holes(det, s1, h1, s2, h2, res, ok, Nint) + + File: :file:`determinants.irp.f` + + + + + + + +.. c:function:: apply_particle + + .. code:: text + + subroutine apply_particle(det, s1, p1, res, ok, Nint) + + File: :file:`determinants.irp.f` + + + + + + + +.. c:function:: apply_particles + + .. code:: text + + subroutine apply_particles(det, s1, p1, s2, p2, res, ok, Nint) + + File: :file:`determinants.irp.f` + + + + + + + +.. c:function:: au0_h_au0 + + .. code:: text + + subroutine au0_h_au0(energies,psi_in,psi_in_coef,ndet,dim_psi_coef) + + File: :file:`mo_energy_expval.irp.f` + + + + + + + +.. c:function:: bitstring_to_list_ab + + .. code:: text + + subroutine bitstring_to_list_ab( string, list, n_elements, Nint) + + File: :file:`slater_rules.irp.f` + + Gives the inidices(+1) of the bits set to 1 in the bit string For alpha/beta determinants + + + + + +.. c:function:: build_fock_tmp + + .. code:: text + + subroutine build_fock_tmp(fock_diag_tmp,det_ref,Nint) + + File: :file:`fock_diag.irp.f` + + Build the diagonal of the Fock matrix corresponding to a generator determinant. F_00 is = E0. + + + + + +.. c:function:: connected_to_ref + + .. code:: text + + integer function connected_to_ref(key,keys,Nint,N_past_in,Ndet) + + File: :file:`connected_to_ref.irp.f` + + input : key : a given Slater determinant + : keys: a list of Slater determinants + : Ndet: the number of Slater determinants in keys + : N_past_in the number of Slater determinants for the connectivity research + output : 0 : key not connected to the N_past_in first Slater determinants in keys + i : key is connected to determinant i of keys + -i : key is the ith determinant of the reference wf keys + + + + + +.. c:function:: connected_to_ref_by_mono + + .. code:: text + + integer function connected_to_ref_by_mono(key,keys,Nint,N_past_in,Ndet) + + File: :file:`connected_to_ref.irp.f` + + input : key : a given Slater determinant + : keys: a list of Slater determinants + : Ndet: the number of Slater determinants in keys + : N_past_in the number of Slater determinants for the connectivity research + output : 0 : key not connected by a MONO EXCITATION to the N_past_in first Slater determinants in keys + i : key is connected by a MONO EXCITATION to determinant i of keys + -i : key is the ith determinant of the reference wf keys + + + + + +.. c:function:: copy_h_apply_buffer_to_wf + + .. code:: text + + subroutine copy_H_apply_buffer_to_wf + + File: :file:`h_apply.irp.f` + + Copies the H_apply buffer to psi_coef. After calling this subroutine, N_det, psi_det and psi_coef need to be touched + + + + + +.. c:function:: copy_psi_bilinear_to_psi + + .. code:: text + + subroutine copy_psi_bilinear_to_psi(psi, isize) + + File: :file:`spindeterminants.irp.f` + + Overwrites psi_det and psi_coef with the wf in bilinear order + + + + + +.. c:function:: create_microlist + + .. code:: text + + subroutine create_microlist(minilist, N_minilist, key_mask, microlist, idx_microlist, N_microlist, ptr_microlist, Nint) + + File: :file:`filter_connected.irp.f` + + + + + + + +.. c:function:: create_minilist + + .. code:: text + + subroutine create_minilist(key_mask, fullList, miniList, idx_miniList, N_fullList, N_miniList, Nint) + + File: :file:`slater_rules.irp.f` + + + + + + + +.. c:function:: create_minilist_find_previous + + .. code:: text + + subroutine create_minilist_find_previous(key_mask, fullList, miniList, N_fullList, N_miniList, fullMatch, Nint) + + File: :file:`slater_rules.irp.f` + + + + + + + +.. c:function:: create_wf_of_psi_bilinear_matrix + + .. code:: text + + subroutine create_wf_of_psi_bilinear_matrix(truncate) + + File: :file:`spindeterminants.irp.f` + + Generate a wave function containing all possible products of alpha and beta determinants + + + + + +.. c:function:: decode_exc + + .. code:: text + + subroutine decode_exc(exc,degree,h1,p1,h2,p2,s1,s2) + + File: :file:`slater_rules.irp.f` + + Decodes the exc arrays returned by get_excitation. h1,h2 : Holes p1,p2 : Particles s1,s2 : Spins (1:alpha, 2:beta) degree : Degree of excitation + + + + + +.. c:function:: decode_exc_spin + + .. code:: text + + subroutine decode_exc_spin(exc,h1,p1,h2,p2) + + File: :file:`slater_rules.irp.f` + + Decodes the exc arrays returned by get_excitation. h1,h2 : Holes p1,p2 : Particles + + + + + +.. c:function:: det_inf + + .. code:: text + + logical function det_inf(key1, key2, Nint) + + File: :file:`sort_dets_ab.irp.f` + + Ordering function for determinants + + + + + +.. c:function:: det_search_key + + .. code:: text + + integer*8 function det_search_key(det,Nint) + + File: :file:`connected_to_ref.irp.f` + + Return an integer*8 corresponding to a determinant index for searching + + + + + +.. c:function:: detcmp + + .. code:: text + + integer function detCmp(a,b,Nint) + + File: :file:`determinants.irp.f` + + + + + + + +.. c:function:: deteq + + .. code:: text + + logical function detEq(a,b,Nint) + + File: :file:`determinants.irp.f` + + + + + + + +.. c:function:: diag_h_mat_elem + + .. code:: text + + double precision function diag_H_mat_elem(det_in,Nint) + + File: :file:`slater_rules.irp.f` + + Computes + + + + + +.. c:function:: diag_h_mat_elem_au0_h_au0 + + .. code:: text + + subroutine diag_H_mat_elem_au0_h_au0(det_in,Nint,hii) + + File: :file:`mo_energy_expval.irp.f` + + Computes for any determinant i. Used for wave functions with an additional electron. + + + + + +.. c:function:: diag_h_mat_elem_fock + + .. code:: text + + double precision function diag_H_mat_elem_fock(det_ref,det_pert,fock_diag_tmp,Nint) + + File: :file:`slater_rules.irp.f` + + Computes when i is at most a double excitation from a reference. + + + + + +.. c:function:: diag_h_mat_elem_monoelec + + .. code:: text + + double precision function diag_H_mat_elem_monoelec(det_in,Nint) + + File: :file:`slater_rules_wee_mono.irp.f` + + Computes + + + + + +.. c:function:: diag_s_mat_elem + + .. code:: text + + double precision function diag_S_mat_elem(key_i,Nint) + + File: :file:`s2.irp.f` + + Returns + + + + + +.. c:function:: diag_wee_mat_elem + + .. code:: text + + double precision function diag_wee_mat_elem(det_in,Nint) + + File: :file:`slater_rules_wee_mono.irp.f` + + Computes + + + + + +.. c:function:: do_mono_excitation + + .. code:: text + + subroutine do_mono_excitation(key_in,i_hole,i_particle,ispin,i_ok) + + File: :file:`create_excitations.irp.f` + + Apply the mono excitation operator : a^{dager}_(i_particle) a_(i_hole) of spin = ispin on key_in ispin = 1 == alpha ispin = 2 == beta i_ok = 1 == the excitation is possible i_ok = -1 == the excitation is not possible + + + + + +.. c:function:: example_determinants + + .. code:: text + + subroutine example_determinants + + File: :file:`example.irp.f` + + subroutine that illustrates the main features available in determinants + + + + + +.. c:function:: example_determinants_psi_det + + .. code:: text + + subroutine example_determinants_psi_det + + File: :file:`example.irp.f` + + subroutine that illustrates the main features available in determinants using the psi_det/psi_coef + + + + + +.. c:function:: fill_h_apply_buffer_no_selection + + .. code:: text + + subroutine fill_H_apply_buffer_no_selection(n_selected,det_buffer,Nint,iproc) + + File: :file:`h_apply.irp.f` + + Fill the H_apply buffer with determiants for CISD + + + + + +.. c:function:: filter_connected + + .. code:: text + + subroutine filter_connected(key1,key2,Nint,sze,idx) + + File: :file:`filter_connected.irp.f` + + Filters out the determinants that are not connected by H + returns the array idx which contains the index of the + determinants in the array key1 that interact + via the H operator with key2. + idx(0) is the number of determinants that interact with key1 + + + + + +.. c:function:: filter_connected_i_h_psi0 + + .. code:: text + + subroutine filter_connected_i_H_psi0(key1,key2,Nint,sze,idx) + + File: :file:`filter_connected.irp.f` + + returns the array idx which contains the index of the + determinants in the array key1 that interact + via the H operator with key2. + idx(0) is the number of determinants that interact with key1 + + + + + +.. c:function:: filter_not_connected + + .. code:: text + + subroutine filter_not_connected(key1,key2,Nint,sze,idx) + + File: :file:`filter_connected.irp.f` + + Returns the array idx which contains the index of the + determinants in the array key1 that DO NOT interact + via the H operator with key2. + idx(0) is the number of determinants that DO NOT interact with key1 + + + + + +.. c:function:: generate_all_alpha_beta_det_products + + .. code:: text + + subroutine generate_all_alpha_beta_det_products + + File: :file:`spindeterminants.irp.f` + + Create a wave function from all possible alpha x beta determinants + + + + + +.. c:function:: get_all_spin_doubles + + .. code:: text + + subroutine get_all_spin_doubles(buffer, idx, spindet, Nint, size_buffer, doubles, n_doubles) + + File: :file:`spindeterminants.irp.f` + + + Returns the indices of all the double excitations in the list of unique alpha determinants. + + + + + + +.. c:function:: get_all_spin_doubles_1 + + .. code:: text + + subroutine get_all_spin_doubles_1(buffer, idx, spindet, size_buffer, doubles, n_doubles) + + File: :file:`spindeterminants.irp.f` + + + Returns the indices of all the double excitations in the list of unique alpha determinants. + + + + + + +.. c:function:: get_all_spin_doubles_2 + + .. code:: text + + subroutine get_all_spin_doubles_2(buffer, idx, spindet, size_buffer, doubles, n_doubles) + + File: :file:`spindeterminants.irp.f_template_1215` + + + Returns the indices of all the double excitations in the list of unique alpha determinants. + + + + + + +.. c:function:: get_all_spin_doubles_3 + + .. code:: text + + subroutine get_all_spin_doubles_3(buffer, idx, spindet, size_buffer, doubles, n_doubles) + + File: :file:`spindeterminants.irp.f_template_1215` + + + Returns the indices of all the double excitations in the list of unique alpha determinants. + + + + + + +.. c:function:: get_all_spin_doubles_4 + + .. code:: text + + subroutine get_all_spin_doubles_4(buffer, idx, spindet, size_buffer, doubles, n_doubles) + + File: :file:`spindeterminants.irp.f_template_1215` + + + Returns the indices of all the double excitations in the list of unique alpha determinants. + + + + + + +.. c:function:: get_all_spin_doubles_n_int + + .. code:: text + + subroutine get_all_spin_doubles_N_int(buffer, idx, spindet, size_buffer, doubles, n_doubles) + + File: :file:`spindeterminants.irp.f_template_1215` + + + Returns the indices of all the double excitations in the list of unique alpha determinants. + + + + + + +.. c:function:: get_all_spin_singles + + .. code:: text + + subroutine get_all_spin_singles(buffer, idx, spindet, Nint, size_buffer, singles, n_singles) + + File: :file:`spindeterminants.irp.f` + + + Returns the indices of all the single excitations in the list of unique alpha determinants. + + + + + + +.. c:function:: get_all_spin_singles_1 + + .. code:: text + + subroutine get_all_spin_singles_1(buffer, idx, spindet, size_buffer, singles, n_singles) + + File: :file:`spindeterminants.irp.f` + + + Returns the indices of all the single excitations in the list of unique alpha determinants. + + + + + + +.. c:function:: get_all_spin_singles_2 + + .. code:: text + + subroutine get_all_spin_singles_2(buffer, idx, spindet, size_buffer, singles, n_singles) + + File: :file:`spindeterminants.irp.f_template_1215` + + + Returns the indices of all the single excitations in the list of unique alpha determinants. + + + + + + +.. c:function:: get_all_spin_singles_3 + + .. code:: text + + subroutine get_all_spin_singles_3(buffer, idx, spindet, size_buffer, singles, n_singles) + + File: :file:`spindeterminants.irp.f_template_1215` + + + Returns the indices of all the single excitations in the list of unique alpha determinants. + + + + + + +.. c:function:: get_all_spin_singles_4 + + .. code:: text + + subroutine get_all_spin_singles_4(buffer, idx, spindet, size_buffer, singles, n_singles) + + File: :file:`spindeterminants.irp.f_template_1215` + + + Returns the indices of all the single excitations in the list of unique alpha determinants. + + + + + + +.. c:function:: get_all_spin_singles_and_doubles + + .. code:: text + + subroutine get_all_spin_singles_and_doubles(buffer, idx, spindet, Nint, size_buffer, singles, doubles, n_singles, n_doubles) + + File: :file:`spindeterminants.irp.f` + + + Returns the indices of all the single and double excitations in the list of unique alpha determinants. + /!\ : The buffer is transposed ! + + + + + + +.. c:function:: get_all_spin_singles_and_doubles_1 + + .. code:: text + + subroutine get_all_spin_singles_and_doubles_1(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) + + File: :file:`spindeterminants.irp.f` + + + Returns the indices of all the single and double excitations in the list of unique alpha determinants. + /!\ : The buffer is transposed ! + + + + + + +.. c:function:: get_all_spin_singles_and_doubles_2 + + .. code:: text + + subroutine get_all_spin_singles_and_doubles_2(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) + + File: :file:`spindeterminants.irp.f_template_1215` + + + Returns the indices of all the single and double excitations in the list of unique alpha determinants. + /!\ : The buffer is transposed ! + + + + + + +.. c:function:: get_all_spin_singles_and_doubles_3 + + .. code:: text + + subroutine get_all_spin_singles_and_doubles_3(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) + + File: :file:`spindeterminants.irp.f_template_1215` + + + Returns the indices of all the single and double excitations in the list of unique alpha determinants. + /!\ : The buffer is transposed ! + + + + + + +.. c:function:: get_all_spin_singles_and_doubles_4 + + .. code:: text + + subroutine get_all_spin_singles_and_doubles_4(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) + + File: :file:`spindeterminants.irp.f_template_1215` + + + Returns the indices of all the single and double excitations in the list of unique alpha determinants. + /!\ : The buffer is transposed ! + + + + + + +.. c:function:: get_all_spin_singles_and_doubles_n_int + + .. code:: text + + subroutine get_all_spin_singles_and_doubles_N_int(buffer, idx, spindet, size_buffer, singles, doubles, n_singles, n_doubles) + + File: :file:`spindeterminants.irp.f_template_1215` + + + Returns the indices of all the single and double excitations in the list of unique alpha determinants. + /!\ : The buffer is transposed ! + + + + + + +.. c:function:: get_all_spin_singles_n_int + + .. code:: text + + subroutine get_all_spin_singles_N_int(buffer, idx, spindet, size_buffer, singles, n_singles) + + File: :file:`spindeterminants.irp.f_template_1215` + + + Returns the indices of all the single excitations in the list of unique alpha determinants. + + + + + + +.. c:function:: get_double_excitation + + .. code:: text + + subroutine get_double_excitation(det1,det2,exc,phase,Nint) + + File: :file:`slater_rules.irp.f` + + Returns the two excitation operators between two doubly excited determinants and the phase + + + + + +.. c:function:: get_double_excitation_spin + + .. code:: text + + subroutine get_double_excitation_spin(det1,det2,exc,phase,Nint) + + File: :file:`slater_rules.irp.f` + + Returns the two excitation operators between two doubly excited spin-determinants and the phase + + + + + +.. c:function:: get_excitation + + .. code:: text + + subroutine get_excitation(det1,det2,exc,degree,phase,Nint) + + File: :file:`slater_rules.irp.f` + + Returns the excitation operators between two determinants and the phase + + + + + +.. c:function:: get_excitation_degree + + .. code:: text + + subroutine get_excitation_degree(key1,key2,degree,Nint) + + File: :file:`slater_rules.irp.f` + + Returns the excitation degree between two determinants + + + + + +.. c:function:: get_excitation_degree_spin + + .. code:: text + + subroutine get_excitation_degree_spin(key1,key2,degree,Nint) + + File: :file:`slater_rules.irp.f` + + Returns the excitation degree between two determinants + + + + + +.. c:function:: get_excitation_degree_vector + + .. code:: text + + subroutine get_excitation_degree_vector(key1,key2,degree,Nint,sze,idx) + + File: :file:`slater_rules.irp.f` + + Applies get_excitation_degree to an array of determinants + + + + + +.. c:function:: get_excitation_degree_vector_double_alpha_beta + + .. code:: text + + subroutine get_excitation_degree_vector_double_alpha_beta(key1,key2,degree,Nint,sze,idx) + + File: :file:`slater_rules.irp.f` + + Applies get_excitation_degree to an array of determinants and return only the mono excitations and the connections through exchange integrals + + + + + +.. c:function:: get_excitation_degree_vector_mono + + .. code:: text + + subroutine get_excitation_degree_vector_mono(key1,key2,degree,Nint,sze,idx) + + File: :file:`slater_rules.irp.f` + + Applies get_excitation_degree to an array of determinants and return only the mono excitations + + + + + +.. c:function:: get_excitation_degree_vector_mono_or_exchange + + .. code:: text + + subroutine get_excitation_degree_vector_mono_or_exchange(key1,key2,degree,Nint,sze,idx) + + File: :file:`slater_rules.irp.f` + + Applies get_excitation_degree to an array of determinants and return only the mono excitations and the connections through exchange integrals + + + + + +.. c:function:: get_excitation_degree_vector_mono_or_exchange_verbose + + .. code:: text + + subroutine get_excitation_degree_vector_mono_or_exchange_verbose(key1,key2,degree,Nint,sze,idx) + + File: :file:`slater_rules.irp.f` + + Applies get_excitation_degree to an array of determinants and return only the mono excitations and the connections through exchange integrals + + + + + +.. c:function:: get_excitation_spin + + .. code:: text + + subroutine get_excitation_spin(det1,det2,exc,degree,phase,Nint) + + File: :file:`slater_rules.irp.f` + + Returns the excitation operators between two determinants and the phase + + + + + +.. c:function:: get_index_in_psi_det_alpha_unique + + .. code:: text + + integer function get_index_in_psi_det_alpha_unique(key,Nint) + + File: :file:`spindeterminants.irp.f` + + Returns the index of the determinant in the ``psi_det_alpha_unique`` array + + + + + +.. c:function:: get_index_in_psi_det_beta_unique + + .. code:: text + + integer function get_index_in_psi_det_beta_unique(key,Nint) + + File: :file:`spindeterminants.irp.f` + + Returns the index of the determinant in the ``psi_det_beta_unique`` array + + + + + +.. c:function:: get_index_in_psi_det_sorted_bit + + .. code:: text + + integer function get_index_in_psi_det_sorted_bit(key,Nint) + + File: :file:`connected_to_ref.irp.f` + + Returns the index of the determinant in the ``psi_det_sorted_bit`` array + + + + + +.. c:function:: get_mono_excitation + + .. code:: text + + subroutine get_mono_excitation(det1,det2,exc,phase,Nint) + + File: :file:`slater_rules.irp.f` + + Returns the excitation operator between two singly excited determinants and the phase + + + + + +.. c:function:: get_mono_excitation_from_fock + + .. code:: text + + subroutine get_mono_excitation_from_fock(det_1,det_2,h,p,spin,phase,hij) + + File: :file:`mono_excitations.irp.f` + + + + + + + +.. c:function:: get_mono_excitation_spin + + .. code:: text + + subroutine get_mono_excitation_spin(det1,det2,exc,phase,Nint) + + File: :file:`slater_rules.irp.f` + + Returns the excitation operator between two singly excited determinants and the phase + + + + + +.. c:function:: get_phase + + .. code:: text + + subroutine get_phase(key1,key2,phase,Nint) + + File: :file:`slater_rules.irp.f` + + Returns the phase between key1 and key2 + + + + + +.. c:function:: get_phasemask_bit + + .. code:: text + + subroutine get_phasemask_bit(det1, pm, Nint) + + File: :file:`slater_rules.irp.f` + + + + + + + +.. c:function:: get_s2 + + .. code:: text + + subroutine get_s2(key_i,key_j,Nint,s2) + + File: :file:`s2.irp.f` + + Returns + + + + + +.. c:function:: get_uj_s2_ui + + .. code:: text + + subroutine get_uJ_s2_uI(psi_keys_tmp,psi_coefs_tmp,n,nmax_coefs,nmax_keys,s2,nstates) + + File: :file:`s2.irp.f` + + returns the matrix elements of S^2 "s2(i,j)" between the "nstates" states psi_coefs_tmp(:,i) and psi_coefs_tmp(:,j) + + + + + +.. c:function:: getmobiles + + .. code:: text + + subroutine getMobiles(key,key_mask, mobiles,Nint) + + File: :file:`filter_connected.irp.f` + + + + + + + +.. c:function:: i_h_j + + .. code:: text + + subroutine i_H_j(key_i,key_j,Nint,hij) + + File: :file:`slater_rules.irp.f` + + Returns where i and j are determinants + + + + + +.. c:function:: i_h_j_bielec + + .. code:: text + + subroutine i_H_j_bielec(key_i,key_j,Nint,hij) + + File: :file:`slater_rules_wee_mono.irp.f` + + Returns where i and j are determinants + + + + + +.. c:function:: i_h_j_double_alpha_beta + + .. code:: text + + subroutine i_H_j_double_alpha_beta(key_i,key_j,Nint,hij) + + File: :file:`slater_rules.irp.f` + + Returns where i and j are determinants differing by an opposite-spin double excitation + + + + + +.. c:function:: i_h_j_double_spin + + .. code:: text + + subroutine i_H_j_double_spin(key_i,key_j,Nint,hij) + + File: :file:`slater_rules.irp.f` + + Returns where i and j are determinants differing by a same-spin double excitation + + + + + +.. c:function:: i_h_j_mono_spin + + .. code:: text + + subroutine i_H_j_mono_spin(key_i,key_j,Nint,spin,hij) + + File: :file:`slater_rules.irp.f` + + Returns where i and j are determinants differing by a single excitation + + + + + +.. c:function:: i_h_j_mono_spin_monoelec + + .. code:: text + + subroutine i_H_j_mono_spin_monoelec(key_i,key_j,Nint,spin,hij) + + File: :file:`slater_rules_wee_mono.irp.f` + + Returns where i and j are determinants differing by a single excitation + + + + + +.. c:function:: i_h_j_monoelec + + .. code:: text + + subroutine i_H_j_monoelec(key_i,key_j,Nint,hij) + + File: :file:`slater_rules_wee_mono.irp.f` + + Returns where i and j are determinants + + + + + +.. c:function:: i_h_j_s2 + + .. code:: text + + subroutine i_H_j_s2(key_i,key_j,Nint,hij,s2) + + File: :file:`slater_rules.irp.f` + + Returns where i and j are determinants + + + + + +.. c:function:: i_h_j_verbose + + .. code:: text + + subroutine i_H_j_verbose(key_i,key_j,Nint,hij,hmono,hdouble,phase) + + File: :file:`slater_rules.irp.f` + + Returns where i and j are determinants with + + + + + +.. c:function:: i_h_psi + + .. code:: text + + subroutine i_H_psi(key,keys,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array) + + File: :file:`slater_rules.irp.f` + + Computes = :math:`\sum_J c_J \langle i | H | J \rangle`. + Uses filter_connected_i_H_psi0 to get all the |J> to which |i> is connected. The i_H_psi_minilist is much faster but requires to build the minilists + + + + + +.. c:function:: i_h_psi_minilist + + .. code:: text + + subroutine i_H_psi_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array) + + File: :file:`slater_rules.irp.f` + + Computes = \sum_J c_J . + Uses filter_connected_i_H_psi0 to get all the |J> to which |i> is connected. The |J> are searched in short pre-computed lists. + + + + + +.. c:function:: i_s2_psi_minilist + + .. code:: text + + subroutine i_S2_psi_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_S2_psi_array) + + File: :file:`s2.irp.f` + + Computes = \sum_J c_J . + Uses filter_connected_i_H_psi0 to get all the |J> to which |i> is connected. The |J> are searched in short pre-computed lists. + + + + + +.. c:function:: i_wee_j_mono + + .. code:: text + + subroutine i_Wee_j_mono(key_i,key_j,Nint,spin,hij) + + File: :file:`slater_rules_wee_mono.irp.f` + + Returns where i and j are determinants differing by a single excitation + + + + + +.. c:function:: is_connected_to + + .. code:: text + + logical function is_connected_to(key,keys,Nint,Ndet) + + File: :file:`connected_to_ref.irp.f` + + + + + + + +.. c:function:: is_connected_to_by_mono + + .. code:: text + + logical function is_connected_to_by_mono(key,keys,Nint,Ndet) + + File: :file:`connected_to_ref.irp.f` + + + + + + + +.. c:function:: is_generable_cassd + + .. code:: text + + logical function is_generable_cassd(det1, det2, Nint) + + File: :file:`connected_to_ref.irp.f` + + + + + + + +.. c:function:: is_in_wavefunction + + .. code:: text + + logical function is_in_wavefunction(key,Nint) + + File: :file:`connected_to_ref.irp.f` + + True if the determinant ``det`` is in the wave function + + + + + +.. c:function:: is_spin_flip_possible + + .. code:: text + + logical function is_spin_flip_possible(key_in,i_flip,ispin) + + File: :file:`create_excitations.irp.f` + + returns .True. if the spin-flip of spin ispin in the orbital i_flip is possible on key_in + + + + + +.. c:function:: make_s2_eigenfunction + + .. code:: text + + subroutine make_s2_eigenfunction + + File: :file:`occ_pattern.irp.f` + + + + + + + +.. c:function:: mono_excitation_wee + + .. code:: text + + subroutine mono_excitation_wee(det_1,det_2,h,p,spin,phase,hij) + + File: :file:`mono_excitations_bielec.irp.f` + + + + + + + +.. c:function:: occ_pattern_of_det + + .. code:: text + + subroutine occ_pattern_of_det(d,o,Nint) + + File: :file:`occ_pattern.irp.f` + + Transforms a determinant to an occupation pattern + occ(:,1) : Single occupations + occ(:,2) : Double occupations + + + + + + +.. c:function:: occ_pattern_search_key + + .. code:: text + + integer*8 function occ_pattern_search_key(det,Nint) + + File: :file:`connected_to_ref.irp.f` + + Return an integer*8 corresponding to a determinant index for searching + + + + + +.. c:function:: occ_pattern_to_dets + + .. code:: text + + subroutine occ_pattern_to_dets(o,d,sze,n_alpha,Nint) + + File: :file:`occ_pattern.irp.f` + + Generate all possible determinants for a give occ_pattern + + + + + +.. c:function:: occ_pattern_to_dets_size + + .. code:: text + + subroutine occ_pattern_to_dets_size(o,sze,n_alpha,Nint) + + File: :file:`occ_pattern.irp.f` + + Number of possible determinants for a given occ_pattern + + + + + +.. c:function:: pull_pt2 + + .. code:: text + + subroutine pull_pt2(zmq_socket_pull,pt2,norm_pert,H_pert_diag,i_generator,N_st,n,task_id) + + File: :file:`h_apply.irp.f` + + Pull PT2 calculation in the collector + + + + + +.. c:function:: push_pt2 + + .. code:: text + + subroutine push_pt2(zmq_socket_push,pt2,norm_pert,H_pert_diag,i_generator,N_st,task_id) + + File: :file:`h_apply.irp.f` + + Push PT2 calculation to the collector + + + + + +.. c:function:: read_dets + + .. code:: text + + subroutine read_dets(det,Nint,Ndet) + + File: :file:`determinants.irp.f` + + Reads the determinants from the EZFIO file + + + + + +.. c:function:: remove_duplicates_in_psi_det + + .. code:: text + + subroutine remove_duplicates_in_psi_det(found_duplicates) + + File: :file:`h_apply.irp.f` + + Removes duplicate determinants in the wave function. + + + + + +.. c:function:: resize_h_apply_buffer + + .. code:: text + + subroutine resize_H_apply_buffer(new_size,iproc) + + File: :file:`h_apply.irp.f` + + Resizes the H_apply buffer of proc iproc. The buffer lock should be set before calling this function. + + + + + +.. c:function:: routine_example_psi_det + + .. code:: text + + subroutine routine_example_psi_det + + File: :file:`example.irp.f` + + subroutine that illustrates the main features available in determinants using many determinants + + + + + +.. c:function:: s2_u_0 + + .. code:: text + + subroutine S2_u_0(v_0,u_0,n,keys_tmp,Nint) + + File: :file:`s2.irp.f` + + Computes v_0 = S^2|u_0> + n : number of determinants + + + + + + +.. c:function:: s2_u_0_nstates + + .. code:: text + + subroutine S2_u_0_nstates(v_0,u_0,n,keys_tmp,Nint,N_st,sze_8) + + File: :file:`s2.irp.f` + + Computes v_0 = S^2|u_0> + n : number of determinants + + + + + + +.. c:function:: save_natural_mos + + .. code:: text + + subroutine save_natural_mos + + File: :file:`density_matrix.irp.f` + + Save natural orbitals, obtained by diagonalization of the one-body density matrix in the MO basis + + + + + +.. c:function:: save_ref_determinant + + .. code:: text + + subroutine save_ref_determinant + + File: :file:`determinants.irp.f` + + + + + + + +.. c:function:: save_wavefunction + + .. code:: text + + subroutine save_wavefunction + + File: :file:`determinants.irp.f` + + Save the wave function into the EZFIO file + + + + + +.. c:function:: save_wavefunction_general + + .. code:: text + + subroutine save_wavefunction_general(ndet,nstates,psidet,dim_psicoef,psicoef) + + File: :file:`determinants.irp.f` + + Save the wave function into the EZFIO file + + + + + +.. c:function:: save_wavefunction_specified + + .. code:: text + + subroutine save_wavefunction_specified(ndet,nstates,psidet,psicoef,ndetsave,index_det_save) + + File: :file:`determinants.irp.f` + + Save the wave function into the EZFIO file + + + + + +.. c:function:: save_wavefunction_truncated + + .. code:: text + + subroutine save_wavefunction_truncated(thr) + + File: :file:`determinants.irp.f` + + Save the wave function into the EZFIO file + + + + + +.. c:function:: save_wavefunction_unsorted + + .. code:: text + + subroutine save_wavefunction_unsorted + + File: :file:`determinants.irp.f` + + Save the wave function into the EZFIO file + + + + + +.. c:function:: set_natural_mos + + .. code:: text + + subroutine set_natural_mos + + File: :file:`density_matrix.irp.f` + + Set natural orbitals, obtained by diagonalization of the one-body density matrix in the MO basis + + + + + +.. c:function:: sort_dets_ab + + .. code:: text + + subroutine sort_dets_ab(key, idx, shortcut, N_key, Nint) + + File: :file:`sort_dets_ab.irp.f` + + Uncodumented : TODO + + + + + +.. c:function:: sort_dets_ab_v + + .. code:: text + + subroutine sort_dets_ab_v(key_in, key_out, idx, shortcut, version, N_key, Nint) + + File: :file:`sort_dets_ab.irp.f` + + Uncodumented : TODO + + + + + +.. c:function:: sort_dets_ba_v + + .. code:: text + + subroutine sort_dets_ba_v(key_in, key_out, idx, shortcut, version, N_key, Nint) + + File: :file:`sort_dets_ab.irp.f` + + Uncodumented : TODO + + + + + +.. c:function:: sort_dets_by_det_search_key + + .. code:: text + + subroutine sort_dets_by_det_search_key(Ndet, det_in, coef_in, sze, det_out, coef_out, N_st) + + File: :file:`determinants.irp.f` + + Determinants are sorted are sorted according to their det_search_key. Useful to accelerate the search of a random determinant in the wave function. + /!\ The first dimension of coef_out and coef_in need to be psi_det_size + + + + + + +.. c:function:: spin_det_search_key + + .. code:: text + + integer*8 function spin_det_search_key(det,Nint) + + File: :file:`spindeterminants.irp.f` + + Return an integer(8) corresponding to a determinant index for searching + + + + + +.. c:function:: tamiser + + .. code:: text + + subroutine tamiser(key, idx, no, n, Nint, N_key) + + File: :file:`sort_dets_ab.irp.f` + + Uncodumented : TODO + + + + + +.. c:function:: u_0_s2_u_0 + + .. code:: text + + subroutine u_0_S2_u_0(e_0,u_0,n,keys_tmp,Nint,N_st,sze_8) + + File: :file:`s2.irp.f` + + Computes e_0 = / + n : number of determinants + + + + + + +.. c:function:: wf_of_psi_bilinear_matrix + + .. code:: text + + subroutine wf_of_psi_bilinear_matrix(truncate) + + File: :file:`spindeterminants.irp.f` + + Generate a wave function containing all possible products of alpha and beta determinants + + + + + +.. c:function:: write_spindeterminants + + .. code:: text + + subroutine write_spindeterminants + + File: :file:`spindeterminants.irp.f` + + + + + + + +.. c:function:: zmq_get_n_det + + .. code:: text + + integer function zmq_get_N_det(zmq_to_qp_run_socket, worker_id) + + File: :file:`zmq.irp.f_template_379` + + Get N_det from the qp_run scheduler + + + + + +.. c:function:: zmq_get_n_det_alpha_unique + + .. code:: text + + integer function zmq_get_N_det_alpha_unique(zmq_to_qp_run_socket, worker_id) + + File: :file:`zmq.irp.f_template_379` + + Get N_det_alpha_unique from the qp_run scheduler + + + + + +.. c:function:: zmq_get_n_det_beta_unique + + .. code:: text + + integer function zmq_get_N_det_beta_unique(zmq_to_qp_run_socket, worker_id) + + File: :file:`zmq.irp.f_template_379` + + Get N_det_beta_unique from the qp_run scheduler + + + + + +.. c:function:: zmq_get_n_states + + .. code:: text + + integer function zmq_get_N_states(zmq_to_qp_run_socket, worker_id) + + File: :file:`zmq.irp.f_template_379` + + Get N_states from the qp_run scheduler + + + + + +.. c:function:: zmq_get_psi + + .. code:: text + + integer function zmq_get_psi(zmq_to_qp_run_socket, worker_id) + + File: :file:`zmq.irp.f` + + Get the wave function from the qp_run scheduler + + + + + +.. c:function:: zmq_get_psi_bilinear + + .. code:: text + + integer function zmq_get_psi_bilinear(zmq_to_qp_run_socket, worker_id) + + File: :file:`zmq.irp.f` + + Get the wave function from the qp_run scheduler + + + + + +.. c:function:: zmq_get_psi_bilinear_matrix_columns + + .. code:: text + + integer*8 function zmq_get_psi_bilinear_matrix_columns(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_500` + + Get psi_bilinear_matrix_columns on the qp_run scheduler + + + + + +.. c:function:: zmq_get_psi_bilinear_matrix_order + + .. code:: text + + integer*8 function zmq_get_psi_bilinear_matrix_order(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_500` + + Get psi_bilinear_matrix_order on the qp_run scheduler + + + + + +.. c:function:: zmq_get_psi_bilinear_matrix_rows + + .. code:: text + + integer*8 function zmq_get_psi_bilinear_matrix_rows(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_500` + + Get psi_bilinear_matrix_rows on the qp_run scheduler + + + + + +.. c:function:: zmq_get_psi_bilinear_matrix_values + + .. code:: text + + integer*8 function zmq_get_psi_bilinear_matrix_values(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_564` + + get psi_bilinear_matrix_values on the qp_run scheduler + + + + + +.. c:function:: zmq_get_psi_coef + + .. code:: text + + integer*8 function zmq_get_psi_coef(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_564` + + get psi_coef on the qp_run scheduler + + + + + +.. c:function:: zmq_get_psi_det + + .. code:: text + + integer*8 function zmq_get_psi_det(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_440` + + Get psi_det on the qp_run scheduler + + + + + +.. c:function:: zmq_get_psi_det_alpha_unique + + .. code:: text + + integer*8 function zmq_get_psi_det_alpha_unique(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_440` + + Get psi_det_alpha_unique on the qp_run scheduler + + + + + +.. c:function:: zmq_get_psi_det_beta_unique + + .. code:: text + + integer*8 function zmq_get_psi_det_beta_unique(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_440` + + Get psi_det_beta_unique on the qp_run scheduler + + + + + +.. c:function:: zmq_get_psi_det_size + + .. code:: text + + integer function zmq_get_psi_det_size(zmq_to_qp_run_socket, worker_id) + + File: :file:`zmq.irp.f_template_379` + + Get psi_det_size from the qp_run scheduler + + + + + +.. c:function:: zmq_get_psi_notouch + + .. code:: text + + integer function zmq_get_psi_notouch(zmq_to_qp_run_socket, worker_id) + + File: :file:`zmq.irp.f` + + Get the wave function from the qp_run scheduler + + + + + +.. c:function:: zmq_put_n_det + + .. code:: text + + integer function zmq_put_N_det(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_379` + + Put N_det on the qp_run scheduler + + + + + +.. c:function:: zmq_put_n_det_alpha_unique + + .. code:: text + + integer function zmq_put_N_det_alpha_unique(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_379` + + Put N_det_alpha_unique on the qp_run scheduler + + + + + +.. c:function:: zmq_put_n_det_beta_unique + + .. code:: text + + integer function zmq_put_N_det_beta_unique(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_379` + + Put N_det_beta_unique on the qp_run scheduler + + + + + +.. c:function:: zmq_put_n_states + + .. code:: text + + integer function zmq_put_N_states(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_379` + + Put N_states on the qp_run scheduler + + + + + +.. c:function:: zmq_put_psi + + .. code:: text + + integer function zmq_put_psi(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f` + + Put the wave function on the qp_run scheduler + + + + + +.. c:function:: zmq_put_psi_bilinear + + .. code:: text + + integer function zmq_put_psi_bilinear(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f` + + Put the wave function on the qp_run scheduler + + + + + +.. c:function:: zmq_put_psi_bilinear_matrix_columns + + .. code:: text + + integer*8 function zmq_put_psi_bilinear_matrix_columns(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_500` + + Put psi_bilinear_matrix_columns on the qp_run scheduler + + + + + +.. c:function:: zmq_put_psi_bilinear_matrix_order + + .. code:: text + + integer*8 function zmq_put_psi_bilinear_matrix_order(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_500` + + Put psi_bilinear_matrix_order on the qp_run scheduler + + + + + +.. c:function:: zmq_put_psi_bilinear_matrix_rows + + .. code:: text + + integer*8 function zmq_put_psi_bilinear_matrix_rows(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_500` + + Put psi_bilinear_matrix_rows on the qp_run scheduler + + + + + +.. c:function:: zmq_put_psi_bilinear_matrix_values + + .. code:: text + + integer*8 function zmq_put_psi_bilinear_matrix_values(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_564` + + Put psi_bilinear_matrix_values on the qp_run scheduler + + + + + +.. c:function:: zmq_put_psi_coef + + .. code:: text + + integer*8 function zmq_put_psi_coef(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_564` + + Put psi_coef on the qp_run scheduler + + + + + +.. c:function:: zmq_put_psi_det + + .. code:: text + + integer*8 function zmq_put_psi_det(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_440` + + Put psi_det on the qp_run scheduler + + + + + +.. c:function:: zmq_put_psi_det_alpha_unique + + .. code:: text + + integer*8 function zmq_put_psi_det_alpha_unique(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_440` + + Put psi_det_alpha_unique on the qp_run scheduler + + + + + +.. c:function:: zmq_put_psi_det_beta_unique + + .. code:: text + + integer*8 function zmq_put_psi_det_beta_unique(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_440` + + Put psi_det_beta_unique on the qp_run scheduler + + + + + +.. c:function:: zmq_put_psi_det_size + + .. code:: text + + integer function zmq_put_psi_det_size(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_379` + + Put psi_det_size on the qp_run scheduler + + diff --git a/docs/source/modules/dft_keywords.rst b/docs/source/modules/dft_keywords.rst new file mode 100644 index 00000000..ed7f87d2 --- /dev/null +++ b/docs/source/modules/dft_keywords.rst @@ -0,0 +1,59 @@ +.. _dft_keywords: + +.. program:: dft_keywords + +.. default-role:: option + +============ +dft_keywords +============ + +This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as: + +# :option:`dft_keywords exchange_functional` +# :option:`dft_keywords correlation_functional` +# :option:`dft_keywords HF_exchange` : only relevent for the :ref:`ks_scf` program + +The keyword for the range separation parameter :math:`\mu` is the :option:`ao_two_e_erf_integrals mu_erf` keyword. + +The keyword for the type of density used in RS-DFT calculation with a multi-configurational wave function is the :option:`density_for_dft density_for_dft` keyword. + + + +EZFIO parameters +---------------- + +.. option:: exchange_functional + + name of the exchange functional + + Default: short_range_LDA + +.. option:: correlation_functional + + name of the correlation functional + + Default: short_range_LDA + +.. option:: HF_exchange + + Percentage of HF exchange in the DFT model + + Default: 0. + + +Providers +--------- + + +.. c:var:: dft_type + + .. code:: text + + character*(32) :: dft_type + + File: :file:`keywords.irp.f` + + defines the type of DFT applied: LDA, GGA etc ... + + diff --git a/docs/source/modules/dft_utils_one_e.rst b/docs/source/modules/dft_utils_one_e.rst new file mode 100644 index 00000000..dadd433e --- /dev/null +++ b/docs/source/modules/dft_utils_one_e.rst @@ -0,0 +1,1909 @@ +.. _dft_utils_one_e: + +.. program:: dft_utils_one_e + +.. default-role:: option + +=============== +dft_utils_one_e +=============== + +This module contains all the one-body related quantities needed to perform DFT or RS-DFT calculations. +Therefore, it contains most of the properties which depends on the one-body density and density matrix. + +The most important files and variables are: +# The general *providers* for the x/c energies in :file:`e_xc_general.irp.f` +# The general *providers* for the x/c potentials in :file:`pot_general.irp.f` +# The short-range hartree operator and all related quantities in :file:`sr_coulomb.irp.f` +These *providers* will be used in many DFT-related programs, such as :file:`ks_scf.irp.f` or :file:`rs_ks_scf.irp.f`. +It is also needed to compute the effective one-body operator needed in multi-determinant RS-DFT (see plugins by eginer). + +Some other interesting quantities: +# The LDA and PBE *providers* for the x/c energies in :file:`e_xc.irp.f` and :file:`sr_exc.irp.f` +# The LDA and PBE *providers* for the x/c potentials on the AO basis in :file:`pot_ao.irp.f` and :file:`sr_pot_ao.irp.f` +# The :math:`h_{core}` energy computed directly with the one-body density matrix in :file:`one_e_energy_dft.irp.f` +# LDA and PBE short-range functionals *subroutines* in :file:`exc_sr_lda.irp.f` and :file:`exc_sr_pbe.irp.f` + + + + + +Providers +--------- + + +.. c:var:: aos_dsr_vc_alpha_pbe_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_dsr_vc_beta_pbe_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_dsr_vx_alpha_pbe_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_dsr_vx_beta_pbe_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_dvc_alpha_pbe_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_dvc_beta_pbe_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_dvx_alpha_pbe_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_dvx_beta_pbe_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_sr_vc_alpha_lda_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_sr_vc_alpha_pbe_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_sr_vc_beta_lda_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_sr_vc_beta_pbe_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_sr_vx_alpha_lda_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_sr_vx_alpha_pbe_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_sr_vx_beta_lda_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_sr_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_sr_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (sr_v^x_alpha(r_j) + sr_v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_sr_vx_beta_pbe_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_vc_alpha_lda_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_vc_alpha_pbe_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_vc_beta_lda_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_vc_beta_pbe_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_vx_alpha_lda_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_vx_alpha_pbe_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_vx_beta_lda_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vc_beta_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_alpha_lda_w (n_points_final_grid,ao_num,N_states) + double precision, allocatable :: aos_vx_beta_lda_w (n_points_final_grid,ao_num,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_LDA_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: aos_vx_beta_pbe_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: effective_one_e_potential + + .. code:: text + + double precision, allocatable :: effective_one_e_potential (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: effective_one_e_potential_without_kin (mo_tot_num,mo_tot_num,N_states) + + File: :file:`sr_coulomb.irp.f` + + effective_one_e_potential(i,j) = + + Taking the expectation value does not provide any energy but effective_one_e_potential(i,j) is the potential coupling DFT and WFT part to be used in any WFT calculation shifted_effective_one_e_potential_without_kin = effective_one_e_potential_without_kin + shifting_constant on the diagonal + + + + +.. c:var:: effective_one_e_potential_without_kin + + .. code:: text + + double precision, allocatable :: effective_one_e_potential (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: effective_one_e_potential_without_kin (mo_tot_num,mo_tot_num,N_states) + + File: :file:`sr_coulomb.irp.f` + + effective_one_e_potential(i,j) = + + Taking the expectation value does not provide any energy but effective_one_e_potential(i,j) is the potential coupling DFT and WFT part to be used in any WFT calculation shifted_effective_one_e_potential_without_kin = effective_one_e_potential_without_kin + shifting_constant on the diagonal + + + + +.. c:var:: energy_c + + .. code:: text + + double precision, allocatable :: energy_x (N_states) + double precision, allocatable :: energy_c (N_states) + + File: :file:`e_xc_general.irp.f` + + correlation and exchange energies general providers. + + + + +.. c:var:: energy_c_lda + + .. code:: text + + double precision, allocatable :: energy_x_lda (N_states) + double precision, allocatable :: energy_c_lda (N_states) + + File: :file:`e_xc.irp.f` + + exchange/correlation energy with the short range LDA functional + + + + +.. c:var:: energy_c_pbe + + .. code:: text + + double precision, allocatable :: energy_x_pbe (N_states) + double precision, allocatable :: energy_c_pbe (N_states) + + File: :file:`e_xc.irp.f` + + exchange/correlation energy with the short range PBE functional + + + + +.. c:var:: energy_sr_c_lda + + .. code:: text + + double precision, allocatable :: energy_sr_x_lda (N_states) + double precision, allocatable :: energy_sr_c_lda (N_states) + + File: :file:`sr_exc.irp.f` + + exchange/correlation energy with the short range LDA functional + + + + +.. c:var:: energy_sr_c_pbe + + .. code:: text + + double precision, allocatable :: energy_sr_x_pbe (N_states) + double precision, allocatable :: energy_sr_c_pbe (N_states) + + File: :file:`sr_exc.irp.f` + + exchange/correlation energy with the short range PBE functional + + + + +.. c:var:: energy_sr_x_lda + + .. code:: text + + double precision, allocatable :: energy_sr_x_lda (N_states) + double precision, allocatable :: energy_sr_c_lda (N_states) + + File: :file:`sr_exc.irp.f` + + exchange/correlation energy with the short range LDA functional + + + + +.. c:var:: energy_sr_x_pbe + + .. code:: text + + double precision, allocatable :: energy_sr_x_pbe (N_states) + double precision, allocatable :: energy_sr_c_pbe (N_states) + + File: :file:`sr_exc.irp.f` + + exchange/correlation energy with the short range PBE functional + + + + +.. c:var:: energy_x + + .. code:: text + + double precision, allocatable :: energy_x (N_states) + double precision, allocatable :: energy_c (N_states) + + File: :file:`e_xc_general.irp.f` + + correlation and exchange energies general providers. + + + + +.. c:var:: energy_x_lda + + .. code:: text + + double precision, allocatable :: energy_x_lda (N_states) + double precision, allocatable :: energy_c_lda (N_states) + + File: :file:`e_xc.irp.f` + + exchange/correlation energy with the short range LDA functional + + + + +.. c:var:: energy_x_pbe + + .. code:: text + + double precision, allocatable :: energy_x_pbe (N_states) + double precision, allocatable :: energy_c_pbe (N_states) + + File: :file:`e_xc.irp.f` + + exchange/correlation energy with the short range PBE functional + + + + +.. c:var:: gga_sr_type_functionals + + .. code:: text + + subroutine GGA_sr_type_functionals(r,rho_a,rho_b,grad_rho_a_2,grad_rho_b_2,grad_rho_a_b, & + ex,vx_rho_a,vx_rho_b,vx_grad_rho_a_2,vx_grad_rho_b_2,vx_grad_rho_a_b, & + ec,vc_rho_a,vc_rho_b,vc_grad_rho_a_2,vc_grad_rho_b_2,vc_grad_rho_a_b ) + + File: :file:`utils.irp.f` + + routine that helps in building the x/c potentials on the AO basis for a GGA functional with a short-range interaction + + + + +.. c:var:: gga_type_functionals + + .. code:: text + + subroutine GGA_type_functionals(r,rho_a,rho_b,grad_rho_a_2,grad_rho_b_2,grad_rho_a_b, & + ex,vx_rho_a,vx_rho_b,vx_grad_rho_a_2,vx_grad_rho_b_2,vx_grad_rho_a_b, & + ec,vc_rho_a,vc_rho_b,vc_grad_rho_a_2,vc_grad_rho_b_2,vc_grad_rho_a_b ) + + File: :file:`utils.irp.f` + + routine that helps in building the x/c potentials on the AO basis for a GGA functional + + + + +.. c:var:: grad_aos_dsr_vc_alpha_pbe_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: grad_aos_dsr_vc_beta_pbe_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: grad_aos_dsr_vx_alpha_pbe_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: grad_aos_dsr_vx_beta_pbe_w + + .. code:: text + + double precision, allocatable :: aos_sr_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_sr_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dsr_vx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`sr_pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: grad_aos_dvc_alpha_pbe_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: grad_aos_dvc_beta_pbe_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: grad_aos_dvx_alpha_pbe_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: grad_aos_dvx_beta_pbe_w + + .. code:: text + + double precision, allocatable :: aos_vc_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vc_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_alpha_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_vx_beta_pbe_w (ao_num,n_points_final_grid,N_states) + double precision, allocatable :: aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvc_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_alpha_pbe_w (ao_num,n_points_final_grid,3,N_states) + double precision, allocatable :: grad_aos_dvx_beta_pbe_w (ao_num,n_points_final_grid,3,N_states) + + File: :file:`pot_ao.irp.f` + + aos_vxc_alpha_PBE_w(j,i) = ao_i(r_j) * (v^x_alpha(r_j) + v^c_alpha(r_j)) * W(r_j) + + + + +.. c:var:: mu_erf_dft + + .. code:: text + + double precision :: mu_erf_dft + + File: :file:`mu_erf_dft.irp.f` + + range separation parameter used in RS-DFT. It is set to mu_erf in order to be consistent with the two electrons integrals erf + + + + +.. c:var:: potential_c_alpha_ao + + .. code:: text + + double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) + + File: :file:`pot_general.irp.f` + + general providers for the alpha/beta exchange/correlation potentials on the AO basis + + + + +.. c:var:: potential_c_alpha_ao_lda + + .. code:: text + + double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) + + File: :file:`pot_ao.irp.f` + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + + + +.. c:var:: potential_c_alpha_ao_pbe + + .. code:: text + + double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) + + File: :file:`pot_ao.irp.f` + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + + + +.. c:var:: potential_c_alpha_mo + + .. code:: text + + double precision, allocatable :: potential_x_alpha_mo (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: potential_x_beta_mo (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: potential_c_alpha_mo (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: potential_c_beta_mo (mo_tot_num,mo_tot_num,N_states) + + File: :file:`pot_general.irp.f` + + general providers for the alpha/beta exchange/correlation potentials on the MO basis + + + + +.. c:var:: potential_c_beta_ao + + .. code:: text + + double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) + + File: :file:`pot_general.irp.f` + + general providers for the alpha/beta exchange/correlation potentials on the AO basis + + + + +.. c:var:: potential_c_beta_ao_lda + + .. code:: text + + double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) + + File: :file:`pot_ao.irp.f` + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + + + +.. c:var:: potential_c_beta_ao_pbe + + .. code:: text + + double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) + + File: :file:`pot_ao.irp.f` + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + + + +.. c:var:: potential_c_beta_mo + + .. code:: text + + double precision, allocatable :: potential_x_alpha_mo (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: potential_x_beta_mo (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: potential_c_alpha_mo (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: potential_c_beta_mo (mo_tot_num,mo_tot_num,N_states) + + File: :file:`pot_general.irp.f` + + general providers for the alpha/beta exchange/correlation potentials on the MO basis + + + + +.. c:var:: potential_sr_c_alpha_ao_lda + + .. code:: text + + 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) + 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) + + File: :file:`sr_pot_ao.irp.f` + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + + + +.. c:var:: potential_sr_c_alpha_ao_pbe + + .. code:: text + + 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) + + File: :file:`sr_pot_ao.irp.f` + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + + + +.. c:var:: potential_sr_c_beta_ao_lda + + .. code:: text + + 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) + 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) + + File: :file:`sr_pot_ao.irp.f` + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + + + +.. c:var:: potential_sr_c_beta_ao_pbe + + .. code:: text + + 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) + + File: :file:`sr_pot_ao.irp.f` + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + + + +.. c:var:: potential_sr_x_alpha_ao_lda + + .. code:: text + + 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) + 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) + + File: :file:`sr_pot_ao.irp.f` + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + + + +.. c:var:: potential_sr_x_alpha_ao_pbe + + .. code:: text + + 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) + + File: :file:`sr_pot_ao.irp.f` + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + + + +.. c:var:: potential_sr_x_beta_ao_lda + + .. code:: text + + 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) + 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) + + File: :file:`sr_pot_ao.irp.f` + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + + + +.. c:var:: potential_sr_x_beta_ao_pbe + + .. code:: text + + 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) + + File: :file:`sr_pot_ao.irp.f` + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + + + +.. c:var:: potential_x_alpha_ao + + .. code:: text + + double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) + + File: :file:`pot_general.irp.f` + + general providers for the alpha/beta exchange/correlation potentials on the AO basis + + + + +.. c:var:: potential_x_alpha_ao_lda + + .. code:: text + + double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) + + File: :file:`pot_ao.irp.f` + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + + + +.. c:var:: potential_x_alpha_ao_pbe + + .. code:: text + + double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) + + File: :file:`pot_ao.irp.f` + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + + + +.. c:var:: potential_x_alpha_mo + + .. code:: text + + double precision, allocatable :: potential_x_alpha_mo (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: potential_x_beta_mo (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: potential_c_alpha_mo (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: potential_c_beta_mo (mo_tot_num,mo_tot_num,N_states) + + File: :file:`pot_general.irp.f` + + general providers for the alpha/beta exchange/correlation potentials on the MO basis + + + + +.. c:var:: potential_x_beta_ao + + .. code:: text + + double precision, allocatable :: potential_x_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao (ao_num,ao_num,N_states) + + File: :file:`pot_general.irp.f` + + general providers for the alpha/beta exchange/correlation potentials on the AO basis + + + + +.. c:var:: potential_x_beta_ao_lda + + .. code:: text + + double precision, allocatable :: potential_x_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_lda (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_lda (ao_num,ao_num,N_states) + + File: :file:`pot_ao.irp.f` + + short range exchange/correlation alpha/beta potentials with LDA functional on the AO basis + + + + +.. c:var:: potential_x_beta_ao_pbe + + .. code:: text + + double precision, allocatable :: potential_x_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_x_beta_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_alpha_ao_pbe (ao_num,ao_num,N_states) + double precision, allocatable :: potential_c_beta_ao_pbe (ao_num,ao_num,N_states) + + File: :file:`pot_ao.irp.f` + + exchange/correlation alpha/beta potentials with the short range PBE functional on the AO basis + + + + +.. c:var:: potential_x_beta_mo + + .. code:: text + + double precision, allocatable :: potential_x_alpha_mo (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: potential_x_beta_mo (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: potential_c_alpha_mo (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: potential_c_beta_mo (mo_tot_num,mo_tot_num,N_states) + + File: :file:`pot_general.irp.f` + + general providers for the alpha/beta exchange/correlation potentials on the MO basis + + + + +.. c:var:: psi_dft_energy_h_core + + .. code:: text + + double precision, allocatable :: psi_dft_energy_kinetic (N_states) + double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) + double precision, allocatable :: psi_dft_energy_h_core (N_states) + + File: :file:`one_e_energy_dft.irp.f` + + kinetic, electron-nuclear and total h_core energy computed with the density matrix one_body_dm_mo_beta_for_dft+one_body_dm_mo_alpha_for_dft + + + + +.. c:var:: psi_dft_energy_kinetic + + .. code:: text + + double precision, allocatable :: psi_dft_energy_kinetic (N_states) + double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) + double precision, allocatable :: psi_dft_energy_h_core (N_states) + + File: :file:`one_e_energy_dft.irp.f` + + kinetic, electron-nuclear and total h_core energy computed with the density matrix one_body_dm_mo_beta_for_dft+one_body_dm_mo_alpha_for_dft + + + + +.. c:var:: psi_dft_energy_nuclear_elec + + .. code:: text + + double precision, allocatable :: psi_dft_energy_kinetic (N_states) + double precision, allocatable :: psi_dft_energy_nuclear_elec (N_states) + double precision, allocatable :: psi_dft_energy_h_core (N_states) + + File: :file:`one_e_energy_dft.irp.f` + + kinetic, electron-nuclear and total h_core energy computed with the density matrix one_body_dm_mo_beta_for_dft+one_body_dm_mo_alpha_for_dft + + + + +.. c:var:: shifting_constant + + .. code:: text + + double precision, allocatable :: shifting_constant (N_states) + + File: :file:`shifted_potential.irp.f` + + shifting_constant = (E_{Hxc} - <\Psi | V_{Hxc} | \Psi>) / N_elec constant to add to the potential in order to obtain the variational energy as the eigenvalue of the effective long-range Hamiltonian (see original paper of Levy PRL 113, 113002 (2014), equation (17) ) + + + + +.. c:var:: short_range_hartree + + .. code:: text + + double precision, allocatable :: short_range_hartree_operator (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: short_range_hartree (N_states) + + File: :file:`sr_coulomb.irp.f` + + short_range_Hartree_operator(i,j) = \int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr} short_range_Hartree = 0.5 * \sum_{i,j} \rho_{ij} short_range_Hartree_operator(i,j) = 0.5 * \int dr \int r' \rho(r) \rho(r') W_{ee}^{sr} + + + + +.. c:var:: short_range_hartree_operator + + .. code:: text + + double precision, allocatable :: short_range_hartree_operator (mo_tot_num,mo_tot_num,N_states) + double precision, allocatable :: short_range_hartree (N_states) + + File: :file:`sr_coulomb.irp.f` + + short_range_Hartree_operator(i,j) = \int dr i(r)j(r) \int r' \rho(r') W_{ee}^{sr} short_range_Hartree = 0.5 * \sum_{i,j} \rho_{ij} short_range_Hartree_operator(i,j) = 0.5 * \int dr \int r' \rho(r) \rho(r') W_{ee}^{sr} + + + + +.. c:var:: trace_v_h + + .. code:: text + + double precision, allocatable :: trace_v_xc (N_states) + double precision, allocatable :: trace_v_h (N_states) + double precision, allocatable :: trace_v_hxc (N_states) + + File: :file:`pot_general.irp.f` + + Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} + + + + +.. c:var:: trace_v_hxc + + .. code:: text + + double precision, allocatable :: trace_v_xc (N_states) + double precision, allocatable :: trace_v_h (N_states) + double precision, allocatable :: trace_v_hxc (N_states) + + File: :file:`pot_general.irp.f` + + Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} + + + + +.. c:var:: trace_v_xc + + .. code:: text + + double precision, allocatable :: trace_v_xc (N_states) + double precision, allocatable :: trace_v_h (N_states) + double precision, allocatable :: trace_v_hxc (N_states) + + File: :file:`pot_general.irp.f` + + Trace_v_xc = \sum_{i,j} (rho_{ij}_\alpha v^{xc}_{ij}^\alpha + rho_{ij}_\beta v^{xc}_{ij}^\beta) Trace_v_Hxc = \sum_{i,j} v^{H}_{ij} (rho_{ij}_\alpha + rho_{ij}_\beta) Trace_v_Hxc = \sum_{i,j} rho_{ij} v^{Hxc}_{ij} + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: berf + + .. code:: text + + function berf(a) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: dberfda + + .. code:: text + + function dberfda(a) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: dpol + + .. code:: text + + double precision function dpol(rs) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: dpold + + .. code:: text + + double precision function dpold(rs) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: dpoldd + + .. code:: text + + double precision function dpoldd(rs) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: ec_lda + + .. code:: text + + subroutine ec_lda(rho_a,rho_b,ec,vc_a,vc_b) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: ec_lda_sr + + .. code:: text + + subroutine ec_lda_sr(mu,rho_a,rho_b,ec,vc_a,vc_b) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: ec_only_lda_sr + + .. code:: text + + subroutine ec_only_lda_sr(mu,rho_a,rho_b,ec) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: ec_pbe_only + + .. code:: text + + subroutine ec_pbe_only(mu,rhoc,rhoo,sigmacc,sigmaco,sigmaoo,ec) + + File: :file:`exc_sr_pbe.irp.f` + + Short-range PBE correlation energy functional for erf interaction + input : ========== + mu = range separated parameter + rhoc, rhoo = total density and spin density + sigmacc = square of the gradient of the total density + sigmaco = square of the gradient of the spin density + sigmaoo = scalar product between the gradient of the total density and the one of the spin density + output: ========== + ec = correlation energy + + + + + + +.. c:function:: ec_pbe_sr + + .. code:: text + + subroutine ec_pbe_sr(mu,rhoc,rhoo,sigmacc,sigmaco,sigmaoo,ec,vrhoc,vrhoo,vsigmacc,vsigmaco,vsigmaoo) + + File: :file:`exc_sr_pbe.irp.f` + + Short-range PBE correlation energy functional for erf interaction + input : ========== + mu = range separated parameter + rhoc, rhoo = total density and spin density + sigmacc = square of the gradient of the total density + sigmaco = square of the gradient of the spin density + sigmaoo = scalar product between the gradient of the total density and the one of the spin density + output: ========== + ec = correlation energy + all variables v** are energy derivatives with respect to components of the density + vrhoc = derivative with respect to the total density + vrhoo = derivative with respect to spin density + vsigmacc = derivative with respect to the square of the gradient of the total density + vsigmaco = derivative with respect to scalar product between the gradients of total and spin densities + vsigmaoo = derivative with respect to the square of the gradient of the psin density + + + + + +.. c:function:: ecorrlr + + .. code:: text + + subroutine ecorrlr(rs,z,mu,eclr) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: ecpw + + .. code:: text + + subroutine ecPW(x,y,ec,ecd,ecz,ecdd,eczd) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: ex_lda + + .. code:: text + + subroutine ex_lda(rho_a,rho_b,ex,vx_a,vx_b) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: ex_lda_sr + + .. code:: text + + subroutine ex_lda_sr(mu,rho_a,rho_b,ex,vx_a,vx_b) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: ex_pbe_sr + + .. code:: text + + subroutine ex_pbe_sr(mu,rho_a,rho_b,grd_rho_a_2,grd_rho_b_2,grd_rho_a_b,ex,vx_rho_a,vx_rho_b,vx_grd_rho_a_2,vx_grd_rho_b_2,vx_grd_rho_a_b) + + File: :file:`exc_sr_pbe.irp.f` + + mu = range separation parameter rho_a = density alpha rho_b = density beta grd_rho_a_2 = (gradient rho_a)^2 grd_rho_b_2 = (gradient rho_b)^2 grd_rho_a_b = (gradient rho_a).(gradient rho_b) ex = exchange energy density at the density and corresponding gradients of the density vx_rho_a = d ex / d rho_a vx_rho_b = d ex / d rho_b vx_grd_rho_a_2 = d ex / d grd_rho_a_2 vx_grd_rho_b_2 = d ex / d grd_rho_b_2 vx_grd_rho_a_b = d ex / d grd_rho_a_b + + + + + +.. c:function:: ex_pbe_sr_only + + .. code:: text + + subroutine ex_pbe_sr_only(mu,rho_a,rho_b,grd_rho_a_2,grd_rho_b_2,grd_rho_a_b,ex) + + File: :file:`exc_sr_pbe.irp.f` + + rho_a = density alpha rho_b = density beta grd_rho_a_2 = (gradient rho_a)^2 grd_rho_b_2 = (gradient rho_b)^2 grd_rho_a_b = (gradient rho_a).(gradient rho_b) ex = exchange energy density at point r + + + + + +.. c:function:: g0d + + .. code:: text + + double precision function g0d(rs) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: g0dd + + .. code:: text + + double precision function g0dd(rs) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: g0f + + .. code:: text + + double precision function g0f(x) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: gpw + + .. code:: text + + subroutine GPW(x,Ac,alfa1,beta1,beta2,beta3,beta4,G,Gd,Gdd) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: grad_rho_ab_to_grad_rho_oc + + .. code:: text + + subroutine grad_rho_ab_to_grad_rho_oc(grad_rho_a_2,grad_rho_b_2,grad_rho_a_b,grad_rho_o_2,grad_rho_c_2,grad_rho_o_c) + + File: :file:`rho_ab_to_rho_tot.irp.f` + + + + + + + +.. c:function:: qrpa + + .. code:: text + + double precision function Qrpa(x) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: qrpad + + .. code:: text + + double precision function Qrpad(x) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: qrpadd + + .. code:: text + + double precision function Qrpadd(x) + + File: :file:`exc_sr_lda.irp.f` + + + + + + + +.. c:function:: rho_ab_to_rho_oc + + .. code:: text + + subroutine rho_ab_to_rho_oc(rho_a,rho_b,rho_o,rho_c) + + File: :file:`rho_ab_to_rho_tot.irp.f` + + + + + + + +.. c:function:: rho_oc_to_rho_ab + + .. code:: text + + subroutine rho_oc_to_rho_ab(rho_o,rho_c,rho_a,rho_b) + + File: :file:`rho_ab_to_rho_tot.irp.f` + + + + + + + +.. c:function:: v_grad_rho_oc_to_v_grad_rho_ab + + .. code:: text + + subroutine v_grad_rho_oc_to_v_grad_rho_ab(v_grad_rho_o_2,v_grad_rho_c_2,v_grad_rho_o_c,v_grad_rho_a_2,v_grad_rho_b_2,v_grad_rho_a_b) + + File: :file:`rho_ab_to_rho_tot.irp.f` + + + + + + + +.. c:function:: v_rho_ab_to_v_rho_oc + + .. code:: text + + subroutine v_rho_ab_to_v_rho_oc(v_rho_a,v_rho_b,v_rho_o,v_rho_c) + + File: :file:`rho_ab_to_rho_tot.irp.f` + + + + + + + +.. c:function:: v_rho_oc_to_v_rho_ab + + .. code:: text + + subroutine v_rho_oc_to_v_rho_ab(v_rho_o,v_rho_c,v_rho_a,v_rho_b) + + File: :file:`rho_ab_to_rho_tot.irp.f` + + + + + + + +.. c:function:: vcorrlr + + .. code:: text + + subroutine vcorrlr(rs,z,mu,vclrup,vclrdown,vclrupd,vclrdownd) + + File: :file:`exc_sr_lda.irp.f` + + + + diff --git a/docs/source/modules/dressing.rst b/docs/source/modules/dressing.rst new file mode 100644 index 00000000..a4b3285d --- /dev/null +++ b/docs/source/modules/dressing.rst @@ -0,0 +1,36 @@ +.. _dressing: + +.. program:: dressing + +.. default-role:: option + +========= +dress_zmq +========= + +Module to facilitate the construction of modules using dressed +Hamiltonians, parallelized with |ZeroMQ|. + + + + +EZFIO parameters +---------------- + +.. option:: thresh_dressed_ci + + Threshold on the convergence of the dressed |CI| energy + + Default: 1.e-5 + +.. option:: n_it_max_dressed_ci + + Maximum number of dressed |CI| iterations + + Default: 10 + +.. option:: dress_relative_error + + Stop stochastic dressing when the relative error is smaller than :option:`perturbation PT2_relative_error` + + Default: 0.001 diff --git a/docs/source/modules/electrons.rst b/docs/source/modules/electrons.rst new file mode 100644 index 00000000..97fee97c --- /dev/null +++ b/docs/source/modules/electrons.rst @@ -0,0 +1,76 @@ +.. _electrons: + +.. program:: electrons + +.. default-role:: option + +========= +electrons +========= + +Describes the electrons. For the moment, only the number of alpha +and beta electrons are provided by this module. + + +Assumptions +=========== + +* `elec_num` >= 0 +* `elec_alpha_num` >= 0 +* `elec_beta_num` >= 0 +* `elec_alpha_num` >= `elec_beta_num` + + + + + +EZFIO parameters +---------------- + +.. option:: elec_alpha_num + + Numbers of electrons alpha ("up") + + +.. option:: elec_beta_num + + Numbers of electrons beta ("down") + + +.. option:: elec_num + + Numbers total of electrons (alpha + beta) + + Default: = electrons.elec_alpha_num + electrons.elec_beta_num + + +Providers +--------- + + +.. c:var:: elec_num + + .. code:: text + + integer :: elec_num + integer, allocatable :: elec_num_tab (2) + + File: :file:`electrons.irp.f` + + Numbers of alpha ("up") , beta ("down") and total electrons + + + + +.. c:var:: elec_num_tab + + .. code:: text + + integer :: elec_num + integer, allocatable :: elec_num_tab (2) + + File: :file:`electrons.irp.f` + + Numbers of alpha ("up") , beta ("down") and total electrons + + diff --git a/docs/source/modules/ezfio_files.rst b/docs/source/modules/ezfio_files.rst new file mode 100644 index 00000000..3562fd0e --- /dev/null +++ b/docs/source/modules/ezfio_files.rst @@ -0,0 +1,149 @@ +.. _ezfio_files: + +.. program:: ezfio_files + +.. default-role:: option + +=========== +ezfio_files +=========== + +This modules essentially contains the name of the |EZFIO| directory in the +:c:data:`ezfio_filename` variable. This is read as the first argument of the +command-line, or as the :envvar:`QP_INPUT` environment variable. + + + + +Providers +--------- + + +.. c:var:: ezfio_filename + + .. code:: text + + character*(128) :: ezfio_filename + + File: :file:`ezfio.irp.f` + + Name of EZFIO file. It is obtained from the QPACKAGE_INPUT environment variable if it is set, or as the 1st argument of the command line. + + + + +.. c:var:: ezfio_work_dir + + .. code:: text + + character*(128) :: ezfio_work_dir + + File: :file:`ezfio.irp.f` + + EZFIO/work/ + + + + +.. c:var:: output_cpu_time_0 + + .. code:: text + + double precision :: output_wall_time_0 + double precision :: output_cpu_time_0 + + File: :file:`output.irp.f` + + Initial CPU and wall times when printing in the output files + + + + +.. c:var:: output_wall_time_0 + + .. code:: text + + double precision :: output_wall_time_0 + double precision :: output_cpu_time_0 + + File: :file:`output.irp.f` + + Initial CPU and wall times when printing in the output files + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: getunitandopen + + .. code:: text + + integer function getUnitAndOpen(f,mode) + + File: :file:`get_unit_and_open.irp.f` + + :f: file name + :mode: 'R' : READ, UNFORMATTED 'W' : WRITE, UNFORMATTED 'r' : READ, FORMATTED 'w' : WRITE, FORMATTED 'a' : APPEND, FORMATTED 'x' : READ/WRITE, FORMATTED + + + + + + +.. c:function:: write_bool + + .. code:: text + + subroutine write_bool(iunit,value,label) + + File: :file:`output.irp.f` + + Write an logical value in output + + + + + +.. c:function:: write_double + + .. code:: text + + subroutine write_double(iunit,value,label) + + File: :file:`output.irp.f` + + Write a double precision value in output + + + + + +.. c:function:: write_int + + .. code:: text + + subroutine write_int(iunit,value,label) + + File: :file:`output.irp.f` + + Write an integer value in output + + + + + +.. c:function:: write_time + + .. code:: text + + subroutine write_time(iunit) + + File: :file:`output.irp.f` + + Write a time stamp in the output for chronological reconstruction + + diff --git a/docs/source/modules/fci.rst b/docs/source/modules/fci.rst new file mode 100644 index 00000000..98b1f8f1 --- /dev/null +++ b/docs/source/modules/fci.rst @@ -0,0 +1,921 @@ +.. _fci: + +.. program:: fci + +.. default-role:: option + +=== +fci +=== + +Selected Full Configuration Interaction. + +The :command:`FCI` program starts with a single determinant, or with the wave +function in the |EZFIO| database if :option:`determinants read_wf` is |true|. +Then, it will iteratively: + +* Select the most important determinants from the external space and add them to the + internal space +* If :option:`determinants s2_eig` is |true|, add all the necessary + determinants to allow the eigenstates of |H| to be eigenstates of |S^2| +* Diagonalize |H| in the enlarged internal space +* Compute (stochastically) the second-order perturbative contribution to the energy +* Extrapolate the variational energy by fitting + :math:`E=E_\text{FCI} - \alpha\, E_\text{PT2}` + + +The number of selected determinants at each iteration will be such that the +size of the wave function will double at every iteration. If :option:`determinants +s2_eig` is |true|, then the number of selected determinants will be 1.5x the +current number, and then all the additional determinants will be added. + +By default, the program will stop when more than one million determinants have +been selected, or when the |PT2| energy is below :math:`10^{-4}`. + +The variational and |PT2| energies of the iterations are stored in the +|EZFIO| database, in the :ref:`IterativeSave` module. + + + +Computation of the |PT2| energy +------------------------------- + +At each iteration, the |PT2| energy is computed considering the Epstein-Nesbet +zeroth-order Hamiltonian: + +.. math:: + + E_{\text{PT2}} = \sum_{ \alpha } + \frac{|\langle \Psi_S | \hat{H} | \alpha \rangle|^2} + {E - \langle \alpha | \hat{H} | \alpha \rangle} + +where the |kalpha| determinants are generated by applying all the single and +double excitation operators to all the determinants of the wave function +:math:`\Psi_G`. + +When the hybrid-deterministic/stochastic algorithm is chosen +(default), :math:`Psi_G = \Psi_S = \Psi`, the full wavefunction expanded in the +internal space. +When the deterministic algorithm is chosen (:option:`perturbation do_pt2` +is set to |false|), :math:`Psi_G` is a truncation of |Psi| using +:option:`determinants threshold_generators`, and :math:`Psi_S` is a truncation +of |Psi| using :option:`determinants threshold_selectors`, and re-weighted +by :math:`1/\langle \Psi_s | \Psi_s \rangle`. + +At every iteration, while computing the |PT2|, the variance of the wave +function is also computed: + +.. math:: + + \sigma^2 & = \langle \Psi | \hat{H}^2 | \Psi \rangle - + \langle \Psi | \hat{H} | \Psi \rangle^2 \\ + & = \sum_{i \in \text{FCI}} + \langle \Psi | \hat{H} | i \rangle + \langle i | \hat{H} | \Psi \rangle - + \langle \Psi | \hat{H} | \Psi \rangle^2 \\ + & = \sum_{ \alpha } + \langle |\Psi | \hat{H} | \alpha \rangle|^2. + +The expression of the variance is the same as the expression of the |PT2|, with +a denominator of 1. It measures how far the wave function is from the |FCI| +solution. Note that the absence of denominator in the Heat-Bath selected |CI| +method is selection method by minimization of the variance, whereas |CIPSI| is +a selection method by minimization of the energy. + + +If :option:`perturbation do_pt2` is set to |false|, then the stochastic +|PT2| is not computed, and an approximate value is obtained from the |CIPSI| +selection. The calculation is faster, but the extrapolated |FCI| value is +less accurate. This way of running the code should be used when the only +goal is to generate a wave function, as for using |CIPSI| wave functions as +trial wave functions of |QMC| calculations for example. + + +The :command:`PT2` program reads the wave function of the |EZFIO| database +and computes the energy and the |PT2| contribution. + + +State-averaging +--------------- + +Extrapolated |FCI| energy +------------------------- + +An estimate of the |FCI| energy is computed by extrapolating + +.. math:: + + E=E_\text{FCI} - \alpha\, E_\text{PT2} + +This extrapolation is done for all the requested states, and excitation +energies are printed as energy differences between the extrapolated +energies of the excited states and the extrapolated energy of the ground +state. + +The extrapolations are given considering the 2 last points, the 3 last points, ..., +the 7 last points. The extrapolated value should be chosen such that the extrpolated +value is stable with the number of points. + + + + +EZFIO parameters +---------------- + +.. option:: energy + + Calculated Selected |FCI| energy + + +.. option:: energy_pt2 + + Calculated |FCI| energy + |PT2| + + + +Providers +--------- + + +.. c:var:: initialize_pt2_e0_denominator + + .. code:: text + + logical :: initialize_pt2_e0_denominator + + File: :file:`energy.irp.f` + + If true, initialize pt2_E0_denominator + + + + +.. c:var:: pt2_cw + + .. code:: text + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + +.. c:var:: pt2_e0_denominator + + .. code:: text + + double precision, allocatable :: pt2_e0_denominator (N_states) + + File: :file:`energy.irp.f` + + E0 in the denominator of the PT2 + + + + +.. c:var:: pt2_f + + .. code:: text + + integer, allocatable :: pt2_f (N_det_generators) + integer :: pt2_n_tasks_max + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + +.. c:var:: pt2_j + + .. code:: text + + integer, allocatable :: pt2_j (N_det_generators) + integer, allocatable :: pt2_r (N_det_generators) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + +.. c:var:: pt2_mindetinfirstteeth + + .. code:: text + + integer :: pt2_n_teeth + integer :: pt2_mindetinfirstteeth + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + +.. c:var:: pt2_n_0 + + .. code:: text + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + +.. c:var:: pt2_n_tasks + + .. code:: text + + integer :: pt2_n_tasks + + File: :file:`pt2_stoch_routines.irp.f` + + Number of parallel tasks for the Monte Carlo + + + + +.. c:var:: pt2_n_tasks_max + + .. code:: text + + integer, allocatable :: pt2_f (N_det_generators) + integer :: pt2_n_tasks_max + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + +.. c:var:: pt2_n_teeth + + .. code:: text + + integer :: pt2_n_teeth + integer :: pt2_mindetinfirstteeth + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + +.. c:var:: pt2_r + + .. code:: text + + integer, allocatable :: pt2_j (N_det_generators) + integer, allocatable :: pt2_r (N_det_generators) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + +.. c:var:: pt2_stoch_istate + + .. code:: text + + integer :: pt2_stoch_istate + + File: :file:`pt2_stoch_routines.irp.f` + + State for stochatsic PT2 + + + + +.. c:var:: pt2_u + + .. code:: text + + double precision, allocatable :: pt2_u (N_det_generators) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + +.. c:var:: pt2_u_0 + + .. code:: text + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + +.. c:var:: pt2_w + + .. code:: text + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + +.. c:var:: pt2_w_t + + .. code:: text + + double precision, allocatable :: pt2_w (N_det_generators) + double precision, allocatable :: pt2_cw (0:N_det_generators) + double precision :: pt2_w_t + double precision :: pt2_u_0 + integer, allocatable :: pt2_n_0 (pt2_N_teeth+1) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: add_to_selection_buffer + + .. code:: text + + subroutine add_to_selection_buffer(b, det, val) + + File: :file:`selection_buffer.irp.f` + + + + + + + +.. c:function:: bitstring_to_list_in_selection + + .. code:: text + + subroutine bitstring_to_list_in_selection( string, list, n_elements, Nint) + + File: :file:`selection.irp.f` + + Gives the inidices(+1) of the bits set to 1 in the bit string + + + + + +.. c:function:: create_selection_buffer + + .. code:: text + + subroutine create_selection_buffer(N, siz_, res) + + File: :file:`selection_buffer.irp.f` + + + + + + + +.. c:function:: delete_selection_buffer + + .. code:: text + + subroutine delete_selection_buffer(b) + + File: :file:`selection_buffer.irp.f` + + + + + + + +.. c:function:: fci + + .. code:: text + + subroutine fci + + File: :file:`fci.irp.f` + + Selected Full Configuration Interaction. + + + + + +.. c:function:: fill_buffer_double + + .. code:: text + + subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_diag_tmp, E0, pt2, variance, norm, mat, buf) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: get_d0 + + .. code:: text + + subroutine get_d0(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: get_d1 + + .. code:: text + + subroutine get_d1(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: get_d2 + + .. code:: text + + subroutine get_d2(gen, phasemask, bannedOrb, banned, mat, mask, h, p, sp, coefs) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: get_m0 + + .. code:: text + + subroutine get_m0(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: get_m1 + + .. code:: text + + subroutine get_m1(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: get_m2 + + .. code:: text + + subroutine get_m2(gen, phasemask, bannedOrb, vect, mask, h, p, sp, coefs) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: get_mask_phase + + .. code:: text + + subroutine get_mask_phase(det1, pm, Nint) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: get_phase_bi + + .. code:: text + + double precision function get_phase_bi(phasemask, s1, s2, h1, p1, h2, p2, Nint) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: make_selection_buffer_s2 + + .. code:: text + + subroutine make_selection_buffer_s2(b) + + File: :file:`selection_buffer.irp.f` + + + + + + + +.. c:function:: merge_selection_buffers + + .. code:: text + + subroutine merge_selection_buffers(b1, b2) + + File: :file:`selection_buffer.irp.f` + + Merges the selection buffers b1 and b2 into b2 + + + + + +.. c:function:: past_d1 + + .. code:: text + + subroutine past_d1(bannedOrb, p) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: past_d2 + + .. code:: text + + subroutine past_d2(banned, p, sp) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: pt2 + + .. code:: text + + subroutine pt2 + + File: :file:`pt2.irp.f` + + Second order perturbative correction to the wave function contained in the EZFIO directory. + + + + + +.. c:function:: pt2_collector + + .. code:: text + + subroutine pt2_collector(zmq_socket_pull, E, relative_error, pt2, error, variance, norm) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + + +.. c:function:: pt2_find_sample + + .. code:: text + + integer function pt2_find_sample(v, w) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + + +.. c:function:: pt2_find_sample_lr + + .. code:: text + + integer function pt2_find_sample_lr(v, w, l_in, r_in) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + + +.. c:function:: pt2_slave_inproc + + .. code:: text + + subroutine pt2_slave_inproc(i) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + + +.. c:function:: pull_pt2_results + + .. code:: text + + subroutine pull_pt2_results(zmq_socket_pull, index, pt2, variance, norm, task_id, n_tasks) + + File: :file:`run_pt2_slave.irp.f` + + + + + + + +.. c:function:: pull_selection_results + + .. code:: text + + subroutine pull_selection_results(zmq_socket_pull, pt2, variance, norm, val, det, N, task_id, ntask) + + File: :file:`run_selection_slave.irp.f` + + + + + + + +.. c:function:: push_pt2_results + + .. code:: text + + subroutine push_pt2_results(zmq_socket_push, index, pt2, variance, norm, task_id, n_tasks) + + File: :file:`run_pt2_slave.irp.f` + + + + + + + +.. c:function:: push_selection_results + + .. code:: text + + subroutine push_selection_results(zmq_socket_push, pt2, variance, norm, b, task_id, ntask) + + File: :file:`run_selection_slave.irp.f` + + + + + + + +.. c:function:: run_pt2_slave + + .. code:: text + + subroutine run_pt2_slave(thread,iproc,energy) + + File: :file:`run_pt2_slave.irp.f` + + + + + + + +.. c:function:: run_selection_slave + + .. code:: text + + subroutine run_selection_slave(thread,iproc,energy) + + File: :file:`run_selection_slave.irp.f` + + + + + + + +.. c:function:: select_connected + + .. code:: text + + subroutine select_connected(i_generator,E0,pt2,variance,norm,b,subset,csubset) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: select_singles_and_doubles + + .. code:: text + + subroutine select_singles_and_doubles(i_generator,hole_mask,particle_mask,fock_diag_tmp,E0,pt2,variance,norm,buf,subset,csubset) + + File: :file:`selection.irp.f` + + WARNING /!\ : It is assumed that the generators and selectors are psi_det_sorted + + + + + +.. c:function:: selection_collector + + .. code:: text + + subroutine selection_collector(zmq_socket_pull, b, N, pt2, variance, norm) + + File: :file:`zmq_selection.irp.f` + + + + + + + +.. c:function:: selection_slave_inproc + + .. code:: text + + subroutine selection_slave_inproc(i) + + File: :file:`zmq_selection.irp.f` + + + + + + + +.. c:function:: sort_selection_buffer + + .. code:: text + + subroutine sort_selection_buffer(b) + + File: :file:`selection_buffer.irp.f` + + + + + + + +.. c:function:: splash_pq + + .. code:: text + + subroutine splash_pq(mask, sp, det, i_gen, N_sel, bannedOrb, banned, mat, interesting) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: spot_isinwf + + .. code:: text + + subroutine spot_isinwf(mask, det, i_gen, N, banned, fullMatch, interesting) + + File: :file:`selection.irp.f` + + + + + + + +.. c:function:: testteethbuilding + + .. code:: text + + logical function testTeethBuilding(minF, N) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + + +.. c:function:: zmq_pt2 + + .. code:: text + + subroutine ZMQ_pt2(E, pt2,relative_error, error, variance, norm) + + File: :file:`pt2_stoch_routines.irp.f` + + + + + + + +.. c:function:: zmq_selection + + .. code:: text + + subroutine ZMQ_selection(N_in, pt2, variance, norm) + + File: :file:`zmq_selection.irp.f` + + + + diff --git a/docs/source/modules/generators_cas.rst b/docs/source/modules/generators_cas.rst new file mode 100644 index 00000000..a00b7a01 --- /dev/null +++ b/docs/source/modules/generators_cas.rst @@ -0,0 +1,19 @@ +.. _generators_cas: + +.. program:: generators_cas + +.. default-role:: option + +============== +generators_cas +============== + +Module defining the generator determinants as those belonging to a |CAS|. +The |MOs| belonging to the |CAS| are those which were set as active with +the :ref:`qp_set_mo_class` command. + +This module is intended to be included in the :file:`NEED` file to define +the generators as the |CAS| determinants, which can be useful to define post-CAS approaches (see cassd module for instance). + + + diff --git a/docs/source/modules/generators_full.rst b/docs/source/modules/generators_full.rst new file mode 100644 index 00000000..90b32a98 --- /dev/null +++ b/docs/source/modules/generators_full.rst @@ -0,0 +1,145 @@ +.. _generators_full: + +.. program:: generators_full + +.. default-role:: option + +=============== +generators_full +=============== + +Module defining the generator determinants as all the determinants of the +variational space. + +This module is intended to be included in the :file:`NEED` file to define +a full set of generators. + + + +Providers +--------- + + +.. c:var:: degree_max_generators + + .. code:: text + + integer :: degree_max_generators + + File: :file:`generators.irp.f` + + Max degree of excitation (respect to HF) of the generators + + + + +.. c:var:: n_det_generators + + .. code:: text + + integer :: n_det_generators + + File: :file:`generators.irp.f` + + For Single reference wave functions, the number of generators is 1 : the Hartree-Fock determinant + + + + +.. c:var:: psi_coef_generators + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_generators (psi_det_size,N_states) + + File: :file:`generators.irp.f` + + For Single reference wave functions, the generator is the Hartree-Fock determinant + + + + +.. c:var:: psi_coef_sorted_gen + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states) + integer, allocatable :: psi_det_sorted_gen_order (psi_det_size) + + File: :file:`generators.irp.f` + + For Single reference wave functions, the generator is the Hartree-Fock determinant + + + + +.. c:var:: psi_det_generators + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_generators (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_generators (psi_det_size,N_states) + + File: :file:`generators.irp.f` + + For Single reference wave functions, the generator is the Hartree-Fock determinant + + + + +.. c:var:: psi_det_sorted_gen + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states) + integer, allocatable :: psi_det_sorted_gen_order (psi_det_size) + + File: :file:`generators.irp.f` + + For Single reference wave functions, the generator is the Hartree-Fock determinant + + + + +.. c:var:: psi_det_sorted_gen_order + + .. code:: text + + integer(bit_kind), allocatable :: psi_det_sorted_gen (N_int,2,psi_det_size) + double precision, allocatable :: psi_coef_sorted_gen (psi_det_size,N_states) + integer, allocatable :: psi_det_sorted_gen_order (psi_det_size) + + File: :file:`generators.irp.f` + + For Single reference wave functions, the generator is the Hartree-Fock determinant + + + + +.. c:var:: select_max + + .. code:: text + + double precision, allocatable :: select_max (size_select_max) + + File: :file:`generators.irp.f` + + Memo to skip useless selectors + + + + +.. c:var:: size_select_max + + .. code:: text + + integer :: size_select_max + + File: :file:`generators.irp.f` + + Size of the select_max array + + diff --git a/docs/source/modules/hartree_fock.rst b/docs/source/modules/hartree_fock.rst new file mode 100644 index 00000000..52bf2ed5 --- /dev/null +++ b/docs/source/modules/hartree_fock.rst @@ -0,0 +1,125 @@ +.. _hartree_fock: + +.. program:: hartree_fock + +.. default-role:: option + +============ +hartree_fock +============ + + +The Hartree-Fock module performs *Restricted* Hartree-Fock calculations (the +spatial part of the |MOs| is common for alpha and beta spinorbitals). + +The Hartree-Fock in an SCF and therefore is based on the ``scf_utils`` structure. +It performs the following actions: + +#. Compute/Read all the one- and two-electron integrals, and store them in memory +#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it + will read them as initial guess. Otherwise, it will create a guess. +#. Perform the |SCF| iterations + +The definition of the Fock matrix is in :file:`hartree_fock fock_matrix_hf.irp.f` +For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. +The main are: + +# :option:`scf_utils thresh_scf` +# :option:`scf_utils level_shift` + +At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation +crashes for any unexpected reason, the calculation can be restarted by running again +the |SCF| with the same |EZFIO| database. + +The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. +If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. + +To start a calculation from scratch, the simplest way is to remove the +``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. + + + + +.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS +.. _level-shifting: https://doi.org/10.1002/qua.560070407 + + + + + + +EZFIO parameters +---------------- + +.. option:: energy + + Energy HF + + Default: 0. + + +Providers +--------- + + +.. c:var:: hf_energy + + .. code:: text + + double precision :: hf_energy + double precision :: hf_two_electron_energy + double precision :: hf_one_electron_energy + + File: :file:`hf_energy.irp.f` + + Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. + + + + +.. c:var:: hf_one_electron_energy + + .. code:: text + + double precision :: hf_energy + double precision :: hf_two_electron_energy + double precision :: hf_one_electron_energy + + File: :file:`hf_energy.irp.f` + + Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. + + + + +.. c:var:: hf_two_electron_energy + + .. code:: text + + double precision :: hf_energy + double precision :: hf_two_electron_energy + double precision :: hf_one_electron_energy + + File: :file:`hf_energy.irp.f` + + Hartree-Fock energy containing the nuclear repulsion, and its one- and two-body components. + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: scf + + .. code:: text + + subroutine scf + + File: :file:`scf_old.irp.f` + + Produce `Hartree_Fock` MO orbital output: mo_basis.mo_tot_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: hartree_fock.energy optional: mo_basis.mo_coef + + diff --git a/docs/source/modules/iterations.rst b/docs/source/modules/iterations.rst new file mode 100644 index 00000000..0f192da4 --- /dev/null +++ b/docs/source/modules/iterations.rst @@ -0,0 +1,114 @@ +.. _iterations: + +.. program:: iterations + +.. default-role:: option + +========== +iterations +========== + +Module which saves the computed energies for an extrapolation to +the |FCI| limit. + + + +EZFIO parameters +---------------- + +.. option:: n_iter + + Number of saved iterations + + Default: 1 + +.. option:: n_det_iterations + + Number of determinants at each iteration + + +.. option:: energy_iterations + + The variational energy at each iteration + + +.. option:: pt2_iterations + + The |PT2| correction at each iteration + + + +Providers +--------- + + +.. c:var:: extrapolated_energy + + .. code:: text + + double precision, allocatable :: extrapolated_energy (N_iter,N_states) + + File: :file:`iterations.irp.f` + + Extrapolated energy, using E_var = f(PT2) where PT2=0 + + + + +.. c:var:: n_iter + + .. code:: text + + integer :: n_iter + + File: :file:`io.irp.f` + + number of iterations + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: print_extrapolated_energy + + .. code:: text + + subroutine print_extrapolated_energy(e_,pt2_) + + File: :file:`print_extrapolation.irp.f` + + Print the extrapolated energy in the output + + + + + +.. c:function:: print_summary + + .. code:: text + + subroutine print_summary(e_,pt2_,error_,variance_,norm_) + + File: :file:`print_summary.irp.f` + + Print the extrapolated energy in the output + + + + + +.. c:function:: save_iterations + + .. code:: text + + subroutine save_iterations(e_, pt2_,n_) + + File: :file:`iterations.irp.f` + + Update the energy in the EZFIO file. + + diff --git a/docs/source/modules/kohn_sham.rst b/docs/source/modules/kohn_sham.rst new file mode 100644 index 00000000..3967e021 --- /dev/null +++ b/docs/source/modules/kohn_sham.rst @@ -0,0 +1,349 @@ +.. _kohn_sham: + +.. program:: kohn_sham + +.. default-role:: option + +========= +kohn_sham +========= + + +The Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the +spatial part of the |MOs| is common for alpha and beta spinorbitals). + +The Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure. +It performs the following actions: + +#. Compute/Read all the one- and two-electron integrals, and store them in memory +#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it + will read them as initial guess. Otherwise, it will create a guess. +#. Perform the |SCF| iterations + +The definition of the Fock matrix is in :file:`kohn_sham fock_matrix_ks.irp.f` +For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. +The main are: +# :option:`scf_utils thresh_scf` +# :option:`scf_utils level_shift` + +At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation +crashes for any unexpected reason, the calculation can be restarted by running again +the |SCF| with the same |EZFIO| database. + +The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. +If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. + +To start a calculation from scratch, the simplest way is to remove the +``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. + + + + +.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS +.. _level-shifting: https://doi.org/10.1002/qua.560070407 + + + + + + +Providers +--------- + + +.. c:var:: ao_bi_elec_integral_alpha + + .. code:: text + + double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num) + double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num) + + File: :file:`fock_matrix_ks.irp.f` + + Alpha Fock matrix in ao basis set + + + + +.. c:var:: ao_bi_elec_integral_beta + + .. code:: text + + double precision, allocatable :: ao_bi_elec_integral_alpha (ao_num,ao_num) + double precision, allocatable :: ao_bi_elec_integral_beta (ao_num,ao_num) + + File: :file:`fock_matrix_ks.irp.f` + + Alpha Fock matrix in ao basis set + + + + +.. c:var:: ao_potential_alpha_xc + + .. code:: text + + double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num) + double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num) + + File: :file:`pot_functionals.irp.f` + + + + + + +.. c:var:: ao_potential_beta_xc + + .. code:: text + + double precision, allocatable :: ao_potential_alpha_xc (ao_num,ao_num) + double precision, allocatable :: ao_potential_beta_xc (ao_num,ao_num) + + File: :file:`pot_functionals.irp.f` + + + + + + +.. c:var:: e_correlation_dft + + .. code:: text + + double precision :: e_correlation_dft + + File: :file:`pot_functionals.irp.f` + + + + + + +.. c:var:: e_exchange_dft + + .. code:: text + + double precision :: e_exchange_dft + + File: :file:`pot_functionals.irp.f` + + + + + + +.. c:var:: extra_e_contrib_density + + .. code:: text + + double precision :: extra_e_contrib_density + + File: :file:`ks_enery.irp.f` + + Extra contribution to the SCF energy coming from the density. + For a Hartree-Fock calculation: extra_e_contrib_density = 0 + For a Kohn-Sham or Range-separated Kohn-Sham: the exchange/correlation - 1/2 trace of the V_xc potential + + + + +.. c:var:: fock_matrix_alpha_no_xc_ao + + .. code:: text + + double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num) + double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num) + + File: :file:`fock_matrix_ks.irp.f` + + Mono electronic an Coulomb matrix in ao basis set + + + + +.. c:var:: fock_matrix_ao_alpha + + .. code:: text + + double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num) + double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num) + + File: :file:`fock_matrix_ks.irp.f` + + Alpha Fock matrix in ao basis set + + + + +.. c:var:: fock_matrix_ao_beta + + .. code:: text + + double precision, allocatable :: fock_matrix_ao_alpha (ao_num,ao_num) + double precision, allocatable :: fock_matrix_ao_beta (ao_num,ao_num) + + File: :file:`fock_matrix_ks.irp.f` + + Alpha Fock matrix in ao basis set + + + + +.. c:var:: fock_matrix_beta_no_xc_ao + + .. code:: text + + double precision, allocatable :: fock_matrix_alpha_no_xc_ao (ao_num,ao_num) + double precision, allocatable :: fock_matrix_beta_no_xc_ao (ao_num,ao_num) + + File: :file:`fock_matrix_ks.irp.f` + + Mono electronic an Coulomb matrix in ao basis set + + + + +.. c:var:: fock_matrix_energy + + .. code:: text + + double precision :: ks_energy + double precision :: two_electron_energy + double precision :: one_electron_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + File: :file:`ks_enery.irp.f` + + Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + + + +.. c:var:: ks_energy + + .. code:: text + + double precision :: ks_energy + double precision :: two_electron_energy + double precision :: one_electron_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + File: :file:`ks_enery.irp.f` + + Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + + + +.. c:var:: one_electron_energy + + .. code:: text + + double precision :: ks_energy + double precision :: two_electron_energy + double precision :: one_electron_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + File: :file:`ks_enery.irp.f` + + Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + + + +.. c:var:: trace_potential_xc + + .. code:: text + + double precision :: ks_energy + double precision :: two_electron_energy + double precision :: one_electron_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + File: :file:`ks_enery.irp.f` + + Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + + + +.. c:var:: two_electron_energy + + .. code:: text + + double precision :: ks_energy + double precision :: two_electron_energy + double precision :: one_electron_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + File: :file:`ks_enery.irp.f` + + Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: check_coherence_functional + + .. code:: text + + subroutine check_coherence_functional + + File: :file:`ks_scf.irp.f` + + + + + + + +.. c:function:: create_guess + + .. code:: text + + subroutine create_guess + + File: :file:`ks_scf.irp.f` + + Create a MO guess if no MOs are present in the EZFIO directory + + + + + +.. c:function:: run + + .. code:: text + + subroutine run + + File: :file:`ks_scf.irp.f` + + Run SCF calculation + + + + + +.. c:function:: srs_ks_cf + + .. code:: text + + subroutine srs_ks_cf + + File: :file:`ks_scf.irp.f` + + Produce `Kohn_Sham` MO orbital output: mo_basis.mo_tot_num mo_basis.mo_label mo_basis.ao_md5 mo_basis.mo_coef mo_basis.mo_occ output: kohn_sham.energy optional: mo_basis.mo_coef + + diff --git a/docs/source/modules/kohn_sham_rs.rst b/docs/source/modules/kohn_sham_rs.rst new file mode 100644 index 00000000..7eb3ec6e --- /dev/null +++ b/docs/source/modules/kohn_sham_rs.rst @@ -0,0 +1,68 @@ +.. _kohn_sham_rs: + +.. program:: kohn_sham_rs + +.. default-role:: option + +============ +kohn_sham_rs +============ + + +The Range-separated Kohn-Sham module performs *Restricted* Kohn-Sham calculations (the +spatial part of the |MOs| is common for alpha and beta spinorbitals) where the coulomb interaction is partially treated using exact exchange. +The splitting of the interaction between long- and short-range is determined by the range-separation parameter :option:`ao_two_e_erf_integrals mu_erf`. The long-range part of the interaction is explicitly treated with exact exchange, and the short-range part of the interaction is treated with appropriate DFT functionals. + +The Range-separated Kohn-Sham in an SCF and therefore is based on the ``scf_utils`` structure. +It performs the following actions: + +#. Compute/Read all the one- and two-electron integrals, and store them in memory +#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it + will read them as initial guess. Otherwise, it will create a guess. +#. Perform the |SCF| iterations + +The definition of the Fock matrix is in :file:`kohn_sham_rs fock_matrix_rs_ks.irp.f` +For the keywords related to the |SCF| procedure, see the ``scf_utils`` directory where you will find all options. +The main are: +# :option:`scf_utils thresh_scf` +# :option:`scf_utils level_shift` + + +At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation +crashes for any unexpected reason, the calculation can be restarted by running again +the |SCF| with the same |EZFIO| database. + +The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. +If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. + +To start a calculation from scratch, the simplest way is to remove the +``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. + + +.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS +.. _level-shifting: https://doi.org/10.1002/qua.560070407 + + + + + + +Providers +--------- + + +.. c:var:: rs_ks_energy + + .. code:: text + + double precision :: rs_ks_energy + double precision :: two_electron_energy + double precision :: one_electron_energy + double precision :: fock_matrix_energy + double precision :: trace_potential_xc + + File: :file:`rs_ks_energy.irp.f` + + Range-separated Kohn-Sham energy containing the nuclear repulsion energy, and the various components of this quantity. + + diff --git a/docs/source/modules/mo_basis.rst b/docs/source/modules/mo_basis.rst new file mode 100644 index 00000000..440060b7 --- /dev/null +++ b/docs/source/modules/mo_basis.rst @@ -0,0 +1,367 @@ +.. _mo_basis: + +.. program:: mo_basis + +.. default-role:: option + +======== +mo_basis +======== + +Molecular orbitals are expressed as + +.. math:: + + \phi_k({\bf r}) = \sum_i C_{ik} \chi_k({\bf r}) + + +where :math:`\chi_k` are *normalized* atomic basis functions. + +The current set of |MOs| has a label `mo_label`. +When the orbitals are modified, the label should also be updated to keep +everything consistent. + +When saving the |MOs|, the :file:`mo_basis` directory of the |EZFIO| database +is copied in the :file:`save` directory, named by the current `mo_label`. All +this is done with the script named :file:`save_current_mos.sh` in the +:file:`$QP_ROOT/scripts` directory. + + + + + + +EZFIO parameters +---------------- + +.. option:: mo_tot_num + + Total number of |MOs| + + +.. option:: mo_coef + + Coefficient of the i-th |AO| on the j-th |MO| + + +.. option:: mo_label + + Label characterizing the MOS (Local, Canonical, Natural, *etc*) + + +.. option:: mo_occ + + |MO| occupation numbers + + +.. option:: mo_class + + [ Core | Inactive | Active | Virtual | Deleted ], as defined by :ref:`qp_set_mo_class` + + +.. option:: ao_md5 + + MD5 checksum characterizing the |AO| basis set. + + + +Providers +--------- + + +.. c:var:: mo_coef + + .. code:: text + + double precision, allocatable :: mo_coef (ao_num,mo_tot_num) + + File: :file:`mos.irp.f` + + Molecular orbital coefficients on AO basis set mo_coef(i,j) = coefficient of the ith ao on the jth mo mo_label : Label characterizing the MOS (local, canonical, natural, etc) + + + + +.. c:var:: mo_coef_begin_iteration + + .. code:: text + + double precision, allocatable :: mo_coef_begin_iteration (ao_num,mo_tot_num) + + File: :file:`track_orb.irp.f` + + Void provider to store the coefficients of the |MO| basis at the beginning of the SCF iteration + Usefull to track some orbitals + + + + +.. c:var:: mo_coef_in_ao_ortho_basis + + .. code:: text + + double precision, allocatable :: mo_coef_in_ao_ortho_basis (ao_num,mo_tot_num) + + File: :file:`mos.irp.f` + + MO coefficients in orthogonalized AO basis + C^(-1).C_mo + + + + +.. c:var:: mo_coef_transp + + .. code:: text + + double precision, allocatable :: mo_coef_transp (mo_tot_num,ao_num) + + File: :file:`mos.irp.f` + + Molecular orbital coefficients on AO basis set + + + + +.. c:var:: mo_label + + .. code:: text + + character*(64) :: mo_label + + File: :file:`mos.irp.f` + + Molecular orbital coefficients on AO basis set mo_coef(i,j) = coefficient of the ith ao on the jth mo mo_label : Label characterizing the MOS (local, canonical, natural, etc) + + + + +.. c:var:: mo_num + + .. code:: text + + integer :: mo_num + + File: :file:`mos.irp.f` + + mo_tot_num without the highest deleted MOs + + + + +.. c:var:: mo_occ + + .. code:: text + + double precision, allocatable :: mo_occ (mo_tot_num) + + File: :file:`mos.irp.f` + + MO occupation numbers + + + + +.. c:var:: mo_tot_num + + .. code:: text + + integer :: mo_tot_num + + File: :file:`mos.irp.f` + + Number of MOs + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: ao_ortho_cano_to_ao + + .. code:: text + + subroutine ao_ortho_cano_to_ao(A_ao,LDA_ao,A,LDA) + + File: :file:`mos.irp.f` + + Transform A from the AO basis to the orthogonal AO basis + C^(-1).A_ao.Ct^(-1) + + + + + +.. c:function:: ao_to_mo + + .. code:: text + + subroutine ao_to_mo(A_ao,LDA_ao,A_mo,LDA_mo) + + File: :file:`mos.irp.f` + + Transform A from the AO basis to the MO basis + Ct.A_ao.C + + + + + +.. c:function:: give_all_mos_and_grad_and_lapl_at_r + + .. code:: text + + subroutine give_all_mos_and_grad_and_lapl_at_r(r,mos_array,mos_grad_array,mos_lapl_array) + + File: :file:`mos_in_r.irp.f` + + + + + + + +.. c:function:: give_all_mos_and_grad_at_r + + .. code:: text + + subroutine give_all_mos_and_grad_at_r(r,mos_array,mos_grad_array) + + File: :file:`mos_in_r.irp.f` + + + + + + + +.. c:function:: give_all_mos_at_r + + .. code:: text + + subroutine give_all_mos_at_r(r,mos_array) + + File: :file:`mos_in_r.irp.f` + + + + + + + +.. c:function:: initialize_mo_coef_begin_iteration + + .. code:: text + + subroutine initialize_mo_coef_begin_iteration + + File: :file:`track_orb.irp.f` + + + Initialize :c:data:`mo_coef_begin_iteration` to the current :c:data:`mo_coef` + + + + + +.. c:function:: mix_mo_jk + + .. code:: text + + subroutine mix_mo_jk(j,k) + + File: :file:`mos.irp.f` + + Rotates the jth MO with the kth MO to give two new MO's that are + '+' = 1/sqrt(2) (|j> + |k>) + '-' = 1/sqrt(2) (|j> - |k>) + by convention, the '+' MO is in the lower index (min(j,k)) by convention, the '-' MO is in the larger index (max(j,k)) + + + + + +.. c:function:: mo_as_eigvectors_of_mo_matrix + + .. code:: text + + subroutine mo_as_eigvectors_of_mo_matrix(matrix,n,m,label,sign,output) + + File: :file:`utils.irp.f` + + + + + + + +.. c:function:: mo_as_svd_vectors_of_mo_matrix + + .. code:: text + + subroutine mo_as_svd_vectors_of_mo_matrix(matrix,lda,m,n,label) + + File: :file:`utils.irp.f` + + + + + + + +.. c:function:: mo_as_svd_vectors_of_mo_matrix_eig + + .. code:: text + + subroutine mo_as_svd_vectors_of_mo_matrix_eig(matrix,lda,m,n,eig,label) + + File: :file:`utils.irp.f` + + + + + + + +.. c:function:: reorder_active_orb + + .. code:: text + + subroutine reorder_active_orb + + File: :file:`track_orb.irp.f` + + routines that takes the current :c:data:`mo_coef` and reorder the active orbitals (see :c:data:`list_act` and :c:data:`n_act_orb`) according to the overlap with :c:data:`mo_coef_begin_iteration` + + + + + +.. c:function:: save_mos + + .. code:: text + + subroutine save_mos + + File: :file:`utils.irp.f` + + + + + + + +.. c:function:: save_mos_truncated + + .. code:: text + + subroutine save_mos_truncated(n) + + File: :file:`utils.irp.f` + + + + diff --git a/docs/source/modules/mo_guess.rst b/docs/source/modules/mo_guess.rst new file mode 100644 index 00000000..db368467 --- /dev/null +++ b/docs/source/modules/mo_guess.rst @@ -0,0 +1,87 @@ +.. _mo_guess: + +.. program:: mo_guess + +.. default-role:: option + +======== +mo_guess +======== + +Guess for |MOs|. + + + + +Providers +--------- + + +.. c:var:: ao_ortho_canonical_nucl_elec_integral + + .. code:: text + + double precision, allocatable :: ao_ortho_canonical_nucl_elec_integral (mo_tot_num,mo_tot_num) + + File: :file:`pot_mo_ortho_canonical_ints.irp.f` + + + + + + +.. c:var:: ao_ortho_lowdin_coef + + .. code:: text + + double precision, allocatable :: ao_ortho_lowdin_coef (ao_num,ao_num) + + File: :file:`mo_ortho_lowdin.irp.f` + + matrix of the coefficients of the mos generated by the orthonormalization by the S^{-1/2} canonical transformation of the aos ao_ortho_lowdin_coef(i,j) = coefficient of the ith ao on the jth ao_ortho_lowdin orbital + + + + +.. c:var:: ao_ortho_lowdin_nucl_elec_integral + + .. code:: text + + double precision, allocatable :: ao_ortho_lowdin_nucl_elec_integral (mo_tot_num,mo_tot_num) + + File: :file:`pot_mo_ortho_lowdin_ints.irp.f` + + + + + + +.. c:var:: ao_ortho_lowdin_overlap + + .. code:: text + + double precision, allocatable :: ao_ortho_lowdin_overlap (ao_num,ao_num) + + File: :file:`mo_ortho_lowdin.irp.f` + + overlap matrix of the ao_ortho_lowdin supposed to be the Identity + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: hcore_guess + + .. code:: text + + subroutine hcore_guess + + File: :file:`h_core_guess_routine.irp.f` + + Produce `H_core` MO orbital + + diff --git a/docs/source/modules/mo_one_e_integrals.rst b/docs/source/modules/mo_one_e_integrals.rst new file mode 100644 index 00000000..d4e14b41 --- /dev/null +++ b/docs/source/modules/mo_one_e_integrals.rst @@ -0,0 +1,291 @@ +.. _mo_one_e_integrals: + +.. program:: mo_one_e_integrals + +.. default-role:: option + +================== +mo_one_e_integrals +================== + +All the one-electron integrals in |MO| basis are defined here. + +The most important providers for usual quantum-chemistry calculation are: + +# `mo_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`) +# `mo_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`) +# `mo_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`) + +Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`. + + + +EZFIO parameters +---------------- + +.. option:: integral_nuclear + + Nucleus-electron integrals in |MO| basis set + + +.. option:: integral_kinetic + + Kinetic energy integrals in |MO| basis set + + +.. option:: integral_pseudo + + Pseudopotential integrals in |MO| basis set + + +.. option:: disk_access_mo_one_integrals + + Read/Write |MO| one-electron integrals from/to disk [ Write | Read | None ] + + Default: None + + +Providers +--------- + + +.. c:var:: mo_dipole_x + + .. code:: text + + double precision, allocatable :: mo_dipole_x (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_dipole_y (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_dipole_z (mo_tot_num,mo_tot_num) + + File: :file:`spread_dipole_mo.irp.f` + + array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j array of the integrals of MO_i * z MO_j + + + + +.. c:var:: mo_dipole_y + + .. code:: text + + double precision, allocatable :: mo_dipole_x (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_dipole_y (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_dipole_z (mo_tot_num,mo_tot_num) + + File: :file:`spread_dipole_mo.irp.f` + + array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j array of the integrals of MO_i * z MO_j + + + + +.. c:var:: mo_dipole_z + + .. code:: text + + double precision, allocatable :: mo_dipole_x (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_dipole_y (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_dipole_z (mo_tot_num,mo_tot_num) + + File: :file:`spread_dipole_mo.irp.f` + + array of the integrals of MO_i * x MO_j array of the integrals of MO_i * y MO_j array of the integrals of MO_i * z MO_j + + + + +.. c:var:: mo_kinetic_integral + + .. code:: text + + double precision, allocatable :: mo_kinetic_integral (mo_tot_num,mo_tot_num) + + File: :file:`kin_mo_ints.irp.f` + + Kinetic energy integrals in the MO basis + + + + +.. c:var:: mo_mono_elec_integral + + .. code:: text + + double precision, allocatable :: mo_mono_elec_integral (mo_tot_num,mo_tot_num) + + File: :file:`mo_mono_ints.irp.f` + + array of the mono electronic hamiltonian on the MOs basis : sum of the kinetic and nuclear electronic potential (and pseudo potential if needed) + + + + +.. c:var:: mo_nucl_elec_integral + + .. code:: text + + double precision, allocatable :: mo_nucl_elec_integral (mo_tot_num,mo_tot_num) + + File: :file:`pot_mo_ints.irp.f` + + interaction nuclear electron on the MO basis + + + + +.. c:var:: mo_nucl_elec_integral_per_atom + + .. code:: text + + double precision, allocatable :: mo_nucl_elec_integral_per_atom (mo_tot_num,mo_tot_num,nucl_num) + + File: :file:`pot_mo_ints.irp.f` + + mo_nucl_elec_integral_per_atom(i,j,k) = - where Rk is the geometry of the kth atom + + + + +.. c:var:: mo_overlap + + .. code:: text + + double precision, allocatable :: mo_overlap (mo_tot_num,mo_tot_num) + + File: :file:`mo_overlap.irp.f` + + + + + + +.. c:var:: mo_pseudo_integral + + .. code:: text + + double precision, allocatable :: mo_pseudo_integral (mo_tot_num,mo_tot_num) + + File: :file:`pot_mo_pseudo_ints.irp.f` + + interaction nuclear electron on the MO basis + + + + +.. c:var:: mo_spread_x + + .. code:: text + + double precision, allocatable :: mo_spread_x (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_spread_y (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_spread_z (mo_tot_num,mo_tot_num) + + File: :file:`spread_dipole_mo.irp.f` + + array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j + + + + +.. c:var:: mo_spread_y + + .. code:: text + + double precision, allocatable :: mo_spread_x (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_spread_y (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_spread_z (mo_tot_num,mo_tot_num) + + File: :file:`spread_dipole_mo.irp.f` + + array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j + + + + +.. c:var:: mo_spread_z + + .. code:: text + + double precision, allocatable :: mo_spread_x (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_spread_y (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_spread_z (mo_tot_num,mo_tot_num) + + File: :file:`spread_dipole_mo.irp.f` + + array of the integrals of MO_i * x^2 MO_j array of the integrals of MO_i * y^2 MO_j array of the integrals of MO_i * z^2 MO_j + + + + +.. c:var:: read_mo_one_integrals + + .. code:: text + + logical :: read_mo_one_integrals + logical :: write_mo_one_integrals + + File: :file:`read_write.irp.f` + + One level of abstraction for disk_access_mo_integrals + + + + +.. c:var:: s_mo_coef + + .. code:: text + + double precision, allocatable :: s_mo_coef (ao_num,mo_tot_num) + + File: :file:`ao_to_mo.irp.f` + + Product S.C where S is the overlap matrix in the AO basis and C the mo_coef matrix. + + + + +.. c:var:: write_mo_one_integrals + + .. code:: text + + logical :: read_mo_one_integrals + logical :: write_mo_one_integrals + + File: :file:`read_write.irp.f` + + One level of abstraction for disk_access_mo_integrals + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: mo_to_ao + + .. code:: text + + subroutine mo_to_ao(A_mo,LDA_mo,A_ao,LDA_ao) + + File: :file:`ao_to_mo.irp.f` + + Transform A from the MO basis to the AO basis + (S.C).A_mo.(S.C)t + + + + + +.. c:function:: orthonormalize_mos + + .. code:: text + + subroutine orthonormalize_mos + + File: :file:`orthonormalize.irp.f` + + + + diff --git a/docs/source/modules/mo_two_e_erf_integrals.rst b/docs/source/modules/mo_two_e_erf_integrals.rst new file mode 100644 index 00000000..6760ca53 --- /dev/null +++ b/docs/source/modules/mo_two_e_erf_integrals.rst @@ -0,0 +1,510 @@ +.. _mo_two_e_erf_integrals: + +.. program:: mo_two_e_erf_integrals + +.. default-role:: option + +====================== +mo_two_e_erf_integrals +====================== + +Here, all two-electron integrals (:math:`erf({\mu}_{erf} * r_{12})/r_{12}`) are computed. +As they have 4 indices and many are zero, they are stored in a map, as defined +in :file:`Utils/map_module.f90`. + +The range separation parameter :math:`{\mu}_{erf}` is the variable :option:`ao_two_e_erf_integrals mu_erf`. + +To fetch an |MO| integral, use +`get_mo_bielec_integral_erf(i,j,k,l,mo_integrals_map_erf)` + +The conventions are: + +* For |MO| integrals : = <12|12> + +Be aware that it might not be the same conventions for |MO| and |AO| integrals. + + + + + +EZFIO parameters +---------------- + +.. option:: disk_access_mo_integrals_erf + + Read/Write MO integrals with the long range interaction from/to disk [ Write | Read | None ] + + Default: None + + +Providers +--------- + + +.. c:var:: core_energy_erf + + .. code:: text + + double precision :: core_energy_erf + + File: :file:`core_quantities_erf.irp.f` + + energy from the core : contains all core-core contributionswith the erf interaction + + + + +.. c:var:: core_fock_operator_erf + + .. code:: text + + double precision, allocatable :: core_fock_operator_erf (mo_tot_num,mo_tot_num) + + File: :file:`core_quantities_erf.irp.f` + + this is the contribution to the Fock operator from the core electrons with the erf interaction + + + + +.. c:var:: insert_into_mo_integrals_erf_map + + .. code:: text + + subroutine insert_into_mo_integrals_erf_map(n_integrals, & + buffer_i, buffer_values, thr) + + File: :file:`map_integrals_erf.irp.f` + + Create new entry into MO map, or accumulate in an existing entry + + + + +.. c:var:: int_erf_3_index + + .. code:: text + + double precision, allocatable :: int_erf_3_index (mo_tot_num,mo_tot_num,mo_tot_num) + double precision, allocatable :: int_erf_3_index_exc (mo_tot_num,mo_tot_num,mo_tot_num) + + File: :file:`ints_erf_3_index.irp.f` + + int_erf_3_index(i,j) = = (ii|jj) with the erf interaction + int_erf_3_index_exc(i,j) = = (ij|ij) with the erf interaction + + + + +.. c:var:: int_erf_3_index_exc + + .. code:: text + + double precision, allocatable :: int_erf_3_index (mo_tot_num,mo_tot_num,mo_tot_num) + double precision, allocatable :: int_erf_3_index_exc (mo_tot_num,mo_tot_num,mo_tot_num) + + File: :file:`ints_erf_3_index.irp.f` + + int_erf_3_index(i,j) = = (ii|jj) with the erf interaction + int_erf_3_index_exc(i,j) = = (ij|ij) with the erf interaction + + + + +.. c:var:: mo_bielec_integrals_erf_in_map + + .. code:: text + + logical :: mo_bielec_integrals_erf_in_map + + File: :file:`mo_bi_integrals_erf.irp.f` + + If True, the map of MO bielectronic integrals is provided + + + + +.. c:var:: mo_integrals_erf_cache + + .. code:: text + + double precision, allocatable :: mo_integrals_erf_cache (0:64*64*64*64) + + File: :file:`map_integrals_erf.irp.f` + + Cache of MO integrals for fast access + + + + +.. c:var:: mo_integrals_erf_cache_max + + .. code:: text + + integer :: mo_integrals_erf_cache_min + integer :: mo_integrals_erf_cache_max + + File: :file:`map_integrals_erf.irp.f` + + Min and max values of the MOs for which the integrals are in the cache + + + + +.. c:var:: mo_integrals_erf_cache_min + + .. code:: text + + integer :: mo_integrals_erf_cache_min + integer :: mo_integrals_erf_cache_max + + File: :file:`map_integrals_erf.irp.f` + + Min and max values of the MOs for which the integrals are in the cache + + + + +.. c:var:: mo_integrals_erf_map + + .. code:: text + + type(map_type) :: mo_integrals_erf_map + + File: :file:`map_integrals_erf.irp.f` + + MO integrals + + + + +.. c:var:: mo_two_e_int_erf_jj + + .. code:: text + + double precision, allocatable :: mo_two_e_int_erf_jj (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals_erf.irp.f` + + mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij + + + + +.. c:var:: mo_two_e_int_erf_jj_anti + + .. code:: text + + double precision, allocatable :: mo_two_e_int_erf_jj (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals_erf.irp.f` + + mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij + + + + +.. c:var:: mo_two_e_int_erf_jj_anti_from_ao + + .. code:: text + + double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals_erf.irp.f` + + mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij + + + + +.. c:var:: mo_two_e_int_erf_jj_exchange + + .. code:: text + + double precision, allocatable :: mo_two_e_int_erf_jj (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals_erf.irp.f` + + mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij + + + + +.. c:var:: mo_two_e_int_erf_jj_exchange_from_ao + + .. code:: text + + double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals_erf.irp.f` + + mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij + + + + +.. c:var:: mo_two_e_int_erf_jj_from_ao + + .. code:: text + + double precision, allocatable :: mo_two_e_int_erf_jj_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_two_e_int_erf_jj_exchange_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_two_e_int_erf_jj_anti_from_ao (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals_erf.irp.f` + + mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij + + + + +.. c:var:: read_mo_integrals_erf + + .. code:: text + + logical :: read_mo_integrals_erf + logical :: write_mo_integrals_erf + + File: :file:`read_write_erf.irp.f` + + Flag to read or write the |MO| erf integrals + + + + +.. c:var:: write_mo_integrals_erf + + .. code:: text + + logical :: read_mo_integrals_erf + logical :: write_mo_integrals_erf + + File: :file:`read_write_erf.irp.f` + + Flag to read or write the |MO| erf integrals + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: add_integrals_to_map_erf + + .. code:: text + + subroutine add_integrals_to_map_erf(mask_ijkl) + + File: :file:`mo_bi_integrals_erf.irp.f` + + Adds integrals to tha MO map according to some bitmask + + + + + +.. c:function:: clear_mo_erf_map + + .. code:: text + + subroutine clear_mo_erf_map + + File: :file:`mo_bi_integrals_erf.irp.f` + + Frees the memory of the MO map + + + + + +.. c:function:: get_mo_bielec_integral_erf + + .. code:: text + + double precision function get_mo_bielec_integral_erf(i,j,k,l,map) + + File: :file:`map_integrals_erf.irp.f` + + Returns one integral in the MO basis + + + + + +.. c:function:: get_mo_bielec_integrals_erf + + .. code:: text + + subroutine get_mo_bielec_integrals_erf(j,k,l,sze,out_val,map) + + File: :file:`map_integrals_erf.irp.f` + + Returns multiple integrals in the MO basis, all i for j,k,l fixed. + + + + + +.. c:function:: get_mo_bielec_integrals_erf_coulomb_ii + + .. code:: text + + subroutine get_mo_bielec_integrals_erf_coulomb_ii(k,l,sze,out_val,map) + + File: :file:`map_integrals_erf.irp.f` + + Returns multiple integrals k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) for k,l fixed. + + + + + +.. c:function:: get_mo_bielec_integrals_erf_exch_ii + + .. code:: text + + subroutine get_mo_bielec_integrals_erf_exch_ii(k,l,sze,out_val,map) + + File: :file:`map_integrals_erf.irp.f` + + Returns multiple integrals k(1)i(2) 1/r12 i(1)l(2) :: out_val(i1) for k,l fixed. + + + + + +.. c:function:: get_mo_bielec_integrals_erf_i1j1 + + .. code:: text + + subroutine get_mo_bielec_integrals_erf_i1j1(k,l,sze,out_array,map) + + File: :file:`map_integrals_erf.irp.f` + + Returns multiple integrals in the MO basis, all i(1)j(1) erf(mu_erf * r12) /r12 k(2)l(2) i, j for k,l fixed. + + + + + +.. c:function:: get_mo_bielec_integrals_erf_ij + + .. code:: text + + subroutine get_mo_bielec_integrals_erf_ij(k,l,sze,out_array,map) + + File: :file:`map_integrals_erf.irp.f` + + Returns multiple integrals in the MO basis, all i(1)j(2) 1/r12 k(1)l(2) i, j for k,l fixed. + + + + + +.. c:function:: get_mo_erf_map_size + + .. code:: text + + integer*8 function get_mo_erf_map_size() + + File: :file:`map_integrals_erf.irp.f` + + Return the number of elements in the MO map + + + + + +.. c:function:: load_mo_integrals_erf + + .. code:: text + + integer function load_mo_integrals_erf(filename) + + File: :file:`map_integrals_erf.irp.f` + + Read from disk the $ao integrals + + + + + +.. c:function:: mo_bielec_integral_erf + + .. code:: text + + double precision function mo_bielec_integral_erf(i,j,k,l) + + File: :file:`map_integrals_erf.irp.f` + + Returns one integral in the MO basis + + + + + +.. c:function:: mo_bielec_integrals_erf_index + + .. code:: text + + subroutine mo_bielec_integrals_erf_index(i,j,k,l,i1) + + File: :file:`mo_bi_integrals_erf.irp.f` + + Computes an unique index for i,j,k,l integrals + + + + + +.. c:function:: provide_all_mo_integrals_erf + + .. code:: text + + subroutine provide_all_mo_integrals_erf + + File: :file:`mo_bi_integrals_erf.irp.f` + + + + + + + +.. c:function:: save_erf_bi_elec_integrals_mo + + .. code:: text + + subroutine save_erf_bi_elec_integrals_mo + + File: :file:`routines_save_integrals_erf.irp.f` + + + + + + + +.. c:function:: save_erf_bielec_ints_mo_into_ints_mo + + .. code:: text + + subroutine save_erf_bielec_ints_mo_into_ints_mo + + File: :file:`routines_save_integrals_erf.irp.f` + + + + diff --git a/docs/source/modules/mo_two_e_integrals.rst b/docs/source/modules/mo_two_e_integrals.rst new file mode 100644 index 00000000..5d159068 --- /dev/null +++ b/docs/source/modules/mo_two_e_integrals.rst @@ -0,0 +1,616 @@ +.. _mo_two_e_integrals: + +.. program:: mo_two_e_integrals + +.. default-role:: option + +================== +mo_two_e_integrals +================== + +Here, all two-electron integrals (:math:`1/r_{12}`) are computed. +As they have 4 indices and many are zero, they are stored in a map, as defined +in :file:`Utils/map_module.f90`. + +To fetch an |AO| integral, use the +`get_ao_bielec_integral(i,j,k,l,ao_integrals_map)` function, and +to fetch an |MO| integral, use +`get_mo_bielec_integral(i,j,k,l,mo_integrals_map)` or +`mo_bielec_integral(i,j,k,l)`. + +The conventions are: + +* For |AO| integrals : (ik|jl) = (11|22) +* For |MO| integrals : = <12|12> + + + + + + +EZFIO parameters +---------------- + +.. option:: disk_access_mo_integrals + + Read/Write |MO| integrals from/to disk [ Write | Read | None ] + + Default: None + +.. option:: mo_integrals_threshold + + If | | < `mo_integrals_threshold` then is zero + + Default: 1.e-15 + +.. option:: no_vvvv_integrals + + If `True`, computes all integrals except for the integrals having 4 virtual indices + + Default: False + +.. option:: no_ivvv_integrals + + Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual indices and 1 belonging to the core inactive active orbitals + + Default: False + +.. option:: no_vvv_integrals + + Can be switched on only if `no_vvvv_integrals` is `True`, then does not compute the integrals with 3 virtual orbitals + + Default: False + + +Providers +--------- + + +.. c:var:: big_array_coulomb_integrals + + .. code:: text + + double precision, allocatable :: big_array_coulomb_integrals (mo_tot_num,mo_tot_num,mo_tot_num) + double precision, allocatable :: big_array_exchange_integrals (mo_tot_num,mo_tot_num,mo_tot_num) + + File: :file:`integrals_3_index.irp.f` + + big_array_coulomb_integrals(i,j) = = (ii|jj) + big_array_exchange_integrals(i,j) = = (ij|ij) + + + + +.. c:var:: big_array_exchange_integrals + + .. code:: text + + double precision, allocatable :: big_array_coulomb_integrals (mo_tot_num,mo_tot_num,mo_tot_num) + double precision, allocatable :: big_array_exchange_integrals (mo_tot_num,mo_tot_num,mo_tot_num) + + File: :file:`integrals_3_index.irp.f` + + big_array_coulomb_integrals(i,j) = = (ii|jj) + big_array_exchange_integrals(i,j) = = (ij|ij) + + + + +.. c:var:: core_energy + + .. code:: text + + double precision :: core_energy + + File: :file:`core_quantities.irp.f` + + energy from the core : contains all core-core contributions + + + + +.. c:var:: core_fock_operator + + .. code:: text + + double precision, allocatable :: core_fock_operator (mo_tot_num,mo_tot_num) + + File: :file:`core_quantities.irp.f` + + this is the contribution to the Fock operator from the core electrons + + + + +.. c:var:: insert_into_mo_integrals_map + + .. code:: text + + subroutine insert_into_mo_integrals_map(n_integrals, & + buffer_i, buffer_values, thr) + + File: :file:`map_integrals.irp.f` + + Create new entry into MO map, or accumulate in an existing entry + + + + +.. c:var:: mo_bielec_integral_jj + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_jj (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_jj_exchange (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_jj_anti (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals.irp.f` + + mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij + + + + +.. c:var:: mo_bielec_integral_jj_anti + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_jj (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_jj_exchange (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_jj_anti (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals.irp.f` + + mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij + + + + +.. c:var:: mo_bielec_integral_jj_anti_from_ao + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_jj_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_jj_exchange_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_jj_anti_from_ao (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals.irp.f` + + mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij + + + + +.. c:var:: mo_bielec_integral_jj_exchange + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_jj (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_jj_exchange (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_jj_anti (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals.irp.f` + + mo_bielec_integral_jj(i,j) = J_ij mo_bielec_integral_jj_exchange(i,j) = K_ij mo_bielec_integral_jj_anti(i,j) = J_ij - K_ij + + + + +.. c:var:: mo_bielec_integral_jj_exchange_from_ao + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_jj_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_jj_exchange_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_jj_anti_from_ao (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals.irp.f` + + mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij + + + + +.. c:var:: mo_bielec_integral_jj_from_ao + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_jj_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_jj_exchange_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_jj_anti_from_ao (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals.irp.f` + + mo_bielec_integral_jj_from_ao(i,j) = J_ij mo_bielec_integral_jj_exchange_from_ao(i,j) = J_ij mo_bielec_integral_jj_anti_from_ao(i,j) = J_ij - K_ij + + + + +.. c:var:: mo_bielec_integral_vv_anti_from_ao + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_vv_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_vv_exchange_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_vv_anti_from_ao (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals.irp.f` + + mo_bielec_integral_vv_from_ao(i,j) = J_ij mo_bielec_integral_vv_exchange_from_ao(i,j) = J_ij mo_bielec_integral_vv_anti_from_ao(i,j) = J_ij - K_ij but only for the virtual orbitals + + + + +.. c:var:: mo_bielec_integral_vv_exchange_from_ao + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_vv_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_vv_exchange_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_vv_anti_from_ao (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals.irp.f` + + mo_bielec_integral_vv_from_ao(i,j) = J_ij mo_bielec_integral_vv_exchange_from_ao(i,j) = J_ij mo_bielec_integral_vv_anti_from_ao(i,j) = J_ij - K_ij but only for the virtual orbitals + + + + +.. c:var:: mo_bielec_integral_vv_from_ao + + .. code:: text + + double precision, allocatable :: mo_bielec_integral_vv_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_vv_exchange_from_ao (mo_tot_num,mo_tot_num) + double precision, allocatable :: mo_bielec_integral_vv_anti_from_ao (mo_tot_num,mo_tot_num) + + File: :file:`mo_bi_integrals.irp.f` + + mo_bielec_integral_vv_from_ao(i,j) = J_ij mo_bielec_integral_vv_exchange_from_ao(i,j) = J_ij mo_bielec_integral_vv_anti_from_ao(i,j) = J_ij - K_ij but only for the virtual orbitals + + + + +.. c:var:: mo_bielec_integrals_in_map + + .. code:: text + + logical :: mo_bielec_integrals_in_map + + File: :file:`mo_bi_integrals.irp.f` + + If True, the map of MO bielectronic integrals is provided + + + + +.. c:var:: mo_integrals_cache + + .. code:: text + + double precision, allocatable :: mo_integrals_cache (0_8:128_8*128_8*128_8*128_8) + + File: :file:`map_integrals.irp.f` + + Cache of MO integrals for fast access + + + + +.. c:var:: mo_integrals_cache_max + + .. code:: text + + integer*4 :: mo_integrals_cache_min + integer*4 :: mo_integrals_cache_max + integer*8 :: mo_integrals_cache_min_8 + integer*8 :: mo_integrals_cache_max_8 + + File: :file:`map_integrals.irp.f` + + Min and max values of the MOs for which the integrals are in the cache + + + + +.. c:var:: mo_integrals_cache_max_8 + + .. code:: text + + integer*4 :: mo_integrals_cache_min + integer*4 :: mo_integrals_cache_max + integer*8 :: mo_integrals_cache_min_8 + integer*8 :: mo_integrals_cache_max_8 + + File: :file:`map_integrals.irp.f` + + Min and max values of the MOs for which the integrals are in the cache + + + + +.. c:var:: mo_integrals_cache_min + + .. code:: text + + integer*4 :: mo_integrals_cache_min + integer*4 :: mo_integrals_cache_max + integer*8 :: mo_integrals_cache_min_8 + integer*8 :: mo_integrals_cache_max_8 + + File: :file:`map_integrals.irp.f` + + Min and max values of the MOs for which the integrals are in the cache + + + + +.. c:var:: mo_integrals_cache_min_8 + + .. code:: text + + integer*4 :: mo_integrals_cache_min + integer*4 :: mo_integrals_cache_max + integer*8 :: mo_integrals_cache_min_8 + integer*8 :: mo_integrals_cache_max_8 + + File: :file:`map_integrals.irp.f` + + Min and max values of the MOs for which the integrals are in the cache + + + + +.. c:var:: mo_integrals_map + + .. code:: text + + type(map_type) :: mo_integrals_map + + File: :file:`map_integrals.irp.f` + + MO integrals + + + + +.. c:var:: read_mo_integrals + + .. code:: text + + logical :: read_mo_integrals + logical :: write_mo_integrals + + File: :file:`read_write.irp.f` + + Flag to read or write the |MO| integrals + + + + +.. c:var:: write_mo_integrals + + .. code:: text + + logical :: read_mo_integrals + logical :: write_mo_integrals + + File: :file:`read_write.irp.f` + + Flag to read or write the |MO| integrals + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: add_integrals_to_map + + .. code:: text + + subroutine add_integrals_to_map(mask_ijkl) + + File: :file:`mo_bi_integrals.irp.f` + + Adds integrals to tha MO map according to some bitmask + + + + + +.. c:function:: add_integrals_to_map_no_exit_34 + + .. code:: text + + subroutine add_integrals_to_map_no_exit_34(mask_ijkl) + + File: :file:`mo_bi_integrals.irp.f` + + Adds integrals to tha MO map according to some bitmask + + + + + +.. c:function:: add_integrals_to_map_three_indices + + .. code:: text + + subroutine add_integrals_to_map_three_indices(mask_ijk) + + File: :file:`mo_bi_integrals.irp.f` + + Adds integrals to tha MO map according to some bitmask + + + + + +.. c:function:: clear_mo_map + + .. code:: text + + subroutine clear_mo_map + + File: :file:`mo_bi_integrals.irp.f` + + Frees the memory of the MO map + + + + + +.. c:function:: dump_mo_integrals + + .. code:: text + + subroutine dump_mo_integrals(filename) + + File: :file:`map_integrals.irp.f` + + Save to disk the |MO| integrals + + + + + +.. c:function:: get_mo_bielec_integral + + .. code:: text + + double precision function get_mo_bielec_integral(i,j,k,l,map) + + File: :file:`map_integrals.irp.f` + + Returns one integral in the MO basis + + + + + +.. c:function:: get_mo_bielec_integrals + + .. code:: text + + subroutine get_mo_bielec_integrals(j,k,l,sze,out_val,map) + + File: :file:`map_integrals.irp.f` + + Returns multiple integrals in the MO basis, all i for j,k,l fixed. + + + + + +.. c:function:: get_mo_bielec_integrals_coulomb_ii + + .. code:: text + + subroutine get_mo_bielec_integrals_coulomb_ii(k,l,sze,out_val,map) + + File: :file:`map_integrals.irp.f` + + Returns multiple integrals k(1)i(2) 1/r12 l(1)i(2) :: out_val(i1) for k,l fixed. + + + + + +.. c:function:: get_mo_bielec_integrals_exch_ii + + .. code:: text + + subroutine get_mo_bielec_integrals_exch_ii(k,l,sze,out_val,map) + + File: :file:`map_integrals.irp.f` + + Returns multiple integrals k(1)i(2) 1/r12 i(1)l(2) :: out_val(i1) for k,l fixed. + + + + + +.. c:function:: get_mo_bielec_integrals_i1j1 + + .. code:: text + + subroutine get_mo_bielec_integrals_i1j1(k,l,sze,out_array,map) + + File: :file:`map_integrals.irp.f` + + Returns multiple integrals in the MO basis, all i(1)j(1) 1/r12 k(2)l(2) i, j for k,l fixed. + + + + + +.. c:function:: get_mo_bielec_integrals_ij + + .. code:: text + + subroutine get_mo_bielec_integrals_ij(k,l,sze,out_array,map) + + File: :file:`map_integrals.irp.f` + + Returns multiple integrals in the MO basis, all i(1)j(2) 1/r12 k(1)l(2) i, j for k,l fixed. + + + + + +.. c:function:: get_mo_map_size + + .. code:: text + + integer*8 function get_mo_map_size() + + File: :file:`map_integrals.irp.f` + + Return the number of elements in the MO map + + + + + +.. c:function:: load_mo_integrals + + .. code:: text + + integer function load_mo_integrals(filename) + + File: :file:`map_integrals.irp.f` + + Read from disk the |MO| integrals + + + + + +.. c:function:: mo_bielec_integral + + .. code:: text + + double precision function mo_bielec_integral(i,j,k,l) + + File: :file:`map_integrals.irp.f` + + Returns one integral in the MO basis + + + + + +.. c:function:: mo_bielec_integrals_index + + .. code:: text + + subroutine mo_bielec_integrals_index(i,j,k,l,i1) + + File: :file:`mo_bi_integrals.irp.f` + + Computes an unique index for i,j,k,l integrals + + diff --git a/docs/source/modules/mpi.rst b/docs/source/modules/mpi.rst new file mode 100644 index 00000000..d8c7290f --- /dev/null +++ b/docs/source/modules/mpi.rst @@ -0,0 +1,130 @@ +.. _mpi: + +.. program:: mpi + +.. default-role:: option + +=== +mpi +=== + +Contains all the functions and providers for parallelization with |MPI|. + + + +Providers +--------- + + +.. c:var:: mpi_initialized + + .. code:: text + + logical :: mpi_initialized + + File: :file:`mpi.irp.f` + + Always true. Initialized MPI + + + + +.. c:var:: mpi_master + + .. code:: text + + logical :: mpi_master + + File: :file:`mpi.irp.f` + + If true, rank is zero + + + + +.. c:var:: mpi_rank + + .. code:: text + + integer :: mpi_rank + integer :: mpi_size + + File: :file:`mpi.irp.f` + + Rank of MPI process and number of MPI processes + + + + +.. c:var:: mpi_size + + .. code:: text + + integer :: mpi_rank + integer :: mpi_size + + File: :file:`mpi.irp.f` + + Rank of MPI process and number of MPI processes + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: broadcast_chunks_double + + .. code:: text + + subroutine broadcast_chunks_double(A, LDA) + + File: :file:`mpi.irp.f_template_97` + + Broadcast with chunks of ~2GB + + + + + +.. c:function:: broadcast_chunks_integer + + .. code:: text + + subroutine broadcast_chunks_integer(A, LDA) + + File: :file:`mpi.irp.f_template_97` + + Broadcast with chunks of ~2GB + + + + + +.. c:function:: broadcast_chunks_integer8 + + .. code:: text + + subroutine broadcast_chunks_integer8(A, LDA) + + File: :file:`mpi.irp.f_template_97` + + Broadcast with chunks of ~2GB + + + + + +.. c:function:: mpi_print + + .. code:: text + + subroutine mpi_print(string) + + File: :file:`mpi.irp.f` + + Print string to stdout if the MPI rank is zero. + + diff --git a/docs/source/modules/nuclei.rst b/docs/source/modules/nuclei.rst new file mode 100644 index 00000000..7f6a89ff --- /dev/null +++ b/docs/source/modules/nuclei.rst @@ -0,0 +1,351 @@ +.. _nuclei: + +.. program:: nuclei + +.. default-role:: option + +====== +nuclei +====== + +This module contains data relative to the nuclei (coordinates, charge, +nuclear repulsion energy, etc). +The coordinates are expressed in atomic units. + + + + +EZFIO parameters +---------------- + +.. option:: nucl_num + + Number of nuclei + + +.. option:: nucl_label + + Nuclear labels + + +.. option:: nucl_charge + + Nuclear charges + + +.. option:: nucl_coord + + Nuclear coordinates in the format (:, {x,y,z}) + + +.. option:: disk_access_nuclear_repulsion + + Read/Write Nuclear Repulsion from/to disk [ Write | Read | None ] + + Default: None + +.. option:: nuclear_repulsion + + Nuclear repulsion (Computed automaticaly or Read in the |EZFIO|) + + + +Providers +--------- + + +.. c:var:: center_of_mass + + .. code:: text + + double precision, allocatable :: center_of_mass (3) + + File: :file:`nuclei.irp.f` + + Center of mass of the molecule + + + + +.. c:var:: element_mass + + .. code:: text + + character*(4), allocatable :: element_name (0:127) + double precision, allocatable :: element_mass (0:127) + + File: :file:`nuclei.irp.f` + + Array of the name of element, sorted by nuclear charge (integer) + + + + +.. c:var:: element_name + + .. code:: text + + character*(4), allocatable :: element_name (0:127) + double precision, allocatable :: element_mass (0:127) + + File: :file:`nuclei.irp.f` + + Array of the name of element, sorted by nuclear charge (integer) + + + + +.. c:var:: inertia_tensor + + .. code:: text + + double precision, allocatable :: inertia_tensor (3,3) + + File: :file:`inertia.irp.f` + + Inertia tensor + + + + +.. c:var:: inertia_tensor_eigenvalues + + .. code:: text + + double precision, allocatable :: inertia_tensor_eigenvectors (3,3) + double precision, allocatable :: inertia_tensor_eigenvalues (3) + + File: :file:`inertia.irp.f` + + Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation. + + + + +.. c:var:: inertia_tensor_eigenvectors + + .. code:: text + + double precision, allocatable :: inertia_tensor_eigenvectors (3,3) + double precision, allocatable :: inertia_tensor_eigenvalues (3) + + File: :file:`inertia.irp.f` + + Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation. + + + + +.. c:var:: nucl_coord + + .. code:: text + + double precision, allocatable :: nucl_coord (nucl_num,3) + + File: :file:`nuclei.irp.f` + + Nuclear coordinates in the format (:, {x,y,z}) + + + + +.. c:var:: nucl_coord_transp + + .. code:: text + + double precision, allocatable :: nucl_coord_transp (3,nucl_num) + + File: :file:`nuclei.irp.f` + + Transposed array of nucl_coord + + + + +.. c:var:: nucl_dist + + .. code:: text + + double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist (nucl_num,nucl_num) + + File: :file:`nuclei.irp.f` + + nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors + + + + +.. c:var:: nucl_dist_2 + + .. code:: text + + double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist (nucl_num,nucl_num) + + File: :file:`nuclei.irp.f` + + nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors + + + + +.. c:var:: nucl_dist_inv + + .. code:: text + + double precision, allocatable :: nucl_dist_inv (nucl_num,nucl_num) + + File: :file:`nuclei.irp.f` + + Inverse of the distance between nucleus I and nucleus J + + + + +.. c:var:: nucl_dist_vec_x + + .. code:: text + + double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist (nucl_num,nucl_num) + + File: :file:`nuclei.irp.f` + + nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors + + + + +.. c:var:: nucl_dist_vec_y + + .. code:: text + + double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist (nucl_num,nucl_num) + + File: :file:`nuclei.irp.f` + + nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors + + + + +.. c:var:: nucl_dist_vec_z + + .. code:: text + + double precision, allocatable :: nucl_dist_2 (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_x (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_y (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist_vec_z (nucl_num,nucl_num) + double precision, allocatable :: nucl_dist (nucl_num,nucl_num) + + File: :file:`nuclei.irp.f` + + nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors + + + + +.. c:var:: nuclear_repulsion + + .. code:: text + + double precision :: nuclear_repulsion + + File: :file:`nuclei.irp.f` + + Nuclear repulsion energy + + + + +.. c:var:: slater_bragg_radii + + .. code:: text + + double precision, allocatable :: slater_bragg_radii (100) + + File: :file:`atomic_radii.irp.f` + + atomic radii in Angstrom defined in table I of JCP 41, 3199 (1964) Slater execpt for the Hydrogen atom where we took the value of Becke (1988, JCP) + + + + +.. c:var:: slater_bragg_radii_per_atom + + .. code:: text + + double precision, allocatable :: slater_bragg_radii_per_atom (nucl_num) + + File: :file:`atomic_radii.irp.f` + + + + + + +.. c:var:: slater_bragg_radii_per_atom_ua + + .. code:: text + + double precision, allocatable :: slater_bragg_radii_per_atom_ua (nucl_num) + + File: :file:`atomic_radii.irp.f` + + + + + + +.. c:var:: slater_bragg_radii_ua + + .. code:: text + + double precision, allocatable :: slater_bragg_radii_ua (100) + + File: :file:`atomic_radii.irp.f` + + + + + + +.. c:var:: slater_bragg_type_inter_distance + + .. code:: text + + double precision, allocatable :: slater_bragg_type_inter_distance (nucl_num,nucl_num) + + File: :file:`atomic_radii.irp.f` + + + + + + +.. c:var:: slater_bragg_type_inter_distance_ua + + .. code:: text + + double precision, allocatable :: slater_bragg_type_inter_distance_ua (nucl_num,nucl_num) + + File: :file:`atomic_radii.irp.f` + + + + diff --git a/docs/source/modules/perturbation.rst b/docs/source/modules/perturbation.rst new file mode 100644 index 00000000..09bcc0e8 --- /dev/null +++ b/docs/source/modules/perturbation.rst @@ -0,0 +1,650 @@ +.. _perturbation: + +.. program:: perturbation + +.. default-role:: option + +============ +perturbation +============ + + +All subroutines in ``*.irp.f`` starting with `pt2_` in the current directory are +perturbation computed using the routine `i_H_psi`. Other cases are not allowed. +The arguments of the `pt2_` are always: + +.. code-block:: fortran + + subroutine pt2_...( & + psi_ref, & + psi_ref_coefs, & + E_refs, & + det_pert, & + c_pert, & + e_2_pert, & + H_pert_diag, & + Nint, & + Ndet, & + N_st ) + + + integer , intent(in) :: Nint,Ndet,N_st + integer(bit_kind), intent(in) :: psi_ref(Nint,2,Ndet) + double precision , intent(in) :: psi_ref_coefs(Ndet,N_st) + double precision , intent(in) :: E_refs(N_st) + integer(bit_kind), intent(in) :: det_pert(Nint,2) + double precision , intent(out) :: c_pert(N_st),e_2_pert(N_st),H_pert_diag + + +`psi_ref` + bitstring of the determinants present in the various `N_st` states + +`psi_ref_coefs` + coefficients of the determinants on the various `N_st` states + +`E_refs` + Energy of the various `N_st` states + +`det_pert` + Perturber determinant + +`c_pert` + Perturbative coefficients for the various states + +`e_2_pert` + Perturbative energetic contribution for the various states + +`H_pert_diag` + Diagonal |H| matrix element of the perturber + +`Nint` + Should be equal to `N_int` + +`Ndet` + Number of determinants `i` in |Psi| on which we apply + +`N_st` + Number of states + + + + + + +EZFIO parameters +---------------- + +.. option:: do_pt2 + + If `True`, compute the |PT2| contribution + + Default: True + +.. option:: pt2_max + + The selection process stops when the largest |PT2| (for all the state) is lower + + than `pt2_max` in absolute value + + Default: 0.0001 + +.. option:: pt2_relative_error + + Stop stochastic |PT2| when the relative error is smaller than `PT2_relative_error` + + Default: 0.005 + +.. option:: correlation_energy_ratio_max + + The selection process stops at a fixed correlation ratio (useful for getting same accuracy between molecules). + + Defined as :math:`{E_{CI}-E_{HF}}/{E_{CI}+E_{PT2} - E_{HF}}`. + + Default: 1.00 + +.. option:: h0_type + + Type of zeroth-order Hamiltonian [ EN | Barycentric | Variance | SOP ] + + Default: EN + + +Providers +--------- + + +.. c:var:: fill_h_apply_buffer_selection + + .. code:: text + + subroutine fill_H_apply_buffer_selection(n_selected,det_buffer,e_2_pert_buffer,coef_pert_buffer, & + N_st,Nint,iproc,select_max_out) + + File: :file:`selection.irp.f` + + Fill the H_apply buffer with determiants for the selection + + + + +.. c:var:: max_exc_pert + + .. code:: text + + integer :: max_exc_pert + + File: :file:`exc_max.irp.f` + + + + + + +.. c:var:: selection_criterion + + .. code:: text + + double precision :: selection_criterion + double precision :: selection_criterion_min + double precision :: selection_criterion_factor + + File: :file:`selection.irp.f` + + Threshold to select determinants. Set by selection routines. + + + + +.. c:var:: selection_criterion_factor + + .. code:: text + + double precision :: selection_criterion + double precision :: selection_criterion_min + double precision :: selection_criterion_factor + + File: :file:`selection.irp.f` + + Threshold to select determinants. Set by selection routines. + + + + +.. c:var:: selection_criterion_min + + .. code:: text + + double precision :: selection_criterion + double precision :: selection_criterion_min + double precision :: selection_criterion_factor + + File: :file:`selection.irp.f` + + Threshold to select determinants. Set by selection routines. + + + + +.. c:var:: var_pt2_ratio + + .. code:: text + + double precision :: var_pt2_ratio + + File: :file:`var_pt2_ratio_provider.irp.f` + + The selection process stops when the energy ratio variational/(variational+PT2) is equal to var_pt2_ratio + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: i_h_psi_pert_new_minilist + + .. code:: text + + subroutine i_H_psi_pert_new_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array,coef_pert) + + File: :file:`pt2_new.irp.f` + + Computes = \sum_J c_J . + Uses filter_connected_i_H_psi0 to get all the |J> to which |i> is connected. The |J> are searched in short pre-computed lists. + + + + + +.. c:function:: perturb_buffer_by_mono_decontracted + + .. code:: text + + subroutine perturb_buffer_by_mono_decontracted(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``decontracted`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_by_mono_dummy + + .. code:: text + + subroutine perturb_buffer_by_mono_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_by_mono_epstein_nesbet + + .. code:: text + + subroutine perturb_buffer_by_mono_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2 + + .. code:: text + + subroutine perturb_buffer_by_mono_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag + + .. code:: text + + subroutine perturb_buffer_by_mono_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_by_mono_h_core + + .. code:: text + + subroutine perturb_buffer_by_mono_h_core(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``h_core`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_by_mono_moller_plesset + + .. code:: text + + subroutine perturb_buffer_by_mono_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_by_mono_moller_plesset_general + + .. code:: text + + subroutine perturb_buffer_by_mono_moller_plesset_general(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``moller_plesset_general`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_by_mono_qdpt + + .. code:: text + + subroutine perturb_buffer_by_mono_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_decontracted + + .. code:: text + + subroutine perturb_buffer_decontracted(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``decontracted`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_dummy + + .. code:: text + + subroutine perturb_buffer_dummy(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``dummy`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_epstein_nesbet + + .. code:: text + + subroutine perturb_buffer_epstein_nesbet(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``epstein_nesbet`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_epstein_nesbet_2x2 + + .. code:: text + + subroutine perturb_buffer_epstein_nesbet_2x2(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``epstein_nesbet_2x2`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_epstein_nesbet_2x2_no_ci_diag + + .. code:: text + + subroutine perturb_buffer_epstein_nesbet_2x2_no_ci_diag(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``epstein_nesbet_2x2_no_ci_diag`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_h_core + + .. code:: text + + subroutine perturb_buffer_h_core(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``h_core`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_moller_plesset + + .. code:: text + + subroutine perturb_buffer_moller_plesset(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``moller_plesset`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_moller_plesset_general + + .. code:: text + + subroutine perturb_buffer_moller_plesset_general(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``moller_plesset_general`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: perturb_buffer_qdpt + + .. code:: text + + subroutine perturb_buffer_qdpt(i_generator,buffer,buffer_size,e_2_pert_buffer,coef_pert_buffer,sum_e_2_pert,sum_norm_pert,sum_H_pert_diag,N_st,Nint,key_mask,fock_diag_tmp,electronic_energy) + + File: :file:`perturbation.irp.f_shell_13` + + Applly pertubration ``qdpt`` to the buffer of determinants generated in the H_apply routine. + + + + + +.. c:function:: pt2_decontracted + + .. code:: text + + subroutine pt2_decontracted (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + File: :file:`pt2_equations.irp.f_template_412` + + + + + + + +.. c:function:: pt2_dummy + + .. code:: text + + subroutine pt2_dummy (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + File: :file:`pt2_equations.irp.f_template_412` + + Dummy perturbation to add all connected determinants. + + + + + +.. c:function:: pt2_epstein_nesbet + + .. code:: text + + subroutine pt2_epstein_nesbet (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + File: :file:`pt2_equations.irp.f_template_412` + + compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution + for the various N_st states. + c_pert(i) = /( E(i) - ) + e_2_pert(i) = ^2/( E(i) - ) + + + + + + +.. c:function:: pt2_epstein_nesbet_2x2 + + .. code:: text + + subroutine pt2_epstein_nesbet_2x2 (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + File: :file:`pt2_equations.irp.f_template_412` + + compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution + for the various N_st states. + e_2_pert(i) = 0.5 * (( - E(i) ) - sqrt( ( - E(i)) ^2 + 4 ^2 ) + c_pert(i) = e_2_pert(i)/ + + + + + + +.. c:function:: pt2_epstein_nesbet_2x2_no_ci_diag + + .. code:: text + + subroutine pt2_epstein_nesbet_2x2_no_ci_diag(electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + File: :file:`pt2_equations.irp.f_template_412` + + compute the Epstein-Nesbet 2x2 diagonalization coefficient and energetic contribution + for the various N_st states. + e_2_pert(i) = 0.5 * (( - E(i) ) - sqrt( ( - E(i)) ^2 + 4 ^2 ) + c_pert(i) = e_2_pert(i)/ + + + + + + +.. c:function:: pt2_h_core + + .. code:: text + + subroutine pt2_h_core(det_pert,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + File: :file:`pert_single.irp.f` + + compute the standard Epstein-Nesbet perturbative first order coefficient and second order energetic contribution + for the various N_st states. + c_pert(i) = /( E(i) - ) + e_2_pert(i) = ^2/( E(i) - ) + + + + + + +.. c:function:: pt2_moller_plesset + + .. code:: text + + subroutine pt2_moller_plesset (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + File: :file:`pt2_equations.irp.f_template_412` + + compute the standard Moller-Plesset perturbative first order coefficient and second order energetic contribution + for the various n_st states. + c_pert(i) = /(difference of orbital energies) + e_2_pert(i) = ^2/(difference of orbital energies) + + + + + + +.. c:function:: pt2_moller_plesset_general + + .. code:: text + + subroutine pt2_moller_plesset_general (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + File: :file:`pt2_equations.irp.f_template_412` + + compute the general Moller-Plesset perturbative first order coefficient and second order energetic contribution + for the various n_st states. + c_pert(i) = /(difference of orbital energies) + e_2_pert(i) = ^2/(difference of orbital energies) + + + + + + +.. c:function:: pt2_qdpt + + .. code:: text + + subroutine pt2_qdpt (electronic_energy,det_ref,det_pert,fock_diag_tmp,c_pert,e_2_pert,H_pert_diag,Nint,ndet,N_st,minilist,idx_minilist,N_minilist) + + File: :file:`pt2_equations.irp.f_template_412` + + compute the QDPT first order coefficient and second order energetic contribution + for the various N_st states. + c_pert(i) = /( - ) + + + + + + +.. c:function:: remove_small_contributions + + .. code:: text + + subroutine remove_small_contributions + + File: :file:`selection.irp.f` + + Remove determinants with small contributions. N_states is assumed to be provided. + + + + + +.. c:function:: repeat_all_e_corr + + .. code:: text + + double precision function repeat_all_e_corr(key_in) + + File: :file:`pert_sc2.irp.f` + + + + diff --git a/docs/source/modules/pseudo.rst b/docs/source/modules/pseudo.rst new file mode 100644 index 00000000..b9ab7433 --- /dev/null +++ b/docs/source/modules/pseudo.rst @@ -0,0 +1,94 @@ +.. _pseudo: + +.. program:: pseudo + +.. default-role:: option + +====== +pseudo +====== + +This module defines the |EZFIO| parameters of the effective core potentials. + + + +EZFIO parameters +---------------- + +.. option:: nucl_charge_remove + + Nuclear charges removed per atom + + +.. option:: pseudo_klocmax + + Maximum value of k for the local component + + +.. option:: pseudo_n_k + + Number of gaussians in the local component + + +.. option:: pseudo_v_k + + Coefficients in the local component + + +.. option:: pseudo_dz_k + + Exponents in the local component + + +.. option:: pseudo_lmax + + Maximum angular momentum + + +.. option:: pseudo_kmax + + Maximum number of functions in the non-local component + + +.. option:: pseudo_n_kl + + Number of functions in the non-local component + + +.. option:: pseudo_v_kl + + Coefficients in the non-local component + + +.. option:: pseudo_dz_kl + + Exponents in the non-local component + + +.. option:: do_pseudo + + If `True`, pseudo-potentials are used. + + Default: False + +.. option:: pseudo_grid_size + + Nb of points of the grid for the QMC interfaces + + Default: 1000 + +.. option:: pseudo_grid_rmax + + R_max of the QMC grid + + Default: 10.0 + +.. option:: ao_pseudo_grid + + Grid for the QMC interface + + +.. option:: mo_pseudo_grid + + Grid for the QMC interface + diff --git a/docs/source/modules/psiref_cas.rst b/docs/source/modules/psiref_cas.rst new file mode 100644 index 00000000..cf1c5c64 --- /dev/null +++ b/docs/source/modules/psiref_cas.rst @@ -0,0 +1,177 @@ +.. _psiref_cas: + +.. program:: psiref_cas + +.. default-role:: option + +========== +psiref_cas +========== + +Reference wave function is defined as a |CAS| wave function. +This module is required for |CAS-SD|, |MRPT| or |MRCC|. + + + + +Providers +--------- + + +.. c:var:: idx_ref + + .. code:: text + + integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size) + double precision, allocatable :: psi_ref_coef (psi_det_size,n_states) + integer, allocatable :: idx_ref (psi_det_size) + integer :: n_det_ref + + File: :file:`psi_ref.irp.f` + + CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. + + + + +.. c:var:: inv_norm_psi_ref + + .. code:: text + + double precision, allocatable :: norm_psi_ref (N_states) + double precision, allocatable :: inv_norm_psi_ref (N_states) + + File: :file:`psi_ref.irp.f` + + + + + + +.. c:var:: n_det_ref + + .. code:: text + + integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size) + double precision, allocatable :: psi_ref_coef (psi_det_size,n_states) + integer, allocatable :: idx_ref (psi_det_size) + integer :: n_det_ref + + File: :file:`psi_ref.irp.f` + + CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. + + + + +.. c:var:: norm_psi_ref + + .. code:: text + + double precision, allocatable :: norm_psi_ref (N_states) + double precision, allocatable :: inv_norm_psi_ref (N_states) + + File: :file:`psi_ref.irp.f` + + + + + + +.. c:var:: psi_non_ref_coef_interm_norm + + .. code:: text + + double precision, allocatable :: psi_non_ref_coef_interm_norm (N_det_non_ref,N_states) + + File: :file:`psi_ref.irp.f` + + + + + + +.. c:var:: psi_ref + + .. code:: text + + integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size) + double precision, allocatable :: psi_ref_coef (psi_det_size,n_states) + integer, allocatable :: idx_ref (psi_det_size) + integer :: n_det_ref + + File: :file:`psi_ref.irp.f` + + CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. + + + + +.. c:var:: psi_ref_coef + + .. code:: text + + integer(bit_kind), allocatable :: psi_ref (N_int,2,psi_det_size) + double precision, allocatable :: psi_ref_coef (psi_det_size,n_states) + integer, allocatable :: idx_ref (psi_det_size) + integer :: n_det_ref + + File: :file:`psi_ref.irp.f` + + CAS wave function, defined from the application of the CAS bitmask on the determinants. idx_cas gives the indice of the CAS determinant in psi_det. + + + + +.. c:var:: psi_ref_coef_interm_norm + + .. code:: text + + double precision, allocatable :: psi_ref_coef_interm_norm (N_det_ref,N_states) + + File: :file:`psi_ref.irp.f` + + + + + + +.. c:var:: psi_ref_coef_inv + + .. code:: text + + double precision, allocatable :: psi_ref_coef_inv (psi_det_size,n_states) + + File: :file:`psi_ref.irp.f` + + 1/psi_ref_coef + + + + +.. c:var:: psi_ref_coef_restart + + .. code:: text + + integer(bit_kind), allocatable :: psi_ref_restart (N_int,2,psi_det_size) + double precision, allocatable :: psi_ref_coef_restart (psi_det_size,n_states) + + File: :file:`psi_ref.irp.f` + + Projection of the CAS wave function on the restart wave function. + + + + +.. c:var:: psi_ref_restart + + .. code:: text + + integer(bit_kind), allocatable :: psi_ref_restart (N_int,2,psi_det_size) + double precision, allocatable :: psi_ref_coef_restart (psi_det_size,n_states) + + File: :file:`psi_ref.irp.f` + + Projection of the CAS wave function on the restart wave function. + + diff --git a/docs/source/modules/psiref_utils.rst b/docs/source/modules/psiref_utils.rst new file mode 100644 index 00000000..62c778f0 --- /dev/null +++ b/docs/source/modules/psiref_utils.rst @@ -0,0 +1,382 @@ +.. _psiref_utils: + +.. program:: psiref_utils + +.. default-role:: option + +============ +psiref_utils +============ + + +Utilities related to the use of a reference wave function. This module +needs to be loaded with any `psi_ref_*` module. + + + + + +Providers +--------- + + +.. c:var:: h_matrix_ref + + .. code:: text + + double precision, allocatable :: h_matrix_ref (N_det_ref,N_det_ref) + + File: :file:`psi_ref_utils.irp.f` + + + + + + +.. c:var:: holes_operators + + .. code:: text + + integer(bit_kind), allocatable :: holes_operators (N_int,2) + integer(bit_kind), allocatable :: particles_operators (N_int,2) + + File: :file:`psi_ref_excitations_operators.irp.f` + + holes_operators represents an array of integers where all the holes have been done going from psi_ref to psi_non_ref particles_operators represents an array of integers where all the particles have been done going from psi_ref to psi_non_ref + + + + +.. c:var:: idx_non_ref + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_ref (psi_det_size) + integer, allocatable :: idx_non_ref_rev (psi_det_size) + integer :: n_det_non_ref + + File: :file:`psi_ref_utils.irp.f` + + Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse. + + + + +.. c:var:: idx_non_ref_from_sorted + + .. code:: text + + integer, allocatable :: idx_non_ref_from_sorted (N_det) + + File: :file:`psi_ref_utils.irp.f` + + + + + + +.. c:var:: idx_non_ref_rev + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_ref (psi_det_size) + integer, allocatable :: idx_non_ref_rev (psi_det_size) + integer :: n_det_non_ref + + File: :file:`psi_ref_utils.irp.f` + + Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse. + + + + +.. c:var:: n_det_non_ref + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_ref (psi_det_size) + integer, allocatable :: idx_non_ref_rev (psi_det_size) + integer :: n_det_non_ref + + File: :file:`psi_ref_utils.irp.f` + + Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse. + + + + +.. c:var:: particles_operators + + .. code:: text + + integer(bit_kind), allocatable :: holes_operators (N_int,2) + integer(bit_kind), allocatable :: particles_operators (N_int,2) + + File: :file:`psi_ref_excitations_operators.irp.f` + + holes_operators represents an array of integers where all the holes have been done going from psi_ref to psi_non_ref particles_operators represents an array of integers where all the particles have been done going from psi_ref to psi_non_ref + + + + +.. c:var:: psi_non_ref + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_ref (psi_det_size) + integer, allocatable :: idx_non_ref_rev (psi_det_size) + integer :: n_det_non_ref + + File: :file:`psi_ref_utils.irp.f` + + Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse. + + + + +.. c:var:: psi_non_ref_coef + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_ref (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_ref_coef (psi_det_size,n_states) + integer, allocatable :: idx_non_ref (psi_det_size) + integer, allocatable :: idx_non_ref_rev (psi_det_size) + integer :: n_det_non_ref + + File: :file:`psi_ref_utils.irp.f` + + Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. idx_non_ref_rev gives the reverse. + + + + +.. c:var:: psi_non_ref_coef_restart + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_ref_restart (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_ref_coef_restart (psi_det_size,n_states) + + File: :file:`psi_ref_utils.irp.f` + + Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. But this is with respect to the restart wave function. + + + + +.. c:var:: psi_non_ref_coef_sorted_bit + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_ref_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_ref_coef_sorted_bit (psi_det_size,N_states) + + File: :file:`psi_ref_utils.irp.f` + + Reference determinants sorted to accelerate the search of a random determinant in the wave function. + + + + +.. c:var:: psi_non_ref_coef_transp + + .. code:: text + + double precision, allocatable :: psi_non_ref_coef_transp (n_states,psi_det_size) + + File: :file:`psi_ref_utils.irp.f` + + Transposed psi_non_ref_coef + + + + +.. c:var:: psi_non_ref_restart + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_ref_restart (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_ref_coef_restart (psi_det_size,n_states) + + File: :file:`psi_ref_utils.irp.f` + + Set of determinants which are not part of the reference, defined from the application of the reference bitmask on the determinants. idx_non_ref gives the indice of the determinant in psi_det. But this is with respect to the restart wave function. + + + + +.. c:var:: psi_non_ref_sorted_bit + + .. code:: text + + integer(bit_kind), allocatable :: psi_non_ref_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_non_ref_coef_sorted_bit (psi_det_size,N_states) + + File: :file:`psi_ref_utils.irp.f` + + Reference determinants sorted to accelerate the search of a random determinant in the wave function. + + + + +.. c:var:: psi_ref_coef_diagonalized + + .. code:: text + + double precision, allocatable :: psi_ref_coef_diagonalized (N_det_ref,N_states) + double precision, allocatable :: psi_ref_energy_diagonalized (N_states) + + File: :file:`psi_ref_utils.irp.f` + + + + + + +.. c:var:: psi_ref_coef_normalized + + .. code:: text + + double precision, allocatable :: psi_ref_coef_normalized (psi_det_size,n_states) + + File: :file:`psi_ref_utils.irp.f` + + Normalized coefficients of the reference + + + + +.. c:var:: psi_ref_coef_sorted_bit + + .. code:: text + + integer(bit_kind), allocatable :: psi_ref_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_ref_coef_sorted_bit (psi_det_size,N_states) + + File: :file:`psi_ref_utils.irp.f` + + Reference determinants sorted to accelerate the search of a random determinant in the wave function. + + + + +.. c:var:: psi_ref_coef_transp + + .. code:: text + + double precision, allocatable :: psi_ref_coef_transp (n_states,psi_det_size) + + File: :file:`psi_ref_utils.irp.f` + + Transposed psi_ref_coef + + + + +.. c:var:: psi_ref_energy + + .. code:: text + + double precision, allocatable :: psi_ref_energy (N_states) + + File: :file:`psi_ref_utils.irp.f` + + + + + + +.. c:var:: psi_ref_energy_diagonalized + + .. code:: text + + double precision, allocatable :: psi_ref_coef_diagonalized (N_det_ref,N_states) + double precision, allocatable :: psi_ref_energy_diagonalized (N_states) + + File: :file:`psi_ref_utils.irp.f` + + + + + + +.. c:var:: psi_ref_sorted_bit + + .. code:: text + + integer(bit_kind), allocatable :: psi_ref_sorted_bit (N_int,2,psi_det_size) + double precision, allocatable :: psi_ref_coef_sorted_bit (psi_det_size,N_states) + + File: :file:`psi_ref_utils.irp.f` + + Reference determinants sorted to accelerate the search of a random determinant in the wave function. + + + + +.. c:var:: ref_hamiltonian_matrix + + .. code:: text + + double precision, allocatable :: ref_hamiltonian_matrix (n_det_ref,n_det_ref) + + File: :file:`psi_ref_utils.irp.f` + + H matrix in the Reference space + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: extract_ref + + .. code:: text + + subroutine extract_ref + + File: :file:`extract_ref.irp.f` + + Replaces the total wave function by the normalized projection on the reference + + + + + +.. c:function:: get_index_in_psi_ref_sorted_bit + + .. code:: text + + integer function get_index_in_psi_ref_sorted_bit(key,Nint) + + File: :file:`psi_ref_utils.irp.f` + + Returns the index of the determinant in the ``psi_ref_sorted_bit`` array + + + + + +.. c:function:: is_in_psi_ref + + .. code:: text + + logical function is_in_psi_ref(key,Nint) + + File: :file:`psi_ref_utils.irp.f` + + True if the determinant ``det`` is in the wave function + + diff --git a/docs/source/modules/read_integral.rst b/docs/source/modules/read_integral.rst new file mode 100644 index 00000000..1489bd22 --- /dev/null +++ b/docs/source/modules/read_integral.rst @@ -0,0 +1,38 @@ +.. _read_integral: + +.. program:: read_integral + +.. default-role:: option + +============= +read_integral +============= + +Warning: CAN NOT CHANGE THE NUMBER OF MO ! +Scripts to read integrals and metadata and generates fake ezfio + +Needed Modules +============== +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. + + +.. image:: tree_dependency.png + +* `Integrals_Monoelec `_ +* `Integrals_Bielec `_ + +Documentation +============= +.. Do not edit this section It was auto-generated +.. by the `update_README.py` script. + + +`print_integrals `_ + Undocumented + + +`run `_ + Undocumented + + diff --git a/docs/source/modules/scf_utils.rst b/docs/source/modules/scf_utils.rst new file mode 100644 index 00000000..a5aaeb73 --- /dev/null +++ b/docs/source/modules/scf_utils.rst @@ -0,0 +1,375 @@ +.. _scf_utils: + +.. program:: scf_utils + +.. default-role:: option + +========= +scf_utils +========= + + + +The scf_utils module is an abstract module which contains the basics to perform *Restricted* SCF calculations (the +spatial part of the |MOs| is common for alpha and beta spinorbitals) based on a single-determinant wave function. + +This module does not produce any executable *and must not do*, but instead it contains everything one needs to perform an orbital optimization based on an Fock matrix. +The ``scf_utils`` module is meant to be included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example). + +All SCF programs perform the following actions: + +#. Compute/Read all the one- and two-electron integrals, and store them in memory +#. Check in the |EZFIO| database if there is a set of |MOs|. If there is, it + will read them as initial guess. Otherwise, it will create a guess. +#. Perform the |SCF| iterations based on the definition of the Fock matrix + + +The main keywords/options are: +# :option:`scf_utils thresh_scf` +# :option:`scf_utils level_shift` + +At each iteration, the |MOs| are saved in the |EZFIO| database. Hence, if the calculation +crashes for any unexpected reason, the calculation can be restarted by running again +the |SCF| with the same |EZFIO| database. + +The `DIIS`_ algorithm is implemented, as well as the `level-shifting`_ method. +If the |SCF| does not converge, try again with a higher value of :option:`level_shift`. + +To start a calculation from scratch, the simplest way is to remove the +``mo_basis`` directory from the |EZFIO| database, and run the |SCF| again. + +.. _DIIS: https://en.wikipedia.org/w/index.php?title=DIIS +.. _level-shifting: https://doi.org/10.1002/qua.560070407 + + + + +EZFIO parameters +---------------- + +.. option:: max_dim_diis + + Maximum size of the DIIS extrapolation procedure + + Default: 15 + +.. option:: threshold_diis + + Threshold on the convergence of the DIIS error vector during a Hartree-Fock calculation. If 0. is chosen, the square root of thresh_scf will be used. + + Default: 0. + +.. option:: thresh_scf + + Threshold on the convergence of the Hartree Fock energy. + + Default: 1.e-10 + +.. option:: n_it_scf_max + + Maximum number of SCF iterations + + Default: 500 + +.. option:: level_shift + + Energy shift on the virtual MOs to improve SCF convergence + + Default: 0.1 + +.. option:: scf_algorithm + + Type of SCF algorithm used. Possible choices are [ Simple | DIIS] + + Default: DIIS + +.. option:: mo_guess_type + + Initial MO guess. Can be [ Huckel | HCore ] + + Default: Huckel + +.. option:: energy + + Calculated HF energy + + +.. option:: no_oa_or_av_opt + + If true, leave the active orbitals untouched in the SCF procedure + + Default: False + + +Providers +--------- + + +.. c:var:: eigenvalues_fock_matrix_ao + + .. code:: text + + double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num) + double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num) + + File: :file:`diis.irp.f` + + Eigenvalues and eigenvectors of the Fock matrix over the AO basis + + + + +.. c:var:: eigenvectors_fock_matrix_ao + + .. code:: text + + double precision, allocatable :: eigenvalues_fock_matrix_ao (AO_num) + double precision, allocatable :: eigenvectors_fock_matrix_ao (AO_num,AO_num) + + File: :file:`diis.irp.f` + + Eigenvalues and eigenvectors of the Fock matrix over the AO basis + + + + +.. c:var:: eigenvectors_fock_matrix_mo + + .. code:: text + + double precision, allocatable :: eigenvectors_fock_matrix_mo (ao_num,mo_tot_num) + + File: :file:`diagonalize_fock.irp.f` + + Eigenvector of the Fock matrix in the MO basis obtained with level shift. + + + + +.. c:var:: extrapolate_fock_matrix + + .. code:: text + + subroutine extrapolate_Fock_matrix( & + error_matrix_DIIS,Fock_matrix_DIIS, & + Fock_matrix_AO_,size_Fock_matrix_AO, & + iteration_SCF,dim_DIIS & + ) + + File: :file:`roothaan_hall_scf.irp.f` + + Compute the extrapolated Fock matrix using the DIIS procedure + + + + +.. c:var:: fock_matrix_ao + + .. code:: text + + double precision, allocatable :: fock_matrix_ao (ao_num,ao_num) + + File: :file:`fock_matrix.irp.f` + + Fock matrix in AO basis set + + + + +.. c:var:: fock_matrix_diag_mo + + .. code:: text + + double precision, allocatable :: fock_matrix_mo (mo_tot_num,mo_tot_num) + double precision, allocatable :: fock_matrix_diag_mo (mo_tot_num) + + File: :file:`fock_matrix.irp.f` + + Fock matrix on the MO basis. For open shells, the ROHF Fock Matrix is + | F-K | F + K/2 | F | |---------------------------------| | F + K/2 | F | F - K/2 | |---------------------------------| | F | F - K/2 | F + K | + F = 1/2 (Fa + Fb) + K = Fb - Fa + + + + + +.. c:var:: fock_matrix_mo + + .. code:: text + + double precision, allocatable :: fock_matrix_mo (mo_tot_num,mo_tot_num) + double precision, allocatable :: fock_matrix_diag_mo (mo_tot_num) + + File: :file:`fock_matrix.irp.f` + + Fock matrix on the MO basis. For open shells, the ROHF Fock Matrix is + | F-K | F + K/2 | F | |---------------------------------| | F + K/2 | F | F - K/2 | |---------------------------------| | F | F - K/2 | F + K | + F = 1/2 (Fa + Fb) + K = Fb - Fa + + + + + +.. c:var:: fock_matrix_mo_alpha + + .. code:: text + + double precision, allocatable :: fock_matrix_mo_alpha (mo_tot_num,mo_tot_num) + + File: :file:`fock_matrix.irp.f` + + Fock matrix on the MO basis + + + + +.. c:var:: fock_matrix_mo_beta + + .. code:: text + + double precision, allocatable :: fock_matrix_mo_beta (mo_tot_num,mo_tot_num) + + File: :file:`fock_matrix.irp.f` + + Fock matrix on the MO basis + + + + +.. c:var:: fps_spf_matrix_ao + + .. code:: text + + double precision, allocatable :: fps_spf_matrix_ao (AO_num,AO_num) + + File: :file:`diis.irp.f` + + Commutator FPS - SPF + + + + +.. c:var:: fps_spf_matrix_mo + + .. code:: text + + double precision, allocatable :: fps_spf_matrix_mo (mo_tot_num,mo_tot_num) + + File: :file:`diis.irp.f` + + Commutator FPS - SPF in MO basis + + + + +.. c:var:: scf_density_matrix_ao + + .. code:: text + + double precision, allocatable :: scf_density_matrix_ao (ao_num,ao_num) + + File: :file:`scf_density_matrix_ao.irp.f` + + S^{-1}.P.S^{-1} where P = C.C^t + + + + +.. c:var:: scf_density_matrix_ao_alpha + + .. code:: text + + double precision, allocatable :: scf_density_matrix_ao_alpha (ao_num,ao_num) + + File: :file:`scf_density_matrix_ao.irp.f` + + S^{-1}.P_alpha.S^{-1} + + + + +.. c:var:: scf_density_matrix_ao_beta + + .. code:: text + + double precision, allocatable :: scf_density_matrix_ao_beta (ao_num,ao_num) + + File: :file:`scf_density_matrix_ao.irp.f` + + S^{-1}.P_beta.S^{-1} + + + + +.. c:var:: scf_energy + + .. code:: text + + double precision :: scf_energy + + File: :file:`fock_matrix.irp.f` + + Hartree-Fock energy + + + + +.. c:var:: threshold_diis_nonzero + + .. code:: text + + double precision :: threshold_diis_nonzero + + File: :file:`diis.irp.f` + + If threshold_DIIS is zero, choose sqrt(thresh_scf) + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: damping_scf + + .. code:: text + + subroutine damping_SCF + + File: :file:`damping_scf.irp.f` + + + + + + + +.. c:function:: huckel_guess + + .. code:: text + + subroutine huckel_guess + + File: :file:`huckel.irp.f` + + Build the MOs using the extended Huckel model + + + + + +.. c:function:: roothaan_hall_scf + + .. code:: text + + subroutine Roothaan_Hall_SCF + + File: :file:`roothaan_hall_scf.irp.f` + + Roothaan-Hall algorithm for SCF Hartree-Fock calculation + + diff --git a/docs/source/modules/selectors_cassd.rst b/docs/source/modules/selectors_cassd.rst new file mode 100644 index 00000000..d6c2b8ff --- /dev/null +++ b/docs/source/modules/selectors_cassd.rst @@ -0,0 +1,13 @@ +.. _selectors_cassd: + +.. program:: selectors_cassd + +.. default-role:: option + +=============== +selectors_cassd +=============== + +Selectors for |CAS-SD| calculations. The selectors are defined as first the +generators from :ref:`Generators_CAS`, and then the rest of the wave function. + diff --git a/docs/source/modules/selectors_full.rst b/docs/source/modules/selectors_full.rst new file mode 100644 index 00000000..9edb70b9 --- /dev/null +++ b/docs/source/modules/selectors_full.rst @@ -0,0 +1,72 @@ +.. _selectors_full: + +.. program:: selectors_full + +.. default-role:: option + +============== +selectors_full +============== + +All the determinants are possible selectors. Only the largest contributions are kept, where +a threshold is applied to the squared norm of the wave function, with the :option:`determinants +threshold_selectors` flag. + + + +Providers +--------- + + +.. c:var:: n_det_selectors + + .. code:: text + + integer :: n_det_selectors + + File: :file:`selectors.irp.f` + + For Single reference wave functions, the number of selectors is 1 : the Hartree-Fock determinant + + + + +.. c:var:: psi_selectors + + .. code:: text + + integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size) + double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states) + + File: :file:`selectors.irp.f` + + Determinants on which we apply for perturbation. + + + + +.. c:var:: psi_selectors_coef + + .. code:: text + + integer(bit_kind), allocatable :: psi_selectors (N_int,2,psi_selectors_size) + double precision, allocatable :: psi_selectors_coef (psi_selectors_size,N_states) + + File: :file:`selectors.irp.f` + + Determinants on which we apply for perturbation. + + + + +.. c:var:: threshold_selectors + + .. code:: text + + double precision :: threshold_selectors + + File: :file:`selectors.irp.f` + + Thresholds on selectors (fraction of the square of the norm) + + diff --git a/docs/source/modules/selectors_utils.rst b/docs/source/modules/selectors_utils.rst new file mode 100644 index 00000000..c183641c --- /dev/null +++ b/docs/source/modules/selectors_utils.rst @@ -0,0 +1,362 @@ +.. _selectors_utils: + +.. program:: selectors_utils + +.. default-role:: option + +=============== +selectors_utils +=============== + +Helper functions for selectors. + + + + +Providers +--------- + + +.. c:var:: coef_hf_selector + + .. code:: text + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + File: :file:`e_corr_selectors.irp.f` + + energy of correlation per determinant respect to the Hartree Fock determinant + for the all the double excitations in the selectors determinants + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + + + +.. c:var:: delta_e_per_selector + + .. code:: text + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + File: :file:`e_corr_selectors.irp.f` + + energy of correlation per determinant respect to the Hartree Fock determinant + for the all the double excitations in the selectors determinants + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + + + +.. c:var:: double_index_selectors + + .. code:: text + + integer, allocatable :: exc_degree_per_selectors (N_det_selectors) + integer, allocatable :: double_index_selectors (N_det_selectors) + integer :: n_double_selectors + + File: :file:`e_corr_selectors.irp.f` + + degree of excitation respect to Hartree Fock for the wave function + for the all the selectors determinants + double_index_selectors = list of the index of the double excitations + n_double_selectors = number of double excitations in the selectors determinants + + + + +.. c:var:: e_corr_double_only + + .. code:: text + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + File: :file:`e_corr_selectors.irp.f` + + energy of correlation per determinant respect to the Hartree Fock determinant + for the all the double excitations in the selectors determinants + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + + + +.. c:var:: e_corr_per_selectors + + .. code:: text + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + File: :file:`e_corr_selectors.irp.f` + + energy of correlation per determinant respect to the Hartree Fock determinant + for the all the double excitations in the selectors determinants + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + + + +.. c:var:: e_corr_second_order + + .. code:: text + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + File: :file:`e_corr_selectors.irp.f` + + energy of correlation per determinant respect to the Hartree Fock determinant + for the all the double excitations in the selectors determinants + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + + + +.. c:var:: exc_degree_per_selectors + + .. code:: text + + integer, allocatable :: exc_degree_per_selectors (N_det_selectors) + integer, allocatable :: double_index_selectors (N_det_selectors) + integer :: n_double_selectors + + File: :file:`e_corr_selectors.irp.f` + + degree of excitation respect to Hartree Fock for the wave function + for the all the selectors determinants + double_index_selectors = list of the index of the double excitations + n_double_selectors = number of double excitations in the selectors determinants + + + + +.. c:var:: i_h_hf_per_selectors + + .. code:: text + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + File: :file:`e_corr_selectors.irp.f` + + energy of correlation per determinant respect to the Hartree Fock determinant + for the all the double excitations in the selectors determinants + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + + + +.. c:var:: inv_selectors_coef_hf + + .. code:: text + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + File: :file:`e_corr_selectors.irp.f` + + energy of correlation per determinant respect to the Hartree Fock determinant + for the all the double excitations in the selectors determinants + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + + + +.. c:var:: inv_selectors_coef_hf_squared + + .. code:: text + + double precision :: coef_hf_selector + double precision :: inv_selectors_coef_hf + double precision :: inv_selectors_coef_hf_squared + double precision, allocatable :: e_corr_per_selectors (N_det_selectors) + double precision, allocatable :: i_h_hf_per_selectors (N_det_selectors) + double precision, allocatable :: delta_e_per_selector (N_det_selectors) + double precision :: e_corr_double_only + double precision :: e_corr_second_order + + File: :file:`e_corr_selectors.irp.f` + + energy of correlation per determinant respect to the Hartree Fock determinant + for the all the double excitations in the selectors determinants + E_corr_per_selectors(i) = * c(D_i)/c(HF) if |D_i> is a double excitation + E_corr_per_selectors(i) = -1000.d0 if it is not a double excitation + coef_hf_selector = coefficient of the Hartree Fock determinant in the selectors determinants + + + + +.. c:var:: n_double_selectors + + .. code:: text + + integer, allocatable :: exc_degree_per_selectors (N_det_selectors) + integer, allocatable :: double_index_selectors (N_det_selectors) + integer :: n_double_selectors + + File: :file:`e_corr_selectors.irp.f` + + degree of excitation respect to Hartree Fock for the wave function + for the all the selectors determinants + double_index_selectors = list of the index of the double excitations + n_double_selectors = number of double excitations in the selectors determinants + + + + +.. c:var:: psi_selectors_coef_transp + + .. code:: text + + double precision, allocatable :: psi_selectors_coef_transp (N_states,psi_selectors_size) + + File: :file:`selectors.irp.f` + + Transposed psi_selectors + + + + +.. c:var:: psi_selectors_diag_h_mat + + .. code:: text + + double precision, allocatable :: psi_selectors_diag_h_mat (psi_selectors_size) + + File: :file:`selectors.irp.f` + + Diagonal elements of the H matrix for each selectors + + + + +.. c:var:: psi_selectors_size + + .. code:: text + + integer :: psi_selectors_size + + File: :file:`selectors.irp.f` + + + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: zmq_get_n_det_generators + + .. code:: text + + integer function zmq_get_N_det_generators(zmq_to_qp_run_socket, worker_id) + + File: :file:`zmq.irp.f_template_102` + + Get N_det_generators from the qp_run scheduler + + + + + +.. c:function:: zmq_get_n_det_selectors + + .. code:: text + + integer function zmq_get_N_det_selectors(zmq_to_qp_run_socket, worker_id) + + File: :file:`zmq.irp.f_template_102` + + Get N_det_selectors from the qp_run scheduler + + + + + +.. c:function:: zmq_put_n_det_generators + + .. code:: text + + integer function zmq_put_N_det_generators(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_102` + + Put N_det_generators on the qp_run scheduler + + + + + +.. c:function:: zmq_put_n_det_selectors + + .. code:: text + + integer function zmq_put_N_det_selectors(zmq_to_qp_run_socket,worker_id) + + File: :file:`zmq.irp.f_template_102` + + Put N_det_selectors on the qp_run scheduler + + diff --git a/docs/source/modules/single_ref_method.rst b/docs/source/modules/single_ref_method.rst new file mode 100644 index 00000000..ae80a401 --- /dev/null +++ b/docs/source/modules/single_ref_method.rst @@ -0,0 +1,14 @@ +.. _single_ref_method: + +.. program:: single_ref_method + +.. default-role:: option + +================= +single_ref_method +================= + +Include this module for single reference methods. +Using this module, the only generator determinant is the Hartree-Fock determinant. + + diff --git a/docs/source/modules/slave.rst b/docs/source/modules/slave.rst new file mode 100644 index 00000000..74b75541 --- /dev/null +++ b/docs/source/modules/slave.rst @@ -0,0 +1,73 @@ +.. _slave: + +.. program:: slave + +.. default-role:: option + +===== +slave +===== + +Slave processes for distributed parallelism. + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: provide_everything + + .. code:: text + + subroutine provide_everything + + File: :file:`slave_cipsi.irp.f` + + + + + + + +.. c:function:: qp_ao_ints + + .. code:: text + + subroutine qp_ao_ints + + File: :file:`slave_eri.irp.f` + + Slave for electron repulsion integrals + + + + + +.. c:function:: run_wf + + .. code:: text + + subroutine run_wf + + File: :file:`slave_cipsi.irp.f` + + + + + + + +.. c:function:: slave + + .. code:: text + + subroutine slave + + File: :file:`slave_cipsi.irp.f` + + Helper program for distributed parallelism + + diff --git a/docs/source/modules/tools.rst b/docs/source/modules/tools.rst new file mode 100644 index 00000000..d9eb8f11 --- /dev/null +++ b/docs/source/modules/tools.rst @@ -0,0 +1,217 @@ +.. _tools: + +.. program:: tools + +.. default-role:: option + +===== +tools +===== + +Useful tools are grouped in this module. + + + +Subroutines / functions +----------------------- + + + +.. c:function:: diagonalize_h + + .. code:: text + + subroutine diagonalize_h + + File: :file:`diagonalize_h.irp.f` + + program that extracts the N_states lowest states of the Hamiltonian within the set of Slater determinants stored in the EZFIO folder + + + + + +.. c:function:: fcidump + + .. code:: text + + subroutine fcidump + + File: :file:`fcidump.irp.f` + + Produce a FCIDUMP file + + + + + +.. c:function:: four_idx_transform + + .. code:: text + + subroutine four_idx_transform + + File: :file:`four_idx_transform.irp.f` + + 4-index transformation of two-electron integrals from AO to MO integrals + + + + + +.. c:function:: molden + + .. code:: text + + subroutine molden + + File: :file:`molden.irp.f` + + Produce a Molden file + + + + + +.. c:function:: print_wf + + .. code:: text + + subroutine print_wf + + File: :file:`print_wf.irp.f` + + print the wave function stored in the EZFIO folder in the intermediate normalization + 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. + If the wave function strongly deviates from the first-order analysis, something funny is going on :) + + + + + +.. c:function:: routine + + .. code:: text + + subroutine routine + + File: :file:`write_integrals_erf.irp.f` + + + + + + + +.. c:function:: save_natorb + + .. code:: text + + subroutine save_natorb + + File: :file:`save_natorb.irp.f` + + Save natural MOs into the EZFIO + + + + + +.. c:function:: save_one_body_dm + + .. code:: text + + subroutine save_one_body_dm + + File: :file:`save_one_body_dm.irp.f` + + programs that computes the one body density on the mo basis for alpha and beta electrons from the wave function stored in the EZFIO folder, and then save it into the EZFIO folder aux_quantities. + Then, the global variable data_one_body_alpha_dm_mo and data_one_body_beta_dm_mo will automatically read the density in a further calculation. + This can be used to perform dampin on the density in RS-DFT calculation (see the density_for_dft module). + + + + + +.. c:function:: save_ortho_mos + + .. code:: text + + subroutine save_ortho_mos + + File: :file:`save_ortho_mos.irp.f` + + Save orthonormalized MOs in the EZFIO. + + + + + +.. c:function:: write_ao_basis + + .. code:: text + + subroutine write_Ao_basis(i_unit_output) + + File: :file:`molden.irp.f` + + + + + + + +.. c:function:: write_geometry + + .. code:: text + + subroutine write_geometry(i_unit_output) + + File: :file:`molden.irp.f` + + + + + + + +.. c:function:: write_integrals + + .. code:: text + + subroutine write_integrals + + File: :file:`write_integrals_erf.irp.f` + + Saves the bielec erf integrals into the EZFIO + + + + + +.. c:function:: write_intro_gamess + + .. code:: text + + subroutine write_intro_gamess(i_unit_output) + + File: :file:`molden.irp.f` + + + + + + + +.. c:function:: write_mo_basis + + .. code:: text + + subroutine write_Mo_basis(i_unit_output) + + File: :file:`molden.irp.f` + + + + diff --git a/docs/source/modules/utils.rst b/docs/source/modules/utils.rst new file mode 100644 index 00000000..448851ac --- /dev/null +++ b/docs/source/modules/utils.rst @@ -0,0 +1,1914 @@ +.. _utils: + +.. program:: utils + +.. default-role:: option + +===== +utils +===== + +Contains general purpose utilities (sorting, maps, etc). + + + + +Providers +--------- + + +.. c:var:: binom + + .. code:: text + + double precision, allocatable :: binom (0:40,0:40) + double precision, allocatable :: binom_transp (0:40,0:40) + + File: :file:`util.irp.f` + + Binomial coefficients + + + + +.. c:var:: binom_int + + .. code:: text + + integer*8, allocatable :: binom_int (0:40,0:40) + integer*8, allocatable :: binom_int_transp (0:40,0:40) + + File: :file:`util.irp.f` + + Binomial coefficients, as integers*8 + + + + +.. c:var:: binom_int_transp + + .. code:: text + + integer*8, allocatable :: binom_int (0:40,0:40) + integer*8, allocatable :: binom_int_transp (0:40,0:40) + + File: :file:`util.irp.f` + + Binomial coefficients, as integers*8 + + + + +.. c:var:: binom_transp + + .. code:: text + + double precision, allocatable :: binom (0:40,0:40) + double precision, allocatable :: binom_transp (0:40,0:40) + + File: :file:`util.irp.f` + + Binomial coefficients + + + + +.. c:var:: degree_max_integration_lebedev + + .. code:: text + + integer :: degree_max_integration_lebedev + + File: :file:`angular_integration.irp.f` + + integrate correctly a polynom of order "degree_max_integration_lebedev" needed for the angular integration according to LEBEDEV formulae + + + + +.. c:var:: dtranspose + + .. code:: text + + recursive subroutine dtranspose(A,LDA,B,LDB,d1,d2) + + File: :file:`transpose.irp.f` + + Transpose input matrix A into output matrix B + + + + +.. c:var:: fact_inv + + .. code:: text + + double precision, allocatable :: fact_inv (128) + + File: :file:`util.irp.f` + + 1/n! + + + + +.. c:var:: i2radix_sort + + .. code:: text + + recursive subroutine i2radix_sort(x,iorder,isize,iradix) + + File: :file:`sort.irp.f_template_644` + + Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. + + + + +.. c:var:: i8radix_sort + + .. code:: text + + recursive subroutine i8radix_sort(x,iorder,isize,iradix) + + File: :file:`sort.irp.f_template_644` + + Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. + + + + +.. c:var:: i8radix_sort_big + + .. code:: text + + recursive subroutine i8radix_sort_big(x,iorder,isize,iradix) + + File: :file:`sort.irp.f_template_644` + + Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. + + + + +.. c:var:: inv_int + + .. code:: text + + double precision, allocatable :: inv_int (128) + + File: :file:`util.irp.f` + + 1/i + + + + +.. c:var:: iradix_sort + + .. code:: text + + recursive subroutine iradix_sort(x,iorder,isize,iradix) + + File: :file:`sort.irp.f_template_644` + + Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. + + + + +.. c:var:: iradix_sort_big + + .. code:: text + + recursive subroutine iradix_sort_big(x,iorder,isize,iradix) + + File: :file:`sort.irp.f_template_644` + + Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. iradix should be -1 in input. + + + + +.. c:var:: n_points_integration_angular_lebedev + + .. code:: text + + integer :: n_points_integration_angular_lebedev + + File: :file:`angular_integration.irp.f` + + Number of points needed for the angular integral + + + + +.. c:var:: nproc + + .. code:: text + + integer :: nproc + + File: :file:`util.irp.f` + + Number of current OpenMP threads + + + + +.. c:var:: overlap_gaussian_xyz + + .. code:: text + + subroutine overlap_gaussian_xyz(A_center,B_center,alpha,beta,power_A,& + power_B,overlap_x,overlap_y,overlap_z,overlap,dim) + + File: :file:`one_e_integration.irp.f` + + .. math:: + S_x = \int (x-A_x)^{a_x} exp(-\alpha(x-A_x)^2) (x-B_x)^{b_x} exp(-beta(x-B_x)^2) dx \\ S = S_x S_y S_z + + + + + +.. c:var:: phi_angular_integration_lebedev + + .. code:: text + + double precision, allocatable :: theta_angular_integration_lebedev (n_points_integration_angular_lebedev) + double precision, allocatable :: phi_angular_integration_lebedev (n_points_integration_angular_lebedev) + double precision, allocatable :: weights_angular_integration_lebedev (n_points_integration_angular_lebedev) + + File: :file:`angular_integration.irp.f` + + Theta phi values together with the weights values for the angular integration : integral [dphi,dtheta] f(x,y,z) = 4 * pi * sum (1 where i is the basis function and psi_j is the j th eigenvector + + + + + + +.. c:function:: lapack_diagd + + .. code:: text + + subroutine lapack_diagd(eigvalues,eigvectors,H,nmax,n) + + File: :file:`linear_algebra.irp.f` + + Diagonalize matrix H + H is untouched between input and ouptut + eigevalues(i) = ith lowest eigenvalue of the H matrix + eigvectors(i,j) = where i is the basis function and psi_j is the j th eigenvector + + + + + + +.. c:function:: logfact + + .. code:: text + + double precision function logfact(n) + + File: :file:`util.irp.f` + + n! + + + + + +.. c:function:: lowercase + + .. code:: text + + subroutine lowercase(txt,n) + + File: :file:`util.irp.f` + + Transform to lower case + + + + + +.. c:function:: map_load_from_disk + + .. code:: text + + subroutine map_load_from_disk(filename,map) + + File: :file:`map_functions.irp.f` + + + + + + + +.. c:function:: map_save_to_disk + + .. code:: text + + subroutine map_save_to_disk(filename,map) + + File: :file:`map_functions.irp.f` + + + + + + + +.. c:function:: memory_of_double + + .. code:: text + + double precision function memory_of_double(n) + + File: :file:`memory.irp.f` + + Computes the memory required for n double precision elements in gigabytes. + + + + + +.. c:function:: memory_of_int + + .. code:: text + + double precision function memory_of_int(n) + + File: :file:`memory.irp.f` + + Computes the memory required for n double precision elements in gigabytes. + + + + + +.. c:function:: multiply_poly + + .. code:: text + + subroutine multiply_poly(b,nb,c,nc,d,nd) + + File: :file:`integration.irp.f` + + Multiply two polynomials D(t) =! D(t) +( B(t)*C(t)) + + + + + +.. c:function:: normalize + + .. code:: text + + subroutine normalize(u,sze) + + File: :file:`util.irp.f` + + Normalizes vector u + + + + + +.. c:function:: ortho_canonical + + .. code:: text + + subroutine ortho_canonical(overlap,LDA,N,C,LDC,m) + + File: :file:`linear_algebra.irp.f` + + Compute C_new=C_old.U.s^-1/2 canonical orthogonalization. + overlap : overlap matrix + LDA : leftmost dimension of overlap array + N : Overlap matrix is NxN (array is (LDA,N) ) + C : Coefficients of the vectors to orthogonalize. On exit, orthogonal vectors + LDC : leftmost dimension of C + m : Coefficients matrix is MxN, ( array is (LDC,N) ) + + + + + + +.. c:function:: ortho_lowdin + + .. code:: text + + subroutine ortho_lowdin(overlap,LDA,N,C,LDC,m) + + File: :file:`linear_algebra.irp.f` + + Compute C_new=C_old.S^-1/2 orthogonalization. + overlap : overlap matrix + LDA : leftmost dimension of overlap array + N : Overlap matrix is NxN (array is (LDA,N) ) + C : Coefficients of the vectors to orthogonalize. On exit, orthogonal vectors + LDC : leftmost dimension of C + M : Coefficients matrix is MxN, ( array is (LDC,N) ) + + + + + + +.. c:function:: ortho_qr + + .. code:: text + + subroutine ortho_qr(A,LDA,m,n) + + File: :file:`linear_algebra.irp.f` + + Orthogonalization using Q.R factorization + A : matrix to orthogonalize + LDA : leftmost dimension of A + n : Number of rows of A + m : Number of columns of A + + + + + + +.. c:function:: ortho_qr_unblocked + + .. code:: text + + subroutine ortho_qr_unblocked(A,LDA,m,n) + + File: :file:`linear_algebra.irp.f` + + Orthogonalization using Q.R factorization + A : matrix to orthogonalize + LDA : leftmost dimension of A + n : Number of rows of A + m : Number of columns of A + + + + + + +.. c:function:: overlap_gaussian_x + + .. code:: text + + double precision function overlap_gaussian_x(A_center,B_center,alpha,beta,power_A,power_B,dim) + + File: :file:`one_e_integration.irp.f` + + .. math:: + \sum_{-infty}^{+infty} (x-A_x)^ax (x-B_x)^bx exp(-alpha(x-A_x)^2) exp(-beta(x-B_X)^2) dx + + + + + + +.. c:function:: overlap_x_abs + + .. code:: text + + subroutine overlap_x_abs(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + + File: :file:`one_e_integration.irp.f` + + .. math :: + \int_{-infty}^{+infty} (x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) dx + + + + + + +.. c:function:: print_memory_usage + + .. code:: text + + subroutine print_memory_usage() + + File: :file:`memory.irp.f` + + Prints the memory usage in the output + + + + + +.. c:function:: quick_dsort + + .. code:: text + + subroutine quick_dsort(x, iorder, isize) + + File: :file:`sort.irp.f_template_261` + + Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. + + + + + +.. c:function:: quick_i2sort + + .. code:: text + + subroutine quick_i2sort(x, iorder, isize) + + File: :file:`sort.irp.f_template_261` + + Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. + + + + + +.. c:function:: quick_i8sort + + .. code:: text + + subroutine quick_i8sort(x, iorder, isize) + + File: :file:`sort.irp.f_template_261` + + Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. + + + + + +.. c:function:: quick_isort + + .. code:: text + + subroutine quick_isort(x, iorder, isize) + + File: :file:`sort.irp.f_template_261` + + Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. + + + + + +.. c:function:: quick_sort + + .. code:: text + + subroutine quick_sort(x, iorder, isize) + + File: :file:`sort.irp.f_template_261` + + Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. + + + + + +.. c:function:: recentered_poly2 + + .. code:: text + + subroutine recentered_poly2(P_new,x_A,x_P,a,P_new2,x_B,x_Q,b) + + File: :file:`integration.irp.f` + + Recenter two polynomials + + + + + +.. c:function:: resident_memory + + .. code:: text + + subroutine resident_memory(value) + + File: :file:`memory.irp.f` + + Returns the current used memory in gigabytes used by the current process. + + + + + +.. c:function:: rint + + .. code:: text + + double precision function rint(n,rho) + + File: :file:`integration.irp.f` + + .. math:: + \int_0^1 dx \exp(-p x^2) x^n + + + + + + +.. c:function:: rint1 + + .. code:: text + + double precision function rint1(n,rho) + + File: :file:`integration.irp.f` + + Standard version of rint + + + + + +.. c:function:: rint_large_n + + .. code:: text + + double precision function rint_large_n(n,rho) + + File: :file:`integration.irp.f` + + Version of rint for large values of n + + + + + +.. c:function:: rint_sum + + .. code:: text + + double precision function rint_sum(n_pt_out,rho,d1) + + File: :file:`integration.irp.f` + + Needed for the calculation of two-electron integrals. + + + + + +.. c:function:: rinteg + + .. code:: text + + double precision function rinteg(n,u) + + File: :file:`need.irp.f` + + + + + + + +.. c:function:: rintgauss + + .. code:: text + + double precision function rintgauss(n) + + File: :file:`need.irp.f` + + + + + + + +.. c:function:: sabpartial + + .. code:: text + + double precision function SABpartial(zA,zB,A,B,nA,nB,gamA,gamB,l) + + File: :file:`need.irp.f` + + + + + + + +.. c:function:: set_order + + .. code:: text + + subroutine set_order(x,iorder,isize) + + File: :file:`sort.irp.f_template_347` + + array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A. + + + + + +.. c:function:: set_order_big + + .. code:: text + + subroutine set_order_big(x,iorder,isize) + + File: :file:`sort.irp.f_template_412` + + array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A. This is a version for very large arrays where the indices need to be in integer*8 format + + + + + +.. c:function:: sort + + .. code:: text + + subroutine sort(x,iorder,isize) + + File: :file:`sort.irp.f_template_293` + + Sort array x(isize). iorder in input should be (1,2,3,...,isize), and in output contains the new order of the elements. + + + + + +.. c:function:: sorted_dnumber + + .. code:: text + + subroutine sorted_dnumber(x,isize,n) + + File: :file:`sort.irp.f_template_261` + + Returns the number of sorted elements + + + + + +.. c:function:: sorted_i2number + + .. code:: text + + subroutine sorted_i2number(x,isize,n) + + File: :file:`sort.irp.f_template_261` + + Returns the number of sorted elements + + + + + +.. c:function:: sorted_i8number + + .. code:: text + + subroutine sorted_i8number(x,isize,n) + + File: :file:`sort.irp.f_template_261` + + Returns the number of sorted elements + + + + + +.. c:function:: sorted_inumber + + .. code:: text + + subroutine sorted_inumber(x,isize,n) + + File: :file:`sort.irp.f_template_261` + + Returns the number of sorted elements + + + + + +.. c:function:: sorted_number + + .. code:: text + + subroutine sorted_number(x,isize,n) + + File: :file:`sort.irp.f_template_261` + + Returns the number of sorted elements + + + + + +.. c:function:: svd + + .. code:: text + + subroutine svd(A,LDA,U,LDU,D,Vt,LDVt,m,n) + + File: :file:`linear_algebra.irp.f` + + Compute A = U.D.Vt + LDx : leftmost dimension of x + Dimsneion of A is m x n + + + + + + +.. c:function:: total_memory + + .. code:: text + + subroutine total_memory(value) + + File: :file:`memory.irp.f` + + Returns the current used memory in gigabytes used by the current process. + + + + + +.. c:function:: u_dot_u + + .. code:: text + + double precision function u_dot_u(u,sze) + + File: :file:`util.irp.f` + + Compute + + + + + +.. c:function:: u_dot_v + + .. code:: text + + double precision function u_dot_v(u,v,sze) + + File: :file:`util.irp.f` + + Compute + + + + + +.. c:function:: wall_time + + .. code:: text + + subroutine wall_time(t) + + File: :file:`util.irp.f` + + The equivalent of cpu_time, but for the wall time. + + + + + +.. c:function:: write_git_log + + .. code:: text + + subroutine write_git_log(iunit) + + File: :file:`util.irp.f` + + Write the last git commit in file iunit. + + diff --git a/docs/source/modules/zmq.rst b/docs/source/modules/zmq.rst new file mode 100644 index 00000000..e5af0f0c --- /dev/null +++ b/docs/source/modules/zmq.rst @@ -0,0 +1,885 @@ +.. _zmq: + +.. program:: zmq + +.. default-role:: option + +=== +zmq +=== + +Definition of |ZeroMQ| sockets and messages. + + + + + +Providers +--------- + + +.. c:var:: qp_run_address + + .. code:: text + + character*(128) :: qp_run_address + integer :: zmq_port_start + + File: :file:`utils.irp.f` + + Address of the qp_run socket Example : tcp://130.120.229.139:12345 + + + + +.. c:var:: zmq_context + + .. code:: text + + integer(ZMQ_PTR) :: zmq_context + integer(omp_lock_kind) :: zmq_lock + + File: :file:`utils.irp.f` + + Context for the ZeroMQ library + + + + +.. c:var:: zmq_lock + + .. code:: text + + integer(ZMQ_PTR) :: zmq_context + integer(omp_lock_kind) :: zmq_lock + + File: :file:`utils.irp.f` + + Context for the ZeroMQ library + + + + +.. c:var:: zmq_port_start + + .. code:: text + + character*(128) :: qp_run_address + integer :: zmq_port_start + + File: :file:`utils.irp.f` + + Address of the qp_run socket Example : tcp://130.120.229.139:12345 + + + + +.. c:var:: zmq_socket_pair_inproc_address + + .. code:: text + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + File: :file:`utils.irp.f` + + Socket which pulls the results (2) + + + + +.. c:var:: zmq_socket_pull_inproc_address + + .. code:: text + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + File: :file:`utils.irp.f` + + Socket which pulls the results (2) + + + + +.. c:var:: zmq_socket_pull_tcp_address + + .. code:: text + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + File: :file:`utils.irp.f` + + Socket which pulls the results (2) + + + + +.. c:var:: zmq_socket_push_inproc_address + + .. code:: text + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + File: :file:`utils.irp.f` + + Socket which pulls the results (2) + + + + +.. c:var:: zmq_socket_push_tcp_address + + .. code:: text + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + File: :file:`utils.irp.f` + + Socket which pulls the results (2) + + + + +.. c:var:: zmq_socket_sub_tcp_address + + .. code:: text + + character*(128) :: zmq_socket_pull_tcp_address + character*(128) :: zmq_socket_pair_inproc_address + character*(128) :: zmq_socket_push_tcp_address + character*(128) :: zmq_socket_pull_inproc_address + character*(128) :: zmq_socket_push_inproc_address + character*(128) :: zmq_socket_sub_tcp_address + + File: :file:`utils.irp.f` + + Socket which pulls the results (2) + + + + +.. c:var:: zmq_state + + .. code:: text + + character*(128) :: zmq_state + + File: :file:`utils.irp.f` + + Threads executing work through the ZeroMQ interface + + + + +Subroutines / functions +----------------------- + + + +.. c:function:: add_task_to_taskserver + + .. code:: text + + integer function add_task_to_taskserver(zmq_to_qp_run_socket,task) + + File: :file:`utils.irp.f` + + Get a task from the task server + + + + + +.. c:function:: connect_to_taskserver + + .. code:: text + + integer function connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread) + + File: :file:`utils.irp.f` + + Connect to the task server and obtain the worker ID + + + + + +.. c:function:: disconnect_from_taskserver + + .. code:: text + + integer function disconnect_from_taskserver(zmq_to_qp_run_socket, worker_id) + + File: :file:`utils.irp.f` + + Disconnect from the task server + + + + + +.. c:function:: disconnect_from_taskserver_state + + .. code:: text + + integer function disconnect_from_taskserver_state(zmq_to_qp_run_socket, worker_id, state) + + File: :file:`utils.irp.f` + + Disconnect from the task server + + + + + +.. c:function:: end_parallel_job + + .. code:: text + + subroutine end_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in) + + File: :file:`utils.irp.f` + + End a new parallel job with name 'name'. The slave tasks execute subroutine 'slave' + + + + + +.. c:function:: end_zmq_pair_socket + + .. code:: text + + subroutine end_zmq_pair_socket(zmq_socket_pair) + + File: :file:`utils.irp.f` + + Terminate socket on which the results are sent. + + + + + +.. c:function:: end_zmq_pull_socket + + .. code:: text + + subroutine end_zmq_pull_socket(zmq_socket_pull) + + File: :file:`utils.irp.f` + + Terminate socket on which the results are sent. + + + + + +.. c:function:: end_zmq_push_socket + + .. code:: text + + subroutine end_zmq_push_socket(zmq_socket_push,thread) + + File: :file:`utils.irp.f` + + Terminate socket on which the results are sent. + + + + + +.. c:function:: end_zmq_sub_socket + + .. code:: text + + subroutine end_zmq_sub_socket(zmq_socket_sub) + + File: :file:`utils.irp.f` + + Terminate socket on which the results are sent. + + + + + +.. c:function:: end_zmq_to_qp_run_socket + + .. code:: text + + subroutine end_zmq_to_qp_run_socket(zmq_to_qp_run_socket) + + File: :file:`utils.irp.f` + + Terminate the socket from the application to qp_run + + + + + +.. c:function:: get_task_from_taskserver + + .. code:: text + + integer function get_task_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task) + + File: :file:`utils.irp.f` + + Get a task from the task server + + + + + +.. c:function:: get_tasks_from_taskserver + + .. code:: text + + integer function get_tasks_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task,n_tasks) + + File: :file:`utils.irp.f` + + Get multiple tasks from the task server + + + + + +.. c:function:: new_parallel_job + + .. code:: text + + subroutine new_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in) + + File: :file:`utils.irp.f` + + Start a new parallel job with name 'name'. The slave tasks execute subroutine 'slave' + + + + + +.. c:function:: new_zmq_pair_socket + + .. code:: text + + function new_zmq_pair_socket(bind) + + File: :file:`utils.irp.f` + + Socket on which the collector and the main communicate + + + + + +.. c:function:: new_zmq_pull_socket + + .. code:: text + + function new_zmq_pull_socket() + + File: :file:`utils.irp.f` + + Socket on which the results are sent. If thread is 1, use inproc + + + + + +.. c:function:: new_zmq_push_socket + + .. code:: text + + function new_zmq_push_socket(thread) + + File: :file:`utils.irp.f` + + Socket on which the results are sent. If thread is 1, use inproc + + + + + +.. c:function:: new_zmq_sub_socket + + .. code:: text + + function new_zmq_sub_socket() + + File: :file:`utils.irp.f` + + Socket to read the state published by the Task server + + + + + +.. c:function:: new_zmq_to_qp_run_socket + + .. code:: text + + function new_zmq_to_qp_run_socket() + + File: :file:`utils.irp.f` + + Socket on which the qp_run process replies + + + + + +.. c:function:: reset_zmq_addresses + + .. code:: text + + subroutine reset_zmq_addresses + + File: :file:`utils.irp.f` + + Socket which pulls the results (2) + + + + + +.. c:function:: switch_qp_run_to_master + + .. code:: text + + subroutine switch_qp_run_to_master + + File: :file:`utils.irp.f` + + Address of the master qp_run socket Example : tcp://130.120.229.139:12345 + + + + + +.. c:function:: task_done_to_taskserver + + .. code:: text + + integer function task_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id) + + File: :file:`utils.irp.f` + + Get a task from the task server + + + + + +.. c:function:: tasks_done_to_taskserver + + .. code:: text + + integer function tasks_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id, n_tasks) + + File: :file:`utils.irp.f` + + Get a task from the task server + + + + + +.. c:function:: wait_for_next_state + + .. code:: text + + subroutine wait_for_next_state(state) + + File: :file:`utils.irp.f` + + + + + + + +.. c:function:: wait_for_state + + .. code:: text + + subroutine wait_for_state(state_wait,state) + + File: :file:`utils.irp.f` + + Wait for the ZMQ state to be ready + + + + + +.. c:function:: wait_for_states + + .. code:: text + + subroutine wait_for_states(state_wait,state,n) + + File: :file:`utils.irp.f` + + Wait for the ZMQ state to be ready + + + + + +.. c:function:: zmq_abort + + .. code:: text + + integer function zmq_abort(zmq_to_qp_run_socket) + + File: :file:`utils.irp.f` + + Aborts a running parallel computation + + + + + +.. c:function:: zmq_delete_task + + .. code:: text + + integer function zmq_delete_task(zmq_to_qp_run_socket,zmq_socket_pull,task_id,more) + + File: :file:`utils.irp.f` + + When a task is done, it has to be removed from the list of tasks on the qp_run queue. This guarantees that the results have been received in the pull. + + + + + +.. c:function:: zmq_delete_tasks + + .. code:: text + + integer function zmq_delete_tasks(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) + + File: :file:`utils.irp.f` + + When a task is done, it has to be removed from the list of tasks on the qp_run queue. This guarantees that the results have been received in the pull. + + + + + +.. c:function:: zmq_delete_tasks_async_recv + + .. code:: text + + integer function zmq_delete_tasks_async_recv(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) + + File: :file:`utils.irp.f` + + When a task is done, it has to be removed from the list of tasks on the qp_run queue. This guarantees that the results have been received in the pull. + + + + + +.. c:function:: zmq_delete_tasks_async_send + + .. code:: text + + integer function zmq_delete_tasks_async_send(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more) + + File: :file:`utils.irp.f` + + When a task is done, it has to be removed from the list of tasks on the qp_run queue. This guarantees that the results have been received in the pull. + + + + + +.. c:function:: zmq_get8_dvector + + .. code:: text + + integer function zmq_get8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + File: :file:`put_get.irp.f` + + Get a float vector from the qp_run scheduler + + + + + +.. c:function:: zmq_get8_ivector + + .. code:: text + + integer function zmq_get8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + File: :file:`put_get.irp.f` + + Get a vector of integers from the qp_run scheduler + + + + + +.. c:function:: zmq_get_dmatrix + + .. code:: text + + integer function zmq_get_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + File: :file:`put_get.irp.f` + + Get a float vector from the qp_run scheduler + + + + + +.. c:function:: zmq_get_dvector + + .. code:: text + + integer function zmq_get_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + File: :file:`put_get.irp.f` + + Get a float vector from the qp_run scheduler + + + + + +.. c:function:: zmq_get_i8matrix + + .. code:: text + + integer function zmq_get_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + File: :file:`put_get.irp.f` + + Get a float vector from the qp_run scheduler + + + + + +.. c:function:: zmq_get_imatrix + + .. code:: text + + integer function zmq_get_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + File: :file:`put_get.irp.f` + + Get a float vector from the qp_run scheduler + + + + + +.. c:function:: zmq_get_int + + .. code:: text + + integer function zmq_get_int(zmq_to_qp_run_socket, worker_id, name, x) + + File: :file:`put_get.irp.f` + + Get a vector of integers from the qp_run scheduler + + + + + +.. c:function:: zmq_get_int_nompi + + .. code:: text + + integer function zmq_get_int_nompi(zmq_to_qp_run_socket, worker_id, name, x) + + File: :file:`put_get.irp.f` + + Get a vector of integers from the qp_run scheduler + + + + + +.. c:function:: zmq_get_ivector + + .. code:: text + + integer function zmq_get_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + File: :file:`put_get.irp.f` + + Get a vector of integers from the qp_run scheduler + + + + + +.. c:function:: zmq_port + + .. code:: text + + function zmq_port(ishift) + + File: :file:`utils.irp.f` + + Return the value of the ZMQ port from the corresponding integer + + + + + +.. c:function:: zmq_put8_dvector + + .. code:: text + + integer function zmq_put8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + File: :file:`put_get.irp.f` + + Put a float vector on the qp_run scheduler + + + + + +.. c:function:: zmq_put8_ivector + + .. code:: text + + integer function zmq_put8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + File: :file:`put_get.irp.f` + + Put a vector of integers on the qp_run scheduler + + + + + +.. c:function:: zmq_put_dmatrix + + .. code:: text + + integer function zmq_put_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + File: :file:`put_get.irp.f` + + Put a float vector on the qp_run scheduler + + + + + +.. c:function:: zmq_put_dvector + + .. code:: text + + integer function zmq_put_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + File: :file:`put_get.irp.f` + + Put a float vector on the qp_run scheduler + + + + + +.. c:function:: zmq_put_i8matrix + + .. code:: text + + integer function zmq_put_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + File: :file:`put_get.irp.f` + + Put a float vector on the qp_run scheduler + + + + + +.. c:function:: zmq_put_imatrix + + .. code:: text + + integer function zmq_put_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze) + + File: :file:`put_get.irp.f` + + Put a float vector on the qp_run scheduler + + + + + +.. c:function:: zmq_put_int + + .. code:: text + + integer function zmq_put_int(zmq_to_qp_run_socket, worker_id, name, x) + + File: :file:`put_get.irp.f` + + Put a vector of integers on the qp_run scheduler + + + + + +.. c:function:: zmq_put_ivector + + .. code:: text + + integer function zmq_put_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x) + + File: :file:`put_get.irp.f` + + Put a vector of integers on the qp_run scheduler + + + + + +.. c:function:: zmq_set_running + + .. code:: text + + integer function zmq_set_running(zmq_to_qp_run_socket) + + File: :file:`utils.irp.f` + + Set the job to Running in QP-run + + diff --git a/docs/source/programmers_guide/index_providers.rst b/docs/source/programmers_guide/index_providers.rst index 72baecef..446cc193 100644 --- a/docs/source/programmers_guide/index_providers.rst +++ b/docs/source/programmers_guide/index_providers.rst @@ -8,10 +8,8 @@ Index of Providers * :c:data:`ao_bi_elec_integral_alpha` * :c:data:`ao_bi_elec_integral_beta` * :c:data:`ao_bielec_integral_erf_schwartz` -* :c:data:`ao_bielec_integral_ijkl_r3_schwartz` * :c:data:`ao_bielec_integral_schwartz` * :c:data:`ao_bielec_integrals_erf_in_map` -* :c:data:`ao_bielec_integrals_ijkl_r3_in_map` * :c:data:`ao_bielec_integrals_in_map` * :c:data:`ao_cart_to_sphe_coef` * :c:data:`ao_cart_to_sphe_inv` @@ -45,10 +43,6 @@ Index of Providers * :c:data:`ao_integrals_erf_cache_max` * :c:data:`ao_integrals_erf_cache_min` * :c:data:`ao_integrals_erf_map` -* :c:data:`ao_integrals_ijkl_r3_cache` -* :c:data:`ao_integrals_ijkl_r3_cache_max` -* :c:data:`ao_integrals_ijkl_r3_cache_min` -* :c:data:`ao_integrals_ijkl_r3_map` * :c:data:`ao_integrals_map` * :c:data:`ao_integrals_threshold` * :c:data:`ao_kinetic_integral` @@ -118,17 +112,11 @@ Index of Providers * :c:data:`aos_vx_alpha_pbe_w` * :c:data:`aos_vx_beta_lda_w` * :c:data:`aos_vx_beta_pbe_w` -* :c:data:`approx_svd_two_dm` -* :c:data:`approx_svd_two_dm_correl` -* :c:data:`approx_two_dm_map` -* :c:data:`approx_two_dm_map_rev` +* :c:data:`apply_exc_to_psi` * :c:data:`barycentric_electronic_energy` * :c:data:`bi_elec_ref_bitmask_energy` -* :c:data:`bi_elec_ref_bitmask_energy_erf` * :c:data:`big_array_coulomb_integrals` -* :c:data:`big_array_coulomb_integrals_ijkl_r3` * :c:data:`big_array_exchange_integrals` -* :c:data:`big_array_exchange_integrals_ijkl_r3` * :c:data:`binom` * :c:data:`binom_int` * :c:data:`binom_int_transp` @@ -146,8 +134,12 @@ Index of Providers * :c:data:`cart_to_sphe_9` * :c:data:`cas_bitmask` * :c:data:`center_of_mass` +* :c:data:`ci_dressed_pt2_new_eigenvectors` +* :c:data:`ci_dressed_pt2_new_eigenvectors_s2` +* :c:data:`ci_dressed_pt2_new_energy` * :c:data:`ci_eigenvectors` * :c:data:`ci_eigenvectors_s2` +* :c:data:`ci_electronic_dressed_pt2_new_energy` * :c:data:`ci_electronic_energy` * :c:data:`ci_energy` * :c:data:`closed_shell_ref_bitmask` @@ -159,6 +151,7 @@ Index of Providers * :c:data:`core_fock_operator_erf` * :c:data:`core_inact_act_bitmask_4` * :c:data:`core_inact_virt_bitmask` +* :c:data:`corr_e_from_1h1p` * :c:data:`correlation_energy_ratio_max` * :c:data:`correlation_functional` * :c:data:`damping_for_rs_dft` @@ -171,6 +164,7 @@ Index of Providers * :c:data:`degree_max_generators` * :c:data:`degree_max_integration_lebedev` * :c:data:`delta_e_per_selector` +* :c:data:`delta_ij_mrpt` * :c:data:`density_for_dft` * :c:data:`det_alpha_norm` * :c:data:`det_beta_norm` @@ -178,11 +172,9 @@ Index of Providers * :c:data:`dft_type` * :c:data:`diag_algorithm` * :c:data:`diagonal_h_matrix_on_psi_det` -* :c:data:`disk_access_ao_ijkl_r3` * :c:data:`disk_access_ao_integrals` * :c:data:`disk_access_ao_integrals_erf` * :c:data:`disk_access_ao_one_integrals` -* :c:data:`disk_access_mo_ijkl_r3` * :c:data:`disk_access_mo_integrals` * :c:data:`disk_access_mo_integrals_erf` * :c:data:`disk_access_mo_one_integrals` @@ -192,6 +184,7 @@ Index of Providers * :c:data:`do_direct_integrals` * :c:data:`do_pseudo` * :c:data:`do_pt2` +* :c:data:`do_third_order_1h1p` * :c:data:`double_exc_bitmask` * :c:data:`double_index_selectors` * :c:data:`dr_radial_integral` @@ -213,16 +206,13 @@ Index of Providers * :c:data:`elec_beta_num` * :c:data:`elec_num` * :c:data:`elec_num_tab` -* :c:data:`electronic_energy_mr_dft` * :c:data:`element_mass` * :c:data:`element_name` * :c:data:`energy_c` * :c:data:`energy_c_lda` -* :c:data:`energy_c_md_lda` -* :c:data:`energy_c_md_on_top` -* :c:data:`energy_c_md_on_top_pbe_mu_ueg_vector` -* :c:data:`energy_c_md_on_top_pbe_mu_vector` * :c:data:`energy_c_pbe` +* :c:data:`energy_cas_dyall` +* :c:data:`energy_cas_dyall_no_exchange` * :c:data:`energy_iterations` * :c:data:`energy_sr_c_lda` * :c:data:`energy_sr_c_pbe` @@ -242,8 +232,12 @@ Index of Providers * :c:data:`fact_inv` * :c:data:`fill_h_apply_buffer_selection` * :c:data:`final_grid_points` -* :c:data:`final_weight_at_r` -* :c:data:`final_weight_at_r_vector` +* :c:data:`final_weight_functions_at_final_grid_points` +* :c:data:`final_weight_functions_at_grid_points` +* :c:data:`fock_core_inactive` +* :c:data:`fock_core_inactive_from_act` +* :c:data:`fock_core_inactive_total` +* :c:data:`fock_core_inactive_total_spin_trace` * :c:data:`fock_matrix_alpha_no_xc_ao` * :c:data:`fock_matrix_ao` * :c:data:`fock_matrix_ao_alpha` @@ -254,7 +248,12 @@ Index of Providers * :c:data:`fock_matrix_mo` * :c:data:`fock_matrix_mo_alpha` * :c:data:`fock_matrix_mo_beta` +* :c:data:`fock_operator_active_from_core_inact` * :c:data:`fock_operator_closed_shell_ref_bitmask` +* :c:data:`fock_virt_from_act` +* :c:data:`fock_virt_from_core_inact` +* :c:data:`fock_virt_total` +* :c:data:`fock_virt_total_spin_trace` * :c:data:`fock_wee_closed_shell` * :c:data:`fps_spf_matrix_ao` * :c:data:`fps_spf_matrix_mo` @@ -262,12 +261,17 @@ Index of Providers * :c:data:`full_ijkl_bitmask_4` * :c:data:`gauleg_t2` * :c:data:`gauleg_w` +* :c:data:`gen_det_ref_idx` +* :c:data:`gen_det_ref_shortcut` +* :c:data:`gen_det_ref_sorted` +* :c:data:`gen_det_ref_version` * :c:data:`general_primitive_integral` * :c:data:`general_primitive_integral_erf` * :c:data:`generators_bitmask` * :c:data:`generators_bitmask_restart` * :c:data:`gga_sr_type_functionals` * :c:data:`gga_type_functionals` +* :c:data:`give_holes_and_particles_in_active_space` * :c:data:`grad_aos_dsr_vc_alpha_pbe_w` * :c:data:`grad_aos_dsr_vc_beta_pbe_w` * :c:data:`grad_aos_dsr_vx_alpha_pbe_w` @@ -283,11 +287,15 @@ Index of Providers * :c:data:`h_apply_buffer_lock` * :c:data:`h_matrix_all_dets` * :c:data:`h_matrix_cas` +* :c:data:`h_matrix_ref` * :c:data:`hf_bitmask` * :c:data:`hf_energy` * :c:data:`hf_exchange` * :c:data:`hf_one_electron_energy` * :c:data:`hf_two_electron_energy` +* :c:data:`hmatrix_dressed_pt2_new` +* :c:data:`hmatrix_dressed_pt2_new_symmetrized` +* :c:data:`holes_operators` * :c:data:`i2radix_sort` * :c:data:`i8radix_sort` * :c:data:`i8radix_sort_big` @@ -303,6 +311,10 @@ Index of Providers * :c:data:`i_x2_pol_mult_mono_elec` * :c:data:`idx_cas` * :c:data:`idx_non_cas` +* :c:data:`idx_non_ref` +* :c:data:`idx_non_ref_from_sorted` +* :c:data:`idx_non_ref_rev` +* :c:data:`idx_ref` * :c:data:`inact_bitmask` * :c:data:`inact_virt_bitmask` * :c:data:`index_final_points` @@ -314,14 +326,13 @@ Index of Providers * :c:data:`inertia_tensor_eigenvectors` * :c:data:`initialize_pt2_e0_denominator` * :c:data:`insert_into_mo_integrals_erf_map` -* :c:data:`insert_into_mo_integrals_ijkl_r3_map` * :c:data:`insert_into_mo_integrals_map` * :c:data:`int_erf_3_index` * :c:data:`int_erf_3_index_exc` -* :c:data:`int_on_top_of_r_approx_svd` -* :c:data:`int_on_top_of_r_approx_svd_correl` -* :c:data:`integral_on_top` +* :c:data:`integral_density_alpha_knowles_becke_per_atom` +* :c:data:`integral_density_beta_knowles_becke_per_atom` * :c:data:`inv_int` +* :c:data:`inv_norm_psi_ref` * :c:data:`inv_selectors_coef_hf` * :c:data:`inv_selectors_coef_hf_squared` * :c:data:`iradix_sort` @@ -330,10 +341,6 @@ Index of Providers * :c:data:`ks_energy` * :c:data:`l3_weight` * :c:data:`l_to_charater` -* :c:data:`l_vec_approx_svd_two_dm` -* :c:data:`l_vec_approx_svd_two_dm_at_r` -* :c:data:`l_vec_approx_svd_two_dm_at_r_correl` -* :c:data:`l_vec_approx_svd_two_dm_correl` * :c:data:`level_shift` * :c:data:`list_act` * :c:data:`list_act_reverse` @@ -351,12 +358,6 @@ Index of Providers * :c:data:`max_degree_exc` * :c:data:`max_dim_diis` * :c:data:`max_exc_pert` -* :c:data:`mo_bielec_integral_ijkl_r3_jj` -* :c:data:`mo_bielec_integral_ijkl_r3_jj_anti` -* :c:data:`mo_bielec_integral_ijkl_r3_jj_anti_from_ao` -* :c:data:`mo_bielec_integral_ijkl_r3_jj_exchange` -* :c:data:`mo_bielec_integral_ijkl_r3_jj_exchange_from_ao` -* :c:data:`mo_bielec_integral_ijkl_r3_jj_from_ao` * :c:data:`mo_bielec_integral_jj` * :c:data:`mo_bielec_integral_jj_anti` * :c:data:`mo_bielec_integral_jj_anti_from_ao` @@ -367,7 +368,6 @@ Index of Providers * :c:data:`mo_bielec_integral_vv_exchange_from_ao` * :c:data:`mo_bielec_integral_vv_from_ao` * :c:data:`mo_bielec_integrals_erf_in_map` -* :c:data:`mo_bielec_integrals_ijkl_r3_in_map` * :c:data:`mo_bielec_integrals_in_map` * :c:data:`mo_class` * :c:data:`mo_coef` @@ -388,10 +388,6 @@ Index of Providers * :c:data:`mo_integrals_erf_cache_max` * :c:data:`mo_integrals_erf_cache_min` * :c:data:`mo_integrals_erf_map` -* :c:data:`mo_integrals_ijkl_r3_cache` -* :c:data:`mo_integrals_ijkl_r3_cache_max` -* :c:data:`mo_integrals_ijkl_r3_cache_min` -* :c:data:`mo_integrals_ijkl_r3_map` * :c:data:`mo_integrals_map` * :c:data:`mo_integrals_threshold` * :c:data:`mo_kinetic_integral` @@ -427,8 +423,6 @@ Index of Providers * :c:data:`mu_erf_dft` * :c:data:`n_act_orb` * :c:data:`n_aos_max` -* :c:data:`n_approx_svd_two_dm` -* :c:data:`n_approx_svd_two_dm_correl` * :c:data:`n_cas_bitmask` * :c:data:`n_core_inact_act_orb` * :c:data:`n_core_inact_orb` @@ -443,6 +437,8 @@ Index of Providers * :c:data:`n_det_max` * :c:data:`n_det_max_full` * :c:data:`n_det_non_cas` +* :c:data:`n_det_non_ref` +* :c:data:`n_det_ref` * :c:data:`n_det_selectors` * :c:data:`n_double_exc_bitmasks` * :c:data:`n_double_selectors` @@ -453,8 +449,6 @@ Index of Providers * :c:data:`n_int` * :c:data:`n_it_scf_max` * :c:data:`n_iter` -* :c:data:`n_max_approx_svd_two_dm` -* :c:data:`n_max_approx_svd_two_dm_correl` * :c:data:`n_occ_pattern` * :c:data:`n_points_final_grid` * :c:data:`n_points_grid_per_atom` @@ -472,6 +466,7 @@ Index of Providers * :c:data:`no_oa_or_av_opt` * :c:data:`no_vvv_integrals` * :c:data:`no_vvvv_integrals` +* :c:data:`norm_psi_ref` * :c:data:`nproc` * :c:data:`nthreads_davidson` * :c:data:`nucl_aos` @@ -493,24 +488,31 @@ Index of Providers * :c:data:`nucl_num` * :c:data:`nucl_num_shell_aos` * :c:data:`nuclear_repulsion` -* :c:data:`on_top_of_r` -* :c:data:`on_top_of_r_approx_svd` -* :c:data:`on_top_of_r_approx_svd_correl` -* :c:data:`on_top_of_r_exact` -* :c:data:`on_top_of_r_vector` +* :c:data:`one_anhil` +* :c:data:`one_anhil_inact` +* :c:data:`one_anhil_one_creat` +* :c:data:`one_anhil_one_creat_inact_virt` +* :c:data:`one_anhil_one_creat_inact_virt_bis` +* :c:data:`one_anhil_one_creat_inact_virt_norm` +* :c:data:`one_body_dm_alpha_and_grad_at_r` * :c:data:`one_body_dm_alpha_ao_for_dft` * :c:data:`one_body_dm_alpha_at_r` * :c:data:`one_body_dm_ao_alpha` * :c:data:`one_body_dm_ao_beta` * :c:data:`one_body_dm_average_mo_for_dft` +* :c:data:`one_body_dm_beta_and_grad_at_r` * :c:data:`one_body_dm_beta_ao_for_dft` * :c:data:`one_body_dm_beta_at_r` * :c:data:`one_body_dm_dagger_mo_spin_index` * :c:data:`one_body_dm_mo` * :c:data:`one_body_dm_mo_alpha` +* :c:data:`one_body_dm_mo_alpha_and_grad_at_grid_points` +* :c:data:`one_body_dm_mo_alpha_at_grid_points` * :c:data:`one_body_dm_mo_alpha_average` * :c:data:`one_body_dm_mo_alpha_for_dft` * :c:data:`one_body_dm_mo_beta` +* :c:data:`one_body_dm_mo_beta_and_grad_at_grid_points` +* :c:data:`one_body_dm_mo_beta_at_grid_points` * :c:data:`one_body_dm_mo_beta_average` * :c:data:`one_body_dm_mo_beta_for_dft` * :c:data:`one_body_dm_mo_diff` @@ -522,16 +524,14 @@ Index of Providers * :c:data:`one_body_single_double_dm_mo_beta` * :c:data:`one_body_spin_density_ao` * :c:data:`one_body_spin_density_mo` -* :c:data:`one_dm_alpha_in_r` -* :c:data:`one_dm_and_grad_alpha_in_r` -* :c:data:`one_dm_and_grad_beta_in_r` -* :c:data:`one_dm_beta_in_r` +* :c:data:`one_creat` +* :c:data:`one_creat_virt` * :c:data:`one_electron_energy` * :c:data:`only_expected_s2` -* :c:data:`ontop_approx` * :c:data:`output_cpu_time_0` * :c:data:`output_wall_time_0` * :c:data:`overlap_gaussian_xyz` +* :c:data:`particles_operators` * :c:data:`phi_angular_integration_lebedev` * :c:data:`potential_c_alpha_ao` * :c:data:`potential_c_alpha_ao_lda` @@ -574,6 +574,7 @@ Index of Providers * :c:data:`pseudo_v_k_transp` * :c:data:`pseudo_v_kl` * :c:data:`pseudo_v_kl_transp` +* :c:data:`psi_active` * :c:data:`psi_average_norm_contrib` * :c:data:`psi_average_norm_contrib_sorted` * :c:data:`psi_bilinear_matrix` @@ -621,16 +622,36 @@ Index of Providers * :c:data:`psi_dft_energy_nuclear_elec` * :c:data:`psi_energy` * :c:data:`psi_energy_bielec` -* :c:data:`psi_energy_erf` * :c:data:`psi_energy_h_core` -* :c:data:`psi_energy_h_core_and_sr_hartree` * :c:data:`psi_energy_with_nucl_rep` * :c:data:`psi_non_cas` * :c:data:`psi_non_cas_coef` * :c:data:`psi_non_cas_coef_sorted_bit` * :c:data:`psi_non_cas_sorted_bit` +* :c:data:`psi_non_ref` +* :c:data:`psi_non_ref_coef` +* :c:data:`psi_non_ref_coef_interm_norm` +* :c:data:`psi_non_ref_coef_restart` +* :c:data:`psi_non_ref_coef_sorted_bit` +* :c:data:`psi_non_ref_coef_transp` +* :c:data:`psi_non_ref_restart` +* :c:data:`psi_non_ref_sorted_bit` * :c:data:`psi_occ_pattern` * :c:data:`psi_occ_pattern_hii` +* :c:data:`psi_ref` +* :c:data:`psi_ref_bis_lock` +* :c:data:`psi_ref_coef` +* :c:data:`psi_ref_coef_diagonalized` +* :c:data:`psi_ref_coef_interm_norm` +* :c:data:`psi_ref_coef_inv` +* :c:data:`psi_ref_coef_normalized` +* :c:data:`psi_ref_coef_restart` +* :c:data:`psi_ref_coef_sorted_bit` +* :c:data:`psi_ref_coef_transp` +* :c:data:`psi_ref_energy` +* :c:data:`psi_ref_energy_diagonalized` +* :c:data:`psi_ref_restart` +* :c:data:`psi_ref_sorted_bit` * :c:data:`psi_selectors` * :c:data:`psi_selectors_coef` * :c:data:`psi_selectors_coef_transp` @@ -656,17 +677,11 @@ Index of Providers * :c:data:`pt2_w_t` * :c:data:`qp_max_mem` * :c:data:`qp_run_address` -* :c:data:`r_vec_approx_svd_two_dm` -* :c:data:`r_vec_approx_svd_two_dm_at_r` -* :c:data:`r_vec_approx_svd_two_dm_at_r_correl` -* :c:data:`r_vec_approx_svd_two_dm_correl` * :c:data:`read_ao_integrals` * :c:data:`read_ao_integrals_erf` -* :c:data:`read_ao_integrals_ijkl_r3` * :c:data:`read_ao_one_integrals` * :c:data:`read_mo_integrals` * :c:data:`read_mo_integrals_erf` -* :c:data:`read_mo_integrals_ijkl_r3` * :c:data:`read_mo_one_integrals` * :c:data:`read_wf` * :c:data:`rec__quicksort` @@ -676,8 +691,8 @@ Index of Providers * :c:data:`rec_i_quicksort` * :c:data:`ref_bitmask` * :c:data:`ref_bitmask_energy` -* :c:data:`ref_bitmask_energy_erf` * :c:data:`ref_closed_shell_bitmask` +* :c:data:`ref_hamiltonian_matrix` * :c:data:`reunion_of_bitmask` * :c:data:`reunion_of_cas_inact_bitmask` * :c:data:`reunion_of_core_inact_act_bitmask` @@ -696,6 +711,15 @@ Index of Providers * :c:data:`scf_density_matrix_ao_alpha` * :c:data:`scf_density_matrix_ao_beta` * :c:data:`scf_energy` +* :c:data:`second_order_pt_new` +* :c:data:`second_order_pt_new_1h` +* :c:data:`second_order_pt_new_1h1p` +* :c:data:`second_order_pt_new_1h2p` +* :c:data:`second_order_pt_new_1p` +* :c:data:`second_order_pt_new_2h` +* :c:data:`second_order_pt_new_2h1p` +* :c:data:`second_order_pt_new_2h2p` +* :c:data:`second_order_pt_new_2p` * :c:data:`select_max` * :c:data:`selection_criterion` * :c:data:`selection_criterion_factor` @@ -719,7 +743,8 @@ Index of Providers * :c:data:`state_following` * :c:data:`target_energy` * :c:data:`theta_angular_integration_lebedev` -* :c:data:`thr_ontop_approx` +* :c:data:`three_anhil` +* :c:data:`three_creat` * :c:data:`thresh_scf` * :c:data:`threshold_davidson` * :c:data:`threshold_diis` @@ -731,27 +756,25 @@ Index of Providers * :c:data:`trace_v_hxc` * :c:data:`trace_v_xc` * :c:data:`transpose` -* :c:data:`two_bod_alpha_beta_mo` -* :c:data:`two_bod_alpha_beta_mo_physicist` -* :c:data:`two_elec_energy_dft` +* :c:data:`two_anhil` +* :c:data:`two_anhil_one_creat` +* :c:data:`two_creat` +* :c:data:`two_creat_one_anhil` * :c:data:`two_electron_energy` * :c:data:`unpaired_alpha_electrons` * :c:data:`used_weight` * :c:data:`var_pt2_ratio` -* :c:data:`var_rsdft_energy` * :c:data:`virt_bitmask` * :c:data:`virt_bitmask_4` -* :c:data:`weight_at_r` +* :c:data:`weight_functions_at_grid_points` * :c:data:`weight_occ_pattern` * :c:data:`weights_angular_integration_lebedev` * :c:data:`weights_angular_points` * :c:data:`write_ao_integrals` * :c:data:`write_ao_integrals_erf` -* :c:data:`write_ao_integrals_ijkl_r3` * :c:data:`write_ao_one_integrals` * :c:data:`write_mo_integrals` * :c:data:`write_mo_integrals_erf` -* :c:data:`write_mo_integrals_ijkl_r3` * :c:data:`write_mo_one_integrals` * :c:data:`zmq_context` * :c:data:`zmq_lock` @@ -774,7 +797,6 @@ Index of Subroutines/Functions * :c:func:`ac_operator_bielec` * :c:func:`add_integrals_to_map` * :c:func:`add_integrals_to_map_erf` -* :c:func:`add_integrals_to_map_ijkl_r3` * :c:func:`add_integrals_to_map_no_exit_34` * :c:func:`add_integrals_to_map_three_indices` * :c:func:`add_poly` @@ -783,17 +805,12 @@ Index of Subroutines/Functions * :c:func:`add_to_selection_buffer` * :c:func:`ao_bielec_integral` * :c:func:`ao_bielec_integral_erf` -* :c:func:`ao_bielec_integral_ijkl_r3` * :c:func:`ao_bielec_integral_schwartz_accel` * :c:func:`ao_bielec_integral_schwartz_accel_erf` * :c:func:`ao_bielec_integrals_erf_in_map_collector` * :c:func:`ao_bielec_integrals_erf_in_map_slave` * :c:func:`ao_bielec_integrals_erf_in_map_slave_inproc` * :c:func:`ao_bielec_integrals_erf_in_map_slave_tcp` -* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_collector` -* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_slave` -* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_slave_inproc` -* :c:func:`ao_bielec_integrals_ijkl_r3_in_map_slave_tcp` * :c:func:`ao_bielec_integrals_in_map_collector` * :c:func:`ao_bielec_integrals_in_map_slave` * :c:func:`ao_bielec_integrals_in_map_slave_inproc` @@ -826,90 +843,34 @@ Index of Subroutines/Functions * :c:func:`broadcast_chunks_integer` * :c:func:`broadcast_chunks_integer8` * :c:func:`build_fock_tmp` -* :c:func:`c2_delta` -* :c:func:`c3t_delta` -* :c:func:`c4_delta` -* :c:func:`c5_delta` -* :c:func:`c5t_delta` -* :c:func:`capital_c4_delta` * :c:func:`cell_function_becke` * :c:func:`check_coherence_functional` * :c:func:`check_mem` * :c:func:`cis` * :c:func:`cisd` * :c:func:`clear_ao_erf_map` -* :c:func:`clear_ao_ijkl_r3_map` * :c:func:`clear_ao_map` * :c:func:`clear_bit_to_integer` * :c:func:`clear_mo_erf_map` -* :c:func:`clear_mo_ijkl_r3_map` * :c:func:`clear_mo_map` * :c:func:`compute_ao_bielec_integrals` * :c:func:`compute_ao_bielec_integrals_erf` -* :c:func:`compute_ao_bielec_integrals_ijkl_r3` * :c:func:`compute_ao_integrals_erf_jl` -* :c:func:`compute_ao_integrals_ijkl_r3_jl` * :c:func:`compute_ao_integrals_jl` * :c:func:`connect_to_taskserver` * :c:func:`connected_to_ref` * :c:func:`connected_to_ref_by_mono` +* :c:func:`contrib_1h2p_dm_based` +* :c:func:`contrib_2h1p_dm_based` * :c:func:`copy_h_apply_buffer_to_wf` * :c:func:`copy_psi_bilinear_to_psi` -* :c:func:`correction_to_on_top_from_ueg` +* :c:func:`coulomb_value_no_check` * :c:func:`create_guess` * :c:func:`create_microlist` * :c:func:`create_minilist` * :c:func:`create_minilist_find_previous` * :c:func:`create_selection_buffer` * :c:func:`create_wf_of_psi_bilinear_matrix` -* :c:func:`d0delta` -* :c:func:`d2_delta` -* :c:func:`d3_delta` -* :c:func:`d_1st_deltaterm` -* :c:func:`d_2nd_deltaterm` -* :c:func:`d_3rd_deltaterm` -* :c:func:`d_4th_deltaterm` -* :c:func:`d_5th_deltaterm` -* :c:func:`d_c2_delta` -* :c:func:`d_c3t_delta` -* :c:func:`d_c4_delta` -* :c:func:`d_c5_delta` -* :c:func:`d_c5t_delta` -* :c:func:`d_capital_c4_delta` -* :c:func:`d_d0delta` -* :c:func:`d_d2_delta` -* :c:func:`d_d3_delta` -* :c:func:`d_delta_2` -* :c:func:`d_delta_3` -* :c:func:`d_delta_4` -* :c:func:`d_delta_5` -* :c:func:`d_delta_6` -* :c:func:`d_delta_barth` -* :c:func:`d_denominator_delta` -* :c:func:`d_total_deltarho_rhoa` -* :c:func:`d_total_deltarho_rhob` -* :c:func:`d_wignerseitz_radius` -* :c:func:`d_xi_1st_deltaterm` -* :c:func:`d_xi_2nd_deltaterm` -* :c:func:`d_xi_3rd_deltaterm` -* :c:func:`d_xi_4th_deltaterm` -* :c:func:`d_xi_5th_deltaterm` -* :c:func:`d_xi_c2_delta` -* :c:func:`d_xi_c3t_delta` -* :c:func:`d_xi_c4_delta` -* :c:func:`d_xi_c5_delta` -* :c:func:`d_xi_c5t_delta` -* :c:func:`d_xi_capital_c4_delta` -* :c:func:`d_xi_d0delta` -* :c:func:`d_xi_delta_3` -* :c:func:`d_xi_delta_4` -* :c:func:`d_xi_delta_5` -* :c:func:`d_xi_delta_6` -* :c:func:`d_xi_delta_barth` -* :c:func:`d_xi_denominator_delta` -* :c:func:`d_xi_phi_8_delta` -* :c:func:`d_xi_rhoa` -* :c:func:`d_xi_rhob` * :c:func:`damping_scf` * :c:func:`davidson_collector` * :c:func:`davidson_converged` @@ -932,31 +893,20 @@ Index of Subroutines/Functions * :c:func:`decode_exc` * :c:func:`decode_exc_spin` * :c:func:`delete_selection_buffer` -* :c:func:`delta_2` -* :c:func:`delta_3` -* :c:func:`delta_4` -* :c:func:`delta_5` -* :c:func:`delta_6` -* :c:func:`delta_barth` -* :c:func:`delta_lrsr_ldaerf` -* :c:func:`denominator_delta` * :c:func:`density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r` * :c:func:`derivative_knowles_function` * :c:func:`det_inf` * :c:func:`det_search_key` * :c:func:`detcmp` * :c:func:`deteq` -* :c:func:`dft_utils_ecmd` -* :c:func:`dft_utils_two_body_main` * :c:func:`diag_h_mat_elem` * :c:func:`diag_h_mat_elem_au0_h_au0` -* :c:func:`diag_h_mat_elem_erf` * :c:func:`diag_h_mat_elem_fock` * :c:func:`diag_h_mat_elem_monoelec` +* :c:func:`diag_h_mat_elem_no_elec_check` +* :c:func:`diag_h_mat_elem_no_elec_check_no_exchange` * :c:func:`diag_s_mat_elem` * :c:func:`diag_wee_mat_elem` -* :c:func:`diagonal_contrib_to_all_two_body_dm` -* :c:func:`diagonal_contrib_to_two_body_ab_dm` * :c:func:`diagonalize_ci` * :c:func:`diagonalize_h` * :c:func:`disconnect_from_taskserver` @@ -972,9 +922,7 @@ Index of Subroutines/Functions * :c:func:`dsort` * :c:func:`dump_ao_integrals` * :c:func:`dump_ao_integrals_erf` -* :c:func:`dump_ao_integrals_ijkl_r3` * :c:func:`dump_mo_integrals` -* :c:func:`dump_mo_integrals_ijkl_r3` * :c:func:`ec_lda` * :c:func:`ec_lda_sr` * :c:func:`ec_only_lda_sr` @@ -991,8 +939,6 @@ Index of Subroutines/Functions * :c:func:`erf0` * :c:func:`eri` * :c:func:`eri_erf` -* :c:func:`esrc_md_ldaerf` -* :c:func:`esrc_md_ldaerf_barth` * :c:func:`ex_lda` * :c:func:`ex_lda_sr` * :c:func:`ex_pbe_sr` @@ -1001,6 +947,7 @@ Index of Subroutines/Functions * :c:func:`example_bitmask` * :c:func:`example_determinants` * :c:func:`example_determinants_psi_det` +* :c:func:`extract_ref` * :c:func:`extrapolate_data` * :c:func:`f_function_becke` * :c:func:`f_integral` @@ -1012,14 +959,12 @@ Index of Subroutines/Functions * :c:func:`filter_connected` * :c:func:`filter_connected_i_h_psi0` * :c:func:`filter_not_connected` +* :c:func:`find_connections_previous` * :c:func:`find_rotation` * :c:func:`four_idx_transform` -* :c:func:`g0_ueg_mu` -* :c:func:`g0_ueg_mu_inf` * :c:func:`g0d` * :c:func:`g0dd` * :c:func:`g0f` -* :c:func:`g0s` * :c:func:`gammln` * :c:func:`gammp` * :c:func:`gauleg` @@ -1047,19 +992,17 @@ Index of Subroutines/Functions * :c:func:`get_all_spin_singles_n_int` * :c:func:`get_ao_bielec_integral` * :c:func:`get_ao_bielec_integral_erf` -* :c:func:`get_ao_bielec_integral_ijkl_r3` * :c:func:`get_ao_bielec_integrals` * :c:func:`get_ao_bielec_integrals_erf` * :c:func:`get_ao_bielec_integrals_erf_non_zero` -* :c:func:`get_ao_bielec_integrals_ijkl_r3` -* :c:func:`get_ao_bielec_integrals_ijkl_r3_non_zero` * :c:func:`get_ao_bielec_integrals_non_zero` * :c:func:`get_ao_erf_map_size` -* :c:func:`get_ao_ijkl_r3_map_size` * :c:func:`get_ao_map_size` * :c:func:`get_d0` * :c:func:`get_d1` * :c:func:`get_d2` +* :c:func:`get_delta_e_dyall` +* :c:func:`get_delta_e_dyall_general_mp` * :c:func:`get_double_excitation` * :c:func:`get_double_excitation_spin` * :c:func:`get_excitation` @@ -1074,6 +1017,7 @@ Index of Subroutines/Functions * :c:func:`get_index_in_psi_det_alpha_unique` * :c:func:`get_index_in_psi_det_beta_unique` * :c:func:`get_index_in_psi_det_sorted_bit` +* :c:func:`get_index_in_psi_ref_sorted_bit` * :c:func:`get_inverse` * :c:func:`get_m0` * :c:func:`get_m1` @@ -1081,7 +1025,6 @@ Index of Subroutines/Functions * :c:func:`get_mask_phase` * :c:func:`get_mo_bielec_integral` * :c:func:`get_mo_bielec_integral_erf` -* :c:func:`get_mo_bielec_integral_ijkl_r3` * :c:func:`get_mo_bielec_integrals` * :c:func:`get_mo_bielec_integrals_coulomb_ii` * :c:func:`get_mo_bielec_integrals_erf` @@ -1092,12 +1035,7 @@ Index of Subroutines/Functions * :c:func:`get_mo_bielec_integrals_exch_ii` * :c:func:`get_mo_bielec_integrals_i1j1` * :c:func:`get_mo_bielec_integrals_ij` -* :c:func:`get_mo_bielec_integrals_ijkl_r3` -* :c:func:`get_mo_bielec_integrals_ijkl_r3_coulomb_ii` -* :c:func:`get_mo_bielec_integrals_ijkl_r3_exch_ii` -* :c:func:`get_mo_bielec_integrals_ijkl_r3_ij` * :c:func:`get_mo_erf_map_size` -* :c:func:`get_mo_ijkl_r3_map_size` * :c:func:`get_mo_map_size` * :c:func:`get_mono_excitation` * :c:func:`get_mono_excitation_from_fock` @@ -1112,6 +1050,19 @@ Index of Subroutines/Functions * :c:func:`get_uj_s2_ui` * :c:func:`getmobiles` * :c:func:`getunitandopen` +* :c:func:`give_1h1p_contrib` +* :c:func:`give_1h1p_only_doubles_spin_cross` +* :c:func:`give_1h1p_sec_order_singles_contrib` +* :c:func:`give_1h2p_contrib` +* :c:func:`give_1h2p_contrib_sec_order` +* :c:func:`give_1h2p_new` +* :c:func:`give_1p_sec_order_singles_contrib` +* :c:func:`give_2h1p_contrib` +* :c:func:`give_2h1p_contrib_sec_order` +* :c:func:`give_2h1p_new` +* :c:func:`give_2h2p` +* :c:func:`give_2p_new` +* :c:func:`give_active_part_determinant` * :c:func:`give_all_aos_and_grad_and_lapl_at_r` * :c:func:`give_all_aos_and_grad_at_r` * :c:func:`give_all_aos_at_r` @@ -1120,19 +1071,21 @@ Index of Subroutines/Functions * :c:func:`give_all_mos_and_grad_and_lapl_at_r` * :c:func:`give_all_mos_and_grad_at_r` * :c:func:`give_all_mos_at_r` -* :c:func:`give_epsilon_c_md_on_top_pbe_mu_corrected_from_two_dm` -* :c:func:`give_epsilon_c_md_on_top_pbe_mu_corrected_ueg_from_two_dm` +* :c:func:`give_core_inactive_part_determinant` * :c:func:`give_explicit_poly_and_gaussian` * :c:func:`give_explicit_poly_and_gaussian_double` * :c:func:`give_explicit_poly_and_gaussian_x` +* :c:func:`give_holes_in_inactive_space` +* :c:func:`give_particles_in_virt_space` * :c:func:`give_polynom_mult_center_mono_elec` * :c:func:`give_polynom_mult_center_mono_elec_erf` * :c:func:`give_polynom_mult_center_mono_elec_erf_opt` * :c:func:`give_polynom_mult_center_x` +* :c:func:`give_singles_and_partial_doubles_1h1p_contrib` +* :c:func:`give_virt_part_determinant` * :c:func:`gpw` * :c:func:`grad_rho_ab_to_grad_rho_oc` * :c:func:`gser` -* :c:func:`h` * :c:func:`h_apply_cis` * :c:func:`h_apply_cis_diexc` * :c:func:`h_apply_cis_diexcorg` @@ -1143,6 +1096,51 @@ Index of Subroutines/Functions * :c:func:`h_apply_cisd_diexcorg` * :c:func:`h_apply_cisd_diexcp` * :c:func:`h_apply_cisd_monoexc` +* :c:func:`h_apply_mrpt` +* :c:func:`h_apply_mrpt_1h` +* :c:func:`h_apply_mrpt_1h1p` +* :c:func:`h_apply_mrpt_1h1p_diexc` +* :c:func:`h_apply_mrpt_1h1p_diexcorg` +* :c:func:`h_apply_mrpt_1h1p_diexcp` +* :c:func:`h_apply_mrpt_1h1p_monoexc` +* :c:func:`h_apply_mrpt_1h2p` +* :c:func:`h_apply_mrpt_1h2p_diexc` +* :c:func:`h_apply_mrpt_1h2p_diexcorg` +* :c:func:`h_apply_mrpt_1h2p_diexcp` +* :c:func:`h_apply_mrpt_1h2p_monoexc` +* :c:func:`h_apply_mrpt_1h_diexc` +* :c:func:`h_apply_mrpt_1h_diexcorg` +* :c:func:`h_apply_mrpt_1h_diexcp` +* :c:func:`h_apply_mrpt_1h_monoexc` +* :c:func:`h_apply_mrpt_1p` +* :c:func:`h_apply_mrpt_1p_diexc` +* :c:func:`h_apply_mrpt_1p_diexcorg` +* :c:func:`h_apply_mrpt_1p_diexcp` +* :c:func:`h_apply_mrpt_1p_monoexc` +* :c:func:`h_apply_mrpt_2h` +* :c:func:`h_apply_mrpt_2h1p` +* :c:func:`h_apply_mrpt_2h1p_diexc` +* :c:func:`h_apply_mrpt_2h1p_diexcorg` +* :c:func:`h_apply_mrpt_2h1p_diexcp` +* :c:func:`h_apply_mrpt_2h1p_monoexc` +* :c:func:`h_apply_mrpt_2h2p` +* :c:func:`h_apply_mrpt_2h2p_diexc` +* :c:func:`h_apply_mrpt_2h2p_diexcorg` +* :c:func:`h_apply_mrpt_2h2p_diexcp` +* :c:func:`h_apply_mrpt_2h2p_monoexc` +* :c:func:`h_apply_mrpt_2h_diexc` +* :c:func:`h_apply_mrpt_2h_diexcorg` +* :c:func:`h_apply_mrpt_2h_diexcp` +* :c:func:`h_apply_mrpt_2h_monoexc` +* :c:func:`h_apply_mrpt_2p` +* :c:func:`h_apply_mrpt_2p_diexc` +* :c:func:`h_apply_mrpt_2p_diexcorg` +* :c:func:`h_apply_mrpt_2p_diexcp` +* :c:func:`h_apply_mrpt_2p_monoexc` +* :c:func:`h_apply_mrpt_diexc` +* :c:func:`h_apply_mrpt_diexcorg` +* :c:func:`h_apply_mrpt_diexcp` +* :c:func:`h_apply_mrpt_monoexc` * :c:func:`h_s2_u_0_bielec_nstates_openmp` * :c:func:`h_s2_u_0_bielec_nstates_openmp_work` * :c:func:`h_s2_u_0_bielec_nstates_openmp_work_1` @@ -1150,13 +1148,6 @@ Index of Subroutines/Functions * :c:func:`h_s2_u_0_bielec_nstates_openmp_work_3` * :c:func:`h_s2_u_0_bielec_nstates_openmp_work_4` * :c:func:`h_s2_u_0_bielec_nstates_openmp_work_n_int` -* :c:func:`h_s2_u_0_erf_nstates_openmp` -* :c:func:`h_s2_u_0_erf_nstates_openmp_work` -* :c:func:`h_s2_u_0_erf_nstates_openmp_work_1` -* :c:func:`h_s2_u_0_erf_nstates_openmp_work_2` -* :c:func:`h_s2_u_0_erf_nstates_openmp_work_3` -* :c:func:`h_s2_u_0_erf_nstates_openmp_work_4` -* :c:func:`h_s2_u_0_erf_nstates_openmp_work_n_int` * :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` @@ -1177,8 +1168,6 @@ Index of Subroutines/Functions * :c:func:`heap_sort` * :c:func:`heap_sort_big` * :c:func:`hermite` -* :c:func:`hf_two_body_dm_aa` -* :c:func:`hf_two_body_dm_aa_spherical_laplacian` * :c:func:`huckel_guess` * :c:func:`i2set_order` * :c:func:`i2set_order_big` @@ -1189,25 +1178,23 @@ Index of Subroutines/Functions * :c:func:`i_h_j` * :c:func:`i_h_j_bielec` * :c:func:`i_h_j_double_alpha_beta` -* :c:func:`i_h_j_double_alpha_beta_erf` * :c:func:`i_h_j_double_spin` -* :c:func:`i_h_j_double_spin_erf` -* :c:func:`i_h_j_erf` +* :c:func:`i_h_j_dyall` +* :c:func:`i_h_j_dyall_no_exchange` * :c:func:`i_h_j_mono_spin` -* :c:func:`i_h_j_mono_spin_erf` * :c:func:`i_h_j_mono_spin_monoelec` * :c:func:`i_h_j_monoelec` * :c:func:`i_h_j_s2` * :c:func:`i_h_j_verbose` * :c:func:`i_h_psi` * :c:func:`i_h_psi_minilist` +* :c:func:`i_h_psi_pert_new_minilist` * :c:func:`i_s2_psi_minilist` * :c:func:`i_wee_j_mono` * :c:func:`i_x1_pol_mult` * :c:func:`initialize_bitmask_to_restart_ones` * :c:func:`initialize_mo_coef_begin_iteration` * :c:func:`insert_into_ao_integrals_erf_map` -* :c:func:`insert_into_ao_integrals_ijkl_r3_map` * :c:func:`insert_into_ao_integrals_map` * :c:func:`insertion_dsort` * :c:func:`insertion_dsort_big` @@ -1220,7 +1207,6 @@ Index of Subroutines/Functions * :c:func:`insertion_sort` * :c:func:`insertion_sort_big` * :c:func:`int_gaus_pol` -* :c:func:`integral_bourrin_mo` * :c:func:`integrale_new` * :c:func:`integrale_new_erf` * :c:func:`is_a_1h` @@ -1235,6 +1221,7 @@ Index of Subroutines/Functions * :c:func:`is_connected_to_by_mono` * :c:func:`is_generable_cassd` * :c:func:`is_i_in_virtual` +* :c:func:`is_in_psi_ref` * :c:func:`is_in_wavefunction` * :c:func:`is_spin_flip_possible` * :c:func:`is_the_hole_in_det` @@ -1248,10 +1235,8 @@ Index of Subroutines/Functions * :c:func:`list_to_bitstring` * :c:func:`load_ao_integrals` * :c:func:`load_ao_integrals_erf` -* :c:func:`load_ao_integrals_ijkl_r3` * :c:func:`load_mo_integrals` * :c:func:`load_mo_integrals_erf` -* :c:func:`load_mo_integrals_ijkl_r3` * :c:func:`logfact` * :c:func:`lowercase` * :c:func:`make_s2_eigenfunction` @@ -1267,9 +1252,7 @@ Index of Subroutines/Functions * :c:func:`mo_as_svd_vectors_of_mo_matrix_eig` * :c:func:`mo_bielec_integral` * :c:func:`mo_bielec_integral_erf` -* :c:func:`mo_bielec_integral_ijkl_r3` * :c:func:`mo_bielec_integrals_erf_index` -* :c:func:`mo_bielec_integrals_ijkl_r3_index` * :c:func:`mo_bielec_integrals_index` * :c:func:`mo_to_ao` * :c:func:`modify_bitmasks_for_hole` @@ -1278,6 +1261,7 @@ Index of Subroutines/Functions * :c:func:`molden` * :c:func:`mono_excitation_wee` * :c:func:`mpi_print` +* :c:func:`mrpt_dress` * :c:func:`multiply_poly` * :c:func:`n_pt_sup` * :c:func:`nai_pol_mult` @@ -1298,13 +1282,6 @@ Index of Subroutines/Functions * :c:func:`occ_pattern_search_key` * :c:func:`occ_pattern_to_dets` * :c:func:`occ_pattern_to_dets_size` -* :c:func:`off_diagonal_double_to_two_body_ab_dm` -* :c:func:`off_diagonal_single_to_two_body_ab_dm` -* :c:func:`on_top_of_r_approx_svd_correl_function` -* :c:func:`on_top_of_r_approx_svd_function` -* :c:func:`on_top_of_r_from_provider` -* :c:func:`on_top_two_dm_in_r_mu_corrected_from_two_dm` -* :c:func:`on_top_two_dm_in_r_mu_corrected_ueg_from_two_dm` * :c:func:`ortho_canonical` * :c:func:`ortho_lowdin` * :c:func:`ortho_qr` @@ -1336,11 +1313,8 @@ Index of Subroutines/Functions * :c:func:`perturb_buffer_moller_plesset` * :c:func:`perturb_buffer_moller_plesset_general` * :c:func:`perturb_buffer_qdpt` -* :c:func:`phi_8_delta` -* :c:func:`pouet` * :c:func:`primitive_value` * :c:func:`print_det` -* :c:func:`print_ecmd_var_energy` * :c:func:`print_extrapolated_energy` * :c:func:`print_generators_bitmasks_holes` * :c:func:`print_generators_bitmasks_holes_for_one_generator` @@ -1349,10 +1323,8 @@ Index of Subroutines/Functions * :c:func:`print_memory_usage` * :c:func:`print_spindet` * :c:func:`print_summary` -* :c:func:`print_variational_energy_dft` * :c:func:`print_wf` * :c:func:`provide_all_mo_integrals_erf` -* :c:func:`provide_all_mo_integrals_ijkl_r3` * :c:func:`provide_everything` * :c:func:`pt2` * :c:func:`pt2_collector` @@ -1404,9 +1376,6 @@ Index of Subroutines/Functions * :c:func:`roothaan_hall_scf` * :c:func:`routine` * :c:func:`routine_example_psi_det` -* :c:func:`routine_print` -* :c:func:`routines_compute_energy` -* :c:func:`routines_write_int` * :c:func:`run` * :c:func:`run_pt2_slave` * :c:func:`run_selection_slave` @@ -1424,7 +1393,6 @@ Index of Subroutines/Functions * :c:func:`save_natorb` * :c:func:`save_natural_mos` * :c:func:`save_one_body_dm` -* :c:func:`save_one_e_effective_potential` * :c:func:`save_ortho_mos` * :c:func:`save_ref_determinant` * :c:func:`save_wavefunction` @@ -1440,6 +1408,7 @@ Index of Subroutines/Functions * :c:func:`set_bit_to_integer` * :c:func:`set_bitmask_hole_as_input` * :c:func:`set_bitmask_particl_as_input` +* :c:func:`set_generators_bitmasks_as_holes_and_particles` * :c:func:`set_natural_mos` * :c:func:`set_order` * :c:func:`set_order_big` @@ -1455,8 +1424,6 @@ Index of Subroutines/Functions * :c:func:`sorted_i8number` * :c:func:`sorted_inumber` * :c:func:`sorted_number` -* :c:func:`spherical_averaged_two_dm_at_second_order` -* :c:func:`spherical_averaged_two_dm_hf_at_second_order` * :c:func:`spin_det_search_key` * :c:func:`splash_pq` * :c:func:`spot_isinwf` @@ -1469,17 +1436,10 @@ Index of Subroutines/Functions * :c:func:`tasks_done_to_taskserver` * :c:func:`testteethbuilding` * :c:func:`total_memory` -* :c:func:`two_body_dm_nstates_openmp` -* :c:func:`two_body_dm_nstates_openmp_work` -* :c:func:`two_body_dm_nstates_openmp_work_1` -* :c:func:`two_body_dm_nstates_openmp_work_2` -* :c:func:`two_body_dm_nstates_openmp_work_3` -* :c:func:`two_body_dm_nstates_openmp_work_4` -* :c:func:`two_body_dm_nstates_openmp_work_n_int` -* :c:func:`two_dm_in_r` +* :c:func:`u0_h_dyall_u0` +* :c:func:`u0_h_dyall_u0_no_exchange` * :c:func:`u_0_h_u_0` * :c:func:`u_0_h_u_0_bielec` -* :c:func:`u_0_h_u_0_erf` * :c:func:`u_0_s2_u_0` * :c:func:`u_dot_u` * :c:func:`u_dot_v` @@ -1497,13 +1457,9 @@ Index of Subroutines/Functions * :c:func:`wall_time` * :c:func:`wallis` * :c:func:`wf_of_psi_bilinear_matrix` -* :c:func:`wignerseitz_radius` -* :c:func:`write_2_body_dm_fci_dump` -* :c:func:`write_all_integrals_for_mrdft` * :c:func:`write_ao_basis` * :c:func:`write_bool` * :c:func:`write_double` -* :c:func:`write_effective_rsdft_hamiltonian` * :c:func:`write_geometry` * :c:func:`write_git_log` * :c:func:`write_int` diff --git a/docs/source/users_guide/plugins.rst b/docs/source/users_guide/plugins.rst index 2eaed3c1..953d0889 100644 --- a/docs/source/users_guide/plugins.rst +++ b/docs/source/users_guide/plugins.rst @@ -23,7 +23,7 @@ in :file:`$QP_ROOT/plugins`. The list of available uninstalled plugins can be seen using: -.. code-block:: +.. code-block:: bash qp_plugins list -u @@ -31,7 +31,7 @@ The list of available uninstalled plugins can be seen using: Now, the specific plugin :file:`ext_module` contained in the repository :file:`ext_repo` can be installed using: -.. code-block:: +.. code-block:: bash qp_plugins install ext_module @@ -42,7 +42,7 @@ and can be compiled as any module, running |Ninja|. To remove the module, run -.. code-block:: +.. code-block:: bash qp_plugins uninstall ext_module