Fortælling/Regnecentralen hos Haldor Topsøe

Fra DDHFwiki
Spring til navigation Spring til søgning

Denne historie er samlet af Mogens Kjær, september 2004. Min far, Jørgen Kjær, var med til at introducere datamaskiner til kemiske beregninger hos firmaet Haldor Topsøe i 1958. De første ca. 10 år foregik beregningerne på DASK og GIER fra Regnecentralen.

Min far har igennem årene publiceret en del lærebøger i ALGOL og beskrivelser af numeriske metoder, specielt beregnet for kemiske beregninger. Firmaet Haldor Topsøe A/S har givet os lov til at lægge disse bøger på vores hjemmeside som PDF filer.

DASK

Introduktion til ammoniakkonverterberegninger

Det følgende er en kort beskrivelse af, hvordan man i 1950'erne fremstillede ammoniak på en fabrik, og selv om meget har ændret sig siden da er problemstillingen stadig relevant.

Ammoniak (NH3) er et vigtigt kemikalie, som bruges bl.a. til kunstgødning. Det fremstilles ved at lede en blanding af kvælstof (N2) og brint (H2) hen over en katalysator. Katalysatoren er små porøse piller, som gasserne diffunderer ind i, reagerer på overfladen, og diffunderer ud igen. Firmaet Haldor Topsøe er specialister i at fremstille disse katalysatorer.

Reaktionen foregår som følger:

N2 + 3 H2 <==> 2 NH3 + 25 kcal

Man ser, at 4 rumfang kvælstof og brint bliver til 2 rumfang ammoniak, og at der udvikles varme ved reaktionen. Reaktionen skal derfor foregå ved højt tryk og lav temperatur for at denne ligevægt er forskudt mest til højre. Temperaturen må dog ikke vælges for lav, da reaktionshastigheden derved bliver for lille. Typisk anvendes et tryk på 200 atm. og en temperatur på 500 gr. C. I dag er trykket lavere.

I praksis foregår reaktionen på en fabrik i en ammoniakkonverter. Dette apparat kan være opbygget på mange måder. Dengang var der typisk et område med katalysatorpartikler med kølerør i, hvor man bruger den indstrømmende gas til at køle katalysatorafsnittet.

Man er naturligvis interesseret i at finde de driftsbetingelser, hvor konverteren udnyttes optimalt (producerer mest ammoniak).

Et eksempel på en sådan konverter er vist nedenfor:

Manuel beregning

Det er meget kompliceret at beregne, hvor meget kvælstof og brint der i praksis bliver omsat, når man leder gasblandingen igennem en ammoniakkonverter. Man skal tage hensyn til, hvor hurtigt gassen strømmer, temperaturudveksling med kølerør, diffusionen ind og ud af katalysatorpartiklerne, etc. etc. etc.

En del af min fars doktordisputats fra 1958 handler om, hvordan man foretager disse beregninger.

Løsningen på problemet er et sæt differentialligninger, som ikke kan løses analytisk (Konkret er der to ligninger, en for stofbalancen og en for varmebalancen. Disse holder styr på, at massen og energien i systemet er bevaret).

I stedet må man lave en numerisk integration, dvs. man opdeler katalysatorafsnittet i mindre dele, fx à 20 cm, og så for hvert trin beregner man ændringer i gassammensætning, temperatur, etc.

Et eksempel på en sådan beregning, udført i hånden, er vist hér:

Én beregning af forløbet igennem konverteren (en profil) tog dengang nemt en hel arbejdsdag, og hvem vil kunne gøre det i dag! Som regel er det også nødvendigt med flere beregninger.

Beregning på DASK

I vinteren 2001/2002 holdt min far et foredrag i Haldor Topsøes pensionistklub, omhandlende firmaets IT start. Jeg har sakset et par afsnit fra dette foredrag (vist indrykket):

DASK Kodekursus
Torsdag d. 19 september 1957 begyndte jeg på et såkaldt DASK kodekursus. Det blev holdt af en Ole Møller fra Søkortarkivet og foregik i det store fysikauditorium på den gamle læreanstalt i Sølvgade. Vi mødtes en gang om ugen og det fortsatte ind i 1958. Jeg har ikke noteret, hvornår det sluttede.
Ole Møller gennemgik ordrestrukturen i DASK. Adresser, indexmærker og selve ordren i en 16-tals kode. Jeg følte, at jeg kun forstod meget lidt af dette, og jeg var sikker på at jeg aldrig selv ville komme til at skrive programmer i DASK maskinkode.
I et notat af 2. oktober 1957 foreslog jeg, at jeg skulle påbegynde udarbejdelsen af et "detailleret Program for Anvendelse af DASK til Beregning af Ammoniakkonvertere af TVA-typen". Rapporten skulle indeholde alle de nødvendige formler, men ikke maskinkode, den skulle laves af Regnecentralens specialister. Firmaet havde tegnet et abonnement hos Regnecentralen for brugen af DASK (vistnok kr. 20.000 for 1958). Disse penge kunne bruges til betaling af programmeringshjælp og til DASK maskintid.
Oplæg til TVA-programmet
Jeg arbejdede med at lave programoplægget det meste af vinteren 1957-58. Det udkom 1. maj 1958 med titlen:
Tentative Program
For Calculation of TVA-Type Ammonia Converters
On an Electronic Digital Computer
Det havde nummer 154-70 (154 er Topsøes gamle sagsnummer for ammoniakkatalysatorer). Rapporten er på 140 sider og indeholder 388 formler, 17 tabeller og 19 figurer. Grunden til at rapporten blev så stor, er jo den, at det er en person, der ikke kan programmere, som ønsker at kommunikere med en der kan. Senere, når en enkelt person klarer det hele, blev der ikke behov for store rapporter. Ligeledes, når man gik over til ALGOL og FORTRAN, slap man for de store adressetabeller.

Vi har fået lov til at gengive et eksempel fra denne rapport:

siderne 24-26 forklares, hvordan volumnet af katalysatorzonen beregnes. Først beregnes katalysatorens tværsnitsareal, minus arealet af n kølerør med diameteren Do og minus arealet af nT termoelementrør med diameteren DT. Volumnet af katalysatoren, VCat beregnes så ved at multiplicere med højden, L. Desuden beregnes forskellige arealer mht. kølerørene. I rapporten er der gjort et stort arbejde i at vurdere, hvorvidt input data og mellemresultater skal gemmes som fastkommatal med evt. skalafaktor, eller som flydende tal, idet beregninger med flydende tal på DASK var en langsommelig affære.

side 95 vises en tabel med en oversigt over, hvor i programmet beregningen af bestemte talværdier foregår.

Regnecentralens Programmering
Den store rapport blev straks sendt til Regnecentralen, og en medarbejder - H.J. Aastrup - blev sat til at programmere materialet. Aastrup væddede med Regnecentralens direktør - Niels Ivar Bech - at han ikke ville lave mere end 100 programmeringsfejl på denne opgave. Aastrup tabte. En kasse øl. Og det var dengang der var 50 øl i en kasse. Men jeg har en mistanke om at Regnecentralen havde adgang til Carlsbergs "folkeøl", d.v.s. at det var gratis eller i hvert fald skattefrit.
Aastrup blev færdig sidst i juni 1958. Den nøjagtige dato har jeg ikke bevaret, men jeg har udskriften, som viser en maksimal produktion på 147,68 metric tons/24 hr ved en katalysator indgangstemperatur på 440°C og en space velocity på 13567. Det var små konvertere dengang.
Aastrups maskinkode fik vi tilsendt, og jeg udgav den internt. Den fyldte 66 sider, som jeg studerede grundigt.

Afsnittet fra koden, der udfører de ovenfor nævnte beregninger, er vist på siderne 49-51. DASK maskinkode læses således: En ordre består af tre dele: En adresse (0-2047, man adresserer halvcellerne), en indexangivelse (A er absolut adresse, B, C eller D er relativt i forhold til et af de tre indexregistre. Der kan også stå E, det er en besked til indlæsningsprogrammet om hvor i lageret den næste kode skal indlæses) og en ordrekode, skrevet i hexadecimalsystemet (00-7F). Ordren "16" forekommer særligt hyppigt, det er subroutinekaldet. Meget af koden består af kald til subroutiner, som udfører flydende regning.

Udskriften er vist hér.

Beregningen af én profil tager ca. ét minut på DASK - set i forhold til de 8 timer, det tager at udføre beregningen i hånden, er der altså tale om en stor tidsbesparelse.

Nye programmer

På basis af Aastrups maskinkode gik jeg så igang med at lave ammoniakkonverter programmer for forskellige konvertertyper: TVA, NEC, Quench, Casale og Fauser-Montecatini.

Output fra de nye programmer var ligesom fra Aastrups program en papirstrimmel i 5-huls Flexowriter kode. Men i de nye programmer skulle strimlen skrives ud på særlige formularer med fortrykt tekstforklaring. Der skulle også bruges noget specielt gult "carbon"-papir, således at det hele kunne mangfoldiggøres via lystryk hos os.
Formularerne var et fremskridt, men ikke helt godt, hvis man brugte en forkert formular eller glemte det gule papir.
Løsningen blev at bruge telex-systemet. Programmerne blev modificeret således at de kunne læse en inputstrimmel lavet i telex 5-huls kode i stedet for Flexowriter 5-huls kode. De to slags koder er helt forskellige. Ligeledes blev outputtet rettet til at være i telex kode.
For ikke at belaste firmaets normale telex-maskine var vi nødt til at købe en Siemens telexmaskine, som blev opstillet lokalt, uden at være forbundet med telexnettet. Denne maskine kostede kr. 12.000. Man påstod at maskinen var den mest komplicerede mekaniske maskine, som menneskeheden nogensinde har lavet. Mest imponerende var den mekaniske hukommelse, som kunne gemme op til seks anslag, hvis operatøren skrev hurtigere end udskrivningen kunne følge med.
De daglige DASK-kørsler blev så afviklet på den måde at inputtet blev lavet på den lokale telexmaskine og sendt til Regnecentralen i Valby pr. telex via den normale maskine. Outputtet var næsten altid for stort til at sende pr. telex, det blev hentet af firmaets chauffør eller sendt pr. taxa.
Nye medarbejdere

Arbejdet med de daglige DASK-kørsler blev hurtigt for stort til at jeg kunne magte det alene. I januar 1960 blev H.P.Scharla Nielsen ansat til dette arbejde. Han blev hos os indtil firmaet flyttede på Telefonvej i 1973. John Jensen fortsatte så hans arbejde. Scharla Nielsen er senere blevet landskendt, fordi han synes at have påvist visse uregelmæssigheder i den offentlige administration.

I 1960 ansattes også John Saietz i oktober og Preben Sørensen i november. Måske kan vi få disse to til at fortælle (eller skrive) om deres start i firmaet.
I denne periode fik vi også hulledamer - som det hed dengang. Jeg har ingen datoer, men jeg mener, at den første hed Fru Nielsen og derefter kom Birthe Sørensen, der senere blev gift med Preben Sørensen.
I forbindelse med den senere overgang til brug af GIER begyndte vi også at anskaffe de store Flexowritere, som kunne skrive store og små bogstaver, og som kørte på 8-huls papirstrimler.

GIER

Om introduktionen af GIER maskinen hos Haldor Topsøe fortæller min far følgende:

Medens DASK kørte flittigt - indtil det næste radiorør sprang - så planlagde Regnecentralen produktionen af en ny maskine med de mere pålidelige dioder, transistorer og hvad det ellers hedder i stedet for radiorør.
Den hed GIER - Geodætisk Instituts Elektron Regnemaskine - og den skulle laves i flere eksemplarer, hvoraf Geodætisk Institut naturligvis skulle have den første, som de skulle bruge til påny at løse de 104 ligninger med 104 ubekendte, som man får ved at lave de mindste kvadraters metode på de geodætiske målepunkter i Danmark.
Vi ville gerne have GIER nr. 2 og Risø skulle have nr. 3.
I juleferien 1959 sendte Haldor Topsøe et brev til Regnecentralen hvori han bestilte 1 stk. GIER, pris kr. 350.000. Den blev leveret d. 18 december 1961, pris kr. 600.000.
Den lange ventetid kunne man jo så bruge til at lave vore programmer til GIER. Nej, det gik ikke, fordi ordrestrukturen først blev fikseret af Regnecentralen på et sent tidspunkt. En kreds af kommende brugere protesterede kraftigt mod at en enkelt ordre skulle fylde en hel celle (42 bits), hvor der på DASK var plads til to ordrer pr. celle. Programmerne ville på den måde komme til at fylde dobbelt så meget som på DASK. Lagerplads var jo dyr den gang. Regnecentralen gav sig.
Da Regnecentralens egne folk (Jørn Jensen m.fl.) i denne periode begyndte at programmere ALGOL-compileren savnede de et indexregister. Det blev så indført (p-registeret). Ligeledes blev s-registeret, der var beregnet til at holde styr på hop til undersekvenser, ændret så det kunne bruges som ekstra indexregister.
Hen på efteråret 1961 havde jeg fået lavet det nødvendige styreprogram til afvikling af vore konverterprogrammer på GIER. Det var kopieret efter DASK, blot med den nye ordrestruktur. Desuden et par småprogrammer, f.eks. til løsning af lineære ligninger. Disse ting afprøvede jeg sammen med Scharla Nielsen på den første GIER, der var opstillet i Telefonhuset på Borups Allé.
Så kom den store afprøvningsdag, mandag d. 18 december, 1961. Maskinen var opstilllet på Baunegaardsvej i nordenden af Topsøes spisestue (familien var flyttet til Frydenlund tidligere på året).
Testen forløb udmærket, i begyndelsen. Men vi fik et chok da programmet til løsning af 25 ligninger med 25 ubekendte kørte. Der kom en høj lyd som steg i frekvens. Det varede kun i få sekunder, forklaringen er simpel; maskinens hovedregister (AR) er forbundet til en højttaler således at hver gang fortegnet i AR skifter, kommer der et klik i højttaleren. Når programmet arbejder sig ned igennem matricen, bliver antallet af rækker der skal behandles mindre og mindre, deraf den stigende frekvens.
Lidt senere gik maskinen helt i stå, død som en sild. Det havde ikke noget med ligningerne at gøre. Den hovedansvarlige for maskinens opbygning, Bent Scharøe Petersen, mente at det måtte have noget at gøre med den mekanisme, der tillader at maskinen regner samtidigt med at man flytter data til eller fra tromlen. Det blev rettet i løbet af et par dage.
Jeg stopper min gennemgang af vor IT-start, selvom der jo er sket meget mere siden.

Bøger

Da Haldor Topsøe også dengang var i front med udviklingen opfordrede han min far til at skrive flere hæfter og bøger i 60'erne og 70'erne.

Haldor Topsøe A/S har givet os lov til at reproducere disse bøger, så man kan læse dem som PDF filer.

PDF filerne kan være store, størrelsen i Mb er angivet i parentes.

Samlingen omfatter følgende:

Software fra bøgerne

Hulstrimlerne med det ALGOL kode, som findes i min fars bøger, findes desværre ikke mere.

Jeg har tastet mange af programmer ind igen, og de fleste kan køre med GIER simulatoren.

Demonstrationsprogrammerne (Tændstikspillet NIM, Store tal og Primtal) følger med simulatoren.

Programmerne fra Bind 1, bind 2 og bind 3 af Programmering af kemiske beregninger findes som zip fil (172 Kbytes).

De fleste programmer kan oversættes med den GIER ALGOL II oversætter, som er vedlagt simulatoren, med nogle begrænsninger. Disse begrænsninger skyldes, at man hos Haldor Topsøe brugte en tilrettet version af oversætteren, med følgende ændringer:

  • Automatisk indsættelse af år, måned og dag.
  • Mellemrum som terminator. Talindlæsning kunne afsluttes med mellemrum. Den almindelige ALGOL oversætter kræver synlig terminator (fx komma eller semikolon) ved indlæsning fra strimmel eller skrivemaskine.
  • En speciel version af oversætteren tillod oversættelse af store programmer. Dette skete ved, at oversætteren var lavet som to strimler, den første med pass 1 og oversætteradministrationen. Den strimmel blev indlæst først, efterfulgt af strimlen med programmet, der skulle oversættes. Derefter indlæses en strimmel med de efterfølgende passager. Det gav mere plads til et større ALGOL program, fordi oversætteren ikke optog plads på tromlen. For eksempel er programmet PA-7 for stort til at kunne oversættes af ALGOL oversætteren i simulatoren.

De indtastede programmer findes som ASCII filer (.asc), direkte afskrevet efter bøgerne. De fleste programmer bruger procedurer fra Haldor Topsøes ALGOL bibliotek. Disse inkluderes vha. pseudokommentaren comment library <procedurenavn>; Jeg har inkluderet procedurerne vha. et lille perl script, og konverteret teksten til flexowriter kode, disse filer findes som .flx filer, som direkte kan oversættes.