diff --git a/applications/utilities/postProcessing/miscellaneous/pdfPlot/createFields.H b/applications/utilities/postProcessing/miscellaneous/pdfPlot/createFields.H index 2dc6e7af70..ddb1f663ad 100644 --- a/applications/utilities/postProcessing/miscellaneous/pdfPlot/createFields.H +++ b/applications/utilities/postProcessing/miscellaneous/pdfPlot/createFields.H @@ -10,9 +10,32 @@ ) ); - label nIntervals(readLabel(pdfDictionary.lookup("nIntervals"))); + const label nIntervals(readLabel(pdfDictionary.lookup("nIntervals"))); - label nSamples(readLabel(pdfDictionary.lookup("nSamples"))); + const label nSamples(readLabel(pdfDictionary.lookup("nSamples"))); + + const bool writeData(readBool(pdfDictionary.lookup("writeData"))); + + + const fileName pdfPath = runTime.path()/"pdf"; + mkDir(pdfPath); + + Random rndGen(label(0)); + + autoPtr p(pdfs::pdf::New(pdfDictionary, rndGen)); + + const scalar xMin = p->minValue(); + const scalar xMax = p->maxValue(); + + autoPtr filePtr(NULL); + if (writeData) + { + fileName fName = pdfPath/(p->type() + ".data"); + Info<< "Writing " << p->type() << " data samples to file:" << nl + << fName << nl << endl; + + filePtr.reset(new OFstream(fName)); + } scalarField samples(nIntervals, 0); diff --git a/applications/utilities/postProcessing/miscellaneous/pdfPlot/pdfDict b/applications/utilities/postProcessing/miscellaneous/pdfPlot/pdfDict index 2a48115bea..d236d5ea8b 100644 --- a/applications/utilities/postProcessing/miscellaneous/pdfPlot/pdfDict +++ b/applications/utilities/postProcessing/miscellaneous/pdfPlot/pdfDict @@ -23,6 +23,10 @@ nSamples 10000; // Type of pdf pdfType RosinRammler; +// Write data flag +writeData true; + +// PDF model coefficients RosinRammlerPDF { minValue 1e-06; diff --git a/applications/utilities/postProcessing/miscellaneous/pdfPlot/pdfPlot.C b/applications/utilities/postProcessing/miscellaneous/pdfPlot/pdfPlot.C index 3347e4dcdb..b88f0ca1cf 100644 --- a/applications/utilities/postProcessing/miscellaneous/pdfPlot/pdfPlot.C +++ b/applications/utilities/postProcessing/miscellaneous/pdfPlot/pdfPlot.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. + \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -30,6 +30,7 @@ Description #include "fvCFD.H" #include "pdf.H" #include "makeGraph.H" +#include "OFstream.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Main program: @@ -40,16 +41,6 @@ int main(int argc, char *argv[]) #include "createTime.H" #include "createFields.H" - fileName pdfPath = runTime.path()/"pdf"; - mkDir(pdfPath); - - Random rndGen(label(0)); - - autoPtr p(pdf::New(pdfDictionary, rndGen)); - - scalar xMin = p->minValue(); - scalar xMax = p->maxValue(); - label iCheck = 100; for (label i=1; i<=nSamples; i++) { @@ -57,6 +48,11 @@ int main(int argc, char *argv[]) label n = label((ps - xMin)*nIntervals/(xMax - xMin)); samples[n]++; + if (writeData) + { + filePtr() << ps << nl; + } + if (i % iCheck == 0) { Info<< " processed " << i << " samples" << endl;