1 /***********************************************************************
2 *
3 *               *****   ***    ***
4 *                  *   *   *  *   *
5 *                 *     ***    ***
6 *                *     *   *  *   *
7 *               *****   ***    ***
8 *
9 * A FREE Finite Elements Analysis Program in ANSI C for the Windows OS.
10 *
11 * Composed and edited and copyright by
12 * Professor Dr.-Ing. Frank Rieg, University of Bayreuth, Germany
13 *
14 * eMail:
15 * frank.rieg@uni-bayreuth.de
16 * dr.frank.rieg@t-online.de
17 *
18 * V15.0  November 18, 2015
19 *
20 * This program is free software; you can redistribute it and/or modify
21 * it under the terms of the GNU General Public License as published by
22 * the Free Software Foundation; either version 2, or (at your option)
23 * any later version.
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
28 * GNU General Public License for more details.
29 *
30 * You should have received a copy of the GNU General Public License
31 * along with this program; see the file COPYING.  If not, write to
32 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
33 ***********************************************************************/
34 /***********************************************************************
35 * Compilerunit m13.c fuer Z88O enthaelt:
36 * fsca88  -  Farbskala Spannungen und Verschiebungen
37 * malk88  -  Knotennummern malen
38 * tet588  -  Wireframe
39 * fsrb88  -  Farbskala Randbedingungen
40 * 2.12.2015 Rieg
41 ***********************************************************************/
42 /***********************************************************************
43 * Windows
44 ***********************************************************************/
45 #ifdef FR_WIN
46 #include <z88o.h>
47 #include <windows.h>
48 #include <commctrl.h>
49 #include <gl\gl.h>
50 #include <stdio.h>
51 #endif
52 
53 /***********************************************************************
54 * Leseformate
55 ***********************************************************************/
56 #ifdef FR_XINT
57 #define PDB "%d "
58 #define PD "%d"
59 #endif
60 
61 #ifdef FR_XLONG
62 #define PDB "%ld "
63 #define PD "%ld"
64 #endif
65 
66 #ifdef FR_XLOLO
67 #define PDB "%lld "
68 #define PD "%lld"
69 #endif
70 
71 #ifdef FR_XDOUB
72 #define PG "%+#10.2lE"
73 #endif
74 
75 #ifdef FR_XQUAD
76 #define PG "%Lg"
77 #endif
78 
79 /***********************************************************************
80 * Font- Structure GLFONT
81 ***********************************************************************/
82 typedef struct
83     {
84     GLuint base;        /* DisplayList Nr.erstes Zeichen */
85     int    widths[256]; /* Zeichenweite in Pixels */
86     int    height;      /* Zeichenhoehe */
87     } GLFONT;
88 
89 /***********************************************************************
90 * Functions
91 ***********************************************************************/
92 GLFONT * FontCreate(HDC hdc,const char *typeface,
93                     int height,int weight,DWORD italic);
94 void	 FontPuts(GLFONT *font, const char *cs);
95 void     FontDelete(GLFONT *font);
96 
97 /***********************************************************************
98 * fsca88 zeichnet die Farbskala fuer die Spannungen und Verschiebungen
99 ***********************************************************************/
fsca88(void)100 int fsca88(void)
101 {
102 extern GLFONT      *Font;
103 
104 extern FR_DOUBLE   xm;
105 
106 extern GLfloat     rot[];
107 extern GLfloat     gruen[];
108 extern GLfloat     blau[];
109 
110 extern FR_DOUBLE   fspa[];
111 
112 extern FR_INT4     LANG,igpanz,isflag;
113 
114 extern int         if3d;
115 
116 char               cstring[80];
117 
118 /*----------------------------------------------------------------------
119 * fsca88 zeichnet die Farbskala fuer die Spannungen und Verschiebungen
120 *---------------------------------------------------------------------*/
121 glColor3f(rot[1],gruen[1],blau[1]);
122 glRectd(xm+4,48.0,xm+12,40.0);
123 glColor3f(1.0f,0.5f,0.0f);
124 glRasterPos3d(xm+16,44.0,0.00);
125 sprintf(cstring,PG " ~ " PG,fspa[1],fspa[2]);
126 FontPuts(Font,cstring);
127 
128 glColor3f(rot[2],gruen[2],blau[2]);
129 glRectd(xm+4,40.0,xm+12,32.0);
130 glColor3f(1.0f,0.5f,0.0f);
131 glRasterPos3d(xm+16,36.0,0.00);
132 sprintf(cstring,PG " ~ " PG,fspa[2],fspa[3]);
133 FontPuts(Font,cstring);
134 
135 glColor3f(rot[3],gruen[3],blau[3]);
136 glRectd(xm+4,32.0,xm+12,24.0);
137 glColor3f(1.0f,0.5f,0.0f);
138 glRasterPos3d(xm+16,28.0,0.00);
139 sprintf(cstring,PG " ~ " PG,fspa[3],fspa[4]);
140 FontPuts(Font,cstring);
141 
142 glColor3f(rot[4],gruen[4],blau[4]);
143 glRectd(xm+4,24.0,xm+12,16.0);
144 glColor3f(1.0f,0.5f,0.0f);
145 glRasterPos3d(xm+16,20.0,0.00);
146 sprintf(cstring,PG " ~ " PG,fspa[4],fspa[5]);
147 FontPuts(Font,cstring);
148 
149 glColor3f(rot[5],gruen[5],blau[5]);
150 glRectd(xm+4,16.0,xm+12,8.0);
151 glColor3f(1.0f,0.5f,0.0f);
152 glRasterPos3d(xm+16,12.0,0.00);
153 sprintf(cstring,PG " ~ " PG,fspa[5],fspa[6]);
154 FontPuts(Font,cstring);
155 
156 glColor3f(rot[6],gruen[6],blau[6]);
157 glRectd(xm+4,8.0,xm+12,0.0);
158 glColor3f(1.0f,0.5f,0.0f);
159 glRasterPos3d(xm+16,4.0,0.00);
160 sprintf(cstring,PG " ~ " PG,fspa[6],fspa[7]);
161 FontPuts(Font,cstring);
162 
163 glColor3f(rot[7],gruen[7],blau[7]);
164 glRectd(xm+4,0.0,xm+12,-8.0);
165 glColor3f(1.0f,0.5f,0.0f);
166 glRasterPos3d(xm+16,-4.0,0.00);
167 sprintf(cstring,PG " ~ " PG,fspa[7],fspa[8]);
168 FontPuts(Font,cstring);
169 
170 glColor3f(rot[8],gruen[8],blau[8]);
171 glRectd(xm+4,-8.0,xm+12,-16.0);
172 glColor3f(1.0f,0.5f,0.0f);
173 glRasterPos3d(xm+16,-12.0,0.00);
174 sprintf(cstring,PG " ~ " PG,fspa[8],fspa[9]);
175 FontPuts(Font,cstring);
176 
177 glColor3f(rot[9],gruen[9],blau[9]);
178 glRectd(xm+4,-16.0,xm+12,-24.0);
179 glColor3f(1.0f,0.5f,0.0f);
180 glRasterPos3d(xm+16,-20.0,0.00);
181 sprintf(cstring,PG " ~ " PG,fspa[9],fspa[10]);
182 FontPuts(Font,cstring);
183 
184 glColor3f(rot[10],gruen[10],blau[10]);
185 glRectd(xm+4,-24.0,xm+12,-32.0);
186 glColor3f(1.0f,0.5f,0.0f);
187 glRasterPos3d(xm+16,-28.0,0.00);
188 sprintf(cstring,PG " ~ " PG,fspa[10],fspa[11]);
189 FontPuts(Font,cstring);
190 
191 glColor3f(rot[11],gruen[11],blau[11]);
192 glRectd(xm+4,-32.0,xm+12,-40.0);
193 glColor3f(1.0f,0.5f,0.0f);
194 glRasterPos3d(xm+16,-36.0,0.00);
195 sprintf(cstring,PG " ~ " PG,fspa[11],fspa[12]);
196 FontPuts(Font,cstring);
197 
198 if(if3d == IDM_SHOWSPANN || if3d == IDM_SHOWGAUSS || if3d == IDM_SHOWGAUPU)
199   {
200   glColor3f(1.0f,0.5f,0.0f);
201   glRasterPos3d(xm+4,-44.0,0.00);
202   if(LANG == 1 && isflag == 0)strcpy(cstring,"keine V-Spannungen");
203   if(LANG == 2 && isflag == 0)strcpy(cstring,"no reduced Stresses");
204   if(LANG == 1 && isflag == 1)strcpy(cstring,"V-Spannungen (GEH)");
205   if(LANG == 2 && isflag == 1)strcpy(cstring,"v.Mises Stresses");
206   if(LANG == 1 && isflag == 2)strcpy(cstring,"V-Spannungen (NH)");
207   if(LANG == 2 && isflag == 2)strcpy(cstring,"principal Stresses");
208   if(LANG == 1 && isflag == 3)strcpy(cstring,"V-Spannungen (SH)");
209   if(LANG == 2 && isflag == 3)strcpy(cstring,"Tresca Stresses");
210   FontPuts(Font,cstring);
211   }
212 
213 if(if3d == IDM_SHOWSPANN && isflag > 0)
214   {
215   glRasterPos3d(xm+4,-48.0,0.00);
216   if(LANG == 1)strcpy(cstring,"in den Eckknoten");
217   if(LANG == 2)strcpy(cstring,"in corner nodes");
218   FontPuts(Font,cstring);
219   }
220 
221 if(if3d == IDM_SHOWGAUSS  && isflag > 0)
222   {
223   glRasterPos3d(xm+4,-48.0,0.00);
224   if(LANG == 1)strcpy(cstring,"pro Element gemittelt");
225   if(LANG == 2)strcpy(cstring,"mean value per element");
226   FontPuts(Font,cstring);
227   }
228 
229 if(if3d == IDM_SHOWGAUPU  && isflag > 0)
230   {
231   glRasterPos3d(xm+4,-48.0,0.00);
232   if(LANG == 1)sprintf(cstring,"in " PD " Gausspunkten",igpanz);
233   if(LANG == 2)sprintf(cstring,"in " PD " Gauss points",igpanz);
234   FontPuts(Font,cstring);
235   }
236 
237 if(if3d == IDM_SHOWVX)
238   {
239   glColor3f(1.0f,0.5f,0.0f);
240   glRasterPos3d(xm+4,-44.0,0.00);
241   if(LANG == 1)strcpy(cstring,"X-Verschiebungen");
242   if(LANG == 2)strcpy(cstring,"X Displacements");
243   FontPuts(Font,cstring);
244   }
245 
246 if(if3d == IDM_SHOWVY)
247   {
248   glColor3f(1.0f,0.5f,0.0f);
249   glRasterPos3d(xm+4,-44.0,0.00);
250   if(LANG == 1)strcpy(cstring,"Y-Verschiebungen");
251   if(LANG == 2)strcpy(cstring,"Y Displacements");
252   FontPuts(Font,cstring);
253   }
254 
255 if(if3d == IDM_SHOWVZ)
256   {
257   glColor3f(1.0f,0.5f,0.0f);
258   glRasterPos3d(xm+4,-44.0,0.00);
259   if(LANG == 1)strcpy(cstring,"Z-Verschiebungen");
260   if(LANG == 2)strcpy(cstring,"Z Displacements");
261   FontPuts(Font,cstring);
262   }
263 
264 return 0;
265 }
266 
267 /***********************************************************************
268 * malk88 zeichnet die Knotennummern
269 ***********************************************************************/
malk88(void)270 int malk88(void)
271 {
272 extern GLFONT      *Font;
273 
274 extern FR_DOUBLEAY xv;
275 extern FR_DOUBLEAY yv;
276 extern FR_DOUBLEAY zv;
277 
278 extern FR_INT4     jkvon,jkbis,nkp,LANG;
279 
280 extern GLfloat     node_col[];
281 
282 FR_INT4            i,ipuf;
283 
284 char               cstring[80];
285 
286 /*----------------------------------------------------------------------
287 * und los
288 *---------------------------------------------------------------------*/
289 glColor3f(node_col[0],node_col[1],node_col[2]);
290 
291 if(jkvon <=  0 || jkbis <=  0) return 0;
292 
293 if(jkvon > nkp) jkvon= nkp;
294 if(jkbis > nkp) jkbis= nkp;
295 
296 if(jkbis < jkvon)
297   {
298   ipuf=  jkbis;
299   jkbis= jkvon;
300   jkvon= ipuf;
301   }
302 
303 for(i= jkvon; i <= jkbis;i++)
304   {
305   glRasterPos3d(xv[i],yv[i],zv[i]);
306   ltoa(i,cstring,10);
307   FontPuts(Font,cstring);
308   }
309 
310 return 0;
311 }
312 
313 /***********************************************************************
314 * hier beginnt Function tet588: reines FE Netz
315 ***********************************************************************/
tet588(void)316 int tet588(void)
317 {
318 extern GLFONT      *Font;
319 
320 extern FR_DOUBLEAY xv;
321 extern FR_DOUBLEAY yv;
322 extern FR_DOUBLEAY zv;
323 
324 extern FR_INT4AY   ityp;
325 extern FR_INT4AY   koi;
326 extern FR_INT4AY   koffs;
327 
328 extern FR_INT4     ne,jevon,jebis;
329 
330 extern GLfloat     elem_col[],hide_col[];
331 
332 FR_DOUBLE          xla,yla,zla;
333 
334 FR_INT4            i,j,k,iflag;
335 
336 extern int         iflabe;
337 
338 FR_INT4            ipuf;
339 
340 char               cstring[80];
341 
342 /***********************************************************************
343 * jevon und jebis checken
344 ***********************************************************************/
345 if(jevon > ne) jevon= ne;
346 if(jebis > ne) jebis= ne;
347 
348 if(jebis < jevon)
349   {
350   ipuf=  jebis;
351   jebis= jevon;
352   jevon= ipuf;
353   }
354 
355 /***********************************************************************
356 * Schleife ueber alle Elemente
357 ***********************************************************************/
358 for (i= 1; i <= ne; i++)
359   {
360   glColor3f(hide_col[0],hide_col[1],hide_col[2]);
361   iflag= 0;
362   if(iflabe == IDM_ELEMENTE || iflabe == IDM_LALLES)
363     if(i >= jevon && i <= jebis) iflag= 1;
364 
365 /*----------------------------------------------------------------------
366 * Stab 4 u. 9, Balken 2 und 13, Welle 5 & Balken 25
367 *---------------------------------------------------------------------*/
368   if(ityp[i] == 4 || ityp[i] == 9  ||
369      ityp[i] == 2 || ityp[i] == 13 ||
370      ityp[i] == 5 || ityp[i] == 25)
371     {
372     if(iflag)
373       {
374       glColor3f(elem_col[0],elem_col[1],elem_col[2]);
375       xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+1]])*0.5;
376       yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+1]])*0.5;
377       zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+1]])*0.5;
378       glRasterPos3d(xla,yla,zla);
379       ltoa(i,cstring,10);
380       FontPuts(Font,cstring);
381       }
382 
383     glBegin(GL_LINES);
384       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
385       glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
386     glEnd();
387 
388     }  /* Stab 4 u. 9, Balken 2 und 13, Welle 5 & Balken 25 */
389 
390 
391 /*----------------------------------------------------------------------
392 * Scheibe 7, Torus 8 u. Platte 20 u. Schale 23
393 *---------------------------------------------------------------------*/
394   if(ityp[i] == 7  || ityp[i] == 8 || ityp[i] == 20 || ityp[i] == 23)
395     {
396     if(iflag)
397       {
398       glColor3f(elem_col[0],elem_col[1],elem_col[2]);
399       xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+2]])*0.5;
400       yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+2]])*0.5;
401       zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+2]])*0.5;
402       glRasterPos3d(xla,yla,zla);
403       ltoa(i,cstring,10);
404       FontPuts(Font,cstring);
405       }
406 
407     glBegin(GL_LINE_STRIP);
408       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
409       glVertex3d(xv[koi[koffs[i]+4]],yv[koi[koffs[i]+4]],zv[koi[koffs[i]+4]]);
410       glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
411       glVertex3d(xv[koi[koffs[i]+5]],yv[koi[koffs[i]+5]],zv[koi[koffs[i]+5]]);
412       glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
413       glVertex3d(xv[koi[koffs[i]+6]],yv[koi[koffs[i]+6]],zv[koi[koffs[i]+6]]);
414       glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
415       glVertex3d(xv[koi[koffs[i]+7]],yv[koi[koffs[i]+7]],zv[koi[koffs[i]+7]]);
416       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
417     glEnd();
418 
419     }  /* Scheibe 7, Torus 8 und Platte 20 und Schale 23 */
420 
421 /*----------------------------------------------------------------------
422 * Scheibe 11 und Torus 12
423 *---------------------------------------------------------------------*/
424   if(ityp[i] == 11  || ityp[i] == 12)
425     {
426     if(iflag)
427       {
428       glColor3f(elem_col[0],elem_col[1],elem_col[2]);
429       xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+2]])*0.5;
430       yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+2]])*0.5;
431       zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+2]])*0.5;
432       glRasterPos3d(xla,yla,zla);
433       ltoa(i,cstring,10);
434       FontPuts(Font,cstring);
435       }
436 
437     glBegin(GL_LINE_STRIP);
438       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
439       glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
440       glVertex3d(xv[koi[koffs[i]+ 5]],yv[koi[koffs[i]+ 5]],zv[koi[koffs[i]+ 5]]);
441       glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
442       glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
443       glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
444       glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
445       glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
446       glVertex3d(xv[koi[koffs[i]+ 9]],yv[koi[koffs[i]+ 9]],zv[koi[koffs[i]+ 9]]);
447       glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
448       glVertex3d(xv[koi[koffs[i]+10]],yv[koi[koffs[i]+10]],zv[koi[koffs[i]+10]]);
449       glVertex3d(xv[koi[koffs[i]+11]],yv[koi[koffs[i]+11]],zv[koi[koffs[i]+11]]);
450       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
451     glEnd();
452 
453     }  /* Scheibe 11 und Torus 12 */
454 
455 /*----------------------------------------------------------------------
456 * Volumenschalenele.21
457 *---------------------------------------------------------------------*/
458   if(ityp[i] == 21)
459     {
460     if(iflag)
461       {
462       glColor3f(elem_col[0],elem_col[1],elem_col[2]);
463       xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+2]])*0.5;
464       yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+2]])*0.5;
465       zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+2]])*0.5;
466       glRasterPos3d(xla,yla,zla);
467       ltoa(i,cstring,10);
468       FontPuts(Font,cstring);
469       }
470 
471     glBegin(GL_LINE_STRIP);
472       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
473       glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
474       glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
475       glVertex3d(xv[koi[koffs[i]+ 5]],yv[koi[koffs[i]+ 5]],zv[koi[koffs[i]+ 5]]);
476       glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
477       glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
478       glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
479       glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
480       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
481     glEnd();
482 
483     glBegin(GL_LINE_STRIP);
484       glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
485       glVertex3d(xv[koi[koffs[i]+12]],yv[koi[koffs[i]+12]],zv[koi[koffs[i]+12]]);
486       glVertex3d(xv[koi[koffs[i]+ 9]],yv[koi[koffs[i]+ 9]],zv[koi[koffs[i]+ 9]]);
487       glVertex3d(xv[koi[koffs[i]+13]],yv[koi[koffs[i]+13]],zv[koi[koffs[i]+13]]);
488       glVertex3d(xv[koi[koffs[i]+10]],yv[koi[koffs[i]+10]],zv[koi[koffs[i]+10]]);
489       glVertex3d(xv[koi[koffs[i]+14]],yv[koi[koffs[i]+14]],zv[koi[koffs[i]+14]]);
490       glVertex3d(xv[koi[koffs[i]+11]],yv[koi[koffs[i]+11]],zv[koi[koffs[i]+11]]);
491       glVertex3d(xv[koi[koffs[i]+15]],yv[koi[koffs[i]+15]],zv[koi[koffs[i]+15]]);
492       glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
493     glEnd();
494 
495     glBegin(GL_LINES);
496       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
497       glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
498       glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
499       glVertex3d(xv[koi[koffs[i]+ 9]],yv[koi[koffs[i]+ 9]],zv[koi[koffs[i]+ 9]]);
500       glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
501       glVertex3d(xv[koi[koffs[i]+10]],yv[koi[koffs[i]+10]],zv[koi[koffs[i]+10]]);
502       glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
503       glVertex3d(xv[koi[koffs[i]+11]],yv[koi[koffs[i]+11]],zv[koi[koffs[i]+11]]);
504     glEnd();
505 
506     }  /* Ende deg.Volumenele 21 */
507 
508 /*----------------------------------------------------------------------
509 * Platte 19
510 *---------------------------------------------------------------------*/
511   if(ityp[i] == 19)
512     {
513     if(iflag)
514       {
515       glColor3f(elem_col[0],elem_col[1],elem_col[2]);
516       xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+15]])*0.5;
517       yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+15]])*0.5;
518       zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+15]])*0.5;
519       glRasterPos3d(xla,yla,zla);
520       ltoa(i,cstring,10);
521       FontPuts(Font,cstring);
522       }
523 
524     glBegin(GL_LINE_STRIP);
525       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
526       glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
527       glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
528       glVertex3d(xv[koi[koffs[i]+12]],yv[koi[koffs[i]+12]],zv[koi[koffs[i]+12]]);
529       glVertex3d(xv[koi[koffs[i]+13]],yv[koi[koffs[i]+13]],zv[koi[koffs[i]+13]]);
530       glVertex3d(xv[koi[koffs[i]+14]],yv[koi[koffs[i]+14]],zv[koi[koffs[i]+14]]);
531       glVertex3d(xv[koi[koffs[i]+15]],yv[koi[koffs[i]+15]],zv[koi[koffs[i]+15]]);
532       glVertex3d(xv[koi[koffs[i]+11]],yv[koi[koffs[i]+11]],zv[koi[koffs[i]+11]]);
533       glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
534       glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
535       glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
536       glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
537       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
538     glEnd();
539 
540     }  /* Platte 19 */
541 
542 /*----------------------------------------------------------------------
543 * Scheibe 3, Scheibe 14, Torus 15 und Platte 18 und Schale 24
544 *---------------------------------------------------------------------*/
545   if(ityp[i] ==  3 || ityp[i] == 14 ||
546      ityp[i] == 15 || ityp[i] == 18 || ityp[i] == 24)
547     {
548     if(iflag)
549       {
550       glColor3f(elem_col[0],elem_col[1],elem_col[2]);
551       xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+1]]+xv[koi[koffs[i]+2]])*0.333;
552       yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+1]]+yv[koi[koffs[i]+2]])*0.333;
553       zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+1]]+zv[koi[koffs[i]+2]])*0.333;
554       glRasterPos3d(xla,yla,zla);
555       ltoa(i,cstring,10);
556       FontPuts(Font,cstring);
557       }
558 
559     glBegin(GL_LINE_STRIP);
560       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
561       glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
562       glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
563       glVertex3d(xv[koi[koffs[i]+4]],yv[koi[koffs[i]+4]],zv[koi[koffs[i]+4]]);
564       glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
565       glVertex3d(xv[koi[koffs[i]+5]],yv[koi[koffs[i]+5]],zv[koi[koffs[i]+5]]);
566       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
567     glEnd();
568 
569     }  /* Scheiben 3,14, Torus 15, Platte 18 und Schale 24 */
570 
571 /*----------------------------------------------------------------------
572 * Volumenschalenelement 22
573 *---------------------------------------------------------------------*/
574   if(ityp[i] ==  22)
575     {
576     if(iflag)
577       {
578       glColor3f(elem_col[0],elem_col[1],elem_col[2]);
579       xla=  (xv[koi[koffs[i]  ]]+xv[koi[koffs[i]+1]]+xv[koi[koffs[i]+2]])*0.333;
580       yla=  (yv[koi[koffs[i]  ]]+yv[koi[koffs[i]+1]]+yv[koi[koffs[i]+2]])*0.333;
581       zla=  (zv[koi[koffs[i]  ]]+zv[koi[koffs[i]+1]]+zv[koi[koffs[i]+2]])*0.333;
582       xla+= (xv[koi[koffs[i]+6]]+xv[koi[koffs[i]+7]]+xv[koi[koffs[i]+8]])*0.333;
583       yla+= (yv[koi[koffs[i]+6]]+yv[koi[koffs[i]+7]]+yv[koi[koffs[i]+8]])*0.333;
584       zla+= (zv[koi[koffs[i]+6]]+zv[koi[koffs[i]+7]]+zv[koi[koffs[i]+8]])*0.333;
585       xla/= 2.;
586       yla/= 2.;
587       zla/= 2.;
588       glRasterPos3d(xla,yla,zla);
589       ltoa(i,cstring,10);
590       FontPuts(Font,cstring);
591       }
592 
593     glBegin(GL_LINE_STRIP);
594       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
595       glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
596       glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
597       glVertex3d(xv[koi[koffs[i]+4]],yv[koi[koffs[i]+4]],zv[koi[koffs[i]+4]]);
598       glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
599       glVertex3d(xv[koi[koffs[i]+5]],yv[koi[koffs[i]+5]],zv[koi[koffs[i]+5]]);
600       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
601     glEnd();
602 
603     glBegin(GL_LINE_STRIP);
604       glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
605       glVertex3d(xv[koi[koffs[i]+ 9]],yv[koi[koffs[i]+ 9]],zv[koi[koffs[i]+ 9]]);
606       glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
607       glVertex3d(xv[koi[koffs[i]+10]],yv[koi[koffs[i]+10]],zv[koi[koffs[i]+10]]);
608       glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
609       glVertex3d(xv[koi[koffs[i]+11]],yv[koi[koffs[i]+11]],zv[koi[koffs[i]+11]]);
610       glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
611     glEnd();
612 
613     glBegin(GL_LINES);
614       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
615       glVertex3d(xv[koi[koffs[i]+6]],yv[koi[koffs[i]+6]],zv[koi[koffs[i]+6]]);
616       glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
617       glVertex3d(xv[koi[koffs[i]+7]],yv[koi[koffs[i]+7]],zv[koi[koffs[i]+7]]);
618       glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
619       glVertex3d(xv[koi[koffs[i]+8]],yv[koi[koffs[i]+8]],zv[koi[koffs[i]+8]]);
620     glEnd();
621 
622     }  /* Volumenscheibe 22 */
623 
624 /*----------------------------------------------------------------------
625 * Torus 6
626 *---------------------------------------------------------------------*/
627   if(ityp[i] == 6)
628     {
629     if(iflag)
630       {
631       glColor3f(elem_col[0],elem_col[1],elem_col[2]);
632       xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+1]]+xv[koi[koffs[i]+2]])*0.333;
633       yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+1]]+yv[koi[koffs[i]+2]])*0.333;
634       zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+1]]+zv[koi[koffs[i]+2]])*0.333;
635       glRasterPos3d(xla,yla,zla);
636       ltoa(i,cstring,10);
637       FontPuts(Font,cstring);
638       }
639 
640     glBegin(GL_LINE_STRIP);
641       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
642       glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
643       glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
644       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
645     glEnd();
646 
647     }  /* Torus 6 */
648 
649 /*----------------------------------------------------------------------
650 * Tetraeder 16
651 *---------------------------------------------------------------------*/
652   if(ityp[i] == 16)
653     {
654     if(iflag)
655       {
656       glColor3f(elem_col[0],elem_col[1],elem_col[2]);
657       xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+1]]+
658             xv[koi[koffs[i]+2]]+xv[koi[koffs[i]+3]])*0.25;
659       yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+1]]+
660             yv[koi[koffs[i]+2]]+yv[koi[koffs[i]+3]])*0.25;
661       zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+1]]+
662             zv[koi[koffs[i]+2]]+zv[koi[koffs[i]+3]])*0.25;
663       glRasterPos3d(xla,yla,zla);
664       ltoa(i,cstring,10);
665       FontPuts(Font,cstring);
666       }
667 
668     glBegin(GL_LINE_STRIP);
669       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
670       glVertex3d(xv[koi[koffs[i]+6]],yv[koi[koffs[i]+6]],zv[koi[koffs[i]+6]]);
671       glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
672       glVertex3d(xv[koi[koffs[i]+8]],yv[koi[koffs[i]+8]],zv[koi[koffs[i]+8]]);
673       glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
674       glVertex3d(xv[koi[koffs[i]+9]],yv[koi[koffs[i]+9]],zv[koi[koffs[i]+9]]);
675       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
676     glEnd();
677 
678     glBegin(GL_LINE_STRIP);
679       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
680       glVertex3d(xv[koi[koffs[i]+4]],yv[koi[koffs[i]+4]],zv[koi[koffs[i]+4]]);
681       glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
682       glVertex3d(xv[koi[koffs[i]+7]],yv[koi[koffs[i]+7]],zv[koi[koffs[i]+7]]);
683       glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
684       glVertex3d(xv[koi[koffs[i]+9]],yv[koi[koffs[i]+9]],zv[koi[koffs[i]+9]]);
685       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
686     glEnd();
687 
688     glBegin(GL_LINE_STRIP);
689       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
690       glVertex3d(xv[koi[koffs[i]+4]],yv[koi[koffs[i]+4]],zv[koi[koffs[i]+4]]);
691       glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
692       glVertex3d(xv[koi[koffs[i]+5]],yv[koi[koffs[i]+5]],zv[koi[koffs[i]+5]]);
693       glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
694       glVertex3d(xv[koi[koffs[i]+6]],yv[koi[koffs[i]+6]],zv[koi[koffs[i]+6]]);
695       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
696     glEnd();
697 
698     glBegin(GL_LINE_STRIP);
699       glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
700       glVertex3d(xv[koi[koffs[i]+7]],yv[koi[koffs[i]+7]],zv[koi[koffs[i]+7]]);
701       glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
702       glVertex3d(xv[koi[koffs[i]+5]],yv[koi[koffs[i]+5]],zv[koi[koffs[i]+5]]);
703       glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
704       glVertex3d(xv[koi[koffs[i]+8]],yv[koi[koffs[i]+8]],zv[koi[koffs[i]+8]]);
705       glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
706     glEnd();
707     }  /* Ende Tetraeder 16 */
708 
709 /*----------------------------------------------------------------------
710 * Tetraeder 17
711 *---------------------------------------------------------------------*/
712   if(ityp[i] == 17)
713     {
714     if(iflag)
715       {
716       glColor3f(elem_col[0],elem_col[1],elem_col[2]);
717       xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+1]]+
718             xv[koi[koffs[i]+2]]+xv[koi[koffs[i]+3]])*0.25;
719       yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+1]]+
720             yv[koi[koffs[i]+2]]+yv[koi[koffs[i]+3]])*0.25;
721       zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+1]]+
722             zv[koi[koffs[i]+2]]+zv[koi[koffs[i]+3]])*0.25;
723       glRasterPos3d(xla,yla,zla);
724       ltoa(i,cstring,10);
725       FontPuts(Font,cstring);
726       }
727 
728     glBegin(GL_LINE_STRIP);
729       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
730       glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
731       glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
732       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
733     glEnd();
734 
735     glBegin(GL_LINE_STRIP);
736       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
737       glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
738       glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
739       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
740     glEnd();
741 
742     glBegin(GL_LINE_STRIP);
743       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
744       glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
745       glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
746       glVertex3d(xv[koi[koffs[i]  ]],yv[koi[koffs[i]  ]],zv[koi[koffs[i]  ]]);
747     glEnd();
748 
749     glBegin(GL_LINE_STRIP);
750       glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
751       glVertex3d(xv[koi[koffs[i]+1]],yv[koi[koffs[i]+1]],zv[koi[koffs[i]+1]]);
752       glVertex3d(xv[koi[koffs[i]+2]],yv[koi[koffs[i]+2]],zv[koi[koffs[i]+2]]);
753       glVertex3d(xv[koi[koffs[i]+3]],yv[koi[koffs[i]+3]],zv[koi[koffs[i]+3]]);
754     glEnd();
755     }  /* Ende Tetraeder 17 */
756 
757 /*----------------------------------------------------------------------
758 * Hexaeder 10
759 *---------------------------------------------------------------------*/
760   if(ityp[i] == 10)
761     {
762     if(iflag)
763       {
764       glColor3f(elem_col[0],elem_col[1],elem_col[2]);
765       xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+7]])*0.5;
766       yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+7]])*0.5;
767       zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+7]])*0.5;
768       glRasterPos3d(xla,yla,zla);
769       ltoa(i,cstring,10);
770       FontPuts(Font,cstring);
771       }
772 
773     glBegin(GL_LINE_STRIP);
774       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
775       glVertex3d(xv[koi[koffs[i]+ 8]],yv[koi[koffs[i]+ 8]],zv[koi[koffs[i]+ 8]]);
776       glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
777       glVertex3d(xv[koi[koffs[i]+ 9]],yv[koi[koffs[i]+ 9]],zv[koi[koffs[i]+ 9]]);
778       glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
779       glVertex3d(xv[koi[koffs[i]+10]],yv[koi[koffs[i]+10]],zv[koi[koffs[i]+10]]);
780       glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
781       glVertex3d(xv[koi[koffs[i]+11]],yv[koi[koffs[i]+11]],zv[koi[koffs[i]+11]]);
782       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
783     glEnd();
784 
785     glBegin(GL_LINE_STRIP);
786       glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
787       glVertex3d(xv[koi[koffs[i]+12]],yv[koi[koffs[i]+12]],zv[koi[koffs[i]+12]]);
788       glVertex3d(xv[koi[koffs[i]+ 5]],yv[koi[koffs[i]+ 5]],zv[koi[koffs[i]+ 5]]);
789       glVertex3d(xv[koi[koffs[i]+13]],yv[koi[koffs[i]+13]],zv[koi[koffs[i]+13]]);
790       glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
791       glVertex3d(xv[koi[koffs[i]+14]],yv[koi[koffs[i]+14]],zv[koi[koffs[i]+14]]);
792       glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
793       glVertex3d(xv[koi[koffs[i]+15]],yv[koi[koffs[i]+15]],zv[koi[koffs[i]+15]]);
794       glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
795     glEnd();
796 
797     glBegin(GL_LINE_STRIP);
798       glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
799       glVertex3d(xv[koi[koffs[i]+16]],yv[koi[koffs[i]+16]],zv[koi[koffs[i]+16]]);
800       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
801     glEnd();
802 
803     glBegin(GL_LINE_STRIP);
804       glVertex3d(xv[koi[koffs[i]+ 5]],yv[koi[koffs[i]+ 5]],zv[koi[koffs[i]+ 5]]);
805       glVertex3d(xv[koi[koffs[i]+17]],yv[koi[koffs[i]+17]],zv[koi[koffs[i]+17]]);
806       glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
807     glEnd();
808 
809     glBegin(GL_LINE_STRIP);
810       glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
811       glVertex3d(xv[koi[koffs[i]+18]],yv[koi[koffs[i]+18]],zv[koi[koffs[i]+18]]);
812       glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
813     glEnd();
814 
815     glBegin(GL_LINE_STRIP);
816       glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
817       glVertex3d(xv[koi[koffs[i]+19]],yv[koi[koffs[i]+19]],zv[koi[koffs[i]+19]]);
818       glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
819     glEnd();
820     }  /* Ende Hexaeder 10 */
821 
822 /*----------------------------------------------------------------------
823 * Hexaeder 1
824 *---------------------------------------------------------------------*/
825   if(ityp[i] == 1)
826     {
827     if(iflag)
828       {
829       glColor3f(elem_col[0],elem_col[1],elem_col[2]);
830       xla= (xv[koi[koffs[i]]]+xv[koi[koffs[i]+6]])*0.5;
831       yla= (yv[koi[koffs[i]]]+yv[koi[koffs[i]+6]])*0.5;
832       zla= (zv[koi[koffs[i]]]+zv[koi[koffs[i]+6]])*0.5;
833       glRasterPos3d(xla,yla,zla);
834       ltoa(i,cstring,10);
835       FontPuts(Font,cstring);
836       }
837 
838     glBegin(GL_LINE_STRIP);
839       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
840       glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
841       glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
842       glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
843       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
844     glEnd();
845 
846     glBegin(GL_LINE_STRIP);
847       glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
848       glVertex3d(xv[koi[koffs[i]+ 5]],yv[koi[koffs[i]+ 5]],zv[koi[koffs[i]+ 5]]);
849       glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
850       glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
851       glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
852     glEnd();
853 
854     glBegin(GL_LINES);
855       glVertex3d(xv[koi[koffs[i]+ 4]],yv[koi[koffs[i]+ 4]],zv[koi[koffs[i]+ 4]]);
856       glVertex3d(xv[koi[koffs[i]   ]],yv[koi[koffs[i]   ]],zv[koi[koffs[i]   ]]);
857     glEnd();
858 
859     glBegin(GL_LINES);
860       glVertex3d(xv[koi[koffs[i]+ 5]],yv[koi[koffs[i]+ 5]],zv[koi[koffs[i]+ 5]]);
861       glVertex3d(xv[koi[koffs[i]+ 1]],yv[koi[koffs[i]+ 1]],zv[koi[koffs[i]+ 1]]);
862     glEnd();
863 
864     glBegin(GL_LINES);
865       glVertex3d(xv[koi[koffs[i]+ 6]],yv[koi[koffs[i]+ 6]],zv[koi[koffs[i]+ 6]]);
866       glVertex3d(xv[koi[koffs[i]+ 2]],yv[koi[koffs[i]+ 2]],zv[koi[koffs[i]+ 2]]);
867     glEnd();
868 
869     glBegin(GL_LINES);
870       glVertex3d(xv[koi[koffs[i]+ 7]],yv[koi[koffs[i]+ 7]],zv[koi[koffs[i]+ 7]]);
871       glVertex3d(xv[koi[koffs[i]+ 3]],yv[koi[koffs[i]+ 3]],zv[koi[koffs[i]+ 3]]);
872     glEnd();
873     }  /* Ende Hexaeder 10 */
874   }  /* Ende Schleife ueber alle Elemente */
875 return 0;
876 }
877 
878 /***********************************************************************
879 * fsrb88 zeichnet die Farbskala fuer die Randbedingungen
880 ***********************************************************************/
fsrb88(void)881 int fsrb88(void)
882 {
883 extern GLFONT      *Font;
884 
885 extern FR_DOUBLE   xm;
886 
887 extern GLfloat     rot[];
888 extern GLfloat     gruen[];
889 extern GLfloat     blau[];
890 
891 extern FR_INT4     LANG;
892 
893 extern int         if3d;
894 
895 char               cstring[80];
896 
897 /*----------------------------------------------------------------------
898 * fsrb88 zeichnet die Farbskala fuer die Randbedingungen
899 *---------------------------------------------------------------------*/
900 glColor3f(rot[1],gruen[1],blau[1]);
901 glRectd(xm+4,48.0,xm+12,40.0);
902 glColor3f(1.0f,0.5f,0.0f);
903 glRasterPos3d(xm+16,44.0,0.00);
904 if(LANG == 1) sprintf(cstring,"U1=UX=0 (Platten:UZ=0)");
905 if(LANG == 2) sprintf(cstring,"U1=UX=0 (Plates: UZ=0)");
906 FontPuts(Font,cstring);
907 
908 glColor3f(rot[2],gruen[2],blau[2]);
909 glRectd(xm+4,40.0,xm+12,32.0);
910 glColor3f(1.0f,0.5f,0.0f);
911 glRasterPos3d(xm+16,36.0,0.00);
912 if(LANG == 1) sprintf(cstring,"U2=UY=0 (Platten:RotX=0)");
913 if(LANG == 2) sprintf(cstring,"U2=UY=0 (Plates: RotX=0)");
914 FontPuts(Font,cstring);
915 
916 glColor3f(rot[3],gruen[3],blau[3]);
917 glRectd(xm+4,32.0,xm+12,24.0);
918 glColor3f(1.0f,0.5f,0.0f);
919 glRasterPos3d(xm+16,28.0,0.00);
920 if(LANG == 1) sprintf(cstring,"U3=UZ=0 (Platten:RotY=0)");
921 if(LANG == 2) sprintf(cstring,"U3=UZ=0 (Plates: RotY=0)");
922 FontPuts(Font,cstring);
923 
924 glColor3f(rot[4],gruen[4],blau[4]);
925 glRectd(xm+4,24.0,xm+12,16.0);
926 glColor3f(1.0f,0.5f,0.0f);
927 glRasterPos3d(xm+16,20.0,0.00);
928 if(LANG == 1) sprintf(cstring,"U4=RotX=0");
929 if(LANG == 2) sprintf(cstring,"U4=RotX=0");
930 FontPuts(Font,cstring);
931 
932 glColor3f(rot[5],gruen[5],blau[5]);
933 glRectd(xm+4,16.0,xm+12,8.0);
934 glColor3f(1.0f,0.5f,0.0f);
935 glRasterPos3d(xm+16,12.0,0.00);
936 if(LANG == 1) sprintf(cstring,"U5=RotY=0");
937 if(LANG == 2) sprintf(cstring,"U5=RotY=0");
938 FontPuts(Font,cstring);
939 
940 glColor3f(rot[6],gruen[6],blau[6]);
941 glRectd(xm+4,8.0,xm+12,0.0);
942 glColor3f(1.0f,0.5f,0.0f);
943 glRasterPos3d(xm+16,4.0,0.00);
944 if(LANG == 1) sprintf(cstring,"U6=RotZ=0");
945 if(LANG == 2) sprintf(cstring,"U6=RotZ=0");
946 FontPuts(Font,cstring);
947 
948 glColor3f(rot[7],gruen[7],blau[7]);
949 glRectd(xm+4,0.0,xm+12,-8.0);
950 glColor3f(1.0f,0.5f,0.0f);
951 glRasterPos3d(xm+16,-4.0,0.00);
952 if(LANG == 1) sprintf(cstring,"Verschiebungen gegeben");
953 if(LANG == 2) sprintf(cstring,"Displacements given");
954 FontPuts(Font,cstring);
955 
956 glColor3f(rot[8],gruen[8],blau[8]);
957 glRectd(xm+4,-8.0,xm+12,-16.0);
958 glColor3f(1.0f,0.5f,0.0f);
959 glRasterPos3d(xm+16,-12.0,0.00);
960 if(LANG == 1) sprintf(cstring,"Druck/Oberflaechenlasten");
961 if(LANG == 2) sprintf(cstring,"Surface/Pressure Loads");
962 FontPuts(Font,cstring);
963 
964 glColor3f(rot[9],gruen[9],blau[9]);
965 glRectd(xm+4,-16.0,xm+12,-24.0);
966 glColor3f(1.0f,0.5f,0.0f);
967 glRasterPos3d(xm+16,-20.0,0.00);
968 if(LANG == 1) sprintf(cstring,"Kraefte X");
969 if(LANG == 2) sprintf(cstring,"Forces X");
970 FontPuts(Font,cstring);
971 
972 glColor3f(rot[10],gruen[10],blau[10]);
973 glRectd(xm+4,-24.0,xm+12,-32.0);
974 glColor3f(1.0f,0.5f,0.0f);
975 glRasterPos3d(xm+16,-28.0,0.00);
976 if(LANG == 1) sprintf(cstring,"Kraefte Y");
977 if(LANG == 2) sprintf(cstring,"Forces Y");
978 FontPuts(Font,cstring);
979 
980 glColor3f(rot[11],gruen[11],blau[11]);
981 glRectd(xm+4,-32.0,xm+12,-40.0);
982 glColor3f(1.0f,0.5f,0.0f);
983 glRasterPos3d(xm+16,-36.0,0.00);
984 if(LANG == 1) sprintf(cstring,"Kraefte Z");
985 if(LANG == 2) sprintf(cstring,"Forces Z");
986 FontPuts(Font,cstring);
987 
988 return 0;
989 }
990