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 nR(:) = nRyd ! 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