mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-21 19:13:29 +01:00
added dipole moments in determinants
This commit is contained in:
parent
d6d8b0586c
commit
3e551e1537
65
src/determinants/dipole_moments.irp.f
Normal file
65
src/determinants/dipole_moments.irp.f
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
BEGIN_PROVIDER [double precision, z_dipole_moment, (N_states)]
|
||||||
|
&BEGIN_PROVIDER [double precision, y_dipole_moment, (N_states)]
|
||||||
|
&BEGIN_PROVIDER [double precision, x_dipole_moment, (N_states)]
|
||||||
|
implicit none
|
||||||
|
BEGIN_DOC
|
||||||
|
! blablabla
|
||||||
|
END_DOC
|
||||||
|
integer :: ipoint,istate,i,j
|
||||||
|
double precision :: weight, r(3)
|
||||||
|
double precision :: cpu0,cpu1,nuclei_part_z,nuclei_part_y,nuclei_part_x
|
||||||
|
|
||||||
|
call cpu_time(cpu0)
|
||||||
|
z_dipole_moment = 0.d0
|
||||||
|
y_dipole_moment = 0.d0
|
||||||
|
x_dipole_moment = 0.d0
|
||||||
|
do istate = 1, N_states
|
||||||
|
do i = 1, mo_num
|
||||||
|
z_dipole_moment(istate) += -(one_e_dm_mo_alpha(i,i,istate)+one_e_dm_mo_beta(i,i,istate)) * mo_dipole_z(i,i)
|
||||||
|
y_dipole_moment(istate) += -(one_e_dm_mo_alpha(i,i,istate)+one_e_dm_mo_beta(i,i,istate)) * mo_dipole_y(i,i)
|
||||||
|
x_dipole_moment(istate) += -(one_e_dm_mo_alpha(i,i,istate)+one_e_dm_mo_beta(i,i,istate)) * mo_dipole_x(i,i)
|
||||||
|
do j = i+1, mo_num
|
||||||
|
z_dipole_moment(istate) += - 2.d0 * (one_e_dm_mo_alpha(j,i,istate)+one_e_dm_mo_beta(j,i,istate)) * mo_dipole_z(j,i)
|
||||||
|
y_dipole_moment(istate) += - 2.d0 * (one_e_dm_mo_alpha(j,i,istate)+one_e_dm_mo_beta(j,i,istate)) * mo_dipole_y(j,i)
|
||||||
|
x_dipole_moment(istate) += - 2.d0 * (one_e_dm_mo_alpha(j,i,istate)+one_e_dm_mo_beta(j,i,istate)) * mo_dipole_x(j,i)
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
enddo
|
||||||
|
|
||||||
|
print*,'electron part for z_dipole = ',z_dipole_moment
|
||||||
|
print*,'electron part for y_dipole = ',y_dipole_moment
|
||||||
|
print*,'electron part for x_dipole = ',x_dipole_moment
|
||||||
|
|
||||||
|
nuclei_part_z = 0.d0
|
||||||
|
nuclei_part_y = 0.d0
|
||||||
|
nuclei_part_x = 0.d0
|
||||||
|
do i = 1,nucl_num
|
||||||
|
nuclei_part_z += nucl_charge(i) * nucl_coord(i,3)
|
||||||
|
nuclei_part_y += nucl_charge(i) * nucl_coord(i,2)
|
||||||
|
nuclei_part_x += nucl_charge(i) * nucl_coord(i,1)
|
||||||
|
enddo
|
||||||
|
print*,'nuclei part for z_dipole = ',nuclei_part_z
|
||||||
|
print*,'nuclei part for y_dipole = ',nuclei_part_y
|
||||||
|
print*,'nuclei part for x_dipole = ',nuclei_part_x
|
||||||
|
|
||||||
|
do istate = 1, N_states
|
||||||
|
z_dipole_moment(istate) += nuclei_part_z
|
||||||
|
y_dipole_moment(istate) += nuclei_part_y
|
||||||
|
x_dipole_moment(istate) += nuclei_part_x
|
||||||
|
enddo
|
||||||
|
|
||||||
|
call cpu_time(cpu1)
|
||||||
|
print*,'Time to provide the dipole moment :',cpu1-cpu0
|
||||||
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
subroutine print_z_dipole_moment_only
|
||||||
|
implicit none
|
||||||
|
print*, ''
|
||||||
|
print*, ''
|
||||||
|
print*, '****************************************'
|
||||||
|
print*, 'z_dipole_moment = ',z_dipole_moment
|
||||||
|
print*, '****************************************'
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user