diff --git a/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C b/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C index 8f86ab437f..ee4fd2c50f 100644 --- a/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C +++ b/applications/utilities/postProcessing/miscellaneous/dsmcFieldsCalc/dsmcFieldsCalc.C @@ -35,117 +35,112 @@ Description #include "fvc.H" #include "dsmcCloud.H" #include "dsmcFields.H" +#include "IOobjectList.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +namespace Foam +{ + template + bool addFieldsToList + ( + const fvMesh& mesh, + PtrList >& list, + const wordList& fieldNames + ) + { + typedef GeometricField fieldType; + + label index = 0; + forAll(fieldNames, i) + { + IOobject obj + ( + fieldNames[i], + mesh.time().timeName(), + mesh, + IOobject::MUST_READ + ); + + if (obj.headerOk() && obj.headerClassName() == fieldType::typeName) + { + list.set(index++, new fieldType(obj, mesh)); + } + else + { + Info<< "Could not find " << fieldNames[i] << endl; + + return false; + } + } + + return true; + } +} + + void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh) { bool writeResults = !args.options().found("noWrite"); - IOobject rhoNMeanheader + wordList extensiveVSFNames ( - "rhoNMean", - runTime.timeName(), - mesh, - IOobject::MUST_READ - ); - - IOobject rhoMMeanheader - ( - "rhoMMean", - runTime.timeName(), - mesh, - IOobject::MUST_READ - ); - - IOobject momentumMeanheader - ( - "momentumMean", - runTime.timeName(), - mesh, - IOobject::MUST_READ - ); - - IOobject linearKEMeanheader - ( - "linearKEMean", - runTime.timeName(), - mesh, - IOobject::MUST_READ - ); - - IOobject internalEMeanheader - ( - "internalEMean", - runTime.timeName(), - mesh, - IOobject::MUST_READ - ); - - IOobject iDofMeanheader - ( - "iDofMean", - runTime.timeName(), - mesh, - IOobject::MUST_READ - ); - - if (!rhoNMeanheader.headerOk()) - { - Info<< " No rhoNMean" << endl; - } - else if (!rhoMMeanheader.headerOk()) - { - Info<< " No rhoMMean" << endl; - } - else if (!momentumMeanheader.headerOk()) - { - Info<< " No momentumMean" << endl; - } - else if (!linearKEMeanheader.headerOk()) - { - Info<< " No linearKEMean" << endl; - } - else if (!internalEMeanheader.headerOk()) - { - Info<< " No internalEMean" << endl; - } - else if (!iDofMeanheader.headerOk()) - { - Info<< " No iDofMean" << endl; - } - else - { - Info<< "Reading field rhoNMean" << endl; - volScalarField rhoNMean(rhoNMeanheader, mesh); - - Info<< "Reading field rhoMMean" << endl; - volScalarField rhoMMean(rhoMMeanheader, mesh); - - Info<< "Reading field momentumMean" << endl; - volVectorField momentumMean(momentumMeanheader, mesh); - - Info<< "Reading field linearKEMean" << endl; - volScalarField linearKEMean(linearKEMeanheader, mesh); - - Info<< "Reading field internalEMean" << endl; - volScalarField internalEMean(internalEMeanheader, mesh); - - Info<< "Reading field iDofMean" << endl; - volScalarField iDofMean(iDofMeanheader, mesh); - - dsmcFields dF + IStringStream ( - "dsmcFieldsUtility", - mesh, - dictionary(), - false - ); + "( \ + rhoNMean \ + rhoMMean \ + linearKEMean \ + internalEMean \ + iDofMean \ + )" + )() + ); - if (writeResults) - { - dF.write(); - } + PtrList extensiveVSFs(extensiveVSFNames.size()); + + if + ( + !addFieldsToList + ( + mesh, + extensiveVSFs, + extensiveVSFNames + ) + ) + { + return; + } + + wordList extensiveVVFNames(IStringStream ("(momentumMean)")()); + + PtrList extensiveVVFs(extensiveVVFNames.size()); + + if + ( + !addFieldsToList + ( + mesh, + extensiveVVFs, + extensiveVVFNames + ) + ) + { + return; + } + + dsmcFields dF + ( + "dsmcFieldsUtility", + mesh, + dictionary::null, + false + ); + + if (writeResults) + { + dF.write(); } } diff --git a/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.C b/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.C index 13b2526eab..e5463185d9 100644 --- a/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.C +++ b/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.C @@ -214,6 +214,8 @@ void Foam::DsmcCloud::initialise temperature, cP.mass() ); + + sigmaTcRMax_.correctBoundaryConditions(); }