diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/Make/files b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/Make/files new file mode 100644 index 0000000000..c3a050bb68 --- /dev/null +++ b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/Make/files @@ -0,0 +1,3 @@ +mdEquilibrationFoam.C + +EXE = $(FOAM_APPBIN)/mdEquilibrationFoam diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/Make/options b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/Make/options new file mode 100644 index 0000000000..91cab4609b --- /dev/null +++ b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/Make/options @@ -0,0 +1,15 @@ +EXE_INC = \ + -I$(LIB_SRC)/lagrangian/molecularDynamics/molecule/lnInclude \ + -I$(LIB_SRC)/lagrangian/molecularDynamics/potential/lnInclude \ + -I$(LIB_SRC)/lagrangian/molecularDynamics/molecularMeasurements/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/lagrangian/basic/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude + +EXE_LIBS = \ + -lmeshTools \ + -lfiniteVolume \ + -llagrangian \ + -lmolecule \ + -lpotential \ + -lmolecularMeasurements diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C new file mode 100644 index 0000000000..96c07a1756 --- /dev/null +++ b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2008-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 . + +Application + mdEquilibrationFoam + +Description + Equilibrates and/or preconditions molecular dynamics systems + +\*---------------------------------------------------------------------------*/ + +#include "fvCFD.H" +#include "md.H" + +int main(int argc, char *argv[]) +{ + #include "setRootCase.H" + #include "createTime.H" + #include "createMesh.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" + + #include "readmdEquilibrationDict.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" + + #include "temperatureEquilibration.H" + + runTime.write(); + + if (runTime.outputTime()) + { + nAveragingSteps = 0; + } + + Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" + << " ClockTime = " << runTime.elapsedClockTime() << " s" + << nl << endl; + } + + Info<< "End\n" << endl; + + return 0; +} + + +// ************************************************************************* // diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H new file mode 100644 index 0000000000..3f43981907 --- /dev/null +++ b/applications/solvers/discreteMethods/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H @@ -0,0 +1,18 @@ +Info<< nl << "Reading MD Equilibration Dictionary" << nl << endl; + +IOdictionary mdEquilibrationDict +( + IOobject + ( + "mdEquilibrationDict", + runTime.system(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE + ) +); + +scalar targetTemperature = readScalar +( + mdEquilibrationDict.lookup("targetTemperature") +); diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/Make/options b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/Make/options index 98f09f1b4b..91cab4609b 100644 --- a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/Make/options +++ b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/Make/options @@ -1,9 +1,7 @@ -EXE_DEBUG = -DFULLDEBUG -g -O0 - EXE_INC = \ - ${EXE_DEBUG} \ -I$(LIB_SRC)/lagrangian/molecularDynamics/molecule/lnInclude \ -I$(LIB_SRC)/lagrangian/molecularDynamics/potential/lnInclude \ + -I$(LIB_SRC)/lagrangian/molecularDynamics/molecularMeasurements/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/lagrangian/basic/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude @@ -13,4 +11,5 @@ EXE_LIBS = \ -lfiniteVolume \ -llagrangian \ -lmolecule \ - -lpotential + -lpotential \ + -lmolecularMeasurements diff --git a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/mdFoam.C b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/mdFoam.C index 38510dc453..779172803d 100644 --- a/applications/solvers/discreteMethods/molecularDynamics/mdFoam/mdFoam.C +++ b/applications/solvers/discreteMethods/molecularDynamics/mdFoam/mdFoam.C @@ -30,31 +30,60 @@ Description \*---------------------------------------------------------------------------*/ #include "fvCFD.H" -#include "monoatomicCloud.H" -#include "polyatomicCloud.H" +#include "md.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; - monoatomics.evolve(); + molecules.evolve(); - polyatomics.evolve(); + #include "meanMomentumEnergyAndNMols.H" + + #include "temperatureAndPressure.H" runTime.write(); - Info<< nl << "ExecutionTime = " << runTime.elapsedCpuTime() << " s" + if (runTime.outputTime()) + { + nAveragingSteps = 0; + } + + Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" << " ClockTime = " << runTime.elapsedClockTime() << " s" << nl << endl; } diff --git a/applications/utilities/preProcessing/mdInitialise/Make/options b/applications/utilities/preProcessing/mdInitialise/Make/options index 7633b07554..289c0990a2 100644 --- a/applications/utilities/preProcessing/mdInitialise/Make/options +++ b/applications/utilities/preProcessing/mdInitialise/Make/options @@ -3,6 +3,7 @@ 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 @@ -12,5 +13,6 @@ EXE_LIBS = \ -lfiniteVolume \ -llagrangian \ -lmolecule \ - -lpotential + -lpotential \ + -lmolecularMeasurements diff --git a/applications/utilities/preProcessing/mdInitialise/mdInitialise.C b/applications/utilities/preProcessing/mdInitialise/mdInitialise.C index d29ef0a72d..3551e46133 100644 --- a/applications/utilities/preProcessing/mdInitialise/mdInitialise.C +++ b/applications/utilities/preProcessing/mdInitialise/mdInitialise.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2008-2011 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2008-2010 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -26,9 +26,8 @@ Description \*---------------------------------------------------------------------------*/ +#include "md.H" #include "fvCFD.H" -#include "polyatomicCloud.H" -#include "monoatomicCloud.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -51,15 +50,11 @@ int main(int argc, char *argv[]) ) ); - word polyCloudName("polyatomicCloud"); - - const dictionary& polyDict(mdInitialiseDict.subDict(polyCloudName)); - - IOdictionary polyIdListDict + IOdictionary idListDict ( IOobject ( - polyCloudName + "_idList", + "idList", mesh.time().constant(), mesh, IOobject::NO_READ, @@ -67,88 +62,26 @@ int main(int argc, char *argv[]) ) ); - potential polyPot - ( - mesh, - polyDict, - IOdictionary - ( - IOobject - ( - polyCloudName + "Properties", - mesh.time().constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE, - false - ) - ), - polyIdListDict - ); + potential pot(mesh, mdInitialiseDict, idListDict); - polyatomicCloud poly - ( - polyCloudName, - mesh, - polyPot, - polyDict - ); + moleculeCloud molecules(mesh, pot, mdInitialiseDict); - Info<< nl << returnReduce(poly.size(), sumOp