Flow123d  jenkins-Flow123d-windows32-release-multijob-28
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
int oblast
Definition: che_semchem.h:241
double Cobjem
Definition: che_semchem.h:359
int oznac
Definition: che_semchem.h:316
double * hslo_por
Definition: che_semchem.h:301
void win_tran_STOP(void)
int ipelm
Definition: che_semchem.h:236
double * rslonew
Definition: che_semchem.h:274
void ctiich_reakce(void)
Definition: che_read.cc:403
double omega
Definition: che_semchem.h:645
char unit[4]
Definition: che_semchem.h:412
EX struct S_dpor * P_dpor
Definition: che_semchem.h:492
FILE * fotevri(char *, const char *)
int melm
Definition: che_semchem.h:340
double difus_koef_DP
Definition: che_semchem.h:398
#define MAX_POC_LATEK
Definition: che_semchem.h:19
double K
Definition: che_semchem.h:676
int pisDF1(double, double, int)
int pocet_kinetik
Definition: che_semchem.h:637
int ipuzl
Definition: che_semchem.h:319
int nsmelm
Definition: che_semchem.h:318
int muzl
Definition: che_semchem.h:339
char jmeno_spop[MAXPATH]
Definition: che_semchem.h:191
double porobjm_por
Definition: che_semchem.h:270
int odv
Definition: che_semchem.h:242
int pocet_latekvefazi
Definition: che_semchem.h:633
double * VKhmota
Definition: che_semchem.h:368
double * CKhmota
Definition: che_semchem.h:366
char plimit[NLENSPO+1]
Definition: che_semchem.h:196
EX int G_cas_resice
Definition: che_semchem.h:108
void che_vypis_soubor(char *soubor)
Definition: che_semchem.cc:25
int skaluj_matici
Definition: che_semchem.h:652
EX double * P_rslo_new
Definition: che_semchem.h:132
int typ
Definition: che_semchem.h:471
void smume(void)
void win_tran_START(char *)
#define MAXMATRKOEF
Definition: che_semchem.h:82
int muzl[3]
Definition: che_semchem.h:238
int pisDF2(double, double, int)
int ivrst
Definition: che_semchem.h:499
int imelm
Definition: che_semchem.h:251
#define MAXELKOEF
Definition: che_semchem.h:81
int typ
Definition: che_semchem.h:348
int stnvod[6]
Definition: che_semchem.h:266
void uvolni_slozky(void)
void smazlog(void)
EX char ** G_argv
Definition: che_semchem.h:100
int typ_reakce
Definition: che_semchem.h:677
int nkoef
Definition: che_semchem.h:475
S_BOOL sw_OSC
Definition: che_semchem.h:352
char jmeno_MMF[MAXPATH]
Definition: che_semchem.h:145
int typ
Definition: che_semchem.h:486
double Eps_Qs
Definition: che_semchem.h:200
void pisscr(char *,...)
int ie_od
Definition: che_semchem.h:457
char jmeno_site[MAXPATH]
Definition: che_semchem.h:147
int NK_sez
Definition: che_semchem.h:442
int pisDF0(double, double, int)
void ctiich_obecne(void)
Definition: che_read.cc:10
EX int G_argc
Definition: che_semchem.h:99
double WVobjem
Definition: che_semchem.h:373
double sorpcni_plocha_por
Definition: che_semchem.h:300
double z0
Definition: che_semchem.h:331
int dop
Definition: che_semchem.h:324
char jmeno_rpop[MAXPATH]
Definition: che_semchem.h:188
int npelm
Definition: che_semchem.h:237
int iis
Definition: che_semchem.h:459
#define MAX_POC_PARAM_SORPCE
Definition: che_semchem.h:20
void objemy(void)
int nmelm
Definition: che_semchem.h:151
void ctipop(int)
int nelm_0
Definition: che_semchem.h:154
S_BOOL sw_OSM
Definition: che_semchem.h:351
char txt[80]
Definition: che_semchem.h:425
EX struct S_melm * P_melm
Definition: che_semchem.h:247
EX struct S_uzl * P_uzl
Definition: che_semchem.h:333
char popis[NLENSPO+1]
Definition: che_semchem.h:411
char unit[5]
Definition: che_semchem.h:394
int cas_kroku
Definition: che_semchem.h:649
double * hslo
Definition: che_semchem.h:296
void uvolneni_S_vod(void)
double * rslo
Definition: che_semchem.h:273
void che_outpocp_soubor(FILE *fw)
Definition: che_semchem.cc:50
int funkce
Definition: che_semchem.h:487
EX struct S_elm * P_elm
Definition: che_semchem.h:310
char * fjmeno(char *, char *)
EX char * G_mezi_cas
Definition: che_semchem.h:103
void che_vypis__soubor(char *soubor)
Definition: che_semchem.cc:37
double y
Definition: che_semchem.h:321
#define MAXDPORKOEF
Definition: che_semchem.h:83
void ctiich_latkyvefazi(void)
Definition: che_read.cc:144
double deltaT
Definition: che_semchem.h:646
#define NLENSPO
Definition: che_semchem.h:85
int uzl_pro_elm(int, int)
EX int * P_j
Definition: che_semchem.h:124
void pislog(char *,...)
char * mezi_cas(int)
int nrslo
Definition: che_semchem.h:193
int ismelm
Definition: che_semchem.h:317
int iuzl_pro_elm(int, int)
int pisTS34(int, int, double)
double epsilon
Definition: che_semchem.h:644
int pocet_pom_kin
Definition: che_semchem.h:638
#define S_BOOL
Definition: che_semchem.h:8
int pocet_reakci_pro_matici
Definition: che_semchem.h:635
double tlak
Definition: che_semchem.h:262
double b
Definition: che_semchem.h:643
void ctielm(void)
void malo_pameti(char *, char *, int)
int ivrst
Definition: che_semchem.h:252
int vypisy
Definition: che_semchem.h:650
char nazev[128]
Definition: che_semchem.h:349
int npoke
Definition: che_semchem.h:427
double Afi
Definition: che_semchem.h:642
int oznac
Definition: che_semchem.h:235
void ctihdm(int, int)
EX struct S_smume * P_smume
Definition: che_semchem.h:342
char iname[MAXPATH]
Definition: che_semchem.h:433
int nvrst
Definition: che_semchem.h:161
EX int * P_i
Definition: che_semchem.h:124
int odp
Definition: che_semchem.h:323
float che_poradi(int param1, double param2, double param3)
#define MAXK1LM1
Definition: che_semchem.h:80
void otevri_bin(int)
EX char * G_Program_name
Definition: che_semchem.h:101
int pocet_rovnovah
Definition: che_semchem.h:636
char nazev[80]
Definition: che_semchem.h:658
EX struct S_vod * P_vod
Definition: che_semchem.h:377
int typ
Definition: che_semchem.h:452
double * crslo
Definition: che_semchem.h:356
EX struct S_matr * P_matr
Definition: che_semchem.h:479
S_BOOL quazi_unsteady
Definition: che_semchem.h:184
EX int G_exit_code
Definition: che_semchem.h:105
int pis_log
Definition: che_semchem.h:223
EX time_t G_start_time
Definition: che_semchem.h:102
void ctiich(void)
Definition: che_read.cc:561
double M
Definition: che_semchem.h:663
int nkoef
Definition: che_semchem.h:155
double * Vhmota
Definition: che_semchem.h:362
char nazev[80]
Definition: che_semchem.h:674
double dt
Definition: che_semchem.h:429
int npuzl
Definition: che_semchem.h:320
int ndpor
Definition: che_semchem.h:172
int nvod
Definition: che_semchem.h:181
void che_pocitej_soubor(char *soubor, int *poc_krok)
double * pslo
Definition: che_semchem.h:298
EX struct S_muzl * P_muzl
Definition: che_semchem.h:326
int nrlimit
Definition: che_semchem.h:195
double Eps_Qe
Definition: che_semchem.h:201
double * pslo_por
Definition: che_semchem.h:303
int imatr
Definition: che_semchem.h:253
int nuzl
Definition: che_semchem.h:150
int celkovy_pocet_reakci
Definition: che_semchem.h:634
void che_nactenichemie(void)
EX double * P_rslo
Definition: che_semchem.h:131
int pisDF3(double, double, int)
int noke
Definition: che_semchem.h:164
#define MAXPATH
Definition: che_semchem.h:17
int ivoda
Definition: che_semchem.h:453
EX struct S_oke * P_oke
Definition: che_semchem.h:464
double splocha
Definition: che_semchem.h:648
double exponent[MAX_POC_LATEK]
Definition: che_semchem.h:678
double dGf
Definition: che_semchem.h:664
void che_presun_poc_p_(void)
double Kr_min
Definition: che_semchem.h:474
double aktivita
Definition: che_semchem.h:667
double sorpcni_plocha
Definition: che_semchem.h:295
int to_chem
Definition: che_semchem.h:395
void Start_programu(char *)
int sit_nvrst
Definition: che_semchem.h:227
char popis[NLENSPO+1]
Definition: che_semchem.h:393
double * Chmota
Definition: che_semchem.h:360
int ipoke
Definition: che_semchem.h:426
double T
Definition: che_semchem.h:640
void pis_bin(int, float *)
int ipz0[3]
Definition: che_semchem.h:239
double x
Definition: che_semchem.h:321
double z_povrch
Definition: che_semchem.h:322
int nsmume
Definition: che_semchem.h:156
void Prerus_program(char *, int)
char fname[MAXPATH]
Definition: che_semchem.h:424
int aktualnejsi_soubor(char *, char *)
int nelm
Definition: che_semchem.h:153
double stntok[5]
Definition: che_semchem.h:264
EX double * P_MX
Definition: che_semchem.h:125
int abs_norma
Definition: che_semchem.h:653
int nmuzl
Definition: che_semchem.h:149
double WCobjem
Definition: che_semchem.h:371
int caskrok(double)
int nmatr
Definition: che_semchem.h:167
int funkce
Definition: che_semchem.h:472
int pocet_latek
Definition: che_semchem.h:632
float hodnota_oke
Definition: che_semchem.h:454
EX struct S_rpo * P_rpo
Definition: che_semchem.h:404
int idpor
Definition: che_semchem.h:258
S_BOOL cas_typ
Definition: che_semchem.h:308
EX struct S_pvr * P_pvr
Definition: che_semchem.h:387
void ctistm(void)
int imuzl
Definition: che_semchem.h:330
void inicializace_S_vod(void)
void sumace(double)
int NK_Result
Definition: che_semchem.h:441
double UP_hmota
Definition: che_semchem.h:501
int nkoef
Definition: che_semchem.h:488
void cesta_k_souboru_sestav(char *, char *, char *)
#define NLENPVR
Definition: che_semchem.h:86
double vyska
Definition: che_semchem.h:261
double sumtok
Definition: che_semchem.h:245
double stntlk[5]
Definition: che_semchem.h:263
void nej_spolky(int, int, int, int *, int *)
void Konec_programu(char *)
#define EX
Definition: che_semchem.h:35
double param_sorpce[MAX_POC_PARAM_SORPCE]
Definition: che_semchem.h:669
double * WVhmota
Definition: che_semchem.h:374
int nsez
Definition: che_semchem.h:163
double cas_koef
Definition: che_semchem.h:307
double m
Definition: che_semchem.h:661
int ipslo
Definition: che_semchem.h:385
void pis_TS2(double)
double objem
Definition: che_semchem.h:268
EX struct S_sez * P_sez
Definition: che_semchem.h:445
void pole_je_male(int, char *, int, char *)
char sit_popis[80]
Definition: che_semchem.h:225
EX double * P_MM
Definition: che_semchem.h:125
int nstnin
Definition: che_semchem.h:159
void zavri_bin(void)
int ie_do
Definition: che_semchem.h:458
EX double * P_rslo_por
Definition: che_semchem.h:134
char jmeno_sini[MAXPATH]
Definition: che_semchem.h:190
int dov
Definition: che_semchem.h:243
double * rlimit
Definition: che_semchem.h:197
double TGf
Definition: che_semchem.h:641
int NK_Tran
Definition: che_semchem.h:434
void ctiuzl(void)
EX int * P_Steny
Definition: che_semchem.h:118
int pisPOP(char *)
int zapnuto
Definition: che_semchem.h:461
void ctiste(void)
double * WChmota
Definition: che_semchem.h:372
EX double * P_MR
Definition: che_semchem.h:125
double zeta0
Definition: che_semchem.h:679
EX double * P_sod
Definition: che_semchem.h:136
int NK_Flow
Definition: che_semchem.h:430
char jmeno_ich[MAXPATH]
Definition: che_semchem.h:631
float koef[MAXELKOEF]
Definition: che_semchem.h:255
char popis[NLENPVR+1]
Definition: che_semchem.h:384
void * seznam_sten(int)
void nastav_slozky(void)
EX struct S_glp G_glp
Definition: che_semchem.h:229
int pocet_rozpadu
Definition: che_semchem.h:639
float k1lm1[MAXK1LM1]
Definition: che_semchem.h:240
double srazky
Definition: che_semchem.h:428
double dHf
Definition: che_semchem.h:665
double koef[MAXDPORKOEF]
Definition: che_semchem.h:489
char jmeno_rini[MAXPATH]
Definition: che_semchem.h:187
double porobjm
Definition: che_semchem.h:269
S_BOOL sw_DP_apply
Definition: che_semchem.h:171
double objem
Definition: che_semchem.h:647
void ctistu(void)
double DOWN_hmota
Definition: che_semchem.h:502
void ctimmf(void)
double m0
Definition: che_semchem.h:659
double bilance
Definition: che_semchem.h:265
int nstnex
Definition: che_semchem.h:158
float koeficient_oke
Definition: che_semchem.h:455
S_BOOL write_waters
Definition: che_semchem.h:185
void sestmat(void)
double * vrslo
Definition: che_semchem.h:355
void pis_Tran(char *fmt,...)
void init_DP_mater(void)
void buble_sort(int *, int)
double * rslo_por
Definition: che_semchem.h:276
EX int NULA
Definition: che_semchem.h:104
int to_chem
Definition: che_semchem.h:413
double S_min
Definition: che_semchem.h:473
void ctiich_dalsilatky(void)
Definition: che_read.cc:268
S_BOOL time_analysis
Definition: che_semchem.h:183
double Vobjem
Definition: che_semchem.h:361
int deleni_RK
Definition: che_semchem.h:651
int typ_sorpce
Definition: che_semchem.h:668
double koef[MAXMATRKOEF]
Definition: che_semchem.h:476
double CKobjem
Definition: che_semchem.h:365
EX int G_cas_rozhrani
Definition: che_semchem.h:108
double * rslonew_por
Definition: che_semchem.h:277
double VKobjem
Definition: che_semchem.h:367
float sit_alfa
Definition: che_semchem.h:226
int irlimit
Definition: che_semchem.h:198
int stech_koef_p[MAX_POC_LATEK]
Definition: che_semchem.h:675
int ikoef_melm
Definition: che_semchem.h:500
void vypocet(void)
int nmkoef
Definition: che_semchem.h:152