/*test the inverse functions on each other */ void test_lex_rank(){ int x; for(x = 0; x < 5040; x++){ if(lex_rank(inv_lex_rank(x)) != x){ printf("%d doesn't work\n", x); prar(inv_lex_rank(x)); fflush(stdout); } } }
/// Writing structure MULTI ( free format file ) void TMulti::to_text_file( const char *path, bool append ) { //static values char PAalp; char PSigm; #ifndef IPMGEMPLUGIN PAalp = TSyst::sm->GetSY()->PAalp; PSigm = TSyst::sm->GetSY()->PSigm; #else PAalp = PAalp_; PSigm = PSigm_; #endif ios::openmode mod = ios::out; if( append ) mod = ios::out|ios::app; fstream ff(path, mod ); ErrorIf( !ff.good() , path, "Fileopen error"); if( append ) ff << "\nNext record" << endl; ff << pm.stkey << endl; // TProfil::pm->pa.p.write(ff); TPrintArrays prar(0,0,ff); prar.writeArray( "Short_PARAM", &paTProfil->p.PC, 10L ); prar.writeArray( "Double_PARAM", &paTProfil->p.DG, 28L ); prar.writeArray( "Short_Const", &pm.N, 38L ); prar.writeArray( "Double_Const", &pm.TC, 55, 20 ); prar.writeArray( "EpsW", pm.epsW, 5); prar.writeArray( "EpsWg", pm.epsWg, 5); prar.writeArray( "DenW", pm.denW, 5); prar.writeArray( "DenWg", pm.denWg, 5); ff << endl << "Error Code " << pm.errorCode << endl; ff << "Error Message" << pm.errorBuf << endl; //dynamic values // Part 1 /* need always to alloc vectors */ prar.writeArray( "L1", pm.L1, pm.FI); prar.writeArray( "muk", pm.muk, pm.FI); prar.writeArray( "mui", pm.mui, pm.N); prar.writeArray( "muj", pm.muj, pm.L); prar.writeArray( "DUL", pm.DUL, pm.L); prar.writeArray( "DLL", pm.DLL, pm.L); prar.writeArray( "Vol", pm.Vol, pm.L); prar.writeArray( "Pparc", pm.Pparc, pm.L); prar.writeArray( "MM", pm.MM, pm.L); prar.writeArray( "Awt", pm.Awt, pm.N); prar.writeArray( "A", pm.A, pm.N*pm.L); prar.writeArray( "XFs", pm.XFs, pm.FI); prar.writeArray( "Falps", pm.Falps, pm.FI); prar.writeArray( "G", pm.G, pm.L); prar.writeArray( "G0", pm.G0, pm.L); prar.writeArray( "lnGam", pm.lnGam, pm.L); prar.writeArray( "lnGmo", pm.lnGmo, pm.L); prar.writeArray( "B", pm.B, pm.N); prar.writeArray( "U", pm.U, pm.N); prar.writeArray( "Uc", &pm.Uc[0][0], pm.N*2); prar.writeArray( "Uefd", pm.Uefd, pm.N); prar.writeArray( "U_r", pm.U_r, pm.N); prar.writeArray( "C", pm.C, pm.N); prar.writeArray( "XF", pm.XF, pm.FI); prar.writeArray( "YF", pm.YF, pm.FI); prar.writeArray( "Falp", pm.Falp, pm.FI); prar.writeArray( "X", pm.X, pm.L); prar.writeArray( "Y", pm.Y, pm.L); prar.writeArray( "XY", pm.XY, pm.L); prar.writeArray( "XU", pm.XU, pm.L); prar.writeArray( "MU", pm.MU, pm.L); prar.writeArray( "EMU", pm.EMU, pm.L); prar.writeArray( "NMU", pm.NMU, pm.L); prar.writeArray( "W", pm.W, pm.L); prar.writeArray( "F", pm.F, pm.L); prar.writeArray( "F0", pm.F0, pm.L); prar.writeArray( "YOF", pm.YOF, pm.FI); prar.writeArray( "lnGmM", pm.lnGmM, pm.L); prar.writeArray( "fDQF", pm.fDQF, pm.L); prar.writeArray( "FVOL", pm.FVOL, pm.FI); prar.writeArray( "FWGT", pm.FWGT, pm.FI); if( pm.L > 0 ) { prar.writeArray( "Y_la", pm.Y_la, pm.L); prar.writeArray( "Y_w", pm.Y_w, pm.L); prar.writeArray( "Fx", pm.Fx, pm.L); prar.writeArray( "Wx", pm.Wx, pm.L); prar.writeArray( "VL", pm.VL, pm.L); prar.writeArray( "Gamma", pm.Gamma, pm.L); prar.writeArray( "lnGmf", pm.lnGmf, pm.L); // prar.writeArray( "D", pm.D, pm.L); } // Part 2 not always required arrays if( pm.FIs > 0 && pm.Ls > 0 ) { prar.writeArray( "BF", pm.BF, pm.FIs*pm.N); prar.writeArray( "BFC", pm.BFC, pm.N); prar.writeArray( "XFA", pm.XFA, pm.FIs); prar.writeArray( "YFA", pm.YFA, pm.FIs); prar.writeArray( "LsMod", pm.LsMod, pm.FIs*3); prar.writeArray( "LsMdc", pm.LsMdc, pm.FIs*3); long int LsModSum; long int LsIPxSum; long int LsMdcSum; long int LsMsnSum; long int LsSitSum; getLsModsum( LsModSum, LsIPxSum ); getLsMdcsum( LsMdcSum,LsMsnSum, LsSitSum ); prar.writeArray( "IPxPH", pm.IPx, LsIPxSum); prar.writeArray( "PMc", pm.PMc, LsModSum); prar.writeArray( "DMc", pm.DMc, LsMdcSum); prar.writeArray( "MoiSN", pm.MoiSN, LsMsnSum); prar.writeArray( "SitFr", pm.SitFr, LsSitSum); prar.writeArray( "PUL", pm.PUL, pm.FIs); prar.writeArray( "PLL", pm.PLL, pm.FIs); } if( pm.LO > 1 ) { prar.writeArray( "Y_m", pm.Y_m, pm.L); prar.writeArray( "IC_m", pm.IC_m, pm.N); prar.writeArray( "IC_lm", pm.IC_lm, pm.N); prar.writeArray( "IC_wm", pm.IC_wm, pm.N); } // dispersed and sorption phases if( PAalp != S_OFF ) { prar.writeArray( "Aalp", pm.Aalp, pm.FI); prar.writeArray( "Xr0h0", &pm.Xr0h0[0][0], pm.FI*2); } if( PSigm != S_OFF ) prar.writeArray( "Sigw", pm.Sigw, pm.FI); if( PSigm != S_OFF ) prar.writeArray( "Sigg", pm.Sigg, pm.FI); if( pm.E ) { prar.writeArray( "EZ", pm.EZ, pm.L); prar.writeArray( "Xcond", pm.Xcond, pm.FI); prar.writeArray( "Xeps", pm.Xeps, pm.FI); } if( pm.FIat > 0 && /*pm.Lads > 0 &&Sveta 12/09/99*/ pm.FIs > 0 ) { /* ADSORPTION AND ION EXCHANGE */ prar.writeArray( "Nfsp", &pm.Nfsp[0][0], pm.FIs*pm.FIat); prar.writeArray( "MASDT", &pm.MASDT[0][0], pm.FIs*pm.FIat); prar.writeArray( "XcapA", &pm.XcapA[0][0], pm.FIs*pm.FIat); prar.writeArray( "XcapB", &pm.XcapB[0][0], pm.FIs*pm.FIat); prar.writeArray( "XcapD", &pm.XcapD[0][0], pm.FIs*pm.FIat); prar.writeArray( "XcapF", &pm.XcapF[0][0], pm.FIs*pm.FIat); prar.writeArray( "XdlA", &pm.XdlA[0][0], pm.FIs*pm.FIat); prar.writeArray( "XdlB", &pm.XdlB[0][0], pm.FIs*pm.FIat); prar.writeArray( "XdlD", &pm.XdlD[0][0], pm.FIs*pm.FIat); prar.writeArray( "XpsiA", &pm.XpsiA[0][0], pm.FIs*pm.FIat); prar.writeArray( "XpsiB", &pm.XpsiB[0][0], pm.FIs*pm.FIat); prar.writeArray( "XpsiD", &pm.XpsiD[0][0], pm.FIs*pm.FIat); prar.writeArray( "XlamA", &pm.XlamA[0][0], pm.FIs*pm.FIat); prar.writeArray( "Xetaf", &pm.Xetaf[0][0], pm.FIs*pm.FIat); prar.writeArray( "XetaA", &pm.XetaA[0][0], pm.FIs*pm.FIat); prar.writeArray( "XetaB", &pm.XetaB[0][0], pm.FIs*pm.FIat); prar.writeArray( "XetaD", &pm.XetaD[0][0], pm.FIs*pm.FIat); prar.writeArray( "XFTS", &pm.XFTS[0][0], pm.FIs*pm.FIat); prar.writeArray( "SATX", &pm.SATX[0][0], pm.Lads*4); // prar.writeArray( "MASDJ", pm.MASDJ, pm.Ls); prar.writeArray( "MASDJ", &pm.MASDJ[0][0], pm.Lads*DFCN); prar.writeArray( "lnSAC", &pm.lnSAC[0][0], pm.Lads*4); prar.writeArray( "D", &pm.D[0][0], MST*MST); } if( pm.PG > 0 ) { prar.writeArray( "Fug", pm.Fug, pm.PG); prar.writeArray( "Fug_l", pm.Fug_l, pm.PG); prar.writeArray( "Ppg_l", pm.Ppg_l, pm.PG); } // Part 3 if( pm.Ls > 1 && pm.FIs > 0 ) { prar.writeArray( "Wb", pm.Wb, pm.Ls); prar.writeArray( "Wabs", pm.Wabs, pm.Ls); prar.writeArray( "Rion", pm.Rion, pm.Ls); prar.writeArray( "Qp", pm.Qp, pm.FIs*QPSIZE); prar.writeArray( "Qd", pm.Qd, pm.FIs*QDSIZE); } if(pm.H0) prar.writeArray("H0",pm.H0, pm.L); if(pm.A0) prar.writeArray("A0",pm.A0, pm.L); if(pm.U0) prar.writeArray("U0",pm.U0, pm.L); if(pm.S0) prar.writeArray("S0",pm.S0, pm.L); if(pm.Cp0) prar.writeArray("Cp0",pm.Cp0, pm.L); prar.writeArray( "VPh", &pm.VPh[0][0], pm.FIs*MIXPHPROPS); prar.writeArray( "GPh", &pm.GPh[0][0], pm.FIs*MIXPHPROPS); prar.writeArray( "HPh", &pm.HPh[0][0], pm.FIs*MIXPHPROPS); prar.writeArray( "SPh", &pm.SPh[0][0], pm.FIs*MIXPHPROPS); prar.writeArray( "CPh", &pm.CPh[0][0], pm.FIs*MIXPHPROPS); prar.writeArray( "APh", &pm.APh[0][0], pm.FIs*MIXPHPROPS); prar.writeArray( "UPh", &pm.UPh[0][0], pm.FIs*MIXPHPROPS); }