Flow123d  release_2.2.0-26-ge868538
che_read.cc
Go to the documentation of this file.
1 /*!
2  *
3  * Copyright (C) 2015 Technical University of Liberec. All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify it under
6  * the terms of the GNU General Public License version 3 as published by the
7  * Free Software Foundation. (http://www.gnu.org/licenses/gpl-3.0.en.html)
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12  *
13  *
14  * @file che_read.cc
15  * @brief
16  */
17 
18 #include "che_semchem.h"
19 #include "io/read_ini.h"
20 #include <cstring>
21 
22 extern struct TS_prm G_prm;
23 extern struct TS_lat *P_lat;
24 extern struct TS_che *P_che;
25 
26 // Cte CHEMIE-OBECNE ze souboru parametru .ich
27 void ctiich_obecne( void )
28 {
29  int i;
30  const char *section = "Semchem_module";
31  char buffer[ 1024 ];
32  char *pString;
33 
34  G_prm.pocet_latekvefazi = OptGetInt("Transport", "N_substances", NULL );
35  if (G_prm.pocet_latekvefazi < 1){
36  printf("\nNumber of aqueous species must be higher then 1.");
37  exit(133);
38  }
39 /*------------------------------------------------------------------*/
40  G_prm.T = OptGetDbl(section,"Temperature","0.0");
41  if ( G_prm.T <= 0.0 )
42  {
43  printf("\nTeplota musi byt kladna!");
44  exit(133);
45  }
46 /*------------------------------------------------------------------*/
47  G_prm.TGf = OptGetDbl(section,"Temperature_Gf","-1.0");
48  if ( G_prm.TGf == -1.0 )
49  {
50  G_prm.TGf = G_prm.T;
51  }
52  if ( G_prm.T <= 0.0 )
53  {
54  printf("\nTeplota pro zadani dGf musi byt kladna!");
55  exit(133);
56  }
57 /*------------------------------------------------------------------*/
58  G_prm.epsilon = OptGetDbl(section,"Epsilon","0.0");
59  if ( G_prm.epsilon<= 0.0 )
60  {
61  printf("\nEpsilon musi byt kladne!");
62  exit(133);
63  }
64 /*------------------------------------------------------------------*/
65  pString = strcpy(buffer,OptGetStr(section, "Error_norm_type", "Absolute"));
66  if ( pString == NULL )
67  {
68  printf("\nChybi typ normy!");
69  exit(133);
70  }
71  G_prm.abs_norma = -1;
72  if ( strcmp( buffer, "relative" ) == 0 ) G_prm.abs_norma = 0;
73  if ( strcmp( buffer, "Relative" ) == 0 ) G_prm.abs_norma = 0;
74  if ( strcmp( buffer, "rel" ) == 0 ) G_prm.abs_norma = 0;
75  if ( strcmp( buffer, "Rel" ) == 0 ) G_prm.abs_norma = 0;
76  if ( strcmp( buffer, "r" ) == 0 ) G_prm.abs_norma = 0;
77  if ( strcmp( buffer, "R" ) == 0 ) G_prm.abs_norma = 0;
78  if ( strcmp( buffer, "0" ) == 0 ) G_prm.abs_norma = 0;
79  if ( strcmp( buffer, "absolute" ) == 0 ) G_prm.abs_norma = 1;
80  if ( strcmp( buffer, "Absolute" ) == 0 ) G_prm.abs_norma = 1;
81  if ( strcmp( buffer, "abs" ) == 0 ) G_prm.abs_norma = 1;
82  if ( strcmp( buffer, "Abs" ) == 0 ) G_prm.abs_norma = 1;
83  if ( strcmp( buffer, "a" ) == 0 ) G_prm.abs_norma = 1;
84  if ( strcmp( buffer, "A" ) == 0 ) G_prm.abs_norma = 1;
85  if ( strcmp( buffer, "1" ) == 0 ) G_prm.abs_norma = 1;
86  if (G_prm.abs_norma == -1)
87  {
88  printf("\nTyp normy neni platny!");
89  exit(133);
90  }
91  G_prm.omega = 1.0;
92 /*------------------------------------------------------------------*/
93  pString = strcpy(buffer,OptGetStr(section,"Scaling","No"));
94  if ( pString == NULL )
95  {
96  printf("\nChybi definice skalovani!");
97  exit(133);
98  }
99  G_prm.skaluj_matici = -1;
100  if ( strcmp( buffer, "N" ) == 0 ) G_prm.skaluj_matici = 0;
101  if ( strcmp( buffer, "Ne" ) == 0 ) G_prm.skaluj_matici = 0;
102  if ( strcmp( buffer, "No" ) == 0 ) G_prm.skaluj_matici = 0;
103  if ( strcmp( buffer, "0" ) == 0 ) G_prm.skaluj_matici = 0;
104  if ( strcmp( buffer, "A" ) == 0 ) G_prm.skaluj_matici = 1;
105  if ( strcmp( buffer, "Ano" ) == 0 ) G_prm.skaluj_matici = 1;
106  if ( strcmp( buffer, "Y" ) == 0 ) G_prm.skaluj_matici = 1;
107  if ( strcmp( buffer, "Yes" ) == 0 ) G_prm.skaluj_matici = 1;
108  if ( strcmp( buffer, "1" ) == 0 ) G_prm.skaluj_matici = 1;
109  if (G_prm.skaluj_matici == -1)
110  {
111  printf("\nSkalovani matice neni platne!");
112  exit(133);
113  }
114 /*-----------------------------------------------*/
115  G_prm.Afi = OptGetDbl(section,"Param_Afi","-1.0");
116  if ( G_prm.Afi < 0.0 )
117  {
118  printf("\nAfi musi byt nezaporne!");
119  exit(133);
120  }
121 /*------------------------------------------------------------------*/
122  G_prm.b = OptGetDbl(section,"Param_b","0.0");
123  if ( G_prm.b <= 0.0 )
124  {
125  printf("\nb musi byt kladne!");
126  exit(133);
127  }
128 /*------------------------------------------------------------------*/
129  G_prm.cas_kroku = OptGetInt(section,"Time_steps","0");
130  if ( G_prm.cas_kroku <= 0 )
131  {
132  printf("\nPocet casovych kroku musi byt kladny!");
133  exit(133);
134  }
135 /*------------------------------------------------------------------*/
136  G_prm.vypisy = OptGetInt(section,"Output_precission","0");
137 /*------------------------------------------------------------------*/
138  i = OptGetInt(section, "Number_of_further_species","0");
139  if ( i < 0 )
140  {
141  printf("\nPocet dalsich latek nesmi byt zaporny!");
142  exit(133);
143  }
146  {
147  printf ("Celkovy pocet latek muze byt maximalne %d!\n", MAX_POC_LATEK);
148  exit(121);
149  }
150 /*------------------------------------------------------------------*/
151  G_prm.deleni_RK = OptGetInt(section,"Slow_kinetics_substeps","1");
152  if ( G_prm.deleni_RK < 1 )
153  {
154  printf("\nPocet kroku pomale kinetiky musi byt kladny!");
155  exit(133);
156  }
157 }
158 /********************************************************************/
159 /* Cte LATKY_VE_FAZI ze souboru parametru .ich */
160 /********************************************************************/
161 void ctiich_latkyvefazi( void )
162 {
163  char buffer[1024];
164  int j;
165  char nazev[30], *pom_buf;
166  const char *separators = " ,\t";
167 
168 // Alokace seznamu latek
169  P_lat = (TS_lat *)malloc( (G_prm.pocet_latek)*sizeof( TS_lat ) );
170  if ( P_lat == NULL )
171  {
172  printf ("Malo pameti!\n");
173  exit(0);
174  }
175 // Nacteni obsahu seznamu latek
176 /*-----------------------------------------------*/
177  sprintf( nazev, "Aqueous_species" );
178  {
179  for (j=0; j<G_prm.pocet_latekvefazi; j++)
180  {
181  strcpy(P_lat[j].nazev,"");
182  }
183  }
184 /*-----------------------------------------------*/
185  strcpy(buffer,OptGetStr(nazev,"dGf","<NeplatnyNazev>"));
186  pom_buf = strtok( buffer, separators );
187  if ( strcmp( buffer, "<NeplatnyNazev>" ) == 0 )
188  {
189  pom_buf = NULL;
190  }
191  for (j=0; j<G_prm.pocet_latekvefazi; j++)
192  {
193  if ( pom_buf == NULL )
194  {
195  printf("\nChybi dGf %d. latky ve fazi!", j+1);
196  exit(133);
197  }
198  P_lat[j].dGf = atof(pom_buf);
199  printf("\n P_lat[%d].dGf %f\n",j,P_lat[j].dGf);
200  pom_buf = strtok( NULL, separators );
201  }
202  if ( pom_buf != NULL )
203  {
204  printf("\nPrilis mnoho dGf pro latky ve fazi!");
205  exit(133);
206  }
207 /*-----------------------------------------------*/
208  strcpy(buffer,OptGetStr(nazev,"dHf","<NeplatnyNazev>"));
209  pom_buf = strtok( buffer, separators );
210  if ( strcmp( buffer, "<NeplatnyNazev>" ) == 0 )
211  {
212  for (j=0; j<G_prm.pocet_latekvefazi; j++)
213  {
214  P_lat[j].dHf = 0.0;
215  }
216  pom_buf = NULL;
217  }
218  else for (j=0; j<G_prm.pocet_latekvefazi; j++)
219  {
220  if ( pom_buf == NULL )
221  {
222  printf("\nChybi dHf %d. latky ve fazi!", j+1);
223  exit(133);
224  }
225  P_lat[j].dHf = atof(pom_buf);
226  pom_buf = strtok( NULL, separators );
227  }
228  if ( pom_buf != NULL )
229  {
230  printf("\nPrilis mnoho dHf pro latky ve fazi!");
231  exit(133);
232  }
233 /*-----------------------------------------------*/
234  strcpy(buffer,OptGetStr(nazev,"Molar_mass","<NeplatnyNazev>"));
235  pom_buf = strtok( buffer, separators );
236  if ( strcmp( buffer, "<NeplatnyNazev>" ) == 0 )
237  {
238  pom_buf = NULL;
239  }
240  for (j=0; j<G_prm.pocet_latekvefazi; j++)
241  {
242  if ( pom_buf == NULL )
243  {
244  printf("\nChybi molarni hmotnost %d. latky ve fazi!", j+1);
245  exit(133);
246  }
247  P_lat[j].M = atof(pom_buf);
248  pom_buf = strtok( NULL, separators );
249  }
250  if ( pom_buf != NULL )
251  {
252  printf("\nPrilis mnoho molarnich hmotnosti pro latky ve fazi!");
253  exit(133);
254  }
255 /*-----------------------------------------------*/
256  strcpy(buffer,OptGetStr(nazev,"El_charge","<NeplatnyNazev>"));
257  pom_buf = strtok( buffer, separators );
258  if ( strcmp( buffer, "<NeplatnyNazev>" ) == 0 )
259  {
260  pom_buf = NULL;
261  }
262  for (j=0; j<G_prm.pocet_latekvefazi; j++)
263  {
264  if ( pom_buf == NULL )
265  {
266  printf("\nChybi naboj %d. latky ve fazi!", j+1);
267  exit(133);
268  }
269  P_lat[j].Q = atoi(pom_buf);
270  pom_buf = strtok( NULL, separators );
271  }
272  if ( pom_buf != NULL )
273  {
274  printf("\nPrilis mnoho naboju pro latky ve fazi!");
275  exit(133);
276  }
277 /*-----------------------------------------------*/
278  for (j=0; j<G_prm.pocet_latekvefazi; j++)
279  {
280  P_lat[j].typ_sorpce = 0; //Sorption has been suppressed in semchem module.
281  }
282 /*-----------------------------------------------*/
283 }
284 // Cte DALSI_LATKY ze souboru parametru .ini
285 void ctiich_dalsilatky( void )
286 {
287  char buffer[1024];
288  int j;
289  char nazev[30], *pom_buf;
290  const char* separators = " ,\t";
291 
292  if (G_prm.pocet_latekvefazi == 0)
293  {
294  return;
295  }
296 // Nacteni obsahu seznamu latek
297  sprintf( nazev, "Further_species" );
298  strcpy(buffer,OptGetStr(nazev,"Specie_name","<NeplatnyNazev>"));
299  pom_buf = strtok( buffer, separators );
300  if ( strcmp( buffer, "<NeplatnyNazev>" ) == 0 )
301  {
303  {
304  sprintf( P_lat[j].nazev, "Dalsi_latka_%d", j+1-G_prm.pocet_latek );
305  }
306  }
307  else
308  {
310  {
311  if ( pom_buf == NULL )
312  {
313  printf("\nChybi nazev %d. dalsi latky!", j+1-G_prm.pocet_latek);
314  exit(133);
315  }
316  strcpy (P_lat[j].nazev, pom_buf);
317  pom_buf = strtok( NULL, separators );
318  }
319  if ( pom_buf != NULL )
320  {
321  printf("\nPrilis mnoho nazvu dalsich latek!");
322  exit(133);
323  }
324  }
325 /*-----------------------------------------------*/
326  strcpy(buffer,OptGetStr(nazev,"dGf","<NeplatnyNazev>"));
327  pom_buf = strtok( buffer, separators );
328  if ( strcmp( buffer, "<NeplatnyNazev>" ) == 0 )
329  {
330  pom_buf = NULL;
331  }
333  {
334  if ( pom_buf == NULL )
335  {
336  printf("\nChybi dGf %d. dalsi latky!", j+1-G_prm.pocet_latek);
337  exit(133);
338  }
339  P_lat[j].dGf = atof(pom_buf);
340  pom_buf = strtok( NULL, separators );
341  }
342  if ( pom_buf != NULL )
343  {
344  printf("\nPrilis mnoho dGf pro dalsi latky!");
345  exit(133);
346  }
347 /*-----------------------------------------------*/
348  strcpy(buffer,OptGetStr(nazev,"dHf","<NeplatnyNazev>"));
349  pom_buf = strtok( buffer, separators );
350  if ( strcmp( buffer, "<NeplatnyNazev>" ) == 0 )
351  {
353  {
354  P_lat[j].dHf = 0.0;
355  }
356  pom_buf = NULL;
357  }
358  else for (j=G_prm.pocet_latekvefazi;j<G_prm.pocet_latek; j++)
359  {
360  if ( pom_buf == NULL )
361  {
362  printf("\nChybi dHf %d. dalsi latky!", j+1-G_prm.pocet_latek);
363  exit(133);
364  }
365  P_lat[j].dHf = atof(pom_buf);
366  pom_buf = strtok( NULL, separators );
367  }
368  if ( pom_buf != NULL )
369  {
370  printf("\nPrilis mnoho dHf pro dalsi latky!");
371  exit(133);
372  }
373 /*-----------------------------------------------*/
374  strcpy(buffer,OptGetStr(nazev,"Molar_mass","<NeplatnyNazev>"));
375  pom_buf = strtok( buffer, separators );
376  if ( strcmp( buffer, "<NeplatnyNazev>" ) == 0 )
377  {
378  pom_buf = NULL;
379  }
381  {
382  if ( pom_buf == NULL )
383  {
384  printf("\nChybi molarni hmotnost %d. dalsi latky!", j+1-G_prm.pocet_latek);
385  exit(133);
386  }
387  P_lat[j].M = atof(pom_buf);
388  pom_buf = strtok( NULL, separators );
389  }
390  if ( pom_buf != NULL )
391  {
392  printf("\nPrilis mnoho molarnich hmotnosti pro dalsi latky!");
393  exit(133);
394  }
395 /*-----------------------------------------------*/
396  strcpy(buffer,OptGetStr(nazev,"Activity","<NeplatnyNazev>"));
397  pom_buf = strtok( buffer, separators );
398  if ( strcmp( buffer, "<NeplatnyNazev>" ) == 0 )
399  {
400  pom_buf = NULL;
401  }
403  {
404  if ( pom_buf == NULL )
405  {
406  printf("\nChybi aktivita %d. dalsi latky!", j+1-G_prm.pocet_latek);
407  exit(133);
408  }
409  P_lat[j].aktivita = atof(pom_buf);
410  pom_buf = strtok( NULL, separators );
411  }
412  if ( pom_buf != NULL )
413  {
414  printf("\nPrilis mnoho aktivit pro dalsi latky!");
415  exit(133);
416  }
417 }
418 
419 // Cte REAKCE ze souboru parametru .ich
420 void ctiich_reakce( void )
421 {
422  char buffer[1024];
423  int i,j;
424  char nazev[30], *pom_buf;
425  const char* separators = " ,\t";
426  TS_che pom_che;
427  double max_poloc_rozp;
428 
429 // Zjisteni delky seznamu reakci
430  for ( i = 1;; ++i )
431  {
432  sprintf( nazev, "Reaction_%d", i );
433  strcpy(buffer,OptGetStr(nazev,"Reaction_type","<NeplatnyNazev>")); printf("probehlo zjisteni typu reakce %d: %s\n",i, buffer);
434  if ( strcmp( buffer, "<NeplatnyNazev>" ) == 0 ) break;
435  }
437  if ( i==1 )
438  {
439  printf("\nNeni definovana zadna reakce!");
440  exit(133);
441  }
442 // Alokace seznamu reakci
443  P_che = (TS_che *)malloc( (G_prm.celkovy_pocet_reakci)*sizeof( TS_che ) );
444  if ( P_che == NULL )
445  {
446  printf ("Malo pameti!\n");
447  exit(0);
448  }
449 // Nacteni obsahu seznamu reakci
451  G_prm.pocet_rozpadu = 0;
452  G_prm.pocet_pom_kin = 0;
453  max_poloc_rozp = 0.0;
454  for (i=0; i<G_prm.celkovy_pocet_reakci; i++)
455  {
456  sprintf( nazev, "Reaction_%d", i+1 );
457  sprintf(P_che[i].nazev,"Reaction_%d",i+1);
458 /*-----------------------------------------------*/
459  strcpy(buffer,OptGetStr(nazev,"Reaction_type","<NeplatnyTyp>"));
460  pom_buf = strtok( buffer, separators );
461  P_che[i].typ_reakce = -888;
462  if ( strcmp( pom_buf, "Radioactive_decay" ) == 0 ) P_che[i].typ_reakce = 4;
463  if ( strcmp( pom_buf, "radioactive_decay" ) == 0 ) P_che[i].typ_reakce = 4;
464  if ( strcmp( pom_buf, "Decay" ) == 0 ) P_che[i].typ_reakce = 4;
465  if ( strcmp( pom_buf, "decay" ) == 0 ) P_che[i].typ_reakce = 4;
466  if ( strcmp( pom_buf, "RD" ) == 0 ) P_che[i].typ_reakce = 4;
467  if ( strcmp( pom_buf, "rd" ) == 0 ) P_che[i].typ_reakce = 4;
468  if ( strcmp( pom_buf, "4" ) == 0 ) P_che[i].typ_reakce = 4;
469  if ( strcmp( pom_buf, "Slow_kinetics" ) == 0 ) P_che[i].typ_reakce = 3;
470  if ( strcmp( pom_buf, "slow_kinetics" ) == 0 ) P_che[i].typ_reakce = 3;
471  if ( strcmp( pom_buf, "3" ) == 0 ) P_che[i].typ_reakce = 3;
472  if ( strcmp( pom_buf, "Kinetics" ) == 0 ) P_che[i].typ_reakce = 1;
473  if ( strcmp( pom_buf, "kinetics" ) == 0 ) P_che[i].typ_reakce = 1;
474  if ( strcmp( pom_buf, "1" ) == 0 ) P_che[i].typ_reakce = 1;
475  if ( strcmp( pom_buf, "Equilibrium" ) == 0 ) P_che[i].typ_reakce = 0;
476  if ( strcmp( pom_buf, "equilibrium" ) == 0 ) P_che[i].typ_reakce = 0;
477  if ( strcmp( pom_buf, "0" ) == 0 ) P_che[i].typ_reakce = 0;
478  if (P_che[i].typ_reakce == -888)
479  {
480  printf("\nThe type of reaction nr. %d is not valid!", i);
481  exit(133);
482  }
483  if (P_che[i].typ_reakce==0)
484  {
486  }
487  if (P_che[i].typ_reakce==1)
488  {
490  }
491  if (P_che[i].typ_reakce==3)
492  {
494  }
495  if (P_che[i].typ_reakce==4)
496  {
498  }
500 /*------------------------------------------------------------------*/
501  strcpy(buffer,OptGetStr(nazev,"Stoichiometry",""));
502  pom_buf = strtok( buffer, separators );
503  for (j = 0; j<G_prm.pocet_latek; j++)
504  {
505  if ( pom_buf == NULL )
506  {
507  printf("\nChybi %d. stechometricky koeficient v %d. rovnici!", j+1, i+1);
508  exit(133);
509  }
510  P_che[i].stech_koef_p[j] = atoi( pom_buf );
511  printf("\nP_che[%d].stech_koef_p[%d]: %d",i,j,P_che[i].stech_koef_p[j]);
512  pom_buf = strtok( NULL, separators );
513  }
514  if ( pom_buf != NULL )
515  {
516  printf("\nV %d. rovnici je prilis mnoho stechiometrickych koeficientu!", i+1);
517  exit(133);
518  }
519 /*------------------------------------------------------------------*/
520  if ((P_che[i].typ_reakce==1)||(P_che[i].typ_reakce==3))
521  {
522  P_che[i].K = OptGetDbl(nazev,"Kinetic_constant","0.0");
523  if(P_che[i].typ_reakce==1)printf("\nKineticka konstanta v %d. rovnici ma hodnotu %f", i+1, P_che[i].K);
524  if ( P_che[i].K <= 0.0 )
525  {
526  printf("\nKineticka konstanta v %d. rovnici neni kladna!", i+1);
527  exit(133);
528  }
529 /*------------------------------------------------------------------*/
530  strcpy(buffer,OptGetStr(nazev,"Order_of_reaction",""));
531  pom_buf = strtok( buffer, separators );
532  for (j = 0; j<G_prm.pocet_latek; j++)
533  {
534  if(j < G_prm.pocet_latekvefazi)
535  {
536  if( pom_buf == NULL )
537  {
538  printf("\nChybi %d. mocnina pro kinetiku %d. rovnice!", j+1, i+1);
539  exit(133);
540  }
541  P_che[i].exponent[j] = atof( pom_buf );
542  printf("\nP_che[%d].exponent[%d]: %f",i,j,P_che[i].exponent[j]);
543  pom_buf = strtok( NULL, separators );
544  }
545  }
546  if ( pom_buf != NULL )
547  {
548  printf("\nV %d. rovnici je prilis mnoho exponentu pro kinetiku!", i+1);
549  exit(133);
550  }
551  }
552 /*------------------------------------------------------------------*/
553  if (P_che[i].typ_reakce==0)
554  {
555  P_che[i].K = OptGetDbl(nazev, "Equilibrium_constant","-1.0");
556  }
557 /*------------------------------------------------------------------*/
558  }
560  {
561  for (j=0; j<G_prm.celkovy_pocet_reakci; j++)
562  {
563  for (i=0; i<G_prm.celkovy_pocet_reakci-1; i++)
564  {
565  if (che_poradi(P_che[i].typ_reakce,max_poloc_rozp,P_che[i].K) > che_poradi(P_che[i+1].typ_reakce,max_poloc_rozp,P_che[i+1].K))
566  {
567  pom_che = P_che[i];
568  P_che[i] = P_che[i+1];
569  P_che[i+1] = pom_che;
570  }
571  }
572  }
573  }
574 }
575 
576 // Cte soubor parametru chemie .ICH
577 void ctiich( void )
578 {
579  printf("Cteni parametru (%s): \n", G_prm.jmeno_ich );
580  ctiich_obecne(); printf("probehla funkce ctiich_obecne()\n");
581  ctiich_latkyvefazi(); printf("probehla funkce ctiich_latkyvefazi()\n");
582  ctiich_dalsilatky(); printf("probehla funkce ctiich_dalsilatky()\n");
583  ctiich_reakce(); printf("probehla funkce ctiich_reakce()\n");
584  printf("O.K.\n" );
585 }
double omega
Definition: che_semchem.h:645
#define MAX_POC_LATEK
Definition: che_semchem.h:36
double K
Definition: che_semchem.h:674
int pocet_kinetik
Definition: che_semchem.h:637
int pocet_latekvefazi
Definition: che_semchem.h:633
int skaluj_matici
Definition: che_semchem.h:652
void ctiich_reakce(void)
Definition: che_read.cc:420
int typ_reakce
Definition: che_semchem.h:675
struct TS_prm G_prm
void ctiich_obecne(void)
Definition: che_read.cc:27
struct TS_lat * P_lat
int cas_kroku
Definition: che_semchem.h:649
double epsilon
Definition: che_semchem.h:644
int pocet_pom_kin
Definition: che_semchem.h:638
int pocet_reakci_pro_matici
Definition: che_semchem.h:635
double b
Definition: che_semchem.h:643
int vypisy
Definition: che_semchem.h:650
double Afi
Definition: che_semchem.h:642
int pocet_rovnovah
Definition: che_semchem.h:636
double M
Definition: che_semchem.h:661
void ctiich_latkyvefazi(void)
Definition: che_read.cc:161
char nazev[80]
Definition: che_semchem.h:672
int celkovy_pocet_reakci
Definition: che_semchem.h:634
std::string sprintf(CStringRef format, ArgList args)
Definition: printf.h:457
double exponent[MAX_POC_LATEK]
Definition: che_semchem.h:676
double dGf
Definition: che_semchem.h:662
struct TS_che * P_che
double aktivita
Definition: che_semchem.h:665
double T
Definition: che_semchem.h:640
long int OptGetInt(const char *section, const char *key, const char *defval)
Definition: read_ini.cc:288
double OptGetDbl(const char *section, const char *key, const char *defval)
Definition: read_ini.cc:306
int abs_norma
Definition: che_semchem.h:653
int pocet_latek
Definition: che_semchem.h:632
float che_poradi(int typ_reakce, double max, double K)
double TGf
Definition: che_semchem.h:641
char jmeno_ich[MAXPATH]
Definition: che_semchem.h:631
int pocet_rozpadu
Definition: che_semchem.h:639
void ctiich(void)
Definition: che_read.cc:577
double dHf
Definition: che_semchem.h:663
int deleni_RK
Definition: che_semchem.h:651
int typ_sorpce
Definition: che_semchem.h:666
int stech_koef_p[MAX_POC_LATEK]
Definition: che_semchem.h:673
void ctiich_dalsilatky(void)
Definition: che_read.cc:285
char * OptGetStr(const char *section, const char *key, const char *defval)
Create new string from selected variable from ini file.
Definition: read_ini.cc:251
void printf(BasicWriter< Char > &w, BasicCStringRef< Char > format, ArgList args)
Definition: printf.h:444