diff --git a/applications/solvers/dsmc/dsmcFoam/createFields.H b/applications/solvers/dsmc/dsmcFoam/createFields.H index 68a44f03fd..5f586665bb 100644 --- a/applications/solvers/dsmc/dsmcFoam/createFields.H +++ b/applications/solvers/dsmc/dsmcFoam/createFields.H @@ -1,4 +1,60 @@ + // volScalarField rhoN + // ( + // IOobject + // ( + // "rhoN", + // runTime.timeName(), + // mesh, + // IOobject::MUST_READ, + // IOobject::AUTO_WRITE + // ), + // mesh + // ); + + + // volScalarField rhoM + // ( + // IOobject + // ( + // "rhoM", + // runTime.timeName(), + // mesh, + // IOobject::MUST_READ, + // IOobject::AUTO_WRITE + // ), + // mesh + // ); + + + Info<< "\nReading field U\n" << endl; + volVectorField U + ( + IOobject + ( + "U", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh + ); + + Info<< "\nReading field T\n" << endl; + volScalarField T + ( + IOobject + ( + "T", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh + ); + Info<< "Constructing dsmcCloud " << endl; - dsmcCloud dsmc("dsmc", mesh); + dsmcCloud dsmc("dsmc", T, U); diff --git a/applications/utilities/preProcessing/dsmcInitialise/dsmcInitialise.C b/applications/utilities/preProcessing/dsmcInitialise/dsmcInitialise.C index 34727c0bff..04c1914f3f 100644 --- a/applications/utilities/preProcessing/dsmcInitialise/dsmcInitialise.C +++ b/applications/utilities/preProcessing/dsmcInitialise/dsmcInitialise.C @@ -26,8 +26,8 @@ Application dsmcFoam Description - Initialise a case for dsmcFoam by reading the initialise subdictionary in - dsmcProperties + Initialise a case for dsmcFoam by reading the initialisation dictionary + system/dsmcInitialise \*---------------------------------------------------------------------------*/ @@ -42,21 +42,11 @@ int main(int argc, char *argv[]) #include "createTime.H" #include "createMesh.H" - IOdictionary dsmcInitialiseDict - ( - IOobject - ( - "dsmcInitialiseDict", - mesh.time().system(), - mesh, - IOobject::MUST_READ, - IOobject::NO_WRITE - ) - ); + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Info<< "Initialising dsmc for Time = " << runTime.timeName() << nl << endl; - dsmcCloud dsmc("dsmc", mesh, dsmcInitialiseDict); + dsmcCloud dsmc("dsmc", mesh); label totalMolecules = dsmc.size(); diff --git a/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.C b/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.C index 00164e4b51..1867670f70 100644 --- a/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.C +++ b/src/lagrangian/dsmc/clouds/Templates/DsmcCloud/DsmcCloud.C @@ -41,8 +41,7 @@ Foam::scalar Foam::DsmcCloud::Tref = 273; template void Foam::DsmcCloud::buildConstProps() { - Info<< nl << "typeIds found " << typeIdList_ << endl; - + Info<< nl << "Constructing constant properties for" << endl; constProps_.setSize(typeIdList_.size()); dictionary moleculeProperties @@ -54,6 +53,8 @@ void Foam::DsmcCloud::buildConstProps() { const word& id(typeIdList_[i]); + Info<< " " << id << endl; + const dictionary& molDict(moleculeProperties.subDict(id)); constProps_[i] = @@ -65,7 +66,6 @@ void Foam::DsmcCloud::buildConstProps() template void Foam::DsmcCloud::buildCellOccupancy() { - forAll(cellOccupancy_, cO) { cellOccupancy_[cO].clear(); @@ -91,21 +91,21 @@ void Foam::DsmcCloud::initialise const vector velocity(dsmcInitialiseDict.lookup("velocity")); - List molecules + const dictionary& numberDensitiesDict ( - dsmcInitialiseDict.lookup("molecules") + dsmcInitialiseDict.subDict("numberDensities") ); - Field numberDensities - ( - dsmcInitialiseDict.lookup("numberDensities") - ); + List molecules(numberDensitiesDict.toc()); - if(molecules.size() != numberDensities.size()) + Field numberDensities(molecules.size()); + + forAll(molecules, i) { - FatalErrorIn("Foam::Foam::DsmcCloud::initialise") - << "molecules and numberDensities must be the same size." - << nl << abort(FatalError); + numberDensities[i] = readScalar + ( + numberDensitiesDict.lookup(molecules[i]) + ); } numberDensities /= nParticle_; @@ -171,6 +171,10 @@ void Foam::DsmcCloud::initialise cP.mass() ); + scalar Ei = + 0.5*cP.internalDegreesOfFreedom() + *kb*temperature; + U += velocity; if (cell >= 0) @@ -179,6 +183,7 @@ void Foam::DsmcCloud::initialise ( p, U, + Ei, cell, typeId ); @@ -282,7 +287,9 @@ void Foam::DsmcCloud::collisions() typeIdP, typeIdQ, parcelP->U(), - parcelQ->U() + parcelQ->U(), + parcelP->Ei(), + parcelQ->Ei() ); collisions++; @@ -295,11 +302,18 @@ void Foam::DsmcCloud::collisions() reduce(collisionCandidates, sumOp