1 /***********************************************************************
2 *
3 *               *****   ***    ***
4 *                  *   *   *  *   *
5 *                 *     ***    ***
6 *                *     *   *  *   *
7 *               *****   ***    ***
8 *
9 * A FREE Finite Elements Analysis Program in ANSI C for the Windows
10 * and UNIX OS.
11 *
12 * Composed and edited and copyright by
13 * Professor Dr.-Ing. Frank Rieg, University of Bayreuth, Germany
14 *
15 * eMail:
16 * frank.rieg@uni-bayreuth.de
17 * dr.frank.rieg@t-online.de
18 *
19 * V15.0 November 18, 2015
20 *
21 * This program is free software; you can redistribute it and/or modify
22 * it under the terms of the GNU General Public License as published by
23 * the Free Software Foundation; either version 2, or (at your option)
24 * any later version.
25 *
26 * This program is distributed in the hope that it will be useful,
27 * but WITHOUT ANY WARRANTY; without even the implied warranty of
28 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
29 * GNU General Public License for more details.
30 *
31 * You should have received a copy of the GNU General Public License
32 * along with this program; see the file COPYING.  If not, write to
33 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
34 ***********************************************************************/
35 /***********************************************************************
36 * z88r.h fuer UNIX und Windows
37 * 3.8.2011 Rieg
38 ***********************************************************************/
39 
40 /***********************************************************************
41 * Datentypen fuer Windows und UNIX
42 ***********************************************************************/
43 #ifdef FR_XINT
44 #define FR_INT4AY int *                /* Pointer auf int         */
45 #define FR_INT4 int                    /* int                     */
46 #define FR_CALLOC calloc               /* calloc                  */
47 #define FR_SIZERW size_t               /* Size fuer fread, fwrite */
48 #endif
49 
50 #ifdef FR_XLONG
51 #define FR_INT4AY long *               /* Pointer auf long        */
52 #define FR_INT4 long                   /* long                    */
53 #define FR_CALLOC calloc               /* calloc                  */
54 #define FR_SIZERW size_t               /* Size fuer fread, fwrite */
55 #endif
56 
57 #ifdef FR_XLOLO
58 #define FR_INT4AY long long *          /* Pointer auf long        */
59 #define FR_INT4 long long              /* long                    */
60 #define FR_CALLOC calloc               /* calloc                  */
61 #define FR_SIZERW size_t               /* Size fuer fread, fwrite */
62 #endif
63 
64 #ifdef FR_XDOUB
65 #define FR_SQRT sqrt                   /* sqrt                    */
66 #define FR_POW pow                     /* pow                     */
67 #define FR_FABS fabs                   /* fabs                    */
68 #define FR_SIN sin                     /* sin                     */
69 #define FR_COS cos                     /* cos                     */
70 #define FR_ACOS acos                   /* acos                    */
71 #define FR_ATAN atan                   /* atan                    */
72 #define FR_DOUBLEAY double *           /* Pointer auf double      */
73 #define FR_DOUBLE double               /* double                  */
74 #endif
75 
76 #ifdef FR_XQUAD
77 #define FR_SQRT sqrtl                  /* sqrtl                   */
78 #define FR_POW powl                    /* powl                    */
79 #define FR_FABS fabsl                  /* fabsl                   */
80 #define FR_SIN sinl                    /* sinl                    */
81 #define FR_COS cosl                    /* cosl                    */
82 #define FR_ACOS acosl                  /* acos                    */
83 #define FR_ATAN atanl                  /* atanl                   */
84 #define FR_DOUBLEAY long double *      /* Pointer auf long double */
85 #define FR_DOUBLE long double          /* long double             */
86 #endif
87 
88 #include <z88math.h>
89 
90 /***********************************************************************
91 * Daten
92 ***********************************************************************/
93 #define ICO_Z88R                      10
94 #define CUR_Z88R                      20
95 #define BMP_Z88R                      30
96 
97 /***********************************************************************
98 * Menue-IDs
99 ***********************************************************************/
100 #define IDM_WER                        100
101 #define IDM_XIT                        110
102 #define IDM_LINA                       120
103 #define IDM_TEST                       130
104 #define IDM_CHOLY                      140
105 #define IDM_SRSIC                      150
106 #define IDM_SRSOR                      160
107 #define IDM_GO                         170
108 
109 /***********************************************************************
110 * Toolbar-IDs
111 ***********************************************************************/
112 #define ITC_HELP                       200
113 #define ITC_XIT                        210
114 #define ITC_LINA                       220
115 #define ITC_TEST                       230
116 #define ITC_CHOLY                      240
117 #define ITC_SRSIC                      250
118 #define ITC_SRSOR                      260
119 #define ITC_GO                         270
120 
121 /***********************************************************************
122 * Alerts
123 ***********************************************************************/
124 #define AL_NOLOG 3000                  /* kein Z88R.LOG */
125 #define AL_NODYN 3010                  /* kein Z88.DYN */
126 #define AL_WRONGDYN 3020               /* Fehler in Z88.DYN */
127 #define AL_NOMEMY 3030                 /* nicht genug Memory */
128 #define AL_NOI1 3040                   /* Fehler Oeffnen z88i1.txt */
129 #define AL_NOI2 3050                   /* Fehler Oeffnen z88i2.txt */
130 #define AL_NOI5 3060                   /* Fehler Oeffnen z88i5.txt */
131 #define AL_NOO0 3070                   /* Fehler Oeffnen z88o0.txt */
132 #define AL_NOO1 3160                   /* Fehler Oeffnen z88o1.txt */
133 #define AL_NOO2 3170                   /* Fehler Oeffnen z88o2.txt */
134 #define AL_NOO3 3180                   /* Fehler Oeffnen z88o3.txt */
135 #define AL_NOO4 3190                   /* Fehler Oeffnen z88o4.txt */
136 #define AL_NOO5 3200                   /* Fehler Oeffnen z88o5.txt */
137 #define AL_NOO8 3210                   /* Fehler Oeffnen z88o8.txt */
138 #define AL_NOMAN 3220                  /* kein Z88MAN.TXT */
139 #define AL_WRONGMAN 3230               /* falsche Z88MANAGE.TXT */
140 #define AL_NOMAT 3240                  /* keine Z88MAT.TXT da */
141 #define AL_NOELP 3250                  /* keine Z88ELP.TXT da */
142 #define AL_NOINT 3260                  /* keine Z88INT.TXT da */
143 #define AL_NOMATCSV 3270               /* .CSV-File nicht gefunden */
144 #define AL_WRONDIM 3280                /* NDIM falsch */
145 #define AL_EXMAXK 3290                 /* zuviele Knoten */
146 #define AL_EXMAXE 3300                 /* zuviele Elemente */
147 #define AL_EXMAXKOI 3310               /* Koinzidenzvektor zu klein */
148 #define AL_EXMAXNFG 3320               /* zuviele Freiheitsgrade */
149 #define AL_EXMAXMAT 3330               /* zuviele Materialgesetze */
150 #define AL_EXMAXINT 3340               /* zuviele Integrationsgesetze */
151 #define AL_EXMAXPEL 3350               /* zuviele Elementparameter */
152 #define AL_EXMAXPR 3360                /* NOI zu klein */
153 #define AL_WROKFLAG 3370               /* KFLAG falsch */
154 #define AL_WROETYP 3380                /* falscher Elementtyp */
155 #define AL_EXGS 3390                   /* MAXGS exhausted */
156 #define AL_EXKOI 3400                  /* MAXKOI exhausted */
157 #define AL_EXMAXIEZ 3410               /* MAXIEZ exhausted */
158 #define AL_JACNEG 3420                 /* Jacobi-Determinate null/negativ */
159 #define AL_JACLOA 3430                 /* Jacobi-Determinate null/negativ */
160 #define AL_DIAGNULL 3440               /* Diagonalele null/negativ */
161 #define AL_WROCFLAG 3450               /* Steuerflag Z88R falsch */
162 #define AL_NOCFLAG 3460                /* kein Steuerflag Z88R */
163 #define AL_NOCI 3470                   /* Probleme bei NH und SG */
164 #define AL_NOACROBAT 3480              /* kein PDF-Viewer */
165 
166 /***********************************************************************
167 * Texte
168 ***********************************************************************/
169 #define TX_REAI1 4000                  /* Z88I1.TXT einlesen */
170 #define TX_REAI2 4010                  /* Z88I2.TXT einlesen */
171 #define TX_REAMAT 4020                 /* Z88MAT.TXT einlesen */
172 #define TX_REAMAN 4030                 /* Z88MAN.TXT einlesen */
173 #define TX_REAELP 4040                 /* Z88ELP.TXT einlesen */
174 #define TX_REAINT 4050                 /* Z88INT.TXT einlesen */
175 #define TX_REAI5 4060                  /* Z88I5.TXT einlesen */
176 #define TX_REAI2P2 4070                /* Z88I2.TXT zum 2.mal einlesen */
177 #define TX_WRIO0 4090                  /* Z88O0.TXT beschreiben */
178 #define TX_WRIO1 4100                  /* Z88O1.TXT beschreiben */
179 #define TX_WRIO2 4110                  /* Z88O2.TXT beschreiben */
180 #define TX_ELE 4120                    /* Element I */
181 #define TX_KOOR 4130                   /* Koordinaten einlesen */
182 #define TX_POLAR 4140                  /* Polarkoordinaten umr. */
183 #define TX_KOIN 4150                   /* Koinzidenz einlesen */
184 #define TX_Z88A 4160                   /* Start Z88A */
185 #define TX_Z88AI 4170                  /* Start Z88AI */
186 #define TX_EXITZ88A 4180               /* Ende Z88A */
187 #define TX_EXITZ88AI 4190              /* Ende Z88AI */
188 #define TX_GSERF 4200                  /* GS erfordert n */
189 #define TX_KOIERF 4210                 /* KOI erfordert n */
190 #define TX_GSSO 4220                   /* Pointer assembliert */
191 #define TX_Z88B 4230                   /* Start Z88BR */
192 #define TX_SUMMEMY 4240                /* Summe angeforderter Speicher */
193 #define TX_COMPI 4250                  /* Compilieren */
194 #define TX_Z88CC 4260                  /* Start Z88CR */
195 #define TX_ERBPA 4270                  /* Einarbeiten RB */
196 #define TX_SCAL88 4280                 /* Start SCAL88 */
197 #define TX_CHOY88 4290                 /* CHOY88 starten */
198 #define TX_SICCG88 4300                /* Start SICCG88 */
199 #define TX_SORCG88 4310                /* Start SORCG88 */
200 #define TX_NFG 4320                    /* Anzahl nfg */
201 #define TX_CHOJ 4330                   /* J = */
202 #define TX_JACOOK 4340                 /* Epsilon erreicht */
203 #define TX_JACONOTOK 4350              /* Epsilon nicht erreicht */
204 #define TX_ITERA 4360                  /* n-te Iteration */
205 #define TX_PART88 4370                 /* n-te partielle Cholesky-Z. */
206 #define TX_CR 4380                     /* neue Zeile */
207 #define TX_DYNMEMY 4390                /* Zusatzspeicher Z88AI */
208 #define TX_SPANNU 4400                 /* Spannungen */
209 #define TX_EXITZ88D 4410               /* Ende Z88DR */
210 #define TX_KNOTENK 4420                /* Knotenkraefte */
211 #define TX_EXITZ88E 4430               /* Ende Z88ER */
212 #define TX_VORW 4440                   /* Vorwaertseinsetzen */
213 #define TX_RUECKW 4450                 /* Vorwaertseinsetzen */
214 #define TX_IFNILI0 4460                /* ifnili = 0 : lineare Ber. */
215 #define TX_IFNILI9 4470                /* ifnili = 9 : Testmode */
216 #define TX_ICFLAG0 4480                /* ICFLAG = 0 : Cholesky */
217 #define TX_ICFLAG1 4490                /* ICFLAG = 1 : SICCG */
218 #define TX_ICFLAG2 4500                /* ICFLAG = 2 : SORCG */
219 #define TX_MEMORY 4510                 /* Hauptspeicher fuer Solver */
220 #define TX_EGES 4520                   /* Einlesen E-Gesetze */
221 #define TX_NONZ 4530                   /* Elemente in IJ entdeckt */
222 #define TX_FORMA 4540                  /* Formatieren */
223 
224 
225 /***********************************************************************
226 * LOGs
227 ***********************************************************************/
228 #define LOG_OPENZ88DYN 5000            /* Oeffnen Z88.DYN */
229 #define LOG_NODYN 5010                 /* kann Z88.DYN nicht oeffnen */
230 #define LOG_WRONGDYN 5020              /* Z88.DYN nicht o.k. */
231 #define LOG_MAXIEZ 5030                /* MAXIEZ */
232 #define LOG_MAXGS 5040                 /* MAXGS */
233 #define LOG_MAXKOI 5050                /* MAXKOI */
234 #define LOG_MAXK 5060                  /* MAXK */
235 #define LOG_MAXE 5070                  /* MAXE */
236 #define LOG_MAXNFG 5080                /* MAXNFG */
237 #define LOG_MAXMAT 5090                /* MAXMAT */
238 #define LOG_MAXPEL 5100                /* MAXPEL */
239 #define LOG_MAXINT 5110                /* MAXINT */
240 #define LOG_MAXESM 5120                /* MAXESM */
241 #define LOG_MAXPR 5130                 /* MAXPR fuer NOI */
242 #define LOG_OKDYN 5140                 /* Z88.DYN scheint o.k. zu sein */
243 #define LOG_ALLOCMEMY 5150             /* Memory anlegen */
244 #define LOG_ARRAYNOTOK 5160            /* Memory Kennung I nicht o.k. */
245 #define LOG_ARRAYOK 5170               /* Memory Kennung I angelegt */
246 #define LOG_SUMMEMY 5180               /* Memory angefordert */
247 #define LOG_BRI188 5190                /* Start RI188R */
248 #define LOG_NOI1 5200                  /* kein Z88I1.TXT */
249 #define LOG_WRONGDIM 5210              /* ndim falsch */
250 #define LOG_EXMAXK 5220                /* MAXK ueberschritten */
251 #define LOG_EXMAXE 5230                /* MAXE ueberschritten */
252 #define LOG_EXMAXKOI 5240              /* Koinzidenzvektor zu klein */
253 #define LOG_EXMAXNFG 5250              /* MAXNFG ueberschritten */
254 #define LOG_EXMAXPR 5260               /* MAXPR ueberschritten */
255 #define LOG_WROKFLAG 5270              /* KFLAG falsch */
256 #define LOG_KOOR 5280                  /* Einlesen Koordinaten */
257 #define LOG_KOIN 5290                  /* Einlesen Koinzidenz */
258 #define LOG_EXITRI188 5300             /* Verlassen RI188R */
259 #define LOG_EXITRI588 5310             /* Verlassen RI588I */
260 #define LOG_BWRIA88F 5320              /* Start WRIA88R */
261 #define LOG_GSERF 5330                 /* GS erforderlich */
262 #define LOG_KOIERF 5340                /* KOI erforderlich */
263 #define LOG_EXITWRIA88F 5350           /* Verlassen WRIA88R */
264 #define LOG_Z88A 5360                  /* Start Z88A */
265 #define LOG_Z88AI 5370                 /* Start Z88AI */
266 #define LOG_WROETYP 5380               /* falscher Elementtyp */
267 #define LOG_EXITZ88A 5390              /* Verlassen Z88A */
268 #define LOG_EXITZ88AI 5400             /* Verlassen Z88AI */
269 #define LOG_Z88B 5410                  /* Start Z88BR */
270 #define LOG_EXGS 5420                  /* MAXGS ueberschritten */
271 #define LOG_EXKOI 5430                 /* MAXKOI ueberschritten */
272 #define LOG_EXMAXIEZ 5440              /* MAXIEZ ueberschritten */
273 #define LOG_COMPI 5450                 /* Compilation */
274 #define LOG_EXITZ88B 5460              /* Verlassen Z88BR */
275 #define LOG_Z88CC 5470                 /* Start Z88CR */
276 #define LOG_NOI2 5480                  /* kein Z88I2.TXT */
277 #define LOG_NOI5 5490                  /* kein Z88I5.TXT */
278 #define LOG_BRI588 5500                /* Start RI588I */
279 #define LOG_NOO1 5510                  /* kein Z88O1.TXT */
280 #define LOG_NOO2 5520                  /* kein Z88O2.TXT */
281 #define LOG_REAI2 5530                 /* Einlesen Z88I2.TXT */
282 #define LOG_WRIO1 5540                 /* Beschreiben Z88O1.TXT */
283 #define LOG_ERBPA 5550                 /* Einarbeiten RB */
284 #define LOG_SCAL88 5560                /* Start SCAL88 */
285 #define LOG_CHOY88 5570                /* Start CHOY88 */
286 #define LOG_SICCG88 5580               /* Start SICCG88 */
287 #define LOG_SORCG88 5590               /* Start SORCG88 */
288 #define LOG_WRIO2 5600                 /* Beschreiben Z88O2.TXT */
289 #define LOG_EXITZ88CC 5610             /* Verlassen Z88CC */
290 #define LOG_VORW 5620                  /* Vorwaertseinsetzen */
291 #define LOG_RUECKW 5630                /* Rueckwaertseinsetzen */
292 #define LOG_DIAGNULL 5640              /* Diagonalelement <= 0 */
293 #define LOG_JACNEG 5650                /* Jacobi- Determinate <= 0 */
294 #define LOG_JACLOA 5660                /* Jacobi- Determinate <= 0 */
295 #define LOG_CFLAG0 5670                /* ICFLAG = 0: Cholesky */
296 #define LOG_CFLAG1 5680                /* ICFLAG = 1: SICCG */
297 #define LOG_CFLAG2 5690                /* ICFLAG = 2: SORCG */
298 #define LOG_MAXIT 5700                 /* max. Anzahl von Iterationen */
299 #define LOG_CFLAGS 5710                /* gewaehlter Mode */
300 
301 #define LOG_ITERA 5720                 /* Anzahl Iterationen */
302 #define LOG_NOO3 5730                  /* kein Z88O3.TXT */
303 #define LOG_NOO4 5740                  /* kein Z88O4.TXT */
304 #define LOG_NOO5 5750                  /* kein Z88O5.TXT */
305 #define LOG_NOO8 5760                  /* kein Z88O8.TXT */
306 #define LOG_SPANNU 5770                /* Spannungen */
307 #define LOG_NOCI 5780                  /* Probleme bei NH und SG */
308 #define LOG_EXITZ88D 5790              /* Ende Z88DR */
309 #define LOG_KNOTENK 5800               /* Knotenkraefte */
310 #define LOG_EXITZ88E 5810              /* Ende Z88ER */
311 #define LOG_EXITDYN88J 5820            /* Ende DYN88R */
312 #define LOG_NOO0 5830                  /* Z88O0.TXT */
313 #define LOG_WRIO0 5840                 /* Fehler bei Z88O0.TXT */
314 #define LOG_BZ88D 5850                 /* Start Z88DR */
315 #define LOG_BZ88E 5860                 /* Start Z88ER */
316 #define LOG_MEMORY 5870                /* Hauptspeicher fuer Solver */
317 #define LOG_NOMAN 5880                 /* kein Z88MAN.TXT */
318 #define LOG_WRONGMAN 5890              /* falsche Z88MAN.TXT */
319 #define LOG_NOMAT 5900                 /* keine Z88MAT.TXT da */
320 #define LOG_NOELP 5910                 /* keine Z88ELP.TXT da */
321 #define LOG_NOINT 5920                 /* keine Z88INT.TXT da */
322 #define LOG_NOMATCSV 5930              /* .CSV-File nicht gefunden */
323 #define LOG_BZ88R 5940                 /* Start Z88R */
324 #define LOG_NOACROBAT 5950             /* kein PDF-Viewer */
325 
326 
327