prof.dr.ir.A.VerruijtTH-Delft, afdeling der Civiele TechniekDit artikel is gebaseerd op een lezing dieprot.Verruijt heeft gehouden tijdens de stu-diedag 'Gebruik van de micro-computers inde civiele technie.k' d.d. 26 mei 1981 te Delft,georganiseerd door de Betonvereniging insamenwerking met CIAO.Cement XXXIII (1981) nr. 12Een elementairraamwerkprogramma voormicrocomputers*InleidingSinds een aantal jaren zijn diverse typen kleine computers met beperkte geheugencapaciteitop de markt verschenen onder de naam van microcomputers of persoonlijke computers. Deprijs van zo'n microcomputer kan vari?ren van minder dan 1000 gulden tot ongeveer 10 000gulden voor een systeem compleet met printer en schijvengeheugen (floppy disk). Decomputers bevatten in het algemeen een zogenaamde 8-bit microprocessor (de Z-80 of de6502) en hebben een vrij-beschikbare geheugencapaciteit van de orde van grootte van 32 000bytes. Omdat een re?el getal 5 bytes vereist betekentdit dat men 32. 000 opdrachten of 6400re?le getallen kan opslaan, of een cornbinatie daarvan. In advertenties worden microcompu-ters meestal aangeprezen voor kleine bedrijfjes, dieerhun administratie mee kunnen voeren,voor de ledenadministratie van clubs, terwijl voorts ingespeeld wordtopde behoefte aaneenpartner om mee te schaken of tric-trac te spelen. Diverse hobby-clubs wisselen onderlingprogramma's op cassette uit, en ookvia de radio worden regelmatig programma's verspreid,die men met een normale cassetterecorder kan opnemen, en die dan op de microcomputerbijvoorbeeld spelletjes als space-invaders blijken te produceren.In de ingenieurswereld beginnen microcomputers thans ook door te dringen, vermoedelijkvooral doordelage prijs, die het mogelijkmaakt de computervolledig toteigenbeschikkingtehebben, zonder wachttijden of tussenkomst van beheerders van rekenbudgetten. Ook deeenvoudige bediening, met vele mogelijkheden tot interactief gebruik, speelt waarschijnlijkeen belangrijke rol, evenals het geleidelijk doordringende besef dat het ook meteen beperktegeheugencapaciteit mogelijk is relatief grote problemen op te lossen, als men maar zuinigmet het geheugen omspringt.Een van de vele problemen uit de civiele techniek waarvoor tegenwoordig vaak gebruikgemaakt wordt van een computer is de berekening van vlakke raamwerken (zie bijvoorbeeldliteratuuropgave [2]en [3]. Meestal worden dergelijke berekeningen uitgevoerd op vrij grotecomputers, en zijn de programma's nogal algemeen van opzet, met allerlei mogelijkhedenvoor de gebruiker om bijvoorbeeld op eenvoudige wijze diverse invoergegevens aan hetprogramma te leveren. In dit artikel wordt een elementair programma voor een raamwerkbe-rekeninggepresenteerd, dat direkt voor berekeningen bruikbaar is, of desgewenst als basiskan dienen voor een zelf op te bouwen programmapakket. Het programma is geschreven inBASIC, de voor microcomputers meest gebruikte taal, en wel zodanig dat het in principezonder enige wijziging bruikbaar is voor de meeste typen van microcomputers. Uiteraard kanmen zelf, afhankelijk van de beschikbare computer, de verzorging van input en outputaantrekkelijker maken.Het programmaHet programma is gebaseerd op de verplaatsingsmethode (zie bij voorbeeld [3] en [4]),waarbij de vlakke constructie is opgebouwd uit rechte prismatische elementen, die in deknopen onderling verbonden zijn, een buigstijfheid EI bezitten en een rekstijfheid EA.In het programma wordt voor elk element een elementaire stijfheidsmatrix berekend, en dezeworden geassembleerd tot een stijfheidsmatrix voor de gehele constructie. Na verwerkingvan de verplaatsingsrandvoorwaarden resteert dan in principe een stelsel van 3N lineairevergelijkingen met 3N onbekenden, als N het aantal knopen is. De variabelen hierin zijn de 2verplaatsingscomponenten en de rotatie van elke knoop. Voor de oplossing van het stelselvergelijkingen wordt gebruikt gemaakt van een eliminatiemethode met een zogenaamdegoIffronttechniek [1]. Daarbij worden de variabelen ge?limineerd in de volgorde van numme~ring. Door de constructie loopt dan als het ware een golffront, waarvan de breedte medebepalend is voordebenodigde hoeveelheid geheugen. Doorverstandig nummerendient mendeze golffronten zo klein mogelijk te houden. Het programmavereist opgave van demaximalefrontbreedtevooraf, zie de invoeren de voorbeelden. Wel iseen voorziening aangebracht dieeen te klein opgegeven frontbreedte na detectie daarvan in de loop van hetprogramma meldt,met een suggestie voor verbetering.Het volledige programma is weergegeven in figuur 1. Het is geschreven in een standaard-8061Raam werkprogramma in BASICCement XXXIII (1981) nr. 12versie van BASIC die voor vrijwel alle microcomputers zonder meer bruikbaar is. Er is welgebruik gemaakt van de mogelijkheid meerdere opdrachten op ??n regel te zetten, geschei"den door een dubbele punt (:). Enkele typen van microcomputers kennen een dergelijkefaciliteit niet. Dan zal men elke opdracht een eigen regel moeten geven, hetgeen een simpeleverandering is. Het programma gaat er van uit dat de invoer wordt verzorgd met READ-opdrachten. De bijbehorende DATA zijn, voor een eenvoudig voorbeeld, opgenomen aan heteinde van het programma. Na het intypen van het programma (en het bewaren ervan opcassette of diskette), behoeft men slechts de opdracht RUN te geven. Het programma geefttijdens het rekenen enige informatie over de voortgang van de berekeningen op het beeld-scherm, en geeft tenslotte, als alles goed gegaan is, de resultaten van de berekeningen. Hetprogramma geeft daarbij voorelke knoop, op verzoek, de verplaatsingen en de rotatie, en voorelk element de normaalkracht, hetbuigend moment in de twee uiteinden en in het midden, ende dwarskracht aan de twee uiteinden.De tekenafspraken voor alle grootheden zijn ge?llustreerd in figuur 2, waarin de aangegevennormaalkracht, dwarskrachten en buigende momenten positief zijn. Een normaalkracht ispositief voor trek; detekenafspraken voor positieve dwarskrachten en buigende momentenhangen samen met een lokaal assenstelsel, waarbij de x-as looptvan de eerste knoop naar detweede knoop, en de y"as daar loodrecht op staat. Een positief buigend moment treedt op bijtrek aan die zijde van de as waar y> 0 is (en druk aan de negatieve kant, voor y < 0). Eenpositieve dwarskracht betekent dat in het tweede uiteinde op het element een kracht inpositieve v-richting werkt, of datin het eerste uiteinde op hetelement een kracht in negatievev-richting wordt uitgeoefend. De belastingen op het raamwerk worden uitgedrukt als krach-ten met componenten in een globaal X,Y-assenstelsel waarvan de assen dezelfde onderlingeori?ntatie hebben als de lokaleassenstelsels per element, zie figuur 2. Op de knopen kunnenook uitwendige momenten alsbelasting aangrijpen. Daarvoor geldt dat die positiefzijn in dedraairichting, gedefinieerd door de kleinste hoek waarover men van de X -as naar de Y-asdraait.807yL-_~ ~ _ _~ ~ _ ~... X2Tekenafspraken3Lijst van InvoergegevensInvoerEen lijst van invoer-gegevens is weergegeven in figuur 3. Er zijn 3 algemene gegevens: hetaantal knopen N ,hetaantal elementen M, en de maximalefrontbreedte H; zievoordeze laatstegrootheid ook bij de voorbeelden. Voor elke knoop moeten vervolgens worden opgegeven:de X-co?rdinaat, de V-co?rdinaat, het type, T% (I), de grootte van de kracht in X-richting, degrootte van de kracht in V-richtingen de grootte van hetmoment. Detype-aanduiding isnodigom het programma te laten weten of de knoop vrij is, of dat er wellicht sprake is van eeninklemming, een scharnieroplegging of iets dergelijks.Uit de toelichting in figuur 3 volgt dat voor een volledig vrije knoop T% (I) = -1, voor eeninklemming T%(I) = 4, voor een scharnieroplegging T%(I) =-4, en voor een roloplegging diein de X-richting vrij kan bewegen T%(I) =-3. Het programma kent geen voorziening voorvoorgeschreven verplaatsingen ongelijk aan nul ofvoor rolopleggingen in andere richtingendan de X- of V-richting. De uitwendinge krachten en het uitwendige moment op een knoopkunnen eigenlijk alleen worden opgegeven als ze ook inderdaad gegeven zijn (bijvoorbeeldnul in een onbelaste vrije knoop). Om het prog ramma zO eenvoudig mogelijk te houden is d itzo geschreven'datvoorelke knoop de uitwendige krachten en het uitwendig moment moetenworden opgegeven. Indien deze tevoren onbekend zijn, in het geval van een oplegging, is degevraagde waarde irrelevant. Hetprogramma maakt geen gebruik van dat gegeven.Voor elk van de elementen moetenookeen aantal gegevens worden verstrekt: de eerste en detweede knoop (dit bepaalt ook het teken van dwarskrachten en buigende momenten), dewaarde van de rekstijfheid EA en de buigstijfheid EI, en de grootte van een eventuelegelijkmatig verdeelde belasting. De grootte hiervan dient te worden opgegeven door decomponenten in X- en V-richting van de resulterende kracht.VoorbeeldenHet programma in figuur 1 bevat data voor een eenvoudig voorbeeld met 4 knopen en 3elementen, zie figuur4. Debelastingiseen gelijkmatig verdeelde belasting van 1Nim overdebovenregel. De resulterende kracht hiervan heeft een groottevan 2 Nen isgericht innegatieveV-richting. De benodigde frontbreedte is in dit geval 3. De rekstijfheid van alle elementen isEA = 100000 N en de buigstijfheid is EI = 100 Nm2. Opgemerkt moge worden dat de tegebruiken eenheden in hetprogrammawillekeurig zijn, als ze maarconsistentzijn. Drukt men4Voorbeeld 1Cement XXXIII (1981) nr. 12r? x808.."'" ""'= ""~ w;; ~6Voorbeeld 3Cement XXXIII (1981) nr. 12de krachten uit in kN, en de lengtematen in mm, dan moeten EA en Elworden opgegeven inkNen kNmm2, en de momenten in kNmm = Nm.In figuur 4 zijn een aantal van de berekeningsresultaten weergegeven,in de vorm van demomentenlijnen van de constructie. Deze resultaten komen exact overeen met resultatenverkregen met het ALGOL-programmadat in het tweede stud iejaarvan deAfdeling derCivieleTechniekwordtgebruikt, en met resultaten verkregen meteen klassieke handberekening metgaapvergelijkingen ([4] p. 159, resp. p.141). Derekentijd opeen microcomputerisongeveer%minuut.Een tweede voorbeeld is weergegeven in figuur 5. Daarbij treden de complicaties op datsommige staven geen constantebuigstijfheid hebben, en dat er een inwendig scharnier is,waarvoor het programma eigenlijk geen voorzieningen kent. Het niet-constante profiel kaneenvoudig worden ingevoerd door ter plaatse van de overgang een extra knoop in te voeren.Het inwendigescharnier in het midden van de bovenregel kan worden gesimuleerd dooreenzeerkortelementje meteen normale rekstijfheid, en een zeergeringe buigstijfheid. Men dienter daarbij voor te zorgen dat de waarde van de parameter Eli I (waarin I de lengte van hetelement is) voor het tussenelementje klein is ten opzichte van de normale elementen in deconstructie, bijvoorbeeld een factor 10000 kleiner. Men moet dat elementje niet al te slapmaken omdat het anders geen weerstand tegen dwarskracht zou hebben. De waarde van deparameter Eli 12 moet voor hettussen-elementjevan dezelfdeordevangroottezijnalsvoordenormale elementen.Sa-bVoorbeeld 2De DATA-statements voor de constructie van figuur 5 zijn eronder weergegeven. Het betrefthier een statisch bepaald drie-scharnier-spant; de resultaten van de computerberekeningblijken uitstekend overeen te komen met die van een elementaire handberekening. Derekentijd op een microcomputer is ongeveer 1112 minuut.Een derde en laatste voorbeeld is getekend in figuur 6, namelijk een raamwerk van 13verdiepingen, met 56 knopen en 84 elementen. Dit is, met 168 vrijheidsgraden, zo ongeveerhet grootste raamwerk dat men zonder meer op een microcomputer met 32 kilobytesgeheugen kan laten doorrekenen. Voorgrotere raamwerken zal men bijzondere maatregelenmoeten nemen, bijvoorbeeld doorgebruikte maken van achtergrondgeheugen.De benodig-defrontbreedte is in ditgeval6. Voordittypeconstructies kan mendebenodigdefrontbreedteschatten door na te gaan hoeveel knopen er liggen op het open front dat ontstaat alsmen deknopen in volgorde van nummering laat verdwijnen, en daar dan 2 bij op te tellen.In het geval getekend in figuur 6 bedraagt de benodigde rekentijd ongeveer 50 minuten. Hetvoordeel van de gemakkelijke toegankelijkheid van een microcomputer gaat dan voor eendeel verloren. Weliswaar hoeft men niet op anderen te wachten, maar wel op zichzelf.Mogelijke verbeteringenHet hierboven gepresenteerde programma kan nog op vele manieren verbeterd worden. Demeeste daarvan zullen gebruik maken van de speciale faciliteiten die een bepaald systeembiedt, en ze zijn daarom nogal machine-afhankelijk. Het heeft daarom weinig zin op detailservan diep in te gaan, maar een aantal suggesties kan hier toch wel gedaan worden,Uitvoer op printerIndien men de beschikking heeft overeen printer (die zijn eral vanaf ongeveer 1000gulden) ishet natuurlijk aantrekkelijk de knoopverplaatsingen en de krachten in de elementen uit telaten printen. In dat geval is het zinvol ook de invoergegevens te laten printen, ter controle.Interactieve invoerMet niet al te veel moeite kan men de invoer door READ-opdrachten vervangen door eeninteractieve wijze van invoeren van data. De computer vraagtdan eerstnaarhet aantal knopenen elementen, en vervolgens om de gegevens perknoop en perelement. Het is dan verstandigtegelijk de mogelijkheid van controleen verbetering in te bouwen. Het is wel erg triest als menalle gegevens van een groot raamwerk heeft opgegeven, en per ongeluk een getal fout getyptheeft zonder de mogelijkheid dat later te verbeteren. Men komt er al gauw toe aparteprogramma's te maken voor het intypen van gegevens en het opbergen daarvan op cassette ofdiskette, voor het corrigeren van de gegevens, en voor het eigenlijke draaien van hetprogramma. Een voordeel van zo'n soort programma-pakket is ook dat steeds slechts eenrelatief klein beslag gelegd wordt op de geheugenruimte.809Cement XXXIII (1981) nr. 12Extra mogelijkhedenIndien men vaak berekeningen moet maken van constructies metinwendigescharnieren, metandere belastingen of met niet-constante profielen, voor driedimensionale raamwerken, ofvoor niet-lineaire problemen zal men hetprogrammaecht in zijn kern moeten aanpassen. Datis allemaal best mogelijk, maar vereist wel een grondige kennis en een goed begrip van deverplaatsingsmethode. Aangeraden wordt niet te trachten alle denkbare opties aan tebrengen in ??n programma, omdat dan een te groot beslag wordt gelegd op de schaarsegeheugenruimte. Het lijkt beter een verzameling van programma's met verschillende moge-lijkheden aan te leggen.Andere talenDe meeste microcomputers werken met een zogenaamde BASIC-interpreter. Daarbij wordtsteeds slechts ??n regel in machine-code omgezet, en als het programma vele lussen bevatkan dat nogal veel tijd kosten. In het derde voorbeeld hierboven leidde het tot een rekentijdvan 50 minuten. Het kan dan zinvol worden om een BASIC-compiler aan te schaffen, ofovertegaan op een andere taal, bijvoorbeeld PASCAL, die zich beter leent voor aparte compilatie. Opdie manier kan een aanzienlijke reductie in rekentijd bereiktworden, ten koste van het gemakwaarmee een normaal BASIC-programma gewijzigd kan worden.Veel meer tijdwinst kan nog worden geboekt door bepaalde onderdelen van het programma,zoals het genereren van de matrix, en het oplossen van het stelsel lineaire vergelijkingen,direct in machinetaal te schrijven. Voor de meeste microcomputers bestaan er min of meergemakkelijk toegankelijke assembler-programma's, die, als men de werking van de micro"processoren decomputerenigszins begrijpt, het mogelijk maken subroutines in machinetaalte ontwikkelen. Dat iswel een tijdrovendebezigheid; bovendien is een subroutinevoordeenemach ine niet bruikbaarvooreen andere, soms zelf nieteens vooraen andertypevan hetzelfdefabrikaat. Toch vergoedt de grote tijdwinst die men kan bereiken door over te gaan opmachinetaal (dat kan wel een factor20 schelen) veel van de moeite. En wellicht kan men enigebevrediging vinden in het op deze wijze volledig beheersen van de machine.Andere oplossingstechniekenHet vrij kleine geheugen van een microcomputer beperktuiteraard hetgeoruikervan tot nietal te grote systemen, zeker als men gebruik maakt van standaard-subroutines, die eigenlijkontwikkeld zijn voor veel grotere computers. Voor grotere constructies, met vele honderdenvrijheidsgraden, zal men zijn toevlucht moeten nemen tot andere technieken, bijvoorbeelddoor gebruikmaking van tijdelijke opslag van een deel van de gegevens op diskette. Ook is hetsoms mogelijk de hele oplossingsmethodezodanig te veranderen dat mindergeheugenruim-te gebruikt wordt, wat dan wel weer ten koste gaat van de rekentijd. Speciaal als men gebruikkan maken van een iteratieve methode zoals Gauss-Seidel iteratie blijkt het mogelijk op eenmachine met maar 8000 bytes geheugen problemen met zo'n 160 vrijheidsgraden op telossen. Dat kost dan, inBASIC,weleen dag rekentijd, maar in machinetaal minderdaneen uur[5].ConclusiesHet blijkt mogelijk om op relatief kleine en goedkope microcomputers een vrij serieusprobleem uit de civiele techniek, namelijk de analyse van dekrachtsverdeling in een raam"werk, op te lossen. Verwacht mag worden dat het gebruik van microcomputers in deingenieurswereld zich nog sterk zal ontwikkelen, door het beschikbaar komen van software,maar ook door de nog te verwachten verbetering van de hardware (o.m. het gebruik van16-bits microprocessors). De microcomputer zal zich mogelijk over enige tijd verhouden totde grote centrale computers als de eigen auto tot de trein. Sommigen zullen daarbij devoorkeurblijven geven aan het gemak van het openbaar vervoer, anderen zullen zeggen: blijdat ik rij.Hoewel het hier gepresenteerde raamwerkprogramma op diverse wijzen is uitgetest, en naarbeste weten van de schrijver geen fouten meer bevat, wordttoch het voorbehoud gemaakt datgeen verantwoordelijkheid vooor eventuele fouten kan worden aanvaard. Overigens is deschrijver van dit artikel gaarne bereid tot een verdere uitwisseling van gegevens met anderegebruikers van microcomputers.Literatuur1. J.Blaauwendraad, Systematische bouw met directe methoden en variatieprincipes vancontinue en discrete mechanica-modellen; proefschrift TH-Delft, 19732. J.Biaauwendraad en A.W.M.Kok, Elementenmethode voor constructeurs, deel I, Agon Else-vier, Amsterdam, 19733. W.Nijenhuis, De verplaatsingsmethode; Agon Elsevier, Amsterdam, 19734. A.Verruijt, Toegepaste mechanica -11, Delftse Uitgevers Maatschappij, Delft, 19805. A.Verruijt, Some BASIC programs forfinite element analysis, Adv. Eng. Software, 3, p. 26-30,1981810
Reacties