summaryrefslogtreecommitdiff
path: root/src/labat/labat.f
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2011-10-08 20:30:28 +0200
committerHenrik Rydberg <rydberg@euromail.se>2011-10-08 20:30:28 +0200
commit5df79c53745fde5d6c3340a2979b1429cd5892c1 (patch)
tree1a81af141708b826e9c61e8a04019994fcca8298 /src/labat/labat.f
Initial import of htcd system 1.0
Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src/labat/labat.f')
-rw-r--r--src/labat/labat.f587
1 files changed, 587 insertions, 0 deletions
diff --git a/src/labat/labat.f b/src/labat/labat.f
new file mode 100644
index 0000000..da1f7fe
--- /dev/null
+++ b/src/labat/labat.f
@@ -0,0 +1,587 @@
1 program atom
2 implicit double precision (a-h,o-z)
3 dimension dval(2,561),nval(2,7,10),ddval(2,561),ndval(2,7,10)
4 dimension dcore(2,561),vhv(561),fpu(561)
5c
6c free atom program by m.p. summer 1985 (valence energy and core
7c density are calculated)
8c
9c GGA implemented by T. Holmquist and U. Yxklinten.
10c
11c files used:
12c 6: terminal output
13c 22: density and potential output
14c 33: density and potential input
15c 44: potential and density double prec. output
16c 46: potential and density double prec. input
17c 55: control input
18c 66: printer output
19c 77: density (total and core) output (J.H.)
20c
21 dimension r(561),veff(2,561),vc(561),vcold(561),vv(561)
22 dimension gr(561),lm(2),rnocc(2,7,10),ux1(561),ux2(561)
23 dimension u(561),roo(561),spl(561),nb(7)
24 dimension db(2,561),v(561),vold(2,561)
25 dimension snlo(561),wj(301),ekin(2)
26 dimension ebound(2,7,10),nbound(2,7),de(2,7,10)
27 dimension apu(561),bpu(561),cpu(561),dpu(561),nlp(2,7,10)
28 dimension epu(561)
29c===================================================================
30c gga
31 dimension excgga(561),uxcup(561),uxcdn(561)
32 logical doned,donela,donegr,donez,donec
33c gga
34c===================================================================
35 common/sc/gr,r,snlo,nbl
36 common/mess/wj,dx,nblock,jblock
37 common/pot/v
38 frs(x)=(3.d0/(4.d0*pi*x))**(1.d0/3.d0)
39 pi=4.d0*datan(1.d0)
40 pi2=pi/2.d0
41 a=(4.d0/9.d0/pi)**(1.d0/3.d0)
42c
43 open(22,file='adensout.dat',status='unknown')
44 open(33,file='adensin.dat',status='unknown')
45 open(44,file='apotout.dat',status='unknown')
46 open(46,file='apotin.dat',status='unknown')
47 open(55,file='atomctrl.dat',status='old')
48 open(66,file='aprtout.dat',status='unknown')
49 open(77,file='atomdens.dat',status='unknown')
50 write(6,*) '=== Its ===== Energy (Ha) ======'
51 call flush(6)
52 read(55,*)z,zion
53c z : atomic number
54c zion : ionicity
55c
56 write(66,2) z,zion
572 format(/' atom number:',f5.0,' ionicity:',f5.0)
58 sf=4.d0*pi
59 read(55,*)jblock,nbl,c
60c parameters of the hermann-skillmann mesh
61 read(55,*)fback,thresh,qsc
62C fback : feedback
63c thresh : error allowed for the bound state eigenenergy
64c e.g. 0.00001
65c qsc : parameter for the screened green's function (0.005)
66 read(55,*)itmax,inopt,ipr,iout
67c itmax : max. no. of iterations
68c iopt : =0 starting potential generated; =1 starting potential
69c read in; =2 starting potential read in from unit 46.
70c (double precision format)
71c ipr, iout : print out parameters
72c
73c set up the herman-skillman mesh
74c
75 nblock=jblock
76 mesh=nblock*nbl+1
77 n=mesh
78 mest=mesh
79 dx=c*0.0025d0
80 en0=-0.01d0
81 i=1
82 r(i)=0.d0
83 deltax=dx
84 do 251 j=1,nblock
85 do 241 jk=1,nbl
86 i=i+1
87 241 r(i)=r(i-1)+deltax
88 deltax=2.d0*deltax
89 251 continue
90c
91 read(55,*)ne,iys,ixc
92c ne: no. bound states
93c iys: =1 for spin compensated; =2 spin polarized
94c ixc: = 1 b-h xc; =0 c-a xc
95 if(ixc.eq.1)write(66,2149)
96 if(ixc.eq.0)write(66,2148)
97 if(ixc.eq.2)write(66,2147)
982149 format(/' von barth - hedin xc')
992148 format(/' ceperley - alder xc')
1002147 format(/' perdew - wang xc')
101 dxx=r(n)-r(n-1)
102 write(66,5)jblock,nbl,c
103 write(66,5849)dx,dxx,r(n)
104 5 format(/' hermann-skillmann mesh',/,' blocks, nbl, c:',2(i5,','),
105 j f10.7)
1065849 format(' first interval, last interval, final r:',2(f10.6,','),
107 j f10.6)
108 write(66,2312) thresh,qsc,fback
1092312 format(/' energy eigenvalue threshold, screening parameter, ',
110 j 'feedback:',2(f12.6,','),f6.3)
111 write(66,9)
112 do 5273 i=1,7
1135273 nb(i)=0
114 lmax=0
1159 format(//' initial bound state configuration',/,
116 j ' nlm energy occup. val.el. d-band el.')
117 zv=0.d0
118 do 5595 ispin=1,iys
119 do 5595 ii=1,ne
120 read(55,*)nnlz,eb0,rnoc,nv,ndv
121c
122c nnlz : e.g. 100
123c eb0 : energy eigenvalue guess
124c rnoc : occupation number
125c nv : =1 when orbital is a valence orbital; =0 for core orbitals
126c ndv : =1 when orbital is a d-valence orbital; =0 for other orbitals
127c
128 nnn=nnlz/100
129 lll=(nnlz-nnn*100)/10
130 nnn=nnn-lll
131 if(nnn.gt.nb(lll+1))nb(lll+1)=nnn
132 if(lll.gt.lmax)lmax=lll
133 rnocc(ispin,lll+1,nnn)=rnoc
134 nval(ispin,lll+1,nnn)=nv
135 ndval(ispin,lll+1,nnn)=ndv
136 if(iys.eq.1)nval(2,lll+1,nnn)=nv
137 if(iys.eq.1)ndval(2,lll+1,nnn)=ndv
138 if(iys.eq.1)rnocc(2,lll+1,nnn)=rnoc
139 if(iys.eq.1)rnoc=rnoc*2
140 write(66,19)nnlz,eb0,rnoc,nv,ndv
141 zv=zv+rnoc*(nv+ndv)
1425595 ebound(ispin,lll+1,nnn)=eb0
143 write(66,5120)zv
1445120 format(/' number of valence electrons: ',f5.1)
145 19 format(i6,e12.4,f7.2,i7,i10)
146 nb1=nbl+1
147 iter=0
148 itr=itmax-iout
149c
150 16 format(7(f12.5,1x))
151 17 format(/' charge and spin density profiles '/)
152 18 format(1h0/' potentials vs. distance after ',i3,' iterations'/)
153c
154c tabulate screened green's function
155 do 10 i=1,n
156 10 gr(i)=exp(-qsc*r(i))
157c
158c integration weigths
159 do 121 i=1,nb1
160 121 wj(i)=(3.d0+(-1.d0)**i)/3.d0
161 wj(1)=1.d0/3.d0
162 wj(nb1)=1.d0/3.d0
163c
164c initial values of the potentials
165 if(inopt.eq.1) goto 302
166 if(inopt.eq.2) goto 306
167c
168 itt=0
169c thomas-fermi potential
170 do 30 i=2,n
171 x=r(i)/0.88534135d0*z**(1.d0/3.d0)
172 xx=sqrt(x)
173 vc(i)=-z/r(i)/(1.+0.02747d0*xx+1.243d0*x-0.1486d0*x*xx
174 j+0.2302d0*x*x+0.007298d0*x*x*xx+0.006944d0*x*x*x)
175 do 30 ispin=1,2
176 30 veff(ispin,i)=vc(i)
177 goto 311
178c read in an old potential for the input
179302 read(33,2645)itt
1802645 format(i3)
1811645 format(i3,' z,ion:',2f4.0,' jblock,nbl,c:',2i5,f10.7)
182 do 303 i=1,n
183 303 read(33,907) vc(i),veff(1,i),veff(2,i),du1,du2
184 goto 311
185 306 read(46,2645) itt
186 do 304 i = 1, n
187 read(46,*) du1, vc(i), vve, du2
188 veff(1,i) = vve
189 veff(2,i) = vve
190 304 continue
191 311 do 312 i=1,n
192 vcold(i)=vc(i)
193 do 312 ispin=1,2
194 312 vold(ispin,i)=veff(ispin,i)
195 5555 format(e15.8)
196 7771 format(/' initial potentials'/)
197 7773 format(5f13.5)
198 if(iout.lt.-1)go to 1437
199 write(66,7771)
200 do 7772 i=2,n,ipr
201 7772 write(66,7773) r(i),vc(i),veff(1,i),veff(2,i)
2021437 eold=0.d0
203 etot=-1.d0
204 itec=0
205c
206c iteration
207c
208 100 iter=iter+1
209c write(6,*) 'NEW ITERATION'
210c call flush(6)
211c convergency check
212 if(abs(etot-eold).lt.5.d-5)itec=itec+1
213 if(abs(etot-eold).lt.5.d-5.and.itec.eq.1)itmax=iter
214 eold=etot
215 if(iter-itmax)999,999,400
216999 itt=itt+1
217 write(66,6147)itt
218 do 117 i=1,n
219 dval(2,i)=0.d0
220 ddval(2,i)=0.d0
221 dcore(1,i)=0.d0
222 dcore(2,i)=0.d0
223 dval(1,i)=0.d0
224 117 ddval(1,i)=0.d0
225 6147 format(///' ********************* iteration:',
226 1 i4,' ***********************'/)
227 do 917 ispin=1,iys
228 do 116 i=1,n
229 vv(i)=veff(ispin,i)
230 v(i)=2*vv(i)
231 116 db(ispin,i)=0.d0
232 lm(ispin)=-1
233 do 807 i=0,4
234 ik=i
235 if(i)817,817,818
236817 do 819 jj=1,4
237819 u(jj)=r(jj)-z*r(jj)**2
238 go to 822
239818 do 821 jj=1,4
240821 u(jj)=r(jj)**(i+1)
241822 call schrhs(vv,0.d0,ik,u)
242 merkki=1
243c determine the number of bound states
244 ncross=0
245 do 826 ii=2,n
246 if(merkki)823,823,824
247823 if(u(ii))826,826,825
248824 if(u(ii))825,826,826
249825 merkki=-merkki
250 ncross=ncross+1
251826 continue
252 dlo=(u(n)-u(n-1))*u(n)
253 if(dlo.ge.0)nbound(ispin,i+1)=ncross
254 if(dlo.lt.0)nbound(ispin,i+1)=ncross+1
255 if(nbound(ispin,i+1).eq.0)go to 827
256 lm(ispin)=i
257 write(66,678)i,nbound(ispin,i+1)
258 nbound(ispin,i+1)=min0(nbound(ispin,i+1),nb(i+1))
259678 format(' l = ',i4,',',i4,' bound states ')
260807 continue
261827 if(lm(ispin).lt.0.and.ispin.eq.2)go to 674
262 if(lm(ispin).lt.0.and.ispin.eq.1)go to 917
263 lm(ispin)=min0(lm(ispin),lmax)
264 lmm=lm(ispin)
265 do 918 i=0,lmm
266 nii=min0(nbound(ispin,i+1),8)
267 ik=i
268 do 918 ii=1,nii
269 if(rnocc(ispin,i+1,ii).lt.0.1d0)go to 918
270 nn=i+ii
271 en=2.d0*ebound(ispin,i+1,ii)
272 if(en.ge.0.d0)en=en0
273 en1=en
274 dde=de(ispin,i+1,ii)
275 if(iter.le.2)dde=0.d0
276c determine the bound state energy and eigenfunction
277 call scheq(z,en,ik,nn,mest,mesh,c,thresh,iflag,npr,dde)
278c scheq operates in rydberg units
279 if(iter.ge.2)de(ispin,i+1,ii)=abs(en-en1)
280 if(iflag.eq.1) goto 400
281 163 ebound(ispin,i+1,ii)=en/2.d0
282 nlp(ispin,i+1,ii)=npr
283 do 9188 ji=1,n
284 dval(ispin,ji)=dval(ispin,ji)+rnocc(ispin,i+1,ii)*snlo(ji)**2/sf
285 j*nval(ispin,i+1,ii)
286 ddval(ispin,ji)=ddval(ispin,ji)+rnocc(ispin,i+1,ii)*snlo(ji)**2/
287 j sf*ndval(ispin,i+1,ii)
288 dcore(ispin,ji)=dcore(ispin,ji)+rnocc(ispin,i+1,ii)*snlo(ji)**2/
289 j sf*(1-ndval(ispin,i+1,ii))*(1-nval(ispin,i+1,ii))
290 9188 db(ispin,ji)=db(ispin,ji)+rnocc(ispin,i+1,ii)*snlo(ji)**2/sf
291 918 continue
292 do 919 ji=2,n
293 dcore(ispin,ji)=dcore(ispin,ji)/r(ji)**2
294 919 db(ispin,ji)=db(ispin,ji)/r(ji)**2
295 db(ispin,1)=db(ispin,2)
296 dcore(ispin,1)=dcore(ispin,2)
297 do 5739 ji=2,n
298 ddval(ispin,ji)=ddval(ispin,ji)/r(ji)**2
2995739 dval(ispin,ji)=dval(ispin,ji)/r(ji)**2
300 dval(ispin,1)=dval(ispin,2)
301 ddval(ispin,1)=ddval(ispin,2)
302 917 continue
303 if(iys.eq.2)go to 923
304 do 921 i=1,n
305 dval(2,i)=dval(1,i)
306 ddval(2,i)=ddval(1,i)
307 dcore(2,i)=dcore(1,i)
308921 db(2,i)=db(1,i)
309 lmm=lm(1)
310 lm(2)=lm(1)
311 do 922 i=0,lmm
312 nii=nbound(1,i+1)
313 nbound(2,i+1)=nii
314 do 922 ii=1,nii
315922 ebound(2,i+1,ii)=ebound(1,i+1,ii)
316923 continue
317 8 format(' ',i6,' energy: ',f12.5,' iteration loops: ',i4)
318c
319c total bound state energy
320c
321c write(6,*) 'Total energy starts'
322c call flush(6)
323 661 eb=0.d0
324 ebv=0.d0
325 write(66,7496)
3267496 format(//' bound states'/)
327 do 673 ispin=1,2
328 lmm=lm(ispin)
329 do 673 i=0,lmm
330 nii=nbound(ispin,i+1)
331 do 673 j=1,nii
332 nn=i+j
333 nnlz=100*nn+10*i
334 eb=eb+ebound(ispin,i+1,j)*rnocc(ispin,i+1,j)
335 ebv=ebv+ebound(ispin,i+1,j)*rnocc(ispin,i+1,j)*
336 j (nval(ispin,i+1,j)+ndval(ispin,i+1,j))
337 if(rnocc(ispin,i+1,j).lt.0.1d0) go to 673
338 write(66,8) nnlz,ebound(ispin,i+1,j),nlp(ispin,i+1,j)
339 673 continue
340 go to 679
341674 write(66,676)
342676 format('0no bound states')
343679 continue
344c
345c total charge and spin densities
346c computing energy integrals
347c
348506 continue
349c=========================================
350c gga
351c set the "done" controle variables to false in the beginning of
352c each iteration
353
354 if (ixc.eq.2) then
355 doned = .false.
356 donela = .false.
357 donegr = .false.
358 donez = .false.
359 donec = .false.
360 endif
361c gga
362c========================================
363 do 660 i=2,n
364 roo(i)=db(1,i)+db(2,i)
365 rr=roo(i)
366c When db = (0,0) then the spin-polarization, spl = 0, and not 0/0.
367 if (rr.gt.0.0000000001) then
368 spl(i)=(db(1,i)-db(2,i))/rr
369 else
370 spl(i)=0.0
371 endif
372 x1=r(i)**2
373 apu(i)=x1*veff(1,i)*db(1,i)*sf
374 bpu(i)=x1*veff(2,i)*db(2,i)*sf
375 if (ixc.eq.2) then
376c================================================================
377c gga
378c calculate the gga exchange-correlation energy
379
380 call ggaexc(r,db,i,1,n,doned,excgga(i))
381 cpu(i) = x1*rr*excgga(i)*sf
382c gga
383c================================================================
384 else
385 cpu(i)=x1*rr*exc(rr,spl(i),ixc)*sf
386 endif
387 dpu(i)=x1*spl(i)*rr*sf
388 660 continue
389 26 format(' induced moment: ',f10.5)
390 call simpsh(apu,v1)
391 call simpsh(bpu,v2)
392 call simpsh(cpu,eexc)
393 call simpsh(dpu,smom)
394c
395c compute coulomb energy
396c
397 cz=z
398 do 683 i=1,n
399 bpu(i)=roo(i)*r(i)**2*sf
400 dpu(i)=(dval(1,i)+dval(2,i))*r(i)**2*sf
401 apu(i)=(ddval(1,i)+ddval(2,i))*r(i)**2*sf
402 cpu(i)=roo(i)*(r(i)**2*vc(i)-z*r(i))*sf/2.d0
403683 continue
404 call simpsh(dpu,sum1)
405 call simpsh(apu,sum3)
406 call simpsh(bpu,sum2)
407 call simpsh(cpu,ec)
408 24 format(' kin: ',2(e14.6,1x),' coul: ',e14.6,' exc: ',e14.6)
409 25 format(/' total energy: ',e15.7)
410 write(66,192) sum2,sum1,sum3
411 write(66,26) smom
412 ekin(1)=-v1
413 ekin(2)=-v2
414 etot=ekin(1)+ekin(2)+eb+ec+eexc
415 write(66,7453)
4167453 format(/' energy terms')
417 write(66,622)eb
418 622 format(' energy eigenvalue sum: ',e14.6)
419 write(66,24) ekin(1),ekin(2),ec,eexc
420 write(66,25) etot
421c write(6,2573) itt,sum2,etot
422c call flush(6)
423c2573 format(' iter:',i4,' total ch:',f6.2,' total en:',f15.7)
424 write(6,2573) itt,etot
425 call flush(6)
4262573 format(' ',i4,' ',f15.5)
427
428 if(iter.ne.1 .and. iter.lt.itr) goto 167
429 if(iout.lt.0)go to 167
430 write(66,17)
431 192 format(/' integr charges: total ',f10.7,' valence: ',2f10.7)
432 do 166 i=1,n,ipr
433 r22=r(i)*r(i)
434 db1=db(1,i)
435 db2=db(2,i)
436 dr=db1+db2
437 dcc=dcore(1,i)+dcore(2,i)
438 dvv=dval(1,i)+dval(2,i)+ddval(1,i)+ddval(2,i)
439 ddb=db1-db2
440c166 write(66,1624) r(i),db1,db2,dval(i),ddval(i),dr,ddb
441 166 write(66,1624) r(i),db1,db2,dr,dcc,dvv
442c
443c
444c compute coulomb potential
445c
446 167 do 55 i=2,n
447 55 vc(i)=r(i)*vc(i)+zion
448c write(6,*) 'Coulomb potential'
449c call flush(6)
450 zi=z-zion
451 vc(1)=-zi
452 call scrhs(roo,vc,zi,qsc,n)
453 do 50 i=2,n
454 50 vc(i)=(vc(i)-zion)/r(i)
455c
456c set up the total potential
457c
458 do 60 i=2,n
459 dr=roo(i)
460 vc(i)=(1.d0-fback)*vcold(i)+fback*vc(i)
461 vcold(i)=vc(i)
462 if (ixc.eq.2) then
463c================================================================
464c gga
465c calculate the gga exchange-correlation potential
466
467 call ggauxc(r,db,spl,i,1,n,donela,donegr,donez,
468 j uxcup(i),uxcdn(i))
469 ux1(i) = uxcup(i)
470 ux2(i) = uxcdn(i)
471c gga
472c================================================================
473 else
474 ux1(i)=uxc(dr,spl(i),1,ixc)
475 ux2(i)=uxc(dr,spl(i),2,ixc)
476 endif
477 6848 veff(1,i)=vc(i)+ux1(i)
478 veff(2,i)=vc(i)+ux2(i)
479 do 60 ispin=1,2
480 veff(ispin,i)=(1.d0-fback)*vold(ispin,i)+fback*veff(ispin,i)
481 60 vold(ispin,i)=veff(ispin,i)
482c calculate the valence energy
483 do 5100 i=2,mesh
484 do 5110 j=1,mesh
485 apu(j)=0.d0
486 if(i.le.j)apu(j)=(dval(1,j)+dval(2,j)+ddval(1,j)+ddval(2,j))*
487 j (r(j)**2/r(i)-r(j))
4885110 continue
489 call simpsh(apu,vp)
4905100 vhv(i)=-vp*4.d0*pi+zv/r(i)
491 do 5130 i=1,mesh
492 x1=r(i)**2
493 rr=db(1,i)+db(2,i)
494 spt=0.d0
495 if(rr.gt.1.d-10)spt=(db(1,i)-db(2,i))/rr
496 rrv=dval(1,i)+dval(2,i)+ddval(1,i)+ddval(2,i)
497 spv=0.d0
498 if(rrv.gt.1.d-10)spv=(dval(1,i)-dval(2,i)+ddval(1,i)-ddval(2,i))
499 j /rrv
500 rrc=dcore(1,i)+dcore(2,i)
501 spc=0.d0
502 if(rrc.gt.1.d-10)spc=(dcore(1,i)-dcore(2,i))/rrc
503 apu(i)=-0.5d0*x1*sf*rrv*vhv(i)
504 if (ixc.eq.2) then
505c=============================================================
506c gga
507c calculate the gga exchange-correlation energy for core electrons
508
509 if (rrc.lt.1.d-100) then
510 excgac = 0.d0
511 else
512 call ggaexc(r,dcore,i,1,n,donec,excgac)
513 endif
514 bpu(i)=x1*rr*excgga(i)*sf
515 cpu(i)=-x1*rrc*excgac*sf
516 fpu(i)=(dcore(1,i)+dcore(2,i))*excgga(i)*x1*sf
517 dpu(i)=(-(dval(1,i)+ddval(1,i))*uxcup(i)
518 j -(dval(2,i)+ddval(2,i))*uxcdn(i))*sf*x1
519c gga
520c==================================================================
521 else
522 bpu(i)=x1*rr*exc(rr,spt,ixc)*sf
523 cpu(i)=-x1*rrc*exc(rrc,spc,ixc)*sf
524 fpu(i)=(dcore(1,i)+dcore(2,i))*exc(rr,spt,ixc)*x1*sf
525 dpu(i)=(-(dval(1,i)+ddval(1,i))*uxc(rr,spt,1,ixc)
526 j -(dval(2,i)+ddval(2,i))*uxc(rr,spt,2,ixc))*sf*x1
527 endif
528 epu(i)=apu(i)+bpu(i)+cpu(i)+dpu(i)+fpu(i)
5295130 continue
530c call simpsh(apu,ec)
531c call simpsh(bpu,eext)
532c call simpsh(fpu,eexx)
533c call simpsh(cpu,eexc)
534c call simpsh(dpu,eexv)
535c etv=ebv+ec+eext+eexc+eexv
536 call simpsh(epu,etv)
537 etv = etv + ebv
538 write(66,5140)etv
5395140 format(' valence energy:',e15.7)
540 if(iter.ne.1 .and. iter.lt.itr) go to 100
541 if(iout.lt.0)go to 100
542 write(66,18) itt
543 do 75 i=2,n,ipr
544 dr=roo(i)
545 75 write(66,1624) r(i),vc(i),ux1(i),ux2(i),veff(1,i),veff(2,i)
5461624 format(1x,f12.5,6e14.5)
547 goto 100
548 400 continue
549c
550c
551c
552 do 1140 i=2,mesh
553 do 1130 j=1,mesh
554 apu(j)=0.d0
555 if(i.le.j)apu(j)=(db(1,j)+db(2,j))*(r(j)**2/r(i)-r(j))
5561130 continue
557 call simpsh(apu,vp)
5581140 vc(i)=-vp*sf
559 write(22,1645)itt,z,zion,jblock,nbl,c
560 write(44,1645)itt,z,zion,jblock,nbl,c
561 do 900 i=1,n
562 dd=db(1,i)+db(2,i)
563 dc=dcore(1,i)+dcore(2,i)
564 dddc = dd + dc
565 dv1=dval(1,i)+dval(2,i)
566 ddv1=ddval(1,i)+ddval(2,i)
567 vve = 0.5d00*(veff(1,i) + veff(2,i))
568 write(44,*) r(i), vc(i), vve, dddc
569c The line below writes total and core densities to atomdens.dat (J.H.)
570 write(77,906) r(i), 4*pi*dd*r(i)*r(i), 4*pi*dc*r(i)*r(i)
571 write(22,907)vc(i),veff(1,i),veff(2,i),dddc,r(i)
572 900 continue
573 907 format(6e15.7)
574c900 write(22,906)vc(i),veff(1,i),veff(2,i),dd,dc
575c900 write(22,906)vc(i),veff(1,i),veff(2,i),dd,dv1,ddv1
576 906 format(6e20.12)
577 write(6,*) '================================'
578 call flush(6)
579c ieeer=ieee_flags('clear','exception','all',ieeeout)
580 close(6)
581 close(22)
582 close(33)
583 close(55)
584 close(66)
585 close(77)
586 stop
587 end