Flow123d
che_semchem.h
Go to the documentation of this file.
1 #ifndef BIGHEAD
2 #define BIGHEAD
3 /********************************************************************/
4 /* BIG-HEAD.H GEN-TRAN Verse 1.0 */
5 /********************************************************************/
6 #define DOS /* Prepinac DOS X UNIX */
7 #define VERB /* Upovidany vystup */
8 #define S_BOOL int
9 
10 #ifdef MAIN
11  #define EX
12 #else
13  #define EX extern
14 #endif
15 
16 #ifndef MAXPATH
17  #define MAXPATH 2048
18 #endif
19 #define MAX_POC_LATEK 200
20 #define MAX_POC_PARAM_SORPCE 5
21 #define ACCURACY 1e-12
22 
23 #define fnsplit _splitpath // ! Dressler 24.08.2001
24 #define fnmerge _makepath // ! Dressler 24.08.2001
25 #ifdef DOS
26  #include <dirent.h>
27 #endif
28 #include <stdlib.h> // ! Dressler 24.08.2001
29 #include <math.h>
30 #include <stdio.h>
31 #include <time.h>
32 #ifdef MAIN
33  #define EX
34 #else
35  #define EX extern
36 #endif
37 
38 /********************************************************************/
39 
40 // mh: kompiluju flow/tran
41 #define PROGRAM_TRAN
42 
43 /********************************************************************/
44 
45 #ifndef SKUPINY_MATERIALU
46  #define SKUPINY_MATERIALU
47 #endif //SKUPINY_MATERIALU
48 /*------------------------------------------------------------------*/
49 
50 #ifndef SKUPINA_SCENAR
51  #define SKUPINA_SCENAR
52 #endif // SKUPINA_SCENAR
53 /*------------------------------------------------------------------*/
54 
55 #ifndef SKUPINA_STENY
56  #define SKUPINA_STENY
57 #endif // SKUPINA_STENY
58 /*------------------------------------------------------------------*/
59 
60 #ifndef SKUPINA_RESICE
61  #define SKUPINA_RESICE
62 #endif // SKUPINA_RESICE
63 /*------------------------------------------------------------------*/
64 
65 #ifndef SKUPINA_TRANSPORT
66  #define SKUPINA_TRANSPORT
67 #endif // SKUPINA_TRANSPORT
68 /*------------------------------------------------------------------*/
69 
70 #ifndef SKUPINA_DUALPOROSITY
71  #define SKUPINA_DUALPOROSITY
72 #endif // SKUPINA_DUALPOROSITY
73 
74 /*------------------------------------------------------------------*/
75 
76 #ifndef SKUPINA_REAKCE
77  #define SKUPINA_REAKCE
78 #endif // SKUPINA_REAKCE
79 /********************************************************************/
80 #define MAXK1LM1 2 /* Max. pocet koeficientu v MELM */
81 #define MAXELKOEF 10 /* Max. pocet koeficientu v ELM */
82 #define MAXMATRKOEF 7 /* Max. pocet koef. v matr. */
83 #define MAXDPORKOEF 3 /* Max. pocet koef. v DUAL POROSITY */
84 /********************************************************************/
85 #define NLENSPO 16 /* Pocet znaku popisu slozky R + H */
86 #define NLENPVR 5 /* Maximalni delka popisu vrstev */
87 /********************************************************************/
88 #define RUN_OK 0
89 #define RUN_ERROR 1
90 /********************************************************************/
91 // mh: kompiluju flow/tran
92 #define PRG_NAME "tran"
93 /********************************************************************/
94 /********************************************************************/
95 /* Definice globalnich promennych */
96 /********************************************************************/
97 /* Vseobecne paramatry */
98 /********************************************************************/
99 EX int G_argc;
100 EX char **G_argv;
104 EX int NULA;
106 /*------------------------------------------------------------------*/
107 #ifdef SKUPINA_RESICE
109 #endif // SKUPINA_RESICE
110 /*------------------------------------------------------------------*/
111 #ifdef SKUPINA_CHEMIE
112 EX int G_cas_chemie;
113 #endif // SKUPINA_CHEMIE
114 /********************************************************************/
115 /* Seznam sousedu danych sten ( -1 = vnejsi stena ) */
116 /********************************************************************/
117 #ifdef SKUPINA_STENY
118  EX int *P_Steny;
119 #endif // SKUPINA_STENY
120 /********************************************************************/
121 /* Vektory pro ulozeni soustavy linearnich rovnic */
122 /********************************************************************/
123 #ifdef SKUPINA_RESICE
124  EX int *P_i, *P_j;
125  EX double *P_MM, *P_MR, *P_MX;
126 #endif // SKUPINA_RESICE
127 /********************************************************************/
128 /* Vektory pro ulozeni slozek pro transport */
129 /********************************************************************/
130 #ifdef SKUPINA_TRANSPORT
131  EX double *P_rslo;
132  EX double *P_rslo_new;
133  #ifdef SKUPINA_DUALPOROSITY
134  EX double *P_rslo_por;
135  #endif // SKUPINA_DUALPOROSITY
136  EX double *P_sod;
137 #endif // SKUPINA_TRANSPORT
138 /********************************************************************/
139 /* Definice datovych struktur */
140 /********************************************************************/
141 /* Globalni parametry modelu */
142 /********************************************************************/
143 struct S_glp
144 {
146 /*------------------------------------------------------------------*/
148 /*------------------------------------------------------------------*/
149  int nmuzl; /* pocet multiuzlu rovinnych */
150  int nuzl; /* pocet uzlu prostorovych */
151  int nmelm; /* pocet multielm rovinnych */
152  int nmkoef; /* pocet koeficientu pro MElm */
153  int nelm; /* pocet elementu prostorovych */
154  int nelm_0; /* pocet placatych elementu */
155  int nkoef; /* pocet koeficientu pro element */
156  int nsmume; /* pocet sousedu MU->ME */
157 /*------------------------------------------------------------------*/
158  int nstnex; /* pocet vnejsich sten */
159  int nstnin; /* pocet vnitrnich sten */
160 /*------------------------------------------------------------------*/
161  int nvrst; /* pocet vrstev v siti */
162 /*------------------------------------------------------------------*/
163  int nsez; /* pocet kroku scenare vypoctu */
164  int noke; /* pocet radku OKE */
165 /*------------------------------------------------------------------*/
166 #ifdef SKUPINY_MATERIALU
167  int nmatr; /* pocet skupin materialu */
168 #endif // SKUPINY_MATERIALU
169 /*------------------------------------------------------------------*/
170 #ifdef SKUPINA_DUALPOROSITY
171  S_BOOL sw_DP_apply; /* pocitat s dvoji porozitou */
172  int ndpor; /* pocet skupin DUAL_POROSITY */
173 #endif // SKUPINA_DUALPOROSITY
174 /*------------------------------------------------------------------*/
175 #ifdef SKUPINA_INTERTRANSFER
176  S_BOOL sw_CTR_apply; /* pocitat INTERTRANSFER */
177  int nctr; /* pocet skupin INTERTRANSFER */
178 #endif // SKUPINA_INTERTRANSFER
179 /*------------------------------------------------------------------*/
180 #ifdef SKUPINA_TRANSPORT
181  int nvod; /* pocet typu vod */
182 /*------------------------------------------------------------------*/
183  S_BOOL time_analysis; /* rozbor casoveho kroku */
184  S_BOOL quazi_unsteady; /* kvazi nestacionarni uloha */
185  S_BOOL write_waters; /* vypsat nalezene vody */
186 /*..................................................................*/
189 #ifdef SKUPINA_DUALPOROSITY
190  char jmeno_sini[ MAXPATH ]; // mh: zvlast POC pro slepe pory
191  char jmeno_spop[ MAXPATH ]; // mh: zvlast POP pro slepe pory
192 #endif // SKUPINA_DUALPOROSITY
193  int nrslo; /* pocet slozek Roztoku - POP */
194 /*..................................................................*/
195  int nrlimit; /* pocet limitu Roztoku */
196  char plimit[ NLENSPO +1 ]; /* popis limitni slozky Roztoku */
197  double *rlimit; /* hodnoty limitu Roztoku */
198  int irlimit; /* index limitni slozky Roztoku */
199 /*..................................................................*/
200  double Eps_Qs; /* Maximalni chyba bilance vnitrni steny */
201  double Eps_Qe; /* Maximalni chyba bilance Elementu */
202 #endif // SKUPINA_TRANSPORT
203 /*------------------------------------------------------------------*/
204 #ifdef SKUPINA_CHEMIE
205  S_BOOL sw_Chem_WriteSet; /* Vypsat nastaveni chemie 0-NE, 1-ano */
206  S_BOOL sw_Chem_Consist; /* Vyzadovat konzistenci 0-ne, 1-ANO */
207  char jmeno_chem_cfg[ MAXPATH ];
208  char jmeno_chem_err[ MAXPATH ];
209  TChemie *Chem_Chem;
210  TChemieBloku **Chem_Blok;
211  char jmeno_hini[ MAXPATH ];
212  char jmeno_hpop[ MAXPATH ];
213  int nhslo; /* pocet slozek Horniny - POP */
214  S_BOOL sw_kapalna; /* Pocita se s KAPALNOU fazi */
215  S_BOOL sw_pevna; /* Pocita se s PEVNOU fazi */
216  S_BOOL sw_plyn; /* Pocita se s PLYNNOU fazi */
217 // S_BOOL sw_sorpce; /* Pocita se s SORBOVANOU fazi */
218  S_BOOL sw_redox; /* Pocita se s REDOX fazi */
219  S_BOOL sw_radio; /* Pocita se s RADIO fazi */
220  S_BOOL sw_vlastnosti; /* Pocita se s VLASTNOSTMI */
221 #endif // SKUPINA_CHEMIE
222 /*------------------------------------------------------------------*/
223  int pis_log;
224 /*------------------------------------------------------------------*/
225  char sit_popis[ 80 ]; /* popis site */
226  float sit_alfa; /* uhel anizotropie */
227  int sit_nvrst; /* max. pocet vrstev site */
228 };
229 EX struct S_glp G_glp;
230 /********************************************************************/
231 /* Popis MultiElementu a Elementu ( soubor .STE ) */
232 /********************************************************************/
233 struct S_melm // multielement
234 {
235  int oznac; /* oznaceni Melementu < 0 zrusen */
236  int ipelm; /* inter. cislo prvniho elementu */
237  int npelm; /* pocet elementu v tomtom Melm */
238  int muzl[ 3 ]; /* interni cisla prirazenych Muzlu */
239  int ipz0[ 3 ]; /* poradove cislo startovni z-ovky */
240  float k1lm1[ MAXK1LM1 ]; /* koeficienty MElm */
241  int oblast; /* cislo oblasti obsahujici Melm */
242  int odv; /**/
243  int dov; /**/
244 /*------------------------------------------------------------------*/
245  double sumtok; /* souhrny prutok MELM do okoli */
246 };
247 EX struct S_melm *P_melm;
248 /********************************************************************/
249 struct S_elm // element
250 {
251  int imelm; /* interni cislo Multielementu */
252  int ivrst; /* cislo vrtvy */
253  int imatr; /* cislo materialu */
254  // sem je nactena hodnota z *.stm, je kopirovano do idpor (pro dvoji porozitu, jinak se nepouziva)
255  float koef[ MAXELKOEF ]; /* koeficienty elementu */
256 /*------------------------------------------------------------------*/
257 #ifdef SKUPINA_DUALPOROSITY
258  int idpor; /* index S_DPOR */
259 #endif // SKUPINA_DUALPOROSITY
260 /*------------------------------------------------------------------*/
261  double vyska; /* piezometricka vyska v T ELM */
262  double tlak; /* tlak v T ELM */
263  double stntlk[ 5 ]; /* tlak v T steny */
264  double stntok[ 5 ]; /* pretok stenou */
265  double bilance; /* bilance ELM */
266  int stnvod[ 6 ]; /* typ vody prochazejici stenou */
267 /*------------------------------------------------------------------*/
268  double objem; /* objem ELM */
269  double porobjm; /* porovy objem ELM */
270  double porobjm_por; /* porovy objem ELM poru */
271 /*------------------------------------------------------------------*/
272 #ifdef SKUPINA_TRANSPORT
273  double *rslo; /* koncentrace slozek roztoku */
274  double *rslonew; /* koncentrace slozek roztoku */
275  #ifdef SKUPINA_DUALPOROSITY
276  double *rslo_por; /* koncentrace slozek poroveho roztoku */
277  double *rslonew_por; /* koncentrace slozek poroveho roztoku */
278  #endif // SKUPINA_DUALPOROSITY
279 #endif // SKUPINA_TRANSPORT
280 /*------------------------------------------------------------------*/
281 #ifdef SKUPINA_CHEMIE
282  TChemieElementuD *Chem;
283  double *vslo; /* slozky vlastnost */
284  double *hslo; /* koncentrace slozek horniny */
285  double *pslo; /* koncentrace slozek plynny */
286  #ifdef SKUPINA_DUALPOROSITY
287  TChemieElementuD *Chem_por;
288  double *vslo_por; /* slozky porove vlastnost */
289  double *hslo_por; /* koncentrace slozek porove horniny */
290  double *pslo_por; /* koncentrace slozek porove plynny */
291  #endif // SKUPINA_DUALPOROSITY
292 #endif // SKUPINA_CHEMIE
293 /*------------------------------------------------------------------*/
294 #ifdef SKUPINA_REAKCE
295  double sorpcni_plocha; /* sorpcni plocha ELM poru */
296  double *hslo; /* koncentrace slozek horniny */
297 // double *sslo; /* koncentrace slozek sorbovano */
298  double *pslo; /* koncentrace slozek plynny */
299  #ifdef SKUPINA_DUALPOROSITY
300  double sorpcni_plocha_por; /* sorpcni plocha ELM porove horniny*/
301  double *hslo_por; /* koncentrace slozek porove horniny */
302 // double *sslo_por; /* koncentrace slozek porove sorbovano */
303  double *pslo_por; /* koncentrace slozek porove plynny */
304  #endif // SKUPINA_DUALPOROSITY
305 #endif // SKUPINA_REAKCE
306 /*------------------------------------------------------------------*/
307  double cas_koef;
309 };
310 EX struct S_elm *P_elm;
311 /********************************************************************/
312 /* Popis MultiUzlu a Uzlu ( soubor .STU ) */
313 /********************************************************************/
314 struct S_muzl
315 {
316  int oznac; /* oznaceni multiuzlu */
317  int ismelm; /* prvni sousedni multielem */
318  int nsmelm; /* pocet sousednich multielem */
319  int ipuzl; /* interni cislo prvniho uzlu */
320  int npuzl; /* pocet uzlu v multiuzlu */
321  double x, y; /* souradnice multiuzlu */
322  double z_povrch; /* Z-tova souradnice povrchu */
323  int odp; /**/
324  int dop; /**/
325 };
326 EX struct S_muzl *P_muzl;
327 /********************************************************************/
328 struct S_uzl
329 {
330  int imuzl; /* interni cislo MultiUzlu */
331  double z0; /* vyska daneho uzlu */
332 };
333 EX struct S_uzl *P_uzl;
334 /********************************************************************/
335 /* Popis sousednich MultiElm k danemu MultiUzl */
336 /********************************************************************/
337 struct S_smume
338 {
339  int muzl; /* multiuzel */
340  int melm; /* sousedni multielement */
341 };
343 /********************************************************************/
344 /* Popis typu cerpanych a vtlacenych vod */
345 /********************************************************************/
346 struct S_vod
347 {
348  int typ; /* typ vody */
349  char nazev[ 128 ]; /* nazev typu vody */
350 /*------------------------------------------------------------------*/
351  S_BOOL sw_OSM; /* Zapisovat hmotnosti vy. latek */
352  S_BOOL sw_OSC; /* Zapisovat koncentraci */
353 /*------------------------------------------------------------------*/
354 // Okamzite koncentrace
355  double *vrslo; /* koncentrace slozek vtlaceneho ROZTOKU */
356  double *crslo; /* koncentrace slozek cerpaneho ROZTOKU */
357 /*------------------------------------------------------------------*/
358 // Absolutni objemy a hmotnosti od casu NULA
359  double Cobjem; /* objem cerpane vody */
360  double *Chmota; /* hmotnost cerpanych slozek */
361  double Vobjem; /* objem vtlacene vody */
362  double *Vhmota; /* hmotnost vtlacenych slozek */
363 /*------------------------------------------------------------------*/
364 // Relativni objemy a hmotnosti od zacatku kroku TRAN
365  double CKobjem; /* objem cerpane vody */
366  double *CKhmota; /* hmotnost cerpanych slozek */
367  double VKobjem; /* objem vtlacene vody */
368  double *VKhmota; /* hmotnost vtlacenych slozek */
369 /*------------------------------------------------------------------*/
370 // Pracovni objemy a hmotnosti
371  double WCobjem; /* objem cerpane vody */
372  double *WChmota; /* hmotnost cerpanych slozek */
373  double WVobjem; /* objem vtlacene vody */
374  double *WVhmota; /* hmotnost vtlacenych slozek */
375 };
376 #ifdef SKUPINA_TRANSPORT
377 EX struct S_vod *P_vod;
378 #endif // SKUPINA_TRANSPORT
379 /********************************************************************/
380 /* Popis a obsah vrstev */
381 /********************************************************************/
382 struct S_pvr
383 {
384  char popis[ NLENPVR +1 ]; /* popis (oznaceni) vrstvy */
385  int ipslo; /* interni cislo prvni slozky */
386 };
387 EX struct S_pvr *P_pvr;
388 /********************************************************************/
389 /* Popis slozek Roztoku */
390 /********************************************************************/
391 struct S_rpo
392 {
393  char popis[ NLENSPO +1 ]; /* popis slozky Roztoku */
394  char unit[ 5 ]; /* jednotka slozky [g/l mg/l] */
395  int to_chem; /* ukazatel do vektoru chemie */
396 #ifdef SKUPINA_DUALPOROSITY
397  // mh:
398  double difus_koef_DP; /* relativni koef difuze pro dualni porozitu*/
399 #endif // SKUPINA_DUALPOROSITY
400 
401 /*------------------------------------------------------------------*/
402 };
403 #ifdef SKUPINA_TRANSPORT
404  EX struct S_rpo *P_rpo;
405 #endif // SKUPINA_TRANSPORT
406 /********************************************************************/
407 /* Popis slozek Horniny */
408 /********************************************************************/
409 struct S_hpo
410 {
411  char popis[ NLENSPO +1 ]; /* popis slozky Horniny */
412  char unit[ 4 ]; /* jednotka slozky [hm%] */
413  int to_chem; /* ukazatel do vektoru chemie */
414 /*------------------------------------------------------------------*/
415 };
416 #ifdef SKUPINA_CHEMIE
417  EX struct S_hpo *P_hpo;
418 #endif // SKUPINA_CHEMIE
419 /********************************************************************/
420 /* Seznam okrajovych podminek */
421 /********************************************************************/
422 struct S_sez
423 {
424  char fname[ MAXPATH ];
425  char txt[ 80 ]; /* Popis dane OKP */
426  int ipoke; /* interni cislo OKE */
427  int npoke; /* Pocet OKE */
428  double srazky; /* Destove srazky v mm . rok^-1 */
429  double dt; /* Casovy krok */
430  int NK_Flow; /* Pocet casovych kroku FLOW */
431 /*------------------------------------------------------------------*/
432 #ifdef SKUPINA_TRANSPORT
433  char iname[ MAXPATH ]; /* Jmeno INI souboru OKP */
434  int NK_Tran; /* Pocet casovych kroku TRAN */
435 #endif // SKUPINA_TRANSPORT
436 /*------------------------------------------------------------------*/
437 #ifdef SKUPINA_CHEMIE
438  int NK_Chem; /* Pocet casovych kroku CHEM */
439 #endif // SKUPINA_CHEMIE
440 /*------------------------------------------------------------------*/
441  int NK_Result; // pocet casovych kroku pro vystup do TS3 a BIN
442  int NK_sez; /* Pocet casovych kroku F_T_Ch */
443 };
444 #ifdef SKUPINA_SCENAR
445  EX struct S_sez *P_sez;
446 #endif // SKUPINA_SCENAR
447 /********************************************************************/
448 /* Popis okrajovych podminek - novy typ OKE */
449 /********************************************************************/
450 struct S_oke
451 {
452  int typ; /* typ okrajove podminky */
453  int ivoda; /* typ vody */
454  float hodnota_oke; /* zadana hodnota OKE */
455  float koeficient_oke; /* koeficient OKE */
456 /*------------------------------------------------------------------*/
457  int ie_od; /* interni cislo Elm (dolniho) */
458  int ie_do; /* interni cislo Elm (horniho) */
459  int iis; /* interni cislo steny */
460 /*------------------------------------------------------------------*/
461  int zapnuto; /* priznak zapnuti OKE */
462 };
463 #ifdef SKUPINA_SCENAR
464  EX struct S_oke *P_oke;
465 #endif // SKUPINA_SCENAR
466 /********************************************************************/
467 /* Popis typu materialu pro nenasycene proudeni (z INI souboru) */
468 /********************************************************************/
469 struct S_matr
470 {
471  int typ; /* typ materialu */
472  int funkce; /* funkce pro dany material */
473  double S_min; /* Minimalni saturace */
474  double Kr_min; /* Minimalni koef. rel. prop. */
475  int nkoef; /* pocet koef dane funkce */
476  double koef[ MAXMATRKOEF ]; /* koeficienty pro danou funkci */
477 };
478 #ifdef SKUPINY_MATERIALU
479  EX struct S_matr *P_matr;
480 #endif // SKUPINY_MATERIALU
481 /********************************************************************/
482 /* Popis typu materialu pro DUAL POROSITY (z INI souboru) */
483 /********************************************************************/
484 struct S_dpor
485 {
486  int typ; /* typ materialu */
487  int funkce; /* funkce pro dany material */
488  int nkoef; /* pocet koef. dane funkce */
489  double koef[ MAXDPORKOEF ]; /* koeficienty pro danou funkci */
490 };
491 #ifdef SKUPINA_DUALPOROSITY
492  EX struct S_dpor *P_dpor;
493 #endif // SKUPINA_DUALPOROSITY
494 /********************************************************************/
495 /* Popis prechodu pro INTERTRANSFER (z INI souboru) */
496 /********************************************************************/
497 struct S_ctr
498 {
499  int ivrst; /* index sledovane vrstvy */
500  int ikoef_melm; /* index prepocivaciho koef. */
501  double UP_hmota;
502  double DOWN_hmota;
503 };
504 #ifdef SKUPINA_INTERTRANSFER
505  EX struct S_ctr *P_ctr;
506 #endif // SKUPINA_INTERTRANSFER
507 //
508 /********************************************************************/
509 /* Definice funkci */
510 /********************************************************************/
511 /* Cteni vstupnich dat */
512 /********************************************************************/
513 void ctimmf( void ); /* Nacteni parametru ze souboru .INI */
514 void ctiuzl( void ); /* Nacteni uzlu ze souboru .UZL */
515 void ctielm( void ); /* Nacteni elementu ze souboru .ELM */
516 void ctistu( void ); /* Nacteni uzlu ze souboru .STU */
517 void ctiste( void ); /* Nacteni elementu ze souboru .STE */
518 void ctistm( void ); /* Nacteni koef. Elm ze souboru .STM */
519 void smume( void ); /* Vytvoreni struktury SMUME */
520 /*------------------------------------------------------------------*/
521 void ctihdm( int, int ); /* Nacteni souboru hydrodynamiky .HDM */
522 void nastav_slozky( void );
523 void uvolni_slozky( void );
524 void ctipop( int ); /* Nacteni pocatecnich podminek .POP */
525 /*------------------------------------------------------------------*/
526 void inicializace_S_vod( void );
527 void uvolneni_S_vod( void );
528 /*------------------------------------------------------------------*/
529 void sumace( double );
530 
531 //mh:
532 #ifdef SKUPINA_DUALPOROSITY
533  void init_DP_mater( void ); // nastaveni indexu materialu pro DP
534 #endif // SKUPINA_DUALPOROSITY
535 
536 /********************************************************************/
537 /* Zapis vystupnich dat */
538 /********************************************************************/
539 void pis_TS2( double ); /* Zapis souboru roztoku po vrst. .TS2 */
540 #ifdef SKUPINA_DUALPOROSITY
541  int pisTS34( int, int, double ); /* Zapis vysledku do .TS3 nebo .TS4 */
542  #else //SKUPINA_DUALPOROSITY
543  int pisTS34( int, double ); /* Zapis vysledku do .TS3 nebo .TS4 */
544 #endif // SKUPINA_DUALPOROSITY
545 int pisDF0( double, double, int ); /* Zapis vysledku do .DF0 */
546 int pisDF1( double, double, int ); /* Zapis vysledku do .DF1 */
547 int pisDF2( double, double, int ); /* Zapis vysledku do .DF2 */
548 // mh: (doplneno df3 na vystup koncentraci)
549 int pisDF3( double, double, int ); /* Zapis vysledku do .DF3 */
550 void otevri_bin( int );
551 void pis_bin( int, float * );
552 void zavri_bin( void );
553 int pisPOP(char*) ; // zapis POP z hodnot na konci vypoctu
554 /********************************************************************/
555 /* Pripravne vypocty */
556 /********************************************************************/
557 void *seznam_sten( int ); /* Vytvari seznam sousednich sten */
558 /********************************************************************/
559 /* Utility pro pripravne vypocty */
560 /********************************************************************/
561 int uzl_pro_elm( int, int ); /* vraci cislo uzlu pro ELM a iUZL */
562 int iuzl_pro_elm( int, int ); /* vraci iUZL pro ELM a UZL */
563 void buble_sort( int *, int ); /* Bublinove trideni */
564 /********************************************************************/
565 /* Vlastni vypocet */
566 /********************************************************************/
567 void vypocet( void ); /* Ridici program vypoctu */
568 void sestmat( void ); /* Sestaveni globalni matice */
569 void objemy( void ); /* vypocet objemu elementu */
570 void nej_spolky( int, int, int, int *, int * );
571 int caskrok( double ); /* vypocet casoveho kroku */
572 /********************************************************************/
573 /* Souborove UTILITY */
574 /********************************************************************/
575 char *fjmeno( char *, char * ); /* Cele jmenu souboru */
576 FILE *fotevri( char *, const char * ); /* Otevreni souboru */
577 int aktualnejsi_soubor( char *, char * );
578 /********************************************************************/
579 /* Behove UTILITY */
580 /********************************************************************/
581 void Start_programu( char * ); /* Pocatecni hlavicka programu */
582 void Konec_programu( char * ); /* Hlavicka ukonceni behu program */
583 void Prerus_program( char *, int ); /* Hlavicka ukonceni behu programu */
584 /********************************************************************/
585 /* Casove UTILITY */
586 /********************************************************************/
587 char *mezi_cas( int ); /* Vraci string - mezicas vypoctu */
588 /********************************************************************/
589 /* Pametove UTILITY */
590 /********************************************************************/
591 void malo_pameti( char *, char *, int ); /* Hlaska malo pameti */
592 void pole_je_male( int, char *, int, char * ); /* Hlaska male pole */
593 /********************************************************************/
594 /* Logovaci UTILITY */
595 /********************************************************************/
596 void smazlog( void );
597 void pislog( char *, ... );
598 void pisscr( char *, ... );
599 /********************************************************************/
600 /* Vystup na obrazovku pro TRANSPORT */
601 /********************************************************************/
602 void win_tran_START( char * );
603 void win_tran_STOP( void );
604 void pis_Tran( char *fmt, ... );
605 /*------------------------------------------------------------------*/
606 /* Testy */
607 /*------------------------------------------------------------------*/
608 void cesta_k_souboru_sestav( char *, char *, char * );
609 /********************************************************************/
610 /* UTILITY pro sledovani verzi */
611 /********************************************************************/
612 /*void main_verze( void );
613 void ctimmf_verze( struct S_verze * );
614 void vypocet_verze( struct S_verze * );
615 void df_file_verze( struct S_verze * );
616 void pisdf0_verze( struct S_verze * );
617 void pisdf1_verze( struct S_verze * );
618 void pisdf2_verze( struct S_verze * );
619 void s_vody_verze( struct S_verze * );
620 void caskrok_verze( struct S_verze * );
621 void win_tran_verze( struct S_verze * );
622 void slozky_verze( struct S_verze * );
623 */
624 /********************************************************************/
625 /* copied from che_head.h to simplify structure of inclusions */
626 /********************************************************************/
627 /* vim: set ts=3 sw=3 expandtab: */
628 
629 struct TS_prm //typedef struct
630 {
640  double T; //long long double
641  double TGf; //long long double
642  double Afi; //long double
643  double b; //long double
644  double epsilon; //long double
645  double omega; //long double
646  double deltaT; //long double
647  double objem; //long double
648  double splocha; //long double
650  int vypisy;
654 }; //TS_prm;
655 
656 struct TS_lat //typedef struct
657 {
658  char nazev[ 80 ]; /* Jmeno latky */
659  double m0; /* pocatecni molalita *///long double
660 // double m0_sorb; /* pocatecni obsah sorbovany *///long double
661  double m; /* konecna molalita *///long double
662 // double m_sorb; /* konecny obsah sorbovany *///long double
663  double M; /* molarni hmotnost *///long double
664  double dGf; /* prispevek ke Gibbsove energii *///long double
665  double dHf; /* prispevek k entalpii *///long double
666  int Q; /* naboj */
667  double aktivita; /* aktivita *///long double
668  int typ_sorpce; /* typ sorpce */
669  double param_sorpce[MAX_POC_PARAM_SORPCE];//long double
670 }; //TS_lat;
671 
672 struct TS_che //typedef struct
673 {
674  char nazev[ 80 ]; /* Jmeno reakce */
675  int stech_koef_p[MAX_POC_LATEK]; /* Stechiom.koef.slozek vpravo*/
676  double K; /*rovnovazna, nebo kineticka konstanta, nebo bilance*///long double
677  int typ_reakce; /* 0==rovnovazna, 1==kineticka, 2==bilancni, 3==pomala kinetika */
678  double exponent[MAX_POC_LATEK]; /* exponenty pro kinetiku*///long double
679  double zeta0; /*pocatecni posunuti reakce*///long double
680 }; //TS_che;
681 
682 //---------------------------------------------------------------------------
683 // Funkce z che_semchem.cpp
684 //---------------------------------------------------------------------------
685 void che_nactenichemie( void ); /* funkce nacteni chemie */
686 void ctiich (void); /*pomocna funkce nacteni chemie*/
687 
688 /********************************************************************/
689 /* copied from cti_ichnew.c to simplify structure of inclusions */
690 /********************************************************************/
691 
692 float che_poradi(int param1, double param2, double param3);
693 void ctiich_obecne(void);
694 void ctiich_latkyvefazi(void);
695 void ctiich_dalsilatky(void);
696 void ctiich_reakce(void);
697 float che_poradi (int typ_reakce, double max, double K);
698 void che_pocitej_soubor(char *soubor, int *poc_krok);
699 void che_presun_poc_p_(void);
700 
701 /********************************************************************/
702 /* copied from semchem_interface.hh to simplify structure of inclusions */
703 /********************************************************************/
704 void che_outpocp_soubor(FILE *fw);
705 void che_pocitej_soubor(char *soubor, int *poc_krok);
706 void che_vypis_soubor(char *soubor);
707 void che_presun_poc_p_(void);
708 void che_vypis__soubor(char *soubor);
709 
710 
711 #endif