hillclimber 0.1.6__cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hillclimber/__init__.py +41 -0
- hillclimber/actions.py +53 -0
- hillclimber/analysis.py +590 -0
- hillclimber/biases.py +293 -0
- hillclimber/calc.py +22 -0
- hillclimber/cvs.py +1070 -0
- hillclimber/interfaces.py +133 -0
- hillclimber/metadynamics.py +416 -0
- hillclimber/nodes.py +6 -0
- hillclimber/opes.py +359 -0
- hillclimber/pycv.py +362 -0
- hillclimber/selectors.py +230 -0
- hillclimber/virtual_atoms.py +341 -0
- hillclimber-0.1.6.dist-info/METADATA +325 -0
- hillclimber-0.1.6.dist-info/RECORD +475 -0
- hillclimber-0.1.6.dist-info/WHEEL +6 -0
- hillclimber-0.1.6.dist-info/entry_points.txt +8 -0
- hillclimber-0.1.6.dist-info/licenses/LICENSE +165 -0
- hillclimber-0.1.6.dist-info/sboms/auditwheel.cdx.json +1 -0
- hillclimber.libs/libgomp-a49a47f9.so.1.0.0 +0 -0
- plumed/__init__.py +104 -0
- plumed/_lib/bin/plumed +0 -0
- plumed/_lib/bin/plumed-config +9 -0
- plumed/_lib/bin/plumed-patch +9 -0
- plumed/_lib/include/plumed/adjmat/AdjacencyMatrixBase.h +659 -0
- plumed/_lib/include/plumed/adjmat/ContactMatrix.h +59 -0
- plumed/_lib/include/plumed/asmjit/arch.h +228 -0
- plumed/_lib/include/plumed/asmjit/arm.h +43 -0
- plumed/_lib/include/plumed/asmjit/asmjit.h +69 -0
- plumed/_lib/include/plumed/asmjit/asmjit_apibegin.h +143 -0
- plumed/_lib/include/plumed/asmjit/asmjit_apiend.h +93 -0
- plumed/_lib/include/plumed/asmjit/asmjit_build.h +971 -0
- plumed/_lib/include/plumed/asmjit/assembler.h +183 -0
- plumed/_lib/include/plumed/asmjit/base.h +56 -0
- plumed/_lib/include/plumed/asmjit/codebuilder.h +944 -0
- plumed/_lib/include/plumed/asmjit/codecompiler.h +767 -0
- plumed/_lib/include/plumed/asmjit/codeemitter.h +528 -0
- plumed/_lib/include/plumed/asmjit/codeholder.h +777 -0
- plumed/_lib/include/plumed/asmjit/constpool.h +286 -0
- plumed/_lib/include/plumed/asmjit/cpuinfo.h +402 -0
- plumed/_lib/include/plumed/asmjit/func.h +1327 -0
- plumed/_lib/include/plumed/asmjit/globals.h +370 -0
- plumed/_lib/include/plumed/asmjit/inst.h +137 -0
- plumed/_lib/include/plumed/asmjit/logging.h +317 -0
- plumed/_lib/include/plumed/asmjit/misc_p.h +103 -0
- plumed/_lib/include/plumed/asmjit/moved_string.h +318 -0
- plumed/_lib/include/plumed/asmjit/operand.h +1599 -0
- plumed/_lib/include/plumed/asmjit/osutils.h +207 -0
- plumed/_lib/include/plumed/asmjit/regalloc_p.h +597 -0
- plumed/_lib/include/plumed/asmjit/runtime.h +227 -0
- plumed/_lib/include/plumed/asmjit/simdtypes.h +1104 -0
- plumed/_lib/include/plumed/asmjit/utils.h +1387 -0
- plumed/_lib/include/plumed/asmjit/vmem.h +183 -0
- plumed/_lib/include/plumed/asmjit/x86.h +45 -0
- plumed/_lib/include/plumed/asmjit/x86assembler.h +125 -0
- plumed/_lib/include/plumed/asmjit/x86builder.h +117 -0
- plumed/_lib/include/plumed/asmjit/x86compiler.h +322 -0
- plumed/_lib/include/plumed/asmjit/x86emitter.h +5149 -0
- plumed/_lib/include/plumed/asmjit/x86globals.h +535 -0
- plumed/_lib/include/plumed/asmjit/x86inst.h +2547 -0
- plumed/_lib/include/plumed/asmjit/x86instimpl_p.h +74 -0
- plumed/_lib/include/plumed/asmjit/x86internal_p.h +108 -0
- plumed/_lib/include/plumed/asmjit/x86logging_p.h +92 -0
- plumed/_lib/include/plumed/asmjit/x86misc.h +417 -0
- plumed/_lib/include/plumed/asmjit/x86operand.h +1133 -0
- plumed/_lib/include/plumed/asmjit/x86regalloc_p.h +734 -0
- plumed/_lib/include/plumed/asmjit/zone.h +1157 -0
- plumed/_lib/include/plumed/bias/Bias.h +82 -0
- plumed/_lib/include/plumed/bias/ReweightBase.h +58 -0
- plumed/_lib/include/plumed/blas/blas.h +253 -0
- plumed/_lib/include/plumed/blas/def_external.h +61 -0
- plumed/_lib/include/plumed/blas/def_internal.h +97 -0
- plumed/_lib/include/plumed/blas/real.h +49 -0
- plumed/_lib/include/plumed/cltools/CLTool.h +32 -0
- plumed/_lib/include/plumed/clusters/ClusteringBase.h +70 -0
- plumed/_lib/include/plumed/colvar/Colvar.h +32 -0
- plumed/_lib/include/plumed/colvar/ColvarInput.h +68 -0
- plumed/_lib/include/plumed/colvar/ColvarShortcut.h +81 -0
- plumed/_lib/include/plumed/colvar/CoordinationBase.h +52 -0
- plumed/_lib/include/plumed/colvar/MultiColvarTemplate.h +333 -0
- plumed/_lib/include/plumed/colvar/PathMSDBase.h +101 -0
- plumed/_lib/include/plumed/colvar/RMSDVector.h +78 -0
- plumed/_lib/include/plumed/config/Config.h +118 -0
- plumed/_lib/include/plumed/config/version.h +9 -0
- plumed/_lib/include/plumed/contour/ContourFindingObject.h +87 -0
- plumed/_lib/include/plumed/contour/DistanceFromContourBase.h +82 -0
- plumed/_lib/include/plumed/contour/FindContour.h +67 -0
- plumed/_lib/include/plumed/core/Action.h +540 -0
- plumed/_lib/include/plumed/core/ActionAnyorder.h +48 -0
- plumed/_lib/include/plumed/core/ActionAtomistic.h +343 -0
- plumed/_lib/include/plumed/core/ActionForInterface.h +99 -0
- plumed/_lib/include/plumed/core/ActionPilot.h +57 -0
- plumed/_lib/include/plumed/core/ActionRegister.h +124 -0
- plumed/_lib/include/plumed/core/ActionSet.h +163 -0
- plumed/_lib/include/plumed/core/ActionSetup.h +48 -0
- plumed/_lib/include/plumed/core/ActionShortcut.h +73 -0
- plumed/_lib/include/plumed/core/ActionToGetData.h +59 -0
- plumed/_lib/include/plumed/core/ActionToPutData.h +101 -0
- plumed/_lib/include/plumed/core/ActionWithArguments.h +140 -0
- plumed/_lib/include/plumed/core/ActionWithMatrix.h +87 -0
- plumed/_lib/include/plumed/core/ActionWithValue.h +258 -0
- plumed/_lib/include/plumed/core/ActionWithVector.h +94 -0
- plumed/_lib/include/plumed/core/ActionWithVirtualAtom.h +123 -0
- plumed/_lib/include/plumed/core/CLTool.h +177 -0
- plumed/_lib/include/plumed/core/CLToolMain.h +102 -0
- plumed/_lib/include/plumed/core/CLToolRegister.h +108 -0
- plumed/_lib/include/plumed/core/Colvar.h +115 -0
- plumed/_lib/include/plumed/core/DataPassingObject.h +94 -0
- plumed/_lib/include/plumed/core/DataPassingTools.h +54 -0
- plumed/_lib/include/plumed/core/DomainDecomposition.h +120 -0
- plumed/_lib/include/plumed/core/ExchangePatterns.h +47 -0
- plumed/_lib/include/plumed/core/FlexibleBin.h +63 -0
- plumed/_lib/include/plumed/core/GREX.h +61 -0
- plumed/_lib/include/plumed/core/GenericMolInfo.h +89 -0
- plumed/_lib/include/plumed/core/Group.h +41 -0
- plumed/_lib/include/plumed/core/ModuleMap.h +30 -0
- plumed/_lib/include/plumed/core/ParallelTaskManager.h +1023 -0
- plumed/_lib/include/plumed/core/PbcAction.h +61 -0
- plumed/_lib/include/plumed/core/PlumedMain.h +632 -0
- plumed/_lib/include/plumed/core/PlumedMainInitializer.h +118 -0
- plumed/_lib/include/plumed/core/RegisterBase.h +340 -0
- plumed/_lib/include/plumed/core/TargetDist.h +48 -0
- plumed/_lib/include/plumed/core/Value.h +547 -0
- plumed/_lib/include/plumed/core/WithCmd.h +93 -0
- plumed/_lib/include/plumed/dimred/SMACOF.h +55 -0
- plumed/_lib/include/plumed/drr/DRR.h +383 -0
- plumed/_lib/include/plumed/drr/colvar_UIestimator.h +777 -0
- plumed/_lib/include/plumed/fisst/legendre_rule_fast.h +44 -0
- plumed/_lib/include/plumed/function/Custom.h +54 -0
- plumed/_lib/include/plumed/function/Function.h +85 -0
- plumed/_lib/include/plumed/function/FunctionOfMatrix.h +368 -0
- plumed/_lib/include/plumed/function/FunctionOfScalar.h +135 -0
- plumed/_lib/include/plumed/function/FunctionOfVector.h +296 -0
- plumed/_lib/include/plumed/function/FunctionSetup.h +180 -0
- plumed/_lib/include/plumed/function/FunctionShortcut.h +130 -0
- plumed/_lib/include/plumed/function/FunctionWithSingleArgument.h +165 -0
- plumed/_lib/include/plumed/gridtools/ActionWithGrid.h +43 -0
- plumed/_lib/include/plumed/gridtools/EvaluateGridFunction.h +99 -0
- plumed/_lib/include/plumed/gridtools/FunctionOfGrid.h +295 -0
- plumed/_lib/include/plumed/gridtools/GridCoordinatesObject.h +179 -0
- plumed/_lib/include/plumed/gridtools/GridSearch.h +135 -0
- plumed/_lib/include/plumed/gridtools/Interpolator.h +45 -0
- plumed/_lib/include/plumed/gridtools/KDE.h +455 -0
- plumed/_lib/include/plumed/gridtools/RDF.h +40 -0
- plumed/_lib/include/plumed/gridtools/SumOfKernels.h +219 -0
- plumed/_lib/include/plumed/isdb/MetainferenceBase.h +398 -0
- plumed/_lib/include/plumed/lapack/def_external.h +207 -0
- plumed/_lib/include/plumed/lapack/def_internal.h +388 -0
- plumed/_lib/include/plumed/lapack/lapack.h +899 -0
- plumed/_lib/include/plumed/lapack/lapack_limits.h +79 -0
- plumed/_lib/include/plumed/lapack/real.h +50 -0
- plumed/_lib/include/plumed/lepton/CompiledExpression.h +164 -0
- plumed/_lib/include/plumed/lepton/CustomFunction.h +143 -0
- plumed/_lib/include/plumed/lepton/Exception.h +93 -0
- plumed/_lib/include/plumed/lepton/ExpressionProgram.h +137 -0
- plumed/_lib/include/plumed/lepton/ExpressionTreeNode.h +145 -0
- plumed/_lib/include/plumed/lepton/Lepton.h +85 -0
- plumed/_lib/include/plumed/lepton/MSVC_erfc.h +123 -0
- plumed/_lib/include/plumed/lepton/Operation.h +1302 -0
- plumed/_lib/include/plumed/lepton/ParsedExpression.h +165 -0
- plumed/_lib/include/plumed/lepton/Parser.h +111 -0
- plumed/_lib/include/plumed/lepton/windowsIncludes.h +73 -0
- plumed/_lib/include/plumed/mapping/Path.h +44 -0
- plumed/_lib/include/plumed/mapping/PathProjectionCalculator.h +57 -0
- plumed/_lib/include/plumed/matrixtools/MatrixOperationBase.h +54 -0
- plumed/_lib/include/plumed/matrixtools/MatrixTimesMatrix.h +309 -0
- plumed/_lib/include/plumed/matrixtools/MatrixTimesVectorBase.h +365 -0
- plumed/_lib/include/plumed/matrixtools/OuterProduct.h +238 -0
- plumed/_lib/include/plumed/maze/Core.h +65 -0
- plumed/_lib/include/plumed/maze/Loss.h +86 -0
- plumed/_lib/include/plumed/maze/Member.h +66 -0
- plumed/_lib/include/plumed/maze/Memetic.h +799 -0
- plumed/_lib/include/plumed/maze/Optimizer.h +357 -0
- plumed/_lib/include/plumed/maze/Random_MT.h +156 -0
- plumed/_lib/include/plumed/maze/Tools.h +183 -0
- plumed/_lib/include/plumed/metatomic/vesin.h +188 -0
- plumed/_lib/include/plumed/molfile/Gromacs.h +2013 -0
- plumed/_lib/include/plumed/molfile/endianswap.h +217 -0
- plumed/_lib/include/plumed/molfile/fastio.h +683 -0
- plumed/_lib/include/plumed/molfile/largefiles.h +78 -0
- plumed/_lib/include/plumed/molfile/libmolfile_plugin.h +77 -0
- plumed/_lib/include/plumed/molfile/molfile_plugin.h +1034 -0
- plumed/_lib/include/plumed/molfile/periodic_table.h +248 -0
- plumed/_lib/include/plumed/molfile/readpdb.h +447 -0
- plumed/_lib/include/plumed/molfile/vmdplugin.h +236 -0
- plumed/_lib/include/plumed/multicolvar/MultiColvarShortcuts.h +45 -0
- plumed/_lib/include/plumed/opes/ExpansionCVs.h +79 -0
- plumed/_lib/include/plumed/sasa/Sasa.h +32 -0
- plumed/_lib/include/plumed/secondarystructure/SecondaryStructureBase.h +372 -0
- plumed/_lib/include/plumed/setup/ActionSetup.h +25 -0
- plumed/_lib/include/plumed/small_vector/small_vector.h +6114 -0
- plumed/_lib/include/plumed/symfunc/CoordinationNumbers.h +41 -0
- plumed/_lib/include/plumed/tools/Angle.h +52 -0
- plumed/_lib/include/plumed/tools/AtomDistribution.h +138 -0
- plumed/_lib/include/plumed/tools/AtomNumber.h +152 -0
- plumed/_lib/include/plumed/tools/BiasRepresentation.h +106 -0
- plumed/_lib/include/plumed/tools/BitmaskEnum.h +167 -0
- plumed/_lib/include/plumed/tools/Brent1DRootSearch.h +159 -0
- plumed/_lib/include/plumed/tools/CheckInRange.h +44 -0
- plumed/_lib/include/plumed/tools/Citations.h +74 -0
- plumed/_lib/include/plumed/tools/ColvarOutput.h +118 -0
- plumed/_lib/include/plumed/tools/Communicator.h +316 -0
- plumed/_lib/include/plumed/tools/ConjugateGradient.h +80 -0
- plumed/_lib/include/plumed/tools/DLLoader.h +79 -0
- plumed/_lib/include/plumed/tools/ERMSD.h +73 -0
- plumed/_lib/include/plumed/tools/Exception.h +406 -0
- plumed/_lib/include/plumed/tools/File.h +28 -0
- plumed/_lib/include/plumed/tools/FileBase.h +153 -0
- plumed/_lib/include/plumed/tools/FileTools.h +37 -0
- plumed/_lib/include/plumed/tools/ForwardDecl.h +54 -0
- plumed/_lib/include/plumed/tools/Grid.h +638 -0
- plumed/_lib/include/plumed/tools/HistogramBead.h +136 -0
- plumed/_lib/include/plumed/tools/IFile.h +117 -0
- plumed/_lib/include/plumed/tools/KernelFunctions.h +113 -0
- plumed/_lib/include/plumed/tools/Keywords.h +380 -0
- plumed/_lib/include/plumed/tools/LatticeReduction.h +66 -0
- plumed/_lib/include/plumed/tools/LeptonCall.h +64 -0
- plumed/_lib/include/plumed/tools/LinkCells.h +126 -0
- plumed/_lib/include/plumed/tools/Log.h +41 -0
- plumed/_lib/include/plumed/tools/LoopUnroller.h +163 -0
- plumed/_lib/include/plumed/tools/Matrix.h +721 -0
- plumed/_lib/include/plumed/tools/MatrixSquareBracketsAccess.h +138 -0
- plumed/_lib/include/plumed/tools/MergeVectorTools.h +153 -0
- plumed/_lib/include/plumed/tools/Minimise1DBrent.h +244 -0
- plumed/_lib/include/plumed/tools/MinimiseBase.h +120 -0
- plumed/_lib/include/plumed/tools/MolDataClass.h +51 -0
- plumed/_lib/include/plumed/tools/NeighborList.h +112 -0
- plumed/_lib/include/plumed/tools/OFile.h +286 -0
- plumed/_lib/include/plumed/tools/OpenACC.h +180 -0
- plumed/_lib/include/plumed/tools/OpenMP.h +75 -0
- plumed/_lib/include/plumed/tools/PDB.h +154 -0
- plumed/_lib/include/plumed/tools/Pbc.h +139 -0
- plumed/_lib/include/plumed/tools/PlumedHandle.h +105 -0
- plumed/_lib/include/plumed/tools/RMSD.h +493 -0
- plumed/_lib/include/plumed/tools/Random.h +80 -0
- plumed/_lib/include/plumed/tools/RootFindingBase.h +79 -0
- plumed/_lib/include/plumed/tools/Stopwatch.h +475 -0
- plumed/_lib/include/plumed/tools/Subprocess.h +142 -0
- plumed/_lib/include/plumed/tools/SwitchingFunction.h +208 -0
- plumed/_lib/include/plumed/tools/Tensor.h +724 -0
- plumed/_lib/include/plumed/tools/TokenizedLine.h +123 -0
- plumed/_lib/include/plumed/tools/Tools.h +638 -0
- plumed/_lib/include/plumed/tools/Torsion.h +55 -0
- plumed/_lib/include/plumed/tools/TrajectoryParser.h +118 -0
- plumed/_lib/include/plumed/tools/Tree.h +61 -0
- plumed/_lib/include/plumed/tools/TypesafePtr.h +463 -0
- plumed/_lib/include/plumed/tools/Units.h +167 -0
- plumed/_lib/include/plumed/tools/Vector.h +433 -0
- plumed/_lib/include/plumed/tools/View.h +296 -0
- plumed/_lib/include/plumed/tools/View2D.h +100 -0
- plumed/_lib/include/plumed/tools/h36.h +39 -0
- plumed/_lib/include/plumed/vatom/ActionWithVirtualAtom.h +32 -0
- plumed/_lib/include/plumed/ves/BasisFunctions.h +380 -0
- plumed/_lib/include/plumed/ves/CoeffsBase.h +310 -0
- plumed/_lib/include/plumed/ves/CoeffsMatrix.h +220 -0
- plumed/_lib/include/plumed/ves/CoeffsVector.h +251 -0
- plumed/_lib/include/plumed/ves/FermiSwitchingFunction.h +74 -0
- plumed/_lib/include/plumed/ves/GridIntegrationWeights.h +50 -0
- plumed/_lib/include/plumed/ves/GridLinearInterpolation.h +81 -0
- plumed/_lib/include/plumed/ves/GridProjWeights.h +61 -0
- plumed/_lib/include/plumed/ves/LinearBasisSetExpansion.h +303 -0
- plumed/_lib/include/plumed/ves/Optimizer.h +444 -0
- plumed/_lib/include/plumed/ves/TargetDistModifer.h +53 -0
- plumed/_lib/include/plumed/ves/TargetDistribution.h +266 -0
- plumed/_lib/include/plumed/ves/VesBias.h +545 -0
- plumed/_lib/include/plumed/ves/VesTools.h +142 -0
- plumed/_lib/include/plumed/ves/WaveletGrid.h +75 -0
- plumed/_lib/include/plumed/volumes/ActionVolume.h +268 -0
- plumed/_lib/include/plumed/volumes/VolumeShortcut.h +147 -0
- plumed/_lib/include/plumed/wrapper/Plumed.h +5025 -0
- plumed/_lib/include/plumed/xdrfile/xdrfile.h +663 -0
- plumed/_lib/include/plumed/xdrfile/xdrfile_trr.h +89 -0
- plumed/_lib/include/plumed/xdrfile/xdrfile_xtc.h +90 -0
- plumed/_lib/lib/PythonCVInterface.so +0 -0
- plumed/_lib/lib/libplumed.a +0 -0
- plumed/_lib/lib/libplumed.so +0 -0
- plumed/_lib/lib/libplumedKernel.so +0 -0
- plumed/_lib/lib/libplumedWrapper.a +0 -0
- plumed/_lib/lib/pkgconfig/plumed.pc +13 -0
- plumed/_lib/lib/pkgconfig/plumedInternals.pc +13 -0
- plumed/_lib/lib/pkgconfig/plumedWrapper.pc +13 -0
- plumed/_lib/lib/plumed/fortran/plumed.f90 +879 -0
- plumed/_lib/lib/plumed/fortran/plumed_f08.f90 +2625 -0
- plumed/_lib/lib/plumed/modulefile +69 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.config +43 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt +543 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt.preplumed +540 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp +1628 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1590 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h +103 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h.preplumed +99 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp +2527 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2513 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +408 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +394 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp +2348 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2091 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp +3573 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3495 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1506 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1402 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp +997 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +906 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp +2780 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2738 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.config +43 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt +549 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt.preplumed +546 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h +104 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp +2624 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2610 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +409 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +395 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp +2419 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2164 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp +3546 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3468 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp +991 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +900 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp +2895 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2849 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp +886 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +880 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +347 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +345 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.config +43 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt +575 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt.preplumed +572 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h +104 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp +2564 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2550 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h +410 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +396 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp +2435 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp.preplumed +2187 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp +3592 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3514 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp +958 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp.preplumed +929 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp +2987 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp.preplumed +2941 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp +904 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +898 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +353 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +351 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.config +39 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake +82 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake.preplumed +82 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp +162 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp.preplumed +154 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp +107 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp.preplumed +99 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h +120 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h.preplumed +111 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp +215 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp.preplumed +197 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h +87 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h.preplumed +86 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp +2971 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp.preplumed +2970 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h +430 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h.preplumed +429 -0
- plumed/_lib/lib/plumed/patches/namd-2.12.config +30 -0
- plumed/_lib/lib/plumed/patches/namd-2.12.diff +267 -0
- plumed/_lib/lib/plumed/patches/namd-2.13.config +30 -0
- plumed/_lib/lib/plumed/patches/namd-2.13.diff +267 -0
- plumed/_lib/lib/plumed/patches/namd-2.14.config +30 -0
- plumed/_lib/lib/plumed/patches/namd-2.14.diff +268 -0
- plumed/_lib/lib/plumed/patches/patch.sh +500 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.config +25 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90 +368 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90.preplumed +366 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90 +71 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90.preplumed +24 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90 +62 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90 +189 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90.preplumed +185 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.config +26 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90 +422 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90.preplumed +420 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90 +70 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90 +62 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90 +233 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90.preplumed +230 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.config +28 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile +175 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile.preplumed +171 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90 +486 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90.preplumed +484 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90 +74 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90 +64 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90 +532 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90.preplumed +518 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.config +28 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile +249 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile.preplumed +244 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90 +532 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90.preplumed +535 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90 +74 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90 +64 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90 +569 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90.preplumed +560 -0
- plumed/_lib/lib/plumed/plumed-config +9 -0
- plumed/_lib/lib/plumed/plumed-mklib +9 -0
- plumed/_lib/lib/plumed/plumed-newcv +9 -0
- plumed/_lib/lib/plumed/plumed-partial_tempering +9 -0
- plumed/_lib/lib/plumed/plumed-patch +9 -0
- plumed/_lib/lib/plumed/plumed-runtime +0 -0
- plumed/_lib/lib/plumed/plumed-selector +9 -0
- plumed/_lib/lib/plumed/plumed-vim2html +9 -0
- plumed/_lib/lib/plumed/scripts/config.sh +126 -0
- plumed/_lib/lib/plumed/scripts/mklib.sh +175 -0
- plumed/_lib/lib/plumed/scripts/newcv.sh +26 -0
- plumed/_lib/lib/plumed/scripts/partial_tempering.sh +319 -0
- plumed/_lib/lib/plumed/scripts/patch.sh +4 -0
- plumed/_lib/lib/plumed/scripts/selector.sh +234 -0
- plumed/_lib/lib/plumed/scripts/vim2html.sh +190 -0
- plumed/_lib/lib/plumed/src/colvar/Template.cpp +116 -0
- plumed/_lib/lib/plumed/src/config/compile_options.sh +3 -0
- plumed/_lib/lib/plumed/src/config/config.txt +179 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake +8 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake.runtime +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake.shared +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake.static +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc +8 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc.runtime +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc.shared +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc.static +5 -0
- plumed/_lib/lib/plumed/vim/scripts.vim +6 -0
- plumed/_plumed_core.cpython-311-aarch64-linux-gnu.so +0 -0
- plumed/_plumed_core.cpython-312-aarch64-linux-gnu.so +0 -0
- plumed/_plumed_core.cpython-313-aarch64-linux-gnu.so +0 -0
- plumed/_plumed_core.cpython-314-aarch64-linux-gnu.so +0 -0
- plumed/_plumed_core.cpython-314t-aarch64-linux-gnu.so +0 -0
- plumedCommunications.cpython-311-aarch64-linux-gnu.so +0 -0
- plumedCommunications.cpython-312-aarch64-linux-gnu.so +0 -0
- plumedCommunications.cpython-313-aarch64-linux-gnu.so +0 -0
- plumedCommunications.cpython-314-aarch64-linux-gnu.so +0 -0
- plumedCommunications.cpython-314t-aarch64-linux-gnu.so +0 -0
- plumedCommunications.pyi +431 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the GROMACS molecular simulation package.
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2024- The GROMACS Authors
|
|
5
|
+
* and the project initiators Erik Lindahl, Berk Hess and David van der Spoel.
|
|
6
|
+
* Consult the AUTHORS/COPYING files and https://www.gromacs.org for details.
|
|
7
|
+
*
|
|
8
|
+
* GROMACS is free software; you can redistribute it and/or
|
|
9
|
+
* modify it under the terms of the GNU Lesser General Public License
|
|
10
|
+
* as published by the Free Software Foundation; either version 2.1
|
|
11
|
+
* of the License, or (at your option) any later version.
|
|
12
|
+
*
|
|
13
|
+
* GROMACS is distributed in the hope that it will be useful,
|
|
14
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
16
|
+
* Lesser General Public License for more details.
|
|
17
|
+
*
|
|
18
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
19
|
+
* License along with GROMACS; if not, see
|
|
20
|
+
* https://www.gnu.org/licenses, or write to the Free Software Foundation,
|
|
21
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
22
|
+
*
|
|
23
|
+
* If you want to redistribute modifications to GROMACS, please
|
|
24
|
+
* consider that scientific software is very special. Version
|
|
25
|
+
* control is crucial - bugs must be traceable. We will be happy to
|
|
26
|
+
* consider code for inclusion in the official distribution, but
|
|
27
|
+
* derived work must not be called official GROMACS. Details are found
|
|
28
|
+
* in the README & COPYING files - if they are missing, get the
|
|
29
|
+
* official version at https://www.gromacs.org.
|
|
30
|
+
*
|
|
31
|
+
* To help us fund GROMACS development, we humbly ask that you cite
|
|
32
|
+
* the research papers on the package. Check out https://www.gromacs.org.
|
|
33
|
+
*/
|
|
34
|
+
/*! \internal \file
|
|
35
|
+
* \brief
|
|
36
|
+
* Declares options for PLUMED. This class handles parameters set during
|
|
37
|
+
* pre-processing time.
|
|
38
|
+
*
|
|
39
|
+
* \author Daniele Rapetti <drapetti@sissa.it>
|
|
40
|
+
* \ingroup module_applied_forces
|
|
41
|
+
*/
|
|
42
|
+
#ifndef GMX_APPLIED_FORCES_PLUMEDOPTIONPROVIDER_H
|
|
43
|
+
#define GMX_APPLIED_FORCES_PLUMEDOPTIONPROVIDER_H
|
|
44
|
+
|
|
45
|
+
#include <optional>
|
|
46
|
+
#include <string>
|
|
47
|
+
|
|
48
|
+
#include "gromacs/utility/real.h"
|
|
49
|
+
|
|
50
|
+
struct gmx_mtop_t;
|
|
51
|
+
struct t_commrec;
|
|
52
|
+
|
|
53
|
+
namespace gmx
|
|
54
|
+
{
|
|
55
|
+
enum class StartingBehavior;
|
|
56
|
+
struct EnsembleTemperature;
|
|
57
|
+
|
|
58
|
+
struct PlumedOptions
|
|
59
|
+
{
|
|
60
|
+
std::string plumedFile_;
|
|
61
|
+
int natoms_;
|
|
62
|
+
const t_commrec* cr_;
|
|
63
|
+
real simulationTimeStep_;
|
|
64
|
+
std::optional<real> ensembleTemperature_{};
|
|
65
|
+
StartingBehavior startingBehavior_{};
|
|
66
|
+
bool active_{ false };
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
class PlumedOptionProvider
|
|
70
|
+
{
|
|
71
|
+
public:
|
|
72
|
+
/*! @brief Sets the needed informations from the topology object
|
|
73
|
+
*
|
|
74
|
+
* As now oly hte number of atoms is fetched
|
|
75
|
+
* @param mtop topology object
|
|
76
|
+
*/
|
|
77
|
+
void setTopology(const gmx_mtop_t& mtop);
|
|
78
|
+
/*! @brief Sets the (eventual) ensemble temperature
|
|
79
|
+
* @param temp the object with the optional temperature
|
|
80
|
+
*/
|
|
81
|
+
void setEnsembleTemperature(const EnsembleTemperature& temp);
|
|
82
|
+
/*! @brief Sets the name of the PLUMED file to read
|
|
83
|
+
*
|
|
84
|
+
* When called, with a non empty string, it activates the PLUMED module
|
|
85
|
+
* this simulation.
|
|
86
|
+
* @param fname the (optional) name of the file
|
|
87
|
+
*/
|
|
88
|
+
void setPlumedFile(const std::optional<std::string>& fname);
|
|
89
|
+
/*! @brief Sets the timestep
|
|
90
|
+
* @param timeStep the timestep value
|
|
91
|
+
*/
|
|
92
|
+
void setSimulationTimeStep(double timeStep);
|
|
93
|
+
/*! @brief Sets the starting beahviour of the simulation
|
|
94
|
+
* @param startingBehavior the starting behaviopur object
|
|
95
|
+
*/
|
|
96
|
+
void setStartingBehavior(const StartingBehavior& startingBehavior);
|
|
97
|
+
/*! @brief Sets the address to the communication record object
|
|
98
|
+
* @param cr the Communication Record object
|
|
99
|
+
*/
|
|
100
|
+
void setComm(const t_commrec& cr);
|
|
101
|
+
//! @brief returns the active status of the module
|
|
102
|
+
bool active() const;
|
|
103
|
+
|
|
104
|
+
//! @brief returns a reference to the internal PlumedOptions element
|
|
105
|
+
const PlumedOptions& options() const;
|
|
106
|
+
|
|
107
|
+
private:
|
|
108
|
+
PlumedOptions opts_;
|
|
109
|
+
};
|
|
110
|
+
} // namespace gmx
|
|
111
|
+
#endif // GMX_APPLIED_FORCES_PLUMEDOPTIONPROVIDER_H
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the GROMACS molecular simulation package.
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2024- The GROMACS Authors
|
|
5
|
+
* and the project initiators Erik Lindahl, Berk Hess and David van der Spoel.
|
|
6
|
+
* Consult the AUTHORS/COPYING files and https://www.gromacs.org for details.
|
|
7
|
+
*
|
|
8
|
+
* GROMACS is free software; you can redistribute it and/or
|
|
9
|
+
* modify it under the terms of the GNU Lesser General Public License
|
|
10
|
+
* as published by the Free Software Foundation; either version 2.1
|
|
11
|
+
* of the License, or (at your option) any later version.
|
|
12
|
+
*
|
|
13
|
+
* GROMACS is distributed in the hope that it will be useful,
|
|
14
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
16
|
+
* Lesser General Public License for more details.
|
|
17
|
+
*
|
|
18
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
19
|
+
* License along with GROMACS; if not, see
|
|
20
|
+
* https://www.gnu.org/licenses, or write to the Free Software Foundation,
|
|
21
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
22
|
+
*
|
|
23
|
+
* If you want to redistribute modifications to GROMACS, please
|
|
24
|
+
* consider that scientific software is very special. Version
|
|
25
|
+
* control is crucial - bugs must be traceable. We will be happy to
|
|
26
|
+
* consider code for inclusion in the official distribution, but
|
|
27
|
+
* derived work must not be called official GROMACS. Details are found
|
|
28
|
+
* in the README & COPYING files - if they are missing, get the
|
|
29
|
+
* official version at https://www.gromacs.org.
|
|
30
|
+
*
|
|
31
|
+
* To help us fund GROMACS development, we humbly ask that you cite
|
|
32
|
+
* the research papers on the package. Check out https://www.gromacs.org.
|
|
33
|
+
*/
|
|
34
|
+
/*! \internal \file
|
|
35
|
+
* \brief
|
|
36
|
+
* Implementation of the Plumed force provider class
|
|
37
|
+
*
|
|
38
|
+
* \author Daniele Rapetti <drapetti@sissa.it>
|
|
39
|
+
* \ingroup module_applied_forces
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
#include "plumedforceprovider.h"
|
|
43
|
+
|
|
44
|
+
#include "gromacs/domdec/domdec.h"
|
|
45
|
+
#include "gromacs/domdec/domdec_struct.h"
|
|
46
|
+
#include "gromacs/math/units.h"
|
|
47
|
+
#include "gromacs/mdrunutility/handlerestart.h"
|
|
48
|
+
#include "gromacs/mdrunutility/multisim.h"
|
|
49
|
+
#include "gromacs/mdtypes/commrec.h"
|
|
50
|
+
#include "gromacs/mdtypes/enerdata.h"
|
|
51
|
+
#include "gromacs/mdtypes/forceoutput.h"
|
|
52
|
+
#include "gromacs/utility/exceptions.h"
|
|
53
|
+
|
|
54
|
+
#include "plumedOptions.h"
|
|
55
|
+
|
|
56
|
+
#define __PLUMED_WRAPPER_FORTRAN 0 // NOLINT(bugprone-reserved-identifier)
|
|
57
|
+
|
|
58
|
+
#define __PLUMED_WRAPPER_LINK_RUNTIME 1 // NOLINT(bugprone-reserved-identifier)
|
|
59
|
+
#define __PLUMED_WRAPPER_EXTERN 0 // NOLINT(bugprone-reserved-identifier)
|
|
60
|
+
|
|
61
|
+
#define __PLUMED_WRAPPER_CXX 1 // NOLINT(bugprone-reserved-identifier)
|
|
62
|
+
#define __PLUMED_WRAPPER_LIBCXX11 1 // NOLINT(bugprone-reserved-identifier)
|
|
63
|
+
#define __PLUMED_WRAPPER_LIBCXX17 1 // NOLINT(bugprone-reserved-identifier)
|
|
64
|
+
#define __PLUMED_WRAPPER_IMPLEMENTATION 1 // NOLINT(bugprone-reserved-identifier)
|
|
65
|
+
#define __PLUMED_HAS_DLOPEN // NOLINT(bugprone-reserved-identifier)
|
|
66
|
+
|
|
67
|
+
#include "external/plumed/Plumed.h"
|
|
68
|
+
|
|
69
|
+
namespace gmx
|
|
70
|
+
{
|
|
71
|
+
|
|
72
|
+
PlumedForceProvider::~PlumedForceProvider() = default;
|
|
73
|
+
PlumedForceProvider::PlumedForceProvider(const PlumedOptions& options)
|
|
74
|
+
try : plumed_(std::make_unique<PLMD::Plumed>()),replex_(options.replex_)
|
|
75
|
+
{
|
|
76
|
+
// I prefer to pass a struct with data because it stops the coupling
|
|
77
|
+
// at the implementation and not at the function signature:
|
|
78
|
+
// less code to edit when adding new options :)
|
|
79
|
+
#if GMX_THREAD_MPI
|
|
80
|
+
if (options.cr_->nnodes > 1)
|
|
81
|
+
{
|
|
82
|
+
GMX_THROW(InvalidInputError(
|
|
83
|
+
"plumed MPI interface is not compatible with THREAD_MPI when uses more than one "
|
|
84
|
+
"rank"));
|
|
85
|
+
}
|
|
86
|
+
#endif
|
|
87
|
+
int real_precision = sizeof(real);
|
|
88
|
+
plumed_->cmd("setRealPrecision", &real_precision);
|
|
89
|
+
real energyUnits = 1.0;
|
|
90
|
+
plumed_->cmd("setMDEnergyUnits", &energyUnits);
|
|
91
|
+
real lengthUnits = 1.0;
|
|
92
|
+
plumed_->cmd("setMDLengthUnits", &lengthUnits);
|
|
93
|
+
real timeUnits = 1.0;
|
|
94
|
+
plumed_->cmd("setMDTimeUnits", &timeUnits);
|
|
95
|
+
|
|
96
|
+
plumed_->cmd("setPlumedDat", options.plumedFile_.c_str());
|
|
97
|
+
|
|
98
|
+
plumed_->cmd("getApiVersion", &plumedAPIversion_);
|
|
99
|
+
if (plumedAPIversion_ > 1)
|
|
100
|
+
{
|
|
101
|
+
/* setting kbT is only implemented with api>1) */
|
|
102
|
+
if (options.ensembleTemperature_.has_value())
|
|
103
|
+
{
|
|
104
|
+
real kbT = options.ensembleTemperature_.value() * gmx::c_boltz;
|
|
105
|
+
plumed_->cmd("setKbT", &kbT);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (plumedAPIversion_ > 2)
|
|
110
|
+
{
|
|
111
|
+
if ((options.startingBehavior_ != StartingBehavior::NewSimulation))
|
|
112
|
+
{
|
|
113
|
+
int res = 1;
|
|
114
|
+
plumed_->cmd("setRestart", &res);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (isMultiSim(options.ms_))
|
|
119
|
+
{
|
|
120
|
+
if (MAIN(options.cr_))
|
|
121
|
+
plumed_->cmd("GREX setMPIIntercomm", &options.ms_->mainRanksComm_);
|
|
122
|
+
plumed_->cmd("GREX setMPIIntracomm", &options.cr_->mpi_comm_mygroup);
|
|
123
|
+
plumed_->cmd("GREX init", nullptr);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (havePPDomainDecomposition(options.cr_))
|
|
127
|
+
{
|
|
128
|
+
plumed_->cmd("setMPIComm", &options.cr_->mpi_comm_mygroup);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
plumed_->cmd("setNatoms", options.natoms_);
|
|
132
|
+
plumed_->cmd("setMDEngine", "gromacs");
|
|
133
|
+
plumed_->cmd("setLogFile", "PLUMED.OUT");
|
|
134
|
+
|
|
135
|
+
plumed_->cmd("setTimestep", &options.simulationTimeStep_);
|
|
136
|
+
plumed_->cmd("init", nullptr);
|
|
137
|
+
}
|
|
138
|
+
catch (const std::exception& ex)
|
|
139
|
+
{
|
|
140
|
+
GMX_THROW(InternalError(
|
|
141
|
+
std::string("An error occurred while initializing the PLUMED force provider:\n") + ex.what()));
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
void PlumedForceProvider::writeCheckpointData()
|
|
145
|
+
try
|
|
146
|
+
{
|
|
147
|
+
if (plumedAPIversion_ > 3)
|
|
148
|
+
{
|
|
149
|
+
int checkp = 1;
|
|
150
|
+
plumed_->cmd("doCheckPoint", &checkp);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch (const std::exception& ex)
|
|
154
|
+
{
|
|
155
|
+
GMX_THROW(InternalError(
|
|
156
|
+
std::string("An error occurred while PLUMED was writing the checkpoint data\n:") + ex.what()));
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
void PlumedForceProvider::calculateForces(const ForceProviderInput& forceProviderInput,
|
|
160
|
+
ForceProviderOutput* forceProviderOutput)
|
|
161
|
+
try
|
|
162
|
+
{
|
|
163
|
+
// setup: these instructions in the original patch are BEFORE do_force()
|
|
164
|
+
// now this is called within do_force(), but this does not impact the results
|
|
165
|
+
const t_commrec* cr = &(forceProviderInput.cr_);
|
|
166
|
+
long int lstep = forceProviderInput.step_;
|
|
167
|
+
plumed_->cmd("setStepLong", &lstep);
|
|
168
|
+
if (haveDDAtomOrdering(*cr))
|
|
169
|
+
{
|
|
170
|
+
int nat_home = dd_numHomeAtoms(*cr->dd);
|
|
171
|
+
plumed_->cmd("setAtomsNlocal", &nat_home);
|
|
172
|
+
plumed_->cmd("setAtomsGatindex", cr->dd->globalAtomIndices.data());
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
plumed_->cmd("setPositions", &(forceProviderInput.x_.data()->as_vec()[0]));
|
|
176
|
+
plumed_->cmd("setMasses", forceProviderInput.massT_.data());
|
|
177
|
+
plumed_->cmd("setCharges", forceProviderInput.chargeA_.data());
|
|
178
|
+
plumed_->cmd("setBox", &forceProviderInput.box_[0][0]);
|
|
179
|
+
|
|
180
|
+
plumed_->cmd("prepareCalc", nullptr);
|
|
181
|
+
|
|
182
|
+
int plumedWantsToStop = 0;
|
|
183
|
+
plumed_->cmd("setStopFlag", &plumedWantsToStop);
|
|
184
|
+
|
|
185
|
+
real* fOut = &(forceProviderOutput->forceWithVirial_.force_.data()->as_vec()[0]);
|
|
186
|
+
plumed_->cmd("setForces", fOut);
|
|
187
|
+
|
|
188
|
+
matrix plumed_vir;
|
|
189
|
+
clear_mat(plumed_vir);
|
|
190
|
+
plumed_->cmd("setVirial", &plumed_vir[0][0]);
|
|
191
|
+
|
|
192
|
+
// end setup: these instructions in the original patch are BEFORE do_force()
|
|
193
|
+
// in the original patch do_force() was called HERE
|
|
194
|
+
|
|
195
|
+
// Do the work
|
|
196
|
+
plumed_->cmd("performCalc", nullptr);
|
|
197
|
+
|
|
198
|
+
if(replex_) {
|
|
199
|
+
double bias=0.0;
|
|
200
|
+
plumed_->cmd("getBias",&bias);
|
|
201
|
+
if(bias!=0.0) {
|
|
202
|
+
GMX_THROW(NotImplementedError("The PLUMED patch is still not compatible"
|
|
203
|
+
" with the replica exchange if PLUMED computes biases"));
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
msmul(plumed_vir, 0.5, plumed_vir);
|
|
208
|
+
forceProviderOutput->forceWithVirial_.addVirialContribution(plumed_vir);
|
|
209
|
+
}
|
|
210
|
+
catch (const std::exception& ex)
|
|
211
|
+
{
|
|
212
|
+
GMX_THROW(InternalError(
|
|
213
|
+
std::string("An error occurred while PLUMED was calculating the forces\n:") + ex.what()));
|
|
214
|
+
}
|
|
215
|
+
} // namespace gmx
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the GROMACS molecular simulation package.
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2024- The GROMACS Authors
|
|
5
|
+
* and the project initiators Erik Lindahl, Berk Hess and David van der Spoel.
|
|
6
|
+
* Consult the AUTHORS/COPYING files and https://www.gromacs.org for details.
|
|
7
|
+
*
|
|
8
|
+
* GROMACS is free software; you can redistribute it and/or
|
|
9
|
+
* modify it under the terms of the GNU Lesser General Public License
|
|
10
|
+
* as published by the Free Software Foundation; either version 2.1
|
|
11
|
+
* of the License, or (at your option) any later version.
|
|
12
|
+
*
|
|
13
|
+
* GROMACS is distributed in the hope that it will be useful,
|
|
14
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
16
|
+
* Lesser General Public License for more details.
|
|
17
|
+
*
|
|
18
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
19
|
+
* License along with GROMACS; if not, see
|
|
20
|
+
* https://www.gnu.org/licenses, or write to the Free Software Foundation,
|
|
21
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
22
|
+
*
|
|
23
|
+
* If you want to redistribute modifications to GROMACS, please
|
|
24
|
+
* consider that scientific software is very special. Version
|
|
25
|
+
* control is crucial - bugs must be traceable. We will be happy to
|
|
26
|
+
* consider code for inclusion in the official distribution, but
|
|
27
|
+
* derived work must not be called official GROMACS. Details are found
|
|
28
|
+
* in the README & COPYING files - if they are missing, get the
|
|
29
|
+
* official version at https://www.gromacs.org.
|
|
30
|
+
*
|
|
31
|
+
* To help us fund GROMACS development, we humbly ask that you cite
|
|
32
|
+
* the research papers on the package. Check out https://www.gromacs.org.
|
|
33
|
+
*/
|
|
34
|
+
/*! \internal \file
|
|
35
|
+
* \brief
|
|
36
|
+
* Implementation of the Plumed force provider class
|
|
37
|
+
*
|
|
38
|
+
* \author Daniele Rapetti <drapetti@sissa.it>
|
|
39
|
+
* \ingroup module_applied_forces
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
#include "plumedforceprovider.h"
|
|
43
|
+
|
|
44
|
+
#include "gromacs/domdec/domdec.h"
|
|
45
|
+
#include "gromacs/domdec/domdec_struct.h"
|
|
46
|
+
#include "gromacs/math/units.h"
|
|
47
|
+
#include "gromacs/mdrunutility/handlerestart.h"
|
|
48
|
+
#include "gromacs/mdtypes/commrec.h"
|
|
49
|
+
#include "gromacs/mdtypes/enerdata.h"
|
|
50
|
+
#include "gromacs/mdtypes/forceoutput.h"
|
|
51
|
+
#include "gromacs/utility/exceptions.h"
|
|
52
|
+
|
|
53
|
+
#include "plumedOptions.h"
|
|
54
|
+
|
|
55
|
+
#define __PLUMED_WRAPPER_FORTRAN 0 // NOLINT(bugprone-reserved-identifier)
|
|
56
|
+
|
|
57
|
+
#define __PLUMED_WRAPPER_LINK_RUNTIME 1 // NOLINT(bugprone-reserved-identifier)
|
|
58
|
+
#define __PLUMED_WRAPPER_EXTERN 0 // NOLINT(bugprone-reserved-identifier)
|
|
59
|
+
|
|
60
|
+
#define __PLUMED_WRAPPER_CXX 1 // NOLINT(bugprone-reserved-identifier)
|
|
61
|
+
#define __PLUMED_WRAPPER_LIBCXX11 1 // NOLINT(bugprone-reserved-identifier)
|
|
62
|
+
#define __PLUMED_WRAPPER_LIBCXX17 1 // NOLINT(bugprone-reserved-identifier)
|
|
63
|
+
#define __PLUMED_WRAPPER_IMPLEMENTATION 1 // NOLINT(bugprone-reserved-identifier)
|
|
64
|
+
#define __PLUMED_HAS_DLOPEN // NOLINT(bugprone-reserved-identifier)
|
|
65
|
+
|
|
66
|
+
#include "external/plumed/Plumed.h"
|
|
67
|
+
|
|
68
|
+
namespace gmx
|
|
69
|
+
{
|
|
70
|
+
|
|
71
|
+
PlumedForceProvider::~PlumedForceProvider() = default;
|
|
72
|
+
PlumedForceProvider::PlumedForceProvider(const PlumedOptions& options)
|
|
73
|
+
try : plumed_(std::make_unique<PLMD::Plumed>())
|
|
74
|
+
{
|
|
75
|
+
// I prefer to pass a struct with data because it stops the coupling
|
|
76
|
+
// at the implementation and not at the function signature:
|
|
77
|
+
// less code to edit when adding new options :)
|
|
78
|
+
#if GMX_THREAD_MPI
|
|
79
|
+
if (options.cr_->nnodes > 1)
|
|
80
|
+
{
|
|
81
|
+
GMX_THROW(InvalidInputError(
|
|
82
|
+
"plumed MPI interface is not compatible with THREAD_MPI when uses more than one "
|
|
83
|
+
"rank"));
|
|
84
|
+
}
|
|
85
|
+
#endif
|
|
86
|
+
int real_precision = sizeof(real);
|
|
87
|
+
plumed_->cmd("setRealPrecision", &real_precision);
|
|
88
|
+
real energyUnits = 1.0;
|
|
89
|
+
plumed_->cmd("setMDEnergyUnits", &energyUnits);
|
|
90
|
+
real lengthUnits = 1.0;
|
|
91
|
+
plumed_->cmd("setMDLengthUnits", &lengthUnits);
|
|
92
|
+
real timeUnits = 1.0;
|
|
93
|
+
plumed_->cmd("setMDTimeUnits", &timeUnits);
|
|
94
|
+
|
|
95
|
+
plumed_->cmd("setPlumedDat", options.plumedFile_.c_str());
|
|
96
|
+
|
|
97
|
+
plumed_->cmd("getApiVersion", &plumedAPIversion_);
|
|
98
|
+
if (plumedAPIversion_ > 1)
|
|
99
|
+
{
|
|
100
|
+
/* setting kbT is only implemented with api>1) */
|
|
101
|
+
if (options.ensembleTemperature_.has_value())
|
|
102
|
+
{
|
|
103
|
+
real kbT = options.ensembleTemperature_.value() * gmx::c_boltz;
|
|
104
|
+
plumed_->cmd("setKbT", &kbT);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (plumedAPIversion_ > 2)
|
|
109
|
+
{
|
|
110
|
+
if ((options.startingBehavior_ != StartingBehavior::NewSimulation))
|
|
111
|
+
{
|
|
112
|
+
int res = 1;
|
|
113
|
+
plumed_->cmd("setRestart", &res);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (havePPDomainDecomposition(options.cr_))
|
|
118
|
+
{
|
|
119
|
+
plumed_->cmd("setMPIComm", &options.cr_->mpi_comm_mygroup);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
plumed_->cmd("setNatoms", options.natoms_);
|
|
123
|
+
plumed_->cmd("setMDEngine", "gromacs");
|
|
124
|
+
plumed_->cmd("setLogFile", "PLUMED.OUT");
|
|
125
|
+
|
|
126
|
+
plumed_->cmd("setTimestep", &options.simulationTimeStep_);
|
|
127
|
+
plumed_->cmd("init", nullptr);
|
|
128
|
+
}
|
|
129
|
+
catch (const std::exception& ex)
|
|
130
|
+
{
|
|
131
|
+
GMX_THROW(InternalError(
|
|
132
|
+
std::string("An error occurred while initializing the PLUMED force provider:\n") + ex.what()));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
void PlumedForceProvider::writeCheckpointData()
|
|
136
|
+
try
|
|
137
|
+
{
|
|
138
|
+
if (plumedAPIversion_ > 3)
|
|
139
|
+
{
|
|
140
|
+
int checkp = 1;
|
|
141
|
+
plumed_->cmd("doCheckPoint", &checkp);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (const std::exception& ex)
|
|
145
|
+
{
|
|
146
|
+
GMX_THROW(InternalError(
|
|
147
|
+
std::string("An error occurred while PLUMED was writing the checkpoint data\n:") + ex.what()));
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
void PlumedForceProvider::calculateForces(const ForceProviderInput& forceProviderInput,
|
|
151
|
+
ForceProviderOutput* forceProviderOutput)
|
|
152
|
+
try
|
|
153
|
+
{
|
|
154
|
+
// setup: these instructions in the original patch are BEFORE do_force()
|
|
155
|
+
// now this is called within do_force(), but this does not impact the results
|
|
156
|
+
const t_commrec* cr = &(forceProviderInput.cr_);
|
|
157
|
+
long int lstep = forceProviderInput.step_;
|
|
158
|
+
plumed_->cmd("setStepLong", &lstep);
|
|
159
|
+
if (haveDDAtomOrdering(*cr))
|
|
160
|
+
{
|
|
161
|
+
int nat_home = dd_numHomeAtoms(*cr->dd);
|
|
162
|
+
plumed_->cmd("setAtomsNlocal", &nat_home);
|
|
163
|
+
plumed_->cmd("setAtomsGatindex", cr->dd->globalAtomIndices.data());
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
plumed_->cmd("setPositions", &(forceProviderInput.x_.data()->as_vec()[0]));
|
|
167
|
+
plumed_->cmd("setMasses", forceProviderInput.massT_.data());
|
|
168
|
+
plumed_->cmd("setCharges", forceProviderInput.chargeA_.data());
|
|
169
|
+
plumed_->cmd("setBox", &forceProviderInput.box_[0][0]);
|
|
170
|
+
|
|
171
|
+
plumed_->cmd("prepareCalc", nullptr);
|
|
172
|
+
|
|
173
|
+
int plumedWantsToStop = 0;
|
|
174
|
+
plumed_->cmd("setStopFlag", &plumedWantsToStop);
|
|
175
|
+
|
|
176
|
+
real* fOut = &(forceProviderOutput->forceWithVirial_.force_.data()->as_vec()[0]);
|
|
177
|
+
plumed_->cmd("setForces", fOut);
|
|
178
|
+
|
|
179
|
+
matrix plumed_vir;
|
|
180
|
+
clear_mat(plumed_vir);
|
|
181
|
+
plumed_->cmd("setVirial", &plumed_vir[0][0]);
|
|
182
|
+
|
|
183
|
+
// end setup: these instructions in the original patch are BEFORE do_force()
|
|
184
|
+
// in the original patch do_force() was called HERE
|
|
185
|
+
|
|
186
|
+
// Do the work
|
|
187
|
+
plumed_->cmd("performCalc", nullptr);
|
|
188
|
+
|
|
189
|
+
msmul(plumed_vir, 0.5, plumed_vir);
|
|
190
|
+
forceProviderOutput->forceWithVirial_.addVirialContribution(plumed_vir);
|
|
191
|
+
}
|
|
192
|
+
catch (const std::exception& ex)
|
|
193
|
+
{
|
|
194
|
+
GMX_THROW(InternalError(
|
|
195
|
+
std::string("An error occurred while PLUMED was calculating the forces\n:") + ex.what()));
|
|
196
|
+
}
|
|
197
|
+
} // namespace gmx
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the GROMACS molecular simulation package.
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2024- The GROMACS Authors
|
|
5
|
+
* and the project initiators Erik Lindahl, Berk Hess and David van der Spoel.
|
|
6
|
+
* Consult the AUTHORS/COPYING files and https://www.gromacs.org for details.
|
|
7
|
+
*
|
|
8
|
+
* GROMACS is free software; you can redistribute it and/or
|
|
9
|
+
* modify it under the terms of the GNU Lesser General Public License
|
|
10
|
+
* as published by the Free Software Foundation; either version 2.1
|
|
11
|
+
* of the License, or (at your option) any later version.
|
|
12
|
+
*
|
|
13
|
+
* GROMACS is distributed in the hope that it will be useful,
|
|
14
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
16
|
+
* Lesser General Public License for more details.
|
|
17
|
+
*
|
|
18
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
19
|
+
* License along with GROMACS; if not, see
|
|
20
|
+
* https://www.gnu.org/licenses, or write to the Free Software Foundation,
|
|
21
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
22
|
+
*
|
|
23
|
+
* If you want to redistribute modifications to GROMACS, please
|
|
24
|
+
* consider that scientific software is very special. Version
|
|
25
|
+
* control is crucial - bugs must be traceable. We will be happy to
|
|
26
|
+
* consider code for inclusion in the official distribution, but
|
|
27
|
+
* derived work must not be called official GROMACS. Details are found
|
|
28
|
+
* in the README & COPYING files - if they are missing, get the
|
|
29
|
+
* official version at https://www.gromacs.org.
|
|
30
|
+
*
|
|
31
|
+
* To help us fund GROMACS development, we humbly ask that you cite
|
|
32
|
+
* the research papers on the package. Check out https://www.gromacs.org.
|
|
33
|
+
*/
|
|
34
|
+
/*! \internal \file
|
|
35
|
+
* \brief
|
|
36
|
+
* Declares Plumed force provider class
|
|
37
|
+
*
|
|
38
|
+
* \author Daniele Rapetti <drapetti@sissa.it>
|
|
39
|
+
* \ingroup module_applied_forces
|
|
40
|
+
*/
|
|
41
|
+
#ifndef GMX_APPLIED_FORCES_PLUMEDFORCEPROVIDER_H
|
|
42
|
+
#define GMX_APPLIED_FORCES_PLUMEDFORCEPROVIDER_H
|
|
43
|
+
|
|
44
|
+
#include <memory>
|
|
45
|
+
|
|
46
|
+
#include "gromacs/mdtypes/iforceprovider.h"
|
|
47
|
+
|
|
48
|
+
namespace PLMD
|
|
49
|
+
{
|
|
50
|
+
class Plumed;
|
|
51
|
+
}
|
|
52
|
+
namespace gmx
|
|
53
|
+
{
|
|
54
|
+
struct PlumedOptions;
|
|
55
|
+
/*! \internal \brief
|
|
56
|
+
* Implements IForceProvider for PLUMED.
|
|
57
|
+
*/
|
|
58
|
+
class PlumedForceProvider final : public IForceProvider
|
|
59
|
+
{
|
|
60
|
+
public:
|
|
61
|
+
/*! \brief Initialize the PLUMED interface with the given options
|
|
62
|
+
*
|
|
63
|
+
* \param options PLUMED options
|
|
64
|
+
*/
|
|
65
|
+
PlumedForceProvider(const PlumedOptions& options);
|
|
66
|
+
~PlumedForceProvider();
|
|
67
|
+
/*! \brief Tells PLUMED to output the checkpoint data
|
|
68
|
+
*
|
|
69
|
+
* If the PLUMED API version is not greater than 3 it will do nothing.
|
|
70
|
+
*/
|
|
71
|
+
void writeCheckpointData();
|
|
72
|
+
/*! \brief Calculate the forces with PLUMED
|
|
73
|
+
* \param[in] forceProviderInput input for force provider
|
|
74
|
+
* \param[out] forceProviderOutput output for force provider
|
|
75
|
+
*/
|
|
76
|
+
void calculateForces(const ForceProviderInput& forceProviderInput,
|
|
77
|
+
ForceProviderOutput* forceProviderOutput) override;
|
|
78
|
+
|
|
79
|
+
private:
|
|
80
|
+
std::unique_ptr<PLMD::Plumed> plumed_;
|
|
81
|
+
int plumedAPIversion_;
|
|
82
|
+
bool replex_;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
} // namespace gmx
|
|
86
|
+
|
|
87
|
+
#endif // GMX_APPLIED_FORCES_PLUMEDFORCEPROVIDER_H
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the GROMACS molecular simulation package.
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2024- The GROMACS Authors
|
|
5
|
+
* and the project initiators Erik Lindahl, Berk Hess and David van der Spoel.
|
|
6
|
+
* Consult the AUTHORS/COPYING files and https://www.gromacs.org for details.
|
|
7
|
+
*
|
|
8
|
+
* GROMACS is free software; you can redistribute it and/or
|
|
9
|
+
* modify it under the terms of the GNU Lesser General Public License
|
|
10
|
+
* as published by the Free Software Foundation; either version 2.1
|
|
11
|
+
* of the License, or (at your option) any later version.
|
|
12
|
+
*
|
|
13
|
+
* GROMACS is distributed in the hope that it will be useful,
|
|
14
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
16
|
+
* Lesser General Public License for more details.
|
|
17
|
+
*
|
|
18
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
19
|
+
* License along with GROMACS; if not, see
|
|
20
|
+
* https://www.gnu.org/licenses, or write to the Free Software Foundation,
|
|
21
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
22
|
+
*
|
|
23
|
+
* If you want to redistribute modifications to GROMACS, please
|
|
24
|
+
* consider that scientific software is very special. Version
|
|
25
|
+
* control is crucial - bugs must be traceable. We will be happy to
|
|
26
|
+
* consider code for inclusion in the official distribution, but
|
|
27
|
+
* derived work must not be called official GROMACS. Details are found
|
|
28
|
+
* in the README & COPYING files - if they are missing, get the
|
|
29
|
+
* official version at https://www.gromacs.org.
|
|
30
|
+
*
|
|
31
|
+
* To help us fund GROMACS development, we humbly ask that you cite
|
|
32
|
+
* the research papers on the package. Check out https://www.gromacs.org.
|
|
33
|
+
*/
|
|
34
|
+
/*! \internal \file
|
|
35
|
+
* \brief
|
|
36
|
+
* Declares Plumed force provider class
|
|
37
|
+
*
|
|
38
|
+
* \author Daniele Rapetti <drapetti@sissa.it>
|
|
39
|
+
* \ingroup module_applied_forces
|
|
40
|
+
*/
|
|
41
|
+
#ifndef GMX_APPLIED_FORCES_PLUMEDFORCEPROVIDER_H
|
|
42
|
+
#define GMX_APPLIED_FORCES_PLUMEDFORCEPROVIDER_H
|
|
43
|
+
|
|
44
|
+
#include <memory>
|
|
45
|
+
|
|
46
|
+
#include "gromacs/mdtypes/iforceprovider.h"
|
|
47
|
+
|
|
48
|
+
namespace PLMD
|
|
49
|
+
{
|
|
50
|
+
class Plumed;
|
|
51
|
+
}
|
|
52
|
+
namespace gmx
|
|
53
|
+
{
|
|
54
|
+
struct PlumedOptions;
|
|
55
|
+
/*! \internal \brief
|
|
56
|
+
* Implements IForceProvider for PLUMED.
|
|
57
|
+
*/
|
|
58
|
+
class PlumedForceProvider final : public IForceProvider
|
|
59
|
+
{
|
|
60
|
+
public:
|
|
61
|
+
/*! \brief Initialize the PLUMED interface with the given options
|
|
62
|
+
*
|
|
63
|
+
* \param options PLUMED options
|
|
64
|
+
*/
|
|
65
|
+
PlumedForceProvider(const PlumedOptions& options);
|
|
66
|
+
~PlumedForceProvider();
|
|
67
|
+
/*! \brief Tells PLUMED to output the checkpoint data
|
|
68
|
+
*
|
|
69
|
+
* If the PLUMED API version is not greater than 3 it will do nothing.
|
|
70
|
+
*/
|
|
71
|
+
void writeCheckpointData();
|
|
72
|
+
/*! \brief Calculate the forces with PLUMED
|
|
73
|
+
* \param[in] forceProviderInput input for force provider
|
|
74
|
+
* \param[out] forceProviderOutput output for force provider
|
|
75
|
+
*/
|
|
76
|
+
void calculateForces(const ForceProviderInput& forceProviderInput,
|
|
77
|
+
ForceProviderOutput* forceProviderOutput) override;
|
|
78
|
+
|
|
79
|
+
private:
|
|
80
|
+
std::unique_ptr<PLMD::Plumed> plumed_;
|
|
81
|
+
int plumedAPIversion_;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
} // namespace gmx
|
|
85
|
+
|
|
86
|
+
#endif // GMX_APPLIED_FORCES_PLUMEDFORCEPROVIDER_H
|