hillclimber 0.1.6__cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. hillclimber/__init__.py +41 -0
  2. hillclimber/actions.py +53 -0
  3. hillclimber/analysis.py +590 -0
  4. hillclimber/biases.py +293 -0
  5. hillclimber/calc.py +22 -0
  6. hillclimber/cvs.py +1070 -0
  7. hillclimber/interfaces.py +133 -0
  8. hillclimber/metadynamics.py +416 -0
  9. hillclimber/nodes.py +6 -0
  10. hillclimber/opes.py +359 -0
  11. hillclimber/pycv.py +362 -0
  12. hillclimber/selectors.py +230 -0
  13. hillclimber/virtual_atoms.py +341 -0
  14. hillclimber-0.1.6.dist-info/METADATA +325 -0
  15. hillclimber-0.1.6.dist-info/RECORD +475 -0
  16. hillclimber-0.1.6.dist-info/WHEEL +6 -0
  17. hillclimber-0.1.6.dist-info/entry_points.txt +8 -0
  18. hillclimber-0.1.6.dist-info/licenses/LICENSE +165 -0
  19. hillclimber-0.1.6.dist-info/sboms/auditwheel.cdx.json +1 -0
  20. hillclimber.libs/libgomp-a49a47f9.so.1.0.0 +0 -0
  21. plumed/__init__.py +104 -0
  22. plumed/_lib/bin/plumed +0 -0
  23. plumed/_lib/bin/plumed-config +9 -0
  24. plumed/_lib/bin/plumed-patch +9 -0
  25. plumed/_lib/include/plumed/adjmat/AdjacencyMatrixBase.h +659 -0
  26. plumed/_lib/include/plumed/adjmat/ContactMatrix.h +59 -0
  27. plumed/_lib/include/plumed/asmjit/arch.h +228 -0
  28. plumed/_lib/include/plumed/asmjit/arm.h +43 -0
  29. plumed/_lib/include/plumed/asmjit/asmjit.h +69 -0
  30. plumed/_lib/include/plumed/asmjit/asmjit_apibegin.h +143 -0
  31. plumed/_lib/include/plumed/asmjit/asmjit_apiend.h +93 -0
  32. plumed/_lib/include/plumed/asmjit/asmjit_build.h +971 -0
  33. plumed/_lib/include/plumed/asmjit/assembler.h +183 -0
  34. plumed/_lib/include/plumed/asmjit/base.h +56 -0
  35. plumed/_lib/include/plumed/asmjit/codebuilder.h +944 -0
  36. plumed/_lib/include/plumed/asmjit/codecompiler.h +767 -0
  37. plumed/_lib/include/plumed/asmjit/codeemitter.h +528 -0
  38. plumed/_lib/include/plumed/asmjit/codeholder.h +777 -0
  39. plumed/_lib/include/plumed/asmjit/constpool.h +286 -0
  40. plumed/_lib/include/plumed/asmjit/cpuinfo.h +402 -0
  41. plumed/_lib/include/plumed/asmjit/func.h +1327 -0
  42. plumed/_lib/include/plumed/asmjit/globals.h +370 -0
  43. plumed/_lib/include/plumed/asmjit/inst.h +137 -0
  44. plumed/_lib/include/plumed/asmjit/logging.h +317 -0
  45. plumed/_lib/include/plumed/asmjit/misc_p.h +103 -0
  46. plumed/_lib/include/plumed/asmjit/moved_string.h +318 -0
  47. plumed/_lib/include/plumed/asmjit/operand.h +1599 -0
  48. plumed/_lib/include/plumed/asmjit/osutils.h +207 -0
  49. plumed/_lib/include/plumed/asmjit/regalloc_p.h +597 -0
  50. plumed/_lib/include/plumed/asmjit/runtime.h +227 -0
  51. plumed/_lib/include/plumed/asmjit/simdtypes.h +1104 -0
  52. plumed/_lib/include/plumed/asmjit/utils.h +1387 -0
  53. plumed/_lib/include/plumed/asmjit/vmem.h +183 -0
  54. plumed/_lib/include/plumed/asmjit/x86.h +45 -0
  55. plumed/_lib/include/plumed/asmjit/x86assembler.h +125 -0
  56. plumed/_lib/include/plumed/asmjit/x86builder.h +117 -0
  57. plumed/_lib/include/plumed/asmjit/x86compiler.h +322 -0
  58. plumed/_lib/include/plumed/asmjit/x86emitter.h +5149 -0
  59. plumed/_lib/include/plumed/asmjit/x86globals.h +535 -0
  60. plumed/_lib/include/plumed/asmjit/x86inst.h +2547 -0
  61. plumed/_lib/include/plumed/asmjit/x86instimpl_p.h +74 -0
  62. plumed/_lib/include/plumed/asmjit/x86internal_p.h +108 -0
  63. plumed/_lib/include/plumed/asmjit/x86logging_p.h +92 -0
  64. plumed/_lib/include/plumed/asmjit/x86misc.h +417 -0
  65. plumed/_lib/include/plumed/asmjit/x86operand.h +1133 -0
  66. plumed/_lib/include/plumed/asmjit/x86regalloc_p.h +734 -0
  67. plumed/_lib/include/plumed/asmjit/zone.h +1157 -0
  68. plumed/_lib/include/plumed/bias/Bias.h +82 -0
  69. plumed/_lib/include/plumed/bias/ReweightBase.h +58 -0
  70. plumed/_lib/include/plumed/blas/blas.h +253 -0
  71. plumed/_lib/include/plumed/blas/def_external.h +61 -0
  72. plumed/_lib/include/plumed/blas/def_internal.h +97 -0
  73. plumed/_lib/include/plumed/blas/real.h +49 -0
  74. plumed/_lib/include/plumed/cltools/CLTool.h +32 -0
  75. plumed/_lib/include/plumed/clusters/ClusteringBase.h +70 -0
  76. plumed/_lib/include/plumed/colvar/Colvar.h +32 -0
  77. plumed/_lib/include/plumed/colvar/ColvarInput.h +68 -0
  78. plumed/_lib/include/plumed/colvar/ColvarShortcut.h +81 -0
  79. plumed/_lib/include/plumed/colvar/CoordinationBase.h +52 -0
  80. plumed/_lib/include/plumed/colvar/MultiColvarTemplate.h +333 -0
  81. plumed/_lib/include/plumed/colvar/PathMSDBase.h +101 -0
  82. plumed/_lib/include/plumed/colvar/RMSDVector.h +78 -0
  83. plumed/_lib/include/plumed/config/Config.h +118 -0
  84. plumed/_lib/include/plumed/config/version.h +9 -0
  85. plumed/_lib/include/plumed/contour/ContourFindingObject.h +87 -0
  86. plumed/_lib/include/plumed/contour/DistanceFromContourBase.h +82 -0
  87. plumed/_lib/include/plumed/contour/FindContour.h +67 -0
  88. plumed/_lib/include/plumed/core/Action.h +540 -0
  89. plumed/_lib/include/plumed/core/ActionAnyorder.h +48 -0
  90. plumed/_lib/include/plumed/core/ActionAtomistic.h +343 -0
  91. plumed/_lib/include/plumed/core/ActionForInterface.h +99 -0
  92. plumed/_lib/include/plumed/core/ActionPilot.h +57 -0
  93. plumed/_lib/include/plumed/core/ActionRegister.h +124 -0
  94. plumed/_lib/include/plumed/core/ActionSet.h +163 -0
  95. plumed/_lib/include/plumed/core/ActionSetup.h +48 -0
  96. plumed/_lib/include/plumed/core/ActionShortcut.h +73 -0
  97. plumed/_lib/include/plumed/core/ActionToGetData.h +59 -0
  98. plumed/_lib/include/plumed/core/ActionToPutData.h +101 -0
  99. plumed/_lib/include/plumed/core/ActionWithArguments.h +140 -0
  100. plumed/_lib/include/plumed/core/ActionWithMatrix.h +87 -0
  101. plumed/_lib/include/plumed/core/ActionWithValue.h +258 -0
  102. plumed/_lib/include/plumed/core/ActionWithVector.h +94 -0
  103. plumed/_lib/include/plumed/core/ActionWithVirtualAtom.h +123 -0
  104. plumed/_lib/include/plumed/core/CLTool.h +177 -0
  105. plumed/_lib/include/plumed/core/CLToolMain.h +102 -0
  106. plumed/_lib/include/plumed/core/CLToolRegister.h +108 -0
  107. plumed/_lib/include/plumed/core/Colvar.h +115 -0
  108. plumed/_lib/include/plumed/core/DataPassingObject.h +94 -0
  109. plumed/_lib/include/plumed/core/DataPassingTools.h +54 -0
  110. plumed/_lib/include/plumed/core/DomainDecomposition.h +120 -0
  111. plumed/_lib/include/plumed/core/ExchangePatterns.h +47 -0
  112. plumed/_lib/include/plumed/core/FlexibleBin.h +63 -0
  113. plumed/_lib/include/plumed/core/GREX.h +61 -0
  114. plumed/_lib/include/plumed/core/GenericMolInfo.h +89 -0
  115. plumed/_lib/include/plumed/core/Group.h +41 -0
  116. plumed/_lib/include/plumed/core/ModuleMap.h +30 -0
  117. plumed/_lib/include/plumed/core/ParallelTaskManager.h +1023 -0
  118. plumed/_lib/include/plumed/core/PbcAction.h +61 -0
  119. plumed/_lib/include/plumed/core/PlumedMain.h +632 -0
  120. plumed/_lib/include/plumed/core/PlumedMainInitializer.h +118 -0
  121. plumed/_lib/include/plumed/core/RegisterBase.h +340 -0
  122. plumed/_lib/include/plumed/core/TargetDist.h +48 -0
  123. plumed/_lib/include/plumed/core/Value.h +547 -0
  124. plumed/_lib/include/plumed/core/WithCmd.h +93 -0
  125. plumed/_lib/include/plumed/dimred/SMACOF.h +55 -0
  126. plumed/_lib/include/plumed/drr/DRR.h +383 -0
  127. plumed/_lib/include/plumed/drr/colvar_UIestimator.h +777 -0
  128. plumed/_lib/include/plumed/fisst/legendre_rule_fast.h +44 -0
  129. plumed/_lib/include/plumed/function/Custom.h +54 -0
  130. plumed/_lib/include/plumed/function/Function.h +85 -0
  131. plumed/_lib/include/plumed/function/FunctionOfMatrix.h +368 -0
  132. plumed/_lib/include/plumed/function/FunctionOfScalar.h +135 -0
  133. plumed/_lib/include/plumed/function/FunctionOfVector.h +296 -0
  134. plumed/_lib/include/plumed/function/FunctionSetup.h +180 -0
  135. plumed/_lib/include/plumed/function/FunctionShortcut.h +130 -0
  136. plumed/_lib/include/plumed/function/FunctionWithSingleArgument.h +165 -0
  137. plumed/_lib/include/plumed/gridtools/ActionWithGrid.h +43 -0
  138. plumed/_lib/include/plumed/gridtools/EvaluateGridFunction.h +99 -0
  139. plumed/_lib/include/plumed/gridtools/FunctionOfGrid.h +295 -0
  140. plumed/_lib/include/plumed/gridtools/GridCoordinatesObject.h +179 -0
  141. plumed/_lib/include/plumed/gridtools/GridSearch.h +135 -0
  142. plumed/_lib/include/plumed/gridtools/Interpolator.h +45 -0
  143. plumed/_lib/include/plumed/gridtools/KDE.h +455 -0
  144. plumed/_lib/include/plumed/gridtools/RDF.h +40 -0
  145. plumed/_lib/include/plumed/gridtools/SumOfKernels.h +219 -0
  146. plumed/_lib/include/plumed/isdb/MetainferenceBase.h +398 -0
  147. plumed/_lib/include/plumed/lapack/def_external.h +207 -0
  148. plumed/_lib/include/plumed/lapack/def_internal.h +388 -0
  149. plumed/_lib/include/plumed/lapack/lapack.h +899 -0
  150. plumed/_lib/include/plumed/lapack/lapack_limits.h +79 -0
  151. plumed/_lib/include/plumed/lapack/real.h +50 -0
  152. plumed/_lib/include/plumed/lepton/CompiledExpression.h +164 -0
  153. plumed/_lib/include/plumed/lepton/CustomFunction.h +143 -0
  154. plumed/_lib/include/plumed/lepton/Exception.h +93 -0
  155. plumed/_lib/include/plumed/lepton/ExpressionProgram.h +137 -0
  156. plumed/_lib/include/plumed/lepton/ExpressionTreeNode.h +145 -0
  157. plumed/_lib/include/plumed/lepton/Lepton.h +85 -0
  158. plumed/_lib/include/plumed/lepton/MSVC_erfc.h +123 -0
  159. plumed/_lib/include/plumed/lepton/Operation.h +1302 -0
  160. plumed/_lib/include/plumed/lepton/ParsedExpression.h +165 -0
  161. plumed/_lib/include/plumed/lepton/Parser.h +111 -0
  162. plumed/_lib/include/plumed/lepton/windowsIncludes.h +73 -0
  163. plumed/_lib/include/plumed/mapping/Path.h +44 -0
  164. plumed/_lib/include/plumed/mapping/PathProjectionCalculator.h +57 -0
  165. plumed/_lib/include/plumed/matrixtools/MatrixOperationBase.h +54 -0
  166. plumed/_lib/include/plumed/matrixtools/MatrixTimesMatrix.h +309 -0
  167. plumed/_lib/include/plumed/matrixtools/MatrixTimesVectorBase.h +365 -0
  168. plumed/_lib/include/plumed/matrixtools/OuterProduct.h +238 -0
  169. plumed/_lib/include/plumed/maze/Core.h +65 -0
  170. plumed/_lib/include/plumed/maze/Loss.h +86 -0
  171. plumed/_lib/include/plumed/maze/Member.h +66 -0
  172. plumed/_lib/include/plumed/maze/Memetic.h +799 -0
  173. plumed/_lib/include/plumed/maze/Optimizer.h +357 -0
  174. plumed/_lib/include/plumed/maze/Random_MT.h +156 -0
  175. plumed/_lib/include/plumed/maze/Tools.h +183 -0
  176. plumed/_lib/include/plumed/metatomic/vesin.h +188 -0
  177. plumed/_lib/include/plumed/molfile/Gromacs.h +2013 -0
  178. plumed/_lib/include/plumed/molfile/endianswap.h +217 -0
  179. plumed/_lib/include/plumed/molfile/fastio.h +683 -0
  180. plumed/_lib/include/plumed/molfile/largefiles.h +78 -0
  181. plumed/_lib/include/plumed/molfile/libmolfile_plugin.h +77 -0
  182. plumed/_lib/include/plumed/molfile/molfile_plugin.h +1034 -0
  183. plumed/_lib/include/plumed/molfile/periodic_table.h +248 -0
  184. plumed/_lib/include/plumed/molfile/readpdb.h +447 -0
  185. plumed/_lib/include/plumed/molfile/vmdplugin.h +236 -0
  186. plumed/_lib/include/plumed/multicolvar/MultiColvarShortcuts.h +45 -0
  187. plumed/_lib/include/plumed/opes/ExpansionCVs.h +79 -0
  188. plumed/_lib/include/plumed/sasa/Sasa.h +32 -0
  189. plumed/_lib/include/plumed/secondarystructure/SecondaryStructureBase.h +372 -0
  190. plumed/_lib/include/plumed/setup/ActionSetup.h +25 -0
  191. plumed/_lib/include/plumed/small_vector/small_vector.h +6114 -0
  192. plumed/_lib/include/plumed/symfunc/CoordinationNumbers.h +41 -0
  193. plumed/_lib/include/plumed/tools/Angle.h +52 -0
  194. plumed/_lib/include/plumed/tools/AtomDistribution.h +138 -0
  195. plumed/_lib/include/plumed/tools/AtomNumber.h +152 -0
  196. plumed/_lib/include/plumed/tools/BiasRepresentation.h +106 -0
  197. plumed/_lib/include/plumed/tools/BitmaskEnum.h +167 -0
  198. plumed/_lib/include/plumed/tools/Brent1DRootSearch.h +159 -0
  199. plumed/_lib/include/plumed/tools/CheckInRange.h +44 -0
  200. plumed/_lib/include/plumed/tools/Citations.h +74 -0
  201. plumed/_lib/include/plumed/tools/ColvarOutput.h +118 -0
  202. plumed/_lib/include/plumed/tools/Communicator.h +316 -0
  203. plumed/_lib/include/plumed/tools/ConjugateGradient.h +80 -0
  204. plumed/_lib/include/plumed/tools/DLLoader.h +79 -0
  205. plumed/_lib/include/plumed/tools/ERMSD.h +73 -0
  206. plumed/_lib/include/plumed/tools/Exception.h +406 -0
  207. plumed/_lib/include/plumed/tools/File.h +28 -0
  208. plumed/_lib/include/plumed/tools/FileBase.h +153 -0
  209. plumed/_lib/include/plumed/tools/FileTools.h +37 -0
  210. plumed/_lib/include/plumed/tools/ForwardDecl.h +54 -0
  211. plumed/_lib/include/plumed/tools/Grid.h +638 -0
  212. plumed/_lib/include/plumed/tools/HistogramBead.h +136 -0
  213. plumed/_lib/include/plumed/tools/IFile.h +117 -0
  214. plumed/_lib/include/plumed/tools/KernelFunctions.h +113 -0
  215. plumed/_lib/include/plumed/tools/Keywords.h +380 -0
  216. plumed/_lib/include/plumed/tools/LatticeReduction.h +66 -0
  217. plumed/_lib/include/plumed/tools/LeptonCall.h +64 -0
  218. plumed/_lib/include/plumed/tools/LinkCells.h +126 -0
  219. plumed/_lib/include/plumed/tools/Log.h +41 -0
  220. plumed/_lib/include/plumed/tools/LoopUnroller.h +163 -0
  221. plumed/_lib/include/plumed/tools/Matrix.h +721 -0
  222. plumed/_lib/include/plumed/tools/MatrixSquareBracketsAccess.h +138 -0
  223. plumed/_lib/include/plumed/tools/MergeVectorTools.h +153 -0
  224. plumed/_lib/include/plumed/tools/Minimise1DBrent.h +244 -0
  225. plumed/_lib/include/plumed/tools/MinimiseBase.h +120 -0
  226. plumed/_lib/include/plumed/tools/MolDataClass.h +51 -0
  227. plumed/_lib/include/plumed/tools/NeighborList.h +112 -0
  228. plumed/_lib/include/plumed/tools/OFile.h +286 -0
  229. plumed/_lib/include/plumed/tools/OpenACC.h +180 -0
  230. plumed/_lib/include/plumed/tools/OpenMP.h +75 -0
  231. plumed/_lib/include/plumed/tools/PDB.h +154 -0
  232. plumed/_lib/include/plumed/tools/Pbc.h +139 -0
  233. plumed/_lib/include/plumed/tools/PlumedHandle.h +105 -0
  234. plumed/_lib/include/plumed/tools/RMSD.h +493 -0
  235. plumed/_lib/include/plumed/tools/Random.h +80 -0
  236. plumed/_lib/include/plumed/tools/RootFindingBase.h +79 -0
  237. plumed/_lib/include/plumed/tools/Stopwatch.h +475 -0
  238. plumed/_lib/include/plumed/tools/Subprocess.h +142 -0
  239. plumed/_lib/include/plumed/tools/SwitchingFunction.h +208 -0
  240. plumed/_lib/include/plumed/tools/Tensor.h +724 -0
  241. plumed/_lib/include/plumed/tools/TokenizedLine.h +123 -0
  242. plumed/_lib/include/plumed/tools/Tools.h +638 -0
  243. plumed/_lib/include/plumed/tools/Torsion.h +55 -0
  244. plumed/_lib/include/plumed/tools/TrajectoryParser.h +118 -0
  245. plumed/_lib/include/plumed/tools/Tree.h +61 -0
  246. plumed/_lib/include/plumed/tools/TypesafePtr.h +463 -0
  247. plumed/_lib/include/plumed/tools/Units.h +167 -0
  248. plumed/_lib/include/plumed/tools/Vector.h +433 -0
  249. plumed/_lib/include/plumed/tools/View.h +296 -0
  250. plumed/_lib/include/plumed/tools/View2D.h +100 -0
  251. plumed/_lib/include/plumed/tools/h36.h +39 -0
  252. plumed/_lib/include/plumed/vatom/ActionWithVirtualAtom.h +32 -0
  253. plumed/_lib/include/plumed/ves/BasisFunctions.h +380 -0
  254. plumed/_lib/include/plumed/ves/CoeffsBase.h +310 -0
  255. plumed/_lib/include/plumed/ves/CoeffsMatrix.h +220 -0
  256. plumed/_lib/include/plumed/ves/CoeffsVector.h +251 -0
  257. plumed/_lib/include/plumed/ves/FermiSwitchingFunction.h +74 -0
  258. plumed/_lib/include/plumed/ves/GridIntegrationWeights.h +50 -0
  259. plumed/_lib/include/plumed/ves/GridLinearInterpolation.h +81 -0
  260. plumed/_lib/include/plumed/ves/GridProjWeights.h +61 -0
  261. plumed/_lib/include/plumed/ves/LinearBasisSetExpansion.h +303 -0
  262. plumed/_lib/include/plumed/ves/Optimizer.h +444 -0
  263. plumed/_lib/include/plumed/ves/TargetDistModifer.h +53 -0
  264. plumed/_lib/include/plumed/ves/TargetDistribution.h +266 -0
  265. plumed/_lib/include/plumed/ves/VesBias.h +545 -0
  266. plumed/_lib/include/plumed/ves/VesTools.h +142 -0
  267. plumed/_lib/include/plumed/ves/WaveletGrid.h +75 -0
  268. plumed/_lib/include/plumed/volumes/ActionVolume.h +268 -0
  269. plumed/_lib/include/plumed/volumes/VolumeShortcut.h +147 -0
  270. plumed/_lib/include/plumed/wrapper/Plumed.h +5025 -0
  271. plumed/_lib/include/plumed/xdrfile/xdrfile.h +663 -0
  272. plumed/_lib/include/plumed/xdrfile/xdrfile_trr.h +89 -0
  273. plumed/_lib/include/plumed/xdrfile/xdrfile_xtc.h +90 -0
  274. plumed/_lib/lib/PythonCVInterface.so +0 -0
  275. plumed/_lib/lib/libplumed.a +0 -0
  276. plumed/_lib/lib/libplumed.so +0 -0
  277. plumed/_lib/lib/libplumedKernel.so +0 -0
  278. plumed/_lib/lib/libplumedWrapper.a +0 -0
  279. plumed/_lib/lib/pkgconfig/plumed.pc +13 -0
  280. plumed/_lib/lib/pkgconfig/plumedInternals.pc +13 -0
  281. plumed/_lib/lib/pkgconfig/plumedWrapper.pc +13 -0
  282. plumed/_lib/lib/plumed/fortran/plumed.f90 +879 -0
  283. plumed/_lib/lib/plumed/fortran/plumed_f08.f90 +2625 -0
  284. plumed/_lib/lib/plumed/modulefile +69 -0
  285. plumed/_lib/lib/plumed/patches/gromacs-2022.5.config +43 -0
  286. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt +543 -0
  287. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt.preplumed +540 -0
  288. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp +1628 -0
  289. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1590 -0
  290. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h +103 -0
  291. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h.preplumed +99 -0
  292. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp +2527 -0
  293. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2513 -0
  294. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
  295. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
  296. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +408 -0
  297. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +394 -0
  298. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp +2348 -0
  299. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2091 -0
  300. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp +3573 -0
  301. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3495 -0
  302. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1506 -0
  303. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1402 -0
  304. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
  305. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
  306. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp +997 -0
  307. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +906 -0
  308. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp +2780 -0
  309. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2738 -0
  310. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
  311. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
  312. plumed/_lib/lib/plumed/patches/gromacs-2023.5.config +43 -0
  313. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt +549 -0
  314. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt.preplumed +546 -0
  315. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
  316. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
  317. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h +104 -0
  318. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
  319. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp +2624 -0
  320. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2610 -0
  321. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
  322. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
  323. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +409 -0
  324. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +395 -0
  325. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp +2419 -0
  326. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2164 -0
  327. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp +3546 -0
  328. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3468 -0
  329. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
  330. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
  331. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
  332. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
  333. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp +991 -0
  334. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +900 -0
  335. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp +2895 -0
  336. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2849 -0
  337. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
  338. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
  339. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp +886 -0
  340. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +880 -0
  341. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +347 -0
  342. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +345 -0
  343. plumed/_lib/lib/plumed/patches/gromacs-2024.3.config +43 -0
  344. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt +575 -0
  345. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt.preplumed +572 -0
  346. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
  347. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
  348. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h +104 -0
  349. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
  350. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp +2564 -0
  351. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2550 -0
  352. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
  353. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
  354. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h +410 -0
  355. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +396 -0
  356. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp +2435 -0
  357. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp.preplumed +2187 -0
  358. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp +3592 -0
  359. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3514 -0
  360. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
  361. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
  362. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
  363. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
  364. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp +958 -0
  365. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp.preplumed +929 -0
  366. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp +2987 -0
  367. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp.preplumed +2941 -0
  368. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
  369. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
  370. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp +904 -0
  371. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +898 -0
  372. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +353 -0
  373. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +351 -0
  374. plumed/_lib/lib/plumed/patches/gromacs-2025.0.config +39 -0
  375. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake +82 -0
  376. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake.preplumed +82 -0
  377. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp +162 -0
  378. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp.preplumed +154 -0
  379. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp +107 -0
  380. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp.preplumed +99 -0
  381. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h +120 -0
  382. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h.preplumed +111 -0
  383. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp +215 -0
  384. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp.preplumed +197 -0
  385. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h +87 -0
  386. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h.preplumed +86 -0
  387. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp +2971 -0
  388. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp.preplumed +2970 -0
  389. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h +430 -0
  390. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h.preplumed +429 -0
  391. plumed/_lib/lib/plumed/patches/namd-2.12.config +30 -0
  392. plumed/_lib/lib/plumed/patches/namd-2.12.diff +267 -0
  393. plumed/_lib/lib/plumed/patches/namd-2.13.config +30 -0
  394. plumed/_lib/lib/plumed/patches/namd-2.13.diff +267 -0
  395. plumed/_lib/lib/plumed/patches/namd-2.14.config +30 -0
  396. plumed/_lib/lib/plumed/patches/namd-2.14.diff +268 -0
  397. plumed/_lib/lib/plumed/patches/patch.sh +500 -0
  398. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.config +25 -0
  399. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90 +368 -0
  400. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90.preplumed +366 -0
  401. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90 +71 -0
  402. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90.preplumed +24 -0
  403. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90 +62 -0
  404. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  405. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90 +189 -0
  406. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90.preplumed +185 -0
  407. plumed/_lib/lib/plumed/patches/qespresso-6.2.config +26 -0
  408. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90 +422 -0
  409. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90.preplumed +420 -0
  410. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90 +70 -0
  411. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
  412. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90 +62 -0
  413. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  414. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90 +233 -0
  415. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90.preplumed +230 -0
  416. plumed/_lib/lib/plumed/patches/qespresso-7.0.config +28 -0
  417. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile +175 -0
  418. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile.preplumed +171 -0
  419. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90 +486 -0
  420. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90.preplumed +484 -0
  421. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90 +74 -0
  422. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
  423. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90 +64 -0
  424. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  425. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90 +532 -0
  426. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90.preplumed +518 -0
  427. plumed/_lib/lib/plumed/patches/qespresso-7.2.config +28 -0
  428. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile +249 -0
  429. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile.preplumed +244 -0
  430. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90 +532 -0
  431. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90.preplumed +535 -0
  432. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90 +74 -0
  433. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
  434. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90 +64 -0
  435. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  436. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90 +569 -0
  437. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90.preplumed +560 -0
  438. plumed/_lib/lib/plumed/plumed-config +9 -0
  439. plumed/_lib/lib/plumed/plumed-mklib +9 -0
  440. plumed/_lib/lib/plumed/plumed-newcv +9 -0
  441. plumed/_lib/lib/plumed/plumed-partial_tempering +9 -0
  442. plumed/_lib/lib/plumed/plumed-patch +9 -0
  443. plumed/_lib/lib/plumed/plumed-runtime +0 -0
  444. plumed/_lib/lib/plumed/plumed-selector +9 -0
  445. plumed/_lib/lib/plumed/plumed-vim2html +9 -0
  446. plumed/_lib/lib/plumed/scripts/config.sh +126 -0
  447. plumed/_lib/lib/plumed/scripts/mklib.sh +175 -0
  448. plumed/_lib/lib/plumed/scripts/newcv.sh +26 -0
  449. plumed/_lib/lib/plumed/scripts/partial_tempering.sh +319 -0
  450. plumed/_lib/lib/plumed/scripts/patch.sh +4 -0
  451. plumed/_lib/lib/plumed/scripts/selector.sh +234 -0
  452. plumed/_lib/lib/plumed/scripts/vim2html.sh +190 -0
  453. plumed/_lib/lib/plumed/src/colvar/Template.cpp +116 -0
  454. plumed/_lib/lib/plumed/src/config/compile_options.sh +3 -0
  455. plumed/_lib/lib/plumed/src/config/config.txt +179 -0
  456. plumed/_lib/lib/plumed/src/lib/Plumed.cmake +8 -0
  457. plumed/_lib/lib/plumed/src/lib/Plumed.cmake.runtime +5 -0
  458. plumed/_lib/lib/plumed/src/lib/Plumed.cmake.shared +5 -0
  459. plumed/_lib/lib/plumed/src/lib/Plumed.cmake.static +5 -0
  460. plumed/_lib/lib/plumed/src/lib/Plumed.inc +8 -0
  461. plumed/_lib/lib/plumed/src/lib/Plumed.inc.runtime +5 -0
  462. plumed/_lib/lib/plumed/src/lib/Plumed.inc.shared +5 -0
  463. plumed/_lib/lib/plumed/src/lib/Plumed.inc.static +5 -0
  464. plumed/_lib/lib/plumed/vim/scripts.vim +6 -0
  465. plumed/_plumed_core.cpython-311-aarch64-linux-gnu.so +0 -0
  466. plumed/_plumed_core.cpython-312-aarch64-linux-gnu.so +0 -0
  467. plumed/_plumed_core.cpython-313-aarch64-linux-gnu.so +0 -0
  468. plumed/_plumed_core.cpython-314-aarch64-linux-gnu.so +0 -0
  469. plumed/_plumed_core.cpython-314t-aarch64-linux-gnu.so +0 -0
  470. plumedCommunications.cpython-311-aarch64-linux-gnu.so +0 -0
  471. plumedCommunications.cpython-312-aarch64-linux-gnu.so +0 -0
  472. plumedCommunications.cpython-313-aarch64-linux-gnu.so +0 -0
  473. plumedCommunications.cpython-314-aarch64-linux-gnu.so +0 -0
  474. plumedCommunications.cpython-314t-aarch64-linux-gnu.so +0 -0
  475. 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