|
|
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: 9984 (0x2700)
Types: TextFile
Names: »plotoscpr«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
└─⟦4334b4c0b⟧
└─⟦97b7ffb00⟧ »ryplot«
└─⟦this⟧
<* plotosc plotting of lifetimes *>
boolean procedure plottauosc(bsname,parterm,chargestates);
value chargestates; integer chargestates;
array bsname;
integer array parterm;
if chargesegdes(15)<0 and chargesegdes(16)<0 then
begin comment local block for plotosc;
integer i,trans,tottrans,sta,lpos,st,avc,c1,torder,sig,nm,
newstate,n2a,seriesindex2a,L2a,J2a,state2a;
real tau,tau2,osc,A,Sl,lambda,c,
cut,b;
array xmin,xmax,ymin,ymax,taumin,taumax(0:7);
real tfak,pls,plh,he,le,les,plxdis,plydis,
xsize,ysize,bmax,nsmean,rectsize1,rectsize2,rectx1,rectx2,
dlm,nv,n2v,layt;
array bsdipname(1:2),nsav(0:maxstates-1);
algol list.off copy.statevar;
algol list.off copy.statevar2;
integer array field dipi;
array field dipf;
if taukey then begin
write(out,"nl",2,<:lifetime plotting:>,"nl",1);
end;
initrydfile(bsname(1) shift 24, real <:dip:>,segdes.dipsize,true);
for i:=1,2 do bsdipname(i):=segdes.dipname(i);
keystat:=lookupentry(<:rytaukey:>)=0;
taukey:=taukey or keystat;
begin
integer array dipval(1:chargestate(7)*diprecsize//2);
getalldipval(bsdipname,dipval);
for i:=0 step 1 until 7 do
begin
xmax(i):=ymax(i):=taumax(i):=0;
xmin(i):=ymin(i):=taumin(i):=maxreal;
end;
for i:=0 step 1 until maxstates-1 do nsav(i):=0;
algol list.off copy.allstatel; <*calculate max and min*>
if nstar<nsmax and l<=lmax then
begin
if taukey then
begin
write(out,"nl",1,"*",1);
writestate(out,L,n,l,J);
write(out,<: t = :>,tau);
end;
if l//2>xmax(cores) then xmax(cores):=l//2;
if l//2<xmin(cores) then xmin(cores):=l//2;
if nstar>ymax(cores) then ymax(cores):=nstar;
if nstar<ymin(cores) then ymin(cores):=nstar;
if tau>taumax(cores) then taumax(cores):=tau;
if tau<taumin(cores) then taumin(cores):=tau;
if false then
write(out,"nl",1,<:xmin :>,xmin(cores),<: xmax:>,xmax(cores),
<: ymin:>,ymin(cores),<: ymax:>,ymax(cores),
<: cores:>,cores);
nsmean:=nstar;
newstate:=state;
if finestruct and l>0 then
begin
st:=0; avc:=1;
for i:=abs(l-S)+2 step 2 until l+S do
begin
st:=st+1;
if state+st<maxstates then
begin
getstate(states,state+st,n2,J2,seriesindex2,nstar2,Ecm2,L2,app2);
ser2:=seriesindex2*seriessize;
l2:=series.ser(1);
if n=n2 and l=l2 and L=L2 and computed then
begin
avc:=avc+1;
nsmean:=nsmean+nstar2;
newstate:=state+st;
end;
end state<maxstates;
end i;
nsmean:=nsmean/avc;
end finestruct;
for st:=state step 1 until newstate do nsav(state):=nsmean;
state:=newstate;
end n*<n*max;
end end stateloop;
keystat:=true;
algol list.off copy.allstatel;
end for state;
keystat:=false;
for cores:=0 step 1 until chargestate(4) do
begin
pardes:=parentsize*cores;
S:=parterm.pardes(6);
xmin(cores):=xmin(cores)/2;
tfak:='3;
lpos:=5;
if taumax(cores)>1 then tfak:=1;
if taumin(cores)>='-5 and taumax(cores)<9.99 then tfak:='3 else
if taumin(cores)<0.1 and tfak=1 then lpos:=6;
if taumax(cores)>'5 then lpos:=6;
if list then write(out,false add 10,4,<: trans f b<37>:>);
xfactor:=size*xfactor;
yfactor:=size*yfactor;
pls:=.2*charfactor;
plh:=sqrt2*pls;
les:=le:=pls*(lpos+1);
if finestruct then les:=2*les;
plxdis:=le-pls;
xsize:=le+(xmax(cores)-xmin(cores))*les+(xmax(cores)-xmin(cores)+2)*plxdis;
he:=plh*2;
plydis:=6*plh;
ysize:=plydis*(ymax(cores) - ymin(cores));
plotxform:=entier (xsize*xfactor);
plotyform:=entier (ysize*yfactor+4*he*size);
if plotxform<0 or plotyform<0 or plotxform>50 or plotyform>50 then
write(out,"nl",1,"*",2,<:format trouble , cores :>,cores,"nl",1,
<:xfactor :>,xfactor,<: yfactor:>,yfactor,<: size:>,size,"nl",1,
<:xmin:>,xmin(cores),<: max :>,xmax(cores),<: ymin:>,ymin(cores),<: ymax:>,ymax(cores),"nl",1,
<:plxdis:>,plxdis,<: plydis:>,plydis);
if plottest then write(out,"nl",1,"*",1,<:format :>,plotxform+1,plotyform+1);
if plotno then else
if -,plotform(0,plotxform+1,plotyform+1) then alarm(<:***format:>);
plotsettext(pls*size,plh*size,0,0,0);
he:=he*size;
dlm:=if finestruct then .25 else .1;
plotspline:=true;
if mode2 then begin
if xmax(cores)<4 then setmargin(plotxform-22*plotsize,2*plotheight) else
if xmax(cores)>8 then setmargin(plotxform-5*size-22*plotsize,20*plotheight) else
setmargin(plotxform-2.5*size-22*plotsize,3*plotheight);
end else setmargin(2*plotsize,plotyform-3*plotheight);
if xmax(cores)>4 then plotsettext(plotsize*1.25,plotheight*1.25,0,0,0);
if xmax(cores)>8 then plotsettext(plotsize*1.5,plotheight*1.5,0,0,0);
if plotno then else
begin
writeplot(<:<12>:>);
plotatsym(S,atno,Z);
writeplot(<:(:>);
plotatsym(S,segdes(1),1);
if -,mode2 then begin
writeplot(<: sequence):>);
if pname(2)<>real <:06a:> then
begin
if pldate then begin
writedate(plotz,6);
setposition(plotz,0,0);
end;
writeplot(<:<10>lifetimes:>,
if tfak>1 then <:(ps):> else <:(ns):>,
<:<10>relative transition strengths:>);
writeplot(<:<10>:>);
pendown;
plotmove(plotxpos+1.2*xfactor,plotypos);
penup;
writeplot(<: b>=:>,if brsmin<10 then <<d.d> else <<dd>,brsmin,<:<37>:>);
writeplot(<:<10>:>);
setmask(.2,.15,.2);
pendown; plotmove(plotxpos+1.2*xfactor,plotypos); penup;
setmask(0,0,0);
writeplot(<< dd>,brsmin,<:<37>>b>=:>,<<dd>,brmin,<:<37>:>);
end not display;
end mode1 else begin
writeplot(<:):>);
plotmove(plotxpos-5*plotsize,plotypos+2*plotheight);
writeplot(<:<14>t<15>:>,if tfak>1 then <:(ps):> else <:(ns):>);
end mode2;
end plotted;
if xmax(cores)>8 then plotsettext(plotsize*2/3,plotheight*2/3,0,0,0);
if xmax(cores)>4 then plotsettext(.8*plotsize,.8*plotheight,0,0,0);
stateno:=parterm.pardes(10);
if plottest or taukey then
write(out,"nl",2,<:cores :>,cores,<:first state :>,parterm.pardes(9),
<: last state :>,stateno);
for state:=parterm.pardes(9) step 1 until stateno do
begin
getstate(states,state,n,J,seriesindex,nstar,Ecm,L,app);
ser:=seriesindex*seriessize;
l:=series.ser(1);
computed:=getcomputed(states,state,cutcase,cut);
tau:=gettau(states,state);
if L<0 then L:=l;
trans:=gettransno(states,state);
rectsize2:=les;
rectsize1:=if l>0 then rectsize2 else le;
rectx1:=(if l=0 then plxdis+le/2 else
le+(l//2+1)*plxdis+(l//2-1/2)*les)*xfactor;
rectx2:=(le+(l//2+2)*plxdis+(l//2+1/2)*les)*xfactor;
nsmean:=nsav(state);
newstate:=state;
if plottest then
begin
write(out,"nl",1,"*",1);
writestate(out,L,n,l,J);
write(out,nsmean,tau,state);
end;
if computed then
begin
nv:=(nsmean-ymin(cores))*plydis*yfactor+2*he;
if plotno or nsmean<='-7 then else
begin
if mode2 then begin
plotmove(rectx1-2*plotsize,nv+(.50*he+plotheight*.4));
writeplot(<<dd>,n,false add ryalf(l),1);
end mode2;
plotrect(rectx1,nv,rectsize1*size,he);
plotmove(plotxpos+plotsize/4,nv-plotheight/2);
if -,mode2 then
begin
plotmove(plotxpos-4*plotsize,plotypos);
writeplot(<<dd>,n,false add ryalf(l),1,<: :>);
end mode2;
end plotting;
st:=-1;
for J2:=abs(l-S),J2+2 while J2<=l+S do
begin
st:=st+1;
tau:=0;
if state+st<=stateno then
begin
getstate(states,state+st,n2,J2,seriesindex2,nstar2,Ecm2,L2,app2);
ser2:=seriesindex2*seriessize;
l2:=series.ser2(1);
if L2<0 then L2:=l2;
if n=n2 and L=L2 and l=l2 then
begin
newstate:=state+st;
tau:=gettau(states,newstate);
end found;
end state<max;
if tau>0 then
begin
tau:=tau*tfak;
torder:=entier(ln(tau)/ln(10)+1);
if finestruct and J2>abs(l-S) and (torder=3 or torder=4) then
write(out,"sp",1);
if torder<0 and lpos=6 then layt:=real <<d.dddd> else
if torder<0 then layt:= real <<d.ddd> else
if torder>5 then layt:=real <<d.dd'd> else
layt:=real (case torder+1 of(
<<d.ddd>,
<< d.dd>,
<< dd.d>,
<< ddd>,
<<dddd>,
<<ddddd>));
if -,plotno and nsmean>'-7 then
writeplot(string layt,tau,"sp",if torder=3 or torder=4 then 2 else 1);
end tau>0 else
if l>0 and finestruct and J2<l+S and -,plotno and nsmean>'-7 then
writeplot("sp",lpos);
end J2;
if l//2<round(2*xmax(cores)) then
c1:=0;
algol list.on copy.allstatel2;
bmax:=b;
n2v:=(nsav(state2)-ymin(cores))*plydis*yfactor+2*he;
state2a:=state2;
J2a:=l2-S;
for J2a:=J2a+2 while J2a<=l2+S and state2a<stateno-1 do
begin
state2a:=state2a+1;
if plottest then write(out,"sp",2,<:2a:>,state2a);
getstate(states,state2a,n2a,0,seriesindex2a,0.0,0.0,L2a,0);
if L2a<0 then L2a:=l2;
if seriesindex2a=seriesindex2 and n2a=n2
and L2a=L2 and trans>1 and tottrans<maxtrans then
begin
message j2a loop;
dipi:=dipf:=diprecsize*(tottrans+1);
if state=dipval.dipi(1) and state2a=dipval.dipi(2) then
begin
if bmax<dipval.dipf(7) then bmax:=dipval.dipf(7);
tottrans:=tottrans+1;
trans:=trans-1;
end;
end;
end;
b:=bmax;
n2v:=(nsav(state2)-ymin(cores))*plydis*yfactor+2*he;
if plottest then
begin
write(out,"nl",1);
writestate(out,L2,n2,l2,J2);
write(out,<: b<37> =:>,b,state2);
end test;
if n2v>'-8 and abs b>=brmin then begin
sig:=sign(nv-n2v);
nm:=n mod 2+2;
if plotosc and -,plotno and nsmean>'-7 then begin
plotmove(l//2+.5+1/(nm+1),(nm*nv+n2v)/(nm+1)+sig*plotheight/2/deltay);
writeplot(<<d.ddd>,osc);
end plotosc;
if b<brsmin then setmask(.2,.15,.2);
if plotno or nsmean<='-7 then else
begin
if c1 mod 2=0 then
plottr(rectx1,nv,rectx2,n2v,rectsize1,rectsize2,he,dlm) else
plottr(rectx2,n2v,rectx1,nv,rectsize2,rectsize1,he,-dlm);
end plotting;
setmask(0,0,0);
c1:=c1+1;
end b>brmin;
end; tottrans:=tottrans+1; end allstatel2;
end nsmean>0;
for st:=state+1 step 1 until newstate do
begin
trans:=gettransno(states,st);
tottrans:=tottrans+trans;
end;
state:=newstate;
end for cores;
end end allstatel;
end dipval;
plotclose;
if test then outendcur(10);
end plottrans;
▶EOF◀