DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦27bc7d41b⟧ TextFile

    Length: 4608 (0x1200)
    Types: TextFile
    Names: »tplotdec«

Derivation

└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
    └─⟦4334b4c0b⟧ 
        └─⟦97b7ffb00⟧ »ryplot« 
            └─⟦this⟧ 

TextFile


(mode list.yes
lookup rydlist
if ok.yes
mode 15.yes
lkj=lookup plotstate
if ok.no
contract from.ryplot plotstate
lkj=lookup rydseg ryproc alutproc rydstruct statevar stateloop,
     ryglobal
if ok.no
contract from.crypr rydseg ryproc alutproc rydstruct statevar stateloop,
    ryglobal
plotdec=algol
scope day plotdec
mode 10.no 15.no list.no)
plotdec
1982-02-16
1981-12-09 input data for discrete
begin
boolean discrete,regint;
integer maxexp,maxtries;
boolean plot,continue,printc;
integer L,n,l,J,no,i,pmm,max,curve,curvemin,curvemax,maxy;
real t,tau,dt,delt,maxval,beta,MeV,slitw,tauf,xmax,ymax,tmax,
     unit;
long array inp(1:3);
array field f;
array pname(1:3),datax,datay(1:250);
algol list.off copy.plotstate;
algol list.off copy.rydseg;
algol list.off copy.ryproc;
algol list.off copy.alutproc;
algol list.off copy.rydstruct;

boolean procedure readdecaycurve(datax,datay,points,max,L,n,l,J,pmm,tau);
integer points,max,L,n,l,J,pmm;
real tau;
array datax,datay;
begin
integer c,char,j;
real maxv,x,y,xscale,ylnscale,ln10;
array a(1:10);
  ln10:=ln(10);
  readstring(in,a,1);
  readstate(in,L,n,l,J);
  read(in,pmm);
  unit:=1;
  repeatchar(in);
  readchar(in,char);
  if char='/' then read(in,unit);
  read(in,tau);
  if pmm=0 then
  begin
    read(in,xscale,ylnscale);
    xscale:=xscale/10*tau; <* 10ns= xscale cm*>
        <*x data are later multiplied by tau*>
    ylnscale:=ylnscale/4/ln10; <* 10**0-10**4 = ylnscale cm*>
  end scale;
  char:=j:=max:=0;
  maxv:=0;
  for j:=j+1 while char<>'em' and char<>'e' and char<>'s' do
  begin
    if pmm=0 then
    begin
      read(in,x,y);
      datax(j):=x/xscale;
      datay(j):=exp(y/ylnscale);
    end else
    begin
      read(in,datay(j));
     end;
    if maxv<datay(j) then
    begin
     maxv:=datay(j);
     max:=j;
    end;
    repeatchar(in);
    for c:=readchar(in,char) while c<>2 and char<>25 and char<>'e'
      and char<>'s' do;
    repeatchar(in);
    points:=j;
  end;
readdecaycurve:=char='e' or char='em';
end readdecaycurve;
algol copy.ryglobal;
readbfp(<:finestruct:>,finestruct,false);
readrfp(<:tauf:>,tauf,1);
maxy:=7;
readbfp(<:list:>,list,false);
readbfp(<:survey:>,survey,true);
survey:=list or survey;
readsfp(<:plotter:>,pname,<:houstona:>);
setplotname(string inc(pname),0);
readbfp(<:plot:>,plot,false);
list:=list or -,plot;
readbfp(<:discrete:>,discrete,false);
plot:=plot and -,discrete;
readifp(<:exp:>,maxexp,5);
readifp(<:tries:>,maxtries,7);
curvemin:=1;
curvemax:=maxinteger;
readrfp(<:tmax:>,tmax,1000);
if readifp(<:curve:>,curve,1) then curvemin:=curvemax:=curve;

readatsym(in,S,atno,Z);
read(in,MeV,slitw);
  continue:=true;
  curve:=0;
  while continue do
  begin
  curve:=curve+1;
  printc:=curve>=curvemin;
  if printc then
  begin
    write(out,"nl",3);
    writeatsym(out,S,atno,Z); write(out,"sp",2);
  end;
  continue:=-,readdecaycurve(datax,datay,
             no,max,L,n,l,J,pmm,tau) and curve<curvemax;
  tau:=tau*tauf;
  regint:=pmm<>0;
  if printc then
  begin
    writestate(out,L,n,l,J); write(out,"sp",2);
    beta:=13.9*sqrt(MeV/atomicmass(atno));
    delt:=slitw/beta;
    dt:=1/beta/pmm/tau*unit;
    maxval:=datay(max);
    write(out,
    "nl",1,<:MeV     = :>,MeV,
    "nl",1,<:points/mm=:>,pmm/unit,
    "nl",1,<:slitwith= :>,slitw,
    "nl",1,<:dt(slit)= :>,delt, <*ns*>
    "nl",1,<:amu     = :>,atomicmass(atno),
    "nl",1,<:points  = :>,no,
    "nl",1,<:tau ns  = :>,<< ddd.dd>,tau,
    "nl",1,<:v mm/ns = :>,<< d.dddddd>,beta,
    "nl",1,<:dt (tau)= :>,<< d.dddd>,dt);
if pmm<>0 then
begin
  for i:=1 step 1 until no do datax(i):=i*dt;
end;
algol list.on copy.discreteinp;
if plot then
begin
plotform(0,25,18);
setmargin(0.4,plotyform-2*linediff);
writeplot("ff",1);
writeatsym(plotz,-1,atno,Z);
setposition(plotz,0,0);
writeplot("sp",2);
plotstate(n,l,S,l,J);
setposition(plotz,0,0);
writeplot("sp",2,<:<14>t<15>(NCA) = :>,<<ddd.ddd>,tau,
     <: d<14>t<15> = :>,dt);
plotmove(plotxform-1,plotyform-1);
writeplot(<<d>,curve);
plotsubform(0,plotxform,0,plotyform-4,false);
plotadmini(0,if tmax<datax(no) then tmax else datax(no),0,maxy,0);
plotline(datax(max),maxy,datax(max)+maxy,0);
end plot;
for i:=1 step 1 until no do
  begin
  t:=datax(i);
  if datay(i)>0 and t<plotxmax then
  begin
    if list then write(out,"nl",1,t,ln(datay(i)/maxval),datay(i));
    if plot then plotpoint(t,ln(datay(i)/maxval)+maxy,1);
  end;
  end;
if list then outendcur(10);
if plot then plotclose;
end;
  end;
end;
▶EOF◀