hillclimber 0.1.5a8__cp314-cp314-macosx_15_0_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hillclimber/__init__.py +39 -0
- hillclimber/actions.py +53 -0
- hillclimber/analysis.py +590 -0
- hillclimber/biases.py +293 -0
- hillclimber/calc.py +22 -0
- hillclimber/cvs.py +1065 -0
- hillclimber/interfaces.py +133 -0
- hillclimber/metadynamics.py +325 -0
- hillclimber/nodes.py +6 -0
- hillclimber/opes.py +359 -0
- hillclimber/selectors.py +230 -0
- hillclimber/virtual_atoms.py +341 -0
- hillclimber-0.1.5a8.dist-info/METADATA +209 -0
- hillclimber-0.1.5a8.dist-info/RECORD +469 -0
- hillclimber-0.1.5a8.dist-info/WHEEL +6 -0
- hillclimber-0.1.5a8.dist-info/entry_points.txt +8 -0
- hillclimber-0.1.5a8.dist-info/licenses/LICENSE +165 -0
- plumed/__init__.py +104 -0
- plumed/_lib/bin/plumed +0 -0
- plumed/_lib/bin/plumed-config +9 -0
- plumed/_lib/bin/plumed-patch +9 -0
- plumed/_lib/include/plumed/adjmat/AdjacencyMatrixBase.h +659 -0
- plumed/_lib/include/plumed/adjmat/ContactMatrix.h +59 -0
- plumed/_lib/include/plumed/asmjit/arch.h +228 -0
- plumed/_lib/include/plumed/asmjit/arm.h +43 -0
- plumed/_lib/include/plumed/asmjit/asmjit.h +69 -0
- plumed/_lib/include/plumed/asmjit/asmjit_apibegin.h +143 -0
- plumed/_lib/include/plumed/asmjit/asmjit_apiend.h +93 -0
- plumed/_lib/include/plumed/asmjit/asmjit_build.h +971 -0
- plumed/_lib/include/plumed/asmjit/assembler.h +183 -0
- plumed/_lib/include/plumed/asmjit/base.h +56 -0
- plumed/_lib/include/plumed/asmjit/codebuilder.h +944 -0
- plumed/_lib/include/plumed/asmjit/codecompiler.h +767 -0
- plumed/_lib/include/plumed/asmjit/codeemitter.h +528 -0
- plumed/_lib/include/plumed/asmjit/codeholder.h +777 -0
- plumed/_lib/include/plumed/asmjit/constpool.h +286 -0
- plumed/_lib/include/plumed/asmjit/cpuinfo.h +402 -0
- plumed/_lib/include/plumed/asmjit/func.h +1327 -0
- plumed/_lib/include/plumed/asmjit/globals.h +370 -0
- plumed/_lib/include/plumed/asmjit/inst.h +137 -0
- plumed/_lib/include/plumed/asmjit/logging.h +317 -0
- plumed/_lib/include/plumed/asmjit/misc_p.h +103 -0
- plumed/_lib/include/plumed/asmjit/moved_string.h +318 -0
- plumed/_lib/include/plumed/asmjit/operand.h +1599 -0
- plumed/_lib/include/plumed/asmjit/osutils.h +207 -0
- plumed/_lib/include/plumed/asmjit/regalloc_p.h +597 -0
- plumed/_lib/include/plumed/asmjit/runtime.h +227 -0
- plumed/_lib/include/plumed/asmjit/simdtypes.h +1104 -0
- plumed/_lib/include/plumed/asmjit/utils.h +1387 -0
- plumed/_lib/include/plumed/asmjit/vmem.h +183 -0
- plumed/_lib/include/plumed/asmjit/x86.h +45 -0
- plumed/_lib/include/plumed/asmjit/x86assembler.h +125 -0
- plumed/_lib/include/plumed/asmjit/x86builder.h +117 -0
- plumed/_lib/include/plumed/asmjit/x86compiler.h +322 -0
- plumed/_lib/include/plumed/asmjit/x86emitter.h +5149 -0
- plumed/_lib/include/plumed/asmjit/x86globals.h +535 -0
- plumed/_lib/include/plumed/asmjit/x86inst.h +2547 -0
- plumed/_lib/include/plumed/asmjit/x86instimpl_p.h +74 -0
- plumed/_lib/include/plumed/asmjit/x86internal_p.h +108 -0
- plumed/_lib/include/plumed/asmjit/x86logging_p.h +92 -0
- plumed/_lib/include/plumed/asmjit/x86misc.h +417 -0
- plumed/_lib/include/plumed/asmjit/x86operand.h +1133 -0
- plumed/_lib/include/plumed/asmjit/x86regalloc_p.h +734 -0
- plumed/_lib/include/plumed/asmjit/zone.h +1157 -0
- plumed/_lib/include/plumed/bias/Bias.h +82 -0
- plumed/_lib/include/plumed/bias/ReweightBase.h +58 -0
- plumed/_lib/include/plumed/blas/blas.h +253 -0
- plumed/_lib/include/plumed/blas/def_external.h +61 -0
- plumed/_lib/include/plumed/blas/def_internal.h +97 -0
- plumed/_lib/include/plumed/blas/real.h +49 -0
- plumed/_lib/include/plumed/cltools/CLTool.h +32 -0
- plumed/_lib/include/plumed/clusters/ClusteringBase.h +70 -0
- plumed/_lib/include/plumed/colvar/Colvar.h +32 -0
- plumed/_lib/include/plumed/colvar/ColvarInput.h +68 -0
- plumed/_lib/include/plumed/colvar/ColvarShortcut.h +81 -0
- plumed/_lib/include/plumed/colvar/CoordinationBase.h +52 -0
- plumed/_lib/include/plumed/colvar/MultiColvarTemplate.h +333 -0
- plumed/_lib/include/plumed/colvar/PathMSDBase.h +101 -0
- plumed/_lib/include/plumed/colvar/RMSDVector.h +78 -0
- plumed/_lib/include/plumed/config/Config.h +118 -0
- plumed/_lib/include/plumed/config/version.h +9 -0
- plumed/_lib/include/plumed/contour/ContourFindingObject.h +87 -0
- plumed/_lib/include/plumed/contour/DistanceFromContourBase.h +82 -0
- plumed/_lib/include/plumed/contour/FindContour.h +67 -0
- plumed/_lib/include/plumed/core/Action.h +540 -0
- plumed/_lib/include/plumed/core/ActionAnyorder.h +48 -0
- plumed/_lib/include/plumed/core/ActionAtomistic.h +343 -0
- plumed/_lib/include/plumed/core/ActionForInterface.h +99 -0
- plumed/_lib/include/plumed/core/ActionPilot.h +57 -0
- plumed/_lib/include/plumed/core/ActionRegister.h +124 -0
- plumed/_lib/include/plumed/core/ActionSet.h +163 -0
- plumed/_lib/include/plumed/core/ActionSetup.h +48 -0
- plumed/_lib/include/plumed/core/ActionShortcut.h +73 -0
- plumed/_lib/include/plumed/core/ActionToGetData.h +59 -0
- plumed/_lib/include/plumed/core/ActionToPutData.h +101 -0
- plumed/_lib/include/plumed/core/ActionWithArguments.h +140 -0
- plumed/_lib/include/plumed/core/ActionWithMatrix.h +87 -0
- plumed/_lib/include/plumed/core/ActionWithValue.h +258 -0
- plumed/_lib/include/plumed/core/ActionWithVector.h +94 -0
- plumed/_lib/include/plumed/core/ActionWithVirtualAtom.h +123 -0
- plumed/_lib/include/plumed/core/CLTool.h +177 -0
- plumed/_lib/include/plumed/core/CLToolMain.h +102 -0
- plumed/_lib/include/plumed/core/CLToolRegister.h +108 -0
- plumed/_lib/include/plumed/core/Colvar.h +115 -0
- plumed/_lib/include/plumed/core/DataPassingObject.h +94 -0
- plumed/_lib/include/plumed/core/DataPassingTools.h +54 -0
- plumed/_lib/include/plumed/core/DomainDecomposition.h +120 -0
- plumed/_lib/include/plumed/core/ExchangePatterns.h +47 -0
- plumed/_lib/include/plumed/core/FlexibleBin.h +63 -0
- plumed/_lib/include/plumed/core/GREX.h +61 -0
- plumed/_lib/include/plumed/core/GenericMolInfo.h +89 -0
- plumed/_lib/include/plumed/core/Group.h +41 -0
- plumed/_lib/include/plumed/core/ModuleMap.h +30 -0
- plumed/_lib/include/plumed/core/ParallelTaskManager.h +1023 -0
- plumed/_lib/include/plumed/core/PbcAction.h +61 -0
- plumed/_lib/include/plumed/core/PlumedMain.h +632 -0
- plumed/_lib/include/plumed/core/PlumedMainInitializer.h +118 -0
- plumed/_lib/include/plumed/core/RegisterBase.h +340 -0
- plumed/_lib/include/plumed/core/TargetDist.h +48 -0
- plumed/_lib/include/plumed/core/Value.h +547 -0
- plumed/_lib/include/plumed/core/WithCmd.h +93 -0
- plumed/_lib/include/plumed/dimred/SMACOF.h +55 -0
- plumed/_lib/include/plumed/drr/DRR.h +383 -0
- plumed/_lib/include/plumed/drr/colvar_UIestimator.h +777 -0
- plumed/_lib/include/plumed/fisst/legendre_rule_fast.h +44 -0
- plumed/_lib/include/plumed/function/Custom.h +54 -0
- plumed/_lib/include/plumed/function/Function.h +85 -0
- plumed/_lib/include/plumed/function/FunctionOfMatrix.h +368 -0
- plumed/_lib/include/plumed/function/FunctionOfScalar.h +135 -0
- plumed/_lib/include/plumed/function/FunctionOfVector.h +296 -0
- plumed/_lib/include/plumed/function/FunctionSetup.h +180 -0
- plumed/_lib/include/plumed/function/FunctionShortcut.h +130 -0
- plumed/_lib/include/plumed/function/FunctionWithSingleArgument.h +165 -0
- plumed/_lib/include/plumed/gridtools/ActionWithGrid.h +43 -0
- plumed/_lib/include/plumed/gridtools/EvaluateGridFunction.h +99 -0
- plumed/_lib/include/plumed/gridtools/FunctionOfGrid.h +295 -0
- plumed/_lib/include/plumed/gridtools/GridCoordinatesObject.h +179 -0
- plumed/_lib/include/plumed/gridtools/GridSearch.h +135 -0
- plumed/_lib/include/plumed/gridtools/Interpolator.h +45 -0
- plumed/_lib/include/plumed/gridtools/KDE.h +455 -0
- plumed/_lib/include/plumed/gridtools/RDF.h +40 -0
- plumed/_lib/include/plumed/gridtools/SumOfKernels.h +219 -0
- plumed/_lib/include/plumed/isdb/MetainferenceBase.h +398 -0
- plumed/_lib/include/plumed/lapack/def_external.h +207 -0
- plumed/_lib/include/plumed/lapack/def_internal.h +388 -0
- plumed/_lib/include/plumed/lapack/lapack.h +899 -0
- plumed/_lib/include/plumed/lapack/lapack_limits.h +79 -0
- plumed/_lib/include/plumed/lapack/real.h +50 -0
- plumed/_lib/include/plumed/lepton/CompiledExpression.h +164 -0
- plumed/_lib/include/plumed/lepton/CustomFunction.h +143 -0
- plumed/_lib/include/plumed/lepton/Exception.h +93 -0
- plumed/_lib/include/plumed/lepton/ExpressionProgram.h +137 -0
- plumed/_lib/include/plumed/lepton/ExpressionTreeNode.h +145 -0
- plumed/_lib/include/plumed/lepton/Lepton.h +85 -0
- plumed/_lib/include/plumed/lepton/MSVC_erfc.h +123 -0
- plumed/_lib/include/plumed/lepton/Operation.h +1302 -0
- plumed/_lib/include/plumed/lepton/ParsedExpression.h +165 -0
- plumed/_lib/include/plumed/lepton/Parser.h +111 -0
- plumed/_lib/include/plumed/lepton/windowsIncludes.h +73 -0
- plumed/_lib/include/plumed/mapping/Path.h +44 -0
- plumed/_lib/include/plumed/mapping/PathProjectionCalculator.h +57 -0
- plumed/_lib/include/plumed/matrixtools/MatrixOperationBase.h +54 -0
- plumed/_lib/include/plumed/matrixtools/MatrixTimesMatrix.h +309 -0
- plumed/_lib/include/plumed/matrixtools/MatrixTimesVectorBase.h +365 -0
- plumed/_lib/include/plumed/matrixtools/OuterProduct.h +238 -0
- plumed/_lib/include/plumed/maze/Core.h +65 -0
- plumed/_lib/include/plumed/maze/Loss.h +86 -0
- plumed/_lib/include/plumed/maze/Member.h +66 -0
- plumed/_lib/include/plumed/maze/Memetic.h +799 -0
- plumed/_lib/include/plumed/maze/Optimizer.h +357 -0
- plumed/_lib/include/plumed/maze/Random_MT.h +156 -0
- plumed/_lib/include/plumed/maze/Tools.h +183 -0
- plumed/_lib/include/plumed/metatomic/vesin.h +188 -0
- plumed/_lib/include/plumed/molfile/Gromacs.h +2013 -0
- plumed/_lib/include/plumed/molfile/endianswap.h +217 -0
- plumed/_lib/include/plumed/molfile/fastio.h +683 -0
- plumed/_lib/include/plumed/molfile/largefiles.h +78 -0
- plumed/_lib/include/plumed/molfile/libmolfile_plugin.h +77 -0
- plumed/_lib/include/plumed/molfile/molfile_plugin.h +1034 -0
- plumed/_lib/include/plumed/molfile/periodic_table.h +248 -0
- plumed/_lib/include/plumed/molfile/readpdb.h +447 -0
- plumed/_lib/include/plumed/molfile/vmdplugin.h +236 -0
- plumed/_lib/include/plumed/multicolvar/MultiColvarShortcuts.h +45 -0
- plumed/_lib/include/plumed/opes/ExpansionCVs.h +79 -0
- plumed/_lib/include/plumed/sasa/Sasa.h +32 -0
- plumed/_lib/include/plumed/secondarystructure/SecondaryStructureBase.h +372 -0
- plumed/_lib/include/plumed/setup/ActionSetup.h +25 -0
- plumed/_lib/include/plumed/small_vector/small_vector.h +6114 -0
- plumed/_lib/include/plumed/symfunc/CoordinationNumbers.h +41 -0
- plumed/_lib/include/plumed/tools/Angle.h +52 -0
- plumed/_lib/include/plumed/tools/AtomDistribution.h +138 -0
- plumed/_lib/include/plumed/tools/AtomNumber.h +152 -0
- plumed/_lib/include/plumed/tools/BiasRepresentation.h +106 -0
- plumed/_lib/include/plumed/tools/BitmaskEnum.h +167 -0
- plumed/_lib/include/plumed/tools/Brent1DRootSearch.h +159 -0
- plumed/_lib/include/plumed/tools/CheckInRange.h +44 -0
- plumed/_lib/include/plumed/tools/Citations.h +74 -0
- plumed/_lib/include/plumed/tools/ColvarOutput.h +118 -0
- plumed/_lib/include/plumed/tools/Communicator.h +316 -0
- plumed/_lib/include/plumed/tools/ConjugateGradient.h +80 -0
- plumed/_lib/include/plumed/tools/DLLoader.h +79 -0
- plumed/_lib/include/plumed/tools/ERMSD.h +73 -0
- plumed/_lib/include/plumed/tools/Exception.h +406 -0
- plumed/_lib/include/plumed/tools/File.h +28 -0
- plumed/_lib/include/plumed/tools/FileBase.h +153 -0
- plumed/_lib/include/plumed/tools/FileTools.h +37 -0
- plumed/_lib/include/plumed/tools/ForwardDecl.h +54 -0
- plumed/_lib/include/plumed/tools/Grid.h +638 -0
- plumed/_lib/include/plumed/tools/HistogramBead.h +136 -0
- plumed/_lib/include/plumed/tools/IFile.h +117 -0
- plumed/_lib/include/plumed/tools/KernelFunctions.h +113 -0
- plumed/_lib/include/plumed/tools/Keywords.h +380 -0
- plumed/_lib/include/plumed/tools/LatticeReduction.h +66 -0
- plumed/_lib/include/plumed/tools/LeptonCall.h +64 -0
- plumed/_lib/include/plumed/tools/LinkCells.h +126 -0
- plumed/_lib/include/plumed/tools/Log.h +41 -0
- plumed/_lib/include/plumed/tools/LoopUnroller.h +163 -0
- plumed/_lib/include/plumed/tools/Matrix.h +721 -0
- plumed/_lib/include/plumed/tools/MatrixSquareBracketsAccess.h +138 -0
- plumed/_lib/include/plumed/tools/MergeVectorTools.h +153 -0
- plumed/_lib/include/plumed/tools/Minimise1DBrent.h +244 -0
- plumed/_lib/include/plumed/tools/MinimiseBase.h +120 -0
- plumed/_lib/include/plumed/tools/MolDataClass.h +51 -0
- plumed/_lib/include/plumed/tools/NeighborList.h +112 -0
- plumed/_lib/include/plumed/tools/OFile.h +286 -0
- plumed/_lib/include/plumed/tools/OpenACC.h +180 -0
- plumed/_lib/include/plumed/tools/OpenMP.h +75 -0
- plumed/_lib/include/plumed/tools/PDB.h +154 -0
- plumed/_lib/include/plumed/tools/Pbc.h +139 -0
- plumed/_lib/include/plumed/tools/PlumedHandle.h +105 -0
- plumed/_lib/include/plumed/tools/RMSD.h +493 -0
- plumed/_lib/include/plumed/tools/Random.h +80 -0
- plumed/_lib/include/plumed/tools/RootFindingBase.h +79 -0
- plumed/_lib/include/plumed/tools/Stopwatch.h +475 -0
- plumed/_lib/include/plumed/tools/Subprocess.h +142 -0
- plumed/_lib/include/plumed/tools/SwitchingFunction.h +208 -0
- plumed/_lib/include/plumed/tools/Tensor.h +724 -0
- plumed/_lib/include/plumed/tools/TokenizedLine.h +123 -0
- plumed/_lib/include/plumed/tools/Tools.h +638 -0
- plumed/_lib/include/plumed/tools/Torsion.h +55 -0
- plumed/_lib/include/plumed/tools/TrajectoryParser.h +118 -0
- plumed/_lib/include/plumed/tools/Tree.h +61 -0
- plumed/_lib/include/plumed/tools/TypesafePtr.h +463 -0
- plumed/_lib/include/plumed/tools/Units.h +167 -0
- plumed/_lib/include/plumed/tools/Vector.h +433 -0
- plumed/_lib/include/plumed/tools/View.h +296 -0
- plumed/_lib/include/plumed/tools/View2D.h +100 -0
- plumed/_lib/include/plumed/tools/h36.h +39 -0
- plumed/_lib/include/plumed/vatom/ActionWithVirtualAtom.h +32 -0
- plumed/_lib/include/plumed/ves/BasisFunctions.h +380 -0
- plumed/_lib/include/plumed/ves/CoeffsBase.h +310 -0
- plumed/_lib/include/plumed/ves/CoeffsMatrix.h +220 -0
- plumed/_lib/include/plumed/ves/CoeffsVector.h +251 -0
- plumed/_lib/include/plumed/ves/FermiSwitchingFunction.h +74 -0
- plumed/_lib/include/plumed/ves/GridIntegrationWeights.h +50 -0
- plumed/_lib/include/plumed/ves/GridLinearInterpolation.h +81 -0
- plumed/_lib/include/plumed/ves/GridProjWeights.h +61 -0
- plumed/_lib/include/plumed/ves/LinearBasisSetExpansion.h +303 -0
- plumed/_lib/include/plumed/ves/Optimizer.h +444 -0
- plumed/_lib/include/plumed/ves/TargetDistModifer.h +53 -0
- plumed/_lib/include/plumed/ves/TargetDistribution.h +266 -0
- plumed/_lib/include/plumed/ves/VesBias.h +545 -0
- plumed/_lib/include/plumed/ves/VesTools.h +142 -0
- plumed/_lib/include/plumed/ves/WaveletGrid.h +75 -0
- plumed/_lib/include/plumed/volumes/ActionVolume.h +268 -0
- plumed/_lib/include/plumed/volumes/VolumeShortcut.h +147 -0
- plumed/_lib/include/plumed/wrapper/Plumed.h +5025 -0
- plumed/_lib/include/plumed/xdrfile/xdrfile.h +663 -0
- plumed/_lib/include/plumed/xdrfile/xdrfile_trr.h +89 -0
- plumed/_lib/include/plumed/xdrfile/xdrfile_xtc.h +90 -0
- plumed/_lib/lib/PythonCVInterface.dylib +0 -0
- plumed/_lib/lib/libplumed.dylib +0 -0
- plumed/_lib/lib/libplumedKernel.dylib +0 -0
- plumed/_lib/lib/libplumedWrapper.a +0 -0
- plumed/_lib/lib/pkgconfig/plumed.pc +13 -0
- plumed/_lib/lib/pkgconfig/plumedInternals.pc +13 -0
- plumed/_lib/lib/pkgconfig/plumedWrapper.pc +13 -0
- plumed/_lib/lib/plumed/fortran/plumed.f90 +879 -0
- plumed/_lib/lib/plumed/fortran/plumed_f08.f90 +2625 -0
- plumed/_lib/lib/plumed/modulefile +69 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.config +43 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt +543 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt.preplumed +540 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp +1628 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1590 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h +103 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h.preplumed +99 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp +2527 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2513 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +408 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +394 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp +2348 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2091 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp +3573 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3495 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1506 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1402 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp +997 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +906 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp +2780 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2738 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
- plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.config +43 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt +549 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt.preplumed +546 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h +104 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp +2624 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2610 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +409 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +395 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp +2419 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2164 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp +3546 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3468 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp +991 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +900 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp +2895 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2849 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp +886 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +880 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +347 -0
- plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +345 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.config +43 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt +575 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt.preplumed +572 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h +104 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp +2564 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2550 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h +410 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +396 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp +2435 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp.preplumed +2187 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp +3592 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3514 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp +958 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp.preplumed +929 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp +2987 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp.preplumed +2941 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp +904 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +898 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +353 -0
- plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +351 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.config +39 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake +82 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake.preplumed +82 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp +162 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp.preplumed +154 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp +107 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp.preplumed +99 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h +120 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h.preplumed +111 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp +215 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp.preplumed +197 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h +87 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h.preplumed +86 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp +2971 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp.preplumed +2970 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h +430 -0
- plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h.preplumed +429 -0
- plumed/_lib/lib/plumed/patches/namd-2.12.config +30 -0
- plumed/_lib/lib/plumed/patches/namd-2.12.diff +267 -0
- plumed/_lib/lib/plumed/patches/namd-2.13.config +30 -0
- plumed/_lib/lib/plumed/patches/namd-2.13.diff +267 -0
- plumed/_lib/lib/plumed/patches/namd-2.14.config +30 -0
- plumed/_lib/lib/plumed/patches/namd-2.14.diff +268 -0
- plumed/_lib/lib/plumed/patches/patch.sh +500 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.config +25 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90 +368 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90.preplumed +366 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90 +71 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90.preplumed +24 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90 +62 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90 +189 -0
- plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90.preplumed +185 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.config +26 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90 +422 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90.preplumed +420 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90 +70 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90 +62 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90 +233 -0
- plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90.preplumed +230 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.config +28 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile +175 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile.preplumed +171 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90 +486 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90.preplumed +484 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90 +74 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90 +64 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90 +532 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90.preplumed +518 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.config +28 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile +249 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile.preplumed +244 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90 +532 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90.preplumed +535 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90 +74 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90 +64 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90 +569 -0
- plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90.preplumed +560 -0
- plumed/_lib/lib/plumed/plumed-config +9 -0
- plumed/_lib/lib/plumed/plumed-mklib +9 -0
- plumed/_lib/lib/plumed/plumed-newcv +9 -0
- plumed/_lib/lib/plumed/plumed-partial_tempering +9 -0
- plumed/_lib/lib/plumed/plumed-patch +9 -0
- plumed/_lib/lib/plumed/plumed-runtime +0 -0
- plumed/_lib/lib/plumed/plumed-selector +9 -0
- plumed/_lib/lib/plumed/plumed-vim2html +9 -0
- plumed/_lib/lib/plumed/scripts/config.sh +126 -0
- plumed/_lib/lib/plumed/scripts/mklib.sh +175 -0
- plumed/_lib/lib/plumed/scripts/newcv.sh +26 -0
- plumed/_lib/lib/plumed/scripts/partial_tempering.sh +319 -0
- plumed/_lib/lib/plumed/scripts/patch.sh +4 -0
- plumed/_lib/lib/plumed/scripts/selector.sh +234 -0
- plumed/_lib/lib/plumed/scripts/vim2html.sh +190 -0
- plumed/_lib/lib/plumed/src/colvar/Template.cpp +116 -0
- plumed/_lib/lib/plumed/src/config/compile_options.sh +3 -0
- plumed/_lib/lib/plumed/src/config/config.txt +181 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake +6 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake.runtime +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake.shared +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.cmake.static +3 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc +6 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc.runtime +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc.shared +5 -0
- plumed/_lib/lib/plumed/src/lib/Plumed.inc.static +3 -0
- plumed/_lib/lib/plumed/vim/scripts.vim +6 -0
- plumed/_plumed_core.cpython-311-darwin.so +0 -0
- plumed/_plumed_core.cpython-312-darwin.so +0 -0
- plumed/_plumed_core.cpython-313-darwin.so +0 -0
- plumed/_plumed_core.cpython-314-darwin.so +0 -0
- plumedCommunications.cpython-311-darwin.so +0 -0
- plumedCommunications.cpython-312-darwin.so +0 -0
- plumedCommunications.cpython-313-darwin.so +0 -0
- plumedCommunications.cpython-314-darwin.so +0 -0
- plumedCommunications.pyi +431 -0
|
@@ -0,0 +1,638 @@
|
|
|
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_Tools_h
|
|
23
|
+
#define __PLUMED_tools_Tools_h
|
|
24
|
+
|
|
25
|
+
#include "AtomNumber.h"
|
|
26
|
+
#include "Vector.h"
|
|
27
|
+
#include "Tensor.h"
|
|
28
|
+
#include "../small_vector/small_vector.h"
|
|
29
|
+
#include <string_view>
|
|
30
|
+
#include <vector>
|
|
31
|
+
#include <string>
|
|
32
|
+
#include <cctype>
|
|
33
|
+
#include <cstdio>
|
|
34
|
+
#include <cmath>
|
|
35
|
+
#include <limits>
|
|
36
|
+
#include <algorithm>
|
|
37
|
+
#include <sstream>
|
|
38
|
+
#include <memory>
|
|
39
|
+
#include <cstddef>
|
|
40
|
+
#include <queue>
|
|
41
|
+
#include <mutex>
|
|
42
|
+
#include <filesystem>
|
|
43
|
+
#include <utility>
|
|
44
|
+
#include <unordered_map>
|
|
45
|
+
#include <map>
|
|
46
|
+
#include <condition_variable>
|
|
47
|
+
#include <type_traits>
|
|
48
|
+
|
|
49
|
+
namespace PLMD {
|
|
50
|
+
|
|
51
|
+
class IFile;
|
|
52
|
+
|
|
53
|
+
/// \ingroup TOOLBOX
|
|
54
|
+
/// Very small non-zero number
|
|
55
|
+
constexpr double epsilon(std::numeric_limits<double>::epsilon());
|
|
56
|
+
|
|
57
|
+
/// \ingroup TOOLBOX
|
|
58
|
+
/// Boltzman constant in kj/K
|
|
59
|
+
constexpr double kBoltzmann(0.0083144621);
|
|
60
|
+
|
|
61
|
+
/// \ingroup TOOLBOX
|
|
62
|
+
/// PI
|
|
63
|
+
constexpr double pi(3.141592653589793238462643383279502884197169399375105820974944592307);
|
|
64
|
+
/// \ingroup TOOLBOX
|
|
65
|
+
/// PI / 2
|
|
66
|
+
constexpr double halfpi=PLMD::pi*0.5;
|
|
67
|
+
/// \ingroup TOOLBOX
|
|
68
|
+
/// PI * 2
|
|
69
|
+
constexpr double twopi=PLMD::pi*2.0;
|
|
70
|
+
|
|
71
|
+
constexpr double dp2cutoff(6.25);
|
|
72
|
+
|
|
73
|
+
constexpr double dp2cutoffA=1.00193418799744762399; // 1.0/(1-std::exp(-dp2cutoff));
|
|
74
|
+
constexpr double dp2cutoffB=-.00193418799744762399; // -std::exp(-dp2cutoff)/(1-std::exp(-dp2cutoff));
|
|
75
|
+
|
|
76
|
+
inline static bool dp2cutoffNoStretch() {
|
|
77
|
+
static const auto* res=std::getenv("PLUMED_DP2CUTOFF_NOSTRETCH");
|
|
78
|
+
return res;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/// \ingroup TOOLBOX
|
|
82
|
+
/// Empty class which just contains several (static) tools
|
|
83
|
+
class Tools {
|
|
84
|
+
/// class to convert a string to a generic type T
|
|
85
|
+
template<class T>
|
|
86
|
+
static bool convertToAny(const std::string & str,T &t);
|
|
87
|
+
/// class to convert a string to a real type T.
|
|
88
|
+
/// T should be either float, double, or long double
|
|
89
|
+
template<class T>
|
|
90
|
+
static bool convertToReal(const std::string & str,T &t);
|
|
91
|
+
/// class to convert a string to a int type T
|
|
92
|
+
template<class T>
|
|
93
|
+
static bool convertToInt(const std::string & str,T &t);
|
|
94
|
+
/// @brief the recursive part of the template fastpow implementation
|
|
95
|
+
template <int exp, typename T=double, std::enable_if_t< (exp >=0), bool> = true>
|
|
96
|
+
static constexpr inline T fastpow_rec(T base, T result);
|
|
97
|
+
public:
|
|
98
|
+
static constexpr std::string_view replicaToken="@replicas:";
|
|
99
|
+
/// Split the line in words using separators.
|
|
100
|
+
/// It also take into account parenthesis. Outer parenthesis found are removed from
|
|
101
|
+
/// output, and the text between them is considered as a single word. Only the
|
|
102
|
+
/// outer parenthesis are processed, to allow nesting them.
|
|
103
|
+
/// parlevel, if not NULL, is increased or decreased according to the number of opened/closed parenthesis
|
|
104
|
+
static std::vector<std::string> getWords(std::string_view line,
|
|
105
|
+
const char* sep=NULL,
|
|
106
|
+
int* parlevel=NULL,
|
|
107
|
+
const char* parenthesis="{",
|
|
108
|
+
bool delete_parenthesis=true);
|
|
109
|
+
/// Faster version
|
|
110
|
+
/// This version does not parse parenthesis and operates on a preallocated small_vector of string_view's
|
|
111
|
+
static void getWordsSimple(gch::small_vector<std::string_view> & words,
|
|
112
|
+
std::string_view line);
|
|
113
|
+
static void getWordsSimple(gch::small_vector<std::string_view> & words,
|
|
114
|
+
std::string_view line,
|
|
115
|
+
std::string_view sep);
|
|
116
|
+
/// Get a line from the file pointer ifile
|
|
117
|
+
static bool getline(FILE*,std::string & line);
|
|
118
|
+
/// Get a parsed line from the file pointer ifile
|
|
119
|
+
/// This function already takes care of joining continued lines and splitting the
|
|
120
|
+
/// resulting line into an array of words
|
|
121
|
+
static bool getParsedLine(IFile&ifile,std::vector<std::string> & line, const bool trimcomments=true);
|
|
122
|
+
/// compare two string in a case insensitive manner
|
|
123
|
+
static bool caseInSensStringCompare(std::string_view str1, std::string_view str2);
|
|
124
|
+
/// Convert a string to a double, reading it
|
|
125
|
+
static bool convertNoexcept(const std::string & str,double & t);
|
|
126
|
+
/// Convert a string to a long double, reading it
|
|
127
|
+
static bool convertNoexcept(const std::string & str,long double & t);
|
|
128
|
+
/// Convert a string to a float, reading it
|
|
129
|
+
static bool convertNoexcept(const std::string & str,float & t);
|
|
130
|
+
/// Convert a string to a int, reading it
|
|
131
|
+
static bool convertNoexcept(const std::string & str,int & t);
|
|
132
|
+
/// Convert a string to a long int, reading it
|
|
133
|
+
static bool convertNoexcept(const std::string & str,long int & t);
|
|
134
|
+
/// Convert a string to a long long int, reading it
|
|
135
|
+
static bool convertNoexcept(const std::string & str,long long int & t);
|
|
136
|
+
/// Convert a string to an unsigned int, reading it
|
|
137
|
+
static bool convertNoexcept(const std::string & str,unsigned & t);
|
|
138
|
+
/// Convert a string to a long unsigned int, reading it
|
|
139
|
+
static bool convertNoexcept(const std::string & str,long unsigned & t);
|
|
140
|
+
/// Convert a string to a long long unsigned int, reading it
|
|
141
|
+
static bool convertNoexcept(const std::string & str,long long unsigned & t);
|
|
142
|
+
/// Convert a string to a atom number, reading it
|
|
143
|
+
static bool convertNoexcept(const std::string & str,AtomNumber & t);
|
|
144
|
+
/// Convert a string to a string (i.e. copy)
|
|
145
|
+
static bool convertNoexcept(const std::string & str,std::string & t);
|
|
146
|
+
/// Convert anything into a string
|
|
147
|
+
template<typename T>
|
|
148
|
+
static bool convertNoexcept(T i,std::string & str);
|
|
149
|
+
/// Convert anything into anything, throwing an exception in case there is an error
|
|
150
|
+
/// Remove trailing blanks
|
|
151
|
+
static void trim(std::string & s);
|
|
152
|
+
/// Remove leading blanks
|
|
153
|
+
static void ltrim(std::string & s);
|
|
154
|
+
/// Remove trailing comments
|
|
155
|
+
static void trimComments(std::string & s);
|
|
156
|
+
/// Apply pbc for a unitary cell
|
|
157
|
+
static double pbc(double);
|
|
158
|
+
/// Retrieve a key from a vector of options.
|
|
159
|
+
/// It finds a key starting with "key=" or equal to "key" and copy the
|
|
160
|
+
/// part after the = on s. E.g.:
|
|
161
|
+
/// line.push_back("aa=xx");
|
|
162
|
+
/// getKey(line,"aa",s);
|
|
163
|
+
/// will set s="xx"
|
|
164
|
+
static bool getKey(std::vector<std::string>& line,
|
|
165
|
+
const std::string & key,
|
|
166
|
+
std::string & s,
|
|
167
|
+
int rep=-1);
|
|
168
|
+
static std::string_view unravelReplicas(std::string_view argument,
|
|
169
|
+
int rep=-1);
|
|
170
|
+
template <typename T,typename U>
|
|
171
|
+
static void convert(const T & t,U & u) {
|
|
172
|
+
plumed_assert(convertNoexcept(t,u)) <<"Error converting "<<t;
|
|
173
|
+
}
|
|
174
|
+
/// Find a keyword on the input line, eventually deleting it, and saving its value to val
|
|
175
|
+
template <typename T>
|
|
176
|
+
static bool parse(std::vector<std::string>&line,
|
|
177
|
+
const std::string&key,
|
|
178
|
+
T&val,
|
|
179
|
+
int rep=-1);
|
|
180
|
+
/// Parse the argument and eventually unrave the variant for the current replica
|
|
181
|
+
template <typename T>
|
|
182
|
+
static bool parse(std::string_view argument, T&val);
|
|
183
|
+
/// Find a keyword on the input line, eventually deleting it, and saving its value to a vector
|
|
184
|
+
template <class T>
|
|
185
|
+
static bool parseVector(std::vector<std::string>&line,const std::string&key,std::vector<T>&val,int rep=-1);
|
|
186
|
+
template <class T>
|
|
187
|
+
static bool parseVector(
|
|
188
|
+
const std::string_view argument,
|
|
189
|
+
std::vector<T>&val,
|
|
190
|
+
int rep=-1) ;
|
|
191
|
+
/// Find a keyword without arguments on the input line
|
|
192
|
+
static bool parseFlag(std::vector<std::string>&line,const std::string&key,bool&val);
|
|
193
|
+
/// Find a keyword on the input line, just reporting if it exists or not
|
|
194
|
+
static bool findKeyword(const std::vector<std::string>&line,const std::string&key);
|
|
195
|
+
/// Interpret atom ranges
|
|
196
|
+
static void interpretRanges(std::vector<std::string>&);
|
|
197
|
+
/// Remove duplicates from a vector of type T
|
|
198
|
+
template <typename T>
|
|
199
|
+
static void removeDuplicates(std::vector<T>& vec);
|
|
200
|
+
/// interpret ":" syntax for labels
|
|
201
|
+
static void interpretLabel(std::vector<std::string>&s);
|
|
202
|
+
/// list files in a directory
|
|
203
|
+
static std::vector<std::string> ls(const std::string&);
|
|
204
|
+
/// removes leading and trailing blanks from a string
|
|
205
|
+
static void stripLeadingAndTrailingBlanks( std::string& str );
|
|
206
|
+
/// Extract the extensions from a file name.
|
|
207
|
+
/// E.g.: extension("pippo.xyz")="xyz".
|
|
208
|
+
/// It only returns extensions with a length between 1 and 4
|
|
209
|
+
/// E.g.: extension("pippo.12345")="" whereas extenion("pippo.1234")="1234";
|
|
210
|
+
/// It is also smart enough to detect "/", so that
|
|
211
|
+
/// extension("pippo/.t")="" whereas extension("pippo/a.t")="t"
|
|
212
|
+
static std::string extension(const std::string&);
|
|
213
|
+
/// Fast int power
|
|
214
|
+
template <typename T>
|
|
215
|
+
static constexpr inline T fastpow(T base,int exp);
|
|
216
|
+
/// Fast int power for power known at compile time
|
|
217
|
+
template <int exp, typename T=double>
|
|
218
|
+
static constexpr inline T fastpow(T base);
|
|
219
|
+
/// Modified 0th-order Bessel function of the first kind
|
|
220
|
+
static double bessel0(const double& val);
|
|
221
|
+
/// Check if a string full starts with string start.
|
|
222
|
+
/// Same as full.find(start)==0, but faster
|
|
223
|
+
static bool startWith(std::string_view full, std::string_view start);
|
|
224
|
+
/**
|
|
225
|
+
Tool to create a vector of raw pointers from a vector of unique_pointers (const version).
|
|
226
|
+
Returning a vector is fast in C++11. It can be used in order to feed a vector<unique_ptr<T>>
|
|
227
|
+
to a function that takes a vector<T*>.
|
|
228
|
+
\verbatim
|
|
229
|
+
// some function that takes a vec
|
|
230
|
+
void func(std::vector<Data*> & vec);
|
|
231
|
+
std::vector<std::unique_ptr<Data>> vec;
|
|
232
|
+
// func(vec); // does not compile
|
|
233
|
+
func(Tools::unique2raw(vec)); // compiles
|
|
234
|
+
\endverbatim
|
|
235
|
+
Notice that the conversion is fast but takes
|
|
236
|
+
some time to allocate the new vector and copy the pointers. In case the function
|
|
237
|
+
acting on the vector<T*> is very fast and we do not want to add significant overhead,
|
|
238
|
+
it might be convenient to store a separate set of raw pointers.
|
|
239
|
+
\verbatim
|
|
240
|
+
// some function that takes a vec
|
|
241
|
+
void func(std::vector<Data*> & vec);
|
|
242
|
+
std::vector<std::unique_ptr<Data>> vec;
|
|
243
|
+
|
|
244
|
+
// conversion done only once:
|
|
245
|
+
auto vec_ptr=Tools::unique2raw(vec);
|
|
246
|
+
|
|
247
|
+
for(int i=0;i<1000;i++){
|
|
248
|
+
func(vec_ptr);
|
|
249
|
+
}
|
|
250
|
+
\endverbatim
|
|
251
|
+
*/
|
|
252
|
+
template <typename T>
|
|
253
|
+
static std::vector<T*> unique2raw(const std::vector<std::unique_ptr<T>>&);
|
|
254
|
+
/// Tool to create a vector of raw pointers from a vector of unique_pointers.
|
|
255
|
+
/// See the non const version.
|
|
256
|
+
template <typename T>
|
|
257
|
+
static std::vector<const T*> unique2raw(const std::vector<std::unique_ptr<const T>>&);
|
|
258
|
+
/// Tiny class that changes directory and comes back when going out of scope.
|
|
259
|
+
/// In case system calls to change dir are not available it throws an exception.
|
|
260
|
+
/// \warning By construction, changing directory breaks thread safety! Use with care.
|
|
261
|
+
class DirectoryChanger {
|
|
262
|
+
const std::filesystem::path originalpath;
|
|
263
|
+
public:
|
|
264
|
+
explicit DirectoryChanger(const char*path);
|
|
265
|
+
~DirectoryChanger();
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
template<class T, class... Args>
|
|
269
|
+
static auto make_unique(Args&&... args) {
|
|
270
|
+
return std::make_unique<T>(std::forward<Args>(args)...);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
template <typename T>
|
|
274
|
+
static void set_to_zero(T*ptr, const unsigned n) {
|
|
275
|
+
const auto end=ptr+n;
|
|
276
|
+
for(; ptr < end; ++ptr) {
|
|
277
|
+
*ptr=T(0.0);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
template<typename T, unsigned n>
|
|
282
|
+
static void set_to_zero(std::vector<VectorTyped<T,n>> & vec) {
|
|
283
|
+
unsigned s=vec.size();
|
|
284
|
+
if(s==0) {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
set_to_zero(vec[0].data(),s*n);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
template<typename T, unsigned n,unsigned m>
|
|
291
|
+
static void set_to_zero(std::vector<TensorTyped<T,n,m>> & vec) {
|
|
292
|
+
unsigned s=vec.size();
|
|
293
|
+
if(s==0) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
set_to_zero(vec[0].data(),s*n*m);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
static std::unique_ptr<std::lock_guard<std::mutex>> molfile_lock();
|
|
300
|
+
/// Build a concatenated exception message.
|
|
301
|
+
/// Should be called with an in-flight exception.
|
|
302
|
+
static std::string concatenateExceptionMessages();
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
/// Tiny class implementing faster std::string_view access to an unordered_map
|
|
306
|
+
/// It exposes a limited number of methods of std::unordered_map. Others could be added.
|
|
307
|
+
/// Importantly, when it is accessed via a std::string_view, the access does not
|
|
308
|
+
/// require constructing a std::string and is thus faster.
|
|
309
|
+
/// Deletion would be slower instead. It's not even implemented yet.
|
|
310
|
+
template<class T>
|
|
311
|
+
class FastStringUnorderedMap {
|
|
312
|
+
using container=std::unordered_map<std::string_view,T>;
|
|
313
|
+
using keytype = std::unique_ptr<const char[]>;
|
|
314
|
+
using keyholder = std::vector<keytype>;
|
|
315
|
+
container map;
|
|
316
|
+
keyholder keys;
|
|
317
|
+
// see https://stackoverflow.com/questions/34596768/stdunordered-mapfind-using-a-type-different-than-the-key-type
|
|
318
|
+
static keytype conv(std::string_view const str) {
|
|
319
|
+
auto p=std::make_unique<char[]>(str.size()+1);
|
|
320
|
+
std::memcpy(p.get(), str.data(), str.size());
|
|
321
|
+
//the string_view might be a view of a longer string, so the last char might not be null
|
|
322
|
+
p[str.size()]='\0';
|
|
323
|
+
return p;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
public:
|
|
327
|
+
|
|
328
|
+
FastStringUnorderedMap() = default;
|
|
329
|
+
FastStringUnorderedMap(std::initializer_list<std::pair<const std::string_view,T>> init) {
|
|
330
|
+
for(const auto & c : init) {
|
|
331
|
+
(*this)[c.first]=c.second;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
T& operator[]( const std::string_view & key ) {
|
|
336
|
+
auto f=map.find(key);
|
|
337
|
+
if(f!=map.end()) {
|
|
338
|
+
return f->second;
|
|
339
|
+
}
|
|
340
|
+
keys.push_back(conv(key));
|
|
341
|
+
return map[keys.back().get()];
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
auto begin() noexcept {
|
|
345
|
+
return map.begin();
|
|
346
|
+
}
|
|
347
|
+
auto end() noexcept {
|
|
348
|
+
return map.end();
|
|
349
|
+
}
|
|
350
|
+
auto begin() const noexcept {
|
|
351
|
+
return map.begin();
|
|
352
|
+
}
|
|
353
|
+
auto end() const noexcept {
|
|
354
|
+
return map.end();
|
|
355
|
+
}
|
|
356
|
+
auto find(const std::string_view & key) {
|
|
357
|
+
return map.find(key);
|
|
358
|
+
}
|
|
359
|
+
auto find(const std::string_view & key) const {
|
|
360
|
+
return map.find(key);
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
/// Utility to create named critical sections
|
|
365
|
+
/// Key should be usable in a std::map
|
|
366
|
+
template<class Key>
|
|
367
|
+
class CriticalSectionWithKey {
|
|
368
|
+
std::mutex mutex;
|
|
369
|
+
std::condition_variable notify;
|
|
370
|
+
std::map<Key, int> in_progress;
|
|
371
|
+
public:
|
|
372
|
+
void start(const Key & key) {
|
|
373
|
+
std::unique_lock<std::mutex> lock(mutex);
|
|
374
|
+
while (in_progress[key] > 0) {
|
|
375
|
+
// Wait if this command is already in progress.
|
|
376
|
+
notify.wait(lock);
|
|
377
|
+
}
|
|
378
|
+
// Mark this command as in progress.
|
|
379
|
+
in_progress[key]++;
|
|
380
|
+
}
|
|
381
|
+
void stop(const Key & key) {
|
|
382
|
+
std::unique_lock<std::mutex> lock(mutex);
|
|
383
|
+
// Mark this command as completed.
|
|
384
|
+
in_progress[key]--;
|
|
385
|
+
// Notify other threads that may be waiting for this command to complete.
|
|
386
|
+
notify.notify_all();
|
|
387
|
+
}
|
|
388
|
+
class Handler {
|
|
389
|
+
CriticalSectionWithKey* section{nullptr};
|
|
390
|
+
Key key;
|
|
391
|
+
Handler(CriticalSectionWithKey* mysection,const Key& mykey):
|
|
392
|
+
section(mysection),
|
|
393
|
+
key(mykey) {
|
|
394
|
+
section->start(key);
|
|
395
|
+
}
|
|
396
|
+
friend class CriticalSectionWithKey;
|
|
397
|
+
public:
|
|
398
|
+
/// Default constructor
|
|
399
|
+
Handler() = default;
|
|
400
|
+
/// Default copy constructor is deleted (not copyable)
|
|
401
|
+
Handler(const Handler & handler) = delete;
|
|
402
|
+
/// Default copy assignment is deleted (not copyable)
|
|
403
|
+
Handler & operator=(const Handler & handler) = delete;
|
|
404
|
+
/// Move constructor.
|
|
405
|
+
Handler(Handler && handler) noexcept :
|
|
406
|
+
section(handler.section),
|
|
407
|
+
key(std::move(handler.key)) {
|
|
408
|
+
handler.section=nullptr;
|
|
409
|
+
};
|
|
410
|
+
/// Move assignment.
|
|
411
|
+
Handler & operator=(Handler && handler) noexcept {
|
|
412
|
+
if(this!=&handler) {
|
|
413
|
+
if(section) {
|
|
414
|
+
section->stop(key);
|
|
415
|
+
}
|
|
416
|
+
section=handler.section;
|
|
417
|
+
key=std::move(handler.key);
|
|
418
|
+
}
|
|
419
|
+
handler.section=nullptr;
|
|
420
|
+
return *this;
|
|
421
|
+
}
|
|
422
|
+
/// Destructor
|
|
423
|
+
~Handler() {
|
|
424
|
+
if(section) {
|
|
425
|
+
section->stop(key);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
};
|
|
429
|
+
|
|
430
|
+
Handler startStop(const Key & key) {
|
|
431
|
+
return Handler(this,key);
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
};
|
|
435
|
+
///Correct the "escape sequences" from regexes to be compatible with the json format
|
|
436
|
+
///
|
|
437
|
+
///C++ wants a raw string (like `R"<<(content)<<"`) for the regexes
|
|
438
|
+
///and the python package json (and the json format itself actually)
|
|
439
|
+
/// wants the various '\' to be escaped with and '\' becasue the interpreter tries
|
|
440
|
+
/// to read anything that begins with '\' as an escape sequence (it does not know that it is an input for a regex)
|
|
441
|
+
///
|
|
442
|
+
/// For example '\n' will not cause an error but it will be intepreted as and explicit newline, so we we want '\\n' in the json
|
|
443
|
+
/// whereas '\.' will cause an erron when read by python
|
|
444
|
+
static std::string convertRegexForJson (const std::string& command);
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
template <class T>
|
|
448
|
+
bool Tools::parse(std::vector<std::string>&line,
|
|
449
|
+
const std::string&key,
|
|
450
|
+
T&val,
|
|
451
|
+
int rep) {
|
|
452
|
+
std::string s;
|
|
453
|
+
if(!getKey(line,key+"=",s,rep)) {
|
|
454
|
+
return false;
|
|
455
|
+
}
|
|
456
|
+
if(s.length()>0 && !convertNoexcept(s,val)) {
|
|
457
|
+
return false;
|
|
458
|
+
}
|
|
459
|
+
return true;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
template <class T>
|
|
463
|
+
bool Tools::parse(std::string_view argument,
|
|
464
|
+
T&val) {
|
|
465
|
+
//NOTE: this expects the '@replica:' on the argument to be resolved by the caller
|
|
466
|
+
return argument.length()>0 && convertNoexcept(std::string(argument),val);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
template <class T>
|
|
470
|
+
bool Tools::parseVector(std::vector<std::string>&line,const std::string&key,std::vector<T>&val,int rep) {
|
|
471
|
+
std::string argument;
|
|
472
|
+
if(!getKey(line,key+"=",argument,rep)) {
|
|
473
|
+
return false;
|
|
474
|
+
}
|
|
475
|
+
val.clear();
|
|
476
|
+
//needs to get the parenteses
|
|
477
|
+
std::vector<std::string> argWords=getWords(argument,"\t\n ,");
|
|
478
|
+
val.reserve(argWords.size());
|
|
479
|
+
for(unsigned i=0; i<argWords.size(); ++i) {
|
|
480
|
+
T v;
|
|
481
|
+
std::string s=argWords[i];
|
|
482
|
+
if(rep>=0 && startWith(s,replicaToken)) {
|
|
483
|
+
s=s.substr(replicaToken.length(),s.length());
|
|
484
|
+
std::vector<std::string> words=getWords(s,"\t\n ,");
|
|
485
|
+
plumed_assert(rep<static_cast<int>(words.size()));
|
|
486
|
+
s=words[rep];
|
|
487
|
+
}
|
|
488
|
+
if(!convertNoexcept(s,v)) {
|
|
489
|
+
return false;
|
|
490
|
+
}
|
|
491
|
+
val.push_back(v);
|
|
492
|
+
}
|
|
493
|
+
return true;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
template <class T>
|
|
497
|
+
bool Tools::parseVector(
|
|
498
|
+
const std::string_view argument,
|
|
499
|
+
std::vector<T>&val,
|
|
500
|
+
int rep) {
|
|
501
|
+
//NOTE: this expects the '@replica' on the argument of the whole vector to be resolved by the caller
|
|
502
|
+
val.clear();
|
|
503
|
+
gch::small_vector<std::string_view> words;
|
|
504
|
+
getWordsSimple(words,argument,"\t\n ,");
|
|
505
|
+
val.reserve(words.size());
|
|
506
|
+
for(unsigned i=0; i<words.size(); ++i) {
|
|
507
|
+
T v;
|
|
508
|
+
auto s=std::string(unravelReplicas(words[i],rep));
|
|
509
|
+
// The erase/remove is there, because @ndx:{file tag} was not passing in some tests
|
|
510
|
+
s.erase(std::remove_if(s.begin(),s.end(),
|
|
511
|
+
[](unsigned char x) {
|
|
512
|
+
switch (x) {
|
|
513
|
+
case '{':
|
|
514
|
+
case '}':
|
|
515
|
+
return true;
|
|
516
|
+
}
|
|
517
|
+
return false;
|
|
518
|
+
}),s.end());
|
|
519
|
+
if(!convertNoexcept(s,v)) {
|
|
520
|
+
return false;
|
|
521
|
+
}
|
|
522
|
+
val.push_back(v);
|
|
523
|
+
}
|
|
524
|
+
return true;
|
|
525
|
+
}
|
|
526
|
+
template<typename T>
|
|
527
|
+
void Tools::removeDuplicates(std::vector<T>& vec) {
|
|
528
|
+
std::sort(vec.begin(), vec.end());
|
|
529
|
+
vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
inline
|
|
533
|
+
bool Tools::parseFlag(std::vector<std::string>&line,const std::string&key,bool&val) {
|
|
534
|
+
for(auto p=line.begin(); p!=line.end(); ++p) {
|
|
535
|
+
if(key==*p) {
|
|
536
|
+
val=true;
|
|
537
|
+
line.erase(p);
|
|
538
|
+
return true;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
return false;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
/// beware: this brings any number into a pbc that ranges from -0.5 to 0.5
|
|
545
|
+
inline
|
|
546
|
+
double Tools::pbc(double x) {
|
|
547
|
+
#ifdef __PLUMED_PBC_WHILE
|
|
548
|
+
while (x>0.5) {
|
|
549
|
+
x-=1.0;
|
|
550
|
+
}
|
|
551
|
+
while (x<-0.5) {
|
|
552
|
+
x+=1.0;
|
|
553
|
+
}
|
|
554
|
+
return x;
|
|
555
|
+
#else
|
|
556
|
+
if constexpr (std::numeric_limits<int>::round_style == std::round_toward_zero) {
|
|
557
|
+
constexpr double offset=100.0;
|
|
558
|
+
const double y=x+offset;
|
|
559
|
+
if(y>=0) {
|
|
560
|
+
return y-int(y+0.5);
|
|
561
|
+
} else {
|
|
562
|
+
return y-int(y-0.5);
|
|
563
|
+
}
|
|
564
|
+
} else if constexpr (std::numeric_limits<int>::round_style == std::round_to_nearest) {
|
|
565
|
+
return x-int(x);
|
|
566
|
+
} else {
|
|
567
|
+
return x-floor(x+0.5);
|
|
568
|
+
}
|
|
569
|
+
#endif
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
template<typename T>
|
|
573
|
+
bool Tools::convertNoexcept(T i,std::string & str) {
|
|
574
|
+
std::ostringstream ostr;
|
|
575
|
+
ostr<<i;
|
|
576
|
+
str=ostr.str();
|
|
577
|
+
return true;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
template <typename T>
|
|
581
|
+
constexpr inline T Tools::fastpow(T base, int exp) {
|
|
582
|
+
if(exp<0) {
|
|
583
|
+
exp=-exp;
|
|
584
|
+
base=1.0/base;
|
|
585
|
+
}
|
|
586
|
+
double result = 1.0;
|
|
587
|
+
while (exp) {
|
|
588
|
+
if (exp & 1) {
|
|
589
|
+
result *= base;
|
|
590
|
+
}
|
|
591
|
+
exp >>= 1;
|
|
592
|
+
base *= base;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
return result;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
template <int exp, typename T, std::enable_if_t< (exp >=0), bool>>
|
|
599
|
+
constexpr inline T Tools::fastpow_rec(T const base, T result) {
|
|
600
|
+
if constexpr (exp == 0) {
|
|
601
|
+
return result;
|
|
602
|
+
}
|
|
603
|
+
if constexpr (exp & 1) {
|
|
604
|
+
result *= base;
|
|
605
|
+
}
|
|
606
|
+
return fastpow_rec<(exp>>1),T> (base*base, result);
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
template <int exp, typename T>
|
|
610
|
+
constexpr inline T Tools::fastpow(T const base) {
|
|
611
|
+
if constexpr (exp<0) {
|
|
612
|
+
return fastpow_rec<-exp,T>(1.0/base,1.0);
|
|
613
|
+
} else {
|
|
614
|
+
return fastpow_rec<exp,T>(base, 1.0);
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
template<typename T>
|
|
619
|
+
std::vector<T*> Tools::unique2raw(const std::vector<std::unique_ptr<T>> & x) {
|
|
620
|
+
std::vector<T*> v(x.size());
|
|
621
|
+
for(unsigned i=0; i<x.size(); i++) {
|
|
622
|
+
v[i]=x[i].get();
|
|
623
|
+
}
|
|
624
|
+
return v;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
template<typename T>
|
|
628
|
+
std::vector<const T*> Tools::unique2raw(const std::vector<std::unique_ptr<const T>> & x) {
|
|
629
|
+
std::vector<const T*> v(x.size());
|
|
630
|
+
for(unsigned i=0; i<x.size(); i++) {
|
|
631
|
+
v[i]=x[i].get();
|
|
632
|
+
}
|
|
633
|
+
return v;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
#endif
|
|
@@ -0,0 +1,55 @@
|
|
|
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_Torsion_h
|
|
23
|
+
#define __PLUMED_tools_Torsion_h
|
|
24
|
+
|
|
25
|
+
#include "Vector.h"
|
|
26
|
+
|
|
27
|
+
namespace PLMD {
|
|
28
|
+
|
|
29
|
+
/// \ingroup TOOLBOX
|
|
30
|
+
/// Class to compute torsional angles.
|
|
31
|
+
/// I define it as a class even if it does not contain anything. The reason
|
|
32
|
+
/// is that in the future I would like to extend it to contain options about
|
|
33
|
+
/// how the calculation should be done. So, for now use it as
|
|
34
|
+
/// Torsion t;
|
|
35
|
+
/// double angle=t.compute(v1,v2,v3);
|
|
36
|
+
/// I know it is a bit misleading. If we really do not need to store "options"
|
|
37
|
+
/// inside the Torsion class, we can remove it later and write compute as
|
|
38
|
+
/// a static function.
|
|
39
|
+
class Torsion {
|
|
40
|
+
// still empty, but may accommodate some options in the future
|
|
41
|
+
public:
|
|
42
|
+
/// Compute the angle between the projections of v1 and v3 on the plane orthogonal
|
|
43
|
+
/// to v2. To have a "normal" definition (= plumed1), use it as
|
|
44
|
+
/// compute(r01,r12,r23);
|
|
45
|
+
/// See ColvarTorsion for a practical usage...
|
|
46
|
+
#pragma acc routine seq
|
|
47
|
+
double compute(const Vector& v1,const Vector& v2,const Vector& v3)const;
|
|
48
|
+
/// This is the version which also computes the derivatives wrt the arguments.
|
|
49
|
+
#pragma acc routine seq
|
|
50
|
+
double compute(const Vector& v1,const Vector& v2,const Vector& v3,Vector& d1,Vector& d2,Vector& d3)const;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
#endif
|