1 #include "split.hpp" 2 using namespace std; 3 split(int n,stream * s1,stream ** s2)4split::split(int n, stream* s1, stream** s2) 5 { 6 nb_out=n; 7 in = s1; 8 out= s2; 9 success = true; 10 } 11 solve()12bool 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()44void 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