|
|
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: 4608 (0x1200)
Types: TextFile
Names: »algkrmn«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦7e928b248⟧ »algbib«
└─⟦this⟧
;gosav
lookup krmn
if ok.no
(krmn=set 46
permanent krmn.17
krmn=algol index.no list.no)
\f
GENERELT KRAITCHMAN-PROGRAM. 19-5-1976, GOS.
begin
comment Programmet beregner substitutionskoordinater
med usikkerheder. Hertil benyttes Ia, Ib og Ic.
Som input kræves:
1) En overskrift i <>,
(molekylets navn, evt. dato, initialer etc.)
2) Inertimomenter for modermolekylet Ia, Ib, Ic (u Å**2),
3) De tilsvarende usikkerheder og korrelationskoef-
ficienterne Cab,Cbc,Cca,
4) Antallet af atomer i molekylet samt det tilsvarende
antal atomsymboler.
5) For hvert isotopsubst. molekyle: en overskrift i <>,
inertimomenter analogt med pkt. 2 og 3 samt symboler
for det substituerede atom og det nye atom.
6) Regningerne standses ved <>;
integer i,j,k,N;
real my,a,da,b,db,c,dc,paa,pbb,pcc,pab,pbc,pca,m,dm,P,Q,X;
array R,dR,S,dS,CR,CS(1:3),d(1:6),head(1:12);
boolean closeres,nl;
zone res(128,1,stderror);
nl:= false add 10; closeres:= outmedium(res);
Q:= real <<_-ddd.dddddd>; X:= real <<-dd.ddddd>;
readhead(in,head,1); i:=1;
write(res,nl,1,string head(increase(i)),<:
Beregning med Kraitchman-program af 19-5-1976.:>);
read(in,R,dR,CR,N);
begin array mass(1:N);
if atomic(mass,N) then goto stop;
m:= sum(mass(i),i,1,N)
end;
dR(3):= - dR(3);
P:= sum(dR(k)*(dR(k)+2*CR(k)*dR(k mod 3+1)),k,1,3);
dR(3):= - dR(3);
write(res,nl,1,<:
I = :>,string Q,R(1),R(2),R(3),<: ID =:>,
R(3)-R(1)-R(2),<:
dI = :>,dR(1),dR(2),dR(3),<: dID =:>,sqrt(P),<:
Cij= :>,<<___-d.ddd>,CR(1),<<______-d.ddd>,CR(2),CR(3));
readhead(in,head,1);
SUB: i:=1;
write(res,nl,2,string head(increase(i))); read(in,S,dS,CS);
if atomic(head,2) then goto stop;
dm:= head(2)-head(1);
dS(3):= - dS(3);
P:= sum(dS(k)*(dS(k)+2*CS(k)*dS(k mod 3+1)),k,1,3);
dS(3):= - dS(3);
write(res,<:-subst.
I = :>,string Q,S(1),S(2),S(3),<: ID =:>,
S(3)-S(1)-S(2),<:
dI = :>,dS(1),dS(2),dS(3),<: dID =:>,sqrt(P),<:
Cij= :>,<<___-d.ddd>,CS(1),<<______-d.ddd>,CS(2),CS(3),nl,1);
my:=m*dm/(m+dm);
paa:= ( R(1)-R(2)-R(3)-S(1)+S(2)+S(3))*0.5;
pbb:= (-R(1)+R(2)-R(3)+S(1)-S(2)+S(3))*0.5;
pcc:= (-R(1)-R(2)+R(3)+S(1)+S(2)-S(3))*0.5;
pab:= R(2)-R(1);
pbc:= R(3)-R(2);
pca:= R(1)-R(3);
for j:=1 step 1 until 3 do begin
c:= paa*(1-pbb/pab)*(1+pcc/pca)/my;
d(1):= (0.5/paa-0.5/(pab-pbb)+0.5/(pca+pcc)+1/pab-1/pca)*dR(1);
d(2):= (0.5/paa-0.5/(pab-pbb)+0.5/(pca+pcc)+1/pab)*dR(2);
d(3):= (0.5/paa-0.5/(pab-pbb)+0.5/(pca+pcc)-1/pca)*dR(3);
d(4):= (0.5/paa+0.5/(pab-pbb)-0.5/(pca+pcc))*dS(1);
d(5):= (0.5/paa+0.5/(pab-pbb)+0.5/(pca+pcc))*dS(2);
d(6):= (0.5/paa-0.5/(pab-pbb)-0.5/(pca+pcc))*dS(3);
dc:= sum(d(k)*d(k),k,1,6) +
2*sum(CR(k)*d(k)*d(k mod 3+1) +
CS(k)*d(k+3)*d(k mod 3+4),k,1,3);
dc:= dc*c/4;
if j=1 then begin a:= c; da:= dc end else
if j=2 then begin b:= c; db:= dc end;
P:= paa; paa:= pbb; pbb:= pcc; pcc:= P;
P:= pab; pab:= pbc; pbc:= pca; pca:= P;
end;
write(res,<:
a = :>); if a>0.0 then
write(res,string X, sqrt(a),<: :>, sqrt(da))
else write(res,<:ubestemt:>);
write(res,<:
b = :>); if b>0.0 then
write(res,string X, sqrt(b),<: :>, sqrt(db))
else write(res,<:ubestemt:>);
write(res,<:
c = :>); if c>0.0 then
write(res,string X, sqrt(c),<: :>, sqrt(dc))
else write(res,<:ubestemt:>);
write(res,<: af Ia, Ib og Ic,:>,nl,1);
i:= readhead(in,head,1);
if i > 0 then goto SUB;
stop:
write(res,<:<25>:>); close(res,closeres)
end;
▶EOF◀