Esempio n. 1
0
bool SysCADSystemHelper::SysCADSizeDataToSystem(MIPSD &PSD,RioTintoTS::PStreamInfo1 SizInfo)

//
// Copy SysCAD Sieve Series Data to System
//

{

	const int NumSizes = PSD.getSizeCount(); // Size of sieve


	double *d;
	d = new double[NumSizes];
	double sz;

	/**** START TEST ****/
	double *syscadsz = new double[NumSizes];

	for (int i=0;i<(NumSizes);i++)
	{
		sz = PSD.getSize(i)*1000.;
		syscadsz[i] = sz;
	}
	delete syscadsz;
	/**** END TEST *****/

	sz = PSD.getSize(NumSizes-1)*1000.; 
	for (int i=0;i<(NumSizes-1);i++)
	{
		sz = PSD.getSize(NumSizes-i-2)*1000.;
		d[i] = sz;
	}
	d[NumSizes-1] = 0.0;

	RioTintoTS::VectorView& sizeData=RioTintoTS::VectorView(d,NumSizes,1);

	SizInfo->SetSizes(  sizeData );
	delete d;


	return(true);

}
Esempio n. 2
0
	void CSeperator_EfficiencyCurve::CalculateEfficiencyCurve(
		                      MIPSD &in_PSD , double in_D50 ,
							  double in_Alpha, double in_Beta, double in_C,
							  double &inout_BetaStar,
		                      CArray <double, double&> &out_Eu )
	{
     long    l_SizeCount      = in_PSD.getSizeCount();
     long    l_PSDVectorCount = in_PSD.getPSDVectorCount();

	  //
	  // Calculate BetaStar
	  //
	  inout_BetaStar = CalcBetaStar(in_Alpha, in_Beta );

      //
      //  Build probability passing from specified d50, Alpha parameters and PSD size
      //  interval data
      //
      out_Eu.SetSize(l_SizeCount);
      for( int lSzIndex=0; lSzIndex < l_SizeCount; lSzIndex++ )
        {
        const double NominalSize = in_PSD.getDefn().getGeometricMean(lSzIndex); //use geometrical mean
        const double d = in_Alpha*inout_BetaStar*NominalSize/in_D50;
        if (d>230.0)//limit of exp()
          out_Eu[lSzIndex] = 1.0;
        else
          {

          //out_Eu[lSzIndex] = (exp(d)-1.0) / (exp(d) + exp(in_Alpha) - 2.0);
		  //out_Eu[lSzIndex] = 1.0 - in_C*(exp(in_Alpha)-1.0) / (exp(d) + exp(in_Alpha) - 2.0);
		  double num = (1.0+in_Beta*inout_BetaStar*NominalSize/in_D50)*(exp(in_Alpha)-1.0 );
		  double den = exp(d) + exp(in_Alpha) - 2.0;
		  out_Eu[lSzIndex] = 1.0 - in_C*num/GTZ(den);
		
          if (out_Eu[lSzIndex]>1.0)
            out_Eu[lSzIndex] = 1.0;
		  if (out_Eu[lSzIndex]<0.0)
           out_Eu[lSzIndex] = 0.0;
          }
        }
      //out_Eu[0] = 0.0;

	}