|
|
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: 6912 (0x1b00)
Types: TextFile
Names: »rydseg«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦7b6e66aaa⟧ »crypr«
└─⟦this⟧
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦84e44a383⟧ »crypr«
└─⟦this⟧
<* rydseg
segment and file descriptions of rydberg datastructure
1981-02-16 reduction of diprec
It is a connected file system having the following
naming structure:
ryf<seq><des>
where:
<seq> is a 3 letter code for this sequence
<des> is a 3 letter code describing the content
At present:
<des>::=dat/ref/dia/dip/qua
where:
ryf<seq>dat describes the global structure and the
states,series,parent,chargestates
ryf<seq>ref gives the references if any
ryf<seq>dia has the computed diagonal matrixelements
ryf<seq>dip has the computed allowed dipole offdiagonal
matrixelements
ryf<seq>qua has the computed quadropole offdiagonal
matrixelements
*>
own integer chargerecsize,segdesrecsize,
diarecsize,diprecsize,quadrecsize;
integer array chargesegdes(1:50),segdes(1:50);
integer field datasize,refsize,diasize,dipsize,quadsize;
array field dataname, refname,dianame,dipname,quadname;
integer field datasegm, refsegm,diasegm,dipsegm,quadsegm;
<*
ryf<seq>dat
segment description:
segment 0
+ 0 atomic number of neutral atom (first series member)
+ 2 number of chargestates
+ 4 first chargestate segment description segment
+ 6 number of chargestate segment descriptions
+ 8 record size chargestate segment description
+ 10 name of datafile
+ 18 number of segments data file
+ 20 name of ref file
+ 28 number of segments ref file
+ 30 name of dia file
+ 38 number of segments dia file
+ 40 name of dip file
+ 48 number of segments dip file
+ 50 name of quad file
+ 58 number of seqments quad file
charge state segment description (1..number of chargestates)
+ 0 CHARGESTATE
+ 16 (1) first segment parentdescriptions
+ 18 (2) last segemnt parentdescriptions
+ 20 (3) first segment series descriptions
+ 22 (4) last segment series descriptions
+ 24 (5) first segment state descriptions
+ 26 (6) last segment state descriptions
+ 28 (7) first segment ref descriptions
+ 30 (8) last segment ref descriptions
+ 32 (9) first segment diagonal matrixelements
+ 34(10) last segment diagonal matrixelements
+ 36(11) first segment dipole matrixelements
+ 40(12) last segment dipole matrixelements
+ 42(13) wawefunction computed
+ 44(14) diagonal matrixelements computed
+ 46(15) dipole matrixelements computed
+ 48(16) tau and b computed
+ 50(17) sorted in emission
+ 52(18) first segment quadropole matrixelements
+ 54(19) last segment quadropole matrixelements
+ 56(20) quadropole matrixelements computed
segment 4
(segment 0 first chargestate)
segment
+ 0 CHARGESTATE
+ 1 PARENT
+ .. SERIES
+ .. STATES
*>
<*
ryf<seq>dia
segment description:
record:
+ 3 <1/r>
+ 7 <df/dr>
+ 11 <r>
+ 15 <r2>
+ 19 Ek
+ 23 Ep
+ 27 tau
+ 31 spinorbit
*>
<*
ryf<seq>dip
segment description:
record:
+ 0 state1
+ 2 state2
+ 7 (2) <r>
+ 11 (3) <c>
+ 15 (4) f
+ 19 (5) A
+ 23 (6) lambda
+ 27 (7) b
*>
<*
ryf<seq>qua
segment description
record:
+ 0 state1
+ 2 state2
+ 15 <r2>
*>
procedure initrydseg;
begin
chargerecsize:=100;
segdesrecsize:=100;
dataname:=10; datasize:=dataname+10;
ref_name:=20; ref_size:=ref_name+10;
dia_name:=30; dia_size:=dia_name+10;
dip_name:=40; dip_size:=dip_name+10;
quad_name:=50; quadsize:=quadname+10;
cleararray(chargesegdes); cleararray(segdes);
segdes(3):=2+chargerecsize*50//512;
segdes(5):=chargerecsize;
diarecsize:=32;
diprecsize:=28;
quadrecsize:=40;
end initrydseg;
procedure write_diarec(dia,diano);
value diano; integer diano;
integer array dia;
begin
real array field diaf;
integer i;
diaf:=diano*diarecsize;
write(out,"nl",2,<:diagonal record description:>);
for i:=diarecsize//4 step -1 until 1 do
begin
write(out,"nl",1,case i of(<:<1/r> :>,
<:<df/dr>:>,<:<r> :>,<:<r**2> :>,
<:Ek :>,<:Ep :>,<:tau :>,
<:SO :>),<: = :>,dia.diaf(i));
end;
end writediarec;
procedure writediprec(dip,dipno);
value dipno; integer dipno;
integer array dip;
begin
integer i;
array field dipr;
integer array field dipi;
dipr:=dipi:=dipno*diprecsize;
write(out,"nl",2,<:dipole record description:>,
"sp",3,<:from state :>,dip.dipi(1),
<: to :>,dip.dipi(2));
for i:=diprecsize//4 step -1 until 2 do
write(out,"nl",(i+1) mod 2,"sp",((i) mod 2 )*4,case i of (<::>,
<:<r> :>,
<:c :>,<:f :>,<:A :>,
<:lambda :>,<:b :>),
<< -dddddddd.dd'+d>,dip.dipr(i));
end write dip rec;
boolean procedure initrydfile(seq,des,segm,exist);
value seq,des,segm,exist;
real seq,des; integer segm; boolean exist;
begin
integer res,i,j;
boolean new;
array field nf;
integer field size;
array name,n1(1:3);
integer array tail(1:10);
cleararray(name); cleararray(tail);
res:=lookuptail(<:alname:>,tail);
nf:=2;
name(1):=if res=0 then tail.nf(1) else real <:ryf:>;
name(1):=name(1) add (seq shift (-24) extract 24);
name(2):=des;
j:=0;
new:=false;
for i:=1,2,3,4,5 do
begin
if des=(real (case i of (<:dat:>,<:ref:>,<:dia:>,<:dip:>,<:qua:>)))
then j:=i;
end;
if j=0 then alarm("*",3,<:description :>,string des,<: is not allowed:>);
nf:=10*j; size:=nf+10;
for i:=1,2 do segdes.nf(i):=name(i);
segdes.size:=segm;
res:=lookuptail(name,tail);
if res=0 and -,exist and tail(1)<segm then res:=removeentry(name);
if res=3 and -,exist then
begin
tail(1):=segm;
res:=createentry(name,tail);
new:=res=0;
j:=1;
if new then cleararea(string name(increase(j)));
end new area;
j:=1;
if res<>0 then
alarm("*",3,<:initrydfile :>,string name(increase(j)),
<: res :>,res);
if tail(1)<segm then
alarm("*",3,<:initrydfile :>,string name(increase(j)),
<:size error :>,tail(1),<: requested :>,segm);
if new then permentry(name,2);
end initrydfile;
boolean procedure lookrydfile(seq,des,segm);
value seq,des,segm;
real seq,des; integer segm;
begin
integer res,i,j;
array name(1:3);
integer array tail(1:10);
cleararray(name); cleararray(tail);
name(1):=real <:ryf:> add (seq shift (-24));
name(2):=des;
j:=0;
for i:=1,2,3,4 do
begin
if des=(real (case i of (<:dat:>,<:ref:>,<:dia:>,<:dip:>)))
then j:=i;
end;
if j=0 then alarm("*",3,<:description :>,string des,<: is not allowed:>);
res:=lookuptail(name,tail);
lookrydfile:=res=0 and tail(1)>=segm;
end lookrydfile;
procedure putalldipval(bs,dipval);
array bs;
integer array dipval;
putstruct(bs,dipval,0,chargestate(7)-1,diprecsize,chargesegdes(11));
procedure getalldipval(bs,dipval);
array bs;
integer array dipval;
begin
maxtrans:=chargestate(7);
getstruct(bs,dipval,0,chargestate(7)-1,diprecsize,chargesegdes(11));
end getalldipval;
▶EOF◀