4
1
mirror of https://github.com/pfloos/quack synced 2024-06-22 21:22:20 +02:00
quack/src/utils/read_molecule.f90

65 lines
1.6 KiB
Fortran
Raw Normal View History

2019-03-20 13:38:42 +01:00
subroutine read_molecule(nNuc,nEl,nO,nC,nR)
! Read number of atoms and number of electrons
implicit none
include 'parameters.h'
! Input variables
integer,intent(out) :: nNuc
integer,intent(out) :: nEl(nspin)
integer,intent(out) :: nO(nspin)
integer,intent(out) :: nC(nspin)
integer,intent(out) :: nR(nspin)
! Local variables
integer :: nCore
integer :: nRyd
! Open file with geometry specification
open(unit=1,file='input/molecule')
! Read number of atoms and number of electrons
read(1,*)
read(1,*) nNuc,nEl(1),nEl(2),nCore,nRyd
if(mod(nCore,2) /= 0 .or. mod(nRyd,2) /= 0) then
print*, 'The number of core and Rydberg electrons must be even!'
stop
end if
nO(:) = nEl(:)
nC(:) = nCore/2
2020-05-21 16:13:52 +02:00
nR(:) = nRyd
2019-03-20 13:38:42 +01:00
! Print results
write(*,'(A28)') '----------------------'
write(*,'(A28,1X,I16)') 'Number of atoms',nNuc
write(*,'(A28)') '----------------------'
write(*,*)
write(*,'(A28)') '----------------------'
write(*,'(A28,1X,I16)') 'Number of spin-up electrons',nEl(1)
write(*,'(A28,1X,I16)') 'Number of spin-down electrons',nEl(2)
write(*,'(A28,1X,I16)') ' Total number of electrons',sum(nEl(:))
write(*,'(A28)') '----------------------'
write(*,*)
write(*,'(A28)') '----------------------'
write(*,'(A28,1X,I16)') 'Number of core electrons',sum(nC(:))
write(*,'(A28,1X,I16)') 'Number of Rydberg electrons',sum(nR(:))
write(*,'(A28)') '----------------------'
write(*,*)
! Close file with geometry specification
close(unit=1)
end subroutine read_molecule