From d3ddb37480e409d25847fca78cade60e8aed5b50 Mon Sep 17 00:00:00 2001 From: graham Date: Mon, 4 Jul 2011 16:17:52 +0100 Subject: [PATCH] ENH: Templated MolecularCloud. --- .../molecularDynamics/mdFoam/createFields.H | 21 +- .../preProcessing/mdInitialise/Make/options | 4 +- .../preProcessing/mdInitialise/mdInitialise.C | 23 +- .../molecularDynamics/molecule/Make/files | 8 +- .../molecularDynamics/molecule/Make/options | 6 +- .../Templates/MoleculeCloud/MoleculeCloud.C} | 281 +++++++++--------- .../Templates/MoleculeCloud/MoleculeCloud.H} | 104 ++++--- .../Templates/MoleculeCloud/MoleculeCloudI.H} | 93 ++++-- .../baseClasses/moleculeCloud/moleculeCloud.C | 48 +++ .../baseClasses/moleculeCloud/moleculeCloud.H | 83 ++++++ .../derived/polyatomicCloud/polyatomicCloud.H | 52 ++++ .../constPropSite/constPropSite.C | 0 .../constPropSite/constPropSite.H | 0 .../constPropSite/constPropSiteI.H | 0 .../polyatomic/polyatomic.C | 12 +- .../polyatomic/polyatomic.H | 88 +++++- .../polyatomic/polyatomicI.H | 0 .../polyatomic/polyatomicIO.C | 25 +- .../potential/potential/potential.C | 88 +++--- .../potential/potential/potential.H | 34 ++- 20 files changed, 667 insertions(+), 303 deletions(-) rename src/lagrangian/molecularDynamics/molecule/{polyatomic/polyatomicCloud/polyatomicCloud.C => clouds/Templates/MoleculeCloud/MoleculeCloud.C} (84%) rename src/lagrangian/molecularDynamics/molecule/{polyatomic/polyatomicCloud/polyatomicCloud.H => clouds/Templates/MoleculeCloud/MoleculeCloud.H} (68%) rename src/lagrangian/molecularDynamics/molecule/{polyatomic/polyatomicCloud/polyatomicCloudI.H => clouds/Templates/MoleculeCloud/MoleculeCloudI.H} (79%) create mode 100644 src/lagrangian/molecularDynamics/molecule/clouds/baseClasses/moleculeCloud/moleculeCloud.C create mode 100644 src/lagrangian/molecularDynamics/molecule/clouds/baseClasses/moleculeCloud/moleculeCloud.H create mode 100644 src/lagrangian/molecularDynamics/molecule/clouds/derived/polyatomicCloud/polyatomicCloud.H rename src/lagrangian/molecularDynamics/molecule/{ => molecules}/constPropSite/constPropSite.C (100%) rename src/lagrangian/molecularDynamics/molecule/{ => molecules}/constPropSite/constPropSite.H (100%) rename src/lagrangian/molecularDynamics/molecule/{ => molecules}/constPropSite/constPropSiteI.H (100%) rename src/lagrangian/molecularDynamics/molecule/{polyatomic => molecules}/polyatomic/polyatomic.C (96%) rename src/lagrangian/molecularDynamics/molecule/{polyatomic => molecules}/polyatomic/polyatomic.H (88%) rename src/lagrangian/molecularDynamics/molecule/{polyatomic => molecules}/polyatomic/polyatomicI.H (100%) rename src/lagrangian/molecularDynamics/molecule/{polyatomic => molecules}/polyatomic/polyatomicIO.C (94%) diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/createFields.H b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/createFields.H index dc88bf6e88..146db638db 100644 --- a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/createFields.H +++ b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/createFields.H @@ -12,6 +12,23 @@ mesh ); - potential pot(mesh); + word cloudName("polyatomicCloud"); - polyatomicCloud molecules(mesh, pot); + potential pot + ( + mesh, + IOdictionary + ( + IOobject + ( + cloudName + "Properties", + mesh.time().constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE, + false + ) + ) + ); + + polyatomicCloud molecules(cloudName, mesh, pot); diff --git a/applications/utilities/preProcessing/mdInitialise/Make/options b/applications/utilities/preProcessing/mdInitialise/Make/options index 289c0990a2..7633b07554 100644 --- a/applications/utilities/preProcessing/mdInitialise/Make/options +++ b/applications/utilities/preProcessing/mdInitialise/Make/options @@ -3,7 +3,6 @@ EXE_INC = \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ -I$(LIB_SRC)/lagrangian/molecularDynamics/molecule/lnInclude \ -I$(LIB_SRC)/lagrangian/molecularDynamics/potential/lnInclude \ - -I$(LIB_SRC)/lagrangian/molecularDynamics/molecularMeasurements/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude @@ -13,6 +12,5 @@ EXE_LIBS = \ -lfiniteVolume \ -llagrangian \ -lmolecule \ - -lpotential \ - -lmolecularMeasurements + -lpotential diff --git a/applications/utilities/preProcessing/mdInitialise/mdInitialise.C b/applications/utilities/preProcessing/mdInitialise/mdInitialise.C index 10a6602181..38a76947be 100644 --- a/applications/utilities/preProcessing/mdInitialise/mdInitialise.C +++ b/applications/utilities/preProcessing/mdInitialise/mdInitialise.C @@ -62,11 +62,28 @@ int main(int argc, char *argv[]) ) ); - potential pot(mesh, mdInitialiseDict, idListDict); + word cloudName("polyatomicCloud"); - polyatomicCloud molecules(mesh, pot, mdInitialiseDict); + potential pot + ( + mesh, + mdInitialiseDict, + IOdictionary + ( + IOobject + ( + cloudName + "Properties", + mesh.time().constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE, + false + ) + ), + idListDict + ); - Info<< "Cloud is called " << molecules.name() << endl; + polyatomicCloud molecules(cloudName, mesh, pot, mdInitialiseDict); label totalMolecules = molecules.size(); diff --git a/src/lagrangian/molecularDynamics/molecule/Make/files b/src/lagrangian/molecularDynamics/molecule/Make/files index 94c3ffd8e8..305f857180 100644 --- a/src/lagrangian/molecularDynamics/molecule/Make/files +++ b/src/lagrangian/molecularDynamics/molecule/Make/files @@ -1,9 +1,9 @@ -constPropSite/constPropSite.C +clouds/baseClasses/moleculeCloud/moleculeCloud.C -polyatomic/polyatomic/polyatomic.C -polyatomic/polyatomic/polyatomicIO.C +molecules/constPropSite/constPropSite.C -polyatomic/polyatomicCloud/polyatomicCloud.C +molecules/polyatomic/polyatomic.C +molecules/polyatomic/polyatomicIO.C /* controllers/basic/controllers/controllers.C controllers/basic/stateController/stateController.C diff --git a/src/lagrangian/molecularDynamics/molecule/Make/options b/src/lagrangian/molecularDynamics/molecule/Make/options index 5698f81a65..78ecf2089f 100644 --- a/src/lagrangian/molecularDynamics/molecule/Make/options +++ b/src/lagrangian/molecularDynamics/molecule/Make/options @@ -2,13 +2,11 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude \ - -I$(LIB_SRC)/lagrangian/molecularDynamics/potential/lnInclude \ - -I$(LIB_SRC)/lagrangian/molecularDynamics/molecularMeasurements/lnInclude + -I$(LIB_SRC)/lagrangian/molecularDynamics/potential/lnInclude LIB_LIBS = \ -lfiniteVolume \ -lmeshTools \ -llagrangian \ - -lpotential \ - -lmolecularMeasurements + -lpotential diff --git a/src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomicCloud/polyatomicCloud.C b/src/lagrangian/molecularDynamics/molecule/clouds/Templates/MoleculeCloud/MoleculeCloud.C similarity index 84% rename from src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomicCloud/polyatomicCloud.C rename to src/lagrangian/molecularDynamics/molecule/clouds/Templates/MoleculeCloud/MoleculeCloud.C index 2bfb744eb0..163d39a96a 100644 --- a/src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomicCloud/polyatomicCloud.C +++ b/src/lagrangian/molecularDynamics/molecule/clouds/Templates/MoleculeCloud/MoleculeCloud.C @@ -23,36 +23,29 @@ License \*----------------------------------------------------------------------------*/ -#include "polyatomicCloud.H" +#include "MoleculeCloud.H" #include "fvMesh.H" #include "mathematicalConstants.H" using namespace Foam::constant::mathematical; -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -namespace Foam -{ - defineTemplateTypeNameAndDebug(Cloud, 0); -} // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -void Foam::polyatomicCloud::buildConstProps() +template +void Foam::MoleculeCloud::buildConstProps() { - Info<< nl << "Reading mdProperties dictionary." << endl; - const List& idList(pot_.idList()); constPropList_.setSize(idList.size()); const List& siteIdList(pot_.siteIdList()); - IOdictionary mdPropertiesDict + IOdictionary molPropertiesDict ( IOobject ( - "mdProperties", + this->name() + "Properties", mesh_.time().constant(), mesh_, IOobject::MUST_READ_IF_MODIFIED, @@ -61,11 +54,13 @@ void Foam::polyatomicCloud::buildConstProps() ) ); + Info<< nl << "Reading " << molPropertiesDict.name() << endl; + forAll(idList, i) { const word& id = idList[i]; - const dictionary& molDict(mdPropertiesDict.subDict(id)); + const dictionary& molDict(molPropertiesDict.subDict(id)); List siteIdNames = molDict.lookup("siteIds"); @@ -81,17 +76,14 @@ void Foam::polyatomicCloud::buildConstProps() { FatalErrorIn ( - "Foam::polyatomic::constantProperties::constantProperties" - "(" - "const dictionary& dict" - ")" + "void Foam::MoleculeCloud::buildConstProps()" ) << siteId << " site not found." << nl << abort(FatalError); } } - constPropList_[i] = polyatomic::constantProperties + constPropList_[i] = typename MoleculeType::constantProperties ( molDict, siteIds @@ -100,11 +92,15 @@ void Foam::polyatomicCloud::buildConstProps() } -void Foam::polyatomicCloud::setSiteSizesAndPositions() +template +void Foam::MoleculeCloud::setSiteSizesAndPositions() { - forAllIter(polyatomicCloud, *this, mol) + forAllIter(typename MoleculeCloud, *this, mol) { - const polyatomic::constantProperties& cP = constProps(mol().id()); + const typename MoleculeType::constantProperties& cP + ( + constProps(mol().id()) + ); mol().setSiteSizes(cP.nSites()); @@ -113,14 +109,15 @@ void Foam::polyatomicCloud::setSiteSizesAndPositions() } -void Foam::polyatomicCloud::buildCellOccupancy() +template +void Foam::MoleculeCloud::buildCellOccupancy() { forAll(cellOccupancy_, cO) { cellOccupancy_[cO].clear(); } - forAllIter(polyatomicCloud, *this, mol) + forAllIter(typename MoleculeCloud, *this, mol) { cellOccupancy_[mol().cell()].append(&mol()); } @@ -132,15 +129,16 @@ void Foam::polyatomicCloud::buildCellOccupancy() } -void Foam::polyatomicCloud::calculatePairForce() +template +void Foam::MoleculeCloud::calculatePairForce() { PstreamBuffers pBufs(Pstream::nonBlocking); // Start sending referred data il_.sendReferredData(cellOccupancy(), pBufs); - polyatomic* molI = NULL; - polyatomic* molJ = NULL; + MoleculeType* molI = NULL; + MoleculeType* molJ = NULL; { // Real-Real interactions @@ -155,7 +153,7 @@ void Foam::polyatomicCloud::calculatePairForce() forAll(dil[d], interactingCells) { - List cellJ = + List cellJ = cellOccupancy_[dil[d][interactingCells]]; forAll(cellJ, cellJMols) @@ -187,24 +185,24 @@ void Foam::polyatomicCloud::calculatePairForce() const labelListList& ril = il_.ril(); - List >& referredMols = il_.referredParticles(); + List >& referredMols = il_.referredParticles(); forAll(ril, r) { const List