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.
Files changed (469) hide show
  1. hillclimber/__init__.py +39 -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 +1065 -0
  7. hillclimber/interfaces.py +133 -0
  8. hillclimber/metadynamics.py +325 -0
  9. hillclimber/nodes.py +6 -0
  10. hillclimber/opes.py +359 -0
  11. hillclimber/selectors.py +230 -0
  12. hillclimber/virtual_atoms.py +341 -0
  13. hillclimber-0.1.5a8.dist-info/METADATA +209 -0
  14. hillclimber-0.1.5a8.dist-info/RECORD +469 -0
  15. hillclimber-0.1.5a8.dist-info/WHEEL +6 -0
  16. hillclimber-0.1.5a8.dist-info/entry_points.txt +8 -0
  17. hillclimber-0.1.5a8.dist-info/licenses/LICENSE +165 -0
  18. plumed/__init__.py +104 -0
  19. plumed/_lib/bin/plumed +0 -0
  20. plumed/_lib/bin/plumed-config +9 -0
  21. plumed/_lib/bin/plumed-patch +9 -0
  22. plumed/_lib/include/plumed/adjmat/AdjacencyMatrixBase.h +659 -0
  23. plumed/_lib/include/plumed/adjmat/ContactMatrix.h +59 -0
  24. plumed/_lib/include/plumed/asmjit/arch.h +228 -0
  25. plumed/_lib/include/plumed/asmjit/arm.h +43 -0
  26. plumed/_lib/include/plumed/asmjit/asmjit.h +69 -0
  27. plumed/_lib/include/plumed/asmjit/asmjit_apibegin.h +143 -0
  28. plumed/_lib/include/plumed/asmjit/asmjit_apiend.h +93 -0
  29. plumed/_lib/include/plumed/asmjit/asmjit_build.h +971 -0
  30. plumed/_lib/include/plumed/asmjit/assembler.h +183 -0
  31. plumed/_lib/include/plumed/asmjit/base.h +56 -0
  32. plumed/_lib/include/plumed/asmjit/codebuilder.h +944 -0
  33. plumed/_lib/include/plumed/asmjit/codecompiler.h +767 -0
  34. plumed/_lib/include/plumed/asmjit/codeemitter.h +528 -0
  35. plumed/_lib/include/plumed/asmjit/codeholder.h +777 -0
  36. plumed/_lib/include/plumed/asmjit/constpool.h +286 -0
  37. plumed/_lib/include/plumed/asmjit/cpuinfo.h +402 -0
  38. plumed/_lib/include/plumed/asmjit/func.h +1327 -0
  39. plumed/_lib/include/plumed/asmjit/globals.h +370 -0
  40. plumed/_lib/include/plumed/asmjit/inst.h +137 -0
  41. plumed/_lib/include/plumed/asmjit/logging.h +317 -0
  42. plumed/_lib/include/plumed/asmjit/misc_p.h +103 -0
  43. plumed/_lib/include/plumed/asmjit/moved_string.h +318 -0
  44. plumed/_lib/include/plumed/asmjit/operand.h +1599 -0
  45. plumed/_lib/include/plumed/asmjit/osutils.h +207 -0
  46. plumed/_lib/include/plumed/asmjit/regalloc_p.h +597 -0
  47. plumed/_lib/include/plumed/asmjit/runtime.h +227 -0
  48. plumed/_lib/include/plumed/asmjit/simdtypes.h +1104 -0
  49. plumed/_lib/include/plumed/asmjit/utils.h +1387 -0
  50. plumed/_lib/include/plumed/asmjit/vmem.h +183 -0
  51. plumed/_lib/include/plumed/asmjit/x86.h +45 -0
  52. plumed/_lib/include/plumed/asmjit/x86assembler.h +125 -0
  53. plumed/_lib/include/plumed/asmjit/x86builder.h +117 -0
  54. plumed/_lib/include/plumed/asmjit/x86compiler.h +322 -0
  55. plumed/_lib/include/plumed/asmjit/x86emitter.h +5149 -0
  56. plumed/_lib/include/plumed/asmjit/x86globals.h +535 -0
  57. plumed/_lib/include/plumed/asmjit/x86inst.h +2547 -0
  58. plumed/_lib/include/plumed/asmjit/x86instimpl_p.h +74 -0
  59. plumed/_lib/include/plumed/asmjit/x86internal_p.h +108 -0
  60. plumed/_lib/include/plumed/asmjit/x86logging_p.h +92 -0
  61. plumed/_lib/include/plumed/asmjit/x86misc.h +417 -0
  62. plumed/_lib/include/plumed/asmjit/x86operand.h +1133 -0
  63. plumed/_lib/include/plumed/asmjit/x86regalloc_p.h +734 -0
  64. plumed/_lib/include/plumed/asmjit/zone.h +1157 -0
  65. plumed/_lib/include/plumed/bias/Bias.h +82 -0
  66. plumed/_lib/include/plumed/bias/ReweightBase.h +58 -0
  67. plumed/_lib/include/plumed/blas/blas.h +253 -0
  68. plumed/_lib/include/plumed/blas/def_external.h +61 -0
  69. plumed/_lib/include/plumed/blas/def_internal.h +97 -0
  70. plumed/_lib/include/plumed/blas/real.h +49 -0
  71. plumed/_lib/include/plumed/cltools/CLTool.h +32 -0
  72. plumed/_lib/include/plumed/clusters/ClusteringBase.h +70 -0
  73. plumed/_lib/include/plumed/colvar/Colvar.h +32 -0
  74. plumed/_lib/include/plumed/colvar/ColvarInput.h +68 -0
  75. plumed/_lib/include/plumed/colvar/ColvarShortcut.h +81 -0
  76. plumed/_lib/include/plumed/colvar/CoordinationBase.h +52 -0
  77. plumed/_lib/include/plumed/colvar/MultiColvarTemplate.h +333 -0
  78. plumed/_lib/include/plumed/colvar/PathMSDBase.h +101 -0
  79. plumed/_lib/include/plumed/colvar/RMSDVector.h +78 -0
  80. plumed/_lib/include/plumed/config/Config.h +118 -0
  81. plumed/_lib/include/plumed/config/version.h +9 -0
  82. plumed/_lib/include/plumed/contour/ContourFindingObject.h +87 -0
  83. plumed/_lib/include/plumed/contour/DistanceFromContourBase.h +82 -0
  84. plumed/_lib/include/plumed/contour/FindContour.h +67 -0
  85. plumed/_lib/include/plumed/core/Action.h +540 -0
  86. plumed/_lib/include/plumed/core/ActionAnyorder.h +48 -0
  87. plumed/_lib/include/plumed/core/ActionAtomistic.h +343 -0
  88. plumed/_lib/include/plumed/core/ActionForInterface.h +99 -0
  89. plumed/_lib/include/plumed/core/ActionPilot.h +57 -0
  90. plumed/_lib/include/plumed/core/ActionRegister.h +124 -0
  91. plumed/_lib/include/plumed/core/ActionSet.h +163 -0
  92. plumed/_lib/include/plumed/core/ActionSetup.h +48 -0
  93. plumed/_lib/include/plumed/core/ActionShortcut.h +73 -0
  94. plumed/_lib/include/plumed/core/ActionToGetData.h +59 -0
  95. plumed/_lib/include/plumed/core/ActionToPutData.h +101 -0
  96. plumed/_lib/include/plumed/core/ActionWithArguments.h +140 -0
  97. plumed/_lib/include/plumed/core/ActionWithMatrix.h +87 -0
  98. plumed/_lib/include/plumed/core/ActionWithValue.h +258 -0
  99. plumed/_lib/include/plumed/core/ActionWithVector.h +94 -0
  100. plumed/_lib/include/plumed/core/ActionWithVirtualAtom.h +123 -0
  101. plumed/_lib/include/plumed/core/CLTool.h +177 -0
  102. plumed/_lib/include/plumed/core/CLToolMain.h +102 -0
  103. plumed/_lib/include/plumed/core/CLToolRegister.h +108 -0
  104. plumed/_lib/include/plumed/core/Colvar.h +115 -0
  105. plumed/_lib/include/plumed/core/DataPassingObject.h +94 -0
  106. plumed/_lib/include/plumed/core/DataPassingTools.h +54 -0
  107. plumed/_lib/include/plumed/core/DomainDecomposition.h +120 -0
  108. plumed/_lib/include/plumed/core/ExchangePatterns.h +47 -0
  109. plumed/_lib/include/plumed/core/FlexibleBin.h +63 -0
  110. plumed/_lib/include/plumed/core/GREX.h +61 -0
  111. plumed/_lib/include/plumed/core/GenericMolInfo.h +89 -0
  112. plumed/_lib/include/plumed/core/Group.h +41 -0
  113. plumed/_lib/include/plumed/core/ModuleMap.h +30 -0
  114. plumed/_lib/include/plumed/core/ParallelTaskManager.h +1023 -0
  115. plumed/_lib/include/plumed/core/PbcAction.h +61 -0
  116. plumed/_lib/include/plumed/core/PlumedMain.h +632 -0
  117. plumed/_lib/include/plumed/core/PlumedMainInitializer.h +118 -0
  118. plumed/_lib/include/plumed/core/RegisterBase.h +340 -0
  119. plumed/_lib/include/plumed/core/TargetDist.h +48 -0
  120. plumed/_lib/include/plumed/core/Value.h +547 -0
  121. plumed/_lib/include/plumed/core/WithCmd.h +93 -0
  122. plumed/_lib/include/plumed/dimred/SMACOF.h +55 -0
  123. plumed/_lib/include/plumed/drr/DRR.h +383 -0
  124. plumed/_lib/include/plumed/drr/colvar_UIestimator.h +777 -0
  125. plumed/_lib/include/plumed/fisst/legendre_rule_fast.h +44 -0
  126. plumed/_lib/include/plumed/function/Custom.h +54 -0
  127. plumed/_lib/include/plumed/function/Function.h +85 -0
  128. plumed/_lib/include/plumed/function/FunctionOfMatrix.h +368 -0
  129. plumed/_lib/include/plumed/function/FunctionOfScalar.h +135 -0
  130. plumed/_lib/include/plumed/function/FunctionOfVector.h +296 -0
  131. plumed/_lib/include/plumed/function/FunctionSetup.h +180 -0
  132. plumed/_lib/include/plumed/function/FunctionShortcut.h +130 -0
  133. plumed/_lib/include/plumed/function/FunctionWithSingleArgument.h +165 -0
  134. plumed/_lib/include/plumed/gridtools/ActionWithGrid.h +43 -0
  135. plumed/_lib/include/plumed/gridtools/EvaluateGridFunction.h +99 -0
  136. plumed/_lib/include/plumed/gridtools/FunctionOfGrid.h +295 -0
  137. plumed/_lib/include/plumed/gridtools/GridCoordinatesObject.h +179 -0
  138. plumed/_lib/include/plumed/gridtools/GridSearch.h +135 -0
  139. plumed/_lib/include/plumed/gridtools/Interpolator.h +45 -0
  140. plumed/_lib/include/plumed/gridtools/KDE.h +455 -0
  141. plumed/_lib/include/plumed/gridtools/RDF.h +40 -0
  142. plumed/_lib/include/plumed/gridtools/SumOfKernels.h +219 -0
  143. plumed/_lib/include/plumed/isdb/MetainferenceBase.h +398 -0
  144. plumed/_lib/include/plumed/lapack/def_external.h +207 -0
  145. plumed/_lib/include/plumed/lapack/def_internal.h +388 -0
  146. plumed/_lib/include/plumed/lapack/lapack.h +899 -0
  147. plumed/_lib/include/plumed/lapack/lapack_limits.h +79 -0
  148. plumed/_lib/include/plumed/lapack/real.h +50 -0
  149. plumed/_lib/include/plumed/lepton/CompiledExpression.h +164 -0
  150. plumed/_lib/include/plumed/lepton/CustomFunction.h +143 -0
  151. plumed/_lib/include/plumed/lepton/Exception.h +93 -0
  152. plumed/_lib/include/plumed/lepton/ExpressionProgram.h +137 -0
  153. plumed/_lib/include/plumed/lepton/ExpressionTreeNode.h +145 -0
  154. plumed/_lib/include/plumed/lepton/Lepton.h +85 -0
  155. plumed/_lib/include/plumed/lepton/MSVC_erfc.h +123 -0
  156. plumed/_lib/include/plumed/lepton/Operation.h +1302 -0
  157. plumed/_lib/include/plumed/lepton/ParsedExpression.h +165 -0
  158. plumed/_lib/include/plumed/lepton/Parser.h +111 -0
  159. plumed/_lib/include/plumed/lepton/windowsIncludes.h +73 -0
  160. plumed/_lib/include/plumed/mapping/Path.h +44 -0
  161. plumed/_lib/include/plumed/mapping/PathProjectionCalculator.h +57 -0
  162. plumed/_lib/include/plumed/matrixtools/MatrixOperationBase.h +54 -0
  163. plumed/_lib/include/plumed/matrixtools/MatrixTimesMatrix.h +309 -0
  164. plumed/_lib/include/plumed/matrixtools/MatrixTimesVectorBase.h +365 -0
  165. plumed/_lib/include/plumed/matrixtools/OuterProduct.h +238 -0
  166. plumed/_lib/include/plumed/maze/Core.h +65 -0
  167. plumed/_lib/include/plumed/maze/Loss.h +86 -0
  168. plumed/_lib/include/plumed/maze/Member.h +66 -0
  169. plumed/_lib/include/plumed/maze/Memetic.h +799 -0
  170. plumed/_lib/include/plumed/maze/Optimizer.h +357 -0
  171. plumed/_lib/include/plumed/maze/Random_MT.h +156 -0
  172. plumed/_lib/include/plumed/maze/Tools.h +183 -0
  173. plumed/_lib/include/plumed/metatomic/vesin.h +188 -0
  174. plumed/_lib/include/plumed/molfile/Gromacs.h +2013 -0
  175. plumed/_lib/include/plumed/molfile/endianswap.h +217 -0
  176. plumed/_lib/include/plumed/molfile/fastio.h +683 -0
  177. plumed/_lib/include/plumed/molfile/largefiles.h +78 -0
  178. plumed/_lib/include/plumed/molfile/libmolfile_plugin.h +77 -0
  179. plumed/_lib/include/plumed/molfile/molfile_plugin.h +1034 -0
  180. plumed/_lib/include/plumed/molfile/periodic_table.h +248 -0
  181. plumed/_lib/include/plumed/molfile/readpdb.h +447 -0
  182. plumed/_lib/include/plumed/molfile/vmdplugin.h +236 -0
  183. plumed/_lib/include/plumed/multicolvar/MultiColvarShortcuts.h +45 -0
  184. plumed/_lib/include/plumed/opes/ExpansionCVs.h +79 -0
  185. plumed/_lib/include/plumed/sasa/Sasa.h +32 -0
  186. plumed/_lib/include/plumed/secondarystructure/SecondaryStructureBase.h +372 -0
  187. plumed/_lib/include/plumed/setup/ActionSetup.h +25 -0
  188. plumed/_lib/include/plumed/small_vector/small_vector.h +6114 -0
  189. plumed/_lib/include/plumed/symfunc/CoordinationNumbers.h +41 -0
  190. plumed/_lib/include/plumed/tools/Angle.h +52 -0
  191. plumed/_lib/include/plumed/tools/AtomDistribution.h +138 -0
  192. plumed/_lib/include/plumed/tools/AtomNumber.h +152 -0
  193. plumed/_lib/include/plumed/tools/BiasRepresentation.h +106 -0
  194. plumed/_lib/include/plumed/tools/BitmaskEnum.h +167 -0
  195. plumed/_lib/include/plumed/tools/Brent1DRootSearch.h +159 -0
  196. plumed/_lib/include/plumed/tools/CheckInRange.h +44 -0
  197. plumed/_lib/include/plumed/tools/Citations.h +74 -0
  198. plumed/_lib/include/plumed/tools/ColvarOutput.h +118 -0
  199. plumed/_lib/include/plumed/tools/Communicator.h +316 -0
  200. plumed/_lib/include/plumed/tools/ConjugateGradient.h +80 -0
  201. plumed/_lib/include/plumed/tools/DLLoader.h +79 -0
  202. plumed/_lib/include/plumed/tools/ERMSD.h +73 -0
  203. plumed/_lib/include/plumed/tools/Exception.h +406 -0
  204. plumed/_lib/include/plumed/tools/File.h +28 -0
  205. plumed/_lib/include/plumed/tools/FileBase.h +153 -0
  206. plumed/_lib/include/plumed/tools/FileTools.h +37 -0
  207. plumed/_lib/include/plumed/tools/ForwardDecl.h +54 -0
  208. plumed/_lib/include/plumed/tools/Grid.h +638 -0
  209. plumed/_lib/include/plumed/tools/HistogramBead.h +136 -0
  210. plumed/_lib/include/plumed/tools/IFile.h +117 -0
  211. plumed/_lib/include/plumed/tools/KernelFunctions.h +113 -0
  212. plumed/_lib/include/plumed/tools/Keywords.h +380 -0
  213. plumed/_lib/include/plumed/tools/LatticeReduction.h +66 -0
  214. plumed/_lib/include/plumed/tools/LeptonCall.h +64 -0
  215. plumed/_lib/include/plumed/tools/LinkCells.h +126 -0
  216. plumed/_lib/include/plumed/tools/Log.h +41 -0
  217. plumed/_lib/include/plumed/tools/LoopUnroller.h +163 -0
  218. plumed/_lib/include/plumed/tools/Matrix.h +721 -0
  219. plumed/_lib/include/plumed/tools/MatrixSquareBracketsAccess.h +138 -0
  220. plumed/_lib/include/plumed/tools/MergeVectorTools.h +153 -0
  221. plumed/_lib/include/plumed/tools/Minimise1DBrent.h +244 -0
  222. plumed/_lib/include/plumed/tools/MinimiseBase.h +120 -0
  223. plumed/_lib/include/plumed/tools/MolDataClass.h +51 -0
  224. plumed/_lib/include/plumed/tools/NeighborList.h +112 -0
  225. plumed/_lib/include/plumed/tools/OFile.h +286 -0
  226. plumed/_lib/include/plumed/tools/OpenACC.h +180 -0
  227. plumed/_lib/include/plumed/tools/OpenMP.h +75 -0
  228. plumed/_lib/include/plumed/tools/PDB.h +154 -0
  229. plumed/_lib/include/plumed/tools/Pbc.h +139 -0
  230. plumed/_lib/include/plumed/tools/PlumedHandle.h +105 -0
  231. plumed/_lib/include/plumed/tools/RMSD.h +493 -0
  232. plumed/_lib/include/plumed/tools/Random.h +80 -0
  233. plumed/_lib/include/plumed/tools/RootFindingBase.h +79 -0
  234. plumed/_lib/include/plumed/tools/Stopwatch.h +475 -0
  235. plumed/_lib/include/plumed/tools/Subprocess.h +142 -0
  236. plumed/_lib/include/plumed/tools/SwitchingFunction.h +208 -0
  237. plumed/_lib/include/plumed/tools/Tensor.h +724 -0
  238. plumed/_lib/include/plumed/tools/TokenizedLine.h +123 -0
  239. plumed/_lib/include/plumed/tools/Tools.h +638 -0
  240. plumed/_lib/include/plumed/tools/Torsion.h +55 -0
  241. plumed/_lib/include/plumed/tools/TrajectoryParser.h +118 -0
  242. plumed/_lib/include/plumed/tools/Tree.h +61 -0
  243. plumed/_lib/include/plumed/tools/TypesafePtr.h +463 -0
  244. plumed/_lib/include/plumed/tools/Units.h +167 -0
  245. plumed/_lib/include/plumed/tools/Vector.h +433 -0
  246. plumed/_lib/include/plumed/tools/View.h +296 -0
  247. plumed/_lib/include/plumed/tools/View2D.h +100 -0
  248. plumed/_lib/include/plumed/tools/h36.h +39 -0
  249. plumed/_lib/include/plumed/vatom/ActionWithVirtualAtom.h +32 -0
  250. plumed/_lib/include/plumed/ves/BasisFunctions.h +380 -0
  251. plumed/_lib/include/plumed/ves/CoeffsBase.h +310 -0
  252. plumed/_lib/include/plumed/ves/CoeffsMatrix.h +220 -0
  253. plumed/_lib/include/plumed/ves/CoeffsVector.h +251 -0
  254. plumed/_lib/include/plumed/ves/FermiSwitchingFunction.h +74 -0
  255. plumed/_lib/include/plumed/ves/GridIntegrationWeights.h +50 -0
  256. plumed/_lib/include/plumed/ves/GridLinearInterpolation.h +81 -0
  257. plumed/_lib/include/plumed/ves/GridProjWeights.h +61 -0
  258. plumed/_lib/include/plumed/ves/LinearBasisSetExpansion.h +303 -0
  259. plumed/_lib/include/plumed/ves/Optimizer.h +444 -0
  260. plumed/_lib/include/plumed/ves/TargetDistModifer.h +53 -0
  261. plumed/_lib/include/plumed/ves/TargetDistribution.h +266 -0
  262. plumed/_lib/include/plumed/ves/VesBias.h +545 -0
  263. plumed/_lib/include/plumed/ves/VesTools.h +142 -0
  264. plumed/_lib/include/plumed/ves/WaveletGrid.h +75 -0
  265. plumed/_lib/include/plumed/volumes/ActionVolume.h +268 -0
  266. plumed/_lib/include/plumed/volumes/VolumeShortcut.h +147 -0
  267. plumed/_lib/include/plumed/wrapper/Plumed.h +5025 -0
  268. plumed/_lib/include/plumed/xdrfile/xdrfile.h +663 -0
  269. plumed/_lib/include/plumed/xdrfile/xdrfile_trr.h +89 -0
  270. plumed/_lib/include/plumed/xdrfile/xdrfile_xtc.h +90 -0
  271. plumed/_lib/lib/PythonCVInterface.dylib +0 -0
  272. plumed/_lib/lib/libplumed.dylib +0 -0
  273. plumed/_lib/lib/libplumedKernel.dylib +0 -0
  274. plumed/_lib/lib/libplumedWrapper.a +0 -0
  275. plumed/_lib/lib/pkgconfig/plumed.pc +13 -0
  276. plumed/_lib/lib/pkgconfig/plumedInternals.pc +13 -0
  277. plumed/_lib/lib/pkgconfig/plumedWrapper.pc +13 -0
  278. plumed/_lib/lib/plumed/fortran/plumed.f90 +879 -0
  279. plumed/_lib/lib/plumed/fortran/plumed_f08.f90 +2625 -0
  280. plumed/_lib/lib/plumed/modulefile +69 -0
  281. plumed/_lib/lib/plumed/patches/gromacs-2022.5.config +43 -0
  282. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt +543 -0
  283. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/CMakeLists.txt.preplumed +540 -0
  284. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp +1628 -0
  285. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1590 -0
  286. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h +103 -0
  287. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/expanded.h.preplumed +99 -0
  288. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp +2527 -0
  289. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2513 -0
  290. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
  291. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
  292. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +408 -0
  293. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +394 -0
  294. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp +2348 -0
  295. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2091 -0
  296. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp +3573 -0
  297. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3495 -0
  298. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1506 -0
  299. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1402 -0
  300. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
  301. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
  302. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp +997 -0
  303. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +906 -0
  304. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp +2780 -0
  305. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2738 -0
  306. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
  307. plumed/_lib/lib/plumed/patches/gromacs-2022.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
  308. plumed/_lib/lib/plumed/patches/gromacs-2023.5.config +43 -0
  309. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt +549 -0
  310. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/CMakeLists.txt.preplumed +546 -0
  311. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
  312. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
  313. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h +104 -0
  314. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
  315. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp +2624 -0
  316. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2610 -0
  317. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
  318. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
  319. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h +409 -0
  320. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +395 -0
  321. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp +2419 -0
  322. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/md.cpp.preplumed +2164 -0
  323. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp +3546 -0
  324. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3468 -0
  325. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
  326. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
  327. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
  328. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
  329. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp +991 -0
  330. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/rerun.cpp.preplumed +900 -0
  331. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp +2895 -0
  332. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/mdrun/runner.cpp.preplumed +2849 -0
  333. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
  334. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
  335. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp +886 -0
  336. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +880 -0
  337. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +347 -0
  338. plumed/_lib/lib/plumed/patches/gromacs-2023.5.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +345 -0
  339. plumed/_lib/lib/plumed/patches/gromacs-2024.3.config +43 -0
  340. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt +575 -0
  341. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/CMakeLists.txt.preplumed +572 -0
  342. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp +1632 -0
  343. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.cpp.preplumed +1594 -0
  344. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h +104 -0
  345. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/expanded.h.preplumed +100 -0
  346. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp +2564 -0
  347. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdlib/sim_util.cpp.preplumed +2550 -0
  348. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp +208 -0
  349. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.cpp.preplumed +175 -0
  350. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h +410 -0
  351. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/legacymdrunoptions.h.preplumed +396 -0
  352. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp +2435 -0
  353. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/md.cpp.preplumed +2187 -0
  354. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp +3592 -0
  355. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/minimize.cpp.preplumed +3514 -0
  356. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp +1513 -0
  357. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.cpp.preplumed +1409 -0
  358. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h +114 -0
  359. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/replicaexchange.h.preplumed +106 -0
  360. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp +958 -0
  361. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/rerun.cpp.preplumed +929 -0
  362. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp +2987 -0
  363. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/mdrun/runner.cpp.preplumed +2941 -0
  364. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp +224 -0
  365. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/modularsimulator/expandedensembleelement.cpp.preplumed +222 -0
  366. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp +904 -0
  367. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/decidegpuusage.cpp.preplumed +898 -0
  368. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h +353 -0
  369. plumed/_lib/lib/plumed/patches/gromacs-2024.3.diff/src/gromacs/taskassignment/include/gromacs/taskassignment/decidegpuusage.h.preplumed +351 -0
  370. plumed/_lib/lib/plumed/patches/gromacs-2025.0.config +39 -0
  371. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake +82 -0
  372. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/cmake/gmxManagePlumed.cmake.preplumed +82 -0
  373. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp +162 -0
  374. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedMDModule.cpp.preplumed +154 -0
  375. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp +107 -0
  376. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.cpp.preplumed +99 -0
  377. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h +120 -0
  378. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedOptions.h.preplumed +111 -0
  379. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp +215 -0
  380. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.cpp.preplumed +197 -0
  381. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h +87 -0
  382. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/applied_forces/plumed/plumedforceprovider.h.preplumed +86 -0
  383. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp +2971 -0
  384. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrun/runner.cpp.preplumed +2970 -0
  385. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h +430 -0
  386. plumed/_lib/lib/plumed/patches/gromacs-2025.0.diff/src/gromacs/mdrunutility/mdmodulesnotifiers.h.preplumed +429 -0
  387. plumed/_lib/lib/plumed/patches/namd-2.12.config +30 -0
  388. plumed/_lib/lib/plumed/patches/namd-2.12.diff +267 -0
  389. plumed/_lib/lib/plumed/patches/namd-2.13.config +30 -0
  390. plumed/_lib/lib/plumed/patches/namd-2.13.diff +267 -0
  391. plumed/_lib/lib/plumed/patches/namd-2.14.config +30 -0
  392. plumed/_lib/lib/plumed/patches/namd-2.14.diff +268 -0
  393. plumed/_lib/lib/plumed/patches/patch.sh +500 -0
  394. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.config +25 -0
  395. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90 +368 -0
  396. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/forces.f90.preplumed +366 -0
  397. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90 +71 -0
  398. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_forces.f90.preplumed +24 -0
  399. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90 +62 -0
  400. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  401. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90 +189 -0
  402. plumed/_lib/lib/plumed/patches/qespresso-5.0.2.diff/PW/src/pwscf.f90.preplumed +185 -0
  403. plumed/_lib/lib/plumed/patches/qespresso-6.2.config +26 -0
  404. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90 +422 -0
  405. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/forces.f90.preplumed +420 -0
  406. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90 +70 -0
  407. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
  408. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90 +62 -0
  409. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  410. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90 +233 -0
  411. plumed/_lib/lib/plumed/patches/qespresso-6.2.diff/PW/src/run_pwscf.f90.preplumed +230 -0
  412. plumed/_lib/lib/plumed/patches/qespresso-7.0.config +28 -0
  413. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile +175 -0
  414. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/Modules/Makefile.preplumed +171 -0
  415. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90 +486 -0
  416. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/forces.f90.preplumed +484 -0
  417. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90 +74 -0
  418. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
  419. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90 +64 -0
  420. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  421. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90 +532 -0
  422. plumed/_lib/lib/plumed/patches/qespresso-7.0.diff/PW/src/run_pwscf.f90.preplumed +518 -0
  423. plumed/_lib/lib/plumed/patches/qespresso-7.2.config +28 -0
  424. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile +249 -0
  425. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/Modules/Makefile.preplumed +244 -0
  426. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90 +532 -0
  427. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/forces.f90.preplumed +535 -0
  428. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90 +74 -0
  429. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_ext_forces.f90.preplumed +23 -0
  430. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90 +64 -0
  431. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/plugin_initialization.f90.preplumed +21 -0
  432. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90 +569 -0
  433. plumed/_lib/lib/plumed/patches/qespresso-7.2.diff/PW/src/run_pwscf.f90.preplumed +560 -0
  434. plumed/_lib/lib/plumed/plumed-config +9 -0
  435. plumed/_lib/lib/plumed/plumed-mklib +9 -0
  436. plumed/_lib/lib/plumed/plumed-newcv +9 -0
  437. plumed/_lib/lib/plumed/plumed-partial_tempering +9 -0
  438. plumed/_lib/lib/plumed/plumed-patch +9 -0
  439. plumed/_lib/lib/plumed/plumed-runtime +0 -0
  440. plumed/_lib/lib/plumed/plumed-selector +9 -0
  441. plumed/_lib/lib/plumed/plumed-vim2html +9 -0
  442. plumed/_lib/lib/plumed/scripts/config.sh +126 -0
  443. plumed/_lib/lib/plumed/scripts/mklib.sh +175 -0
  444. plumed/_lib/lib/plumed/scripts/newcv.sh +26 -0
  445. plumed/_lib/lib/plumed/scripts/partial_tempering.sh +319 -0
  446. plumed/_lib/lib/plumed/scripts/patch.sh +4 -0
  447. plumed/_lib/lib/plumed/scripts/selector.sh +234 -0
  448. plumed/_lib/lib/plumed/scripts/vim2html.sh +190 -0
  449. plumed/_lib/lib/plumed/src/colvar/Template.cpp +116 -0
  450. plumed/_lib/lib/plumed/src/config/compile_options.sh +3 -0
  451. plumed/_lib/lib/plumed/src/config/config.txt +181 -0
  452. plumed/_lib/lib/plumed/src/lib/Plumed.cmake +6 -0
  453. plumed/_lib/lib/plumed/src/lib/Plumed.cmake.runtime +5 -0
  454. plumed/_lib/lib/plumed/src/lib/Plumed.cmake.shared +5 -0
  455. plumed/_lib/lib/plumed/src/lib/Plumed.cmake.static +3 -0
  456. plumed/_lib/lib/plumed/src/lib/Plumed.inc +6 -0
  457. plumed/_lib/lib/plumed/src/lib/Plumed.inc.runtime +5 -0
  458. plumed/_lib/lib/plumed/src/lib/Plumed.inc.shared +5 -0
  459. plumed/_lib/lib/plumed/src/lib/Plumed.inc.static +3 -0
  460. plumed/_lib/lib/plumed/vim/scripts.vim +6 -0
  461. plumed/_plumed_core.cpython-311-darwin.so +0 -0
  462. plumed/_plumed_core.cpython-312-darwin.so +0 -0
  463. plumed/_plumed_core.cpython-313-darwin.so +0 -0
  464. plumed/_plumed_core.cpython-314-darwin.so +0 -0
  465. plumedCommunications.cpython-311-darwin.so +0 -0
  466. plumedCommunications.cpython-312-darwin.so +0 -0
  467. plumedCommunications.cpython-313-darwin.so +0 -0
  468. plumedCommunications.cpython-314-darwin.so +0 -0
  469. plumedCommunications.pyi +431 -0
@@ -0,0 +1,380 @@
1
+ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2
+ Copyright (c) 2012-2023 The plumed team
3
+ (see the PEOPLE file at the root of the distribution for a list of names)
4
+
5
+ See http://www.plumed.org for more information.
6
+
7
+ This file is part of plumed, version 2.
8
+
9
+ plumed is free software: you can redistribute it and/or modify
10
+ it under the terms of the GNU Lesser General Public License as published by
11
+ the Free Software Foundation, either version 3 of the License, or
12
+ (at your option) any later version.
13
+
14
+ plumed is distributed in the hope that it will be useful,
15
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ GNU Lesser General Public License for more details.
18
+
19
+ You should have received a copy of the GNU Lesser General Public License
20
+ along with plumed. If not, see <http://www.gnu.org/licenses/>.
21
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
22
+ #ifndef __PLUMED_tools_Keywords_h
23
+ #define __PLUMED_tools_Keywords_h
24
+ #include <vector>
25
+ #include <string>
26
+ #include <string_view>
27
+ #include <map>
28
+ #include <variant>
29
+
30
+ #include "Exception.h"
31
+ #include "BitmaskEnum.h"
32
+
33
+ namespace PLMD {
34
+
35
+ class Log;
36
+
37
+ /// This class holds the keywords and their documentation
38
+ class Keywords {
39
+ /// This class lets me pass keyword types easily
40
+ struct KeyType {
41
+ enum class keyStyle {hidden,compulsory,flag,optional,atoms,deprecated,unknown};
42
+ keyStyle style;
43
+ static keyStyle keyStyleFromString(std::string_view type );
44
+ explicit KeyType( keyStyle type );
45
+ explicit KeyType( std::string_view type );
46
+ void setStyle( std::string_view type );
47
+ bool isCompulsory() const {
48
+ return (style==keyStyle::compulsory);
49
+ }
50
+ bool isFlag() const {
51
+ return (style==keyStyle::flag);
52
+ }
53
+ bool isOptional() const {
54
+ return (style==keyStyle::optional);
55
+ }
56
+ bool isAtomList() const {
57
+ return (style==keyStyle::atoms);
58
+ }
59
+ bool isHidden() const {
60
+ return (style==keyStyle::hidden);
61
+ }
62
+ bool isDeprecated() const {
63
+ return (style==keyStyle::deprecated);
64
+ }
65
+ std::string toString() const {
66
+ //if you add a style and you forget to update this function the compiler will refuse to compile
67
+ switch(style) {
68
+ case keyStyle::compulsory:
69
+ return "compulsory";
70
+ case keyStyle::optional:
71
+ return "optional";
72
+ case keyStyle::atoms:
73
+ return "atoms";
74
+ case keyStyle::flag:
75
+ return "flag";
76
+ case keyStyle::hidden:
77
+ return "hidden";
78
+ case keyStyle::deprecated:
79
+ return "deprecated";
80
+ default:
81
+ plumed_massert(false,"unknown keyword type");
82
+ }
83
+ return "unknown";
84
+ }
85
+ };
86
+
87
+ public:
88
+ enum class argType {scalar=1,vector=1<<2,matrix=1<<3,grid=1<<4};
89
+ enum class componentType {scalar=1,vector=1<<2,matrix=1<<3,grid=1<<4,atoms=1<<5,atom=1<<6};
90
+ private:
91
+ /// Is this an action or driver (this bool affects what style==atoms does in print)
92
+ bool isaction=true;
93
+ /// This allows us to overwrite the behavior of the atoms type in analysis actions
94
+ bool isatoms=true;
95
+ /// The name of the action that has this set of keywords
96
+ std::string thisactname;
97
+ /// The action to use in place of this deprecated action
98
+ std::string replaceaction="none";
99
+
100
+ struct keyInfo {
101
+ /// Whether the keyword is compulsory, optional...
102
+ KeyType type{KeyType::keyStyle::unknown};
103
+ /// The documentation for the keyword
104
+ std::string docstring;
105
+ /// The default values (if there are default values) for compulsory keywords or flags
106
+ std::variant<std::monostate,std::string,bool> defaultValue;
107
+ ///The type of the argument if this keywords accepts arguments
108
+ std::variant<std::monostate,argType>argument_type;
109
+ /// The tags for atoms - we use this so the manual can differentiate between different ways of specifying atoms
110
+ std::string atomtag;//no noeed for optional, since the type will state if this is needed
111
+ ///This stores any action documentation that we should link to
112
+ std::string linkaction;
113
+ ///This stores any pages of doucmentation that we should link to
114
+ std::string linkpage;
115
+ /// Do we allow stuff like key1, key2 etc
116
+ bool allowmultiple;
117
+ keyInfo();
118
+ //these functions are not neeeded (this is a struct), but are useful in constructing the key
119
+ keyInfo& setType(KeyType t);
120
+ keyInfo& setDocString(std::string_view d);
121
+ keyInfo& setDefaultValue(std::string_view d);
122
+ keyInfo& setDefaultFlag(bool a);
123
+ keyInfo& setArgumentType(argType a);
124
+ keyInfo& setAllowMultiple(bool a);
125
+ keyInfo& setLinkedAction(std::string_view a);
126
+ keyInfo& setLinkedPage(std::string_view p);
127
+ bool isArgument() const;
128
+ };
129
+ ///Add o reserve a new keyword (internal tool)
130
+ void addOrReserve( std::string_view keytype, std::string_view key, std::string_view docstring, bool reserve );
131
+ //std::less<void> make some magic and makes find and [] work with string_view
132
+ /// Stores the keywords along with their settings
133
+ std::map<std::string,keyInfo,std::less<void>> keywords;
134
+ /// The names of the allowed keywords, in order of declaration
135
+ std::vector<std::string> keys;
136
+ /// The names of the reserved keywords, in order of declaration
137
+ std::vector<std::string> reserved_keys;
138
+ struct component {
139
+ /// The keyword that turns on this component
140
+ std::string key;
141
+ /// The documentation for the component
142
+ std::string docstring;
143
+ /// The type of the component
144
+ componentType type;
145
+ component();
146
+ //these functions are not neeeded (this is a struct), but are useful in constructing the component
147
+ component& setKey(std::string_view k);
148
+ component& setDocstring(std::string_view d);
149
+ component& setType(componentType t);
150
+ };
151
+ //the "exists component" is stored in the map keys
152
+ std::map<std::string,component,std::less<void>> components;
153
+ /// The string that should be printed out to describe how the components work for this particular action
154
+ std::string cstring;
155
+ /// The names of all the possible components for an action, in order of their (first) declaration
156
+ std::vector<std::string> cnames;
157
+ /// The list of actions that are needed by this action
158
+ std::vector<std::string> neededActions;
159
+ /// List of suffixes that can be used with this action
160
+ std::vector<std::string> actionNameSuffixes;
161
+ /// List of doi's that should appear in the manual
162
+ std::vector<std::string> doilist;
163
+ /// Print the documentation for the named keyword in html
164
+ void print_html_item( const std::string& ) const;
165
+ public:
166
+ /// Constructor
167
+ Keywords() {}
168
+ ///
169
+ void isDriver() {
170
+ isaction=false;
171
+ }
172
+ ///
173
+ void isAnalysis() {
174
+ isatoms=false;
175
+ }
176
+ /// find out whether flag key is on or off by default.
177
+ bool getLogicalDefault(const std::string & key, bool& def ) const ;
178
+ /// Get the value of the default for the keyword named key
179
+ bool getDefaultValue(const std::string & key, std::string& def ) const ;
180
+ /// Return the number of defined keywords
181
+ unsigned size() const;
182
+ /// Check if numbered keywords are allowed for this action
183
+ bool numbered( const std::string & k ) const;
184
+ /// Get the ordered list of active keywords (not the reserved ones)
185
+ const std::vector<std::string>& getKeys() const {
186
+ return keys;
187
+ }
188
+ //Get the ordered list of arguments
189
+ std::vector<std::string> getArgumentKeys() const;
190
+ /// Return the ith keyword
191
+ std::string getKeyword( const unsigned i ) const;
192
+ /// Get the documentation for a particular keyword
193
+ std::string getKeywordDocs( const std::string& key ) const;
194
+ /// Print the documentation to the log file (used by PLMD::Action::error)
195
+ void print( Log& log ) const ;
196
+ /// Print the documentation to a file (use by PLUMED::CLTool::readCommandLineArgs)
197
+ void print( FILE* out ) const ;
198
+ /// Get the help string
199
+ std::string getHelpString() const ;
200
+ /// Print a file containing the list of keywords for a particular action (used for spell checking)
201
+ void print_spelling() const ;
202
+ /// Reserve a keyword
203
+ void reserve( std::string_view keytype, std::string_view key, std::string_view docstring );
204
+ /// Reserve a flag
205
+ void reserveFlag( const std::string & key, bool defaultValue, const std::string & docstring );
206
+ /// Use one of the reserved keywords
207
+ void use( std::string_view k );
208
+ /// append the data from another Keywords object (**only** keywords, reserved keywords and components)
209
+ void add( const Keywords& keys );
210
+ /// Add a new keyword of type t with name k and description d
211
+ void add( std::string_view keytype, std::string_view key, std::string_view docstring );
212
+ /// Add a keyword that was used in older versions of the code and that has now been replaced
213
+ void addDeprecatedKeyword( std::string_view key, const std::string& replacement );
214
+ /// Add a flag that was used in older versions of the the code that has now been replaced
215
+ void addDeprecatedFlag( const std::string& key, const std::string& replacement );
216
+ /// Add a new compulsory keyword (t must equal compulsory) with name k, default value def and description d
217
+ void add( std::string_view keytype, std::string_view key, std::string_view defaultValue, std::string_view docstring );
218
+ /// Add a falg with name k that is by default on if def is true and off if def is false. d should provide a description of the flag
219
+ void addFlag(std::string_view key, bool defaultValue, std::string_view docstring);
220
+ /// Remove the keyword with name k
221
+ void remove( const std::string & k );
222
+ /// Check if there is a keyword with name k
223
+ bool exists( std::string_view k ) const ;
224
+ /// Check the keyword k has been reserved
225
+ bool reserved( std::string_view k ) const ;
226
+ /// Get the type for the keyword with string k
227
+ std::string getStyle(const std::string & k ) const ;
228
+ /// Check if the keyword with name k has style t
229
+ bool style( const std::string & k, const std::string & t ) const ;
230
+ /// Print an html version of the documentation
231
+ void print_html() const ;
232
+ /// Print keywords in form readable by vim
233
+ void print_vim() const ;
234
+ /// Print the template version for the documentation
235
+ void print_template( const std::string& actionname, bool include_optional) const ;
236
+ /// Change part of the style of a keyword
237
+ ///
238
+ /// The standard usecase for this method is creating a compulsory or an atom(s) numbered keyword.
239
+ /// For example:
240
+ /// @code{.cpp}
241
+ /// keys.add("numbered","ATOMS","the atoms involved in each of the contacts you wish to calculate. "
242
+ /// "Keywords like ATOMS1, ATOMS2, ATOMS3,... should be listed and one contact will be "
243
+ /// "calculated for each ATOM keyword you specify.");
244
+ /// keys.reset_style("ATOMS","atoms");
245
+ /// keys.add("numbered","SWITCH","The switching functions to use for each of the contacts in your map. "
246
+ /// "You can either specify a global switching function using SWITCH or one "
247
+ /// "switching function for each contact. Details of the various switching "
248
+ /// "functions you can use are provided on \\ref switchingfunction.");
249
+ /// keys.reset_style("SWITCH","compulsory");
250
+ /// @endcode
251
+ /// @note Note that some option of the selected keyword may not change. In particular:
252
+ /// - A numbered keyword will change the style but the keyInfo::allowmultiple
253
+ /// will remain set to `true`
254
+ /// - An eventual keyInfo::atomtag will not be changed unless the style is set to
255
+ /// an atomlist
256
+ void reset_style( const std::string & k, const std::string & style );
257
+ /// Clear everything from the keywords object.
258
+ /// Not actually needed if your Keywords object is going out of scope.
259
+ void destroyData();
260
+ /// Set the text that introduces how the components for this action are introduced
261
+ void setComponentsIntroduction( const std::string& instr );
262
+ /// Add the description of the value
263
+ void setValueDescription( const std::string& type, const std::string& descr );
264
+ /// @todo prepend[[deprecated("Please specify the data type for the argument from scalar/vector/matrix/grid with the Keywords::argType enum")]]
265
+ void setValueDescription( componentType type, const std::string& descr );
266
+ /// Add a potential component which can be output by this particular action
267
+ [[deprecated("Use addOutputComponent with four argument and specify valid types for value from scalar/vector/matrix/grid")]]
268
+ void addOutputComponent( const std::string& name, const std::string& key, const std::string& descr );
269
+ /// @todo prepend[[deprecated("Please specify the data type for the argument from scalar/vector/matrix/grid with the Keywords::argType enum")]]
270
+ void addOutputComponent( const std::string& name, const std::string& key, const std::string& type, const std::string& descr );
271
+ /// Add a potential component which can be output by this particular action
272
+ void addOutputComponent( const std::string& name, const std::string& key, componentType type, const std::string& descr );
273
+ /// Remove a component that can be output by this particular action
274
+ void removeOutputComponent( const std::string& name );
275
+ /// Has a component with this name been added?
276
+ bool outputComponentExists( const std::string& name ) const ;
277
+ /// Check that type for component has been documented correctly
278
+ bool componentHasCorrectType( const std::string& name, const std::size_t& rank, const bool& hasderiv ) const ;
279
+ /// Create the documentation for a keyword that reads arguments
280
+ /// @todo prepend [[deprecated("Please specify the data type for the argument from scalar/vector/matrix/grid with the Keywords::argType enum")]]
281
+ void addInputKeyword( const std::string & keyType, const std::string & key, const std::string & dataType, const std::string & docstring );
282
+ /// Create the documentation for a keyword that reads arguments
283
+ void addInputKeyword( const std::string & keyType, const std::string & key, argType dataType, const std::string & docstring );
284
+ /// Create the documentation for a keyword that reads arguments
285
+ /// @todo prepend[[deprecated("Please specify the data type for the argument from scalar/vector/matrix/grid with the Keywords::argType enum")]]
286
+ void addInputKeyword( const std::string & keyType, const std::string & key, const std::string & dataType, const std::string& defaultValue, const std::string & docstring );
287
+ /// Create the documentation for a keyword that reads arguments
288
+ void addInputKeyword( const std::string & keyType, const std::string & key, argType dataType, const std::string& defaultValue, const std::string & docstring );
289
+ /// Check the documentation of the argument types
290
+ bool checkArgumentType( const std::size_t& rank, const bool& hasderiv ) const ;
291
+ /// Get the valid types that can be used as argument for this keyword
292
+ std::string getArgumentType( const std::string& name ) const ;
293
+ /// Get the flag that forces thie named component to be calculated
294
+ std::string getOutputComponentFlag( const std::string& name ) const ;
295
+ /// Get the type for the named output component
296
+ std::string getOutputComponentType( const std::string& name ) const ;
297
+ /// Get the description of the named component
298
+ std::string getOutputComponentDescription( const std::string& name ) const ;
299
+ /// Get the full ordered list of output components
300
+ const std::vector<std::string>& getOutputComponents() const {
301
+ return cnames;
302
+ }
303
+ /// Get the description of a particular keyword
304
+ std::string getKeywordDescription( const std::string& name ) const ;
305
+ /// Get the description of a particular keyword
306
+ std::string getTooltip( const std::string& name ) const ;
307
+ /// Note that another actions is required to create this shortcut
308
+ void needsAction( const std::string& name );
309
+ /// Check if the requested action is in the list of the needed actions
310
+ bool isActionNeeded( std::string_view name ) const ;
311
+ /// Add a suffix to the list of possible action name suffixes
312
+ void addActionNameSuffix( const std::string& suffix );
313
+ /** @brief checks that name is is a composition of basename and one of the possible suffixes
314
+
315
+ Cycles on the registered suffixed and return true if the combination
316
+ `basename+suffix` equals to the passed name
317
+ */
318
+ bool isActionSuffixed( std::string_view name, std::string_view basename) const ;
319
+ /// Get the list of keywords that are needed by this action
320
+ const std::vector<std::string>& getNeededKeywords() const ;
321
+ /// Return the name of the action that has this set of keywords
322
+ std::string getDisplayName() const ;
323
+ /// Set the display name
324
+ void setDisplayName( const std::string& name );
325
+ /// Get the action that should be used to replace this one if action has been deprecated
326
+ std::string getReplacementAction() const ;
327
+ /// Note that this action has been deprecated
328
+ void setDeprecated( const std::string& name );
329
+ /// Add a DOI to the list in the manual page for this action
330
+ void addDOI( const std::string& doi );
331
+ /// Get the list of DOI
332
+ const std::vector<std::string>& getDOIList() const ;
333
+ /// Create a link to this action in the documentation for it
334
+ void linkActionInDocs( const std::string& k, const std::string& action );
335
+ /// Create a link to this page in the documentation for a keyword
336
+ void addLinkInDocForFlag( const std::string& k, const std::string& page );
337
+ /// Get any actions that are linked to this keyword
338
+ std::string getLinkedActions( const std::string& key ) const ;
339
+ /// Get any pages that are linked to this keyword
340
+ std::string getLinkedPages( const std::string& key ) const ;
341
+ };
342
+
343
+ //the following templates specializations make the bitmask enum work with the
344
+ // bitwise operators `|`, `&` and the "valid" function (valid converts to bool the result of a "mask operation")
345
+ template<>
346
+ struct enum_traits::BitmaskEnum< Keywords::componentType > {
347
+ static constexpr bool has_valid = true;
348
+ static constexpr bool has_bit_or = true;
349
+ static constexpr bool has_bit_and = true;
350
+ };
351
+
352
+ template<>
353
+ struct enum_traits::BitmaskEnum< Keywords::argType > {
354
+ static constexpr bool has_valid = true;
355
+ static constexpr bool has_bit_or = true;
356
+ static constexpr bool has_bit_and = true;
357
+ };
358
+
359
+ std::string toString(Keywords::argType at);
360
+ /**
361
+ * Converts a string to the corresponding Keywords::argType.
362
+ *
363
+ * @param str The string to convert.
364
+ * @return The Keywords::argType corresponding to the string.
365
+ * @throws std::invalid_argument If the string does not match any enum value.
366
+ */
367
+ Keywords::argType stoat(std::string_view str);
368
+ std::string toString(Keywords::componentType at);
369
+
370
+ /**
371
+ * Converts a string to the corresponding Keywords::componentType.
372
+ * @param str The string to convert.
373
+ * @return The Keywords::componentType corresponding to the string.
374
+ * @throws std::invalid_argument if the string does not match any enum value.
375
+ */
376
+ Keywords::componentType stoct(std::string_view str) ;
377
+
378
+ } // namespace PLMD
379
+
380
+ #endif
@@ -0,0 +1,66 @@
1
+ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2
+ Copyright (c) 2012-2023 The plumed team
3
+ (see the PEOPLE file at the root of the distribution for a list of names)
4
+
5
+ See http://www.plumed.org for more information.
6
+
7
+ This file is part of plumed, version 2.
8
+
9
+ plumed is free software: you can redistribute it and/or modify
10
+ it under the terms of the GNU Lesser General Public License as published by
11
+ the Free Software Foundation, either version 3 of the License, or
12
+ (at your option) any later version.
13
+
14
+ plumed is distributed in the hope that it will be useful,
15
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ GNU Lesser General Public License for more details.
18
+
19
+ You should have received a copy of the GNU Lesser General Public License
20
+ along with plumed. If not, see <http://www.gnu.org/licenses/>.
21
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
22
+ #ifndef __PLUMED_tools_LatticeReduction_h
23
+ #define __PLUMED_tools_LatticeReduction_h
24
+
25
+ #include "Vector.h"
26
+ #include "Tensor.h"
27
+
28
+ namespace PLMD {
29
+
30
+ /**
31
+ Class implementing algorithms for lattice reduction.
32
+
33
+ This class implements algorithms described in
34
+ Igor Semaev, A 3-Dimensional Lattice Reduction Algorithm, CaLC 2001, LNCS 2146, pp. 181–193, 2001.
35
+ It just collect static methods in a separate namespace.
36
+ */
37
+ class LatticeReduction {
38
+ /// Gaussian reduction
39
+ static void reduce(Vector&a,Vector&b);
40
+ /// Obtain three reduce-2 vectors (Algorithm 1 in the paper), equivalent to reduce2(Tensor&t)
41
+ static void reduce2(Vector&a,Vector&b,Vector&c);
42
+ /// Check if two vectors are reduced
43
+ static bool isReduced(const Vector&a,const Vector&b);
44
+ /// Check if three vectors are reduced
45
+ static bool isReduced(const Vector&a,const Vector&b,const Vector &c);
46
+ /// Check if three vectors are reduced-2
47
+ static bool isReduced2(const Vector&a,const Vector&b,const Vector &c);
48
+ /// Obtain three reduce-2 vectors (Algorithm 1 in the paper), equivalent to reduce2(Vector&a,Vector&b,Vector&c)
49
+ static void reduce2(Tensor&t);
50
+ /// Sort three vectors by modulo
51
+ static void sort(Vector v[3]);
52
+ public:
53
+ /// Reduce a basis in place, maps to reduceFast()
54
+ static void reduce(Tensor&t);
55
+ /// Reduce a basis in place using the slow algorithm (Algorithm 2 in the paper)
56
+ static void reduceSlow(Tensor&t);
57
+ /// Reduce a basis in place using the fast algorithm (Algorithm 3 in the paper)
58
+ static void reduceFast(Tensor&t);
59
+ /// Check if a basis is reduced
60
+ static bool isReduced(const Tensor&t);
61
+ };
62
+
63
+ }
64
+
65
+ #endif
66
+
@@ -0,0 +1,64 @@
1
+ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2
+ Copyright (c) 2012-2023 The plumed team
3
+ (see the PEOPLE file at the root of the distribution for a list of names)
4
+
5
+ See http://www.plumed.org for more information.
6
+
7
+ This file is part of plumed, version 2.
8
+
9
+ plumed is free software: you can redistribute it and/or modify
10
+ it under the terms of the GNU Lesser General Public License as published by
11
+ the Free Software Foundation, either version 3 of the License, or
12
+ (at your option) any later version.
13
+
14
+ plumed is distributed in the hope that it will be useful,
15
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ GNU Lesser General Public License for more details.
18
+
19
+ You should have received a copy of the GNU Lesser General Public License
20
+ along with plumed. If not, see <http://www.gnu.org/licenses/>.
21
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
22
+ #ifndef __PLUMED_tools_LeptonCall_h
23
+ #define __PLUMED_tools_LeptonCall_h
24
+
25
+ #include "../core/Action.h"
26
+ #include "../lepton/Lepton.h"
27
+ #include "View.h"
28
+
29
+ namespace PLMD {
30
+
31
+ /// \ingroup TOOLBOX
32
+ class LeptonCall {
33
+ private:
34
+ unsigned nargs;
35
+ bool allow_extra_args;
36
+ /// Lepton expression.
37
+ /// \warning Since lepton::CompiledExpression is mutable, a vector is necessary for multithreading!
38
+ std::vector<lepton::CompiledExpression> expression;
39
+ /// Lepton expression for derivative
40
+ /// \warning Since lepton::CompiledExpression is mutable, a vector is necessary for multithreading!
41
+ std::vector<std::vector<lepton::CompiledExpression> > expression_deriv;
42
+ std::vector<double*> lepton_ref;
43
+ std::vector<double*> lepton_ref_deriv;
44
+ public:
45
+ void set(const std::string & func,
46
+ const std::vector<std::string>& var,
47
+ Action* action=nullptr,
48
+ bool extraArgs=false );
49
+ unsigned getNumberOfArguments() const ;
50
+ double evaluate( const std::vector<double>& args ) const ;
51
+ double evaluate( View<const double> args ) const ;
52
+ double evaluateDeriv( unsigned ider, View<const double> args ) const ;
53
+ double evaluateDeriv( unsigned ider, const std::vector<double>& args ) const ;
54
+ };
55
+
56
+ inline
57
+ unsigned LeptonCall::getNumberOfArguments() const {
58
+ return nargs;
59
+ }
60
+
61
+ }
62
+
63
+ #endif
64
+
@@ -0,0 +1,126 @@
1
+ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2
+ Copyright (c) 2014-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_LinkCells_h
23
+ #define __PLUMED_tools_LinkCells_h
24
+
25
+ #include <vector>
26
+ #include <array>
27
+ #include "View.h"
28
+ #include "Vector.h"
29
+ #include "Pbc.h"
30
+
31
+ namespace PLMD {
32
+
33
+ class Communicator;
34
+
35
+ /// \ingroup TOOLBOX
36
+ /// A class for doing link cells
37
+ class LinkCells {
38
+ private:
39
+ /// Symbolic link to plumed communicator
40
+ Communicator & comm;
41
+ /// Check that the link cells were set up correctly
42
+ bool cutoffwasset=false;
43
+ /// Are there periodic boundary conditions setup
44
+ bool nopbc=false;
45
+ /// The cutoff to use for the sizes of the cells
46
+ double link_cutoff=0.0;
47
+ /// The pbc we are using for link cells
48
+ Pbc mypbc;
49
+ /// The location of the origin if we are not using periodic boundary conditions
50
+ Vector origin;
51
+ /// The number of cells in each direction
52
+ std::array<unsigned,3> ncells{0,0,0};
53
+ /// The number of cells to stride through to get the link cells
54
+ std::array<unsigned,3> nstride{0,0,0};
55
+ /// The list of cells each atom is inside
56
+ std::vector<unsigned> allcells;
57
+ /// The start of each block corresponding to each link cell
58
+ std::vector<unsigned> lcell_starts;
59
+ /// The number of atoms in each link cell
60
+ std::vector<unsigned> lcell_tots;
61
+ /// The atoms ordered by link cells
62
+ std::vector<unsigned> lcell_lists;
63
+ public:
64
+ ///
65
+ explicit LinkCells( Communicator& comm );
66
+ /// Have the link cells been enabled
67
+ bool enabled() const ;
68
+ /// Set the value of the cutoff
69
+ void setCutoff( double lcut );
70
+ /// Get the value of the cutoff
71
+ double getCutoff() const ;
72
+ /// Get the total number of link cells
73
+ unsigned getNumberOfCells() const ;
74
+ /// Get the nuumber of atoms in the cell that contains the most atoms
75
+ unsigned getMaxInCell() const ;
76
+ /// Build the link cell lists
77
+ void buildCellLists( View<const Vector> pos,
78
+ View<const unsigned> indices,
79
+ const Pbc& pbc );
80
+ /// Take three indices and return the index of the corresponding cell
81
+ unsigned convertIndicesToIndex( unsigned nx,
82
+ unsigned ny,
83
+ unsigned nz ) const ;
84
+ /// Find the cell index in which this position is contained
85
+ unsigned findCell( const Vector& pos ) const ;
86
+ /// Find the cell in which this position is contained
87
+ std::array<unsigned,3> findMyCell( const Vector& pos ) const ;
88
+ /// Get the list of cells we need to surround the a particular cell
89
+ void addRequiredCells( const std::array<unsigned,3>& celn,
90
+ unsigned& ncells_required,
91
+ std::vector<unsigned>& cells_required ) const ;
92
+ /// Retrieve the atoms in a list of cells
93
+ void retrieveAtomsInCells( unsigned ncells_required,
94
+ View<const unsigned> cells_required,
95
+ unsigned& natomsper,
96
+ std::vector<unsigned>& atoms ) const ;
97
+ /// Retrieve the atoms we need to consider
98
+ void retrieveNeighboringAtoms( const Vector& pos,
99
+ std::vector<unsigned>& cell_list,
100
+ unsigned& natomsper,
101
+ std::vector<unsigned>& atoms ) const ;
102
+ /// Create a neighbour list for the specified input atoms
103
+ void createNeighborList( unsigned nat,
104
+ View<const Vector> pos,
105
+ View<const unsigned> ind,
106
+ View<const unsigned> tind,
107
+ View<const Vector> neigh_pos,
108
+ View<const unsigned> neigh_ind,
109
+ const Pbc& pbc,
110
+ unsigned& natoms_per_list,
111
+ std::vector<std::size_t>& nlist ) ;
112
+ };
113
+
114
+ inline
115
+ bool LinkCells::enabled() const {
116
+ return cutoffwasset;
117
+ }
118
+
119
+ inline
120
+ unsigned LinkCells::getNumberOfCells() const {
121
+ return ncells[0]*ncells[1]*ncells[2];
122
+ }
123
+
124
+ }
125
+
126
+ #endif
@@ -0,0 +1,41 @@
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_Log_h
23
+ #define __PLUMED_tools_Log_h
24
+
25
+ #include "OFile.h"
26
+
27
+ namespace PLMD {
28
+
29
+ /// Class containing the log stream.
30
+ ///
31
+ /// It is similar to a FILE stream. It allows a printf() function, and
32
+ /// also to write with a << operator. Moreover, it can prefix
33
+ /// lines with the "PLUMED:" prefix, useful to grep out plumed
34
+ /// log from output
35
+ class Log :
36
+ public OFile {
37
+ };
38
+
39
+ }
40
+
41
+ #endif