|
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◀