Flow123d
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
flow123d
src
semchem
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
;
101
EX
char
*
G_Program_name
;
102
EX
time_t
G_start_time
;
103
EX
char
*
G_mezi_cas
;
104
EX
int
NULA
;
105
EX
int
G_exit_code
;
106
/*------------------------------------------------------------------*/
107
#ifdef SKUPINA_RESICE
108
EX
int
G_cas_resice
,
G_cas_rozhrani
;
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
{
145
char
jmeno_MMF
[
MAXPATH
];
146
/*------------------------------------------------------------------*/
147
char
jmeno_site
[
MAXPATH
];
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
/*..................................................................*/
187
char
jmeno_rini
[
MAXPATH
];
188
char
jmeno_rpop
[
MAXPATH
];
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
;
308
S_BOOL
cas_typ
;
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
};
342
EX
struct
S_smume
*
P_smume
;
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
{
631
char
jmeno_ich
[
MAXPATH
];
632
int
pocet_latek
;
633
int
pocet_latekvefazi
;
634
int
celkovy_pocet_reakci
;
635
int
pocet_reakci_pro_matici
;
636
int
pocet_rovnovah
;
637
int
pocet_kinetik
;
638
int
pocet_pom_kin
;
639
int
pocet_rozpadu
;
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
649
int
cas_kroku
;
650
int
vypisy
;
651
int
deleni_RK
;
652
int
skaluj_matici
;
653
int
abs_norma
;
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
Generated on Thu May 29 2014 23:14:49 for Flow123d by
1.8.4