1 #include "split.hpp"
2 using namespace std;
3 
split(int n,stream * s1,stream ** s2)4 split::split(int n, stream* s1, stream** s2)
5 {
6   nb_out=n;
7   in = s1;
8   out= s2;
9   success = true;
10 }
11 
solve()12 bool split::solve()
13 {
14    tmp=0;
15    for (i=0;i<nb_out; i++) tmp+=frac[i];
16    if(fabs(1-tmp)<=EPS)
17    {
18       success = true;
19       for (i=0; i<nb_out;i++)
20       {
21          out[i]->m=0;
22          for (j=0;j<in->nb;j++)
23          {
24 
25 	   out[i]->chem[j]->m = frac[i]*in->chem[j]->m;
26 	   out[i]->m += out[i]->chem[j]->m;
27          }
28          out[i]->set(in->P, in->T);
29          // out[i]->write(); // TOTO
30       }
31    }
32    tmp=0; for(i=0;i<nb_out;i++) tmp+=out[i]->m;
33    if(fabs(tmp-in->m)>EPS)
34    {
35 //       logf.open(MESSAGES, ios::app);
36 //       logf<<"   --> Warning <--  Block "<<name<<" is not in mass balance ("<<fabs(tmp-in->m)/tmp<<").\n";
37 //       logf.close();
38       success = false;
39    }
40    else success = true;
41    return success;
42 }
43 
write()44 void split::write()
45 {
46   cout << "WRITE FILE " << RUNTIME << name << ".unit" << " :\n\tBEGIN\n";
47   cout <<"\t>>         "<<name;
48   cout << endl<<"\t>>           stream in: "<<in->name;;
49   cout<<endl<<"\t>>           streams out: "<<setprecision(3);
50   for ( i = 0 ; i < nb_out ; i++ )
51     cout << out[i]->name<<" ("<<frac[i]<<")  ";
52   cout << "\n\tEND\n\n";
53 }
54