hillclimber 0.1.5a8__cp314-cp314-macosx_15_0_x86_64.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 +39 -0
- hillclimber/actions.py +53 -0
- hillclimber/analysis.py +590 -0
- hillclimber/biases.py +293 -0
- hillclimber/calc.py +22 -0
- hillclimber/cvs.py +1065 -0
- hillclimber/interfaces.py +133 -0
- hillclimber/metadynamics.py +325 -0
- hillclimber/nodes.py +6 -0
- hillclimber/opes.py +359 -0
- hillclimber/selectors.py +230 -0
- hillclimber/virtual_atoms.py +341 -0
- hillclimber-0.1.5a8.dist-info/METADATA +209 -0
- hillclimber-0.1.5a8.dist-info/RECORD +469 -0
- hillclimber-0.1.5a8.dist-info/WHEEL +6 -0
- hillclimber-0.1.5a8.dist-info/entry_points.txt +8 -0
- hillclimber-0.1.5a8.dist-info/licenses/LICENSE +165 -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.dylib +0 -0
- plumed/_lib/lib/libplumed.dylib +0 -0
- plumed/_lib/lib/libplumedKernel.dylib +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 +181 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake +6 -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 +3 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc +6 -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 +3 -0
- plumed/_lib/lib/plumed/vim/scripts.vim +6 -0
- plumed/_plumed_core.cpython-311-darwin.so +0 -0
- plumed/_plumed_core.cpython-312-darwin.so +0 -0
- plumed/_plumed_core.cpython-313-darwin.so +0 -0
- plumed/_plumed_core.cpython-314-darwin.so +0 -0
- plumedCommunications.cpython-311-darwin.so +0 -0
- plumedCommunications.cpython-312-darwin.so +0 -0
- plumedCommunications.cpython-313-darwin.so +0 -0
- plumedCommunications.cpython-314-darwin.so +0 -0
- plumedCommunications.pyi +431 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2015-2020 The plumed team
|
|
3
|
+
(see the PEOPLE file at the root of the distribution for a list of names)
|
|
4
|
+
|
|
5
|
+
See http://www.plumed.org for more information.
|
|
6
|
+
|
|
7
|
+
This file is part of plumed, version 2.
|
|
8
|
+
|
|
9
|
+
plumed is free software: you can redistribute it and/or modify
|
|
10
|
+
it under the terms of the GNU Lesser General Public License as published by
|
|
11
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
12
|
+
(at your option) any later version.
|
|
13
|
+
|
|
14
|
+
plumed is distributed in the hope that it will be useful,
|
|
15
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
GNU Lesser General Public License for more details.
|
|
18
|
+
|
|
19
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
20
|
+
along with plumed. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
|
|
22
|
+
#ifndef __PLUMED_clusters_ClusteringBase_h
|
|
23
|
+
#define __PLUMED_clusters_ClusteringBase_h
|
|
24
|
+
|
|
25
|
+
#include "../matrixtools/MatrixOperationBase.h"
|
|
26
|
+
#include "../tools/Matrix.h"
|
|
27
|
+
|
|
28
|
+
namespace PLMD {
|
|
29
|
+
namespace clusters {
|
|
30
|
+
|
|
31
|
+
class ClusteringBase : public matrixtools::MatrixOperationBase {
|
|
32
|
+
protected:
|
|
33
|
+
/// Vector that stores the sizes of the current set of clusters
|
|
34
|
+
std::vector< std::pair<unsigned,unsigned> > cluster_sizes;
|
|
35
|
+
/// Used to identify the cluster we are working on
|
|
36
|
+
int number_of_cluster;
|
|
37
|
+
/// Vector that identifies the cluster each atom belongs to
|
|
38
|
+
std::vector<unsigned> which_cluster;
|
|
39
|
+
/// Get the number of nodes
|
|
40
|
+
unsigned getNumberOfNodes() const ;
|
|
41
|
+
/// Get the neighbour list based on the adjacency matrix
|
|
42
|
+
void retrieveAdjacencyLists( std::vector<unsigned>& nneigh, Matrix<unsigned>& adj_list );
|
|
43
|
+
public:
|
|
44
|
+
/// Create manual
|
|
45
|
+
static void registerKeywords( Keywords& keys );
|
|
46
|
+
/// Constructor
|
|
47
|
+
explicit ClusteringBase(const ActionOptions&);
|
|
48
|
+
///
|
|
49
|
+
unsigned getNumberOfDerivatives() override {
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
///
|
|
53
|
+
void calculate() override;
|
|
54
|
+
///
|
|
55
|
+
virtual void performClustering()=0;
|
|
56
|
+
/// Cannot apply forces on a clustering object
|
|
57
|
+
void apply() override ;
|
|
58
|
+
double getForceOnMatrixElement( const unsigned& jrow, const unsigned& krow ) const override {
|
|
59
|
+
plumed_error();
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
inline
|
|
64
|
+
unsigned ClusteringBase::getNumberOfNodes() const {
|
|
65
|
+
return getPntrToArgument(0)->getShape()[0];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
#endif
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2012-2023 The plumed team
|
|
3
|
+
(see the PEOPLE file at the root of the distribution for a list of names)
|
|
4
|
+
|
|
5
|
+
See http://www.plumed.org for more information.
|
|
6
|
+
|
|
7
|
+
This file is part of plumed, version 2.
|
|
8
|
+
|
|
9
|
+
plumed is free software: you can redistribute it and/or modify
|
|
10
|
+
it under the terms of the GNU Lesser General Public License as published by
|
|
11
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
12
|
+
(at your option) any later version.
|
|
13
|
+
|
|
14
|
+
plumed is distributed in the hope that it will be useful,
|
|
15
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
GNU Lesser General Public License for more details.
|
|
18
|
+
|
|
19
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
20
|
+
along with plumed. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
|
|
22
|
+
#ifndef __PLUMED_colvar_Colvar_h
|
|
23
|
+
#define __PLUMED_colvar_Colvar_h
|
|
24
|
+
#include "../core/Colvar.h"
|
|
25
|
+
namespace PLMD {
|
|
26
|
+
namespace colvar {
|
|
27
|
+
// Ideally core/Colvar.h should be moved to this directory and Colvar should stay in namespace PLMD::colvar
|
|
28
|
+
// With this trick, PLMD::Colvar is visible as PLMD::colvar::Colvar
|
|
29
|
+
using PLMD::Colvar;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
#endif
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2025 The plumed team
|
|
3
|
+
(see the PEOPLE file at the root of the distribution for a list of names)
|
|
4
|
+
|
|
5
|
+
See http://www.plumed.org for more information.
|
|
6
|
+
|
|
7
|
+
This file is part of plumed, version 2.
|
|
8
|
+
|
|
9
|
+
plumed is free software: you can redistribute it and/or modify
|
|
10
|
+
it under the terms of the GNU Lesser General Public License as published by
|
|
11
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
12
|
+
(at your option) any later version.
|
|
13
|
+
|
|
14
|
+
plumed is distributed in the hope that it will be useful,
|
|
15
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
GNU Lesser General Public License for more details.
|
|
18
|
+
|
|
19
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
20
|
+
along with plumed. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
|
|
22
|
+
#ifndef __PLUMED_colvar_ColvarInput_h
|
|
23
|
+
#define __PLUMED_colvar_ColvarInput_h
|
|
24
|
+
|
|
25
|
+
#include <vector>
|
|
26
|
+
|
|
27
|
+
#include "../tools/Pbc.h"
|
|
28
|
+
#include "../tools/View.h"
|
|
29
|
+
#include "../tools/View2D.h"
|
|
30
|
+
#include "../tools/Vector.h"
|
|
31
|
+
#include "../tools/Tensor.h"
|
|
32
|
+
#include "../tools/ColvarOutput.h"
|
|
33
|
+
|
|
34
|
+
namespace PLMD {
|
|
35
|
+
|
|
36
|
+
class Colvar;
|
|
37
|
+
|
|
38
|
+
namespace colvar {
|
|
39
|
+
struct ColvarInput {
|
|
40
|
+
unsigned mode;
|
|
41
|
+
const Pbc& pbc;
|
|
42
|
+
View2D<const double,helpers::dynamic_extent,3> pos;
|
|
43
|
+
View<const double> mass;
|
|
44
|
+
View<const double> charges;
|
|
45
|
+
ColvarInput( unsigned m,
|
|
46
|
+
unsigned natoms,
|
|
47
|
+
const double* p,
|
|
48
|
+
const double* w,
|
|
49
|
+
const double* q,
|
|
50
|
+
const Pbc& box ) :
|
|
51
|
+
mode(m),
|
|
52
|
+
pbc(box),
|
|
53
|
+
pos(p,natoms),
|
|
54
|
+
mass(w,natoms),
|
|
55
|
+
charges(q,natoms) {
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
static ColvarInput createColvarInput( unsigned m, const std::vector<Vector>& p, const Colvar* colv );
|
|
59
|
+
#pragma acc routine seq
|
|
60
|
+
static void setBoxDerivativesNoPbc( const ColvarInput& inpt, ColvarOutput& out );
|
|
61
|
+
/// same as setBoxDerivativesNoPbc but with no extra memory allocations
|
|
62
|
+
#pragma acc routine seq
|
|
63
|
+
static void setBoxDerivativesNoPbc_inplace( const ColvarInput& inpt, ColvarOutput& out );
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
} // namespace colvar
|
|
67
|
+
} //namespace PLMD
|
|
68
|
+
#endif // __PLUMED_colvar_ColvarInput_h
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2011-2023 The plumed team
|
|
3
|
+
(see the PEOPLE file at the root of the distribution for a list of names)
|
|
4
|
+
|
|
5
|
+
See http://www.plumed.org for more information.
|
|
6
|
+
|
|
7
|
+
This file is part of plumed, version 2.
|
|
8
|
+
|
|
9
|
+
plumed is free software: you can redistribute it and/or modify
|
|
10
|
+
it under the terms of the GNU Lesser General Public License as published by
|
|
11
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
12
|
+
(at your option) any later version.
|
|
13
|
+
|
|
14
|
+
plumed is distributed in the hope that it will be useful,
|
|
15
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
GNU Lesser General Public License for more details.
|
|
18
|
+
|
|
19
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
20
|
+
along with plumed. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
|
|
22
|
+
#ifndef __PLUMED_colvar_ColvarShortcut_h
|
|
23
|
+
#define __PLUMED_colvar_ColvarShortcut_h
|
|
24
|
+
|
|
25
|
+
#include "../core/ActionShortcut.h"
|
|
26
|
+
|
|
27
|
+
namespace PLMD {
|
|
28
|
+
namespace colvar {
|
|
29
|
+
|
|
30
|
+
template <class T>
|
|
31
|
+
class ColvarShortcut : public ActionShortcut {
|
|
32
|
+
public:
|
|
33
|
+
static void registerKeywords(Keywords&);
|
|
34
|
+
explicit ColvarShortcut(const ActionOptions&);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
template <class T>
|
|
38
|
+
void ColvarShortcut<T>::registerKeywords(Keywords& keys ) {
|
|
39
|
+
T::registerKeywords( keys );
|
|
40
|
+
keys.remove("NO_ACTION_LOG");
|
|
41
|
+
for (auto& key : keys.getKeys()) {
|
|
42
|
+
if( keys.style( key, "atoms" ) ) {
|
|
43
|
+
keys.reset_style( key, "numbered" );
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
keys.addActionNameSuffix("_SCALAR");
|
|
47
|
+
keys.addActionNameSuffix("_VECTOR");
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
template <class T>
|
|
51
|
+
ColvarShortcut<T>::ColvarShortcut(const ActionOptions&ao):
|
|
52
|
+
Action(ao),
|
|
53
|
+
ActionShortcut(ao) {
|
|
54
|
+
bool scalar=true;
|
|
55
|
+
if( getName()=="MASS" || getName()=="CHARGE" || getName()=="POSITION" ) {
|
|
56
|
+
std::string inpt;
|
|
57
|
+
parse("ATOMS",inpt);
|
|
58
|
+
if( inpt.length()>0 ) {
|
|
59
|
+
readInputLine( getShortcutLabel() + ": " + getName() + "_VECTOR ATOMS=" + inpt + " " + convertInputLineToString() );
|
|
60
|
+
scalar=false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
for (auto& key : keywords.getKeys()) {
|
|
64
|
+
if( keywords.style( key, "atoms" ) ) {
|
|
65
|
+
std::string inpt;
|
|
66
|
+
parseNumbered( key, 1, inpt );
|
|
67
|
+
if( inpt.length()>0 ) {
|
|
68
|
+
readInputLine( getShortcutLabel() + ": " + getName() + "_VECTOR " + key + "1=" + inpt + " " + convertInputLineToString() );
|
|
69
|
+
scalar=false;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if( scalar ) {
|
|
75
|
+
readInputLine( getShortcutLabel() + ": " + getName() + "_SCALAR " + convertInputLineToString() );
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
#endif
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2013-2023 The plumed team
|
|
3
|
+
(see the PEOPLE file at the root of the distribution for a list of names)
|
|
4
|
+
|
|
5
|
+
See http://www.plumed.org for more information.
|
|
6
|
+
|
|
7
|
+
This file is part of plumed, version 2.
|
|
8
|
+
|
|
9
|
+
plumed is free software: you can redistribute it and/or modify
|
|
10
|
+
it under the terms of the GNU Lesser General Public License as published by
|
|
11
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
12
|
+
(at your option) any later version.
|
|
13
|
+
|
|
14
|
+
plumed is distributed in the hope that it will be useful,
|
|
15
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
GNU Lesser General Public License for more details.
|
|
18
|
+
|
|
19
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
20
|
+
along with plumed. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
|
|
22
|
+
#ifndef __PLUMED_colvar_CoordinationBase_h
|
|
23
|
+
#define __PLUMED_colvar_CoordinationBase_h
|
|
24
|
+
#include "Colvar.h"
|
|
25
|
+
#include <memory>
|
|
26
|
+
|
|
27
|
+
namespace PLMD {
|
|
28
|
+
|
|
29
|
+
class NeighborList;
|
|
30
|
+
|
|
31
|
+
namespace colvar {
|
|
32
|
+
|
|
33
|
+
class CoordinationBase : public Colvar {
|
|
34
|
+
bool pbc;
|
|
35
|
+
bool serial;
|
|
36
|
+
std::unique_ptr<NeighborList> nl;
|
|
37
|
+
bool invalidateList;
|
|
38
|
+
bool firsttime;
|
|
39
|
+
|
|
40
|
+
public:
|
|
41
|
+
explicit CoordinationBase(const ActionOptions&);
|
|
42
|
+
~CoordinationBase();
|
|
43
|
+
// active methods:
|
|
44
|
+
void calculate() override;
|
|
45
|
+
void prepare() override;
|
|
46
|
+
virtual double pairing(double distance,double&dfunc,unsigned i,unsigned j)const=0;
|
|
47
|
+
static void registerKeywords( Keywords& keys );
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
#endif
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2011-2023 The plumed team
|
|
3
|
+
(see the PEOPLE file at the root of the distribution for a list of names)
|
|
4
|
+
|
|
5
|
+
See http://www.plumed.org for more information.
|
|
6
|
+
|
|
7
|
+
This file is part of plumed, version 2.
|
|
8
|
+
|
|
9
|
+
plumed is free software: you can redistribute it and/or modify
|
|
10
|
+
it under the terms of the GNU Lesser General Public License as published by
|
|
11
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
12
|
+
(at your option) any later version.
|
|
13
|
+
|
|
14
|
+
plumed is distributed in the hope that it will be useful,
|
|
15
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
GNU Lesser General Public License for more details.
|
|
18
|
+
|
|
19
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
20
|
+
along with plumed. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
|
|
22
|
+
#ifndef __PLUMED_colvar_MultiColvarTemplate_h
|
|
23
|
+
#define __PLUMED_colvar_MultiColvarTemplate_h
|
|
24
|
+
|
|
25
|
+
#include "../core/ActionWithVector.h"
|
|
26
|
+
#include "../core/ParallelTaskManager.h"
|
|
27
|
+
#include "../tools/ColvarOutput.h"
|
|
28
|
+
#include "ColvarInput.h"
|
|
29
|
+
|
|
30
|
+
namespace PLMD {
|
|
31
|
+
|
|
32
|
+
class Colvar;
|
|
33
|
+
|
|
34
|
+
namespace colvar {
|
|
35
|
+
|
|
36
|
+
struct MultiColvarInput {
|
|
37
|
+
bool usepbc;
|
|
38
|
+
unsigned mode;
|
|
39
|
+
unsigned nindices_per_task;
|
|
40
|
+
//this is so simple that it better to use the Rule of 0
|
|
41
|
+
//and the openacc helpers
|
|
42
|
+
void toACCDevice()const {
|
|
43
|
+
#pragma acc enter data copyin(this[0:1], usepbc, mode, nindices_per_task)
|
|
44
|
+
}
|
|
45
|
+
void removeFromACCDevice() const {
|
|
46
|
+
#pragma acc exit data delete(nindices_per_task, mode, usepbc, this[0:1])
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
template <class T>
|
|
51
|
+
class MultiColvarTemplate : public ActionWithVector {
|
|
52
|
+
public:
|
|
53
|
+
using input_type = MultiColvarInput;
|
|
54
|
+
using PTM = ParallelTaskManager<MultiColvarTemplate<T>>;
|
|
55
|
+
constexpr static size_t virialSize = 9;
|
|
56
|
+
private:
|
|
57
|
+
/// The parallel task manager
|
|
58
|
+
PTM taskmanager;
|
|
59
|
+
/// An index that decides what we are calculating
|
|
60
|
+
unsigned mode;
|
|
61
|
+
/// Are we using pbc to calculate the CVs
|
|
62
|
+
bool usepbc;
|
|
63
|
+
/// Do we reassemble the molecule
|
|
64
|
+
bool wholemolecules;
|
|
65
|
+
/// The number of atoms per task
|
|
66
|
+
unsigned natoms_per_task;
|
|
67
|
+
public:
|
|
68
|
+
static void registerKeywords(Keywords&);
|
|
69
|
+
explicit MultiColvarTemplate(const ActionOptions&);
|
|
70
|
+
unsigned getNumberOfDerivatives() override ;
|
|
71
|
+
void addValueWithDerivatives( const std::vector<std::size_t>& shape=std::vector<std::size_t>() ) override ;
|
|
72
|
+
void addComponentWithDerivatives( const std::string& name, const std::vector<std::size_t>& shape=std::vector<std::size_t>() ) override ;
|
|
73
|
+
void getInputData( std::vector<double>& inputdata ) const override ;
|
|
74
|
+
void calculate() override;
|
|
75
|
+
void applyNonZeroRankForces( std::vector<double>& outforces ) override ;
|
|
76
|
+
static void performTask( std::size_t task_index,
|
|
77
|
+
const MultiColvarInput& actiondata,
|
|
78
|
+
ParallelActionsInput& input,
|
|
79
|
+
ParallelActionsOutput& output );
|
|
80
|
+
static int getNumberOfValuesPerTask( std::size_t task_index, const MultiColvarInput& actiondata );
|
|
81
|
+
static void getForceIndices( std::size_t task_index,
|
|
82
|
+
std::size_t colno,
|
|
83
|
+
std::size_t ntotal_force,
|
|
84
|
+
const MultiColvarInput& actiondata,
|
|
85
|
+
const ParallelActionsInput& input,
|
|
86
|
+
ForceIndexHolder force_indices );
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
template <class T>
|
|
90
|
+
void MultiColvarTemplate<T>::registerKeywords(Keywords& keys ) {
|
|
91
|
+
T::registerKeywords( keys );
|
|
92
|
+
PTM::registerKeywords( keys );
|
|
93
|
+
keys.addInputKeyword("optional","MASK","vector","the label for a sparse vector that should be used to determine which elements of the vector should be computed");
|
|
94
|
+
unsigned nkeys = keys.size();
|
|
95
|
+
for(unsigned i=0; i<nkeys; ++i) {
|
|
96
|
+
if( keys.style( keys.getKeyword(i), "atoms" ) ) {
|
|
97
|
+
keys.reset_style( keys.getKeyword(i), "numbered" );
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if( keys.outputComponentExists(".#!value") ) {
|
|
101
|
+
keys.setValueDescription("vector","the " + keys.getDisplayName() + " for each set of specified atoms");
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
template <class T>
|
|
106
|
+
MultiColvarTemplate<T>::MultiColvarTemplate(const ActionOptions&ao):
|
|
107
|
+
Action(ao),
|
|
108
|
+
ActionWithVector(ao),
|
|
109
|
+
taskmanager(this),
|
|
110
|
+
mode(0),
|
|
111
|
+
usepbc(true),
|
|
112
|
+
wholemolecules(false) {
|
|
113
|
+
std::vector<AtomNumber> all_atoms;
|
|
114
|
+
if( getName()=="POSITION_VECTOR" || getName()=="MASS_VECTOR" || getName()=="CHARGE_VECTOR" ) {
|
|
115
|
+
parseAtomList( "ATOMS", all_atoms );
|
|
116
|
+
}
|
|
117
|
+
if( all_atoms.size()>0 ) {
|
|
118
|
+
natoms_per_task=1;
|
|
119
|
+
} else {
|
|
120
|
+
std::vector<AtomNumber> t;
|
|
121
|
+
for(int i=1;; ++i ) {
|
|
122
|
+
T::parseAtomList( i, t, this );
|
|
123
|
+
if( t.empty() ) {
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if( i==1 ) {
|
|
128
|
+
natoms_per_task=t.size();
|
|
129
|
+
}
|
|
130
|
+
if( t.size()!=natoms_per_task ) {
|
|
131
|
+
std::string ss;
|
|
132
|
+
Tools::convert(i,ss);
|
|
133
|
+
error("ATOMS" + ss + " keyword has the wrong number of atoms");
|
|
134
|
+
}
|
|
135
|
+
for(unsigned j=0; j<natoms_per_task; ++j) {
|
|
136
|
+
all_atoms.push_back( t[j] );
|
|
137
|
+
}
|
|
138
|
+
t.resize(0);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if( all_atoms.size()==0 ) {
|
|
142
|
+
error("No atoms have been specified");
|
|
143
|
+
}
|
|
144
|
+
requestAtoms(all_atoms);
|
|
145
|
+
if( keywords.exists("NOPBC") ) {
|
|
146
|
+
bool nopbc=!usepbc;
|
|
147
|
+
parseFlag("NOPBC",nopbc);
|
|
148
|
+
usepbc=!nopbc;
|
|
149
|
+
}
|
|
150
|
+
if( keywords.exists("WHOLEMOLECULES") ) {
|
|
151
|
+
parseFlag("WHOLEMOLECULES",wholemolecules);
|
|
152
|
+
if( wholemolecules ) {
|
|
153
|
+
usepbc=false;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if( usepbc ) {
|
|
157
|
+
log.printf(" using periodic boundary conditions\n");
|
|
158
|
+
} else {
|
|
159
|
+
log.printf(" without periodic boundary conditions\n");
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Setup the values
|
|
163
|
+
mode = T::getModeAndSetupValues( this );
|
|
164
|
+
// This sets up an array in the parallel task manager to hold all the indices
|
|
165
|
+
// Sets up the index list in the task manager
|
|
166
|
+
taskmanager.setupParallelTaskManager( 3*natoms_per_task + virialSize, virialSize );
|
|
167
|
+
taskmanager.setActionInput( MultiColvarInput{ usepbc, mode, natoms_per_task });
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
template <class T>
|
|
171
|
+
unsigned MultiColvarTemplate<T>::getNumberOfDerivatives() {
|
|
172
|
+
return 3*getNumberOfAtoms()+9;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
template <class T>
|
|
176
|
+
void MultiColvarTemplate<T>::calculate() {
|
|
177
|
+
if( wholemolecules ) {
|
|
178
|
+
makeWhole();
|
|
179
|
+
}
|
|
180
|
+
taskmanager.runAllTasks();
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
template <class T>
|
|
184
|
+
void MultiColvarTemplate<T>::applyNonZeroRankForces( std::vector<double>& outforces ) {
|
|
185
|
+
taskmanager.applyForces( outforces );
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
template <class T>
|
|
189
|
+
void MultiColvarTemplate<T>::addValueWithDerivatives( const std::vector<std::size_t>& shape ) {
|
|
190
|
+
std::vector<std::size_t> s(1);
|
|
191
|
+
s[0]=getNumberOfAtoms() / natoms_per_task;
|
|
192
|
+
addValue( s );
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
template <class T>
|
|
196
|
+
void MultiColvarTemplate<T>::addComponentWithDerivatives( const std::string& compName, const std::vector<std::size_t>& shape ) {
|
|
197
|
+
std::vector<std::size_t> s(1);
|
|
198
|
+
s[0]=getNumberOfAtoms() / natoms_per_task;
|
|
199
|
+
addComponent( compName, s );
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
template <class T>
|
|
203
|
+
void MultiColvarTemplate<T>::getInputData( std::vector<double>& inputdata ) const {
|
|
204
|
+
std::size_t ntasks = getConstPntrToComponent(0)->getNumberOfStoredValues();
|
|
205
|
+
if( inputdata.size()!=5*natoms_per_task*ntasks ) {
|
|
206
|
+
inputdata.resize( 5*natoms_per_task*ntasks );
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
std::size_t k=0;
|
|
210
|
+
for(unsigned i=0; i<ntasks; ++i) {
|
|
211
|
+
for(unsigned j=0; j<natoms_per_task; ++j) {
|
|
212
|
+
Vector mypos( getPosition( natoms_per_task*i + j ) );
|
|
213
|
+
inputdata[k] = mypos[0];
|
|
214
|
+
k++;
|
|
215
|
+
inputdata[k] = mypos[1];
|
|
216
|
+
k++;
|
|
217
|
+
inputdata[k] = mypos[2];
|
|
218
|
+
k++;
|
|
219
|
+
}
|
|
220
|
+
for(unsigned j=0; j<natoms_per_task; ++j) {
|
|
221
|
+
inputdata[k] = getMass( natoms_per_task*i + j );
|
|
222
|
+
k++;
|
|
223
|
+
}
|
|
224
|
+
for(unsigned j=0; j<natoms_per_task; ++j) {
|
|
225
|
+
inputdata[k] = getCharge( natoms_per_task*i + j );
|
|
226
|
+
k++;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
template <class T>
|
|
232
|
+
void MultiColvarTemplate<T>::performTask( std::size_t task_index,
|
|
233
|
+
const MultiColvarInput& actiondata,
|
|
234
|
+
ParallelActionsInput& input,
|
|
235
|
+
ParallelActionsOutput& output ) {
|
|
236
|
+
std::size_t pos_start = 5*actiondata.nindices_per_task*task_index;
|
|
237
|
+
if( actiondata.usepbc ) {
|
|
238
|
+
if( actiondata.nindices_per_task==1 ) {
|
|
239
|
+
//this may be changed to input.pbc.apply() en mass or only on this one
|
|
240
|
+
Vector fpos=input.pbc->distance(Vector(0.0,0.0,0.0),
|
|
241
|
+
Vector(input.inputdata[pos_start],
|
|
242
|
+
input.inputdata[pos_start+1],
|
|
243
|
+
input.inputdata[pos_start+2]) );
|
|
244
|
+
input.inputdata[pos_start] =fpos[0];
|
|
245
|
+
input.inputdata[pos_start+1]=fpos[1];
|
|
246
|
+
input.inputdata[pos_start+2]=fpos[2];
|
|
247
|
+
} else {
|
|
248
|
+
//make whole?
|
|
249
|
+
std::size_t apos_start = pos_start;
|
|
250
|
+
//if accidentaly nindices_per_task is 0, this will work by looping on all possible unsigned integers!!!!
|
|
251
|
+
for(unsigned j=0; j<actiondata.nindices_per_task-1; ++j) {
|
|
252
|
+
Vector first(input.inputdata[apos_start],
|
|
253
|
+
input.inputdata[apos_start+1],
|
|
254
|
+
input.inputdata[apos_start+2]);
|
|
255
|
+
Vector second(input.inputdata[apos_start+3],
|
|
256
|
+
input.inputdata[apos_start+4],
|
|
257
|
+
input.inputdata[apos_start+5]);
|
|
258
|
+
//calling the pbc here gives problems
|
|
259
|
+
second=first+input.pbc->distance(first,second);
|
|
260
|
+
input.inputdata[apos_start+3]=second[0];
|
|
261
|
+
input.inputdata[apos_start+4]=second[1];
|
|
262
|
+
input.inputdata[apos_start+5]=second[2];
|
|
263
|
+
apos_start += 3;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
} else if( actiondata.nindices_per_task==1 ) {
|
|
267
|
+
//isn't this equivalent to x = x-0?
|
|
268
|
+
//why this is needed?
|
|
269
|
+
Vector fpos=delta(Vector(0.0,0.0,0.0),
|
|
270
|
+
Vector(input.inputdata[pos_start],
|
|
271
|
+
input.inputdata[pos_start+1],
|
|
272
|
+
input.inputdata[pos_start+2]));
|
|
273
|
+
input.inputdata[pos_start]=fpos[0];
|
|
274
|
+
input.inputdata[pos_start+1]=fpos[1];
|
|
275
|
+
input.inputdata[pos_start+2]=fpos[2];
|
|
276
|
+
}
|
|
277
|
+
const size_t mass_start = pos_start + 3*actiondata.nindices_per_task;
|
|
278
|
+
const size_t charge_start = mass_start + actiondata.nindices_per_task;
|
|
279
|
+
const size_t local_ndev = 3*actiondata.nindices_per_task+virialSize;
|
|
280
|
+
|
|
281
|
+
ColvarOutput cvout { output.values,
|
|
282
|
+
local_ndev,
|
|
283
|
+
output.derivatives.data() };
|
|
284
|
+
T::calculateCV( ColvarInput{actiondata.mode,
|
|
285
|
+
actiondata.nindices_per_task,
|
|
286
|
+
input.inputdata+pos_start,
|
|
287
|
+
input.inputdata+mass_start,
|
|
288
|
+
input.inputdata+charge_start,
|
|
289
|
+
*input.pbc},
|
|
290
|
+
cvout );
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
template <class T>
|
|
294
|
+
int MultiColvarTemplate<T>::getNumberOfValuesPerTask( std::size_t task_index,
|
|
295
|
+
const MultiColvarInput& actiondata ) {
|
|
296
|
+
return 1;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
template <class T>
|
|
300
|
+
void MultiColvarTemplate<T>::getForceIndices( std::size_t task_index,
|
|
301
|
+
std::size_t colno,
|
|
302
|
+
std::size_t ntotal_force,
|
|
303
|
+
const MultiColvarInput& actiondata,
|
|
304
|
+
const ParallelActionsInput& input,
|
|
305
|
+
ForceIndexHolder force_indices ) {
|
|
306
|
+
for(unsigned i=0; i<input.ncomponents; ++i) {
|
|
307
|
+
std::size_t m=0;
|
|
308
|
+
std::size_t base = 3*task_index*actiondata.nindices_per_task;
|
|
309
|
+
for(unsigned j=0; j<actiondata.nindices_per_task; ++j) {
|
|
310
|
+
force_indices.indices[i][m] = base + m;
|
|
311
|
+
++m;
|
|
312
|
+
force_indices.indices[i][m] = base + m;
|
|
313
|
+
++m;
|
|
314
|
+
force_indices.indices[i][m] = base + m;
|
|
315
|
+
++m;
|
|
316
|
+
}
|
|
317
|
+
force_indices.threadsafe_derivatives_end[i] = 3*actiondata.nindices_per_task;
|
|
318
|
+
force_indices.indices[i][m+0] = ntotal_force - 9;
|
|
319
|
+
force_indices.indices[i][m+1] = ntotal_force - 8;
|
|
320
|
+
force_indices.indices[i][m+2] = ntotal_force - 7;
|
|
321
|
+
force_indices.indices[i][m+3] = ntotal_force - 6;
|
|
322
|
+
force_indices.indices[i][m+4] = ntotal_force - 5;
|
|
323
|
+
force_indices.indices[i][m+5] = ntotal_force - 4;
|
|
324
|
+
force_indices.indices[i][m+6] = ntotal_force - 3;
|
|
325
|
+
force_indices.indices[i][m+7] = ntotal_force - 2;
|
|
326
|
+
force_indices.indices[i][m+8] = ntotal_force - 1;
|
|
327
|
+
force_indices.tot_indices[i] = 3*actiondata.nindices_per_task + virialSize;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
} // namespace colvar
|
|
332
|
+
} // namespace PLMD
|
|
333
|
+
#endif
|