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,547 @@
|
|
|
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_core_Value_h
|
|
23
|
+
#define __PLUMED_core_Value_h
|
|
24
|
+
|
|
25
|
+
#include <vector>
|
|
26
|
+
#include <string>
|
|
27
|
+
#include <map>
|
|
28
|
+
#include "../tools/Exception.h"
|
|
29
|
+
#include "../tools/Tools.h"
|
|
30
|
+
#include "../tools/AtomNumber.h"
|
|
31
|
+
#include "../tools/Vector.h"
|
|
32
|
+
#include "../tools/View.h"
|
|
33
|
+
|
|
34
|
+
namespace PLMD {
|
|
35
|
+
|
|
36
|
+
class OFile;
|
|
37
|
+
class Communicator;
|
|
38
|
+
class ActionWithValue;
|
|
39
|
+
class ActionAtomistic;
|
|
40
|
+
|
|
41
|
+
/// \ingroup TOOLBOX
|
|
42
|
+
/// A class for holding the value of a function together with its derivatives.
|
|
43
|
+
/// Typically, an object of type PLMD::ActionWithValue will contain one
|
|
44
|
+
/// object of type PLUMD::Value that will be named after the label. If the
|
|
45
|
+
/// PLMD::ActionWithValue is part of a class that calculates multiple components
|
|
46
|
+
/// then the class will contain multiple that will be called label.component-name
|
|
47
|
+
/// This class is used to pass information between different PLMD::Action
|
|
48
|
+
/// objects. However, if you find a use for a tempory PLMD::Value in some method
|
|
49
|
+
/// you are implementing please feel free to use it.
|
|
50
|
+
class Value {
|
|
51
|
+
friend struct ArgumentsBookkeeping;
|
|
52
|
+
friend class ActionWithValue;
|
|
53
|
+
friend class ActionWithVector;
|
|
54
|
+
friend class ActionWithMatrix;
|
|
55
|
+
friend class ActionAtomistic;
|
|
56
|
+
friend class ActionWithArguments;
|
|
57
|
+
friend class ActionWithVirtualAtom;
|
|
58
|
+
friend class DomainDecomposition;
|
|
59
|
+
template<typename T>
|
|
60
|
+
friend class DataPassingObjectTyped;
|
|
61
|
+
private:
|
|
62
|
+
/// The action in which this quantity is calculated
|
|
63
|
+
ActionWithValue* action=nullptr;
|
|
64
|
+
/// Had the value been set
|
|
65
|
+
bool value_set=false;
|
|
66
|
+
/// The value of the quantity
|
|
67
|
+
std::vector<double> data;
|
|
68
|
+
/// The force acting on this quantity
|
|
69
|
+
std::vector<double> inputForce;
|
|
70
|
+
/// A flag telling us we have a force acting on this quantity
|
|
71
|
+
bool hasForce=false;
|
|
72
|
+
/// The way this value is used in the code
|
|
73
|
+
/// normal = regular value that is determined during calculate
|
|
74
|
+
/// constant = constnt value that is determined during startup and that doesn't change during simulation
|
|
75
|
+
/// average = value that is averaged/collected over multiple steps of trajectory
|
|
76
|
+
/// calcFromAverage = value that is calculated from an average value
|
|
77
|
+
enum {normal,constant,average,calcFromAverage} valtype=normal;
|
|
78
|
+
/// This is used by ActionWithValue to set the valtype
|
|
79
|
+
void setValType( const std::string& vtype );
|
|
80
|
+
/// This is used by ActionWithValue to determine if we need to calculate on update
|
|
81
|
+
bool calculateOnUpdate() const ;
|
|
82
|
+
/// The derivatives of the quantity stored in value
|
|
83
|
+
std::map<AtomNumber,Vector> gradients;
|
|
84
|
+
/// The name of this quantiy
|
|
85
|
+
std::string name;
|
|
86
|
+
/// What is the shape of the value (0 dimensional=scalar, n dimensional with derivatives=grid, 1 dimensional no derivatives=vector, 2 dimensional no derivatives=matrix)
|
|
87
|
+
std::vector<std::size_t> shape;
|
|
88
|
+
/// Does this quanity have derivatives
|
|
89
|
+
bool hasDeriv=true;
|
|
90
|
+
/// Variables for storing data
|
|
91
|
+
unsigned bufstart=0;
|
|
92
|
+
unsigned ngrid_der=0;
|
|
93
|
+
std::size_t ncols=0;
|
|
94
|
+
/// If we are storing a matrix is it symmetric?
|
|
95
|
+
bool symmetric=false;
|
|
96
|
+
/// This is a bookeeping array that holds the non-zero elements of the "sparse" matrix
|
|
97
|
+
std::vector<unsigned> matrix_bookeeping;
|
|
98
|
+
/// Is this quantity periodic
|
|
99
|
+
enum {unset,periodic,notperiodic} periodicity=unset;
|
|
100
|
+
/// Various quantities that describe the domain of this value
|
|
101
|
+
std::string str_min;
|
|
102
|
+
std::string str_max;
|
|
103
|
+
double min=0.0;
|
|
104
|
+
double max=0.0;
|
|
105
|
+
double max_minus_min=0.0;
|
|
106
|
+
double inv_max_minus_min=0.0;
|
|
107
|
+
/// Is the derivative of this quantity zero when the value is zero
|
|
108
|
+
bool derivativeIsZeroWhenValueIsZero=false;
|
|
109
|
+
/// Complete the setup of the periodicity
|
|
110
|
+
void setupPeriodicity();
|
|
111
|
+
// bring value within PBCs
|
|
112
|
+
void applyPeriodicity( const unsigned& ival );
|
|
113
|
+
public:
|
|
114
|
+
/// A constructor that can be used to make Vectors of values
|
|
115
|
+
Value();
|
|
116
|
+
/// A constructor that can be used to make Vectors of named values
|
|
117
|
+
explicit Value(const std::string& valname);
|
|
118
|
+
/// A constructor that is used throughout the code to setup the value poiters
|
|
119
|
+
Value(ActionWithValue* av, const std::string& valname, const bool withderiv,const std::vector<std::size_t>&ss=std::vector<std::size_t>());
|
|
120
|
+
/// Set the shape of the Value
|
|
121
|
+
void setShape( const std::vector<std::size_t>&ss );
|
|
122
|
+
/// Set the value of the function
|
|
123
|
+
void set(double);
|
|
124
|
+
/// Set the value of the stored data
|
|
125
|
+
void set(const std::size_t& n, const double& v );
|
|
126
|
+
/// Add something to the value of the function
|
|
127
|
+
void add(double);
|
|
128
|
+
/// Add something to the ith element of the data array
|
|
129
|
+
void add(const std::size_t& n, const double& v );
|
|
130
|
+
/// Get the location of this element of in the store
|
|
131
|
+
std::size_t getIndexInStore( const std::size_t& ival ) const ;
|
|
132
|
+
/// Get the value of the function
|
|
133
|
+
double get( const std::size_t ival=0, const bool trueind=true ) const;
|
|
134
|
+
/// A variant of get() for checking that at least one of the values on the row is !=0
|
|
135
|
+
bool checkValueIsActiveForMMul(std::size_t task) const;
|
|
136
|
+
/// A variant of get() for assigning data to an external view (assuems trueind=false), returns the number of arguments assigned
|
|
137
|
+
std::size_t assignValues(View<double> target);
|
|
138
|
+
/// Find out if the value has been set
|
|
139
|
+
bool valueHasBeenSet() const;
|
|
140
|
+
/// Check if the value is periodic
|
|
141
|
+
bool isPeriodic() const;
|
|
142
|
+
/// Set the function not periodic
|
|
143
|
+
void setNotPeriodic();
|
|
144
|
+
/// Set the domain of the function
|
|
145
|
+
void setDomain(const std::string&, const std::string&);
|
|
146
|
+
/// Get the domain of the quantity
|
|
147
|
+
void getDomain(std::string&,std::string&) const;
|
|
148
|
+
/// Get the domain of the quantity
|
|
149
|
+
void getDomain(double&,double&) const;
|
|
150
|
+
/// Get the name of the quantity
|
|
151
|
+
const std::string& getName() const;
|
|
152
|
+
/// Check whether or not this particular quantity has derivatives
|
|
153
|
+
bool hasDerivatives()const;
|
|
154
|
+
/// Get the number of derivatives that this particular value has
|
|
155
|
+
unsigned getNumberOfDerivatives() const;
|
|
156
|
+
/// Set the number of derivatives
|
|
157
|
+
void resizeDerivatives(int n);
|
|
158
|
+
/// Set all the derivatives to zero
|
|
159
|
+
void clearDerivatives( const bool force=false );
|
|
160
|
+
/// Add some derivative to the ith component of the derivatives array
|
|
161
|
+
void addDerivative(unsigned i,double d);
|
|
162
|
+
/// Set the value of the ith component of the derivatives array
|
|
163
|
+
void setDerivative(unsigned i, double d);
|
|
164
|
+
/// Get the derivative with respect to component n
|
|
165
|
+
double getDerivative(const unsigned n) const;
|
|
166
|
+
/// Clear the input force on the variable
|
|
167
|
+
void clearInputForce();
|
|
168
|
+
/// Special method for clearing forces on variables used by DataPassingObject
|
|
169
|
+
void clearInputForce( const std::vector<AtomNumber>& index );
|
|
170
|
+
/// Set hasForce equal to true
|
|
171
|
+
void addForce();
|
|
172
|
+
/// Add some force on this value
|
|
173
|
+
void addForce(double f);
|
|
174
|
+
/// Add some force on the ival th component of this value
|
|
175
|
+
void addForce( const std::size_t& ival, double f, const bool trueind=true );
|
|
176
|
+
///Add forces from a vector, imples trueInd=false and retunrs the number of forces assigned
|
|
177
|
+
std::size_t addForces(View<const double> f);
|
|
178
|
+
/// Get the value of the force on this colvar
|
|
179
|
+
double getForce( const std::size_t& ival=0 ) const ;
|
|
180
|
+
/// Apply the forces to the derivatives using the chain rule (if there are no forces this routine returns false)
|
|
181
|
+
bool applyForce( std::vector<double>& forces ) const ;
|
|
182
|
+
/// Calculate the difference between the instantaneous value of the function and some other point: other_point-inst_val
|
|
183
|
+
double difference(double)const;
|
|
184
|
+
/// Calculate the difference between two values of this function: d2 -d1
|
|
185
|
+
double difference(double d1,double d2)const;
|
|
186
|
+
/// This returns the pointer to the action where this value is calculated
|
|
187
|
+
ActionWithValue* getPntrToAction();
|
|
188
|
+
/// Bring back one value into the correct pbc if needed, else give back the value
|
|
189
|
+
double bringBackInPbc(double d1)const;
|
|
190
|
+
/// Get the difference between max and minimum of domain
|
|
191
|
+
double getMaxMinusMin()const;
|
|
192
|
+
/// This sets up the gradients
|
|
193
|
+
void setGradients( ActionAtomistic* aa, unsigned& start );
|
|
194
|
+
/// This passes gradients from one action to another
|
|
195
|
+
void passGradients( const double& der, std::map<AtomNumber,Vector>& g ) const ;
|
|
196
|
+
static double projection(const Value&,const Value&);
|
|
197
|
+
/// Get the rank of the object that is contained in this value
|
|
198
|
+
unsigned getRank() const ;
|
|
199
|
+
/// Get the shape of the object that is contained in this value
|
|
200
|
+
const std::vector<std::size_t>& getShape() const ;
|
|
201
|
+
/// Reshape the storage for sparse matrices
|
|
202
|
+
void reshapeMatrixStore( const unsigned& n );
|
|
203
|
+
/// Copy the matrix bookeeping stuff
|
|
204
|
+
void copyBookeepingArrayFromArgument( Value* myarg );
|
|
205
|
+
/// Set the symmetric flag equal true for this matrix
|
|
206
|
+
void setSymmetric( const bool& sym );
|
|
207
|
+
/// Get the total number of scalars that are stored here
|
|
208
|
+
std::size_t getNumberOfValues() const ;
|
|
209
|
+
/// Get the number of values that are actually stored here once sparse matrices are taken into account
|
|
210
|
+
std::size_t getNumberOfStoredValues() const ;
|
|
211
|
+
/// Get the number of threads to use when assigning this value
|
|
212
|
+
unsigned getGoodNumThreads( const unsigned& j, const unsigned& k ) const ;
|
|
213
|
+
/// These are used for passing around the data in this value when we are doing replica exchange
|
|
214
|
+
void writeBinary(std::ostream&o) const ;
|
|
215
|
+
void readBinary(std::istream&i);
|
|
216
|
+
/// These are used for making constant values
|
|
217
|
+
bool isConstant() const ;
|
|
218
|
+
void setConstant();
|
|
219
|
+
void reshapeConstantValue( const std::vector<std::size_t>& sh );
|
|
220
|
+
/// Check if forces have been added on this value
|
|
221
|
+
bool forcesWereAdded() const ;
|
|
222
|
+
/// Set a bool that tells us if the derivative is zero when the value is zero true
|
|
223
|
+
void setDerivativeIsZeroWhenValueIsZero();
|
|
224
|
+
/// Return a bool that tells us if the derivative is zero when the value is zero
|
|
225
|
+
bool isDerivativeZeroWhenValueIsZero() const ;
|
|
226
|
+
/// Convert the input index to its corresponding indices
|
|
227
|
+
void convertIndexToindices(const std::size_t& index, std::vector<unsigned>& indices ) const ;
|
|
228
|
+
/// Print out all the values in this Value
|
|
229
|
+
void print( OFile& ofile ) const ;
|
|
230
|
+
/// Print out all the forces in this Value
|
|
231
|
+
void printForce( OFile& ofile ) const ;
|
|
232
|
+
/// Are we to ignore the stored value
|
|
233
|
+
bool ignoreStoredValue(const std::string& n) const ;
|
|
234
|
+
/// Set a matrix element to be non zero
|
|
235
|
+
void setMatrixBookeepingElement( const unsigned& i, const unsigned& n );
|
|
236
|
+
///
|
|
237
|
+
unsigned getRowLength( const std::size_t& irow ) const ;
|
|
238
|
+
///
|
|
239
|
+
unsigned getRowIndex( std::size_t irow, std::size_t jind ) const ;
|
|
240
|
+
///
|
|
241
|
+
void setRowIndices( const std::size_t& irow, const std::vector<std::size_t>& ind );
|
|
242
|
+
///
|
|
243
|
+
std::size_t getNumberOfColumns() const ;
|
|
244
|
+
///
|
|
245
|
+
bool isSymmetric() const ;
|
|
246
|
+
/// Retrieve the non-zero edges in a matrix
|
|
247
|
+
void retrieveEdgeList( unsigned& nedge, std::vector<std::pair<unsigned,unsigned> >& active, std::vector<double>& elems );
|
|
248
|
+
/// Get the number of derivatives that the grid has
|
|
249
|
+
unsigned getNumberOfGridDerivatives() const ;
|
|
250
|
+
/// get the derivative of a grid at a point n with resepct to argument j
|
|
251
|
+
double getGridDerivative(const unsigned& n, const unsigned& j ) const ;
|
|
252
|
+
/// Add the derivatives of the grid to the corner
|
|
253
|
+
void addGridDerivatives( const unsigned& n, const unsigned& j, const double& val );
|
|
254
|
+
///
|
|
255
|
+
void setGridDerivatives( const unsigned& n, const unsigned& j, const double& val );
|
|
256
|
+
/// Add another value to the end of the data vector held by this value. This is used in COLLECT
|
|
257
|
+
void push_back( const double& val );
|
|
258
|
+
/// Get the type of value that is stored here
|
|
259
|
+
std::string getValueType() const ;
|
|
260
|
+
/// Check if all the elements in the value have the same value
|
|
261
|
+
bool allElementsEqual() const ;
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
inline
|
|
265
|
+
void Value::applyPeriodicity(const unsigned& ival) {
|
|
266
|
+
if(periodicity==periodic) {
|
|
267
|
+
data[ival]=min+difference(min,data[ival]);
|
|
268
|
+
if(data[ival]<min) {
|
|
269
|
+
data[ival]+=max_minus_min;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
inline
|
|
275
|
+
void Value::set(double v) {
|
|
276
|
+
value_set=true;
|
|
277
|
+
data[0]=v;
|
|
278
|
+
applyPeriodicity(0);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
inline
|
|
282
|
+
void Value::add(double v) {
|
|
283
|
+
value_set=true;
|
|
284
|
+
data[0]+=v;
|
|
285
|
+
applyPeriodicity(0);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
inline
|
|
289
|
+
void Value::add(const std::size_t& n, const double& v ) {
|
|
290
|
+
value_set=true;
|
|
291
|
+
data[n]+=v;
|
|
292
|
+
applyPeriodicity(n);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
inline
|
|
296
|
+
bool Value::valueHasBeenSet() const {
|
|
297
|
+
return value_set;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
inline
|
|
301
|
+
const std::string& Value::getName()const {
|
|
302
|
+
return name;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
inline
|
|
306
|
+
unsigned Value::getNumberOfDerivatives() const {
|
|
307
|
+
plumed_massert(hasDeriv,"the derivatives array for this value has zero size");
|
|
308
|
+
if( shape.size()>0 ) {
|
|
309
|
+
return shape.size();
|
|
310
|
+
}
|
|
311
|
+
return data.size() - 1;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
inline
|
|
315
|
+
double Value::getDerivative(const unsigned n) const {
|
|
316
|
+
plumed_dbg_massert(n<getNumberOfDerivatives(),"you are asking for a derivative that is out of bounds");
|
|
317
|
+
return data[1+n];
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
inline
|
|
321
|
+
bool Value::hasDerivatives() const {
|
|
322
|
+
return hasDeriv;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
inline
|
|
326
|
+
void Value::resizeDerivatives(int n) {
|
|
327
|
+
if( shape.size()>0 ) {
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
if(hasDeriv) {
|
|
331
|
+
data.resize(1+n);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
inline
|
|
336
|
+
void Value::addDerivative(unsigned i,double d) {
|
|
337
|
+
plumed_dbg_massert(i<getNumberOfDerivatives(),"derivative is out of bounds");
|
|
338
|
+
data[1+i]+=d;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
inline
|
|
342
|
+
void Value::setDerivative(unsigned i, double d) {
|
|
343
|
+
plumed_dbg_massert(i<getNumberOfDerivatives(),"derivative is out of bounds");
|
|
344
|
+
data[1+i]=d;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
inline
|
|
348
|
+
void Value::clearInputForce() {
|
|
349
|
+
if( !hasForce ) {
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
hasForce=false;
|
|
353
|
+
std::fill(inputForce.begin(),inputForce.end(),0);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
inline
|
|
357
|
+
void Value::clearInputForce( const std::vector<AtomNumber>& index ) {
|
|
358
|
+
if( !hasForce ) {
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
hasForce=false;
|
|
362
|
+
for(const auto & p : index) {
|
|
363
|
+
inputForce[p.index()]=0;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
inline
|
|
368
|
+
void Value::clearDerivatives( const bool force ) {
|
|
369
|
+
if( !force && (valtype==constant || valtype==average) ) {
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
value_set=false;
|
|
374
|
+
if( shape.size()>0 ) {
|
|
375
|
+
std::fill(data.begin(), data.end(), 0);
|
|
376
|
+
} else if( data.size()>1 ) {
|
|
377
|
+
std::fill(data.begin()+1, data.end(), 0);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
inline
|
|
382
|
+
void Value::addForce() {
|
|
383
|
+
hasForce=true;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
inline
|
|
387
|
+
void Value::addForce(double f) {
|
|
388
|
+
hasForce=true;
|
|
389
|
+
inputForce[0]+=f;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
inline
|
|
393
|
+
bool Value::forcesWereAdded() const {
|
|
394
|
+
return hasForce;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
inline
|
|
398
|
+
double Value::getForce( const std::size_t& ival ) const {
|
|
399
|
+
plumed_dbg_assert( ival<inputForce.size() );
|
|
400
|
+
return inputForce[ival];
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
/// d2-d1
|
|
404
|
+
inline
|
|
405
|
+
double Value::difference(double d1,double d2)const {
|
|
406
|
+
if(periodicity==notperiodic) {
|
|
407
|
+
return d2-d1;
|
|
408
|
+
} else if(periodicity==periodic) {
|
|
409
|
+
double s=(d2-d1)*inv_max_minus_min;
|
|
410
|
+
// remember: pbc brings the difference in a range of -0.5:0.5
|
|
411
|
+
s=Tools::pbc(s);
|
|
412
|
+
return s*max_minus_min;
|
|
413
|
+
} else {
|
|
414
|
+
plumed_merror("periodicity should be set to compute differences");
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
inline
|
|
419
|
+
double Value::bringBackInPbc(double d1)const {
|
|
420
|
+
return min+max_minus_min/2.+difference(min+max_minus_min/2., d1);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
inline
|
|
424
|
+
double Value::difference(double d)const {
|
|
425
|
+
return difference(get(),d);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
inline
|
|
429
|
+
double Value::getMaxMinusMin()const {
|
|
430
|
+
plumed_dbg_assert( periodicity==periodic );
|
|
431
|
+
return max_minus_min;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
inline
|
|
435
|
+
unsigned Value::getRank() const {
|
|
436
|
+
if( valtype==constant && shape.size()==1 && shape[0]==1 ) {
|
|
437
|
+
return 0;
|
|
438
|
+
}
|
|
439
|
+
return shape.size();
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
inline
|
|
443
|
+
const std::vector<std::size_t>& Value::getShape() const {
|
|
444
|
+
return shape;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
inline
|
|
448
|
+
std::size_t Value::getNumberOfValues() const {
|
|
449
|
+
std::size_t size=1;
|
|
450
|
+
for(unsigned i=0; i<shape.size(); ++i) {
|
|
451
|
+
size *= shape[i];
|
|
452
|
+
}
|
|
453
|
+
return size;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
inline
|
|
457
|
+
std::size_t Value::getNumberOfStoredValues() const {
|
|
458
|
+
if( getRank()==2 && !hasDeriv ) {
|
|
459
|
+
return shape[0]*ncols;
|
|
460
|
+
}
|
|
461
|
+
return getNumberOfValues();
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
inline
|
|
465
|
+
bool Value::isConstant() const {
|
|
466
|
+
return valtype==constant;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
inline
|
|
470
|
+
void Value::setDerivativeIsZeroWhenValueIsZero() {
|
|
471
|
+
derivativeIsZeroWhenValueIsZero=true;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
inline
|
|
475
|
+
bool Value::isDerivativeZeroWhenValueIsZero() const {
|
|
476
|
+
return derivativeIsZeroWhenValueIsZero;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
inline
|
|
480
|
+
void Value::setMatrixBookeepingElement( const unsigned& i, const unsigned& n ) {
|
|
481
|
+
plumed_dbg_assert( i<matrix_bookeeping.size() );
|
|
482
|
+
matrix_bookeeping[i]=n;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
inline
|
|
486
|
+
unsigned Value::getRowLength( const std::size_t& irow ) const {
|
|
487
|
+
if( matrix_bookeeping.size()==0 ) {
|
|
488
|
+
return 0;
|
|
489
|
+
}
|
|
490
|
+
plumed_dbg_assert( (1+ncols)*irow<matrix_bookeeping.size() );
|
|
491
|
+
return matrix_bookeeping[(1+ncols)*irow];
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
inline
|
|
495
|
+
unsigned Value::getRowIndex(const std::size_t irow, const std::size_t jind ) const {
|
|
496
|
+
plumed_dbg_massert( (1+ncols)*irow+1+jind<matrix_bookeeping.size() && jind<matrix_bookeeping[(1+ncols)*irow], "failing in value " + name );
|
|
497
|
+
return matrix_bookeeping[(1+ncols)*irow+1+jind];
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
inline
|
|
501
|
+
void Value::setRowIndices( const std::size_t& irow, const std::vector<std::size_t>& ind ) {
|
|
502
|
+
plumed_dbg_massert( (1+ncols)*irow+1+ind.size()<=matrix_bookeeping.size(), "problem in " + name );
|
|
503
|
+
std::size_t istart = (1+ncols)*irow;
|
|
504
|
+
matrix_bookeeping[istart] = ind.size();
|
|
505
|
+
++istart;
|
|
506
|
+
for(unsigned i=0; i<ind.size(); ++i) {
|
|
507
|
+
matrix_bookeeping[istart] = ind[i];
|
|
508
|
+
++istart;
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
inline
|
|
513
|
+
std::size_t Value::getNumberOfColumns() const {
|
|
514
|
+
return ncols;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
inline
|
|
518
|
+
bool Value::isSymmetric() const {
|
|
519
|
+
return symmetric;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
inline
|
|
523
|
+
unsigned Value::getNumberOfGridDerivatives() const {
|
|
524
|
+
return ngrid_der;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
inline
|
|
528
|
+
double Value::getGridDerivative(const unsigned& n, const unsigned& j ) const {
|
|
529
|
+
plumed_dbg_assert( hasDeriv && n*(1+ngrid_der) + 1 + j < data.size() );
|
|
530
|
+
return data[n*(1+ngrid_der) + 1 + j];
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
inline
|
|
534
|
+
void Value::addGridDerivatives( const unsigned& n, const unsigned& j, const double& val ) {
|
|
535
|
+
plumed_dbg_assert( hasDeriv && n*(1+ngrid_der) + 1 + j < data.size() );
|
|
536
|
+
data[n*(1+ngrid_der) + 1 + j] += val;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
inline
|
|
540
|
+
void Value::setGridDerivatives( const unsigned& n, const unsigned& j, const double& val ) {
|
|
541
|
+
plumed_dbg_assert( hasDeriv && n*(1+ngrid_der) + 1 + j < data.size() );
|
|
542
|
+
data[n*(1+ngrid_der) + 1 + j] = val;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
}
|
|
546
|
+
#endif
|
|
547
|
+
|
|
@@ -0,0 +1,93 @@
|
|
|
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_core_WithCmd_h
|
|
23
|
+
#define __PLUMED_core_WithCmd_h
|
|
24
|
+
|
|
25
|
+
#include "../tools/TypesafePtr.h"
|
|
26
|
+
#include <string>
|
|
27
|
+
#include <string_view>
|
|
28
|
+
|
|
29
|
+
namespace PLMD {
|
|
30
|
+
|
|
31
|
+
/// Base for classes with cmd() method.
|
|
32
|
+
/// This is an abstract base class for classes with
|
|
33
|
+
/// cmd() method.
|
|
34
|
+
class WithCmd {
|
|
35
|
+
/// Small structure used to pass elements of a shape initializer_list
|
|
36
|
+
struct SizeLike {
|
|
37
|
+
std::size_t size;
|
|
38
|
+
SizeLike(short unsigned dim): size(dim) {}
|
|
39
|
+
SizeLike(unsigned dim): size(dim) {}
|
|
40
|
+
SizeLike(long unsigned dim): size(dim) {}
|
|
41
|
+
SizeLike(long long unsigned dim): size(dim) {}
|
|
42
|
+
SizeLike(short dim): size(std::size_t(dim)) {}
|
|
43
|
+
SizeLike(int dim): size(std::size_t(dim)) {}
|
|
44
|
+
SizeLike(long int dim): size(std::size_t(dim)) {}
|
|
45
|
+
SizeLike(long long int dim): size(std::size_t(dim)) {}
|
|
46
|
+
};
|
|
47
|
+
public:
|
|
48
|
+
/// This is the preferred method as it avoid allocations of temporaries.
|
|
49
|
+
/// If this is not overridded, it will call the legacy method.
|
|
50
|
+
virtual void cmd(std::string_view key,const TypesafePtr & val=nullptr) {
|
|
51
|
+
cmd(std::string(key),val);
|
|
52
|
+
}
|
|
53
|
+
/// This is the legacy method we used in older plumed versions, so it is still possible.
|
|
54
|
+
/// If this is not overridden, it will call the preferred method
|
|
55
|
+
virtual void cmd(const std::string& key,const TypesafePtr & val=nullptr) {
|
|
56
|
+
cmd(std::string_view(key),val);
|
|
57
|
+
}
|
|
58
|
+
void cmd(std::string_view key,const TypesafePtr & val,const std::size_t* shape) {
|
|
59
|
+
cmd(key,TypesafePtr::setNelemAndShape(val,0,shape));
|
|
60
|
+
}
|
|
61
|
+
void cmd(std::string_view key,const TypesafePtr & val,std::initializer_list<SizeLike> shape) {
|
|
62
|
+
if(shape.size()>4) {
|
|
63
|
+
plumed_error() << "Maximum shape size is 4";
|
|
64
|
+
}
|
|
65
|
+
std::array<std::size_t,5> shape_;
|
|
66
|
+
unsigned j=0;
|
|
67
|
+
for(auto i : shape) {
|
|
68
|
+
shape_[j]=i.size;
|
|
69
|
+
j++;
|
|
70
|
+
}
|
|
71
|
+
shape_[j]=0;
|
|
72
|
+
cmd(key,val,shape_.data());
|
|
73
|
+
}
|
|
74
|
+
template<typename I, typename std::enable_if<std::is_integral<I>::value, int>::type = 0>
|
|
75
|
+
void cmd(std::string_view key,const TypesafePtr & val,I nelem, const std::size_t* shape=nullptr) {
|
|
76
|
+
cmd(key,TypesafePtr::setNelemAndShape(val,nelem,shape));
|
|
77
|
+
}
|
|
78
|
+
/// This is needed to avoid ambiguities
|
|
79
|
+
void cmd(const char* key,const TypesafePtr & val=nullptr) {
|
|
80
|
+
cmd(std::string_view(key),val);
|
|
81
|
+
}
|
|
82
|
+
virtual ~WithCmd();
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
inline
|
|
86
|
+
WithCmd::~WithCmd() {
|
|
87
|
+
// do nothing
|
|
88
|
+
// here just to allow inheriting from this class properly
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
#endif
|
|
@@ -0,0 +1,55 @@
|
|
|
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_dimred_SMACOF_h
|
|
23
|
+
#define __PLUMED_dimred_SMACOF_h
|
|
24
|
+
|
|
25
|
+
#include <vector>
|
|
26
|
+
#include "../core/Value.h"
|
|
27
|
+
#include "../tools/Matrix.h"
|
|
28
|
+
|
|
29
|
+
namespace PLMD {
|
|
30
|
+
namespace dimred {
|
|
31
|
+
|
|
32
|
+
class SMACOF {
|
|
33
|
+
private:
|
|
34
|
+
Matrix<double> Distances, Weights;
|
|
35
|
+
double calculateSigma( const Matrix<double>& InitialZ, Matrix<double>& dists );
|
|
36
|
+
public:
|
|
37
|
+
explicit SMACOF( const Value* mysquaredists );
|
|
38
|
+
void optimize( const double& tol, const unsigned& maxloops, std::vector<double>& proj);
|
|
39
|
+
double getDistance( const unsigned& i, const unsigned& j ) const ;
|
|
40
|
+
void setWeight( const unsigned& i, const unsigned& j, const double& ww );
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
inline
|
|
44
|
+
double SMACOF::getDistance( const unsigned& i, const unsigned& j ) const {
|
|
45
|
+
return Distances( i, j );
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
inline
|
|
49
|
+
void SMACOF::setWeight( const unsigned& i, const unsigned& j, const double& ww ) {
|
|
50
|
+
Weights(i,j) = Weights(j,i ) = ww;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
#endif
|