Exemple #1
0
tmp<scalarField> faMatrix<scalar>::residual() const
{
    scalarField boundaryDiag(psi_.size(), 0.0);
    addBoundaryDiag(boundaryDiag, 0);

    // Make a copy of interfaces: no longer a reference
    // HJ, 20/Nov/2007
    lduInterfaceFieldPtrsList interfaces = psi_.boundaryField().interfaces();

    tmp<scalarField> tres
    (
        lduMatrix::residual
        (
            psi_.internalField(),
            source_ - boundaryDiag*psi_.internalField(),
            boundaryCoeffs_,
            interfaces,
            0
        )
    );

    addBoundarySource(tres());

    return tres;
}
Foam::tmp<Foam::Field<Type> > Foam::fvMatrix<Type>::residual() const
{
    // Complete matrix assembly.  HJ, 17/Apr/2012
    fvMatrix& m = const_cast<fvMatrix&>(*this);
    m.completeAssembly();

    // Bug fix: Creating a tmp out of a const reference will change the field
    // HJ, 15/Apr/2011
    tmp<Field<Type> > tres(new Field<Type>(source_));
    Field<Type>& res = tres();

    addBoundarySource(res);

    // Make a copy of interfaces: no longer a reference
    // HJ, 20/Nov/2007
    lduInterfaceFieldPtrsList interfaces = psi_.boundaryField().interfaces();

    // Loop over field components
    for (direction cmpt = 0; cmpt < Type::nComponents; cmpt++)
    {
        scalarField psiCmpt = psi_.internalField().component(cmpt);

        scalarField boundaryDiagCmpt(psi_.size(), 0);
        addBoundaryDiag(boundaryDiagCmpt, cmpt);

        FieldField<Field, scalar> bouCoeffsCmpt
        (
            boundaryCoeffs_.component(cmpt)
        );

        res.replace
        (
            cmpt,
            lduMatrix::residual
            (
                psiCmpt,
                res.component(cmpt) - boundaryDiagCmpt*psiCmpt,
                bouCoeffsCmpt,
                interfaces,
                cmpt
            )
        );
    }

    return tres;
}
int main() {
	int unidad = DETECT, modo,i,Vert,Horiz,Boton;
	MOUSE mouse;
	void uno(MOUSE &),dos(MOUSE &);
	void tres(MOUSE &),cuatro(MOUSE &),cinco(MOUSE &);
	void EscribirMenu(MOUSE &);

	mouse.Inicializar();

	initgraph (&unidad,&modo,"c:\\bc\\bgi");
	if (graphresult() != 0) {
		cout << "Error al tratar de pasar al modo grafico\n";
		getch();
		return 1;
	}
	mouse.Mostrar();
		
		EscribirMenu(mouse);
		Boton = 0;
		while (Boton != DERECHO) {
			Boton = mouse.Estado(&Vert, &Horiz);
			if (Boton == IZQUIERDO) {
					if (Horiz >= 50 && Horiz <= 59) {
						uno(mouse);
						EscribirMenu(mouse);
					}
					else if (Horiz >= 60 && Horiz <= 69) {
						dos(mouse);
						EscribirMenu(mouse);
					}
					else if (Horiz >= 70 && Horiz <= 79) {
						tres(mouse);
						EscribirMenu(mouse);
					}
					else if (Horiz >= 80 && Horiz <= 89) {
						cuatro(mouse);
						EscribirMenu(mouse);
					}
					else if (Horiz >= 90 && Horiz <= 99) {
						cinco(mouse);
						EscribirMenu(mouse);
					}
				mouse.LibBotones();
			}
		}

	closegraph();
	return 0;
}
Foam::tmp<Foam::Field<Type>> Foam::fvMatrix<Type>::residual() const
{
    tmp<Field<Type>> tres(new Field<Type>(source_));
    Field<Type>& res = tres();

    addBoundarySource(res);

    // Loop over field components
    for (direction cmpt=0; cmpt<Type::nComponents; cmpt++)
    {
        scalarField psiCmpt(psi_.internalField().component(cmpt));

        scalarField boundaryDiagCmpt(psi_.size(), 0.0);
        addBoundaryDiag(boundaryDiagCmpt, cmpt);

        FieldField<Field, scalar> bouCoeffsCmpt
        (
            boundaryCoeffs_.component(cmpt)
        );

        res.replace
        (
            cmpt,
            lduMatrix::residual
            (
                psiCmpt,
                res.component(cmpt) - boundaryDiagCmpt*psiCmpt,
                bouCoeffsCmpt,
                psi_.boundaryField().scalarInterfaces(),
                cmpt
            )
        );
    }

    return tres;
}
Foam::tmp<Foam::scalarField> Foam::fvMatrix<Foam::scalar>::residual() const
{
    scalarField boundaryDiag(psi_.size(), 0.0);
    addBoundaryDiag(boundaryDiag, 0);

    tmp<scalarField> tres
    (
        lduMatrix::residual
        (
            psi_.primitiveField(),
            source_ - boundaryDiag*psi_.primitiveField(),
            boundaryCoeffs_,
            psi_.boundaryField().scalarInterfaces(),
            0
        )
    );

    addBoundarySource(tres.ref());

    return tres;
}
Exemple #6
0
 tmode(const std::string& id, int width, int height)
     : id(id)
     , res(tres(width, height))
 {}
	loop2(TypBin, ptBin, nCorrTyp, nPtBins)
	{

		float pt1 = PtRes::PtBinLow(  ptBin);
		float pt2 = PtRes::PtBinHigh( ptBin);

		gStyle->SetOptStat(0);

		double nEntries = RelDiffPt[TypBin][ptBin]->Integral();
		RelDiffPt[TypBin][ptBin]->Scale(1./nEntries);

		RelDiffPt_Func[TypBin][ptBin]->SetParameter(1, 0.0);
		RelDiffPt_Func[TypBin][ptBin]->SetParameter(2, 0.1);
		RelDiffPt[TypBin][ptBin]->Fit( RelDiffPt_Func[TypBin][ptBin] );

		TCanvas canv ("canv",";lel;",1024,768);

		canv.SetLeftMargin  ( RelDiffPt_leftmargin   );
		canv.SetRightMargin ( RelDiffPt_rightmargin  );
		canv.SetTopMargin   ( RelDiffPt_topmargin    );
		canv.SetBottomMargin( RelDiffPt_bottommargin );

		RelDiffPt[TypBin][ptBin]->SetTitle("");
		//RelDiffPt[TypBin][ptBin]->GetXaxis()->CenterTitle(1);
		RelDiffPt[TypBin][ptBin]->GetXaxis()->SetTitleSize( RelDiffPt_xlabelsize );
		RelDiffPt[TypBin][ptBin]->GetXaxis()->SetTitle( "x = #frac{p_{T}^{reco}-p_{T}^{gen}}{p_{T}^{gen}}" );
		RelDiffPt[TypBin][ptBin]->GetYaxis()->SetTitleSize( RelDiffPt_ylabelsize );
		RelDiffPt[TypBin][ptBin]->GetYaxis()->SetTitle( "occurance" );
		RelDiffPt[TypBin][ptBin]->SetTitleOffset( RelDiffPt_xlabeloffset ,"X");
		RelDiffPt[TypBin][ptBin]->SetTitleOffset( RelDiffPt_ylabeloffset ,"Y");
		RelDiffPt[TypBin][ptBin]->GetYaxis()->CenterTitle(1);

		double amp   = abs(RelDiffPt_Func[TypBin][ptBin]->GetParameter(0));
		double x0    = abs(RelDiffPt_Func[TypBin][ptBin]->GetParameter(1));
		double sigma = abs(RelDiffPt_Func[TypBin][ptBin]->GetParameter(2));

		double amp_Err   = abs(RelDiffPt_Func[TypBin][ptBin]->GetParError(0));
		double x0_Err    = abs(RelDiffPt_Func[TypBin][ptBin]->GetParError(1));
		double sigma_Err = abs(RelDiffPt_Func[TypBin][ptBin]->GetParError(2));

		RelDiffPtSigma[TypBin][ptBin] = sigma; 
		RelDiffPtMean [TypBin][ptBin] = x0;

		(*PtResolutionParams[TypBin][ptBin])[0] = sigma;
		(*PtResolutionParams[TypBin][ptBin])[1] = x0;

		TLatex tres( RelDiffPt_tres_upperleftposx, RelDiffPt_tres_upperleftposy , Form("#splitline{#splitline{amp = %.3f #pm %.3f}{x_{0} = %.3f #pm %.3f}}{#sigma = %.3f #pm %.3f}", amp, amp_Err, x0, x0_Err, sigma, sigma_Err) ); 
		tres.SetTextSize( RelDiffPt_figuretextsize );
		tres.SetNDC(kTRUE);

		TLatex ttype( RelDiffPt_ttype_upperleftposx, RelDiffPt_ttype_upperleftposy , Form("#splitline{%s}{p_{T} = [%.2f - %.2f] GeV/c}", particletype(TypBin).c_str(), pt1, pt2 ) ); 
		ttype.SetTextSize( RelDiffPt_figuretextsize );
		ttype.SetNDC(kTRUE);


		RelDiffPt[TypBin][ptBin]->Draw("");
		tres.Draw();
		ttype.Draw();

		std::string dir   = Form("./figures/");
		std::string filePDF = Form("PtRelDiff_%d_pt_%.2f-%.2f.pdf", TypBin, pt1, pt2);
		std::string filePNG = Form("PtRelDiff_%d_pt_%.2f-%.2f.png", TypBin, pt1, pt2);

		std::string figurePNG = dir+filePNG;
		std::string figurePDF = dir+filePDF;

		canv.SaveAs( figurePNG.c_str() );
		canv.SaveAs( figurePDF.c_str() );

		canv.Clear();

	}
Exemple #8
0
std::string Date::dateToString(Date date) {
	int i = 0;
	int ptr = 0;
	char tstr[20];
	// year
	int tyear = date.year_;
	tstr[0] = tyear / 1000 + '0';
	tyear = tyear % 1000;
	tstr[1] = tyear / 100 + '0';
	tyear = tyear % 100;
	tstr[2] = tyear / 10 + '0';
	tyear = tyear % 10;
	tstr[3] = tyear + '0';
	tstr[4] = '-';
	// month
	int tmonth = date.month_;
	if (tmonth / 10 < 1) {
		tstr[5] = '0';
		tstr[6] = tmonth + '0';
		tstr[7] = '-';
	} else {
		tstr[5] = tmonth / 10 + '0';
		tstr[6] = tmonth % 10 + '0';
		tstr[7] = '-';
	}
	// day
	int tday = date.day_;
	if (tday / 10 < 1) {
		tstr[8] = '0';
		tstr[9] = tday + '0';
		tstr[10] = '/';
	} else {
		tstr[8] = tday / 10 + '0';
		tstr[9] = tday % 10 + '0';
		tstr[10] = '/';
	}
	// hour
	int thour = date.hour_;
	if (thour / 10 < 1) {
		tstr[11] = '0';
		tstr[12] = thour + '0';
		tstr[13] = ':';
	} else {
		tstr[11] = thour / 10 + '0';
		tstr[12] = thour % 10 + '0';
		tstr[13] = ':';
	}
	// minute
	int tmin = date.minute_;
	if (tmin / 10 < 1) {
		tstr[14] = '0';
		tstr[15] = tmin + '0';
	} else {
		tstr[14] = tmin / 10 + '0';
		tstr[15] = tmin % 10 + '0';
	}
	// over
	tstr[16] = '\0';
	std::string tres(tstr);
	return tres;
}