hillclimber 0.1.5__cp313-cp313-musllinux_1_2_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 +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 +1070 -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.5.dist-info/METADATA +210 -0
- hillclimber-0.1.5.dist-info/RECORD +472 -0
- hillclimber-0.1.5.dist-info/WHEEL +5 -0
- hillclimber-0.1.5.dist-info/entry_points.txt +8 -0
- hillclimber-0.1.5.dist-info/licenses/LICENSE +165 -0
- hillclimber-0.1.5.dist-info/sboms/auditwheel.cdx.json +1 -0
- hillclimber.libs/libgcc_s-2d945d6c.so.1 +0 -0
- hillclimber.libs/libgomp-1ede7ee7.so.1.0.0 +0 -0
- hillclimber.libs/libstdc++-85f2cd6d.so.6.0.33 +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-musl.so +0 -0
- plumed/_plumed_core.cpython-312-aarch64-linux-musl.so +0 -0
- plumed/_plumed_core.cpython-313-aarch64-linux-musl.so +0 -0
- plumedCommunications.cpython-311-aarch64-linux-musl.so +0 -0
- plumedCommunications.cpython-312-aarch64-linux-musl.so +0 -0
- plumedCommunications.cpython-313-aarch64-linux-musl.so +0 -0
- plumedCommunications.pyi +431 -0
|
@@ -0,0 +1,138 @@
|
|
|
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_tools_MatrixSquareBracketsAccess_h
|
|
23
|
+
#define __PLUMED_tools_MatrixSquareBracketsAccess_h
|
|
24
|
+
|
|
25
|
+
namespace PLMD {
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
Utility class to add [][] access
|
|
29
|
+
|
|
30
|
+
\tparam T The type of the matrix class.
|
|
31
|
+
\tparam C The type of the returned value.
|
|
32
|
+
\tparam I The type of the first index (default unsigned).
|
|
33
|
+
\tparam J The type of the second index (default unsigned).
|
|
34
|
+
|
|
35
|
+
It implements the trick described in C++ FAQ 13.12 to allow [][] access
|
|
36
|
+
to matrix-like classes, based on the (,) syntax, thus translating
|
|
37
|
+
[i][j] into (i,j). In practice, one only needs to implement the (,) syntax and to inherit from
|
|
38
|
+
MatrixSquareBracketsAccess.
|
|
39
|
+
The first template parameter (T) should be the
|
|
40
|
+
class itself, the second (C) is the type of the returned value,
|
|
41
|
+
and the third (I) and fourth (J) are the types of the two indexes (unsigned by default).
|
|
42
|
+
As everything is inlined, no overhead is expected.
|
|
43
|
+
|
|
44
|
+
\verbatim
|
|
45
|
+
|
|
46
|
+
class MyMatrixClass:
|
|
47
|
+
public MatrixSquareBracketsAccess<MyMatrixClass,double>
|
|
48
|
+
{
|
|
49
|
+
double data[16];
|
|
50
|
+
public:
|
|
51
|
+
double & operator ()(unsigned i,unsigned j){
|
|
52
|
+
return data[4*i+j];
|
|
53
|
+
}
|
|
54
|
+
const double & operator ()(unsigned i,unsigned j)const{
|
|
55
|
+
return data[4*i+j];
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
int main(){
|
|
60
|
+
MyMatrixClass m;
|
|
61
|
+
m[0][1]=3.0;
|
|
62
|
+
return 0;
|
|
63
|
+
}
|
|
64
|
+
\endverbatim
|
|
65
|
+
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
template<class T,class C,class I=unsigned,class J=unsigned>
|
|
69
|
+
class MatrixSquareBracketsAccess {
|
|
70
|
+
/// Small utility class which just contains a pointer to the T and the row number
|
|
71
|
+
class Const_row {
|
|
72
|
+
friend class MatrixSquareBracketsAccess; // this so as to allow only T to instantiate Const_row
|
|
73
|
+
// the user should not manipulate it directly
|
|
74
|
+
const MatrixSquareBracketsAccess& accessor;
|
|
75
|
+
const I row;
|
|
76
|
+
constexpr Const_row(const MatrixSquareBracketsAccess&t,I i); // constructor is private and cannot be manipulated by the user
|
|
77
|
+
public:
|
|
78
|
+
/// access element
|
|
79
|
+
constexpr const C & operator[] (J j)const;
|
|
80
|
+
};
|
|
81
|
+
/// Small utility class which just contains a pointer to the T and the row number
|
|
82
|
+
class Row {
|
|
83
|
+
friend class MatrixSquareBracketsAccess; // this so as to allow only T to instantiate Const_row
|
|
84
|
+
// the user should not manipulate it directly
|
|
85
|
+
MatrixSquareBracketsAccess& accessor;
|
|
86
|
+
const I row;
|
|
87
|
+
constexpr Row(MatrixSquareBracketsAccess&t,I i); // constructor is private and cannot be manipulated by the user
|
|
88
|
+
public:
|
|
89
|
+
/// access element
|
|
90
|
+
constexpr C & operator[] (J j);
|
|
91
|
+
};
|
|
92
|
+
public:
|
|
93
|
+
/// access element (with [][] syntax)
|
|
94
|
+
constexpr Row operator[] (I i);
|
|
95
|
+
/// access element (with [][] syntax)
|
|
96
|
+
constexpr Const_row operator[] (I i)const;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
template<class T,class C,class I,class J>
|
|
100
|
+
constexpr MatrixSquareBracketsAccess<T,C,I,J>::Const_row::Const_row(const MatrixSquareBracketsAccess&t,I i):
|
|
101
|
+
accessor(t),row(i) {}
|
|
102
|
+
|
|
103
|
+
template<class T,class C,class I,class J>
|
|
104
|
+
constexpr MatrixSquareBracketsAccess<T,C,I,J>::Row::Row(MatrixSquareBracketsAccess&t,I i):
|
|
105
|
+
accessor(t),row(i) {}
|
|
106
|
+
|
|
107
|
+
template<class T,class C,class I,class J>
|
|
108
|
+
constexpr const C & MatrixSquareBracketsAccess<T,C,I,J>::Const_row::operator[] (J j)const {
|
|
109
|
+
// This appears as a reference to a temporary object
|
|
110
|
+
// however, in reality we know it is a reference to an object that is stored in the
|
|
111
|
+
// t object. We thus suppress the warning raised by cppcheck
|
|
112
|
+
return (*static_cast<const T*>(&accessor))(row,j);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
template<class T,class C,class I,class J>
|
|
116
|
+
constexpr C & MatrixSquareBracketsAccess<T,C,I,J>::Row::operator[] (J j) {
|
|
117
|
+
// This appears as a reference to a temporary object
|
|
118
|
+
// however, in reality we know it is a reference to an object that is stored in the
|
|
119
|
+
// t object. We thus suppress the warning raised by cppcheck
|
|
120
|
+
return (*static_cast<T*>(&accessor))(row,j);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
template<class T,class C,class I,class J>
|
|
124
|
+
constexpr typename MatrixSquareBracketsAccess<T,C,I,J>::Row MatrixSquareBracketsAccess<T,C,I,J>::operator[] (I i) {
|
|
125
|
+
return Row(*this,i);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
template<class T,class C,class I,class J>
|
|
129
|
+
constexpr typename MatrixSquareBracketsAccess<T,C,I,J>::Const_row MatrixSquareBracketsAccess<T,C,I,J>::operator[] (I i)const {
|
|
130
|
+
return Const_row(*this,i);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
#endif
|
|
137
|
+
|
|
138
|
+
|
|
@@ -0,0 +1,153 @@
|
|
|
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_tools_MergeVectorTools_h
|
|
23
|
+
#define __PLUMED_tools_MergeVectorTools_h
|
|
24
|
+
|
|
25
|
+
#include "../small_vector/small_vector.h"
|
|
26
|
+
#include <vector>
|
|
27
|
+
#include <algorithm>
|
|
28
|
+
#include <type_traits>
|
|
29
|
+
|
|
30
|
+
namespace PLMD {
|
|
31
|
+
|
|
32
|
+
namespace mergeVectorTools {
|
|
33
|
+
|
|
34
|
+
/// Merge sorted vectors.
|
|
35
|
+
/// Takes a vector of pointers to containers and merge them.
|
|
36
|
+
/// Containers should be already sorted.
|
|
37
|
+
/// The content is appended to the result vector.
|
|
38
|
+
/// Optionally, uses a priority_queue implementation.
|
|
39
|
+
template<class C>
|
|
40
|
+
static void mergeSortedVectors(const C* const* vecs, std::size_t size, std::vector<typename C::value_type> & result) {
|
|
41
|
+
|
|
42
|
+
/// local class storing the range of remaining objects to be pushed
|
|
43
|
+
class Entry {
|
|
44
|
+
typename C::const_iterator fwdIt,endIt;
|
|
45
|
+
|
|
46
|
+
public:
|
|
47
|
+
explicit Entry(C const& v) : fwdIt(v.begin()), endIt(v.end()) {}
|
|
48
|
+
/// check if this vector still contains something to be pushed
|
|
49
|
+
bool empty() const {
|
|
50
|
+
return fwdIt == endIt;
|
|
51
|
+
}
|
|
52
|
+
// TODO: revert "typename C::value_type" to "auto": nvc++ and icpc seems to do not deduce automatically the return type
|
|
53
|
+
const typename C::value_type & top() const {
|
|
54
|
+
return *fwdIt;
|
|
55
|
+
}
|
|
56
|
+
/// to allow using a priority_queu, which selects the highest element.
|
|
57
|
+
/// we here (counterintuitively) define < as >
|
|
58
|
+
bool operator< (Entry const& rhs) const {
|
|
59
|
+
return top() > rhs.top();
|
|
60
|
+
}
|
|
61
|
+
void next() {
|
|
62
|
+
++fwdIt;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// preprocessing
|
|
67
|
+
{
|
|
68
|
+
std::size_t maxsize=0;
|
|
69
|
+
for(unsigned i=0; i<size; i++) {
|
|
70
|
+
// find the largest
|
|
71
|
+
maxsize=std::max(maxsize,vecs[i]->size());
|
|
72
|
+
}
|
|
73
|
+
// this is just to decrease the number of reallocations on push_back
|
|
74
|
+
result.reserve(maxsize);
|
|
75
|
+
// if vectors are empty we are done
|
|
76
|
+
if(maxsize==0) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// start
|
|
82
|
+
// heap containing the ranges to be pushed
|
|
83
|
+
// avoid allocations when it's small
|
|
84
|
+
gch::small_vector<Entry,32> heap;
|
|
85
|
+
|
|
86
|
+
{
|
|
87
|
+
for(unsigned i=0; i<size; i++) {
|
|
88
|
+
if(!vecs[i]->empty()) {
|
|
89
|
+
// add entry at the end of the array
|
|
90
|
+
heap.emplace_back(Entry(*vecs[i]));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// make a sorted heap
|
|
94
|
+
std::make_heap(std::begin(heap),std::end(heap));
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// first iteration, to avoid an extra "if" in main iteration
|
|
98
|
+
// explanations are below
|
|
99
|
+
{
|
|
100
|
+
std::pop_heap(std::begin(heap), std::end(heap));
|
|
101
|
+
auto & tmp=heap.back();
|
|
102
|
+
const auto val=tmp.top();
|
|
103
|
+
// here, we append inconditionally
|
|
104
|
+
result.push_back(val);
|
|
105
|
+
tmp.next();
|
|
106
|
+
if(tmp.empty()) {
|
|
107
|
+
heap.pop_back();
|
|
108
|
+
} else {
|
|
109
|
+
std::push_heap(std::begin(heap), std::end(heap));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
while(!heap.empty()) {
|
|
114
|
+
// move entry with the smallest element to the back of the array
|
|
115
|
+
std::pop_heap(std::begin(heap), std::end(heap));
|
|
116
|
+
// entry
|
|
117
|
+
auto & tmp=heap.back();
|
|
118
|
+
// element
|
|
119
|
+
const auto val=tmp.top();
|
|
120
|
+
// if the element is larger than the current largest element,
|
|
121
|
+
// push it to result
|
|
122
|
+
if(val > result.back()) {
|
|
123
|
+
result.push_back(val);
|
|
124
|
+
}
|
|
125
|
+
// move forward the used entry
|
|
126
|
+
tmp.next();
|
|
127
|
+
// if this entry is exhausted, remove it from the array
|
|
128
|
+
if(tmp.empty()) {
|
|
129
|
+
heap.pop_back();
|
|
130
|
+
}
|
|
131
|
+
// otherwise, sort again the array
|
|
132
|
+
else {
|
|
133
|
+
std::push_heap(std::begin(heap), std::end(heap));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
template<typename T, typename = void>
|
|
139
|
+
struct has_size_and_data : std::false_type {};
|
|
140
|
+
|
|
141
|
+
template<typename T>
|
|
142
|
+
struct has_size_and_data<T, std::void_t<decltype(std::declval<T>().size()), decltype(std::declval<T>().data())>> : std::true_type {};
|
|
143
|
+
|
|
144
|
+
template<class C, class D>
|
|
145
|
+
auto mergeSortedVectors(C& vecs, std::vector<D> & result) -> typename std::enable_if<has_size_and_data<C>::value, void>::type {
|
|
146
|
+
mergeSortedVectors(vecs.data(),vecs.size(),result);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
#endif
|
|
153
|
+
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2015-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_tools_Minimise1DBrent_h
|
|
23
|
+
#define __PLUMED_tools_Minimise1DBrent_h
|
|
24
|
+
|
|
25
|
+
#include "Tools.h"
|
|
26
|
+
|
|
27
|
+
#include <vector>
|
|
28
|
+
#include <string>
|
|
29
|
+
|
|
30
|
+
namespace PLMD {
|
|
31
|
+
|
|
32
|
+
/// A class for doing parabolic interpolation and minimisation of
|
|
33
|
+
/// 1D functions using Brent's method.
|
|
34
|
+
template <class FCLASS>
|
|
35
|
+
class Minimise1DBrent {
|
|
36
|
+
private:
|
|
37
|
+
/// Has the minimum been bracketed
|
|
38
|
+
bool bracketed;
|
|
39
|
+
/// Has the function been minimised
|
|
40
|
+
bool minimised;
|
|
41
|
+
/// The tolerance for the line minimiser
|
|
42
|
+
double tol;
|
|
43
|
+
/// The default ration by which successive intervals are magnified
|
|
44
|
+
const double GOLD;
|
|
45
|
+
/// The maximum magnification allowed for a parabolic fit step
|
|
46
|
+
const double GLIMIT;
|
|
47
|
+
/// Use to prevent any possible division by zero
|
|
48
|
+
const double TINY;
|
|
49
|
+
/// Maximum number of interactions in line minimiser
|
|
50
|
+
const unsigned ITMAX;
|
|
51
|
+
/// The value of the golden ratio
|
|
52
|
+
const double CGOLD;
|
|
53
|
+
/// A small number that protects against trying to achieve fractional
|
|
54
|
+
/// accuracy for a minimum that happens to be exactly zero
|
|
55
|
+
const double ZEPS;
|
|
56
|
+
/// This is the type specifier for the function to minimise
|
|
57
|
+
typedef double(FCLASS::*eng_pointer)( const double& val );
|
|
58
|
+
/// Three points bracketting the minimum and the corresponding function values
|
|
59
|
+
double ax,bx,cx,fa,fb,fc,fmin;
|
|
60
|
+
/// The class containing the function we are trying to minimise
|
|
61
|
+
FCLASS myclass_func;
|
|
62
|
+
public:
|
|
63
|
+
explicit Minimise1DBrent( const FCLASS& pf, const double& t=3.0E-8 );
|
|
64
|
+
/// Bracket the minium
|
|
65
|
+
void bracket( const double& ax, const double& xx, eng_pointer eng );
|
|
66
|
+
/// Find the minimum between two brackets
|
|
67
|
+
double minimise( eng_pointer eng );
|
|
68
|
+
/// Return the value of the function at the minimum
|
|
69
|
+
double getMinimumValue() const ;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
template <class FCLASS>
|
|
73
|
+
Minimise1DBrent<FCLASS>::Minimise1DBrent( const FCLASS& pf, const double& t ):
|
|
74
|
+
bracketed(false),
|
|
75
|
+
minimised(false),
|
|
76
|
+
tol(t),
|
|
77
|
+
GOLD(1.618034),
|
|
78
|
+
GLIMIT(100.0),
|
|
79
|
+
TINY(1.0E-20),
|
|
80
|
+
ITMAX(100),
|
|
81
|
+
CGOLD(0.3819660),
|
|
82
|
+
ZEPS(epsilon*1.0E-3),
|
|
83
|
+
ax(0),bx(0),cx(0),
|
|
84
|
+
fa(0),fb(0),fc(0),
|
|
85
|
+
fmin(0),
|
|
86
|
+
myclass_func(pf) {
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
template <class FCLASS>
|
|
90
|
+
void Minimise1DBrent<FCLASS>::bracket( const double& a, const double& b, eng_pointer eng ) {
|
|
91
|
+
ax=a;
|
|
92
|
+
bx=b;
|
|
93
|
+
double fu;
|
|
94
|
+
fa=(myclass_func.*eng)(ax);
|
|
95
|
+
fb=(myclass_func.*eng)(bx);
|
|
96
|
+
if( fb>fa ) {
|
|
97
|
+
double tmp;
|
|
98
|
+
tmp=ax;
|
|
99
|
+
ax=bx;
|
|
100
|
+
bx=tmp;
|
|
101
|
+
tmp=fa;
|
|
102
|
+
fa=fb;
|
|
103
|
+
fb=tmp;
|
|
104
|
+
}
|
|
105
|
+
cx=bx+GOLD*(bx-ax);
|
|
106
|
+
fc=(myclass_func.*eng)(cx);
|
|
107
|
+
while ( fb > fc ) {
|
|
108
|
+
double r=(bx-ax)*(fb-fc);
|
|
109
|
+
double q=(bx-cx)*(fb-fa);
|
|
110
|
+
double u=bx-((bx-cx)*q-(bx-ax)*r)/(2.0*(std::fabs(q-r)>TINY?std::fabs(q-r):TINY)*(q-r>=0?1:-1));
|
|
111
|
+
double ulim=bx+GLIMIT*(cx-bx);
|
|
112
|
+
if((bx-u)*(u-cx) > 0.0 ) {
|
|
113
|
+
fu=(myclass_func.*eng)(u);
|
|
114
|
+
if( fu < fc ) {
|
|
115
|
+
ax=bx;
|
|
116
|
+
bx=u;
|
|
117
|
+
fa=fb;
|
|
118
|
+
fb=fu;
|
|
119
|
+
bracketed=true;
|
|
120
|
+
return;
|
|
121
|
+
} else if( fu > fb ) {
|
|
122
|
+
cx=u;
|
|
123
|
+
fc=fu;
|
|
124
|
+
bracketed=true;
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
u=cx+GOLD*(cx-bx);
|
|
128
|
+
fu=(myclass_func.*eng)(u);
|
|
129
|
+
} else if((cx-u)*(u-ulim) > 0.0 ) {
|
|
130
|
+
fu=(myclass_func.*eng)(u);
|
|
131
|
+
if( fu<fc ) {
|
|
132
|
+
bx=cx;
|
|
133
|
+
cx=u;
|
|
134
|
+
u+=GOLD*(u-bx);
|
|
135
|
+
fb=fc;
|
|
136
|
+
fc=fu;
|
|
137
|
+
fu=(myclass_func.*eng)(u);
|
|
138
|
+
}
|
|
139
|
+
} else if( (u-ulim)*(ulim-cx) >= 0.0 ) {
|
|
140
|
+
u=ulim;
|
|
141
|
+
fu=(myclass_func.*eng)(u);
|
|
142
|
+
} else {
|
|
143
|
+
u=cx+GOLD*(cx-bx);
|
|
144
|
+
fu=(myclass_func.*eng)(u);
|
|
145
|
+
}
|
|
146
|
+
ax=bx;
|
|
147
|
+
bx=cx;
|
|
148
|
+
cx=u;
|
|
149
|
+
fa=fb;
|
|
150
|
+
fb=fc;
|
|
151
|
+
fc=fu;
|
|
152
|
+
}
|
|
153
|
+
bracketed=true;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
template <class FCLASS>
|
|
157
|
+
double Minimise1DBrent<FCLASS>::minimise( eng_pointer eng ) {
|
|
158
|
+
plumed_dbg_assert( bracketed );
|
|
159
|
+
|
|
160
|
+
double a,b,d=0.0,etemp,fu,fv,fw,fx;
|
|
161
|
+
double p,q,r,tol1,tol2,u,v,w,x,xm;
|
|
162
|
+
double e=0.0;
|
|
163
|
+
|
|
164
|
+
a=(ax < cx ? ax : cx );
|
|
165
|
+
b=(ax >= cx ? ax : cx );
|
|
166
|
+
x=w=v=bx;
|
|
167
|
+
fw=fv=fx=(myclass_func.*eng)(x);
|
|
168
|
+
for(unsigned iter=0; iter<ITMAX; ++iter) {
|
|
169
|
+
xm=0.5*(a+b);
|
|
170
|
+
tol2=2.0*(tol1=tol*std::fabs(x)+ZEPS);
|
|
171
|
+
if( std::fabs(x-xm) <= (tol2-0.5*(b-a))) {
|
|
172
|
+
fmin=fx;
|
|
173
|
+
minimised=true;
|
|
174
|
+
return x;
|
|
175
|
+
}
|
|
176
|
+
if( std::fabs(e) > tol1 ) {
|
|
177
|
+
r=(x-w)*(fx-fv);
|
|
178
|
+
q=(x-v)*(fx-fw);
|
|
179
|
+
p=(x-v)*q-(x-w)*r;
|
|
180
|
+
q=2.0*(q-r);
|
|
181
|
+
if( q > 0.0 ) {
|
|
182
|
+
p = -p;
|
|
183
|
+
}
|
|
184
|
+
q=std::fabs(q);
|
|
185
|
+
etemp=e;
|
|
186
|
+
e=d;
|
|
187
|
+
if( std::fabs(p) >= std::fabs(0.5*q*etemp) || p <= q*(a-x) || p >= q*(b-x) ) {
|
|
188
|
+
d = CGOLD*(e=(x >= xm ? a-x : b-x ));
|
|
189
|
+
} else {
|
|
190
|
+
d=p/q;
|
|
191
|
+
u=x+d;
|
|
192
|
+
if(u-a < tol2 || b-u < tol2 ) {
|
|
193
|
+
d=(xm-x>=0?std::fabs(tol1):-std::fabs(tol1));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
} else {
|
|
197
|
+
d=CGOLD*(e=( x >= xm ? a-x : b-x ));
|
|
198
|
+
}
|
|
199
|
+
if( std::fabs(d)>=tol1) {
|
|
200
|
+
u=x+d;
|
|
201
|
+
} else {
|
|
202
|
+
u=x+(d>=0?std::fabs(tol1):-std::fabs(tol1));
|
|
203
|
+
}
|
|
204
|
+
fu=(myclass_func.*eng)(u);
|
|
205
|
+
if( fu <= fx ) {
|
|
206
|
+
if( u >= x ) {
|
|
207
|
+
a=x;
|
|
208
|
+
} else {
|
|
209
|
+
b=x;
|
|
210
|
+
}
|
|
211
|
+
v=w;
|
|
212
|
+
fv=fw;
|
|
213
|
+
w=x;
|
|
214
|
+
fw=fx;
|
|
215
|
+
x=u;
|
|
216
|
+
fx=fu;
|
|
217
|
+
} else {
|
|
218
|
+
if( u < x ) {
|
|
219
|
+
a=u;
|
|
220
|
+
} else {
|
|
221
|
+
b=u;
|
|
222
|
+
}
|
|
223
|
+
if( fu <=fw || w==x ) {
|
|
224
|
+
v=w;
|
|
225
|
+
w=u;
|
|
226
|
+
fv=fw;
|
|
227
|
+
fw=fu;
|
|
228
|
+
} else if( fu <= fv || v==x || v==w ) {
|
|
229
|
+
v=u;
|
|
230
|
+
fv=fu;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
plumed_merror("Too many interactions in brent");
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
template <class FCLASS>
|
|
238
|
+
double Minimise1DBrent<FCLASS>::getMinimumValue() const {
|
|
239
|
+
plumed_dbg_assert( minimised );
|
|
240
|
+
return fmin;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
}
|
|
244
|
+
#endif
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
2
|
+
Copyright (c) 2015-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_tools_MinimiseBase_h
|
|
23
|
+
#define __PLUMED_tools_MinimiseBase_h
|
|
24
|
+
|
|
25
|
+
#include "Minimise1DBrent.h"
|
|
26
|
+
|
|
27
|
+
namespace PLMD {
|
|
28
|
+
|
|
29
|
+
template <class FCLASS>
|
|
30
|
+
class F1dim {
|
|
31
|
+
private:
|
|
32
|
+
/// This is the pointer to the member function in the energy
|
|
33
|
+
/// calculating class that calculates the energy
|
|
34
|
+
typedef double(FCLASS::*engf_pointer)( const std::vector<double>& p, std::vector<double>& der ) const ;
|
|
35
|
+
typedef double(FCLASS::*engfnc_pointer)( const std::vector<double>& p, std::vector<double>& der ) ;
|
|
36
|
+
/// Pointer to the vector containing an initial position on the vector
|
|
37
|
+
const std::vector<double>& p;
|
|
38
|
+
/// The direction of the vector we are minimising along
|
|
39
|
+
const std::vector<double>& dir;
|
|
40
|
+
/// Tempory vector that holds a point at which we want to calculate the energy
|
|
41
|
+
std::vector<double> pt;
|
|
42
|
+
/// Vector that holds the derivatives at the point at which we calculate the energy (these are not used)
|
|
43
|
+
std::vector<double> fake_der;
|
|
44
|
+
/// Class containging the function in the class
|
|
45
|
+
FCLASS* func;
|
|
46
|
+
/// Member of class that calculates the energy we are trying to mnimise
|
|
47
|
+
engf_pointer calc;
|
|
48
|
+
/// Member of class that calcualtes the energy we are trying to minimise
|
|
49
|
+
engfnc_pointer calc2;
|
|
50
|
+
public:
|
|
51
|
+
explicit F1dim( const std::vector<double>& pp, const std::vector<double>& dd, FCLASS* ff, engf_pointer cc, engfnc_pointer cc2 );
|
|
52
|
+
/// Calculate the energy at \f$\mathbf{p} + xt*\mathbf{dir}\f$
|
|
53
|
+
double getEng( const double& xt );
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
template <class FCLASS>
|
|
57
|
+
F1dim<FCLASS>::F1dim( const std::vector<double>& pp, const std::vector<double>& dd, FCLASS* ff, engf_pointer cc, engfnc_pointer cc2 ):
|
|
58
|
+
p(pp),
|
|
59
|
+
dir(dd),
|
|
60
|
+
pt(pp.size()),
|
|
61
|
+
fake_der(pp.size()),
|
|
62
|
+
func(ff),
|
|
63
|
+
calc(cc),
|
|
64
|
+
calc2(cc2) {
|
|
65
|
+
plumed_assert( calc || calc2 );
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
template <class FCLASS>
|
|
69
|
+
double F1dim<FCLASS>::getEng( const double& xt ) {
|
|
70
|
+
for(unsigned j=0; j<pt.size(); ++j) {
|
|
71
|
+
pt[j] = p[j] + xt*dir[j];
|
|
72
|
+
}
|
|
73
|
+
if( calc ) {
|
|
74
|
+
return (func->*calc)(pt,fake_der);
|
|
75
|
+
}
|
|
76
|
+
return (func->*calc2)(pt,fake_der);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
template <class FCLASS>
|
|
80
|
+
class MinimiseBase {
|
|
81
|
+
private:
|
|
82
|
+
/// This is the pointer to the member function in the energy
|
|
83
|
+
/// calculating class that calculates the energy
|
|
84
|
+
typedef double(FCLASS::*engf_pointer)( const std::vector<double>& p, std::vector<double>& der );
|
|
85
|
+
/// The class that calculates the energy given a position
|
|
86
|
+
FCLASS* myclass_func;
|
|
87
|
+
protected:
|
|
88
|
+
/// This calculates the derivatives at a point
|
|
89
|
+
double calcDerivatives( const std::vector<double>& p, std::vector<double>& der, engf_pointer myfunc ) const ;
|
|
90
|
+
public:
|
|
91
|
+
explicit MinimiseBase( FCLASS* funcc ) : myclass_func(funcc) {}
|
|
92
|
+
/// This is the line minimiser
|
|
93
|
+
double linemin( const std::vector<double>& dir, std::vector<double>& p, engf_pointer myfunc ) const ;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
template <class FCLASS>
|
|
97
|
+
double MinimiseBase<FCLASS>::linemin( const std::vector<double>& dir, std::vector<double>& p, engf_pointer myfunc ) const {
|
|
98
|
+
// Construct the object that turns points on a line into vectors
|
|
99
|
+
F1dim<FCLASS> f1dim( p, dir, myclass_func, NULL, myfunc );
|
|
100
|
+
|
|
101
|
+
// Construct an object that will do the line search for the minimum
|
|
102
|
+
Minimise1DBrent<F1dim<FCLASS> > bb(f1dim);
|
|
103
|
+
|
|
104
|
+
// This does the actual line minimisation
|
|
105
|
+
double ax=0.0, xx=1.0;
|
|
106
|
+
bb.bracket( ax, xx, &F1dim<FCLASS>::getEng );
|
|
107
|
+
double xmin=bb.minimise( &F1dim<FCLASS>::getEng );
|
|
108
|
+
for(unsigned i=0; i<p.size(); ++i) {
|
|
109
|
+
p[i] += xmin*dir[i];
|
|
110
|
+
}
|
|
111
|
+
return bb.getMinimumValue();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
template <class FCLASS>
|
|
115
|
+
double MinimiseBase<FCLASS>::calcDerivatives( const std::vector<double>& p, std::vector<double>& der, engf_pointer myfunc ) const {
|
|
116
|
+
return (myclass_func->*myfunc)( p, der );
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
}
|
|
120
|
+
#endif
|
|
@@ -0,0 +1,51 @@
|
|
|
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_tools_MolDataClass_h
|
|
23
|
+
#define __PLUMED_tools_MolDataClass_h
|
|
24
|
+
|
|
25
|
+
#include <vector>
|
|
26
|
+
#include <string>
|
|
27
|
+
#include "AtomNumber.h"
|
|
28
|
+
|
|
29
|
+
namespace PLMD {
|
|
30
|
+
|
|
31
|
+
class PDB;
|
|
32
|
+
|
|
33
|
+
/// This class provides information on various kinds of molecules
|
|
34
|
+
/// for instance the kinds of residues that are in a protein
|
|
35
|
+
/// the atoms involved in the backbone of a particular residue etc
|
|
36
|
+
class MolDataClass {
|
|
37
|
+
public:
|
|
38
|
+
/// Return true if the residue name is one of the allowed reisude names e.g. one of the 20 amino acids for proteins
|
|
39
|
+
static bool allowedResidue( const std::string& type, const std::string& residuename );
|
|
40
|
+
/// Return the number of atoms in the backbone per residue e.g. 5 for proteins
|
|
41
|
+
static unsigned numberOfAtomsPerResidueInBackbone( const std::string& type );
|
|
42
|
+
/// Return the names of the atoms in the backbone e.g. N, CA, CB, C, O for most protein residues
|
|
43
|
+
static void getBackboneForResidue( const std::string& type, const unsigned& residuenum, const PDB& mypdb, std::vector<AtomNumber>& atoms );
|
|
44
|
+
/// Return true if the residue is a terminal group e.g. ACE, NME for proteins
|
|
45
|
+
static bool isTerminalGroup( const std::string& type, const std::string& residuename );
|
|
46
|
+
/// Used to interpret special symbols - currently phi and psi and omega
|
|
47
|
+
static void specialSymbol( const std::string& type, const std::string& symbol, const PDB& mypdb, std::vector<AtomNumber>& numbers );
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
#endif
|