11 integer,
intent(in) :: fnum
13 integer nz,nmax,nst,ist
14 integer ne,nrm,nr,ir,it,i
15 integer n(maxstsp),l(maxstsp),k(maxstsp)
16 real(8) mass,zn,t1,t2,t3
18 real(8) occ(maxstsp),eval(maxstsp)
19 character(64) symb,name
21 real(8),
allocatable :: r(:),rho(:),vr(:),rwf(:,:,:)
22 read(fnum,*,err=20) nz
25 write(*,
'("Error(genspecies): nz < 1 : ",I0)') nz
29 read(fnum,*,err=20) symb,name
30 read(fnum,*,err=20) mass
33 read(fnum,*,err=20) rm
34 read(fnum,*,err=20) nst
35 if ((nst < 1).or.(nst > maxstsp))
then 37 write(*,
'("Error(genspecies): nst out of range : ",I0)') nst
38 write(*,
'(" for species ",A)') trim(name)
45 read(fnum,*,err=20) n(ist),l(ist),k(ist),i
51 write(*,
'("Info(genspecies): running Z = ",I0,", (",A,")")') nz,trim(name)
54 write(*,
'("Warning(genspecies): atom not neutral, electron number : ",& 61 rmin=2.d-6/sqrt(dble(nz))
72 allocate(r(nr),rho(nr),vr(nr),rwf(nr,2,nst))
76 r(ir)=rmin*exp(dble(ir-1)*t2)
79 call atom(
sol,.true.,zn,nst,n,l,k,occ,3,0,nr,r,eval,rho,vr,rwf)
82 if (rho(ir) > 1.d-20)
then 87 deallocate(r,rho,vr,rwf)
90 call writespecies(symb,name,zn,mass,rmin,rm,rmax,nrm,nst,n,l,k,occ,eval)
94 write(*,
'("Error(genspecies): error reading species data")')
subroutine writespecies(symb, name, zn, mass, rmin, rm, rmax, nrm, nst, n, l, k, occ, eval)
subroutine atom(sol, ptnucl, zn, nst, n, l, k, occ, xctype, xcgrad, nr, r, eval, rho, vr, rwf)
subroutine genspecies(fnum)