10
0
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-11-07 22:53:52 +01:00
QuantumPackage/src/fci/fci.irp.f

64 lines
2.1 KiB
Fortran
Raw Normal View History

2019-01-25 11:39:31 +01:00
program fci
implicit none
BEGIN_DOC
! Selected Full Configuration Interaction 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
! |FCI| program will stop when reaching at least one the two following
! conditions:
!
! * number of Slater determinants > :option:`determinants n_det_max`
2019-01-29 15:40:00 +01:00
! * abs(|PT2|) less than :option:`perturbation pt2_max`
2019-01-25 11:39:31 +01:00
!
! 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
2019-01-29 15:40:00 +01:00
! :ref:`cis` or :ref:`cisd` guess wave functions, eventually in
2019-01-25 11:39:31 +01:00
! 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
2023-04-24 00:50:07 +02:00
write(json_unit,json_array_open_fmt) 'fci'
2023-10-06 11:28:20 +02:00
double precision, allocatable :: Ev(:),PT2(:)
2023-10-12 16:15:17 +02:00
allocate(Ev(N_states), PT2(N_states))
2019-01-25 11:39:31 +01:00
if (do_pt2) then
2023-10-06 11:28:20 +02:00
call run_stochastic_cipsi(Ev,PT2)
2019-01-25 11:39:31 +01:00
else
call run_cipsi
endif
2023-04-24 00:50:07 +02:00
write(json_unit,json_dict_uopen_fmt)
write(json_unit,json_dict_close_fmtx)
write(json_unit,json_array_close_fmtx)
call json_close
2019-01-25 11:39:31 +01:00
else
2021-04-27 00:35:18 +02:00
PROVIDE mo_two_e_integrals_in_map pt2_min_parallel_tasks
2019-01-25 11:39:31 +01:00
2019-03-13 14:40:45 +01:00
call run_slave_cipsi
2019-01-25 11:39:31 +01:00
endif
end