Auch auf meine mehrfach durchgeführten Transfer-Aktionen des Lastaufteilungsverfahrens (LAV) möchte ich hier hinweisen. Diese haben schlussendlich zu einer Übersetzung für MINGW (GNU-Fortran) geführt und wurden vielfach für diese FE-Seiten zur Darlegung der Grafiken geführt. Dies habe ich zur Erinnerung an den Talsperren-Konstrukteur Dipl.Ing. Eiselmayer zu seinem 80.sten Geburtstag gemacht, um seine damalige Ideenwelt aufzuzeigen.
Vergessen soll auch nicht werden, dass viele Ideen für das LAV aus alter Literatur entnommen wurden wie die Heftchen von "Teichmann" im Format 10x15 cm. Dies hat schlussendlich zu einer nicht symmetrischen System-Matrix geführt, was vor allem eine große Sorgfalt bei der Lösung des Eigenwerte-Problems gebraucht hat.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Der Mut zu persönlichen Programmentwicklung kam mit dem Programmsystem TOPAS, eingebettet im Sprachmodul IST. Mein Kollege Rechentechniker Köhler hatte darin Anpassungen durchgeführt wobei ich dabei mitgearbeitet habe. Zur Übergabe von Daten mussten damals an der Siemens Anlage an der Hardware Umbau-Arbeiten durchgeführt werden, was mir äußerst zuwider war.
Der bedeutendste Einfluss für mich ist damals von Prof. Zienkiewicz gekommen. Er hat mit seinem Buche aus dem Jahre 1977, "The Finite Element Methode, the third expandet and revised edition" ja eine enormen Antrieb in diese Methoden-Entwicklung gebracht. Seine Assistenten Prof. Pande und Prof. Nayler durfte ich während eines Kurzstudiums in Swansea kennenlernen, wo ich auch viele Freunde gewonnen habe.
Auch das Buch von "Dr.Ing. Jürgen Dankert, der Overassistent an der Techn. Hochschule Otto von Guericke" hat mich zu vielen Entwicklungen an der damals fortschrittlichen Rechenanlage der Fa. WANG ermuntert. Dies vor allem an seiner Darlegung der eigenen Matrizen-Methode für diese Analysen.
Viele Anregungen stammen auch aus "Die Statik im Stahlbetonbau, von Dr.Ing. Kurt Beyer, Auflage 1956 von seiner Frau Käte Beyer". Dies ist noch ein Buch im alten Stile und sollte schlussendlich nicht ganz vergessen werden.
Und es entstand mein erstes Programm auf einer WANG Rechenanlage für die Berechnung von 2D und 3D Strukturen.
Leider wurde ich damals als Autor dieser Programme nicht einmal erwähnt und so konnte ich auch viele Dinge aus den Erfahrungen dieser Berechnungen nicht weitergeben! Ein solches FEM-Programm auf einer WANG Anlage zu programmieren war eine große Herausforderung.
Die verwendete Rechen-Anlage besaß 4x64 kByte Speichermodule und ein Plattenlaufwerk mit 2 Wechselplatten. Als ich das damals meinem Chef erzählt habe, war er sehr ungläubig und hat das eher als einen Scherz betrachtet. Er vertrat die Ansicht, dass man dafür Jahre gebraucht hätte so etwas zu programmieren. Die Basis meines Programms war das Buch von J. Dankert “Numerische Methoden der Mechanik” aus dem Jahr 1977. Hier wurde eine Matrizen-Methode beschrieben, die in der Matrizen-Sprache der WANG Anlage umgesetzt werden konnte. Um nur einige Probleme aufzuzeigen sei darauf hingewiesen, dass nur Variablen mit einem Buchstaben und einer Ziffer zulässig waren.
Aus dem 2D Programm entstand dann noch ein Potential-Strömungs-Programm mit Berechnung der freien Oberfläche. Dr. Widmann, damals als Chef-Ingenieur und später Prof.Dr. Heigerth für die Wasseraufgaben zuständig, hat mich mit Berechnungen von Unterströmungs-Aufgaben für Wasserkraftanlagen beauftragt.
Nachfolgend einige Bilder, die aus Vortrags-Dias gescannt wurden.
Sperrenschnitt geringe Wasserlast an der Luftseite aus dem Jahr 1979
rechts schief gelegener Schnitt von Zillergründl mit Dichtschirm
Auch komplexere Analysen wurden mittels des WANG-Programms ausgeführt wie die Analyse der Hangdurchströmung mit Drainage-Schirm beim ASAGI SEYHAN Projekt bei Yedigöze.
Bild 7 ) Analyse eines Schnittes von Promper mittels FIN2D WANG-Programm (4x 64k) für das Leck
in der Sperre Schlegeis aus dem jahre 1982 aus dem Artikel [1]
Die Bilder zeigen die Möglichkeiten des Ausdrucks von damals über einen Plotter mit Tusche-Stiften auf. Bei den Verformungs-Plots wurden die verformte und unverformte Struktur mittels Nägeln verbunden.
Die Isolinien wurden mittels eines dickeren Stiftes gezeichnet. Im Bild 3 wird der Test der freien Oberfläche an einem Rechteck-Gerinne gezeigt. Die Anwendung erfolgt sodann an einem Sperrenschnitt mit Dichtschirm, der schief gelegen ist . Die freie Oberfläche ist links vom Sperrenfuß erkennbar. Dargestellt wurden die Linien gleichen Druckes.
All diese Berechnungen dienten den Betrachtungen von Problemen an der Sperre Kölnbrein. Diese wurde nach dem LAV-Verfahren entworfen. Die Berechnungen wurden an einer Siemens Anlage durchgeführt. In den frühen 70.-er Jahren wurde der PLOT der Spannungen noch händisch aus Dreiecks-Ausdrucken aufgetragen (siehe Unten). Der Entwurf erfolgte noch in dem im LAV eingebundenen Geometrieteil.
1 KOE14B-4-1-3 UE. 1 (3.1+6.1) WSP=1902M S1/S2/ALPHA(W)-S1/S2/ALPHA(L)
1.08 2.54 5.54 7.14 6.54 4.64 5.34 6.11 5.12 2.92 1.09
.21 .19 .43 .51 .62 .63 .63 .59 .47 .31 .34
-5.28 .57 -1.20 -1.36 -1.80 -.45 -.92 -1.39 -1.89 -1.27 -7.89
3.46 5.81 5.20 4.60 4.55 4.98 5.00 5.10 4.99 4.54 2.66
.13 .22 .03 .00 -.09 -.05 -.08 -.07 -.01 .11 -.02
-5.24 -4.15 -1.33 1.32 3.89 .78 2.28 1.44 -.89 -3.43 -4.77
-1.21 4.00 7.25 8.81 8.37 7.74 6.41 4.13 .91
-.19 .89 1.33 1.97 2.23 2.04 1.62 1.04 -.06
33.84 -1.05 -6.60 -5.48 -.60 -5.10 -9.45 -5.10 -33.74
9.33 7.40 5.56 5.64 6.44 6.44 6.18 6.40 6.22
1.82 .66 .69 .24 .21 .24 .42 .61 .98
-13.86 -15.30 -5.03 6.49 2.45 4.47 -1.71 -13.93 -13.83
-1.62 4.13 8.48 10.18 8.17 3.77 .73
.15 1.25 2.42 3.71 2.78 1.10 -.11
14.62 -6.37 -8.83 -.55 -7.46 -7.03 -39.39
10.28 8.06 5.63 5.49 6.23 8.13 7.34
2.17 1.33 1.13 .15 .85 1.69 1.97
-16.98 -20.26 -3.33 3.35 -3.82 -18.49 -21.35
-1.41 4.47 8.72 5.30 -.74
.83 1.91 4.30 3.20 .28
7.12 -.81 -1.09 2.52 13.71
8.91 6.71 2.61 6.05 9.43
1.83 1.38 .65 .83 3.20
-23.98 -32.29 10.48 -20.58 -20.43
-1.42 3.92 .51
-.42 1.18 1.37
27.24 7.47 -3.26
1.93 -.63 .68
7.87 4.97 4.51
32.78 -1.74 28.07
.15
-2.01
15.45
-.01
8.38
-1.46
Anfang der 80.-er Jahre wurde zum Geometrieteil des LAV ein Entwurfsteil auf einer WANG Anlage von DI Eiselmayr geschrieben. Dieser ermöglichte auch das Plotten über einen Tintenplotter in A3.
Danach
habe
ich begonnen parallel dazu in TOPAS, eingebettet im IST-Kern,
(Informations -system Technic) FE Berechnungen mit Köhler
durchzuführen. Leider habe ich dazu nur mehr wenige Unterlagen. Es
sind später auch schon erste Berechnungen in MARC und in ADAP
durchgeführt worden. Für ADAP wurde ein eigener
Geometrie-Eingabeteil von mir geschrieben um die
Kegelschnittsformen des LAV-Enturfs übernehmen zu können. Für die
Darstellungen gab es ein eigenes PASCAL Programm, dass auf einem
EGA Schirm eine räumliche Darstellung des Entwurfs ermöglichte.
Nachfolgend ein Ausdruck der Kölnbreinsperre aus dem
ADAP-Entwurfsprogramm von damals. Die Pascal Programm Ausgabe
erfolgte jetzt durch eine Übergabe eines VTK - Files.
Adap wurde um eine sinnvolle Vorgangsweise bei der Überlagerung
von Lastfallen und um einen eigenen Plot erweitert. Bei einem
Vergleich mit meiner Disseration CODCOD stellte sich heraus, dass
die verwendeten Elemente, wie in meiner Arbeit, korrigiert werden
müssen. Bei einem Vergleich von FE-Programmen hat dieses Element
die verträglichsten Ergebnisse geliefert.
Meine Dissertation hat dann eine Zusammenfassung der
Entwurfsteile, Schnellentwurfsprogramme und eine
FE-Berechnungsprogramm für die statische Analyse enthalten.
Jetzt beschäftige ich mich mehr oder minder mit CODE-ASTER
Anschließend
zeige
ich noch den letzten von mir durchgeführten PLOT aus dem
Sperrenentwurfsprogramm von Eiselmayer über HPGL (Transfer nach
EPS) aus dem Jahr 1998. Sehr schön sind hier auch die Wendelungen
der Blockfugen zu erkennen. Es wurde die linke und rechte Hälfte
des Grundrisses immer getrennt dargestellt, da die Geometrie-Daten
nach den Mauerhälften aufgelistet waren.
Heute
glaubt
man nicht, dass dies ein Computer war. Eine alte WANG 720 auf der
auch Plots für die Talsperren ausgeführt wurden.
Es
ist kaum zu glauben was damit alles gemacht wurde. Zwei Zeilen mit
“gewickelten Glühlampen Ziffern” waren zur Anzeige möglich und ein
Bandlaufwerk zum Sichern.
Hier will ich noch eine WANG-2200-Anlage zeigen, wie auch wir sie
gehabt haben. Dieses Foto ist von einem Kollegen aus dem Internet,
der ebenfalls eine typgleiche Maschine besessen hat .
Daraufgestellt wurden 2 Diskettenlaufwerke. Wir hatten dazu noch 2
Plattenlaufwerke.
Der
1.
Teil des Listungs meines 2D-FE WANG-2200 Programms wird
nachfolgend angeführt, um die Programmierung mit WANG-BASIC
aufzuzeigen. Die Ausdrucke erfolgten mit einer WANG-Simulierung
auf einem Alt-PC. Für die Variablen war ein Buchstabe und eine
Ziffer möglich. Auch räumliche Talsperren-Nachrechnungen habe mit
3D-FE mehrmals (3x) gerechnet.
0005 REM
**********************************************
0010 REM F E M - BELASTUNGSVEKTOR VOM VIERECKELEMENT 4/8
0012 REM ***********************************************
0015 REM VERSION 1 / PRO 02-11-1981
0020 SELECT D
: REM RED DER POSITION ... W
0025 COM
W,Z0,F0,B1,S1,S3,Z9,S9,A$(34,20)1,Z0$20,V(1200),A1$(2)30,K$(600)8,E$(3
00)18,P0$3,P1$3,P2$3,P3$3,P4$3,D1(20,7),V8
0030 DIM
A2$8,L$(200)24,X(2,8),K(9),H2$(2)2,H3$2,K3$3,H(2,2),P(8),P0(16),P5$3,A
5$7,B(3,6),D(3,3),D2(3,6),D3(3,3),T1(3,3),S(2,2),S1(8),S3(2,2),S4(2,8),Q(3
),X3(4),Y3(4),X4(2),Y4(2),F1(2),Y(2,2),X1(8),Y1(8),N(2),H1(2)
: COM CLEAR L$()
0035 P0$="005"
: P1$="215"
: P2$,P3$="B20"
: P4$="B20"
: M0=8
: N3=4
-0037 DATA -1,-1,0,-1,1,-1,1,0,1,1,0,1,-1,1,-1,0
: RESTORE LINE 37
: FOR I=1 TO M0
: READ X1(I),Y1(I)
: NEXT I
: H1=1/SQR(3)
: H2=I+I-1
: X3(I)=X1(H2)*H1
: Y3(I)=Y1(H2)*H1
: NEXT I
0040 LINPUT " DRUCKERADRESSE ",-P1$
: LINPUT " PROGRAMMDISKETTE ",-P2$
: LINPUT " DATENDISKETTE ",-P3$
: LINPUT " RECHENPLATTE
",-P4$
: SELECT
#1<P2$>,#2<P3$>,#4<P4$>
: LINPUT " DATEI FUER GLEICHUNG ",-A2$
0045 REM KENNSATZ LADEN
: A5$="DATKEN" & STR(A2$,6,1)
: DATA LOAD DC OPEN T#4,A5$
: DATA LOAD DC
#4,W,Z0,F0,B1,S1,S3,Z9,S9,Z0$,A$(),A2$
0050 REM LADEN DER GEOMETRIE
: INPUT " DATEI FUER GEOMETRIE ",A4$
: DATA LOAD DC OPEN T#2,A4$
: DATA LOAD DC #2,A1$(1),D1(),K$(),E$(),A3$,E,E1
: REM DATA LOAD DC #2,K$(),E$()
: DATA SAVE DC CLOSE #2
0100 H1=2
: INPUT " BELASTUNG EINGEBEN = 1 ODER VON DER
PLATTE HOLEN = EXEC ",H1
: IF H1=1 THEN 105
: INPUT " NAME DER BELASTUNGSDATEI ",A4$
: DATA LOAD DC OPEN T#2,A4$
: DATA LOAD DC #2,A1$(2),L$()
: DATA SAVE DC CLOSE #2
: GOTO 208
-0105 REM LASTEINGABE
: INPUT " NAME DES LASTFALLES ",A1$(2)
: I1=0
: MAT V=ZER
: L$()=ALL(00)
-0110 I1=I1+1
: L1,L2,L3,L4,L5,L6,L7=0
: INPUT " BELASTETES ELEMENT (ANFANGSELEMENT) UND
LASTART ",L1,L2
: IF L1>900 THEN 200
: IF L2=3 OR L2=4 THEN INPUT " ELEMENTGRUPPENENDE
",L6
: ON L2 GOTO 120,120,130,140,150,160,160
-0120 INPUT " BELASTETE SEITE , P1 ,P2 ",L3,L4,L5
: GOTO 190
-0130 INPUT " VOLUMSLAST IN X- UND Y- RICHTUNG ",L4,L5
: GOTO 190
-0140 INPUT " TEMPERATURKOEFFIZIENT ",H3
: INPUT " TEMPERATUR AN DEN KNOTENPUNKTEN
,K1,K2,K3,K4",L4,L5,L6,H2
: L4=(L4+L5+L6+H2)*H3/4
: L5=0
: GOTO 190
-0150 INPUT " DEHNUNGEN AN DEN KNOTENPUNKTEN
,K1,K2,K3,K4",L4,L5,L6,L7
: GOTO 190
-0160 INPUT " HORIZONTALER WERT , VERTIKALER WERT ",L4,L5
-0190 REM LASTVERSCHLUESSELUNG
: PACK(####) STR(L$(I1),,2) FROM L1
: PACK(##) STR(L$(I1),3,2) FROM L2,L3
: PACK(+#.####^^^^) STR(L$(I1),5,20) FROM
L4,L5,L6,L7
: GOTO 110
-0200 INPUT " NAME DER BELASTUNGSDATEI ",A4$
: DATA SAVE DC OPEN T#2,(30)A4$
: ERROR I1=ERR
: IF I1=83 OR I1=86 THEN DATA SAVE DC OPEN
T#2,(A4$)A4$
: ERROR I1=ERR
: GOSUB 1000
: PRINT
: IF I1=84 THEN PRINT " FILE NOT SCRATCHED"
: STOP
0202 DATA SAVE DC #2,A1$(2),L$()
: DATA SAVE DC #2,END
: DATA SAVE DC CLOSE #2
-0208 REM KNOTENPUNKTSLASTBERECHNUNG
: GOSUB 3000
: I1=0
: MAT V=ZER
-0210 I1=I1+1
: REM ENTSCHLUESSELN DER LASTDATEN
: UNPACK(####) STR(L$(I1),,2) TO L1
: PRINT I1,L1
: IF L1=0 THEN 800
: UNPACK(##) STR(L$(I1),3,2) TO L2,L3
: UNPACK(+#.####^^^^) STR(L$(I1),5,20) TO
L4,L5,L6,L7
0220 ON L2 GOTO 225,250,300,300,400,450,500
-0225 REM DRUCK AUF SEITE
: S3(1,1)=L4
: S3(1,2)=L5
: S3(2,1),S3(2,2)=0
-0230 REM TRAPEZLAST AUF EINE SEITE
: GOSUB 6200
: C1=0
: GOSUB 6100
: ON L3 GOTO 231,232,233,234
-0231 REM SEITE 1
: Q(1)=1
: Q(2)=2
: Q(3)=3
: X4(1)=X3(1)
: X4(2)=X3(2)
: Y4(1),Y4(2)=-1
: GOTO 235
-0232 REM SEITE 2
: Q(1)=3
: Q(2)=4
: Q(3)=5
: X4(1),X4(2)=1
: Y4(1)=Y3(2)
: Y4(2)=Y3(3)
: GOTO 235
-0233 REM SEITE 3
: Q(1)=5
: Q(2)=6
: Q(3)=7
: X4(1)=X3(3)
: X4(2)=X3(4)
: Y4(1),Y4(2)=1
: GOTO 235
-0234 REM SEITE 4
: Q(1)=7
: Q(2)=8
: Q(3)=1
: X4(1),X4(2)=-1
: Y4(1)=Y3(4)
: Y4(2)=Y3(1)
-0235 REM SPANNUNGSBERECHNUNG AN DEN INTEGRATIONSPUNKTEN
: MAT S=ZER
: FOR I5=1 TO 2
: FOR I=1 TO 2
: FOR J=1 TO 2
: S(I5,I)=S(I5,I)+S3(I5,J)*FNV(2*J-1)
: NEXT J,I,I5
0237 REM KNOTENPUNKTSINTEGRATION AUS OBERFLAECHENLASTEN
: MAT P0=ZER
: FOR I5=1 TO 2
: GOSUB '40(X4(I5),Y4(I5))
: ON L3 GOTO 240,242,240,242
-0240 F1(1)=Y(1,1)
: F1(2)=Y(1,2)
: H1=1/SQR(F1(1)^2+F1(2)^2)
: IF L3=3 THEN MAT F1=(-1)*F1
: GOTO 245
-0242 F1(1)=Y(2,1)
: F1(2)=Y(2,2)
: H1=1/SQR(F1(1)^2+F1(2)^2)
: IF L3=4 THEN MAT F1=(-1)*F1
-0245 FOR J1=1 TO M0
: H1=J1+J1-1
:
P0(H1)=P0(H1)+(S(1,I5)*F1(2)-S(2,I5)*F1(1))*S1(J1)
: H1=H1+1
:
P0(H1)=P0(H1)+(-S(1,I5)*F1(1)-S(2,I5)*F1(2))*S1(J1)
: NEXT J1,I5
: REM MAT PRINT P0
-0247 IF L2=3 THEN PRINT " ELEMENT ",I4
: FOR I=1 TO M0
: H6=F0*P(I)-F0+1
: H7=F0*I-F0+1
: FOR J=0 TO F0-1
: V(H6+J)=V(H6+J)+P0(H7+J)
: PRINT V(H6+J);
: NEXT J,I
: PRINT
: IF L2=3 THEN NEXT I4
: GOTO 210
-0250 REM SCHUB AUF EINE SEITENKANTE
: GOSUB 6200
: C1=0
: GOSUB 6100
: S3(2,1)=-L4
: S3(2,2)=-L5
: S3(1,1),S3(1,2)=0
: GOTO 230
-0300 REM VOLUMSLASTEN
: FOR I4=L1 TO L6
: GOSUB 6300
: C1=0
: GOSUB 6100
: MAT P0=ZER
: FOR I5=1 TO N3
: GOSUB '40(X3(I5),Y3(I5))
: FOR J1=1 TO M0
: H1=J1+J1-1
: P0(H1)=P0(H1)+L4*X*S1(J1)
: H1=H1+1
: P0(H1)=P0(H1)+L5*X*S1(J1)
: NEXT J1,I5
: GOTO 247
0350 REM TEMPERATURBELASTUNG
0360 MAT B=ZER
: MAT REDIM D2(3,3)
: X(1,5)=X(1,2)
: X(2,5)=X(2,2)
: FOR I=1 TO 3
: B(1,2*I-1),B(3,2*I)=(X(2,I+1)-X(2,I+2))/F
: B(2,2*I),B(3,2*I-1)=(X(1,I+2)-X(1,I+1))/F
: NEXT I
: I3=0
-0370 REM SPANNUNGS DEHNUNGSBEZ
: I3=I3+1
: IF I3>M1 THEN PRINT " *** ERROR
MATERIALDATEN ELE";K(1)
: IF K(1)<D1(I3,1) OR K(1)>D1(I3,2) THEN
370
: D2(1,1)=D1(I3,3)
: D2(1,2),D2(2,1)=D1(I3,4)
: D2(1,3),D2(3,1)=0
: D2(2,2)=D1(I3,5)
: D2(2,3),D2(3,2)=0
: D2(3,3)=D1(I3,6)
0380 H2=D1(I3,7)
: H1=SIN(H2)
: H2=COS(H2)
: T1(1,1),T1(2,2)=H2*H2
: T1(1,2),T1(2,1)=H1*H1
: H3=H1*H2
: T1(3,1)=H3
: T1(3,2)=-H3
: T1(2,3)=H3
: T1(3,3)=H2*H2-H1*H1
: MAT D3=T1*D2
: MAT D2=TRN(T1)
: MAT T1=D3*D2
: MAT REDIM D(1,3),D2(1,3),D3(1,6)
: D(1,1),D(1,2)=L4
: D(1,3)=0
: MAT D2=D*T1
: PRINT "ELE ";K(1)
0390 MAT PRINT D2
: MAT D3=D2*B
: MAT D3=(F/2)*D3
: FOR I=1 TO 3
: H3=I+I-1
: H1=F0*P(I)-F0+1
: FOR H4=0 TO F0-1
: V(H1+H4)=D3(1,H3+H4)+V(H1+H4)
: NEXT H4
: PRINT P(I)+W,V(H1),V(H1+1)
: NEXT I
: MAT REDIM D(3,3),D2(3,6),D3(3,3)
: PRINT
: PRINT
: NEXT I4
: GOTO 210
-0400 REM AUSGANGSDEHNUNGSZUSTAND
-0450 REM EINGEPRAEGTE VERSCHIEBUNG
: K(4)=L1
: L2=2
: GOSUB 6100
: H1=P(3)
: UNPACK(+#.#####^^^^) STR(L$(I1),5,10) TO L4,L5
: IF L4=999 THEN 460
: V(F0*H1-F0+1)=L4*1E50
-0460 IF L5=999 THEN 470
: V(F0*H1-F0+2)=L5*1E50
-0470 PRINT F0*H1-F0+1,V(F0*H1-F0+1);
: IF F0>1 THEN PRINT V(F0*H1-F0+2)
: PRINT
: GOTO 210
-0500 REM KNOTENPUNKTSLASTEN
: K(4)=L1
: L2=2
: GOSUB 6100
: H1=P(3)
: UNPACK(+#.#####^^^^) STR(L$(I1),5,5) TO L4,L5
: V(F0*H1-F0+1)=L4
: V(F0*H1-F0+2)=L5
: PRINT F0*H1-F0+1,V(F0*H1-F0+1);
: IF F0>1 THEN PRINT V(F0*H1-F0+2)
: PRINT
: GOTO 210
-0800 V8=1
: PRINT " DIE LASTFALLBERECHNUNG IST
ABGESCHLOSSEN "
: INPUT " KEY-RETURN ZUM LADEN DES VOR UND
RUECKWAERTSEINSETZENS",H1
: LOAD T#1,"FE2VER" 0,9998 BEG 10
: STOP
0900 DEFFN'40(X1,Y1)
: REM BERECHNUNG DER FORMFUNKTION UND DEREN
ABLEITUNGEN IN NATUERLICHEN KOOR
DINATEN
0910 FOR I=1 TO M0
: H4=X1(I)
: H5=Y1(I)
: H1=1+H4*X1
: H2=1+H5*Y1
: IF H4=0 OR H5=0 THEN 930
0920 S1(I)=H1*H2*(H1+H2-3)*.25
: S4(1,I)=H2*(H2+H1+H1-3)*H4*.25
: S4(2,I)=H1*(H1+H2+H2-3)*H5*.25
-0930 IF H4<>0 THEN 940
: H7=1-X1*X1
: S1(I)=H2*H7*.5
: S4(1,I)=-X1*H2
: S4(2,I)=H5*H7*.5
-0940 IF H5<>0 THEN 945
: H7=1-Y1*Y1
: S1(I)=H1*H7*.5
: S4(1,I)=H4*H7*.5
: S4(2,I)=-Y1*H1
-0945 NEXT I
0950 REM BERECHNUNG DER JAKOBISCHEN TRANSFORMATION VON
X,Y NACH XSI,ETA
: FOR I=1 TO 2
: FOR J=1 TO 2
: Y(I,J)=0
: FOR K=1 TO M0
: Y(I,J)=Y(I,J)+X(J,K)*S4(I,K)
: NEXT K,J,I
0960 REM BERECHNUNG DER JAKOBISCHEN DETERMINANTE X
: MAT H=INV(Y),X
: REM TRANSFORMATION NATUERLICHER ABLEITUNGEN
NACH XY, ABLEITUNGEN
: FOR I=1 TO M0
: N(1)=S4(1,I)
: N(2)=S4(2,I)
: MAT H1=H*N
: S4(1,I)=H1(1)
: S4(2,I)=H1(2)
: NEXT I
: RETURN
-1000 P5$=P0$
: GOTO 1020
-1010 P5$=P1$
-1020 SELECT PRINT <P5$>
: RETURN
-3000 REM AUSDRUCK DER BELASTUNG
: H1=2
: INPUT " ANZEIGE AM BILDSCHIRM = 1 / ODER
AUSDRUCK = EXEC ",H1
: IF H1=2 THEN GOSUB 1010
: ELSE GOSUB 1000
: PRINT
HEX(0D0A0E),A1$(1),HEX(0D0A0E),A1$(2),HEX(0D0A0E),"LASTTAFEL",HEX(0D
0A)," ELE TYP
W1
W2 W3
W4
W5"
3005 H2=0
-3010 H2=H2+1
: UNPACK(####) STR(L$(H2),,2) TO L1
: UNPACK(##) STR(L$(H2),3,2) TO L2,L3
: UNPACK(+#.####^^^^) STR(L$(H2),5,15) TO
L4,L5,L6
: IF L1=0 THEN 3020
: PRINTUSING 7010,L1,L2,L3,L4,L5,L6,L7
: GOTO 3010
-3020 GOSUB 1000
: RETURN
-3100 INPUT " I = ",I
: HEXPRINT STR(L$(I),,24)
: NEXT I1
: PRINT
: GOTO 3100
5000 DEF FNV(J)=(1+X1(Q(J))*X4(I))*(1+Y1(Q(J))*Y4(I))/4
-6100 C1=C1+1
: PACK(####) K3$ FROM K(C1+1)
: MAT SEARCH K$(),=STR(K3$,,2) TO H2$() STEP 8
: IF H2$(1)=HEX(0000) THEN RETURN
: L1=INT(VAL(H2$(1),2)/8)+1
: P(C1)=L1-W
: UNPACK(####) STR(K$(L1),,2) TO P
: UNPACK(+###.##) STR(K$(L1),3,6) TO
X(1,C1),X(2,C1)
: IF C1<8 THEN 6100
: RETURN
-6200 REM ELEMENTSUCHE
: L1=0
: MAT SEARCH E$(),=STR(L$(I1),,2) TO H2$() STEP
18
: IF H2$(1)=HEX(0000) THEN RETURN
: L1=INT(VAL(H2$(1),2)/18)+1
: UNPACK(####) E$(L1) TO K()
: RETURN
-6300 REM ELEMENTSUCHE
: PACK(####) H3$ FROM I4
: I2=0
: MAT SEARCH E$(),=H3$ TO H2$() STEP 18
: IF H2$(1)=HEX(0000) THEN RETURN
: I2=INT(VAL(H2$(1),2)/18)+1
: UNPACK(####) E$(I2) TO K()
: RETURN
7000 GOSUB 1010
: FOR W1=1 TO Z9
: H1=(W1-1)*3
: IF H1>57 THEN H1=H1-57
: PRINT TAB(H1);
: FOR W2=1 TO S9
: PRINTUSING 7005,VAL(A$(W1,W2));
: NEXT W2
: PRINT
: NEXT W1
: PRINT
: GOSUB 1000
: RETURN
-7005 %####
-7010 % #### # +#####.###### +#####.###### +#####.######
+#####.###### +#####.#
#####
7777 PRINT S4(I1,I),S3(I1,J),FNV(2*J-1),2*J-1
: STOP
8000 FOR I=1 TO 20
: PRINT I,,V(I+I-1),V(I+I)
: NEXT I
: STOP
9100 DEFFN'16 "SCRATCH T
#1,";HEX(22);"FE2LAST";HEX(22);":SAVE DC T$ #1,()";HEX
(22);"FE2LAST";HEX(22)
9300 DEFFN'19
"D1(1,1)=1:D1(1,2)=1000:D1(1,3),D1(1,5)=2000000:D1(1,4)=200000:D1
(1,8)=800000:M1=1"
SELECT R, ERROR >60, ROUND, P, LINE 24
SELECT CI /001, INPUT /001, PLOT /000, TAPE /000
SELECT PRINT /005(80), LIST /015(80), CO /005(80)
SELECT DISK /310
FILE ADDRESS FILE-NAME START CURRENT
END
* NO OPEN FILES *
$DEVICE(/004) = "/dev/prn"
$DEVICE(/015) = "D:/B2C/F2START.prt"
$DEVICE(/D10) = "A:"
$DEVICE(/D11) = "D:/B2C/FEMELE3.BS2"
$DEVICE(/D12) = "platter2.bs2"
Program Load Sequence:FE2LAST
Auch die neueren CAD-Produkte sollen hier angeführt werden. Damals war CADKEY eigentlich ein sehr dominierendes 3D-Produkt mit dem gut gearbeitet werden konnte. Nachfolgend die alte EGA-Version mit der von mir geschriebenen VGA Auflösung und eine Darstellung schon auf höher auflösenden Schirmen 1996.
Heute sind dies Produkte -- wie hier mit Turbocad 2D/3D im Layout-Modus dargestellt -- sehr ansprechend und erlauben ein bequemes Arbeiten im 3D-Bereich
[1] H.Stäuble;
The behaviour of the Schlegeis arch dam and the measures taken to
improve it,
Safety of Dams,
J.Laginha Serafim, University of Coimbra, Portigal, (1984) 115-121