From f5d45542ae758813227092b7096bf0c429d76d51 Mon Sep 17 00:00:00 2001 From: graham Date: Tue, 3 Mar 2009 13:39:52 +0000 Subject: [PATCH] Added Larsen Borgnakke internal energy redistribution and all supporting variables and function calls. Added energy and momentum monitoring functions. Added U and T fields to be used for boundary conditions and field measurement. Modified constructors accordingly. Now reading dsmcInitialiseDict in the Cloud, not the application. Initialisation dict now reads a subdict of entries. --- .../solvers/dsmc/dsmcFoam/createFields.H | 58 +++- .../dsmcInitialise/dsmcInitialise.C | 18 +- .../clouds/Templates/DsmcCloud/DsmcCloud.C | 136 +++++++-- .../clouds/Templates/DsmcCloud/DsmcCloud.H | 52 +++- .../clouds/Templates/DsmcCloud/DsmcCloudI.H | 137 +++------ .../dsmc/clouds/derived/dsmcCloud/dsmcCloud.C | 10 +- .../dsmc/clouds/derived/dsmcCloud/dsmcCloud.H | 8 +- .../parcels/Templates/DsmcParcel/DsmcParcel.C | 3 +- .../parcels/Templates/DsmcParcel/DsmcParcel.H | 11 + .../Templates/DsmcParcel/DsmcParcelI.H | 16 ++ .../Templates/DsmcParcel/DsmcParcelIO.C | 12 + .../parcels/derived/dsmcParcel/dsmcParcel.C | 2 + .../parcels/derived/dsmcParcel/dsmcParcel.H | 1 + .../makeDsmcParcelBinaryCollisionModels.C | 7 + .../BinaryCollisionModel.H | 4 +- .../LarsenBorgnakkeVariableHardSphere.C | 265 ++++++++++++++++++ .../LarsenBorgnakkeVariableHardSphere.H | 126 +++++++++ .../VariableHardSphere/VariableHardSphere.C | 4 +- .../VariableHardSphere/VariableHardSphere.H | 4 +- 19 files changed, 705 insertions(+), 169 deletions(-) create mode 100644 src/lagrangian/dsmc/submodels/BinaryCollisionModel/LarsenBorgnakkeVariableHardSphere/LarsenBorgnakkeVariableHardSphere.C create mode 100644 src/lagrangian/dsmc/submodels/BinaryCollisionModel/LarsenBorgnakkeVariableHardSphere/LarsenBorgnakkeVariableHardSphere.H 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