示例#1
0
int DataManager::apParseSongPlay(char *pBuf, SongInfo *pSong)
{
    Json::Value value;
    bool ret;
    
    ret = apParseErrCode((const char*)pBuf, value);
    if(ret == false)
        return false;
    
    Json::Value url;
    Json::Value lrc;
    unsigned int i=0, j=2;
    
    url = value["url"];    
    lrc = value["lrc"];
    if(url[i].isNull()){
        fillValue(&pSong->location, "Unkonw", 6);
    }
    else
        fillValue(&pSong->location, url[i].asString().c_str(), url[i].asString().size());
    
    if(lrc[i][j].isNull()){
        fillValue(&pSong->lyric, "Unkonw", 6);
    }else  
        fillValue(&pSong->lyric,  lrc[i][j].asString().c_str(), lrc[i][j].asString().size());
    
    return true;
}
示例#2
0
int DataManager::apParseLovedRadios(char *pBuf, SongInfo *pSong)
{
    Json::Value value;
    bool ret;
    int size;
    
    ret = apParseErrCode((const char*)pBuf, value);
    if(ret == false)
        return false;
    
    Json::Value entries;    
    int i=0;
    
    entries = value["entries"];
    size = entries.size();
    retMyRadioNum = size;
    
    printf("apParseLovedRadios:: entries size=%d\n", size);
    for(i=0; i<size && i<XIAMI_MY_SONGS_PAGE; i++) 
   {
        strncpy(pSong->track_id, entries[i]["id"].asString().c_str(), 34);
        pSong->track_id[35] = '\0';
        fillValue(&pSong->album_title, entries[i]["name"].asString().c_str(), entries[i]["name"].asString().size());
        pSong++;
    }
    return true;
}
示例#3
0
int DataManager::apParseLovedSongs(char *pBuf, SongInfo *pSong)
{
    Json::Value value;
    bool ret;
    int size;
    
    ret = apParseErrCode((const char*)pBuf, value);
    if(ret == false)
        return false;
    
    Json::Value entries;
    Json::Value artist;
    Json::Value album;
    
    int i=0, j=0;
    
    entries = value["entries"];
    size = entries.size();
    retSongNum = size;
    
    printf("apParseLovedSongs:: entries size=%d\n", size);
    for(i=0; i<size && i<XIAMI_MY_SONGS_PAGE; i++)
    {
            strncpy(pSong->track_id, entries[i]["id"].asString().c_str(), 34);
            pSong->track_id[35] = '\0';
            fillValue(&pSong->name, entries[i]["name"].asString().c_str(), entries[i]["name"].asString().size());
            
            artist = entries[i]["artist"];
            if(artist.isNull())
                fillValue(&pSong->singers, "Unknow", 6);
            else
                fillValue(&pSong->singers, artist[j]["name"].asString().c_str(), artist[j]["name"].asString().size());
            
            album = entries[i]["album"];
            if(album["name"].isNull() )
                fillValue(&pSong->album_title, "unKnow", 6);
            else
                fillValue(&pSong->album_title,  album["name"].asString().c_str(), album["name"].asString().size());
            
            pSong++;
   }
    return true;
}
示例#4
0
        void parseLine(std::string line, Style& rStyle)
        {
            // Get left and right side
            std::string delimiter = "=";
            size_t pos = 0;

            if ((pos = line.find(delimiter)) == std::string::npos)
            {
                throwError(OperationNotifier::Operation::PARSING, "Following line could not be parsed: " + line, rStyle.filepath);
            }

            std::string left = line.substr(0, pos);
            line.erase(0, pos + delimiter.length());
            std::string right = line;

            // Get color out of right side
            glm::vec4 color = parseColor(right);

            // Fill it into style
            fillValue(rStyle, left, color);
        }
示例#5
0
/// Realloc dynamic memory
void TMulti::multi_realloc( char PAalp, char PSigm )
{
  long int ii, jj ;
   if( pm.N < 2 || pm.L < 2 || pm.FI < 1 )
        Error( GetName(), "pm.N < 2 || pm.L < 2 || pm.FI < 1" );

    // Part 1
     // need  always to alloc vectors
 pm.L1 = new long int[pm.FI];
 pm.muk = new long int[pm.FI];
 for( ii=0; ii<pm.FI; ii++)
 {   pm.L1[ii] = 0;
	 pm.muk[ii] = ii;
 }
 pm.mui = new long int[pm.N];
 for( ii=0; ii<pm.N; ii++)
   pm.mui[ii] = ii;
 pm.muj = new long int[pm.L];
 for( ii=0; ii<pm.L; ii++)
   pm.muj[ii] = ii;

 pm.DUL = new double[pm.L];
 pm.DLL = new double[pm.L];
 pm.Vol = new double[pm.L];
 pm.Pparc = new double[pm.L];
 pm.MM = new double[pm.L];
 pm.G = new double[pm.L];
 pm.G0 = new double[pm.L];
 pm.lnGam = new double[pm.L];
 pm.lnGmo = new double[pm.L];
 pm.X = new double[pm.L];
 pm.Y = new double[pm.L];
 pm.XY = new double[pm.L];
 pm.MU = new double[pm.L];
 pm.EMU = new double[pm.L];
 pm.NMU = new double[pm.L];
 pm.W = new double[pm.L];
 pm.F = new double[pm.L];
 pm.F0 = new double[pm.L];
 pm.RLC = new char[pm.L];
 pm.RSC = new char[pm.L];
 pm.DCC = new char[pm.L];
 pm.DCCW = new char[pm.L];
 pm.lnGmM = new double[pm.L];
 pm.fDQF = new double[pm.L]; //24
 for( ii=0; ii<pm.L; ii++ )
 {
	 pm.DUL[ii] = 1e6;
	 pm.DLL[ii] = 0.0;
	 pm.Vol[ii] = 0.0;
     pm.Pparc[ii] = 1.;
     pm.MM[ii] = 0.0;
     pm.G[ii] = 0.0;
     pm.G0[ii] = 0.0;
     pm.lnGam[ii] = 0.0;
     pm.lnGmo[ii] = 0.0;
     pm.X[ii] = 0.0;
     pm.Y[ii] = 0.0;
     pm.XY[ii] = 0.0;
     pm.MU[ii] = 0.0;
     pm.EMU[ii] = 0.0;
     pm.NMU[ii] = 0.0;
     pm.W[ii] = 0.0;
     pm.F[ii] = 0.0;
     pm.F0[ii] = 0.0;
     pm.RLC[ii] = 'B';
     pm.RSC[ii] = 'M';
     pm.DCC[ii] = 0;
     pm.DCCW[ii] = 0;
     pm.lnGmM[ii] = 0.0;
     pm.fDQF[ii] = 0.0;
 }

 pm.A = new double[pm.N*pm.L];
 for( ii=0; ii<pm.N*pm.L; ii++ )
	 pm.A[ii] = 0.0;

 pm.Awt = new double[pm.N];
 pm.B = new double[pm.N];
 pm.U = new double[pm.N];
 pm.U_r = new double[pm.N];
 pm.C = new double[pm.N];
 pm.ICC = new char[pm.N];  //6
 for( ii=0; ii<pm.N; ii++ )
 {
	 pm.Awt[ii] = 0.0;
	 pm.B[ii] = 0.0;
	 pm.U[ii] = 0.0;
	 pm.U_r[ii] = 0.0;
	 pm.C[ii] = 0.0;
	 pm.ICC[ii] = 0;
 }

 pm.XFs = new double[pm.FI];
 pm.Falps = new double[pm.FI];
 pm.XF = new double[pm.FI];
 pm.YF = new double[pm.FI];
 pm.Falp = new double[pm.FI];
 pm.YOF = new double[pm.FI];
 pm.PHC = new char[pm.FI];
 pm.FVOL = new double[pm.FI];
 pm.FWGT = new double[pm.FI]; //9
 for( ii=0; ii<pm.FI; ii++ )
 {
	 pm.XFs[ii] = 0.0;
	 pm.Falps[ii] = 0.0;
	 pm.XF[ii] = 0.0;
	 pm.YF[ii] = 0.0;
	 pm.Falp[ii] = 0.0;
	 pm.YOF[ii] = 0.0;
	 pm.PHC[ii] = 0;
	 pm.FVOL[ii] = 0.0;
	 pm.FWGT[ii] = 0.0;
 }

  pm.SB = new char[pm.N][MAXICNAME+MAXSYMB];
  pm.SB1 = new char[pm.N][MAXICNAME];
  for( ii=0; ii<pm.N; ii++)
  {
	  fillValue( pm.SB[ii], '\0', MAXICNAME+MAXSYMB);
	  fillValue( pm.SB1[ii], '\0', MAXICNAME);
  }
  pm.SF = new char[pm.FI][MAXPHNAME+MAXSYMB];
  pm.SFs = new char[pm.FI][MAXPHNAME+MAXSYMB];
  for( ii=0; ii<pm.FI; ii++)
  {
 	  fillValue( pm.SF[ii], '\0', MAXPHNAME+MAXSYMB);
 	  fillValue( pm.SFs[ii], '\0',MAXPHNAME+MAXSYMB);
   }
  pm.SM = new char[pm.L][MAXDCNAME];
  for( ii=0; ii<pm.L; ii++)
 	  fillValue( pm.SM[ii], '\0', MAXDCNAME);
  pm.SM2 = new char[pm.Ls][MAXDCNAME];
  for( ii=0; ii<pm.Ls; ii++)
 	  fillValue( pm.SM2[ii], '\0', MAXDCNAME);
  pm.SF2 = new char[pm.FIs][MAXPHNAME+MAXSYMB];
  for( ii=0; ii<pm.FIs; ii++)
 	  fillValue( pm.SF2[ii], '\0', MAXPHNAME+MAXSYMB);
  pm.dcMod = new char[pm.L][6];

 if( pm.L > 0 )
 {
   pm.Y_la = new double[pm.L];
   pm.Y_w = new double[pm.L];
   pm.Fx = new double[pm.L];
   pm.Wx = new double[pm.L];
   pm.VL = new double[pm.L];
   pm.Gamma = new double[pm.L];
   pm.lnGmf = new double[pm.L]; //7
pm.GamFs = new double[pm.L];
   for( ii=0; ii<pm.L; ii++ )
   {
	   pm.Y_la[ii] = 0.0;
	   pm.Y_w[ii] = 0.0;
	   pm.Fx[ii] = 0.0;
	   pm.Wx[ii] = 0.0;
	   pm.VL[ii] = 0.0;
	   pm.Gamma[ii] = 0.0;
	   pm.lnGmf[ii] = 0.0;
       pm.GamFs[ii] = 0.0;
   }
   //   pm.D = new double[pm.L];
 }
 else
 {
   pm.Y_la = 0;
   pm.Y_w = 0;
   pm.Fx = 0;
   pm.Wx = 0;
   pm.VL = 0;
   pm.Gamma = 0;
   pm.lnGmf = 0;
pm.GamFs = 0;
//   pm.D = 0;
 }

   // Part 2  not always required arrays

 if( pm.FIs > 0 && pm.Ls > 0 )
 {
   pm.BF = new double[pm.FIs*pm.N];
   for( ii=0; ii<pm.FIs*pm.N; ii++ )
	   pm.BF[ii] = 0.0;
   pm.BFC = new double[pm.N];
   for( ii=0; ii<pm.N; ii++ )
	   pm.BFC[ii] = 0.0;

   pm.XFA = new double[pm.FIs];
   pm.YFA = new double[pm.FIs];
   pm.LsMdc = new long int[pm.FIs*3];
   pm.PUL = new double[pm.FIs];
   pm.PLL = new double[pm.FIs]; //5
   for( ii=0; ii<pm.FIs; ii++ )
   {
	   pm.XFA[ii] = 0.0;
	   pm.YFA[ii] = 0.0;
           pm.PUL[ii] = 1e6;
	   pm.PLL[ii] = 0.0;
   }
   pm.IPx = 0;
   pm.PMc = 0;
   pm.DMc = 0;
   pm.MoiSN = 0;
   pm.SitFr = 0;
   pm.LsMod = new long int[pm.FIs*3];
   for( ii=0; ii<pm.FIs*3; ii++ )
   {
       pm.LsMod[ii] =0;
       pm.LsMdc[ii] = 0;
   }

   pm.sMod = new char[pm.FIs][6];
   pm.RFLC = new char[pm.FIs];
   pm.RFSC = new char[pm.FIs];
   for( ii=0; ii<pm.FIs; ii++)
   {
 	  fillValue( pm.sMod[ii], '\0', 6);
 	  pm.RFLC[ii] = 0;
      pm.RFSC[ii] = 0;
   }

 }
 else
 {
   pm.BF = 0;
   pm.BFC = 0;
   pm.XFA = 0;
   pm.YFA = 0;
   pm.LsMod = 0;
   pm.LsMdc = 0;
   pm.PMc = 0;
   pm.DMc = 0;
   pm.MoiSN = 0;
   pm.SitFr = 0;
   pm.PUL = 0;
   pm.PLL = 0;

   pm.sMod = 0;
   pm.RFLC = 0;
   pm.RFSC = 0;
 }

 if( pm.LO > 1 )
 {
   pm.Y_m = new double[pm.L];
   for( ii=0; ii<pm.L; ii++ )
	   pm.Y_m[ii] = 0.0;
   pm.IC_m = new double[pm.N];
   pm.IC_lm = new double[pm.N];
   pm.IC_wm = new double[pm.N];
   for( ii=0; ii<pm.N; ii++ )
   {
	   pm.IC_m[ii] = 0.0;
	   pm.IC_lm[ii] = 0.0;
	   pm.IC_wm[ii] = 0.0;
   }
 }
 else
 {
   pm.Y_m = 0;
   pm.IC_m = 0;
   pm.IC_lm = 0;
   pm.IC_wm = 0;
 }

 // dispersion and sorption phases
 if( PAalp != S_OFF )
 {
   pm.Aalp = new double[pm.FI];
   for( ii=0; ii<pm.FI; ii++ )
	   pm.Aalp[ii] = 0.0;
   pm.Xr0h0 = new double[pm.FI][2];
   for( ii=0; ii<pm.FI; ii++ )
	  pm.Xr0h0[ii][0] =  pm.Xr0h0[ii][1] = 0.0;
 }
 else
 {
   pm.Aalp = 0;
   pm.Xr0h0 = 0;
 }

 if( PSigm != S_OFF )
 {   pm.Sigw = new double[pm.FI];
     pm.Sigg = new double[pm.FI];
     for( ii=0; ii<pm.FI; ii++ )
     {
    	 pm.Sigw[ii] = 0.0;
    	 pm.Sigg[ii] = 0.0;
     }
 }
 else
 {   pm.Sigw = 0;
     pm.Sigg = 0;
 }

 if( pm.E )
 {
    pm.EZ = new double[pm.L];
    for( ii=0; ii<pm.L; ii++ )
    	pm.EZ[ii] = 0.0;
    pm.Xcond = new double[pm.FI];
    pm.Xeps = new double[pm.FI];
    for( ii=0; ii<pm.FI; ii++ )
    {
        pm.Xcond[ii] = 0.0;
        pm.Xeps[ii] = 0.0;
    }
 }
 else
 {
    pm.EZ = 0;
    pm.Xcond = 0;
    pm.Xeps = 0;
 }

 if( pm.FIat > 0 /*&& pm.Lads > 0*/ && pm.FIs > 0 )
 { // ADSORBTION AND ION IXCHANDG
   pm.SATX = new long int[pm.Lads][4];
   pm.MASDJ = new double[pm.Lads][DFCN];
   pm.lnSAC = new double[pm.Lads][4];
   for( ii=0; ii<pm.Lads; ii++ )
   {
	   pm.SATX[ii][0] = pm.SATX[ii][1] = pm.SATX[ii][2] = pm.SATX[ii][3] = 0;
	   pm.lnSAC[ii][0] = pm.lnSAC[ii][1] = pm.lnSAC[ii][2] = pm.lnSAC[ii][3] = 0.0;
	  for( jj=0; jj<MST; jj++ )
		  pm.MASDJ[ii][jj] = 0.0;
   }

   pm.SCM  = new char[pm.FIs][MST];
   pm.Nfsp = new double[pm.FIs][MST];
   pm.MASDT = new double[pm.FIs][MST];
   pm.XcapA = new double[pm.FIs][MST];
   pm.XcapB = new double[pm.FIs][MST];
   pm.XcapD = new double[pm.FIs][MST];
   pm.XcapF = new double[pm.FIs][MST];
   pm.XdlA = new double[pm.FIs][MST];
   pm.XdlB = new double[pm.FIs][MST];
   pm.XdlD = new double[pm.FIs][MST];
   pm.XpsiA = new double[pm.FIs][MST];
   pm.XpsiB = new double[pm.FIs][MST];
   pm.XpsiD = new double[pm.FIs][MST];
   pm.XlamA = new double[pm.FIs][MST];
   pm.Xetaf = new double[pm.FIs][MST];
   pm.XetaA = new double[pm.FIs][MST];
   pm.XetaB = new double[pm.FIs][MST];
   pm.XetaD = new double[pm.FIs][MST];
   pm.XFTS = new double[pm.FIs][MST];  //19
   for( ii=0; ii<pm.FIs; ii++ )
   	  for( jj=0; jj<MST; jj++ )
   	  {
   		  pm.SCM[ii][jj]  = 0;
	      pm.Nfsp[ii][jj] = 0.0;
	      pm.MASDT[ii][jj] = 0.0;
	      pm.XcapA[ii][jj] = 0.0;
	      pm.XcapB[ii][jj] = 0.0;
	      pm.XcapD[ii][jj] = 0.0;
	      pm.XcapF[ii][jj] = 0.0;
	      pm.XdlA[ii][jj] = 0.0;
	      pm.XdlB[ii][jj] = 0.0;
	      pm.XdlD[ii][jj] = 0.0;
	      pm.XpsiA[ii][jj] = 0.0;
	      pm.XpsiB[ii][jj] = 0.0;
	      pm.XpsiD[ii][jj] = 0.0;
	      pm.XlamA[ii][jj] = 0.0;
	      pm.Xetaf[ii][jj] = 0.0;
	      pm.XetaA[ii][jj] = 0.0;
	      pm.XetaB[ii][jj] = 0.0;
	      pm.XetaD[ii][jj] = 0.0;
	      pm.XFTS[ii][jj] = 0.0;
   	  }

  pm.SATT = new char[pm.Lads];
  pm.SM3 = new char[pm.Lads][MAXDCNAME];
  pm.DCC3 = new char[pm.Lads];
  for( ii=0; ii<pm.Lads; ii++)
  {
	  fillValue( pm.SM3[ii], '\0', MAXDCNAME);
	  pm.SATT[ii] = 0;
     pm.DCC3[ii] = 0;
  }

  pm.D = new double[MST][MST];
  for( ii=0; ii<MST; ii++ )
  	  for( jj=0; jj<MST; jj++ )
   	      pm.D[ii][jj] = 0.0;

 }
else
 { // ADSORPTION AND ION EXCHANGE
   pm.SCM  = 0;
    pm.Nfsp = 0;
    pm.MASDT = 0;
    pm.XcapA = 0;
    pm.XcapB = 0;
    pm.XcapD = 0;
    pm.XcapF = 0;
    pm.XdlA = 0;
    pm.XdlB = 0;
    pm.XdlD = 0;
    pm.XpsiA = 0;
    pm.XpsiB = 0;
    pm.XpsiD = 0;
    pm.XlamA = 0;
    pm.Xetaf = 0;
    pm.XetaA = 0;
    pm.XetaB = 0;
    pm.XetaD = 0;
    pm.MASDJ = 0;
    pm.XFTS = 0;
    pm.lnSAC = 0;
    pm.SATT = 0;
    pm.SM3 = 0;
    pm.DCC3 = 0;
    pm.D = 0;
 }

 if( pm.PG > 0 )
 {
  pm.Fug = new double[pm.PG];
  pm.Fug_l = new double[pm.PG];
  pm.Ppg_l = new double[pm.PG];
  for( ii=0; ii<pm.PG; ii++ )
  {
	  pm.Fug[ii] = 0.;
	  pm.Fug_l[ii] = 0.;
	  pm.Ppg_l[ii] = 0.;
  }
 }
else
 {
  pm.Fug = 0;
  pm.Fug_l = 0;
  pm.Ppg_l = 0;
 }

   // Part 3
 if( pm.Ls > 1 && pm.FIs > 0 )
 {
    pm.Wb = new double[pm.Ls];
    pm.Wabs = new double[pm.Ls];
    pm.Rion = new double[pm.Ls];
    for( ii=0; ii<pm.Ls; ii++ )
    {
        pm.Wb[ii] = 0.;
        pm.Wabs[ii] = 0.;
        pm.Rion[ii] = 0.;
    }
    pm.Qp = new double[pm.FIs*QPSIZE];
    pm.Qd = new double[pm.FIs*QDSIZE];
    for( ii=0; ii<pm.FIs*QPSIZE; ii++ )
            pm.Qp[ii] = 0.;
    for( ii=0; ii<pm.FIs*QDSIZE; ii++ )
            pm.Qd[ii] = 0.;
 }
 else
 {
    pm.Wb = 0;
    pm.Wabs = 0;
    pm.Rion = 0;
    pm.Qp = 0;
    pm.Qd = 0;

 }

 // added SD 03/02/2009
 pm.XU = new double[pm.L];
 for( ii=0; ii<pm.L; ii++ )
 	  pm.XU[ii] = 0.;
 pm.Uc = new double[pm.N][2];
 pm.Uefd = new double[pm.N];
  for( ii=0; ii<pm.N; ii++ )
  {
      pm.Uc[ii][0] = 0.;
      pm.Uc[ii][1] = 0.;
      pm.Uefd[ii] = 0.;
  }

  pm.Cp0   = new double[pm.L];
  pm.H0    = new double[pm.L];
  pm.U0    = new double[pm.L];
  pm.S0    = new double[pm.L];
  pm.A0    = new double[pm.L];
  for( ii=0; ii<pm.L; ii++ )
  {
	  pm.Cp0[ii]   = 0.;
	  pm.H0[ii]    = 0.;
	  pm.U0[ii]    = 0.;
	  pm.S0[ii]    = 0.;
	  pm.A0[ii]    = 0.;

  }
  pm.VPh   = new double[pm.FIs][MIXPHPROPS];
  pm.GPh   = new double[pm.FIs][MIXPHPROPS];
  pm.HPh   = new double[pm.FIs][MIXPHPROPS];
  pm.SPh   = new double[pm.FIs][MIXPHPROPS];
  pm.CPh   = new double[pm.FIs][MIXPHPROPS];
  pm.APh   = new double[pm.FIs][MIXPHPROPS];
  pm.UPh   = new double[pm.FIs][MIXPHPROPS];
  for( ii=0; ii<pm.FIs; ii++ )
    for( jj=0; jj<MIXPHPROPS; jj++ )
  {
	  pm.VPh[ii][jj]  = 0.;
	  pm.GPh[ii][jj]  = 0.;
	  pm.HPh[ii][jj]  = 0.;
	  pm.SPh[ii][jj]  = 0.;
	  pm.CPh[ii][jj]  = 0.;
	  pm.APh[ii][jj]  = 0.;
	  pm.UPh[ii][jj]  = 0.;
  }

 Alloc_TSolMod( pm.FIs );

}
示例#6
0
//---------------------------------------------------------//
/// Set default information
void TMulti::set_def( long int /*q*/)
{
    //mem_cpy( &pm.PunE, "jjbC", 4 );
    pm.PunE = 'j';         // Units of energy  { j;  J c C N reserved }
    pm.PunV = 'j';         // Units of volume  { j;  c L a reserved }
    pm.PunP = 'b';        // Units of pressure  { b;  B p P A reserved }
    pm.PunT = 'C';         // Units of temperature  { C; K F reserved }

    // mem_set( &pm.N, 0, 36*sizeof(long int));
    pm.N = 0;        	// N - number of IC in IPM problem
    pm.NR = 0;       	// NR - dimensions of R matrix
    pm.L = 0;        	// L -   number of DC in IPM problem
    pm.Ls = 0;       	// Ls -   total number of DC in multi-component phases
    pm.LO = 0;       	// LO -   index of water-solvent in IPM DC list
    pm.PG = 0;       	// PG -   number of DC in gas phase
    pm.PSOL = 0;     	// PSOL - number of DC in liquid hydrocarbon phase
    pm.Lads = 0;     	// Lads - number of DC in sorption phases
    pm.FI = 0;       	// FI -   number of phases in IPM problem
    pm.FIs = 0;      	// FIs -   number of multicomponent phases
    pm.FIa = 0;      	// FIa -   number of sorption phases
    pm.FI1 = 0;     // FI1 -   number of phases present in eqstate
    pm.FI1s = 0;    // FI1s -   number of multicomponent phases present in eqstate
    pm.FI1a = 0;    // FI1a -   number of sorption phases present in eqstate
    pm.IT = 0;      // It - number of completed IPM iterations
    pm.E = 0;       // PE - flag of electroneutrality constraint { 0 1 }
    pm.PD = 0;      // PD - mode of calling CalculateActivityCoefficients() { 0 1 2 3 4 }
    pm.PV = 0;      // PV - flag of system volume constraint { 0 1 }
    pm.PLIM = 0;    // PU - flag of activation of DC/phase restrictions { 0 1 }
    pm.Ec = 0;    // CalculateActivityCoefficients() return code: 0 (OK) or 1 (error)
    pm.K2 = 0;    // Number of Selekt2() loops
    pm.PZ = 0;    // Indicator of IPM-2 precision algorithm activation    funT = 0; sysT = 0;
    pm.pNP = 0; //Mode of FIA selection: 0- automatic-LPP = 0; 1- old eqstate = 0; -1-user's choice
    pm.pESU = 0;  // Unpack old eqstate from EQSTAT record?  0-no 1-yes
    pm.pIPN = 0;  // State of IPN-arrays:  0-create; 1-available; -1 remake
    pm.pBAL = 0;  // State of reloading CSD:  1- BAL only; 0-whole CSD
    pm.tMin = G_TP;  // Type of thermodynamic potential to minimize
    pm.pTPD = 0;  // State of reloading thermod data: 0- all  1 - G0 only  2 - no
    pm.pULR = 0;  // Start recalc kinetic constraints (0-do not = 0; 1-do )internal
    pm.ITaia = 0;  // Number of IPM iterations completed in AIA mode (renamed from pRR1)
    pm.FIat = 0;   // max. number of surface site types
    pm.MK = 0;     // PM return code: 0 - continue;  1 - converged
    pm.W1 = 0;     // internal IPM-2 indicator
    pm.is = 0;     // is - index of IC for IPN equations ( CalculateActivityCoefficients() )
    pm.js = 0;     // js - index of DC for IPN equations ( CalculateActivityCoefficients() )
    pm.next = 0;
    pm.sitNcat = 0;    // SIT: number of cations
    pm.sitNan = 0;     // SIT: number of anions

    // mem_set( &pm.TC, 0, 54*sizeof(double));
    pm.TC = pm.TCc = 0.; 	// Temperature T = 0.; min.-max. (0 = 0.;2000 C)
    pm.T = pm.Tc = 0.;   	// T = 0.; min.-max. K
    pm.P = pm.Pc = 0.;   	// Pressure P = 0.; min.-max.(0 = 0.;10000 bar)
    pm.VX_ = pm.VXc = 0.;    // V(X) - volume of the system = 0.; min.-max. = 0.; cm3
    pm.GX_ = pm.GXc = 0.;    // Gibbs potential of the system G(X) = 0.; min.-max. (J)
    pm.AX_ = pm.AXc = 0.;    // Helmholtz potential of the system F(X) = 0.; reserved
    pm.UX_ = pm.UXc = 0.;  	// Internal energy of the system U(X) = 0.; reserved
    pm.HX_ = pm.HXc = 0.; 	// Total enthalpy of the system H(X) = 0.; reserved
    pm.SX_ = pm.SXc = 0.; 	// Total entropy of the system S(X) = 0.; reserved
    pm.CpX_ = pm.CpXc = 0.;  // reserved
    pm.CvX_ = pm.CvXc = 0.;  // reserved
    pm.TMols = 0.;         // input total moles in b vector before rescaling
    pm.SMols = 0.;         // Standart total moles (upscaled) {10000}
    pm.MBX = 0.;        // Total mass of the system = 0.; kg
    pm.FX = 0.;    	// Current Gibbs potential of the system in IPM = 0.; moles
    pm.IC = 0.;         // Effective molal ionic strength of aqueous electrolyte
    pm.pH = 0.;         // pH of aqueous solution
    pm.pe = 0.;         // pe of aqueous solution
    pm.Eh = 0.;         // Eh of aqueous solution = 0.; V
    pm.DHBM = 0.;       // Adjusted balance precision criterion (IPM-2 )
    pm.DSM = 0.;        // min value phase DS (IPM-2)
    pm.GWAT = 0.;       // used in ipm_gamma()
    pm.YMET = 0.;       // reserved
    fillValue( pm.denW, 0., 5 );
    fillValue( pm.denWg, 0., 5 );
    fillValue( pm.epsW, 0., 5 );
    fillValue( pm.epsWg, 0., 5 );
    pm.PCI = 0.;        // Current value of Dikin criterion of IPM convergence DK>=DX
    pm.DXM = 0.;         // IPM convergence criterion threshold DX (1e-5)
    pm.lnP = 0.;        // log Ptotal
    pm.RT = 0.;         // RT: 8.31451*T (J/mole/K)
    pm.FRT = 0.;        // F/RT = 0.; F - Faraday constant = 96485.309 C/mol
    pm.Yw = 0.;         // Current number of moles of solvent in aqueous phase
    pm.ln5551 = 0.;     // ln(55.508373) = 4.0165339
    pm.aqsTail = 0.;    // v_j asymmetry correction factor for aqueous species
    pm.lowPosNum = 0.;  // Minimum physical DC amount (1.66e-24 mol)
    pm.logXw = 0.;      // work variable
    pm.logYFk = 0.;     // work variable
    pm.YFk = 0.;        // Current number of moles in a multicomponent phase
    pm.FitVar[0] =pm.FitVar[1] = pm.FitVar[2]= pm.FitVar[3]= pm.FitVar[4] = 0.;
    fillValue( pm.Tai, 0., 4 );
    fillValue( pm.Pai, 0., 4 );
    pm.SizeFactor = 1.; // using in TNode class

    // pointers
    pm.sitNcat = 0;
    pm.sitNan = 0;
    pm.L1    = 0;
    pm.LsMod = 0;
    pm.LsMdc = 0;
    pm.mui   = 0;
    pm.muk   = 0;
    pm.muj   = 0;
    pm.SATX =0;
    pm.DUL   = 0;
    pm.DLL   = 0;
    pm.fDQF   = 0;
    pm.PUL   = 0;
    pm.PLL   = 0;
    pm.YOF   = 0;
    pm.PMc   = 0;
    pm.DMc   = 0;
    pm.MoiSN  = 0;
    pm.SitFr  = 0;
    pm.Vol   = 0;
    pm.HYM   = 0;
    pm.VL    = 0;
    pm.MM    = 0;
    pm.H0    = 0;
    pm.A0    = 0;
    pm.U0    = 0;
    pm.S0    = 0;
    pm.Cp0   = 0;
    pm.Cv0   = 0;
    pm.Pparc = 0;
    pm.Y_m   = 0;
    pm.Y_la  = 0;
    pm.Y_w   = 0;
    pm.Gamma = 0;
    pm.lnGmf = 0;
    pm.lnGmM = 0;
    pm.EZ    = 0;
    pm.Wb    = 0;
    pm.Wabs  = 0;
    pm.Rion  = 0;
    pm.Aalp  = 0;
    pm.Sigw  = 0;
    pm.Sigg  = 0;
    pm.Nfsp  = 0;
    pm.MASDT = 0;
    pm.FVOL  = 0;
    pm.FWGT  = 0;
    pm.XcapA = 0;
    pm.XcapB = 0;
    pm.XcapD = 0;
    pm.XdlA  = 0;
    pm.XdlB  = 0;
    pm.XdlD  = 0;
    pm.XpsiA = 0;
    pm.XpsiB = 0;
    pm.XpsiD = 0;
    pm.Xr0h0 = 0;
    pm.XlamA = 0;
    pm.Xetaf = 0;
    pm.Xcond = 0;
    pm.Xeps  = 0;
    pm.Awt   = 0;
    pm.A     = 0;
    pm.XFs   = 0;
        pm.Falps = 0;
pm.GamFs = 0;
        pm.Fug   = 0;
        pm.Fug_l = 0;
        pm.Ppg_l = 0;
        pm.XFTS  = 0;
        pm.MASDJ = 0;
        pm.G     = 0;
        pm.G0    = 0;
        pm.lnGam = 0;
        pm.lnGmo = 0;
//        pm.lnSAT = 0;
        pm.lnSAC = 0;
        pm.B     = 0;
        pm.U     = 0;
        pm.Uc     = 0;
        pm.Uefd     = 0;
        pm.U_r   = 0;
        pm.C     = 0;
        pm.IC_m  = 0;
        pm.IC_lm = 0;
        pm.IC_wm = 0;
        pm.BF    = 0;
        pm.BFC    = 0;
        pm.XF    = 0;
        pm.YF    = 0;
        pm.XFA   = 0;
        pm.YFA   = 0;
        pm.Falp  = 0;
        pm.XetaA = 0;
        pm.XetaB = 0;
        pm.XetaD = 0;
        pm.X     = 0;
        pm.Y     = 0;
        pm.XY    = 0;
        pm.XU    = 0;
        pm.Qp    = 0;
        pm.Qd    = 0;
        pm.MU    = 0;
        pm.EMU   = 0;
        pm.NMU   = 0;
        pm.W     = 0;
        pm.Fx    = 0;
        pm.Wx    = 0;
        pm.F     = 0;
        pm.F0    = 0;
        pm.D     = 0;
     //   pm.R     = 0;
     //   pm.R1    = 0;
        pm.sMod  = 0;
        pm.dcMod  = 0;
        pm.SB    = 0;
        pm.SB1    = 0;
        pm.SM    = 0;
        pm.SF    = 0;
        pm.SFs   = 0;
        pm.pbuf  = 0;
        pm.RLC   = 0;
        pm.RSC   = 0;
        pm.RFLC  = 0;
        pm.RFSC  = 0;
        pm.ICC   = 0;
        pm.DCC   = 0;
        pm.PHC   = 0;
        pm.SCM   = 0;
        pm.SATT  = 0;
        pm.DCCW  = 0;
        pm.XcapF = 0;
        pm.SM2    = 0;
        pm.SM3    = 0;
        pm.SF2    = 0;
        pm.DCC3   = 0;
//  Added 16.11.2004 by Sveta
//    pm.sitXcat = 0;
//    pm.sitXan = 0;
//    pm.sitE = 0;
pm.IPx = 0;
pm.ITF = pm.ITG = 0;
pm.VPh = 0;
pm.GPh = 0;
pm.HPh = 0;
pm.SPh = 0;
pm.CPh = 0;
pm.APh = 0;
pm.UPh = 0;
}