From 2f340f4841a986b47362f9e057fa04434a4eaeca Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 24 Jun 2019 15:32:26 +0200 Subject: [PATCH] CAS-CI with no vvvv --- src/casscf/NEED | 3 +++ src/casscf/README.rst | 5 +++++ src/casscf/casscf.irp.f | 14 ++++++++++++++ src/casscf/class.irp.f | 12 ++++++++++++ src/cipsi/selection.irp.f | 10 ++++++++++ src/fci/class.irp.f | 2 ++ 6 files changed, 46 insertions(+) create mode 100644 src/casscf/NEED create mode 100644 src/casscf/README.rst create mode 100644 src/casscf/casscf.irp.f create mode 100644 src/casscf/class.irp.f diff --git a/src/casscf/NEED b/src/casscf/NEED new file mode 100644 index 00000000..d7aff476 --- /dev/null +++ b/src/casscf/NEED @@ -0,0 +1,3 @@ +cipsi +selectors_full +generators_cas diff --git a/src/casscf/README.rst b/src/casscf/README.rst new file mode 100644 index 00000000..08bfd95b --- /dev/null +++ b/src/casscf/README.rst @@ -0,0 +1,5 @@ +====== +casscf +====== + +|CASSCF| program with the CIPSI algorithm. diff --git a/src/casscf/casscf.irp.f b/src/casscf/casscf.irp.f new file mode 100644 index 00000000..28f56069 --- /dev/null +++ b/src/casscf/casscf.irp.f @@ -0,0 +1,14 @@ +program casscf_new + implicit none + BEGIN_DOC +! TODO : Put the documentation of the program here + END_DOC + no_vvvv_integrals = .True. + SOFT_TOUCH no_vvvv_integrals + call run +end + +subroutine run + implicit none + call run_cipsi +end diff --git a/src/casscf/class.irp.f b/src/casscf/class.irp.f new file mode 100644 index 00000000..7360a661 --- /dev/null +++ b/src/casscf/class.irp.f @@ -0,0 +1,12 @@ + BEGIN_PROVIDER [ logical, do_only_1h1p ] +&BEGIN_PROVIDER [ logical, do_only_cas ] +&BEGIN_PROVIDER [ logical, do_ddci ] + implicit none + BEGIN_DOC + ! In the CAS case, all those are always false except do_only_cas + END_DOC + do_only_cas = .True. + do_only_1h1p = .False. + do_ddci = .False. +END_PROVIDER + diff --git a/src/cipsi/selection.irp.f b/src/cipsi/selection.irp.f index df31bc39..062b44bf 100644 --- a/src/cipsi/selection.irp.f +++ b/src/cipsi/selection.irp.f @@ -683,6 +683,16 @@ subroutine fill_buffer_double(i_generator, sp, h1, h2, bannedOrb, banned, fock_d if( sum(abs(mat(1:N_states, p1, p2))) == 0d0) cycle call apply_particles(mask, s1, p1, s2, p2, det, ok, N_int) + if (do_only_cas) then + integer, external :: number_of_holes, number_of_particles + if (number_of_particles(det)>0) then + cycle + endif + if (number_of_holes(det)>0) then + cycle + endif + endif + if (do_ddci) then logical, external :: is_a_two_holes_two_particles if (is_a_two_holes_two_particles(det)) then diff --git a/src/fci/class.irp.f b/src/fci/class.irp.f index 425691ae..b4a68ac2 100644 --- a/src/fci/class.irp.f +++ b/src/fci/class.irp.f @@ -1,10 +1,12 @@ BEGIN_PROVIDER [ logical, do_only_1h1p ] +&BEGIN_PROVIDER [ logical, do_only_cas ] &BEGIN_PROVIDER [ logical, do_ddci ] implicit none BEGIN_DOC ! In the FCI case, all those are always false END_DOC do_only_1h1p = .False. + do_only_cas = .False. do_ddci = .False. END_PROVIDER