mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-22 03:23:29 +01:00
added the definition of the input density in the AO basis
This commit is contained in:
parent
06f9010c12
commit
400427157d
@ -24,3 +24,17 @@ type: double precision
|
|||||||
size: (mo_basis.mo_num,mo_basis.mo_num,determinants.n_states)
|
size: (mo_basis.mo_num,mo_basis.mo_num,determinants.n_states)
|
||||||
|
|
||||||
|
|
||||||
|
[data_one_e_dm_alpha_ao]
|
||||||
|
interface: ezfio, provider
|
||||||
|
doc: Alpha one body density matrix on the |AO| basis computed with the wave function
|
||||||
|
type: double precision
|
||||||
|
size: (ao_basis.ao_num,ao_basis.ao_num,determinants.n_states)
|
||||||
|
|
||||||
|
|
||||||
|
[data_one_e_dm_beta_ao]
|
||||||
|
interface: ezfio, provider
|
||||||
|
doc: Beta one body density matrix on the |AO| basis computed with the wave function
|
||||||
|
type: double precision
|
||||||
|
size: (ao_basis.ao_num,ao_basis.ao_num,determinants.n_states)
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,6 +9,8 @@ BEGIN_PROVIDER [double precision, one_e_dm_mo_alpha_for_dft, (mo_num,mo_num, N_s
|
|||||||
one_e_dm_mo_alpha_for_dft = data_one_e_dm_alpha_mo + damping_for_rs_dft * delta_alpha
|
one_e_dm_mo_alpha_for_dft = data_one_e_dm_alpha_mo + damping_for_rs_dft * delta_alpha
|
||||||
else if (density_for_dft .EQ. "input_density")then
|
else if (density_for_dft .EQ. "input_density")then
|
||||||
one_e_dm_mo_alpha_for_dft = data_one_e_dm_alpha_mo
|
one_e_dm_mo_alpha_for_dft = data_one_e_dm_alpha_mo
|
||||||
|
else if (density_for_dft .EQ. "input_density_ao")then
|
||||||
|
call ao_to_mo(data_one_e_dm_alpha_mo,size(data_one_e_dm_alpha_mo,1),one_e_dm_mo_alpha_for_dft,size(one_e_dm_mo_alpha_for_dft,1))
|
||||||
else if (density_for_dft .EQ. "WFT")then
|
else if (density_for_dft .EQ. "WFT")then
|
||||||
provide mo_coef
|
provide mo_coef
|
||||||
one_e_dm_mo_alpha_for_dft = one_e_dm_mo_alpha
|
one_e_dm_mo_alpha_for_dft = one_e_dm_mo_alpha
|
||||||
@ -58,6 +60,8 @@ BEGIN_PROVIDER [double precision, one_e_dm_mo_beta_for_dft, (mo_num,mo_num, N_st
|
|||||||
one_e_dm_mo_beta_for_dft = data_one_e_dm_beta_mo + damping_for_rs_dft * delta_beta
|
one_e_dm_mo_beta_for_dft = data_one_e_dm_beta_mo + damping_for_rs_dft * delta_beta
|
||||||
else if (density_for_dft .EQ. "input_density")then
|
else if (density_for_dft .EQ. "input_density")then
|
||||||
one_e_dm_mo_beta_for_dft = data_one_e_dm_beta_mo
|
one_e_dm_mo_beta_for_dft = data_one_e_dm_beta_mo
|
||||||
|
else if (density_for_dft .EQ. "input_density_ao")then
|
||||||
|
call ao_to_mo(data_one_e_dm_beta_mo,size(data_one_e_dm_beta_mo,1),one_e_dm_mo_beta_for_dft,size(one_e_dm_mo_beta_for_dft,1))
|
||||||
else if (density_for_dft .EQ. "WFT")then
|
else if (density_for_dft .EQ. "WFT")then
|
||||||
provide mo_coef
|
provide mo_coef
|
||||||
one_e_dm_mo_beta_for_dft = one_e_dm_mo_beta
|
one_e_dm_mo_beta_for_dft = one_e_dm_mo_beta
|
||||||
@ -119,6 +123,11 @@ END_PROVIDER
|
|||||||
|
|
||||||
one_e_dm_alpha_ao_for_dft = 0.d0
|
one_e_dm_alpha_ao_for_dft = 0.d0
|
||||||
one_e_dm_beta_ao_for_dft = 0.d0
|
one_e_dm_beta_ao_for_dft = 0.d0
|
||||||
|
|
||||||
|
if (density_for_dft .EQ. "input_density_ao")then
|
||||||
|
one_e_dm_alpha_ao_for_dft = data_one_e_dm_alpha_ao
|
||||||
|
one_e_dm_beta_ao_for_dft = data_one_e_dm_beta_ao
|
||||||
|
else
|
||||||
do istate = 1, N_states
|
do istate = 1, N_states
|
||||||
call mo_to_ao_no_overlap( one_e_dm_mo_alpha_for_dft(1,1,istate), &
|
call mo_to_ao_no_overlap( one_e_dm_mo_alpha_for_dft(1,1,istate), &
|
||||||
size(one_e_dm_mo_alpha_for_dft,1), &
|
size(one_e_dm_mo_alpha_for_dft,1), &
|
||||||
@ -129,6 +138,7 @@ END_PROVIDER
|
|||||||
one_e_dm_beta_ao_for_dft(1,1,istate), &
|
one_e_dm_beta_ao_for_dft(1,1,istate), &
|
||||||
size(one_e_dm_beta_ao_for_dft,1) )
|
size(one_e_dm_beta_ao_for_dft,1) )
|
||||||
enddo
|
enddo
|
||||||
|
endif
|
||||||
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
program save_one_e_dm
|
program save_one_e_dm
|
||||||
implicit none
|
implicit none
|
||||||
BEGIN_DOC
|
BEGIN_DOC
|
||||||
! Program that computes the one body density on the |MO| basis
|
! Program that computes the one body density on the |MO| and |AO| basis
|
||||||
! for $\alpha$ and $\beta$ electrons from the wave function
|
! for $\alpha$ and $\beta$ electrons from the wave function
|
||||||
! stored in the |EZFIO| directory, and then saves it into the
|
! stored in the |EZFIO| directory, and then saves it into the
|
||||||
! :ref:`module_aux_quantities`.
|
! :ref:`module_aux_quantities`.
|
||||||
!
|
!
|
||||||
! Then, the global variable :option:`aux_quantities data_one_e_dm_alpha_mo`
|
! Then, the global variable :option:`aux_quantities data_one_e_dm_alpha_mo`
|
||||||
! and :option:`aux_quantities data_one_e_dm_beta_mo` will automatically
|
! and :option:`aux_quantities data_one_e_dm_beta_mo` (and the corresponding for |AO|)
|
||||||
! read this density in the next calculation. This can be used to perform
|
! will automatically ! read this density in the next calculation.
|
||||||
! damping on the density in |RSDFT| calculations (see
|
! This can be used to perform damping on the density in |RSDFT| calculations (see
|
||||||
! :ref:`module_density_for_dft`).
|
! :ref:`module_density_for_dft`).
|
||||||
END_DOC
|
END_DOC
|
||||||
read_wf = .True.
|
read_wf = .True.
|
||||||
@ -25,4 +25,6 @@ subroutine routine_save_one_e_dm
|
|||||||
END_DOC
|
END_DOC
|
||||||
call ezfio_set_aux_quantities_data_one_e_dm_alpha_mo(one_e_dm_mo_alpha)
|
call ezfio_set_aux_quantities_data_one_e_dm_alpha_mo(one_e_dm_mo_alpha)
|
||||||
call ezfio_set_aux_quantities_data_one_e_dm_beta_mo(one_e_dm_mo_beta)
|
call ezfio_set_aux_quantities_data_one_e_dm_beta_mo(one_e_dm_mo_beta)
|
||||||
|
call ezfio_set_aux_quantities_data_one_e_dm_alpha_ao(one_e_dm_ao_alpha)
|
||||||
|
call ezfio_set_aux_quantities_data_one_e_dm_beta_ao(one_e_dm_ao_beta)
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user