From 4a9f21ba18921144d8fb2e29aad3dd3ae7ffeb71 Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 22 May 2008 15:03:46 +0100 Subject: [PATCH] adding molecular dynamics sources/app/utility --- .../molecularDynamics/gnemdFoam/Make/files | 3 + .../molecularDynamics/gnemdFoam/Make/options | 11 + .../molecularDynamics/gnemdFoam/gnemdFoam.C | 90 ++ .../mdEquilibrationFoam/Make/files | 3 + .../mdEquilibrationFoam/Make/options | 11 + .../mdEquilibrationFoam/mdEquilibrationFoam.C | 86 ++ .../readmdEquilibrationDict.H | 18 + .../preProcessing/molConfig/Make/files | 8 + .../preProcessing/molConfig/Make/options | 15 + .../molConfig/correctVelocities.H | 21 + .../preProcessing/molConfig/createMolecules.C | 253 ++++ .../preProcessing/molConfig/createPositions.H | 26 + .../molConfig/createVelocities.H | 13 + .../preProcessing/molConfig/genMolConfig.C | 129 ++ .../molConfig/latticeStructures/BCC.H | 179 +++ .../molConfig/latticeStructures/FCC.H | 217 +++ .../molConfig/latticeStructures/SC.H | 127 ++ .../preProcessing/molConfig/molConfig.C | 50 + .../preProcessing/molConfig/molConfig.H | 147 ++ .../preProcessing/molConfig/molConfigI.H | 98 ++ .../preProcessing/molConfig/origin.H | 49 + .../preProcessing/molConfig/readZoneSubDict.H | 93 ++ .../preProcessing/molConfig/startingPoint.H | 97 ++ .../velocityDistributions/maxwellian.H | 26 + .../molConfig/velocityDistributions/uniform.H | 27 + src/lagrangian/molecule/Make/files | 57 + src/lagrangian/molecule/Make/options | 8 + .../bufferedAccumulator/bufferedAccumulator.C | 238 +++ .../bufferedAccumulator/bufferedAccumulator.H | 178 +++ .../bufferedAccumulatorI.H | 80 + .../bufferedAccumulatorIO.C | 52 + .../correlationFunction/correlationFunction.C | 224 +++ .../correlationFunction/correlationFunction.H | 180 +++ .../correlationFunctionI.H | 70 + .../correlationFunctionIO.C | 72 + .../molecule/distribution/distribution.C | 449 ++++++ .../molecule/distribution/distribution.H | 133 ++ .../molecule/distribution/distributionI.H | 42 + .../molecule/distribution/distributionIO.C | 35 + .../molecule/mdTools/averageMDFields.H | 227 +++ .../calculateAutoCorrelationFunctions.H | 83 ++ .../molecule/mdTools/calculateMDFields.H | 23 + .../mdTools/calculateTransportProperties.H | 65 + .../mdTools/createAutoCorrelationFunctions.H | 99 ++ .../molecule/mdTools/createMDFields.H | 306 ++++ .../molecule/mdTools/createRefUnits.H | 22 + src/lagrangian/molecule/mdTools/md.H | 11 + .../mdTools/meanMomentumEnergyAndNMols.H | 130 ++ .../molecule/mdTools/resetMDFields.H | 26 + .../molecule/mdTools/temperatureAndPressure.H | 114 ++ .../mdTools/temperatureAndPressureVariables.H | 59 + .../mdTools/temperatureEquilibration.H | 43 + src/lagrangian/molecule/molecule/molecule.C | 214 +++ src/lagrangian/molecule/molecule/molecule.H | 270 ++++ src/lagrangian/molecule/molecule/moleculeI.H | 159 ++ src/lagrangian/molecule/molecule/moleculeIO.C | 208 +++ .../molecule/moleculeCloud/moleculeCloud.C | 135 ++ .../molecule/moleculeCloud/moleculeCloud.H | 350 +++++ ...eculeCloudApplyConstraintsAndThermostats.C | 60 + .../moleculeCloudBuildCellInteractionLists.C | 80 + .../moleculeCloudBuildCellOccupancy.C | 54 + .../moleculeCloudBuildCellReferralLists.C | 194 +++ .../moleculeCloudBuildCellsFoundInRange.H | 52 + .../moleculeCloudBuildDirectInteractionList.H | 188 +++ ...oleculeCloudBuildReferredInteractionList.H | 1285 +++++++++++++++++ .../moleculeCloudCalculateExternalForce.C | 42 + .../moleculeCloudCalculateForce.C | 59 + .../moleculeCloudCalculatePairForce.C | 41 + ...moleculeCloudCalculatePairForceRealCells.H | 49 + ...lculatePairForceRealCellsCalculationStep.H | 33 + ...culeCloudCalculatePairForceReferredCells.H | 59 + .../moleculeCloudCalculateTetherForce.C | 69 + .../molecule/moleculeCloud/moleculeCloudI.H | 184 +++ .../moleculeCloudIntegrateEquationsOfMotion.C | 50 + .../moleculeCloudReadIdList.H | 14 + .../moleculeCloudReadMDParameters.H | 6 + .../moleculeCloudReadMDSolution.H | 27 + .../moleculeCloudReadPotentials.H | 327 +++++ .../moleculeCloudRealCellsInRangeOfSegment.C | 152 ++ ...leculeCloudReferredCellsInRangeOfSegment.C | 117 ++ .../moleculeCloudRemoveHighEnergyOverlaps.C | 67 + ...leCloudRemoveHighEnergyOverlapsRealCells.H | 55 + ...ghEnergyOverlapsRealCellsCalculationStep.H | 70 + ...oudRemoveHighEnergyOverlapsReferredCells.H | 144 ++ .../moleculeCloudTestEdgeEdgeDistance.C | 86 ++ .../moleculeCloudTestPointFaceDistance.C | 235 +++ .../pairPotential/basic/pairPotential.C | 308 ++++ .../pairPotential/basic/pairPotential.H | 196 +++ .../pairPotential/basic/pairPotentialI.H | 102 ++ .../pairPotential/basic/pairPotentialList.C | 180 +++ .../pairPotential/basic/pairPotentialList.H | 169 +++ .../pairPotential/basic/pairPotentialListI.H | 59 + .../pairPotential/derived/lennardJones.C | 132 ++ .../pairPotential/derived/lennardJones.H | 148 ++ .../pairPotential/derived/lennardJonesI.H | 69 + .../tetherPotential/tetherPotential.C | 94 ++ .../tetherPotential/tetherPotential.H | 125 ++ .../tetherPotential/tetherPotentialI.H | 56 + .../tetherPotential/tetherPotentialList.C | 146 ++ .../tetherPotential/tetherPotentialList.H | 125 ++ .../tetherPotential/tetherPotentialListI.H | 50 + .../molecule/reducedUnits/reducedUnits.C | 165 +++ .../molecule/reducedUnits/reducedUnits.H | 184 +++ .../molecule/reducedUnits/reducedUnitsI.H | 95 ++ .../molecule/reducedUnits/reducedUnitsIO.C | 61 + .../referralLists/receivingReferralList.C | 181 +++ .../referralLists/receivingReferralList.H | 138 ++ .../referralLists/receivingReferralListI.H | 56 + .../referralLists/sendingReferralList.C | 178 +++ .../referralLists/sendingReferralList.H | 138 ++ .../referralLists/sendingReferralListI.H | 56 + .../molecule/referredCell/referredCell.C | 441 ++++++ .../molecule/referredCell/referredCell.H | 277 ++++ .../molecule/referredCell/referredCellI.H | 127 ++ .../referredCellList/referredCellList.C | 327 +++++ .../referredCellList/referredCellList.H | 103 ++ .../referredCellList/referredCellListI.H | 42 + .../referredMolecule/referredMolecule.C | 89 ++ .../referredMolecule/referredMolecule.H | 129 ++ .../referredMolecule/referredMoleculeI.H | 75 + tutorials/mdEquilibrationFoam/Allclean | 13 + tutorials/mdEquilibrationFoam/Allrun | 19 + .../constant/polyMesh/blockMeshDict | 73 + .../periodicCube/system/controlDict | 55 + .../periodicCube/system/decomposeParDict | 70 + .../periodicCube/system/fvSchemes | 67 + .../periodicCube/system/fvSolution | 40 + .../periodicCube/system/mdEquilibrationDict | 27 + .../periodicCube/system/mdSolution | 31 + .../periodicCube/system/molConfigDict | 43 + .../periodicCube/system/potentialDict | 89 ++ 131 files changed, 15306 insertions(+) create mode 100755 applications/solvers/molecularDynamics/gnemdFoam/Make/files create mode 100755 applications/solvers/molecularDynamics/gnemdFoam/Make/options create mode 100755 applications/solvers/molecularDynamics/gnemdFoam/gnemdFoam.C create mode 100755 applications/solvers/molecularDynamics/mdEquilibrationFoam/Make/files create mode 100755 applications/solvers/molecularDynamics/mdEquilibrationFoam/Make/options create mode 100755 applications/solvers/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C create mode 100755 applications/solvers/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H create mode 100755 applications/utilities/preProcessing/molConfig/Make/files create mode 100755 applications/utilities/preProcessing/molConfig/Make/options create mode 100755 applications/utilities/preProcessing/molConfig/correctVelocities.H create mode 100755 applications/utilities/preProcessing/molConfig/createMolecules.C create mode 100755 applications/utilities/preProcessing/molConfig/createPositions.H create mode 100755 applications/utilities/preProcessing/molConfig/createVelocities.H create mode 100755 applications/utilities/preProcessing/molConfig/genMolConfig.C create mode 100755 applications/utilities/preProcessing/molConfig/latticeStructures/BCC.H create mode 100755 applications/utilities/preProcessing/molConfig/latticeStructures/FCC.H create mode 100755 applications/utilities/preProcessing/molConfig/latticeStructures/SC.H create mode 100755 applications/utilities/preProcessing/molConfig/molConfig.C create mode 100755 applications/utilities/preProcessing/molConfig/molConfig.H create mode 100755 applications/utilities/preProcessing/molConfig/molConfigI.H create mode 100755 applications/utilities/preProcessing/molConfig/origin.H create mode 100755 applications/utilities/preProcessing/molConfig/readZoneSubDict.H create mode 100755 applications/utilities/preProcessing/molConfig/startingPoint.H create mode 100755 applications/utilities/preProcessing/molConfig/velocityDistributions/maxwellian.H create mode 100755 applications/utilities/preProcessing/molConfig/velocityDistributions/uniform.H create mode 100755 src/lagrangian/molecule/Make/files create mode 100755 src/lagrangian/molecule/Make/options create mode 100755 src/lagrangian/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulator.C create mode 100755 src/lagrangian/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulator.H create mode 100755 src/lagrangian/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulatorI.H create mode 100755 src/lagrangian/molecule/correlationFunction/bufferedAccumulator/bufferedAccumulatorIO.C create mode 100644 src/lagrangian/molecule/correlationFunction/correlationFunction.C create mode 100644 src/lagrangian/molecule/correlationFunction/correlationFunction.H create mode 100644 src/lagrangian/molecule/correlationFunction/correlationFunctionI.H create mode 100644 src/lagrangian/molecule/correlationFunction/correlationFunctionIO.C create mode 100755 src/lagrangian/molecule/distribution/distribution.C create mode 100755 src/lagrangian/molecule/distribution/distribution.H create mode 100755 src/lagrangian/molecule/distribution/distributionI.H create mode 100755 src/lagrangian/molecule/distribution/distributionIO.C create mode 100755 src/lagrangian/molecule/mdTools/averageMDFields.H create mode 100644 src/lagrangian/molecule/mdTools/calculateAutoCorrelationFunctions.H create mode 100755 src/lagrangian/molecule/mdTools/calculateMDFields.H create mode 100644 src/lagrangian/molecule/mdTools/calculateTransportProperties.H create mode 100644 src/lagrangian/molecule/mdTools/createAutoCorrelationFunctions.H create mode 100755 src/lagrangian/molecule/mdTools/createMDFields.H create mode 100644 src/lagrangian/molecule/mdTools/createRefUnits.H create mode 100755 src/lagrangian/molecule/mdTools/md.H create mode 100755 src/lagrangian/molecule/mdTools/meanMomentumEnergyAndNMols.H create mode 100755 src/lagrangian/molecule/mdTools/resetMDFields.H create mode 100755 src/lagrangian/molecule/mdTools/temperatureAndPressure.H create mode 100755 src/lagrangian/molecule/mdTools/temperatureAndPressureVariables.H create mode 100755 src/lagrangian/molecule/mdTools/temperatureEquilibration.H create mode 100755 src/lagrangian/molecule/molecule/molecule.C create mode 100755 src/lagrangian/molecule/molecule/molecule.H create mode 100755 src/lagrangian/molecule/molecule/moleculeI.H create mode 100755 src/lagrangian/molecule/molecule/moleculeIO.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloud.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloud.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudApplyConstraintsAndThermostats.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellInteractionLists.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellOccupancy.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellReferralLists.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildCellsFoundInRange.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildDirectInteractionList.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudBuildReferredInteractionList.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculateExternalForce.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculateForce.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForce.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForceRealCells.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForceRealCellsCalculationStep.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculatePairForceReferredCells.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudCalculateTetherForce.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudI.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudIntegrateEquationsOfMotion.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadIdList.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadMDParameters.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadMDSolution.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudReadMDParameters/moleculeCloudReadPotentials.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudRealCellsInRangeOfSegment.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudReferredCellsInRangeOfSegment.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlaps.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsRealCells.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsRealCellsCalculationStep.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudRemoveHighEnergyOverlapsReferredCells.H create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudTestEdgeEdgeDistance.C create mode 100755 src/lagrangian/molecule/moleculeCloud/moleculeCloudTestPointFaceDistance.C create mode 100755 src/lagrangian/molecule/potentials/pairPotential/basic/pairPotential.C create mode 100755 src/lagrangian/molecule/potentials/pairPotential/basic/pairPotential.H create mode 100755 src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialI.H create mode 100755 src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialList.C create mode 100755 src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialList.H create mode 100755 src/lagrangian/molecule/potentials/pairPotential/basic/pairPotentialListI.H create mode 100755 src/lagrangian/molecule/potentials/pairPotential/derived/lennardJones.C create mode 100755 src/lagrangian/molecule/potentials/pairPotential/derived/lennardJones.H create mode 100755 src/lagrangian/molecule/potentials/pairPotential/derived/lennardJonesI.H create mode 100755 src/lagrangian/molecule/potentials/tetherPotential/tetherPotential.C create mode 100755 src/lagrangian/molecule/potentials/tetherPotential/tetherPotential.H create mode 100755 src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialI.H create mode 100755 src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialList.C create mode 100755 src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialList.H create mode 100755 src/lagrangian/molecule/potentials/tetherPotential/tetherPotentialListI.H create mode 100644 src/lagrangian/molecule/reducedUnits/reducedUnits.C create mode 100644 src/lagrangian/molecule/reducedUnits/reducedUnits.H create mode 100644 src/lagrangian/molecule/reducedUnits/reducedUnitsI.H create mode 100644 src/lagrangian/molecule/reducedUnits/reducedUnitsIO.C create mode 100755 src/lagrangian/molecule/referralLists/receivingReferralList.C create mode 100755 src/lagrangian/molecule/referralLists/receivingReferralList.H create mode 100755 src/lagrangian/molecule/referralLists/receivingReferralListI.H create mode 100755 src/lagrangian/molecule/referralLists/sendingReferralList.C create mode 100755 src/lagrangian/molecule/referralLists/sendingReferralList.H create mode 100755 src/lagrangian/molecule/referralLists/sendingReferralListI.H create mode 100755 src/lagrangian/molecule/referredCell/referredCell.C create mode 100755 src/lagrangian/molecule/referredCell/referredCell.H create mode 100755 src/lagrangian/molecule/referredCell/referredCellI.H create mode 100755 src/lagrangian/molecule/referredCellList/referredCellList.C create mode 100755 src/lagrangian/molecule/referredCellList/referredCellList.H create mode 100755 src/lagrangian/molecule/referredCellList/referredCellListI.H create mode 100755 src/lagrangian/molecule/referredMolecule/referredMolecule.C create mode 100755 src/lagrangian/molecule/referredMolecule/referredMolecule.H create mode 100755 src/lagrangian/molecule/referredMolecule/referredMoleculeI.H create mode 100755 tutorials/mdEquilibrationFoam/Allclean create mode 100755 tutorials/mdEquilibrationFoam/Allrun create mode 100644 tutorials/mdEquilibrationFoam/periodicCube/constant/polyMesh/blockMeshDict create mode 100644 tutorials/mdEquilibrationFoam/periodicCube/system/controlDict create mode 100644 tutorials/mdEquilibrationFoam/periodicCube/system/decomposeParDict create mode 100644 tutorials/mdEquilibrationFoam/periodicCube/system/fvSchemes create mode 100644 tutorials/mdEquilibrationFoam/periodicCube/system/fvSolution create mode 100644 tutorials/mdEquilibrationFoam/periodicCube/system/mdEquilibrationDict create mode 100644 tutorials/mdEquilibrationFoam/periodicCube/system/mdSolution create mode 100644 tutorials/mdEquilibrationFoam/periodicCube/system/molConfigDict create mode 100644 tutorials/mdEquilibrationFoam/periodicCube/system/potentialDict diff --git a/applications/solvers/molecularDynamics/gnemdFoam/Make/files b/applications/solvers/molecularDynamics/gnemdFoam/Make/files new file mode 100755 index 0000000000..b59e704979 --- /dev/null +++ b/applications/solvers/molecularDynamics/gnemdFoam/Make/files @@ -0,0 +1,3 @@ +gnemdFoam.C + +EXE = $(FOAM_APPBIN)/gnemdFoam diff --git a/applications/solvers/molecularDynamics/gnemdFoam/Make/options b/applications/solvers/molecularDynamics/gnemdFoam/Make/options new file mode 100755 index 0000000000..80f9773456 --- /dev/null +++ b/applications/solvers/molecularDynamics/gnemdFoam/Make/options @@ -0,0 +1,11 @@ +EXE_INC = \ + -I$(LIB_SRC)/lagrangian/molecule/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/lagrangian/basic/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude + +EXE_LIBS = \ + -lmeshTools \ + -lfiniteVolume \ + -llagrangian \ + -lmolecule diff --git a/applications/solvers/molecularDynamics/gnemdFoam/gnemdFoam.C b/applications/solvers/molecularDynamics/gnemdFoam/gnemdFoam.C new file mode 100755 index 0000000000..0356c42fd2 --- /dev/null +++ b/applications/solvers/molecularDynamics/gnemdFoam/gnemdFoam.C @@ -0,0 +1,90 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2005 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 2 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, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Application + gnemdFOAM + +Description + MD for Fluid Mechanics and hybridising with a continuum solver. + +\*---------------------------------------------------------------------------*/ + +#include "fvCFD.H" +#include "md.H" + +int main(int argc, char *argv[]) +{ + +# include "setRootCase.H" +# include "createTime.H" +# include "createMesh.H" + + moleculeCloud molecules(mesh); + +# include "createMDFields.H" + + molecules.removeHighEnergyOverlaps(); + +# include "temperatureAndPressureVariables.H" + + label nAveragingSteps = 0; + + Info << "\nStarting time loop\n" << endl; + + while (runTime.run()) + { + runTime++; + + nAveragingSteps++; + + Info << "Time = " << runTime.timeName() << endl; + + molecules.integrateEquationsOfMotion(); + +# include "meanMomentumEnergyAndNMols.H" + +# include "temperatureAndPressure.H" + +# include "calculateMDFields.H" + +# include "averageMDFields.H" + + runTime.write(); + +# include "resetMDFields.H" + + 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/molecularDynamics/mdEquilibrationFoam/Make/files b/applications/solvers/molecularDynamics/mdEquilibrationFoam/Make/files new file mode 100755 index 0000000000..c3a050bb68 --- /dev/null +++ b/applications/solvers/molecularDynamics/mdEquilibrationFoam/Make/files @@ -0,0 +1,3 @@ +mdEquilibrationFoam.C + +EXE = $(FOAM_APPBIN)/mdEquilibrationFoam diff --git a/applications/solvers/molecularDynamics/mdEquilibrationFoam/Make/options b/applications/solvers/molecularDynamics/mdEquilibrationFoam/Make/options new file mode 100755 index 0000000000..80f9773456 --- /dev/null +++ b/applications/solvers/molecularDynamics/mdEquilibrationFoam/Make/options @@ -0,0 +1,11 @@ +EXE_INC = \ + -I$(LIB_SRC)/lagrangian/molecule/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/lagrangian/basic/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude + +EXE_LIBS = \ + -lmeshTools \ + -lfiniteVolume \ + -llagrangian \ + -lmolecule diff --git a/applications/solvers/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C b/applications/solvers/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C new file mode 100755 index 0000000000..f98371327b --- /dev/null +++ b/applications/solvers/molecularDynamics/mdEquilibrationFoam/mdEquilibrationFoam.C @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2005 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 2 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, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Application + mdEquilibrationFOAM + +Description + Equilibrates and/or preconditions MD systems + +\*---------------------------------------------------------------------------*/ + +#include "fvCFD.H" +#include "md.H" + +int main(int argc, char *argv[]) +{ + +# include "setRootCase.H" +# include "createTime.H" +# include "createMesh.H" + + moleculeCloud molecules(mesh); + + molecules.removeHighEnergyOverlaps(); + +# include "temperatureAndPressureVariables.H" + +# include "readmdEquilibrationDict.H" + + label nAveragingSteps = 0; + + Info << "\nStarting time loop\n" << endl; + + while (runTime.run()) + { + runTime++; + + nAveragingSteps++; + + Info << "Time = " << runTime.timeName() << endl; + + molecules.integrateEquationsOfMotion(); + +# 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/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H b/applications/solvers/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H new file mode 100755 index 0000000000..b205b5ae31 --- /dev/null +++ b/applications/solvers/molecularDynamics/mdEquilibrationFoam/readmdEquilibrationDict.H @@ -0,0 +1,18 @@ +Info<< "Reading MD Equilibration Dictionary" << nl << endl; + +IOdictionary mdEquilibrationDict +( + IOobject + ( + "mdEquilibrationDict", + runTime.system(), + mesh, + IOobject::MUST_READ, + IOobject::NO_WRITE + ) +); + +scalar targetTemperature = readScalar +( + mdEquilibrationDict.lookup("equilibrationTargetTemperature") +); diff --git a/applications/utilities/preProcessing/molConfig/Make/files b/applications/utilities/preProcessing/molConfig/Make/files new file mode 100755 index 0000000000..6501e68426 --- /dev/null +++ b/applications/utilities/preProcessing/molConfig/Make/files @@ -0,0 +1,8 @@ +latticeStructures = latticeStructures +velocityDistributions = velocityDistributions + +createMolecules.C +molConfig.C +genMolConfig.C + +EXE = $(FOAM_APPBIN)/molConfig diff --git a/applications/utilities/preProcessing/molConfig/Make/options b/applications/utilities/preProcessing/molConfig/Make/options new file mode 100755 index 0000000000..196a4d66dd --- /dev/null +++ b/applications/utilities/preProcessing/molConfig/Make/options @@ -0,0 +1,15 @@ +EXE_INC = \ + -I$(latticeStructures) \ + -I$(velocityDistributions) \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/dynamicMesh/lnInclude \ + -I$(LIB_SRC)/lagrangian/molecule/lnInclude \ + -I$(LIB_SRC)/lagrangian/basic/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude + +EXE_LIBS = \ + -lmeshTools \ + -ldynamicMesh \ + -lfiniteVolume \ + -llagrangian \ + -lmolecule diff --git a/applications/utilities/preProcessing/molConfig/correctVelocities.H b/applications/utilities/preProcessing/molConfig/correctVelocities.H new file mode 100755 index 0000000000..0c69f15c7c --- /dev/null +++ b/applications/utilities/preProcessing/molConfig/correctVelocities.H @@ -0,0 +1,21 @@ +for (molN = totalMols; molN < totalMols + totalZoneMols; molN++) +{ + + // Remove bulk momentum introduced by random numbers and add + // desired bulk velocity + + // For systems with molecules of significantly differing masses, this may + // need to be an iterative process or employ a better algorithm for + // removing an appropriate share of the excess momentum from each molecule. + + initialVelocities(molN) += bulkVelocity - momentumSum/totalZoneMols/mass; +} + +// momentumSum = vector::zero; +// +// for (molN = totalMols; molN < totalMols + totalZoneMols; molN++) +// { +// momentumSum += mass*initialVelocities(molN); +// } +// +// Info << "Check momentum adjustment: " << momentumSum << endl; diff --git a/applications/utilities/preProcessing/molConfig/createMolecules.C b/applications/utilities/preProcessing/molConfig/createMolecules.C new file mode 100755 index 0000000000..20318f06d6 --- /dev/null +++ b/applications/utilities/preProcessing/molConfig/createMolecules.C @@ -0,0 +1,253 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2005 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 2 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, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*----------------------------------------------------------------------------*/ + +#include "molConfig.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +void Foam::molConfig::createMolecules() +{ + Info<< nl << "Creating molecules from zone specifications\n" << endl; + + DynamicList initialPositions(0); + + DynamicList