|
|
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: 5376 (0x1500)
Types: TextFile
Names: »algstark«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦7e928b248⟧ »algbib«
└─⟦this⟧
;gosav
stark=set 45
permanent stark.17
stark=algol index.no list.no
\f
STARK PERTURBATION
GOS: 13-3-73.
begin
integer i,j,k,m,mc,s,s0,t,J1,J,k1,k2,Jm,N;
real F,Fc,Cmax,w,dw,a,b,c,d,e;
boolean nl, sp, bu, bl, Q, cpl, closeres;
integer array qtn(1:7);
array head(1:12), name(1:2), my,Acoef,Bcoef(1:3);
zone res(128,1,stderror), L(128*2,2,stderror);
readhead(in,head,1); readhead(in,name,1);
closeres:= outmedium(res);
read(in,my,N); cpl:= N<0; N:= abs N; i:= 1;
open(L,4,string name(increase(i)),0);
sp:= false add 32; nl:= false add 10; J1:= 100;
for N:=N-1 while N>=0 do begin
i:= 1;
write(res,<:<12>:>,nl,3,string head(increase(i)), nl,2,
<:Dipolkomposanter::>,<< d.dddd>,
my(1),my(2),my(3),<: Debye.:>);
Jm:= 0; write(res,nl,3,<:Transition::>,sp,5);
for j:=1,2 do begin
read(in,J,k1,k2); write(res,sp,2,<<ddd>,J,k1,k2);
if Jm<J then begin m:= Jm; Jm:= J end else m:= J;
qtn(j):= J shift 8 add k1 shift 8 add k2
end;
for j:=3,j+1 while t<>10 and j<=7 do begin
read(in,F); qtn(j):= round (F*1000);
repeatchar(in); readchar(in,t)
end;
for j:=j step 1 until 7 do qtn(j):= 0;
rep: if t<>10 then
begin readchar(in,t); goto rep end;
Q:= m=Jm; if m<J1+1 then begin
setposition(L,0,0); k:= 0; inrec(L,128); e:= L(1)
end;
if cpl then write(res,nl,1,<:
Couplings used, largest deg. corr. (F,M).:>,nl,1);
begin
array displ(1:Jm,1:5);
for i:=1 step 1 until Jm do
for j:=1 step 1 until 5 do displ(i,j):= 0;
for i:=1 step 1 until 3 do Acoef(i):= Bcoef(i):= 0;
repeat: Cmax:= 0; s0:= 0;
for j:=1,2 do begin
t:= qtn(j);
s:= if t = e shift (-24) extract 24 then -1 else
if t = e extract 24 then 1 else 0;
if s<>0 then begin
k1:= (e shift (-32) extract 8)-(e shift (-8) extract 8);
k2:= (e shift (-24) extract 8)-(e extract 8);
bu:= k1 = k1//2*2; bl:= k2 = k2//2*2;
t:= if bu and -,bl then 1 else
if -,bu and -,bl then 2 else
if -,bu and bl then 3 else 0;
if t=0 then goto stop;
if my(t)>0 then begin
J1:= e shift (-40) extract 8;
J := e shift (-16) extract 8;
if cpl then
write(res,nl,1,<<ddd>,J1,e shift (-32) extract 8,
e shift (-24) extract 8,sp,2,J,e shift (-8) extract 8,
e extract 8,sp,3,<<-dddddd.dd>,L(k+2)) else
if abs s0=1 then write(res,<<__ddd ddd.dd>,L(k+2))
else s0:= s;
if j=1 then s:= -s;
b:= L(k+3)*0.06336397; d:= L(k+2)*s;
if J1=J then a:= 0 else
begin a:= b*J*J; b:= -b end;
Acoef(t):= Acoef(t) + a/d;
Bcoef(t):= Bcoef(t) + b/d;
for i:=1 step 1 until 5 do begin
F:= qtn(i+2)/1000; if F>0 then begin
for k1:=1 step 1 until Jm do begin
m:= if Q then k1 else k1-1;
c:= (a + b*m*m)*(my(t)*F)**2;
bu:= c*c>(d*d+c)*abs d*0.0001; dw:= c/d;
if bu then begin
w:= (c+c)/(d + sign(d)*sqrt(d*d+4*c));
dw:= w-dw; if abs dw > abs Cmax then begin
mc:= m; Fc:= F; Cmax:= dw end
end else w:= dw;
displ(k1,i):= displ(k1,i) + w
end end end;
if Cmax<>0 and cpl then write(res,sp,4,<<-ddd.ddd>,
Cmax,<: (:>,<<dddd.d>,Fc,<:,:>,<<dd>,mc,<:):>)
end end end;
k:= (k+3) mod 126; if k=0 then inrec(L,128);
e:= L(k+1); J1:= e shift (-16) extract 8;
if J1>=0 and J1<=Jm+1 then goto repeat;
write(res,nl,2,<:Coeff. for:>,sp,5);
for t:=1,2,3 do begin
if my(t)>0 then write(res,sp,5,<:(F*my:>,
case t of (<:A:>,<:B:>,<:C:>),<:)**2:>)
end;
write(res,nl,1,<: A =:>,sp,8);
for t:=1,2,3 do if my(t)>0 then
write(res,sp,4,<<-d.ddddd'-d>,Acoef(t));
write(res,nl,1,<: B =:>,sp,8);
for t:=1,2,3 do if my(t)>0 then
write(res,sp,4,<<-d.ddddd'-d>,Bcoef(t));
write(res,nl,1,<: M:>);
for i:=1 step 1 until Jm do begin
m:= if Q then i else i-1;
write(res,nl,1,<<ddddd>,m,sp,10);
for t:=1,2,3 do if my(t)>0 then
write(res,sp,4,<<-d.ddddd'-d>,Acoef(t)+Bcoef(t)*m*m);
end i;
write(res,nl,2,<:Stark shifts in MHz:>,nl,1,<: M F = :>);
for j:=1 step 1 until 5 do if qtn(j+2)>0 then
write(res,sp,4,<<dddd.d>,qtn(j+2)/1000);
for i:=1 step 1 until Jm do begin
m:= if Q then i else i-1;
write(res,nl,1,<<ddd>,m,sp,7);
for j:=1 step 1 until 5 do if qtn(j+2)>0 then begin
d:= 0; for t:=1,2,3 do
d:= d + (Acoef(t)+Bcoef(t)*m*m)*my(t)**2;
write(res,sp,2,<<-dddd.dd>,d*(qtn(j+2)/1000)**2)
end end;
write(res,nl,2,<:Stark shifts in MHz (corr. for near deg.):>,
nl,1,<: M F = :>);
for j:=1 step 1 until 5 do if qtn(j+2)>0 then
write(res,sp,4,<<dddd.d>,qtn(j+2)/1000);
for i:=1 step 1 until Jm do begin
m:= if Q then i else i-1;
write(res,nl,1,<<ddd>,m,sp,7);
for j:=1 step 1 until 5 do if qtn(j+2)>0 then
write(res,sp,2,<<-dddd.dd>,displ(i,j))
end;
end end N;
stop: write(res,<:<12><25>:>); close(res,closeres)
end
▶EOF◀