|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3072 (0xc00) Types: TextFile Names: »rydritz«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦e6c2bcfa6⟧ »cryprog« └─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦e6c2bcfa6⟧ »cryprog« └─⟦this⟧
<*rydberg ritz fit 1980-11-21 *> procedure rydritz(E,ns,nmin,nmax,L,l,J,z); value nmin,nmax,L,l,J,z; integer nmin,nmax,L,l,J,z; array E,ns; begin integer n,i,j,grad,points,iter,ndiff; real nstar,Eau,d,defect,stddev; boolean allfit,first,list; integer lfit; list:=z>0; z:=abs z; allfit:=false; grad:=2; l:=l//2; for n:=if nmin<l+1 then l+1 else nmin step 1 until nmax do begin if E(n)<0 then lfit:=lfit+1; end; begin array W,X,Y(1:nmax),c,s(0:grad); comment fits then quantumdefects to the Rydberg-Ritz formulae. See H.G. Kuhn: Atomic Spectra (2.ed), Longman, London 1969 p. 133; overflows:=0; if grad>=lfit-1 then grad:=lfit-2; if grad<0 then grad:=0; j:=1; for i:=1 step 1 until nmax do W(i):=X(i):=Y(i):=0.0; ndiff:=0; if list then write(out,"nl",1,"+",15,<:ryd ritz fit:>,"+",15); for n:=if l+1<nmin then nmin else l+1 step 1 until nmax do begin Eau:=E(n); nstar:=ns(n); if Eau<0 then begin X(j):=1/nstar/nstar; Y(j):=n-nstar; W(j):=nstar; Y(j):=Y(j)*W(j); if list then write(out,"nl",1,<<d>,n,<< -d.dddd>,X(j),Y(j),W(j),j); if abs(n-nstar-.6)>ndiff then ndiff:=abs(n-nstar-.6); j:=j+1; end; end; points:=j:=j-1; TRYAGAIN: stddev:=polfitw(X,Y,W,j,c,s,grad); if grad>1 and abs c(1)>abs c(0) then begin grad:=grad-1; goto TRYAGAIN; end; overflows:=-1; if list then begin write(out,<:<10><10>:>,false add ryalf(l*2),1); if J>-1 then write(out,<:_:>,if J mod 2 = 1 then J else J//2, if J mod 2 =1 then <:/2:> else <::>); write(out,<:-states:>); write(out,"nl",1,<:s = :>,sqrt(stddev)); write(out,"nl",1,<:points = :>,points); for i:=0 step 1 until grad do write(out,<:<10>:>,<<d>,i,<:. degree = :>,<< -d.ddddd>,c(i), <: +- :>,s(i)); end list; first:=true; for n:=if l+1<nmin then nmin else l+1 step 1 until nmax do begin Eau:=E(n); if (Eau>=0 or allfit) and n>4 then begin if first and list then begin first:=false; write(out,<:<10>state E(a.u.) n* :>); if allfit then write(out,<: dn* :>); write(out,<: defect:>); end; nstar:=n; defect:='6; iter:=0; nextiter: iter:=iter+1; d:=defect; defect:=c(grad); for i:=grad step -1 until 1 do defect:=defect/nstar/nstar+c(i-1); nstar:=n-defect; if abs(d-defect)>'-5 and iter<101 then goto nextiter; if iter>20 then write(out,<:<10>iterations =:>,iter); if Eau>=0 then ns(n):=nstar; Eau:=-z**2/2/nstar**2; if list then begin write(out,<:<10>:>); writestate(out,L,n,l*2,J); write(out,<< -dd.dddddd>,Eau,nstar); if allfit then write(out,<< -dd.dddddd>,(nstar-ns(n))/nstar); write(out,<< -dd.dddddd>,defect); end list; E(n):=Eau; end; end; end; if list then write(out,"nl",1,"+",15,<:end fit:>,"+",15); end rydritz; ▶EOF◀