diff --git a/stable/cassd/EZFIO.cfg b/stable/cassd/EZFIO.cfg new file mode 100644 index 0000000..57629d2 --- /dev/null +++ b/stable/cassd/EZFIO.cfg @@ -0,0 +1,14 @@ +[energy] +type: double precision +doc: Calculated Selected CASSD energy +interface: ezfio +size: (determinants.n_states) + +[energy_pt2] +type: double precision +doc: Calculated CASSD energy + PT2 +interface: ezfio +size: (determinants.n_states) + + + diff --git a/stable/cassd/NEED b/stable/cassd/NEED new file mode 100644 index 0000000..b423482 --- /dev/null +++ b/stable/cassd/NEED @@ -0,0 +1,3 @@ +cipsi +generators_cas +selectors_cassd diff --git a/stable/cassd/README.rst b/stable/cassd/README.rst new file mode 100644 index 0000000..96909ef --- /dev/null +++ b/stable/cassd/README.rst @@ -0,0 +1,19 @@ +===== +cassd +===== + + +|CIPSI| algorithm in the multi-reference CI space (CAS + Singles and Doubles). + + +This module is the same as the :ref:`fci` module, except for the choice of the +generator and selector determinants. + +The inactive, active and virtual |MOs| will need to be set with the +:ref:`qp_set_mo_class` program. + +.. seealso:: + + The documentation of the :ref:`fci` module. + + diff --git a/stable/cassd/cassd.irp.f b/stable/cassd/cassd.irp.f new file mode 100644 index 0000000..189f75f --- /dev/null +++ b/stable/cassd/cassd.irp.f @@ -0,0 +1,54 @@ +program cassd + implicit none + BEGIN_DOC + ! Selected CAS+Singles and Doubles with stochastic selection + ! and PT2. + ! + ! This program performs a |CIPSI|-like selected |CI| using a + ! stochastic scheme for both the selection of the important Slater + ! determinants and the computation of the |PT2| correction. This + ! |CIPSI|-like algorithm will be performed for the lowest states of + ! the variational space (see :option:`determinants n_states`). The + ! program will stop when reaching at least one the two following + ! conditions: + ! + ! * number of Slater determinants > :option:`determinants n_det_max` + ! * |PT2| < :option:`perturbation pt2_max` + ! + ! The following other options can be of interest: + ! + ! :option:`determinants read_wf` + ! When set to |false|, the program starts with a ROHF-like Slater + ! determinant as a guess wave function. When set to |true|, the + ! program starts with the wave function(s) stored in the |EZFIO| + ! directory as guess wave function(s). + ! + ! :option:`determinants s2_eig` + ! When set to |true|, the selection will systematically add all the + ! necessary Slater determinants in order to have a pure spin wave + ! function with an |S^2| value corresponding to + ! :option:`determinants expected_s2`. + ! + ! For excited states calculations, it is recommended to start with + ! :ref:`.cis.` or :ref:`.cisd.` guess wave functions, eventually in + ! a restricted set of |MOs|, and to set :option:`determinants s2_eig` + ! to |true|. + ! + END_DOC + + if (.not.is_zmq_slave) then + PROVIDE psi_det psi_coef mo_two_e_integrals_in_map + + if (do_pt2) then + call run_stochastic_cipsi + else + call run_cipsi + endif + + else + PROVIDE mo_two_e_integrals_in_map + + call run_slave_cipsi + + endif +end diff --git a/stable/cassd/save_energy.irp.f b/stable/cassd/save_energy.irp.f new file mode 100644 index 0000000..3593c86 --- /dev/null +++ b/stable/cassd/save_energy.irp.f @@ -0,0 +1,10 @@ +subroutine save_energy(E,pt2) + implicit none + BEGIN_DOC +! Saves the energy in |EZFIO|. + END_DOC + double precision, intent(in) :: E(N_states), pt2(N_states) + call ezfio_set_cassd_energy(E(1:N_states)) + call ezfio_set_cassd_energy_pt2(E(1:N_states)+pt2(1:N_states)) +end +