diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/createFields.H b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/createFields.H new file mode 100644 index 0000000000..dc88bf6e88 --- /dev/null +++ b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/createFields.H @@ -0,0 +1,17 @@ + Info<< "\nReading field U\n" << endl; + volVectorField U + ( + IOobject + ( + "U", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh + ); + + potential pot(mesh); + + polyatomicCloud molecules(mesh, pot); diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/mdFoam.C b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/mdFoam.C index 779172803d..660c12a5b8 100644 --- a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/mdFoam.C +++ b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/mdFoam.C @@ -30,59 +30,25 @@ Description \*---------------------------------------------------------------------------*/ #include "fvCFD.H" -#include "md.H" +#include "polyatomicCloud.H" int main(int argc, char *argv[]) { #include "setRootCase.H" #include "createTime.H" #include "createMesh.H" + #include "createFields.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - Info<< "\nReading field U\n" << endl; - volVectorField U - ( - IOobject - ( - "U", - runTime.timeName(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh - ); - - potential pot(mesh); - - moleculeCloud molecules(mesh, pot); - - #include "temperatureAndPressureVariables.H" - - label nAveragingSteps = 0; - Info<< "\nStarting time loop\n" << endl; while (runTime.loop()) { - nAveragingSteps++; - Info<< "Time = " << runTime.timeName() << endl; molecules.evolve(); - #include "meanMomentumEnergyAndNMols.H" - - #include "temperatureAndPressure.H" - - runTime.write(); - - if (runTime.outputTime()) - { - nAveragingSteps = 0; - } - Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" << " ClockTime = " << runTime.elapsedClockTime() << " s" << nl << endl; diff --git a/src/lagrangian/molecularDynamics/Allwmake b/src/lagrangian/molecularDynamics/Allwmake index 7c17819ad5..118ba05f1a 100755 --- a/src/lagrangian/molecularDynamics/Allwmake +++ b/src/lagrangian/molecularDynamics/Allwmake @@ -4,7 +4,6 @@ makeType=${1:-libso} set -x wmake $makeType potential -wmake $makeType molecularMeasurements wmake $makeType molecule # ----------------------------------------------------------------- end-of-file diff --git a/src/lagrangian/molecularDynamics/molecule/Make/files b/src/lagrangian/molecularDynamics/molecule/Make/files index 9086ba7ffa..7f8abcb0f3 100644 --- a/src/lagrangian/molecularDynamics/molecule/Make/files +++ b/src/lagrangian/molecularDynamics/molecule/Make/files @@ -1,9 +1,8 @@ -reducedUnits/reducedUnits.C -reducedUnits/reducedUnitsIO.C +constPropSite/constPropSite.C -molecule/molecule.C -molecule/moleculeIO.C +polyatomic/polyatomic/polyatomic.C +polyatomic/polyatomic/polyatomicIO.C -moleculeCloud/moleculeCloud.C +polyatomic/polyatomicCloud/polyatomicCloud.C LIB = $(FOAM_LIBBIN)/libmolecule diff --git a/src/lagrangian/molecularDynamics/molecule/constPropSite/constPropSite.C b/src/lagrangian/molecularDynamics/molecule/constPropSite/constPropSite.C new file mode 100644 index 0000000000..431f37aeb4 --- /dev/null +++ b/src/lagrangian/molecularDynamics/molecule/constPropSite/constPropSite.C @@ -0,0 +1,76 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Class + constPropSite + +Description + +\*----------------------------------------------------------------------------*/ + +#include "constPropSite.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::constPropSite::constPropSite() +: + siteReferencePosition_(vector::zero), + siteMass_(0.0), + siteCharge_(0.0), + siteId_(0), + name_(), + pairPotentialSite_(false), + electrostaticSite_(false) +{} + + +Foam::constPropSite::constPropSite +( + const vector& siteReferencePosition, + const scalar& siteMass, + const scalar& siteCharge, + const label& siteId, + const word& name, + const bool& pairPotentialSite, + const bool& electrostaticSite +) +: + siteReferencePosition_(siteReferencePosition), + siteMass_(siteMass), + siteCharge_(siteCharge), + siteId_(siteId), + name_(name), + pairPotentialSite_(pairPotentialSite), + electrostaticSite_(electrostaticSite) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::constPropSite::~constPropSite() +{} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/molecule/constPropSite/constPropSite.H b/src/lagrangian/molecularDynamics/molecule/constPropSite/constPropSite.H new file mode 100644 index 0000000000..0ffb63b0a8 --- /dev/null +++ b/src/lagrangian/molecularDynamics/molecule/constPropSite/constPropSite.H @@ -0,0 +1,162 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . +Class + + +Description + +SourceFiles + constPropSiteI.H + constPropSite.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constPropSite_H +#define constPropSite_H + +#include "vector.H" +#include "IFstream.H" +#include "OFstream.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class constPropSite Declaration +\*---------------------------------------------------------------------------*/ + +class constPropSite +{ + // Private data + + //- + vector siteReferencePosition_; + + //- + scalar siteMass_; + + //- + scalar siteCharge_; + + //- + label siteId_; + + //- + word name_; + + //- + bool pairPotentialSite_; + + //- + bool electrostaticSite_; + + +public: + + // Constructors + + //- Construct null + constPropSite(); + + //- Construct from components + constPropSite + ( + const vector& siteReferencePosition, + const scalar& siteMass, + const scalar& siteCharge, + const label& siteId, + const word& name, + const bool& pairPotentialSite, + const bool& electrostaticSite + ); + + + // Selectors + + // Destructor + + ~constPropSite(); + + // Member Functions + + // Access + + //- + inline const vector& siteReferencePosition() const; + + //- + inline vector& siteReferencePosition(); + + //- + inline const scalar& siteMass() const; + + //- + inline scalar& siteMass(); + + //- + inline const scalar& siteCharge() const; + + //- + inline scalar& siteCharge(); + + //- + inline const label& siteId() const; + + //- + inline label& siteId(); + + //- + inline const word& name() const; + + //- + inline word& name(); + + //- + inline const bool& pairPotentialSite() const; + + //- + inline bool& pairPotentialSite(); + + //- + inline const bool& electrostaticSite() const; + + //- + inline bool& electrostaticSite(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "constPropSiteI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/molecule/constPropSite/constPropSiteI.H b/src/lagrangian/molecularDynamics/molecule/constPropSite/constPropSiteI.H new file mode 100644 index 0000000000..dbeb395920 --- /dev/null +++ b/src/lagrangian/molecularDynamics/molecule/constPropSite/constPropSiteI.H @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Class + + +Description + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline const Foam::vector& Foam::constPropSite::siteReferencePosition() const +{ + return siteReferencePosition_; +} + + +inline Foam::vector& Foam::constPropSite::siteReferencePosition() +{ + return siteReferencePosition_; +} + + +inline const Foam::scalar& Foam::constPropSite::siteMass() const +{ + return siteMass_; +} + + +inline Foam::scalar& Foam::constPropSite::siteMass() +{ + return siteMass_; +} + + +inline const Foam::scalar& Foam::constPropSite::siteCharge() const +{ + return siteCharge_; +} + + +inline Foam::scalar& Foam::constPropSite::siteCharge() +{ + return siteCharge_; +} + + +inline const Foam::label& Foam::constPropSite::siteId() const +{ + return siteId_; +} + + +inline Foam::label& Foam::constPropSite::siteId() +{ + return siteId_; +} + + +inline const Foam::word& Foam::constPropSite::name() const +{ + return name_; +} + + +inline Foam::word& Foam::constPropSite::name() +{ + return name_; +} + + +inline const bool& Foam::constPropSite::pairPotentialSite() const +{ + return pairPotentialSite_; +} + + +inline bool& Foam::constPropSite::pairPotentialSite() +{ + return pairPotentialSite_; +} + + +inline const bool& Foam::constPropSite::electrostaticSite() const +{ + return electrostaticSite_; +} + + +inline bool& Foam::constPropSite::electrostaticSite() +{ + return electrostaticSite_; +} + + +// ************************************************************************* // diff --git a/src/lagrangian/molecularDynamics/molecule/molecule/molecule.C b/src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomic/polyatomic.C similarity index 86% rename from src/lagrangian/molecularDynamics/molecule/molecule/molecule.C rename to src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomic/polyatomic.C index 1163d3f184..f6b43ca0e9 100644 --- a/src/lagrangian/molecularDynamics/molecule/molecule/molecule.C +++ b/src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomic/polyatomic.C @@ -23,14 +23,14 @@ License \*----------------------------------------------------------------------------*/ -#include "moleculeCloud.H" -#include "molecule.H" +#include "polyatomicCloud.H" +#include "polyatomic.H" #include "Random.H" #include "Time.H" // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -Foam::tensor Foam::molecule::rotationTensorX(scalar phi) const +Foam::tensor Foam::polyatomic::rotationTensorX(scalar phi) const { return tensor ( @@ -41,7 +41,7 @@ Foam::tensor Foam::molecule::rotationTensorX(scalar phi) const } -Foam::tensor Foam::molecule::rotationTensorY(scalar phi) const +Foam::tensor Foam::polyatomic::rotationTensorY(scalar phi) const { return tensor ( @@ -52,7 +52,7 @@ Foam::tensor Foam::molecule::rotationTensorY(scalar phi) const } -Foam::tensor Foam::molecule::rotationTensorZ(scalar phi) const +Foam::tensor Foam::polyatomic::rotationTensorZ(scalar phi) const { return tensor ( @@ -65,11 +65,16 @@ Foam::tensor Foam::molecule::rotationTensorZ(scalar phi) const // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -bool Foam::molecule::move(molecule::trackingData& td, const scalar trackTime) +bool Foam::polyatomic::move(polyatomic::trackingData& td, const scalar trackTime) { td.switchProcessor = false; td.keepParticle = true; + if (special_ != SPECIAL_FROZEN) + { + return td.keepParticle; + } + const constantProperties& constProps(td.cloud().constProps(id_)); if (td.part() == 0) @@ -180,7 +185,7 @@ bool Foam::molecule::move(molecule::trackingData& td, const scalar trackTime) } else { - FatalErrorIn("molecule::move(trackingData&, const scalar)") << nl + FatalErrorIn("polyatomic::move(trackingData&, const scalar)") << nl << td.part() << " is an invalid part of the integration method." << abort(FatalError); } @@ -189,7 +194,7 @@ bool Foam::molecule::move(molecule::trackingData& td, const scalar trackTime) } -void Foam::molecule::transformProperties(const tensor& T) +void Foam::polyatomic::transformProperties(const tensor& T) { particle::transformProperties(T); @@ -211,7 +216,7 @@ void Foam::molecule::transformProperties(const tensor& T) } -void Foam::molecule::transformProperties(const vector& separation) +void Foam::polyatomic::transformProperties(const vector& separation) { particle::transformProperties(separation); @@ -224,13 +229,13 @@ void Foam::molecule::transformProperties(const vector& separation) } -void Foam::molecule::setSitePositions(const constantProperties& constProps) +void Foam::polyatomic::setSitePositions(const constantProperties& constProps) { sitePositions_ = position_ + (Q_ & constProps.siteReferencePositions()); } -void Foam::molecule::setSiteSizes(label size) +void Foam::polyatomic::setSiteSizes(label size) { sitePositions_.setSize(size); @@ -238,7 +243,7 @@ void Foam::molecule::setSiteSizes(label size) } -bool Foam::molecule::hitPatch +bool Foam::polyatomic::hitPatch ( const polyPatch&, trackingData&, @@ -251,7 +256,7 @@ bool Foam::molecule::hitPatch } -void Foam::molecule::hitProcessorPatch +void Foam::polyatomic::hitProcessorPatch ( const processorPolyPatch&, trackingData& td @@ -261,7 +266,7 @@ void Foam::molecule::hitProcessorPatch } -void Foam::molecule::hitWallPatch +void Foam::polyatomic::hitWallPatch ( const wallPolyPatch& wpp, trackingData& td, @@ -269,7 +274,7 @@ void Foam::molecule::hitWallPatch ) { // Use of the normal from tetIs is not required as - // hasWallImpactDistance for a moleculeCloud is false. + // hasWallImpactDistance for a polyatomicCloud is false. vector nw = normal(); nw /= mag(nw); @@ -283,7 +288,7 @@ void Foam::molecule::hitWallPatch } -void Foam::molecule::hitPatch +void Foam::polyatomic::hitPatch ( const polyPatch&, trackingData& td diff --git a/src/lagrangian/molecularDynamics/molecule/molecule/molecule.H b/src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomic/polyatomic.H similarity index 89% rename from src/lagrangian/molecularDynamics/molecule/molecule/molecule.H rename to src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomic/polyatomic.H index 54bdb51b9f..5177feb979 100644 --- a/src/lagrangian/molecularDynamics/molecule/molecule/molecule.H +++ b/src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomic/polyatomic.H @@ -22,20 +22,20 @@ License along with OpenFOAM. If not, see . Class - Foam::molecule + Foam::polyatomic Description - Foam::molecule + Foam::polyatomic SourceFiles - moleculeI.H - molecule.C - moleculeIO.C + polyatomicI.H + polyatomic.C + polyatomicIO.C \*---------------------------------------------------------------------------*/ -#ifndef molecule_H -#define molecule_H +#ifndef polyatomic_H +#define polyatomic_H #include "particle.H" #include "IOstream.H" @@ -48,13 +48,13 @@ namespace Foam { // Class forward declarations -class moleculeCloud; +class polyatomicCloud; /*---------------------------------------------------------------------------*\ - Class molecule Declaration + Class polyatomic Declaration \*---------------------------------------------------------------------------*/ -class molecule +class polyatomic : public particle { @@ -73,7 +73,7 @@ public: SPECIAL_USER = 1 }; - //- Class to hold molecule constant properties + //- Class to hold polyatomic constant properties class constantProperties { // Private data @@ -152,7 +152,7 @@ public: //- Class used to pass tracking data to the trackToFace function class trackingData : - public particle::TrackingData + public particle::TrackingData { // label specifying which part of the integration algorithm is taking label part_; @@ -162,9 +162,9 @@ public: // Constructors - trackingData(moleculeCloud& cloud, label part) + trackingData(polyatomicCloud& cloud, label part) : - particle::TrackingData(cloud), + particle::TrackingData(cloud), part_(part) {} @@ -218,12 +218,12 @@ private: public: - friend class Cloud; + friend class Cloud; // Constructors //- Construct from components - inline molecule + inline polyatomic ( const polyMesh& mesh, const vector& position, @@ -242,7 +242,7 @@ public: ); //- Construct from Istream - molecule + polyatomic ( const polyMesh& mesh, Istream& is, @@ -252,7 +252,7 @@ public: //- Construct and return a clone autoPtr clone() const { - return autoPtr(new molecule(*this)); + return autoPtr(new polyatomic(*this)); } //- Factory class to read-construct particles used for @@ -268,9 +268,9 @@ public: mesh_(mesh) {} - autoPtr operator()(Istream& is) const + autoPtr operator()(Istream& is) const { - return autoPtr(new molecule(mesh_, is, true)); + return autoPtr(new polyatomic(mesh_, is, true)); } }; @@ -367,14 +367,14 @@ public: // I-O - static void readFields(Cloud& mC); + static void readFields(Cloud& mC); - static void writeFields(const Cloud& mC); + static void writeFields(const Cloud& mC); // IOstream Operators - friend Ostream& operator<<(Ostream&, const molecule&); + friend Ostream& operator<<(Ostream&, const polyatomic&); }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -383,7 +383,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#include "moleculeI.H" +#include "polyatomicI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/molecularDynamics/molecule/molecule/moleculeI.H b/src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomic/polyatomicI.H similarity index 76% rename from src/lagrangian/molecularDynamics/molecule/molecule/moleculeI.H rename to src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomic/polyatomicI.H index 451ed5750c..931d53b8bf 100644 --- a/src/lagrangian/molecularDynamics/molecule/molecule/moleculeI.H +++ b/src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomic/polyatomicI.H @@ -25,7 +25,7 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -inline Foam::molecule::constantProperties::constantProperties() +inline Foam::polyatomic::constantProperties::constantProperties() : siteReferencePositions_(Field(0)), siteMasses_(List(0)), @@ -38,7 +38,7 @@ inline Foam::molecule::constantProperties::constantProperties() {} -inline Foam::molecule::constantProperties::constantProperties +inline Foam::polyatomic::constantProperties::constantProperties ( const dictionary& dict ) @@ -78,7 +78,7 @@ inline Foam::molecule::constantProperties::constantProperties if (siteIds_.size() == 1) { - // Single site molecule - no rotational motion. + // Single site polyatomic - no rotational motion. siteReferencePositions_[0] = vector::zero; @@ -86,9 +86,9 @@ inline Foam::molecule::constantProperties::constantProperties } else if (linearMoleculeTest()) { - // Linear molecule. + // Linear polyatomic. - Info<< nl << "Linear molecule." << endl; + Info<< nl << "Linear polyatomic." << endl; vector dir = siteReferencePositions_[1] - siteReferencePositions_[0]; @@ -131,7 +131,7 @@ inline Foam::molecule::constantProperties::constantProperties } else { - // Fully 6DOF molecule + // Fully 6DOF polyatomic // Calculate the inertia tensor in the current orientation @@ -151,8 +151,8 @@ inline Foam::molecule::constantProperties::constantProperties if (eigenValues(momOfInertia).x() < VSMALL) { - FatalErrorIn("molecule::constantProperties::constantProperties") - << "An eigenvalue of the inertia tensor is zero, the molecule " + FatalErrorIn("polyatomic::constantProperties::constantProperties") + << "An eigenvalue of the inertia tensor is zero, the polyatomic " << dict.name() << " is not a valid 6DOF shape." << nl << abort(FatalError); } @@ -217,7 +217,7 @@ inline Foam::molecule::constantProperties::constantProperties } -inline Foam::molecule::molecule +inline Foam::polyatomic::polyatomic ( const polyMesh& mesh, const vector& position, @@ -256,7 +256,7 @@ inline Foam::molecule::molecule // * * * * * * * constantProperties Private Member Functions * * * * * * * * // -inline void Foam::molecule::constantProperties::checkSiteListSizes() const +inline void Foam::polyatomic::constantProperties::checkSiteListSizes() const { if ( @@ -264,7 +264,7 @@ inline void Foam::molecule::constantProperties::checkSiteListSizes() const || siteIds_.size() != siteCharges_.size() ) { - FatalErrorIn("molecule::constantProperties::checkSiteListSizes") + FatalErrorIn("polyatomic::constantProperties::checkSiteListSizes") << "Sizes of site id, charge and " << "referencePositions are not the same. " << nl << abort(FatalError); @@ -272,7 +272,7 @@ inline void Foam::molecule::constantProperties::checkSiteListSizes() const } -inline void Foam::molecule::constantProperties::setInteracionSiteBools +inline void Foam::polyatomic::constantProperties::setInteracionSiteBools ( const List& siteIds, const List& pairPotSiteIds @@ -293,7 +293,7 @@ inline void Foam::molecule::constantProperties::setInteracionSiteBools } -inline bool Foam::molecule::constantProperties::linearMoleculeTest() const +inline bool Foam::polyatomic::constantProperties::linearMoleculeTest() const { if (siteIds_.size() == 2) { @@ -328,48 +328,48 @@ inline bool Foam::molecule::constantProperties::linearMoleculeTest() const // * * * * * * * constantProperties Member Functions * * * * * * * * * * * * // inline const Foam::Field& -Foam::molecule::constantProperties::siteReferencePositions() const +Foam::polyatomic::constantProperties::siteReferencePositions() const { return siteReferencePositions_; } inline const Foam::List& -Foam::molecule::constantProperties::siteMasses() const +Foam::polyatomic::constantProperties::siteMasses() const { return siteMasses_; } inline const Foam::List& -Foam::molecule::constantProperties::siteCharges() const +Foam::polyatomic::constantProperties::siteCharges() const { return siteCharges_; } inline const Foam::List& -Foam::molecule::constantProperties::siteIds() const +Foam::polyatomic::constantProperties::siteIds() const { return siteIds_; } inline Foam::List& -Foam::molecule::constantProperties::siteIds() +Foam::polyatomic::constantProperties::siteIds() { return siteIds_; } inline const Foam::List& -Foam::molecule::constantProperties::pairPotentialSites() const +Foam::polyatomic::constantProperties::pairPotentialSites() const { return pairPotentialSites_; } -inline bool Foam::molecule::constantProperties::pairPotentialSite +inline bool Foam::polyatomic::constantProperties::pairPotentialSite ( label sId ) const @@ -378,7 +378,7 @@ inline bool Foam::molecule::constantProperties::pairPotentialSite if (s == -1) { - FatalErrorIn("moleculeI.H") << nl + FatalErrorIn("polyatomicI.H") << nl << sId << " site not found." << nl << abort(FatalError); } @@ -388,13 +388,13 @@ inline bool Foam::molecule::constantProperties::pairPotentialSite inline const Foam::List& -Foam::molecule::constantProperties::electrostaticSites() const +Foam::polyatomic::constantProperties::electrostaticSites() const { return electrostaticSites_; } -inline bool Foam::molecule::constantProperties::electrostaticSite +inline bool Foam::polyatomic::constantProperties::electrostaticSite ( label sId ) const @@ -405,7 +405,7 @@ inline bool Foam::molecule::constantProperties::electrostaticSite { FatalErrorIn ( - "molecule::constantProperties::electrostaticSite(label)" + "polyatomic::constantProperties::electrostaticSite(label)" ) << sId << " site not found." << nl << abort(FatalError); } @@ -415,25 +415,25 @@ inline bool Foam::molecule::constantProperties::electrostaticSite inline const Foam::diagTensor& -Foam::molecule::constantProperties::momentOfInertia() const +Foam::polyatomic::constantProperties::momentOfInertia() const { return momentOfInertia_; } -inline bool Foam::molecule::constantProperties::linearMolecule() const +inline bool Foam::polyatomic::constantProperties::linearMolecule() const { return ((momentOfInertia_.xx() < 0) && (momentOfInertia_.yy() > 0)); } -inline bool Foam::molecule::constantProperties::pointMolecule() const +inline bool Foam::polyatomic::constantProperties::pointMolecule() const { return (momentOfInertia_.zz() < 0); } -inline Foam::label Foam::molecule::constantProperties::degreesOfFreedom() const +inline Foam::label Foam::polyatomic::constantProperties::degreesOfFreedom() const { if (linearMolecule()) { @@ -450,154 +450,154 @@ inline Foam::label Foam::molecule::constantProperties::degreesOfFreedom() const } -inline Foam::scalar Foam::molecule::constantProperties::mass() const +inline Foam::scalar Foam::polyatomic::constantProperties::mass() const { return mass_; } -inline Foam::label Foam::molecule::constantProperties::nSites() const +inline Foam::label Foam::polyatomic::constantProperties::nSites() const { return siteIds_.size(); } -// * * * * * * * * * * * * molecule Member Functions * * * * * * * * * * * * // +// * * * * * * * * * * * * polyatomic Member Functions * * * * * * * * * * * * // -inline const Foam::tensor& Foam::molecule::Q() const +inline const Foam::tensor& Foam::polyatomic::Q() const { return Q_; } -inline Foam::tensor& Foam::molecule::Q() +inline Foam::tensor& Foam::polyatomic::Q() { return Q_; } -inline const Foam::vector& Foam::molecule::v() const +inline const Foam::vector& Foam::polyatomic::v() const { return v_; } -inline Foam::vector& Foam::molecule::v() +inline Foam::vector& Foam::polyatomic::v() { return v_; } -inline const Foam::vector& Foam::molecule::a() const +inline const Foam::vector& Foam::polyatomic::a() const { return a_; } -inline Foam::vector& Foam::molecule::a() +inline Foam::vector& Foam::polyatomic::a() { return a_; } -inline const Foam::vector& Foam::molecule::pi() const +inline const Foam::vector& Foam::polyatomic::pi() const { return pi_; } -inline Foam::vector& Foam::molecule::pi() +inline Foam::vector& Foam::polyatomic::pi() { return pi_; } -inline const Foam::vector& Foam::molecule::tau() const +inline const Foam::vector& Foam::polyatomic::tau() const { return tau_; } -inline Foam::vector& Foam::molecule::tau() +inline Foam::vector& Foam::polyatomic::tau() { return tau_; } -inline const Foam::List& Foam::molecule::siteForces() const +inline const Foam::List& Foam::polyatomic::siteForces() const { return siteForces_; } -inline Foam::List& Foam::molecule::siteForces() +inline Foam::List& Foam::polyatomic::siteForces() { return siteForces_; } -inline const Foam::List& Foam::molecule::sitePositions() const +inline const Foam::List& Foam::polyatomic::sitePositions() const { return sitePositions_; } -inline Foam::List& Foam::molecule::sitePositions() +inline Foam::List& Foam::polyatomic::sitePositions() { return sitePositions_; } -inline const Foam::vector& Foam::molecule::specialPosition() const +inline const Foam::vector& Foam::polyatomic::specialPosition() const { return specialPosition_; } -inline Foam::vector& Foam::molecule::specialPosition() +inline Foam::vector& Foam::polyatomic::specialPosition() { return specialPosition_; } -inline Foam::scalar Foam::molecule::potentialEnergy() const +inline Foam::scalar Foam::polyatomic::potentialEnergy() const { return potentialEnergy_; } -inline Foam::scalar& Foam::molecule::potentialEnergy() +inline Foam::scalar& Foam::polyatomic::potentialEnergy() { return potentialEnergy_; } -inline const Foam::tensor& Foam::molecule::rf() const +inline const Foam::tensor& Foam::polyatomic::rf() const { return rf_; } -inline Foam::tensor& Foam::molecule::rf() +inline Foam::tensor& Foam::polyatomic::rf() { return rf_; } -inline Foam::label Foam::molecule::special() const +inline Foam::label Foam::polyatomic::special() const { return special_; } -inline bool Foam::molecule::tethered() const +inline bool Foam::polyatomic::tethered() const { return special_ == SPECIAL_TETHERED; } -inline Foam::label Foam::molecule::id() const +inline Foam::label Foam::polyatomic::id() const { return id_; } diff --git a/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C b/src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomic/polyatomicIO.C similarity index 90% rename from src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C rename to src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomic/polyatomicIO.C index 77685e6c0d..0d93a071c0 100644 --- a/src/lagrangian/molecularDynamics/molecule/molecule/moleculeIO.C +++ b/src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomic/polyatomicIO.C @@ -23,13 +23,13 @@ License \*---------------------------------------------------------------------------*/ -#include "molecule.H" +#include "polyatomic.H" #include "IOstreams.H" -#include "moleculeCloud.H" +#include "polyatomicCloud.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::molecule::molecule +Foam::polyatomic::polyatomic ( const polyMesh& mesh, Istream& is, @@ -91,13 +91,13 @@ Foam::molecule::molecule // Check state of Istream is.check ( - "Foam::molecule::molecule" - "(const Cloud& cloud, Foam::Istream&), bool" + "Foam::polyatomic::polyatomic" + "(const Cloud& cloud, Foam::Istream&), bool" ); } -void Foam::molecule::readFields(Cloud& mC) +void Foam::polyatomic::readFields(Cloud& mC) { if (!mC.size()) { @@ -134,9 +134,9 @@ void Foam::molecule::readFields(Cloud& mC) mC.checkFieldIOobject(mC, id); label i = 0; - forAllIter(moleculeCloud, mC, iter) + forAllIter(polyatomicCloud, mC, iter) { - molecule& mol = iter(); + polyatomic& mol = iter(); mol.Q_ = Q[i]; mol.v_ = v[i]; @@ -151,7 +151,7 @@ void Foam::molecule::readFields(Cloud& mC) } -void Foam::molecule::writeFields(const Cloud& mC) +void Foam::polyatomic::writeFields(const Cloud& mC) { particle::writeFields(mC); @@ -203,9 +203,9 @@ void Foam::molecule::writeFields(const Cloud& mC) ); label i = 0; - forAllConstIter(moleculeCloud, mC, iter) + forAllConstIter(polyatomicCloud, mC, iter) { - const molecule& mol = iter(); + const polyatomic& mol = iter(); Q[i] = mol.Q_; v[i] = mol.v_; @@ -244,13 +244,13 @@ void Foam::molecule::writeFields(const Cloud& mC) Info<< "writeFields " << mC.name() << endl; - if (isA(mC)) + if (isA(mC)) { - const moleculeCloud& m = dynamic_cast(mC); + const polyatomicCloud& m = dynamic_cast(mC); m.writeXYZ ( - m.mesh().time().timePath()/cloud::prefix/"moleculeCloud.xmol" + m.mesh().time().timePath()/cloud::prefix/"polyatomicCloud.xmol" ); } } @@ -258,7 +258,7 @@ void Foam::molecule::writeFields(const Cloud& mC) // * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // -Foam::Ostream& Foam::operator<<(Ostream& os, const molecule& mol) +Foam::Ostream& Foam::operator<<(Ostream& os, const polyatomic& mol) { if (os.format() == IOstream::ASCII) { @@ -302,7 +302,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const molecule& mol) os.check ( "Foam::Ostream& Foam::operator<<" - "(Foam::Ostream&, const Foam::molecule&)" + "(Foam::Ostream&, const Foam::polyatomic&)" ); return os; diff --git a/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C b/src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomicCloud/polyatomicCloud.C similarity index 88% rename from src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C rename to src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomicCloud/polyatomicCloud.C index 289735c170..eb1680b646 100644 --- a/src/lagrangian/molecularDynamics/molecule/moleculeCloud/moleculeCloud.C +++ b/src/lagrangian/molecularDynamics/molecule/polyatomic/polyatomicCloud/polyatomicCloud.C @@ -23,7 +23,7 @@ License \*----------------------------------------------------------------------------*/ -#include "moleculeCloud.H" +#include "polyatomicCloud.H" #include "fvMesh.H" #include "mathematicalConstants.H" @@ -33,14 +33,14 @@ using namespace Foam::constant::mathematical; namespace Foam { - defineTemplateTypeNameAndDebug(Cloud, 0); + defineTemplateTypeNameAndDebug(Cloud, 0); } // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -void Foam::moleculeCloud::buildConstProps() +void Foam::polyatomicCloud::buildConstProps() { - Info<< nl << "Reading moleculeProperties dictionary." << endl; + Info<< nl << "Reading polyatomicProperties dictionary." << endl; const List& idList(pot_.idList()); @@ -48,11 +48,11 @@ void Foam::moleculeCloud::buildConstProps() const List& siteIdList(pot_.siteIdList()); - IOdictionary moleculePropertiesDict + IOdictionary polyatomicPropertiesDict ( IOobject ( - "moleculeProperties", + "polyatomicProperties", mesh_.time().constant(), mesh_, IOobject::MUST_READ_IF_MODIFIED, @@ -64,7 +64,7 @@ void Foam::moleculeCloud::buildConstProps() forAll(idList, i) { const word& id = idList[i]; - const dictionary& molDict = moleculePropertiesDict.subDict(id); + const dictionary& molDict = polyatomicPropertiesDict.subDict(id); List siteIdNames = molDict.lookup("siteIds"); @@ -78,26 +78,26 @@ void Foam::moleculeCloud::buildConstProps() if (siteIds[sI] == -1) { - FatalErrorIn("moleculeCloud::buildConstProps()") + FatalErrorIn("polyatomicCloud::buildConstProps()") << siteId << " site not found." << nl << abort(FatalError); } } - molecule::constantProperties& constProp = constPropList_[i]; + polyatomic::constantProperties& constProp = constPropList_[i]; - constProp = molecule::constantProperties(molDict); + constProp = polyatomic::constantProperties(molDict); constProp.siteIds() = siteIds; } } -void Foam::moleculeCloud::setSiteSizesAndPositions() +void Foam::polyatomicCloud::setSiteSizesAndPositions() { - forAllIter(moleculeCloud, *this, mol) + forAllIter(polyatomicCloud, *this, mol) { - const molecule::constantProperties& cP = constProps(mol().id()); + const polyatomic::constantProperties& cP = constProps(mol().id()); mol().setSiteSizes(cP.nSites()); @@ -106,14 +106,14 @@ void Foam::moleculeCloud::setSiteSizesAndPositions() } -void Foam::moleculeCloud::buildCellOccupancy() +void Foam::polyatomicCloud::buildCellOccupancy() { forAll(cellOccupancy_, cO) { cellOccupancy_[cO].clear(); } - forAllIter(moleculeCloud, *this, mol) + forAllIter(polyatomicCloud, *this, mol) { cellOccupancy_[mol().cell()].append(&mol()); } @@ -125,15 +125,15 @@ void Foam::moleculeCloud::buildCellOccupancy() } -void Foam::moleculeCloud::calculatePairForce() +void Foam::polyatomicCloud::calculatePairForce() { PstreamBuffers pBufs(Pstream::nonBlocking); // Start sending referred data il_.sendReferredData(cellOccupancy(), pBufs); - molecule* molI = NULL; - molecule* molJ = NULL; + polyatomic* molI = NULL; + polyatomic* molJ = NULL; { // Real-Real interactions @@ -148,7 +148,7 @@ void Foam::moleculeCloud::calculatePairForce() forAll(dil[d], interactingCells) { - List cellJ = + List cellJ = cellOccupancy_[dil[d][interactingCells]]; forAll(cellJ, cellJMols) @@ -180,24 +180,24 @@ void Foam::moleculeCloud::calculatePairForce() const labelListList& ril = il_.ril(); - List >& referredMols = il_.referredParticles(); + List >& referredMols = il_.referredParticles(); forAll(ril, r) { const List