コード例 #1
0
peBool proVertBuff::Create(const char* technique, PRO_PRIMITIVE primitive, peInt size)
{
	m_Primitive = primitive;
	m_Technique = GetTechnique(technique);
	m_VertSize = GetTechniqueSize(m_Technique);
	m_VertFormat = GetTechniqueFormat(m_Technique);	
	m_Size = size;	
	m_MemoryYield = GetYield(m_Primitive, m_Size);
	
	if( FAILED( g_pAppDef->d3dDevice->CreateVertexBuffer(m_Size*m_VertSize, 0, m_VertFormat, D3DPOOL_DEFAULT, &m_pVertBuffDef->m_vertBuffD3D, NULL) ) )
	{
		assert(0);
		return false;
	}
	return true;
}
コード例 #2
0
ファイル: SLMaterial.cpp プロジェクト: pbena/nairn-mpm-fea
// Solve numerically for lambda
// Subclasses can override for analytical solution if possible
double SLMaterial::SolveForLambdaBracketed(MPMBase *mptr,int np,double strial,Tensor *stk,double Gred,
								double psKred,double Ptrial,double delTime,HardeningAlpha *a,void *properties,int offset) const
{
	if(np==PLANE_STRESS_MPM)
	{	// not allowed
		return 0.;
	}
	else
	{	// solve - sqrt(2/3)GetYield(alpha+dalpha,dalpha) + strial - 2 GRed sqrt(3/2)dalpha  = 0
		SLProperties *p = (SLProperties *)properties;
		double rho = parent->GetRho(mptr);
		
		// test lower limit
		a->dalpha = delTime*p->epdotmin;
		a->alpint = mptr->GetHistoryDble(0,offset) + a->dalpha;
		p->isConstantYT = true;
		p->constantYT = YTmin;
		double gmin = strial - 2.*Gred*a->dalpha/SQRT_TWOTHIRDS - SQRT_TWOTHIRDS*GetYield(mptr,np,delTime,a,p);
		if(gmin<0.)
		{	// low strain rate answer between 0 and epdotmin
			double lambdak = HardeningLawBase::SolveForLambda(mptr,np,strial,stk,Gred,psKred,1.,delTime,a,p,offset);
			//cout << "# low strain rate condition " << lambdak << " should be below " << delTime*epdotmin/SQRT_TWOTHIRDS << endl;
			p->isConstantYT = false;
			mptr->SetHistoryDble(YT_HISTORY,p->currentYTred*rho*1.e-6,offset);
			mptr->SetHistoryDble(EPDOT_HISTORY,SQRT_TWOTHIRDS*lambdak/delTime,offset);
			return lambdak;
		}
		
		// test upper limit
		a->dalpha = delTime*p->epdotmax;
		a->alpint = mptr->GetHistoryDble(0,offset) + a->dalpha;
		p->constantYT=YPred;
		double gmax =  strial - 2.*Gred*a->dalpha/SQRT_TWOTHIRDS - SQRT_TWOTHIRDS*GetYield(mptr,np,delTime,a,p);
		if(gmax>0.)
		{	// high string rate answer for rate higher than epmax
			double lambdak=HardeningLawBase::SolveForLambda(mptr,np,strial,stk,Gred,psKred,1.,delTime,a,p,offset);
			//cout << "# high strain rate condition " << lambdak << " should be above " << delTime*epdotmax/SQRT_TWOTHIRDS << endl;
			p->isConstantYT = false;
			mptr->SetHistoryDble(YT_HISTORY,p->currentYTred*rho*1.e-6,offset);
			mptr->SetHistoryDble(EPDOT_HISTORY,SQRT_TWOTHIRDS*lambdak/delTime,offset);
			return lambdak;
		}
		p->isConstantYT=false;
		
		// Newton method in ln epdot space
		p->currentYTred=fmax(YTmin,mptr->GetHistoryDble(YT_HISTORY,offset)*1.e6/rho);
		double epdot=GetEpdot(p->currentYTred,p->TwoUkkT);
		double logepdot = log(epdot);
		a->dalpha = epdot*delTime;
		a->alpint = mptr->GetHistoryDble(0,offset) + a->dalpha;
		int step=1;
		while(true)
		{	// update iterative variables (alpha, dalpha)
			double glam = -SQRT_TWOTHIRDS*GetYield(mptr,np,delTime,a,p) + strial - 2.*Gred*a->dalpha/SQRT_TWOTHIRDS;
			double slope = -2.*Gred*a->dalpha/SQRT_TWOTHIRDS - GetKPrime(mptr,np,delTime,a,p);
			double delLogepdot = -glam/slope;
			logepdot += delLogepdot;
			
			// check for convergence
			a->dalpha = exp(logepdot)*delTime;
			a->alpint = mptr->GetHistoryDble(0,offset) + a->dalpha;
			if(step>20 || fabs(delLogepdot)<0.0001) break;
			step++;
		}
	
		// set history when done
		mptr->SetHistoryDble(YT_HISTORY,p->currentYTred*rho*1.e-6,offset);
		mptr->SetHistoryDble(EPDOT_HISTORY,a->dalpha/delTime,offset);
		return a->dalpha/SQRT_TWOTHIRDS;
		
	}
	
}
コード例 #3
0
ファイル: analysis.C プロジェクト: amanjong/AnalysisCMS
//------------------------------------------------------------------------------
// PrintYields
//------------------------------------------------------------------------------
void PrintYields(float cut)
{
  if (cut < 0) cut = _cut;

  if (_verbosity > 0) printf("\n");

  printf(" [PrintYields] MVA cut = %.2f\n", cut);

  if (_verbosity > 0) printf("\n");

  float nsignal;      float errsignal;                                   GetYield(_signal, nsignal, errsignal, cut);
   
  float ndata = 0.0;  float errdata = 0.0;  if(_systematic == "nominal") GetYield("01_Data",  ndata, errdata, cut);
  
  //float nexpected = 0;
  
  //nexpected += GetYield("14_HZ",        cut);  
  //nexpected += GetYield("06_WW",        cut);
  //nexpected += GetYield("02_WZTo3LNu",  cut);
  //nexpected += GetYield("03_ZZ",        cut);
  //nexpected += GetYield("11_Wg",        cut);
  //nexpected += GetYield("07_ZJets",     cut);
  //nexpected += GetYield("09_TTV",       cut);
  //nexpected += GetYield("04_TTTo2L2Nu", cut);
  //nexpected += GetYield("05_ST",        cut);
  //nexpected += GetYield("00_Fakes",     cut);

  float yield00 = 0.0; float err00 = 0.0;  if(_systematic == "nominal") GetYield("00_Fakes"    , yield00, err00, cut );
  float yield02;       float err02;                                     GetYield("02_WZTo3LNu" , yield02, err02, cut );
  float yield03;       float err03;                                     GetYield("03_ZZ"       , yield03, err03, cut );
  float yield04;       float err04;                                     GetYield("04_TTTo2L2Nu", yield04, err04, cut );
  float yield05;       float err05;                                     GetYield("05_ST"       , yield05, err05, cut );
  float yield06;       float err06;                                     GetYield("06_WW"       , yield06, err06, cut );
  float yield07;       float err07;                                     GetYield("07_ZJets"    , yield07, err07, cut );
  float yield09;       float err09;                                     GetYield("09_TTV"      , yield09, err09, cut );
  float yield11;       float err11;                                     GetYield("11_Wg"       , yield11, err11, cut );
  float yield14;       float err14;                                     GetYield("14_HZ"       , yield14, err14, cut );

  if (_verbosity > 0)
    {
      printf("--------------------------------\n");

      PrintYield("signal",   nsignal);
      PrintYield("data",     ndata);
      //PrintYield("expected", nexpected);

      printf("\n");
    }



  _yields.open(Form("yields/%s_%s.dat", _signal.Data(), _systematic.Data() ));

  if( _systematic != "stat" ){
  
	  _yields << Form( "%f \n", ndata  );
	  _yields << Form( "%f \n", nsignal);
	  _yields << Form( "%f \n", yield00);
	  _yields << Form( "%f \n", yield02);
	  _yields << Form( "%f \n", yield03);
	  _yields << Form( "%f \n", yield04);
	  _yields << Form( "%f \n", yield05);
	  _yields << Form( "%f \n", yield06);
	  _yields << Form( "%f \n", yield07);
	  _yields << Form( "%f \n", yield09);
	  _yields << Form( "%f \n", yield11);
	  _yields << Form( "%f \n", yield14);

  }

  else{

	  _yields << Form( "%f \n", errdata  );
	  _yields << Form( "%f \n", errsignal);
	  _yields << Form( "%f \n", err00);
	  _yields << Form( "%f \n", err02);
	  _yields << Form( "%f \n", err03);
	  _yields << Form( "%f \n", err04);
	  _yields << Form( "%f \n", err05);
	  _yields << Form( "%f \n", err06);
	  _yields << Form( "%f \n", err07);
	  _yields << Form( "%f \n", err09);
	  _yields << Form( "%f \n", err11);
	  _yields << Form( "%f \n", err14);
  }

  _yields.close();

}