|
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: 5376 (0x1500) Types: TextFile Names: »algplankrmn«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦7e928b248⟧ »algbib« └─⟦this⟧
;gosav lookup plankrmn if ok.no (r=algol index.no rename r.plankrmn permanent plankrmn.17) \f KRAITCHMAN-PROGRAM FOR PLANE MOLEKYLER. 28-4-71. GOS. begin comment Programmet beregner substitutionskoordinater med usikkerheder. Hertil benyttes Ia og Ib samt, for Ib-Ia > 100*ID, 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, uÅ**2, samt correlations- koefficienterne Cab, Cac og Cbc. 4) Antallet af atomer i molekylet samt det tilsvarende antal symboler for modermolekylets atomer. 5) For hvert isotopsubst. molekyle: en overskrift i < >, Ia, Ib, Ic, dIa, dIb, dIc, Cab, Cac, Cbc, symboler for det substituerede atom og det nye atom samt to styretal: a) M = 0, hvis subst. paa a-axen, ellers 1, b) L = 0, hvis subst. paa b-axen, ellers 1 (herved benyttes lineære Kraitchman-formler), 6) Umiddelbart efter styretallet L benyttes som sidste skilletegn (delimiter) s; integer i,N,M,L; real my,a,da,b,db,m,dm,x,y,z,v,Q,X,V; array R,dR,S,dS,CR,CS(1:3),dX(1:4),head(1:10); boolean closeres,nl,sp; zone res(128,1,stderror); closeres:= outmedium(res); Q:= real<<-dddd.dddddd>; X:= real<<d.dddddd>; V:= real<<___ddd.dd>; readhead(in,head,1); i:=1; nl:= false add 10; sp:= false add 32; write(res,<:<12>:>,nl,2,string head(increase(i)),<: Beregning med plant Kraitchman-program af 28-4-1971. :>); read(in,R,dR,CR,N); for i:=1,2,3 do dX(i):= CR(i); 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 =:>); CR(1):= CR(1)*dR(1)*dR(2)*2; CR(2):= CR(2)*dR(1)*dR(3)*2; CR(3):= CR(3)*dR(2)*dR(3)*2; v:= 0; for i:=1,2,3 do begin dR(i):= dR(i)**2; v:= v+dR(i)+CR(i)*(if i=1 then 1 else -1) end; write(res,string Q,sqrt(v),<: Correlations, Cab, Cac, Cbc: :>, <<_-d.ddd>,dX(1),dX(2),dX(3),nl,1); begin array mass(1:N); if atomic(mass,N) then goto stop; m:= sum(mass(i),i,1,N); SUB: readhead(in,head,1); read(in,S,dS,CS); for i:=1,2,3 do dX(i):= CS(i); if atomic(mass,2) then goto stop; dm:= mass(2)-mass(1); read(in,M,L); i:= 1; write(res,nl,2,string head(increase(i)),<:-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 =:>); CS(1):= CS(1)*dS(1)*dS(2)*2; CS(2):= CS(2)*dS(1)*dS(3)*2; CS(3):= CS(3)*dS(2)*dS(3)*2; v:= 0; for i:=1,2,3 do begin dS(i):= dS(i)**2; v:= v+dS(i)+CS(i)*(if i=1 then 1 else -1) end; write(res,string Q,sqrt(v),<: Correlations, Cab, Cac, Cbc: :>, <<_-d.ddd>,dX(1),dX(2),dX(3),nl,1); my:= (m+dm)/(m*dm); v:= R(2)-R(1); x:= S(1)-R(1); y:= S(2)-R(2); z:= S(3)-R(3); a:= my*y*L*(1-M*x/v); b:= my*x*M*(1+L*y/v); dX(1):= -M/(v-x); dX(2):= 1/y; dX(3):= M/v; dX(4):=-dX(1)-dX(2)-dX(3); da:= (dX(1)**2*dS(1)+dX(2)**2*dS(2)+dX(1)*dX(2)*CS(1) +dX(3)**2*dR(1)+dX(4)**2*dR(2)+dX(3)*dX(4)*CR(1))*a/4; dX(1):= 1/x; dX(2):= L/(v+y); dX(4):= -L/v; dX(3):=-dX(1)-dX(2)-dX(4); db:= (dX(1)**2*dS(1)+dX(2)**2*dS(2)+dX(1)*dX(2)*CS(1) +dX(3)**2*dR(1)+dX(4)**2*dR(2)+dX(3)*dX(4)*CR(1))*b/4; v:= v*my+a-b; v:= (arctan(2*sqrt(abs(a*b))/v) + (if v<0 then pi else 0))*0.5; write(res,<: a = :>); if a>0.0 then begin write(res,string X, sqrt(a),<: :>, sqrt(da)) end else write(res,<:ubestemt:>); write(res,<: b = :>); if b>0.0 then begin write(res,string X, sqrt(b),<: :>,sqrt(db)) end else write(res,<:ubestemt:>); write(res,<: af :>, if M=0 then <:Ib:> else if L=0 then <:Ia:> else <:Ia og Ib:>,<:. v = :>); if v=0 then write(res,<:0:>) else begin write(res,string X, v,string V, v*180/pi,<: grader.:>) end; write(res,nl,1); if (R(2)-R(1))>100*(R(3)-R(1)-R(2)) then begin x:= z-y; v:= R(2)*2-R(3); a:= my*(y*M+z*(1-M))*L*(1-M*x/v); b:= my*x*M*(1+L*y/v); dX(1):= M/y+M/(v-x); dX(2):= (1-M)/z-M/(v-x); dX(3):= -M/y-2*M/v+M/(v-x); dX(4):= -(1-M)/z+M/v; da:= (dX(1)**2*dS(2)+dX(2)**2*dS(3)+dX(1)*dX(2)*CS(3) +dX(3)**2*dR(2)+dX(4)**2*dR(3)+dX(3)*dX(4)*CR(3))*a/4; dX(1):= -1/x+L/(v+y); dX(2):= 1/x; dX(3):= 1/x-2*L/v+L/(v+y); dX(4):= -1/x+L/v-L/(v+y); db:= (dX(1)**2*dS(3)+dX(2)**2*dS(3)+dX(1)*dX(2)*CS(3) +dX(3)**2*dR(2)+dX(4)**2*dR(3)+dX(3)*dX(4)*CR(3))*b/4; v:= v*my+a-b; v:= (arctan(2*sqrt(abs(a*b))/v) + (if v<0 then pi else 0))*0.5; write(res,<: a = :>); if a>0.0 then begin write(res,string X, sqrt(a),<: :>, sqrt(da)) end else write(res,<:ubestemt:>); write(res,<: b = :>); if b>0.0 then begin write(res,string X, sqrt(b),<: :>,sqrt(db)) end else write(res,<:ubestemt:>); write(res,<: af :>, if M=0 then <:Ic:> else <:Ib og Ic:>,<:. v = :>); if v=0 then write(res,<:0:>) else begin write(res,string X, v,string V, v*180/pi,<: grader.:>) end end; write(res,nl,1); repeatchar(in); readchar(in,i); if i<>115 then goto SUB; stop: write(res,<:<25>:>); close(res,closeres) end end ▶EOF◀